Zerosquare (./71) :
Je viens de voir ce qui ressemble à un bug et qui semble être présent dans toutes les routines entrelacées que j'ai pu voir (basé sur ton code à priori)
Dans le code actuel ça ne change pas l'affichage mais ça peut potentiellement faire foirer d'autres chose
J'ai eu un doute en étudiant le code et j'ai eu à priori confirmation en traçant pas à pas sous virtualjaguar
Dans la routine d'interruption VI du 68000, on vérifie si on se trouve dans la trame paire ou impaire , puis on change la ligne d'interruption VI en fonction du résultat.
Par exemple en 60Hz l'interruption se produira alternativement à la ligne 507, 506, 507, 506.... (ou une autre valeur mais paire puis impaire)
Le problème :
imaginons que l'interruption se produise à la ligne 507.
Ok, on modifie VI pour que la prochaine interruption se produise à la ligne 506 de la trame suivante.
La trame passe... pas de problème
On arrive alors à la ligne 506 de la trame suivante
On modifie VI pour que la prochaine interruption se produise à la ligne 507 de la trame suivante..... mais actuellement on est à la ligne 506...
Du coup en relâchant l'interruption à ce moment, il y a toute les chances que l'interruption se reproduise juste après en passant à la ligne 507 !!
A moins que la libération de l'interruption se passe après la ligne 507, donc que le code de l'interruption soit relativement long (+ d'une demie ligne...)
Ca ne provoque pas de bug au niveau de la gestion de l'entrelacé puisqu'on test VC pour voir dans quel trame on est mais quand même.
Sous virtualjaguar ça se confirme. J'ai un compteur qui s'incrémente à chaque interruption VI. Et bien une fois sur 2 le compteur s'incrémente de 2 au lieu de 1 se qui confirme que l'interruption à lieu 2 fois 1 VBL sur 2
Alors ? Bug ou j'ai mal analysé ?