désassemblage de l'Aigle d'or
Modérateurs : Papy.G, fneck, Carl
Re: désassemblage de l'Aigle d'or
Pour revenir au sujet, la programmation n'est évidemment pas un modèle du genre, mais c'est le reflet de ce que l'on faisait à l'époque (l'Aigle d'Or a été programmé au début de l'année 1984). C'est mal structuré, souvent maladroit, et on pourrait faire beaucoup mieux aujourd'hui. Mais ça marche, ce n'est pas trop lent, les graphismes sont plutôt bien par rapport aux autres jeux de la même année, l'aventure est prenante, le jeu n'est pas extrêmement difficile mais pas facile non plus. Et les joueurs de l'époque l'ont plébiscité et en parlent encore 35 ans après. C'est un jeu mythique.
On peut lui reprocher un programme BASIC très peu lisible (comme on faisait souvent à l'époque), mais surtout, dans la partie assembleur, de nombreux appels à des routines en ROM. Cette pratique est à proscrire, car un changement de version du Basic ou du moniteur système peut rendre le programme inutilisable. Par exemple, à la sortie du MO6, il a été nécessaire de faire une version spéciale du jeu car la version MO5 ne fonctionnait pas.
Dans ses interviews, l'auteur a expliqué qu'il avait imaginé un scénario plus étoffé avec plus de graphismes et plus de situations différentes. Il a été obligé d'élaguer à cause du manque de mémoire sur l'Oric 1. Sur Thomson il y a davantage de place et en programmant mieux on pourrait intégrer tout ce qu'il a enlevé. Je crois qu'il a conservé quelques bouts de programmes inédits qu'il n'a pas pu utiliser, faute de place.
On peut lui reprocher un programme BASIC très peu lisible (comme on faisait souvent à l'époque), mais surtout, dans la partie assembleur, de nombreux appels à des routines en ROM. Cette pratique est à proscrire, car un changement de version du Basic ou du moniteur système peut rendre le programme inutilisable. Par exemple, à la sortie du MO6, il a été nécessaire de faire une version spéciale du jeu car la version MO5 ne fonctionnait pas.
Dans ses interviews, l'auteur a expliqué qu'il avait imaginé un scénario plus étoffé avec plus de graphismes et plus de situations différentes. Il a été obligé d'élaguer à cause du manque de mémoire sur l'Oric 1. Sur Thomson il y a davantage de place et en programmant mieux on pourrait intégrer tout ce qu'il a enlevé. Je crois qu'il a conservé quelques bouts de programmes inédits qu'il n'a pas pu utiliser, faute de place.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: désassemblage de l'Aigle d'or
Rappelons aussi que c'est un portage d'un programme Basic Oric.
( celui qui a gagné le Tilt d'Or ! )
( celui qui a gagné le Tilt d'Or ! )
Re: désassemblage de l'Aigle d'or
100% Basic sur Oric?
Re: désassemblage de l'Aigle d'or
Oui, c'est en Basic sur Oric. Dans la conversion Thomson, je suppose que l'auteur a voulu convertir en assembleur les fonctions les plus lentes du BASIC. Mais il l'a fait en continuant d'appeler les routines en ROM. Le résultat ressemble plus à du Basic compilé qu'à un programme purement assembleur.
Refaire l'Aigle d'Or en assembleur pur permettrait certainement un déplacement du personnage plus fluide. Mais est-ce bien nécessaire ? Ce jeu est mythique, il ne faut pas le dénaturer.
Refaire l'Aigle d'Or en assembleur pur permettrait certainement un déplacement du personnage plus fluide. Mais est-ce bien nécessaire ? Ce jeu est mythique, il ne faut pas le dénaturer.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: désassemblage de l'Aigle d'or
Si c'est du 100% basic, il doit être possible de récupérer le listing et essayer de l'adapter sur VG5000. Ca peut être un beau projet pour quelqu'un qui veut se lancer sur la programmation du Z80 et de l'EF9345 sur VG5000.
Quelqu'un a -il le listing ORIC à partager?
Quelqu'un a -il le listing ORIC à partager?
Re: désassemblage de l'Aigle d'or
Je vais le dire de tête, car je n'ai pas relancé le jeu.
Il me semble me souvenir des saccades du personnage dans ses mouvements, et effectivement je trouve aussi que ce n'est pas nécessaire d'optimiser quelque chose pour que ce soit mieux. Cette saccade est en accord avec l'époque, une machine aussi (oui elle pourrait mieux faire, mais ça donne du charme à la nostalgie technique de ce titre). Elle fait partir de L'Aigle d'Or sur Thomson
Et j'adore ^^
-
- Messages : 52
- Inscription : 11 déc. 2021 16:05
- Localisation : Région parisienne
Re: désassemblage de l'Aigle d'or
joaopa a écrit : ↑04 oct. 2020 20:49 Si c'est du 100% basic, il doit être possible de récupérer le listing et essayer de l'adapter sur VG5000. Ca peut être un beau projet pour quelqu'un qui veut se lancer sur la programmation du Z80 et de l'EF9345 sur VG5000.
Quelqu'un a -il le listing ORIC à partager?
As-tu essayé de contacter l'auteur des remakes oric JOTD via sa page perso ?
J'ai crû comprendre qu'il y avait aussi des routines en assembleur.
Perso, je serais intéressé et prêt à participer à une version C64 en assembleur.
Re: désassemblage de l'Aigle d'or
aaah, je n'avais pas capté que l'auteur de l'Aigle d'Or c'était également lui qui avait réalisé Colorado et Fétiche Maya, il a fondé Silmarils puis Eversim...
Il présente son travail ici https://www.youtube.com/watch?v=TKAg3JM ... eFranceBnF
(l'aigle d'or est cité à partir de la 21ème minute)
Il présente son travail ici https://www.youtube.com/watch?v=TKAg3JM ... eFranceBnF
(l'aigle d'or est cité à partir de la 21ème minute)
-
- Messages : 7988
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: désassemblage de l'Aigle d'or
Sympa cette vidéo!
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: désassemblage de l'Aigle d'or
Son frère, André Rocques, a sorti nombres de jeux d'aventures sur Thomson:
- Duel au Colorado
- L'évadé de Tapiocras
- Mon général
- Le Trésor des Baskerville
Je me suis aventuré sur "Duel au Colorado", où j'ai réussi à aller jusqu'à un repère d'un cowboy au nord, dans des falaises, mais je ne suis pas arrivé à aller plus loin. C'est un jeu qui manque de cohérence parfois (dans les déplacements)
Pour en revenir à tous les commentaires, je suis globalement d'acvcord avec tout ce qui est dit par Daniel Samuel etc, sur la difficulté à l'époque de coder rapidement et d'avoir des possibilité de changer facilement le code. Actuellement, j'utilise un éditeur de texte sous Linux (Kate) je fais un copier coller du Basic ou de l'assembleur que j'importe dans DC MOTO (Ca pourait être fait avec Teo) et on voit facilement le résultat et on peut faire un bon jeu 20 fois plus rapidement ainsi qu'auparavant où on n'avait pas d'éditeur de texte (à moins d'utiliser "paragraphe" pour cela ?). Et donc oui c'est bcp plus simple de développer mainteannt sur les 8 buits à l'aides des émilateurs et des très bons éditeurs de texte.
Et pour tout dire, le jeu que je dév actuellement sur Thomson Utilise le plus possible le Basic mais aussi des parties assembleur qui permettent de traiter des dizaines de fois + rapidement ces parties critiques qu'en Basic. Le Basic a le gros défaut d'être interprété à la volée (ce qui le rend très lent) et c'est un gouffre quand on a des traitement répétitif à faire dessus (un exemple, faire descendre un caractère ligne par ligne avec les Pokes en Basic met plus de 60" alors que ça met moins d'1/10 s en ass.
Autres défaut du basic, le systèmes de lignes numérotés, et enfin, pas de possibilité de créer des "fonction" au sens langage procédural.
Concernant la vidéo de Louis Marie Ricques, je n'ai pas tout vu (elle est trop longue!!) mais il oublie quand même un langage essentiel dans l'infoirmatique qui est le langage Pascal et qui a servi de modèle à bien d'uatres (le C, Java et même Python) et qui est toujours utilisé actuellement. Et malheureusement il n'y a pas eu de "bon" portage de comilateur Pascal sur Thomson contrairement à d'uatres machines (Même les atari XL ont eu droit à un très bon Pascal).
- Duel au Colorado
- L'évadé de Tapiocras
- Mon général
- Le Trésor des Baskerville
Je me suis aventuré sur "Duel au Colorado", où j'ai réussi à aller jusqu'à un repère d'un cowboy au nord, dans des falaises, mais je ne suis pas arrivé à aller plus loin. C'est un jeu qui manque de cohérence parfois (dans les déplacements)
Pour en revenir à tous les commentaires, je suis globalement d'acvcord avec tout ce qui est dit par Daniel Samuel etc, sur la difficulté à l'époque de coder rapidement et d'avoir des possibilité de changer facilement le code. Actuellement, j'utilise un éditeur de texte sous Linux (Kate) je fais un copier coller du Basic ou de l'assembleur que j'importe dans DC MOTO (Ca pourait être fait avec Teo) et on voit facilement le résultat et on peut faire un bon jeu 20 fois plus rapidement ainsi qu'auparavant où on n'avait pas d'éditeur de texte (à moins d'utiliser "paragraphe" pour cela ?). Et donc oui c'est bcp plus simple de développer mainteannt sur les 8 buits à l'aides des émilateurs et des très bons éditeurs de texte.
Et pour tout dire, le jeu que je dév actuellement sur Thomson Utilise le plus possible le Basic mais aussi des parties assembleur qui permettent de traiter des dizaines de fois + rapidement ces parties critiques qu'en Basic. Le Basic a le gros défaut d'être interprété à la volée (ce qui le rend très lent) et c'est un gouffre quand on a des traitement répétitif à faire dessus (un exemple, faire descendre un caractère ligne par ligne avec les Pokes en Basic met plus de 60" alors que ça met moins d'1/10 s en ass.
Autres défaut du basic, le systèmes de lignes numérotés, et enfin, pas de possibilité de créer des "fonction" au sens langage procédural.
Concernant la vidéo de Louis Marie Ricques, je n'ai pas tout vu (elle est trop longue!!) mais il oublie quand même un langage essentiel dans l'infoirmatique qui est le langage Pascal et qui a servi de modèle à bien d'uatres (le C, Java et même Python) et qui est toujours utilisé actuellement. Et malheureusement il n'y a pas eu de "bon" portage de comilateur Pascal sur Thomson contrairement à d'uatres machines (Même les atari XL ont eu droit à un très bon Pascal).
Re: désassemblage de l'Aigle d'or
bonjour,
Quelqu'un sait-il comment récupérer le listing de l'Aigle d'Oric en Basic pour Oric ?
Quelqu'un sait-il comment récupérer le listing de l'Aigle d'Oric en Basic pour Oric ?
Recherche: cartouches Mattel Intellivision Imagic (loose)
Star Jacker et Lode Runner sur Yeno/SEGA SC-3000
Star Jacker et Lode Runner sur Yeno/SEGA SC-3000
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: désassemblage de l'Aigle d'or
Bon, ça blablate et ça commente, mais il a été fait ce boulot de désassemblage et de listage ou pas ?
Re: désassemblage de l'Aigle d'or
partie 1:
Code : Tout sélectionner
0 DOKE#9C,3945
1 HIMEM#17FF
2 REM
3 REM COPYRIGHT LORICIELS MARS 84
4 REM TOUTES REPRODUCTIONS INTERDITES 5
5 CLS:PAPER0:POKE#26A,2
6 INK7
7 PRINT:PRINT:PRINT:PRINT:PRINT
8 Q$=CHR$(96)+" LORICIELS 84":FORI=1TO14:POKE#BB81+I,ASC(MID$(Q$,I,1)):NEXT
18 EXPLODE
20 MA$="A464B1609162":MB$="A464B1629160"
25 MM$="88D0F9A9281865628562A5636900856318A56465608560A56169008561C665D0D960"
30 MA$=MA$+MM$:MB$=MB$+MM$
40 FORX=1TOLEN(MA$)STEP2:VV=VAL("#"+MID$(MA$,X,2))
42 POKE#400+(X-1)/2,VV
44 NEXT
50 FORX=1TOLEN(MB$)STEP2:VV=VAL("#"+MID$(MB$,X,2))
52 POKE#430+(X-1)/2,VV:NEXT
100 M$=" par ROCQUES Louis-Marie "
658 LZ=2:CZ=13
1000 CLS:PAPER0:INK7
1005 HIRES:POKE#26A,2:INK0:PAPER0
1010 DOKE#60,6144:DOKE#62,40959:POKE#64,40:POKE#65,200
1020 CALL#400
1100 PLAY0,1,4,3000
1110 WAIT0300
1120 FORX=1TO9:CURSET0,0,3:FILL100,1,16:CURSET66,0,3:FILL100,1,0
1130 CURSET144,0,1:FILL10,1,0:CURSET6,102,3:FILL25,1,7
1140 EXPLODE:CURSET0,0,3:FILL100,1,20:CURSET66,0,3:FILL100,1,3
1150 CURSET144,0,1:FILL10,1,64:CURSET6,102,3:FILL25,1,7
1159 PY=23:CO=12
1160 NEXT:CURSET66,0,3:FILL100,1,4
1170 PLAY0,7,4,3000
1180 IFN=1THEN1300
1190 WAIT1000
1200 N=1:GOTO1120
1300 CURSET18,131,3:FILL57,1,64:CURSET78,131,3:FILL55,1,5
1305 CURSET36,142,3:FILL2,1,3:CURSET54,142,3:FILL2,1,2
1308 CURSET6,190,3:FILL9,1,5
1309 CURSET0,190,3:FORX=1TO35:CURMOV6,0,3:V=ASC(MID$(M$,X,1)):CHARV,0,1:NEXT
1310 PRINT:PRINTCHR$(140)" Copyright LORICIELS 84";
1315 WAIT800:PLAY0,7,1,3000:WAIT300
1320 O=1:GOSUB1400:O=2:GOSUB1400:O=3:GOSUB1400
1330 IFP=0THENP=1:GOTO1600
1340 PRINT:PRINT:PRINT:REMetourner la cassette, taper CLOADCHR$(34)CHR$(34)
1342 PRINT" Chargement du programme principal"
1345 PRINTSPC(10)CHR$(96)" LORICIELS 1984";
1350 CLOAD"AIGLEDOR.2"
1400 PLAY7,0,0,0
1410 MUSIC1,O,10,0:MUSIC2,O,1,05:MUSIC3,O,5,0:PLAY7,0,1,5000:WAIT50
1420 MUSIC1,O+1,10,0:MUSIC2,O+1,2,0:MUSIC3,O+1,4,0:PLAY7,0,1,3000:WAIT20
1430 MUSIC1,O+1,1,0:MUSIC2,O+1,4,0:MUSIC3,O+1,7,0:PLAY7,0,1,4000:WAIT70
1450 RETURN
1500 PRINT:PRINT
1510 PRINTCHR$(129)" COMMANDES:":PRINT
1515 PRINT" Fleches: Marcher,tourner":PRINT" Barre espace: Arret,position neutre"
1520 PRINT" A: Accroupir":PRINT" B: Boire":PRINT" S: Sauter (longueur)"
1530 PRINT" D: Sauter (hauteur)":PRINT" G: Grimper":PRINT" I: Inventaire"
1540 PRINT" L: Lire":PRINT" O: Ouvrir":PRINT" P: Prendre"
1550 PRINT" Q: Suicide":PRINT:PRINT" Objet en main:":PRINT
1560 PRINT" 0: Vide":PRINT" 1: Torche":PRINT" 2: Clef en fer"
1570 PRINT" 3: Clef en or":PRINT" 4: Fiole":PRINT" 5: Pied de biche"
1580 PRINT:PRINTCHR$(140)" APPUYEZ SUR UNE TOUCHE";:GETA$:GOTO1000
1600 TEXT:INK7:PAPER4:PRINTCHR$(17)
1610 PRINT:PRINT
1620 PRINT" Apres plusieurs jours de cheval, vous arrivez enfin en vue du";
1630 PRINT" Chateau de l'Aigle, situe aux confins de la Wesphalie."
1640 PRINT:PRINT:PRINT" -----------":PRINT:PRINT
1650 PRINT" Une vieille legende du pays pretend que le chateau recelle "
1660 PRINT"des tresors et richesses inestimables!"
1670 PRINT" Vous voulez aussi tenter votre chance, bien que nombreux furent"
1680 PRINT"ceux qui perirent..."
1683 PRINT
1685 PRINT" Pour mener a bien votre quete, il vous faudra acquerir les trois"
1687 PRINT"valeurs: Fortune, Sagesse et Puissance"
1690 PRINT:PRINTCHR$(140)" APPUYEZ SUR UNE TOUCHE":GETA$:GOTO1500
32849 FALSE
33792 p
Code : Tout sélectionner
0 POKE#4D0,0:DOKE#9C,15360:RUN1
1 HIMEM#3DFF:TEXT:INK7:PAPER4:CALL#4DDD:POKE#4C6,0:GOTO40:REMLORICIELS84
3 DOKE#3E56,#EAEA:RETURN
4 DOKE#3E56,#6211:RETURN
5 FORV=1TO3:POKEX+V,W:NEXTV:RETURN
6 POKE#4A0,0:POKE#4A9,0:RETURN
7 POKE#4A4,AC:POKE#4A6,AR:POKE#4A1,SS:POKE#4A2,PO:POKE#4A3,BR:POKE#498,MO
8 POKE#478,XH:POKE#479,YH:POKE#4AB,AB:RETURN
9 PRINTC$;SPC(18);CHR$(145)" IMPOSSIBLE";:V=1:RETURN
40 EO=100:BL=.01:POKE#4B0,0:POKE#4B6,0:FR=500:AI=1:DI=1:LI=1
42 NO=PEEK(#4D0)+1:IFPEEK(#FFF9)=1THENPOKE#4EF9,208
45 CLS:TEXT:FORX=1TO12:PRINT:NEXT:INPUT"Aventurier,ton nom";N$:M$=N$
47 IFLEN(M$)<6THENM$=M$+" ":GOTO47ELSEM$=LEFT$(M$,6)+"\"
50 FORX=1TO7:POKE23499+10*NO+X,ASC(MID$(M$,X,1)):NEXT:GOTO3E3
90 V=PEEK(#219):POKE#69,INT(V/6+1):V=PEEK(#21A):POKE#6A,V:RETURN
92 IFPS=1THENPRINT:PRINT" Vous traversez un passage secret !":WAIT50:CLS
93 RETURN
95 IFNN=0THENCALL#4500
96 RETURN
97 SOUND1,3E3,0:PLAY1,1,1,200:RETURN
98 GOSUB90:CALL#4140:RETURN
99 GOSUB9:GOTO5100
100 HIRES:GOSUB92:PAPER0:INK0:D=#3EBD:CURSET12,199,1:GOSUB3:SP=PEEK(#481)
102 POKE#26A,10:GOSUB(100*(2+SP)):HS=0:HR=0:HT=0:C$=CHR$(30)
105 DOKE#3E80,60138:B=#40C8
110 V=PEEK(#483):IFV=0THEN130
115 GOSUB3:CURSET6,105,3:POKE#68,6:CALLD:IFV=3THEN130
120 GOSUB4:POKE#68,V+9:CURSET12,114-4*(V=2),3:CALLD
130 V=PEEK(#484):IFV=0THEN150
135 GOSUB3:POKE#68,7:CURSET204,105,3:CALLD:IFV=3THEN150
140 GOSUB4:POKE#68,V+11:CURSET210,115-4*(V=2),3:CALLD
150 IFSP=3THENCURSET43,149,1:DRAW0,-110,1:GOSUB510
199 GOTO600
200 DRAW36,-60,1:DRAW155,0,1:DRAW36,60,1:V=PEEK(#482):IFV=0THEN208
205 POKE#68,5:CURSET99,69,3:CALLD
208 POKE#68,4:CURSET36,122,3
210 GOSUB4:FORX=1TO7:CALLD:CURMOV0,-17,3:NEXT
215 CURSET191,139,3:POKE#68,3:FORX=1TO7:CURMOV0,-18,3:CALLD:NEXT
225 IFV=3ORV=0THENRETURN
230 POKE#68,7+V:CURSET105,79,3:CALLD:RETURN
300 GOSUB390
304 POKE#68,4:CURSET48,102,3
310 GOSUB4:FORX=1TO6:CALLD:CURMOV0,-17,3:NEXT
315 CURSET179,119,3:POKE#68,3:FORX=1TO6:CURMOV0,-18,3:CALLD:NEXT
325 GOSUB4:IFV=0ORV=3THENRETURN
330 POKE#68,7+V:CURSET105,59,3:CALLD:RETURN
390 DRAW48,-80,1:DRAW131,0,1:DRAW48,80,1:V=PEEK(#482):IFV=0THEN397
395 POKE#68,5:CURSET99,49,3:CALLD
397 IFPEEK(#48E)=1ORPEEK(#495)=63THENCURSET99,76,3:POKE#68,20:GOSUB3:CALLD
398 IFPEEK(#485)=1ORPEEK(#485)=3THENCURSET107,108,1
399 RETURN
400 GOSUB390:CURSET58,119,1:DRAW0,-100,1:CURMOV15,0,3:DRAW0,100,1
410 CURMOV105,0,3:DRAW0,-100,1:CURMOV15,0,3:DRAW0,100,1:POKE#68,1
420 GOSUB3:CURSET50,19,3:CALLD:CURSET169,19,3:CALLD
430 POKE#68,2:CURSET50,112,3:CALLD:CURSET169,112,3:CALLD:GOTO325
500 DRAW31,-50,1:DRAW165,0,1:DRAW31,50,1:CURSET43,149,1:DRAW0,-110,1
510 DRAW-8,-13,1:DRAW-8,-7,1:DRAW-8,24,1:DRAW-7,40,1:DRAW0,115,1
520 CURSET208,149,1:DRAW0,-110,1:DRAW8,-13,1:DRAW8,-7,1:DRAW8,24,1
530 DRAW7,40,1:DRAW0,115,1:RETURN
600 W=128:X=1065:GOSUB5:X=1100:GOSUB5:X=1109:GOSUB5:X=1136:GOSUB5
605 V=PEEK(#483):POKE1027,W+V:V=PEEK(#484):POKE1061,W+V
607 V=PEEK(#495):M=PEEK(#D000+V):GOSUB3
610 Z=PEEK(#48E):GOSUB(700+10*Z):Z=PEEK(#47C):IFZ>0THENGOSUB780
615 IFPEEK(#47D)=1THENGOSUB790
620 IFPEEK(#47E)=1THENGOSUB900
625 IFPEEK(#47F)=1THENGOSUB1100
627 IFPEEK(#480)=1THENGOSUB1E3
630 TR=PEEK(#48F):IFSP=3THEN635
631 IFPEEK(#48E)=7THEN635
633 POKE#6B,249:W=160:X=1071:GOSUB(800+10*TR):GOSUB5
635 IFPEEK(#485)>1THENGOSUB880
640 OC=0:IFPEEK(#48E)=7THENGOSUB771
642 POKE#6B,250
645 IFNP=63ANDAI=1THENPOKE#68,30:CURSET183,107,3:GOSUB90:CALL#4140
650 IFNP=62ANDDI=1THENPOKE#68,31:CURSET183,104,3:GOSUB90:CALL#4140
652 IFNP=62THENCURSET122,154,3:CHAR40,1,1
655 IFNP=1ANDLI=1THENPOKE#68,93:CURSET183,120,3:GOSUB90:CALL#4140
660 IFNP=36THENCURSET220,110,3:CHAR41,1,1
680 IFNP=63THENCURSET78,172,3:POKE#68,16:CALLD:IFPS=1THENGOSUB6900
690 INK5:CURSET0,0,0:FILL35,40,64:CURSET0,0,0:FILL35,1,20
692 CURSET48,16,0:FILL19,1,4:POKE#4B6,0
695 IFPEEK(#47C)<>3THENPOKE#497,0
699 RETURN
700 RETURN
710 RETURN
720 IFM>128THENCURSET80,36,3:GOTO725
722 CURSET147,45,3
725 POKE#68,21:CALLD:RETURN
730 IFV>128THENCURSET147,30,3:GOTO735
732 CURSET80,45,3
735 POKE#68,22:CALLD:RETURN
740 IFSP=1ORSP=2THENCURSET165,97,3:X=1131:GOTO749
742 CURSET165,120,3:X=1092
749 W=151:GOSUB5:POKE#68,23:CALLD:RETURN
750 IFSP=0THENCURSET165,130,3:X=1092:GOTO758
752 CURSET159,107,3:X=1132
758 W=153:GOSUB5:X=X+3:GOSUB5:POKE#68,25:CALLD:RETURN
760 IFSP=0ORSP=3THENRETURN
764 CURSET189,122,3:X=1096
768 W=152:GOSUB5:POKE#68,24:CALLD:RETURN
770 RETURN
771 CURSET177,136,3:X=1096:POKE#6C,5
775 IFPEEK(#48C)=3THENPOKE#68,27:CURSET177,126,3:OC=1ELSEPOKE#68,26
778 W=154:GOSUB5:CALL#4078:RETURN
780 IFPEEK(#47C)=0THENRETURN
782 CURSET18,80,3:POKE#68,14:CALLD:CURSET214,80,3:POKE#68,15:CALLD:RETURN
790 X=INT((31ANDM)/31*4)*4+1034:W=1:GOSUB5:N=6*(X-1025):IFPEEK(#490)<>1THEN794
792 POKE#68,16:CURSETN,172,3:CALLD:RETURN
794 IFZG=1THENRETURN:ELSER=INT((63ANDM)/63*5)
795 IFR=3THENCURSETN+36,176,3
796 IFR=2THENCURSETN+18,170,3
797 IFR=4THENCURSETN+18,184,3
798 IFR=1THENCURSETN,176,3
799 CHAR33+R,1,1:RETURN
800 RETURN
810 CURSET36,153,3:POKE#68,35:GOTO98
820 CURSET42,153,3:POKE#68,32:GOTO98
830 CURSET30,153,3:POKE#68,33:GOSUB90:POKE#6C,6:CALL#4840:RETURN
840 CURSET30,153,3:POKE#68,33:GOTO98
850 CURSET36,143,3:POKE#68,34:GOTO98
860 CURSET36,153,3:POKE#68,38:GOTO98
870 CURSET42,140,3:GOSUB5:X=X+3:POKE#68,30:POKE#6C,6
872 GOSUB90:CALL#4840:RETURN
880 GOSUB3
882 X=INT(M/256*4)*4+1035
883 N=6*(X-1025):W=156:FORZ=1TO2:GOSUB5:X=X+4:NEXT
884 POKE#68,28:CURSETN,169,3:CALLD:RETURN
900 IFPEEK(#491)=0THEN960
902 POKE#68,17:GOSUB4:IFM>200THENPOKE#68,18:GOTO930
906 CURSET68,10,3:FORX=1TO7:CALLD:CURMOV0,19,3:NEXTX
908 CURSET62,0,3:FORX=1TO8:CALLD:CURMOV0,20,3:NEXT
920 X=1035:W=128:GOSUB5:X=1075:GOSUB5
928 RETURN
930 CURSET158,10,3:FORX=1TO7:CALLD:CURMOV0,19,3:NEXTX
934 CURSET164,0,3:FORX=1TO8:CALLD:CURMOV0,20,3:NEXTX
940 X=1051:W=128:GOSUB5:X=1091:GOSUB5
948 RETURN
960 IFPEEK(#485)>1THENRETURN
962 IFM>200THENHR=2ELSEHR=1
963 IFZG=1THENRETURN
964 IFHR=1THENCURSET95,133,3:FORX=1TO4:CURMOV-7,15,1:NEXTX
990 IFHR=2THENCURSET164,40,3:DRAW0,70,1:CURMOV-2,-30,3:DRAW0,50,1
992 RETURN
1000 REM
1100 IFPEEK(#485)>1ORSP=3ORZG=1THENRETURN
1105 IFSP=3THENRETURN
1110 CURSET42,100,3:CHAR39,1,1:RETURN
2300 PRINTC$"Votre pied de biche s'est casse!";:WAIT10:ZP=ZP-1
2310 IFZP>0THENDP=20+RND(1)*20
2320 GOSUB6:GOTO11E3
2400 PRINTC$"Votre torche est consumee !";:ZT=ZT-1
2410 IFZT>0THENDT=200+RND(1)*100
2420 GOSUB6:GOTO11E3
2500 CLS:PRINT"Cordes:"ZC" Pied de biche:"ZP
2510 PRINT"Fioles:"ZF" Torches:"ZT
2520 IFDI=0THENPRINT"le diamant Bleu";
2530 IFLI=0THENPRINT" un livre";:WAIT15
2540 IFAI=0THENPRINT" un aigle en or";:WAIT15
2560 IFZG>0THENPRINT" une bague";:WAIT15
2570 IFZN=1THENPRINT" un aigle en plomb";:WAIT15
2580 V=M1+M2+M3:IFV>0THENPRINT" parchemins:"V;:WAIT15
2590 IFZO=1THENPRINT" une clef en or";:WAIT15
2595 IFZR=1THENPRINT" une clef en fer";
2599 WAIT50:CLS:GOTO5100
3000 DOKE#306,#2710:IFAI=0ANDLI=0ANDDI=0THEN3080
3005 TEXT:CLS:POKE#26A,10:PRINT:PRINT:PRINT:PRINTN$", tu peux:"
3010 PRINT:PRINT:PRINT" 1. Entrer dans le chateau.":PRINT:PRINT:PRINT" 2. Partir.":PRINT
3015 PRINT:PRINT" 3. Aller chez le marchand":PRINT
3020 GETK$:IFK$="1"THENNP=12:BR$="":AB=0:GOTO4E3
3025 IFK$="3"THEN13E3ELSEIFK$<>"2"THEN3020
3030 IFDI=0ORAI=0ORLI=0THENPRINT:PRINT:PRINT"Tu es ";
3040 IFDI=0THENPRINT"riche ";
3042 IFLI=0THENPRINT"et sage"
3044 IFAI=0THENPRINT"et puissant"
3050 PRINT:PRINT"Tu est sauf!"
3070 PRINT:PRINT"Veux-tu rejouer ? (O/N)":GETK$:IFK$="O"THENRUN1ELSE3070
3080 HIRES:PRINTCHR$(17):CALL#4E2A:X=#5B11:W=6:Y=180:GOSUB9105
3090 PRINT:PRINTCHR$(140)SPC(9)"Vous avez GAGNE !"
3092 GOTO3092
4000 DOKE#306,#FFFF
4010 NV=1:POKE#495,NP:CALL#3F14:GOSUB100:AR=0:BR=0:GOSUB4200:GOTO5E3
4100 SS=0:PO=4:AC=0:XH=19:BR=AR:YH=140:MO=123:GOSUB6:GOSUB7:CALL#4500
4110 SOUND1,1500,0:PLAY1,0,4,10:RETURN
4140 IFPS=1THENSOUND1,1500,0:PLAY1,0,4,10
4150 X=#5A00:GOSUB9100:PLAY0,0,0,0:IFNP=1THENX=23051:GOTO9105
4151 IFOU<>0THENX=23219:GOTO9105
4152 IFNP=63THENX=23090:GOTO9105
4155 IFNP=62ORNP=33THENX=23074:GOTO9105
4157 IFSP=0THENX=23111:GOSUB9105
4160 IFSP=1THENX=23128:GOSUB9105
4162 IFSP=3THENX=23143:GOSUB9105
4164 IFNP<9THENX=23160:GOTO9130
4166 IFNP>57THENX=23181:GOTO9130
4170 X=23199:GOTO9130
4200 AC=0:BR=AR:SS=0:PO=0:MO=124:XH=19:YH=-40*(SP=3)-20*(SP=0)+140
4230 GOSUB7:GOSUB6:CALL#4500:RETURN
4300 AC=0:SS=1:PO=1:MO=125:BR=AR+SS:XH=7:YH=180:GOSUB7:GOSUB6:CALL#4500:RETURN
4400 AC=0:PO=2:SS=2:MO=126:BR=AR+2:XH=31:YH=180:GOSUB7:GOSUB6:CALL#4500:RETURN
4500 AC=0:PO=0:MO=124:SS=0:BR=AR:GOSUB6:GOSUB7:CALL#4500:RETURN
4600 V=PEEK(#48B-SS):IFV=0OR(V=1ANDAB=9)THEN4700
4610 IFAB=6THENDP=DP-1:IFDP<0THEN2300
4620 IFV=3THEN4640
4630 IFAB=6ANDRND(1)*ST<.3THEN4700
4640 PRINTC$;" Ca ne s'ouvre pas";:GOTO5100
4700 IFVN=1THENVN=0:GOSUB6100
4701 IFNP=12ANDSS=3THEN3E3
4702 GOSUB97:V=PEEK(#495-SS):NP=63ANDV:SS=(192ANDV)/64:ST=0:NV=1
4705 POKE#495,NP:CALL#3F14:IFPS=1THENSS=-1
4710 AC=0:GOSUB100:PO=SS:GOSUB4200+100*SS:GOSUB97:GOTO5E3
4800 CALL#4C73
4810 ST=PEEK(#4C2):V=PEEK(#4C0):OB=PEEK(#4C4):RETURN
4900 GOSUB7:IFAC=1THENGOSUB4800:IFV<>0THEN1E4
4910 CALL#4500:CALLB
4920 IFST=3THEN4700
4925 IFGP=3THENGOSUB7400
4930 GOTO5100
5000 IFPEEK(#47C)<>3ANDAB<>1THENGOSUB6E3
5002 CALLB:IFVN=1ANDAB=1THENVN=0:GOSUB6100:SS=3:GOTO4710
5005 IFNV=1THENGOSUB4140:IFNP=63ANDPS=0THENGOSUB6900
5007 IFNV=1THENNV=0:PS=0
5010 CALLB:GOSUB6200:XH=PEEK(#478):YH=PEEK(#479)
5015 CALLB:GOSUB6200:IF(XH=11ANDHR=1)OR(XH=27ANDHR=2)THENHS=1
5016 IFHS=1ANDAC<>5THEN6300
5017 IFPEEK(#4A7)=22ANDAC=5THENGOSUB10660
5018 IFHS=1ANDAC=5THENHT=1
5019 IFTB=1THEN7100ELSEIFSD>0THEN12300
5020 IFPEEK(#4A7)=22THENPOKE#4A9,0:GOSUB7:GOTO4910
5025 IFPEEK(#4A7)=20ANDOB=1THEN7E3
5027 IFGP>1THENGOSUB6:GOTO7240
5030 K$=KEY$:IFK$=""ANDAC=1THENGOSUB6:GOTO4900
5035 IFK$=""ANDAC=9THENGOSUB6:GOTO12100
5037 GOSUB6200:IFK$<>" "ANDGP=1THENGOSUB6:GOTO7200
5040 IFK$=""THENAC=0:GOTO5100
5050 A=DEEK(#4300+2*ASC(K$)):GOSUB6:GOTOA
5100 IFAC=1THENGOSUB97
5110 IFAB=1THENDT=DT-1:IFDT<0THEN2400
5200 CALLB:GOSUB6200:EO=EO-BL
5210 IFSD>0THEN12300
5700 IFLEN(BR$)<13THENBR$=BR$+" ":GOTO5700
5705 PRINTC$:PRINT"Forces:";INT(EO);"%","Points:";PT
5710 PRINT"Pieces d'or:";FR;" Main:";BR$;C$;CHR$(14);
5800 GOSUB6200:IFEO<0THEN9E3
5850 IFBE=0THENGOSUB6400
5990 GOTO5E3
6000 IFVN=1THENCLS:POKE#2C0,3:CURSET0,0,3:FILL199,40,0:POKE#4C0,2:RETURN
6001 IFOU=1ORAC=5THENRETURN
6002 TEXT:PAPER0:PRINTCHR$(17):FORX=1TO12:PRINT:NEXT:PRINT" IL FAIT NOIR ICI !"
6003 WAIT20:CALL#4EEA:VN=1:INK0:POKE#2C0,3:RETURN
6100 CLS:CALL#4EF8:PAPER4:INK7:NV=1:RETURN
6200 IFPEEK(#4C6)=0THEN8E3
6215 PLAY1,1,0,0:SOUND4,100,4
6220 CALL#4CDD:IFPEEK(#499)=1THENPOKE#499,0:BL=BL+.1:EO=EO-30-RND(1)*50:GOSUB97
6230 IFPEEK(#4C6)=0THENGOSUB97
6240 RETURN
6300 HS=0:V=PEEK(#5100+4*NP):POKE#5100+4*NP,128ORV:POKE#491,1
6310 SOUND1,50,0:PLAY1,1,7,600:GOSUB902:GOSUB3:IFHT=0THEN9000
6320 PLAY0,0,0,0:GOSUB6:GOTO1E4
6400 V=PEEK(#487):IFV=1THENPOKE#487,0:GOTO6410
6402 IFV=0THENRETURN
6405 IFRND(1)/V>.05THENRETURN
6410 POKE#4B1,RND(1)*6:ONPEEK(#486)GOTO6420,6450,6470
6420 IFVN=1THENPOKE#487,V:RETURN
6430 POKE#4B2,7:POKE#4B3,80:POKE#4B4,1:POKE#4B6,2:CALL#4964:RETURN
6450 POKE#499,1
6460 POKE#4B1,1:POKE#4B2,35:POKE#4B3,120:POKE#4B4,1:POKE#4B6,1:CALL#4964:RETURN
6470 RETURN
6500 CURSET183,107,3:POKE#68,30:PLAY1,0,0,0:IFAI=0THENZN=0
6510 FORX=1TO61:V=6+3*(V=6):POKE#6C,V:CALL#4078:SOUND1,5*X,9
6520 NEXT:PLAY0,0,0,0:GOTO10718
6900 IFPS=0THENSOUND1,100,0:PLAY1,1,7,2E3
6910 PATTERN15:FORX=90TO118:CURSETX,165,3:DRAW-9,24,1:NEXT:PATTERN255
6920 PLAY0,0,0,0:RETURN
7000 V=PEEK(#5100+4*NP):POKE#5100+4*NP,64ORV
7010 HIRES:INK0:OB=0:PRINTCHR$(17);:POKE#4C4,0:VN=0
7015 PLAY1,1,0,0:FORX=1TO50:SOUND1,50+20*X,10:NEXT:GOSUB97
7020 OU=1:AP=NP:AX=XH+4:SP=3:XH=22:FORX=#400TO#497:POKEX,0:NEXT
7030 CURSET72,0,1:DRAW0,199,1:DRAW9,-20,1:DRAW23,-20,1:DRAW30,0,1:DRAW23,20,1
7040 DRAW9,20,1:DRAW0,-199,1:X=1034:W=128:GOSUB5:X=1052:GOSUB5
7045 CURSET12,0,3:FILL200,10,42:CURSET168,0,3:FILL200,10,42:NV=1
7046 FORX=1065TO1095:POKEX,255:NEXT:SP=3
7047 EO=EO-60*RND(1):BL=BL+BL*5*RND(1):AB=0
7048 IF(63ANDM)<32THENPOKE#68,28:CURSET90,182,3:CALLD
7060 AC=0:SS=3:AR=0:BR=25:MO=20:GOSUB7:GOSUB6:CALL#4500:GOSUB690:TB=1:GOTO5E3
7100 K$=KEY$:IFK$<>"A"THEN5100ELSETB=0:GOTO5050
7200 IFZC=0ORAB>0THEN99
7215 IFOU=1OR(NP=62ANDXH=19ANDYH=160)THEN7220ELSE99
7220 GP=1:IFSS<>3THEN10400
7230 IFGP=1THENBR=23:ZC=ZC-1:MO=SS:GP=2:GOTO4900
7240 IFGP=2THENBR=24:GP=3:GOTO4900
7250 IFGP=3THENBR=18:XH=XH+2:GOTO7260
7255 IFGP=4THENPOKE#9400+245,1:POKE#9500+245,1:POKE#5401,64
7260 IFGP<7THENGP=GP+1:MO=18:GOTO4900
7300 GP=0:IFNP=62ANDOU=0THENNP=63:NV=1:ST=0:XH=19:YH=180:SS=3:GOTO4705
7310 OU=0:NP=AP:NV=1:ST=0:XH=AX:YH=180:SS=3:GOTO4705
7400 POKE#68,90:V=6*XH+17:CURSETV+9,YH-54,3:DRAW0,-7,1
7410 FORX=YH-74TO20STEP-14:CURSETV,X,3:CALLD:NEXT
7450 RETURN
8000 BE=PEEK(#4B6):IFBE=0THENRETURN
8015 F=1+(F=1):POKE#4B5,F
8020 ONBEGOTO8100,8200
8100 IFPEEK(#4B0)=0THENPLAY0,1,2,2E3
8110 IFRND(1)>.9THENCALL#4A50ELSECALL#4ACE
8115 IFPEEK(#499)=0THENBL=BL+.5:EO=EO-RND(1)*10
8120 RETURN
8200 IFPEEK(#4B0)=1ANDPO<4THENEO=EO-RND(1)*20:BL=BL+.05
8205 CALL8835:CALL#4976
8210 PLAY0,1,2,1E3:IFRND(1)>.9THENSOUND1,40,0:PLAY1,1,2,300
8215 IFPEEK(#4B6)=0THENPLAY0,0,0,0
8220 RETURN
9000 PLAY0,0,0,0:IFVN=1THENGOSUB6100
9005 HIRES:INK0:POKE#68,112
9010 FORM=1TONO:W=PEEK(23485+M):Y=100:CURSETW,Y,3:CALL#3EBD
9020 X=23500+10*M:Y=180:GOSUB9105:NEXTM
9025 POKE#68,113:CURSET40,30,3:CALL#3EBD:CURSET0,0,3:FILL79,1,20:CURSET6,80,3
9030 FILL120,1,7:DOKE#306,#2710:IFNO=5THENNO=0
9050 POKE#4D0,NO:PRINTCHR$(17):GOTO3070
9100 W=0:Y=0:CURSET6,0,0:FILL35,38,64
9105 V=PEEK(X):IFV=92THENWAIT100*U:RETURN
9110 W=W+6:IFW>233THENW=6:Y=Y+8
9120 CURSETW,Y,3:CHARV,0,1:X=X+1:GOTO9105
9130 W=0:Y=8:GOTO9105
10000 IFAC=1THENAC=0:GOSUB97
10010 MO=SS:PO=SS:BR=AR+SS:GOTO4900
10100 IFAC<>0THEN10000
10110 IFPO>3ANDPO<8THENSS=0:MO=4:PO=4:BR=AR:GOTO4900
10120 IFSS<>0THENSS=0:GOTO1E4
10130 MO=8:AC=1:BR=AR:GOTO4900
10200 IFAC<>0THEN1E4
10210 IFPO>3ANDPO<8THENSS=1:PO=5:MO=5:BR=AR+1:GOTO4900
10220 IFSS<>1THENSS=1:GOTO1E4
10230 MO=9:AC=1:BR=AR+1:GOTO4900
10300 IFAC<>0THEN10000
10310 IFPO>3ANDPO<8THENSS=2:PO=6:MO=6:BR=AR+2:GOTO4900
10320 IFSS<>2THENSS=2:GOTO1E4
10330 MO=10:AC=1:BR=AR+2:GOTO4900
10400 IFAC<>0THEN1E4
10405 IFPO>3ANDPO<8ANDPS=1ANDXH=19ANDYH=140ANDSS=3THEN4700
10410 IFPO>3ANDPO<8THENSS=3:MO=7:PO=7:BR=AR+3:GOTO4900
10420 IFSS<>3THENSS=3:GOTO1E4
10430 MO=11:AC=1:BR=AR+3:GOTO4900
10500 IFPO>4ANDPO<8THENWAIT10:GOTO5100
10505 IFAB=6ANDXH=27ANDYH=160THEN99
10510 PO=4+SS:AC=0:BR=AR+SS:MO=4+SS:GOTO4900
10600 CALL#4D55:IFPEEK(#4C7)=1THEN99
10620 GOSUB4810
10640 MB=AB:AC=5:MR=AR:PM=0:AB=0:PO=7+SS:MO=11+SS:BR=18:GOSUB6:GOTO4900
10660 PM=PM+1:IFPM=1THENPOKE#9400+245,1:POKE#9500+245,1:POKE#5401,64:RETURN
10665 IFPM=4THENGOSUB97:RETURN
10670 IFPM=5THENAB=MB:AR=MR:BR=AR+SS:PO=SS
10690 RETURN
10700 IFSS=3THEN99
10701 IFNP=1ORNP=62ORNP=63THEN10780
10702 IFSS=1ANDXH=27ANDOC=1ANDYH=160THEN10770
10703 CALL#4CB6:V=PEEK(DEEK(#78)-4*(SS=1)+(SS=2)+38*(SS=0))
10705 IFV<>160ORTR=0THEN99
10707 IFAB<>0THEN99
10710 X=0:GOSUB(10715+5*TR):IFX=1THEN99
10715 POKE#68,249
10716 TR=0:V=PEEK(#5100+4*NP):POKE#5100+4*NP,199ANDV:POKE#48F,0
10717 IFXH<>27OROC=0THENCALL#4576
10718 PRINTC$" "M$;:WAIT20:PRINTCHR$(14):GOTO5100
10720 IFPO<4ORPO>7THENX=1:RETURN
10721 IFNP=62THENM1=1ELSEIFNP=35THENM2=1ELSEIFNP=1THENM3=1
10722 M$="Un parchemin":RETURN
10725 IFPO<4ORPO>7THENX=1:RETURN
10727 FR=FR+INT(RND(1)*300):PT=PT+10:M$="Une bourse de pieces d'or":RETURN
10730 IFPO<4ORPO>7THENX=1:RETURN
10732 ZR=1:M$="Une clef en fer":PT=PT+15:RETURN
10735 IFPO<4ORPO>7THENX=1:RETURN
10738 ZO=1:M$="Une clef en or":PT=PT+30:RETURN
10740 IFPO<4ORPO>7THENX=1:RETURN
10742 ZF=ZF+1:PT=PT+7:M$="Une fiole pleine":IFNP=38ORNP=14THENPN=PN+1
10743 RETURN
10745 IFPO<4ORPO>7THENX=1:RETURN
10747 ZG=1:FR=FR+200:M$="Une bague":RETURN
10750 IFPO<4ORPO>7THENX=1:RETURN
10752 ZN=1:FR=FR+50:PT=PT+10:M$="Un aigle en plomb":RETURN
10770 IFTR=0THENM$="Le coffre est vide !":GOTO10717
10775 GOSUB(10717+5*TR):GOTO10716
10780 POKE#68,250
10785 IFYH<>160ORNOT(XH=27ANDSS=1)ORPO>3ORAB<>0THEN10702
10787 IF(NP=62ANDDI=1)OR(NP=63ANDAI=1)THENPOKE#4C6,1
10790 IFNP=1ANDLI=1THENLI=0:M$="Un livre":PT=PT+1E3:GOTO10717
10793 IFNP=62ANDDI=1THENDI=0:M$="Le diamant bleu":PT=PT+500:FR=FR+200:GOTO10717
10795 IFNP=63ANDAI=1ANDZN=0THENPRINTC$;" Il est incruste":GOTO5100
10797 IFNP=63ANDAI=1THENAI=0:M$="L'aigle d'or":PT=PT+1E3:FR=FR+5E3:GOTO6500
10799 GOTO99
10800 U=1:IFM1=1THENX=23244:GOSUB9100
10810 IFM2=1THENX=23601:GOSUB9100
10820 IFM3=1THENX=23351:GOSUB9100
10830 IFLI=0THENX=23416:GOSUB9100
10840 U=0:GOTO5100
10900 IFST=1ORST=2THEN4600
10907 IFAB=8ANDXH=15ANDYH=140ANDSS=3AND(PEEK(#485)=1ORPEEK(#485)=3)THEN10970
10910 IFPEEK(#48E)=7ANDXH=27ANDYH=160THEN10950ELSE99
10950 IFAB<>6THENIFM>100ORAB<>0THEN4640
10960 POKE#6C,5:POKE#68,27:CURSET177,126,3:CALL#4078:OC=1
10962 V=PEEK(#5000+4*NP+3):POKE#5000+4*NP+3,48ORV:POKE#48D,3
10963 IFAB=6THENDP=DP-1:IFDP<0THEN2300
10965 IFAB=6THENPOKE#68,85:CURSET164,117,3:CALL#3EBD:GOTO5100ELSE5100
10970 IFPS=1THEN99ELSESOUND1,1500,0:PLAY1,0,4,10
10980 CURSET114,120,3:FORV=0TO11:DRAW16,0,0:CURMOV0,-2,3:DRAW-16,0,1:NEXT
10990 PLAY0,0,0,0:PS=1:GOTO5100
11000 IFAB=0THEN5100
11010 AR=0:AB=0:BR$="":GOTO1E4
11100 IFZT=0THEN99
11110 IFAB=1THEN5100
11120 AR=4:AB=1:BR$="Torche":GOTO1E4
11200 IFZR=0THENGOSUB9:GOTO5100
11210 IFAB=9THEN5100
11220 AR=8:AB=9:BR$="Clef en fer":GOTO1E4
11300 IFZO=0THEN99
11310 IFAB=8THEN5100
11320 AR=8:AB=8:BR$="Clef en or":GOTO1E4
11400 IFZF=0THEN99
11410 IFAB=10THEN5100
11420 AR=12:AB=10:BR$="Une fiole":GOTO1E4
11500 IFZP=0THEN99
11510 IFAB=6THEN5100
11520 AR=19:AB=6:BR$="Pied de biche":GOTO1E4
12000 IFYH<>141ORAB<>1OR(XH<>7ANDXH<>31)ORPEEK(#47C)=0THEN5100
12010 IFXH=7ANDSS=2THENV=PEEK(#497)OR1:GOTO12030
12020 IFXH=31ANDSS=1THENV=PEEK(#497)OR2ELSE99
12030 IFV=3ORV=131THENX=PEEK(#5000+4*NP):POKE#5000+4*NP,2ORX
12035 POKE#497,V:POKE#47C,3:PLAY0,1,1,2E3:GOTO5100
12100 IFZF=0ORAB<>10THEN99
12110 AC=9:IFSS=3ORSS=0THENSS=1:GOTO1E4
12120 IFFG=0THENAR=15:FG=1:SOUND1,200,0:PLAY1,1,4,150:GOTO1E4
12125 FG=FG+1:IFFG<3THEN5100
12127 IFRND(1)*PN<PNTHENPN=PN-1:BL=BL+1ELSEEO=100:BL=.01
12130 FG=0:AC=0:PLAY0,0,0,0:ZF=ZF-1:AR=12:GOTO1E4
12200 EO=0:GOTO5100
12300 IFPEEK(#4C6)>0THEN5100
12305 SD=SD+1:GOSUB6
12310 ONSDGOTO10500,10000,12320,12320,12320,12000,12340,12340,12340,12350,12360
12320 YH=YH-13:GOTO1E4
12340 YH=YH+13:GOTO1E4
12350 GOSUB97:GOTO10500
12360 SD=0:GOTO1E4
13000 CLS:PRINTCHR$(17):PRINT:PRINT:PRINT:PRINT:PRINT" Le marchand vend :"
13010 PRINT:PRINT" 1. Fioles : 360 p.o."
13015 PRINT" (Eau de Jouvence)":PRINT
13020 PRINT" 2. Torches : 190 p.o.":PRINT
13030 PRINT" 3. Cordes : 110 p.o.":PRINT
13035 PRINT" 4. Pieds de biche: 230 p.o.":PRINT:PRINT" 0. Partir"
13037 PRINT:PRINT:PRINT" Tu as "FR"p.o."
13040 PRINT:PRINT" Achat ? ";
13050 GETK$:IFK$<>"1"ANDK$<>"2"ANDK$<>"4"ANDK$<>"3"ANDK$<>"0"THEN13050
13055 PRINTK$
13060 ON(VAL(K$)+1)GOTO3000,13100,13200,13300,13400
13070 IFK$="3"THEN13300
13100 V=360:GOSUB13500:IFX=0THENZF=ZF+1
13110 GOTO13010
13200 V=190:GOSUB13500:IFX<>0THEN13010
13210 ZT=ZT+1:IFZT=1THENDT=200+RND(1)*100
13220 GOTO13010
13300 V=110:GOSUB13500:IFX=0THENZC=ZC+1
13310 GOTO13010
13400 V=230:GOSUB13500:IFX<>0THEN13010
13410 ZP=ZP+1:IFZP=1THENDP=20+RND(1)*20
13420 GOTO13010
13500 X=0:IF(FR-V)<0THENPRINTCHR$(140)"Tu n'as pas assez d'or !":X=1:RETURN
13510 FR=FR-V:PRINTCHR$(140)"D'accord .":RETURN
21845 GOTO5100
Voila
-
- Messages : 2367
- Inscription : 06 avr. 2009 12:07
Re: désassemblage de l'Aigle d'or
Merci, 6502man . A mon tour de contribuer, listing BASIC pour MO5. Légèrement formaté pour le rendre plus lisible.
AIGLE.BAS (1er fichier, intro)
AIGLE.BAS (2ème fichier, jeu)
On voit aisément que le jeu est entre les lignes 900 et 5030, avec beaucoup de sous-routines placées avant. Comme souvent avec les listings BASIC d'époque, il suffit de formater correctement, ligne par ligne et bloc par bloc pour s'apercevoir que ce n'est pas si spaghetti que ça.
AIGLE.BAS (1er fichier, intro)
Code : Tout sélectionner
0 REM COPYRIGHT LORICIELS FEVRIER 85
TOUTES REPRODUCTIONS,LOCATIONS
STRICTEMENT INTERDITES .
5 POKE&H21FC,255
10 CLEAR,&H3FFF:LOADM"":LOADM"":POKE&H21FC,255
12 PRINTCHR$(20):CLS:SCREEN7,0,0:LOCATE0,12:PRINT"Laissez le magneto en position lecture.":PRINT:PRINTTAB(7)"<APPUYEZ SUR UNE TOUCHE>"
15 IFINKEY$=""THEN15ELSE100
20 FORX=1TO700:NEXT:RETURN
30 PLAYT$+"T5A2L50DO#L30FAL90RE":RETURN
40 T$="O3":GOSUB30:T$="O2":GOSUB30:T$="O1":GOSUB30:GOSUB20:RETURN
100 CONSOLE0,24:CLS:SCREEN5,0,0:PRINTCHR$(20):GOSUB40:GOSUB20:GOSUB20
110 IM=&H5013:MT=&H5900:EF=&H5A28:FL=&H5A0C:LG=&H5016:LR=&H5017:CL=&H5022:FM=&H5023:CG=&H5025:POKE&H5021,0:POKE&H5012,0
120 GOSUB200:GOSUB300:GOSUB20:GOSUB300:GOSUB400:GOSUB20:GOSUB300:LOCATE0,24:COLOR7,0:PRINT" Copyright LORICIELS Fevrier 85";:GOSUB20:GOSUB300:GOSUB20:GOSUB40:GOSUB20
130 CLS:SCREEN7,4,4:PRINT:PRINT:PRINT:PRINT:PRINT" Apres plusieurs jours de cheval,vous arrivez en vue du Chateau de l'Aigle, situe aux confins de la Wesphalie.":PRINT:PRINT" Le vieux mage disait donc vrai..."
132 PRINT:PRINT" Il avait ajoute : 'Pour mener a bien ta quete, il te faudra acquerir SAVOIR, RICHESSE et PUISSANCE.'
140 PRINT:PRINT:PRINT:PRINT:PRINT" La legende du pays raconte que le Chateau recelle d'innombrables tresors et richesses, mais que nombreux furent ceux qui y perirent..."
145 LOCATE7,24:PRINT"<APPUYEZ SUR UNE TOUCHE>";:K$=INPUT$(1):CLS
150 COLOR7,1:LOCATE15,0:PRINT" COMMANDES ":COLOR7,4:PRINT:PRINT"Fleches: Marcher/Courir (Pressez 2 fois)Espace : Arret/Debout":PRINT"A : Accroupir":PRINT"B : Boire":PRINT"S : Sauter (en longueur)":PRINT"D : Sauter (en hauteur)"
160 PRINT"O : Ouvrir":PRINT"P : Prendre":PRINT"L : Lire":PRINT"G : Grimper":PRINT"I : Inventaire":PRINT"Q : Suicide":PRINT:COLOR7,1:LOCATE13,15:PRINT" OBJET EN MAIN ":COLOR7,4
165 PRINT"0 : Vide":PRINT"1 : Torche":PRINT"2 : Crucifix":PRINT"3 : Pied de biche":PRINT"4 : Clef en fer":PRINT"5 : Clef en or":PRINT"6 : Fiole":LOCATE7,24:PRINT"<APPUYEZ SUR UNE TOUCHE>";:K$=INPUT$(1)
170 CLS:SCREEN5,0,0:GOSUB200:GOSUB400:GOSUB40:LOCATE8,24:COLOR7,0:PRINT"Chargement en cours...";
180 LOADM"":LOAD"",R
190 END
; Affichage château
200 PSET(0,0),-1:POKECL,4:POKELG,40:POKELR,88:POKEFM,0:EXECFL:PSET(200,5),-5:POKEIM,2:EXECMT:PSET(216,6),-5:POKEIM,6:EXECMT:RETURN
; Animation éclair
300 PSET(80,0),-5:POKEIM,3:POKECG,4:FORX=1TO4:EXECMT:EXECEF:NEXT:RETURN
; Affichage du titre
400 PSET(160,90),-1:POKEIM,5:EXECMT:PSET(16,100),-1:POKEIM,4:EXECMT:POKEIM,7:PSET(80,100),-1:EXECMT
410 LOCATE8,21:PRINT"par ROCQUES Louis-Marie":RETURN
658 LZ=2:CZ=13
1159 PY=23:CO=12
Code : Tout sélectionner
0 CLEAR9,&H3FFF:POKE&H21FC,255:GOTO800
1 IFPEEK(SA+2+W)=0THENPOKESA+2+W,E
2 IFPEEK(SA+W)=0THENPOKESA+W,E
3 IFPEEK(SA+W+1)=0THENPOKESA+1+W,E:RETURNELSERETURN
4 V=PEEK(SA+W):RETURN
5 LOCATE0,0:EXECBO:RETURN
9 R=40:GOTO1430
10 LINE(0,168)-(64,88):LINE-(255,88):LINE-(319,168):RETURN
12 LINE(0,168)-(48,108):LINE-(271,108):LINE-(319,168):RETURN
14 LINE(0,168)-(32,128):LINE-(287,128):LINE-(319,168):RETURN
26 PLAY"O5A9L9T3SILASOFAMIREDOO2A1DO":RETURN
30 CONSOLE3,20:SCREEN0,0:CLS:COLOR7,0:LOCATE12,12:PRINT"Il fait noir ici !":COLOR7,4:CONSOLE0,2:RETURN
40 POKEFO,0:CONSOLE0,24:CLS:SCREEN7,0:EXEC&H4405:LOCATE6,22:PRINT"Veux-tu rejouer ? (O/N)
42 K$=INPUT$(1):IFK$="O"THENRUN800ELSE42
50 CLS:EXEC&H43D8:L=1:IFPEEK(P+186)=0THENR=40:GOTO1430ELSE1430
60 CLS:EXEC&H43E1:L=2:RETURN
70 CLS:EXEC&H43EA:L=3:RETURN
80 CLS:EXEC&H43F3:L=0:RETURN
90 SCREEN7,0:EXEC&H43FC:IFPEEK(P+186)=0THENRETURN
95 LOCATE9,22:PRINT"Tu es trop fort!":GOTO95
110 GOSUB10:POKEIM,4:FORV=0TO4:PSET(56,18+V*14),-1:POKERO,1:EXECPT:NEXT:FORV=0TO4:PSET(240,18+V*14),-1:POKERO,1:EXECXP:NEXT
118 F=0:RETURN
120 GOSUB12:POKEIM,4:FORV=0TO5:PSET(40,24+V*14),-1:POKERO,1:EXECPT:NEXT:FORV=0TO5:PSET(256,24+V*14),-1:POKERO,1:EXECXP:NEXT
128 F=1:RETURN
130 GOSUB10:PSET(64,83):LINE-(64,37):PSET(77,37):LINE-(77,83):PSET(253,83):LINE-(253,37):PSET(240,37):LINE-(240,83):POKEIM,2:PSET(56,24),-1:EXECPT:PSET(232,24),-1:EXECPT:POKEIM,3:PSET(56,84),-1:EXECPT:PSET(232,84),-1:EXECPT
138 F=0:RETURN
140 LINE(0,168)-(32,128):LINE-(72,98):LINE-(120,88):LINE-(200,88):LINE-(248,98):LINE-(287,128):LINE-(319,168)
148 POKESA+24,255:POKESA+35,255:F=0:RETURN
150 GOSUB14:LINE(32,128)-(32,68):LINE-(24,34):LINE-(16,24):LINE-(8,54):LINE-(0,108):LINE-(0,168):LINE(287,128)-(287,68):LINE-(295,34):LINE-(303,24):LINE-(311,54):LINE-(319,108):LINE-(319,168)
158 F=2:RETURN
160 GOSUB14:FORV=0TO5:PSET(32+48*V,127),-1:POKEIM,32:EXECPT:LINE(35+48*V,126)-(35+48*V,30):LINE(44+48*V,126)-(44+48*V,30):PSET(32+48*V,24):POKEIM,33:EXECPT:NEXT
168 F=2:RETURN
180 GOSUB14:LINE(207,128)-(120,128),-1:LINE-(128,108):LINE-(199,108):LINE-(207,128):LINE(120,128)-(120,24):LINE(128,108)-(128,24):LINE(199,108)-(199,24):LINE(207,128)-(207,24):LINE(32,128)-(32,24):LINE(287,128)-(287,24)
188 FORW=48TO51:POKESA+W,0:NEXTW:F=1:RETURN
190 STOP
210 GOSUB230:POKEIM,7:PSET(150,32+F*20):EXECPT:RETURN
220 GOSUB230:POKEIM,8:PSET(150,34+F*20):EXECPT:RETURN
230 POKERB,1:POKEIM,5:PSET(142,24+F*20),-1:EXECPT:RETURN
240 GOSUB260:POKEIM,9:PSET(8,88):EXECPT:RETURN
250 GOSUB260:POKEIM,10:PSET(8,94):EXECPT:RETURN
260 POKERB,1:POKEIM,6:PSET(0,76),-1:EXECPT:RETURN
270 GOSUB290:POKEIM,9:PSET(296,88):EXECXP:RETURN
280 GOSUB290:POKEIM,10:PSET(296,94):EXECXP:RETURN
290 POKERB,1:POKEIM,6:PSET(288,76),-1:EXECXP:RETURN
310 POKERB,1:POKEIM,12:PSET(142,44+F*20),-1:EXECPT:RETURN
320 GOSUB310:BOX(143,74+F*20)-(144,75+F*20):W=20*F+7:POKESA+W+3,E:POKEW+SA,&HF5:RETURN
330 C=1:RETURN
332 POKEIM,18:PSET(248,86),-1:EXECMT:W=55:GOSUB1:POKESA+35,255:RETURN
340 POKERB,1:POKEIM,16:PSET(208+16*F,67+F*20):EXECPT:W=34+20*F:GOSUB1:RETURN
350 POKEIM,15:PSET(200,62+F*20),-1:EXECPT:W=32+20*F:GOSUB1:RETURN
360 POKEIM,14:PSET(88,26+F*20):EXECPT:RETURN
370 POKEIM,13:PSET(210,26+F*20):EXECPT:RETURN
380 C=2:RETURN
382 POKEIM,18:PSET(40,86),-1:EXECXM:W=42:GOSUB1:POKESA+24,255:RETURN
390 C=3:RETURN
392 POKEIM,19:PSET(248,75),-1:EXECMT:W=55:GOSUB1:POKESA+35,255:RETURN
400 C=4:RETURN
402 POKEIM,19:PSET(40,75),-1:EXECXM:W=42:GOSUB1:POKESA+24,255:RETURN
410 POKEIM,38:PSET(96-16*F,26+F*10):EXECPT:RETURN
420 H=1:RETURN
422 POKEIM,35:PSET(110-16*F,46+F*20),-1:EXECMT:RETURN
430 POKEIM,3:PSET(200+8*F,92+F*20),-1:EXECPT:POKEIM,36:PSET(208+8*F,58+F*20),-1:EXECPT:W=32+20*F:GOSUB1:RETURN
440 POKEIM,34:PSET(158,46+F*20),-1:EXECPT:BOX(146,42+F*20)-(182,82+20*F):RETURN
450 POKEIM,37:PSET(208+8*F,56+F*20),-1:EXECPT:RETURN
510 PSET(232,94),-1:POKEIM,17:EXECMT:W=54:E=&HF4:GOSUB2:POKESA+34,255:IFN=63ANDPEEK(P+209)=1THENPSET(232,78),-1:POKEIM,23:POKECL,128:EXECPT
512 RETURN
520 PSET(56,99+20*F),-1:POKEIM,25:EXECMS:W=23+20*F:GOSUB2:RETURN
530 PSET(88,100+20*F),-1:POKEIM,26:EXECMS:W=25+20*F:GOSUB2:RETURN
540 PSET(56,110),-1:POKEIM,26:POKECL,128:EXECPS:W=43:GOSUB2:RETURN
550 PSET(248,100),-1:POKEIM,29:EXECMS:W=35:GOSUB2:RETURN
560 GOSUB510:PSET(232,80),-1:POKEIM,30:EXECMS:RETURN
570 PSET(72,90),-1:POKEIM,23:POKECL,128:EXECPS:W=24:GOSUB2:RETURN
580 PSET(248,94+20*F),-1:POKEIM,28:EXECMS:W=35+20*F:GOSUB2:RETURN
590 GOSUB580:RETURN
600 GOSUB580:RETURN
610 PSET(72,92+20*F),-1:POKEIM,27:EXECMS:W=24+20*F:GOSUB2:RETURN
620 GOSUB610:RETURN
630 GOSUB510:PSET(232,73),-1:POKEIM,24:EXECMS:RETURN
640 GOSUB510:PSET(224,92),-1:POKEIM,22:POKERB,1:EXECMS:RETURN
650 GOSUB510:PSET(232,78),-1:POKEIM,23:EXECMS:RETURN
700 E=1:X=0
730 W=INT(RND(-N*2+X)*11)+64:GOSUB4:IFV>0THENX=X+1:GOTO730
740 GOSUB2:POKEP+220,(W-60)*2:V=16*(W MOD20):IFPEEK(P+136)>0THEN770ELSEIFN=32THENGOSUB754:GOSUB756:GOSUB758:RETURN
745 IFPEEK(P+202)>0THENRETURN
750 ONINT(RND(-N)*4+1)GOTO752,754,756,758:RETURN
752 PSET(V,140),-1:POKEIM,114:EXECPT:RETURN
754 PSET(V,142),-1:POKEIM,115:EXECPT:RETURN
756 PSET(V+24,140),-1:POKEIM,114:EXECXP:RETURN
758 PSET(V+24,150),-1:POKEIM,116:EXECXP:RETURN
770 PSET(V,140),-1:POKEIM,31:EXECPT:RETURN
800 DEFINTA-Z:P=&H5000:SC=&H58F7:FL=&H5A0C:EF=&H5A28:MT=&H5900:PT=&H5946:XM=&H5986:XP=&H59CC:RO=&H500D:RB=&H500C:CL=&H5022:MF=&H5023:FO=&H5021:IM=&H5013:LG=&H5016:LR=&H5017
805 NS=&H501E:EL=&H5AD9:MS=&H5A4D:PS=&H5A96:SA=&H42C0:TP=&H4390:EN=&H4399:BO=&H43A2:IO=&H43B4
807 POKEP+192,99:EXEC&H43AB
810 N=0:CONSOLE0,24:CLS:GOSUB90:SCREEN7,4,0:LOCATE5,5:PRINTCHR$(20)"Aventurier, tu peux :":LOCATE9,9:PRINT"1. Entrer dans le chateau":LOCATE9,11:PRINT"2. Aller chez le marchand"
820 K$=INPUT$(1):IFK$="1"THEN900ELSEIFK$<>"2"THEN820
830 CLS:EXEC&H43BD:CONSOLE16,24
840 CLS:EXEC&H43C6
845 K$=INPUT$(1):PRINTK$:IFK$="0"THEN810ELSEIFASC(K$)>48ANDASC(K$)<53THENPOKE&H50AF,VAL(K$)ELSE840
850 EXEC&H43CF:FORKL=1TO800:NEXT:GOTO840
900 POKEP+172,4:POKEP+171,0:POKEP+165,0:POKEP+167,3:POKEP+164,0
980 POKEP+157,11
1000 V=PEEK(P+157)+1:IFN=12ANDV=1THEN810ELSEN=V:CLS:CONSOLE0,20:CLS:SCREEN0,0,0:CONSOLE21,24:SCREEN7,4:CONSOLE0,20:IFPEEK(P+190)>0THENLOCATE9,11:COLOR7,0:PRINT"C'est un passage secret!":FORV=0TO4000:NEXT:SCREEN0,0:CLS
1020 EXECTP:C=0:H=0:COLOR0,0:POKECL,0:D=PEEK(P+128)+1:OND GOSUB110,120,130,140,150,160,150,180:IFPEEK(P+228)=2THENGOSUB26
1030 ONPEEK(P+145)GOSUB210,220,230:ONPEEK(P+146)GOSUB240,250,260:ONPEEK(P+147)GOSUB270,280,290:IFD=8THENF=2
1055 IFPEEK(P+139)>0THENGOSUB5000
1057 IFPEEK(P+137)>0ANDPEEK(P+202)=0THENPSET(32,77),-1:POKEIM,113:EXECPT
1060 E=254:ONPEEK(P+142)GOSUB310,320,330,340,350,360,370,380,390,400,410,420,430,440,450:POKEIM,11:IFPEEK(P+129)=1THENPSET(16,57),-1:EXECPT
1072 IFPEEK(P+131)=1THENPSET(288,57),-1:EXECXP
1080 IFPEEK(P+135)>0THENGOSUB700
1085 IFN=62THENLOCATE21,15:PRINT"*"
1090 IFPEEK(P+140)>0THENPOKEP+&H49,85+2*PEEK(P+218):POKEP+&H43,2:EXEC&H55D0
1095 IFN=3ORN=62THENPOKESA+50,3
1100 CONSOLE0,2:SCREEN4,4:CONSOLE3,20:IFPEEK(P+&H21)>0THENGOSUB30ELSESCREEN5,0
1102 IFH=1THENGOSUB422
1110 POKERB,1:ONC GOSUB332,382,392,402:POKERB,0:IFC<>0THEN1200
1120 E=4:POKENS,3:ONPEEK(P+141)GOSUB510,520,530,540,550,560,570,580,590,600,610,620,630,640,650
1159 PY=23:CO=12
1200 IFPEEK(P+144)=0THEN1300
1210 POKEIM,21:IFRND(-N)>.5THENPSET(0,24):EXECMT ELSEPSET(280,24):EXECXM
1300 IFPEEK(P+143)=0THEN1400
1310 E=5:POKEIM,20:IFF=2ORRND(-N)>.5THENPSET(116,140),-1:W=67:GOSUB1:EXECMT ELSEPSET(176,120),-1:EXECXM:W=51:GOSUB1
1400 COLOR7,4:LOCATE1,22:PRINT"Forces: "CHR$(20);:CONSOLE0,2:EXECEN
1420 GOSUB5:IFR=0THENONL GOSUB60,70,80:IFPEEK(P+186)=0THENR=40
1425 ONPEEK(P+175)GOTO1000,1500,9,50,40,1700,9,9,4000
1430 IFPEEK(P+168)=1THENI=4:LOCATE15,2:COLOR7,1:PRINT"IMPOSSIBLE";:COLOR7,4
1435 IFI>0THENI=I-1:IFI=1THENLOCATE15,2:PRINT" ";
1437 IFPEEK(P+228)>0THENPLAY"O5A200T1SI"
1440 IFR>0THENR=R-1:IFR=1THENCLS
1490 GOTO1420
1500 POKEFO,0:CONSOLE0,20:COLOR0,0:CLS:GOSUB26
1510 LINE(96,167)-(110,145):LINE-(140,130):LINE-(180,130):LINE-(210,145):LINE-(223,167):PSET(0,24):POKELG,12:POKELR,144:POKEMF,170:POKECL,0:EXECFL:PSET(224,24):EXECFL
1520 CONSOLE3,20:SCREEN5,0:IFRND(-7*N)>.5THENPSET(110,100),-1:POKEIM,35:EXECMT
1530 IFRND(-2*N)>.6THENPSET(140,155),-1:POKEIM,20:EXECMT
1590 CONSOLE0,2:EXECIO:SCREEN7,4:CLS:PRINT:PRINTTAB(7)"C'est une oubliette.":GOTO1400
1700 PSET(152,62):POKERB,1:POKEIM,117:EXECMT:GOTO1430
4000 GOSUB30:GOTO1430
5000 IFPEEK(P+140)>0THENE=255ELSEE=2
5010 IFRND(-N*4)<.5THENPOKEP+218,0:W=66ELSEPOKEP+218,1:W=73
5020 GOSUB2:IFPEEK(P+202)>0THENRETURNELSEIFW=66THENFORV=0TO4:PSET(112-V*4,134+7*V):NEXT:RETURN
5030 PSET(216,60):LINE-(216,99):PSET(218,90):LINE-(218,124):RETURN
Dernière modification par Fool-DupleX le 22 mars 2024 14:42, modifié 4 fois.