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.
WorkshopOpen-hardware
Built withESP32
- difficulty
- ●●●○○
- time
- a weekend
- license
- No licence declared
- repo
- repo ACTIVE2 stars
●●●○○ · a weekend · No licence declared · 2 stars · repo ACTIVE
WHAT YOU’LL NEED
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.
IN THE REPO
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 itemsFrom our check of the build. Exact quantities and part numbers are in the creator’s BOM.
Can I build this?
Build at your own risk. Projects involve tools, electronics and sometimes mains voltage — follow the creator’s safety notes.
More builds like this
All projectsGallery
Start here
Navigation into the creator’s own docs — we don’t rewrite the guide, we route you to the source.
- 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.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.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?
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.
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.
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.