Que la couleur soit !

Après avoir parcouru un tout petit morceau des débuts de l’affichage graphique des jeux vidéo dans l’article précédent, je continue ma vision personnelle de ce voyage.

Nous avions laissé les jeux vidéos sur des machines principalement dédiées à l’affichage de texte en noir et blanc. Ajoutons dans cet article un peu de couleurs.

La couleur est un vaste problème. Le premier étant que la grande majorité des moniteurs n’a pas de couleurs. C’est une époque de domination de l’écran à affichage monochrome, vert ou ocre. Mais cela existe, particulièrement pour les ordinateurs dits familiaux.

Le problème côté informatique est que la couleur est une information supplémentaire et qu’une information, on l’a vu dans l’article précédent, cela doit se stocker et donc nécessite de la mémoire.

Extrait de publicité GAI

Extrait de publicité DAI. Scanné par Frédéric Goset pour le site Abandonware Magazines

Mais la couleur est attendue, elle est même mise en avant dans les articles qui présentent de nouvelles machines. Combien de couleurs, choisies dans une palette à combien de possibilités ?

Pour offrir de la couleur en n’augmentant pas drastiquement la mémoire nécessaire, les astuces sont nombreuses et très diverses. Certaines machines n’admettent un changement de couleur que caractère par caractère. D’autres font un compromis entre taille du pixel et couleur.

La série de Amstrad CPC, au milieu des années 80, fonctionne comme cela : il y a trois mode d’affichages appelés avec grande originalité les modes 0, 1 et 2. Tous ces modes offrent le même nombre de lignes graphiques (200) mais diffèrent par leur nombre de pixels en largeur et le nombre de couleurs simultanément disponibles.

En fait, chaque ligne dispose de 640 bits de données. En mode 2, le plus précis, chaque bit représente un pixel, et la définition est donc de 640 par 200. Cependant, un bit ne code que deux informations, 0 et 1, soit deux couleurs différentes. Le CPC permet d’allouer à 0 une couleur et à 1 une autre couleur, les deux choisies parmi une palette prédéfinie.

En mode 0, chaque pixel est représenté par 4 bits. Cela donne un choix de 16 couleurs choisies parmi la même palette. Par contre, le nombre de pixel en largeur fait chuter la définition à 160 par 200.

Le mode 1 est le mode intermédiaire, et le mode par défaut dans lequel la machine s’allume : 320 par 200 et 4 couleurs.

Haute définition monochrome ou arc-en-ciel en gros pixels, ce type de choix était assez standard pour les machines de cet époque, lorsqu’elles offraient ce choix.

La couleur sur ce système n’est pas donnée directement mais passe par un concept de palette et de crayons. La palette est l’ensemble des couleurs que l’ordinateur est capable de générer vers l’affichage. 8, 16, 32 ou même 4096, cela dépend. À chaque crayon, dont le nombre est moins grand, est ensuite assigné une de ces couleurs.

Le nombre de crayons va déterminer le nombre de couleurs affichables simultanément à l’écran (hors astuce). Leur nombre réduit permet d’utiliser peu de mémoire tout en permettant d’utiliser une palette plus étendue.

Palette de 27 couleurs (combinaison des possibilités avec les composantes Rouge Verte Bleue à des valeurs nulles, moyennes, pleines). C'est la palette de l'Amstrad CPC.

Palette de 27 couleurs (combinaison des possibilités avec les composantes Rouge Verte Bleue à des valeurs nulles, moyennes, pleines). C’est la palette de l’Amstrad CPC.

Mais la stratégie des Amstrad CPC n’est pas la seule. Une autre consiste à se reposer sur la méthode des caractères semi graphiques déjà évoqués précédement et de donner aux blocs une couleur d’écriture (bloc allumé) et une couleur de fond (bloc éteint).

Ainsi, le ZX Spectrum code ses attributs de couleurs sur une grille de 32 par 24 qui correspond à son nombre de colonnes et lignes en mode texte. Dans chacune des cases de cette grille se trouve une couleur de fond et une couleur d’écriture. Le choix de couleur se fait sur une palette de 8 couleurs en mode soit normal, soit brillante, soit 16 teintes (en fait, 15, car le noir mat ou brillant se rend de la même façon). Chaque couleur peut donc être codée sur 4 bits, soit 8 bits pour les deux couleurs.

Cela donne 768 octets pour coder toutes les couleurs, ce qui est très acceptable à l’époque et très en dessous des 24ko qui auraient été nécessaire pour coder la possibilité de 16 couleurs sur chacun des pixels de la résolution graphique de 256 par 192.

Ce compromis provoque un artefact graphique bien reconnaissable. Comme les couleurs choisies sont forcément les mêmes pour un bloc graphique de 8 par 8 pixels, il arrive que la couleur d’un décors « bave » sur un élément en mouvement, ou inversement.

Exemple d'Attribute/Color clash (illustration du domaine publique disponible sur Wikipedia)

Exemple d’Attribute/Color clash (illustration du domaine publique disponible sur Wikipedia)

Je vous conseille d’aller jeter un œil à cette page avec des illustrations qui gèrent cet artefact.

Au fur et à mesure des générations, le nombre de couleurs pouvant être générées par la puce graphique va augmenter. Le nombre de couleurs pouvant être affichées simultanément aussi.

Progressivement vont être possible des modes marketés « vraies couleurs » où la palette est vaste et où toutes les couleurs sont affichables simultanément. Les modes où chaque pixels est codé sur 16 bits, pour un total de 65536 couleurs puis sur 24 bits, pour un total de 16 milions (et quelques) couleurs.

À ce stade là, la compétition entre carte graphique s’était déplacée sur un autre tableau dont je parlerai plus tard : la 3D.

Share Button

Laisser un commentaire