Deux jeux d’action pour Atari 8bits

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.

Une version simplifiée de Space Invaders, en 74 lignes de BASIC

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
Le maxipède c’est le trait et les pilules ce sont les points…

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 :

LigneInstructionSignification
22POKE 752,1Inhibe l’affichage du curseur
32, 33PEEK(53279)Permet de savoir si les boutons de console OPTION, SELECT ou START ont été pressés
35PEEK(632)Renvoie la position du joystick connecté au port 0.
La fonction STICK(0) renvoie la même chose.
78PEEK(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.
100POKE 19,0Permet de réinitialiser à 0 le compteur des secondes.
1040STRIG(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 :

LigneInstructionSignification
30, 50PEEK(53248) Renvoie la position horizontale du player 0
80POKE 53255,PH+3Position horizontale du missile 1
93POKE 53248,PHDéfinit la position horizontale du player 0
100POKE 77,0Dé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.
122POKE 656,1Définit la ligne du curseur dans la fenêtre de texte en mode « split screen »
122POKE 657,1Définit la colonne du curseur dans la fenêtre de texte en mode « split screen »
PEEK / POKE 704 à 711Couleurs des players et missiles
280PEEK(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.
356POKE 559,0Désactive l’affichage (écran noir). Permet de gagner en temps de traitement, la puce ANTIC étant désactivée.
360POKE 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.
400POKE 53249,170Position horizontale du player 1.
400POKE 53250,156Position horizontale du player 2.
410POKE 53254,100Position horizontale du missile 2.
410POKE 53277,3Active 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 !

Une réponse sur “Deux jeux d’action pour Atari 8bits”

  1. 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…

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *