Bonjour.
En ce dimanche matin pluvieux, voici la suite du dépannage du PCB Phoenix.
La dernière fois, le Démon des Pannes s'est bien foutu de ma gueule, en m'envoyant sur une fausse piste.
Grâce à mon ami Mame, j'ai pu m'en rendre compte.
Cette fois, fini les hacks à 2 balles : je remets les pins des EPROMs correctement et je vais aller voir ce qu'il se passe pour de vrai...
Le champ de bataille est remis en place :
J'ai de nouveau gelé le CPU à un moment où les glitches graphiques sont bien présents :
Ce n'est pas très visible sur ma photo, mais les sprites d'oiseaux bleus ont des traits verticaux gris.
C'est ce bug que je veux réparer.
Je règle l'oscillo pour qu'il déclenche exactement sur cette ligne :
En 1, nous avons une partie de la lettre "O" du mot "SCORE", ainsi qu'une partie du "0" du score, ainsi qu'une partie d'un sprite utilisé pour indiquer le nombre de vies qu'il reste.
En 2, nous avons le glitch graphique je veux réparer. Il n'est pas très visible sur la photo.
En 3, c'est une partie de l'aile de l'oiseau (gros sprite).
Voici ce que l'oscillo me montre :
Dans la colonne A, ce sont les voies de l'oscillo affectées à des signaux du PCB :
- voie "3", en mauve : signal ROUGE envoyé au moniteur
- voie "4", en vert : signal VERT envoyé au moniteur
- voie "2", en cyan : signal BLEU envoyé au moniteur
- bus "B1" : index de la palette de couleur, pour la génération des signaux R/V/B
- bus "B2" : index de la ligne en cours d'affichage, pour la synchronisation de l'oscillo
Repère rouge "1", nous avons la partie gauche de la ligne : un bout du "O" du mot "SCORE", du "0" de la valeur numérique du score, le sprite du petit vaisseau.
Repère rouge "2", c'est le glitch graphique que je veux réparer.
Repère rouge "3", c'est l'aile de l'oiseau (gros sprite). La couleur est proche du cyan : 0% de rouge, environ 75% de vert et 100% de bleu.
J'observe que le glitch se produit lorsque l'index de palette passe de la valeur "00" à "07" (repère rouge "4").
Par contre, le glitch n'est pas présent lorsque l'index de la palette passe de "07" à "00" (repère rouge "5").
Voici un zoom sur la transition du repère rouge "4" :
J'observe que la transition sur le bus de la palette de couleur est franche et synchrone.
Pas de problème à ce niveau là, qui aurait pu engendrer le glitch en sortie.
Il est temps d'aller voir dans le romset MAME le contenu des 2 PROMs de palette de couleur :
Pour les 2 PROMs de palette de couleur, passer de l'index 00 à 07 ne change rien sur les sorties.
On reste sur la valeur "00", c'est à dire du noir.
CONCLUSION :- les PROMs de palette de couleur ont toutes les deux une panne ;
le fait d'avoir une transition sur leur bus provoque un glitch transitoire sur les sorties
Voici une meilleure vue de ces glitches, sur une autre ligne :
En jaune, j'ai ajouté un des bits de donnée d'une des 2 PROMs de palette (bit D2 de IC40).
On voit bien qu'il y a un glitch quand toutes ces conditions sont réunies :
- le bit est à 0
- il y a un front montant sur l'un des bits du bus d'adresse de la PROM
- la nouvelle valeur du bit, après changement sur le bus d'adresse, reste à 0
À suivre : changement des deux PROMs en cause.