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

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

<p>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. </p>
<p>hi im making one could you tell me where what female jumpers are</p>
<p>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.</p>
<p>Just amazing! :D I do love arcade project and this one is great</p>
<p>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</p>
<p>You could do it! Just study!</p>
<p>Nice going with this project. I'd love a cocktail cabinet but unfortunately I have too many projects taking up too much space.</p>
<p>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?</p>
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.
<p>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?</p>
<p>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.</p>
<p>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?</p>
Thank you ALeator777, I did find some people having similar issues, however I haven't found anyone who seems to have solved it.<br> <br>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.<br><br> 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 :)<br><br>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.
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.
Do you think this could be modified to have 2 sets of joysticks and buttons?
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.
<p>Hi!</p><p>the joystick movements are analogue? Or just up down left right?</p>
<p>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.</p>
<p>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 (:</p>
<p>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!</p>
<p>Excellent, tr&egrave;s beau projet, bravo.......je pense faire pareil ;)</p>
<p>Merci beaucoup!</p>
<p>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.</p>
<p>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.</p>
<p>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 &quot;retrogame&quot; utility. Is that what you did to get the arcade controls to work? Would you mind running through how to do this process?</p><p>Thanks again for posting this and appreciate any help you can offer!</p>
<p>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!</p>
Thanks for the reply! I was able to spend some time on the project this weekend and got it all figured out!
<p>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!</p>
<p>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.</p><p>Cheers Justin</p>
<p>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?</p><p>Thanks Justin Powers.</p><p>might have some questions about arcade button/joystick interface too. That is my next step in bench testing.</p>
<p>Awesome build! Just curious if you know pricing for the clear acrylic sheet? I got a quote locally but seemed a bit high</p>
<p>Thanks! For 3mm thick abrasion-resistant acrylic I believe I paid about $60</p>
<p>are you able to us the rasberry pi b plus model?</p>
<p>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.</p>
<p>Ok thank you!</p>
<p>Very well done!</p>
<p>Thank you!</p>
<p>Excellent! </p><p>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. :-)</p>
<p>Wow, that's a really good idea. I love the versatility! If I ever make another, I'll definitely keep this in mind!</p>
Brilliant! :)
<p>Thank you!</p>
<p>Very Awesome!</p>
<p>Thank you very much!</p>
<p>well done. it came out really well.</p>
<p>Thanks! I enjoyed making it.</p>
<p>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.</p>
<p>Thanks! Great idea. You could definitely customize the console to have many more inputs. I had considered duel-sided controls for the table, but decided against it for the sake of time.</p>

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 ROV Basics of Thermal Imaging Miniature Autonomous Blimp 
Add instructable to: