Just as the great prophets prophesied in their prophecy, first a completed photo! :) I took this photo with the HDMI cable disconnected.
As some of you may remember, the original Gamepad Zero was a Raspberry Pi in an NES controller. The issue was you were limited to playing fewer games as most retro video game consoles require more than two buttons.
Thus, the Super Gamepad Zero was born.
For this project, we'll solder the Raspberry Pi Zero computer to the the original SNES controller's printed circuit board. Then, we'll put the Pi into a new 3D-printed bottom housing to give us easy access to the Pi's HDMI, USB, and port ports.
You can then connect your Super Gamepad Zero directly to a power source and your TV or computer monitor.
The total materials for this project cost around $50, including the SNES controller. I already had the tools needed.
It takes about an hour to assemble the controller and install RetroPie. The bottom controller housing took about 6 hours to print on my Ender 3, but of course I was doing other things while it was printing.
For this project, we'll use a 3D model created by designer Sigismond0 and uploaded to Thingiverse. Sigismond0 did a great job designing this and states that he was inspired by bfesser's original NES controller version.
While it isn't a remix, this project was heavily inspired by bfesser's NES version.
Download the model. There are two files -- one with and one without supports. I recommend printing the file without supports, and then selecting the print support option in Cura, or whatever your slicing program is.
Print the model using the recommended settings below. Don't have a 3D printer? Read on!
My print settings for this model:
- Quality: 0.2
- Infill: 15%
- Supports: Yes
- Build plate adhesion type: Brim
I went searching for 3D printing filament that was closest to the original Super Nintendo color and found this AIO Robotics "Bright Gray" filament to be a great match. And at around 10 bucks, you can't go wrong.
No problem. A lot of people don't know there are tons of ways to get a 3D model printed without having a printer. Here are a few of the ways:
Use an online 3D printing service
Many online services such as Sculpteo exist that will print your model and ship it to you.
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, which lists over 2,000 hackerspaces.
Check your local library
Many libraries now have 3D printers available to use! And if you're a student, your university can likely provide you with access to one. Call your university library's information desk and they can direct you to the college/department that can give you access.
Many people advertise their printing services on Craigslist.
Buy a 3D printer
It's always a good idea to clean up your model a bit, especially when printing support material or brim/raft adhesion.
I recommended printing the model with brim adhesion to prevent warping and ensure that the controller maintains its shape. Ergo, a small amount of edge cleanup is needed.
After removing the support material, I recommend using a box cutter or art knife to scrape the edges and make them nice and rounded once again.
RetroPie is the software library we'll use for emulating systems and games. RetroPie is essentially a wrapped version of Emulation Station that essentially preconfigures everything to run on the Pi.
I wrote a separate guide on installing RetroPie; use that guide to install it and then return here.
I used an OEM Super Nintendo controller for this project (made by Nintendo) since I had a few extras laying around and the model calls for an original controller to be used. If you don't have an original controller, you can probably make an aftermarket controller work -- but the wiring colors likely vary wildly between manufacturers.
I recommend just picking up an OEM SNES controller on eBay for about $15.
Use a small Phillips screwdriver to remove the five screws from the back of the controller. Then, remove the back housing.
While you're in here, use a Q-Tip and some rubbing alcohol to clean out the years of dirt and grime that strangers left behind!
This is optional but recommended. To do this, remove all the buttons and go to town.
The original cord is connected to the board by a small connector; remove it and cut the cable to 5" in length. Then, carefully remove the end of the cable jacket and strip each connector.
These connectors are tiny; take your time so you don't rip all the conductors out.
Now we're going to solder the original controller cable and its connector to the Pi. This will make it easy to connect the Pi to the original SNES controller's circuit board.
Solder each wire to the Raspberry Pi's GPIO header using the attached Fritzing diagram.
Later, we'll configure RetroPie to read these GPIO connections as controller input.
Note: This wiring schematic is different than that of the original NES Gamepad Zero. Specifically, the red and yellow wires are swapped.
You should now have a nice, neat cable soldered to your Raspberry Pi.
I decided to install an LED in the hole where the original controller protruded. I wrote a separate guide on adding a simple Raspberry Pi power LED if you'd like to do this too.
I secured the LED with a dab of hot glue and taped it to the PCB for extra support.
I chose a blue 3V LED this time around.
Use four 5mm screws (linked at the top of this guide) to secure your Pi Zero into the controller housing.
I highly recommend installing a narrow heatsink. Taller heatsinks will not fit, so use a short heatsink.
Reassemble all the buttons, being careful not to rip your soldered connections out.
If you're not sure which purple buttons go where, not to worry -- in true over-engineering fashion, Nintendo has labeled them all. Additionally, you can't actually put them in the wrong way since each button is uniquely keyed and slotted. Way to go above and beyond!
Next, connect the GPIO cable to the original SNES circuit board.
Finally, put the housing back together and use 4 of the original screws to secure the controller halves.
Connect your HDMI cable to a TV or monitor and then connect it to the Super Gamepad Zero. The Raspberry Pi Zero features a mini HDMI port. I recommend using this long mini HDMI to HDMI cable. If you already have an HDMI cable you plan to use, you'll need to use an adapter.
Next, connect your MicroUSB cable to an AC adapter and plug it into the back of the Super Gamepad Zero. There are two identical MicroUSB ports on the back of the Pi: one for data (USB controllers etc.) and one for power. Connect the AC adapter to the port furthest from the HDMI port.
To get RetroPie to recognize your Super Gamepad Zero as a regular USB controller, we'll need to do a small amount of configuration.
Connect a USB keyboard or USB gamepad to the Super Gamepad Zero and navigate to RetroPie Setup > Manage Packages > Manage Driver Packages in the RetroPie menu.
Select the 813: gamecondriver option, install from binary, accept the firmware warning, wait for everything to install, and exit the setup menu.
Note: The number next to "gamecondriver" might change with later versions of RetroPie. Just select whichever option says "gamecondriver".
Next, log into your Pi using SSH and run the following command:
sudo sh -c 'echo "gamecon_gpio_rpi" >> /etc/modules && echo "options gamecon_gpio_rpi map=0,0,1,0,0,0" > /etc/modprobe.d/gamecon.conf && reboot'
While your Pi is rebooting, unplug the USB controller or keyboard and you'll see the configuration menu for the SNES controller itself.
Note: If you don't see the configuration menu, don’t panic. Just reconnect your keyboard or USB controller and use it to navigate to Start > Configure Input, and then use your GamePad Zero to fill out the confirmation options.
So what do you do if you want to play with a friend? Simply connect another USB controller to the Super Gamepad Zero's USB port or use a bluetooth controller!