Mick's MAME Arcade Controls

Created on: Thursday 26 January 2006
Updated on: Sunday 05 February 2006
Updated on: Monday 27 February 2006: added link to Page 2


I've been a fan of MAME for a good few years and I've always wanted to do it justice by creating a dedicated arcade cabinet. I decided to go for it now my kids are old enough to play Gauntlet! I was going to use my Xmas and birthday allowance to get a GP2X handheld Linux console but I decided I'd be better off spending my time and creative efforts on a large tangible project with an end product that I can share with my family rather than spending more time coding!

thumbs/img_0505.jpg
I placed an online order on Monday (16 Jan 06) with Ultimarc for two Mag-Stik Plus joysticks (4-8-way selector and magnetic self-centering mechanism) and eight pushbuttons and I recieved them on the Thursday morning!

thumbs/img_0506.jpg
As it happens I was at home to receive the package on Thursday morning looking after Ruby, my eldest daughter, who was suffering with a high fever from tonsilitis :( .

thumbs/img_0507.jpg
Whoa! I'm impressed with the engineering quality of these things.

thumbs/img_0508.jpg
2 players! My proposed layout giving each player 4 buttons.

thumbs/img_0509.jpg
This is what I'm going to use to provide the controls with an input to the computer: it's a keyboard controller out of an old 104-key Cherry keyboard (circa 1993). As you can see, it has an AT plug so I have added an AT-PS/2 adapter.

thumbs/img_0511.jpg
Here's the back. I've been playing with keyboard controllers as part of my ongoing DefenderBoard project (a keyboard for playing Defender!).

thumbs/img_0513.jpg
Matrix ribbon connector A - it has 8 conductors.

thumbs/img_0512.jpg
Matrix ribbon connector B - it has 19 conductors. I started mapping the keyboard matrix by shorting out pairs of connectors and seeing the keycodes produced. The controller has an 8 x 19 matrix giving a maximum of 152 combinations.

thumbs/img_0514.jpg
Cherry.

thumbs/img_0515.jpg
board detail

thumbs/img_0516.jpg
mapping the matrix by shorting out pairs of coordinates

thumbs/img_0517.jpg
mapping the matrix

thumbs/img_0518.jpg
I broke open the ribbon connector shrouds to expose contacts for soldering

thumbs/img_0521.jpg
I soldered tails onto all contacts

thumbs/img_0522.jpg
then hid my ugly soldering!

thumbs/img_0523.jpg
here's matrix axis B

thumbs/img_0526.jpg
prototype 1 panel woodwork

thumbs/img_0529.jpg
back of prototype 1

thumbs/img_0541.jpg
size of prototype 1 600mm x 300mm - will be shaped and coated

thumbs/img_0550.jpg
Shaped front profile and surfacing with neoprene.

thumbs/img_0551.jpg
Neoprene surface.

thumbs/img_0552.jpg
From... discarded mousemats!

thumbs/img_0553.jpg
Slightly untidy wiring!

thumbs/img_0554.jpg
Ruby is the red wizard!

thumbs/img_0556.jpg
Wood paneling installed for front and sides.

thumbs/img_0557.jpg
I need to do something about that wiring!

thumbs/img_0558.jpg
Added prototype cardboard button-box for Menu, Pause, Escape, Coin1, Coin2, etc.

thumbs/img_0560.jpg
A new wiring strategy: connection blocks for each set of controls.

thumbs/img_0561.jpg
View from back with new wiring - controller not yet fitted.

thumbs/img_0562.jpg
Wed Feb 8 2006: wiring finished - now using telephone engineers' patch wire

thumbs/img_0564.jpg
A tidier job. The wire is solid-cored so stays nicely where routed.

thumbs/img_0565.jpg
All required key contacts are patched into the matrix.

thumbs/img_0566.jpg
I did want to use krone punch-down idc terminal blocks but didn't have any to hand

thumbs/img_0567.jpg
Defender. I use the red joystick for up & down, the red button for reverse, and the right-hand buttons: blue = smartbomb, orange = fire, yellow = thrust, green = hyperspace.

thumbs/img_0572.jpg
I'm not fully decided how to integrate the button box into the panel (if at all). I guess I'll wait until I'm building the cabinet.

Continued on Page 2...