DOS Days

Joysticks

I've been planning for a while to do a review of the more common joysticks, but had not added a library of joysticks (including game pads, wheels, throttles and pedals) to DOS Days until November 2022. This is now mostly complete, so let's take a look at these gaming peripherals.

But first, a bit of history...

The Early Days

The IBM PC and its early variants were of course not designed with gaming in mind, and so did not support a joystick interface. The first joystick port for the PC can be traced back to an optional $55 expansion card called the Game Control Adapter for the IBM PC in 1981. This used the "DA-15" port that most of us are familiar with from the DOS gaming era, and supported up to 4 axes and 4 buttons, meaning 2 joysticks each with an X- and Y- axis and two buttons, or 4 paddles.

The IBM PC jr was launched in March 1984, and like so much of the system, went proprietary with the joystick side of things. It got two joystick ports on the rear of the computer that were *not* compatible with the 15-pin port from the Game Control Adapter.


The joystick for a PCjr (1984)

This joystick was analog, so it read X- and Y-axis coordinates and fed that to a specific I/O address ready to be read by games. Via some switches on the underside, It could operate either in 'free' mode or 'centre return' mode.

The Game Port

The humble game port that most of us remember on PCs of old was the 15-pin "DA-15" port. Lots of third-party expansion card manufacturers create their own version of IBM's Game Control Adapter, and these became known simply as 'Game Cards'. They would typically have two 15-pin game ports, to support two joysticks at the same time. Sound cards would also include a game card into their circuitry. Around 1998, some PC motherboards embedded a lot of the more common ports and sockets directly, and so came with a 'backplate', and in some cases included a single game port, directly available from the rear of the computer.



Three ways of having a game port in a DOS PC: (Left) a game card, (Right) a sound card,
and (Below) a motherboard with game port on the backplate

The pinouts for the DA-15 game port look like this:


Female end
Pin Name Dir Description Pin Name Dir Description
1 +5V OUT +5 VDC 9 +5V OUT +5 VDC
2 /B1 IN Button 1 10 /B3 IN Button 3
3 X1 IN Joystick 1 - X 11 X2 IN Joystick 2 - X
4 GND - Ground 12 GND - Ground (shared with MIDI_OUT)
5 GND - Ground 13 Y2 IN Joystick 2 - Y
6 Y1 IN Joystick 1 - Y 14 /B4 IN Button 4
7 /B2 IN Button 2 15 +5V OUT +5 VDC (shared with MIDI_IN)
8 +5V OUT +5 VDC        

As you can see there were lots of redundant pins on the original port, including four separate 5-volt supply pins and associated ground pins also. A joystick would only use one pair of these each, leaving two 5V and GND pins available. These would later be used when MIDI arrived - one pair for MIDI IN and the second pair for MIDI OUT.

The Move from Analogue to Digital

As games became more technical and capable, so did the joysticks that they supported. Flight simulators in particular grew to support not only yokes with force feedback, but rudder pedals, thrust levers and more. The original PC game port only supported a maximum of four buttons and four axis (assuming you used both Joystick 1 and Joystick 2 pins for just a single joystick). A typical flight simulator would require many more buttons to provide the means to control pitch, yaw, roll, throttle, nosewheel steering, and more - the cracks were starting to show for the old analogue game port.

Before USB arrived around 1995, each manufacturer had their own way of stretching the use of the game port beyond its natural capabilities, but ultimately these all involved the sending and receiving of digital packet data over the analog port.

Logitech came up with a protocol called ADI, Gravis had one called GrIP, and Microsoft called theirs Digital Overdrive - these all operated in a similar way but were incompatible with each other, so games had to directly support the protocol for your peripheral to work. GrIP utilized the 'button' signal lines on an analog PC joystick port to send digital signals to allow for both the use of ten buttons and the simultaneous use of up to four controllers connected together.

Some of these communication protocols used by joysticks, gamepads, wheels, etc., over the 15-pin analogue game port are listed here:

  • Assassin 3D (created by FPGaming but also licenced to MadCatz so support FPGaming's Assassin 3D, MadCatz Panther and Panther XL)
  • ADI (Logitech - numerous peripherals)
  • COBRA (Creative Labs Blaster GamePad Cobra)
  • TMDC - ThrustMaster "DirectConnect" BSP (used by Millennium 3D Interceptor, Rage 3D Gamepad, Attack Throttle, Frag Master, Fusion GamePad and more).
  • GF2J (Genius Flight 2000 F-23, G-09D, F-30D, F-30, MaxFighter F-31D, F-30-5, and F-31)
  • GrIP - Gravis Interface Protocol (Advanced Gravis GamePad Pro, Blackhawk Digital, Xterminator Digital, and Xterminator DualControl)
  • I-Force (Created by Immersion Corp. Used by AVB Mag Force Turbo, AVB Top Shot Pegasus, AVB Top Shot Force Feedback Racing Wheel, Logitech WingMan Force and WingMan Force Wheel, Guillemot Race Leader Force Feedback and Force Feedback Racing Wheel, and Thrustmaster Motor Sport GT)
  • Microsoft Digital Overdrive (3D Pro, GamePad, Precision Pro, Precision Pro USB, Force Feedback Pro, FreeStyle Pro, Force Feedback Wheel)
  • Others: Guillemot, InterAct (HammerHead/FX and ProPad 8 gampads), Logitech WingMan Warrior, Gravis Stinger Gamepad.

USB Is Here!

USB arrived in the mid-90s and was a much-welcomed new interface since it supported an unlimited number of inputs from peripheral devices such as a joystick, and manufacturers could finally do away with the restrictive 15-pin game port once and for all.

USB support in pure DOS (not Windows command line) is limited to mass storage devices only, i.e. USB drives, CF/SD card readers, etc. Typically, games that supported USB joysticks and gamepads ran under Windows and so used the Windows device driver. To my knowledge nobody has written a DOS driver that generically supports USB joysticks.

Windows 95 / 98 Support

USB support in Windows 95 was patchy at best, so if you have a USB joystick it is best to use Windows 98SE. A lot of the joysticks released between 1996 and 1998 will be directly supported under Windows 98 without the need for special drivers.

DOS Days has dedicated hardware pages that cover all the joysticks, game pads, wheels, etc., from a number of the more prominent peripheral manufacturers during the DOS days:

Support for the 15-pin analogue game port was discontinued from Windows XP onwards, so using these old peripherals on a modern PC gets rather limiting. It can, however, be achieved with the use of an adapter, such as the Rockfire RM-203 (aka USB Nest). This converts the gameport plug on your joystick (or other gaming device) into USB:


The Rockfire RM-203 game port to USB adapter

The RM-203 apparently works in Windows 95 (v4.00.950b and up), 98, 2000, ME and XP, and has a button where you can select from 4 different modes. These allow you to switch between numerous conventional analog game controllers:

Mode 1: ThrustMaster FCS
Mode 2: CH Flighstick Pro
Mode 3: 2-to-4 axis, 4-button joystick
Mode 4: 2-axis, 8-button joystick

The 2-page manual for the Rockfire RM-203 is here.