Turn an NES Controller into a ColecoVision Controller without Destroying it

Be nice - this is the first PCB I've ever designed and the first time I've ever used KiCad.
After my previous article fiddling around with modding a cheap aftermarket NES Classic controller to work with the ColecoVision, I decided to take things a step further and make something people might actually want to use. 

It turned out much better than I could ever have expected.  The upshot is that it also works perfectly for the Atari 2600 as the two systems share a common wiring scheme.  (The Sega Master System also has some wiring in common with the Atari and ColecoVision so the direction buttons and the #1 button work, but #2 button does not work on the SMS)

Making this was also a great opportunity to learn how to use KiCad.  There's an amazingly helpful set of videos on YouTube from Contextual Electronics called "Getting to Blinky" that tells you almost everything you need to know.

So what I came up with was a replacement PCB that could be used in a standard NES controller shell (and probably the first-party NES classic controller shells).

I've shared the design files on github so anyone who wants to can have their own boards made.  I just ask that if you are going to modify and redistribute that you give me attribution.

For more pictures, design files and a bill of material, please go here:
https://github.com/samson7point1/coleco_to_nes

The NES "Start" button is mapped to the number pad's "1" button because almost every game requires pressing "1" to start.

On an NES controller, the "B" button is on the left and the "A" button is on the right, however I decided to map the ColecoVision controller "fire" buttons the opposite way so that the NES "B" button corresponds with the right fire button, and the NES "A" button corresponds with the left. I initially did this because it made Donkey Kong play closer to the NES version, but I found overall it also worked better for nearly every game I tried.

And perhaps the part I'm most pleased with is the ability for the player to decide what to set the "Select" button to via a 4-pole DIP switch on the back of the PCB.  Some games require a second button to operate (such as Mario Bros which requires you to hit "5" to add credits).
The "Select" button can be mapped to anything on the original ColecoVision controller number pad by using the DIP positions printed on the silkscreen for reference.
Since I'm sure the DE9 joystick cable wires aren't universally color-coded, I've included a representation of the port itself so you can use the continuity function of a multi-meter to figure out which wire to attach to which pad.



It was overall a great learning experience.

  • In order to add my logo and the table showing the DIP positions, I had to learn how to import bitmaps and turn them into footprints.
  • In order to make the button pads, I had to figure out how to create my own footprints from scratch.
  • In order to add surface pads to the cable connector I had to figure out how to modify an existing footprint.
  • I got the hole spacing wrong twice (which is why this PCB says it's v3) and had to re-do it.


Comments

Popular posts from this blog

What I've Learned Fixing Optical Drives

FM Towns PC ODE - Grey Tower Wizard Installation Notes And Review

ColecoVision RGB Mod [Updated]