Feb. 27th, 2023

Feb. 27th, 2023 04:26 pm

goombasav

isaacschemm: A cartoon of myself as a snail (snail8)
[personal profile] isaacschemm

The Game Boy Advance (GBA) provided backwards compatibility with Game Boy and Game Boy Color games by including a second CPU (and a clever voltage switch inside the cartridge slot), but the GBA was easily been powerful enough to emulate the GBC in software. I don't think any commercial releases ever did anything like this, but on the homebrew front, the Goomba family of emulators proved plenty useful for people with unofficial GBA flashcards (as the system can't simply switch into GBC mode in software, or anything like that), and later came in handy on the Micro and the DS.

Goomba runs on the GBA as its host platform, which means anything it needs to save, it needs to save in its own SRAM. It's designed to work with 32 KiB of save memory - within which it has to store the emulated games' SRAM and savestates (Goomba can have more than one Game Boy ROM appended to its own ROM), as well as its configuration settings. Here's a thread that explains how the saving system works. Goomba's save data is stored sequentially (with headers) starting at the beginning of SRAM; each chunk of data is either emulator config, a Game Boy savestate, or Game Boy SRAM (the latter two compressed with LZO). Meanwhile, the area at the end of GBA SRAM (56 KiB - 64 KiB) is reserved for an uncompressed working copy of the current GBC game's SRAM, if any (although I don't think Goomba Color uses this).

The goombasav code I put together is designed to extract and replace the GBC SRAM stored inside the GBA SRAM - it's for use on platforms other than the GBA, so you can transfer the save data to other emulators.

"Why not just use the GameCube and a flashcard?""'Cause I'm gonna need a topic for a blog post about adecade from now"

Read more... )
Tags:

Snail#

A programming blog where the gimmick is that I pretend to be a snail.

Expand Cut Tags

No cut tags

Style Credit

Page generated Jun. 6th, 2025 03:39 am
Powered by Dreamwidth Studios