With the blessing of the author of libgambatte I am able to publically announce GambatteDroid. Gambatte is a cycle accurate open source Gameboy and Gameboy Color emulation library. As a developer I must say that libgambatte is very well written. Kudo’s to all the authors involved in the project (Project Home) As a Gameboy fan nothing is more nostalgic than playing it on a mobile device. Go ahead and visit the forums if you have any comments to make. Please rate or comment on the market page!
To continue the last post about GENPlusDroid real time rewind. NESDroid rewind uses the exact same method. Required only some small changes to the emulation core, nothing major just how it loads/saves its state. The FCEU state saves are around 75Kb per frame. We are using a 20MB heap for the NES version which only provides 15-20s of rewind as you see in the final segment of the video.
Certainly more fun to real time rewind NES that Genesis in my honest opinion.
Not to long ago I adopted a method created by Maister into the genplus emulator that allows for real time rewinding (think Prince of Persia or Braid). The method is somewhat like video compression P-Frames where you store the diff of the last frame. Emulators like FCEU use state saving to disk to pull this off which is very expensive. The individual state frames are often large ranging anywhere from 75Kb to 300Kb. This method of storing the diffs in memory allows us to provide almost 30 seconds of rewind (varies depending on the game). You can do the math to get a rough estimate how much space 30 seconds at 60fps worth of frames would take in its raw form. The only real performance hit is the serialization and unserialization of the state itself, this proves fairly negligible. This is really just a for fun feature it is however neat none the less.
With VBANext rolling on in the background we took a small side step and got SNES9xNext repository going. To help mark this release I prepared a port of SNES9xNext for Android. This is particularily interesting since all current SNES ports on Android are of SNES9x 1.43. The SNES9x 1.43 branch is known for its raw speed so it is a chose candidate for running on slower CPUs. Since SNES9x 1.5X the team has gone towards improving audio by adding blargg’s audio core among other things. In turn the SNES9x 1.5X branch is quite a bit slower. Putting arguments aside which is better the plan here is to streamline being able to quickly deploy each version. Currently SNES9x 1.43 runs full speed with frameskip=0 on all games on most native Android 1.6 or higher devices. While SNES9x 1.52 requires a newer tablet basically. On my HTC Incredible S which has a 1Ghz ARM-7 CPU I get ~55fps on most games with frameskip = 0 and full speed with frameksip = 1.