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!
I've read the various info on your page about interfacing arcade-type joysticks to the joystick port; most methods seem relatively complicated or expensive.
I came up with a very simple
and cheap (5 cents per joystick) circuit that works very well for me.
I've wired up an old Atari-compatible Wico Joystick and a Genesis-clone
gamepad, and both work perfectly. It is best suited for arcade sticks,
as the switches must be wired a little
differently than most pre-wired
sticks (I had to hack the Genesis pad severly to get down to just the basic
switch inputs).
The circuit for one joystick
uses only four resistors, two 100k-ohm and two 50k-ohm. Basically,
tie the X and Y inputs to +5v thru the 50k resistors to center the stick.
For left and up, the switches in the stick connect the X and Y inputs directly
to +5v (bypassing the 50k
resistors). For right
and down, the switches in the stick connect the X and Y inputs to ground
thru the 100k resistors. These resistor values provide voltage levels
comparable to the commercial PC joysticks and pads I have tested, and center
fairly well. For more precise centering, variable resistors (trim
pots) could be used in place of the fixed resistors (like 100k pots in
place of the 50k fixed, 200k pots in place of the 100k fixed).
I included the four button inputs for reference. Of course, a regular PC gameport has two more axes, X2 and Y2 for which I do not know the pins (easy to figure out, I just haven't bothered). You can wire a second stick to those axes using the same circuit.
As a final note, many gamepads seem to use a capacitor across +5v and ground to reduce noise and bounce. A small ceramic capacitor of a few hundred uF placed near the stick should do nicely, but I haven't bothered in my conversions so far.
If you are wondering (as I did),
why the commercial game pads use an IC for this, I don't know. My
guess is either my solution is just so simple no one thought of it, or
some engineer figured out that the simple solution would for some odd reason
not work well with all known
gameport chips, so they threw
in a simple IC rather than worry about it. I can't see any way this
circuit could damage any gameport, as the current draw is at most a few
microamps (the same as any analog stick). I've tested so far with
five different game ports, and all work exactly the same.
Dave wanted to be sure to mention that, while this worked well for him, there are no guarantees it will work for you. Hacking your gameport is done at your own risk.
Thanks Dave!