Skip to content
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

Closed
bhrousseau opened this issue Mar 5, 2021 · 10 comments
Closed

Crash sur chargement d'un fichier .fd #28

bhrousseau opened this issue Mar 5, 2021 · 10 comments
Labels
bug Something isn't working

Comments

@bhrousseau
Copy link

bhrousseau commented Mar 5, 2021

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 !

@Zlika
Copy link
Owner

Zlika commented Mar 5, 2021

Bonjour,
Merci pour ce retour, je regarde ça dès que possible.

@Zlika Zlika added the bug Something isn't working label Mar 5, 2021
@Zlika
Copy link
Owner

Zlika commented Mar 5, 2021

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...)

@bhrousseau
Copy link
Author

bhrousseau commented Mar 5, 2021 via email

@Zlika
Copy link
Owner

Zlika commented Mar 5, 2021

Je ne vois pas la pièce jointe.
Oui l'adresse $6200 est bien exécutée. Puis ensuite très vite je vois qu'il va "moissonner" en mémoire, le Program Counter arrivant dans une zone qui visiblement ne contient pas de données exécutables (et c'est sans doute la cause racine du crash qui suit) :

624A 8B02     ADDA  #$02           2 A=E8 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C8
624C B7627E   STA   $627E          5 A=EA B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C8
624F A6A4     LDA   ,Y             4 A=EA B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C8
6251 B7E7DA   STA   $E7DA          5 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6254 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6256 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6258 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
625A 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
625C 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
625E 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6260 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6262 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6264 0000     NEG   /$00           6 A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
6266 87       ???                  ? A=00 B=00 X=62E7 Y=62DB U=627F S=9FFA DP=60 CC=C4
Break on illegal opcode

@bhrousseau
Copy link
Author

bhrousseau commented Mar 5, 2021 via email

@Zlika
Copy link
Owner

Zlika commented Mar 5, 2021

Le code du boot et du programme de palette c'est ceux-ci : https://github.com/bhrousseau/bento8/tree/master/Bento8/ASM ?

@bhrousseau
Copy link
Author

bhrousseau commented Mar 5, 2021 via email

@bhrousseau
Copy link
Author

bhrousseau commented Mar 6, 2021 via email

@Zlika Zlika closed this as completed in 71045c5 Mar 7, 2021
@Zlika
Copy link
Owner

Zlika commented Mar 7, 2021

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.

@bhrousseau
Copy link
Author

bhrousseau commented Mar 7, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants