A year or two ago I was playing Final Fantasy VI in mGBA on Windows, and I had put the game down for like six months after saving. I'd reinstalled my OS since then, but I went ahead and put the .sav and rom into my folder and pointed a fresh mGBA at them.

It wouldn't load. I assumed at the time that this was a freak accident and something had messed up on my end, why wouldn't it be?

Cut to a couple months ago and I was playing Tactics Ogre: The Knight of Lodis (pre-squeakwuel to the greatest game of all time) on the Wii U version of Retroarch with the mGBA core, because 160p scales well to the gamepad screen. I got about eight hours in, saved both a .sav (I thought retroarch saved .srm?) and save state and set it down. Now just this week I pulled that save file from the SD card, hoping to check on it in mGBA on a Windoze machine.

Nothing, mGBA pretends it's not there.

For fun, I also tried booting it through GBArunner2 on a Twilightmenu DSi, openagbfirm on a New 3DS and the current desktop version of mGBA in Retroarch. None of these wanted to see it. Out of pure curiosity though I put the file back on the Wii U and it still reads fine. Okay.

Why are GBA save files like this? I understand savestates are proprietary but I've carried save files for other consoles (DS saves, SNES saves, PS1 saves) around to different systems and formats and not had an issue. At one point I took my Playstation Tactics Ogre save from Duckstation format to PCSX-ReArmed format to the weird proprietary format the PSP uses for PS1 Eboots, and then converted it back to Duckstation format and still had it load.

Yes these are all slightly different versions of mGBA but seriously, what kind of emulator breaks save compatibility every time it updates?

EDIT: My FFVI is cooked but I made headway on Knight of Lodis. The solution:

The .sav in your roms folder Retroarch makes is apparently a dummy file made for no reason. My beautiful better half discovered: if you go Retroarch -> Cores -> savefiles you will find the actual SRM files. I have loaded it on a peecee successfully after simply renaming it from .srm to .sav!

  • AernaLingus [any]
    ·
    2 days ago

    That seems bizarre--save states can be problematic, but I've literally dumped saves straight from a GBA cartridge and used them in mGBA. As far as I know, there shouldn't be any emulator-specific quirks to them, with any extension being a naming convention rather than an actual distinct format. For example, looking at one of the aforementioned dumps it's exactly 32K of data (a full dump of the FRAM chip for this particular game) even though the actual save data only takes up like 4K, and there's no emulator-specific headers tacked on or anything when I generate a save file for the same game in mGBA.

    Provided there isn't any personally identifying info or anything like that, would you be willing to share one of the save files? Can't promise I can actually help but if nothing else I'm curious. My naive guess (not being experienced in these matters at all) would be that the Wii U is somehow truncating or padding the save file which could be an easy fix if the padding data is uniform (my example save dump is just padded with binary 1s after the actual save data). For what it's worth, it looks like FFVI uses a similar 32K FRAM chip for saves, so if your save file isn't exactly 32 KiB (32 * 210 = 32,768 bytes) that could be the culprit.

    • ashinadash [she/her]
      hexagon
      ·
      24 hours ago

      Sure, here is the FF VI save. This uses a USA ROM patched with this colour patch and this sound patch but I can't imagine it changes the save data at all. I still have the original ROM patched with FLIPS fwiw.

      And this is the Knight of Lodis save. This is for a completely stock USA Knight of Lodis ROM.

      I read a lot about byte orders being different and an EEPROM save converter, none of that worked. The FFVI does say it's 32,768kb.

      • AernaLingus [any]
        ·
        22 hours ago

        Both of these files are lost causes, unfortunately. The save data portion (the first 23 KiB) of the FFVI save is all zeros besides 33 bytes at offset 0x1F00 containing the title of the game:

        FINAL FANTASY VI
             ADVANCE    
        

        I played through just enough of FFVI to generate a save file and it has that same text at the same offset, but obviously with some other data as well.

        The Tactics Ogre save is literally all zeros--nary a set bit in sight.

        As for why this happened, I'm sure there are a multitude of possibilities but I couldn't begin to speculate. Losing save data sucks and is super demoralizing--I'm really sorry this happened to you.

        If you ever want to poke around at the raw data of a save file yourself (or any file, really) you can toss it into a hex editor. ImHex is a nice open source option with dark mode which I started to use recently; it's got all kinds of bells and whistles but it also works just fine as a simple hex editor.

        There's one thing that did pique my curiosity, though:

        Out of pure curiosity though I put the file back on the Wii U and it still reads fine. Okay.

        If it's the exact Tactics Ogre save file that you uploaded, that doesn't make sense to me unless the old file was still there and it read that one instead. Could it be that it's simply not being transferred off of the SD card intact? Might be interesting to try to look at it in a hex editor directly on the SD card.

        • ashinadash [she/her]
          hexagon
          ·
          edit-2
          22 hours ago

          The Tactics Ogre save is literally all zeros--nary a set bit in sight.

          This is now in unhinged territory.

          I noticed this too because I went in with HxD to try to edit the last 16 bytes - all zeros. I copied it off of that Sandisk 32GB SD again - still all zeros. So I went and checked it on the Wii U Retroarch, where it still boots and shows my Knight of Lodis save.

          Why?

          I guess I could grab the SD and look at the data on the card, hang on - and HxD ALSO sees the save on the SD card as all fucking zeros. So either HxD and ImHex are goofballs or Retroarch can read a zeroed save file just fine. Somehow. I checked again btw and it still loads on the Wii U fine.

          EDIT: the .sav in the roms folder Retroarch makes is apparently a dummy file. My beautiful better half discovered: if you go Retroarch -> Cores -> savefiles you will find the actual SRM files. I have loaded it on a peecee, thank you for going back and forth with me about it.

          catgirl-peace

          • D61 [any]
            ·
            18 hours ago

            EDIT: the .sav in the roms folder Retroarch makes is apparently a dummy file.

            Well that's just f**kin rude!

            • ashinadash [she/her]
              hexagon
              ·
              18 hours ago

              It really is, like why tbh. Unserious emulator frontend.

          • AernaLingus [any]
            ·
            21 hours ago

            Yay, I'm glad you all figured it out! After I made that comment I was still thinking about it and started wondering if maybe this was a weird symlink situation or something, so I guess I wasn't too far off! And it's no problem: I genuinely love troubleshooting stuff.

            Happy gaming! doggirl-happy

  • BountifulEggnog [she/her]
    ·
    2 days ago

    That's odd, I've loaded gba game saves from different devices but states are broken, even using the same version of Mgba.

    • ashinadash [she/her]
      hexagon
      ·
      24 hours ago

      I know right? I make a habit of doubling my saves with savestates always, so I have several .ss0 files to go with em, which also do not work :)