Reverse Emulation Algorithm

This C code implements a reverse emulation algorithm that allows
real-time emulation in reverse without significantly more processor use
than normal forward emulation. The module can be used as-is in an
emulator by defining the callback functions, or as a starting point for
a custom implementation.

Demo.c shows basic use and exercises it a bit. Test.c tests the
algorithm using random forward and backward motion for thousands of
iterations. I have also tested this in an experimental emulator.

See reverse_emulation.h for reference. See nesdev thread for original
idea and discussion: http://nesdev.parodius.com/bbs/viewtopic.php?t=331

I plan on writing a more complete tutorial on the algorithm itself.

-- 
Shay Green <hotpop.com@blargg> (swap to e-mail)
