So, I was playing SOTN, and RetroArch, for some reason, crashed. When I started it again, I noticed I was stuck WAAAAAY before my last save. In fact, one and a half hours of progress were gone. And I HAD saved in this interval, so, what happened to that?
As it turns out, RetroArch/LibRetro will only save whatever changes happen to the SRAM if you properly close the core, or if you turn on an option to do it once every 10 seconds (or more, 10 seconds is the minimal setting I can put it).
Apparently, the reason for that is that some games use the SRAM as part of their own RAM, and they keep overwriting it all the time, which could lead to potential wear of the storage media, and that’s why it has that behaviour.
That’s a fine explanation, but I have three problems with that option:
[ul] [li]If I save, and the emulator crashes, say, 5 seconds after it (before it has the chance to write the newest save), I’ll lose my latest progress.[/li][li]If the emulator crashes WHILE updating the save file, does it corrupts the data?[/li][li]If I’m playing a PS1 game, like SOTN, where I’ll only update the save very sporadically, how does setting the emulator to update it every ten seconds saves me writing cycles?[/li][/ul]
So, rather than try to take that functionality out, (after all, it has its uses), I’d like to ask this: Why can’t “SRAM be updated whenever the game says so” be an option?
It doesn’t even need to be a separate option, it could be under the “SRAM AutoSave Interval” instead of the first option being “10 seconds”, it’s something like “On Game Demand”.
Because, honestly, this is a HUGE reliability issue for me. RetroArch is a awesome software, but If I can’t save my progress properly, I can’t really put my trust in it.
With RetroArch having options like “Configs per Core” and “Configs per Game”, I fail to see why it enforces such a behaviour for every single game/system, when not all of them needs it.
Related to this post of 2014: https://libretro.com/forums/showthread.php?t=1380
P.S.: Yeah, I know I could simply use a SaveState, but let’s face it: They aren’t as reliable. 99% of the time you’ll have no issues with them, but States are still brute-forcing a new RAM into the emulation, I prefer the usual method.