Interfacing
Category: MAME'd Millipede :: 3. Electronics
Beyond the issue of getting authentic video on a real arcade monitor comes the process of playing your games on real arcade controls. The bulk of the work on this aspect was, of course, the building and wiring of the control panel itself (detailed in previous sections). Once you have all of the controls mounted and wired, though, you need to attach them to something that will interface them with the computer running MAME.
People have taken numerous approaches to this process including hacking mice, joysticks, and keyboards. None of these processes seemed totally trustworthy to me, though, and I was excited to read about the I-PAC and Opti-PAC from Ultimarc.
These two products are sold directly by Ultimarc from their website in the UK and are, in my opinion, very reasonably priced. The I-PAC handles buttons and joysticks (including rotary sticks) while the Opti-PAC handles analog devices like trackballs and spinners.
The I-PAC translates button and stick actions into keyboard presses. It is powered by your keyboard (or USB) bus and requires no special drivers whatsoever. Right out of the box it will talk with MAME using the standard key presses such as ALT for fire and cursor keys for their equivalent joystick directions, etc. The standard I-PAC had more than sufficient inputs for my needs with two (three physical wired as two) joysticks, six fire/action buttons per stick, and the usual coin-up and start buttons.
The I-PAC also has the ability to treat the player one start button as a form of shift key and therefore double your assignable keys. I put this to good use by putting such functions as game saving/loading, pausing, etc., on some shifted functions and reducing the number of actual buttons I needed on the surface of my control panel. You can change what inputs produce what keypresses in several ways using a built-in programming function or some freely downloadable programming tools.
The Opti-PAC turns the motion of analog devices into mouse output and, again, requires no unique drivers beyond what your system likely already supports in the way of serial or USB mice. I am using a trackball and a spinner on the serial interface with perfect results. There is no need to do any unique programming on an Opti-PAC, so it's more or less plug and play as long as your mouse drivers are functioning and you follow some simple instructions for the wiring of the devices (discussed briefly in my Control Panel: Wiring section).
The two I-PAC (left) and Opti-PAC boards shown with their pigtail harnesses.
(click to enlarge)
I have both boards mounted in the back of the cabinet of my system. The I-PAC is tied to the PS/2 keyboard port of my host machine and passes back through to the actual keyboard (which will not always be attached now that things are working well). The Opti-PAC is connected to the first serial port (/dev/ttyS0 under Linux) on my system, uses a Microsoft-style serial mouse driver with no acceleration whatosever, and draws its +5 volts from taps on the I-PAC board as illustrated in the picture above.
I did make some changes to my I-PAC button assignments to take advantage of some reassignments I made for AdvanceMAME and AdvanceMENU. They are available as a text file for anyone interested.
The most recent thing I did was wire the coin mechanisms into the coin one and coin two inputs of the I-PAC. Coin mechanisms use the same kind of microswitches as most buttons and joysticks, so there is nothing special about wiring them. This gives me the added ability to drop in quarters or tokens just like the real machines it is built to emulate.


