I love retro gaming – Contra, Zelda, Desert Strike – good times. But those games were annoyingly hard, and the controllers; oh the controllers… The NES controller was super unresponsive (SNES was a little better), and the Atari CX-40 was just torture. Wouldn’t it be great to have an arcade stick for these retro machines, like the NES Advantage? But three different arcade sticks will lead to storage/cash flow problems. What you really want is a single arcade stick that can plug into multiple retro machines. MULTIiple CONsoles of the RETRO kind.
Enter the dragon MultiCon_Retro
I had been looking for a retro gaming fabrication project to really push the Fireball’s and my limits. This seemed like a good place to start. To really show that with a CNC you can make multiple copies of the same project easily, I would make at least two units: One was to be a gift, the other for myself. The idea was that the second copy should take far less time to build than the first. In essence, the project consisted of three parts:
1. Arcade quality controls
This was easy; I would use Sanwa and Zippy parts; this would be familiar territory due to my experience with my arcade cabinet. I avoided the Sanwa style buttons which clip into the deck, and instead used the threaded through-hole American type. This is because I knew my deck would need to be thick (thin MDF ‘gives’ when you press it, making it annoying); plus the Sanwa buttons can only be mounted on a fairly thin deck.
Because I wanted this to be a comfortable stick, wanted to carefully test the button layout. I built two cheap prototypes to ensure that the deck size and button spacing was comfortable:
Here is Steve helping debug one of the prototypes with Contra. Even in this crappy form, it was already a lot better than using the original NES controller.
2. Interfacing controls to consoles
I knew I wanted to support the NES, SNES and Atari 2600 (I have an N64, but that has analog controls, so I excluded it). The Atari connection is a simple one-cable-per-input (plus ground) deal; but NES and SNES use shift registers to encode the input. Rather than try to figure out the circuit, I just took the circuit boards from real controllers (you can get knock-off controllers for a couple bucks each).
A little hot glue and it is all installed:
Then I needed to make the one joystick and set of buttons drive all three boards. To simplify debugging/parts replacement, I soldered a custom distributor board, where the buttons are plugged in via headers (left two columns in the image below), and the three controllers are in series with that switch (the S, N and A columns in the image below). The end product is a fairly compact header setup, which allows you to work with each of the three controllers independently:
Each of the three controllers outputs to a 9 pin female D-Sub plug; and then you can plug in whatever cable you need for your machine. I provide three cables, with the console plug on one end, and a male 9D-Sub on the other.
3. Nice enclosure
This was the hardest part. I had done some small things on the CNC machine, but never something this complex. To keep things simple, I set the design as a flat sided box (no slopes, chamfer, etc), but with rounded corners. To make it look like more than just a slab of MDF, I decided I would add some artwork under a sheet of transparent acrylic, and shiny new chrome screws to hold the whole thing together.
Building a box with rounded corners is not as simple as you think. At first I though of using quarter round dowels held between the vertical walls, but it soon became apparent that the tolerances to which quarter rounds are cut are not great. First, they are not 90 degrees – they vary from 80 to about 85 degrees; and then the radius also varies along the length; not the road to a neat box. Instead, I decided to design and cut custom corner pieces from 1/4″ MDF, and stack them up to the 2″ height of the box (i.e. 8 of these pieces per corner). This means you need 32 pieces per case; this ended up being the most tedious part of the project – cutting the 32 pierces on the Fireball ended up taking more than two hours, and kicked up a lot of dust of course. But the results were worth it in the end. Here is my PC partway through one of those boring two hour sessions cutting some corner parts:
Being able to design the corner pieces gave me a lot of freedom – that’s the upside. I decided to make them be the major structural piece – all other flat surface would be glued by these.
The top deck (with the controls) would then bolt to the corners by means of an embedded nut. Here you can see how the shape of the corners fits with the vertical surfaces, and the machined bolt hole (always better to machine the hole while you are CNC routing, rather than drilling after the fact):
Incidentally, embedding a nut and using a bolt is far better than using a self-threading wood screw, as that will become progressively more and more loose as the MDF compacts, and cannot be easily repaired. A steel nut however, will last forever.
I learned that test-fitting as you go along is very important – I found a couple of bugs in parts which I had to re-cut. Remember kids, the earlier you find a bug, the cheaper it is to fix.
Here is a view of the internals. Notice the C-shaped pieces along the long vertical walls. Those are there to provide strength to prevent the long walls from collapsing; if they were not there, the only thing preventing the walls from collapsing inwards would be the thing edge of the 1/8″ MDF glued to the floor piece. Retro gaming can be a very frustrating experience, so you need to make these things tough.
Now for the toxic fun part. Although the Fireball cuts MDF very neatly, there are still visible seams once the glue sets. This is where Bondo Automotive Putty comes in (this is a trick I learnt from the Cosplay crowd). It smells terrible, it’s messy as anything, but it is cheap, and works really, really well on MDF. Here are the bits you will need – nothing exotic. The tile I use to mix the bondo on, to protect the workbench.
First, you mix up the goop, apply it to the part, and let it dry. At this stage it looks worse than when you started:
Then you break out the sander with a fine paper, and start reducing the mass. You end up with a super-smooth finish. Because Bondo and MDF have a similar density, they reduce at the same rate, so this works very well, and is safe.
Once all the seams are neat, you can spray with regular spray paint. I decided on white, as I have enough black/beige bricks around my TV as it is. Once the paint dried, I wired up and tested all the connections.
Incidentally, Starfox on the SNES is great for testing, because it has a screen where you can try different control sets, and it shows you how the ship responds to each button push. You can test without pesky aliens shooting at you for as long as you need, and it uses every button on the controller.
Once everything was ready, I added the artwork and acrylic sheet, the decals and some Little Rubber Feet
Now Unit 00 was ready to be packed and gift wrapped. I used an old Xbox 360 cardboard box – just flip it inside out, and add some bubble wrap and custom decals. I also made a brief instruction manual, which you can download here.
One of the things I wanted to achieve on this project was a kind of mass-production (after all, all the design work was done, and I had all the G-code for the parts ready to re-use). Well, it was much faster to produce Unit 01 than Unit 00. In fact, I would say I took around half the time, and managed to fix up a few small bugs along the way – so some kind of “mass production” (or at least “non-unique production”) is completely possible. Here is the second unit (this time with white stick top)
Hey great blog. Im trying to do kind of the same. I just want to make an arcade stick for the sega genesis from an original genesis circuit board controller, you know wire it directly to the stick and buttons, but i’m not sure where to solder the wires on the genesis circuit board or where is the common ground.. could you help me?
For problems like this, do a bing image search for something like “sega genesis controller pcb” – you’ll get some hits that help. I found these two, for the three and six button models:
To find the common ground, get a multimeter and start probing the buttons. You’ll notice the button contacts look like teeth. One half of the contact is the signal side (which the the button signal itself), and the other one is common ground. So you’ll notice that on each button, one half all contact are connected together – that’s the common ground.
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
Hi! Awesome project, I was actually planning on making a controller just like yours. But I got stuck on the enclosure i did not have the skills and tools to make one i liked.
I do have a lot of electronic skills and was planning on making an integrated solution with compatibility for a bunch of consoles and for pc. I am an electrical engineering student, and love programming.
If you want to make another version I would love to help make the electronics smaller, support more consoles and reduce the number of connectors on the back.
Very cool work here. If you do another build of this, try using a genesis PCB for instead of an atari one. This would in effect give you the ability to use one connector for Genesis, Master System, and Atari. I remember using my genesis controller on my Atari because the Stick broke off hehe.
Love the finish!
idea put the screws under the acryllic and under the art and use a non abrasive adhesive to attach acrilik
thats sweet by the way
[…] [Dave Nunez] wanted arcade quality controls when gaming at home. The problem was he couldn’t decide on just one console to target with his build, so he targeted them all. What you see above is a single controller that connects to many different gaming rigs. […]
Nice work on the enclosure. Great tips there.
[…] Creating a Multicon_Retro | Dave Nunez’s Blog around Hack a Day […]
[…] Creating the Multicon_Retro [Dave Nunez's Blog via Hack a Day] […]
Sanwa has screw on buttons that work with thicker top panels. And you could have just used a MC Cthulhu PCB from GDLK controls and had all these consoles with just a single RJ-45 connector on the back:
PS3, PC , Xbox1, Dreamcast, Playstion/Playstation 2, Gamecube, NES, Super Nintendo, 3DO*, Sega Saturn and TurboGrafx16/PC-Engine consoles
You don’t get 2600 but you could add in a 2600 PCB and solder it to the Cthulhu using one of their IMP switches.
Forum link: http://forums.shoryuken.com/discussion/46572?threads/t.46572/
[…] Creating the Multicon_Retro | Dave Nunez’s Blog via Hack a Day […]
i have a question:
the signal wire from the buttons are connected with the signal line on the controllers? does this make one controller create some interference on another? what i’m trying to say is, when i push the button to send the “A” command to the snes pcb, does it send the signal to the nes one as well? does this cause any problems?
That is correct – a button press will ground the signals on all three controllers. But remember that only one controller board (the one actually plugged in to a console) will be getting +5 volts, so only that circuit will be live. If this device had its own power supply it would be a different story (probably a bad story 🙂
[…] The parts are all off the shelf and the case is simple painted MDF. It is a fascinating read and has enough information in it that you would be able to reproduce it – if you had […]
[…] thought it would be a fun project, but complex, so I put it aside. Last year, while working on the MULTICON_Retro, I decided I was ready to give it a try. When I got my Makerbot Replicator 2 all the pieces were […]