logo

Ces pages ne sont plus mises à jour !

Mais restent ici quand même. Attention: tout est vieux, et parfois faux. Tout se passe maintenant sur la wiki NeoGeo Development Wiki

Préface et documents
Architecture
Spécifications résumées
Architecture, Memory Map
BIOS
Structure des ROMs
Structure des CDs
Registres RAM
Vidéo
Système vidéo
Les palettes
Le fix
Les sprites
Audio
Système audio
Communication Z80
YM2610: ADPCM et SSG
Les pistes CDDA
Developpement
L'ASM 68K
Outils
Devkit ASM
Erreurs courantes
Portage MVS / NGCD
Electronique
Electronique
Cartouche flash MVS
Problèmes de lecteur CD
Productions
Astrosmash
Unleashed
Knackiballs
Bootloader et cable NGCD

Test MVS #01

BIOS AES/MVS

Le hardware MVS possède 4 ROMs intégrés:
LO de 128K, qui sert uniquement de lookup table au GPU pour les zooms.
SFIX de 128K, Tiles du fix par défaut (voir système vidéo).
SM1 de 128K, Programme Z80 (driver son, dont l'utilité est contestable) .
SP1 de 128K, Programme 68K résident, qui est placé à partir de $C00000.

Comme dans de nombreux systèmes, le BIOS met à disposition des fonctions que les jeux peuvent appeller.
Ceci évite à tous les jeux d'avoir leurs propres routines pour réaliser des taches courantes.

Le BIOS AES et MVS contient la ligne de texte suivante: "NEO-GEO SYSTEM PROGRAM VERSION 0 COPYRIGHT BY SNK OF AMERICA"

$C00402-$00C00432: Souvent appelé au tout début du programme, part à $C11002, vide les RAMs et démarre le son.
$C00438: Afficher l'écran de démarrage (part à $C11646).
$C0043E: Réponse à une IRQ2 ?
$C00444: Démarrage ?

Typiquement, le jeu qui démarre appelle $C00438 à chaque VBlank tant que le bit 7 de $10FD80 est à 0.
Le bit 7 de $10FD80 est mis à 1 lorsque que le boot screen est terminé.

$10FD83: 0:Machine Japonaise, 1:Machine US
$10FDAE: A mettre à 0 pour forcer l'initialisation complète au démarrage. (Pas obligatoire ?)
$10FE80: A mettre à $FF pour activer le debug mode

$C0044A: Place des données relatives aux joysticks en RAM (souvent appelée pendant un VBlank):

Joystick1 :
$10FD95 et $10FDAC: valeur directe comme lue sur REG_P1CNT et REG_STATUS_A
$10FD96: valeur précedente de $10FD95 (permet de comparer)
$10FD97 et $10FDAD: différence entre la valeur actuelle et la valeur précedente (permet de detecter un changement d'état)
$10FD98: bit à 1 chaque demi-seconde au bout d'une seconde si le bouton correspondant reste appuyé.

Joystick2:
$10FD9B et $10FDAC valeur directe
$10FD9C: valeur précedente
$10FD9D: différence
$10FD9E: répetition

$C00450: ?
$C00456: Retour de sous-routine ?
$C0045C: Retour de sous-routine ?
$C00462: Retour de sous-routine ?
$C00468: Met Select et Start du joystick 1 dans D0 ?
$C0046E: ?
$C00474: ?
$C0047A: "Swap in ROM Vector Table" et reset ?
$C004C2: Rapport avec le fix
$C004C8: Rapport avec les sprites
$C004CE: ?
$C004D4: Gestion de la carte mémoire ?

Le programme 68K du bios MVS (sp-e.sp1) désassemblé est téléchargeable, si quelqu'un veut y jeter un oeil.

BIOS CD 1 et 2 (Front et Top loading)

CREDITS
SOFTWARE NORIYUKI HIGASHI (Mr.Noric !)
HARDWARE MOTOO YOKOYAMA TOSHIYA YAHARA
GRAPHICS OTIAI
SPECIAL JON GUSO
THANKS CURRY SHIMIZU
SNK ALL STAFF

 

BIOS CDZ

 

Le BIOS NeoGeo CD est physiquement compris dans un seul ROM, qui copie les données graphiques et audio vers les mémoires appropriées par DMA (voir plus bas).

$C00552: Charger fichier (écran avec le singe qui jongle)
$C00564: Charger fichier (sans animation)

Pour charger un fichier, mettre l'adresse du bloc d'infos dans A0. Format du bloc:
Nom du fichier, terminé par 0
Bank (byte)
Remplissage (byte ?)
Offset (long)


$C00546: Transfert vers un type de mémoire:

$10FEF8: Source (Long)
$10FEF4: Destination (Long)
$10FEDA: Zone (Byte, 0=PRG, 1=FIX, 2=SPR, 3=Z80, 4=PCM, 5=PAT)
$10FEFC: Taille (Long)
$10FEDB: Bank (Byte)
($10FEF4 est auto-incrémenté par la taille, ce qui permet de faire des copies successives vers la même zone).

$C0055E: Retour au lecteur CD

$10F690: secteurs chargés (Long)
$10F694: nombre de secteurs à charger (Long)

Lecture CD Audio:

$10F6F6: cdda_cmd (neocd.c de Raine) byte
$10F651: test_end_loading (neocd.c de Raine)

neocd.c: cdda_cmd()
last_cdda_cmd = data; last_cdda_track = track; do_cdda(data,RAM[0x10f6f8 ^ 1]);
Si data =< 7: do_cdda(data,RAM[0x10f6f8 ^ 1]);

0,1,4,5: Play
6,2: Pause
3,7: Resume

int track = RAM[0x10F6F9]; RAM[0x10f6f6 ^ 1] = data;

$C1F3CA = palette ?

Bit 7 de $10E003 = 1: Debug

footer
symbol symbol symbol symbol symbol