|
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.
 |
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.
|
"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.
|
|