OnionUI / Onion

OS overhaul for Miyoo Mini and Mini+
https://onionui.github.io
GNU General Public License v3.0
3.48k stars 218 forks source link

OnionOS 4.3 Beta: Drastic is saving multiples of .DSS save files, and causing save corruption. #1367

Open laundr opened 10 months ago

laundr commented 10 months ago

Checklist

Onions OS Version

v4.3.0-8ae761fc

Miyoo Firmware Version

202306282128

Provide a clear and concise description of the issue

Playing Pokemon Platinum on Drastic emulator on Miyoo Mini Plus.

After a few gaming sessions, the game fails to boot. It has happened twice, one of them I noticed it happened after I turned off the screen and then allowed the device to power down on its own after a 15 minute wait in sleep mode.

When starting the device the game boots to a white screen and then bounces me back to the main menu. Attempting to open the game again does the same thing.

Pulling the SD card and inspecting the save files on my computer reveals that there are 2 .DSS and one .DSV save file for the game.

The file titles are: Pokemon - Platinum Version (USA) (Rev 1).dsv Pokemon - Platinum Version (USA) (Rev 1)_0.dss Pokemon - Platinum Version (USA) (Rev 1)_10.dss

Steps to Reproduce

Start a game of pokemon platinum Save the game Single-press the power button to turn off the screen Allow the device to power itself off after the sleep period Boot the device and see if the game will run.

Provide any additional context or information that may help us investigate your issue

Upon inspecting the save files in my "NDS_OLD.7z" folder, I see that multiple saves were not created for this game. Only a single .DSS file with the title: "Pokemon - Platinum Version (USA) (Rev 1)_10.dss"

Ulquiro commented 10 months ago

I encountered this issue with all the NDS games i have tried so far, all of them with the same steps to reproduce

heydemoura commented 10 months ago

I faced the same issue with Pokemon Soul Silver, I believe it might happen to any NDS game. The workaround for me was to:

The last save I had was restored.

Maybe Drastic saves are not yet being well handled when turning off the device with sleep mode.

codsand commented 10 months ago

Yes, the save file is saving wrong from sleep. Thanks for this info, it was driving me crazy.

BaseInfinity commented 4 months ago

Is there a way to disable the default to autosave when powering off? I've run into this myself and I'd rather just disable the feature.

BaseInfinity commented 4 months ago

https://github.com/OnionUI/Onion/blob/main/static/packages/Emu/Nintendo%20-%20DS%20(Drastic)/Emu/NDS/resources/settings.json#L23-L24 Looks like this is probably due to the auto_slot value here that is set to 10.

Should we just set it to -1 or 1? @Aemiii91

Aemiii91 commented 4 months ago

@BaseInfinity I believe -1 is an invalid value, and 0-9 is reserved for manual save states

dominat0r91 commented 2 months ago

The same issue occurred to me today after playing Pokémon Platinum via Drastic the night before. That time the game also auto-saved after the device switched off via standby mode. The solution from @heydemoura worked for me as well, thanks for that!

What would be a long-term solution though to prevent this from happening again? Wouldn't this issue bug all users who regularly play NDS via Drastic?

BaseInfinity commented 2 months ago

@dominat0r91 something easy would be to disable autosave on sleep so it at least prevents saving the wrong slot.

AFAIK this problem does not happen when you save state yourself

The real fix is to save in the correct slot on sleep.

TwanoO67 commented 4 weeks ago

I encoutered the same issue on "Pokemon - perle". ( Single-pressed the power button to turn off the screen > Allow the device to power itself off after the sleep period)

OnionOS is crashing on start (I had to remove .tmp_update/cmd_to_run.sh, to be able to boot again). But when retrying to start the game, retroarch is crashing, and I have to delete file on sd and reboot again.

Now the only file I have in states is: "Pokemon-perle_10.dss"

Is there a way to recover the game from that ?