Voici le premier volet d'une série de dossiers très axés techniques. Pour cela, nous allons partir à l'exploration de la carte mère de la Megadrive qui est une console assez "facile à comprendre". N'ayez pas peur, il n'y a rien inaccessible dans toutes ces explications et vous verrez qu'au finale, les descriptifs techniques de vos machines préférées n'auront plus de secret pour vous.
Aujourd'hui nous allons nous balader au coeur d'un circuit graphique (VDP pour Video Display Processor) utilisé pour les consoles SEGA de la SG-1000 à la Saturn : le Texas Instruments TMS9918 dans son mode Megadrive. La particularité de cette version est qu'elle à été intégrée avec un autre processeur (pour le son) dans un seul et unique bloc (on appel cela le "on a chip") donc, inutile de chercher la puce telle qu'elle existe vraiment, vous ne la trouverez pas sur la carte mère de la Megadrive !
Le VDP de la Megadrive propose 2 plans de scrolling (défilement d'une image en vertical ou en horizontal), 1 plan de texte (en mode fixe) ainsi qu'un plan pour les sprites (éléments mobiles d'un jeu comme le héro, par exemple).
Pour définir le processeur graphique, on pourrait commencer par faire une analogie avec une table de montage vidéo pour les films. En effet, prenons l'exemple d'une petite table basique avec 4 voies de mixage reliées chacune à 3 magnétoscopes (oué, on est rétro ou on l'est pas) qu'on appellera A, B & C et une caméra (appelée D) filmant en direct un acteur sur fond vert.
Les cassettes VHS sont insérées dans le magnétoscopes par un technicien (le processeur) suivant une liste (le programme) lui indiquant d'aller chercher ces dernières dans une armoire de classement (la cartouche).
Chacune de ces machines envoie un plan vidéo unique représentant une partie d'un tout, matérialisé par le mixage final des 4 sources par la table de montage (le rendu finale sur votre téléviseur).
Les plans de scorlling et de texte sont appelés Planes (respectivement 1, 2 et Window) et correspondent, dans notre petite analogie, aux magnétoscopes A, B et C, la caméra D représentant le plan de sprites animés.
Le VDP de la Megadrive fonctionne de la même manière que cet ensemble à la différence près que magnétoscopes, caméras, armoires de classement, techniciens et acteurs sont remplacés par des mémoires, des sprites, des processseurs et un programme !
Mais avant de commencer, je vous propose une petite initiation très rapide au binaire pour que la suite de ce dossier vous soit plus aisée :
Le binaire comprend 2 valeurs (le 0 et le 1). Comme pour un interrupteur électrique, on pourrait attribuer comme qualificatifs à ces deux états "éteint" et "allumé". Ces valeurs sont nommées "bits" (contraction de binary digits). On regroupe généralement ces bits dans des "mots binaires" de 8bits (mais cela peut être plus ou moins) que l'on nomme des "octets".
On se retrouve donc avec des suites de 8 bits dans ce genre : 10100101. Le bit de droite est appelé le "bit de poids faible" (LSB en anglais) et celui de gauche se nomme "bit de poids fort" (MSB en anglais).
Quelque soit la longueur du mot binaire utilisé, le bit de poids faible vaux toujours 1 si il est à l'état "allumé" (soit à 1) et 0 si il est "éteint" (donc à 0) . Les bits suivant valent toujours le double de la valeur du bit précédent. Dans le cas d'un mot de 8 bits les valeurs sont 128--64--32--16--8--4--2--1. Additionnés tous ensemble ces valeurs donnent 255, ce qui signifie qu'on peut compter jusqu'à 255 avec 8bits en partant de 0 (si tous les bits du mot sont à 0, le mot vaut 0) soit 256 valeurs.
Notre mot exemple étant 10100101, sa valeur est de 128+0+32+0+0+4+0+1 soit 165 !!!
Comme je l’expliquais au dessus, ici, on n'utilise pas de cassettes VHS mais des mémoires comprenant des informations numériques. Dans le cas de ce processeur précis (le VDP de la Megadrive), c'est la mémoire vidéo qui fait office de stock à données et ici, on y stockera que des images !
La mémoire du Texas Instruments TMS9918 étant de 64Ko, ce chiffre se comprend comme ceci :
- en binaire, et en raison de la base de calcul utilisée, un kilo ne correspond pas à 1000 mais à 1024.
- 1 Ko = 1024 octets soit 1024*8 bits = 8192 bits
- 64Ko = 64*8192 bits = 524288 bits ou 65536 octets.
Les images stockées dans cette mémoire sont découpées en plein de petits morceaux, nommés "tiles", de dimension 8*8 pixels (donc 64 pixels en tout). Chacun des pixels composant la tile possède une couleur bien à lui. Cette couleur est fournie par 4 palettes de 16 variantes chacune pour un total de 64 couleurs disponibles affichables simultanément. Pour simplifier l'utilisation de ces dernières, les concepteurs du VDP les ont réparties dans 4 banques internes et codées sur 4 bits (donc 16 valeurs possibles en comptant le 0). Il faut comprendre ici que chaque plan d'image du processeur possède une palette bien à lui.
Le plan de sprites permet l'affichage simultané de 80 de ces derniers avec une résolution maximale de 32*32 pixels (4 tiles * 4 tiles).
4 bits par pixels, 64 pixels par tile (soit 32 octets de mémoire utilisée par tile puisqu'on peut donc stocker 2 pixels dans un octet) et 65536 octets disponibles dans la mémoire du processeur, on arrive à 2048 (65536/32) tiles stockables simultanément dans les 64Ko offert par le TMS9918 !
Le résolution de la Megadrive étant de 320*240 il faut horizontalement 40 tiles (320 pixels de large divisés par les 8 pixels d'une tile) et verticalement 30 tiles (240 pixels de haut divisés par les 8 pixels d'une tile) pour recouvrir complètement l'image.
Il est à noter que la séquence d'affichage des tiles par le processeur commence en haut à gauche de l'écran pour se finir en bas à droite.
Mais alors, pourquoi utiliser cette technique, visiblement assez compliquée, au lieu de simplement encoder une image et la restituer pixel par pixel ?
L'explication se trouve au niveau des banques de palettes de couleurs. Vous vous rappelez, on a apprit que le VDP en possédait 4 de 16 couleurs chacune ? On a aussi appris qu'on appelait la couleur grâce à un mot de 4 bits ? Et bien ce mot ne correspond non pas à la couleur, mais à la ligne d'information de la couleur dans la palette. Cette ligne comprend le code de la couleur (en hexadécimale) qui sera envoyé au circuit d'affichage. Ces informations étant codée en dur dans le processeur, elle n'ont pas besoin d'être chargées et ne tienne pas de place dans la mémoire vidéo...
Les couleurs sont codées en 3*4 bits (soit 12 bits) selon la méthode RGB (red, green, blue soit rouge, vert, bleu) selon cette formule :0xBGR. Le blanc, par exemple se nomme 0xFFF et correspond en binaire à 1111-1111-1111.
Vous avez donc compris que cette technique permet de diviser la taille mémoire d'un pixel d'une tile par plus de 2 par rapport à si le pixel avait été codé directement et de manière indépendante. Ingénieux non?
Voilà, vous savez à peu près tout ce qu'il y a d’intéressant à savoir sur ce processeur. Le reste étant vraiment d'ordre très technique et utile principalement aux développeurs, nous n'irons pas plus loin dans l'exploration de cette puce.
Maintenant, vous savez comment est géré le stockage, l'affichage et l'utilisation des plans scrolling/fixe/sprite. Vous en savez aussi un peu plus sur le bianaire donc, vous êtes prêts pour passer à l'étape suivante de l'exploration de la carte mère de la Megadrive qui se fera par l'explication du fonctionnement du processeur centrale : le Motorola 68000.
Dernière édition par fafy le Lun 18 Mai - 9:24, édité 4 fois