Raspberry Pi Powered Bar-top Arcade Machine





Introduction: Raspberry Pi Powered Bar-top Arcade Machine

Remix Contest

Second Prize in the
Remix Contest

I was browsing Instructables when i came across rbates4 and his Raspberry Pi powered arcade machine. https://www.instructables.com/id/Build-your-own-Min...

I figured hey I have a spare DVI monitor, an X-arcade
stick and a desire to tinker with the Raspberry Pi microcomputer. I am going to have to build an arcade machine. Unfortunately I do not have access to a whiz bang fancy laser cutter, or anything larger then hand tools so the little acrylic or light ply machines are right out. To appease Mrs. TinkerGNome, The arcade machine needed to be smaller than a full size cabinet but large enough for 2 players due to the width of the control stick. Those requirements and the availability of preexisting parts the format was either a cocktail or a bar top. I went with a bar top cabinet as it could be portable if we so desired, and it can be put up out of the way.

My love of arcade machines started when I was a small child of about 4 or 5. I was playing a new “Joust” machine at Ron’s Roller Rink circa 1982. As I was 4 I can’t remember the specifics however I was apparently very good. My mother states that I had the highest score that anyone had ever seen and that I turned that one quarter into several hours of entertainment. I just remember the owner of the roller rink giving me a pair of blue roller-skates. Apparently he felt bad about turning off the machine as they were closing. It is time to pass these classics on to Arthur. That and I am still mourning the Asteroids machine my exwife made me get rid of.

Components pulled from my spare parts shelves

· 19" LCD monitor (recapped and missing power supply)

· X-arcade Joystick

· ATX power supply

· D-Link DWL 801+ wireless bridge

· 2 Speakers

· Negative scanner light assembly

· Misc. bits and pieces.

Stuff I needed to buy

· Purchased 4x melamine shelves $5 each from Menards

· 8x 2 inch right angle brackets + screws $2 a 2 pack from Menards

· 4x 3 inch right angle brackets + screws $3 a 2 pack from Menards

· Hole saw kit $9 Harborfreight

· Raspberry Pi B+ $40 Amazon

· 3w 2 channel amplifier $5 Sainsmart

· HDMI cable 1.5ft. $2 Monoprice

· HDMI to DVI adapter $3 Monoprice

Tools used in no particular order: Handsaw, Philips screwdrivers, Dremel, Ruler, soldering Iron & gun, de-soldering braid, solder, zip ties, staple gun, drill, ruler, tape measure, multi-meter, wire cutters, crimpers, knife, “Gorilla Glue”, hole saw kit, drill bits, “Sharpie” marker, vacuum cleaner, Straight edge, tape measure, & an angle finder.

Now for my standard disclaimer WARNING ELECTRICITY, SHARP OBJECTS, DO THIS AT YOUR OWN RISK: If you drill into your leg (table, hand, arm, etc...) or shock/electrocute yourself, burn down your house (shop, dog, garage, etc...) or make something that forces the wife to blow a gasket, I cannot be liable as there is inherent risk in life.

On to Step 1, Planning layout and fix that monitor.

Step 1: Planning Layout and Converting the Monitor for the ATX Powersupply

I used a 19” 4:3 planar monitor specifically because about 10 years ago the company I work for bought several hundred to replace power hungry CRTs. About 2 years ago they are started to fail, when they fail our policy is to replace and recycle the failed monitor. That is exactly what I did replaced it with a new one and pulled it aside to "recycle it" into an arcade machine. (with permission cause stealing is bad)

This particular monitor had one bad capacitor that was leaking and was missing its power supply there was a post it stating that the VGA side was bad but there was nothing noted on the DVI side…Unfortunately I did not get a picture of recapping the monitor controller as I only have 2 hands. I am of the belief that all of our problems with electronic components have to do with capacitors. They leak then the thing just starts acting odd.

As the power supply with this monitor had that burnt out smell. I obtained a known working one to find out the pin outs. The 2 towards the front wound up being ground, and the 2 towards the back are +12v. Hey and may as well check out the monitor to ensure that I am not wasting my time. it at least powered on so bully for me.

To maintain the modular nature of its power and as my PSU was a standard ATX computer power supply. As luck would behold I found a old CPU 4 pin Molex cable. This particular cable was to provide additional 12v power to the CPU, back when the P4 was the brand new processor. Now it is going to provide 12v to my monitor.

I clipped off the 2x2 end resulted in 4 wires that needed to be turned into pins. I tried jamming the twisted wire into the sockets but it kept splaying out. I wound up using my soldering gun to tin the ends with solder to keep them from fraying.

I took a leap of faith jammed those into the socket, hooked my bench top power supply up kept the fire extinguisher handy and Plugged the power supply in and used a yard stick to flip on my power strip ...Hey no sparks and it works. Time to secure this kludge, I applied a generous glob of hot glue to help keep the wires from falling out of the socket, and provide a bit of electrical insulation.

The cabinet is all built around the monitor that you choose. Measure the outer dimensions of your monitor bezel and get a helper to have you figure out angles and positioning. My cabinet design uses as few cuts as possible to prevent refinishing the prefinished boards.

I used a piece of foam-core that I had laying around and sketched out a rough side template. I figured out an aesthetically pleasing height for the bottom edge of the monitor, whilst ensuring that it cleared the rear edge of controller assembly. The angle of tilt was chosen by what would look decent either seated or standing at bar height. Then I basically threw that design out the window but retained the angles found to lay out brackets in a 1:1 on the cabinet sides.

As you can tell the design of the side panels have been modified to a solid rectangle from the initial Jamma style cabinet design however the dimensions remained roughly the same.

Now onto step 2 building a case around the monitor...

Step 2: Building the Cabinet.

What makes an arcade game?

People have been playing video games at home for almost 40 years. However the feeling of a MDF cabinet with the lights and sounds of these machines just cannot be compared to. So I offer that it is the housing and controls that make an arcade game. OK enough of the old guy reminiscing here I am going to show you how I built my cabinet.

The first step I did was to take measurements of the two largest components, the joystick and the monitor. Cramming a Pi and a PSU into a box is the easy part. Adjusting a fixed monitor is just hard as it would require complete disassembly and possibly replacing wooden parts. .

I then sketched out a couple designs of Jamma style machines and even a few “candy cade” machines but the availability of prefinished melamine shelves that were large enough to facilitate this build steered my design to a cross of a Vectrex and a Nintendo cabinet.

From my measurements I needed the bottom edge of the monitor at least 5 inches higher than the table to clear the Tankstick. I was lucky in that the monitor chosen was completely rectangular with no rounded edges. So I could reuse the bezel. Measuring width I needed 17¼” inches.

To keep the number of cuts to a minimum the side panels were going to remain 12” deep by 24” tall. And to give a 35* slant to the monitor I needed a panel about 7” wide for the speaker shelf/bottom of the marquee.

I used 4 pre finished melamine shelves measuring 12”x24”:

one shelf was cut to a width of 12”x17¼ ” for the top, and the last was initially cut down to 12x17¼” to establish width then cut lengthwise to 5x17¼” for the “kick plate”, and 7x17 ¼ for the speaker shelf.

Unfortunately I goofed on my calculations and what was to be a 4” marquee opening has been reduced to a little over 2”. However that will not stop me and I think the finished piece reflects that. Like Bob Ross used to say “See that mistake, lets make it a tree. A happy little tree.”

Assembly consisted of positioning the boards and marking the side panels with where the boundaries of the kick plate monitor and speaker shelf were to be mounted. I then drilled pilot holes using a Dremel tool and a 3/16” bit ½” deep, placing brackets in position, securing with the provided screws.

After the speaker shelf and kick plate are mounted to the side panels, ensure that the cabinet is square and lay it on the front facing side. From the rear I then positioned the monitor into place to secure it with 3 inch brackets. The monitor rests on its bottom bezel edge with the top pressing against the speaker shelf. The brackets maintain pressure and prevent it from falling out.

I placed the 2 speakers on the shelf to mark where I was going to drill my holes for the sound to pass through and drilled 5 3/4" holes in a X pattern similar to a die.

The bottom and back is unfinished MDF that I salvaged from a dumpster cut to 17¼“ x 22½“ (back) and 17¼” x 10½” for the bottom. The bottom is secured with 2 inch brackets and the back will be held on with 2 inch brackets and Magnets pulled from Hard disk drives.

The top will be secured last with 3 inch brackets after the speakers, audio amplifier, marquee, and light are installed.

I used a hole saw to drill a hole for the arcade stick connector and another one in the back panel to pass through the power cable for the PSU

Now on to the power supply and network adapter

Step 3: Getting It All Powered Up.


I am going to basically rehash my previous build for converting and using an ATX power supply. I wanted as few external wires as possible, with a a PC power supply I can satisfy all the power requirements and only have one power cable leaving the cabinet. The other requirement was that everything has to be modular, I am going to use as many existing connectors as possible and when a connector does not exist I will use either a JST or a Molex

Make sure the power supply is unplugged before clipping wires. is it unplugged? CHECK AGAIN


The main point from that build is that the Green wire is the signal to turn everything on. So that will be the main switch. Yellow wires are +12v DC, Red wires are +5v DC, Orange wires supply +3.3v, and Black wires are the common ground. I am not using the other colors from the bundle, however the Wikipedia article discusses what they are.


If you want attach your switch to the Green and a Ground wire. When the switch is open everything will be off, when closed everything will turn on. However to keep my son from just flipping the power switch to turn it off. I used a wire nut and just permanently left this circuit closed.

The Micro USB power cable is soldered to a red and black (5v) to supply power for the Pi.

A 2.5mm barrel jack is soldered to a red and black (5v) to supply power for the network bridge

The mini amplifier is using a red & black (5v) wired to 2 pin JST connectors to keep it modular

The monitor is using 2 yellow and 2 black in a Molex power adapter (from back when there was no dedicated 12v processor power cables on a ATX power supply)

The marquee light is going to use a yellow and a black as it requires a 12v to power the inverter for the fluorescent light.

I like to keep everything routed nicely so I stapled zip ties to the inside of the cabinet for cleaner cable management.

Now as Justin Timberlake would say “On to the bridge…”

Step 4: Configuring the Network Bridge (optional)

As I don't know too much about Linux and had a older D-Link 801+ bridge I decided to strip it down and use it for a wireless adapter.

Parts needed PC, Bridge, Ethernet Cable, Cripmper, and RJ45 end if making a short cable. Or just cram the whole thing in as is but since I needed to fix the antenna on this one I stripped it and installed it naked.

Plug a network cable into your PC, assign that network card a static ip address of with a subnet mask of the default gateway does not matter so I used

Open a web browser and try to go to if you get a sign-in screen the 801+ is in a factory default state. If not you will need to reset the bridge using the following steps.

With the D-link bridge plugged in to both Ethernet and power press the reset button with a reset tool (straight paperclip or wire) hold it until the lights do something then release. Try to open Http:// again if so then you will get a sign in the User ID is admin with a blank password.

Click on the wireless tab and select, infrastructure. Click on site survey then join your wireless network. Enter any WEP keys and name it whatever you choose. Click apply

Click on the network tab and select Dynamic IP, this will allow the 810 to use your networks DHCP settings, Set your network card back to its previous settings of Dynamic IP and Automatic DNS.

Try to connect to the internet. If you have a network connection then you are good to go. Unplug the power and network cable from the DWL-810 mount it in the arcade cabinet then plug it into the PI and route power and network cables to your bridge. I went with this bridge as I already had it, nothing special this is no better than any other method.

As it uses an external radio I figured I may have a chance at slightly better signal then one of the little chip WiFi adapters used on the Pi. Then again I didn't have to buy anything and it saved a otherwise good part from a recycling bin or landfill.

Step 5: Installing All the Guts in the Machine

The installation is almost trivial. The process consists of routing cables and attaching the boards to solid fixtures.

I used little nylon offsets and standard PC mounting screws. For placement I held the circuit board to the mounting surface. Marked where the holes were. Placed a nylon offset with a dab of gorilla glue then screwed the circuit board to the panel.

Cable management was achieved by using a staple gun to affix zip ties to the side panel then zipping the connected wiring bundles in place.

The monitor was secured in the cabinet assembly stage as it is a structural component.

The speakers and marquee lights are also installed at this time with wood screws and offsets.

And final wiring connections are soldered up for audio.

Making the wiring harness for the audio amplifier consisted of making a Y adapter to 2 male 3.5mm audio leads with the third leg to a 3 pin JST connector for audio in. Audio out I soldered the Speaker wires into a 4 pin JST connector with a 2 pin JST connector for power. They attach to the pin headers soldered onto the amp so if it ever fails I just need to unplug it and plug in another one.

Sorry for the shaky cam video. The video of configuring the Joystick is on a tripod so no shaky.

Step 6: Installing the Software, and Arcade Stick Config.

Ok Linux and derivatives are my weak side. So if any of this gets confusing feel free to
ask in the comments. I once again want to thank rbates4 and the crew over at the RetroPie Project. Without their mastery of the software side my build would not have been possible.

Lets Begin, shall we?

There are three pieces of software that you will need to configure your PiCade machine.

The first thing you will want to download is The SD card image. I used the Porta Pi v3.0 image rbates4 hosts on his blog. It is in a .RAR archive so you will need to extract the ISO

or you can use the main Image from the project origin.

The second piece of software is the SD Association card formatter utility, this will ensure that the SD card is properly formatted to the SD association standard. This may prevent possible card corruption however I don’t know for certain. My thought is that if the standards org recommends it then it is the best practice. I have had better luck with this utility then the windows format utility for SD cards.


The last piece of software to download is the Win32DiskImager I downloaded my copy directly from source forge as they don’t seem to put any crapware in their download. This utility will serve two purposes the first is to write the image to the card. And the second is to create a backup iso once you have it configured to your liking.


Rbates4 has very good instructions on his site underneath the download for the ISO’s on writing the image. On windows 8 you will have to run the win32diskimager utility in Win7 compatibility mode, as administrator, for it to work properly.

After you have created your SD card, Insert it into your completed PiCade machine and finish software configuration.

On first boot it will drop you to the Emulation Station menu. Press F4 on your keyboard to exit ES. Once at the terminal menu, enter the following command sudo raspi-config. You will need to perform option 1 to expand the file system to use the whole card. Then option 8 for advanced options to configure the memory split to 256. At this time you can perform a software overclock by selecting the desired level of overclocking, however that is at your own risk you may void your warranty and I cannot be liable if you Burn your Pi.

Reboot and configure the joystick. In the above video I go through how I have configured my joysticks.

After your software is configured you can copy over your ROM files using either a USB stick or if you have configured a network connection. The host name Raspberrypi should be on your network with the ROM folder shared by default. If you omit the bridge or wifi card a network cable at this point is awesome you really only need the network once to transfer ROM files over.

If you need any further documentation for the software or have a question about compatibility outside of what I have provided here check out the Forum on the Project website over at http://blog.petrockblock.com/retropie/

You will see in my video how to configure the xarcade stick, documentation and detailed instructions are found over on http://blog.petrockblock.com/2014/06/01/xarcade2j...

Step 7: The Finishing Touches.

I went with just the plain matte black melamine side panels however they
would be perfect for painting graphics or vinyl decals.

The Marquee sign is a simple geometric design that I feel harkens back to the vector graphics games of the early 80's. It is made with a strip of Tyvek that I obtained from a mailing envelope a red sharpie and a black sharpie. The lines are 5mm apart from each other at the wide end meeting at a common center point. I figured 10 lines per angle would be sufficient for my marquee and the Tyvek fibers give a marbleized look with the light shining through it. Everyone that has seen the marquee is reminded of a classic game that they cannot put their finger on. So I guess I got the right effect. Yep a happy little tree.

If you have a router, you can put in a channel to insert an acrylic sheet for your marquee however it was an expense I did not want to have for a decorative item that and I just like the Tyvek marquis.

It is attached at each side with 1/2 inch staples from a staple-gun so if I ever want to change it up I can remove the top panel rip the old marquee out then staple in a new one. Just make sure you keep it tight to keep up the illusion of a piece of acrylic.

Now when one is drilling holes invariably that hole will be lighter than the surrounding melamine, To remedy this I colored in the raw wood using a sharpie, It is not enough to completely disguise the holes however it does make them blend in a darkened environment.

I may at a later time take the back panel out and spray paint it black however where the arcade machine is placed it is not visible anyway and I really don't want the paint smell.

I tried to keep the cabinet as clean as possible, all screw heads are on the inside and I used minimal external artwork. The Missus likes clean lines and appreciates that I did not put some garish graphics on the side. I figure l have a duty to keep the Missus happy and I can live without a sweet flame paint job.



  • Epilog Challenge 9

    Epilog Challenge 9
  • Gluten Free Challenge

    Gluten Free Challenge
  • Sew Warm Contest 2018

    Sew Warm Contest 2018

We have a be nice policy.
Please be positive and constructive.




I also forgot to mention that the coolest thing is that the emulators the Image supports is quite lengthy

Amiga (UAE4All)
Apple II (LinApple)

Apple Macintosh (Basilisk II)
Armstrad CPC (CPC4RPi)
Arcade (PiFBA, Mame4All-RPi)
Atari 800
Atari 2600 (RetroArch)
Atari ST/STE/TT/Falcon
C64 (VICE)
CaveStory (NXEngine)
Doom (RetroArch)
Duke Nukem 3D
Final Burn Alpha (RetroArch)
Game Boy Advance (gpSP)
Game Boy Color (RetroArch)
Game Gear (Osmose)
Intellivision (RetroArch)
MAME (RetroArch)
NeoGeo (GnGeo)
NeoGeo (Genesis-GX, RetroArch)
Sega Master System (Osmose)
Sega Megadrive/Genesis (DGEN, Picodrive)
Sega Mega-CD (Picodrive)
Sega 32X (Picodrive)
Nintendo Entertainment System (RetroArch)
N64 (Mupen64Plus-RPi)
PC Engine / Turbo Grafx 16 (RetroArch)
Playstation 1 (RetroArch)
Super Nintendo Entertainment System (RetroArch, PiSNES, SNES-Rpi)
Sinclair ZX Spectrum (Fuse)
PC / x86 (rpix86)

Z Machine emulator (Frotz)

Nice project!

Must be cool playing Neo Geo games on it.

Why don't you put the list on the instructable?

Oh and yes Metal Slug is awesome. :) due to copyright issues and licensing there are no Roms included with the software image however they do exist and fairly easy to find... And for the legalease I do have a copy of metal slug, Actually come to think of it I have quite a few JAMMA boards in my Moms basement....

Thank you for the info.

I'll try it when i get my pi working.

I wanted to give credit where credit is due, As I used a premade software image by rbates4 I did not want to take away from his work. If not for his image and the work done by the Retropie project on bringing everything together into an easy to use package, I would probably still have the stick in my basement closet taking up space.

I downloaded the 2.3 version of retropie last night and configured it for everything there are a couple steps that need to be done.


First off. Download the new SD image from the Petrock blog, insert it into your pie and boot. Press f4 to drop to your terminal then type the following.

git clone https://github.com/petrockblog/Xarcade2Jstick

cd Xarcade2Jstick


sudo make install

sudo make installservice

That will install the Xarcade2Jstick driver. The next step is to perform the following
Reboot and configure the ES controlls to match how you want to play.

press f4 to drop back ot the terminal and perform the following.

cd RetroPie-Setup

sudo ./retropie_setup.sh

Select "Setup," select "Register RetroArch Controller," and follow the on-screen directions to set up your button inputs. If your controller doesn't have the buttons it's asking for, wait a couple of seconds for the prompt to continue. When you're done back out and select "Perform Reboot."

That will get you the basic config. To config for MAME you will need to launch a ROM then press the ~ key. Select the configuration for all emulators and set up the controls for your joystick and make sure to map insert coin.

Once again Keep Tinkering on.

I'm not sure if you're still maintaining this post, but do you know if the RetroPie 3.0 works on the Raspberry Pi3? I bought one for this project before reading the details.

Hey, first I just want to say this is a really cool project and it's great that you shared it. I got my cabinet together before seeing this and I'm also using an Xarcade dual stick, and I was having an issue getting it to work in NES and TG16 emulators for some reason(damn two button controllers!). Anyway, you gave me the answer I've been looking for(thank you!), but I have one other question. How do you configure an ESC combo key bind so you can exit a game without the need for a keyboard? I want to do everything using the xarcade stick. Thanks!


I shuffled through the notes for my backseat emulator. And I enabled just the thing you are looking for. Keep in mind that the button combos are for a USB SNES controller so just change the values to for the keybinding that you want on the xarcade stick.

Open leafpad then open home/pi/RetroPie/configs/all/retroarch.cfg

I wanted to add the following hotkeys
Select+Start will exit the ROM (or any 2 button combos on the Xarcade I use the right side button to function as select to enable the hotkeys. left is coin in)
Select+LB will save
Select+RB will load save states

Scroll down in the retroarch.cfg to this code:

input_player1_joypad_index = 0
input_player1_b_btn = 2
input_player1_a_btn = 1
input_player1_y_btn = 3
input_player1_x_btn = 0
input_player1_l_btn = 4
input_player1_r_btn = 5
input_player1_start_btn = 9
input_player1_select_btn = 8
input_player1_l_y_plus = -1
input_player1_up_axis = -1
input_player1_l_y_minus = +1
input_player1_down_axis = +1
input_player1_l_x_minus = -0
input_player1_left_axis = -0
input_player1_l_x_plus = +0
input_player1_right_axis = +0

(so the above is the player controlls the below are the hot keys you are looking for)

input_enable_hotkey_btn = 8
input_exit_emulator_btn = 9

input_enable_hotkey_btn = 8
input_save_state_btn = 4

input_enable_hotkey_btn = 8
input_load_state_btn = 5

You may have to tinker around with it for some emulators I cannot get the buttons to work properly for the gameboy advance emulator but I keep a keyboard velcroed to the back just in case the kids get into one of those games.