Skip to content

Instantly share code, notes, and snippets.

@alangfiles
Last active December 21, 2021 18:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alangfiles/503ff767eb990af87b7e63a3ff1a50f1 to your computer and use it in GitHub Desktop.
Save alangfiles/503ff767eb990af87b7e63a3ff1a50f1 to your computer and use it in GitHub Desktop.
Reverse NES Controller

PXL_20210925_210413232

Backwards NES Controller (or, an adventure in making)

It all started with teaching my 6 year old to play Mario. He kept running into the first enemy, then the first pit. He had to stop to jump. He was new to the game, and it's hard to be new. I had to teach him how to hold down the button to run, press the other to jump, and move all at the same time.

Early arcade games had the directional controller in the middle, with buttons on the left and right, so the player could control it which either hand. And then, as legend has it, the directional controller was moved to the left side, because most people are right-handed and would lose more games, thus bringing more quarters to those arcade fat cats.

Thus, I decided to right a great wrong in this world (at least for the original NES), and create a reverse controller!

The Circuit Board

To start, I took apart an NES controller, and behold the board: [todo: insert board picture]

Wow, a beauty, hand drawn lines, all on the front of the board. (also, look at those weird black resistors sections).

I thought I could find a circuit diagram, mirror it, and print it out, but a quick problem with 'reversing' this board like this is that the IC would need to be reversed too. So onto plan B... I'm just going to do it myself, luckily the NES board schematic is well documented.

So I created my own version of the board, using EasyEDA. Mine isn't as elegant as the original, but I figured it might work. I'd measured out the size of the original board to make an outline, because I want this new board to fit in the case, and have all the holes in the right spots (for screws, etc). circuitcompare

EasyEDA works with LCSC for parts (resistors, capacitors, ICs), and each board was like $0.40, and shipping was like $15. So I ordered 10 of them, and got them shipped over! The project is happening! I'm $20 into this adventure.

3D Case

To start with I knew nothing about 3d printing, and didn't have much of a desire too. I'd worked with CAD software before though, so I found a copy of an NES case and loaded it up in TinkerCAD, and mirrored it. I gave the file to a friend who is 3d printer saavy, and he did his magic and printed one out for me. Now I've got a case, and a circuit board! PXL_20210304_163154475

Putting it together

I ordered a lot of 6 broken NES controllers off ebay, to salvage them for buttons and rubber pieces, which will work in my reversed version since they have the right kind of symmetry.

Time to solder and screw everything together! My board was made for surface mount components, so instead of an easy plug-in and solder system, I had very small solder work to do on the board. Luckily, I've got a friend who's really good at soldering, so he did all that work, while cursing my name for not making a better and bigger board to work on.

IMG_20200229_164927

And it all came together! ... And then it all came apart. My button contacts were too small, so they'd only work if you pressed them in very precise spots. The board and the case didn't fit exactly, so you could only screw 1 of the 6 screws in the back in, and when playing with it you had to hold the controller together yourself. IMG_20200229_193131

But... it worked (barely). Enought to give me energy to push forward.

Iterate, Reiterate, Itereiterate

I went back to EasyEDA and fixed some of my measurements, made some holes a lot bigger, and got some way bigger contact areas for the buttons. You know the old saying, "Measure once, cut once, then buy another board and measure like five times and then cut again."

I also ended up buying a 3d printer to print out some cases myself, and had to tinker a lot with the sizing, slicer settings, an a million other things, but I was able to print out a couple more cases, fixing a few things that weren't exactly symmetrical between the original case and the reverse one. controllercases

Also, because you have to forget something, I forgot to update the board components, so it's still all surface-mount intense soldering (is that more cursing my name I hear in the background? oh no, I hear it in the foreground). boardcompare

But in the end, we did it. Backwards nes controllers, all buttons working, holding itself together!

Finally! I'm even worse at Super Mario Bros.

And now I get to play super mario. I'm horrible at it, I run into the first enemy, I have trouble jumping over the pit, I can't run and jump at the same time! Wild Success!

IMG_20200229_194034

@rpfinneran
Copy link

LMAO, so much of this resonates. I intentionally opted for through-hole components as much as possible, so I only had to surface solder a single transistor and left myself plenty of space for it :) So easy, a 6 year old can (and did) do it

One other note, I saw a guy wearing a shirt that read:

Measure
Measure
Cut
Curse
Repeat

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment