PDA

View Full Version : Gravis Gamepad Tandy conversion



Great Hierophant
May 5th, 2012, 10:51 AM
IBM and Tandy implemented joystick directionals in somewhat different ways. IBM connected the pots only to +5v and output, while Tandy connected the pots to +5v, output and GND. The joystick ports in the Tandy 1000/A/HD/EX/SX/TX cannot be disabled, and using a DA-15 gameport, such as that on a sound card, would lead to a bus conflict. Additionally, many games running on a Tandy may read the joystick positions in a manner more compatible to the Tandy joystick port than the IBM joystick port.

Any IBM PC joystick using 100kOhm potentiometers can be used on these Tandys with a simple pin converter and attaching the unused third terminal on the pots to GND. This is okay for the ordinary, analog joysticks, but does not work with digital devices like the Gravis Gamepad. Originally, I thought the Gravis used fixed resistor values in parallel, with no resistor for the up and left switches and 100kOhm resistors for the right and down switches and 50kOhm for the neutral position. However, it uses a method based on transistors. The schematic for the directional section is here in figure two : http://www.allpinouts.org/index.php/Joystick_PC_Gameport

My question is where and how do I add the GND signal to simulate the Tandy joystick instead? IBM's technical information is linked on this page : http://www.minuszerodegrees.net/5150_5160/cards/5150_5160_cards.htm, information about the Tandy joystick interface can be found in the Technical Reference Manuals for any of the above mentioned computers here : http://www.oldskool.org/guides/tvdog/documents.html

I understand enough of the schematic that I know that when one direction on an axis is being pushed, 94kOhms is the resulting value, when the other axis is pushed, something close to 0kOhms, and when neither is being pushed, then 47kOhms is present on the pin. Since 50kOhm resistors apparently do not exist in the wild, these are considered reasonable substitute values. I do not know how the PNP transistor works.

lucasdaytona
May 5th, 2012, 06:49 PM
If you could get a 50k Ohm resistor it would be easier?

twolazy
May 5th, 2012, 06:59 PM
It isn't that hard to find 50 ohm resistors! :)

http://www.radioshack.com/product/index.jsp?productId=2062292

Great Hierophant
May 6th, 2012, 05:10 AM
47kOhm resistors are more common, and the Gravis Gamepad uses a pair of resistor packs. In each instance, there actual resistance vs. the ideal resistance is >10%, so it is suitable for games that recognize only three positions on an axis. The issue remains, however, how to convert the existing design to a voltage divider. Ultimately the Gravis still outputs +5v as an ordinary stick should, but it should be outputting 0, 2.5v and 5v. As it does not, it will always appear as though the stick is right and down on a Tandy.

Great Hierophant
May 6th, 2012, 03:10 PM
The 2N3906 PNP Transmitters works as follows in the Gravis Gamepad :


Push Up or Left - +5v goes directly to the X axis pin, bypassing the rest of the circuit.

Neutral - The Base of the Transistor is connected to ground through a 47kOhm resistor. As there is no electrical signal to switch the transistor, the base signal goes straight through to the emitter. So you should get +5v with the 47kOhm resistance to the output pin.

Push Down or Right - This send a +5v signal to the base, which allows the carrier to flow through the emitter, so +5v goes through the pair of 47kOhm resistors.

I have two locations which I need to convert the straight resistance to a voltage divider. To make a voltage divider, you need to have both +5v and GND on the circuit. To make a voltage divider, you need either a potentiometer or two resistors wired in series between +5v and GND. The divided voltage is taken from the join between the resistors. For a digital gamepad, I would need a pair of 47kOhm (for the down/right position) and a pair of 24kOhm resistors (for the neutral position) In the alternative, a pair of small trimmers would work. All I need to figure out is how to get a transistor to switch between the three positions.