Growing up in the 90s I experienced the last days of the 'arcade era.' I grew up with games like Marvel vs Capcom and Mortal Kombat in my local arcade. Arcades still exist but they are different creatures now.
MAME is a software platform that allows you to emulate arcade games. Ever since I heard of it I wanted to make my own arcade cabinet and share my favorite arcade games with my kids. Initially I planned to build the cabinet from scratch but I recently moved to a different city and lost my workshop. A co-worker suggested I purchase a pre-made Arcade 1up machine and simply convert it to run MAME. This was a fantastic approach since I could complete the whole project in my apartment over the weekend. I only ended up spending around $390 on this project as well, also making it one of the cheapest options for a home MAME cabinet.
First, here is a list of hardware I purchased as well as the cost.
Street Fighter 2 Arcade 1up Cabinet - $249.00
The first thing I needed to buy was the arcade cabinet itself. Arcade 1up makes several 3/4 scale arcade cabinet replicas that you can easily convert. I ended up choosing the Street Fighter II cabinet for two reasons. It already had the button layout I wanted and Street Fighter II is an awesome game!
Raspberry Pi 3 - $36.97
I would need another Raspberry Pi. I have so many of these things by this point!! I went with the older Raspberry Pi 3 instead of the newer 4 simply because RetroPie is not officially supported on the Raspberry Pi 4 as of yet.
Happ Buttons and Joysticks - $45.95 (With Shipping)
The buttons and joysticks that come with the cabinet are not completely terrible but they are not amazing either. I decided to replace all of them with authentic Happ buttons and sticks. So 14 buttons and 2 arcade sticks were purchased from ebay.
2x USB encoders - $9.88
The buttons and sticks need to be plugged into something that can be plugged into the Pi so I also needed 2 USB encoder boards.
LCD Control Board - $29.88
I wanted to reuse the LCD panel that came with the arcade cabinet so I purchased a LCD controller board.
Exterrior USB ports - $10.80
Finally, in order to play old console games one the same cabinet I bought an adapter to extend the Pi's USB ports to the outside of the cabinet. This way I could plug in my USB SNES controllers when I wanted to play an old Super Nintendo game.
I already had an SD card, a power supply for the Pi, and a set of old computer speakers.
The Arcade 1up cabinet itself is built just like any Ikea furniture. Putting it together is quick and easy. After the cabinet was assembled, we enjoyed a little bit of Street Fighter.
Next I pulled off the control panel and removed all the buttons and joysticks. It was here that I realized that the quick disconnect ends that came with the USB encoder cables were too small for the Happ buttons. Everything would need to be soldered. Not a huge problem. Simply cut the quick disconnect ends off of the cables, expose a bit of the copper wire, and solder them to your buttons. Most arcade buttons have three prongs. Two that come out of the side, and one on top. Wire one of the cables to prong on the top, the other to the prong on the side closest to the top. It does not matter which wire you solder to each prong, but I stayed consistent for my own sanity. In total I soldered 44 wires, so grab a few beers and put an entertaining show on the TV.
After this was done, I just installed the buttons and joysticks onto the control panel. There is nothing confusing about this, so no details needed I think.
Finally, plug all those cables into the USB encoder board. You will want to be consistent with both boards to avoid problems later on. For example, the 'light' punch button for player one went to the plug labeled 'K1' on the first USB encoder and the 'light' punch button for player 2 went to the plug labeled 'K1' on the second USB encoder. To make sure everything worked at this point, I simply plugged the encoders into my desktop computer and tested that the buttons and joysticks did what I thought they should do. I moved the cables around until I was happy.
I decided to add two more buttons to the front of the cabinet to act as 'coin' buttons. I also added a couple USB ports to the same area to make playing old NES and SNES games feel natural. Before drilling, I taped off the area with painters tape and clamped the front panel to a piece of wood. This helps ensure a nice clean hole is drilled. For the Happ buttons I used 1 1/8 spade bit to drill the holes.
Here is the control panel all done!
For the LCD panel, just follow the included instructions. Once you remove the
little metal box from the back of the panel and disconnect the wires it becomes
pretty obvious about what goes where.
I decided to gut a pair of crappy computer speakers to make use of it's AMP.
This required nothing more than to remove the original speaker from the computer
speaker, solder those wires to the wires that used to go to the other speaker together since we are
going to have mono sound. Then run wires from the speaker on the control board
to the board in the computer speaker. If you don't want to deal with all of this,
you can buy an amplifier online but I am cheap so I try to make due with what I have
on hand if possible. Here are pictures to help make better sense of it.
Everything gets plugged into the Raspberry Pi.
For software I used a RetroPie image. This image already includes all the needed emulators and provides the Emulation Station software which is an attractive front-end. You can get the image from retropie.org.uk.
There are many, many guides on how to properly set up RetroPie so I will not re-invent the wheel here. Your USB encoders should be detected as gamepads and the first time you boot you will be prompted to set up the controls. Simply follow the on screen prompts. After you have added all the game ROMS you wanted, you are basically done with the project!
One last detail still bugged me though. The on/off switch and volume switches did
not work. Thankfully there is an easy solution for that. These buttons can be plugged
into the Raspberry Pi's GPIO pins and still perform their original function. A fellow
tinkerer going by icculus already figured this out for us so head over to his blog
and follow those instructions!
Use zip ties, hot glue, double sided tape, and whatever else to clean everything up and you are done!
This was a fun project and its been great playing these old games the way they were meant to be played! If you have any questions please drop me a line at firstname.lastname@example.org