Some games are easier to play with digital joystick instead of analogue type. Unfortunately some PCs have only an analogue joystick connector, which makes it impossible to connect a normal digital joystick to it. But with a little adapter circuit, it is possible to use an Atari style digital joystick with an IBM PC joystick interface. The circuit adapts the joystick connectors and converts digital joystick movement signals to analogue signals. The circuit can be used with any PC game to replace the original analogue joystick. The circuit also simulates also Gravis Gamepad operations except the extra buttons.
R1,R3,R4,R6 2.2 kohm
R2,R5 100 kohm
P1,P2 100 kohm trimmer
Generally the circuit is not very sensitive to the certain differences in diodes and transistors. Almost any small signal transistor with an Hfe in the range of 100-500 should do the job. For the diode you can use almost any common diode, like the very popular 1N4001 rectifying diode.
The circuit operation
The interface circuit directly connects the joystick buttons to the corresponding PC joystick connector pins because they operate similarly in both joystick types. Due to the fact that the gameport on a PC needs different resistances to X and Y inputs to determine the joystick position, the circuit converts the four switch inputs form the Atari stick connector to the different X and Y resistance values which are then outputted to PC joystick port. The circuit gives the following resistance values from the 9 different positions an Atari-style joystick stick can have:
UP +----------------------------------------------+ ? x = 0 kohm ? x = 50 kohm ? x = 100 kohm ? ? y = 0 kohm ? y = 0 kohm ? y = 0 kohm ? +--------------+---------------+---------------? LEFT ? x = 0 kohm ? x = 50 kohm ? x = 100 ohm ? RIGHT ? y = 50 kohm ? y = 50 kohm ? y = 50 ohm ? +--------------+---------------+---------------? ? x = 0 kohm ? x = 50 kohm ? x = 100 kohm ? ? y = 100 kohm ? y = 100 kohm ? y = 100 kohm ? +----------------------------------------------+ DOWN
The resistance values are exactly the same as what is given by PC gamepad controllers (like the Gravis Gamepad for PC) or what normal PC analogue joystick gives out when it is in the center position or in any extreme position (fully moved to one of the eight main directions).
The different resistance values are generating using following method (this example is for forward/back direction movevement):
- When the digital joystick is in center position the current flows through R3, D1 and potentiometer. When potentiometer is tuned the center position the PC joystick interface seen around 50 kohm resistance. No current flows through T1.
- When the Forward switch is closed the point between R3 and D1 is grounded. Now the current can only go to PC joystick interface though the potentiometer, which gives 100 kohm resistance.
- When Forward switch is closed then current starts to flow from T1 emitter to base and then through R2 to forward switch. This base current causes the T1 to conduct from emitter to collector so the PC joystick interface sees very low resistance.
Left/Right movement conversion works in exactly the same way. Normally a digital joystick button is wired to the Button 1 input in PC joystick interface and an extra button in the digital joystick connector is wired to the Button 2 in the PC joystick interface.
NOTE: The transistors and and diodes are absolutely necessary for this circuit to work. You can't avoid using active circuit elements if you want to to convert an unmodified Atari joystick to PC joystick port. I know that there are some simple circuits which use only few resistor to adapt joystick to PC, but those can't be used with unmodified Atari joysticks. They require you to completely rewire the internals of the joystick (which is not always possible as shown in their circuit diagrams). The intention of my circuit was to make the circuit general and avoid any changes needed inside the joystick.
Tuning the circuit
When you have built the interface, you have to set the trimmers to correct positions.The potentiometers must be set so that the circuit shows 50 kohm to the joystick interface when the joystick is in the center position. So, first align the potentiometers to the center position. If you want to more accurate alignment, use a simple test program to align those more accurately. The aligning procedure is very simple: just turn the joystick to the left and right positions and calculate the average of the values the test program shows. The align the potentiometer so that the circuit gives the calculated value when joystick is in the center position. Do the same to the forward/back direction.
Modification idea: Getting more buttons to work
Because the use of extra buttons in joystick is not standarized, what pins are used on those depend on the computer. It is possible to make a circuit which works well with all kinds of button arrangemen but you need to do some experimenting to get the second button to work. If for some reason the circuit does not work it might be possible that your joystick uses pin 9 for the extra button instead of pin 5. You have to make a small modification to the circuit to get the system to work. A simple modification is to move the wire going to pin 5 on 9 pin connector to pin 9 on the same connector.
Another idea which you can try is to keep the wire on pin 5, but add an extra wire which connects pin 5 and 9 together. This causes that all extra button (no matter are they connected to pin 5 or 9) are recognized as button 2 on PC joystick port.
Modification idea: Adding support for more buttons