-
Notifications
You must be signed in to change notification settings - Fork 24
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Crash sur chargement d'un fichier .fd #28
Comments
Bonjour, |
Il s'agit visiblement d'une corruption mémoire dans la gestion de l'affichage vidéo. Je ne sais pas si j'aurai le temps de regarder ça plus en détail ce week-end, mais je vais essayer de corriger le problème dès que possible. |
Je t'ai mis en pj le code source qui est encodé dans le secteur de boot.
Je commence par un fondu de palette, je ne touche pas de suite au mode
vidéo.
On devrait voir l'écran qui noirci.
Je ne sais pas si ça plante quand mon code est exécuté ou avant son
lancement quand le TO charge le secteur de boot et le décode.
Tu as moyen de savoir si on va jusqu'a l'appel en $6200 qui est exécuté à
la fin du chargement de secteur de boot ?
Le ven. 5 mars 2021 à 18:50, Thomas Lorblanchès <[email protected]>
a écrit :
… Il s'agit visiblement d'une corruption mémoire dans la gestion de
l'affichage vidéo. Je ne sais pas si j'aurai le temps de regarder ça plus
en détail ce week-end, mais je vais essayer de corriger le problème dès que
possible.
Ce programme fait quelque chose de particulier / atypique qui expliquerait
que le plantage ne se produise pas sur tous les autres jeux que j'ai pu
testés ? (par exemple, utilisation d'un mode vidéo peu courant qui ne
serait pas géré correctement par l'émulateur...)
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#28 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANROXGPMPD4RAGQS3KGISO3TCEKV7ANCNFSM4YVLOSAQ>
.
|
Je ne vois pas la pièce jointe.
|
Apparemment tout va bien jusqu'en 6251 quand on écrit dans le registre
palette .. après on a des 00 00 00 00 au lieu du reste du code !
ci dessous le lst du code de boot :
44 6200 PalInit
45 3 6200 8E 62E7 ldx #pal_len *
>
46 4 6203 108E 62DB ldy #pal_from *
>
47 6207 PalRun
48 4+0 6207 A6 A4 lda ,y
>
49 5 6209 B4 62EE anda pal_mask *
>
50 2 620C C6 00 ldb #$00 *
>
51 5 620E F4 62EE andb pal_mask *
>
52 5 6211 F7 6278 stb pal_buffer *
>
53 2 6214 C6 11 ldb #$11 *
>
54 5 6216 F4 62EE andb pal_mask *
>
55 5 6219 F7 6279 stb pal_buffer+1 *
>
56 5 621C B1 6278 cmpa pal_buffer *
>
57 3 621F 27 10 beq PalVRSuivante *
>
58 3 6221 22 07 bhi PalVRDec *
>
59 4+0 6223 A6 A4 lda ,y *
>
60 5 6225 BB 6279 adda pal_buffer+1 *
>
61 3 6228 20 05 bra PalVRSave *
>
62 622A PalVRDec
63 4+0 622A A6 A4 lda ,y *
>
64 5 622C B0 6279 suba pal_buffer+1 *
>
65 622F PalVRSave
66 4+0 622F A7 A4 sta ,y *
>
67 6231 PalVRSuivante
68 7 6231 73 62EE com pal_mask *
>
69 3 6234 2B D1 bmi PalRun *
>
70
71 6236 SetPalBleu
72 4+1 6236 E6 21 ldb 1,y
>
73 2 6238 C1 00 cmpb #$00 *
>
74 3 623A 27 08 beq SetPalNext *
>
75 3 623C 22 03 bhi SetPalBleudec *
>
76 2 623E 5C incb *
>
77 3 623F 20 01 bra SetPalSaveBleu *
>
78 6241 SetPalBleudec
79 2 6241 5A decb *
>
80 6242 SetPalSaveBleu
81 4+1 6242 E7 21 stb 1,y *
>
82
83 6244 SetPalNext
84 5 6244 B6 627E lda pal_idx *
>
85 5 6247 B7 E7DB sta $E7DB *
>
86 2 624A 8B 02 adda #$02 *
>
87 5 624C B7 627E sta pal_idx *
>
88 4+0 624F A6 A4 lda ,y *
>
89 5 6251 B7 E7DA sta $E7DA *
>
90 5 6254 F7 E7DA stb $E7DA *
>
91 5 6257 B6 627E lda pal_idx *
>
92 4+0 625A A1 84 cmpa ,x *
>
93 3 625C 26 E6 bne SetPalNext *
>
94 4+1 625E 31 22 leay 2,y *
>
95 4+1 6260 30 01 leax 1,x *
>
96 4 6262 8C 62ED cmpx #end_pal_len *
>
97 3 6265 26 A0 bne PalRun *
>
98
99 6267 Vsync_1
100 7 6267 7D E7E7 tst $E7E7 *
>
101 3 626A 2A FB bpl Vsync_1 *
>
102 626C Vsync_2
103 7 626C 7D E7E7 tst $E7E7 *
>
104 3 626F 2B FB bmi Vsync_2 *
>
105
106 7 6271 7A 62ED dec pal_cycles *
>
107 3 6274 26 8A bne PalInit *
>
108 3 6276 20 08 bra InitVideo *
>
109
110 6278 pal_buffer
111 6278 42 fcb $42 *
>
112 6279 41 fcb $41 *
>
113 627A 53 fcb $53 *
>
114 627B 49 fcb $49 *
>
115 627C 43 fcb $43 *
>
116 627D 32 fcb $32 *
>
117
118 627E pal_idx
119 627E 00 fcb $00 *
>
120 627F 00 fcb $00 *
>
121
122
*---------------------------------------->>
123 * A partir de ce point le code doit
comme>>
124
*---------------------------------------->>
125
126
*****************************************>>
127 * Initialisation du mode video
128
*****************************************>>
129 6280 InitVideo
130 2 6280 1A 50 orcc #$50 *
>
131 4 6282 10CE 9FFF lds #$9FFF *
>
132 2 6286 86 7B lda #$7B *
>
133 5 6288 B7 E7DC sta $E7DC
134
135
*****************************************>>
136 * Initialisation de la commutation de
pag>>
137
*****************************************>>
138 5 628B F6 6081 ldb $6081 *
>
139 2 628E CA 10 orb #$10 *
>
140 5 6290 F7 6081 stb $6081 *
>
141 5 6293 F7 E7E7 stb $E7E7 *
>
142 2 6296 86 04 lda #$04
143 5 6298 B7 E7E5 sta $E7E5 *
>
144
145
*****************************************>>
146 * Lecture des donnees depuis la
disquette>>
147
*****************************************>>
148 629B DKLecture
149 60 setdp $60
150 2 629B 86 60 lda #$60
151 6 629D 1F 8B tfr a,dp *
>
152
153 3 629F CC 0000 ldd #$0000
154 4 62A2 97 49 sta <$6049 *
>
155 5 62A4 DD 4A std <$604A *
>
156 2 62A6 86 02 lda #$02
157 4 62A8 97 4C sta <$604C *
>
158 4 62AA 97 48 sta <$6048 *
>
159 2 62AC 86 A0 lda #$A0 *
>
160 5 62AE DD 4F std <$604F
161 62B0 DKCO
162 8 62B0 BD E82A jsr $E82A *
>
163 6 62B3 0C 4C inc <$604C *
>
164 4 62B5 96 4C lda <$604C *
>
165 2 62B7 81 10 cmpa #$10 *
>
166 3 62B9 23 10 bls DKContinue *
>
167 2 62BB 86 01 lda #$01 *
>
168 4 62BD 97 4C sta <$604C *
>
169 6 62BF 0C 4B inc <$604B *
>
170 4 62C1 96 4B lda <$604B
171 2 62C3 81 4F cmpa #$4F *
>
172 3 62C5 23 04 bls DKContinue *
>
173 6 62C7 0F 4B clr <$604B *
>
174 6 62C9 0C 49 inc <$6049 *
>
175 62CB DKContinue
176 6 62CB 0C 4F inc <$604F *
>
177 5 62CD DC 4F ldd <$604F *
>
178 62CF dk_dernier_bloc
179 5 62CF 1083 A300 cmpd #boot_dernier_bloc *
>
180 3 62D3 23 DB bls DKCO *
>
181 3 62D5 CE A20B ldu #gmboot
182 4 62D8 7E A000 jmp $A000
183
184 * donnees pour le fondu de palette
185
*****************************************>>
186
187 62DB pal_from
188 62DB 0000 fdb $0000 *
>
189 62DD F00F fdb $F00F *
>
190 62DF FF0F fdb $FF0F *
>
191 62E1 7707 fdb $7707 *
>
192 62E3 AA03 fdb $AA03 *
>
193 62E5 330A fdb $330A *
>
194
195 62E7 pal_len
196 62E7 0C fcb $0C *
>
197 62E8 0E fcb $0E *
>
198 62E9 10 fcb $10 *
>
199 62EA 16 fcb $16 *
>
200 62EB 18 fcb $18 *
>
201 62EC 20 fcb $20 *
>
202 62ED end_pal_len
203
204 62ED pal_cycles
205 62ED 0F fcb $0F *
>
206
207 62EE pal_mask
208 62EE 0F fcb $0F *
>
Le ven. 5 mars 2021 à 19:48, Benoit Rousseau <[email protected]> a
écrit :
… Je t'ai mis en pj le code source qui est encodé dans le secteur de boot.
Je commence par un fondu de palette, je ne touche pas de suite au mode
vidéo.
On devrait voir l'écran qui noirci.
Je ne sais pas si ça plante quand mon code est exécuté ou avant son
lancement quand le TO charge le secteur de boot et le décode.
Tu as moyen de savoir si on va jusqu'a l'appel en $6200 qui est exécuté à
la fin du chargement de secteur de boot ?
Le ven. 5 mars 2021 à 18:50, Thomas Lorblanchès ***@***.***>
a écrit :
> Il s'agit visiblement d'une corruption mémoire dans la gestion de
> l'affichage vidéo. Je ne sais pas si j'aurai le temps de regarder ça plus
> en détail ce week-end, mais je vais essayer de corriger le problème dès que
> possible.
> Ce programme fait quelque chose de particulier / atypique qui
> expliquerait que le plantage ne se produise pas sur tous les autres jeux
> que j'ai pu testés ? (par exemple, utilisation d'un mode vidéo peu courant
> qui ne serait pas géré correctement par l'émulateur...)
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub
> <#28 (comment)>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ANROXGPMPD4RAGQS3KGISO3TCEKV7ANCNFSM4YVLOSAQ>
> .
>
|
Le code du boot et du programme de palette c'est ceux-ci : https://github.com/bhrousseau/bento8/tree/master/Bento8/ASM ? |
Non ce n'est pas celui ci, je t'ai envoyé le contenu du lst du code de boot
qui pose problème. Tu l'as reçu ?
Le ven. 5 mars 2021 à 20:25, Thomas Lorblanchès <[email protected]>
a écrit :
… Le code du boot et du programme de palette c'est ceux-ci :
https://github.com/bhrousseau/bento8/tree/master/Bento8/ASM ?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#28 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANROXGM54P2BE7KUIJSCHZLTCEVZJANCNFSM4YVLOSAQ>
.
|
Je te confirme qu'en retirant les deux lignes suivantes :
sta $E7DA
stb $E7DA
qui positionnent les nouvelles valeurs de couleur palette
le code s'exécute correctement et ne fait plus planter theodore.
au premier appel sta $E7DA l'émulateur semble "effacer" le contenu
mémoire
car les instructions suivantes deviennent toutes $00
Le ven. 5 mars 2021 à 20:31, Benoit Rousseau <[email protected]> a
écrit :
… Non ce n'est pas celui ci, je t'ai envoyé le contenu du lst du code de
boot qui pose problème. Tu l'as reçu ?
Le ven. 5 mars 2021 à 20:25, Thomas Lorblanchès ***@***.***>
a écrit :
> Le code du boot et du programme de palette c'est ceux-ci :
> https://github.com/bhrousseau/bento8/tree/master/Bento8/ASM ?
>
> —
> You are receiving this because you authored the thread.
> Reply to this email directly, view it on GitHub
> <#28 (comment)>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ANROXGM54P2BE7KUIJSCHZLTCEVZJANCNFSM4YVLOSAQ>
> .
>
|
J'ai corrigé le problème, qui venait du fait que si on écrit une valeur supérieure à 15 dans le registre E7BD (palette) cela provoquait un débordement dans un tableau interne de l'émulateur. Donc maintenant je ne garde que les bits de poids faibles quand on écrit dans ce registre. Par contre je ne sais pas pourquoi ton programme écrit des valeurs supérieures à 15 dans ce registre. Sur un vrai TO8 ainsi que dans dcmoto j'imagine que les bits de poids forts sont ignorés, ce qui n'était pas fait dans theodore. Maintenant c'est fait, mais peut être qu'il y a quand même un petit bug dans ton programme, car pour moi ça n'a pas de sens d'écrire une valeur supérieure à 15. |
Effectivement ce n'était pas volontaire, merci beaucoup pour ton aide.
Tu as bien fait de masquer les valeurs supérieures, je ne pense pas que les
3 bits de poids forts soient câblés sur qq chose, tout cas je n'ai pas
trouvé de doc dessus.
Encore merci !
Benoit Rousseau.
Le dim. 7 mars 2021 à 15:24, Thomas Lorblanchès <[email protected]>
a écrit :
… J'ai corrigé le problème, qui venait du fait que si on écrit une valeur
supérieure à 15 dans le registre E7BD (palette) cela provoquait un
débordement dans un tableau interne de l'émulateur. Donc maintenant je ne
garde que les bits de poids faibles quand on écrit dans ce registre. Par
contre je ne sais pas pourquoi ton programme écrit des valeurs supérieures
à 15 dans ce registre. Sur un vrai TO8 ainsi que dans dcmoto j'imagine que
les bits de poids forts sont ignorés, ce qui n'était pas fait dans
theodore. Maintenant c'est fait, mais peut être qu'il y a quand même un
petit bug dans ton programme, car pour moi ça n'a pas de sens d'écrire une
valeur supérieure à 15.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
<#28 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/ANROXGNNWP2PWQVPUDX4IS3TCOEDFANCNFSM4YVLOSAQ>
.
|
Je génère mes propres fichiers .fd avec secteur de boot pour TO8
Le fichier en pièce jointe fonctionne parfaitement sous DCMOTO ou sur mon TO8 avec SDDRIVE.
Par contre avec theodore, l'application crash.
Le secteur de boot contient un code de fondu palette vers la couleur noire.
Ce code ne semble pas exécuté et theodore plante.
Il y a donc un problème au chargement du secteur de boot en $6200.
TEST.zip
Je précise que le fichier FD ne comporte pas de FAT.
Merci d'avance !
The text was updated successfully, but these errors were encountered: