This commit is contained in:
Antoine Vignau 2024-01-02 22:11:04 +01:00
parent 09e562e38c
commit 164ea375bd
3 changed files with 435 additions and 420 deletions

View File

@ -601,6 +601,19 @@ M$51 dfb 3,46,0
M$52 dfb 00
M$53 dfb 2,29,0
*
* Les mots de passe
*
tblMP$ da $bfff
da MP$1,MP$2,MP$3,MP$4,MP$5
MP$1 str 'ORIC1'
MP$2 str 'ATMOS'
MP$3 str 'GENIS'
MP$4 str 'ECHEC'
MP$5 str 'ARGON'
*
* Le vocabulaire
* on fera index-1 b/c 8-bits

View File

@ -2,8 +2,10 @@
81 l'index du second mot
400 0, 1, 2 - dŽfinit le cadre dessinŽ
401 pointeurs sur les 57 images du jeu
47A..47E password
480 P - les pointeurs 480.4FF est mis ˆ zŽro
4A0 C - les conditions
4BF flag pour le temps, 0:off, 1:on
4C0 O - les objets
4F7..4F8 CH, unitŽs de force
4F9 S(1)
@ -35,7 +37,7 @@ MODEKEY := $0209
CAPSLOCK := $020C ; $7F = not locked, $FF = locked
PATTERN := $0213
IRQVec := $0245 ; "fast" interrupt vector
JOINFLAG := $025A ; 0 = don't joiu, $4A = join BASIC programs
JOINFLAG := $025A ; 0 = don't join, $4A = join BASIC programs
VERIFYFLAG := $025B ; 0 = load, 1 = verify
CURS_Y := $0268
CURS_X := $0269

View File

@ -1,6 +1,6 @@
## BASIC ORIC FILE.
## NAME: RETOUR
##
# BASIC ORIC FILE.
# NAME: RETOUR
#
0 TRUECONT CALL
0 num TO PLAY ro28*juin1985
0
@ -13,23 +13,23 @@
35 HIRES:POKE 618,10:PRINT:PRINT SPC(11)"ATTENDEZ S.V.P":CH=4000
40 FOR N=1 TO PEEK(#305):ZZ=RND(1):NEXT
43 A$="1031141221242713182310291430271214232927102110272718311427103023141427"
50 POKE #BFFF,11:FOR N=#480 TO #4FF:POKE N,0:NEXT
51 POKE #4A8,10:POKE #4A5,18:POKE #4A3,10:POKE #4A6,22:POKE #4A7,9
SALLE, P+N 50 POKE #BFFF,11:FOR N=#480 TO #4FF:POKE N,0:NEXT
C+xxx 51 POKE #4A8,10:POKE #4A5,18:POKE #4A3,10:POKE #4A6,22:POKE #4A7,9
60 GOSUB 8000:WW=100
70 FOR N=#483 TO #488:POKE N,1:NEXT
75 POKE #48C,1
P+N 70 FOR N=#483 TO #488:POKE N,1:NEXT
P+$C 75 POKE #48C,1
99 CALL #96C9
100 POKE #4BF,1:IF PEEK(#491)=1 THEN 140
101 SA=PEEK(#BFFF):IF SA=23 AND PEEK(#483)=1 THEN 130
102 IF SA=14 AND PEEK(#484)=1 THEN 130
104 IF SA=20 AND PEEK(#485)=1 THEN 130
106 IF SA=29 AND PEEK(#486)=1 THEN 130
108 IF SA=38 AND PEEK(#487)=1 THEN 130
fgTIM P+$11 100 POKE #4BF,1:IF PEEK(#491)=1 THEN 140
P,3 101 SA=PEEK(#BFFF):IF SA=23 AND PEEK(#483)=1 THEN 130
P,4 102 IF SA=14 AND PEEK(#484)=1 THEN 130
P,5 104 IF SA=20 AND PEEK(#485)=1 THEN 130
P,6 106 IF SA=29 AND PEEK(#486)=1 THEN 130
P,7 108 IF SA=38 AND PEEK(#487)=1 THEN 130
110 GOTO 200
130 HIRES:A$="La salle n'est pas eclairee.":X=12:Y=190:GOSUB 30000:GOTO 500
140 HIRES:PRINT "Vos yeux ne voient plus rien.":GOTO 500
200 HIRES:INK 0:CALL #9292:CALL #9245
205 A=PEEK(#400):GOSUB 12000+A*10
cadre 205 A=PEEK(#400):GOSUB 12000+A*10
206 IF PP=0 AND SA=11 THEN PP=1:GOSUB 4920
210 A$="":IF SA<21 THEN A$="1":GOTO 270
220 IF SA<26 THEN A$="3":GOTO 270
@ -38,22 +38,22 @@
270 IF A$="" THEN 300
280 A$="NIVEAU: "+A$:FOR N=1 TO 9:CURSET 6+6*N,190,0:CHAR ASC(MID$(A$,N,1)),0,1:NEXT
300 H=0:N=1
310 IF PEEK(#4C0+N)<>SA THEN 400
O,N 310 IF PEEK(#4C0+N)<>SA THEN 400
320 IF H=1 THEN 350
325 POKE #4BF,0:WAIT 50:CLS
-- 325 POKE #4BF,0:WAIT 50:CLS
330 PRINT "Il y a aussi ";:H=1
350 PRINT ", ";O$(N);:WAIT 100
400 N=N+1:IF N<=O THEN 310
450 IF H=1 THEN PRINT:WAIT 100
500 POKE #4BF,0
fgTIME 500 POKE #4BF,0
505 SA=PEEK(#BFFF):IF SA<>51 AND SA<>48 AND SA<>22 AND SA<>4 AND SA<>17 THEN 3500
510 A=PEEK(#4A3):POKE #4A3,A-1:IF A=1 THEN 4820
C,3 510 A=PEEK(#4A3):POKE #4A3,A-1:IF A=1 THEN 4820
520 GOTO 3500
530 POKE #4BF,1:IF PEEK(617)<>0 THEN PRINT
$269 530 POKE #4BF,1:IF PEEK(617)<>0 THEN PRINT ; CURS_X in the ORIC firmware
531 X$=KEY$:K=S(1)/5:IF K<.5 THEN K=.5
532 FOR N=#BFB3 TO #BFB7:IF PEEK(N)<58 AND PEEK(N)>47 THEN POKE N,32
533 NEXT:IF PEEK(#BFB5)=58 THEN POKE #BFB5,32
552 PRINT CHR$(27)"P"CHR$(27)"FOrdre:"CHR$(27)"C";:X$=""
>0 & <9 532 FOR N=#BFB3 TO #BFB7:IF PEEK(N)<58 AND PEEK(N)>47 THEN POKE N,32
: -> ' ' 533 NEXT:IF PEEK(#BFB5)=58 THEN POKE #BFB5,32
552 PRINT CHR$(27)"P"CHR$(27)"FOrdre:"CHR$(27)"C";:X$="" ; the ESCape character
553 A$=KEY$:CH=CH-K:WW=WW-K:IF A$=CHR$(13) THEN 579
554 IF A$<>"" THEN AA=ASC(A$) ELSE AA=33
555 IF AA<32 THEN 553
@ -61,13 +61,13 @@
557 IF A$=CHR$(127) THEN 553 ELSE 564
558 XX=LEN(X$):IF XX=1 THEN X$="":GOTO 560
559 X$=LEFT$(X$,XX-1)
560 IF PEEK(617)<>2 THEN 563
CURS_X 560 IF PEEK(617)<>2 THEN 563
561 PRINT CHR$(8)CHR$(8)CHR$(8)" "CHR$(8);:GOTO 553
563 PRINT CHR$(8)" "CHR$(8);:GOTO 553
564 IF LEN(X$)=26 THEN 553 ELSE X$=X$+A$
565 IF WW<0 THEN WW=WW+100:MUSIC 1,3,5,7:PLAY 1,0,0,0:WAIT 8:PLAY 0,0,0,0
566 IF CH<0 THEN CH=0:PRINT:GOSUB 4630:WAIT 200:GOTO 18000
568 IF DEEK(#4FB)=12336 AND DEEK(#4FE)=12336 THEN 4650
00:00 568 IF DEEK(#4FB)=12336 AND DEEK(#4FE)=12336 THEN 4650
578 PRINT A$;:GOTO 553
579 IF X$="" THEN CLS:PRINT " Tres drole...":WAIT 50:GOTO 530
580 PRINT FRE(""):CLS:PRINT X$:GOSUB 6000
@ -76,15 +76,15 @@
590 IF N>L THEN POKE #BFDF+N,32
600 NEXT:POKE #BFE5,0:CALL #9500
610 IF PEEK(#BFE5)=0 THEN CLS:PRINT "JE NE COMPRENDS PAS '";X1$"'":GOTO 3500
615 K=PEEK(#BFE5):POKE #80,K
620 IF X2$="" THEN POKE #81,0:GOTO 900
1st char 615 K=PEEK(#BFE5):POKE #80,K
2nd char 620 IF X2$="" THEN POKE #81,0:GOTO 900
630 L=LEN(X2$):FOR N=1 TO 4:IF N<=L THEN POKE #BFDF+N,ASC(MID$(X2$,N,1))
640 IF N>L THEN POKE #BFDF+N,32
650 NEXT:POKE #BFE5,0:CALL #9500
660 IF PEEK(#BFE5)=0 THEN CLS:PRINT "JE NE COMPRENDS PAS '";X2$"'":GOTO 3500
char index 660 IF PEEK(#BFE5)=0 THEN CLS:PRINT "JE NE COMPRENDS PAS '";X2$"'":GOTO 3500
665 K=PEEK(#BFE5):POKE #81,K
900 IF PEEK(#80)>9 THEN 1000
910 Z=1:SA=PEEK(#BFFF):T=PEEK(#80):MO$=MID$(STR$(T),2,1)
direction 900 IF PEEK(#80)>9 THEN 1000
salle 910 Z=1:SA=PEEK(#BFFF):T=PEEK(#80):MO$=MID$(STR$(T),2,1)
920 T$=MID$(M$(SA),Z,1):IF T$="0" THEN 1000
940 IF T$<>MO$ THEN 970 ELSE SA=VAL(MID$(M$(SA),Z+1,2)):POKE #BFFF,SA:GOTO 100
970 Z=Z+3:GOTO 920
@ -101,67 +101,67 @@
1740 BR=0:GOSUB 1800+LI*100
1760 IF BR<>0 THEN GOTO BR
1780 E=E+3:GOTO 1710
1800 POKE #4BF,0:G=0:HH=0:BR=500:CLS
fgTIME 1800 POKE #4BF,0:G=0:HH=0:BR=500:CLS
1810 G=G+1
1820 IF PEEK(#4C0+G)=255 THEN 1840
O+G 1820 IF PEEK(#4C0+G)=255 THEN 1840
1830 IF G<O THEN 1810 ELSE 1870
1840 IF HH=0 THEN PRINT "Vous avez en votre possession ";:WAIT 50:HH=1
1860 PRINT ", "O$(G);:WAIT 100
1865 IF G<O THEN 1810
1870 IF HH=1 THEN PRINT ".":RETURN
1880 PRINT "Vous ne devez pas etre fatigue,vous n'avez rien sur vous":WAIT 33:RETURN
1900 IF PEEK(#4C0+N)<>255 THEN 1960
1940 POKE #4BF,0:CLS:PRINT CHR$(27)"R"CHR$(27)"@Vous avez deja cela...etourdi!"
O+N 1900 IF PEEK(#4C0+N)<>255 THEN 1960
fgTIME 1940 POKE #4BF,0:CLS:PRINT CHR$(27)"R"CHR$(27)"@Vous avez deja cela...etourdi!"
1950 WAIT 150:BR=500:RETURN
1960 POKE #4C0+N,255:S(1)=S(1)+1:RETURN
2000 IF PEEK(#4C0+N)=255 THEN 2030
2010 POKE #4BF,0:CLS:PRINT CHR$(27)"T Je ne savais pas qu'on pouvait poser"
O+N 2000 IF PEEK(#4C0+N)=255 THEN 2030
fgTIME 2010 POKE #4BF,0:CLS:PRINT CHR$(27)"T Je ne savais pas qu'on pouvait poser"
2020 PRINT CHR$(27)"T ce qu'on ne possede pas..."
2025 BR=500:RETURN
2030 SA=PEEK(#BFFF):POKE #4C0+N,SA:S(1)=S(1)-1:RETURN
2100 POKE #4BF,0:CLS:GOSUB 4000+N*10:WAIT 200:RETURN
2200 POKE #480+N,1:RETURN
2300 POKE #480+N,0:RETURN
SALLE, O+N 2030 SA=PEEK(#BFFF):POKE #4C0+N,SA:S(1)=S(1)-1:RETURN
fgTIME 2100 POKE #4BF,0:CLS:GOSUB 4000+N*10:WAIT 200:RETURN
P+N 2200 POKE #480+N,1:RETURN
P+N 2300 POKE #480+N,0:RETURN
2400 C=VAL(MID$(E$,E+3,2)):E=E+2:POKE #4A0+N,C:RETURN
2500 POKE #4C0+N,0:RETURN
2600 POKE #BFFF,N:RETURN
O+N 2500 POKE #4C0+N,0:RETURN
SALLE 2600 POKE #BFFF,N:RETURN
2700 PRINT "D'ACCORD"
2710 WAIT 35:BR=500:RETURN
2800 BR=500:RETURN
2900 BR=530:RETURN
3000 BR=100:RETURN
3100 POP:WAIT 30:GOTO 18000
3200 SA=PEEK(#BFFF):POKE #4C0+N,SA:RETURN
3500 IF PEEK(#BFFF)=11 THEN POKE #481,1
3502 IF PEEK(#BFFF)=19 THEN POKE #481,0
3504 IF PEEK(#BFFF)<>36 OR PEEK(#482)=1 THEN 3510
3506 IF PEEK(#4CD)=255 THEN WAIT 100:GOSUB 4010:POKE #482,1:GOTO 3510
I'm dead 3100 POP:WAIT 30:GOTO 18000
O+N,SA 3200 SA=PEEK(#BFFF):POKE #4C0+N,SA:RETURN
P+1 3500 IF PEEK(#BFFF)=11 THEN POKE #481,1
P+1 3502 IF PEEK(#BFFF)=19 THEN POKE #481,0
P+2 3504 IF PEEK(#BFFF)<>36 OR PEEK(#482)=1 THEN 3510
O+D, P+2 3506 IF PEEK(#4CD)=255 THEN WAIT 100:GOSUB 4010:POKE #482,1:GOTO 3510
3508 WAIT 100:GOTO 4020
3510 IF PEEK(#4C4)<>255 THEN 3516
3512 A=PEEK(#4A8)-1:POKE #4A8,A
3514 IF PEEK(#4A8)=0 THEN 4740
3516 IF PEEK(#4A1)=0 THEN 3534
3518 A=PEEK(#4A1)-1:POKE #4A1,A
O+4 3510 IF PEEK(#4C4)<>255 THEN 3516
C+8 3512 A=PEEK(#4A8)-1:POKE #4A8,A
C+8 3514 IF PEEK(#4A8)=0 THEN 4740
C+1 3516 IF PEEK(#4A1)=0 THEN 3534
C+1 3518 A=PEEK(#4A1)-1:POKE #4A1,A
3520 IF A>0 THEN 3534
3522 IF PEEK(#4C3)=255 THEN 4750
3524 IF PEEK(#4C3)<>51 THEN 4760
C+3 3522 IF PEEK(#4C3)=255 THEN 4750
C+3 3524 IF PEEK(#4C3)<>51 THEN 4760
3526 A=PEEK(#BFFF):IF A=51 THEN 4750
3528 IF PEEK(#4C4)<>51 AND PEEK(#4D3)<>51 THEN 4780
C+4 3528 IF PEEK(#4C4)<>51 AND PEEK(#4D3)<>51 THEN 4780
3530 IF A=46 OR A=49 THEN 4770
3532 POKE #48C,0:GOSUB 4790:POKE #490,1:GOTO 3540
3534 IF PEEK(#48E)=0 THEN 3537
3535 A=PEEK(#4A2)-1:POKE #4A2,A:IF A>0 THEN 3540
3536 POKE #48E,0
3537 IF DEEK(#48C)>0 THEN 3540
3538 IF PEEK(#BFFF)=50 THEN 3540 ELSE 4800
3540 IF PEEK(#490)=0 THEN 3544
3542 A=PEEK(#4A5)-1:POKE #4A5,A:IF A=1 THEN 4810
3544 IF PEEK(#4A6)=0 THEN 3548
3546 A=PEEK(#4A6)-1:POKE #4A6,A:IF A=0 THEN GOSUB 4830:POKE #488,0
3548 IF PEEK(#488)=1 THEN 3552
3550 A=PEEK(#4A7)-1:POKE #4A7,A:IF A=0 THEN GOSUB 4580:GOTO 18E3
3552 IF PEEK(#4A4)=0 THEN 3556
3554 A=PEEK(#4A4)-1:POKE #4A4,A:IF A=1 THEN 4840
P+$C, P+$10 3532 POKE #48C,0:GOSUB 4790:POKE #490,1:GOTO 3540
P+$E 3534 IF PEEK(#48E)=0 THEN 3537
C+2 3535 A=PEEK(#4A2)-1:POKE #4A2,A:IF A>0 THEN 3540
P+$E 3536 POKE #48E,0
P+$C..$D 3537 IF DEEK(#48C)>0 THEN 3540
SALLE 3538 IF PEEK(#BFFF)=50 THEN 3540 ELSE 4800
P+$10 3540 IF PEEK(#490)=0 THEN 3544
C+5 3542 A=PEEK(#4A5)-1:POKE #4A5,A:IF A=1 THEN 4810
C+6 3544 IF PEEK(#4A6)=0 THEN 3548
C+6 3546 A=PEEK(#4A6)-1:POKE #4A6,A:IF A=0 THEN GOSUB 4830:POKE #488,0
P+8 3548 IF PEEK(#488)=1 THEN 3552
C+7 3550 A=PEEK(#4A7)-1:POKE #4A7,A:IF A=0 THEN GOSUB 4580:GOTO 18E3
C+4 3552 IF PEEK(#4A4)=0 THEN 3556
C+4 3554 A=PEEK(#4A4)-1:POKE #4A4,A:IF A=1 THEN 4840
3556 GOTO 530
4010 PRINT "Une boule d'acier tombee du plafond"
4011 PRINT "vient de s'ecraser sur votre casque.":RETURN
@ -192,7 +192,7 @@
4232 PRINT "la nitroglycerine a explose.":RETURN
4240 PRINT "Pourquoi ouvrir un robinet qui ne ferme pas!":RETURN
4250 PRINT "Le robinet ne se ferme pas.":RETURN
4260 POKE #BFFF,57:HIRES:INK 0:CALL #9292:POKE #BFFF,44:RETURN
SALLE 4260 POKE #BFFF,57:HIRES:INK 0:CALL #9292:POKE #BFFF,44:RETURN
4270 PRINT "La bibliotheque n'a pas de porte...":RETURN
4280 PRINT "Il n'y a rien de mieux sur les autres pages.":RETURN
4290 PRINT "...c'est toi J.R qui a pris ma femme et mon petrole , tu es infame."
@ -243,8 +243,8 @@
4590 GOSUB 5500:IF A$="N" THEN 500
4591 PRINT "Appuyez sur 'S' quand vous etes pres.":SA=PEEK(#BFFF):POKE #4FA,SA
4592 GET A$:IF A$<>"S" THEN 4592
4593 CALL #96FC:POKE #400,96:POKE #4F9,S(1):DOKE#4F7,CH
4594 FOR I=1 TO 5:POKE #479+I,ASC(MID$(MP$,I,1)):NEXT
force 4593 CALL #96FC:POKE #400,96:POKE #4F9,S(1):DOKE#4F7,CH
password 4594 FOR I=1 TO 5:POKE #479+I,ASC(MID$(MP$,I,1)):NEXT
4595 CSAVE"MEMOIRE",A#400,E#4FF,AUTO
4596 RUN
4600 GOSUB 5500:IF A$="N" THEN 500
@ -252,7 +252,7 @@
4602 GET A$:IF A$<>"L" THEN 4602
4603 CALL #96FC
4604 DOKE#BFEA,DEEK(#9C):CLOAD"MEMOIRE":DOKE#9C,DEEK(#BFEA)
4605 SA=PEEK(#4FA):POKE #BFFF,SA:CH=DEEK(#4F7):S(1)=PEEK(#4F9)
SALLE, CH 4605 SA=PEEK(#4FA):POKE #BFFF,SA:CH=DEEK(#4F7):S(1)=PEEK(#4F9)
4606 MP$="":FOR N=#47A TO #47E:MP$=MP$+CHR$(PEEK(N)):NEXT:CALL #90F9
4607 GOTO 100
4610 TEXT:PAPER 4:INK 2:PRINT "Le sas se referme derriere vous ,"