LA JOYPAD-MANIA A COMMENCE,
ENTREZ DONC DANS LA DANSE !
Il était une fois deux ports placés judicieusement sur la gauche des
machines "enhanced" (NDLR : améliorés) de la gamme ST sorties par la
firme ATARI. Les Anciens se rappeleront avec nostalgie la gamme des
8 bits où les ports se trouvaient non pas sur la gauche mais sur la
droite des 800 XL. Et non pas fourrés au dessous de leur machine sous
prétexte de raffinement !
Car il faut bien le souligner, quand on
voulait jouer à deux joueurs joystick, il fallait, si on n'avait pas
acheté la rallonge souris, posséder une dextérité hors norme pour
intervertir les deux connecteurs. Je n'oserai pas non plus insister
sur la mémoire visuelle qu'il fallait pour retenir le sens dans lequel
il fallait les enfoncer. Les possesseurs de PC de ma connaissance
n'ont, quand à eux, jamais dit avoir rencontré de tels problèmes. Ni
aucun problème de joystick d'ailleurs. Les veinards ils ont toutes
les touches du clavier pour eux tous seuls. Et la souris bien entendu.
Oh oui, je me rappelle d'un ou deux êtres qui m'avaient parlé de
calibrage, et hum je n'avais pas très bien compris ce dont il s'agissait.
Le mot "compatible" doit être à double sens, je pense.
(mots clef : compatible PC, Problèmes de Compatibilités sont très liés).
Les Joysticks STe, mythe ou réalité ?
Je donne la réponse pour que les curieux se rassurent : c'est bien un
mythe. Ca existe en théorie mais en pratique, seuls quelques
bricoleurs ont réussi à en créer en série limitée. Vous savez, comme
les Ferraris, ces modèles artisanaux créés à la main sans aide de
support quelconque, tout en résine et travail d'orfèvrerie à la
finition. C'est un peu comme les contes ; on en entend parler dans les
livres, les récits se recoupent, on donne même des descriptions
détaillées mais nulle trace de ces curiosités dans la nature.
Extrait d'un conte sur le STe
Oyez, oyez peuple Atarois,
les adresses des ports vont de $FF9201 à $FF9203
le premiers de ces trois choix
contient les tirs qui rougreoient
Si bien que les deux derniers restent cois
sauf si d'un mouvement tu agissoit
en se partageant les octets de droits,
quatre forment les bâtons de joie.
Meme des raquettes peuvent arriver là,
mais c'est une autre histoire que celle là !
"The bringer of War"
(NdlR: titre de la musique d'EPIC pour la version ST)
Ce n'est que maintenant que l'on peut dépoussiérer ces fameux ports STe,
en y branchant un joystick JAGUAR, appelé "JAGUAR controller".
Le prix est aux alentours de 250 Frs, et comprend un superbe carton noir
incluant le monstre. Si je dis le monstre, ce n'est pas pour être
péjoratif, c'est juste un qualificatif quand je le compare aux joypads
des consoles concurrentes. Décrivons-le :
- Joypad 8 directions, classique bien que surprenant pour les anciens du Stick.
- 3 firebuttons placés de manière ergonomique avec un repère sur le central.
- un bouton Pause
- un bouton Option
- Un pavé numérique type Téléphone à 12 touches, devant lequel on peut insérer des fiches.
Le tout relié à un câble de 12 fils sur les 15 que pourraient supporter
le port STe. Ceux manquants correspondant à ce qui aurait pu donner vie
à des Paddles selon la littérature de science fiction type
"Heroic Fantasy" que l'on peut lire à ce sujet.
Comment diable caser tout ça dans un port 12 broches ?
Ça c'est la question que je me suis posée en bon logicien qui se
respecte. En effet comment faire tenir dans 12 fils ce que je
considère comme 21 Signaux indépendants possibles.
- 4 directions logiques
- 5 boutons supérieurs
- 12 boutons sur le pavé numérique
De plus à la lecture, on ne bénéficie que de 3 Octets en réalité. Soit
24 selecteurs binaires pour deux joysticks. Je me suis dit ; ils ont
dû faire des compromis. Je pensais que sur le pavé numérique, on
avait établi des schémas différents de cablage et que donc on ne
pouvait pas appuyer sur deux touches à la fois si on voulait une
réponse cohérente. J'étais loin de la solution, en réalité on pouvait
tout obtenir mais ça, j'ai mis du temps à le comprendre.
Allo Joypad ? ici l'ordinateur ! tu me reçois ?
C'est de cette manière que j'ai tout d'abord essayé de lire le Joypad,
fort de l'enseignement appris dans la lecture des Joysticks STe que
nous nous étions bricolés, mon frère et moi. Réponse: $FF sur toute
la ligne quelque soit les touches que j'appuie. C'est là que je me
suis dit : Zut il est bogué ce &!#@ de #&!%.
Alors j'ai essayé
LLAMAZAP-Démo, un shoot'em up de première classe. Et pour ce jeu,
tout fonctionna très bien. Il se fout de moi celui là dis-je dans un
emportement tout aussi mesuré. Retour au banc d'essai et il redevient
muet comme une carpe. Autant vous dire que je n'avais pas l'air malin
(et ce n'est pas la peine de vous foutre de moi). Alors j'ai appelé :
Patriiiiiiiiiiick; non pas Bruel mais mon frère. Avec un peu
d'entêtement on a essayé de le lire en vain, alors que notre
joystick STe "maison" fonctionnait très bien. C'est alors que l'on a
essayé ce qui allait nous sauver : le pokage.
On a donc essayé (sans y croire car cela n'avait pas de sens) de mettre 0
dans L'adresse des joysticks en $FF9201, en $FF9202 et en $FF9203 (par
erreur).
Le CHEAT MODE
Prenez avec un éditeur de secteurs, recherchez à l'adresse $FF9201 la
séquence $FFFFFF et remplacez la par $FFFFEE. Vous pourrez alors jouer
avec le Joypad. Voici, avec un peu d'humour ce que l'on pourrait trouver
comme Cheat mode dans un magazine pour avoir les commandes infinies à ce
grand jeu qu'est la programmation des Joypads.
La Soluce Complète :
PadH0 | direction Haut Paddle0 |
PadB0 | direction Bas Paddle0 |
PadG0 | direction Gauche Paddle0 |
PadD0 | direction Droite Paddle0 |
Pause0 | Bouton de Pause Paddle0 |
Option0 | Bouton Option Paddle0 |
FireA0 | Bouton Fire A Paddle0 |
FireB0 | Bouton Fire B Paddle0 |
FireC0 | Bouton Fire C Paddle0 |
N1P0 | Numeric 1 Pad0 |
N2P0 | Numeric 2 Pad0 |
N3P0 | Numeric 3 Pad0 |
N4P0 | Numeric 4 Pad0 |
N5P0 | Numeric 5 Pad0 |
N6P0 | Numeric 6 Pad0 |
N7P0 | Numeric 7 Pad0 |
N8P0 | Numeric 8 Pad0 |
N9P0 | Numeric 9 Pad0 |
N*P0 | Numeric * Pad0 |
N0P0 | Numeric 0 Pad0 |
N#P0 | Numeric # Pad0 |
La case mémoire $FF9203, se décompose en 8 valeurs appelées bits.
b7-b6-b5-b4-b3-b2-b1-b0 dans l'ordre du plus fort au plus faible.
On peut mettre une valeur dans cette adresse qui aura pour but une
activation.
si b0 vaut 0, le Padx0 est actif
si b0 vaut 0, Pause0 est actif
si b3 vaut 0, Option0 est actif
si b0 vaut 0, FireA0 est actif
si b1 vaut 0, FireB0 est actif
si b2 vaut 0, FireC0 est actif
si b1 vaut 0, la colonne numérique N1P0 N4P0 N7P0 N*P0 est active
si b2 vaut 0, la colonne numérique N2P0 N5P0 N8P0 N0P0 est active
si b3 vaut 0, la colonne numérique N3P0 N6P0 N9P0 N#P0 est active
Et pareil avec l'autre port STe sur les bits b4-b5-b6-b7.
La case mémoire $FF9201, se décompose en 8 valeurs appelées bits.
b7-b6-b5-b4-b3-b2-b1-b0 dans l'ordre du plus fort au plus faible.
On peut lire une valeur à cette adresse qui nous informera de l'état du
Joypad.
si b0 vaut 0, on a appuyé sur pause0
si b1 vaut 0, on a appuyé sur FireA0 ou FireB0 ou FireC0
si b2 vaut 0, on a appuyé sur pause1
si b3 vaut 0, on a appuyé sur FireA1 ou FireB1 ou FireC1
La case mémoire $FF9202, se décompose en 8 valeurs appelées bits.
b7-b6-b5-b4-b3-b2-b1-b0 dans l'ordre du plus fort au plus faible.
si b0 vaut 0, on a appuyé sur PadH0 ou N*P0 ou N0P0 ou N#P0
si b1 vaut 0, on a appuyé sur PadB0 ou N7P0 ou N8P0 ou N9P0
si b2 vaut 0, on a appuyé sur PadG0 ou N4P0 ou N5P0 ou N6P0
si b3 vaut 0, on a appuyé sur PadD0 ou N1P0 ou N2P0 ou N3P0
Du coup, en inhibant certaines touches de manière judicieuse, on peut
savoir sur quelle touche a appuyé le joueur. Certaines opérations
nécessitent donc deux lectures de l'adresse (pavé numérique).
Exemple utile pour avoir l'équivalent d'un Joystick un Bouton.
POKE $FF9203,$EE : inhibe les pavés numériques et autorise les FireA + Pause.
Comment être sûr de l'appui d'une touche donnée
Type | valeur du bit | adresse | Contenu |
PadH0 | 2b0=0 | $FF9203 | bxxxx1110 |
PadB0 | 2b1=0 | $FF9203 | bxxxx1110 |
PadG0 | 2b2=0 | $FF9203 | bxxxx1110 |
PadD0 | 2b3=0 | $FF9203 | bxxxx1110 |
Pause0 | 1b0=0 | $FF9203 | bxxxx1110 |
FireA0 | 1b1=0 | $FF9203 | bxxxx1110 |
FireB0 | 1b1=0 | $FF9203 | bxxxx1101 |
FireC0 | 1b1=0 | $FF9203 | bxxxx1011 |
Option0 | 1b1=0 | $FF9203 | bxxxx0111 |
N1P0 | 2b3=0 | $FF9203 | bxxxx1101 |
N2P0 | 2b3=0 | $FF9203 | bxxxx1011 |
N3P0 | 2b3=0 | $FF9203 | bxxxx0111 |
N4P0 | 2b2=0 | $FF9203 | bxxxx1101 |
N5P0 | 2b2=0 | $FF9203 | bxxxx1011 |
N6P0 | 2b2=0 | $FF9203 | bxxxx0111 |
N7P0 | 2b1=0 | $FF9203 | bxxxx1101 |
N8P0 | 2b1=0 | $FF9203 | bxxxx1011 |
N9P0 | 2b1=0 | $FF9203 | bxxxx0111 |
N*P0 | 2b0=0 | $FF9203 | bxxxx1101 |
N0P0 | 2b0=0 | $FF9203 | bxxxx1011 |
N#P0 | 2b0=0 | $FF9203 | bxxxx0111 |
Pareil pour l'autre port sur les quatre derniers bits de l'octet.
Effet de surprise
Sachant que l'adresse $FF9203 inhibait les joypads, mon frère et
moi-même pensions pouvoir tester Dynabusters, qui fonctionnait
auparavant avec les commandes des joysticks STe, en incluant dans le
code un détournement infime pour que le joypad puisse être lu. C'était
sans compter sur le machiavélisme des programmeurs du Joypad qui
avaient cablé les directions différemment. Résultat : Basculer vers le
haut nous faisait aller à Gauche et les autres directions répondaient
de manière tout aussi loufoque. Il fallut donc détourner du code au
niveau de la lecture des Ports pour simuler un joystick STe.
Un JOYPAD, oui, mais pour jouer à quels jeux ?
Il est vrai que pour les Joueurs, la partie précédente n'avait que peu
d'intérêt. J'aurai un peu de mal à répondre à cette question car je ne
peux connaître toute la logithèque qui exploite le Joypad. Néanmoins, je
suis sûr des données que je vais vous citer :
- LLAMAZAP (FALCON) : Utilise seulement le Joypad donc investissement
obligatoire si vous voulez jouer à ce grand jeu de Jeff Minter.
- STEEL TALONS (FALCON) : Utilise le Joypad obligatoirement. Le jeu n'a pas
l'air fabuleux de prime abord (NDRC : c'est même une grosse daube).
- DYNABUSTERS JOYPAD (STe-FALCON) : Version patchée de Dynabusters pour
participer jusqu'à 5 joueurs (1clavier+2sticks+2pads). C'est un
BomberMan tout à fait délirant !!! Et Shareware en plus ! donc n'hésitez
pas, pour le prix, à vous faire enregistrer.
- SUPERBOMBERMAN (FALCON) : Un BomberMan tout à fait splendide avec des
bonhommes très coloré et très bien animés avec des gadgets tout à fait
délirants qui font de lui un jeu dont on ne se décole pas. 6 joueurs au
maximum avec une gestion de deux joueurs au clavier. Shareware Français.
Il est intéressant d'avoir un Joypad car utilise les boutons pour
réaliser des coups tactiques.
- FIRESNARE JOYPAD (STe) : Une version du jeu gérant les Joypads est
disponible. Le but est de dévorer ses adversaires chenilles. Délirant
à trois joueurs où on se tord le poignet à essayer de croquer les
participants (3 joueurs).
- ROAD RIOT (FALCON) : Course de Voitures plutôt peu réaliste mais
nécessitant le joypad pour tourner.
- FRANTICK (STe-FALCON) : Jeu Shareware très bien réalisé, avec des effets
à la Jeff Minter utilisant les Joypads si on en possède. Une sorte de
Tempest en deux dimensions. Une version bridée est disponible dans le
domaine Public.
- PUSH IT (FALCON) : Un jeu de réflexion à la "Stone Age" si mes souvenirs
sont bons qui autorise les Joypads (Shareware testé non achevé donc "no comment").
Mais maintenant c'est à vous de créer des jeux pour compléter cette
liste. Cela ne devrait pas être dur avec les informations que je vous
ai fourni.
Voilà, l'article est fini. Je préciserai en plus en guise de clin
d'oeil pour notre machine qu'il devrait être possible en théorie de
jouer à un jeu pour 10 joueurs en simultanée sur un seul Atari (STe
ou Falcon). Il comprendrait :
2 joueurs évoluant sur le clavier.
2 sur joysticks standards dans les ports usuels.
4 joueurs sur les ports STe avec des rallonges duplicatrices.
2 joueurs sur le port imprimante, il existe en effet un adaptateur pour y
connecter deux joysticks classiques (marche pour GAUNTLET II et DYNABLASTER).
Pas mal, non ?
The Teller
ruiz@massilia.univ-mrs.fr