Build Your Own Breadboard NES
UF-Evan built a breadboard NES clone from scratch using an ESP32-S3 to learn the inner workings of the console's original hardware.
If you have the itch to do some retro gaming but don’t feel like digging your NES out of the attic and dusting it off, there are plenty of other options. You can run an emulator on your PC or a Raspberry Pi, or you can pick up a handheld of questionable legal origin from any number of sources online. GitHub user UF-Evan wanted to play some classic NES games, but wasn’t content stopping there. He also wanted to know how the console worked.
So rather than firing up an emulator, UF-Evan designed his own breadboard NES clone. This creation doesn’t just run an existing emulator, either. He wrote his own, called DIJI-NES, that emulates the 6502 CPU, the NES’s PPU graphics chip, and the APU sound chip. DIJI-NES runs on ESP32 microcontrollers at frame rates of up to 50 FPS — not bad for a hobby project!
The hardware used in the project is an ESP32-S3 development board, an ST7789 TFT LCD display, a MAX98357A audio amplifier, and an SD card reader module. These were all wired up on a breadboard with some buttons that serve as controls. Game ROMs are stored on SD cards — no need to blow into the card slot before you insert a game.
DIJI-NES was written from scratch to emulate the original NES hardware. The code relies on the LovyanGFX library to drive the LCD display. The project is still under development, so not everything works perfectly. However, UF-Evan notes that most games from the early- to mid-lifespan of the NES work great.
If you want to try this out for yourself, everything has been released under a permissive GPL-3.0 license. The source code and instructions are available on GitHub.