For all those who feared their Game Boy days would be but a memory, worry no more! The Game Boy may be dead, but with the Pico-GB you’ll have a chance to revive it.
The Pico-GB is a retro-gaming emulation console that ressembles to the original Nintendo Game Boy released in 1989.
It is based on the $4 Raspberry Pi Pico microcontroller. The case and buttons are 3D printed. The screen is a 2.2-inch LCD with a resolution of 220×176 pixels and 65K colors. There are 8 buttons: 4 for the DPAD + 4 action buttons (A, B, select, start). The buttons are 6x6x6mm micro push buttons. The sound is provided by a MAX98357 amplifier and a 2W speaker.
The Pico-GB can play original Game Boy DMG games using a modified version of the RP2040-GB (DMG) Game Boy emulator from Mahyar Koshkouei (deltabeard).
You can also develop your own games in C or Micropython!
What you need
To make the Pico-GB, you need the parts below:
Recommended tools
3D Printer (e.g. Creality Ender 3 V2) | ![]() |
Yihua 939D+ III Soldering Station (e.g. Yihua 939D+ III) | ![]() |
Set of 4 hexagonal screwdrivers (1.5 mm, 2mm, 2.5mm and 3mm) | ![]() |
Digital Multimeter | ![]() |
3D Printing
All parts are printed in PLA/PLA+ except for the pads which are printed in TPU. I print the shell with “Rapid prototyping” print settings and the buttons with “Super Quality” print settings. Because they are small parts, the buttons benefit from a small layer height (e.g. 0.12mm) to achieve the best quality. Alternatively, you can print the buttons in TPU for a softer feel.




Under the buttons, like on the original Game Boy, there are elastic pads to improve the feeling of pressing the buttons. They are printed in TPU with these print settings. TPU is notoriously difficult to print. The secret is to print slowly (20mm/s) + slow down the retractions or disable them completely (with a Bowden system) + keep the build plate at room temperature (TPU adheres very strongly, no need to heat the build plate). If you don’t want to use TPU, you can print them in PLA, the buttons will just feel a little bit less qualitative (more noise + less rebound).

Electronics
The diagram below shows how everything is connected to the Raspberry Pi Pico. Note that the 3V3 (OUT) pin is used to power the LCD display and the MAX98357A amplifier.

Software
It’s easier to flash the firmware before starting the assembly so that it’s possible to test that everything is working as expected at every stage of the build:
- Download the latest release of the RP2040-Pico-GB emulator on Github. In order to flash Pico, you’ll need the file RP2040_GB.uf2.
- Connect your Pico to your computer while maintaining the BOOTSEL button (The white button on top of the Raspberry Pi Pico)
- Count to three, then let go of the BOOTSEL button
- After a few seconds, your should see your Pico appear as a removable drive – as though you’d connected a USB flash drive or external hard drive.
- On your computer, you’ll see a new drive for the Raspberry Pi Pico
- Drag & drop the RP2040-GB.uf2 file over this drive to install the firmware on the Pico
Assembly
Soldering the headers
When you unpack your Raspberry Pi Pico, you’ll notice that it is completely flat: there are no metal pins sticking out from the sides. For this project, you’ll need to attach two 20-pin 2.54mm right angle male headers. You can also solder the wires directly to your Raspberry Pi Pico if you don’t have right angle male headers.
Connecting the display
Connect the ILI9225 display to the Pico with ~15cm long wires with Dupont Female connectors as shown below:
- LCD VCC = +3.3V (OUT) = RED
- LCD GND = GND = BLACK
- LCD CS = GP17 = WHITE
- LCD CLK = GP18 = GREEN
- LCD SDI = GP19 = BLUE
- LCD RS = GP20 = PURPLE
- LCD RST = GP21 = GREY
- LCD LED = GP22 = YELLOW (when present)

Note) Not all ILI9225 displays have a LED pin. However, if a LED pin is present, it must be connected to +3.3V or to a positive voltage between 0 and 3.3V (to adjust the brightness) otherwise the display won’t display anything
Note) The display VCC pin is not directly connected to the +3.3V pin of the Pico because there is only one 3.3V output on the Pico but we need to power multiple devices with 3.3V (ILI9225 LCD display + MAX98357 power amplifier module)
CAUTION) Not too many things can burn your Pico or your computer, but always check your connections twice. In particular, always check that there is no short between the +3.3V pin and the ground pin!
After connecting the display to the Pico, you can check that your screen works correctly by connecting your Pico to USB.
Connecting the buttons
Solder the push buttons to the solderable breadboard as shown on the image below. Each button is connected to the GND on one side and to the Raspberry Pi Pico on the other side. To connect the buttons to the Raspberry Pi Pico, I use ~10 cm wires with a female Dupont connector on one side.
- UP = GP2 = BROWN
- DOWN = GP3 = YELLOW
- LEFT = GP4 = PURPLE
- RIGHT = GP5 = GREY
- BUTTON A = GP6 = BLUE
- BUTTON B = GP7 = WHITE
- SELECT = GP8 = ORANGE
- START = GP9 = GREEN
- BUTTONS GND = GND = BLACK

Adding sound
Connect the MAX98357 amplifier to the Pico using ~10cm wires with Dupont female connectors and the speaker to the amplifier as shown below. As there is only one 3V3 output on Raspberry Pi Pico which must be shared between the LCD display and the sound amplifier, you can use the (+) line on the top of the solderable breadboard to distribute the 3.3V to all boards. Connect the 3.3V output of the Raspberry Pi Pico to the (+) line of the breadboard then connect each component that needs 3.3V to this (+) line.
- MAX98357A DIN = GP26 = BLUE
- MAX98357A BCLK = GP27 = GREEN
- MAX98357A LRC = GP28 = WHITE
- MAX98357 GND = GND = BLACK
- MAX98357 VIN = 3V3 (OUT) = RED

Connecting the SD Card Reader(optional)
The SD Card reader will be used to store ROMs and save files. This feature is currently under development
Connecting the battery and charger (optional)
You can play your Pico-GB by simply connecting it to USB. However, if you want to use your Pico-GB anywhere and make it a portable handheld game console, you can add a Lipo battery + a on/off switch + a USB charger. As the power consumption of the Pico (even overclocked to 266MHz) is very low, this gives days of autonomy!
Note) The preferred way to provide power for Raspberry Pi pico when it is not connected to USB is to provide a voltage between between 1.8 and 5.5V to the VSYS pin.
CAUTION) Do not turn on the battery when the Pico is already connected to a power source via its micro USB connector. I kept the power circuit very simple but it should normally include a Schottky diode to prevent problems if you also supply power to the VBUS pin.

Makes








