Applesoft versus ZBASIC, ruée vers l’or

Dans cet article, nous allons voir comment un jeu d’aventure peut être adapté à l’Apple II, en explorant deux possibilités ; la programmation en BASIC Applesoft et en ZBASIC. Dans cette optique, nous utiliseront le programme « L’ivresse de l’or », jeu d’aventure développé à l’origine pour l’Amstrad CPC464.

Il s’agit donc en partie d’utiliser la méthodologie utilisée pour le portage du « Le château enchanté« , mais j’ai également voulu expérimenter la solution ZBASIC, ce langage supportant les instructions graphiques nécessaires à l’affichage de la page d’introduction du jeu.

Voici donc le résultat de cette expérimentation.

La ruée vers l’or version Applesoft

Le portage est très similaire à celui du « château enchanté », la solution comportant deux programmes Applesoft BASIC :

Les deux programmes sont à installer sur la même disquette dont voici une image au format DOS.3.3 :

Pour lancer le jeu il suffit, après avoir booté sur la disquette de lancer la commande :

RUN INTRO

Le jeu démarre et la page d’intro graphique s’affiche.

Une splendide introduction graphique des années 80
Avant de passer aux choses sérieuses, quelques d’explications

Nota :

J’ai essayé de coder ce jeu dans un seul fichier de programme, mais ceci n’est pas simple sous BASIC Applesoft car le passage en mode HGR écrase une partie du programme en mémoire. Il est alors impossible de l’exécuter. Il existe cependant une astuce qui consiste à décaler le programme BASIC après la zone mémoire utilisée pour le graphisme haute résolution, mais elle ne marche pas pour « la ruée vers l’or » qui est vraiment trop gros.

La ruée vers l’or version ZBASIC

La conversion en langage ZBASIC est plus simple qu’en Applesoft car ZBASIC est plus proche du Locomotive Basic de l’Amstrad. Cependant, à cause des limitation du compilateur ZBASIC qui limite la longueur des programmes, j’ai du séparer l’application en 3 fichiers :

  • lance.bas, permet de lancer l’application.
  • ivresse-intro-zbasic.bas, affiche l’intro graphique et les explications.
  • ivresse-main-zbasic.bas, le programme principal.

A cela s’ajoute deux utilitaires :

  • ivresse_data_write.bas permettant de générer le fichier texte qui contient les données du jeu (objets et lieux). Ces données sont lues par le programme principal (main).
  • ivresse_data_read.bas qui lit ce fichier de données pour les afficher à l’écran.

Les fichiers sources et une image de disquette au format PRODOS (ivresse_or.do) sont fournis dans une archive téléchargeable ici :

Pour lancer le jeu : insérer la disquette zboot128.dsk dans le lecteur 1, et la disquette ivresse_or.do dans le lecteur 2. Puis booter et saisir la commande :

RUN /IO/LANCE

La page d’intro s’affiche alors :

Page d’introduction version ZBASIC : remarquez l’affichage de texte à n’importe quel endroit de l’écran (infaisable ou presque en Applesoft)
Page de bienvenue, également en mode graphique
Ivresse de l’or en ZBASIC, en mode texte et 40 colonnes.

Il ne vous reste plus qu’à venir au bout de cette aventure. Bon courage !

Quelques explications sur la version ZBASIC

La disquette ivresse_or.do présente dans l’archive téléchargeable (voir lien ci-dessus) contient les fichiers suivants :

LANCE          Programme en ZBASIC de lancement du jeu
IVRINTRO.BAS   Programme d'introduction (source ZBASIC cf. listing ivresse-intro-zbasic.bas)
IVRINTRO       Exécutable du programme précédent (après compilation)
IVRMAIN.BAS    Programme principal (source ZBASIC cf. listing ivresse-main-zbasic.bas)
IVRMAIN        Exécutable du programme principal
IVR.DAT        Données du jeu (objets et lieux) - fichier texte
DATAWRITE      Programme ZBASIC permettant de produire le fichier de données (listing ivresse_data_write.bas)

Le programme LANCE (appelé par la commande RUN /IO/LANCE) appelle l’exécutable IVRINTRO qui appelle ensuite l’exécutable IVRMAIN. Ces deux exécutables sont les résultat de la compilation de programmes chainés obtenue par la commande RUN+

Les programmes chaînés en ZBASIC peuvent partager des variables. Celles-ci doivent être définies en début de programme par l’instruction DIM et la fin de variables partagées est marquée par l’instruction CLEAR END. Se référer au manuel ZBASIC pour plus d’information.

Laisser un commentaire

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