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