At some point in every veteran gamer’s life, a certain eye-opening event is bound to happen. I would even be so bold as to call it tradition.
Every gamer runs into that moment in time, where they go back to something they loved as a kid, only to realize that once you take the nostalgia goggles off, things may not be as nice as you so fondly remembered.
For me, one such moment happened a couple years ago when I used some of the old joysticks from the C64/Amiga era that I had, and quickly found them to be mushy, uncomfortable, and difficult to enjoy.
Modification Details
Cost of NES controller: $10 avg
Cost of joystick: You probably have one already ($10 max)
Time to mod: Approx. 1 hour
There are good joysticks out there, however. I even found a detailed article that ranks old joysticks based upon various reviews from the retro community.
With the likes of the Kempston Competition Pro, the Multicoin Amusements Star Cursor, and many others that were made back in the day, there are certainly a lot of options. The trouble is, finding them in good condition is proving to become more and more difficult.
NES controllers on the other hand, are very plentiful, and can be had for ten bucks or less. I’ve even found them in thrift shops here and there for $2.99 CAD.
What can we do, then?
“This little NES controller had a SECRET, and it made playing games on the C64 & Amiga much better!”
When I purchased my Amiga 500 back in early 2018, it came with a nice little bonus in the box. It was an NES controller that was modded to work with the Amiga. I didn’t think much of it at the time, as I really didn’t have any intentions of using it over the various joysticks I already had, but I eventually ended up using it due to the horrible feeling joysticks.
This little NES controller had a SECRET, and it made playing games on the C64 & Amiga much better! The games released for the Commodore 64 and Amiga generally only used one button, so the additional button on this NES controller was mapped to UP, making most platform games on these systems much more tolerable to play! No more pressing up on the D-pad to jump!
Unfortunately, within a year, it stopped working correctly and became flaky. Sometimes it would work okay, other times I couldn’t press up or the button would stop working etc.
So, on to the mod.
The soldering inside the NES controller that the previous A500 owner built was very shoddy. The PCB looks like it was the subject of an exercise in trial and error.
Take this next photo as an example of what not to do.
There were a bunch of traces scraped off that didn’t need to be, and the original modder slipped a few times and cut traces that were needed. Pin #6 was no longer getting continuity through to the lead in the controller, which probably means a break somewhere inside the cable. To fix it, I basically took it all apart and build a new one with a new donor cable from an old joystick, which is exactly what we’ll be doing in this build guide.
The Tools
Here’s a list of tools you’ll need for this relatively simple project:
- Multimeter
- Soldering Iron
- Solder
- Flux
- Copper Braid (Desoldering Wick)
- Tweezers
- Phillips Screwdriver
- Flush Cutters
- Wire Stripper
- Isopropyl Alcohol
- Toothbrush
Some Info About Choosing A Donor
You can, of course, build your own cable from scratch with an off-the-shelf DB-9 connector. I wanted to make use of what I had on hand, and what better way to put those horrible joysticks to use that I will never want to use otherwise? I ended up using a Quickshot, and one of the two unbranded ones I had on hand.
Atari 2600 controllers are also great donors, but they are generally regarded as a pretty decent joystick, so finding one that’s broken might be best.
As far as I can tell, most of the cheap joysticks of the 80’s and 90’s worked the same way, even down to the same cable with the same 6 leads and their colours. If they are a more complicated construction with turbo switches or microswitches for movement, they may be different.
I took apart 5 different joysticks, including an Atari 2600 joystick, and they all had the exact same wire colours aligned to the same pins inside. The only exception was one joystick made use of the 5V pin, so it had a 7th wire that was red. We don’t need that for this project. If you encounter a joystick with a red wire that’s going to pin 7, just snip it short so it won’t make contact with anything inside the controller.
And last, but certainly not least; make sure the DB-9 connector on the end of the cable is in decent shape. Some joysticks look like the end has been inserted countless times, and they’re completely destroyed. Your guess is as good as mine as to whether they would actually work or not.
Step 2: Prepping the Donor Cable
Grab your multimeter and turn it to continuity mode. Remember, the cable that you’re handling is probably over 30 years old at this point, so it’s not a good idea to just blindly trust that it’s still intact.
I stuck a small screwdriver bit in an alligator clip to easily insert into the DB9 connector, and make sure each wire connected soundly to a pin in the connector on the other side.
Here’s a great pinout reference for the C64 that you can follow: https://www.c64-wiki.com/wiki/Control_Port. Remember, that the pin diagram shown on that page is looking at the connector on the C64, so the DB-9 cable you’re working with will be reversed.
At this point you’ll want to make a map of your wires, so you know which one connects to each pin. Every single joystick I took apart today was the exact same, so hopefully my results here will help you out, but I would recommend still checking it on your own.
Wire Color | Pin # | Use |
---|---|---|
White | 1 | D-pad Up |
Blue | 2 | D-pad Down |
Green | 3 | D-pad Left |
Brown | 4 | D-pad Right |
N/A | 5 | Not Used |
Pink | 6 | Button 1 |
N/A | 7 | Not Used |
Black | 8 | Ground |
N/A | 9 | Not Used |
Step 3: Disassemble the NES Controller
With your fully tested and mapped out DB-9 cable, you can move on to the NES controller. Take it apart, and set everything but the PCB and connected wire to the side. Grab your soldering iron and heat up each wire connection into the PCB individually and pull them out gently. You can set the cable aside, as you won’t be needing it any more. It should be fully intact, and will make a great spare for your NES controllers that are stock, so I wouldn’t throw it away.
Step 4: Prepping the PCB
The little chip (4021 Shift Register) on the PCB is our next target. If you’re not keen on saving it, you can snip it off with your flush cutters, but you’ll still want to heat up each lead and remove them so you have nice bare holes to solder your wires to. If you’re like me and you think the idea of having a spare around is a good idea, then use your desoldering braid and soldering iron to remove it. Apply some flux and a little fresh solder to the joints first, and it will help with the removal process. It only took me about 5 minutes to get it out, so it was worth the effort.
You can then clean it all up with your isopropyl alcohol and a toothbrush.
Now is also a great time to give the entire board a good cleaning, to ensure those buttons make great contact later when you’re done!
Step 5: Soldering the connections
Now it’s time to solder! Click the image below to see it fullsize.
I’ve made a diagram of how I wired mine up. You’ll notice that there’s a jumper wire run from the A button on the NES controller to the D-pad Up. As mentioned in the beginning of the article, this is to map the A button to D-pad Up, making platforming games, and some racing games MUCH better.
Trim the wires back on the DB-9 cable to about 2 inches if they’re too long. This will give you ample room to work with, and they won’t be all bunched up in a nasty mess due to too much cable length.
Strip back each wire about 1/8″ or 3mm, but don’t tin the wires. They won’t fit into the PCB vias if you do. You can then solder them into place, inserting them from the back of the PCB.
You can also take this opportunity to install your jumper wire, that will re-route the A button to UP.
Step 6: Test your work
Now would be a great time to test your connections. You can use your multimeter and check the positive side of each button pad on the PCB, and make sure it has continuity to the correct pin on the DB-9 connector. You can also ensure that the A button pad is connected to the UP button, shown below.
Step 8: Test with some games and enjoy!
Test and enjoy! The new Super Mario Bros. release for the C64 is a fantastic game for testing this out. You can also try out Buggy Boy on the Amiga, as it’s one of those racing games that uses up to accelerate.
I also played Shadow of the Beast and The Killing Game Show on the Amiga, and Ghosts ‘N Goblins on the C64.
Everything works great, and I’m very happy with the results! Good luck on your mod, and please let me know if I was helpful in your endeavour.
When life gives you a lemon NES controller, just fix it, learn from it, make a 2nd one, take a bunch of photos of it and post it on your blog.
– raskulous
Good guide thanks, I wired my controller and everything worked fine except the fire button. I noticed on your pcb diagram it shows the fire button on the opposite side of ground however the image of it all soldered up shows the fire button the on the other side opposite the jumper wire. I’m assuming this is where my problem is 🙂
Oh! Good catch, the diagram is off for sure. I’ll make sure to change that when I get a free moment to alter the image, thanks! If you’re looking at the front of the PCB where the button pads are, it should go to the top row, 2nd from the right. If you follow the trace on the board, you’ll be able to find that it goes to the A button pad that’s not ground.
All good i’m just happy that was the mistake and not a problem with my PCB, took me a while to figure it out because the continuity test was fine and everything else worked flawless!
Well, I appreciate the feedback, and I’m glad the article helped you out.
Fantastic and thorough guide! I was able to convert my NES controller for use on my C64 with no issue. WOW, being able to use A for jump/up is a total game changer.
Thank you so much for doing this!
You’re welcome, glad you enjoyed it!
Awesome guide.
Took 5 minutes and works perfect. Didnt even kill a ‘good’ controller to do this, found an nes gamepad with a cut cord for a buck the other day. lol
Very happy it helped you, enjoy!
Does not work on Atari 7800?
The 7800 has a separate left and right button instead of a single fire button, so it will not work. It would only be able to press the right button, but not the left.
It seemes not to work on Atari 7800 🙁
You’re correct, it won’t work for the 7800, as it has two fire buttons instead of one like these other systems. See my other comment here for details.
Are you supplying 5V at all to the controller?
No, not in this guide. 5V in the NES controller is used to power the shift register IC (4021), which is not needed for use with a C64, Amiga, or Atari. 5V would be needed for some peripherals like the paddles, light guns, etc.