Post subject: Bizhawk 1.11.8.2 (GBA) in-game saving doesn't work
PaulS
Other
Joined: 10/27/2016
Posts: 3
Hello. I'm using newest Bizhawk 1.11.8.2 on Windows 7 to play GBA roms. I started using Bizhawk only recently, first with version 1.11.8, and now with the newest update. I'm using VBA-Next core. I have problem with saving on both versions I tested. In-game saving with GBA games doesn't work at all. After saving in-game and restarting the emulator, there are no saves to load. I haven't seen any savefiles being created after saving in-game, nor after closing down Bizhawk. I know many roms that create a save file after closing an emulator, regardless if you saved or not. However, I haven't seen Bizhawk create any save file whatsoever. I'm assuming Bizhawk uses .sav format like most GBA emulators? I have some games with .sav files from playing on VBA-M, I put those .sav files in same directory as game rom, but Bizhawk doesn't recognise any saves. I have this problem on every game I threw at Bizhawk. I'm using good dumps, verified by no-intro database. I tried at least 10 different games, all with the same result. The quicksaving does work, but it has its own inconvenieces as well. I would prefer to use the traditional in-game saving but it simply doesn't seem to work. EDIT: So, what I did was open a rom file in different emulator than Bizhawk, let that emulator create a .sav file, change the .sav file's extension to .saveRAM, then move it to Bizhawk's SaveRAM folder and replace the file that Bizhawk created... now Bizhawk CAN read save files I had from previous emulators, BUT after saving it still doesn't update my game progress. Let's say I had 1% completion when I created .sav file with other emulator, then I changed that .sav to .saveRAM and moved it into Bizhawk's saveRAM folder, then I could load that 1% save into Bizhawk, I made some progress and tried to save a 2% file, but after closing down the game and loading it again I still have 1%, and the .saveRAM filesize changed from 512 bytes to 64 KB. If I'm doing something very wrong, please send me on the correct path. What I've noticed is, if I play a new GBA game that I haven't played on Bizhawk before, then Bizhawk will create a 64 KB .saveRAM file that when opened in notepad only contains "......." and is useless. When I changed .sav file's extension to .saveRAM and played the game in Bizhawk, the .saveRAM filesize changed from 512 bytes to 64KB and basically a lot of "........." were added to the end of that .saveRAM. The important first 512 bytes weren't changed at all, hence why when loading it still showed only 1% completion. The .saveRAM file got inflated from 512 bytes to 64 KB for reasons I can't understand, and a lot of useless information "..........." was added to that savefile.
fsvgm777
She/Her
Senior Publisher, Player (226)
Joined: 5/28/2009
Posts: 1214
Location: Luxembourg
That's weird, I can save my progress just fine, assuming I had a previously saved game beforehand or if I created a "dummy" SaveRAM file in <BizHawk>\GBA\SaveRAM. However, I can confirm the game progress doesn't save if you didn't create a dummy .SaveRAM file beforehand. (by dummy .SaveRAM file, I mean it's 0 bytes) However, I did my tests on the mGBA core (which is more accurate than VBA-Next, by the way), so try on the mGBA core as well.
Steam Community page - Bluesky profile Oh, I'm just a concerned observer.
PaulS
Other
Joined: 10/27/2016
Posts: 3
Switching to mGBA core fixed the problem. I loaded the 1% save in Bizhawk, made some progress, then saved a 2% game. Closed down Bizhawk, opened game again and I can now see the 2% save. So it's a problem with VBA-Next core then? Can you please check if you have this problem on VBA-Next core?
Editor, Expert player (2330)
Joined: 5/15/2007
Posts: 3933
Location: Germany
I tested Kirby & The Amazing Mirror and Mario & Luigi in 1.11.8.2 VBA-Next. Kirby seems to save and load fine. Mario & Luigi saved but didn't load. (Soft reset keeps the savegame, but reboot core wipes it.) I used my luascript to jump to a later point in the game and save, instead of playing normally. But that should still have worked fine. I have never seen the game wipe its save file in this case. This might need more looking into.
PaulS
Other
Joined: 10/27/2016
Posts: 3
With mGBA core saving and loading is working fine for me at the moment. I started importing my save files from VBA 1.8 Link emulator. Those saves are in .sa1 format (exactly the same structure as standard .sav format, just different extension). They are 512 bytes each. What I do to make them work with Bizhawk, is: - change extension to .saveRAM - move it to \Bizhawk\GBA\saveRAM - open the game in Bizhawk and see if it works - if it works, Bizhawk adds a lot of FF bytes to the .saveRAM file, changing its size from 512 bytes to either 8 KB or 64 KB, while leaving the crucial first 512 bytes as it was before. So far I've managed to successfully import about 20 saves, but I've come across some games that don't work with my method. 1) Crash Bandicoot 2 - N-Tranced (Europe) (En,Fr,De,Es,It,Nl) 2) Crash Bandicoot 2 - N-Tranced (USA) I checked sha-1 for those games and it matches perfectly what's inside gamedb_gba.txt file. What happens here: - 512 byte .saveRAM gets changed by Bizhawk to 64 KB - game doesn't recognise this file - cannot load my old save - when started a new game and trying to save, it doesn't save, but it changes the .saveRAM file in such a way, that the first 8 bytes become "some data", and the rest of the file becomes FF. So, even if previously it was 512 bytes of data and rest FF, now it's only 8 bytes of data and rest FF. My uneducated guess is, the 8 bytes of data that are written contain error message? I also tried a different approach, by creating an empty .saveRAM file to see if it makes any difference, but yet again after trying to save I end up with 64 KB file that has data only in first 8 bytes and the rest is FF. Suprisingly, the Japanese version of this game does work! Crash Bandicoot Advance 2 - Guruguru Saimin Dai-panic! (Japan) And the .saveRAM file isn't 64 KB like in EU/USA version, but 8 KB. So, using the same steps to change my .sa1 file to .saveRAM, and Bizhawk recognises this save, and saving works perfectly. So a few questions: - why is JAP version making an 8 KB .saveRAM file, but other versions of the same game are making 64 KB files? - why the EU and USA versions do not load/save in Bizhawk? (using newest 1.11.8.2) - what's the point of Bizhawk making .saveRAM files bigger than 512 bytes, since everything after the initial 512 bytes is just redundand data full of FF? - why does Bizhawk create .saveRAM files with different filesize (8 KB and 64 KB) for different games?
Editor, Expert player (2330)
Joined: 5/15/2007
Posts: 3933
Location: Germany
Mario & Luigi saved but didn't load. Soft reset keeps the savegame, but reboot core wipes it. I used my luascript to jump to a later point in the game and save, instead of playing normally.
On VBA-Next core, 1.11.7 and 1.11.8.2 show the same behavior: - Save the game - Reset the game - The newly saved savegame is there - Reboot core - The savegame is no longer there, for some reason On mGBA core, 1.11.7, the savegame is not getting deleted after rebooting the core, as is the more desirable outcome. I have not gotten the chance to test on 1.11.8.2-mGBA yet.
Editor, Expert player (2330)
Joined: 5/15/2007
Posts: 3933
Location: Germany
MUGG wrote:
On VBA-Next core, 1.11.7 and 1.11.8.2 show the same behavior: - Save the game - Reset the game - The newly saved savegame is there - Reboot core - The savegame is no longer there, for some reason
The SRAM addresses as seen in Bizhawk's memory viewer are never written over during saving, on VBA-Next. But it seems the emu keeps track of savegame memory, maybe under some other alias that's not shown in memory viewer. In other words, maybe it's a mixup with memory domain labels in the VBA-Next implementation in Bizhawk. At least that's my assumption at this point. Since I don't work with VBA-Next, I don't care much. But it should probably be looked at.