Les palettes

Les palettes servent à définir quelles seront les couleurs affichables dans un tile. Elle sont constituées de 16 entrées, la première (zéro) étant la transparence.
Une palette est attribuée à un ou plusieurs tiles, ils ne peuvent donc contenir que les 15 couleurs de celle-ci.

Les palettes ne sont pas stockées en VRAM, mais dans une RAM séparé accessible directement depuis le 68K.
Elle débute à $400000 et s'adresse par octets.

Il y a 256 palettes de 16 entrées (15 couleurs).
Chaque couleur est définie sur 16bits, avec 5 bits pour chaque couleur primaire et un bit commun à toutes (LSB inversé).

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
F r v b RRRR
VVVV
BBBB

Ce format simplifie beaucoup l'écriture en hexadécimal.
Le premier nibble (Frvb) peut être constitué de tête et importe peu sur la couleur, les trois suivants sont les composantes rouge, verte, et bleue.
Le bit 15 sert à rendre la couleur légèrement plus foncée.

Exemples de couleurs primaires et secondaires:

Rouge pur
#$4F00
Vert pur
#$20F0
Bleu pur
#$100F
Jaune pur
#$6FF0
Cyan pur
#$30FF
Magenta pur
#$5F0F
Noir pur
#$8000
Blanc pur
#$7FFF

Pour obtenir l'adresse de la première couleur d'une palette n, on peut simplement utiliser ($400000+(n*32)).

 

Contraintes sur les couleurs

Les tiles du fix ne peuvent utiliser que les palettes 0 à 15, soit les 256 premières couleurs.
Les sprites peuvent utiliser toutes les palettes (0 à 255), soit toutes les 4096 couleurs.

La toute première couleur, la couleur 0 de la palette 0 ($400000) sert de réference pour la sortie vidéo.
Les écrans n'apprécient pas si elle est différente de $0000 ou $8000 (les émulateurs s'en foutent).
Ce genre d'image (photo à gauche) est typique d'une réference pas noire.

Pour fixer la couleur du fond, il faut utiliser la couleur 15 de la palette 255 ($401FFE), la toute dernière, qui est la couleur du backdrop.
C'est celle qui sera affichée si il n'y a rien à dessiner à un endroit de l'écran.