Intro: Legend of Zelda Bartop Arcade Cabinet
I've always wanted my own arcade cabinet. One of my dreams is to own an arcade at some point. After diving into the realm of Raspberry Pi-based emulation for a previous project, I decided I would take it up a notch and build a bartop arcade cabinet. I'm glad I did, because the final build exceeded my expectations by far!
The cabinet itself was constructed by me and my dad from a sheet of plywood, but if I were to do this again I would pick a better material. Don't get me wrong - it looks good - but the grain of the plywood is unappealing to me (not a huge deal with full coverage graphics) and drilling holes was more trouble than any other part of the project. That being said, for the price and weight it makes a lot of sense.
The software is run through a RetroPie Pi image using the Emulation Station frontend, run on a Raspberry Pi 2.
The audio is routed through a usb audio adapter (fixed a distortion bug with the Pi,) into an amplifier, routed to a set of Kicker DSC35's with the volume controlled by a 1k potentiometer. The amplifier is powered by one of the 12v 5a 60w power supplies.
The video is sent from the Pi to a 19" computer monitor with an HDMI > DVI cable.
The main LED buttons are powered through the USB encoder board that came with the kit, and the marquee LED strips and 12v triangle LED buttons are powered through the barrel jack with one of the 12v 5a 60w power supplies.
Step 1: Parts
- 4' x 8' x 5/8" sheet of wood of choice
- 20" x 15" of plexiglass
- Raspberry Pi 2
- USB audio adapter
- 20W class D amplifier
- Pair of Kicker DSC35 speakers
- 1k potentiometer
- Potentiometer knob
- 19" computer monitor w/ DVI input
- HDMI > DVI cable
- Half-sized breadboard
- 128GB USB thumb drive (Don't buy a cheap one. Seriously. Don't buy a cheap one. It will fail and you will be pissed.)
- 1/8" > 1/8" stereo audio cable
- USB Encoder, Joysticks and 20 LED buttons
- P1 & P2 buttons
- Triangle LED buttons
- Warm white 5050 SMD LED strip
- Aluminum foil tape
- Power strip
- 12v 5a 60w power supply (x2)
- 2.1mm barrel jack
- Speaker wire
- Extension cable wire
- Repurposed tacky shelf
Step 2: Initial Design
I found this cabinet plan online on this site. It's kind of unclear what piece is what, but figuring that out wasn't incredibly hard. I labeled the pieces in the attached image for reference. It should be noted that I nixed the keyboard tray, so the front panel where that would have been is just one piece.
I wanted to do full coverage decals, so I made the attached mockup in Photoshop. I had the sides, bezel and control board printed on gloss vinyl decal material at a local print shop. I had the same shop reverse print the marquee graphic onto the plexiglass piece used for the marquee, which worked out really well. It allows the light from the LEDs to shine through the graphic without issue and with enough diffusion to not get any light pinpoints from the LEDs.
A note on the control board graphic - if you want a piece of plexiglass over the wood, I would reverse print the graphic on it instead of getting a decal. After I installed the LED buttons, the areas of the plexiglass that weren't pressed against the wood looked as air bubbles in the light from the buttons. So I skipped the plexiglass on the control board altogether until I have the graphic reprinted on the original piece that was cut and drilled.
Why are there 11 buttons for each player? This setup will allow for a full N64 controller button layout. You can get away less buttons if you aren't running N64. PS1 and MAME will be the next largest setups of buttons, with PS1 using 10 each and MAME using up to 8 each. To be fair, the N64 emulation on the Pi is a little sketchy, so unless you want to play around with backend settings over and over and over...you might want to skip that thought completely.
Step 3: Prototyping
I used a half-sized breadboard to get all of my random power connections in one place. The original idea was to have both the amplifier and the LEDs powered off the same supply, but the 12v 5a 60w power supply I had seemed to cause static in the audio with everything powered, so I ended up letting the amplifier and the LEDs have their own independent power supplies (hence the two different breadboard setups in the pics.) The static went away, but I think I'm probably missing a basic principal of electricity that would have allowed for one PSU to work here.
That being said, my buddy suggested an ATX power supply that pushed varying voltages. A proper sized one would allow for everything (the monitor, the PI, the amp and the LEDs) to be powered off of one unit. I already had power supplies laying around and a power strip so I didn't mind going the power management route I took for this build. Future builds of something like this for me will definitely use the ATX supply method.
I created a pseudo control board out of a cardboard box to test the functionality of the buttons and work with the programming of the button config for the Pi.
Step 4: Cutting the Pieces
Outlines were drawn on the plywood sheet and each piece was cut out by hand with a jigsaw. The plans from the previous step show the size of all the rectangular pieces.
The sides are a little tricky to measure out properly, so I redrew them in Illustrator and printed full size outlines to use as a stencil. I also did this for the monitor bezel as I needed the window to be a specific size and location for the monitor and the decal to line up properly, as well as the button holes for the control board (PDF files attached.)
The sides and monitor bezel were printed on 24"x36" sheets of the cheapest paper they had, and the control board was printed on an 18"x24" sheet. **Definitely measure your own monitor and design of your bezel graphic in relation to your own project and adjust the stencil window as your design may well be different**
I added lines down the sides of the sheets every inch to be able to measure the print to make sure the printer didn't adjust the size of the image. If you print stencils at Kinkos or Office Depot or wherever, make sure you tell them to not let their printer or program scale the image. It is a stencil, so you need it at exact size.
Cut pieces were sanded until smooth. Make sure you sand the heck out of any pieces you are going to apply decals to. You want them to be smooth so there is a nice surface for the decals to adhere to.
Plexiglass was cut to use for the marquee and the control board. Another piece would have been nice for the monitor bezel, but poor planning on my part made that a super hassle. Drilling holes for the speakers through the plexiglass and the monitor bezel at the same time would have been nice.
Step 5: Assembly
First we attached the marquee boards to the monitor bezel with wood glue and then secured with screws from behind the bezel. After we had a good idea about the remaining space available on the bezel, we put another stencil down for speaker holes. Most would put the speakers up in the marquee facing down, but I really liked the sound projection better with the speakers pointed at me. I put nail holes into each hole on the stencil and then when back with a drill and made the final holes.
Next we needed to get the middle pieces to attach to the sides. We created a bunch of braces with some scrap 1"x1" strips of pine from a previous project. These braces were affixed to the monitor bezel/marquee section, the control board and the front piece with wood glue and secured with wood screws.
Going off only the picture in the initial plans, we decided where everything should sit through trial and error, laying the bezel/marquee section along with the front section and control board against one side section until they fit right. At that point we traced around the braces on the side section, then removed the pieces and drilled pilot holes where the braces would sit.
We then put the pieces back on the side section with wood glue and used wood screws to secure them to the side. After the pieces were connected to one side, we laid the other side on top and adjusted until it lined up with the other side. The same technique of tracing the braces was used, pilot holes were drilled, wood glue and wood screws were used to connect the side.
The back section was attached with hinges on the bottom of the cabinet and secured closed with a latch on the top to provide access to the internals for maintenance.
Step 6: Painting
Everything was spray-painted black and 2 coats of polyurethane were applied. I sanded with steel wool between coats to give it a nice finish.
Step 7: Decal Application
I was waiting for this step the entire build. The cabinet looked cool by itself, but the decals really take it to the next level.
Applying decals is tedious work. If it's not for you then you are probably doing it carelessly. Take your time because you want all the sweet art you made to line up properly. I find it easiest to start from one side and work towards the other side slowly, making sure no bubbles are forming as you press the decal flat. **Make sure you print your decals with enough bleed to give you a little wiggle room in case it isn't lining up perfectly**
I cut the monitor window and speaker holes out with an Xacto knife. The speaker holes are cleaner than the pic above - just had to take some extra time and trim super carefully.
Step 8: Marquee Creation
Aluminum foil tape was used to get a nice uniform light disbursement inside the marquee area. I used 2 strips of 5050 SMD warm white LEDs to light the marquee. I tried cool white, but with the earth tones in the decal art the warm white looked way better.
I installed the 1k pot in the base of the marquee for easily accessible volume control. I used a 3-prong servo connecter for a quick disconnect on the other end of the wiring.
Step 9: Speaker Installation
The speakers were added to the back of the monitor bezel with bolts and wire run to the base of the cabinet.
Step 10: Attaching the Monitor
If the monitor you bought has mounting holes on the back of it, they can be used with a strip of wood across the back of the monitor.
Mine didn't have them, so I disassembled the monitor and pulled the LCD and attached casing. Because the edge of the actual LCD was metal, I covered the edge with black electrical tape prior to mounting for aesthetics.
Using the 1"x1" pine scraps from before, we created a frame for the monitor to sit in. I wasn't thinking about it at the time, but I would rout a channel for the lip of the monitor to sit in to get it more flush with the front of the machine next time.
Step 11: PCB Shelf
I found the tackiest duck shelf at a thrift store for $1. I cut the top off and made a little shelf for the Pi and the breadboard. I used standoffs from the hardware store to elevate the boards. I secured the shelf into the cabinet with screws from underneath.
Step 12: Control Board and Front
Using the stencil, holes were drilled with a drill press for the buttons and joysticks. Channels in the underside were routed for the joysticks to set in, as well as sections of the braces to allow for the ridiculous amount of buttons in such a small space. The holes for the front triforce were drilled at this time also.
I applied the control board decal after the holes were drilled and hand cut the holes in the vinyl with an Xacto knife. All buttons were then attached and the wiring connected to the USB Encoder. The triangle buttons were installed on the front section while the control board was out, then everything put back together.
**UPDATE** I had someone inquire about keeping the LED buttons on all the time. I've included a pic that shows the rewiring for the set I purchased. Note: this might not be the same for your buttons...
Step 13: Hooking It All Up
Now that everything was installed and wired, it was time to hook everything up.
On the breadboard, the leads for the LEDs in the marquee and the triangle buttons all run to the same power bank, connected to a 2.1mm barrel jack. I used 2-prong connectors for a quick disconnect on the breadboard side.
The triangle buttons are all wired into the same button (not pictured except for in the schematic) so that pressing any of them has the same effect - in this case exiting a game back to Emulation Station. This was also done with a set of quick disconnects.
The amplifier has both speakers, a 12v 5a power supply, the potentiometer and the 1/8" audio cable running into it.
The Pi has both USB encoders running into it, as well as the USB stick running the software and the USB audio adapter. The video is hooked up from the HDMI-out on the Pi to the DVI-in on the monitor.
In order to have a switch on the outside of the cabinet that would shut everything off, I removed the switch from the power strip and mounted it in the back cover. A C14 plug with a switch would have been a better solution here.
Step 14: Software Side
I wrote an Instructable earlier this year called Piulator that outlines the process around installing and modifying the software on the Pi. It can be located here.
A few things to note that are different than my portable build:
- I am running the RetroPie image off of a USB stick instead of an SD card. You can find a great tutorial on that here.
- The Pi 2 image is different than the B+ version. Make sure you download the right one for your system.
Like my previous build, I created a theme for Emulation Station with Photoshop and Dreamweaver. You can find the guide I wrote for theme building in the Piulator Instructable.
If you have specific questions on the software side of this, check out the Pet Rock Blog forums. If you have a question, there is likely an answer on there.
Step 15: Conclusion
This was really fun to put together and even more fun to play!
Changes I would make moving forward:
- A more sturdy building material, although I really like the weight of the cabinet with the plywood
- Reverse printing on control board plexiglass
- Plexiglass monitor cover
- ATX power supply
- C14 jack with on/off switch instead of modified power strip