The tale of an Arcade Joystick & Cabinet

Actually this project is the result of a weird ‘old-parts cleanup strategy’, in the following writeup you will see how a small idea and a bunch of stuff came together in this arcade cabinet.


Arcade Keyboard

I already had plans to make an old-skool (but USB) game controller for the retro gaming I occasionaly do on the computer. It doesn’t matter if it’s ‘Pacman’, ‘Athletic Land, ‘Last blade’ or ‘Metal Slug’,… those classic games just play better with a clicky fire button and a sturdy joystick at hand instead of an ALT, CMD, Spacebar and weeny cursors. You should agree this is something we should educate our kids with.

But my first steps to interfacing an (Arcade) joystick to the PC was a USB keyboard adaptation. I took an old USB keyboard I had and fiddled out at the PCB connector which signals were shorted when spacebar or cursor buttons were pressed. Then I added an Arduino type board (in this case it was a Moteino, but a Teensy would also work great) to the keyboard which would get input from a DB9-pin Arcade joystick connector and translate these signals to shorten these pins on the PCB connector by means of a dual CD4066 IC (wich are actually switches in a chip)
This worked pretty good – but the troubles began when you would move the joystick diagonally, shorting different rows and columns, resulting in undesired effects. I could have probably solved that by rewiring the CD4066 ICs but then again; If I wanted to add more buttons to e.g. emulate a SNES controller or for more complex MAME games – that would mean quite some wiring.
So – that combined with the availability of ready made SNES USB controllers concluded this experiment: Arcade joystick would be fine but for the game consoles which came out in the 90s it would not suffice.
I do think it would be a great idea for companies like Logitech to bring out a keyboard with two DB9-connector on the back though. This type of connector was widely used on Commodore 64, ATARI, MSX, and Amiga joysticks so it would mean a simple solution for the occasional retrogamers amongst us.

Moteino and 4066 ICsDB9 Joystick connector


Rear sticker appliedMy son had a few blasts with this Arcade joystick setup, which was proof for me that if would I ever want him to play some classic arcades I’d have to continue with the joystick thing. In the aftermath of this experiment I though about using the Teensy to emulate a joystick but at that time I also discovered the Arcade joystick USB kits on Ebay.
I’m a tinkerer but; Time is not on my side and these USB boards were available together with joysticks, buttons, the works. It would cost me a multitude of money and time to collect all that myself.
I decided to buy a set from Ultracabs which I found via Ebay. It was the infamous Xin-Mo dual USB controller with a bunch of cables and a load of buttons. Enough to start experimenting.
In the meantime I started collecting pictures of controllers which I liked and took the Metal Slug cabinet as an example. In my opinion Neo-Geo ruled the arcade hall. Amongst the older classics, Metal Slug is a game I definitely would want to play on this setup and it’s 4-firebutton set on this cabinet would prove enough for most type of games I could think of. Nevertheless – to comply with pinball type of games (I love ‘Battle Pinball’ on the SNES) I added some extra buttons on the side.



Holes drilledConnecting pinsFittingFirst assemblySandingClean basePi and XinPi breakout boardBreakout board fitmentTransfers are inTransfer sticker appliedUSB / Pi switchSalvaged USB connectorUSB and switchInternalsThe Xin-Mo


1st Test runI figured retrogaming on my laptop would improve with this joystick-project but to complete that retro-experience I would like to see those games on a real CRT TV screen too. My laptop (Macbook Pro) did not have a Composite Video output so to make this happen I did already did some emulation tests on the Raspberry Pi.
The Pi has CVBS out so I could just connect it to a Sony Trinitron I had laying around (collecting dust and taking up space) with RCA plugs for video and audio. With a CVBS connection like this you don’t need a processor-consuming algorithm to dirty-up the image with scanlines and noise; It’s already there!

This worked great. Altough the Raspberry Pi is a bit underpowered for MAME at times overall emulation was pretty good. I tried and installed all kinds of emulators MAME, SNES,MSX and ended up using an image called ‘UltraSlim‘ This image has the best classic machines on it with a nice selection menu AND – you can also watch movies and listen to music with XBMC.
My plan was to embed the Raspberry Pi inside the joystick bar and make a switch on it so I could use it as a standalone emulation machine (Raspberry Pi doing the emulation and sending it to the TV) or disable the RPi inside and just connect the Xin-Mo to a laptop and game from there.





Christmas timeNow this all worked out very nice. It was fun playing with it, setting it up behind the TV. The kids could play together without evading each others fingers on a PC-keyboard.
However – you don’t play classic games all the time and meanwhile that old TV was taking up a lot of space. My wife started to notice ‘that old thing’, suggesting we should throw it away. Bummer – This TV was indeed old and clunky but I could not part with it yet.
My solution was building the whole Neo-Geo cabinet around it. It would take up even more space but I figured we could put all the other game stuff away in the lower part, it would be something like a deluxe-game-storage-tv-box.
I had to do quite some convincing. I had to promise the cabinet would be clean and neat and assured her we could even put it in the living room without being ashamed of this excessive project I had taken on and finally she agreed. True love.

I made the cabinet in a way that I could slide the already completed joystick assembly in it, connecting the RPi’s voltage and Video/Audio connectors all in one. The switch on the back of the joystick would be pressed, setting it in ‘standalone’-mode and complete the TV-set. The dimensions I used were an approximate from the real thing. I designed it in such a way that I could cut it out from a standard 120x240mm MDF plates. The separate joystick assembly I had would provide the extra centimeters to complete the side-view of the cabinet.
After that, the finishing touch; The whole thing would only be convincing with some proper logo’s on it. I traced the logo’s I could find on the internet and made some cutout stickers at an online printshop. You can view the templates here:

First cutsInitial shapePutting it togetherLower part assembledAssembly testTrinitron fitmentFresh paint. Red.IMG_4402The detail that countsCustom connector at cabinetUSB and Pi breakout connectorConnectingConnected to the cabinetInstalledTest run 2


All and all the thing worked out pretty good. Looking at the cabinet it shows that the Trinitron is a bit of an odd duck. I might put a custom faceplate on it in a later stage but for now it also remembers me how this whole thing came to life.

adminThe tale of an Arcade Joystick & Cabinet

Leave a Reply

Your email address will not be published. Required fields are marked *

8 + one =