This isn’t a big hack, but it’s simple and something that can be done by anyone wanting to convert an arcade machine to MAME. I started out with a 3-player coin door which is admittedly strange, but the cabinet used to be for Battletoads (a 3 player game). I spent a long time stripping, cleaning, polishing, painting, and in general restoring this coin door. Then I moved the cabinet 500 miles to college and 500 miles back. It is ‘real arcade authentic’ now with it’s distressed look (I got really lazy).
The coin mechanisms were purchased off of the BYOAC forum and have micro-switches that trigger any time a coin is accepted. The door was originally lit by incandescent bulbs but I have replaced those with LEDs so I could change their power source (I only had 5 volts to work with).
MAME has a standard set of controls that are applied to all games, these controls default to keypresses on a keyboard. For example: Player 1-4 start buttons are the number keys 1-4 and pressing 5-8 simulates putting coins into the player 1-4 slots on a real machine. This list is mirrored here:
Main Keys | ||
5,6,7,8 | Insert coin | |
1,2,3,4 | Players 1 – 4 start buttons | |
9,0 | Insert service coin (Needed by some games) | |
F1 | Enables raster special effects in certain games. | |
F2 | Test/Service Switch | |
F3 | Game Reset | |
F4 | Show the game graphics. Use cursor keys to change the set or colour. | |
F7 | Load a saved game state from a slot number. | |
Shift+F7 | Save game state to 1 of 10 slots. | |
F8 | Decrease frame skip during a game. | |
F9 | Increase frame skip during a game. | |
F10 | Speed Throttle (Makes game overspeed) | |
F11 | Frames Per Second and Frameskip information | |
Left Shift + F11 | Enables the profiler in debug versions. | |
F12 | Saves image of game screen to snaps directory. | |
P | Pause the game | |
Shift + P | Skip one frame forward if paused. | |
Esc | Exit from game | |
“~” or “�” (Above Tab) | Volume Control | |
Tab | Access Mame’s in-game menu | |
Control Keys (Default) | ||
Arrow Keys | Controller (Player 1) | |
Left Ctrl | Fire 1 (Player 1) | |
Left Alt | Fire 2 (Player 1) | |
Space | Fire 3 (Player 1) | |
Left Shift | Fire 4 (Player 1) | |
Z | Fire 5 (Player 1) | |
X | Fire 6(Player 1) | |
R,F,G,D | Controller (Player 2) | |
A | Fire 1 (Player 2) | |
S | Fire 2 (Player 2) | |
Q | Fire 3 (Player 2) | |
W | Fire 4 (Player 2) | |
Not Set By Default | Fire 5 (Player 2) | |
Not Set By Default | Fire 6 (Player 2) |
The actual interface between the coin slots and the MAME computer is a usb keyboard controller ripped out of a Superman Returns keyboard I got for free after rebate back in the day. Some people may complain about interfacing with the key matrix and that it creates ‘ghosting’ problems, but this keyboard only needs 3 keys and they’re almost never going to be simultaneous. The switches are normally open (or I connected them to the normally open contacts) so they simulate keys perfectly.
The whole thing is glued to a playing card (I think it’s a lego basketball card) as a nonconductive substrate and glued to the coin door. You can see I had grander plans for the keyboard controller when I originally freed it from the melted keyboard (don’t leave them in a hot car all summer, they curl nicely). The matrix was reverse engineered the easy way: by tracing out all the conductive paint on the sheets of plastic with different colored sharpies.
This is a really simple part of the project, now go forth and MAME! having an unfinished MAME cabinet is a rite of passage for all nerds.
——ADDENDUM——-
So, apparently when setting up the software a control key is useful. I added one switch behind the player 3 coin up, I wired it in parallel with that switch so you can either have a free coin (for player 3) or control the mame backend with it.