Changes
/* Rewind feature */
When the user wants to rewind, the emulator uses the latest SNR in the background, and records each frame. It then plays these frames backward. At the same time, the emulator goes to the previous SNR, using it to get frames from the second before, and so on.
Users can stop rewinding whenever they want. They just have to press and hold a rewind button to play the game backward at 1x speed. When released, time goes forward again.
To avoid confusion, the display gets a sepia filter when rewinding, showing that time is moving backward.
For debugging, this method lets you do things like go back to the previous instruction (if the time information is kept) and in the same way access the previous HBL, IRQ, VBL, etc.
Importantly, this doesn't use a lot of CPU or RAM. It just means creating a save state every second and keeping a log of all inputs.
= Emulator accuracy checking tools =