Le fonctionnement du hardware des Neo-Geo CD |
Toutes les versions de la NeoGeo (AES, MVS, CD) sont basées sur un processeur Motorola 68000 (68K), et un Zilog Z80 comme processeur auxiliaire, s'occupant uniquement du son. Elles possèdent toutes un BIOS, un programme qui fournit des fonctions courament utilisées par les jeux afin de simplifier certaines tâches relatives au hardware (lecture CD, gestion des cartes mémoire...). |
La NeoGeo est capable de faire le rendu d'une image de 320 par 224 pixels, avec 4096 couleurs affichables simultanément (sans tricher) sur une palette de 65536. La plupart des jeux n'utilisent que 304 pixels en largeur, laissant une marge de 8 pixels noirs à gauche et à droite. Tout le reste est considéré comme des sprites. Une règle essentielle à retenir concernant les couleurs: il n'y a jamais plus de 15 couleurs par tile (que ce soit sur le fix, ou dans les sprites), la 16ème couleur sert de transparence. Les sprites et le fix sont parametrés dans la RAM vidéo (VRAM), elle est accessible qu'à travers des registres gérés par le GPU et elle est toujours adressée en mots de 16 bits. La VRAM ne contient pas les graphismes, uniquement la position et les attributs des sprites et du fix. Les graphismes demeurent soit dans la cartouche, soit dans la DRAM sur NeoGeo CD. Il n'y a pas de framebuffer: ce n'est pas possible d'accédèr à la sortie vidéo pixel-par-pixel. Le GPU ne possède que deux "buffers de ligne" internes qui sont chargés et vidés alternativement durant l'affichage. Les sprites sont controllés par 4 zones dans la VRAM, appelées Sprite Control Banks (SCB).
Le framebuffer n'est pas directement accessible: ce n'est pas possible d'accédèr à la sortie vidéo pixel-par-pixel sur les versions cartouche. Les sprites sont controllés par 4 zones dans la VRAM, appelées Sprite Control Banks, ou SCB. |
Les sprites sont constitués d'un ou plusieurs tiles de 16x16 pixels, provenant des ROMs C (ou des fichiers .SPR sur NeoGeo CD). Chaque sprite étant limité à un tile de largeur, il faut en mettre plusieurs côte-à-côte pour créer des objets plus larges. Si les 4 sprites étaient séparés de quelques pixels, cet objet ressemblerait à ceci.
Une fonction très pratique permet de "grouper" les sprites, pour palier à la limite d'un seul tile en largeur. Notez également qu'un sprite reste un sprite. Ce n'est pas parce qu'il est lié à un autre qu'il ne compte plus comme tel.
Mélange des différentes couches, pour montrer à quoi ressemblent les sprites en bandes dans un vrai jeu: On peut voir comment son constitués les objets en désactivant les sprites un par un dans les "screenshot factory" de certains émulateurs, comme WinKawaks. On peut aussi voir qu'ils servent aussi à constituer les fonds. Remarque: Il est fréquent de voir des graphismes qui ne sont jamais affichés à l'écran.
|
Sur NeoGeo CD, le chargement des données initiales est renseigné par un fichier texte (IPL.TXT), pris en charge par le BIOS dès le démarrage de la console. La NeoGeo CD utilise un gestionnaire de périphériques (Sanyo LC8953) très peu documenté. Il gère le DMA (traitements de masse sur la mémoire) et les interruptions. Le code, les graphismes et les sons du BIOS sont physiquement contenus dans le même ROM de 512ko. Le BIOS possède les mêmes fonctions que les versions cartouche, mais avec celles concernant le chargement de fichiers et le DMA en plus. Schéma initialement réalisé par Progfr, avec quelques modifications. |
Les palettes ne sont pas stockées en VRAM, mais dans une RAM séparé accessible directement depuis le 68K. Ce format simplifie beaucoup l'écriture en hexadécimal.
|
|