Le Diamant de l'île maudite...
Par Dominique Pessan.
Comme promis la dernière fois, nous allons essayer de transférer le Diamant de l'île Maudite sur disquette. Ce jeu est composé de quatre parties principales, qui sont : La présentation, la première partie du jeu , la deuxième partie du jeu et la fin du jeu. Chaque partie, est à son tour composée d'un nombre variable de modules.
|
Démo |
Première partie |
Deuxième partie |
Fin du jeu |
|
1 - #281 à #2CB |
1 - #281 à #2CB |
1 - #501 à #4EE5 |
1 - #501 à #7D0 |
|
2 - #B800 à #BFE0 |
2 - #B800 à #BFE0 |
2 - #400 à #4FF |
2 - #9DEE à #B888 |
|
3 - #501 à #8AD |
3 - #501 à #56F |
3 - #554B à #9FF4 |
|
|
4 - #8E5 à #2C04 |
4 - #6A2 à #B0B |
|
|
|
5 - #501 à #297D |
5 - #501 à #78BF |
|
|
|
6 - #2AF8 à #6B80 |
6 - #400 à #4FF |
|
|
|
7 - #400 à #4FF |
7- #7FBB à #9FF4 |
|
|
|
La page quatre devant rester disponible pour le DOS ( Sauvegarde d'une partie en cours ) , nous allons implanter les modules l'utilisant ( 7, 6 et 2 ) ailleurs en mémoire. Il faudra alors, dérouter tout appel à une adresse de cette page vers son nouvel emplacement et ce, dans le BASIC comme dans les modules en L.M. A la vue des adresses des modules de chacune des parties, on se rend compte que pour la Démo, on peut choisir facilement une page libre ( entre $6C00 et $ B700). Par contre, pour les première et deuxième parties du jeu, Il faudra chercher...Car si les adresses entre $7900 et $7EFF et celles entre $4F00 et $5400 semlent libres, se sont de fausses amies, utilisées par le programme, pour les variables. La fin du jeu n'utilise pas la page quatre et semble facile à transférer... Eh bien, j'ai du réfléchir un |
bon moment avant de comprendre, car après le chargement du deuxième module ($9DEE-$B888 ), il était impossible de sauvegarder .J'obtenais systématiquement le message: "OUT OF MEMORY ERROR. En fait, c'est un module en L.M sauvegardé comme un programme BASIC, mais les pointeurs BASIC n'étant pas mis à jour... |
|
Voici le nouveau listing de STOP: 10 FORI=#221TO#22F Et celui de la Moulinette à changer les adresses 5 N=#74 |
90 IFF=1ANDA=#ACTHENPOKEI,N:F=0 :'LDY$100 IFF=1ANDA=#8CTHENPOKEI,N:F=0 :'STY$ 110 IFF=1ANDA=#CCTHENPOKEI,N:F=0 :'CPY$ 120 IFF=1ANDA=#EETHENPOKEI,N:F=0 :'INC$ 130 IFF=1ANDA=#4CTHENPOKEI,N:F=0 :'JMP$ 140 IFF=1ANDA=#ECTHENPOKEI,N:F=0 :'CPX$ 150 IFF=1ANDA=#EDTHENPOKEI,N:F=0 :'SBC$ 160 IFF=1ANDA=#CETHENPOKEI,N:F=0 :'DEC$ 170 IFF=1ANDA=#B9THENPOKEI,N:F=0 :'LDA$,Y 180 IFF=1ANDA=#20THENPOKEI,N:F=0 :'JSR$ 190 F=0 200 NEXT Pour accélérer l'exécution ( qui est très très lente ), ne tapez pas les REM. Toutes les instructions de l'assembleur 6502 n'y sont pas, mais seulement celles nécessaires et suffisantes pour le cas qui nous intéresse. A vous de la compléter pour d'autres applications ,si vous le souhaitez : - ).Enregistrez ces deux listings en AUTO sur la disquette. |
|
Traitement de la Démo. 1 - Introduisez votre cassette du jeu dans le magnéto 17- Allez boire un café, ça va durer un certain temps... 18-SAVE"DDEMO4",A#8E5,E#2C04 19-CLOAD" 10 DDEMO1 38-SAVE"DEMODIAM",AUTO C'est terminé pour la Démo, vous pouvez tester en rebootant l'Oric et en tapant DEMODIAM. Ca marche? Super, alors on continu. SYNTAX ERROR IN XYZ ? ( les chargements cassettes sont toujours ce qu'ils étaient...) |
39-Appuyez sur RESET ( ATMOS, pas drive ) Traitement de la première partie du jeu. 1 -LOAD"STOP 30- Un autre petit café ? 31-SAVE"DIAM12",A #7FBB,E#9FF4 C'est terminé, vous pouvez essayer en tapant DIAMP1. ( RESET, si erreur de syntaxe) La place disponible en mémoire était vraiment très limitée, car en déplaçant le HIMEM de quelques octets seulement vers le bas, on obtient un OUT OF MEMORY ERROR en cours de jeu. ( pas assez de place pour les variables). C'est pourquoi la page quatre n'a pas été conservée dans son intégralité. Je n'ai pas constaté de dysfonctionnement majeur dû à cette amputation ( de $4BB à $4FF ). Bon, il y a bien la ligne 7535 qui scrute la mémoire entre $4F2 et $ 4FF, soit 14 octets, et qui en fonction du résultat du test, vous fait marcher sur un scorpion ou non...( je crois). Tel que le jeu est là, plus de scorpion! Les puristes pourront toujours essayer de caser ces 14 octets ailleurs, et devront modifier cette ligne en conséquence. |
|
Traitement de la deuxième partie du jeu 1 - LOAD"STOP Lignes Adresses P 4 Adresses P $64 6 - EDIT 5310 ( 5310 REM.........) |
21- EDIT 20000 ( 20000 A=DEEK(156) -21 ) 800,821,830,1160,8520,8830,8835 23-SAVE"DIAMP2",AUTO Création de Start2 Il s'agit d'un fichier de sauvegarde "spécial" qui vous permettra de démarrer directement au début de la deuxième partie du jeu si vous le souhaitez. Voici le listing qui vous permettra de le générer. 10 A=#9FFD:F=#A0A1:L=100:REPEAT:FOR A=A TO A+15:READ C$ Sauvegardez ce listing, puis lancez le, il va générer automatiquement le fichier START2.COM. |
|
Traitement de la fin du jeu 1 - LOAD"STOP Relions les différents morceaux. Maintenant, créons un menu général, d'où nous pourrons lancer, à volonté, l'une des quatres parties du jeu. Ce menu est composé d'un très court listing en BASIC et d'une image écran que vous générerez, pourquoi pas, à l'aide d' ECRAN, en vous inspirant, si vous le souhaitez, de la copie d'écran présentée ci contre. Listing de MENU.COM 0 POKE#26A,PEEK(#26A)AND254 Sauvez ce listing par: SAVE"MENU",AUTO |
Il vous reste à sauvegarder votre écran sous le nom DIAM.SCR. Lancez la deuxième partie, faites la chasse au SYNTAX ERROR puis sauvegardez après modifications. ( SAVEO"DIAMP2",AUTO )
Faites le ménage 1 - DEL"PROV.COM Eh bien jouez maintenant ! -"Que faisiez vous au temps des cassettes ?" A Bientôt... |