87Fermer89
DEATHLe 13/05/2021 à 14:05
SCPCD (./87) :
Pour ton code "avant", je ne suis pas convaincu que les accès en byte des registre 16-bit soient correctement géré dans la jag.
En tout cas, dans le doute je déconseille fortement de faire ce genre "d'optimisation" smile

c'est le code que j'avais repris de Tyrant, qu'il avait peut être repris de Zerosquare (mais pas sûr)

Mais il y a une autre subtilité...

Le code en question ne fonctionne QUE si l'image à afficher est sur un YPOS paire.
Si on veut afficher une image avec un YPOS impaire, il faut inverser le traitement des trames....

Le code ressemble donc à :
Si ligne (trame) paire et YPOS paire : DATA = DATA
Si ligne (trame) impaire et YPOS paire : DATA = DATA+IWIDTH

Si ligne (trame) paire et YPOS impaire : DATA = DATA+IWIDTH
Si ligne (trame) impaire et YPOS impaire : DATA = DATA

MAIS, il y a une autre subtilité....
je ne sais pas à quoi c'est dû, peut être un bug (encore) de la Jaguar), en fonction des valeurs de VBB, VBE, VDE, VDB... que sais je encore
Il peut y avoir un décalage paire-impaire dans les première valeur de YPOS...

Dans mon code actuel qui reprend le code d'origine, sans toucher aux registres vidéo "sensible" et en utilisant les valeurs Atari pour le centrage de l'image, pour toutes les valeur de YPOS comprise entre 0 et 32 (environ je crois), les trames sont systématiquement inversées comme si YPOS était toujours impaire.

L'affichage en entrelacé n'est déjà pas évident... mais la c'est le casse tête chinois !!