Joystick
The Atari 2600 CX-40 Joystick is a box with a stick in the middle and a fire button on it. The stick provides directionals and sits on top of four switches, Up, Down, Left and Right. The button also sits on top of a switch. When the stick is in the center, no contact is made with any of the directional switches. The button rests on a spring and only makes contact with its switch when pressed. When a directional or the button is pressed, a circuit is completed with the common or ground line and the button or directional line. The console can then determine which switches were pressed by reading a particular memory location. These are strictly digital controllers. Diagonals can be represented by two closed directional switches. The canonical pinout is here :
1 2 3 4 5
6 7 8 9
1 - Up
2 - Down
3 - Left
4 - Right
5 - Not Connected
6 - Button
7 - Not Connected
8 - Common Ground
9 - Not Connected
This joystick pinout is explicitly followed on the Atari 2600, all Atari 8-bit Computers, the Commodore VIC-20, 64 & 128.
Paddles
The Atari 2600 CX-30 Paddle Controllers are a pair of boxes with a dial knob and a button on each. The paddles are attached via a Y-type connector to a common DE-9 female connector. Each dial sits on the stem of a 1000kOhm (1mOhm) potentiometer. On the side is a pushbutton with a spring to keep the switch from always making contact. The potentiometer is supplied with +5v and provides a resistance value in a resistor-capacitor network. For this reason, these are also called analog controllers. The system can tell the position of each knob by measuring the time it takes for a capacitor to charge and discharge. The more resistance, the long the capacitor takes to charge, and vice versa. Each pushbutton is a switch which connects the ground line when pressed, functioning in the same way as the Left or Right directional on a joystick to the console. The pinout is as follows :
1 2 3 4 5
6 7 8 9
1 - Not Connected
2 - Not Connected
3 - Paddle 1 Button
4 - Paddle 2 Button
5 - Paddle 2 Potentiometer Output
6 - Not Connected
7 - Common +5v
8 - Common Ground
9 - Paddle 1 Potentiometer Output
This paddle pinout is explicitly followed on the Atari 2600, all Atari 8-bit Computers, the Commodore VIC-20, 64 & 128. However, Commodore paddles use 470kOhm potentiometers.
Fairchild Channel F System II Hand-Controllers
The original Fairchild console had two hard-wired hand controllers, but the System II uses DE-9 connectors at the console for the hand controllers. The Hand-Controllers were unique control devices, with a hand grip and a triangular knob on the top. This knob could be pushed in any of the four directions like a joystick, pushed down and pulled up for the equivalent of buttons and twisted to one side or the other like a paddle. However, this device is a strictly digital controller, even with the twisting and push/pulling motions. Thus, except for the twisting, more conventional controllers can easily be adapted for the System II. This also demonstrates the limit of the DE-9, for without multiplexing only eight digital inputs from a joystick are possible.
2 - Twist Right
3 - Pull Up
4 - Push Down
5 - Right
6 - Up
7 - Down
8 - Left
9 - Ground
Magnavox Odyssey²
The early consoles had two hardwired controllers, in the later consoles they were detachable. The two ports support digital joysticks, and they function the same, but the wiring is different :
1 - Common Ground
2 - Button
3 - Left
4 - Down
5 - Right
6 - Up
7 - Not Connected
8 - Not Connected
9 - Not Connected
Coleco Colecovision
Two ports, but each controller has one button on each side and a 12-button numberpad. When in joystick mode, the functionality is identical to the Atari joystick, and the left button is used. When in numberpad mode, the number keys and the right button can be used. The inputs function as a matrix for the numberpad. Pin 5, +5v/Ground, from the console selects the mode which it will use. A Colecovision game can therefore use Atari joystick if it does not require the numberpad functionality.
Texas Instruments TI/99 4A
The TI/99 4A uses one DE-9 connector to support two digital joysticks. There are two separate ground lines on this connector, one for each controller. In addition to a Y-adapter, the pinout is non-standard :
1 - Not Connected
2 - Joystick 2 Ground
3 - Up
4 - Button
5 - Left
6 - Not Connected
7 - Joystick 1 Ground
8 - Down
9 - Right
Atari 7800
Two ports, supporting joysticks or paddles. In 7800 games, Pin 6 registers the Right button and Pin 9 the Left button. Pin 7 must provide +5v for the 7800 controller to work correctly. If a 2600 style controller is connected, its button will register both buttons to a 7800 game. This system was officially released with a stick controller (Proline) in the U.S. or a gamepad in Europe.
Sega Master System
Two ports, the Master System uses a D-pad style gamepad controller like the NES, but pad is more of a square shape. Two buttons on each controller. Functions identically to the Atari 2600 joystick but uses pin 9 for the second button. Although Sega Genesis controllers are easier to find, these are almost certainly the most compatible gamepad style controllers for the older systems, and they do not have a chip inside them.
Atari ST
All Atari ST and STe systems support two joystick ports, calling the two ports Port 0 and Port 1. Port 0 supports either a joystick or mouse, while Port 1 is strictly for joysticks. With a Joystick, only the strict Atari Joystick functionality is officially supported. However, the Left Mouse button corresponds to Button 1, so it is not beyond reason that a controller like the Master's System's could be seen as the Right Mouse button, as Pin 9 is used for it. Atari STe machines also have two HD-15 ports which Atari Jaguar controllers can plug into.
Commodore Amiga
The Amiga has two joystick/mouse ports. It can support two mice, two joysticks, or one of each. The joysticks support a second button on pin 9 like the Sega Master System and Atari 7800, but this was kind of unofficial as Commodore's official sticks (designed for their 8-bit machines) only had one button. Some games do support two button joysticks. Button 1 and 2 use the same pins as the Left and Right mouse buttons.
Sega Genesis/Mega Drive
The ordinary crescent shaped gamepad has a circular shaped D-pad and four buttons.
Pin 1 - Up
Pin 2 - Down
Pin 3 - Left/Ground
Pin 4 - Right/Ground
Pin 5 - +5v
Pin 6 - Button B/ButtonA
Pin 7 - Ground/+5v*
Pin 8 - Ground
Pin 9 - Button C/Start
Pin 7 activates a multiplexer chip inside the gamepad to enable the pad to support more than eight inputs. The input before the / is when Pin 7 is ground and after the / is the input when Pin 7 is +5v. It was designed for future expansion, as the standard pad only provides eight inputs. These pads work on the Master System, (Button B = Button 1, Button C = Button 2), except for certain games. They also work on earlier machines which support strict Atari-style joysticks. If you wire pin 7 permanently to ground, you should be able to fix any incompatibilities with SMS games.
On the six-button controller, Pins 1, 2 & 3 also correspond to Buttons Z, Y & X. I am uncertain how well a six button controller works with older systems.
Amstrad PC-1512/1640, CPC 6128
Only one port in Amstrad's machines. Two buttons are supported, with Pin 7 given to the second button.
The original Covox Sound Master PC sound card supported a pair of DE-9 for Atari-style joysticks, it is unknown whether they support a second button.
Sinclair ZX Spectrum
The Spectrum had no joystick ports built-in, but one or two could be added through the expansion connector. There were several popular yet software incompatible interfaces on the market, including the Kempston (most popular), the ZX Interface 2, the Protek and other Cursor interfaces and the Fuller Audio Box. Spectrum and Fuller support two ports, the rest support one port. Wiring is standard.
Sinclair ZX Spectrum +2/+3
Two joystick ports, but pin wiring is completely different :
Pin 1 - Not Connected
Pin 2 - Ground
Pin 3 - Not Connected
Pin 4 - Button
Pin 5 - Up
Pin 6 - Right
Pin 7 - Left
Pin 8 - Ground
Pin 9 - Down
2 - Button
3 - Left
4 - Down
5 - Right
6 - Up
7 - Not Connected
8 - Not Connected
9 - Not Connected
Coleco Colecovision
Two ports, but each controller has one button on each side and a 12-button numberpad. When in joystick mode, the functionality is identical to the Atari joystick, and the left button is used. When in numberpad mode, the number keys and the right button can be used. The inputs function as a matrix for the numberpad. Pin 5, +5v/Ground, from the console selects the mode which it will use. A Colecovision game can therefore use Atari joystick if it does not require the numberpad functionality.
Texas Instruments TI/99 4A
The TI/99 4A uses one DE-9 connector to support two digital joysticks. There are two separate ground lines on this connector, one for each controller. In addition to a Y-adapter, the pinout is non-standard :
1 - Not Connected
2 - Joystick 2 Ground
3 - Up
4 - Button
5 - Left
6 - Not Connected
7 - Joystick 1 Ground
8 - Down
9 - Right
Atari 7800
Two ports, supporting joysticks or paddles. In 7800 games, Pin 6 registers the Right button and Pin 9 the Left button. Pin 7 must provide +5v for the 7800 controller to work correctly. If a 2600 style controller is connected, its button will register both buttons to a 7800 game. This system was officially released with a stick controller (Proline) in the U.S. or a gamepad in Europe.
Sega Master System
Two ports, the Master System uses a D-pad style gamepad controller like the NES, but pad is more of a square shape. Two buttons on each controller. Functions identically to the Atari 2600 joystick but uses pin 9 for the second button. Although Sega Genesis controllers are easier to find, these are almost certainly the most compatible gamepad style controllers for the older systems, and they do not have a chip inside them.
Atari ST
All Atari ST and STe systems support two joystick ports, calling the two ports Port 0 and Port 1. Port 0 supports either a joystick or mouse, while Port 1 is strictly for joysticks. With a Joystick, only the strict Atari Joystick functionality is officially supported. However, the Left Mouse button corresponds to Button 1, so it is not beyond reason that a controller like the Master's System's could be seen as the Right Mouse button, as Pin 9 is used for it. Atari STe machines also have two HD-15 ports which Atari Jaguar controllers can plug into.
Commodore Amiga
The Amiga has two joystick/mouse ports. It can support two mice, two joysticks, or one of each. The joysticks support a second button on pin 9 like the Sega Master System and Atari 7800, but this was kind of unofficial as Commodore's official sticks (designed for their 8-bit machines) only had one button. Some games do support two button joysticks. Button 1 and 2 use the same pins as the Left and Right mouse buttons.
Sega Genesis/Mega Drive
The ordinary crescent shaped gamepad has a circular shaped D-pad and four buttons.
Pin 1 - Up
Pin 2 - Down
Pin 3 - Left/Ground
Pin 4 - Right/Ground
Pin 5 - +5v
Pin 6 - Button B/ButtonA
Pin 7 - Ground/+5v*
Pin 8 - Ground
Pin 9 - Button C/Start
Pin 7 activates a multiplexer chip inside the gamepad to enable the pad to support more than eight inputs. The input before the / is when Pin 7 is ground and after the / is the input when Pin 7 is +5v. It was designed for future expansion, as the standard pad only provides eight inputs. These pads work on the Master System, (Button B = Button 1, Button C = Button 2), except for certain games. They also work on earlier machines which support strict Atari-style joysticks. If you wire pin 7 permanently to ground, you should be able to fix any incompatibilities with SMS games.
On the six-button controller, Pins 1, 2 & 3 also correspond to Buttons Z, Y & X. I am uncertain how well a six button controller works with older systems.
Amstrad PC-1512/1640, CPC 6128
Only one port in Amstrad's machines. Two buttons are supported, with Pin 7 given to the second button.
The original Covox Sound Master PC sound card supported a pair of DE-9 for Atari-style joysticks, it is unknown whether they support a second button.
Sinclair ZX Spectrum
The Spectrum had no joystick ports built-in, but one or two could be added through the expansion connector. There were several popular yet software incompatible interfaces on the market, including the Kempston (most popular), the ZX Interface 2, the Protek and other Cursor interfaces and the Fuller Audio Box. Spectrum and Fuller support two ports, the rest support one port. Wiring is standard.
Sinclair ZX Spectrum +2/+3
Two joystick ports, but pin wiring is completely different :
Pin 1 - Not Connected
Pin 2 - Ground
Pin 3 - Not Connected
Pin 4 - Button
Pin 5 - Up
Pin 6 - Right
Pin 7 - Left
Pin 8 - Ground
Pin 9 - Down
MSX, Sharp X68000
Almost identical to the Atari standard, except supports button 2 on pin 7 and the ground is on pin 9. Pin 8 functions as an output pin from the computer.
FM Towns/Marty
Completely different pin arrangement. Supports four buttons : Button 1, Button 2, Run and Start. Diodes are used to make Start the equivalent of pressing Up and Down at the same time and Run is the equivalent of pressing Left and Right at the same time.
Pin 1 - Not Connected
Pin 2 - Right
Pin 3 - Left
Pin 4 - Down
Pin 5 - Up
Pin 6 - Ground
Pin 7 - Not Connected
Pin 8 - Button 2
Pin 9 - Button 1
Covox Sound Master
This was an early IBM PC compatible sound card that never caught on and was only supported in a handful of PC games. It does have two DE-9 ports that are supposedly Atari-compatible, which do not function anything like a typical PC joystick.
Apple IIe, Enhanced //e, //c, //c+, //gs
Not compatible with digital joysticks, but has many similarities with paddles when connected. One female port on back of computer. Also shared with mouse on the //c & //c+. 150kOhm potentiometers are used. Button 3 is almost never used, and even though four analog inputs are supported only one pair of paddles are intended to be connected at a time. Apple paddles are hard to find. A two-button analog joystick was the more common device connected.
Pin 1 - Button 2
Pin 2 - +5v
Pin 3 - Ground
Pin 4 - Paddle Input 3
Pin 5 - Paddle Input 1
Pin 6 - Button 3
Pin 7 - Button 1
Pin 8 - Paddle Input 2
Pin 9 - Paddle Input 4
Incompatible DE-9 Joysticks
The 3D0 may use a DE-9 gamepad, but it uses a serial interface with a Data and a Clock line. Ditto for Famiclones and NESclones. The Milton Bradley Vectrex has an analog stick with four pushbuttons, but the analog stick functions as a voltage divider and thus is not quite compatible with the Atari-style analog paddles. The Mattel Intellivision II had detachable DE-9 ports, but that controller uses an 8-bit binary code to signal the state of the 16-position disc, 12-button numberpad and 3 buttons.
Pin 2 - Right
Pin 3 - Left
Pin 4 - Down
Pin 5 - Up
Pin 6 - Ground
Pin 7 - Not Connected
Pin 8 - Button 2
Pin 9 - Button 1
Covox Sound Master
This was an early IBM PC compatible sound card that never caught on and was only supported in a handful of PC games. It does have two DE-9 ports that are supposedly Atari-compatible, which do not function anything like a typical PC joystick.
Apple IIe, Enhanced //e, //c, //c+, //gs
Not compatible with digital joysticks, but has many similarities with paddles when connected. One female port on back of computer. Also shared with mouse on the //c & //c+. 150kOhm potentiometers are used. Button 3 is almost never used, and even though four analog inputs are supported only one pair of paddles are intended to be connected at a time. Apple paddles are hard to find. A two-button analog joystick was the more common device connected.
Pin 1 - Button 2
Pin 2 - +5v
Pin 3 - Ground
Pin 4 - Paddle Input 3
Pin 5 - Paddle Input 1
Pin 6 - Button 3
Pin 7 - Button 1
Pin 8 - Paddle Input 2
Pin 9 - Paddle Input 4
Incompatible DE-9 Joysticks
The 3D0 may use a DE-9 gamepad, but it uses a serial interface with a Data and a Clock line. Ditto for Famiclones and NESclones. The Milton Bradley Vectrex has an analog stick with four pushbuttons, but the analog stick functions as a voltage divider and thus is not quite compatible with the Atari-style analog paddles. The Mattel Intellivision II had detachable DE-9 ports, but that controller uses an 8-bit binary code to signal the state of the 16-position disc, 12-button numberpad and 3 buttons.
I'm pretty sure the Amstrad PC1512 had a single joystick port, in the back of the keyboard. I remember trying one of my Atari 2600 joysticks in it on a whim, and being very surprised when it actually worked! If I remember correctly, it mapped the direction switches to cursor key presses and the button to Enter (though this may have been configurable in the Non-Volatile RAM like the mouse button keypresses were). This meant that it could be used in games which didn't actually have joystick support. Though trying to play Digger with it was extremely frustrating!
ReplyDeleteYou are correct, the Amstrad PC1512 and 1640 only have a single joystick port. According to the technical reference manuals, the directional positions are translated to the cursor keys, and the buttons are configurable in the Non-Volatile RAM. This works when the game uses the keyboard BIOS routine to read the scancodes. It will not work, however, if the game reads the scancode directly from the I/O, as all joystick directionals and buttons have unique untranslated scancodes.
ReplyDeleteThe amiga would happily read a 3rd button on pin 5, seldom found or used on joysticks/joypads but it was used by amiga 3-button mice (the stock amiga mouse only had two buttons, but there were a lot of 3rd-party ones).
ReplyDeleteNote the amiga cd32 joypad existed too, and also used the same 9-pin port! It had a d-pad, four colored front buttons, left and right shoulder buttons, and a start/pause button!
No, it was not compatible with the megadrive/genesis, but it actually worked just fine on amigas other than the cd32 as it reused the existing programmable in/out pin support intended for analog joysticks and such. I bought one for use with my 1200.
It was a bit more complex to read the buttons though, as the above link documents - packets of serialised button data were sent over pin 9 in sync with a clock signal on pin 6 when the pad wass knocked into gamepad mode (it defaulted to a backward-compatible joystick mode) by futzing with pin 5!