Forget emulating older gaming hardware on modern computers – this hacker has got a SNES game running on an unmodified NES.
Tom “Tom7” Murphy is the man behind the wizardry. Tom7 details his process in two YouTube videos and his solution is ingenious. While the NES hardware is unmodified, the cartridge running the reserve-emulation is heavily modified. It features a heavily customized circuit board with a compact, multi-core Raspberry Pi 3 attached. The Pi essentially replaces the PPU portion of the cartridge, connecting to the NES via a custom-coded EEPROM chip. Only the CIC “copyright” chip from the original cartridge remains unmodified to get around the console’s lockout chip.
The power of a Raspberry Pi lets Murphy go above and beyond what a standard NES cartridge is capable of, but the Raspberry Pi has too much latency to effectively “stream” tile-by-tile graphical instructions to the NES’ cartridge CPU; it takes too long for the Pi to discharge the instructions to the NES that the NES has moved on to the next part of its read-write cycle. To compensate, Murphy used a one-cycle delay, essentially predicting where the PPU would write to next and sending data to that location ahead of time. While the process works, it does result in persistent flickering and graphical noise evident throughout his video.
There are other issues, too. The NES console cannot handle all of the 56,000+ colors possible on a Super NES, so the Raspberry Pi chooses the nearest available NES-safe color using a lookup table. The NES controller also doesn’t have enough buttons to simulate all Super NES inputs. The reverse emulation also doesn’t currently support Super NES audio.
All in all, it’s a pretty cool experiment and displays Tom7’s ingenuity with classic gaming hardware. Sadly, the results – at this time – are not as impressive as the concept.