Nouvelle cartographie de la mémoire de sauvegarde (SRAM)
Expansion partie 1: $306A00-$307FFF
$306000-$3069FF = $7E1600-$7E1FFF
Expansion partie 2: $316A00-$317FFF
$316000-$3169FF = $7E1600-$7E1FFF
Expansion partie 3: $326A00-$327FFF
$326000-$3269FF = $7E1600-$7E1FFF
Autres valeurs: $336000-$3375FF (SRAM commune)
$337600-$337EFF (non-utilisée)
$337F00 = dernière partie altérée
$337F01 = index rng
$337F08 = valeur de checksum #$E41B (partie 1)
$337F0A = valeur de checksum #$E41B (partie 2)
$337F0C = valeur de checksum #$E41B (partie 3)
$337F0E = valeur de checksum #$E41B (partie 4)
Description
Ce hack permet une expansion de la mémoire de sauvegarde (SRAM) de $1600
octets, allouant maintenant $2000
octets pour chaque partie sauvegardée ainsi qu'un 8Kb commun supplémentaire. Originalement, seulement 8Kb était alloué au total (mémoire $306000-$307FFF
), chaque partie ayant $0A00
octets, en plus $200
octets pour usage commun général.
Avec ce hack, la mémoire $306000-$307FFF
est utilisée pour la partie 1, $316000-$317FFF
est utilisée pour la partie 2 et $326000-$327FFF
pour la partie 3. La mémoire $7E1600-$7E1FFF
est utilisée, tel que dans le jeu original, et est copiée dans la bonne section à la sauvegarde. La mémoire $336000-$3375FF
est aussi copiée dans la bonne section. Lors du chargement d'une partie, le processus inverse est fait. Pour utiliser la nouvelle mémoire de sauvegarde, vous pouvez utiliser par exemple les instructions STA $336000,X
ou LDA $336000,X
.
Puisque la mémoire $337600-$337EFF
est inutilisée, vous pourriez l'utiliser comme mémoire temporaire (appelée scratchpad RAM dans le jargon).
La SRAM pourrait être sujette à expansion encore plus significative, mais j'ai jugé que $1600
octets de plus par partie sont suffisants. Dans la cartographie de mémoire HiROM, les sections $20-$3F
peuvent être utilisées comme SRAM, toujours dans les sous-sections $6000-$7FFF
(e.g. $2E6000-$2E7FFF
). La valeur dans l'en-tête SNES à l'adresse $C0FFD8
inidque quelle taille la mémoire de sauvegarde aura.
Je n'ai pas testé ce hack sur sd2snes, Everdrive ou une vraie console. snes9x 1.55 et bsnes+ ont été utilisés pour mes tests. Si vous planifiez d'utiliser ce hack avec une vraie cartouche de jeu, je ne sais pas quel type de cartouche pourrait faire l'affaire.