Adventure Castle fait peau neuve

De temps à autre, j’aime bien chercher sur internet des vieux jeux d’aventure dont le code source est disponible, pour voir ensuite voir si ce code est toujours compilable et exécutable sur un ordinateur moderne.

C’est ainsi que je suis tombé sur Adventure Castle développé en langage C par Dave Dunfield. L’archive Castle.zip est téléchargeable sur ifarchive.org. Le jeu est également répertorié sur IFDB mais la page dédiée ne donne presque aucun information, à l’exception de l’auteur et de la date de création du jeu (1983). En ouvrant le fichier Castle.zip, l’on obtient quelques informations supplémentaires :

Dave Dunfield's "Adventure Castle", a clone of "Colossal Cave"

Written in Micro-C, runs on DOS 2.0 and up (PCs).
Binary built by Dosius.

Micro-C semble être un ancien compilateur pour MS-DOS. L’archive Castle.zip contient les fichiers suivantes :

castle.c            Code source en C
castle.com Exécutable pour MS-DOS
castle.dat Fichier binaire de description des lieux
castle.hlp Fichier texte affichant une aide

Vous pouvez directement jouer à Adventure Castle avec DOSBox. Sous Linux (Debian ou Ubuntu), l’installation de DOSBox se fait de la façon suivante :

Ensuite, pour lancer le jeu, après avoir extrait les fichiers de l’archive Castle.zip :

Le jeux se lance dans une nouvelle fenêtre :

Il est bien sûr possible d’utiliser DOSBox avec d’autres distributions Linux ou avec Windows.

Adaptation du code source pour GCC

Le premier essai de compilation du code source avec gcc a été un échec. En effet, certaines fonctions utilisées pour manipuler les fichiers ne sont pas compatibles avec la librairie C standard actuelle, parmi lesquelles fopen (ouverture d’un fichier), ftell (récupération de la position courante dans le fichier en cours de lecture) et fseek (positionne la tête de lecture à la position donnée en paramètre). Ces dernières sont utilisées pour lire le fichier binaire castle.dat qui contient la description des 180 lieux (ou salles) du jeu. La structure est particulière, le caractère nul (0) est le délimiteur d’une nouvelle salle, il est suivi de la description dans un format chiffré.

J’ai effectué de nombreuses autres adaptations sur le code, certaines pour pouvoir rendre le programme compilable avec gcc et fonctionnel, d’autres d’ordre esthétique.

Liste des adaptations pour compilation avec gcc:
- Correction de l'utilisation des fonctions de manipulation de fichiers : fopen, ftell, fseek
- Déclaration des fonctions dans un style moderne
- Ajout des types t_bool, t_usi (entier court non signé) et t_si (entier court signé)
- Correctif dans la fonction parse(), les commandes de l'utilisateur n'étaient plus reconnues
- Correction du calcul du score dans la fonction end_game()
- Pour la fonction rand(), initialisation de la graine avec une lecture de l'heure (utilisation de time.h)
- Suppression de tous les warnings générés par gcc avec l'option -Wall.

Voici l’archive avec le code source mis à jour :

J’ai ajouté un Makefile qui permet de produire l’exécutable castle. Pour compiler :

Pour lancer le jeu :

Le jeu s’exécute dans la console :

Enfin, j’ai créé un petit utilitaire extrdat qui extrait les données du fichier binaire castle.dat et les affiche sur la sortie standard dans un format texte lisible. Vous pouvez ainsi voir en clair la description des 180 salles. Le source est castle_extract_dat.c. Pour le compiler : make extract

Il ne vous reste plus qu’à résoudre l’aventure… Je n’ai pas fait beaucoup de tests, il se peut donc qu’il reste quelques bugs… N’hésitez pas à me les signaler le cas échéant.

Haunted house in C available for vintage 6502 computers

J’avais publié il y a quelques temps deux articles concernant le jeu d’aventure Haunted House. Celui-ci avait été publié en 1983 sous la forme d’un livre « Write your own adventure programs for your microcomputer« . Le jeu d’origine était codé en BASIC pour les principaux micro-ordinateurs de l’époque.

Le premier article, Write your own adventure programs for your microcomputer, concerne le jeu original en anglais. Le deuxième, Aventure dans le château hanté, traite de la version française, le livre ayant été traduit et édité à l’époque par Hachette.

J’avais également mentionné l’existence d’un port en langage C du jeu d’origine. Ce port a été effectué par John Elliot en ANSI C89 ; vous pouvez télécharger le code source directement sur son site, depuis cette page.

Dans ce nouvel article, nous allons voir comment compiler ce code C sur de vieux ordinateurs disposant d’un processeur 6502 ou apparentés. Nous allons bien sûr utiliser le cross-compilateur cc65, pour que vous puissiez jouer sur un des ordinateurs suivants : Ordinateur actuel (Linux ou Windows), Commodore 64, Atari 800 XL, Apple II et Apple //e Enhanced.

La page d’intro pour Apple II en 40 colonnes
Continuer la lecture de « Haunted house in C available for vintage 6502 computers »

The Potion, a mini game for your 6502 computers

The Potion est un jeu d’aventure textuel de type 2 word parser similaire à de nombreux jeux publiés dans les années 80s, les capacités des ordinateurs domestiques étant très limités à l’époque. Cela étant, The Potion présente les caractéristiques intéressantes suivantes :

  • Il a été développé en langage C ;
  • Il ne date pas des années 80s mais de 2003, et a été développé par Peter Karlsson dans le cadre d’un concours (The 4k minigame 2003 competition) ;
  • Il est déjà multi-plateforme, pouvant fonctionner sous Linux ou Commodore 64 (grâce au cross-compilateur cc65), et l’effort pour le rendre disponible sur d’autres ordinateurs est donc limité.

Cet article propose une adaptation permettant de jouer à The Potion sur Apple II et Atari 800XL, le programme fonctionnant toujours sous Commodore 64 et avec un PC moderne, sous Windows ou Linux.

L’intro de « The Potion » pour Atari 800XL
Continuer la lecture de « The Potion, a mini game for your 6502 computers »

Un jeu d’aventure en C multiplateforme

Le langage C a été conçu pour rendre les programmes portables. Grâce aux compilateurs, le même code source peut fonctionner aussi bien sur un PC moderne que sur un vieil ordinateur des années 80s.

Dans cet article, j’ai adapté le jeu d’aventure Sorcellerie (voir l’article dédié sur le portage de Sorcellerie en langage C) afin qu’il fonctionne non seulement sur un PC moderne sous Linux (grâce au compilateur gcc), mais également sur les Apple II, Atari 8bits et Commodore 64 (grâce au compilateur cc65).

L’adaptation a été très légère, le plus gros du travail étant la reprise du makefile.

Continuer la lecture de « Un jeu d’aventure en C multiplateforme »

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
Continuer la lecture de « Au delà du tesseract sur Apple II »

Debug de Sorcellerie en C

Le jeu d’aventure Sorcellerie codé en langage C et publié en janvier dernier fonctionne sous Linux, mais pas sous Apple II. Ceci était dû à un bug dans l’appel d’une fonction, bug qui était invisible sous Linux mais pas du tout sous Apple II puisque les commandes saisies par le joueur n’étaient pas correctement interprétées.

Je publie donc une nouvelle version fonctionnelle sur Apple II. Celle-ci est téléchargeable depuis l’article Sorcellerie en C.

Bonne aventure !

Chiffrez vos fichiers avec XOR

Mis à jour le 28/02/2025 : nouvelle version de cipher pour le faire fonctionner correctement sous Windows.

Cet article est atypique car il ne traite pas de rétroprogrammation, mais présente un utilitaire qui fonctionne sous Linux. Cet utilitaire, dénommé cipher, a été développé en langage C et est donc facilement adaptable à d’autres environnements.

Comme son nom le laisse entendre, cipher permet de chiffrer un fichier. Il utilise un algorithme très simple, basé sur l’utilisation de XOR (ou exclusif).

Continuer la lecture de « Chiffrez vos fichiers avec XOR »

Sorcellerie en C

/* Mise à jour le 08/05/2025 : correction d’un bug qui rend le jeu fonctionnel sous Apple II */

Il y a quelques années, j’avais publié un article sur un jeu d’aventure en BASIC intitulé SORCELLERIE. Il s’agit d’un jeu d’aventure textuel créé par Rafi Deryeghiyan et publié dans le magazine « L’ordinateur Individuel » (hors série n°77). Le jeu est plutôt sympa, et après l’avoir porté sur Apple II, je me souviens avoir passé une bonne paire d’heures avec mon fils pour trouver la solution.

J’ai récemment repris ce programme pour le convertir en langage C, afin d’avoir un programme fonctionnant dans plusieurs environnements ; Linux, Windows, Mac et ordinateurs vintages.

Le code source peut être compilé pour une plateforme Linux (avec gcc) ou pour des ordinateurs anciens comme l’Apple II (avec cc65). Le code C étant des plus standard, il peut également fonctionner sur d’autres plates-formes, mais ceci reste à tester.

Page d’accueil de sorcellerie en C sous émulateur AppleWin
Continuer la lecture de « Sorcellerie en C »

Une librairie graphique basse résolution en C pour Apple II

Dans cet article, je mets à disposition le résultat de mon dernier projet ; une bibliothèque graphique basse résolution pour Apple II. Cette librairie intitulée LRG (pour low resolution graphics) a été développée grâce à cc65 et est destinée à la programmation en C. Elle offre un ensemble de fonctions graphiques permettant de dessiner en mode graphique basse résolution soit 40 x 48 points en 16 couleurs.

La bibliothèque tgi offre des fonctionnalités similaires mais j’ai réalisé ce projet à des fins d’apprentissage ; programmation en C bas niveau et développement d’une bibliothèque pour Apple II.

Continuer la lecture de « Une librairie graphique basse résolution en C pour Apple II »

De belles rosaces en C sur Apple II

Une nouvelle page dédiée à la programmation en C sur Apple II est disponible. Elle fait suite au tutoriel consacré à la programmation graphique en C avec la bibliothèque tgi de cc65 (voir ici) et reprend le programme en BASIC Applesoft de dessin de belles rosaces (voir ).

Un aspect intéressant de la programmation est abordé ; le calcul sur des nombres à virgules fixes, pas simple mais très utile lorsque les nombres à virgule flottante ne sont pas supportés.

Voici le lien vers la page.