Regarde cet exemple, j'ai ajouté une boucle qui modifie VDE toutes les secondes en passant de 510 à 512, rien d'autre.
(oui je pourrai faire ça au joypad mais il faudrait faire une routine, c'est dans une autre langue, faut se renseigner la veille, tout ça....)
Quand VDE passe à 512 l'image remonte d'une ligne mais la 1ère ligne (blanche) n'est pas affiché (à la place c'est BG qui est affiché).
Je résume :
Je n'utilise pas de branchobjet pour gérer le démarrage de l'OP
J'utilise des valeurs de synchro que j'ai calculé et qui me semble juste (en supposant qu'elles se produisent bien au moment où je crois...)
VP = 523
ça je n'y touche pas, c'est la valeur initialisée par le BIOS. On est bien d'accord que ce registre n'indique pas à quel moment se termine VP, mais sa longueur en demie ligne (+1 puisque le compte démarre à zéro)
En NTSC 242p il y 524 demi lignes (262 lignes) donc 523 pour VP. VP se termine à la fin de la 524ème ligne
Je ne touche pas non plus à VEE qui normalement est correctement initialisé à 6 par le BIOS
Les registres suivant indique à quelle ligne ils sont actif et sont comptés à partir de 0
VS=518
VS se produit 3 lignes avant VP (6 demi ligne). 524-6=518
Le BIOS de la Jaguar initialise VS à 517. Suivant ma compréhension du fonctionnement des registres cette valeur n'est donc pas bonne et se produit 1 demi ligne trop tôt.
VBE=28
Le Vertical Blank se termine à la demi ligne 28. C'est la norme NTSC. En fait la norme c'est la ligne 21 donc 42 demi ligne, mais il faut retirer 1 car la norme NTSC compte les lignes à partir de 1 et il faut retirer 12 demi lignes car La norme compte à partir de la fin de la dernière ligne affiché alors que la Jaguar compte à partir de la fin de VS
Le BIOS initialise à 24
VDE=26
Normalement ça devrait être 28, mais comme l'OP doit préparer une ligne à l'avance...
Le BIOS initialise à 46 mais il doit surement le modifier plus loin
VDE=510
Normalement il devrait s'arrêter à la ligne 512 car la dernière ligne visible est 510, mais si je mets 512 la 1ère ligne visible de l'objet n'est pas affiché
Le BIOS initialise à 496 pour la version K et FFFF en version M. Pour la version K je pense qu'elle est également modifier plus loin dans le BIOS.
VBB et VEB=512
C'est la ligne ou commence la pré equalisation vertical et où commence également le blanking vertical.
Le calcul se fait en partant de VS qui à lieu à la ligne 518. VBB et VEB on lieu 6 demi lignes avant VS donc 518-6=512
Le BIOS initialise VBB à 500 et VEB à 511
L'affichage fait donc en tout 242 lignes, l'objet à afficher fait 240 lignes
Donc pour centrer l'objet je l'affiche une ligne plus bas. L'affichage commençant à la ligne 28, je met YPOS à 30...
Sauf que dans ce cas l'objet est affiché une ligne trop bas (donc à 32), je dois donc mettre YPOS à 28 pour qu'il commence à la ligne 30...
MAIS, si je change juste VDE, que je le met à FFFF ou même juste égale ou supérieur à VBB, alors l'objet commence à la bonne ligne (YPOS correspond bien à VC) mais sa 1ère ligne n'est pas affichée...
Fichier joint : PRO.COF