This project has been on my to-do list like forever. Over the last years I acquired a couple of tools and now I have a somewhat decent workshop. The Raspi 3 is there and quite powerful enough to run MAME. I even saved an old TV from the dumpster and had it sitting on the shelves for ages. So it was like now or never.
I have a soft spot for 8-bit arcades. When I was a kid, maybe 13 or 14 (around 1980!), I was on a vacation with a good friend of the family. He was a truck driver and drove always from Germany to Italy and back. A trip usually took 4 to 5 days. So I was on a truck for a week, which felt really cool. We delivered some stuff to Bologna and a couple of more places. Then we drove back to Milan and we had to load arcade machines. I saw these for the first time. At least it felt like that. All machines where running. All coin doors were open! Somebody saw me standing in front of them with huge eyes and showed me how to trigger the switch to get credits for free. BAM! I was hooked.
I played Galaxian for 2 hours straight. As the truck was loaded and we had to leave, they had to peel me of the arcades!
The next couple of years I dumped a lot of coins (Deutsche Mark) into arcade machines and I got quite good at Galaga, BombJack and Gauntlet.
Then, ages later, I stumbled upon MAME, the Multi Arcade Machine Emulator and had fun digging up the old games. I even built a controller box to be able to play at least with proper joystick and buttons.
Then, 4 months ago I decided, that I should have all tools together, that are required to build a complete arcade cabinet. The required skills I would learn by doing, hopefully.
Galaga was always one of my top-5 most loved arcade games. I searched around for inspiration and maybe plans I could use. I found a quite promising one here and also dug up the artworks as SVGs. Looking at the plans and at the very steep stairs to my workshop in the basement, I decided to scale everything down to 4/5th of the original size. Smaller and lighter, easier to handle.
Tools and Parts
I had to buy a special slot cutter to cut the slot for the T-molding into the two side panels.
- Router, with station if possible
- Slot Cutter
- Jigsaw. Tablesaw is nice but not a must.
- Cordless drill
Parts listed here were used to build especially this cabinet. The Grundig TV set was used, because I had it sitting on the shelves for years and it fit the 4/5 down scaling nicely.
- ca. 3.5 m² of 12mm birch plywood (aka. Multiplex)
- ca. 8 m of black, 1/2 inch T-Molding
- Joystick and arcade buttons
- Coin door and coin acceptor
- An old TV set: Grundig P 37
- Glas plate (safety glass or ESG, Einscheibensicherheitsglas in german) as cover for the TV
- Cabinet art, printed on vinyl, done by CKS-Megaprint
- Raspberry Pi 3
- ControlBlock, a control cape for the Raspi to easily install joystick and buttons.
- Class D amplifier from Adafruit
- AV cable with 3.5mm jack
- Power supply for the Raspberry Pi, the more amps, the better
- Another power supply for the amplifier, 9V, 500ma
- LED strip, like this one.
All in all, it costs around 400 €, maybe less, depending how much of the parts you have already. Definitely not cheap, but for me absolutely worth it.
Here are two videos to show a bit of the work that went into the cabinet. These are not explicit how-to videos, they are not detailed enough for that. Still, you might get a hint on how to work on bits and pieces.
I decided to glue all pieces together, except the back of the cabinet. I would use screws to mount it. That works quite well until now.
While putting everything together, I noted that my TV didn’t stay on, if I kill the power and turn it back on again. It would go into stand-by. That was not an option because I wanted to have a main power switch that would turn off everything. That was solved with an IR-LED and an old Arduino diecimila, that was lying around. I dug up the right IR codes for my TV and programmed the Arduino with a modified version of IRDB’s code and used it as a kind of automated IR remote control.
After turning on the main power, the Arduino waits 5 seconds and sends the turn on code. Then, after another 5 seconds, it sends the channel down code, to switch the TV into AV mode. Works like a charm :)
Wiring up the ControlBlock was quite easy. Everything is well documented. One feature is extremely useful when using a Raspberry Pi. You can connect power to the ControlBlock and then have a switch, that controls the power for the Raspi. But instead of simply cutting off power while running and risking a corrupted file system, it initiates a proper “shut down” and powers off after that. So now I have two switches for my cabinet. To power it on, I switch the big green one on, that’s the main power switch. Then turn on the small red one, it provides power to the Raspi. To switch the cabinet off, simply reverse the order. First turn off the red one. It will shut down the Raspi. When the screen goes black completely, it is save to kill power with the green switch.
I used RetroPie 3.6 for my build. The installation went quite easy. I just downloaded pre-build images of the distribution and write that onto your SD-card.
Next I installed the ControlBlock, following these instructions. After the joystick and the buttons were working, I further configured RetroPie through its settings. There you could disable all unwanted emulators, making all the menus a bit cleaner. To transfer and backup configuration and ROMs, I used an USB-stick. That felt like the easiest way, even if the Raspi has Wifi on-board.
As the TV has to go in portrait mode into the cabinet, at least for Galaga, the display has to be rotated by 90°. There is one option to do that for the whole Raspi. I tried that and it worked fine, but unfortunately that resulted in bad performance in some games as the sound was really choppy. It got better, if I let the Raspi in normal orientation and made the rotation in Mame4all. That is the reason, why you see the boot up and game selection in wrong orientation but the game runs correct.
Of course, all this configuration and installation was done before installing everything in the cabinet!
There is a “no fire” cheat for Galaga. Actually, it’s not a cheat, it’s a bug. And if you wonder how it came to be, there is this fantastic detective story, Galaga No Fire Cheat by Chris Cantrell. A wonderful read if you love programming, reverse engineering and debugging.
And here is another gem, an interview with Yokoyama, one of the Galaga developers. This gives some very interesting insights in game development back then.
This was a fun build for me. If you drop a coin into the slot and the machine responds with the “one-credit-salute”, it’s like a time machine. Even while building and testing things out, I caught myself playing for a while. Even today these arcade games are attractive to many. They are easy to learn, difficult to master, a key ingredient for a compelling game.
I invited a couple of friends to celebrate the completion of the cab and we had great fun with a Galaga challenge and some beers. It performed flawless until the socket of joystick came loose, but that was easy to fix.
- More images at flickr
- My plan, scaled down to 4/5th, galaga-dxf.zip
- My plan, as PDF, galaga_plan.pdf
- Galaga at KLOV
- Original plans, full size, mspacman_eps.zip
- MAME, the Multi Arcade Machine Emulator
- RetroPie, the emulator distribution for Raspi
- ControlBlock, the control cape for the Raspi
- My first MAME controller: Tupperware Arcade Controls