GameRoom Articles
GameRoom Web Store
RetroBlast Reviews
RetroBlast Articles
Game Room Links
File Downloads
Site and Contact Information

IPAC at an angleIPAC Encoder Review


One of the most important parts of creating a MAME cab is connecting the arcade buttons and joysticks to the computer — without working buttons or a joystick, you just don't have an arcade machine! Since the PC can't accept arcade controller input directly, you need to adapt the button and joystick input into a format that the PC can understand.

MAME by default interprets keypresses on your PC keyboard as arcade buttons, so to use real arcade buttons with MAME, you in essence need to convince the computer that your arcade buttons are actually keyboard keys (yes, it's a bit of a roundabout, but it works!). Basically, there are two ways of accomplishing this — by “hacking” (literally) a keyboard controller chopped out of an old keyboard and decoding out the keyboard matrix (which inputs have to be connected to register a specific keypress), or by using a custom designed keyboard encoder such as the I-PAC, by Ultimarc. The I-PAC is, in my opinion, the better of the two solutions.

The IPAC Hardware

The I-PAC is a relatively small circuit board, with terminal strips along the edge that allow you to wire up to 26 inputs (52 on the I-PAC4). It acts as a keyboard encoder, and will show up as a keyboard in the Device Manager when connected to a Windows-based PC — it even uses the default keyboard drivers. The I-PAC supports PS/2 and USB connections, and has a pass-through connector to allow you to add a PS/2 keyboard (which will work even if the I-PAC itself is set to USB mode).

The I-PAC2 (26-input) Keyboard Encoder

The I-PAC4 (56-input) Keyboard Encoder

The I-PAC is designed to allow all inputs to be active at the same time (in other words, no “ghosting” or blocked characters if multiple inputs are pressed simultaneously, which can be a problem with using an encoder removed from a real keyboard.) It even includes a “shift” key feature that allows each button to return an additional keypress when combined with a designated “shift” button.

The shift feature effectively doubles the number of possible inputs, but it does have some drawbacks. The first drawback is that the shift key must be pressed and held while pushing the second button. This is not easy to do during gameplay, which basically limits the shifted keypresses to the “administrative” features of MAME (such as F11 for FPS, F12 for screen shot, etc.)

The second drawback of the shift function is that the button that is designated as the Shift key will not register a keypress unil it is released. The reason for this behavior is so that the I-PAC can wait for a second button to be pressed — if a second button is pushed, the shifted keypress for that second button is sent, otherwise if the Shift button is released without a second button being pressed then the Shift button's assigned keypress is sent.

Neither of these drawbacks is major, and the shift-key function really allows you to use the buttons on your control panel efficiently, since you don't have to dedicate buttons on the panel specifically for the lesser-used MAME keypresses.

So, how do you assign which MAME keypresses go with which buttons? That brings up one of the major features of the I-PAC — it is programmable. You can assign any keypress you want to any button input on the I-PAC, and can even designate which button will act as the “shift” button. Your programmed button settings are stored in flash memory, so they are retained even when there is no power.

By default the I-PAC comes pre-programmed with standard MAME key assignments, but if you wish to change any or all of the key settings, all you have to do is to move a jumper on the I-PAC from “MAME” to “ALT” and you can then re-program the I-PAC with any key assignments you wish.

One other interesting option for the I-PAC is the ability to attach LEDs to the unit that function like the indicator lights on a normal keyboard. Since MAME uses these LEDs for game-specific functions (Millipede uses them to indicate if you're playing a one or two player game, for example), the ability to mount the LEDs on your controller and drive them from the I-PAC is a very nice option to have.

SlikStik and the I-PAC

The SlikStik arcade controller used in my MAMEframe cabinet uses an I-PAC controller, which interfaces all of the buttons and joysticks on the controller, with the exception of the two mouse buttons (which are controlled by the trackball unit).

I've used the I-PAC configured for both PS/2 and USB operation, and it has functioned well in either mode. The initial I-PAC supplied with my first SlikStik Classic unit had a mistake in the programming preventing the unit from saving new key setups, but the replacement has functioned flawlessly.

Update (1/17/02): I received an email from Andy at Ultimarc in which he explains the reason for the defective I-PAC:

From: Andy Warne
Sent: Thursday, January 16, 2003 4:18 AM
To: 'Kevin Steele'


Thanks for the positive review!

I also had a look at the Slikstik review. I was very disappointed to see that you got one of the units with the faulty I-PAC chips. This was a very unfortunate incident, probably the only real "disaster" we had since starting to sell the I-PAC and doubly unlucky that the bad chips got out to one of our most valued customers.

What happened was this: I was working on some improvements to the I-PAC code to ensure the download worked in XP, and for debugging purposes, commented out the line of code that actually does the EEPROM save. Then a batch of chips got programmed with this test version instead of the release version. There were about 15 chips involved and, sadly, Slikstik had just placed an order, so got 10 of them. Reading your review brought back memories of that awful incident! At least it was sorted out OK in the end.


When I started getting “ghost” keypresses on my SlikStik (a problem that was later tracked down to a defective wiring harness), I did a lot of multiple-keypress testing in an attempt to reproduce the problem. I also disconnected and reconnected a lot of wires on the I-PAC, trying to isolate where the problem originated. (I have to say I was impressed at how easy it is to connect wires to the terminal strips on the I-PAC — simply insert the wire into a small hole and tighten a small screw. If I was setting up a control panel from scratch it would have taken just minutes to wire up the entire I-PAC.)

Anyway, after I had repaired the wiring harnesses, I was completely unable to create ghosted or blocked buttons even when I mashed multiple buttons as rapidly as I could (I actually got bruises from pushing the buttons so rapidly!) This is a testament to the I-PAC's claim of no ghosting or blocked keypresses. It can handle all 26 inputs being pushed simultaneously without a problem (of course, not even two people could accomplish pushing all 26 buttons at once!)

Programming the IPAC

The I-PAC is extremely easy to program, thanks to programming utilities available for DOS, Windows, Macintosh, and even Linux. Not only that, but you can even program the I-PAC using just a simple text editor (more on this later!)

WinIPAC Programming Utility

All of the utilities are intuitve and easy to use (even the DOS program has a graphical interface) — assigning keycodes to your buttons using an attached keyboard is a cinch.

As I mentioned earlier, you can also program the I-PAC using an “interactive” programming mode that is accessed from a DOS Window or a text editor. Basically, you can activate a built-in programming system by pressing CTRL-ALT-P on a PS/2 keyboard attached to the I-PAC. This activates the interactive programming mode and the I-PAC will output a text menu to your text editor.

From this menu you can list the current key assigments, test the buttons attached to the I-PAC, save new key assignments, or even revert key settings to their defaults. This is a very handy built-in utility package to have, especially the button testing feature. If you think you may have a stuck button, the button tester will show you immediately which button is being depressed.


I tried to think of some negatives about using the I-PAC, and aside from the bad flash memory programming in the first I-PAC I received, I cannot think of anything to complain about. The I-PAC sells for $39 US (plus $12 shipping from England), and is (in my opinion) worth every cent. It is by far the quickest, easiest, and most comprehensive method for adding arcade controls to your MAME cabinet that is available today. If you're thinking of building your own arcade controller or cabinet, put the I-PAC at the top of your shopping list.

Return To Reviews