If there were some sort of advanced TAS movie format that includes both savestates and all input sequences of the TAS, this wouldn't be a problem.
Normal TAS movie files are like video files without
keyframes. You can fast-forward, but jumping backwards requires starting over from the beginning and playing back quickly until the desired point.
Adding savestates into the file would be like adding keyframes to a movie file. Jumping back is faster because the number of frames that have to be processed is reduced dramatically, at the cost of file size and some additional CPU time.
Loading a savestate located earlier on the timeline
and changing the input for even a single frame creates a new history. There are 2 options for handling that:
- This invalidates and removes all savestates located behind the changed frame, so loading them is no longer possible.
- This creates a new branch in a TAS recording tree, similar to how you can create branches in source code version control systems like git. Rewinding creates a savestate (the "tip" of a branch) so that recording can be resumed instantly when switching back to that branch. Jumping to another branch simply loads the "tip savestate" of that branch. And finally, jumping to an intermediary savestate (either a "branching point" savestate or a "keyframe" savestate) is also possible.
Note that there are two issues: first, both options are incompatible with "regular" savestates as they exist now (option 2 would allow importing savestates as completely new branches if they would contain the complete input history though). And second, option 2 would require some sort of graph window for selecting/renaming/exporting/etc. branches (rewinding wouldn't need a GUI though).