Donkey Kong Bartop Arcade Powered By RPi
This New Year’s Eve we were in the basement of my friend’s house. My 15 year old son and I had brought the 16 inch tall Donkey Kong Bartop Arcade machine we made together to share it. While the kids played the classics for the first time from decades ago, over the familiar sounds of Galaga, Pac-Man, Donkey-Kong and others, the adults shared stories about the local arcade at the mall where we all used go.
Questions popped in. “You made that?” “Would you make me one?” Sorry, we won’t do that, but we will show you what we did to design and build ours so you can design and build your own.
Step 1: Prepare Yourself To Go Back To The 80’s
Close your eyes and imagine you are a less-than-computer literate version of Matthew Broderick sitting in front of a 1980s computer trying to figure out the command line and password you need to type after the blinking cursor to get WOPR to play a game. That’s the feeling we got when I first turned on our new Raspberry Pi, the pocket-sized computer that will drive the arcade, and, at the beginning, drive you crazy.
So ironically, to even get to the point of being able to play 1980’s arcade games, we were going to have to learn and be comfortable with learning some command lines, just like I did in the 80’s. And along the way, my son and I got to reenact moments from a few of my favorite 80’s movies.
Step 2: Materials and Tools
To get you in the appropriate mood, dress like your high school stereotype from “The Breakfast Club.”
Assorted Rulers and Square Head Protractor
Raspberry Pi Model B – from The Pi Hut
16 Gig SD card, installed with PiMAME
Micro USB Power Supply (for Pi)
7″ TFT LCD Display (includes its own board) – eBay
12 Volt 2A Power Supply (for LCD)
Computer Speakers (powered and with controls)
LED USB Book Light (powered by USB)
USB Hub (not needed if you use Raspberry Pi B+)
Nano USB Adapter (for WiFi connection)
2 USB Panel Mount Cables – from Adafruit
Arcade Joystick – from Groovy Game Gear
Arcade Buttons (1 blue, 1 orange, 2 black, Player One, Lighted Coin Button) – from Groovy Game Gear.
Power Strip with Surge Protector
GPIO Pin Wires (use individual wires in a variety of colors to make connections easy)
Electrical Connectors (Quick Disconnects, etc)
CNC Router (or a jigsaw would work)
Drill, Drill Press and Bits
Router, Router Table and Bits
Rotary Tool and Bits
Electric Palm Sander
Small Hobby Saw and Mitre Box
Knife, Scissors, Etc.
3/4″ MDF coated in Black Melamine
Spray primer, paint and clear coat (the best quality we could find)
T-Moulding – from T-moulding.com
Glass (SS, cut and smoothed edges)
Scrap Clear Plastic
Color Laser Printer
Full Sheet Label Paper (side artwork and bezel only)
Plastic Laminate (for control panel only)
Step 3: Get To Know Raspberry Pi
We started in the summer. The first thing we did was buy a Raspberry Pi Model B (the new and improved B+ had not been released yet). We also bought some bare essentials to get it up and running: a 16 Gig SD card with PiMAME pre-installed on it (it is now called PiPlay), a micro USB power supply cord for the Pi and a nano USB adapter for WiFi. Although not necessary, we bought a case.
When our Raspberry Pi arrived, we connected her to an old monitor, keyboard and mouse.
Then, just like Lloyd Dobler in the 1989 movie “Say Anything,” I spent my free time over the summer learning everything about her and trying to gain her affection. Here are some highlights from our summer together (These are the 7 steps you should also go through if you want a portrait arcade similar to ours):
1. She has no on or off button, but there are a few different ways to add one. In the beginning, to power it on, just plug it into a power strip and use the button on the power strip as your switch. To reboot type “sudo reboot” and to power off, type “sudo halt” and wait until it is finished before powering off (at least that’s the safest way).
2. The default screen orientation is “landscape.” We switched ours to “portrait” so we could better emulate the games we wanted to play most. We followed these instructions.
3. After about a month with the old monitor, we bought a 7 inch TFT LCD monitor from eBay. It comes with its own board but without the required power supply or HDMI cable. For instructions on how to connect it, we watched a silent movie on YouTube.
4. With the Nano USB adapter, she has WiFi. For instructions on how to get her to give you her IP address (so you can talk to her from another computer), try this.
5. Of the game emulators that came with PiMAME, the one we liked best is called “MAME4All.” After she gave us her her IP address, to install games (ROMs) onto the SD card of the Pi, we did not have to remove the SD card. Instead, we connected with Pi from our desktop computer using her IP address and uploaded games from there. Here are more specific directions.
6. We tested all of the games we uploaded on the Pi. We kept only those that worked, required no more than two buttons to play and looked appropriate for a portrait screen orientation. We deleted all of the rest. We didn’t want the arcade set up to play anything beyond what it looked fantastic doing. At this point, we were playing the games with the keyboard. The arrow buttons are your joystick controls, left control is the A button, left alt is the B button, 5 is the coin/credit button and 1 is the player one button. Esc will exit the game and Enter will select a game.
7. Finally, we were ready to purchase all of the arcade controls and buttons. We deliberately chose to use to full-sized arcade controls to try to keep the arcade as familiar as possible to the classics. We purchased everything we needed from Groovy Game Gear. To connect the controls, we installed Retrogame on the Pi and followed the instructions here. Note that in those instructions you can go with the defaults or customize the controls. By default, it only has directional controls, the A button and the B button. We customized the pin/key table in the retrogame.c file to add “Esc” “Select” “Coin” and “Player 1” to the default list. By doing this, we eliminated the need to use a keyboard entirely for any needed function. The 4th photo shows how we customized that configuration file in Retrogame. If you like it, when you get to that step in the instructions, just edit the text in your retrogame.c file to match ours and save. So you don’t have to read my handwriting, we prepared our own clean diagram in the 5th photo which shows how we connected our controls to the GPIO pins (it is important that you follow this if you plan to modify the retrogame.c file in the same manner we did: in other words, they are a matched set).
So my advice would be to use a project board and add things to it as you go. Maybe you do not need to play Peter Gabriel songs for her like I did, but you should get to know Raspberry Pi well enough to make sure everything works exactly like you want before you take it to the next step.
Step 4: Measure Critical Components and Angles
Before we made a 3D design of our cabinet, we needed to measure the components. Also, to make the arcade comfortable, we experimented with angles and heights for the control panel where the joystick and buttons would be installed.
One of the aspects that would make our design unique from most others (and add to the Donkey Kong theme) was to set the monitor back inside a dark box and behind glass. This 3D design choice, especially on a small arcade, presented the surprisingly difficult challenge of creating the best line of sight to the screen for people of all ages. We took a number of measurements to reach a decision on the optimal angle for the LCD screen, the size of the box, and the angle and position of the glass. I drew these angles out on a piece of paper and took it to my son’s room for the next step.
Step 5: Design the Cabinet
We designed the arcade using Autodesk Inventor. Posted are screenshots of the 3D rendering we did as part of the original plans, not the final ones (see Step 7 for our modifications).
Some of our design goals:
This arcade was never meant to be a prop from “Honey I Shrunk the Kids.” With full sized controls and buttons, we weren’t interested in keeping things to scale. With full-size controls, the design seemed to look better as we exaggerated its curves and angles.
Consistent with this, we decided to keep materials bulky and heavy looking, using 3/4″ thick MDF for many of the outer materials, and 1/4″ pressboard for internal panels. The physical weight also would keep the arcade rock solid and in place during play. We were not at all interested in it being light weight.
We also wanted to keep the number of buttons on the front to a bare minimum. Unlike most MAME arcades we’ve seen, we designed the cabinet so that the select and exit buttons would be on the back. This encourages people to play the game displayed rather than switch every 30 seconds. Arcades of the 80’s were about getting the high score, and nobody is ever going to try to beat the high score if the game gets switched all the time.
The power switch and volume controls were also located on the back for aesthetic reasons. Other relatively unique features we added included a headphone jack (for silent game play) and two USB ports (for a keyboard and mouse should a need arise to reconfigure the Pi).
Since it would be sitting on a bartop, we also wanted it to look good from the back. So instead of putting a door there, we decided to make it accessible from the bottom only. From the bottom, every component to the arcade can be accessed, repaired or replaced should a problem arise. Even the monitor/bezel and the front glass can be removed.
For more detail: Donkey Kong Bartop Arcade Powered By RPi