Introduction: NaCade - the Naked Raspberry Pi Arcade Machine

Who doesn't like gaming? Having grown up playing arcade machines, as a kid you could only dream of owning one. Now with advances in technology, gaming is available to everybody. Sure, there is plenty consoles and handheld units even smartphones to choose from but what I wanted was the nostalgic feel of a standup arcade without the need for a large room to put it in. Oh yes and portability is pretty handy too.

Step 1: The Main Components

The brains of this setup is the Raspberry Pi computer. It's not overly powerful by today's standards but it can run early style games and systems pretty well. It's small size and low power consumption makes it ideal for many different uses. Best of all it's cheap to buy. The software comes courtesy of Shea Silverman's PiMAME It has a bunch of great gaming emulators built in.

The display is an ordinary 7" LCD (car reversing monitor) which is sufficient enough for these low resolution games although the menus can be a bit too small to read. I had to use a larger monitor when I set it up initially. Working with scripts on this screen was impossible though a 9" screen would be a better option if I had to do it over.

The AV input on the screen is connected into the yellow RCA port on the Raspberry Pi.

I used an arcade quality joystick and illuminated buttons which are wired directly into the Pi. Power is supplied through an 9 amp hour AGM battery which is charged by an inbuilt 15amp solar controller. The solar controller regulates voltage from an external source which in this case is a solar panel. Yes, its powered by the sun!

Sound comes from a portable USB speaker that has its own internal battery.

The box itself is made from 3mm clear acrylic and as it was my first attempt working with plastics, I spent a lot of time researching how to cut and bend acrylic sheets with the helpful guides available here on Instructables.

Step 2: Parts

Parts Used :-
  • 3mm Acrylic Sheet 1200mm x 1200mm  -  $50 (Local plastics supplier)
  • assorted switches  -  $10 
  • wiring and socket  -  $10
  • Assorted bolts and nuts
  • clear rubber adhesive feet for the base (Local hardware store)
All prices are Australian Dollars

Step 3: Tools Required

  • Heat gun or a strip bender
  • scroll saw
  • holesaws and drill bits
  • scoring knife, straight edge and a ruler
  • soldering iron
  • wire strippers
  • clamps
  • metal file and sandpaper
  • screwdrivers
  • masking tape
  • acrylic glue

Step 4: Planning

I'm not good at sketching out designs so I used some cardboard to make a mockup box. I could get a feel for the spacing and layout of the controls much easier like this. The final width of the unit was determined by the controls and the screen. Everything else had plenty of room to fit in.

Step 5: Building the Box

Once the cardboard mockup is sorted, its just a matter of pulling it apart again and using it as a template by laying it flat against the sheet of acrylic. All the bends are marked in their positions and the holes traced out. The mockup can be put back together for later reference. The important part is the main body (which holds the screen and controls) that wraps all the way round.

The two side panels can be marked out and cut once the main body has been shaped.

Step 6: Cutting the Sheet

For the main body I needed a long strip of acrylic. To get a nice, straight cut I used the score and snap method. It involves using a straight edge and a scoring knife to mark the sheet deep enough so when downward pressure is applied it snaps exactly where it is needed.

The holes for the joystick and buttons are cut out with a holesaw. The trick is not to rush and allow the drill to gently cut through.

Step 7: Bending the Sheet

After a few practice runs on some offcuts, I found setting the heat gun on 250 degC gave the best results without melting and bubbling the sheet. The sheet is clamped with a straight edge then gentle even pressure is applied as the acrylic becomes soft. It takes time and patience but it can be done.

Step 8: Controls

After the main body is made up the buttons and joystick is added along with the power button. With access from the sides wiring is easy to hook up at this stage. All the switches are linked to a common ground pin on the Raspberry Pi GPIO board and the trigger signals are individually wired to their own GPIO pins respectively.

Step 9: Side Panels

The side panels are made from templates by tracing around the edge of the main body. Once cut, the side panels are then glued into place with fast set acrylic solvent which 'welds' the acrylic together and forms a very strong bond.

Step 10: Adding the Components

With the side panels now firmly glued on, the cut-out for the screen now becomes the main access inside the box so some adhesive velcro is used to make it easy to remove the display. Acrylic rod is cut down to make standoff legs on the circuit boards so they stay on the floor of the case. Its a tight squeeze but having the clear panels help make it easier to see inside when adjusting and fiddling with the wiring. There is enough room for all the circuit boards to fit as I removed the solar controller board from its box to save on space.

It can get a bit messy with the wiring so I added some split convoluted tubing to neaten things up a bit.

Step 11: Wiring

Being a 12v system, the unit is a fairly basic to wire up. The solar controller is the hub where power is directed from a charge source to the battery and then to the load so power comes in and goes out through this hub. Fuses have been added in between the positive wires for protection.

The Raspberry Pi gets its power from a Kensington Powerbolt duo car accessory adapter as it supplies stable 5v power. I've added another 12v to 5v charger for the USB speaker so I can control its charge with a switch in the back of the unit. This cuts the power when it has reached full charge (tends to make strange clicking noises).

The 9AH sealed battery is heavy at almost 3kg but has an ample amount of reserve capacity. The system running draws about 900mA which easily gives over of five hours of runtime.

Step 12: Joystick and Buttons

The GPIO cobbler board allows the controls to be hooked up to the raspberry pi directly. Without going into too much detail because I'm no expert, the on/off signals from the controls are seen by the raspberry pi and with a programming script, the signals are mapped to specific keyboard functions so the controls act as a keyboard emulator. Adafruit have an excellent guide here

It was a lot of trial and error but in the end I used this script which I modified to suit my button layout

Here is my script change at line 87

//   Input    Output (from /usr/include/linux/input.h)
{ 22,      KEY_LEFT     },
{  2,      KEY_RIGHT    },
{  4,      KEY_UP       },
{  3,      KEY_DOWN     },
{ 27,      KEY_C        },
{ 23,      KEY_X        },
{ 11,      KEY_Z        },
{ 24,      KEY_A        },
{ 10,      KEY_S        },
{  9,      KEY_D        },
{  7,      KEY_5        },
{  8,      KEY_1        },
{ 25,      KEY_ESC      }

Each line in this table contains two elements. The first is a GPIO pin number (where a button or one direction from a joystick is attached), the second is the corresponding key code to be generated by this control. A list of valid key code names can be found in the file /usr/include/linux/input.h starting around line 178. Remember to enclose each pin/key pair in {curly braces} with a comma between them. Basically the controls can be programmed to do the job of any key on a keyboard. 

Step 13: Program

To install PiMame on an SD card in Windows, you need to download an image burner such as Win32 Disk Imager. After you have PiMame downloaded, you should be able to extract it to view the PiMame.img file. Launch Win32 Disk Imager and under "Image File", select the PiMame image. For "Device", select the drive letter for your SD card. Then click "write" to burn the image to the SD card.

For Mac computers you do not need any extra software. Just download the PiMame zip file and extract it. Insert your SD card and open up a terminal prompt. Type in  "df -h"

Record all of the "disk" entries that are listed (ex. disks1). Go into your Disk Utility settings and find your SD card and unmount it (not eject). Then go back to your terminal prompt and type "df -h" again to see which disk is no longer there. The missing one is the disk ID of your SD card. With that in mind, type in this command 

sudo dd bs=1m if=~/PATH TO PIMAME/pimame-0.5.img of=/dev/DISK#where PATH TO PIMAME is the path to where you downloaded the PiMame image and where disk is set to your SD cards disk number (ex. disks1 = disk1).

Executing this command will burn the image to your SD card. When it's done, you can type in

sudo diskutil eject /dev/DISK#

This will eject your SD card. Insert card into the Raspberry Pi and power it up.

Upon a successful bootup, you will be automatically logged in and the PiMAME main menu will appear on screen. From here you can access multiple emulators and utilities for the Raspberry Pi. Use the up and down arrows to navigate and press “Enter” or “c” to select an option.

All ROMs for the systems should be stored in the /home/pi/roms/ directory. PiMAME has a built in FTP server and web uploader that makes adding games easy. To access it go to the IP Address of your Raspberry Pi in a browser (you will need to have your Raspberry Pi connected to your network) and you will be greeted with the PiMAME web page and from there click on the “ROM Uploader” button 
enter in your username and password. (Default: pi / raspberry)
you will now see your home folder so click on ROMS
click choose file and select the item you want to upload
click upload and wait for the transfer to complete

Using a file server like FileZilla is another way but it is more complex.

Mame4all uses 0.37b5 roms and advancemame uses 0.106 roms but some are not compatible so you will have to try each rom to see if it will work.

I spent more time on the software than building the box! I am no programmer just an ordinary car mechanic so I have learnt a lot from this project. This is a very helpful site for programming

There is plenty to do to get all this working from installing the operating system to the configuring the controls but its definitely doable for even an amateur like me. I found it was always important to keep a backup up just in case so I wouldn't lose all my hard work.

This project was created with ideas and guides from various sources (experts of course) that are linked throughout this Instructable.



l3eOriginal made it! (author)2016-08-02

Thanks for all the instructions! I made one and made a few "improvements" as you suggested a better screen. I also find AA batteries to have more mAh. Thanks again here is a link to my build.

Distorted-Glitch made it! (author)2016-07-07

What are the names of the "assorted switches" and "wiring and socket"? i'm trying to make this but i can't make any wild guesses

SamN2 made it! (author)2015-02-04

could I just use jumpers (female with one end striped) to hook directly to the pi's gpio pins for the controls

(search breadboard jumper wires)

IanS105 made it! (author)IanS1052016-04-01

You could. google the arcade gpio for raspberry pi layout...

IanS105 made it! (author)IanS1052016-04-01

You could. google the arcade gpio for raspberry pi layout...

steven.dittenhauser made it! (author)2015-03-29

Im new to the computer world lol but how do i get mame on the pi 2

IanS105 made it! (author)IanS1052016-04-01

You need to download the retropie image and flash that to your sd card.

goldminermn made it! (author)2016-03-21

Are you able to use an old computer monitor for this project?

SamN2 made it! (author)2015-02-04

I may try to make a scaled up version that doesn't need a battery (120 volt power bar and transformers or a modified atx supply)

with a full sized cabinet with a fullsized screen

im copying the old galaga machine my dad owns for dimensions

SamN2 made it! (author)2015-02-04

could I use standard header hookups from a pc front (they fit in) or jumper leads

instead of the cobbeler

also im thinking of making my own amp to drive larger speakers (high-power darlington)

SamN2 made it! (author)2015-02-04

could this potently be scaled up to a full sized cabinet. (software wise)

also are the sticks hooked up to the gpio or are they hooked up to a usb headder

im researching this for construction class and it would be a cool project that could stay in the room

ValentinY made it! (author)2014-12-27

is it possiable to create a Arcade Machine with Raspberry Pi running RetroPie, and with a two player setup? will it need a power supply or should i consider another option.

66legion made it! (author)2014-09-03

I've only been on instructables a day n checked out a couple of hundred so far of all kinds, this is definitely the coolest thing I've seen so far, something I'd have a crack at when I've got the time n tools. respect ?

TK175672 made it! (author)2014-07-07

12V and -12V makes 24v lol (read about ATX power supplies for negitive voltage) should be marked 0V

shellalbert made it! (author)2014-03-11

a good game box!

but it's not easy for general people to make it.

ArnoldSalvador made it! (author)2014-03-02

Is there an instructions on how to connect the battery to the components?

amulder1 made it! (author)2014-02-12 one for on the wish to do list!

pandaindahouse made it! (author)2013-11-30

just thinking can u attach the buttons to a GPIO extension cord? i am a noob when it comes to GPIO. i am planning to make a controller using arcade buttons and joystick to use with the pi. and then u can connect the pi to to a tv. thanks in advance

krimmy made it! (author)krimmy2013-11-30

It is easy enough to lengthen the wires between the buttons and the GPIO. If you are making a controller unit (similar to a tankstick) the Pi can be neatly fitted into it. Check out
The Pi has HDMI out which is the best way to connect to your TV otherwise the AV and speaker out jacks would also work too. Hope this helps.

wliu3 made it! (author)2013-11-27

Is that a car battery? It is a bad idea to power computers directly from car batteries.

onions57 made it! (author)2013-11-18

could you provide maybe a video or complete tutorial on wiring the buttons and programming them for functionality?

tomzbeast made it! (author)2013-10-06

mate can you build me one of these, I will pay cash and postage + your time

albpara made it! (author)2013-09-07

How did you drill the holes fot the joystick and the buttons? I'm working on something similar and I'm worried about that


krimmy made it! (author)krimmy2013-09-07

I used a standard holesaw in a cordless drill and didn't apply pressure while it cut. The weight of the drill did the job. The trick is to not let the holesaw get hot and melt the acrylic.

albpara made it! (author)albpara2013-09-08

Do you think that is better a hole saw than a forstner bit to drill the hole?

krimmy made it! (author)krimmy2013-09-08

I'm no expert but the holesaw worked for me.

the batman made it! (author)2013-09-02

Looks really cool but it would cost to much for me to make

purpulhaze made it! (author)2013-09-01

This is really cool. I'd like to make one but don't have a scroll saw and won't be in my budget for a while because of other projects I'm working on. If I had some of the dimensions I could out source laser cutting of the acrylic pieces.

Ayce made it! (author)2013-08-29

I've been unable to get this answered by anyone. Can you tell me what version of mame piMAME is based off of?

krimmy made it! (author)krimmy2013-08-29

I found that piMAME runs a version of 0.106

krimmy made it! (author)krimmy2013-08-30

Mame4all uses 0.37b5 roms and advancemame uses 0.106 roms but some are not compatible so you have to try each rom to see if it will work.

Ayce made it! (author)Ayce2013-08-31

Ah, thank you for clarifying that.

SilverJimny made it! (author)2013-08-28

Wow, excellent stuff!

Can we have links to the components please?


krimmy made it! (author)krimmy2013-08-29


SilverJimny made it! (author)SilverJimny2013-08-29


myshoesonfire made it! (author)2013-08-29

You should make a video of you playing it!

Edgar made it! (author)2013-08-28

Incredibly well thought of, and all made using a scroll saw, and heat bending! Your work is an asset to FabLabers to inspire upon! :)
Blogged, of course:

unklegwar made it! (author)2013-08-28

"There is plenty more information that I could put in here."

Please do. I think the point of these posts is to instruct, not just to show off what you made. Links to source the parts, or at least part numbers (not just descriptions), would be very helpful.

More details are needed to make this truly something others could follow.

It's a wonderful project, please make it a wonderful instructable.

AJMansfield made it! (author)2013-08-27

How do you use a bandsaw to cut interior shapes? That does not work. A bandsaw blade is one continuous loop. The device you showed use of is actually a scroll saw (or table jigsaw).

krimmy made it! (author)krimmy2013-08-28

Yes my mistake (amended)

dcms4 made it! (author)2013-08-27

This project should be called "building an acrylic case for a Pi Arcade machine" as you didn't really go into where you got your parts, the software setup at all, how you got games on it, how you interfaced the controls. It was a cool instructable, on how to build a case.

krimmy made it! (author)krimmy2013-08-28


CRASH MA5TER made it! (author)2013-08-26

Hey can you post a video on how to install the components and buttons and joystick

krimmy made it! (author)krimmy2013-08-28

Sorry I don't have a video of how its done but you could try here for reference

Jakearoosta made it! (author)2013-08-27

sweet project!

AJMansfield made it! (author)2013-08-27

A "coin" button? Real coins are way cooler. (And they give you a way of keeping tabs on the amount of time you spend playing...)

phillipnolan made it! (author)2013-08-26

very nice

blvdminss made it! (author)2013-08-26

Great job!!!

iLash made it! (author)2013-08-26

Well done. Great use of an old theme with new technology. Your concept could be well adapted for use as a training tool. You'd make any mum proud! karna.

CRASH MA5TER made it! (author)2013-08-25

Is there any additional information I need to know because I am wanting to build one and does it require roms

About This Instructable




More by krimmy:NaCade - The Naked Raspberry Pi Arcade MachineAll-in-One Solar Home EntertainmentSolar Powered Floor Lamp
Add instructable to: