NeoGeo Pocket SaveGame Backups
Today a new owner of the NGPC Flash Masta & Linkmasta bundle emailed me with a question about backing up Neo Geo Pocket savegame data. In particular, he was asking why the software won’t backup only the save-game data when you are using a flash cartridge. If you’ve never tried it, the Linkmasta software will allow you to backup the savegame data from an official cartridge, but it won’t do it when it detects a flash cartridge. To backup the savegame data on a NGPC flash cart, you need to backup the entire (usually 32mbit) cartridge.
To understand this, first of all, it’s important to understand that the NGPC does not have separate savegame “SRAM” and game data “ROM” memory. This is a common misconception, because many systems had this architecture. What the NGPC has is flash memory that is used to store both game and savegame data.
In official games, the game data is protected so the NGPC can not write over the actual game ROM. However, you can write to every official NGPC cartridge. To do it, you’d have to write to an unprotected area of the cartridge memory, and this is typically where the savegame data would live.
What happens when you want to backup the savegame data from an official cartridge is that the Linkmasta uses some low-level routines to talk directly to the flash memory chip and ask about the protection status of each block. Whenever it encounters an unprotected block, it assumes that is where savegame data lives (or could possibly live) and backs it up. It saves this in the NeoPop savegame format which is the closest thing we have to a standard for this.
The problem arises when you try to employ this technique on a flash cart. The flash cart is 100% unprotected. The Linkmasta has no way to know which blocks contain savegame data and which ones contain game code/data. It could make guesses, but they would not be 100% accurate. The only way to be sure that you backup all of the savegame data is to backup ALL of the data on the cart (savegame plus game data).
I have thought about this before, and there is another way that the Linkmasta could (most likely) determine what data is savegame related. There could be another function to backup changes in the cart. This would probably be slightly different than the NeoPop savegame format. What you would do is to write a ROM file to the Neo Geo Pocket Flash Masta cart. Then, you would play it and save your progress. If you wanted to backup changes, you would (in theory) hit the “save changes” button. The software would then ask you to supply the ROM file used to create the cartridge. Then, it would compare, byte by byte, the contents of the file against the contents of the cartridge. Whenever it encountered a mismatch, it would save this to a savegame backup file. It would be like using the verify feature and saving a “diff”.
So, now that I’ve laid this out, I wonder if anyone is interested in implementing it. I am spending most of my time lately working on building bundles and researching and designing a WonderSwan cartridge. In the past, I have talked about making the NeoLinkmasta software open-source. I would be interested in hearing from anyone that would want to work on adding features like this. Do you have other ideas? If so, contact me. I just haven’t gotten around to “opening” the source, but I’m definitely interested in discussing this with coders.