Introduction: Raspberry Pi Arcade Table

Picture of Raspberry Pi Arcade Table

In this Instructable I'll show you how to make your very own "classic" arcade table with a Raspberry Pi for hours of retro-gaming goodness.

Step 1: Parts and Materials

Picture of Parts and Materials

Raspberry Pi model B (RadioShack #: 277-196)

8 GB SD card (RadioShack #: 44-201)

HD televison (RadioShack)

HDMI cable (RadioShack #: 15-480)

power strip (RadioShack #: 61-003)



arcade joystick

(2x) arcade buttons

wire (RadioShack #: 278-1224)

female jumpers (RadioShack #: 276-157)

angle brackets

inside corner brackets


(2x) 12 inch hinge


3/4 inch plywood

1/8 inch clear acrylic

Step 2: Design Overview

Picture of Design Overview

The design for the table is inspired from 1980's cocktail arcade tables, the kind you might still find in the dark corner of a pizza parlor. These tables were rather bulky and incredibly heavy due to the clunky power systems and hefty CRT. Thankfully, electronics have slimmed down to the point where we can easily recreate the arcade without the bulk.

Before making anything, I made a 3D model in Fusion 360. The final cabinet is solid black, but I changed the appearance of the model to more easily distinguish the separate components. From this model I was able to create accurate dimensions that I would be able to easily cut with woodworking tools.

Step 3: Build the Frame: Cutting

Picture of Build the Frame: Cutting

The entire body is made out of 3/4" ply, which is really .715" or 17.6 mm thick. The cabinet is designed in such a way that every piece can be cut from a single 4' x 8' sheet with a some room to spare. The top of the table measures just a hair over 20" x 33". The top plate is 3mm thick abrasive resistant acrylic with rounded edges. If you happen to live on the U.S. west coast, TAP Plastics will cut-to-size many different kinds of acrylic, and you can even specify a corner radius to match your design.

Here are the dimensions for the main components:

table top acrylic 840 x 510

table top wood 840 x 510 mm (See picture 4)

front panel 780 x 760 mm (See picture 2)

(2x) side panel 760 x 415 mm

back panel 780 x 760 mm

base panel 745 x 415 mm

front center panel 350 x 123 mm

console top panel 350 x 150 mm (See picture 3)

console front panel 350 x 70 mm

console bottom panel 350 x 150 mm

(2x) console side panel 229 x 168 mm (See picture 2)

The holes for the controls are in standard units; .75" for the arcade joystick and 1.125" for the buttons.

For the majority of the pieces, you can use a table saw to cut down the panels. I had access to ShopBot CNC to cut the tabletop, but it's equally possible to do with hand tools. I also used a vertical band saw to cut the curves for the console sides as well.

Step 4: Build the Frame: Main Body

Picture of Build the Frame: Main Body

For these next steps I highly recommend an excess of large clamps and the help of a friend. We'll also need the eight inside corner braces and matching screws.

Screw the right side panel and back panel together with two of the inside corner braces.

Screw the left side panel to the back panel.

Take the power strip and slide two screws into the slots on the back to mark the inside of the left panel. Slide the screws out and partially drill them into the marked divots. You should be able to slide the strip onto them. Remove the power strip for now.

Screw the front panel to the left and right panels with the remaining four inside corner braces.

Flip the body over and center it over the table top.

Place the hinges along the back panel and table top and mark them with a pencil for later assembly.

Step 5: Build the Frame: Console Base

Picture of Build the Frame: Console Base

Next, we'll begin assembling the arcade console. For this we'll need the two curved side panels, six angle brackets and matching screw.

Take one of the console sides and clamp it to the side.

Attach the two brackets to the piece, making sure to leave enough clearance for the bottom of the console.

Slide the bottom console piece into place and fasten with two more brackets.

Place the opposite side panel into place and fasten it as well.

Place the front piece of the console in place and glue down the base. Make sure to drill the 3/4 inch hole for the USB ports. You may wish to trace around the RasPi as it doesn't lay flush to the base of the board.

Step 6: Build the Frame : TV Mount

Picture of Build the Frame : TV Mount

Now we'll need to attach the TV.

Take the table top and and lay the TV flat and centered over the main hole.

Cut out six 2"x4" blocks and lay two on either side of the TV. Screw these into place towards the outer length of the spacer blocks. Be sure to countersink these screws so that the next level of spacers can lay flush.

Lay the remaining blocks on top of the now fastened stack.

Lay a long strip of 4" wood across the stacks over the TV, then mark and cut it down to size.

Centered on the new board (and with the TV removed!), mark and drill four 4mm holes that are 100mm apart.

Check to make sure the holes line up with those on the back of the TV.

Towards the inner length of the spacers, screw in the new cross piece to the spacers.

As far near the base of the TV you can go, drill holes deep enough for your T-nut on both sides of the TV.

Hammer the T-nuts into place with a mallet.

Cut down two 1"x4" pieces and drill a 1/4" hole for the screw.

Put the TV back into place and screw it to the cross piece with four 35mm M4 screws.

Slide the 1/4x20 screws through the two sticks and tighten to the back of the TV.

Turn the assembly over to check that the TV doesn't droop. There should be enough give to align it with the hole if a bit off.

Step 7: Build the Frame: Console Top and Electronics

Picture of Build the Frame: Console Top and Electronics

We're nearly done!

Take the console top plate and front top panel and fasten them with two more brackets.

Unscrew the ball of the joystick and slide it into the hole from below. There are many holes, but a screw in each corner should do.

Pop out the micro switches from the bottom of the arcade buttons (there are two plastic nubs that pop in) and unscrew the large black nut.

Slide the arcade buttons into the console top and slide the nut back on to tighten it.

Pop the micro switches back in.

Referring to the diagram on the next page, plug in the proper wires from the joystick and buttons into the RasPi.

Step 8: Setting Up the Raspberry Pi: Configuring Arcade Controls

Picture of Setting Up the Raspberry Pi: Configuring Arcade Controls

This step is optional. If you wish to add arcade buttons to your systems, read along. If you're fine with a standard mouse and keyboard, you can skip ahead to the next step. Credit for this update goes to Adafruit for making this wonderful tutorial on how to connect arcade buttons to the RaspberryPi. This is perhaps the simplest method for adding direct control through the GPIO and is easily configurable for different buttons. The Adafruit tutorial is based around the Raspbian OS which is just fine since RetroPie is also just a modified version of Rasbian.

Step 9: Set Up the Raspberry Pi: OS

Picture of Set Up the Raspberry Pi: OS

The heart of the machine is the wondrous Raspberry Pi. The Pi is so popular a choice for arcade emulation, there's even a custom operating system dedicated to emulation: RetroPie. You can download the RetroPie image here. I recommend using an SD card with at least 8GB of space.

Make sure your SD card is properly formatted. You can grab the official SD formatter here.

Write the RetroPie image to the SD card with the Win32 Disk Imager.

That's it! With the RetroPie OS, you don't need to do any extra work to get started gaming. All you need is a keyboard and mouse to interface with the Pi. If you want to play with custom arcade controls, head over to the next step.

Step 10: Final Touches

Picture of Final Touches

A solid wood arcade with a nice finish would look great, but I decided to go with a solid black coat of eggshell paint. I wanted the arcade to shine, but not be outright glossy.

The only structural element left is the acrylic table top. For this, I marked six holes around the edge and counter-sunk a 1/2" screw in each.

In order to complete the classic look I was aiming for, I designed some custom decals. I didn't end up using them all, but you can find the vector files and a big ol' raster image if you like to use the art too. I had access to a large format printer/cutter which allowed me to make custom vinyl stickers, but you can easily print scaled down versions with sticker paper on a standard printer. The profiles of the images are basic shapes so that it would be easy to cut by hand too.

Step 11: Usage

Picture of Usage

By default, the RetroPie OS comes with a few games "pre-installed," but what if you want to add your own? You can find your favorite legal copy of old games at the MAME website.

Installing games is easy with a flash/jump/thumb drive of your choice. With the system powered and running, plug in the external usb memory drive. You can remove the drive after about ten seconds (some drives will have pulsing LEDs to led you know data transfer has completed). Now when you plug the drive into your regular computer, you should see a new file system on it simply titled: "roms." Browsing through this folder you'll see sub folders related to nearly every old console or emulator. Drag and drop your roms into the appropriate folders and plug the drive back into the RasPi. The RetroPie will automatically copy over your game data to the system. Reboot the Pi and you should see you games pop up. Enjoy your new cocktail arcade table!


BooterM (author)2017-10-21

I do know the post is old, but I'm trying to create something similar and I'm struggling with one minor issue: the monitor's power button. It's located on the side and it's a "push" button, meaning that you cannot lock it in on or off position.

So, how can I override this button and make the monitor turn on with power? I tried disconnecting the buttons altogether but it doesn't work then...

Monitor is Benq FP202W, for reference.

smartassorama (author)2017-01-23

great build! I see you used a tv, did you have any problems with the viewing angle distorting the colors? My build I used a computer monitor LCD and ended up having to buy an ips monitor because the picture was so distorted.

jyesaints (author)2016-04-09

hi im making one could you tell me where what female jumpers are

pallans made it! (author)2016-02-26

Turned out well. I deviated from the instructions a bit during assembly, but generally stuck to the plan. I added a keyboard tray under the console and mounted standard PC speakers on the sides. Glued and screwed most of the cabinet together, too.

Darthorso (author)2016-02-24

Just amazing! :D I do love arcade project and this one is great

LucasO10 (author)2015-09-17

RoyS3 (author)2015-02-04

This is fantastic. Have you considered packaging the PI, pre-installed/configured software, Joystick and Buttons and offering them for sale. I would be very interested for sure. Could do the woodwork but not the electronics so a pre-built solution that could be simply added to a wood cabinet and just as simply plugged into a tv fitted in the cabinet would be awesome. Thx Roy

FuzzyBearGeek (author)RoyS32015-09-11

You could do it! Just study!

ThereIs0nly0ne (author)2015-05-30

Nice going with this project. I'd love a cocktail cabinet but unfortunately I have too many projects taking up too much space.

xxxxandrewxxxx (author)2015-04-26

I Love this Project! is there anyway i could go about making this with a two player setup? If so how would i do this?

eightbittrip made it! (author)2015-04-04

Thank you again aleator777 for this instructable. I got everything working good with a bunch of nes roms. I'm a very happy nerd now lol.

duane.francis.739 (author)2015-04-01

If you were to make this a two player console, would the game rotate on the screen to the player if you put the controllers on each end?

eightbittrip (author)2015-03-25

this project is very awesome and I intend to build a traditional full size cabinet for it. I have some issues moving forward though. I have added about 600 nes roms that do work however when I play them it changes my keyboard layout from what I had previously configured to the zx up down left right and enter layout and when I exit the game and go back to choose another game the keyboard stops working all together. any ideas? I have found a arcade type joystick and buttons that has a usb encoder with it and I would like to use it if possible but I need to get a default configuration to save before I can. this evening I plan on trying to find a generic usb game controller and try to get it to work the same every time the pi boots before I move on. any help would be greatly appreciated.

Aleator777 (author)eightbittrip2015-03-26

Thank you very much. With regard to your keyboard problem, I'm not sure what might be happening. The different key mapping per game might be harder to get around, but I don't see why that should make the keyboard stop running altogether. Have you read about other people encountering the same problem?

eightbittrip (author)Aleator7772015-03-29

Thank you ALeator777, I did find some people having similar issues, however I haven't found anyone who seems to have solved it.

I haven't used the gpio header for the controls becuase the adafruit tutorial on that goes over my head. I felt like the best solution for me was to use the usb keyboard encoder and match the controls to what the nes emulator changes it to when it starts.

I have the retropie running good now, and as soon as I figure out what button is select on the nes emulator I will be building a full size cabinet with the arcade controls :)

Thank you for sharing this project. I have always wanted a full size arcade game. I may even put a coin slot in connected to an arduino that allows a certain amount of play time lol.

eightbittrip (author)Aleator7772015-03-28

the keymap seems to be changing on me when I run the nes emulator. I took the encoder out of a logitech usb keyboard and mapped the circuit paths on the keyboard to make a remote control with the buttons I need. I don't know if this will work the same for everyone, but it seemed to be a good solution for me. Only one small problem remains, I don't know which key on the keyboard represents the select button on the nes emulator. If anyone knows, please reply :) thank you.

glos10 (author)2015-03-14

Do you think this could be modified to have 2 sets of joysticks and buttons?

Aleator777 (author)glos102015-03-14

Yes absolutely! The number of buttons/switches is only limited by the GPIO on the Raspberry Pi. If you look at the script that actually maps the key presses it'll make more sense.

juanmacrescente (author)2015-01-22


the joystick movements are analogue? Or just up down left right?

These kinds of sticks use mechanical switches since the RasPi doesn't have a built in analog to digital converter, and the sticks are mapped to keyboard presses anyhow.

Taytay208 (author)2015-03-08

Sorry if you said this somewhere and I missed it, but do you have any idea how much this cost? Thanks, you did an amazing job! This looks so professional (:

Aleator777 (author)Taytay2082015-03-10

Thanks, it was really fun to make! Total cost breakdown comes to about $400 depending on what you've got. The TV was ~$100, Raspi + switches and cables ~$80, wood and hardware bits ~$60, and scratch resistant acrylic sheet ~$90. I accidentally broke my first acrylic sheet, so I had to spend a bit more!

laurentmarie1968 (author)2015-02-24

Excellent, très beau projet, pense faire pareil ;)

Merci beaucoup!

jasonrmarquette (author)2015-01-03

Awesome article. Question: On two player games does the pi flip the rotation of the screen for the second player? Or is this a single player only.

This hardware is only set up for single player controls, but you could certainly just add double the controls for a two player game! The game would automatically display it's native mode, so if it was made for a two player table top, it should work just the same as a regular game. Most games I would imagine would be split screen though.

bedwards1226 (author)2014-11-15

This is awesome!!! Thanks for sharing! I'm very new to RasPi and would love to complete this project. I've gotten most of they way: formatted the SD card, wrote the image, installed RetroPie, and hooked up the buttons and joystick. However, I am stuck trying to get the controls to work. The Adafruit article runs through installing their "retrogame" utility. Is that what you did to get the arcade controls to work? Would you mind running through how to do this process?

Thanks again for posting this and appreciate any help you can offer!

Aleator777 (author)bedwards12262014-11-16

Thanks, I'm really glad you enjoy it :) I am using the retrogame utility for the arcade controls. I used the default settings that Adafruit provided. Have you intstalled it? PM me if you need any more help!

bedwards1226 (author)Aleator7772014-11-17

Thanks for the reply! I was able to spend some time on the project this weekend and got it all figured out!

Aleator777 (author)2014-10-22

As for ROMs, I did have some difficulty installing my own. There's no clear-cut solution that I found, it's just trial and error and making sure you've put the files in the right directory. Are you using RetroPie? It's a bit hard to make out in the photos, but there is a hole that allows access to the RasPi's USB ports on the front console for plugging in a keyboard. I haven't tried this with a traditional controller (xbox, ps, nintendo etc.), but if you use the arcade buttons, you can remap them to any keyboard press with a quick edit to the configuration file (See the Adafruit tutorial I linked to on step 8). Hope that helps! Post photos of any progress you make in the comments. I love to see what you make!

powers_j (author)Aleator7772014-10-27

Yes I am using retroPi. I started to realize that maybe you are not running retropi on the machine and only the MAME emulator. I think I am going to solder wires to the escape key on the keyboard and allow for an external button that can be pushed to bring the user back to emulation station. Without this, the user can't exit a game to select a different one. We are using a ps3 controller for now + keyboard just for escape key, but that is temp. I am hoping I can map the arcade joystick and buttons to the retropi software similar to how you did it, that is the next adventure.

Cheers Justin

powers_j (author)2014-10-22

I am working on this excellent project right now. I do have a question couple of questions... 1.) It appears the MAME emulator and or Roms I am downloading do not work at all. They try to execute in shell and return to GUI emulatorstation. Any idea about this? 2.) As I am still bench testing... I have a wireless ps3 controller and a keyboard plugged in at the moment. I noticed I can't exit a game without using the escape key on the keyboard. How did you solve that problem?

Thanks Justin Powers.

might have some questions about arcade button/joystick interface too. That is my next step in bench testing.

jcameron-1 (author)2014-09-23

Awesome build! Just curious if you know pricing for the clear acrylic sheet? I got a quote locally but seemed a bit high

Aleator777 (author)jcameron-12014-10-03

Thanks! For 3mm thick abrasion-resistant acrylic I believe I paid about $60

jtaormina1 (author)2014-09-11

are you able to us the rasberry pi b plus model?

Aleator777 (author)jtaormina12014-09-11

Yup! The RasPi B+ would be even better if you wanted to take advantage of the extra GPIO to add a lot of arcade controls.

jtaormina1 (author)Aleator7772014-09-17

Ok thank you!

matt.e.jenkins (author)2014-09-04

Very well done!

Thank you!

bstott (author)2014-09-04


A versatility feature can also be added to use the TV as a TV with stand. Add a hinge under the front of the table, a latch in the back of the table top to hold it down while game playing and a desk support on the inside to hold the TV upright when viewing as a TV.. When you are not playing games and want it as a TV and Stand simply un-latch the back of the table top. Lift the table top forward and support. :-)

Aleator777 (author)bstott2014-09-05

Wow, that's a really good idea. I love the versatility! If I ever make another, I'll definitely keep this in mind!

Ironbull (author)2014-09-03


Aleator777 (author)Ironbull2014-09-05


crank_girl (author)2014-09-03

Brilliant! :)

Aleator777 (author)crank_girl2014-09-05

Thank you!

Dain Unicorn (author)2014-09-03

Very Awesome!

Aleator777 (author)Dain Unicorn2014-09-05

Thank you very much!

sdidwania (author)2014-09-03

well done. it came out really well.

Aleator777 (author)sdidwania2014-09-05

Thanks! I enjoyed making it.

bjohnson3 (author)2014-09-04

I really like this but find it really limiting. I would, and have done something similar but have made the control panel interchangeable with some pop on connectors with 16 to 24 pins times 2. That way you can increase your playable range of games and make 2 player games doable. A little latch to hold it down, and a release to pop up the controls and put down a new one. Also, options for track balls, for centipede and the like could then be realized. Overall, very well done.

About This Instructable




Bio: My name is DJ and I previously made electronic whatsits, 3D-printed thingamabobs, and laser-cut kajiggers for the Instructables Design Studio; now I build and repair ... More »
More by Aleator777:MiniSub ROVBasics of Thermal ImagingMiniature Autonomous Blimp
Add instructable to: