Une boucle DBRA dans une autre boucle DBRA, boucle beaucoup trop:
Si le nombre d'itérations de la boucle interieure est fixée en
indirect depuis un byte ou un word, il faut nettoyer le registre utilisé
pour le décompte avant (clr.l). Le dernier DBRA a fait 0-1 et ça
a wrapé.
Tout plante et redémarre:
- Ecriture dans un Word ou Longword pas aligné.
- RTS quand il faut pas.
- Mauvais saut vers un label (attention aux copier/coller).
- Watchdog pas réinitialisé assez souvent.
Sprites invisibles:
- Position X ou Y hors champ. Mettre la position à 0
pour vérifier.
- Taille à 0. La mettre au moins à 1.
- Mauvais ROMs C. Ca arrive parfois... On se perd vite avec
tous ces fichiers.
- Aucun tile mappé, ou que des tiles transparents.
Mapper au moins le premier et vérifier qu'il est pas vide.
- Coefs de rétrécissement à 0. Les mettre
à fond ($0FFF).
- Fix rempli avec des tiles non-transparents, ils recouvrent
tous les sprites. Vider le fix avec un tile transparent.
- Sprites désactivés suite à une écriture
dans un registre zarb (NeoGeo CD ?).
Fix invisible:
- Aucun tile non-transparent mappé.
- Tiles mappés hors-champ (dans les bordures).
- Fix désactivé.
Couleurs merdiques, explosion de téléviseur:
- Mauvaise couleur de référence, toujours mettre
la couleur 0 de la palette 0 ($400000) à $8000 (noir absolu).
- Palettes chargées en byte au lieu d'en word.
- Tile attribué à la mauvaise palette, ou une
palette pas chargée.
Tiles en vrac avec des attributs en vrac également, qui trainent dans
des sprites:
Clear sprites fait des miracles. Ils sont pas vidés au démarrage
!
Sprite qui fait n'importe quoi ou qui ne suit pas ses coordonnées:
- Ne jamais utiliser le foutu sprite 0, c'est un bon à
rien !
- Vider toute la partie de sa map qui ne sert pas avec un
tile transparent (ne pas ésperer que sa map soit vide dès le
départ). Le tile #0 est pas forcément transparent aussi.
- Sprite piloté, vérifier ses attributs.
- VRAM mise à jour pendant que le GPU dessine les sprites.
Il faut rester dans le VBlank pour faire ça proprement.
Une première écriture en VRAM fonctionne, mais pas les suivantes:
- VRAM_MOD pas à la bonne valeur. Toujours vérifier
VRAM_MOD avant de faire des écritures successives en VRAM.
- Trop d'écritures successives, lacher quelques NOP
ou un MOVE dans le vide entre les écritures.
L'interruption HBlank ne se déclenche pas:
- L'interruption fonctionne, mais l'émulateur ne fait
pas le rendu ligne par ligne. Utiliser MAME ou GnGeo !
- Le vecteur pointe vers un RTS. Vérifier qu'il pointe
bien vers la bonne routine (différent sur la NeoGeo CD).
- Registre $3C0006 mal configuré, vérifier sa
valeur.
- Interruption ignorée par le 68K. Mettre le masque
d'interruptions à zéro (SR = $2000). Prier.