Emulator Issues #8979closed
Some Virtual Console titles only flush save data on power down
Virtual Console NES and some SNES titles
What's the problem? Describe what went wrong.
When playing many Virtual Console games, including let's say, The Legend of Zelda (NES), you can save the game and it'll be fine, right? Unfortunately, it's not. The game flushes savedata when you either A: turn off the console, or B: return to the system menu. The problem comes in on Dolphin. If you close the emulator window while in-game on one of the afflicted titles, they will not flush the save data. Why is this?
Through hardware testing, I've determined through expert analysis that powering down Dolphin is akin to unplugging the Wii for these titles. When I unplug my Wii, I get the same exact behavior as Dolphin when I close/power off the game.
What steps will reproduce the problem?
Play Legend of Zelda
Create save game file
This one should work, so close the game, and then reload it.
Now, go collect a heart or something and then die, and save again. Close the game window and reload the game. If you really don't know where any of the stuff is in Zelda 1 go look up a guide or something, you new console heathen.
You will still have three heart containers/no new items.
Which versions of Dolphin did you test on? Does using an older version of Dolphin solve your issue? If yes, which versions of Dolphin used to work?
What are your PC specifications? (CPU, GPU, Operating System, more)
Is there any other relevant information? (e.g. logs, screenshots,
LPfaint99 says it can be fixed by implementing something like this:
"Technical details for anyone wanting to implement, I started about 18months ago, but busy with other things
game will register function by issuing 'IOCTL_STM_EVENTHOOK = 0x1000' to /dev/stm
this function should be run on either powerdown or reset "
Counting as 10% done since there was initial research done into it.
Updated by delroth about 8 years ago
Nevermind, no time to have a look this weekend. The main problem is how to handle e.g. an infinite loop in the event hook. We need to make the emulation exit process asynchronous and make sure that double-exiting forces exit without event hooks.