Introduction: USB MAME Arcade Controller

About: I'm Kojak Durham. I'm a regular guy with a wide range of interests. I'm a former Research Scientist and IT Systems Engineer. I am into all things science and tech. I'm not a hard-core gamer, and in fact, I lik…

This Instructable documents my construction of a USB MAME controller for playing game ROMs via MAME. This controller is connected to a PC via a 12' USB cable. The PC is then connected to my TV.

Step 1: Gather Your Supplies and Tools

iPac2 - early version that does not have onboard trackball inputs

Available at Amazon:

Happ Controls buttons and Joysticks

Available from Amazon:

1 Sheet of 1/2" MDF

1/2" Square Wood Dowel for Added Structural Stability

Wood Screws

Wood Glue

Ethernet Cable for Button Connections

Wire for Ground Loop

Crimp Connectors

Textured Contact Paper



Compound Miter Saw


1 1/8" Paddle Bit

Controller Hole Template

Step 2: Lay Out and Cut the Top and Bottom Panels

The first step is to decide if you want a single player controller or a two player controller. I opted for two players with the joystick, and 8 buttons per player to give me the maximum flexibility on ROMs. Some games that came out around the time of the demise of the arcade actually used this many buttons. Usually, 6 was the maximum number, so you can save a little bit of money on buttons if you don't think you'll ever need those extra 2 buttons (per player).

Because I wanted to have 2 players, I had to take that into count when designing the button layout, and thus the overall size of the top panel. It's best to plan everything on paper prior to doing any cutting. This will save in the frustration level later on, believe me. If you opt to go with 2 players, make sure you give enough space between the two players so that you aren't banging shoulders while playing simultanously.

Also, I wanted to show that even though you may not have a workshop, you can likely find a place to do the work. I did mine out beside my house by the trash cans (and partly in the garage when it started raining).

Step 3: Cut the Front, Back, Bottom and Sides

Because I wanted my control panel to be ergonomic, I decided to have a gentle slope down at the player side, so I took that into account when cutting the width of both the top and bottom panels, and then used those lengths as a guide when cutting the angle on the sides. This is where a compound miter saw really came in handy. You can do all of the cuts by hand using a miter box, or even a jigsaw, but my purchase of a compound miter saw was one of my best decisions, as I use it fairly regularly.

Step 4: Fit the Front, Back, Bottom, and Sides Together, Then Cut and Attach Support Struts

Get your measurements, and after cutting, fit everything together to make sure all the cuts were done correctly. Once you're sure you have everything properly cut and fitted, glue and screw the support pieces to the Front, Back and Side Panels. DO NOT ATTACH THE BOTTOM PANEL.

Note, the measurements on the bottom panel are correct in the third picture. The bottom is sitting a little off-set in the image.

Step 5: Get Your Button Layout and Transfer It to Your Top Panel

I used an online MAME website to get the button layouts ( This is a must, as the button layouts are designed in a CAD program, so the spacing is perfect. No measuring on my part had to be done at all, with the exception of where on the panel to place the layout. Once I had the layout placed, I simply used my 1 1/8" spade bit to make a small hole in the indicated place on the layout, thus making a small hole in the MDF panel. I did a test fit of a button on a piece of scrap wood leftover from cutting the angles on the sides, just to be sure of the fit before I cut all the holes.

Step 6: Drill, Drill, Drill...

Once you have the small holes for your button layouts marked, it's time to drill...and drill...and drill...

Step 7: Layout the Game Control Buttons and Drill Them

These include the 'Coin', P1, P2, etc. buttons. My panel used 8 of these buttons to fully control MAME.

Step 8: Router the Top Edge, If Desired

I wanted to make my controller as close to an actually arcade machine as possible, so I borrowed a router from a friend and using the appropriate bit, routered the edge. I didn't do a great job, but it's acceptable. I had the bit set too low, so it cut an edge on the outer edge of the wood. It will be covered with a thick covering, so it won't be noticeable when complete.

Step 9: Cover the Controller

I chose to use a textured contact paper. It was cheap, and I think does a good job.

Step 10: Cover the Top, Cut the Button Holes, and Mount the Buttons and Joysticks

Make sure to pull the contact paper tight, or you'll have wrinkles in it that won't come out. You can see that mine actually came loose a bit, due to not using any additional adhesive. I'm not too concerned about the wrinkles, but they are present. Using a spray adhesive when mounting the contact paper would eliminate these wrinkles.

Step 11: Ergonomics Check

I tested the ergonomics again, just to make myself feel good about the hole position. Perfect!

Step 12: Wiring the Buttons and Joysticks and Mounting the IPAQ Board

This is why you leave the bottom off when constructing the controller - so you can do the wiring, and have access to the internals later on if something goes wrong, of if you want to make changes (see the Conclusion of this Instructable for details).

The wiring diagram came from the iPAQ software, which can generate your wiring based on how many buttons and joysticks you plan on installing. I printed it out so that I'd have a reference to follow while doing the wiring work. I personally used Cat5e network cable for the positive leads, as I had a ton of it laying around, and because there are 8 strands of cable in each one, I could use one cable to 8 connections. I think it made for a neater install. I just made a long, multi connection cable for the ground. The iPAQ is USB, so

Step 13: Conclusion

Because I used a USB-based iPAQ controller board, I'm connecting it to a HTPC (home theatre PC) that was already connected to my TV. I just plug the unit into the front USB port and fire up MAME, or whatever emulator program I want at the time. The benefit of building the unit this way, is that I can just unplug the unit when we're not using it and store it away in a closet, or behind the baby gate in the picture, to keep it from getting damaged.

I like the flexibility of having the controller separate from a bartop or full-sized MAME device because of this, but in the future, my plan is to install a Raspberry Pi 3 or 3b running RetroPie into the interior with the iPAQ controller board, and then just run an HDMI cable out. The downside of this is that by doing so, I will need to install a power connector to the back of the controller for the RPi, as well as an HDMI socket, as well as cutting some holes for ventilation, as RPi 3s run hot. I might actually install an active fan on one side of the back of the controller, and an exhaust hole on the other.