Superboard II, suite

Publié le par Francois Lionet

Mon premier jeu en basic était sympa, mais peu impressionnant. Deux voitures (deux caractères) qui bougent à l'écran en sens inverse, c'est assez peu. Il fallait pour moi passer au niveau supérieur pour animer plus de choses à l'écran : il fallait passer en langage machine.

Le langage machine est un peu le but ultime de tout programmeur. Ce langage est directement compréhensible par l'ordinateur: il est écrit dans le code que comprend le processeur. Le langage machine en lui même n'est qu'une suite de chiffres hexadécimaux (de 0 à 255), qui pilotent le microprocesseur de l'ordinateur.
Le Superboard II était piloté par un 6502 de chez Motorola. L'un des micro processeurs les plus puissants et simples à programmer à cette époque. J'ai donc acheté un livre sur la programmation du 6502 (un livre édité par Sybex, un des principaux éditeurs de livres informatiques à cette époque).
Le livre détaillait toutes les instructions du 6502. Telle instruction correspond à tel code en mémoire. Un programme n'est après tout qu'une suite de codes, de numéros dans la mémoire. Le jeu d'instructions du 6502 était simple et réellement intelligent. Vous disposiez de 3 registres (des cases mémoires dans lesquelles vous pouviez stocker des chiffres de 0 à 255). Ces registres étaient nommés A (l'accumulateur), X et Y. Vous pouviez charger ces registres en lisant la mémoire, ou stocker le contenu de ces registres dans la mémoire. Il était également possible de faire les opérations de base (addition et soustraction) sur ces registres.

Tout cela était finalement très limité, mais suffisant pour se débrouiller, et réaliser des programmes complexes. Le 6502 me fait beaucoup penser aux processeurs RISC, Reduced Instruction Set Computer qui ont peuplés les Mac des années 1998-2003. Des instructions simples et un processeur rapide pour traiter ces instructions.

Il me fallait donc programmer en langage machine. Livre en main, j'ai essayé d'entrer les chiffres correspondant aux instructions du processeur directement en BASIC. Un travail extrèmement fastidieux, qui cependant a abouti au premier jeu de "C'est plus c'est moins" en langage machine. Encourageant.
J'ignorais à l'époque qu'il existait des logiciels dédiés à la programmation en langage machine, qui s'appelaient "assembleurs". Le Superboard II étant très rare en France, je n'avais aucun accès aux logiciels commerciaux pour cette machine.
Je me lançais donc dans la programmation de mon propre assembleur en BASIC. Un programme finalement simple : il demandait le nom d'une instruction langage machine (les instructions avaient des noms, comme LDA, LDX, STX, STY etc.), puis faisait la conversion entre le nom de l'instruction et son équivalent binaire. Une instruction / un code machine. Certaines instructions avaient des paramètres, comme une adresse mémoire : l'assembleur les demandait et les insérait dans le programme.
J'ai bien passé 15 jours sur cet assembleur. A la fin de ce travail, j'avais un outil me permettant d'entrer les programmes facilement, et me permettant de les corriger. Je ne pouvais cependant pas les "debugger", c'est a dire chasser les problèmes simplement. Je lancais le programme, il marchait ou il ne marchait pas.

Avec ce nouvel outil, tout un monde de création s'ouvrait à moi. Les animations à l'écran n'avaient plus de limite, je pouvais bouger tout l'écran en langage machine si je le désirais.
Je me lançais donc dans la réalisation d'un jeu de shoot-em-up. A cette époque, une bonne partie des jeux disponibles dans les salles d'arcade était des shoot-em-up. Space Invaders, Galaxian etc.
Mon shoot-em-up avait le titre peu imaginatif de "Galaxians" (copie du jeu de salle d'arcade). Il était consitué de plusieurs niveaux différents. Le premier niveau était une pâle copie du Galaxian originel, avec les graphismes limités du Superboard. Un série d'aliens se trouve en haut de l'écran, vous lance des obus, et vous attaque en descendant. Le deuxième niveau etait plus original, une pluie d'aliens à éviter. Le troisième niveau, un "boss" était un gros alien à détruire en tirant sur ses cibles.
Un jeu sommes toutes sympa, mais peu imaginatif.
Il va sans dire que j'étais super fier de ce jeu, qui utilisait la machine à son maximum. Un grand nombre d'objets bougeaient à l'écran en même temps. Les machines à cette époque étaient construites à l'économie: la mémoire vidéo était partagée avec la mémoire normale. La mémoire vidéo du Superboard consistait en 1024 octets (32x32). Lorsque le programme accédait à cette mémoire pendant l'affichage de l'image sur l'écran, un parasite noir apparaissait. Comme mon jeu accédait beacoup à l'écran, et rapidement, l'image de mon jeu était constellée de parasites qui perturbaient le jeu.

J'ai beaucoup joué à ce premier jeu, même si son scénario était inexistant, et ses graphismes limités.

Mon premier vrai jeu!

Commenter cet article

LAUDRIN Jean-Marc 08/03/2009 12:08

Souvenir, Souvenirs François...
Je me rappelle bien les après-midi passées à jouer au lieu de bosser !

si tu a ce message fais moi un signe !

j-m

David Scrève 03/01/2009 22:29

Supers articles !! Dommage que tu n'aies pas poursuivi.

Tarzin 09/12/2008 09:16

Bonjour,

Je programme encore avec Amos Pro et viens d'en commencer la traduction en français. De nombreuses personnes sont encore intéressées par ce langage qui offre à la fois performance et simplicité.
http://amos.pspuae.com/

Je pensais également faire une rubrique sur mon site Web.

Cette semaine, j'ai encore vu une personne acquérir Amos Pro via les petites annonces!

Vous pouvez me contacter pour toute question ou information sur le sujet.

Encore merci pour ce fabuleux programme!

Gemineo 13/09/2008 10:01

Quel dommage que ce blog n'est plus en activité depuis si longtemps ! J'aurais adoré lire la suite.
J'ai été un utilisateur d'AMOS et j'ai, à l'époque, pris énormément de plaisir à programmer avec.