Chaos in Space

Je suis tombé par hasard sur un listing de jeu d’aventure en BASIC pour IBM PC, intitulé « Chaos in Space« . Évidemment, il y déjà beaucoup de jeux d’aventure « old school » sur ce site mais j’ai néanmoins décidé de jeter un œil à « Chaos in Space«  puis de le convertir en BASIC Applesoft. L’activité de portage vers une autre plate-forme est intellectuellement satisfaisante …

Il y a quelque chose de particulier dans CHAOS : le programme a été publié le 29 juin 2001 sous la forme d’un BASIC déjà « old school » à l’époque, le GW-BASIC. Le programme a été écrit par Richard Kelly qui n’a apparemment pas développé d’autres jeux. CHAOS figure dans IFDB, où vous pouvez télécharger le programme source et l’exécutable pour DOS.

Le thème est assez farfelu ; vous vous retrouvez dans une station spatiale qui va finir pas exploser du fait d’une anomalie de votre patrimoine génétique ! A vous de trouver la sortie.

Le seul commentaire présent sur IFDB n’est pas très élogieux. Au final le jeu semble plutôt moyen (voire moins) et l’intérêt de cet article reste le portage vers Apple II…

Ceci semble a priori assez simple, le BASIC Applesoft étant assez proche du GW-BASIC tant que l’on n’utilise pas d’instruction graphique ou de son.

Le remplacement des instructions spécifiques est trivial :

  • CLS est remplacé par HOME pour effacer l’écran
  • BEEP par PRINT CHR$(7)
  • INKEY$ par GET pour la saisie d’un caractère au clavier

L’absence de ELSE en BASIC Applesoft a été un peu plus problématique. Il faut récrire les lignes concernées de la façon suivante :

100 IF CONDITION THEN A ELSE B
110 REM --- suite du programme ----

en :

100 IF CONDITION THEN 102
101 B : GOTO 110
102 A
110 REM --- suite du programme ----

ou alors en:

100 IF NOT(CONDITION) THEN B : GOTO 110
101 A
110 REM --- suite du programme ----

Le problème est que CHAOS a une numérotation des lignes de code BASIC pénalisante : l’intervalle entre deux lignes est d’une unité, il est donc impossible d’insérer de nouvelles lignes.

J’ai donc été obligé de renuméroter le programme, ceci grâce à la commande RENUM de GW-BASIC, en spécifiant un intervalle de 10 entre les lignes.

J’ai pu ensuite supprimer les ELSE puis faire d’autres adaptations :

  • Remplacement de la sous-routine de la ligne 101 par une sous-routine issue fancy_print disponible ici et implémentée à la ligne 10000 (j’ai conservé l’alignement à gauche uniquement).
  • Suppression de l’affichage en 80 colonnes, inutile.
  • La fonction INSTR n’existe pas en BASIC Applesoft, elle est remplacée par un sous-routine localisé à la ligne 11000.
  • Adaptation des fonctions de sauvegarde et restauration du jeu (instruction OPEN de lecture/écriture dans un fichier sur disquette).
  • Adaptation de la fonction RND dont la syntaxe diffère.

Ceci donne au final le programme suivant (au format d’archive tar) :

A vous de jouer maintenant !

Laisser un commentaire

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