Au delà du tesseract sur Apple II

Le tesseract est un cube à 4 dimension, mais cet article ne traite pas de géométrie. Car Beyond the tesseract est le titre d’un jeu d’aventure mathématique de David Lo, publié la première fois en 1983 sous la forme d’un programme BASIC pour TRS-80. Le jeu a par la suite été porté en langage C, sur différents systèmes tel que MS-DOS, Atari ST, ou UNIX.

Dans cet article, vous trouverez une adaptation pour Apple II, avec cc65 comme compilateur. Normalement, une simple recompilation aurait été suffisante, mais la mémoire d’un Apple II étant limitée, des modifications importantes du code source ont été nécessaires.

L’écran d’accueil de TESS sous Apple II, en 80 colonnes

Le programme TESS est disponible en version 2.2. Je suis parti de la version 2.0p téléchargeable sur IFDB (archive tess.tar.gz). mais il existe également une version 2.1p que je n’ai pas trouvée.

La version 2.2 fonctionne dans les environnements suivants : Linux avec le compilateur gcc, Windows avec gcc, et Apple II avec cc65. Il fonctionne très probablement sous d’autres systèmes et d’autres compilateurs C, le code étant très standard. Voici le code source, l’archive étant format tar :

Sous Linux

Linux avec le compilateur gcc. Pour compiler sous Linux et lancer le programme , utilisez tout simplement les commandes :

Sous Windows

il faut utiliser le fichier make_win :

Pour Apple //e et //c

Il est nécessaire d’installer et d’utiliser le compilateur cc65 sur votre ordinateur. Il existe un tutoriel ici, qui vous expliquera comment. Pour compiler :

Puis, copier l’exécutable sur le fichier de disquette TESS.do :

La “disquette” peut ensuite être lue par un émulateur comme AppleWin. Le jeu s’affiche en 80 colonnes ce qui nécessite de l’exécuter sur un Apple //c ou Apple //e “enhanced”.

Une fois l’Apple II démarré, tapez la commande :

L’écran d’intro du jeu s’affiche au bout d’un moment.

La grande difficulté a été de réduire l’empreinte mémoire du programme afin qu’il puisse s’exécuter sur un Apple II. Voici les modifications apportées :

  • Reprise en profondeur du parser (parser.c) afin de ne plus utiliser librairie string.h, ceci permettant de réduire l’empreinte mémoire du programme.
  • Remplacement de la fonction rand() par une fonction pseudo_rand() de façon à ne plus utiliser la librairie stdlib.h, l’objectif étant toujours de limiter la taille du programme.
  • Dans la variante Apple II, il n’est plus possible de sauvegarde (SAVE) ni de restaurer la partie (LOAD). Ceci fonctionne sous Linux ou Windows.
  • Remplacement de l’utilisation du type int par des des types de variables moins gourmandes en mémoire. Le type t_usi (pour les entiers non signés) est en réalité un unsigned char qui utilise un seul octet en mémoire. Les variables de ce type peuvent donc prendre des valeurs entre 0 et 255, mais cette limitation reste compatible avec le programme TESS. Les types de données utilisées comportent une sémantique, comme par exemple t_object_id pour les identificateurs d’objets.
  • Reprise de l’organisation des fichiers constituant le programme : création du fichiers d’include tess_data.h qui contient la description des objets et des lieux.
  • Pour la variante Apple II, utilisation de la librairie <conio.h> afin d’afficher en 80 colonnes et d’améliorer l’affichage du texte. La fonction permettant de passer en 80 colonnes est videomode(VIDEOMODE_80COL);

De nombreuses ressources relatives à Beyond the Tesseract sont disponibles sur internet :

Il me reste à vous souhaiter une très bon moment avec ce jeu d’aventure mathématique abstrait et très original.

Laisser un commentaire

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