Le circuit ANTIC

 

 

Le circuit vidéo

Le circuit gérant la vidéo est nommé ANTIC.

Ce circuit est capable de lire n'importe quelle zone mémoire. Du moins, si on l'autorise:ceci via le DMA Control Register qui permet ou non l'accès direct à la mémoire. 34 = enable, 0 arrêtera l'affichage vidéo d'où un écran noir.

La zone vidéo ou mémoire vidéo (c'est à dire là où se trouve l'image ou le texte) peut être retrouvée grâce au vecteur 88:

Peek(88) + 256 * peek(89)

 

La display list:

Ce circuit va lire un "programme" dans lequel on retrouve toute la structure, la définition de l'affichage. Ce programme doit être chargé dans une zone que l'on appelle la display list.

La display list utilisée peut-être retrouvée grâce au vecteur 560

En BASIC : PRINT PEEK(561)*256+PEEK(560)

 

Le langage ANTIC

Ce langage est assez simple et peut se résumer en quatre catégories d'instructions.

 

La catégorie "mode texte":

Une série d'instructions pour indiquer les modes textes:

  • 2:mode 0
  • 3:10 scan line
  • 4:caractères en couleur
  • 5:caractère en couleur, doublé en hauteur
  • 6:mode 1
  • 7:mode 2

La catégorie "mode graphique":

Une série d'instructions pour indiquer les modes graphiques:

  • 8:mode 3
  • 9:mode 4
  • 10:mode 5
  • 11:mode 6
  • 12:2 couleurs
  • 13:mode 7
  • 14:4 couleurs

  • 15:mode 8

 

La catégorie "ligne vide":

Une série d'instructions pour afficher un certain nombre de lignes vides (Cela sert essentiellement à positionner l'écran). La couleur est la même que celle du fond de l'écran:

  • 0 : une ligne vide
  • 16 : 2 lignes vides
  • 32 : 3 lignes vides
  • 48 : 4 lignes vides
  • 64 : 5 lignes vides
  • 80 : 6 lignes vides
  • 96 : 7 lignes vides
  • 112 : 8 lignes vides

Et enfin, la catégorie "saut":

Deux instructions pour faire des branchements (des sauts):

1 : sauter à une adresse.

65 : sauter et attendre l'interruption VBLANK

Ces instructions sont suivies de l'adresse de saut codée (comme d'habitude) sur 2 octets, d'abord poids faible puis poids fort.

Là où cela ce complique, c'est qu'il y a des options aux instructions modes textes et graphiques:

LOAD MEMORY SCAN (LMS): permet d'indiquer en plus de l'instruction où se trouve la mémoire vidéo. Option normalement utilisée qu'une seule fois à moins que vous ne vouliez avoir des zones mémoires différentes ou encore pour les modes 14 et 15.

Cette option est à utiliser avec l'instruction mode graphique ou mode texte.

La valeur : 64 est à ajouter à l'instruction. Cette option est suivie de l'adresse mémoire sur 2 octets (poids faible et poids fort).

Les autres options sont utiles uniquement si vous développez en assembleur. En effet, ces options vont déclencher une interruption (display list interrupt) dont le vecteur est en 512. Cette interruption va donc déclencher le programme indiqué aux adresses 512 ($200) et 513 ($201) et peut permettre par exemple de changer des couleurs.

Ces options sont:

VERTICAL SCROLLING : valeur 32

HORIZONTAL SCROLLING : valeur 16

En combinant : LMS + horizontal = 16 + 64

LMS + horizontal + vertical = 16+32+64

L'adresse 54286 ($D40E)

Cette adresse 54286 va permettre d'activer ou non le VBI(vertical blank interrupt) (Bit 7) et l'interruption sur display list (display list interrupt) (bit 6).

 

Désassembler la display list

Voici un exemple de programme basic affichant la display list:

Video.lst:Image non trouvée !

 

Effet tremblement de terre

Il y a une instruction qui permet d'afficher un certain nombre de lignes vides, ce qui permet de positionner la zone affichable de la mémoire vidéo sur l'écran.

Si vous utilisez le programme ci-dessus, vous vous apercevez que le basic met ce genre d'instruction au début de la display list (cela va permettre d'avoir un écran visible quel que soit le moniteur). Le but de cet exemple va être de modifier la première instruction pour n'afficher qu'une puis 8, puis 2, puis 8, puis ...pour finir à 8 lignes blanches qui est l'instruction d'origine pour le mode graphique 0.

Tremble.lst:Image non trouvée !

 

Les modes graphiques personnalisés

Là où cela devient très intéressant, c'est qu'il sera possible de créer un mode vidéo avec un mélange de zone graphique, de mode texte couleur, puis de nouveau de graphique, ...bref de créer un mode graphique personnel !

Il suffit d'indiquer les différents modes désirés dans la display list ! Alors amusez-vous bien !!!