[Feature Request] Dynamic Save States
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 14.1k
- Forks
- 2.2k
- Avg merge
- 7h 35m
- Merged PRs (30d)
- 51
Description
First and foremost consider this:
- Only RetroArch bugs should be filed here. Not core bugs or game bugs
- This is not a forum or a help section, this is strictly developer oriented
Description
Alright, last idea I'm posting here for a while. Very pie in the sky idea, and one i've considered tinkering with in rust via: https://www.retroreversing.com/CreateALibRetroFrontEndInRust.
Basically, it's sort of a less jarring, more performant, and more natural feeling alternative to rewind. I call it "Dynamic Save States" or dynamic checkpoints. The idea is that the game automatically makes savestates during moments it determines are "safe", rather than a set timeout (like every 5 minutes). Safety is determined by "not a lot of motion on screen" and "no controller inputs" for roughly a second.
"Not a lot of motion on screen" is based on the principle that libretro already handles entire frames of the core's video buffer in memory. And these buffers, I imagine (but don't know for sure) are relatively small at 320x240 at the smallest and 720 x480 at the largest in terms of images.
So the idea is to save a copy of the prior video frame in memory in addition to the current. If no controller input is taking place and prior video frame is roughly equal (like 70 or 80%) to the current video frame for sixty frames (that is one second), then create a save state. Some notification or millisecond countdown should occur when this happens and/or begins to happen, etc.
[Expected Result]
The end result is that the illusion of checkpoints in modern games is created in just about any context, the user doesn't have to micro manage saves to undo mistakes, nor do they have to put such a heavy load on their system making MANY save states per second with rewind. This is of course, as with any quality of life or gameplay affecting option, optional.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin by reviewing RetroArch's existing rewind and save-state paths and the libretro video-buffer handling described in the issue. Done would mean an optional dynamic-checkpoint feature with the proposed input and frame-stability trigger plus a notification or countdown, but the issue does not identify files, tests, or an implementation boundary.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100