Table of contents
When it comes to playing games on an emulator, nothing beats the original game pad. Of course you can play NES games with the Xbox 360 controller, which is very good, but it's just not the same. Fortunately, old controllers can be adapted to use the USB port. It's been already described numerous times, you can even buy kits, so I won't go into the details. I just want to show how I did it, and how it can fit inside the case. However it does involve cutting the cable and replacing it with an USB cable, which means you won't be able to use it with your NES any more. I bought a pair of controllers on ebay for a few euros, and kept my original controllers safe.
This should be obvious enough. Just a few photos (click to see bigger pictures) :
You can take this opportunity to clean the contacts and rubber parts. Cotton and alcohol will do, don't use anything abrasive or a too strong solvent.
The piece of paper glued to the case was the beginning of a mod to add LEDs to the controller. Unfortunately the glue I used discolored the front plastic cover sheet. Maybe another time.
Something like that :
Here is the list of parts needed to build this circuit. Refer to the schematic for the wiring :
The firmware uses the V-USB driver, and is based on one of the examples. You need it for compilation, although for convenience I included it in the zip file :
I did my best to keep the circuit flat and small to fit inside the case. I just improvised the wiring so I don't have many pictures or guidelines to help you if you plan to replicate this design. The black wires and 6 pin header are used only for programming, I used them during the prototyping phase. You can just program the chip beforehand and omit them completely to make the job easier. When straightening and cutting the tip of the ATtiny44 pins be careful, they break easily.
The circuit identifies itself as an HID joystick. Therefore it does not need any drivers and it will be detected automatically by the OS when plugged in. For example under Windows 7 :
So, does it work ? Well let's see :