The tiny form factor of the Pi Zero makes it perfect size to hide in any number of retro objects. I have a lot of old video game accessories in my workshop and was inspired to create an emulation station when I saw a design for a RetroPie NES controller on Thingiverse. RetroPie is an open source script optimized for Raspbian and includes many popular emulators all running through EmulationStation.

Step 1: Gather the Materials

You won't need much for this build, the main trick is getting your hands on an elusive Raspberry Pi Zero. I used an original NES controller in working condition with a bad cable.

  1. Raspberry Pi Zero Budget Pack $29.95 from Adafruit
  2. An Old School Nintendo NES Controller $10 on Ebay.
  3. A 3d Printed Base to hold the Pi Zero with the ports cut in the right place. My 3d plan on Thingiverse.

If you don't have access to a 3d Printer, I have uploaded the model to Shapeways. ~$20.

<p>Hey Gang, the software portion of this has RADICALLY CHANGED. I have it working up till emulation station with these instructions but I think that the controller config is not making it to retroarch and therefore the rest of the emulators. I have worked on this for a few days (off and on) and have come up with these install instructions to get it this far:</p><p>I preferred to SSH into the pie but you can do all this from the keyboard as as well:</p><p>sudo raspi-config</p><p>Select resize filesystem</p><p>Reboot</p><p>sudo RetroPie-Setup/retropie_setup.sh</p><p>update retropie-setup script</p><p>reboot</p><p>sudo RetroPie-Setup/retropie_setup.sh</p><p>Manager Packages -&gt; manager driver packages --&gt; 809 gamecon -&gt; install update from binary</p><p>TAKE A NAP (unpacking raspberrypi-kernel-headers takes a hour or so)</p><p>select configuration/options --&gt; do you want to configure gamecone for 2 snes controllers? NO</p><p>exit</p><p>sudo nano /etc/modprobe.d/gamecon.conf</p><p>put in:</p><p>options gamecon_gpio_rpi map=0,0,2,0,0,0</p><p>sudo nano /etc/modules</p><p>put in:</p><p>gamecon_gpio_rpi</p><p>sudo reboot</p>
<p>I got it to work with the latest retropie version using your steps but there are now some more changes:</p><p>gamcon is not at 810 (there was no 809 in the driver package manager). also it didn't take that long to install so I couldn't have a proper nap :(</p><p>the more important change is in the configuration after installation where I had to say yes to the configuration of two SNES controllers otherwise no gamecon.conf file would appear in /etc/modprobe.d/!</p><p>I got this info, on this page: http://blug00.blogspot.ro/2016/03/how-i-got-the-gamecon-driver-to-work-on-retropie.html</p><p>Have fun and thanks for the suggestions!</p>
<p>HOLY COW I GOT IT TO WORK!</p><p>Run the controller config in emulator station a second time and it worked!</p><p>So this tutorial worked as of 6-24-2016</p>
<p>Oh, also. I used the RetroPie 4.0.2 image they made, should I add RetroPie to Raspian instead or it makes no difference?</p>
<p>You have used the GPIO pins specified here in this guide and it worked?</p><p>What controller config did you run a second time for it to work?</p><p>I hold the A key, but nothing happens. I wonder if the key presses make it to the software.</p><p>Any help apprciated.</p>
<p>Have you seen any issues, such as the controller not being unresponsive, using the 3.3V? I only ask because I am working on a similar project only mine will have a battery, charger, and on/off switch. The project I am folloewing says that with 3.3V the controller was unresponsive so he powered it with 5V. </p>
<p>Hi. I was following your instructions until it started unbacking the raspberry pi kernel headers. Half way through that I got an error saying &quot;gamecondriver install failed&quot;. Any idea on how to fix this at all?</p>
<p>I would try it again, perhaps the download got corrupted or something. be sure you have enough power to it, i have had them work underpowered and get strange errors. </p>
<p>Nice job on this. I was able to use the original back with the ports coming out of the bottom. I had to dremel the port holes as well as the middle screw post and some bracing. It's a tight fit for sure. 3d printed back would be nicer but hey it works! Thanks for putting this up!</p>
<p>I'm a little curious if that is possible to make same as for SNES controller.</p>
<p>I cannot get this thing working :( used the pin out instructions but only the 'A' button works. Tested with jstest and all bits light up to 1 when the 'A' button is pressed. Any thoughts on how to fix this??</p>
<p>For anyone having the same issue. I noticed that the instructions say to put the red wire on pin 19, but the correct pin is pin 21. Looking at the images for the project you can see where the wire should be.</p>
<p>Ive resoldered to have the red wire on pin 21 but im still only getting the A button registered... any other ideas?</p>
<p>When I try and update firmware it says failed. SO I tried moving on anyways when I add the info at bottom of command line and save then reboot it says no gamepad detected any ideas</p>
<p>Hello there.</p><p>I *really* tried to get this working. The software part is too buggy for now. The instructions given in the instructable seems to be outdated so I followed the ones given by queekus two posts bottom. It seems that the gamecon driver will fail to install until we fully update RetroPie, but after a reboot, I've got a message appearing after the ES splash screen saying this:</p><p>terminated called after throwing an instance of 'boost::filesystem::filesystem_error'</p><p>what(): boost::filesystem::status: Too many levels of symbolic links: &quot;/home/pi/RetroPie/roms/arcade/advmame/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi/hi&quot;<br>Aborted</p><p>The physical keyboard is not responding anymore, however I can SSH. I tried to disable Advanced Mame in the RetroPie Config assistant, but no luck.</p><p>I'm on it for two weeks now, I got too many problems with RetroPie. It's the first time I use it, I hope it's more reliable the rest of the time.</p>
<p>Your error message is stating that you have too many subdirectories under your advmame roms folder. Not sure why you have so many /hi/ folders, but removing those folders will stop the error message.</p>
<p>Hi Michael, thank you for your reply.</p><p>The problem is that the &quot;hi&quot; folder does not exist. I did nothing except update the system after the first boot.</p><p>Regards,<br>Chris.</p>
I too am having same problem its saying kernel firmware fail
<p>Hi W3ace,</p><p>thanks for posting this project. Could you share the preconfigured raspberry pi image for this project? This would save a big step for us. I'm having trouble getting it to work properly. I think it has to do with new retropie update.<br>Many thanks - CT</p>
<p>This Linux configuration from your tutorial:</p><ol><li>`sudo nano /etc/modules`<li>Add a line at the bottom: &quot;gamecon_gpio_rpi map=0,0,2,0,0,0&quot;</ol><p>...is deprecated and creates a boot error on current Raspbian versions.</p><p>The correct way is to remove the <em>map=0,0,2,0,0,0</em> argument from <em>modules</em> (but leave the <em>gamecon_gpio_rpi</em> line, of course)</p><p>and type that line:</p><p><em>options gamecon_gpio_rpi map=0,0,6,0,0,0</em></p><p>in /etc/modprobe.d/gamecon.conf</p><p>I struggled with that issue for a while (and even damaged my Raspbian) so I hope this comment (and my <a href="http://blug00.blogspot.fr/2016/03/how-i-got-the-gamecon-driver-to-work-on-retropie.html" rel="nofollow">blog</a>) will help others.<br>Have a nice day.<br></p>
<p>The only downside is that you have a stuck SD card unless you unscrew the screws... Unless you use this:<br><a href="http://www.ebay.com/itm/TF-to-micro-SD-card-Extension-cable-Flexible-Extender-Adapter-reader-car-GPS-/252251196415?hash=item3abb57cbff:g:3g4AAOSwqYBWmCku" rel="nofollow">http://www.ebay.com/itm/TF-to-micro-SD-card-Extens...</a></p><p>Someone should remake the STL to incorporate one of these.</p>
<p>Emulation station doesn't prompt me to configure the controller, anyway to debug that? Soldering seems ok and performed all the previous steps succesfully.</p>
<p>Manually going to the configure input step does work but hit another block, hitting the a button works but the arrows don't do anything</p>
<p>@w3ace any ideas on how to debug? I've double checked the soldering and that is fine. Any help appreciated, Thanks!</p>
<p>Love this project, trying to make this but failing at the </p><ol><br><li>Run the Gamecon Script: Option 308 Gamecon and db9 drivers</ol><p>Step</p><p>It just says failed... and goes back to the blue screen... any help would be appreciated pretty much a noob in this area </p>
<p>Seems it was a bug (the Gamecon script) but it has been fixed today <a href="https://github.com/RetroPie/RetroPie-Setup/issues/1258" rel="nofollow">https://github.com/RetroPie/RetroPie-Setup/issues/1258</a></p>
<p>Excellent. Glad to hear that Gamecon has been updated and that you have had success.</p>
<p>have you thought of making one with a usb nes controller? I ask because i have one of them but the wires are different and do not want to use my original controller. love the idea of this! </p>
<p>I haven't looked at the wiring of any of the USB controllers, but they all need to have the same pinout on the plug to work with the NES. If the colors are different than you would need to look at the PCB and see if any of the wires are labeled with CLK, PWR, DATA, GND. </p>
<p>I have completed all the steps save the last one for the module configuration. I get a FAILED on boot due to what seems like an exit-code for the module. Can you confirm syntax for the &quot;Add a line at the bottom: &quot;gamecon_gpio_rpi map=0,0,2,0,0,0&quot; ?</p>
<p>I see that RetroPie has released 3.4, when this was in Beta it had this problem, I was using the last stable Wheezy release. I tried to bring this to the developers attention on the forums, but a bug will need to be filed on the github account. </p><p>Try enabling the module from the command line using `sudo modprobe gamecon_gpio_rpi map=0,0,2,0,0,0`. That should work until reboot and will confirm that there is a kernel module error.</p>
<p>Worked PERFECTLY! Until reboot, that is. Thanks for the help!</p>
<p>I have reported the issue here: </p><p>https://github.com/RetroPie/RetroPie-Setup/issues/1234</p>
does this use nes roms or mame roms?
RetroPie installs a number of Emulators into EmulationStation. The NES roms work out of the box because the keyboard mappings are straight forward, to get the NES pad working with MAME emulation takes a little bit of poking beneath the hood into the MAME configuration files.
<p>This is so cool! I love retro tech! I love retro tech given new life that much more! </p>

About This Instructable




More by w3ace:How to Clean Video Game Cartridges Video Game Cartridge Cleaning, Restoration, and Repair RetroPie inside an NES Controller 
Add instructable to: