So, what's inside a joystick ?

[ The Basics ] [ The ThrustMaster ] [ ThrustMaster Schematic] [ CH Products ]

The original Joystick interface introduced on the IBM PC many years ago
was based around the idea of having two, 2-Button / 2-Axis Joysticks. I
assume for games similar to what was common then (Atari 2600 era). At
any rate the joystick interface leaves much to be desired, it is slow and
not very accurate. Some of the new digital joysticks try to combat those

In the original specifications the four buttons were defined as buttons
1A, 1B and 2A, 2B. The analog axes were defined as the X1, Y1 and
the X2, Y2. Where '1' is Joystick 1, and '2' is Joystick 2.

Many of the game ports supplied on Multi-I/O cards over the years
were really only 'Half' game ports. Supporting only A1, B1, X1 and Y1
inputs. Many of the newer joysticks with more than two buttons or with
Hatsticks and alike would not function. Sound cards have, as far as I can
determine always offered full game ports, designed to the original specs.
There are also a number of game port cards on the market that are
'Speed Adjustable' to accommodate the newer faster systems. What they
really do is change a voltage threshold, and in some cases cause
problems with the digital sticks like the Microsoft Sidewinder 3D Pro.

As the need for more sophisticated Joysticks came about with Flight
Sims and alike joysticks from companies like Thrustmaster and CH
Products began to emerge. Using the entire gameport for the single set
of controls. Commonly these sticks continued to use the X1 and Y1
axes for Left/Right and Up/Down respectively.

The other controls are added in one of two common ways, the
Thrustmaster approach, and The Ch Products approach.

[ Back to Top of Page ]

The Thrustmaster Approach:

Thrustmasters basic flightsticks use all four buttons and use the Y2 axis
for the Hatstick. The Hatstick is really a set of four switches (momentary)
and four resistors. This emulates five positions on the analog axis, the
original joystick spec called for use of 100 KiloOhm potentiometers (variable
resistor) and the hatsticks five positions are as follows:

Center = 80 KiloOhms
Left (West) = 60 KiloOhms
Down (South) = 40 KiloOhms
Right (East) = 20 KiloOhms
Up (North) = 0 KiloOhms

When the Hatstick is centered, none of the switches are closed, and a
default resistor sets the value of 80k. In any of the other four positions
one of the switches is closed and a second resistor is paralleled with
the 80k to produce the values shown above. Games need to be specifically
designed to look for these special controls. The Thrustmaster approach leaves
the X2 axis free, many of the flight sims support 'Pedals' on that axis. I use it
to shift my Throttle axis for play in Descent. Note also that the schematic show
the potentiometers as 100 kOhms which is true of Thrustmaster and correct
according to the specs. Some joysticks use slightly different values.

[ Back to Top of Page ]

A Simple Schematic of the Thrustmaster Type Joystick:

[ Back to Top of Page ]

CH products approach.

The Ch Products Joysticks use an 'Encoded' or 'Chorded' method. The Hatstick
and the four joystick buttons share the button inputs and use a method of binary
encoding. This is the reason the CH Products flightsticks allow only one switch
or hatstick position, and simultaneous switches are not supported. I have not
supplied a schematic of the CH approach since I have never looked inside one
I would be guessing since it could be done a number of ways. I have supplied
a table of the outputs. The one advantage of the CH approach is that both the
X2 and Y2 axes are available for analog throttles, pedals and the like. I have
described the outputs as voltage levels since I think this is easiest for people
to understand, rather than binary, hex or other method.


 Button Number (Pin Out )  2 (pin #14)  2 (pin #10)  2 (pin #7)  1 (pin #2)
  No Switches Pressed  +5 volts  +5 volts  +5 volts  +5 volts
 Button #1 (Trigger)  +5 volts  +5 volts  +5 volts  0 volts
 Button #2 Pressed  +5 volts  +5 volts  0 volts  +5 volts
 Button #3 Pressed  +5 volts  0 volts  +5 volts  +5 volts
 Button #4 Pressed  0 volts  +5 volts  +5 volts  +5 volts
 Hat Left (West)  +5 volts  +5 volts  0 volts  0 volts
 Hat Down (South)  +5 volts  0 volts  0 volts  0 volts
 Hat Right (East)  0 volts  +5 volts  0 volts  0 volts
 Hat Up (North)  0 volts  0 volts  0 volts  0 volts

[ Back to Top of Page ]