Introduction: NaCade - the Naked Raspberry Pi Arcade Machine

Picture of 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

Picture of 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 http://pimame.org 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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

Picture of 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 http://learn.adafruit.com/retro-gaming-with-raspberry-pi/buttons.

It was a lot of trial and error but in the end I used this script which I modified to suit my button layout https://github.com/adafruit/Adafruit-Retrogame/blob/master/retrogame.c.

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

Picture of 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 https://filezilla-project.org 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 http://elinux.org/RPi_Beginners.

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.




 





Comments

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.

https://imgur.com/gallery/83pOE

https://imgur.com/gallery/83pOE

Distorted-Glitch (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 (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 (author)SamN22016-04-01

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

IanS105 (author)SamN22016-04-01

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

steven.dittenhauser (author)2015-03-29

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

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

goldminermn (author)2016-03-21

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

SamN2 (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 (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 (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 (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 (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 (author)2014-07-07

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

shellalbert (author)2014-03-11

a good game box!

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

ArnoldSalvador (author)2014-03-02

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

amulder1 (author)2014-02-12

Wow...cool....another one for on the wish to do list!

pandaindahouse (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 (author)pandaindahouse2013-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 https://m.instructables.com/id/MAMEFrame-The-battery-powered-MAME-system/
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 (author)2013-11-27

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

onions57 (author)2013-11-18

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

tomzbeast (author)2013-10-06

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

albpara (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

Thanks!!!

krimmy (author)albpara2013-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 (author)krimmy2013-09-08

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

krimmy (author)albpara2013-09-08

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

the batman (author)2013-09-02

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

purpulhaze (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 (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 (author)Ayce2013-08-29

I found that piMAME runs a version of 0.106

krimmy (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 (author)krimmy2013-08-31

Ah, thank you for clarifying that.

SilverJimny (author)2013-08-28

Wow, excellent stuff!

Can we have links to the components please?

:)

krimmy (author)SilverJimny2013-08-29

added

SilverJimny (author)krimmy2013-08-29

Thanks!

myshoesonfire (author)2013-08-29

You should make a video of you playing it!

Edgar (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:
http://faz-voce-mesmo.blogspot.pt/2013/08/prata-e-cera-em-3d-um-arduino-para.html

unklegwar (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 (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 (author)AJMansfield2013-08-28

Yes my mistake (amended)

dcms4 (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 (author)dcms42013-08-28

Thanks

CRASH MA5TER (author)2013-08-26

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

krimmy (author)CRASH MA5TER2013-08-28

Sorry I don't have a video of how its done but you could try here for reference http://www.slagcoin.com/joystick/mounting_layering.html

Jakearoosta (author)2013-08-27

sweet project!

AJMansfield (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 (author)2013-08-26

very nice

blvdminss (author)2013-08-26

Great job!!!

iLash (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 (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

342,725views

1,295favorites

License:

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