Skip to the content
2 layers100 × 74 mmHandheldGameConsole, the printed circuit board in 3D

HandheldGameConsole

ArnaanShah/GameboyGo

A handheld console for playing retro games with an interesting sliding mechanism.

Size
100 × 74 mm
Copper layers
2
Thickness
1.6 mm
Parts
28
Nets
44
Pads
123
Tracks, vias
384, 25
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
25 Apr 2026
Updated
25 Apr 2026

Overview

HandheldGameConsole is an open-source printed circuit board by ArnaanShah, from the ArnaanShah/GameboyGo repository on GitHub, published under the MIT licence. It is a 2-layer board of 100 × 74 mm with 28 parts on 44 nets, routed with 384 tracks and 25 vias.

It is built around the RASPBERRY PI ZERO 2 W. Its parts include 11 switches, 3 connectors, 2 capacitors, 2 resistors and 1 IC. It belongs with the retro computing and games boards and the Raspberry Pi (Linux) boards of this library.

Main components

1

README

README.md

Gameboy Go 🎮

image

A handheld console for playing retro games with an interesting sliding mechanism. The console has aspects of a Gameboy and a PSP Go, which led to the name. I made this as a part of Hackclub's Stasis program which funds custom hardware projects. I decided to make a game console because I thought it could teach me a lot of new things and allow me to explore topics I'd been interested in for a long time. It also seemed like it would be very fun, and I could continue using it after I finished the build.

Setup

The steps you'll need to get up and running with a Gameboy Go

  1. Order all the parts based off the BOM
  2. Solder your electrical components onto your PCB based on the models and schematics
  3. Download RetroPie using the raspberry pi imager and put it on a SD card into the raspberry pi
  4. Use a computer and the command line to get setup and change the configuration files according to the instructions
  5. Unplug all components
  6. Assemble the bottom half of the case in this order - Bottom, PCB, Middle, Buttons, Top
  7. Assemble the top half of the case containing the screen in this order - Bottom, Display, Top
  8. Route the wires to connect the screen to the main case
  9. Plug it into a power source
  10. You're done!

Features

What this console can do and what it's made of

  • 2 part sliding black and yellow case
  • 3.5 inch screen
  • 15 buttons including face buttons, a DPAD, shoulder buttons, menu buttons, and volume controls
  • 3.5mm audio jack for headphones

CAD

The 3d model of the case and components

I modeled in fusion 360 but I also got a lot of models for components online. In total, this will require 21 screws and 17 nuts. 7 will be used to hold parts of the case together, 2 will be used for the PCB, and 8 will be used for the hinges. There are 3 separate parts in the main case. The bottom, the middle, and the top. The other portion has 2 parts to sandwich the screen so just a top and bottom. The parts are held together by 4 hinges. The wires for the screen are routed through the back and there is also a hole there for power.

Images: image image image image

PCB

Details about the PCB I made

I made my PCB in KiCad. I used it before for other projects so I already knew the basics. My schematic was pretty simple but included things like a low-pass filter for the audio. The PCB layout was also easy to make but I just had to work around a lot of the constraints with making a PCB of this size with this many components.

Schematic:

image

PCB:

image

3d Renders:

image image image image

Software Configuration

How to get setup with the software and make RetroPie work with this console

There wasn't much to do on the software/programming side of this project. I had planned from the start to use an emulator called RetroPie for the console. It handles almost everything and you just need to set it up and change some things to match your console.

image

In order to get RetroPie working on the Gameboy Go, you have to add audio functionality, configure the WaveShare screen, and use RetroGame for button inputs.

First, get your screen up and running by accessing the pi from your computer and following these instructions from the official wiki.

Then, add these lines to your config.txt file to get audio on the headphone jack working:

text
dtparam=audio=on

audio_pwm_mode=2
(This may be on by default but if not add it)

Finally, for the buttons, you need to install RetroGame from Adafruit in order to convert button inputs from GPIO pins to key presses. Then, you need to edit the retrogame.cfg file to match the one provided in the configuration folder.

That should be everything needed to get the console running nicely.

BOM

Bill of materials needed with names, links, and quantities

NameAmountLink
Raspberry pi Zero 2 w1Raspberry pi
3.5inch RPi LCD (G)1WaveShare
6mm Push Buttons11Adafruit
270 ohm resistors2MicroCenter
33nF Capacitors2Aliexpress
M3 Hex Nuts17Home Depot
M3 Screws17Home Depot
M2.5 Screws4Home Depot
Sparkfun 5-way Switch1Aliexpress
Sparkfun TRRS Breakout1Sparkfun
40 Pin Header1Adafruit
12 Pin Header1Aliexpress
3d printed case and components1N/A

Extras

Random related things

I made the logo with the help of chat gpt and then edited it in Canva.

image

These are some photos of my original brainstorming sketches in my notebook: image image

I think I succesfully made what I originally envisioned in these sketches and I had a lot of fun coming up with them.

This design was inspired a lot by the PSP Go and Gameboy, but also by a build I saw from Marcin Plaza where he made a sliding phone. image

Some changes I could still make -

  • Embedding magnets in the case
  • Adding a battery
  • Improving the shoulder buttons

Thank you so much for reading and being interested in my project! If you would like to know more feel free to reach out to me. I hope you enjoy what I've made as much as I have.

Parts

28
QtyValueFootprintReferences
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3MOUNTING HOLE, MOUNTING HOLE, MOUNTING HOLE, MOUNTING HOLE
2270Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2
233nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2
1Conn_01x04_Pin (TRRS)Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1(HDPHN)1
1Conn_01x07_Pin (DPAD)Connector_PinHeader_2.54mm:PinHeader_1x07_P2.54mm_VerticalJ2(DPAD)1
1Conn_02x06_Odd_Even (LCD)Connector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ3(LCD)1
1LOGOLOGOG***
1RASPBERRY_PI_ZERO_2_WConnector_PinHeader_2.54mm:PinHeader_2x20_P2.54mm_VerticalU1(RASB_PI_ZERO_2W)1
1SW_Push (A)Button_Switch_THT:SW_PUSH_6mmSW4(A)1
1SW_Push (B)Button_Switch_THT:SW_PUSH_6mmSW3(B)1
1SW_Push (HOME)Button_Switch_THT:SW_PUSH_6mmSW9(HOME)1
1SW_Push (SLCT)Button_Switch_THT:SW_PUSH_6mmSW7(SLCT)1
1SW_Push (START)Button_Switch_THT:SW_PUSH_6mmSW5(STRT)1
1SW_Push (X)Button_Switch_THT:SW_PUSH_6mmSW2(X)1
1SW_Push (Y)Button_Switch_THT:SW_PUSH_6mmSW1(Y)1
1SW_Push(LSHOULD)Button_Switch_THT:SW_PUSH_6mmSW6(LSHOULD)1
1SW_Push(RSHOULD)Button_Switch_THT:SW_PUSH_6mmSW8(RSHOULD)1
1SW_Push(VOLDN)Button_Switch_THT:SW_PUSH_6mmSW11(VOLDN)1
1SW_Push(VOLUP)Button_Switch_THT:SW_PUSH_6mmSW10(VOLUP)1

The 24 most common of 28 parts.

Similar boards

  • 2 layers87.6 × 100.8 mmEtherKraken, the printed circuit board in 3D

    EtherKraken

    karmakrafts/EtherKraken

    A RP3A0 SiP based controller with 34 programmable IOs, Cortex M0 co-processor, 2MB of flash, SPI, I²C, UART and 100Base-T connectivity.

    84 parts3Apache-2.0
  • 2 layers56.1 × 53.6 mmYashica8 ver0.1.1, the printed circuit board in 3D

    Yashica8 ver0.1.1

    airpocket-soundman/motocamera

    The project to digitize Pathé's MotoCamera.

    24 parts1
  • 2 layers75 × 55.4 mmGaiaBeronia, the printed circuit board in 3D

    GaiaBeronia

    dihermos/GaiaBeronia

    Gaia Beronia is an inspired on Flipper Zero embeeded system. It uses a system based on Python running on Linux in a Raspberry Pi Zero 2W.

    31 parts1Apache-2.0
  • 2 layers90 × 39 mmTEARIS, the printed circuit board in 3D

    TEARIS

    impatrq/TEARIS

    TEARIS (TEA + auris, latín: oído) es un sistema innovador de auriculares con cancelación activa de ruido adaptativa, creado para personas con Trastorno del Espectro Autista (TEA), PTSD, fibromialgia, migrañas crónicas y…

    5 parts1
  • 2 layers69.5 × 68.5 mmRP0-HandHeld, the printed circuit board in 3D

    RP0-HandHeld

    OndrejVac/RP0-HandHeld

    Raspberry Pi Zero 2 gaming handheld

    22 parts1MIT
  • 2 layers115.6 × 67.9 mmGlowClockPCB, the printed circuit board in 3D

    GlowClockPCB

    Sierra-College-Robotics-Club/GlowClock

    PCB and Code for Sierra College Robotics Club Glow Clock

    52 parts1
  • 2 layers150 × 195 mmSCB, the printed circuit board in 3D

    SCB

    Stogalosu/Smart-Chess-Board

    A smart chess board that connects to your phone and automatically makes moves

    52 parts1
  • 2 layers30.2 × 77.8 mmLaika, the printed circuit board in 3D

    Laika

    AeybelV/Laika_PCB

    PCB for the Laika Flight Computer

    22 parts

Questions

How big is the HandheldGameConsole PCB?

It measures 100 × 74 mm and has 2 copper layers, 1.6 mm thick.

What parts does the HandheldGameConsole use?

28 parts, built around the RASPBERRY PI ZERO 2 W. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the HandheldGameConsole KiCad files?

From the ArnaanShah/GameboyGo repository on GitHub, at the commit this page was made from: the board is PCB/handheldGameConsole.kicad_pcb and its schematic PCB/handheldGameConsole.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the HandheldGameConsole design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).