This instructable describes the build of a Raspberry Pi Zero W powered console all within a SNES controller. It can be used on any display with HDMI. It is powered by a smartphone Lithium Ion battery which lasts up to 3 hour (depending on the emulator running).
If you want to run emulators with high demands e.g. Playstation 1 you may take a look at the GamePi 2. You could also like my new alternation of the GamePi 2 - the GamePi Zero. It cheaper, smaller and lighter.
Please note that English is not my first language. If you find any mistakes or something is not clear feel free to tell me and I'll try to fix it. Same goes for general mistakes. If you have any suggestions for improvements please let me know.
Step 1: Tools & Materials
Make sure you have everything you need for the build. There is nothing more annoying than stopping your project because you have to wait for some small part being delivered.
You do not have to buy the listed parts and material from given links. These are examples and show the required properties of the parts.
3D Printer or 3D Printing service
Step 2: 3D Printing the Case
I've printed my case with gray PLA filament. PLA comes off the printer in a decent quality - so no post-processing is required (imho).
If you have a 3D printer with a smaller bed or no printer at all you can use a 3D printing service or message me - maybe I'm in the mood to print it for you.
You'll find my case on this thingiverse design page. I'll keep it on thingiverse to avoid redundancy.
Step 3: Controller Disassembly
Now that all parts are ready we can start building.
In this step we want to disassemble the SNES controller and prepare it for all the stuff we're going to put into it.
- Remove the 5 screws on the back of the controller (keep the screw since we'll need them later!).
- Remove the back cover of the controller (we do not need it anymore).
- Clip/break off the 4 supports (shown in the picture) so everything can fit nicely.
- Measuring from the controller board cut the USB cable after 10 cm.
- Your controller should now look like the one on the last picture of this step.
The controller is now ready for the next steps.
Step 4: Wiring: the Power Circuit
This is the step covering most of the wiring.
Since this is the power circuit be super careful regarding the polarity - check it as often as possible.
At the end of this step you power circuit should look like the one on the first picture of this step.
Setting the correct Voltage:
The Raspberry Pi Zero W runs off 5,0 Volts (V) so we need to set up the correct voltage on the LiPo charger / step-up combo first. We will set the step-up converter to something around 5,2 V so the Pi has some buffer if under heavy load.
- Solder the batter to the LiPo charger / step-up combo like shown in the 3rd picture.
- Connect your multimeter to the "Out+" and "Out-" pads of the LiPo charger / step-up combo.
- Turn the golden screw on the blue potentiometer of the LiPo charger / step-up combo until you reach 5.2 V.
- Remove the multimeter.
Soldering the Circuit:
- Connect all components according to the last picture.
This setup does not use the micro USB power jack of the Pi in order to save space. Solder the wires directly to the Pi.
Now that you have finished the power circuit be careful with it - there is now current on the LiPo charger / step-up combo!
Step 5: Wiring: Power LED
In this short step we want to attach the status LED. Its only purpose is to indenticate if the Raspberry Pi is powered or not.
When finished your setup should look like the one on the first picture of this step.
- Connect the LED according to the last picture.
- The longer leg of the LED is connected to the 3.3V power output of the Pi.
- The shorter leg of the LED is connected to one of the ground points of the Pi.
Power on the Pi and check if the LED lights up.
Step 6: Wiring: SNES Controller
This is the last step including soldering (yeay). We want to attach the SNES controller.
When finished your setup should look like the one on the first picture of this step.
- Connect the SNES controller according to the last picture.
Step 7: Preparing the HDMI Cable
Since the mini HDMI end (going into the Pi) of the HDMI cable is to big to fit into the case we need to remove the housing.
I used a side cutter to carefully remove the housing of the mini HDMI end.
In the picture you can see how it look before and how it's looking without the housing.
Step 8: Installing the Software
Before putting everything together we want to take care of the software part first.
In this step we're going to download all needed software and prepare the SD card using the RetroPie image.
- Download the pre-made RetroPie image for the Raspberry Pi (the red "Raspberry Pi 0/1" button). This is basically the operating system of this console. Of course you can use whatever you want on the Pi - there are dozens of other solutions.
- Download and install 7-Zip- a free file de/archiver. We need it to unpack the RetroPie image archive.
- Download and install SD Memory Card Formatter. As the name says this tool formats SD memory cards.
- Download Win32 Disk Imager. We need this tool to write the unpacked RetroPie image to the SD card.
Preparing the SD Card:
- Plug the SD card into your Windows PC.
- Make sure Windows detects the card.
- Open "My Computer" or "This Computer" or the Windows Explorer and remember the drive letter of the SD card. In my case it was F:\ (differs from systems to system). Make sure it's really the letter of the card and not some of your harddrives.
- Start SDFormatter.exe, select your drive letter from the "Drive:" dropdown menu and hit the Format button.
- When formatting has finished close SDFormatter with the Exit button and unplug the SD card.
Write the RetroPie image to the SD card:
- The downloaded RetroPie archive should be called something like "retropie*.img.gz".
- After installing 7-zip right click the RetroPie archive and select 7-Zip from the context menu. Select "Extract Here" and wait for the unpacking to finish.
- Plug the SD card into your Windows PC. Make sure Windows detects the card and again remember the drive letter of the SD card.
- Start Win32 Disk Imager.
- Select the unpacked RetroPie image from the field "Image File". Select the drive letter of the SD card from the "Device" dropdown menu.
- Click the "Write" button and wait until the writing finished.
Add your WiFi credentials:
- With the SD card still in your PC navigate to the SD card
- Create a new file on the SD card called "wifikeyfile.txt"
- Open the file and add the following code to the file where "NETWORK_NAME" is the name of your wireless network (case-sensitive) and "NETWORK_PASSWORD" is the password for this network (case-sensitive).
- Save and close the file.
Now you can remove the SD card from your PC.
Step 9: Assembly
Now that we've prepared and connected every component we need it's time to put everything together:
- Use the double faced adhesive tape to stick the LiPo charger / step-up combo to the back of the case (see the position in the first picture)
- Put the female micro USB jack into its dedicated hole and add hot glue to secure it.
- Put the mini slide switch into its dedicated hole and add hot glue to secure it.
- Put the power LED into its dedicated hole and add hot glue to secure it.
- Put the battery into its dedicated space in the center of the printed case.
- Put the Raspberry Pi Zero W into its position on top of the battery with the HDMI ouput facing the slide switch (see second picture).
- Secure the Raspberry Pi Zero W with 2 screws.
- Plug in the HDMI cable (see third picture).
- Close the case by putting both case parts carefully together (no force should be needed).
- Secure the case parts with 4 screw on the back side (see last picture).
Step 10: Configuring RetroPie
Time to boot up the whole thing!
The first boot up takes a while because RetroPie has to handle some first start tasks (looks like the first 2 pictures of this step).
Configuring the Input:
- Insert the SD card into the Raspberry Pi and slide the power switch.
- Wait until emulationstation shows up and asks you to "Configure Input" (see third picture).
- Follow the onscreen instructions and map your buttons.
- Now we are going to configure some basic settings.
- In the main menu of emulationstation (where you select the systems) select RETROPIE and press the A button.
- Select WiFi and press the A button.
- In the new menu select "Import wifi credentials from /boot/wifikeyfile.txt" and press the A button.
- Wait for emulationstation to establish a connection to your WLAN.
- Welcome to the internet.
Step 11: Adding Games
To play emulated games we need those games first.
Getting Roms (the games ... as files):
- I won't describe where to get the roms for the emulators because from what I understand this is kind of a legal grey zone.
- Use google to find your favourite rom - there are a lot of websites offering them. Just search for something like "Mario Kart Super Nintendo Rom".
Transfer Roms to the GamePi:
- There are three main methods of transferring roms.
- We are sticking with the easiest one: Samba-Shares:
- Turn on the GamePi and wait until it boots up completely.
- Make sure you have connected the GamePi to your WiFi.
- Open a Windows Explorer (a folder not the Internet Explorer).
- Enter "\\RETROPIE\roms" in the address field of the folder and press Enter. You are now in a shared folder of the GamePi.
- Copy your downloaded rom into the correct emulator directory. For example: if you downloaded the "Super Mario Kart" rom for the Super Nintendo copy the rom into the SNES folder.
- Restart emulationstation (press the Start button in the main menu, select QUIT, select RESTART EMULATIONSTATION).
- After the reboot the new system and game should be visible in the main menu.
Step 12: The Final Step
- Congratulations you've build your own GamePi XS.
- Plug it in any Display, Monitor, TV, Beamer, whatever and have fun playing some all time classics.
- Show some love and have a nice day.
- You can also tip me on thingiverse if you feel to.
Step 13: Change History
- Changed title picture.
- Added links for GamePi 2 and GamePi Zero.
- Corrected typo in "Step 4: Wiring: the Power Circuit".
Second Prize in the