Shoot ... Again n°14

Par Dominique Pessan


Vous aimez la plongée sous-marine ? ( au moins sur Oric) ? Alors, transférons SCUBADIVE sur disquette!


Etat des lieux.


Ce jeu est composé de trois modules.

#501 - #567 :Chargeur BASIC

#400 - # 960 :Mise en place d'octets entre #B7C6 et#BADB, mais aussi entre #59 et #10F (?)

#400 - #3400 :Le jeu lui même


La méthode utilisée.


Le premier module est un chargeur BASIC dont l'originalité est de s'auto-transporter en #8500. ( Pour ne pas être écrasé par les fichiers qu'il charge). Nous allons le remplacer par un chargeur à nous.

Le deuxième module utilise la page quatre. Mon idée de base était de sauvegarder non pas le module, mais les zones mémoires sur lesquelles il est intervenu ( après l'avoir lancé). Ca marche presque... Le jeu se lance, puis se bloque. Cela vient probablement de la zone en page zéro, mais j'ignore pourquoi et je dois bien l'avouer, je n'ai rien compris. La solution classique devant une difficulté trop grosse étant de la contourner, voici le principe (bestial) que j'ai retenu.

 

1 - Charger le module (#400-#960) en #500

2 - Sauver la page 4 (DOS) en #B00

3 - Décaler le module en #400

4 - Le lancer

5 - Restaurer le DOS en page 4 (#B00-#BFF®#400)

 

On peut alors charger le troisième module.

1 - Charger le module en #500

2 - Le décaler en #400

3 - Lancer le jeu ( JMP$400 )

La routine de transfert de bloc utilisée, nous a déjà servi et est désassemblée dans l'article "Le trident de Neptune". Je ne donne ici, que le listing BASIC correspondant. Ceux qui souhaitent utiliser un moniteur assembleur se reporteront à l'article précédent et adapteront les adresses.


La marche à suivre.


1 - Entrez le listing suivant:

10 IF DEEK(#9A)=#501 THEN GOSUB100:RUN
20 CLS:QUIT
30 !SCUBA1
40 !SCUBA2
50 END

100 FOR I=DEEK(#9A)-1TODEEK(#9C): POKEI+#8000,PEEK(I):NEXT
110 DOKE#9A,#8501:DOKE#9C,DEEK(#9C)+#8000
120 RETURN

 

2 - SAVE"SCUBA",AUTO

3 - Entrez le listing suivant: ( sauvegardez le si vous voulez)

 

 

10A=#0A61:F=#0AAB:L=100:REPEAT:FOR A=A TO A+15:READ C$
20K=VAL("#"+C$):S=S+K+65536*(S+K>65535):IF A<=F THEN POKE A,K
30NEXT:READ D$:IF S=VAL("#"+D$) THEN L=L+5:UNTIL A>F:END
40PING:PRINT"Erreur ligne";L
100DATA A9,00,85,0C,85,0E,85,11,A9,04,85,0D,A9,0B,85,0F,04EA
105DATA 7E,02,CA,D0,F7,A9,E8,8D,63,08,A9,74,8D,62,08,D0,0D68
110DATA BA,CA,D0,F7,60,60,F9,FF,C9,01,F0,14,A9,00,85,67,16CE
115DATA A2,60,BD,7F,08,9D,7F,B8,CA,D0,F7,60,00,00,00,00,1DD9
120DATA 03,00,00,02,02,04,04,08,30,00,00,00,00,00,00,00,1E20

4 - RUN

5 - SAVE"PROV1",A#A61,E#AAB

6 - Entrez le listing suivant: ( sauvegardez le si vous voulez)

10A=#3501:F=#351B:L=100:REPEAT:FOR A=A TO A+15:READ C$
20K=VAL("#"+C$):S=S+K+65536*(S+K>65535):IF A<=F THEN POKE A,K
30NEXT:READ D$:IF S=VAL("#"+D$) THEN L=L+5:UNTIL A>F:END
40 PING:PRINT"Erreur ligne";L
100 DATA A9,00,85,0C,85,0E,85,10,A9,30,85,11,A9,05,85, 0D,0511
105 DATA A9,04,85,0F,20,C4,ED,4C,00,04,00,00,00,00,00, 00,0873

7 - RUN

8 - SAVE"PROV2",A#3501,E#351B

9 - LOAD"STOP ( Utilitaire de blocage )

Insérez votre cassette de jeu dans le magnétophone

10-CLOAD""

11-CALL#E76A:CALL#E4AC:DOKE#2AB,#A60: DOKE#2A9,#500: CALL#E4E0:CALL#E93D

12-LOAD"PROV1

13-SAVE"SCUBA1",A#500,E#AAB,T#A61

14-CALL#E76A:CALL#E4AC:DOKE#2AB,#3500:DOKE#2A9,#500: CALL#E4E0:CALL#E93D

15-LOAD"PROV2

16-SAVE"SCUBA2",A#500,E#351B,T#3501

 

Voilà, c'est presque fini, il ne vous reste plus qu'a essayer votre nouvelle version du jeu et faire un peu de ménage sur votre disquette en effacant les fichiers PROVisoires devenus inutiles.

 

C'est tout, bonne plongée et à bientôt...


Télécharger  SCUBA DIVE ! Download

la page baton de joie   joystick page