GBA SRAM (64 KB)|
Goomba is an emulator for the original Game Boy that runs on Game Boy Advance hardware. It supports SRAM (up to 8KB) and savestates. A fork, Goomba Paletted, also supports custom palettes and borders.(1)
Goomba Color is a version of Goomba that can emulate the Game Boy Color and handle games with 32KB SRAM. It does not support savestates, however.
Both versions use the same file structure: raw Game Boy ROMs are concatenated to the end of the emulator ROM, and this combined image can then be run on a GBA. They also have a similar SRAM format. The range 0xE000–0xFFFF is used for a copy of the Game Boy game's SRAM which is updated in real-time,(2) while the remainder is used for storing settings and compressed save data. When L+R is pressed, the SRAM is compressed and saved into the main area.
|Save data header (48 bytes)|
|Size in bytes (header + data)||0=savestate 1=sram||Goomba: compressed size of data
Goomba Color: uncomp. size
|Frame count (not used for SRAM)||Checksum of ROM|
|Title of ROM (32 bytes available)|
|Configuration header (48 bytes)|
|Size in bytes (header + data)||Always 2||Border index||Palette index||Misc byte||Unused|
|Checksum of ROM whose data is at 0xE000 (or zero if empty)||Always 0|
|80||Gamma (0 through 4)|
|10||Autoload state (on/off)|
(5m, 10m, 30m, off)
Goomba Save Manager was built to find, extract, and replace Game Boy SRAM inside Goomba and Goomba Color save files. It knows how to deal with the 0xE000 region (the GUI will offer to "clean" the save file for you.) A command-line application is available, as well as C#(3) and GTK+-based GUI applications.
Download — Source/Readme
My updated version of TGB Dual includes the code from Goomba Save Manager, which provides automatic support for Goomba ROMs and save files. See the TGB Dual page for more information.
I also have a version of the NRage input plugin for N64 emulators which integrates Goomba SRAM support into the Transfer Pak emulation (useful for trading Pokémon between save files with Pokémon Stadium 2.) A raw Game Boy ROM (not a Goomba ROM) is also required.