The Apple II computer was designed to use an analogue joystick (via the 16 pin game port then later a 9 pin port). This joystick uses two potentiometers to represent the position of the stick, one for the x-axis (8 bit analogue signal) and one of the y-axis (8 bit analogue signal). The joystick also contains two pushbuttons (digital signals). Many computers and game consoles from the 8 bit home computer era were designed to use digital joysticks instead ie these contain five digital signals, one signal for each of the four directions (Left, Right, Up and Down) plus one for the trigger button. The analogue joystick has a greater range of movement but at the expense of a fast response time. The digital and analogue joysticks are not compatible however it is possible to convert one to the other in a limited capacity. There are two main methods in converting an Atari style joystick on the Apple II computer and each method is only compatible with certain software applications.
The first method of converting an Atari style joystick involves making the four digital positions (Atari joystick - Left, Right, Up and Down) represent the extremities of the analogue ranges (Apple joystick - y-axis low / high and x-axis low / high). For this joystick to work the software must have been written to only look at the low/high analogue values and only use the first pushbutton. The WICO Command Control Joystick Adapter is a good example of a converter that uses this method. If you wish to build one yourself then see Chaptor 9 of the "Computer Controller Cookbook" by Tom & Kelda Riley (http://www.atariarchives.org/ccc/chapter9.php).
The second method of converting the Atari style joysticks involves reading the digital signals (Atari joystick) by using the digital pushbutton input lines on the Apple II's game port. The problem is that the digital joystick contains five digital signals (ten when you talk about two joysticks) but the Apple II's game port only contains three digital inputs. The answer is multiplexing. Since the Apple II's game port (16 pin version) has Annunciator lines (digital outputs) these can be used to multiplex the input signals. The software needs to be specifically written to perform this multiplexing and in fact a lot of software was. It is known as the "Atari Joyport" option.
The second method was able to deliver my aim which was to reproduce that arcade style game controller feeling. It makes quite a difference to how some games are played.
The converter allows two Atari style joysticks to be connected. I also decided to run the signals through the switch box so as to allow switching with my other paddles and joysticks.
The converter requires Annunciator signals from the game port and these are only available via the 16 pin connector. Therefore I did away with the 9 pin cable that connected the Apple II with the switch box and replaced it with two cables.
After building the converter I tested it on some games but it would not work. I manually tested it and found it functioned exactly how I wanted it too. Through trial and error I worked out that my logic was incorrect. All the software was written to accept the opposite of how the analogue joysticks functioned ie the joystick trigger was registered when the pushbutton zero line (PB0) went from active to low and not the other way around. It ended up being an easy fix. All I did was change the inverting multiplexer chip with it's a non-inverting version.
The operation of the "Atari Joyport", when the joystick is in it's steady state (no movement and no trigger), sets the Apple's three input lines (PB0, PB1 and PB2) high. These signals get driven low when a movement occurs or when the trigger is pressed. This operation worked well on the older Apple II models but there was a problem once the Apple IIe came out. This model had a few differences over the previous models. In particular it had a self test (Control + Open-Apple + Closed-Apple + Reset) and two extra keys, the Open-Apple and the Closed-Apple which were electrically tied to PB0 and PB1. This caused a problem for the "Atari Joyport" operation because when a reboot was actioned (PB1 was set high by default) a machine self test accompanied by a high pitched screech resulted. I work around this problem by using the switch box before rebooting or holding the joystick to the left while pressing the Control and Reset keys.
Thank-you Michael for pointing out that my Atari joystick converter needed signal diodes between the multiplexer and the PB inputs. The signal diodes are needed so that the Open-Apple, Close-Apple and Shift (if the Shift key mod is installed) keys do not result in a short circuit condition with the converter's multiplexer. Take note that the diode for PB2 needs to be in the opposite direction to the other two. This is because PB0 and PB1 switch to +5V while PB2 switches to ground. After adding the diodes I had problems getting the converter to work well. It wasn't until I added a pull-up resistor and two pull-downs that the converter functioned correctly again.
A switch was add to the converter's power supply line. I found this easier to use than performing the switching via the switch box.
The schematic was also changed in an attempt to make it less confusing ie the gameport connection was changed to show the Apple's 16 pin port instead of my custom 9 pin hack.
Some examples of software that use the "Atari Joyport" operation are :- Boulder Dash, Spy's Demise.
The circuit board (top and underside views).
The two custom cables and an overview of the setup.
Atari Joystick to Apple II's "Atari Joyport" Converter - Schematic.
Monday, April 27, 2009
UFIC - Update
Subscribe to:
Posts (Atom)