Retro Handheld Video Game Console (Adafruit's PiGRRL 2)

From Makerpedia

by Cynthia Niaz


Project Overview

For this project, I built a handheld retro gaming console based on the PiGRRL 2 guide from Adafruit Industries. The goal was to create a portable game system using a Raspberry Pi 3, a PiTFT display, a custom gamepad PCB, and a 3D-printed case. I followed the general structure of the Adafruit tutorial, but I still had to do a lot of hands-on assembly, soldering, and troubleshooting to get everything working. I started by 3D-printing the front and back halves of the case and cleaning them up so the buttons and screen would fit correctly. After that, I assembled the gamepad PCB, which meant soldering all the 6 mm tactile buttons and the 40-pin box header. Installing the PiTFT Display came next, and that was mounted to the case along with the rubber button actuators. Once the gamepad and the PiTFT were in place, I connected them using a shortened PiCable so everything would fit more comfortably inside the enclosure. I installed the speaker and the PAM8302 audio amp, then mounted the shoulder buttons on their bracket and attached that into the bottom half of the case. The Raspberry Pi 3 mounts separately, along with the PowerBoost 1000C. I ended up using the recommended single LiPo battery, which mounts behind the display and connects directly to the PowerBoost. After wiring the switch and double-checking the power circuit, I tested the whole thing to make sure the Pi actually booted before closing the case. Once the hardware was working, I set up RetroPie on the SD card and installed the retrogame utility so the GPIO buttons would work. When all the controls were mapped correctly, I added my legally obtained ROM backups to test the system. It was able to run NES, SNES, Game Boy, and GBA games, and the audio, buttons, and display all behaved the way they were supposed to. Overall, building this project meant following the guide closely, but there were still plenty of steps where I had to figure things out myself—especially fitting the wiring inside the case and making sure everything lined up when closing it. In the end, I ended up with a working handheld emulator that plays retro games smoothly on the PiTFT screen.

Tools and Materials

  • Electronics / Components
  • Raspberry Pi 3
  • 2.8" PiTFT Plus Display
  • PiGRRL Gamepad PCB
  • PAM8302 2.5 W Audio Amplifier
  • Mini metal speaker
  • 40-pin GPIO ribbon cable (PiCable)
  • 2×20 IDC box header
  • 10 × 6 mm tactile buttons
  • 2 × 12 mm tactile buttons
  • Slide switch
  • PowerBoost 1000C
  • Recommended single-cell LiPo battery (2000 mAh or similar)
  • Wiring / Electrical Supplies
  • Solder
  • 30 AWG wire
  • 26 AWG wire
  • Heat shrink tubing
  • Electrical tape
  • Tools
  • Soldering iron
  • Wire cutters / wire strippers
  • Helping hands or vise
  • Multimeter
  • #4-40 screw tap
  • #2-56 screw tap
  • #4-40 machine screws
  • #2-56 machine screws
  • Small Phillips screwdriver
  • Flat pliers (for button prep)
  • Fabrication Tools
  • 3D printer
  • PLA or ABS filament
  • Hobby knife or file (for case cleanup)
  • Mounting tack or small amount of glue


Project Files

Step-by-Step Instructions

I started by 3D-printing the front and back halves of the PiGRRL 2 case. After printing, I cleaned up the edges with a file so the buttons, screen, and speaker would actually fit. I test-fit everything to make sure nothing was warped.

I soldered all the 6 mm tactile buttons into the PiGRRL Gamepad PCB. I also installed the 40-pin IDC box header. This was a lot of soldering, but it was pretty straightforward. I checked that all the buttons clicked properly.

I inserted the PiTFT rubber button actuators into the front half of the case and then mounted the PiTFT screen using #4-40 screws. I tightened them slowly so I wouldn’t crack the standoffs or the display.

I placed the D-Pad, action button, and Start/Select actuators into the case cutouts and then screwed the gamepad PCB into its standoffs. I had to make sure it sat perfectly flat so the buttons wouldn’t stick.

I connected the PiCable between the gamepad PCB and the PiTFT. The orientation matters a lot, so I followed the markings and made sure pin 1 lined up on both ends.

I snapped the mini speaker into its cavity in the case. The wire needed to be tucked carefully so it didn’t block the standoff in that corner.

I attached the two 12 mm shoulder buttons to their plastic mounting bracket using mounting tack. Then I screwed the bracket into the bottom half of the case and inserted the rubber shoulder button actuator.

I pushed the slide switch into the case and aligned it so “down” equals OFF and “up” equals ON. This made more sense to me than the opposite.

I screwed the Raspberry Pi 3 onto its standoffs in the bottom half of the case. I made sure it lined up with where the PiCable was coming from and that the USB ports wouldn’t hit the case.