My MAME Controller

Introduction

I am all about being a kid in an adult's body. I grew up playing video games and I'll probably die playing video games. The only thing is, games nowadays generally SUCK. I mean once you've seen Doom/Quake/Half-Life/Unreal, you've seen all the first-person shooters you can handle. Once upon a time, creativity RULED. Graphics and audio weren't life-like, which forced programmers to use their imaginations in creating new environments unlike anything ever seen. Like I mentioned above, today is all about so-called reality gaming. It was cool for like, 10 minutes...but in the "Golden Age of Video Games", I lived in the abstract worlds of Asteroids, Pac-Man, Tempest, and Donkey Kong.

Then a couple of years ago, a co-worker mentioned that he'd found a program that emulated the classic video games called MAME--Multiple Arcade Machine Emulator. It was simply amazing. <chorus of angels singing> It played some of the earliest (but still most playable) games and supported around 300 titles.

To make a long story short, I changed jobs and more or less forgot about MAME for a while...

Then I rediscovered MAME. It had grown considerably. It now supports a staggering thousands of games--some as recent as the late 1990s! Needless to say, I was hooked all over again...but this time I wanted something a little different, a little more. A little more like the real thing! I could already play all of my favorites but using the keyboard and/or mouse left me short of the full experience. I needed a controller that could fully emulate the feel of those games.

Research, research, research... I scoured the Net in a way that few could for information about where, what, and how I could build one. Sure, I found "the easy way out" but it wasn't quite to my liking...besides I knew it would be fun to build myself and cost me less.

That's when I discovered Build Your Own Arcade Controls FAQ, or BYOAC FAQ for short. It has an excellent combination of content, links, and message board. I asked a few newbie-like questions that were not only answered by some helpful and polite folks but quickly as well!

First I had to choose how I was going to get it to talk to the PC. There are different ways to wire up the controller for it to connect to the PC, but I decided to try scrapping an old keyboard. Any other method was going to probably add $40-100 onto the cost of the project and I was trying to stick to as close as possible to a budget of $100. To use an old keyboard meant mapping out the matrix of the keys, but I had some excellent help. I've made the matrix I used available as well.

Next, I needed to decide on what controls I was going to use. Joysticks and buttons were cheap, but trackballs (like what would be used for Centipede) and spinners (for Tempest) were either hard to find or expensive. (Maybe I'll build another one in the future that has these!) So the question really became, how many joysticks and buttons did I want to use and how I was going to lay them out? I found out that joysticks and buttons are made by Happ Controls and Wico. 2 joysticks would allow for many 2 player games and one person classics like Robotron, where you needed 1 joystick to move and the other to fire. Buttons required more careful thought... I calculated that I would need 8 for use in gameplay and might as well get 7 more for special functions (insert coin, 1 player, 2 player, quit, options, select, and pause) for a total of 15. Seemed like a bit much but I couldn't figure out a way to pare the number down.

I had access to a copy of Visio at work, which I used to diagram the layout of the joystick and buttons. I also sketched out the approximate dimensions and sizes of the enclosure I would need to house my controller. Keeping it simple definitely seemed like the way to go.

All of the other parts (wood, Lexan, wiring, connectors, etc.) came from 2 places: my neighborhood Home Depot and an awesome electronics surplus store, Skycraft. Skycraft carries thousands of every little doodad, gadget, thingamabob, and doohickey you might ever need. It's one of those places that you just have to see in person... And I have made the list available if you want to see exactly what parts and tools I used.

With all of the parts gathered finally, a good friend of my brother offered the services of the tools in his garage. We spent a couple of hours sawing, nailing, drilling and routing away. It surprisingly took about the time I thought it would and didn't require any trips for extra parts. I left his house with a bare plywood enclosure. I then painted it with primer and then a sprayed few coats of gray that dried quickly in the Florida summer heat.

I spent several hours the next night wiring it up. It was painstaking work and I often double-checked my work. It was time to test it and although there were a few mixups, I had it working like a champ.

MISSION ACCOMPLISHED!

Pictures

[Note: Click on any image to see a larger version.]

In its finished glory See what's inside... Inside close up #1 Inside close up #2 Inside close up #3

Parts List

From Happ Controls:

QTY Description Part #
2 Super Joysticks 50-6084-00
2 Red microswitch pushbuttons 58-9100-L
1 White microswitch pushbutton 58-9111-L
1 Player-1 microswitch pushbutton 58-9111-L1PLY
1 Player-2 microswitch pushbutton 58-9111-L2PLY
2 Blue microswitch pushbuttons 58-9122-L
1 Green microswitch pushbutton 58-9133-L
2 Purple microswitch pushbuttons 58-9144-L
2 Yellow microswitch pushbuttons 58-9155-L
1 Black microswitch pushbutton 58-9166-L
2 Orange microswitch pushbuttons 58-9177-L

From Home Depot:

QTY Description
1 2ft x 4ft x 3/4" BC grade plywood
1 can of spray primer (white)
1 can of glossy gray spray paint
2 2.5" hinges
2 magnetic cabinet catches

From Skycraft:

QTY Description
40ft 22 gauge red multistrand wire
40ft 22 gauge black multistrand wire
46 3/16" blade connectors
23 18-22 gauge butt connectors
23 1N4148 diodes
8 stainless steel bolts, washers and nuts
3 8x2 wiring blocks
5 rubber feet
5 bolts, washers and nuts for rubber feet
1 1ft x 2ft x 1/8" Lexan sheet**
13 wire harnesses (various sizes) and wood screws

** I chose Lexan over plexiglass after reading how Lexan could be cut/drilled (slowly and carefully) with same saws/drillbits as wood. Plexiglass requires special tools.

Other necessary items:

small wood screws
keyboard encoder from old/unused keyboard
floppy/IDE/SCSI ribbon cable

Tools list

Table saw
Drill press with 1.25" paddle bit**
Router with wide bit for removal of bulk wood underneath joysticks
Pneumatic nail gun***
Power hand drill
Various grades of sandpaper
Pushbutton wrench from Happ Controls (53-8002-00)
Wire cutters
Wire strippers
Wire crimpers
Needlenosed pliers
Soldering iron
Solder
Screwdrivers
Utility knife

** I used the paddle bit to cut the Lexan as well. Be very careful, have your Lexan clamped down, and drill very slowly through it--otherwise you risk damaging yourself, the drill and the Lexan (in order of most to least important).

*** It was much easier using a nail gun to fasten it together than drilling holes to mount metal L-brackets with screws.


Keyboard Matrix

[NOTE: This is for a Compaq/NMB 101-key. It is very unlikely that this will work for any other model keyboard!]

0 1 2 3 4 5 6 7 8 9 A B C D E F
0 ESC     G H   '"       KPD 0   L ALT UP KPD .  
1 TAB CAPS F3 T Y F7 [{ BKSPC ]} KPD 4 KPD 5 L SHFT   KPD + KPD 6  
2 `~ F1 F2 5% 6^ F8 -_ F9 =+ DEL INS     HOME PG UP L CTRL
3 1! 2@ 3# 4$ 7& 9( 0) F10 8* F11 F12   PRT SC END PG DN  
4 Q W E R U O P   I KPD 7 KPD 8   SCR LK   KPD 9  
5 A S D F J L ;: \| K KPD 1 KPD 2     KPD EN KPD 3  
6 Z X C V M .>   ENTER ,< NUM LK KPD / R SHFT   PAUSE KPD * R CTRL
7       B N   /? SPACE   DOWN RIGHT   R ALT LEFT KPD -  

Matrix Legend
  Control keys
  Insert coin, 1P, 2P
  Joystick 1
  Joystick 2
  Buttons
  Unassigned