Backing up and restoring GBA ROMS and saves with modern tools

I try not to think too hard about how old the Game Boy Advance is.

Back in its heyday, I bought many games for it (the Super Mario Advance series, the Golden Sun series, Rhythm Heaven, anything The Legend of Zelda…) I also dabbled a bit in third-party devices to copy the games’ saves and restore them, as well as copy the games’ ROMs themselves to play them on computers or experiment with them.

When the Nintendo DS hit, sporting its SLOT-2 (which, contrary to popular belief, wasn’t just a Game Boy Advance slot… I have a handful of official expansion devices that say otherwise!), we gained a way to do this that quickly became my go-to: GBA Backup Tool.

Unfortunately, it hasn’t been worked on in years. And today, I needed it. My Analogue Pocket—which I swear I love even though I just ranted about its d-pad for 2,200 words—has been doing bad things to my Super Mario Advance 4 save if I let it go into sleep mode.

Sometimes, it’ll wake back up, and the next time I boot the game, the game decides the Flash is corrupt and wipes it. If it wasn’t for the fact I was mostly playing the remake of Super Mario Bros. 3, which never had saving to begin with, I’d probably be a little more ticked off.

Nonetheless, I wanted to be able to back up my save, and the ROM, and move it to my EverDrive, which the Pocket won’t try to sleep. (I’ve told Analogue about this. They asked for a photo of the board on my Mario cartridge, and said they’d… send my “feedback” on to their team. Not holding my breath on that getting fixed.)

So I grabbed GBA Backup Tool, loading it to a modern Ace3DS X (recommended by the Flashcarts Wiki). It did get my save, but the cartridge was another problem. It looked like it dumped, but the filesystem was corrupted every time I tried to read it back.

Which sent me down a rabbit hole… was there a problem loading it with the Ace3DS’s definitely-for-backups (wink, wink) setup revolving around DLDI, maybe? (GBA Backup Tool definitely thought it was some sort of R4 variant.) Was there something better?

Turns out there’s a delightful collection of replacement bootstraps that you can load to the SD card of your flash cart and actually turn it into a card that’s designed for homebrew by replacing its kernel: flashcard-bootstrap. I grabbed the latest “bootstrap.zip” from Releases, and put the “dsmenu.dat” from “ACEP” onto a blank SD card.

Now, I could launch Backup Tool directly from here, but while exploring, I also found nds-hb-menu, so I loaded that up to launch Backup Tool from. Launched, felt good compared to Piratesville, but still didn’t work.

It was around this time I stumbled on the fact that a key part of the Nintendo DSi homebrew stack that I was already familiar with, GodMode9i, actually runs on DS as well as DSi. Remembering how GodMode9i was the go-to tool for accessing anything on or in a DSi, I put it on in place of nds-hb-menu.

And will you look at that, feature number one is dumping Game Boy Advance cartridges, and feature number three is restoring save files. Just navigate to the cartridge to dump ROM or save, and navigate to the save to restore it to a cartridge. Done. And you get a full file manager to boot.

So this is the new setup. flashcard-bootstrap, and GodMode9i, on any supported card. You don‘t need anything else, just an SD card big enough.

(Don’t try any WiFi options, by the way. You’ll have to set up a low-security access point for a Nintendo DS to begin with, and then you’ll run into one immediate hard problem—TCP transfers always time out. I don’t think this is fixable, though I did discover many years ago that a TFTP implementation is immune. Maybe someday I’ll dust off that code… someday is not today.)


You'll only receive email when they publish something new.

More from Mattie B
All posts