# An ESP32 handheld that plays NES off a microSD card

Rithin K crammed a 320x240 TFT, a 2S lithium pack and a speaker into a two-piece 3D-printed shell around a plain ESP32 DevKit, then ran NES games at about 60 FPS.

- Category: Hardware (build)
- Made by: [Rithin K](https://www.hackster.io/maxpower463260) on Hackster.io
- Original: https://www.hackster.io/maxpower463260/pocketnes-32-diy-esp32-nes-handheld-console-41b2a1
- On Afterware: https://afterware.xyz/p/an-esp32-handheld-that-plays-nes-off-a-microsd-card

## Can I build this?

- Difficulty: Intermediate
- AI-buildability: 4/5 (The firmware is an existing emulator that needs only pin configuration, which AI can help with, but the soldering, perfboard D-pad, power wiring and case assembly are hands-on.)
- Time: A weekend
- Cost: $40–70
- Parts: ESP32-DevKit, ST7789 2.4in SPI TFT 320x240, microSD card module, 2S Li-ion 7.4V 3800mAh pack, 2S charger/BMS board, Mini buck converter, PAM8403 amplifier
- Tools: soldering iron, 3D printer, multimeter

Estimates based on the original write-up. How the AI-buildability score works: https://afterware.xyz/ai-buildability

## Build sheet

- Brain: ESP32 DevKit
- Display: ST7789 320x240 TFT
- Power: 2S 7.4V 3800mAh Li-ion
- Firmware: Anemoia-ESP32 (Arduino)

## Starter prompt

```
Based on "An ESP32 handheld that plays NES off a microSD card" on Afterware: https://afterware.xyz/p/an-esp32-handheld-that-plays-nes-off-a-microsd-card

I want to build a handheld NES player on an ESP32 DevKit with a 2.4in ST7789 SPI TFT (320x240) and a microSD card module on a separate SPI bus. Start from the Anemoia-ESP32 emulator and help me set up TFT_eSPI for the ST7789 pins, a config.h for the buttons, SD and I2S audio, and a pause menu on Start+Select.
```

## Story

The brain is an ordinary ESP32 DevKit, the kind found in beginner IoT kits. Rithin K ran the Anemoia-ESP32 NES emulator on it, with Wi-Fi and Bluetooth switched off and each of the two cores given its own job: one for emulation, one for audio and buttons. The result is a pocket console that loads ROMs from a microSD card and holds about 60 frames per second.

The case is FreeCAD-designed and printed in ABS as two halves. The orange front holds the ST7789 screen and buttons, and the black back holds a 7.4V 3800mAh 2S pack, a charger/protection board, a buck converter and the speaker. The D-pad is built on small perfboard pieces, and the other buttons are standard tactile switches wired to GPIO and ground with internal pull-ups. Before the ESP32 saw any power, the buck converter was trimmed with a multimeter to exactly 5.0V.

Battery life is listed at 2 to 5 hours, with about an hour to charge. The trick worth stealing is the power-first bench test: a 2S pack and a bare ESP32 can take each other out, so bring up the buck converter alone before anything else touches it.

## Resources

- [Firmware repo (Anemoia-ESP32)](https://github.com/Shim06/Anemoia-ESP32)
- [Case source (FreeCAD)](https://hacksterio.s3.amazonaws.com/uploads/attachments/2017793/unnamed_KnsZdubp3o.FCStd)
- [Case source part 2 (FreeCAD)](https://hacksterio.s3.amazonaws.com/uploads/attachments/2017794/unnamed1_YQdpGqiuif.FCStd)

Tags: esp32, nes, handheld, 3d-printed, emulation, retro, lithium

AI assistants can search all Afterware builds through the MCP server at https://afterware.xyz/mcp (setup: https://afterware.xyz/agents).
