Difference between revisions of "Digital Joysticks"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
 
(68 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Joystick on Amstrad range of 8 bit computers used almost the Atari standard.
+
== Technical ==
  
Yet some modification occured, especially for the PLUS range as Amstrad aimed the console market (GX400) and used a politic of "Exclusive Hardware" like all console manufacturers of the time.
+
The CPC joystick port is (more or less) based on the Atari-standard, for details on the pin-outs (and differences between Amstrad CPC and normal Atari/Commodore ports), see:
  
As a result is may be a problem to find proper Joysticks for your PLUS/GX4000.
+
* [[Connector:Digital joystick|CPC Joystick Port Pin-Outs]]
  
The goal of this page is to find all proper solutions for modern Amstradist to play it for real and give some gameplay options to games designers who would like to introduce need element on CPC and PLUS games to come.
+
At software side, the joystick port is part of the keyboard matrix, accessed via the general purpose I/O port in the [[PSG]] chip, which is itself accessed indirectly via the [[8255]] chip.
  
 +
== Official Amstrad Joysticks ==
  
==AMSTRAD CPC Joystick==
+
[[Image:jy2.jpg|50px|right]]
  
 +
* [[Amstrad JY-1/JY-2 joysticks]]
  
Here are the Amstrad CPC Joystick port pinout
+
Amstrad's two-button joysticks. The quality isn't spectacular, so most CPC users tended to use third-party sticks, with only 1-button, but better quality. The JY-2 version contains a connector for a second joystick (equivalent to a built-in Y-cable).
  
_________________
+
== Official CPC+/GX4000 Joypads ==
\ o1 o2 o3 o4 o5/
+
  \ o6 o7 o8 o9 /
+
  \___________/
+
  
{|{{Prettytable|width: 400px; font-size: 2em;}}
+
[[Image:Gx4000.jpg|50px|right]]
|''Pin No.''||''Signal Name''||''Description''
+
The CPC+ and GX4000 were shipped with one or two digital joypads included. Technically, they work same as normal joysticks. But, they have two buttons. And, the GX4000 doesn't have a keyboard which could be used instead of a second fire button. In result, some CPC+/GX4000 games may rely on 2-button hardware, making them incompatible with regular 1-button joysticks.
|-
+
|1||Up||
+
|-
+
|2||Down||
+
|-
+
|3||Left||
+
|-
+
|4||Right||
+
|-
+
|5||Fire 3||undocumented, used by the AMX Mouse for example
+
|-
+
|6||Fire 2
+
|-
+
|7||Fire 1||Other systems pull +5V from here for auto-fire circuits!
+
|-
+
|8||GND||"Common"
+
|-
+
|9||GND2||"Common 2" for 2nd joystick
+
|}
+
  
In this case, the numbering from the manual matches that of standard plugs.
+
== Compatible Standard Joysticks ==
For a wiring diagram of an Y-cable with which you can use two joysticks on your Amstrad/Schneider CPC, see [[Joystick Y-cables]].
+
  
Also most of the games didn't make use of the Fire2 button, and even more of the undocumented Fire3 button.
+
[[Image:Joystick Competition PRO 5000 box front.jpg|50px|right]]
  
As Amstrad CPC do sport only one Joystick connection, it is possible to customise some kind of 6 button Joystock quite easily, using the 4 directions of the second button as additionnal fire, for use in 1 player games.
+
All Atari-compatible digital joysticks with ''Single Fire Button and Four Direction switches'' should be usually working with the CPC. For example, classic Competition Pro joysticks or the [[Konix Speedking]].
  
Such a custom device would need 2 controllers connectors to be used on an Amstrad plus.
+
== Incompatible Standard Joysticks ==
  
==Finding proper joysticks==
+
* Joysticks that do require 5V/GND supply (eg. for built-in auto-fire circuits) won't work on the CPC.
 +
* Joysticks with 2-3 buttons may also be problematic (in the Atari standard, 2nd/3rd button are wired between POT0/POT1 and 5V).
 +
* And, in lack of the POT inputs, any kind of analog devices (like Atari paddles) won't work on the CPC.
 +
* Newer joysticks with PC-style 15pin or USB connector obviously won't fit to the CPCs 9pin port (unless one eliminates the electronics inside of those joysticks, and re-wires their botton/dirction switches directly to the CPCs joystick port).
  
It is not that easy, especially for the PLUS range.
+
== Y-Cable ==
  
Yet most traditionnal controllers working on Amiga 500 or Atari ST will work just fine on a good old CPC.
+
[[Image:CPC Plus Joystick Port.gif|50px|right]]
  
Few games made use of the possibility to have a second button, yet some controllers did feature this alongside Autofire.
+
The original CPC models have only one joystick port, but can be used with 2 joysticks when using a Y-cable:
  
 +
* [[Joystick Y-cables]]
  
One of the simpler way is to use SEGA joysticks and paddle, yet it may need some kind of adaptator (to be done here).
+
The CPC+/GX4000 have two digital joystick ports (which work equivalent to an incompletely implemented Y-cable with only 8 diodes - there are no diodes in the fire button lines, so fire buttons '''do not work properly''' with two players).
  
 +
== Joystick Related stuff... Sega Controllers... ==
  
==Sega Controllers==
+
* [[Digital Joystick Related]]
  
Source : http://pinouts.ru/Game/
+
== Developing programs that use joystick ==
  
*Sega Genesis (MegaDrive too?)
+
In the CPC world it is more common that a game supports both digital joystick and keyboard for those users who don't own joysticks.
  
''It' used a slightly different approach in joystick connection than Atari. The Sega joystick pinout seems to be the "standard" 2-button joystick configuration where pins 6 and 9 are used for buttons which ground the pin when pressed. The only strange thing is that the joystick seems to also want +5V at pin 5. Sega has added a 6-button model in addition to its original 3-button configuration. The 6-button joysticks use essentially the same interface, but add more buttons by using extra circuitry that multiplexes the new button signals with the existing joystick signals, using the control bit in connector pin 7. The chip inside the controller is a 74HC157. This is a high-speed CMOS quad 2-line to 1-line multiplexer. The console can, with help of the Select pin, choose from two functions on each input.
+
There are some common keyboard configurations used:
''
+
  
{|{{Prettytable|width: 400px; font-size: 2em;}}
+
* '''Cursor keys & SPACE'''  
|''Pin No.''||''Name (Select=GND)''||''Name (Select=+5V)''
+
** This configuration is often used and is great for the CPC6128 and Plus and playing using emulators.
|-
+
** This is '''not good''' for CPC 464 and 664 (which have uncomfortably arranged cursor keys)
|1||Up||Up
+
|-
+
|2||Down||Down
+
|-
+
|3||Gnd / Left||
+
|-
+
|4||Gnd / Right||
+
|-
+
|5||+5VDC||+5VDC
+
|-
+
|6||Button A||Button B
+
|-
+
|7||Select ||Select
+
|-
+
|8||Ground ||Ground
+
|-
+
|9||Start ||Button C
+
|}
+
  
*SEGA Master System
+
* '''Q,A,O,P,SPACE''' - (Q up, A down, O left, P right, SPACE fire)
 +
** This is a good solution, and it's a sort of standard (used by many games).
 +
** Note: On french keyboards it'd be A,Q,O,P - anyways, the "UP" key is always Row8.Bit3, no matter if it's locally called "Q" (english QWERTY keyboard), or "A" (french AZERTY keyboard).
  
The SMS gamepads are almost exactly the same as normal Atari standard.
+
Best would be to support joysticks, plus the above two keyboard mappings. Best to support them all at once (without needing the user select which one to use). In addition, it is also nice if the keys could be redefined but that is not necessary.
  
 +
== Relevant locations in Keyboard Matrix ==
  
{|{{Prettytable|width: 400px; font-size: 2em;}}
+
{|{{Prettytable|width: 700px; font-size: 2em;}}
|''Pin No.''||''Signal Name''||''Description''
+
|''Direction''||''Joystick 1''||''Joystick 2''||''Cursor,Space''||''Q,A,O,P,Space''
 
|-
 
|-
|1||Up||
+
|Up        ||Row9.Bit0  ||Row6.Bit0 (6)  ||Row0.Bit0  ||Row8.Bit3 (Q)
 
|-
 
|-
|2||Down||
+
|Down      ||Row9.Bit1  ||Row6.Bit1 (5)  ||Row0.Bit2  ||Row8.Bit5 (A)
 
|-
 
|-
|3||Left||
+
|Left      ||Row9.Bit2  ||Row6.Bit2 (R)  ||Row1.Bit0  ||Row4.Bit2 (O)
 
|-
 
|-
|4||Right||
+
|Right    ||Row9.Bit3  ||Row6.Bit3 (T)  ||Row0.Bit1  ||Row3.Bit3 (P)
 
|-
 
|-
|5||Power||
+
|Fire2    ||Row9.Bit4  ||Row6.Bit4 (G)  ||Row5.Bit7  ||Row5.Bit7 (Space)
 
|-
 
|-
|6||Button 1
+
|Fire1 (*) ||Row9.Bit5  ||Row6.Bit5 (F)  ||(wherever) ||(wherever)
 
|-
 
|-
|7||N/C||
 
|-
 
|8||GND||
 
|-
 
|9||Button 2||
 
 
|}
 
|}
 +
(*) Mind that Fire1 isn't supported on normal 1-button joysticks. When using it, also provide an alternate key on the keyboard.
  
''Each button (left, right, button 1 ect.) is in fact a voltage(very small), this voltage is grounded to result in movement, fire, jump ect. For standard master system controllers this is directly feed to the system via wires only (some other controllers use a micro chip) they also are not connected to voltage, while some others do.
+
== Other game controller inputs ==
The Sega Genesis (in Europe sold as Sega MegaDrive) pads are an extension to the Sega Master System pads. They use more buttons (3+1, 5+1, 6+1). They use the one usnused pin as a select pin for reading more buttons.''
+
 
+
Those SMS standard controlers may be used alsmot unchanged on a CPC if the software allows to redefine controls. As a result you may use only one button : the fire 2 wich would be the button 1 on the controller.
+
 
+
It seems the "Power" button on SMS controlers is used when the controler is fitted with AutoFire option (needs to be checked) or when using the Lightgun.
+
 
+
==Nunchakus technique==
+
 
+
It is possible to achieve a pseudo Nintendo WII feeling by using 2 paddles, one for each hand.
+
 
+
If the game allows to redefine controls and the use of 2 joysticks, then you use :
+
 
+
*left hand as directional one, using an amstrad paddle turned 90° Clockwise.
+
 
+
Left = Up
+
 
+
Right = Down
+
 
+
Up = Right
+
 
+
down = left
+
 
+
(using your thumb)
+
 
+
*Right Hand as firing one, with a second paddle turned 90° Counterclockwise.
+
 
+
Access to fire 1 and 2 with the thumb.
+
 
+
 
+
By this mean, the cables don't mess with your hands... Also it is a nice way to deal with the shitty Amstrad Plus controllers size/quality. Yet this works only with 1 player games or need a custom connecting cable/box, a "reversed Y-cable".
+
 
+
You may also easily achieve a 4 fire button config by using both directional pads (one for each thumb yet the cable would be a nuisance) or a fixed Joystick (right hand, directions) + a paddle (left hand, fires).
+
 
+
 
+
==PC controllers==
+
 
+
Good old controllers for IBM PC & Compatibles weren't always USB, as it didn't really existed in the 90.
+
 
+
Many of them used a DA-15 connector, the same as the analog port on Amstrad Plus, wich was often pluged into the soundcard (Sound Blaster card was in fact game card...).
+
 
+
Those joystick weren't always analog too and many can still be found in your old cave awaiting a new life.
+
 
+
DA-15/DE-9 adaptators can also still be found.
+
 
+
 
+
 
+
 
+
 
+
More pics to come.
+
  
 +
The CPC+/GX4000 additionaly have an [[Analog Joysticks|15pin Analog Joystick]] Port, and a [[Connector:Aux socket (CPC Plus only)|6pin Lightgun socket]] (AUX).
  
 +
== Other hardware that can be connected to the CPC joystick port ==
  
 +
The CPCs digital joystick port is occasionally also misused to connect other hardware, known examples are:
 +
Some Lightguns: ([[Gunstick]], [[Loriciel Phaser (West Phaser)|West Phaser]]).
 +
Amstrad's Lightpen ([[Amstrad LP-1 light pen]]).
 +
A rather crappy 8bit printer port extension ([[CPCI 8bit Printer Mod]]).
 +
And, various mouse interfaces ([[AMX Mouse]], [[Atari-ST mouse adapter]], [[dk'tronics Mouse Interface|Dk'tronics Mouse Interface]], [[CPC-Mousepack 2.0]], [[GEOS mouse|GEOS mouse]]).
 +
Plus exotic things like the [[Ambug|Ambug Robot]] and [[Codemasters CD]].
  
 +
On the original CPCs, the direction/button inputs can be reprogrammed as outputs (via PSG/PPI config). However, this will NOT work on the CPC+/GX4000's dual joystick ports - which include diodes (like normal joystick Y-cables).
  
[[Category:Hardware]][[Category:Peripherals]][[Category:Stub]]
+
[[Category:Input Device]][[Category:Peripherals]]

Latest revision as of 15:03, 19 December 2010

Technical

The CPC joystick port is (more or less) based on the Atari-standard, for details on the pin-outs (and differences between Amstrad CPC and normal Atari/Commodore ports), see:

At software side, the joystick port is part of the keyboard matrix, accessed via the general purpose I/O port in the PSG chip, which is itself accessed indirectly via the 8255 chip.

Official Amstrad Joysticks

Jy2.jpg

Amstrad's two-button joysticks. The quality isn't spectacular, so most CPC users tended to use third-party sticks, with only 1-button, but better quality. The JY-2 version contains a connector for a second joystick (equivalent to a built-in Y-cable).

Official CPC+/GX4000 Joypads

Gx4000.jpg

The CPC+ and GX4000 were shipped with one or two digital joypads included. Technically, they work same as normal joysticks. But, they have two buttons. And, the GX4000 doesn't have a keyboard which could be used instead of a second fire button. In result, some CPC+/GX4000 games may rely on 2-button hardware, making them incompatible with regular 1-button joysticks.

Compatible Standard Joysticks

Joystick Competition PRO 5000 box front.jpg

All Atari-compatible digital joysticks with Single Fire Button and Four Direction switches should be usually working with the CPC. For example, classic Competition Pro joysticks or the Konix Speedking.

Incompatible Standard Joysticks

  • Joysticks that do require 5V/GND supply (eg. for built-in auto-fire circuits) won't work on the CPC.
  • Joysticks with 2-3 buttons may also be problematic (in the Atari standard, 2nd/3rd button are wired between POT0/POT1 and 5V).
  • And, in lack of the POT inputs, any kind of analog devices (like Atari paddles) won't work on the CPC.
  • Newer joysticks with PC-style 15pin or USB connector obviously won't fit to the CPCs 9pin port (unless one eliminates the electronics inside of those joysticks, and re-wires their botton/dirction switches directly to the CPCs joystick port).

Y-Cable

CPC Plus Joystick Port.gif

The original CPC models have only one joystick port, but can be used with 2 joysticks when using a Y-cable:

The CPC+/GX4000 have two digital joystick ports (which work equivalent to an incompletely implemented Y-cable with only 8 diodes - there are no diodes in the fire button lines, so fire buttons do not work properly with two players).

Joystick Related stuff... Sega Controllers...

Developing programs that use joystick

In the CPC world it is more common that a game supports both digital joystick and keyboard for those users who don't own joysticks.

There are some common keyboard configurations used:

  • Cursor keys & SPACE
    • This configuration is often used and is great for the CPC6128 and Plus and playing using emulators.
    • This is not good for CPC 464 and 664 (which have uncomfortably arranged cursor keys)
  • Q,A,O,P,SPACE - (Q up, A down, O left, P right, SPACE fire)
    • This is a good solution, and it's a sort of standard (used by many games).
    • Note: On french keyboards it'd be A,Q,O,P - anyways, the "UP" key is always Row8.Bit3, no matter if it's locally called "Q" (english QWERTY keyboard), or "A" (french AZERTY keyboard).

Best would be to support joysticks, plus the above two keyboard mappings. Best to support them all at once (without needing the user select which one to use). In addition, it is also nice if the keys could be redefined but that is not necessary.

Relevant locations in Keyboard Matrix

Direction Joystick 1 Joystick 2 Cursor,Space Q,A,O,P,Space
Up Row9.Bit0 Row6.Bit0 (6) Row0.Bit0 Row8.Bit3 (Q)
Down Row9.Bit1 Row6.Bit1 (5) Row0.Bit2 Row8.Bit5 (A)
Left Row9.Bit2 Row6.Bit2 (R) Row1.Bit0 Row4.Bit2 (O)
Right Row9.Bit3 Row6.Bit3 (T) Row0.Bit1 Row3.Bit3 (P)
Fire2 Row9.Bit4 Row6.Bit4 (G) Row5.Bit7 Row5.Bit7 (Space)
Fire1 (*) Row9.Bit5 Row6.Bit5 (F) (wherever) (wherever)

(*) Mind that Fire1 isn't supported on normal 1-button joysticks. When using it, also provide an alternate key on the keyboard.

Other game controller inputs

The CPC+/GX4000 additionaly have an 15pin Analog Joystick Port, and a 6pin Lightgun socket (AUX).

Other hardware that can be connected to the CPC joystick port

The CPCs digital joystick port is occasionally also misused to connect other hardware, known examples are: Some Lightguns: (Gunstick, West Phaser). Amstrad's Lightpen (Amstrad LP-1 light pen). A rather crappy 8bit printer port extension (CPCI 8bit Printer Mod). And, various mouse interfaces (AMX Mouse, Atari-ST mouse adapter, Dk'tronics Mouse Interface, CPC-Mousepack 2.0, GEOS mouse). Plus exotic things like the Ambug Robot and Codemasters CD.

On the original CPCs, the direction/button inputs can be reprogrammed as outputs (via PSG/PPI config). However, this will NOT work on the CPC+/GX4000's dual joystick ports - which include diodes (like normal joystick Y-cables).