New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GBA 2.3.1 savegame-anchored movie will "forget" its savegame when loadstating #1593
Comments
What about previous releases? |
I'm testing, but it's a bit weird. The results vary after I wipe all savegames and redo the testing...
|
Last tested build: 2.4.2. This probably won't be fixed until it's explicitly targeted; it's unlikely to be fixed by accident, but I will continue testing new versions anyway. This issue persists into BizHawk 2.4 and the latest developer build at time of writing ( To begin with, a .bk2 movie will still load properly with the SaveRAM as expected. The issue occurs when loading a savestate while a SaveRAM-anchored movie is being played back. If a savestate is loaded before the SaveRAM would be used (e.g. before the file select screen in most games), then BizHawk will act as if the SaveRAM in question does not exist and the game will play as if there is no existing save file. The movie remains unmodified (containing the proper original SaveRAM). Thus even if the saved movie is overwritten by modified inputs after loading a savestate, the saved movie will act as if starting from the original SaveRAM when newly loaded from the beginning. But the issue isn't specific to SaveRAM-anchored movies. Even when running BizHawk without a movie, the game will not play with the expected SaveRAM when loading from a savestate. The way I originally discovered this issue is documented here. I originally discovered it using TAStudio, but the issue is more fundamental than that. Further testing: The same issue is present in 1.11.6, 1.11.8, 2.0, and 2.3. SaveRAM just plain doesn't save with VBA-Next. mGBA core still has the same issue of not properly loading SaveRAM with the savestate in these versions. For reference, my testing methodology for these versions was to load Shrek 2 (SHA1:D3C3201F4A401B337009E667F5B001D5E12ECE83, MD5:9EF8E30824DB751F3D42E048514A3624), create a save slot in-game, reload the game and save a state somewhere around the opening screens (the first screen after the bios), continue playing and verify the previously created save slot exists, and then load the save state and watch it fail to load the previously-created save slot. One trick is that pressing 'Start' skips the long intro sequence in Shrek 2. I used a modified testing methodology because the movie wasn't required and I didn't want to worry about movie incompatibility problems with old versions of BizHawk. Some interesting mentions of mGBA and savestates from the release notes: From 1.11.8.1: ( https://github.com/TASVideos/BizHawk/releases/tag/1.11.8.1 ) "This is a patch fix to 1.11.8 that fixes mGBA savestates". From 1.11.6 ( http://tasvideos.org/Bizhawk/PreviousReleaseHistory.html#Bizhawk1116 ): "mGBA: Capture SRAM in savestates, ALL PREVIOUS SAVESTATES are now incompatible". |
Here's my thoughts on this (testing shrek 2). mgba can't save the save ram right at startup because it's still autodetecting. I think the way mgba works is once the autodetection is complete, it kind of "resolves" things using the save data that's provided. But until that happens, the save data is in a messed up state where it can't be savestated. I solved this problem in desmume long ago by saving the state of the autodetection in the DSV (battery) file format. I don't see how MGBA can possibly work without that. So I think it must be broken, even in official frontend. I would prefer for endrift to figure this out, but first we need to prove that official mgba frontend or other frontends have a similar problem. If not, then we need to figure out how theyre using the core->api functions so theyre not vulnerable to this problem. |
The savestates store what the configured save type is, so loading a savestate should fix that. |
…42ad9b78939b85a5 and 8f1148498e12197745f62e477d9b8e07382cc72e to address #1593 (at least, it fixes the shrek 2 non-tas scenario)
Shrek 2 is fixed due to endrift's work (thanks!) |
This is pending @mugg91 testing an interim build, correct? |
Or I can test, as I'm the one who actually brought it to developer's attention; before I commented and talked about it in IRC, it was sadly forgotten. And done: Shrek 2, tested with my general procedure. Of course, if devs want mugg for double-confirmation, they're more than free to. Also, I know issues are sometimes kept open until the release that fixes them. And @adelikat this is definitely an issue I would bring up in the next release notes, as I consider it a significant if low-profile because apparently no one has noticed it in all these years (anyone doing SaveRAM-anchored movies has a potential to notice it). As for VBA-Next, that's being removed anyway. So... I can see your point about there being something else potentially off with BizHawk, but it seems just as likely to me that VBA-Next had similar holes in its savestate implementation. And I have no desire to wade through VBA-Next problems just because it potentially relates to BizHawk; others are free to do so if they feel it's important. |
Erm, we'd already confirmed that Shrek 2 was fixed. We wanted to make sure the bug in Super Monkey Ball was also fixed by this before we closed it. |
Sorry about that. Now I've tested Super Mario Ball and had no issues with newest BizHawk (not to be confused with Super Monkey Ball, which apparently wasn't a GBA game, only Super Monkey Ball Jr. was). I also confirmed that it previously had an issue as late as 2.4.2, exactly as expected. |
I'm playing Super Mario Ball (J).gba on Bizhawk 2.3.1, mGBA-core. EDIT: It seems to be a different behavior for VBA-Next. Will update here with information soon.
If the game is started anew, then pressing on the title screen will start the game immediately. But if you unlocked Time Attack mode (by obtaining 2 star keys), pressing on the title screen will bring up a selection between "new game" and "time attack".
I wanted to TAS Time Attack mode and started a new movie, starting from SaveRAM.
When letting it run through to the title screen, I can select the mode and everything will work normally from then on.
But if I save and load a state at any point before the cutscene before the titlescreen (BIOS screen to "Fuse Games" screen), then the Time Attack mode will be gone, and the game acts as if it had no savegame.
The text was updated successfully, but these errors were encountered: