Installing GAMEDD.SYS from GAMEDD2.ZIP:
---------------------------------------
1)Install IBM joystick GAMEDD.SYS files from IBM's JOYSTICK.ZIP.

2)Find IBM's GAMEDD.SYS file and replace it with this GAMEDD.SYS file.

3)If you need to insert options, then in your CONFIG.SYS file find the
  line containing GAMEDD.SYS and add any options you may need. The normal
  default line found in CONFIG.SYS (drive and directory may be different)
  DEVICE=C:\OS2\GAMEDD.SYS

  These are default values based on IBM's original GAMEDD.SYS and you do
  not need to enter them. They are shown here as an example and this will
  make GAMEDD.SYS function just like the line above:
  DEVICE=C:\GAMEDD.SYS /P:201 /W:400 /C:1E
  Defaults here are 2 analog joysticks on joystick Port201h with a Wait
  of 400h polling checks maximum and a Calibration of 1Eh (or 30%).

  This example allows two digital joysticks to work as if they are analog.
  Gravis_Xterminator=joystick1, Microsoft_Sidewinder_Gamepad=joystick2,
  and it was determined that the wait loop should be increased to 450 hex.
  DEVICE=C:\GAMEDD.SYS /D1gx /D2mg /W:450

  This example allows one digital joystick and one analog joystick.
  Gravis_Xterminator=joystick1, Analog=joystick2, wait loop is default.
  DEVICE=C:\GAMEDD.SYS /D1gx

  This example shows two digital joysticks. Only joystick1 will be seen by
  DOS and IBMcompatible mode because it is translated into a CH compatible
  mode used by certain flying programs. Joystick2 can only be seen by the
  extended joystick access instructions. It was determined that for this
  computer that the wait loop could be decreased from 400h down to 250h.
  DEVICE=C:\GAMEDD.SYS /D1gx /D2gp /CH /W:250

Options you can add in CONFIG.SYS:
----------------------------------
All these options take effect when you start your computer.

/P:hhhh   (default is /P:201)
If you have an odd joystick port which uses port 301h or another location
you can use /P:hhhh where hhhh is the joystick I/O address (in hex).

/W:hhhh   (default is /W:400)
Default built-in WAIT is 400hex wait loops.
With today's very fast computers, you might not find the joysticks because
your computer stops looking before the joystick finishes doing it's work.
Some joystick ports run as much as ten times faster or more in some cases.
Some computers may be very fast yet have a very slow joystick port. For
example, you can only see an ISA slot AWE32 soundcard up to 66000 times a
second maximum because that is how fast the card can run regardless of if
it is a 386 or a PentiumXYZ. On the other hand, if you have a PCI soundcard
installed, you will probably need to use this /W option to increase the wait
counter. This appears to be mostly a problem with analog joysticks where for
example one user reported having to use /W:1600 for their analog joysticks.
The value you require depends on what sound card and joystick you have.

If you have a fast joystick port, then you may find this tip helpful.
You may want to slowly increase this value in the config.sys file until
you finally get propper joystick values. You need to reset the computer
for the changes in the config.sys file to take effect. Suggestion is to
increase the /W: value in small increments like /W:600 /W:800 /W:A00 ....
You could put in something very large like /W:FFFF but it would put a huge
speed penalty on your computer and you may find your computer behaving
oddly since your computer will be ignoring all other processes while
waiting for a response from your joysticks. Joysticks are still a polled
device, so in other words /W:FFFF may be a bad idea.
For you speed demons out there... you may realize a pushbutton gamepad
will only go up to 200h or some small number....therefore you may want to
use a /W:250h to decrease the waiting time for non-existant joysticks.
Why waste time? Suggestion is about 20% more than maximum value your
joystick reports back.

Digital joysticks require time to fill the built in buffer, because they
are also a polled device. Follow the same steps above if you are getting
intermittent joystick readings.
Note: some digital joysticks run faster than the joystick port can handle,
therefore you may need to replace your joystick port in those cases.
For example, the Microsoft Sidewinder runs faster than a Creative Labs
AWE32-ISA-Slot soundcard joystick port, therefore you will get
intermittent output regardless of the /W option.  Choose another faster
joystick port or choose a different digital joystick.

/C:hh	(default is 30%, which in hex values is 1E)
You should center your joysticks before calling a program that uses the
joysticks. "Calibration" happens when the computer powers up, therefore
your joysticks should be centered before you power up your computer.
Calibration is a useful way of making an analog style joystick act like
a pushbutton gamepad. For the default of 30%, here is what you get using
the X-axis of 100,0=center as an example:
lower trip point becomes 100-30%=70, upper trip point becomes 100+30%=130.

0,0-----------100,0-----------200,0
	  |	|     |
	70,0  100,0 130,0
<--lower->|<--center->|<-right->
   50	  |    100    |     150

When your joystick X-axis is within 70...130, the joystick returns 100,
and when your joystick X-axis is below 70, it returns 50, while above 130,
it will return 150.
To make your joystick appear more sensitive, try 10%=0A or 5%=5, and you
will notice that you do not need to move the joystick much to give a
digital response. A larger number means you need to move your stick more
before returning a lower/upper value. You are allowed to set the
calibration anywhere from 10% to 45% ( /C:A .... /C:2D in hex) otherwise
it is set to default of 30%.

Here is graphical examples of 45% and 10% calibration values for X-axis:

0,0-----------100,0-----------200,0
	|	|	|
      55,0    100,0   145,0
<--lower|<----center--->|right->
   50	|      100	|   150

0,0-----------100,0-----------200,0
	     |	|  |
	   90,0 | 110,0
<-----lower->|<-c->|<-right---->
	50   | 100 |   150

You can see this happen for JOYS_DOS.EXE by changing the "DOS SETTING" of
"GAME_DIGITAL_RESPONSE" to ON and "GAME_DIRECT_ACCESS" to OFF, then run
JOYS_DOS.EXE.  Note, you must have GAMEVDD.SYS installed to simulate the
joystick port for DOS programs (see JOYSTICK.ZIP by IBM). Users with PCI
cards will have to have GAMEVDD.SYS installed if their joystick port is
set at a value that is not 201h.

/CH
Your Joystick1 appears as CH Flightstick for DOS & IBMver2.0 programs.

/TM
Your Joystick1 appears as Thrustmaster for DOS & IBMver2.0 programs.

/D1xx and /D2xx
Digital joystick1 or digital joystick2, you may mix & match some sticks.
These are the actual joysticks plugged into the joystick gameport:
  /D1ch	-- -----  Analog CH Flightstick Pro	tested
  /D1ch	-- -----  Analog Thrustmaster		need volunteer to test
  /D1gb or /D2gb  Gravis Blackhawk		need volunteer to test
  /D1gp or /D2gp  Gravis Gamepad Pro		tested
  /D1gx or /D2gx  Gravis Xterminator		tested
  /D1mg or /D2mg  Microsoft Sidewinder Gamepad	tested by Bret Johnson

These are DOS & IBMver2.0 output limits.
  /D1xx options return 4 pushbuttons if no second joystick is attached.
  /D1xx options return 2 pushbuttons if a second joystick is attached.
  /D2xx options return 2 pushbuttons only.

Note: Current sidewinder algorithm re-writes own buffer space, therefore
do not install a second digital joystick as /D2xx. If you own 2 digital
joysticks then install sidewinder as /D2mg, for example /D1gx /D2mg works
fine. /D1mg /D2?? won't work. This routine will be re-written in future
so that this condition is fixed, but for now, enjoy.

PCI Soundcards And The Joystick Port Help Tips:
-----------------------------------------------
Some users have reported trouble installing the joystick driver on newer
PCI style sound cards versus the older ISA style sound cards. Here are a
few things that you need to consider. With the older ISA style sound cards
the joystick port usually is found at 201h, therefore you do not have to
use the /P:xxxx option since 201h is the default port location.
With some newer PCI sound cards, the joystick may be located at a much
higher address and you will need to use the /P:xxxx option to set it, for
example the address may be /P:DC00 or /P:EF00 or some other address.
Currently, I haven't written any programs to help you find this address,
but if you look for the latest SoundBlaster drivers, I believe there is a
utility included with it to help you find the location of the PCI joystick
port. If you have a PCI soundcard with a high joystick address, you need
to get IBM's GAMEVDD.SYS if you do not already have it (located on
JOYSTICK.ZIP) and install it on your computer to translate the GAMEDD.SYS
data to a virtual 201h address for DOS programs since DOS programs usually
expect to see 201h as a normal joystick address.

Some users have mentioned their PCI sound cards appear not to work at the
new PCI address. Testing the address is easier using an analog joystick or
gamepad. If you get pushbutton actions, then you have the correct /P:xxxx.
If the X/Y axis do not work correctly, then you need to fine tune the /W
option. One user mentioned having to change the /W option to /W:1600 to get
their joystick to work (use that as a suggestion since your computer and
joystick combination may need a different /W value to work).
Once the /P and /W options seem to work correctly, leave them as
is if you decide to later install digital joysticks. The /W option may be
something you want to consider because even though computers and PCI sound
cards run much faster, joysticks still require time to process. Follow the
/W option tips above to tune your port to minimize CPU wasted time.

Digital Style Joysticks And DOS Games:
--------------------------------------
DOS games are looking for generic style linear Joysticks and do not know
what to do with digital data even if your joystick port is viewable at
port 201h. You require IBM's GAMEVDD.SYS (see JOYSTICK.ZIP) to translate
GAMEDD.SYS information to DOS.

GAME$ Programming:
------------------
For those of you wishing to write programs to use the joystick port, you
may want to look at JOY_IBM.CPP for programming help. This example should
be compatible to IBM's JOYSTICK.ZIP driver of 1995, so it should help you
be compatible from 1995 up to today in terms of GAME$ access.

GAME$ Compatibility Chart:
--------------------------
There may be confusion due to the number of drivers existing for OS/2.
As of Feb 10, 2002, GAMEDD2.ZIP is backwards compatible with GAMEPORT.SYS,
GAMEPRT2.SYS, and IBM's GAMEDD.SYS device drivers. As of Feb 15, 2002 it
is mostly compatible with Vesa's GPP_DRIV.ZIP.

1989,1992	1999,2000
GAMEPT.ZIP	GAMEPRT2.ZIP
GAMEPORT.SYS--->GAMEPRT2.SYS--------+
Frank Ivan	Jose DaSilva	    |		^ 80286 or better
				    V		-----------------
19??..1995			1999..2002	v 80386 or better
JOYSTICK.ZIP,JOYDOCS.ZIP	GAMEDD2.ZIP
GAMEVDD.SYS-----+-------------->(use original GAMEVDD.SYS)
GAMEDD.SYS------|+------------->GAMEDD.SYS
IBM, ver2.0	||		Jose Da Silva, Canada
		||  1999
		||  GPP_DRIV.ZIP
		||  EJOYOS2_V21.ZIP
		|+->GAMEDD.SYS
		+-->GAMEVDD.SYS
		    Vesa Jskelinen, Finland
History:
--------
Jul 24,2002 Tested /d1ch, /ch, /tm. Added /d1tm
Jul 22,2002 JOYS_DOS.EXE bugfix. JOYS_DOS.C source included
Mar 09,2002 Race condition bug fix for digital joysticks
Feb 15,2002 Added /d1ch, /ch, /tm options
Feb 10,2002 Now compatible with GPP_DRIV.ZIP instructions 21h,23h..28h
Nov 19,2001 Added JOY_IBM.CPP joystick.zip compatible programming example
Jun 28,2001 Button config /D1gp & /D2gp. DOS Digital Response fixes
Jun 12,2001 Tested/debugged /D1gp /D2gp /D2gx
Jul 16,2000 Now backwards compatible to GAMEPORT.SYS & GAMEPRT2.SYS
May 05,2000 Added /D1 and /D2 options for more digital joysticks
Mar 29,2000 Added /D1 option for Gravis Xterminator
Jan 13,2000 Added /C and /S option for Analog Joysticks
Dec 30,1999 Added /P and /W options

Files in GAMEDD2.ZIP:
---------------------
GAMEDD2.DOC  = This file
GAMEDD.SYS   = OS/2 Joystick Device driver (to replace IBM's GAMEDD.SYS)
JOY_PORT.CPP = Source code (GAMEPORT.SYS compatible, simple but nonstandard)
JOY_PORT.EXE = OS/2 test program (GAMEPORT.SYS compatible)
JOY_IBM.CPP  = IBM <joyos2.h> compatible program example for programmers
JOYS_DOS.C   = DOS test program source code
JOYS_DOS.EXE = DOS test program (must have GAMEVDD.SYS installed)


Thanks To These People For Their Help:
--------------------------------------
Feb 15,2002 Vesa Jskelinen for donation of his CHflightstick routines
	    used for the /d1ch and /ch options.
	    for donation of his gamedd.sys code to help further gamedd2
Sep 09,2001 Ruediger Ihle and Sander van Leeuwen for info on PCI soundcards
	    and showing info on how to connect joystick drivers to SBlive.
May 05,2000 Bret Johnson for his sidewinder routines of /D1mg and /D2mg.
Mar 29,2000 Vojtech Pavlik of SuSE labs (Linux joystick drivers fame) for
	    helping in digital algorithms for Gravis digital joysticks.
	    These are options /D1gp /D1gx /D1gb, /D2gp /D2gx and /D2gb.
Dec 30,1999 Jason Stefanovich for hosting the contest and website where
	    GAMEPRT2.ZIP and GAMEDD2.ZIP were initially located.

Minimum tested system: 486 computer at 40MHz
by J DaSilva, Silva@JoesCat.com, Jul22/2002
