Modding an Atari Joystick adaptor out of a broken controllerI loved my Atari 2600 growing up. I still get a kick out of playing the games I so fondly remember... River Raid, Adventure, and *q-bert being among my favorites. What was missing was the ability to use my old joysticks as well (still had them even though my console bit the dust long ago). So I hacked up an old Xbox controller and what follows is quite an adventure in making "what's old is new again" (thanks RvB).
This was one of those projects I decided to undertake because I love my old games so darn much. I still have all my old Atari games (some even with boxes) in a tote on a shelf in storage. The rub is that my console bit the dust quite a while back. This tutorial is my journey through taking an old broken (left thumbstick) Xbox controller and using its electronics to convert the old Atari joystick signals to a format the Xbox could use.
Before we get into construction I am going to point out a couple things to cover my ass. I did this to an already broken controller and had nothing to loose, if you do this to a good controller and then find out you broke it, then tough. If you blow up your box because you shorted the USB power on the controller circuit board, tough (this is a real possibility BTW if you don't put this project into a nice plastic box when you're done building it). This 'mod' (if you can even call it that) only works for joysticks, not paddles. I did not even test to see what would happen if you plugged a paddle into it. If you want to try, go ahead. I can tell you now it will not work, but I'd like to know if you see fire ;).
Now a little bit about the Atari controller. The Atari controller uses a dSub 9 female connector, of the 9 pins available only 6 are used. The signals are: Up, Down, Left, Right, Button. The controller shorts these signals to common in order to indicate a button press.
The Xbox controller supports both analog and digital inputs. The thumbsticks and triggers are analog while the d-pad is digital (as the name implies). The start and back buttons are digital as well, but what about the A, B, X, Y, B, & W buttons? Those are analog operated in a digital manner. The real trick is not to interface the joystick, that's all relatively simple. The hard part is interfacing all the switches (6) that were on the Atari console itself.
So, without further ado, let's get into the modding.
For any of the pictures below just click on the image for a larger pic in a pop-up window.
Ok, here we are with the case of the joystick partially removed. (If you can't get this far, don't even bothering to continue ;) ) See the two blue things next to the triggers? Remember them as the "analog trigger trimpots". Next step is to remove all the plastic bits that you can: triggers, USB/Memory card housing (not the slots themselves), motors, top half of the controller casing, thumbsticks, etc. you should have a bare board with an Xbox cable connected to it and not much else. now whip out a decent soldering iron, some flux and some solder braid. Wick out the solder from the holes and with some tweezers hold the pin in the middle of the hole while it cools (wiggle it a bit, this will keep the remaining solder from setting up and bonding it to the hole). Repeat this process for all three pins of both analog thumbstick trimpots. In the next picture down you will see I installed some three pin headers . . . Don't do that as they tend to get more in the way than they are worth. I needed them for debugging the resistor values needed later in the tutorial, you will not need them at all.
This step is optional and may cause you some grief. I removed one of the memory card sockets so I could add a USB header to this project. If you don't need to do this then make your life better and leave the socket where it is. If you notice on this pic the area looks dirty, that is flux residue. I use a solvent tank to clean my boards, but you can use a stiff nylon brush (firm toothbrush) and rubbing alcohol to clean the boards up as well. Cleaning your boards is important in this project because we are working with analog circuits. The flux is designed to be a non conductor, which is good, but it still can influence your circuit. Besides, it looks better clean.
At this point the controller board is fully striped and ready for us to connect all the wires that will allow us to build out the switch board (emulating the console's switches) and the joystick connector. To ensure I would not get confused and plug things in wrong after too much partying I made the switchboard connector a female connector rather than a male connector (which is what the joystick plugs into). I could have used something other than a dSub-9 but that's all I had in stock in my junk box. In the photos below you can see I used multiple colors of wire. Black is common (and in the case of the Xbox controller, ground), blue is for the joystick, while red and yellow are for the switchboard.
The first (and easiest part) is to connect the joystick connections. Solder a length of Kynar wire (or other hook-up wire of small gauge) to each of the points shown in the photo at left. There is one wire needed that is not shown. It would be the common return wire and it can be soldered to any of the digital pads opposite the one with the blue wire soldered (a later picture in the series shows this). If you are new to this kind of work (this is your first, second, or third project) I would recommend pre-cutting all your wires so that they will end up at the same point (length wise) to the left of the board about 2 inches. Pre strip about 1/8 to 1/4 inch off of each end of the wire. Using rosin core solder whet each pad you are going to solder to with some solder so there is a thin layer (no more than required to bond to the Kynar wire). Now lay the stripped end of the wire into the layer of solder, if you had enough it should wick onto the wire and bond it after you remove the iron. The whole operation of whetting the pad and soldering the wire should take about 10 seconds or less.
Once all 6 connections are soldered in place it is time to solder to the dSub-9 male connector. I mounted mine on a piece of perfboard because I was prototyping. If you plan on mounting this whole project into a box then make your wires an inch or two longer and solder directly to the dSub connector. Looking at the back of the connector this is the pin-out you need to follow.
The connections to the dSub-9 are as follows:
|Up pad (left side) to pin 1.|
|Left pad (top side) to pin 3.|
|Down pad (left side to pin 2.|
|Right pad (top side) to pin 4.|
|Right pad (bottom side, common ground) to pin 8.|
|Button 'A' (top side) to pin 6.|
|Pins 5 and 9 are not connected on the Atari joystick.|
Remember the analog trigger trimpots? Well since you removed them you will need to place a 120 ohm resistor across pins one and three (the outside two pins) on each side. If you read through this tutorial before you started then congratulations, if you don't plan on going further with the switch modification then you can skip the previous step where you remove them. ;)
If you plan on using this only as a secondary joystick and have no plans on building an Atari console switch bank (a bit more complicated) then you are done here. My recommendation is to take this blob of parts and put them in a plastic project box (you can pick them up from Radio Shack). Just drill and cut to make a space for the cable to the xbox (make the cut so you can use the existing strain relief on the cable, it will make everything look a lot more professional as well as increase the life of your project. My prototype was not enclosed and the cable to the xbox broke off with only one day of futzing around with it. The only other holes to make in the box is for the dSub-9 connector and the standoffs to mount the controller board, those should be relatively easy. (Just take your time and mark out where you want to make your cuts BEFORE you start cutting ;).
Ok, making the Atari console switch bank is not nearly as well documented as it was not my primary focus.
If you want to attempt this I will say now that soldering the alternate D0 on the back of an Xbox motherboard is not too much harder, so if you are not sure about what you are doing then quit while you are ahead.
Basically what is done here is all the other buttons you need (the triggers, start, back, white, and black) must be brought out to switches to ground.
Now here is the real catch, up until this point all of the signals we were using were either true digital or were expected to operate in a digital manor by the controller IC on the board (the 'A' button). The triggers are NOT digital at all, they are actually analog and expected to behave as such. My solution to this was to use a DPST pushbutton switch with resistors set-up to emulate the trigger pulled in when the button was pushed and trigger out when the button was not pushed. In the pictures you can see the aborted first attempt caused by a brain fart (don't ask). Anyway, a workable solution is to take the two wires that are not ground (pins 2 and 3) from the joystick and bring them out to the dSub9. connect pin 2 to the normally closed position on the switch, connect pin 3 to the normally open position, and connect ground to the common terminal on the switch. While in the actual trigger on the joystick, nothing ever goes to ground all the way, this will not hurt anything either and it's a whole lot less complicated. When all of this is assembled you will have used all 9 pins on the dSub-9 connector. One pin for ground, and one pin each for: White, Black, Start, Back, and two pins for each trigger. This works quite nicely and though my proto goes out to a piece of perf board I would recommend mounting all the switches to the same plastic box you use to house the controller board. (It looks better and is less prone to accidental operation of the buttons.
The pin-outs for the triggers on this controller were as I described. If you use a different controller they may be different. Use an ohm meter prior to disassembly to verify the proper operation. (trigger out = low ohms from 1-2, high ohms from 1-3)
Here is a slide show of the Atari console switchbank (with the bonehead mistake) I made along with the leftover pieces when I was done.