In this project we’re building a handheld gaming console! This DIY gadget has 12 buttons, an analog joystick, stereo speakers and a 5” HDMI display. We’re using the Raspberry Pi A+ and RetroPie image. We call it.... Super Game Pi!

Bigger than our DIY GameBoy, this project has support for way more games, a bigger screen, sound and all ze buttons!

To make your own Super Game Pi, you’ll have to 3D print the enclosure, hack an SNES controller and solder electronics.

You can pick the Raspberry Pi A+ and all the parts to build this project from Adafruit. We’ll need some hand tools and access to a 3D Printer. Check out the full list of materials below.

RetroPie + Emulationstation

Unlike the DIY gameboy, this project uses an 5" HDMI display instead of the 2.8" PiTFT. Since the PiTFT is not an HDMI display, our earlier project couldn't take advantage of the Pi's hardware graphics accelleration. 

Big screen, more games!

With a 5" true HDMI screen, the Pi can run Emulationstation so you can play just about any emulator. Ports and PC games are also supported as long as you can update the Pi to run proper libraries and dependencies. By default, the RetroPie image includes all the libraries to run a hand full of retro emulators (NES, SNES, Apple II, PC, GB, GBA).


This is a challenging and advanced DIY project that requires basic 3D printing, electronic and maker skills. The parts take about 8-10 hours to print while the assembly will vary depending on how much time you can devote to completing the project. You'll want to plan this project with least 6 hours of making in mind. 

We built this project over the course of many weeks with a lot of effort. We will not be able to fix or refund your project if it deoesn't work out! Do not attempt if you are not familiar with all the parts used!

This is not a good "first" 3D printing or Raspberry Pi project!


Circuit Analysis

Take a moment to look over the components. The circuit diagram is ment to be used a reference for visualizing wired connections.

The length of wires, dimension of components, and positions are not exact. 

Wired Connections

The four main components (Raspberry Pi A+, TFP401 display driver, 2.8W Amplifier and PowerBoost500C) will be powered by the PowerBoost 500C and a 6600mAh Lithium Ion battery via JST cable. To power the circuit on/off, a slide switch is connected to the EN,and GND pins on the PowerBoost500C. 

The 2.8W Amplifier is connected to GND and +Postive pins on the PowerBoost 500C. A right-angle 3.5mm stereo plug to pigtail cable is wired to the amp and connected to the audio jack on the Pi A+. Two mini metal speakers are wired to the audio output pins on the amp.

The 5V and GND pins on TFP401 display driver are wired to the 5V and GND pins on the PowerBoost500C. A flat HDMI cable is connnected from the TFP401 to the Raspberry Pi A+.

The 5" HDMI display uses a 40-pin FPC extension board to connect the TFP401 display driver to the screen.

Raspberry Pi GPIO

Below is a legend of each connection. It includes the pin number, name and connection. The GPIO graphic matches the order of the pins. Use this to reference which buttons connect to the GPIO.

How Do I Read This?

The pin# is the actual number of the pin in series. The numbers go from left to right, top to bottom. The name is the title for a given pin entity. Note the GPIO # does not match the pin number. The connection is the button or wire that needs to be assoicated with the pin.

The GPIO # will be associated with the Input value in the retrogame.c file.

In most cases, you should print out the legend (on physical paper) and use it as a cheatsheet while assembling the circuit.

Button Connections

UP        - GPIO 17, Pin 11
DOWN - GPIO 27, Pin 13
LEFT    - GPIO 22, Pin 15
RIGHT  - GPIO 23, Pin 16
Select  - GPIO 18, Pin 12
Start    - GPIO 4, Pin 07
A         - GPIO 24, Pin 18
B         - GPIO 10, Pin 19
X         - GPIO 09, Pin 21
Y         - GPIO 25, Pin 22
L         - GPIO 11, Pin 23
R         - GPIO 08, Pin 24

Color Codes

Black    - Ground
Red       - DC Power 
Blue      - SDA1, I2C
Green   - GPIO
Orange - TX/RX
Pink       - SPI
Yellow  - I2C ID EEPROM


Download the RetroPie image and burn it to a micro SD card. I recommend using the BitTorrent link. The latest version (Dec, 2014) 2.3 features Emulationstation.


Emulationstation is a multi-platform front-end for managing a library of emulators. It's a lot like a slick TV interface. The RetroPie Project provides an easy way to install over 30 different emulators on the Raspberry Pi, using EmulationStation. This is one of the easiest ways to get your Raspberry Pi ready for some retro gaming goodness.

Burning Retro Pie to SD Card

You'll need a micro SD card with minimum storage of 4GB. It can be new blank or contain existing data, just note you're going to completely erase anything that may be on the SD card.

There are SD card burner tools available depending on your operating system. Use Win32DiskImager on a windows machine. On a Mac, use ApplePi-Baker or RPi-sd card builder. These tools will properly format the SD card so the Pi can boot and run a setup script.

HDMI Configuration

Once the RetroPie image has been successfully written to the SD card, you'll need to edit the config.txt file located in ~/boot/config.txt

Copy and paste the values into the config.txt and save the file. This will allow the Raspberry Pi to format the operating system to match the resolution of the 5" HDMI display.

hdmi_cvt 800 480 60 6 0 0 0

Testing SD Card

Follow the next page to setup the HDMI screen to the Raspberry Pi.

Test HDMI Display

The Raspberry Pi will run the setup script, install dependencies and boot into emulationstation. By default, the USB keyboard will be recongized and available for input config.

The aspect of the screen should cover the full display - If it doesn't, double-check your config.txt file and ensure the values are correct.

Setup Pi + Display

Let's connect the Pi and display to check the RetroPie image and config.txt file have been setup. If you haven't already, eject/remove the micro SD card from your computer and insert into the Raspberry Pi.

  • Connect the 40-pin FPC ribbon wire from the 5" TFT display to the TFP401 display driver.
  • Connect an HDMI cable from the TFP401 display driver to the Raspberry Pi. 
  • Connect a USB hub to the Raspberry Pi. Connect a USB keyboard and mouse to the USB hub. Insert a USB WiFi dongle to the USB hub.
  • Connect a micro USB cable from your computer to the TFP401 display driver.
  • Connect a micro USB cable from your 5V power supply to the Raspberry Pi.
  • The Pi and TFP401 display driver will immediately power on upon pluggin in the micro USB connector.

Test RetroPie Emulationstation

With a micro USB cable plugged from your 5V power supply to the Raspberry Pi, it will power on and boot automatiically. Wait for the pi to boot and run the setup script. It will boot into Emulationstation. 

Emulationstation will prompt you to configure the keyboard for game inputs. With a USB keyboard attached, set up your preferred controls by pressing keys as prompted.

Setup WiFi Adapter

Recent versions of RetroPie include a WiFi setup utility. From the main EmulationStation screen, access the RetroPie settings using whatever key you’ve assigned as the “A” button. You’ll see WIFI in this list:

Here you can select your WiFi network name and enter a password. It’s not beautiful, but gets the job done.

Select “Exit” when done to return to the EmulationStation UI…

With networking enabled, we can now access the remaining software needed for the PiGRRL 2 experience. There are a couple ways to do this…

  • BEST: Use an ssh terminal client to log into the Raspberry Pi at retropie.local 
    This is recommended, as you can just copy-and-paste the commands that follow. The default name and password are “pi” and “raspberry,” respectively.
  • OR: Press “F4” to exit EmulationStation for a command-line prompt (works, but you’ll need to type these commands exactly).

Adafruit Retrogame Setup

Open terminal command line on your computer to ssh into the Raspberry Pi. 

continue? yes

password: raspberry
pi@raspberrypi ~$ []

Enter the following commands to download and run our retrogame setup script:

curl >
sudo bash

You'll be presented with a list of ready-made configurations. Select the option for “Super Game Pi” and proceed with installation, which should take a minute or maybe less.

Unless you have other system config you want to perform, go ahead and reboot when prompted.

Now the Adafruit retrogame config is setup and ready for buttons. The only way to test if it worked is to connect buttons to the GPIO pins. On to the next steps!

Issues, Problems, Need Help?

If you encounter any technical problems with the Raspberry Pi software, components or otherwise, please post up your issue, including photos of your wiring on the Adafruit Forums. Our support team will be able to help you there.

Ready to Print

Parts were designed in Autodesk 123D Design to only house only the components listed in the build of materials. The parts are optimized to 3D print on FDM desktop machines.

Open to Mod

We've shared the 123DX file which includes the original solids. You can download and modify the design if you're interested to extend the features or adjust geometery for other components.

PLA Material

We recommend using PLA filament for minimum warping and best print quality. The parts are pre-orientation and centered so they're ready to print. No support material or raft required.

Ninjaflex Filament

We recommend using TPE flexible filament like Ninajflex to print the L and R shoulder buttons. This gives the buttons a grippy rubbery feel making it easy and enjoyable to mash.

Build Platform

The parts are large and require a bed plate with a minimum size of 226mm by 128mm. To ensure a high quality surface finish, we recommend printing straight on a clean surface like acyrlic, blue painters tape or glass. 

Having a leveled bed is very crucial to getting a decent quality surface. Babysit the first layer. If the first layer doesn't stick down all the way, cancel the print, clean the bed and try again.

Slice Settings

We recommend using Cura to slice the parts. Depending on your printers nozzle and extruder, you will need to adjust the settings. We recommend printing slow around 30-40mm/sec for best quality..

Clean up

The parts may have extra bits and artifacts that need to be removed. We recommend using a pair of flush hakko snips to remove the "gobbers". 

Low retraction slice settings will introduce excess material near the port cut outs, stand-offs and posts. These can be cleaned up by snipping away the bits and pieces. 

Clean up parts over a trash bin to avoid stray bits and pieces. Wear safety glasses to avoid any projectiles!

Tolerance Testing

You'll want to run a few tests on the parts to check the tolerances for screws and fittings. If sections are too tight, use a filing tool to loosen the tolerance. 

  • Join two enclosure parts together and insert #4-40 screws to fasten parts together - Checking if posts line up.
  • Insert a #4-40 machine screw into mounting holes to make screw threads.
  • Test tolerances of speaker mounts. Check if a mini metal speaker snaps into the cavity.
  • Test tolerances for the action buttons. Place a button over the opening to check if they loosely fit.


Optionally, you can sand the parts for a smooth finish. Use a low gritted sand paper and work your way to a finer grit. This helps reduce the appearance of lines and ridges in the surface.

Sand in a well ventilated area. Use a mask and worker gloves while sanding to reduce the chances of inhaling fine dust particals and getting any on your hands. Clean up dust from sanding with a vaccum.

Note that sanding the parts will discolor the surface. Black parts turns to an 'ashy gray'.

Tack Cloth

If you're down with sanding the parts, you can use tack cloth to remove fine particals and dust from the surface. This will make the part a bit sticky, so you may want to use latex gloves while cleaning.

XTC-3D coating

For a shiney and reflective, finish you can use XTC-3D coating from Smooth-On. It's a two part epoxy resin that can be applied to printed parts with a sponge brush.

Use latex gloves while handling and applying epoxy resin. This two part compound is a 2A : 1B ratio that has a work time of approximately 15 minutes. 

Follow the insturction sheet included for tips on applying coating to parts.

Follow the safety guide sheet included with XTC-3D before applying!


The cover and frame for the battery needs to be bonded together. We recommend using E6000 adhesives for making a permanent industrial strength bond.

Apply E6000 to the inner edge of the battery cover and place ontop of battery frame part. Lightly sequeeze tube to apply and pull back to retract adhesive from leaking.

Use a weight with a flat surface like a book or case to appy pressure to the parts.

Let parts dry over night.

Don't apply too much E6000! Use small amount, apply to parts with cardboard underneath to catch any excess.

6600mAh Lithium Ion Battery

Newer batteries will include a JST cable with male connector already soldered to the battery. The length of the cable included is enough to reach the power charing circuit in this project.

Prep Battery JST

If you happen to have an older 6600mAh battery, the battery may not have a JST connector already attached. In this case, the 6600mAh battery will include a male JST cable. Strip and tin the ends on both sets of wires. Add pieces of heat shrink tubing and solder the matching wires together - Negative(black) to negative, positive(red) to positive. 

Install PowerBoost 500C Screws

Fasten two #4-40 3/8 to the bottom part of the enclosure near the bottom with the cut out in the center. This is where the microUSB port of the PowerBoost 500C will be.

Mount PowerBoost500C

Place the PowerBoost500C on to the lower center area of back.stl part with the micro USB port facing the cutout. 

Line up the mounting holes to the stand-offs and hold the PCB to the enclosure with one hand. With the other hand, fasten two #4-40 3/8 flat Phillips machine screws to the mounting holes untl it's fully flush with the surface of the enclosure.

Prep Slide Switch

Place slide switch near the top center of the bottom enclosure part - There's an opening with clips for housing the slide switch.

Measure the length of wire needed for connecting the slide switch to the PowerBoost 500C. Cut three pieces of 30AWG stranded wire and strip the ends with wire cutters. Tin each wire.

Secure slide switch to helping third hand. Solder wires to each terminal on slide switch. Insert pieces of heat shrink tubing to each wire and heat to seal connections.

Install Slide Switch

With wires solder to slide switch, install the switch into the bottom enclosure part by fitting it through the cut out with wires in first.

Connect Switch to PowerBoost500C

Solder wires from slide switch to BAT, EN and GND pins on the PowerBoost 500C.

Power Test

Plug in the JST connector from the 6600mAh lithium polymer battery to the JST port on the PowerBoost 500C.

Turn the slide switch on to test the PowerBoost 500C. The blue LED should light up indicating a charged battery - Red LED means the battery needs to be charged.

If no LED's turn on, double check your wiring.

With the PowerBoost 500C tested and working, turn it off and unplug the JST and set the battery aside.

Connect 40-pin FPC extension board

Connect the 40-pin on the 5" TFT display to the FPC extension board with the copper side facing the back of the board.

Connect 40-pin extension cable

Insert the 40-pin FPC extension cable to the 40-pin connector on the TFP401 display driver by using your fingers to open the latch and inserting the cable with the blue tape facing down - silver pads facing up.

Mount Display Driver

Insert and fasten four #6-32 1/2 flat Phillips machine screws to the mounting holes in the bottom enclosure part about half way.

Place the TFP401 display driver over the stand-offs with the ribbon cable facing the edge of the enclosure. Hold the part in place and to fasten the screws all the way to secure the component.

Connect TFP401 to PowerBoost 500C

Measure two 30AWG wires for connecting the TFP401 display driver to the PowerBoost 500C. Strip and tin the ends of each wire. Solder the wires to the 5V and GND pins on the TFP401 display driver to the 5V and GND pins on the PowerBoost500C. 

Test Display 

Plug in the JST connector from the Lithium Polymer battery to the JST port on the PowerBoost 500C.

Insert the microSD card with RetroPi image to the Raspberry Pi.

Connect the HDMI cable to the TFP401 display driver and an HDMI device (like your computer or Raspberry Pi with powered connection).

Turn on slide switch to power circuit. The display and driver should power on and show initial boot.

If the components do not power on, double check your wiring.

Power down the Pi, turn off the power switch and disconnect the battery from the PowerBoost500C. Disconnect the 40-pin FPC cable from the FPC extension board - but leave the ribbon cable connected to the display driver. On to the next steps!

Mount Pi

Place the Raspberry Pi A+ over the bottom enclosure and line up mounting holes with the stand-offs. Line up the USB port with the cut out near the edge. Hold the Pi down and fasten four #4-40 flat Phillips machine screws to each stand-off. 

Prep Jumper Wires

We'll be working with male/female jumper cables for most connections that interface with the Pi's GPIO header.

Using jump wires will allow us to quickly plug or disconnect cables from the GPIO. This is a thinner approach then using the Pi Cable - You can also easily decipher connections by using colored wires.

To make "super thin" jumper cables, all we need to do is remove the covers and bend them a bit. Here's the breakdown:

Remove the plastic covers from two female to male jumper cables and snip off the male connector. Strip and tin the end of the wire. Carefully bend the female connector from the jumper cable to make it a right angle plug. Check the length of wire and ensure it reaches powerboost +postive and -negative pins.

Place a small piece of heat shrink tubing over the wire to insulate the exposed female jumper connector.

Wire Pi to PowerBoost 500C

Solder one jumper wire to the 5V pin on the PowerBoost. Solder the other wire to the GND pin.

Connect Pi to PowerBoost 500C

Plug the jumper wired to 5V pin on the Powerboost 500C to the 5V (Pin #2) pin on the Raspberry Pi.

Connect the jumper cable wired to the GND pin on the PowerBoost 500C to the GND (Pin #6) on the Pi.

Now we can easily unplug the cables from the Pi and remove it if we wanted to - This project is all about being modular!

Installing Amplifier 

Thev2.8W class-D ST2012 amp will be mounted to the lower right side of the bottom enclosure part. Place the amplifier over the bottom enclosure part and line up the mounting holes with the stand-offs.

Mount Audio Amplifier 

Hold the amp down to the enclosure and fasten two #4-40 3/8 Phillips flat machine screws to mount the component.

Connect Amp to PowerBoost 500C

Measure two pieces of wire for connecting the ST2012 amp to the PowerBoost 500C. Pins VDD and GND on amp will connect to the +positive and -negative pins on the PowerBoost 500C. Cut two pieces of 30AWG wire. Strip and tin the ends.

Solder wires to VDD and GND pins on ST2012. Connect wires to +positive and -negative pins on PowerBoost 500C and solder.

Prep Audio Cable

Insert the 3.5mm stereo plug connector to the audio jack on the Raspberry Pi A+.

Measure the length of audio wire needed to connect the cable to the 2.8W class-D ST2012 amplifier - add some extra slack for stripping.

Tuck the shorten audio cable underneath TFP401 display driver. You'll need to unfasten the screws from the driver PCB to fit cable in place.

Prep Audio Wiring

Cut the audio cable and strip off the black insulation from the cable. Use an x-acto knife to remove the insulation from the main cable. While stripping, you may cut pieces from the stranded wire -Be careful not to cut too much. These are the ground wires - bundle them up and twist them together to form a wire. Tin the ground wire to keep the stranded wires from separating.

Wire Amp

Strip the red and white wires from the  audio cable and tin the tips. Insert the white wire into the L+ pin on the ST2012 amp. Insert the red wire to the R+ pin. The ground wire needs to be connected to the L- or R- pin.

Create a small wire to jump the L- and R- pins on the ST2012 amp. Ensure it's a short piece of 30AWG wire. 

The ground wire may be too thick to fit in the through-hole on the amp PCB. Carefully thin the wire by trimming the edges with wire cutters. Insert the ground wire to either L- or R-, sharing the wire jumper.

Connect Audio Cable to Amp

Solder the audio wire connections to the ST2012 class-D amplifier.

Prep Speakers

Remove exisiting wires on speakers by heating up solder points with iron. 

Prep Speaker Wires

Measure the lengths of wires needed for connecting the speakers to the amplifier. Place the top enclosure part near the bottom part and lay speakers over the cavities to guage wire length - The left and right speakers will have different lengths!

Measure again, and cut four pieces of 30AWG wire making two sets for connecting the speakers to the amp. Strip and tin the ends of each wire.

Connect Speakers to Amp

Solder speaker wires to +positive and -negative pins on audio output of the ST2012 breakout.

Test Amp + Speakers

For an audio test, disconnect the 3.5mm stereo plug from the Pi and connect it to a device like a mobile phone.

Disconnect the jumper wires from Pi.

Connect the JST from the battery to the PowerBoost 500C and turn the slide switch on to power the circuit.

Play back an audio track, youtube video or anything that produces sound. You should hear some jams!  If not, double check your wiring.

The ST2012 amplifier doesn't have an LED indicator, so you'll need to use a multimeter to check your connections.

Assemble Joystick

Line up the analog joystick with the breakout board so the terminals fit in the "through-holes". Solder the joystick to the PCB. Place the rubber thumb piece on top of the joystick nub part and firmly press it down to secure it into place.

Wire Joystick PCB

Measure and cut four pieces of 30AWG wire to about 8cm long. Secure the joystick PCB to a panavise and solder four pieces of wire to the Yout, Xout, VCC and GND

Wire Joystick PCB to Cupcade PCB

Secure the cupcade PCB to a panavise Jr. and solder the four wires to Yout, Xout, VCC and GND with the wires going into the pins with cupcade logo facing up.

Mount Joystick PCB to Enclosure

Place the joystick breakout board on the bottom enclosure part and line up the mounting holes with the stand-offs. Hold PCB to enclosure and fasten four #4-40 3/8 flat Phillips machine screws. PCB will be loose - Use #4-40 hex nuts to secure the PCB to the enclosure.

Mount Cupcade PCB to Enclosure

Position the cupcade PCB over the bottom enclosure part with the wires facing down. Line up mounting holes on the PCB with stand-offs on the part. Mount in place with two #4-40 3/8 flat Phillips machine screws.

Prep Jumper Cables

Use five female jumper cables to connect the cupcade PCB to the Pi GPIO header. Start by removing the plastic covers with a sharp tool to expose the female connector. Use a pair of flat pliers to bend the female connector so it's right angled - This allows us to make it a 'thin' as possible.

Add a piece of heat shrink tubing to insulate the exposed female connector. Cut off the other end of the cable and strip the ends with wire cutters. Tin the stranded wire to make connecting to the pin on the PCB easier.

Cupcade Adapter PCB

The Cupcade PCB was designed to fit onto a PiTFT header via socket connector, but in this project we're free wiring the PCB using jumper cables - This allows us to easily rewire connections if things need to change.

Wire Cupcade to Pi

Follow the wire diagram to reference which pins need to connect the cupcade PCB to the Pi GPIO. Down, Up, Left, and Right are being connected here.

Solder Wires to Cupcade Adapter PCB

Double-check wiring, cross referening the diagram and sodler the jumper cables to the appropriate pins on the Cupcade PCB.

Connect Cupcade Jumpers to Pi GPIO

Plug in the female jumper cables wired from the cupcade PCB to the GPIO header Raspberry Pi.

Follow the legend below to connect the cupcade to the Raspberry Pi GPIO.

USE THE PI GPIO DIAGRAM BELOW, NOT THE PHOTOS ABOVE — the photos show a prototype and the connections changed.

Disassemble SNES controller

Remove the screws from the controller using a Phillips screwdriver. Seprate the back cover from the front and carefully remove the PCB from the enclosure. 

Save Buttons + Elastomers

Dump all of the buttons and elastomers onto your work surface or palm of your hand. Admire and store in a baggy for later use.

Unsolder main cable

Secure the SNES PCB to a panavise Jr. Heat up your soldering iron and reflow the solder poins on the main cable. Use a pair of tweezers to gently remove each wire from the PCB. Toss cable over shoulder - won't be needing it.

Splitting PCBs

Ensure SNES PCB is very secure to panavise Jr. Reference diagram to follow where to split the sections. Move to a well ventilated area and put on some safety glasses.

Cut PCBs

Use a power tool like a Dremel to cut the PCB into three sections. Handle panavise jr. in place before sawing. Slowly saw through the PCB until you've reach about 1mm - break away sections with hand.

Take precautions when using power tools! Wear safety glasses, worker gloves and a breathing mask. Avoid dust and work in a well ventilated area! Don't forget to clean up the dust.

Remove the L shoulder PCB from D-Pad by reflowing solder from the wire using a soldering iron. Remove the bit of cable soldered to the L shoulder PCB.

In this project, we won't be needing the D-Pad PCB because we're using the analog joystick - Disgard that PCB or store it away for another project.

Drill Holes to PCBs

Secure PCBs to a Panavise jr. Use a sharpie marker or etch a mark in the very center of the buttons PCBs. Use a rotary power tool like a Dremel to create a hole in the center of the A, B, X, Y button PCB. Use a drill bit that is approximately 2mm in diameter. 

Very cautious while drilling in center - This can be slightly off center but more can affect positioning of elastomers! Mine was not perfect but it still works fine!

Etch Traces

Use an x-acto or filing tool to expose copper traces on the PCB sections. Reference the images for recommended etching spots. Lightly scratch the surface of the silk screen until the copper traces are exposed.

The PCB section with A, B, X and Y have very small traces - be very careful not to bridge these connections! Try offsetting each spot in different levels to keep wiring seprate from each other.

The L and R shoulder PCB don't need etched traces since they both have pin outs for wiring positive and negative connections.

Tin PCBs

Add droplets of solder to the exposed traces on the Start/Select and A, B, X, Y and R shoulder PCBs. Add solder to the two pins on the L shoulder PCB. Place soldering iron down onto PCBs and quickly add solder to tin the etched spots.

Right Angle Jumper Cables

For wiring the buttons, we're going to use female/male jumper cables. We'll need to slim these down so they fit inside the enclosure.

Remove the plastic covers from the female end to expose the connector. Bend the connector using flat pliers to make a right angle cable. Add a piece of shrink tubing to insulate the exposed connector.

Cut off the other end of the jumper cable and strip the end using wire strippers. Tin the stranded wires to make it easier to insert into breakout boards.

Start and Select

Place the start/select PCB over the bottom enclosure part. Line up the hole in the center of the PCB to the post near the left side of the bottom enclosure part. Measure the length of wire needed to connect to the Pi GPIO. Cut wire and prep to make it a right angle jumper cable.

Wire Start/Select PCB

Remove PCB from enclosure and secure to helping third hand. Solder the three jumper wires to the pads on the PCB.

Prep A, B, X, Y and R Wires

Place the PCB over the enclosure and line up the center hold with the post on the right side. Measure length of wire needed to connect PCB to Pi GPIO. Add a bit extra slack for moverability. Cut six pieces of jumper wires and prep them to be right angled following the steps above. 

Wire A, B, X, Y and R

Remove PCB from enclosure and secure to helping third hand. Carefully solder the jumper wires to the tin spots on the button PCBs. 

Careful not to bridge any connections!

L Shoulder Button

Insert L shoulder PCB to the holder on the left side and measure the length of wire needed. Prep two jumper wires and solder them to the pins on the PCB.

Wired PCBs

The button PCBs will have different lengths of wire. The colored jumper cables helps differentiate wire connections.

Prep Button PCB base

Apply mounting putty the surface of the two base platforms where the PCBs rest - This will keep the PCBs from slipping.

Mount Start/Select PCB

Place the start/select PCB back onto the enclosure part with post fitted through center hole. Press PCB down to secure in place.

Mount A, B, X, Y and R PCB

Place the button PCB onto the enclosure with post fitted through center hole. Press PCB down to secure in place. Double check orientation is correct.

R shoulder button is fitted into the shoulder holder. Slide into place with traces facing out.

Install L Shoulder PCB

Insert the L Shoulder PCB into the holder on the left side of the enclosure with traces facing out.

Button PCBs on enclosure

Double check position and orientation of button PCBs. 

Connect Jumpers to Pi

Follow the Pi GPIO wiring diagram and carefully plug each jumper wire to the GPIO pins.

Some jumper cables may need to over lap each other to fit properly. Avoid cables from blocking any other components.  Double check your work.

Use the photo as a reference. Wiring in photo may not match diagram exactly. Follow the circuit diagram and pinout below.

Connect Battery to PowerBoost 500C

Thread the JST cable from 6600mAh lipo battery through the large opening on back of the bottom enclosure part. Connect it to the JST port on the PowerBoost500C.

Connect 5" TFT Display

Insert the 40-pin connector from the 5" TFT display to the socket extension on the TFP401 HDMI dispaly driver. The shiney copper side will be facing the top of the extension PCB.

Install HDMI Cable

Insert the 30cm long flat HDMI cable to theTFP401 display driver and connect it to theRaspberry Pi.

Boot Test

Double check the micro SD card with burn image of RetroPi is inserted into the Raspberry Pi.

Turn on the PowerBoost500C with the slide switch. The blue LED should light up indicating it's got a charged battery - red LED means battery is dead and needs to be charged. 

The TFP401 display driver should power on with a blue LED and illuminate the 5" TFT display.

If the display remains black, the 40-pin connector was inserted upside down - flip it the other way and try again.

The Pi should power on with a red LED followed by a green LED. It should take a second to load and display the inital boot text on the TFT dislay. 

Joystick+Buttons Test

The Pi should boot automatically into Emulation station. Initial setup should take place and prompt you to hold down a key. Follow the input configurate setup and press buttons to map keys.

Place the elastomer pieces on the start/select and a, b, x, y button PCBs for testing. Line them up as close as you can to the button spot on the pads.

If the joystick or buttons are not being recongized, double check the initial setup and see if the retrogame.c was modified and made.

Working First Test

If everything is lit up and working, you can power it down and start getting ready to close it all up.

Install 5" Display

Disconnect the display from the extension socket - we need to install it to the top enclosure part.

Insert the 5" TFT display into the top enclosure part at an angle and slide it in through the clips on the edge of the opening for the screen.

Carefully bend the enclosure back to allow the clips to open and hold the edges of the screen down into place. Try not to press the screen down to the clips as too much force will snap off the clips or damange the screen.

If you can't get the screen through one of the clips - just snip the clip shorter or completely off. There's enough clips to keep the screen held to the enclosure.

Install flat HDMI cable

The HDMI cable needs to arranged with the wire folded in order to properly close the enclosure. 

Bend the wire at the end of the connector and arrange the excess so that it can be tucked into the battery opening near the back of the enclosure.

Install Buttons & Elastomers

Place the plastic buttons into the openings on the top enclosure part. The elastomer set for the action buttons can be held in place by inserting the corner hoop into the nub on the enclosure. The start/select elastomer has a hole in the center that can plug into the nub on the enclosure.

Install L+R Shoulder PCBs

Insert the L and R shoulder elastomer pieces into the holders with the tip facing the openings in the enclosure.

Shut Enclosure

There are six screws that will hold the two enclosure parts secured together. Locate the posts that will join the enclosure parts and fasten #4-40 3/8 flat Phillips machine screws into the posts - this makes it easier to fasten the parts while holding them shut. 

Start with the top corner and work your away all around the enclosure. The top of the enclosure has two stand-offs that can be secured using a machine screw and nut.

Secure enclosure shut

The HDMI cable will make it difficult to close the enclosure due to the excess wire. Press the two parts together with one hand and start fastening the screws on the bottom of the part to secure the enclosure shut.

Install L & R shoulder buttons

Squeeze the L and R ninjaflex buttons into the shoulder openins near the top of the enclosure. Because its TPE material, you can squish it and pop it into place. The edge on the bottom of the print will keep the part from coming out of the enclosure.

Power Test

Turn the slide switch on and check if everything turns on. The 5" TFT screen should power on and display the Raspberry Pi boot screen. Emulationstation should automatically boot. 

Move the analog joystick around to check up, down, left and right keys bindings. Press the action buttons to test them.

Run the input configuration through in emulationstation in the menu > configure input option.

Loading ROMs

SSH into Pi and drop rom files into dedicated directory. The directories for the ROM files are located in ~/RetroPie/roms/SYSTEMNAME, where SYSTEMNAME is the short name of the corresponding system.


Audio is confirmed working for the port of Doom and Super Mario World for SNES. Most things should work!

Adjust audio volume in Emulationstation by using the option under menu > settings > audio. It can get pretty loud!

This guide was first published on Jan 14, 2015. It was last updated on Jan 14, 2015.