

The gameboy
A small retro handheld console built with an ESP32 for Hack Club Half-Life (Week 1).
- Size
- 70 × 120 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 18
- Nets
- 32
- Pads
- 83
- Tracks, vias
- 219, 8
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 5 Oct 2026
- Updated
- 28 Oct 2026
Overview
The gameboy is an open-source printed circuit board by rorotaggf-ctrl, from the rorotaggf-ctrl/pico-pocket-gameboy repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 70 × 120 mm with 18 parts on 32 nets, routed with 219 tracks and 8 vias.
Its parts include 9 switches, 3 connectors and 1 capacitor. It belongs with the retro computing and games boards of this library.
README
README.mdPico Pocket Gameboy
A small retro handheld console built with an ESP32 for Hack Club Half-Life (Week 1).
I designed a custom PCB in KiCad and everything uses through-hole parts so it's super easy to solder by hand.
Features
- CPU: ESP32 NodeMCU (USB-C, dual-core, plenty of speed)
- Display: 1.3" IPS color display (240 x 240, ST7789)
- Buttons: 8 clicky buttons (D-Pad, A/B, Start/Select)
- Sound: Piezo buzzer for 8-bit beeps and game sounds
- Power: Slide switch on the right side to turn it on/off
- PCB: 70 x 120 mm custom PCB
- Architecture: Hybrid codebase combining C++, pure bare-metal C, and raw Xtensa Assembly (
.S)
Pinout
Everything is plugged into female pin headers so I can swap out the ESP32 or screen if something breaks.
| Part | Pin | ESP32 GPIO | Notes |
|---|---|---|---|
| Screen | SCL / SDA | GPIO 18 / GPIO 23 | Hardware SPI |
| RES / DC | GPIO 4 / GPIO 2 | Reset & Command pins | |
| D-Pad | Up / Down | GPIO 32 / GPIO 33 | Active LOW |
| Left / Right | GPIO 25 / GPIO 26 | Active LOW | |
| Action | A / B | GPIO 27 / GPIO 14 | Active LOW (B = Menu Return) |
| Buzzer | Plus (+) | GPIO 13 | PWM audio |
| Switch | Center pin | VIN | Power on/off |
Bill of Materials
[!NOTE] This parts list is mirrored from Half Life.
| Week | Tier | Parts funding |
|---|---|---|
| Week 1 | Tier 1 | $30.00 |
| Part | What it's for | Qty | Unit | Total | Vendor |
|---|---|---|---|---|---|
| 1.3" SPI TFT LCD (ST7789) | that we can see the game | 1 | $7.87 | $7.87 | Amazon |
| Custom 2-Layer PCB (5 copies) | Main gameboy PCB board manufacturing | 1 | $8.10 | $8.10 | JLCPCB |
| ESP32 USB C mit CP2102 Chip NodeMCU | The CPU | 1 | $12.25 | $12.25 | ebay |
| Parts subtotal | — | — | — | $28.22 | — |
| Tax & shipping | — | — | — | $0.00 | — |
| Total | — | — | — | $28.22 | — |
$1.78 left of the tier's funding.
Software & Games
Coding this in VS Code with PlatformIO and the Arduino framework.
- Hardware test (check all buttons, screen and buzzer)
- Snake: Classic arcade snake with dynamic speed progression and persistent flash highscore saving (
Preferences.h). - Flappy Bird: Physics-based flapping mechanics with shrinking tube gaps and highscore tracking.
- Tetris: 4-block piece rotation, line clears, game over detection and scaling fall-speed.
- Pong: 1-Player retro pong against an automated bot with 3 selectable difficulty levels (Leicht, Mittel, Schwer).
- Wolfenstein 3D: Lightweight pseudo-3D DDA raycasting engine with shooting mechanics and destroyable wall blocks.
- Space Invaders: Retro top-down space shooter written in pure C via hardware abstraction layer.
- Breakout: Classic paddle-and-ball brick destroyer with collision physics written in pure C.
- Lunar Lander: Vector thruster and gravity landing simulator with fuel management written in pure C.
- Dino Run: Bare-metal endless runner written entirely in native Xtensa LX6 assembly (
.S) for maximum speed and register-level execution. - Screensavers: 4 idle modes kicking in automatically (Starfield warp, Matrix code rain, bouncing DVD logo, bouncing RR logo) with anti-repeat randomized cycling.
- Settings System: In-game configuration hub to set screensaver timeouts/modes, toggle audio, and wipe persistent NVS highscore banks.
- Secret Easter Eggs: Hidden boot modes and secret chiptune riffs tucked away in the firmware—try holding different buttons on power-up or exploring the settings!
Hardware Previews & Design
Initial Concept Sketch
Original layout sketch showing the handheld form factor, placement of the 1.3" display, D-Pad, action buttons, and side switch.
KiCad Schematic
Full schematic in KiCad showing the ESP32 pin headers, decoupling capacitor, passive buzzer circuit, SPI screen lines, and button pull-up configuration.
3D Model (Front & Components)
KiCad 3D viewer rendering displaying the component arrangement, female pin headers for the ESP32, display connector, buzzer, and tactile switches.
3D Model (Perspective View)
Angled 3D view showing the side-mounted power switch, through-hole solder pads, and board thickness.
Parts
18| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | SW_Push | Button_Switch_THT:SW_PUSH_6mm_H5mm | SW1, SW2, SW3, SW4, SW5, SW6, SW7, SW8 |
| 1 | 100nF | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mm | C1 |
| 1 | Buzzer | Buzzer_Beeper:Buzzer_12x9.5RM7.6 | BZ1 |
| 1 | Display | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J1 |
| 1 | ESP-links | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J2 |
| 1 | ESP-rechts | Connector_PinSocket_2.54mm:PinSocket_1x15_P2.54mm_Vertical | J3 |
| 1 | SW_SPDT | Button_Switch_THT:SW_Slide_SPDT_Angled_CK_OS102011MA1Q | SW9 |
The 14 most common of 18 parts.
Similar boards
- 2 layers27.9 × 16.5 mm

- 2 layers42.7 × 13.7 mm

Stm32-mini12864
VoronDesign/Voron-Hardware
Cool Hardware designed by the Voron Design group
18 parts1.1kGPL-3.0 - 2 layers41.2 × 46.6 mm

- 2 layers44 × 51.3 mm

4272MAVcoder R4
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
18 parts915 - 2 layers28.3 × 14.3 mm

Tap Photosensor PCB
VoronDesign/Voron-Tap
Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:
18 parts716GPL-3.0 - 2 layers20.3 × 15.2 mm

L0 stepper driver
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
18 parts546MIT - 2 layers

- 2 layers42.5 × 28.8 mm

C5VRX JACK DIY V2
Twotoz/C5VRX
Ultra-minimal, zero-CPU 5.8 GHz analog FPV video receiver using ESP32-C5 Wi-Fi 6 PHY MODEM_DIAG, BitScrambler WBFM demodulation & resistor DAC CVBS
18 parts515GPL-3.0
Questions
How big is the The gameboy PCB?
It measures 70 × 120 mm and has 2 copper layers, 1.6 mm thick.
What parts does the The gameboy use?
18 parts. 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 The gameboy KiCad files?
From the rorotaggf-ctrl/pico-pocket-gameboy repository on GitHub, at the commit this page was made from: the board is the_gameboy/the_gameboy.kicad_pcb and its schematic the_gameboy/the_gameboy.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the The gameboy design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).