Relive the 8-Bit Era with This DIY ESP32 Handheld Project
Build your own handheld NES with an ESP32 for pure 8-bit magic at 60 FPS on the go.
Missing that classic 8-bit Nintendo magic but dreading the crawl into the attic to find your dusty, old NES? Connecting a decades-old console to a 4K TV is a headache nobody needs. Sure, you could just boot up an emulator on your PC, build a RetroPie rig, or take a gamble on a sketchy handheld from a random site.
Or, you could take the high road like Shim Manaloto and build your own. He has designed and built an inexpensive, handheld console powered by an ESP32 microcontroller. By porting the Anemoia NES emulator to the ESP32, Manaloto made it possible for this device to play NES games.
Called the Anemoia-ESP32, the console runs classic titles at native NES speeds — around 60 frames per second — with full audio emulation. It achieves this without requiring external PSRAM, relying instead on careful optimization and efficient use of the ESP32’s dual-core architecture. Even without frame skipping, performance still hovers around a respectable 51 FPS.
The emulator currently supports six major NES memory mappers, covering roughly 79% of the console’s game library. Popular titles like Super Mario Bros., The Legend of Zelda, and Metroid run smoothly, while more demanding games with complex bank-switching — such as Kirby’s Adventure — may experience occasional slowdowns. Still, for a microcontroller-based system, the breadth of support is impressive.
The device is built around a standard ESP32 development board paired with a 320×240 SPI TFT display. Audio is handled through a small amplifier module and speaker, while game ROMs are loaded via a microSD card. Input options are flexible: builders can use tactile buttons or connect original-style controllers, including NES, SNES, and even PlayStation variants.
Manaloto has also made the project easy to replicate. A browser-based web flasher allows users to install the firmware directly onto their ESP32 without needing to compile code locally — provided they’re using a Chromium-based browser. For more advanced users, the full source code is available, along with instructions for building and customizing the firmware.
The project is open-source under the GPLv3 license. Check out all the details over at GitHub if you’d like to build your own pocket-sized retro gaming machine.