logo

 

Architecture et Memory Map

Toutes les versions de la NeoGeo 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 System ROM (BIOS), avec des fonctions différentes mais compatibles entre versions.
La synthèse sonore est assurée par un YM2610 couplé à un convertisseur numérique/analogique YM3016 (physiquement groupés avec le Z80 dans la NeoGeo CDZ).

Sans bankswitching, les cartouches peuvent contenir:

La NeoGeo CD possède seulement 7Mo de DRAM pour charger les informations depuis le CD.
Elle est capable de lire des pistes audio CDDA mais intègre toujours le synthé YM2610.

Les GPUs sont sensiblement les mêmes dans toutes les versions.

Watchdog

Les versions cartouche de la NeoGeo (version CD à vérifier) possèdent un watchdog, dont le but est de redémarrer la console si le jeu plante.
En pratique, c'est une sorte de compteur caché qui se décrémente periodiquement et qui déclenche un reset si il atteint zéro.

Dans le programme 68K, il faut donc régulièrement dire au watchdog de remettre son compteur à sa plus grande valeur, pour éviter qu'il ne redémarre la console sans qu'on le veuille.
Pour celà, il suffit d'écrire n'importe quel octet dans une adresse impaire entre $300001 et $31FFFF ($300001 par exemple).

Je n'ai pas mesuré la durée maximum avant que le compteur expire, mais elle devrait pas excéder 1 seconde.

Le plus souvent, les jeux effectuent cette opération dans l'interruption VBlank (environ 60 fois par seconde, largement suffisant).
Quand l'interruption est désactivée, il faut penser à la faire dans les boucles longues.

 

Memory Map du 68K

"Mirrored" veut dire que les contenus sont répétés pour remplir l'espace attribué.
Par exemple, la RAM ne fait que 64ko, mais elle se repète 16 fois entre $100000 et $1FFFFF. Elle s'arrête réellement à $10FFFF.
On retrouve donc les mêmes données à $100000, $110000, $120000...

Début
Fin des données
Fin du segment
Taille
Description
$000000
$0FFFFF
$0FFFFF
1Mo
ROM P1
$100000
$10FFFF
$1FFFFF
64ko
RAM (Les adresses supérieures à $10F300 sont réservées pour le BIOS) (Mirrored)
$200000
$2FFFFF
$2FFFFF
1Mo
ROM P2 (Les adresses $2FFFF0 à $2FFFFF servent pour le bankswitching sur les versions cartouche)
$300000
$3FFFFF
.
Registres RAM
$400000
$401FFF
$7FFFFF
8ko
Palettes (Indépendantes de la VRAM) (Mirrored)
$800000
$BFFFFF
8ko ?
Memory Card (ou SRAM interne sur les versions CD)
$C00000
$C1FFFF
$C7FFFF
$CFFFFF
128ko
512ko
BIOS Version cartouche (Mirrored)
BIOS Version CD
$D00000
$DFFFFF
64ko
Mémoire interne (Mirrored)
$E00000
$E3FFFF
$EFFFFF
256ko
NeoGeo CD uniquement: Zone d'upload, utilisée par le BIOS (byte access seulement en lecture, byte/word/long en écriture d'après NeoCD)
$F00000
?
$FFFFFF
?
NeoGeo CD uniquement: Accès au controleur CD et au gestionnaire de périphériques, utilisé par le BIOS

 

Architecture des versions cartouche (AES, MVS)

 

Le 68K peut "voir" tout son programme, bien sûr (ROMs P), sa propre RAM, les registres et le BIOS.
Il communique avec les autres composants par lesdits registres.

Les ROMs C et S1 (données graphiques), sont seulement visibles par le GPU, qui ira directement chercher les données dedans selon les données en VRAM.
La VRAM n'est accessible par le 68K que par le biais de registres passant par le GPU. Elle n'est pas dans sa memory map.

Il est donc impossible de génerer des graphismes au pixel près.

L'accès à la carte mémoire (AES) ou la mémoire de sauvegarde interne (MVS) se fait également à travers des registres.

Seul le Z80 a accès à son programme (ROM M1), à sa propre RAM et au YM2610 par le biais de ses ports.
Les données audio (ROMs V) ne sont accessibles que par le YM2610.

Il est donc impossible de générer des samples.

Il peut y avoir une liaison bidirectionelle sur un octet entre le 68K et le Z80 (qui reçoit une interruption à chaque écriture).

A la différence de nombreuses autres consoles à cartouche, les jeux NeoGeo ont des ROMs et des bus séparés pour chaque type de données.

 

Architecture des versions CD (Top et Front loading, CDZ)

Schéma initialement réalisé par Progfr, avec quelques modifications.

Les données chargées depuis le CD sont stockées dans 7Mo de DRAM (2Mo de programme 68K, 4Mo de sprites, et 1Mo de programme Z80, les 128ko de fix ne comptent pas).
Le chargement des données initiales est renseigné par un fichier texte (IPL.TXT) dans le CD, pris en charge par le BIOS dès le démarrage de la console.
Si le jeu contient plus de données, il faut avoir recours à des chargements pendant le jeu.

La NeoGeo CD utilise un gestionnaire de périphériques (Sanyo LC8953) très peu documenté. Il gère le DMA et les interruptions.
Contrairement aux versions cartouche, le 68K peut ici virtuellement écrire dans toutes les mémoires (graphismes, son, programme et RAM Z80) par le biais de fonctions fournies par le BIOS.

Le code, les graphismes et les sons du BIOS sont physiquement contenus dans le même ROM de 512ko.
Les différentes données sont chargées dans les mémoires appropriées au démarrage de la console.

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.

TC9296 ou IX2423 selon les modèles de blocs CD: s'occupent de l'optique et de fournir des données brutes issues du CD. Indépendant du reste de la console.
NEO-MGA: interface entre le bloc CD et le reste de la console. Permet aussi de lire les données CDDA qui transitent pendant la lecture d'une piste audio (VU-mètres dans le BIOS par exemple).
LC89515: s'occupe de la correction d'erreur et de stocker temporairement les données lues depuis le CD dans les buffers.
LC8953: gestionnaire de périphériques pour le 68K.
MC68000: Le processeur principal
SRAM: Mémoire à pile (sauvegardes)
BIOS: ROM de 512ko
DRAM: Mémoire remplie avec les données issues du CD
Z80: Processeur dédié au son
NEO-SUD: Interface 68K/Z80
NEO-VOC: Controlleur mémoire pour les samples
YM2610: Synthé audio (parfois regroupé avec le Z80 dans un "NEO-YSA" sur les versions récentes)
LC78815: Convertisseur audio numérique/analogique pour lire les pistes CDDA.
NEO-GRC: S'occupe des accès à la VRAM et de faire le rendu vidéo numérique.
NEO-SFT: Interface entre NEO-OFC (données graphiques brutes) et NEO-GRC.
NEO-OFC: Controleur de mémoire pour les données graphiques.
DAC: Réseau R/2R pour convertir la sortie numérique de NEO-GRC (couleurs) en signal analogique.
CXA1645: Encodeur RVB.

footer
symbol symbol symbol symbol symbol