Arduino Plays NES Games

Watching the advancement of technology is interesting enough by looking at improved specifications for various components as the years go by. But clock speeds, memory size, and power consumption are all fairly intangible compared to actual implementation of modern technology when compared to days of yore. For example, this $40 microcontroller can do what a video game console was able to do in the 80s for a tenth of the (inflation adjusted) price.

The NESDUE is an emulator for NES games which runs completely on an Arduino Due. The Arduino does have some limitations that have to be worked around to get the Nintendo to work, though. For one, it needs to be overclocked to be playable and it also needs a workaround to get past the memory limit of 96 kB of RAM. From there, a small screen is wired up along with a controller (from a Super Nintendo) and the gaming can begin.

This is an impressive feat for an Arduino platform to accomplish, especially with the amount of memory tweaking that has to happen. This might be the most advanced gaming system available that runs everything on an Arduino, right up there with the Arduinocade which can provide an arcade-like experience straight from the Arduino as well.

13 thoughts on “Arduino Plays NES Games

    1. My spitball for that resolution and color depth is only coming up with a megabyte per second or so, I think SPI can handle it, clocked at a decent speed of course.

        1. especially considering these displays can handle sprites, blitting, and scrolling in hardware. you only have to send the parts that change. backgrounds on these consoles are usually stored in tiles so to reconstruct the back ground once a sprite is removed you at most only have to stream at most 4 background tiles back to the screen. then the screen can be scrolled and the newly revealed edge streamed back in. if the sprites move with the background and dont change frames, then they dont have to be undrawn before scrolling. this is very similar to the way the nintendo’s video hardware works.

    2. From the schematic, the display is using hardware SPI, the software SPI is just going to the SD card reader on the back of the display.

      That said, with the number of pins available on the Due, I’m wondering why this isn’t using 8-Bit parallel mode on the display and hardware SPI for the card reader?

      1. Ah, I missed that. It still does seem like in the video the slow update is quite noticeable. In the very beginning the transition from a black screen to the Mario screen takes 4-5 frames of the Youtube video. (Counted using the keys).

    1. yea i kind of felt this title was clickbait as one assumes an 8 bit arduino. but even getting it to run on a due is pretty impressive. as arms go due is kind of a slowpoke.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.