Building a Tabletop Arcade Cabinet with RetroArch on RetroPi
Each year I get a crazy idea for a great gift for one of my family members. I do my best to get everyone in my family something they’ll like or appreciate, but usually there is one person that I think ‘Wow, this would be a great gift for them!’. This year it was my Dad. On a day that I got lost on the internet I found that there was such a thing as bartop arcade cabinet kits that take up a fraction of the space of normal arcade cabinets. My Dad has raved about getting a full-blown arcade machine for years but the progress on acquiring one has been slow. After carefully analyzing my budget for Q4 I decided I could just barely afford to build one.
The Cabinet Kit
I scrutinized consumer reviews on eBay and Amazon for pre-built cabinets and cabinet kits. I learned that most of the price difference in the kits was really only a difference of time and that most of these kits could be built by hand without a ton of parts. The number one provider of cabinet kits was clearly Game Room Solutions As I mentioned earlier, my budget was limited. But my time was as well, so I chose a kit that went together decently easily that wasn’t a total eyesore when it’s naked. I didn’t have the budget for decals.
I went with this cabinet set from Game Room Solutions and I was impressed by how heavy it was when it arrived. The kit included two player controls totaling 20 buttons and a cam-lock assembly system that required nothing more than a screwdriver to put together. It only took about 45 minutes to get it put together:
While the kit included options for decals, control plexiglass and a backlit marquee, I decided that it would work well enough without those particular bells and whistles. Remember, I was on a budget. That’s all I was able to do on it for several days, as finals were fast approaching.
Buttons and Trim
One of the noticeably missing components of the above build is the arcade-style trip that lines the edges of the wood. It turns out that you can buy this stuff straight from the suppliers! I ended up getting 20 feet of the 3/4″ Orange molding from t-molding.com. I only expected to use about half of it, but I ended up using about 17 feet of the 20. I applied it to the pre-cut grooves in the side of the box using a sock-covered hammer as a makeshift mallet to get it into place. For the curves and edges I cut the inner part of the molding to let it bend more easily. Applying the molding took about an hour by itself, but it looked really great when it was done!
The buttons were a different experience entirely. Given that all you have for the button assembly is a positive and negative lead for the light and two toggle leads for the signal, there ended up being 80 cables to hook up on the buttons alone. The joysticks are composed of 4 buttons as well, but have no lights. The total number of cables came out to 96, and that took me several hours to get finished:
I hooked up the lights in parallel in the best space-saving fashion I could, but there was surprisingly little space to work with. I began to doubt my ability to get everything into this cabinet.
Monitor, Plexiglass and Button Lights
Part of what made this build so much less expensive than traditional builds was the fact that I already had a monitor that would fit the usable area of the machine. It was a gift from an old coworker from making some OS install scripts for him. It mounted really easily. Kudos to Game Room Solutions, because the wood backing of the cabinet kit monitor mount had grooves cut that allowed you to use the existing monitor mount on the back of the screen with the cabinet. I had to make a trip to Lowes for some longer mounting screws and washers, but once it was on it fit like a glove!
I assumed that cutting and installing the plexiglass would be equally as simple. By dismal amount of research on plexiglass gave me the impression that it was mostly plastic and could be cut with a knife.
Guys, don’t try to cut plexiglass with a knife. It turns out it’s not plastic, it does shatter, and the shards can be tiny. I was able to make enough of a cut with my box cutter on both sides that when the piece I needed snapped off the cut was more or less straight. But the rest of the plexiglass was worthless, and I didn’t have the budget for another $15 pane.
On a lighter note, the lighting for the buttons worked as soon as I plugged them in! I wired the array straight to a 12v power source and they shined like the rising sun!
When I got over my excitement about the buttons working on the first try, I realized that 12v might have been a little too much voltage for the array. Here’s a photo of the cabinet in the dark, and you can see that the buttons outshine the monitor!
This is a problem I would solve later, I thought. I think that a lot.
Hooking up Speakers
My budget for this project was growing thin as this point and I didn’t want to heavily invest in a sound system for a box that would spend most of it’s time playing 8 or 16 bit MIDI beeps. I got really luck on a trip to DI and picked up a PC Speaker set from 1999 in excellent condition for $5. After tearing that puppy up I soldered on longer wire lengths to get the speakers up into the speaker box in the top of the cabinet. I also noticed that the speakers ran on 12v, so I hooked the button lighting on to that circuit as well. Why shouldn’t the button lights dim when it beeps??
After verifying that the speakers were mounted and playing sound beautifully, it was time to move on to the heart of the project: the raspberry pi and RetroArch.
Raspberry Pi, RetroArch and RetroPi
Originally I was going to use a Raspberry Pi Zero for the backend of the cabinet and have it run RetroPi, a pre-built Raspbian distribution with RetroArch and several emulators already installed. The great thing about RetroArch is that you can emulate several systems, or rather you can interface with several emulators, through a single pane of glass. The frontend for RetroArch is customizable, so you can use one interface to play Doom, Super Mario 64, or Donkey Kong. RetroPi’s default RetroArch frontend is EmulationStation, a great frontend with support for external ROM assets and automatic cover pulling.
One problem with the Pi Zero that I began to see late in the development of the cabinet was it’s lack of USB ports. I knew I would need one port ot power the Pi and another to hook into the controls, but that meant that the only interface for storage would be the SD card. Now you can get high capacity micro SD cards from Best Buy or Amazon, and if that’s in your budget I’d go for it, but I really wanted the storage to be easily upgraded as the assets for games increased in size. I learned about Attract Mode with only a few weeks left until Christmas, and if I couldn’t get it working with my current hardware I wanted it to be upgradable to the system in the future (I couldn’t get it working before Christmas).
I ended up sacrificing my Raspberry Pi 3 B to enable USB storage and stuck a flash drive in for the initial ROM set. I then say that I had some extra USB ports and decided to wire those to the button lights. The 5v USB power turned out to be perfect for the 20 buttons, and it made it so the lights turned off with the Pi.
Getting the Pi buttons set up was tricky. Although the Xin-Mo Dual USB controller for the buttons was straightforward and most of the buttons worked out of the box, both joysticks mapped as one joystick. I had to add
usbhid.quirks=0x16c0:0x05e1:0x040 to the end of
/boot/cmdline.txt to get the joysticks freed from each other.
After that setup was pretty straightforward. RetroPi has several SMB shares that make transferring ROMs over the network a breeze, and configuring controls for each core wasn’t hard either.
Well it was only a few days until Christmas and I hadn’t even started the Marquee yet. I had to make the drive home so I packed up the project and made my way back to Idaho. My angelic mother had some great ideas for a temporary marquee that wouldn’t be an eyesore until a real marquee got put into place. I took apart a $3 wreath-light LED set and wired it to the USB cable that was powering the buttons. It turned out to be way too bright for a marquee, so a trip to Radioshack was needed to get a resistor that could bring it down. I tore apart the defuser from an old laptop screen for the front, but I probably would have been better off with a translucent piece of plastic. It ended up looking OK, and fit conveniently on the living room corner desk.
My Dad absolutely loved the cabinet and it was his favorite topic of conversation for the rest of the holiday. He already has plans to upgrade it from it’s base-model status with several new features, including decals and a real marquee. I plan on helping him get Attract Mode working on it, because it’s got some excellent themes. While it was a lot of fun to build, I’m not a big enough fan of the control system to favor it over an old-fashioned PC and keyboard, so I think this might be my last build for a while. It was a blast to make and I’d love to answer any questions you might have about it.