THIS IS AN ORDINARY NES CONTROLLER AND IT IS RUNNING DOOM BY ITSELF

He opened a cheap NES-style gamepad, saw how much empty space was inside, and put a whole console in it.

by Logic Gate Labs

FULL CAD BOM FIRMWARE DOCS

WorkshopOpen-hardware

Built withESP32

difficulty
●●●○○
time
a weekend
license
No licence declared
repo
repo ACTIVE2 stars
1
Jump to section

COMPAREE VERDICT

This is not a difficult build if you have soldered before, but it is a tight fit and the wiring is fiddly. The clever part is the board choice: a dual-core ESP32-S3 would have been faster, but it physically did not fit inside the gamepad housing, so the single-core S2 Mini was picked as the compromise between size and speed. That trade-off is why Doom runs at around 5 to 15 frames per second rather than smoothly. The creator puts the parts at around seventeen dollars from common suppliers, or about half that ordered from overseas marketplaces. The software is Retro-Go, an existing emulator front end for ESP32 boards, so this is reproducible rather than one person's private firmware. The one thing most likely to go wrong is the screen fit — there is no printed bracket, so you will be measuring, trimming and testing the clearance yourself. The repository does not include detailed photos of the internal layout, so expect some trial fitting. If you want a self-contained handheld that looks like an ordinary controller from the outside, this is the build. If you want full-speed emulation, you will need to accept a larger case and a faster chip.

GOOD TO KNOW

  • —The repository lists the required modules with their specs and a full pinout table, plus step-by-step build and flashing instructions; there are no supplier links.
  • —The firmware is Retro-Go, a separate long-running open-source project by ducalex — not custom code.
  • —No 3D models or CAD files; the build uses a commercial NES-style gamepad housing as-is.
  • —No PCB design files — this is a wiring job using development boards.
  • —The repository has no licence file, so reuse rights are not granted by default; ask the author before redistributing. Retro-Go itself carries its own upstream licence.
  • —The README refers to a companion video by the author but does not link it.

Parts to buy

6 items

From our check of the build. Exact quantities and part numbers are in the creator’s BOM.

  • Wemos ESP32-S2 Mini (2 MB PSRAM, 4 MB flash)Find
  • 1.3 inch 240×240 ST7789 IPS display without a CS pinFind
  • MicroSD card moduleFind
  • Eight push buttonsFind
  • Small speaker or buzzerFind
  • Cheap NES-style gamepad housingFind

BUILDS OF THE WEEK

Five open-source builds worth your weekend, every week.

Checked like this one: what’s really in the repo, what it costs, how hard it is. One email, unsubscribe anytime.

Can I build this?

Printnothing required
BuyWemos ESP32-S2 Mini (2 MB PSRAM, 4 MB flash), 1.3 inch 240×240 ST7789 IPS display without a CS pin, MicroSD card module, eight push buttons, small speaker or buzzer, cheap NES-style gamepad housing; add a LiPo battery and charger board if you want it cordless
Toolssoldering iron, wire strippers, multimeter, USB cable for flashing, screwdrivers, possibly a rotary tool for shell trimming
SkillsIntermediate: confident soldering of small wires to development board pins, flashing ESP32 firmware, patience with tight internal fitting and wire routing. No PCB design or custom firmware required.
TimeA weekend: one afternoon for ordering and receiving parts, one evening for flashing and first assembly, one more session for fitting and debugging wiring inside the tight shell.
Cost$ — under seventeen dollars for all electronic parts from usual suppliers; gamepad housing a few dollars more if you do not already have one
SafetyLithium-polymer battery requires care: do not puncture, short, or overcharge. The TP4056 charging board handles the charging if wired correctly. No mains voltage. Keep the battery away from children and metal objects during assembly.

Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.

More builds like this

All projects

Gallery

Start here

Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.

  1. 1.Read the flashing guide in the repository to prepare the ESP32-S2 Mini firmware (The instructions assume you have already bought the parts listed in the BOM.)
  2. 2.Flash Retro-Go to the ESP32-S2 Mini following the repository instructions(This step must complete successfully before you start wiring or fitting anything into the shell.)
  3. 3.Test the screen, speaker and battery connections on the bench before closing the shell(Debugging inside the tight housing is much harder than on the bench.)

KNOWN ISSUES

  • The single-core ESP32-S2 Mini is slower than an S3, and that is deliberate — the S3 does not fit in the housing. Do not buy an S3 expecting better performance; it will not close.
  • The screen has no printed bracket or detailed internal photos showing exact placement, so expect to measure, trim shell plastic, and test-fit multiple times.
  • The battery and charging parts (a small LiPo, a TP4056 charging board and a slide switch) are not in the repository's wiring tables. Check polarity before connecting the cell, insulate every joint, and make sure nothing can short when the shell closes.
  • There is no drawn schematic, but the README has complete pinout tables for the display, SD card, buttons and speaker, so wire from those and check each connection with a multimeter.
  • DOOM runs slow but playable, not smooth. If you want full-speed classic games, stick to the 8-bit titles Retro-Go was designed for.
  • The gamepad housing is a commercial product, not a 3D-printed custom case. If you cannot source the same housing cheaply, the entire fit will be different.

Can I use an ESP32-S3 for better performance?

No — the dual-core S3 physically does not fit inside the NES-style gamepad housing. The single-core S2 Mini was chosen specifically because it is smaller, and that is the reason DOOM runs slower.

What games can it actually run?

Dozens of 8-bit titles through Retro-Go, and a slow but genuinely playable build of DOOM. Do not expect smooth frame rates on DOOM — it is a tech demo, not the ideal use case.

Do I need to compile the firmware myself?

Yes. There is no official Retro-Go build for the ESP32-S2 Mini, so the guide walks you through creating a custom target, installing ESP-IDF v4.4.6 and compiling with rg_tool.py. The target files are in the repository, so you can copy them instead of writing them yourself.

Is there a video showing the internal wiring step by step?

The README mentions a companion video by the author, but the repository does not link it. The written guide has full pinout tables and flashing steps, but no wiring photos.

Community builds

No community builds yet — be the first, we feature the best ones.

Discussion1

FROM THE COMPAREE TEAM

The dual-core ESP32-S3 would have been faster, but it physically did not fit in the housing — so the single-core S2 Mini was chosen, and that is why DOOM runs slow. Would you take the speed hit for the smaller shell, or would you build this in a bigger case with the faster chip?

CompareeTEAM2mo agoedited

Practical notes from our verification: the repository is a build-and-flash guide, not a hardware design — the emulator is Retro-Go by ducalex, a separate long-running open-source project, and there is no ready-made Retro-Go target for the ESP32-S2 Mini, so you build your own target with ESP-IDF 4.4.6 (the guide walks you through it, or you copy its prepared files). The README gives the parts as specifications rather than shop links, with full pinout tables for the display, microSD module, buttons and speaker, so wiring is clearly mapped but internal fitting is up to you. The creator puts the parts at around seventeen dollars from common suppliers. The single biggest thing to know before buying: an ESP32-S3 would have been faster, but it did not fit inside the gamepad housing, so the slower S2 Mini was the compromise — you cannot swap in the faster board without changing the case. Correction (4 October 2026): we re-checked this page line by line against the project's own repository, documentation and videos, and fixed errors in earlier versions.

Logic Gate Labs

Logic Gate Labs opened a cheap NES-style controller, noticed the empty space, and turned it into a self-contained handheld console. The engineering decision to use the slower single-core ESP32-S2 Mini instead of the faster S3 was driven entirely by the physical constraint of the housing.

GitHub

Star the project on GitHub

DISCLAIMER

  • Comparee is not the author of the projects featured here. All rights to each project belong to its creator — every page links to the original source, and we never host creators’ files.
  • Information is provided without warranty and may become outdated as projects evolve. Prices are indicative bands only — always check the creator’s parts list for current costs.
  • Building and operating any project is at your own responsibility. Protective equipment, safe workshop practice and compliance with local regulations are the builder’s responsibility.