Once again, the prophecy prophesizes that I include a final photo of the completed Gamepad Zero.
For this project, we're going to build a Raspberry Pi retro gaming rig inside of an original NES controller. The top half of the controller will be reused, along with the original printed circuit board and button. Of course, we'll be installing RetroPie.
We're going to print a new bottom half to hold our Raspberry Pi using a model by bfesser from Thingiverse, and then solder the existing NES controller circuit board to the Raspberry Pi so that it can be used to play games. Don't have access to a 3D printer? Read on!
Finally, we'll install RetroPie, and the Gamepad Zero will connect directly to your television or computer monitor using a power and HDMI cable. I chose to use a 10' version of each so I can sit way back on my TV, but you could also use a shorter one.
You can even plug an additional USB controller into your Gamepad Zero to let a buddy play (or if you require more buttons than the NES controller contains -- remember, some games require many buttons). :)
You can also use a bluetooth controller to connect to the Gamepad Zero (more on this later!).
The total materials for this project cost me about $50. I already had most of the tools needed.
The actual time to assemble this project was only about 30 minutes -- the print took about 4 hours, and I just ran it while I was doing things around the house (and napping).
You can use either a normal Raspberry Pi Zero or the Raspberry Pi Zero W for this project. The Pi Zero W adds WiFi and bluetooth into the mix. However, since you don't technically need wireless connectivity to run RetroPie or play any games, a Raspberry Pi Zero will do just fine.
I decided to use the Raspberry Pi Zero W because it has bulit-in WiFi/bluetooth and I wanted to have the option of using my wireless bluetooth controller as a primary or secondary controller. Even without bluetooth, your buddy can still join you by plugging his or her controller directly into yours.
For this project, we're going to 3D print a model that designer bfesser created and uploaded to Thingiverse. bfesser did an amazing job on this model and was the inspiration for this project. This model will serve as the housing for the bottom half of the controller and will securely store our Raspberry Pi.
Download the model and print it using your filament of choice (I used PLA+, which is a slightly stronger variant of PLA).
Until very recently, neither did I. But that's okay -- there are tons of other ways to get the model printed. Here are a few:
Use an online 3D printing service
Many online services exist that will print your model and ship it to you. However, make sure the model you use has a license that allows a service to print it commercially. You can order this model 3D printed on Shapeways.
Find your local hackerspace/makerspace
Chances are, there's one near you. Most have "Open Make Nights" where you can pop in and use the equipment without needing a membership. You can find your local hackerspace using this tool.
Check your local library
You may be surprised to find that many libraries now have 3D printers available for your use. If you're a student, your university can provide you with access to one.
Many people advertise their printing services on Craigslist.
Buy a 3D printer
3D printers have never been cheaper. I picked up my Creality Ender 3 for under $200 here and I couldn't be happier. For more information on the Ender 3 budget 3D printer, be sure to check out my full Ender 3 review -- I highly recommend it for any 3D printing beginner or professional.
If you're looking for a smaller budget 3D printer, also check out my recent Geeetech E180 review.
I used an original NES controller made by Nintendo, as that's what the model calls for. It's possible that aftermarket NES controllers will also work, but I can't guarantee that. You can pick up an original NES controller on eBay for about 10 bucks.
To disassemble the controller, use a small Phillips screwdriver to remove the six small screws from the back of the controller. You can either toss these screws or reuse them -- I decided to toss and replace them with some stainless steel Torx screws (linked at the top of this guide) to prevent them from stripping in case I need to open my controller a few times.
Cut the cord off your NES controller, leaving about 6" of excess wire. We're going to reuse the old wires and solder them directly to the Pi Zero.
Using the attached wiring diagram, solder the 5 wires from your original NES controller onto the Pi Zero's GPIO header. I also uploaded the Fritzing file I created for this, in case you're into that sort of thing. :)
Don't know how to solder?
No worries, it's easy and this is a great opportunity to learn! This video will get you started.
This is optional, but will keep your Pi cool during GPU-intensive games. You'll need to offset it slightly to avoid it hitting the controller board chip when the case is closed (see photo). It only costs a few bucks so I think it's completely worth it.
Use four 5mm screws (linked above) to secure your Pi Zero into the controller housing.
Finally, reassemble the controller using five 8mm screws.
The original NES controller is 17mm thick and the Gamepad Zero is 22mm thick. The difference is nominal, which leads to a nice, comfortable gaming experience.
You'll need to add a bit of configuration to let RetroPie recognize your original NES controller. You will need to use a USB keyboard or separate USB gamepad to do this.
Navigate to RetroPie Setup > Manage Packages > Manage Driver Packages and select Option 809: gamecondriver.
Note: Different versions of RetroPie might list
gamecondriver as a different index (e.g. 813: gamecondriver). Just select whichever
gamecondriver listing you have.
Install from binary, accept the firmware warning, wait for everything to install, and select "no" if prompted to install SNES configs. Exit the setup menu.
Next, you'll need internet access to connect to your Pi -- you can connect to your wireless network using either the RetroPie settings menu or by dropping a file on your SD card.
Finally, connect to your Raspberry Pi and run the following command:
sudo sh -c 'echo "gamecon_gpio_rpi" >> /etc/modules && echo "options gamecon_gpio_rpi map=0,0,2,0,0,0" > /etc/modprobe.d/gamecon.conf && reboot'
Finally, while your PI is rebooting unplug your keyboard or USB controller and you will see the configuration menu for your NES controller! Woot woot
Note: If you don’t see the configuration menu, don’t panic. Connect a keyboard or different controller and use it to navigate to Start > Configure Input, and then use your GamePad Zero to fill out the confirmation options.
To play with a buddy or to play games that require more buttons than the NES controller offers, you have two options:
1. Connect a USB gamepad:
2. Use a bluetooth controller:
I wrote yet another guide on configuring RetroPie bluetooth controllers that will get you started.