Save Editor support
The Save Editor changes persistent game data. It does not change emulator save states.
Supported games
| Game | Platform | Input | Recognition limit |
|---|---|---|---|
| Pokémon Gold | Game Boy Color | Raw 32 KiB SRAM | Shares its layout with Silver |
| Pokémon Silver | Game Boy Color | Raw 32 KiB SRAM | Shares its layout with Gold |
| Pokémon Crystal | Game Boy Color | Raw 32 KiB SRAM | English retail layout |
| Pokémon Ruby | Game Boy Advance | Raw 128 KiB Flash | Shares its layout with Sapphire |
| Pokémon Sapphire | Game Boy Advance | Raw 128 KiB Flash | Shares its layout with Ruby |
| Pokémon Emerald | Game Boy Advance | Raw 128 KiB Flash | English retail layout |
| Pokémon FireRed | Game Boy Advance | Raw 128 KiB Flash | Shares its layout with LeafGreen |
| Pokémon LeafGreen | Game Boy Advance | Raw 128 KiB Flash | Shares its layout with FireRed |
| Pokémon HeartGold | Nintendo DS | Raw 512 KiB save | The profile version selects the title |
| Pokémon SoulSilver | Nintendo DS | Raw 512 KiB save | The profile version selects the title |
| The Legend of Zelda: A Link to the Past | Super Nintendo | Raw 8 KiB SRAM | Needs a valid file marker and checksum |
The Pokémon handlers cover the English layouts named above. A matching file size alone does not prove support.
Editable fields
| Family | Fields |
|---|---|
| Pokémon Generation II | Money and 16 badge flags |
| Pokémon Generation III | Trainer name, gender, money, and badge flags |
| Pokémon HeartGold and SoulSilver | Gender, money, and 16 badge flags |
| Zelda: A Link to the Past | Resources, health, equipment, selected inventory items, pendants, and crystals for each file |
The Zelda resource fields cover rupees, bombs, and arrows. Its equipment fields cover swords, shields, armor, and gloves.
Read-only fields
| Family | Fields |
|---|---|
| Pokémon Generation II | Trainer name, Trainer ID, and play time; Crystal also shows its Secret ID |
| Pokémon Generation III | Trainer IDs, play time, and the security key |
| Pokémon HeartGold and SoulSilver | Trainer IDs and play time |
| Zelda: A Link to the Past | Player name for each file |
Recognition
Recognition returns recognized, ambiguous, or unsupported. An ambiguous result needs an explicit game choice.
Gold and Silver remain ambiguous without a selected game. The same rule applies to Ruby/Sapphire and FireRed/LeafGreen.
HeartGold and SoulSilver use the stored game version after both save-block checks pass. Zelda uses its file marker and checksum.
Integrity rules
- Generation II checks primary and backup additive checksums. Edits need both copies to pass.
- Generation III checks all 14 sections. It changes only the active slot and each affected section checksum.
- HeartGold and SoulSilver check both redundant copies, block footers, counters, signatures, sizes, and CRC-16 values.
- Zelda checks three primary files and their duplicate copies. It rewrites both copies only for an edited file.
Every write starts from a copy. The handler reparses the result before it returns the edited bytes.
Save containers
The editor removes these wrappers before recognition and puts them back on output. The wrapper metadata survives unchanged. If the container has a checksum, the editor updates it to match the changed save.
| Container | Extensions | Layout | Checksum |
|---|---|---|---|
| GameShark SP save (SharkPortSave) | .sps, .xps |
Length-prefixed strings, a 28-byte game block, the raw save | Recomputed on output |
| GameShark SP snapshot | .gsv |
1072-byte header, 128 KiB raw flash | None |
| DeSmuME save | .dsv |
Raw save, then a 122-byte footer | None |
| DexDrive memory card | .gme |
3904-byte header, 128 KiB raw card | None |
| Virtual Game Station memory card | .mem, .vgs |
64-byte header, 128 KiB raw card | None |
A GameShark SP checksum that does not match produces a warning, not a rejection. A DeSmuME footer whose padded size disagrees with the file produces a warning.
save identify reports the container under container, the raw save size under save_size, and the file size under file_size.
Physical save formats
An unsupported save still gets a physical format guess from its raw size. The report lists every format below that matches, under potential_formats. A size match alone does not prove the platform. A format with a signature check sorts first and sets signature_checked.
| Platform | Formats | Signature |
|---|---|---|
| Game Boy and Game Boy Color | Battery SRAM 512 B (MBC2), 2 KiB, 8 KiB, 32 KiB, 128 KiB | None |
| Game Boy Advance | EEPROM 512 B, EEPROM 8 KiB, SRAM 32 KiB, Flash 64 KiB, Flash 128 KiB | None |
| Nintendo Entertainment System | Battery WRAM 8 KiB | None |
| Super Nintendo | Battery SRAM 2 KiB, 8 KiB, 32 KiB, 64 KiB, 128 KiB | None |
| Nintendo 64 | EEPROM 512 B, EEPROM 2 KiB, SRAM 32 KiB, FlashRAM 128 KiB, Controller Pak 32 KiB, Mupen64Plus combined save 290 KiB | None |
| Nintendo DS | 512 B, 8 KiB, 64 KiB, 128 KiB, 256 KiB, 512 KiB, 1 MiB, 8 MiB, 32 MiB | None |
| Sega Genesis and Mega Drive | Cartridge SRAM 8 KiB, 32 KiB, 64 KiB | None |
| Sega Master System and Game Gear | Cartridge SRAM 8 KiB, 32 KiB | None |
| Sony PlayStation | Memory card 128 KiB | MC at offset 0 |
| Sega Saturn | Internal backup RAM 32 KiB, 64 KiB (16-bit dump) | BackUpRam Format header, contiguous or on odd bytes |
The Mupen64Plus combined save is the libretro core's .srm: EEPROM, four Controller Paks, SRAM, then FlashRAM, 296,960 bytes in total. PSP saves are per-game directories and have no entry.
Unsupported data
Diamond, Pearl, Platinum, other Pokémon generations, and other Zelda games remain unsupported. The editor does not change party Pokémon or boxes.
A physical format match or a removed container does not make a save editable. Only the games in Supported games have an editor. Emulator save states are rejected.