désassemblage de l'Aigle d'or

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

désassemblage de l'Aigle d'or

Message par nouvelhermes »

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:RETUR
NELSERETURN
4 V=PEEK(SA+W):RETURN
5 LOCATE0,0:EXECBO:RETURN
9 R=40:GOTO1430
10 LINE(0,168)-(64,88):LINE-(255,88):LIN
E-(319,168):RETURN
12 LINE(0,168)-(48,108):LINE-(271,108):L
INE-(319,168):RETURN
14 LINE(0,168)-(32,128):LINE-(287,128):L
INE-(319,168):RETURN
26 PLAY"O5A9L9T3SILASOFAMIREDOO2A1DO":RE
TURN
30 CONSOLE3,20:SCREEN0,0:CLS:COLOR7,0:LO
CATE12,12:PRINT"Il fait noir ici !":COLO
R7,4:CONSOLE0,2:RETURN
40 POKEFO,0:CONSOLE0,24:CLS:SCREEN7,0:EX
EC&H4405:LOCATE6,22:PRINT"Veux-tu rejoue
r ? (O/N)
42 K$=INPUT$(1):IFK$="O"THENRUN800ELSE42
50 CLS:EXEC&H43D8:L=1:IFPEEK(P+186)=0THE
NR=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)=0T
HENRETURN
95 LOCATE9,22:PRINT"Tu es trop fort!":GO
TO95
110 GOSUB10:POKEIM,4:FORV=0TO4:PSET(56,1
8+V*14),-1:POKERO,1:EXECPT:NEXT:FORV=0TO
4:PSET(240,18+V*14),-1:POKERO,1:EXECXP:N
EXT
118 F=0:RETURN
120 GOSUB12:POKEIM,4:FORV=0TO5:PSET(40,2
4+V*14),-1:POKERO,1:EXECPT:NEXT:FORV=0TO
5:PSET(256,24+V*14),-1:POKERO,1:EXECXP:N
EXT
128 F=1:RETURN
130 GOSUB10:PSET(64,83):LINE-(64,37):PSE
T(77,37):LINE-(77,83):PSET(253,83):LINE-
(253,37):PSET(240,37):LINE-(240,83):POKE
IM,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):LI
NE-(120,88):LINE-(200,88):LINE-(248,98):
LINE-(287,128):LINE-(319,168)
148 POKESA+24,255:POKESA+35,255:F=0:RETU
RN
150 GOSUB14:LINE(32,128)-(32,68):LINE-(2
4,34):LINE-(16,24):LINE-(8,54):LINE-(0,1
08):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)-(3
5+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:L
INE-(128,108):LINE-(199,108):LINE-(207,1
28):LINE(120,128)-(120,24):LINE(128,108)
-(128,24):LINE(199,108)-(199,24):LINE(20
7,128)-(207,24):LINE(32,128)-(32,24):LIN
E(287,128)-(287,24)
188 FORW=48TO51:POKESA+W,0:NEXTW:F=1:RET
URN
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:EXEC
PT:RETURN
270 GOSUB290:POKEIM,9:PSET(296,88):EXECX
P:RETURN
280 GOSUB290:POKEIM,10:PSET(296,94):EXEC
XP:RETURN
290 POKERB,1:POKEIM,6:PSET(288,76),-1:EX
ECXP: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=5
5: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:EXECP
T:W=32+20*F:GOSUB1:RETURN
360 POKEIM,14:PSET(88,26+F*20):EXECPT:RE
TURN
370 POKEIM,13:PSET(210,26+F*20):EXECPT:R
ETURN
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=5
5: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):EXEC
PT: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:EX
ECPT: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:EXECP
T:BOX(146,42+F*20)-(182,82+20*F):RETURN
450 POKEIM,37:PSET(208+8*F,56+F*20),-1:E
XECPT:RETURN
510 PSET(232,94),-1:POKEIM,17:EXECMT:W=5
4:E=&HF4:GOSUB2:POKESA+34,255:IFN=63ANDP
EEK(P+209)=1THENPSET(232,78),-1:POKEIM,2
3: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:EXECM
S: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:E
XECMS:RETURN
570 PSET(72,90),-1:POKEIM,23:POKECL,128:
EXECPS:W=24:GOSUB2:RETURN
580 PSET(248,94+20*F),-1:POKEIM,28:EXECM
S: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:E
XECMS:RETURN
640 GOSUB510:PSET(224,92),-1:POKEIM,22:P
OKERB,1:EXECMS:RETURN
650 GOSUB510:PSET(232,78),-1:POKEIM,23:E
XECMS: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 MO
D20):IFPEEK(P+136)>0THEN770ELSEIFN=32THE
NGOSUB754:GOSUB756:GOSUB758:RETURN
745 IFPEEK(P+202)>0THENRETURN
750 ONINT(RND(-N)*4+1)GOTO752,754,756,75
8:RETURN
752 PSET(V,140),-1:POKEIM,114:EXECPT:RET
URN
754 PSET(V,142),-1:POKEIM,115:EXECPT:RET
URN
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:RETU
RN
800 DEFINTA-Z:P=&H5000:SC=&H58F7:FL=&H5A
0C:EF=&H5A28:MT=&H5900:PT=&H5946:XM=&H59
86:XP=&H59CC:RO=&H500D:RB=&H500C:CL=&H50
22:MF=&H5023:FO=&H5021:IM=&H5013:LG=&H50
16:LR=&H5017
805 NS=&H501E:EL=&H5AD9:MS=&H5A4D:PS=&H5
A96:SA=&H42C0:TP=&H4390:EN=&H4399:BO=&H4
3A2: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 dan
s 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"THEN810
ELSEIFASC(K$)>48ANDASC(K$)<53THENPOKE&H5
0AF,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=1THEN810
ELSEN=V:CLS:CONSOLE0,20:CLS:SCREEN0,0,0:
CONSOLE21,24:SCREEN7,4:CONSOLE0,20:IFPEE
K(P+190)>0THENLOCATE9,11:COLOR7,0:PRINT"
C'est un passage secret!":FORV=0TO4000:N
EXT:SCREEN0,0:CLS
1020 EXECTP:C=0:H=0:COLOR0,0:POKECL,0:D=
PEEK(P+128)+1:OND GOSUB110,120,130,140,1
50,160,150,180:IFPEEK(P+228)=2THENGOSUB2
6
1030 ONPEEK(P+145)GOSUB210,220,230:ONPEE
K(P+146)GOSUB240,250,260:ONPEEK(P+147)GO
SUB270,280,290:IFD=8THENF=2
1055 IFPEEK(P+139)>0THENGOSUB5000
1057 IFPEEK(P+137)>0ANDPEEK(P+202)=0THEN
PSET(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)=1THENPS
ET(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:IF
PEEK(P+&H21)>0THENGOSUB30ELSESCREEN5,0
1102 IFH=1THENGOSUB422
1110 POKERB,1:ONC GOSUB332,382,392,402:P
OKERB,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)>.5THEN
PSET(116,140),-1:W=67:GOSUB1:EXECMT ELSE
PSET(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:I
FPEEK(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:C
OLOR7,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:G
OSUB26
1510 LINE(96,167)-(110,145):LINE-(140,13
0):LINE-(180,130):LINE-(210,145):LINE-(2
23,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:PRI
NT:PRINTTAB(7)"C'est une oubliette.":GOT
O1400
1700 PSET(152,62):POKERB,1:POKEIM,117:EX
ECMT:GOTO1430
4000 GOSUB30:GOTO1430
5000 IFPEEK(P+140)>0THENE=255ELSEE=2
5010 IFRND(-N*4)<.5THENPOKEP+218,0:W=66E
LSEPOKEP+218,1:W=73
5020 GOSUB2:IFPEEK(P+202)>0THENRETURNELS
EIFW=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
nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

Re: désassemblage de l'Aigle d'or

Message par nouvelhermes »

Voici un chef-d'oeuvre en ce qui concerne la programmation spaghetti.

Le mot "desassemblage" est peut-être inadapté, mais je ne trouve pas de mots qui convienne vraiment.

Voici le listing en BASIC, mais contrairement à beaucoup de jeux écrits en BASIC où l'assembleur est en fait secondaire, et ne sert que pour les graphismes (on peut citer beaucoup de jeux Infogrames, comme l'Affaire Vera Cruz, l'Affaire Sydney, les contes de Monte Crypto, Meurtres sur l'Atlantique...) ici l'assembleur et le BASIC sont interdépendant jusqu'à l'absurde (un PRINT pour un début de message, et un CALL PUTC pour la fin), les variables sont définies par leur case mémoire, etc..

Bon, j'ai déjà l'intention de décortiquer la page de présentation (le code est moins "spaghetti") et d'allure plus classuqye, les routines assembleur sont utilisées aussi dans le jeu.
Xavier_

Re: désassemblage de l'Aigle d'or

Message par Xavier_ »

Salut nouvelhermes,
Le mot "desassemblage" est peut-être inadapté, mais je ne trouve pas de mots qui convienne vraiment.
Le fait est que Daniel à répondu à ta question et cela ne semble pas t'avoir éclairé sur la subtilité des langages informatiques.
Voici le listing en BASIC
Ha! Pardon…

Le terme exact est "Textualisation de données numérique codées par liste de commandes indexées"
ça ce rapproche très beaucoup du désassemblage, mais peut porter à confusion car il n'y a pas "compilation" mais compression par indexation des commandes Basic, en deux mots PRINT n'est pas le programme qui imprime à l'écran… mais la commande qui l'appelle.

C'est la différence entre les programmes compilés et ceux interprétés.(compilateur assembleur et interpréteur Basic)

[Nota] LIST ''LPRT:(254)'' pour le prochain listing...
yves
Messages : 464
Inscription : 12 sept. 2007 21:32

Re: désassemblage de l'Aigle d'or

Message par yves »

Xavier_ a écrit : 23 sept. 2020 08:37 Salut nouvelhermes,
....
Le fait est que Daniel à répondu à ta question et cela ne semble pas t'avoir éclairé sur la subtilité des langages informatiques.

Je pense qu'il est inutile d’être désagréable...
Xavier_

Re: désassemblage de l'Aigle d'or

Message par Xavier_ »

Je pense qu'il est inutile d’être désagréable...
Non ce n'est pas de la désagréabilité… mais une méchante colère contenue que la diplomatie m'oblige à censurer.
- Le message est un doublon, déjà argumenté et alimenté.
- L'intervenant ne prend pas compte des messages déjà envoyés.
- Le listing est inexploitable.
- L'intervenant ne porte pas de masque en postant son message.
- L'original est disponible et il n'y a aucun lien vers la page de téléchargement.

Si le but est de taper … LIST "PRT:", la discipline semble être une aide pour les membres du forum.
Si c'est pour se venter de pouvoir "désassembler" un programme Basic sur un émulateur, il fait la fierté de ce forum… et on passe tous pour des cons.

Donc, oui… je suis désagréable.
jasz
Messages : 1313
Inscription : 05 oct. 2016 20:05
Localisation : Quelque part dans le 31

Re: désassemblage de l'Aigle d'or

Message par jasz »

Xavier_ a écrit : 23 sept. 2020 20:34 - L'intervenant ne porte pas de masque en postant son message.
Et avec un masque ça fait "xgtjekempiri" ? :roll:

Bien au contraire le listing BASIC de l'aigle d'or est très intéressant car il combine justement BASIC et ASM

Sinon tu prends "Le temple de Gauthly" (pour ne pas dire "le temple maudit"), la même chose mais en ASM. Le jeu tiens sur un seul .BIN
Ythunder
Messages : 928
Inscription : 21 août 2019 10:12

Re: désassemblage de l'Aigle d'or

Message par Ythunder »

Euh, il y avait un autre sujet là dessus ? (réf a une réponse de Daniel)
Car je comprends à moitié le post...
yves
Messages : 464
Inscription : 12 sept. 2007 21:32

Re: désassemblage de l'Aigle d'or

Message par yves »

oui un message où Daniel indiquait que l aigle d or était codé en basic...

@Xavier: Je ne poste pas souvent mais je crois qu'être constructif c'est aussi s'exprimer sans être agressif même si tu considères visiblement être garant du niveau d'excellence de ce forum. Si tu considères que les posts d'autres membres sont d'un niveau largement inférieur au tien, il n'est peut être pas judicieux de poster, si le fil de discussion est si mauvais que tu le dis, il s'arrêtera surement de lui même ne suscitant aucun intérêt....

pour ma part je trouve que l'idée de nouvelhermes de décortiquer un programme est originale. Y aura-t-il le niveau attendu ? je ne sais pas, j'attends de voir les posts suivants.

Yves
Xavier_

Re: désassemblage de l'Aigle d'or

Message par Xavier_ »

Salut Yves,
Je ne poste pas souvent mais...
Il ne s'agit pas ici de faire de l'élitisme, de squatter un forum pour y déloger les débutants et les non-initiés de notre secte Fabienniste.
Gloire au modérateur qui nous apporte gloire et réputation !

Mais, le partage est bilatéral, et un forum n'est pas exclusivement un poulailler où l'on dépose ses œufs.
Et c'est le seul forum que je connaisse, qui suscite des questions pertinentes et constructives.

Je ne me place pas dans le top 10, des mecs les plus intelligents, je ne suis pas le plus prétentieux et me prendre pour un pilier de cette cathédrale fera rire pas mal de membres.

Oui, les apparences sont trompeuses, et tu n'est pas le premier à te dire : "Mais, en fait, il est con ce mec !"

Il faut arrêter de classer les membres avec des critères d'excellences, car ça provoque toujours de redoutables déceptions.

Donc, comme tu l'as deviné, mes connaissances et mon expertise me donnent le droit de juger et humilier les membres faibles et à l'intellect inférieur au mien.

J'ai en effet de nombreux Fans sur ce forum, qui pourront, sur demande, valider une de mes bêtises ou glorifier un de mes messages qui ne veut rien dire (au tarif habituel).

J'avoue que ta lucidité m'impressionne, et si mon charisme te trouble, … tu pourras avoir accès à mes connaissances spirituelles hors du commun.

Car, je suis désagréable.
Xavier_

Re: désassemblage de l'Aigle d'or

Message par Xavier_ »

Ythunder a écrit : 23 sept. 2020 22:06 Car je comprends à moitié le post...
T'es bête de lire le milieu de mes messages, j'y mets pleins de conneries.
Je m'arrange à bien commencer, vachement sérieux, et je peaufine la fin… le reste n'est que pure délire.

95% des lecteurs ne lisent que le début et la fin…

La preuve, on me prend pour un intello du "TOP ten" du forum.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: désassemblage de l'Aigle d'or

Message par __sam__ »

?!? C'est sur-réaliste. J'y pige que pouic!
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
nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

Re: désassemblage de l'Aigle d'or

Message par nouvelhermes »

Bien entendu, pour les mauvaises langues, le but n'est pas de faire LIST "LPRT:", mais bien de commenter.

Effectivement comme tel, le listing est inexploitable, car très lié à l'ASM, comme je l'ai indiqué, il ne s'agit pas de simple routines assembleur qui servent au graphisme, mais bien une interdépendance BASIC-ASM.

Par exemple, pour montrer un exemple simple, le passage chez le marchand (lignes 830-850).

Un programme ordinaire aurait à ce niveau tout traité en BASIC (il n'y a rien d'extraordinaire).

L'Aigle d'or traite quasiment tout en assembleur, mais avec retour au BASIC (seul l'entrée avec INPUT$ est traitée en BASIC, son contenu est transféré avec un POKE et non une variable ordinaire), et le tout est ensuite traité en ASM.

Je peux toujours décortiquer les routines ASM, mais le forum à l'air surtout composé d'experts, ceci est peut-être inutile
nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

Re: désassemblage de l'Aigle d'or

Message par nouvelhermes »

J'ai une question pour les experts.

Est que l'instruction POKE &H21FC,255 ne servirait pas à empêcher le "débuggage" par TRON par hasard ?

Où est-ce qu'on peut trouver de la doc sur les variables globales utilisées par l'interpréteur BASIC (dans la plage &H2100-&H21FF) un peu l'équivalent des variables globales dur moniteur que l'on trouve dans le guide du MO5 (deuxième version) ?
nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

Re: désassemblage de l'Aigle d'or

Message par nouvelhermes »

Une autre remarque (mille excuses pour les experts),
Quand on appelle un programme ASM depuis le BASIC, pour qu'il y ait retour au BASIC, il faut trois conditions :
- qu'il se termine par l'instruction RTS (logique)
- qu'il garde intact le registre S (logique)
- mais aussi qui garde intact le registre DP (qui doit posséder la valeur &H21, puisque les variables globales de l'interpréteur BASIC se situent entre les adresses &H2100-&H21FF).

Or le jeu (pour économiser quelques octets, fait beaucoup usage du mode d'adressage dont j'ai oublié le nom, mais qui n'utilise qu'un octet de poids faible pour les adresses, l'octet de poids étant fourni par DP, qui le positionne en &H50).

Ce qui explique, que chaque routine (ou presque) commence par positionner DP en &H50 et termine par positionner DP en &H21.

Ceci peut paraître évident aux gourous de l'ASM mais moins à ceux qui ne le parlent pas couramment (je ne sais pas encore si ici c'est un forum d'experts qui parlent aux experts).
nouvelhermes
Messages : 400
Inscription : 22 juil. 2020 20:56

Re: désassemblage de l'Aigle d'or

Message par nouvelhermes »

Autre question : on voit manifestement en regardant le listing, que la structure du programme n'a pas été pensée à l'avance, et sa programmation a plutôt été "bricolée" au fil de l'eau.

Y a-t-il eu des prototypes ou des versions bêta diffusées de ce jeu ? Cela serait intéressant de savoir comment il s'est construit.

Parce qu'autant la structure "spaghetti" de Mandragore se conçoit pour des raisons de protections (contre la copie), autant ici il ne peut s'expliquer par des programmeurs qui ont foncé tête baissée sur le programme sans réelle conception.
Répondre