La palette de couleurs
L'Atari 800 XL a une palette de couleurs composée de 16 couleurs de bases:
Valeur des couleurs:
0 gris
16 rouge clair (or)
32 orange
48 rouge orangé
64 rose
80 violet
96 bleu violacé
112 bleu
128 bleu
144 bleu claire
160 turquoise
176 bleu vert
192 vert
208 jaune vert
224 vert orangé
240 orange claire
Ces 16 couleurs pouvant avoir jusqu'à 8 niveaux de luminances.
Ce qui donne en tout jusqu'à 128 couleurs possibles.
Il y a en tout 5 registres de couleurs pour les playfields et 4 registres pour les players missiles qui occupent 1 octet chacun.
Le codage de la couleur se fait de la manière suivante:
Bit 7 |
Bit 6 |
Bit 5 |
Bit 4 |
Bit 3 |
Bit 2 |
Bit 1 |
Bit 0 |
C |
C |
C |
C |
L |
L |
L |
Inutilisé |
Les bits 4, 5, 6 et 7 pour le numéro de couleur (0 à 15).
Pour travailler avec la couleur 0 (le noir), il faut donc positionner les bit 4, 5, 6 et 7 à 0.
Avec la couleur 1 (le presque rouge), le bit 4 doit être positionné à 1, 0 pour les bits 5, 6 et 7.
Les bits 1, 2 et 3 pour la luminance...
Les registres de couleurs sont situés aux adresses suivantes:
704 (53266) Pour Player&missile 1
705 (53267) Pour Player&missile 2
706 (53268) Pour Player&missile 3
707 (53269) Pour Player&missile 4
708 (53270) pour Playfield 0
709 (53271) pour Playfield 1
710 (53272) pour Playfield 2
711 (53273) pour Playfield 3
712 (53274) pour Playfield 4 ou couleur du fond
Le nombre entre parenthèse est aussi un registre de couleur, il est automatiquement affecté avec la valeur du registre 7xx correspondant et ceci à chaque VBI. Cette adresse peut être modifiée, mais la couleur sera alors changée immédiatement càd là où se trouve le faisceau (donc n'importe où sur l'écran). Cependant, hormis si vous utilisez une dli ou une vbi pour faire des effets (comme pour faire des dégradés, ou pour avoir "plus" de couleurs), cette adresse ne sert à rien, puisque la valeur sera automatiquement remplacée au prochain balayage par celle contenue à l'adresse 7xx correspondant.
En basic, on peut modifier la valeur des registres playfields grâce à la commande SETCOLOR:
SETCOLOR registre_couleur, couleur,luminance.
(Couleur*16) + luminance sera équivalent à la valeur à stocker dans le registre de couleur correspondant.