Spent three weekends building a handheld that plays old Game Boy carts, learned a lot

Nov 06, 2026 Last reply: 10 hours ago 3 Replies
Jump to replies (3)

So I finally got my DIY handheld running games. It's an ESP32 dev board wired to a little 2 inch color screen on hand-soldered protoboard, with a cheap analog stick and four tactile buttons in a 3D printed shell. First boot showed nothing but static, wich turned out to be a backwards logic level on one of the screen pins. Fixed that and suddenly there was Tetris. It actualy runs at full speed for most games, though audio crackles if I push the chip too hard, so I dropped the sound sample rate a bit and it's mostly fine now. Zelda plays great. The battery is just a lipo from an old drone taped in for now, giving me maybe two hours per charge. Next up is proper save support so I can actually finish a game without leaving it plugged in. If anyone has dealt with audio crackle on these, curious what worked for you, though no pressure, mostly just happy it boots at all.


I went through the same crackle headache on my handheld build last year. Mine was an ESP32 with a 2.4 inch screen and a little speaker amp off a busted radio, and the sound whould stutter anytime the emulator was doing heavy work. What fixed it for me was moving the audio work to the second core so the emulation loop and the sound output stopped fighting over the same one. Made a bigger difference than any sample rate change I tried.

The other thing that helped was making the audio buffer bigger. Smaller buffer meant the sound loop was getting interrupted constantly. Once I gave it more room to breathe, the crackle basicly went away even during busy scenes. On saves, I put off doing it properly for months and just kept a notepad next to the couch writing down where I was in each game. Eventually I wired a little SD card slot onto the back of the shell and it ended up being easier than I expected. Worth doing before you add anything else, because retro fitted later is messier than designed in from the start.

Your battery situation sounds like mine did at first. I upgraded from a taped on pack to a proper holder with a charge board and it made the whole thing feel finished instead of a prototype. Two hours is actually decent for a first go though.

For the battery part, mine started the same way, a pack from a crashed quad held in with zip ties. It actually held up fine mechanically, but charging meant unplugging a tangle every time, so I eventually put a small connector on it. That one change made the whole thing feel less like a prototype. I get closer to three hours than two, but my screen is dimmer than most beacuse I never bothered with a backlight boost, so your numbers will probaly differ.

Regarding save support, I found it more annoying than neccesary to implement a proper file system from scratch. My setup for retro cores, which mostly uses a small FAT partition on the micro-SD, handles the chunk writes just fine. For the Gameboy sprites I've been tuning, I managed to keep the entire asset library under 1024KB of internal PSRAM, which was crucial for keeping the execution timing tight. What specific file system are you looking at, like little FS or something else?

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required