libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.13k stars 1.82k forks source link

Enhancements to rewind feature #13481

Open rlach opened 2 years ago

rlach commented 2 years ago

Description

Currently when rewind is enabled we can rewind by holding a button, but if we rewind too far we can "go forward". Moreover we cannot see how far are we rewinded out of our buffer. Furthermore it is sometimes hard to continue gameplay when leaving rewind mode in more action-oriented games. It would be nice to optionally be able to enable "Ready? Go!" on-screen display which pauses the game for a second before resuming, and allows to better time getting back into the game. This would be also good for leaving quick menu.

I suggest that instead of single keybind for rewind we should be able to set "rewind toggle" button, which while hold enables rewind overlay, which shows current progress of the rewind (fully filled, because we're at the end), while pausing the gameplay. With this button held "rewind back" and "rewind forward" keybinds can be used to move trough the progress, so for example user can rewind 5 snapshots back, and decide that is to far, press rewind forward to get only 4 snapshots back, and decide that is ideal.

When "rewind toggle" button is released the gameplay resumes. If "ready! go!" is enabled the game instead stays paused for configured time, and shows countdown until the gameplay is enabled. When it reaches zero the emulation resumes as normal.

Finally, even if user is usually fine with rewinding only a bit, sometimes they might want to rewind very far back and currently it takes a lot of time with bigger buffer. I suggest configuration option to have gradually increasing speed of the rewind - the longer you hold rewind forward/back the faster the rewind happens (Retroarch would jump by increasing amount of snapshots). If user stops holding a direction and presses it again the rewind starts again from slowest speed and increases over time, but obviously continues from current snapshot in the timeline.

Castlevania Advance Collection could be used as good sample for described behaviours. This video demonstrates how rewind works in this emulation: https://youtu.be/Ni6XM2hLQjg?t=266

Alternatively Ninendo Online emulators offer a little different user experience for 2-way rewind, which could be used too.

sonninnos commented 2 years ago

Also it would be cool to be able to watch a replay with rewind, as in return back without actually rewinding.

puddydoo commented 1 year ago

Another reason to have a rewind menu is that it could be opened directly from the quick menu without setting a hotkey to rewind.