If pressed, I would probably declare the Raspberry Pi RP2040 to be my favorite microcontroller. It is affordable, powerful, feature-rich, and is still easy to find during the current supply shortage. The RP2040’s “native” development board is the $4 Raspberry Pi Pico, though there are many alternatives from other manufacturers. And by utilizing the proper breakout board, one can add HDMI video output to a Raspberry Pi Pico. That let Frank Hoedemakers build an NES emulator port that runs on the Pico, outputs HDMI, and includes a game selection menu.
NES (Nintendo Entertainment System)/Famicom emulators have been available for full-blown computers for many, many years now, but it is nice to see one running well on a microcontroller. A major factor in making that practical was Frank’s addition of the game selection menu, which lets users choose from ROMs stored on an SD card. Because those ROMs are so small, you can literally store the entirety of the NES video game catalog on a $5 SD card.
This is the culmination of work done by three different people. It started with Jay Kumogata’s InfoNES emulator for Linux platforms. Shuichi Takano then ported InfoNES to run on the Raspberry Pi Pico/RP2040 microcontroller, to work with DVI/HDMI output boards, and to accept input from a few different controller models. Finally, Frank added support for SD card breakout boards for storage and the menu system for selecting games. Put all of that together and you’ve got an awesome little NES system.
To build this yourself, you’ll first need a Raspberry Pi Pico development board. Then you’ll need breakouts for HDMI/DVI and the SD card. The Pimoroni Pico DV Demo Base board provides both in a single board, but is currently out of stock. As an alternative, you can use the Pimoroni Pico VGA Demo Base available at PiShop. For the controller, you can use a Buffalo BGC-FC801, Sony DualShock 4, or Sony DualSense.
I won’t get into the legality of ROM usage, but I’m sure you have the ability to load up an SD card with all of the games you want. As you can see in the video, this emulator will run those games very well.