Intro: Use 15pin Sidewinder Gameport Through Parallel Port
This instructable will show you how to put your old 15-pin MS Sidewinder to use again. I had one of these lying around the house and remembered how much I love the button layout mimicking the classic Sega Saturn controller; however, I have no computer with a gameport and the Sidewinder drivers are nonexistent for XP.
I didn’t try to recognize the multiplexer outputs and write my own driver, nor did I try to make this into a USB device. Rather I broke open the controller and rewired it, then electrically connected each button output to the corresponding buttons on an extra PS1 pad. Using an old printer parallel port, a custom adapter and PPJoy software I was able to fool XP into thinking I was using a PS1 controller when in actuality playing games on my emulators using the Sidewinder shell.
This project will take you a little time and might not be worth it if you can merely pick up a USB pad or an old Sega Saturn pad (similar button layout) and get that to work through the parallel port, but if you wanna give this a try here’s what you’ll need:
(1) MS Sidewinder gamepad, the original version with the 15pin gameport connector
Windows XP SP3 and a parallel port on your computer (old printer port, 25 female holes)
(1) PS1 controller
(1) Male DB-15 connector with other side solder cups, OR re-use the Sidewinder cord you will cut off
(1) Male DB-25 connector with other side solder cups
(5) 1N4148 diodes
22g solid copper wire, wire stripper, snippers, soldering pen, solder. Also good to have is some flux and a desolder pump.
First: if you do not have a parallel port in your computer, STOP. Doing the following won’t help you in the least if you can’t plug this in.
Pick up an old PS1 controller. We’ll need to ensure the computer can recognize it before we go any further; don’t even touch the Sidewinder yet. Build the DirectPad Pro PS1 to parallel port adapter seen here; http://www.raphnet.net/electronique/psx_adaptor/psx_adaptor_en.php. You will need five 1N4148 diodes, a male DB-25 with solder cups on the other end, some wire and appropriate soldering tools. Also, a pair of dykes or a snipping instrument are needed to peel back the plastic around the PS1 controller pins. Once you’ve completed, plug this into your computer and install PPJoy.
In the software, add a new PS1 controller and use the DirectPad pro configuration. Go through all the menus and when you are finished, go into the Game Controllers section in the Windows control panel to verify that the joystick registers. You should be seeing buttons light up each time you press something on the controller, and the x-y axis should move appropriately. Make sure everything works before proceeding.
There are many good tutorials out there with more information on constructing this adapter; please consult them as needed.
Luckily for us Microsoft has included soldering ports for us to easily access each button. On the PCB, toward the bottom on the left and right you will notice a few “holes” with letters next to them; these correspond to the buttons on the pad. We will end up running wires from each solder port to the internal DB-15 so that we don’t have to cut up the PCB unnecessarily. Take some dykes and cut off the vertical parts in the top row of the DB-15, exposing both rows. Measure out your wire lengths and leave some slack so that the shell can close when we re-assemble; then solder between the solder pads and each DB-15 pin. I found that putting 22 gauge solid copper through the holes, then applying some flux and solder made a good connection. However, make every effort to NOT REMOVE THE WIRES ONCE THEY ARE SET, nor force the wires through (use a smaller gauge or don't tin the wires first). Else you may rip out the metal pad and lose your connection.
BL and BR correspond to the left and right underside buttons, respectively. There are ports for these towards the sides of the controller anyways so I just peeled back those wires a little and soldered directly to them. Same for the ground. You can get up to 14 buttons on the DB-15, and you will need to leave the last one for ground. Any order will do so long as you remember it!
While you’re inside the gamepad, you can snip off the wires coming from the cord if you want extra working space and aren’t planning to use the pad through a gameport ever again.
If you do burn off the solder ports, you have a second chance if you follow the traces, take an exacto knife to the PCB and expose some copper, and resolder there. Be very careful not to break the trace or to open up an adjacent trace.
When the controller is internally rewired, you will need to use a male DB-15 with wires soldered to the soldering cups on the other end to get the buttons connected up to the PS1 controller. You could cut off the Sidewinder cord as we no longer need it and plug in directly to the internal DB-15, but you will need to use a multimeter to determine which wire corresponds to each pin. Additionally, those wires are very thin, about 26 gauge or so and were not tenable with my regular wire strippers. I decided to use a male DB-15 and make my own harness.
Crack open the PS1 controller and solder up all the buttons to their equivalents on the PCB. I used the bottom row of the PS1 front buttons as my C and Z Sega Saturn controller equivalents. It doesn’t really matter so long as you have all the buttons covered. Depending on your PS1 controller the soldering points will differ. Just follow the traces and if there are no soldering points, try to find an area which can be easily stripped down to its copper and solder directly there.
Once the connections are complete, go into control panel’s Game Controllers menu and check out your pad. If you’ve wired everything correctly you should be able to make button presses on the Sidewinder and watch them register as presses from the PS1 controller.
You’ll see a couple of buttons showing up as the POV hat instead of button presses—that’s okay, but an emulator like ZSNES might not be able to recognize those button presses. A work-around is to use a program called Joy2Key. This will take any joystick button press and convert it into a keystroke. You can then setup the emulator to work from keyboard input only.
In the first picture you'll see a mess of wires connected to the PS1 PCB. I later placed the PCB in a box with a side folding lid, then desoldered and resoldered the connections so that every wire comes to the PCB from the same direction. I then bundled the wires together with zipties at several points and obscured the DB15 cups with a backshell. It looks pretty nice tidied up in the box and you can just hang the DB-15 wires out one end and the PS1 wires out of the other when the lid is closed, protecting the PS1 PCB and your connections.
When I finally completed the wiring I found that the D-pad required a lot of force to get motion on the x-y axis. I remedied this by taking a piece of two-face duct tape to small squares of aluminum foil and taping them directly onto the four D-pad metal pistons. This SIGNIFICANTLY improved the D-pad ease of motion.
If you notice two different buttons trigger the same light—you have them wired together somewhere. Check the harness, then look inside your controller to ensure no unintended connection has been made.
I am finding the controller to work well as a basic pad, but it is a little buggy in games requiring the player to hold down multiple buttons together for more than a few seconds. It seems like holding down a few particular buttons after a couple of seconds triggers other buttons to register as pressed, throwing off your gameplay. Since I play games like Tetris and Wheel of Fortune on the emulators this isn’t a big concern for me. I believe the issue goes back to poor soldering and having to cut up a couple traces to get the connections (I messed up those solder ports!). In the future I’ll retry this with my other controller. If you have this same issue but have good connections, try removing the chip or breaking the traces leading to it.
Well, this mod sounded harder than it was. But if you made it this far you have breathed life again to your Sidewinder. You have 10 buttons at your disposal and can play Sega roms without having to use a button in the higher row as "C" (I really wish there were three rows on modern pads). You could do this trick using any controller and not just the Sidewinder; also, a different sacrificial controller could probably be substituted so long as it registers on your computer. I’d be interested in hearing from anyone if they have accomplished this. I do know of the so-called Keyboard mod and I thought my way would be a little easier than deconstructing a keyboard.
Also, I think it would be possible to get the same results by wiring up the Sidewinder to two different controllers, such as two 6-button Genesis or two SNES controllers. You would have to use the multitap adapter, and use Joy2key to register each of the controller’s presses and spit it out as a keystroke, then have any emulator use the keyboard and only recognize those presses. This should let you avoid the problem of not having a controller available to scrap that has the same number of buttons as the Sidewinder (you need the D pad + 11 buttons to use the full capability of the Sidewinder, and the PS1 gives you D + 10).
I’d like to thank the guy at Wrongcrowd.com who provided info on soldering to a pad for his You Don’t Know Jack controllers, the guys who developed and support PPJoy, and the good folks at the local radio shack for refusing to get rid of the components vidmar.