Post subject: Frame recession
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
Some emulators have a frame advance feature. That is, the game is basically paused and by pressing a key you can advance the game by one frame. It occurred to me that wouldn't going back one frame be useful as well? If you advance one frame and notice that oops, you made a mistake, you could go back one frame and try again. This would simply need for the emulator to keep automatically the savestate of the previous frame in memory. In fact, it could keep the savestates of n frames in memory so that you can go back several frames (at most n). Memory in current computers is not a problem so it should probably be possible to keep savestates for quite many frames (at least 100 or so). This way when you press the frame recession key the emulator would just load the savestate for the previous frame kept in memory. This way if you have advanced eg. 10 frames and notice a mistake which has to be corrected 10 frames earlier, you can take back 10 frames and do it again.
Post subject: Re: Frame recession
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
FCEU savestates are about between 10-300 kB in size (FDS saves are bigger), with average size around 20k. For frame recession support for a 30 minute movie (108000 frames), this would mean 2.1 GB worth of savestates. For 100 frames, it would be just 2 MB. Perhaps nobody has just thought of the need.
nesrocks
He/Him
Player (247)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
there could be a setting to limit the number of frames you can keep saved, i think 60 would be a good number
Joined: 6/14/2004
Posts: 646
Well, some emulators already have a rewind function. VBA has a rather robust one right now, under Options\Emulator\Rewind Settings... It lets you specify an interval and how many intervals to store. ZSNES has a simple one set up as well.
I like my "thank you"s in monetary form.
Player (68)
Joined: 3/11/2004
Posts: 1058
Location: Reykjaví­k, Ísland
It wouldn't even have to store a savestate for every frame. How about just storing a state every 100 frames and then when the "player" wants to rewind 1 frame, just reload the most recent one and advance the required number of frames. Basically just automate the "start playing movie in read-only, load from recent savestate (if available), save state, start playing again, load state". It would be slower and more complicated and probably not fesible at all, but possible...