In 2014, I decided I wanted to build an arcade machine with a custom cabinet that could house my gaming consoles and allow players to play games on any of them using custom arcade controller. I figured the custom controller would be the hardest part (especially since at that time the Xbox 360 did not accept basic HID controllers), so I touched up on my electrical engineering and built one. My prototype device used a Teensy 2.0 micro-controller and spare arcade parts housed in plastic ware taped over the breadboard (shoddy, I know...). Once I got it working, I designed and fabricated my own circuit board, button panel, and housing. I added a pinout on the board for a three digit display that could be used as a counter or score display. By default, the firmware uses the display as an actions-per-minute readout, which I thought might be a worthwhile addition to the arcade scene (traditionally this metric is used in real-time strategy games like StarCraft). You can see snapshots of the process below:
Disclaimer: I am not a professional electrical engineer.
Disclaimer: I am not a professional electrical engineer.
Here's the prototype in action:
Once I had a working circuit and firmware, I needed to prototype the panel and button layout to make sure it felt comfortable. Slagcoin had many subtly different dimensioned button layouts and a lot of other helpful information. I used Inventor and a water jet to cut out this test layout panel.
I was pretty happy with the first test layout panel. Since I wanted to build several controllers without having to do all of the custom wiring and soldering for each one, I designed a custom circuit board using the same microcontroller as the Teensy 2.0 (ATMEGA 32U4). This design featured a breakout of some of the pins which I wanted to use to control a three-digit display.
I built a trapezoidal housing for the controller and programmed the three-digit display as an actions-per-minute counter. The board connects to the computer via USB and the firmware registers the controller as a generic human interface device (HID). Here's the final assembly working in MAME:
The design and panel layout worked pretty well. If I were to build one of these again, I would consider using slightly thicker aluminum for the top panel and flat head screws instead of the button head screws in the corners. They don't get in the way where they are, but I think it would look prettier.