SRAM Expansion
by madsiur
version 2.0
released on 06/25/2024
apply to a headerless FF3us 1.0 ROM
FF6 hacking wiki entry
Personal website entry
RHDN entry
Download
Description
This hack expands SRAM by $1600 bytes, allowing now $2000 bytes for each save slot plus a third 8Kb for general purpose. In original game, only 8Kb of SRAM is used ($306000-$307FFF), each slot occupying $0A00 bytes and $200 bytes for general purpose at the end of the 8Kb block.
With this hack, $306000-$307FFF is used for slot 1, $316000-$317FFF for slot 2 and $326000-$327FFF for slot 3. $336000-$337FFF is used for game SRAM as well. When you play the game, $7E1600-$7E1FFF is still used and copied to correct slot at saving. $336000-$3375FF is copied to correct slot as extra SRAM. At game loading, correct slot is loaded into $336000-$3375FF. So in order to save or load from extra SRAM in your hack, use for example STA $336000,X or LDA $336000,X.
Since $337600-$337EFF is not used, it means it could be used as scratchpad RAM for temporary things or have a general use common to the three slots.
SRAM could be expanded more but I figured a whole $2000 bytes instead of $0A00 is enough expansion for any hack. In HiROM mapping banks $20-$3F can be used to map SRAM, using always the $6000-$7FFF range of the bank. $C0FFD8 tell the emulator the SRAM size of the ROM.
I have not tested this on sd2snes, Everdrive or real hardware. snes9x 1.55 and bsnes+ were used for testing. If you plan to use this hack and make a cart of your hack after, I have no idea what kind of cartridge you will need or if 32Kb of SRAM is supported by any existing SNES game.
New SRAM map
by madsiur
version 2.0
released on 06/25/2024
apply to a headerless FF3us 1.0 ROM
FF6 hacking wiki entry
Personal website entry
RHDN entry
Download
Description
This hack expands SRAM by $1600 bytes, allowing now $2000 bytes for each save slot plus a third 8Kb for general purpose. In original game, only 8Kb of SRAM is used ($306000-$307FFF), each slot occupying $0A00 bytes and $200 bytes for general purpose at the end of the 8Kb block.
With this hack, $306000-$307FFF is used for slot 1, $316000-$317FFF for slot 2 and $326000-$327FFF for slot 3. $336000-$337FFF is used for game SRAM as well. When you play the game, $7E1600-$7E1FFF is still used and copied to correct slot at saving. $336000-$3375FF is copied to correct slot as extra SRAM. At game loading, correct slot is loaded into $336000-$3375FF. So in order to save or load from extra SRAM in your hack, use for example STA $336000,X or LDA $336000,X.
Since $337600-$337EFF is not used, it means it could be used as scratchpad RAM for temporary things or have a general use common to the three slots.
SRAM could be expanded more but I figured a whole $2000 bytes instead of $0A00 is enough expansion for any hack. In HiROM mapping banks $20-$3F can be used to map SRAM, using always the $6000-$7FFF range of the bank. $C0FFD8 tell the emulator the SRAM size of the ROM.
I have not tested this on sd2snes, Everdrive or real hardware. snes9x 1.55 and bsnes+ were used for testing. If you plan to use this hack and make a cart of your hack after, I have no idea what kind of cartridge you will need or if 32Kb of SRAM is supported by any existing SNES game.
New SRAM map
Code:
Slot 1 expansion: $306A00-$307FFF
$306000-$3069FF = $7E1600-$7E1FFF
Slot 2 expansion: $316A00-$317FFF
$316000-$3169FF = $7E1600-$7E1FFF
Slot 3 expansion: $326A00-$327FFF
$326000-$3269FF = $7E1600-$7E1FFF
Other SRAM values: $336000-$3375FF (game common SRAM)
$337600-$337EFF (unused)
$337F00 = last altered savefile
$337F01 = rng index
$337F08 = checksum value #$E41B (slot 1)
$337F0A = checksum value #$E41B (slot 2)
$337F0C = checksum value #$E41B (slot 3)
$337F0E = checksum value #$E41B (slot 4)