How does the FCEUX TAS Editor enable you to step back 1 frame at a time? Any idea how this feature was implemented?
One save state per frame?
I don't know how it does it specifically but it doesn't seem like a particularly difficult problem to solve?
If it wanted to save memory it could savestate once every 10 or 100 frames (or never) and just re-simulate from the last savestate (or power-on) to whatever frame it needs to show. It could also do some kind of intelligent caching scheme, e.g. greater savestate density around the recent past, since it can always be rebuilt by re-simulating.
There's some earlier discussion about the topic at
viewtopic.php?t=331You can also find some code (directly related to the thread above) at
http://blargg.8bitalley.com/misc/
thefox wrote:
There's some earlier discussion about the topic at
viewtopic.php?t=331You can also find some code (directly related to the thread above) at
http://blargg.8bitalley.com/misc/Woah! Thanks. Good stuff in that thread.
Reversed emulation. Already discussed and implemented in a few emulators.
Zepper wrote:
Reversed emulation. Already discussed and implemented in a few emulators.
Discussed a decade ago!