TASEmulators / TASEmulators/BizHawk

[F.Rq.] "Un-loadstate" / Mitigate accidental overwriting of SaveRAM with savestates

Open
#2,175 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

App: EmuHawk Meta Request: Feature/Enhancement
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

Note: EmuHawk does not currently have un-loadstate. However, if rewind is enabled, it's making savestates periodically. You may be able to restore your progress by rewinding back "through" the loadstate.
Original text follows.


bramcn0745 brought this up in #2157, and I think this option would be extremely valuable. Loading savestates can be very destructive for casual users, as it can immediately overwrite a save file on disk without any warning. In my very early days, I have had this happen a few times, and it's easy to not even be aware of the dangers of loading savestates, or load a savestate without thinking.

One option is a warning like: "Loading a savestate will overwrite your save file. Are you sure you want to do this?" It could even have an option "Backup my save file". A warning might be overkill, but if it had an easy dialog option "don't warn me again", that might be a nice compromise.

Alternatively, BizHawk could create a backup SaveRAM file when loading a savestate for the first time in a session of a particular game, and then any savestate loading mishaps are thus made easily recoverable. The more I think about it, the more this second option seems ideal for casual players and TASers alike, as it's a nice safety catch mechanism, but also doesn't disruptive to power-users.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by examining EmuHawk's existing savestate, rewind, and SaveRAM behavior. The issue presents warning and automatic-backup alternatives, so first establish which recovery behavior is intended, then verify that loading a savestate cannot silently destroy progress and that affected SaveRAM can be recovered.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
desktop-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.