J’ai trouvé dans mon bazar rétro-informatique une page de listing provenant du magasine Hebdogiciel n°42, contenant deux jeux pour Atari 800, Maxipède et Space Invaders. Je me suis empressé de les saisir « à la main » sur mon émulateur favori Altirra, avec pour objectif de les transférer sur mon Atari 800XL.

Dans cet article, vous trouverez les programmes sources en BASIC directement transférables sur Altirra ou sur un véritable ordinateur Atari. J’explique également quelques commandes PEEK
et POKE
permettant de comprendre le fonctionnement de ces programmes. Pour un information complète concernant la mémoire des Atari 8bits, voir la page MEMORY MAP sur Atariarchives.org.
Maxipède

Il s’agit d’une version de Snake qui est un grand classique des jeux d’arcade. Ici, le serpent est remplacé par un Maxipède glouton qui doit manger des pilules et qui grossit à chaque bouchée. Le programme est le plus simple des deux. Voici quelques explications sur les commandes les plus intéressantes :
Ligne | Instruction | Signification |
---|---|---|
22 | POKE 752,1 | Inhibe l’affichage du curseur |
32, 33 | PEEK(53279) | Permet de savoir si les boutons de console OPTION, SELECT ou START ont été pressés |
35 | PEEK(632) | Renvoie la position du joystick connecté au port 0. La fonction STICK(0) renvoie la même chose. |
78 | PEEK(19) | Les adresses 18, 19 et 20 correspondent au timer interne de l’Atari. L’adresse 20 est incrémentée à chaque seconde. Comparer la valeur à 60 permet de détecter qu’une minute est passée. |
100 | POKE 19,0 | Permet de réinitialiser à 0 le compteur des secondes. |
1040 | STRIG(0) | Permet de savoir si le bouton du joystick 0 est enfoncé (vaut 0 dans ce cas, 1 sinon) |
Et voici le programme source à télécharger :
Space Invaders
Ce programme est une version simplifiée du célèbre jeu d’arcade bien connu. Vous devrez tirer sur les méchants extraterrestres qui se rapprochent inexorablement de la terre.
Le programme est nettement plus compliqué que le précédent. Il utilise différentes techniques :
- Les « sprites » qui sont dénommés « player » et « missile » qui permet d’afficher et de déplacer rapidement sur l’écran de petits objets graphiques.
- Re-définition du jeu de caractères pour représenter les extra-terrestres.
L’utilisation de ces deux techniques avancées n’est pas abordée dans ce article. Mais voici quelques PEEK
et POKE
du programme qui sont intéressants, la liste étant non exhaustive :
Ligne | Instruction | Signification |
---|---|---|
30, 50 | PEEK(53248) | Renvoie la position horizontale du player 0 |
80 | POKE 53255,PH+3 | Position horizontale du missile 1 |
93 | POKE 53248,PH | Définit la position horizontale du player 0 |
100 | POKE 77,0 | Désactive l’économiseur d’écran de l’Atari. Celui-ci s’active normalement au bout d’un certain temps et applique une rotation des couleurs avec une faible luminosité. Le fait de presser une touche du clavier enlève l’économiseur, mais pas l’utilisation du joystick. |
122 | POKE 656,1 | Définit la ligne du curseur dans la fenêtre de texte en mode « split screen » |
122 | POKE 657,1 | Définit la colonne du curseur dans la fenêtre de texte en mode « split screen » |
PEEK / POKE 704 à 711 | Couleurs des players et missiles | |
280 | PEEK(106) | Renvoie le nombre de pages mémoire disponible (une page est constituée de 256 octets). Peut être redéfini par une commande POKE. |
356 | POKE 559,0 | Désactive l’affichage (écran noir). Permet de gagner en temps de traitement, la puce ANTIC étant désactivée. |
360 | POKE 89,RT+2 POKE 88,128 | Les adresses 88 et 89 contiennent la plus petite adresse de la mémoire vidéo correspondant au coin supérieur gauche de l’écran. |
400 | POKE 53249,170 | Position horizontale du player 1. |
400 | POKE 53250,156 | Position horizontale du player 2. |
410 | POKE 53254,100 | Position horizontale du missile 2. |
410 | POKE 53277,3 | Active l’ensemble des playermissiles. |
Et voici le programme corrigé (lignes 90 et 91) car il comportait un bug sur la position du missile n°3 qui pouvait sortir de la plage autorisée (0 à 255). Il y avait également un bug en ligne 410 (nom de variable HP
au lieu de PH
qui n’était donc pas initialisée).
Je vous laisse maintenant essayer ces programmes, qui semblent un peu « datés » aujourd’hui, mais qui à l’époque nous occupaient beaucoup et qui utilisent des techniques assez avancées.
Bon jeu !
Très intéressantes, ces techniques de programmation avancées qui permettent de faire des choses intéressantes alors que le BASIC des Atari était réputé lent…