Who Needs a Game Boy When You Have an ESP32?
Engineeroids turned a spare LCD and an ESP32 into a homemade Game Boy emulator that runs classics like Pokémon and Tetris.
A spare LCD screen might not seem like the most exciting starting point for a new electronics project, but in the right hands, it can become something interesting. Redditor Engineeroids recently turned a leftover display into a homemade Game Boy emulator powered by an ESP32 microcontroller. It is a simple but capable handheld gaming system that can run classics like Pokémon, The Legend of Zelda, Tetris, and Contra.
Engineeroids originally planned to use the spare ST7735 LCD to build a music controller, but ultimately decided that a retro gaming console would be a lot more fun. With that change of direction, the developer set out to assemble a functional Game Boy emulator using just a few inexpensive and readily available components.
At the core of the system is an ESP32 DevKit V1, which handles all of the processing required to emulate Nintendo's classic handheld. The display is a 160×128 pixel ST7735 color LCD, while an analog joystick and a pair of push buttons provide the controls. Everything is mounted on a 7×9 cm piece of perfboard, with the components and wiring left exposed rather than hidden inside an enclosure.
There is no battery, so the device currently requires USB power to operate. That limits its portability somewhat, but it also keeps the hardware simple and eliminates the need for additional power management circuitry.
On the software side, Engineeroids used Peanut-GB, a lightweight Game Boy emulator written in C99. The firmware was developed in C using the Arduino framework, allowing the ESP32 to run original Game Boy games without any dedicated gaming hardware.
Engineeroids initially experimented with using an SD card for storage, hoping to make it possible to select from multiple titles without having to reprogram the microcontroller. Unfortunately, while smaller games loaded successfully, larger ones failed. So for now, the solution is to load a single game directly into the ESP32's flash memory. This is less convenient, but it works well, even with larger titles.
The project is still a work in progress. Engineeroids is currently experimenting with save functionality, although that feature hasn't been successfully implemented yet. A custom splash screen is also in development, which would give the system a more polished startup experience instead of immediately launching into a game.
There is certainly room for improvement, but if you want a handheld console you can build in an afternoon, then Engineeroids' solution is well worth checking out.
Please log in or sign up to comment.