Build Your Own Arcade Controls

Once you have the controls you want, how do you connect them to your computer...?  Read on.  Be sure also to visit the technical page for some specific tips!


Joystick/Game Port

Keyboard Port - Keyboard Hack Keyboard Port - Keyboard Encoder Keyboard Port - Other Keyboard Ghosting & blocking

Mouse Port

Other Parallel/Serial Ports USB Port Y Adapters

USB Port


A new method of interfacing arcade controls has been added to Happ Controls' product line.  They have three new interfaces that will connect their arcade controls via USB port.  Being USB compliant, they are plug and play, and offer support for Win9x, DOS, and iMAC!  Be sure to check out the serial interface also sold by Happ.

Thanks for the info Peter!


AmigaZoid sent me some information to share...  He found a Street Fighter II cabinet to hack for his arcade project.  To test things out, he hacked a Microsoft Natural Elite USB keyboard to wire his controls to.  He was able to hook up two joysticks with 6 buttons each, and so far has seen no ghosting problems.  His keymap can be found here in HTML or in the original MS-Excel format.  The nice thing is his PS/2 keyboard is still fully functional, and of course his controller is hot-swappable being that it's USB.


Andy Warne sells a keyboard encoder type of interface called the I-PAC (Interface for PC to Arcade Controls).  "The I-PAC is a small board which allows connection of arcade controls such as buttons and joysticks to a keyboard port on a PC motherboard. It was designed to use inside an arcade games cabinet with the PC board also mounted inside. It was designed so that a normal keyboard would only be needed for game loading and configuration, not for gameplay."  It has both a USB and keyboard connector.

It runs $39 plus shipping, which includes the interface, one cable, and US-AUS currency exchange.  Extra interface cable for I-PAC if required: $5. Only required if you plan to swap interfaces between USB and keyboard at some time.

LED Harness: Pre-assembled cable including 3 Panel-mounting Caps Lock, Scroll Lock, Num Lock LEDs with conical black metal bezels.  Plugs into I-PAC. $15 (shipping free with board).

Being USB, it also interfaces with the Mac, and there is a Mac version of the programming software available as well.

It has some special functionality designed for emulator support, and is programmable - visit his web site to read all about it :)


Joystick Port

Greg & Craig - One of the easier methods to interface your controls to your computer is to use the joystick port. The general method used for this is to purchase a joystick or gamepad with the number of controls you want to hook up (4 directions, 2 button/4 button/etc). You then gut the joystick/gamepad, and connect the wires from your own custom controls to the interface board of the joystick/gamepad. Simple? Yes and no :) Greg Bendokus and Craig Johnston have an excellent web page where they give you a step by step how-to on doing this. They use a cheap gamepad as an interface, but their technique could be modified for about any joystick/gamepad you find. The primary drawback of this technique seems to be a limitation on the number of buttons available.

Tim Eckel used and recommends the 3D ProgramPad from InterAct.  It boasts 10 fire buttons, with 18 programmable functions, and a programmable 8-way digital directional pad.  It apparently interfaces with both the joystick port and the keyboard.  The buttons are programmable with included software, allowing on-the-fly reconfiguration of the controls for differnt games.  Gutting this pad and using it as the basis for your input seems to offer a lot of flexibility.

Jerky2 used the Microsoft SideWinder as his joypad to gut.  The advantage of this is that there are unused solder points to connect to, and they are apparently labelled, making it an easy joypad to hack.  Pictures of Jerky's project can be found here, here and here :)

A company called Lead Pursuit markets a product called the JoySwitch.  This device lets you plug multiple joysticks into your system simultaneously and switch between them.  It's gotten good reviews (see their web site for links) but will not work with digital joysticks (MS SideWinder, for instance).

A company called CH Products has a similar product called the Joystick Switchbox.  It's another four port adapter that will handle "all your different peripherals:  joysticks, steering wheels, throttles, gamepads, and pedals."  It's activated by pressing the trigger on the device you want to use - no manual switching involved.  They also say you can connect up to four switchboxes together, giving you up to 13 devices available with the press of a button.  They also do not recommend using digital devices but do not indicate that it *won't* work - just not recommended.  Picture.
PRODUCT NO LONGER AVAILABLE!  PLEASE EMAIL IF YOU HAVE ANY INFO! offers a product called the Joynet Gameport Hub.  It connects digital or analog joysticks, gamepads, and controllers to your PC. Useful for two player, three player, and four player games. Works with analog and digital controllers.  Has been tested with MS-Sidewinder game controllers. Reviews linked off their web site.

Stephan Hans (yet again!) has a circuit on his web page you can build that does the same thing, switching between the joysticks by holding down the first button on the joystick you wish to activate.  The best part about this one is the cost :)

Michael pointed out to me a joystick interface card produced by a company called PDPI.  They have a product called the Lightning 4 (L4) (NOTE:  New link to Act Labs who now sells the interface) that allows up to 4 analog joysticks to be connected at the same time.  Two highlights from Michael's message are that it's 1) relatively inexpensive (New price!  About $73 with all 4 ports enabled), and 2) speedy - less delay on his controls with 4 joysticks than with 1 joystick into his sound card's game port.  I'll let him tell it in his own words:

"I took a look at the controls section of your web site. I see several ways to interface controls to the computer but none of them seem to allow 4 analog inputs except maybe the Happ Controls USB interface. I looked at the price and it is TOO expensive for me($160). I had already bought and dearly love the L4 Digital game card by PDPI (  It was about $112 with the added bracket for the other 2 gameports. This lets me use 4 analog joysticks all at the same time!! This is not some "split" gameport card but it has 4 full fledged gameports. I currently use 4 - PC Arcade Pros by Interact(6 button joystick pads) all at once.  They were cheap($20) at CompUSA. My joysticks also have individual autofire(2-speed settings) on each of the buttons. Also there is no slow down when reading all of the joysticks when connected to the L4. In fact, it takes far less cpu time to read all 4 of my joysticks on the L4 than having just one of them connected to my Soundblaster AWE64. I really think you should add this card to your page. The card does NOT like "digital" type controls though. If you want 4 analog joystick inputs then this is the card to get. If you do put it up on your page can you put that it was recommended by 'Just Michael'. Thanks. According to their web site, you can add a second interface for up to *8* players at once!  The price on their site is currently $25.00 off, don't know how long that price is good for.  They have a technical page that explains why their interface is faster than standard game ports.  Compatible with DirectX and backwardsly compatible with DOS apps written for standard game ports.

Sounds great!  Thanks Michael!

Holger Isenberg has a web page featuring a build-it-yourself Digital Joystick-Interface for the PC-Gameport.  "This interface connects two Digital Joysticks to a standard 15-pin Analog Gameport-Connector. An additional analog port is built in to switch between the analog and digital joysticks without unplugging them."  There's essentially no writeup, just the circuit diagrams.  This is one for the electronics buffs.

Got an email from a fellow named Dave Johnson, about a fairly simple and extremely cheap (5 cents per joystick!) circuit he created to interface joysticks to the PC game port.  Thanks Dave!


Mouse Port

  The mouse port is used for a variety of "turning" types of devices - spinners, trackballs, and steering wheels.  There are two possibilities, using the PS/2 Mouse port, and using the serial port.  Some interfaces exist such as the Hagstrom KE72T, but it turn connects to the PS/2 port so it's really just the two - ps/2 and serial.  With Windows95, you can use both ports at once for mouse control, meaning you can have up to 4 axis controls at once - two X controls and 2 Y controls.  See spinners and trackballs on the controls page for more info.  Another good idea would be to use a serial or PS/2 splitter to have multiple inputs on a single port.

Using two mice

Hagstrom's mouse encoder

Hagstrom has done it again!  Check out the new ME4 encoder, a trackball and spinner ps/2 mouse interface!  This is a 2" by 2.5" module with support for a single axis input from spinner, dual axis input from trackball, and 3 mouse button support.  The trackball controls both X and Y axis obviously, and the spinner can be jumper selected to control either the X or Y axis.  The signal is merged electronically her the X or Y axis.  The signal ir and trackball are active at the same time - no more having to swap cables around or rigging your own merge.  Either the X or Y axis, or both, can be jumper set to be in reverse (handy if your application and the spinner/trackball don't agree on left and right).  The encoder also supports a "Resolution Input" feature -- either set to always providing maximum possible movement for the trackball/spinner inputs, *or* set to allow the resolution adjustment to be made by PS/2 mouse drivers that support that (most MS drivers).

Not mentioned by Hagstrom, but I see no reason why you couldn't take the trackball interface with X and Y axis support, and instead use the encoder for two spinner support, assuming your application supports it.  The Happ Controls style interface that this encoder supports works the same for both spinners and trackballs.

There are three accessories you might need for the ME4 -- a male/male ps/2 6 foot cable from ME4 to PS/2 port, the ME4 to Happ Trackball cable (3 foot), and the ME4 to Happ spinner cable, (3 foot).

The ME4 is going to cost somewhere around $40, and should be available very soon (I have a prototype).  There is presently no information on their web site on the encoder.

The OptiPac

The creator of the I-PAC interface has another product called the Opti-Pac Plus.  The Opti-Pac Plus handles 2 trackballs and up to 4 spinners. It has an auto-switch feature which allows trackballs and spinners to be mounted on the same control panel without interfering with each other. It can support one or two serial ports in several modes, allowing either standard MAME or EMU+ to be used in two-player trackball mode using both serial ports. It is universal and can handle Happ and other makes of trackball, spinner or rotary joystick. It also handles two mouse buttons per port. The board matches the I-PAC in size and has a similar type of screw connections for all the wiring.

The board comes with cables for Happ style trackballs/spinners, which will also work with the Fultra Spinner.

The cost?  $39 plus shipping, includes cable for power from I-PAC, and two serial cables (9 pin).  Excellent!


Keyboard Port - Hacking a keyboard

The most hard core folks seem to be going with the keyboard port for interfacing their controls to. This allows the highest number of inputs (more than 100 controls possible). This is the route I've taken.  To maintain use of your computer with a keyboard hack, use a keyboard splitter of some kind.

Wiring your controls to a keyboard is a bit complex. It is impractical to wire directly to the individual keyboard keys for a variety of reasons. The way most keyboards seem to work is via a matrix -- There's a set of wiring going to one side of the matrix (call it the X axis) and another to the other side (Y axis). If you had 10 wires on the X axis, and 10 on the Y, you have a 10 x 10 matrix, with 100 possible key combinations (just about every keyboard has a unique matrix - to use this technique, you'll have to experiment with your keyboard). For instance, in this example, keys "Q", "A", and "Z" all hook up to the X1 wire. The "Q" key also hooks up to the Y1 wire. "A" hooks up to Y2, and "Z" hooks up to Y3. When you push the "Q" button, it completes a circuit from X1 to Y1. The keyboard controller chip recognizes that as the "Q" button and sends a Q to the computer. Now, using this, instead of wiring our button directly to the "Q" on the keyboard, we wire our "Q" arcade button to X1 and Y1. To get a "A", we wire up our "A" button to X1 and Y2. This is a bit confusing - the best bet is to open up a keyboard and inspect how it works. Stephan Hans' page has a better explanation of this.  My dream machine page has information and pictures of my keyboard input setup.  Shadow has a complete document on building arcade controls, and discusses the matrix there as well (worth a read).


David passed on to me a piece of software he wrote that displays the keystroke on your screen as you make the connection on the keyboard interface - *excellent* for mapping out your matrix.  He wrote his own because he couldn't find one that showed you all the keystrokes, such as displaying the grey extended  keys.  He's given the ok to share this with everyone here - very much appreciated!


Digital Genesis Technologies has written another keyboard mapping utility for testing keyboard matrixes and has passed the information on for us to share.  It can be found on their web page, or on my downloads page.  Much appreciated guys!

Tony DeCosa, another regular at Dave's Classics, has produced a step-by-step document on how he created his system called the "Joy of Joys Keyboard."  It's a very well done guide documenting how to interface a game pad controller to the keyboard, and how to use arcade controls with his setup.  For the ambitious, you can even mount ports in the back of your keyboard to plug your gamepads directly into your keyboard.  DeCosa does not have a web site, but he has given me permission to quote from his guide entirely.  It is linked to here but was converted from MS-Word to HTML by MS-Word's converter, so may look a bit icky.  You can also download the original zipped MS-Word version here.

Dragon's Den has a tutorial on doing a keyboard hack, and there's an excellent section at EmuAdvice called Keyboard Hack Info.


Keyboard Port - Keyboard Encoders

The KeyWiz is the brainchild of RandyT, another regular on the message forums here at BYOAC.  Currently there are three models available, the Eco (Economy model), the standard, and the max.  All 3 support the same core set of features.  See their links for further details on the differences.  This page is due for a huge revamping, so for now I am going to cut and paste from their web site...

Standard KeyWiz Features:


Keyboard Port - Other


Keyboard Ghosting & Blocking

One potential problem with keyboard controls - whether using a hack or an encoder - is "ghosting" - where pushing several keys at once produces a "ghost" key that wasn't in fact pressed. For instance, using the matrix example from below, we have "Q" = X1-Y1, "A" = X1-Y2, and "Z" = X1-Y3. Suppose as well that "W" = X2-Y1, and "S" = X2-Y2 (see Example Matrix below). If you push "Q", "W", and "S" at the same time, you're pressing X1,Y1,X2,Y2, which would give you "Q" X1Y1, "S" X2Y2, "W" X2Y1, but also "A" because of X1Y2 being connected. (Note - electronics is not my strong point. My specifics may be in error, but the general concept being illustrated is correct.) This could be a problem if, for instance, your fire and movement keys ended up also producing the "quit" key. The way around this is to find a set of keyboard controls that you will use that don't cause ghosting, or that cause ghosting of keystrokes that have no affect, or to use diodes to prevent the affect.  Read on for more info...
Example Matrix
X/Y X1 X2 X3 ... X10
Y1 Q W ... ...
Y2 A S ... ...
Y3 Z ... ... ...
... Y10 ... ... ... ...
Q + W + S = QWSA
RetroSTIK's creator Brent Geery has been championing a solution to this problem that makes one smack oneself on the forehead and say, "Duh!"  He suggested using diodes along your matrix to prevent paths of electrical connection that are undesired.
Part II. Unexpectedly, the use of diodes became such a contested point that it merits its own page.  Several voices weigh in on one one side or another - a must read if you are going the keyboard hack route.
Part III. John sent me an email detailing his use of the LP24 keyboard encoder from Hagstrom.  With the matrix he planned out, he should have almost (but not 100% guaranteed) freedom from ghosting, without diodes.  Read the details above!
Part IV!  Check out the write up on Hagstrom keyboard encoders by Arcade Solutions.  There's a section in it about techniques to defeat ghosting when using the encoder in matrix mode.
Part V!  Bugfinder has written up a page hosted at KillerClown's arcade that details keyboard hacks supporting up to 16 keystrokes without the ghosting problem.  He lists 4 varying configurations and the keyboard model he used.  Worth a look if you're going the keyboard hack route.
Part VI!  Be sure to see AmigaZoid's USB solution that seems to have avoided ghosting problems at the top of this page.
Part VII!  Be sure also to check out Dave Dribin's page for a much clearer explanation of ghosting and solutions.
Part VIII!  Marshall Brooks over at Mameworld'sEmuadvice has a section called Keyboard Hack Info that is a must visit.  More details on doing a keyboard hack, and discussion on the ghosting issue.

The flip side of ghosting is keyboard blocking.  It's based on similar roots as keyboard ghosting, but it has the opposite affect.  Push down several keys, then attempt to push another before you let go of the first ones -- often, the last keystroke won't show - it's being "blocked" by the other keys.  Both keyboard ghosting and blocking should be tested for before using a particular layout for your keyboard hack.


Parallel/Serial ports


Y adapters

All the various interface methods here work great, but share a common problem.  A typical setup might have the joysticks and buttons on the keyboard, and a spinner and trackball on the ps/2 and serial ports.  What do you do, however, if you still want to use your keyboard and mouse on the computer?  What if you wanted more than one trackball or spinner (although presently that's not too useful as they all control the same pointer)?  In this case, there are a variety of adapters you can build or buy to put multiple devices on a single port.

Other methods





-- Home --