Standard Game Port

Joysticks were originally supported on IBM PC and compatible machines using a port called the Game Port, which was also known as the MIDI port as some music synthesizers would plug into that. Game ports were included on many sound cards, and also some I/O cards (that also supported serial and parallel ports), and later on motherboards. Having multiple game ports could often cause a conflict of hardware address resoruces. Game ports did allow for a splitter so two joysticks could be used, and each joystick supported up to two buttons. The Gravis Gamepad supported four buttons on one joystick by acting like a splitter and making the third and fourth buttons on the gamepad act like the frist and second buttons on the second joystick.

One problem with standard joysticks is that most Game Ports had some amount of jitter. When placed in a central position, the joystick's X-axis position value might vary between some numbers, like -20 to positive 20. When the joystick was being held to the right, the values might vary among numbers above 60, and when the joystick was being held to the left, the values might vary among numbers below -60. However, with a different gameport, the central position may be much tighter, like +/- 5, and the extreme values when a direction is held could be ranging from +/- 10 to +/- 20. The way this was dealt with was to have software calibrate by studying what values are reported when the joystick is left alone, and then having an end user move the joystick when the software performs a second scan for what values get reported. In case the software makes an incorrect guess on what values are supposed to be treated as being in the "central" position, the positions of joysticks might occasionally be incorrectly interpreted. For Windows programs, the drivers may be able to be calibrated and forgotten about. For DOS programs, like the game DOOM, the program might ask the end user to perform some sort of calibration routine each time the program is run.

Extentions
Gravis GrIP MultiPort

GrIP stands for Gravis Interface Protocol.

This supported more than one device. Each Gravis Gamepad Pro had a Game Port built into it, so multiple Gravis Gamepad Pro devices could be used by having one be plugged into another. The gamepads also had a switch to change from standard mode into GrIP mode. The GRiP mode was generally supported by drivers supplied by Gravis.

Microsoft Sidewinder

I believe that DOS drivers for the Sidewinder was included with some software, implying that it did not simply use standard joystick programming code.

USB
After USB ports were invented and used, joysticks started to come out that used USB. Similar to parallel ports, the Game Port found that the primary device using it stopped supporting these types of ports: Joysticks that used USB began to outsell those that used Game Ports, and eventually it became difficult to find any of the joysticks that used game ports located on the shelves of stores.
DOS
Driver
JoyEmu (and JoyEm) 4.1, directly downloadable file: Freeware but cannot be sold or packaged without permission. For DOS/Win9x/ME (and perhaps Win 3.1).
Gravis files
Standard gamepad
Gravis
  • 4
  • 3 is bundled in with the GUS 4.11 drivers. (Is it in the upgrade-to-4.11 package?)
  • 2
GrIP

Method of allowing more than 2 joysticks on one computer, by daisy chaining them (plugging one GrIP joystick into another GrIP joystick). Gravis released drivers for this. GrIP Software Version 2.10 December 11/96 Disk #2 - DOS Install / rest of Windows 95 SETUP and Gravis GrIP MultiPort software (version 1.0) install disk "DOS Setup". These are both the second disks in the 2-disk disksets: The first disks are listed in the 32-bit Windows joystick drires section. Also available is the GrIP 2.10 text file.

For Windows
General joystick/gamepad adapter
16-bit Windows adapter
The license for this allows it to be "used only in conjuction with licensed copies of Microsoft Windows 3.xx products". IBMJoy.Zip probably: IBMJOY.ZIP IBMJOY.ZIP (likely modified from original, having FILE_ID.DIZ added) contained a FILE_ID.DIZ which is local as ibmjoy.diz. win_ibm_joystick.zip has identical IBMJOY.DRV, JOYSTICK.CPL. It also has a README.TXT that is included locally as ap2emjoy.txt. Windows 3.x1 on Dosbox guide says to select "single 3-Dimensional Joystick" if using a joystick with four buttons. That site also has some pictures showing how to add the driver.
32-bit Windows

See: ][Cyberpillar][ section on Microsoft Windows components for discussion on joy.cpl (Control Panel applet).

Standard
Bundled with Windows? Same as 16-bit driver?
GrIP
Basic drivers
GrIP Software Version 2.10 December 11/96 Disk #1 - Windows 95 SETUP, and GrIP Software Version 2.10 December 11/96 Disk #2 - DOS Install / rest of Windows 95 SETUP, Gravis GrIP MultiPort software (version 1.0) Windows 95 Setup. Also available are GrIP 2.10 text file and the second disk of the 1.00 distribution which is available in the DOS drivers area. (See under the DOS drivers section.) Apparently the latest package of drivers "is much less buggy than the old set." (Quote from a short Gravis software review.) Even the version 2.1 drivers, though, are not fully compatible according to the documentation for the earliest Gravis Xperience software.
Gravis Xperience

Gravis Xperience software (FTP site).

Gravis Xperience 2.0 Installer's Readme.txt says "The GrIPKey 2.1 software shipping with some GamePad Pro units is not fully compatible with Windows 98." Perhaps the Gravis Xperience software package does provide better results than the basic drivers.

The Gravis Xperience 3.0 Installer/setup program that installs the Gravis Xperience 3.0 Control panel and Gravis Stinger is 2.1MB, less than half the size of any 2.x or 4.x version. Unfortunately, when I checked its license agreement, the legal text indicated that it is not legal to distribute this software, even though its filename is X301ftp.exe and it was obtained by downloading from Gravis. Silly legalese...

Sidewinder
...
Parallel Port
  • PPJoy
  • DirectPad Pro (mirror) included schematics for multiple types of controllers. Related info at: http://www.raphnet.net/electronique/snes_adaptor/snes_adaptor_en.php
  • PSXpad (recommended by raphnet, not ziplabel). http://www.psxpad.com/ has become a parked domain. Wayback machine's archive of Psxpad site
  • SnesKey
http://mozy.org/snespad/
Relevant information
Removal
Removing WinNT4.0 joystick drivers after upgrading to Win2K (says "Upgrading to Windows 2000 does NOT remove the Windows NT 4.0 joystick drivers. These drivers are NOT used in Windows 2000.") (Basically involves removing the following.)
Files
joystick.dll joystick.sys sidewndr.dll sidewndr.sys
Registry Keys
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_SIDEWNDR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\JOYSTICK
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SIDEWNDR
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaProperties\PrivateProperties\Joystick\OEM\Microsoft SideWinder 3D Pro
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\Joystick\JOYSTICK.DLL####
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MediaResources\Joystick\SIDEWNDR.DLL####
(In the above 2, the #### is any 4 digit number.)
Coding
Windows Driver Kit: Human Input Devices\nJoystick Support seems to be information for coders using DirectX. Joystick API example by Microsoft, for Visual Basic
Joysticks acting like a mouse
Phatsoft JoyMouse
Phatsoft JoyMouse.
Others
JoyMouse: There are several products called JoyMouse. One version, by Johan Neivisburg of Sweden, has the unregistered copy that is a Win32 program and will move the mouse (basically jumping all over the screen) if it reports "Joystick Disfuctinal" (like if no joystick is being used), and when exiting it will say "not registered ,swapping your mousebuttons !" (It doesn't actually swap, so running it again leaves them backwards.) (It does not warn about this in the documentation.)
See also MGDx Drivers page for more links.

32-bit and 64-bit Windows

Some of the software mentioned in the 32-bit section might not work as well with 64-bit operating systems.

There may be some options for emulating keyboard keystrokes. MajorGeeks.com page for “Xpadder (Last freeware version) 5.3” provides some download links for Xpadder, which has switched from being freeware to being shareware. Other options, which may still be untested by the webmaster of this site, might be available from J2K or jtksoft's JoyToKey.

Others
AXCEL216/MDGx's page for Joystick drivers
Joystick driver for Java
Joystick Driver for Java says it works with "All 32-bit MS WIndows (95/98/NT/2000/XP), All POSIX (Linux/BSD/UNIX-like OSes)".
Source code
Gravis, maker of the (Gravis Game Port card?), (Gravis Gamepad?), and Gravis UltraSound sound card that had a Game Port on it, has released some SDKs with documentation. GrIP SDK Version 1.0 contains source code, demo programs, and documentation. ??? 1.1, 2.0