Retro Pi Arcade

Ever wanted to play old arcade games?  Remember the days of pacman, galaga, spy hunter and mortal kombat?  Well why not build your own arcade cabinet.

Complete List of Parts

There are many howtos on building a MAME arcade cabinet.  So what makes this one any different.  The only real answer I can give is it uses a keyboard controller to connect to buttons and joystick.  I used a standard usb keyboard.  Here is what it looks like removed from keyboard housing.

2014-12-07 14.00.36

 

What this allows in zero configuration of device drive on raspberry pi. Because you can connect a usb keyboard to the pi and it already has keyboard drivers installed.

So how to you take a keyboard controller and connect it to the buttons?  You must solder wires from the keyboard controller.  How the keyboard controller works is pins 1 – 7 can connect to pins 7-27.  So for example the letter Y would be pin 6 connect to pin 21.  Now each keyboard would be different so don’t use my diagram for your pin mapping.  But I wrote a program that would let you know what key was pressed when you connect 1-7 and 8-27 one at a time.  It is located on github KeyCode.

IMG_20141207_135947_081

 

From the mapping I did if I connect 6 – 23 I get the letter Y.  If I connect pin 8 to pin 22 I get the number 1.  It is helpful to map the ESC and Enter keys to a button.  They are not needed but by default MAME is set up to exit a game on ESC.  The next step was to use a breadboard to wire all the combinations I needed.  This would require 48 wires.  Each relay on the button and joystick needs two wires.  Is this easier than buying a wiring harness?  Maybe / maybe not, but you still have to connect all the wires to the relays and map them correctly.  So if you don’t mind soldering then I would go with keyboard controller.  You can buy a 2 player controller but I was leery of driver setup and if it would work correctly.  Here is the final product after soldering the wires needed.

2014-12-27 18.01.05

I have it connect to my laptop to test the keys are pressed correctly.

 

Cabinet

I wanted to build a sturdy cabinet that was not huge.  I went with bar top style. The width is 2 ft.  So it works well with 2 plays.  I used a 17in LCD monitor for the display.

Since the pi has hdmi output and I used an old VGA connection.  I had to purchase a converter.  It converts from hmdi to VGA only.  Here is the converter.

To build the bar top cabinet I used one sheet of 3/4 in Premium MDF board.  I wanted to use no more than one sheet.  Here is the sheet with my markings on it.

2015-01-02 12.46.17

This consisted of 2 sides, one joystick / button piece, 1 back, 1 button, 1 top, 1 top front, 1 speaker piece, 1 bottom front.  All widths are 2ft.

I printed this image out and drilled the holes exactly on the button panel. Note I only have 6 buttons so the last top and bottom buttons are not used.

button_layout

2015-01-09 16.29.54

 

I did use 1/8 particle board glued to monitor piece.  This is so the monitor fit inside the MDF board but butted up against the 1/8 particle board.  Then I screwed a board across the monitor to hold into place.

2015-01-10 16.53.34

 

Then I used wood filler to fill all screw holes and edges.  Painted the entire outside with flat black spray paint, and the finished product without any decals.

2015-01-10 18.05.58

 

Software configuration

 

Now that I had the keyboard controller and cabinet finished its on to pi setup. Fortunately that part is mostly done by RetroPi.  Download the image file and write to the SD card.   Now you will need to get correct version of MAME source code and build on PI.  This is done through RetroPi install menu system.

 

 The Finished Product

Here is the finished product while playing digdug.

2015-01-16 20.22.22


Thanks for reading. Make sure you follow me on Twitter to stay up to date on the progress of my side projects T.LYWeather Extension, and Link Shortener Extension. If you are interested in the tech I use daily, check out my uses page.  

Leave a Reply

Your email address will not be published. Required fields are marked *