DIY Projects

Weekend Build: ESP32 Game Boy Emulator on an ST7735 LCD

Weekend Build: ESP32 Game Boy Emulator on an ST7735 LCD

Got a spare 1.8 inch LCD sitting in a drawer? Redditor Engineeroids had an ST7735 screen meant for a music controller, changed plans, and ended up with a working Game Boy emulator on an ESP32. It is a Saturday-sized build, and Hackster News has the write-up.

What got built

The handheld runs Game Boy titles such as Tetris, Pokémon, and Zelda on an ESP32 DevKit V1. The screen is a 160×128 pixel ST7735 color LCD. Controls are one analog joystick plus two push buttons, and everything sits on a 7×9 cm piece of perfboard with the wiring left exposed. No enclosure, no battery: it runs off USB power.

Parts and cost reality

The parts list is short: an ESP32 DevKit V1, the ST7735 display on SPI, a joystick module, two tactile buttons, perfboard, and hookup wire. Most of it is probably already in a student’s kit. Budget a few hundred pesos if you buy fresh, and you can prototype on a breadboard first before soldering anything.

The software side uses Peanut-GB, a small Game Boy emulator written in C99, wrapped in an Arduino-framework sketch. The gotcha: loading ROMs from an SD card worked for small games but failed for larger ones, so the fix is to bake a single game into the ESP32 flash. Save-game support and a custom splash screen are still on the to-do list.

Spend your Sunday on this

Wire the display to the ESP32 SPI pins (SCK, MOSI, CS, DC, RST), set up the TFT driver for the 160×128 panel, then add the joystick on an ADC pin and the buttons with INPUT_PULLUP. Get a test pattern on screen before touching the emulator library. Check the Peanut-GB repository for the platform callbacks you need to fill in. Use a ROM you legally own or a homebrew title. If your screen stays white, recheck the 3.3 V supply and the RST pin first.

Frequently Asked Questions

Which emulator does this ESP32 handheld run?

It uses Peanut-GB, a lightweight Game Boy emulator written in C99, inside an Arduino-framework sketch on an ESP32 DevKit V1.

What parts and skills does the build need?

An ESP32 DevKit V1, a 160×128 ST7735 SPI LCD, a joystick, two push buttons, and perfboard. You need basic soldering and the ability to configure a TFT library.

What will I learn if I build this?

You will practice SPI display wiring, reading an analog joystick on an ADC pin, button debouncing, and porting a C99 library to a microcontroller with limited flash.

This article was inspired by reporting from Hackster. Find the parts and modules to build it at Circuitrocks.

// written by Ann Arandia

Ann Arandia covers community projects and maker events for the Circuitrocks blog. She writes about local workshops, kid-friendly electronics, and the Philippine maker scene — the people, the meet-ups, the projects that come out of them.