Structure des ROMs

Dans les classiques romsets zippés qui fonctionnent avec les émulateurs, on retrouve les différents ROMs nommés depuis ceux de la cartouche d'origine.

Les premiers chiffres correspondent au numéro du jeu (Le "NGH Number"), la lettre indique le type de données:

Les P contiennent le programme pour le 68K (souvent qu'un seul).
Les C contiennent les données graphiques pour les sprites.
Le S1 contient les données graphiques pour le fix (qu'un seul de 128ko).
Les V contiennent les samples et les tables pour les musiques.
Le M1 contient le programme pour le Z80 (qu'un seul de 128ko).

Par exemple, Metal Slug 2 MVS possède 4 C de 8Mo, 2 V de 4Mo, un P de 1Mo, l'autre de 2Mo (forcément bankswitché), un S, et un M.

Les ROMs P sont des binaires 68K classiques, mais byteswappés (octets inversés par paires).
Ils commencent bien sûr par la vector table, pour rappel:

$00: Valeur de SP, conseillée à $0010F300 (fin de la RAM utilisable)
$04: Valeur initiale de PC (presque toujours $00C00402, entry point dans le BIOS)
$08: Bus error (2),Address error (3),Illegal Instruction (4),Divide by 0 (5)
$18: CHK Instruction (6),TRAPV Instruction (7),Privilege Violation (8),Trace (9)
$28: Emu(1010),Emu(1111),Reserved,Reserved
$38: Reserved,Reserved,Reserved,Reserved
$48: Reserved,Reserved,Reserved,Reserved
$58: Reserved,Reserved
$60: Spurious Interrupt(24)
$64: Level 1 (VBlank)
$68: Level 2 (IRQ2), Level 3...
$80: TRAPs

$0100: Chaine "NEO-GEO",$00
$0108: Numéro de série 16 bits (attribué par SNK)
$010A: ?
$010E: "Pointer to debugging switch" ?
$0112: ?
$0114: $01 = Pas de logo au démarrage
$0115: Numéro du premier sprite pour le logo NeoGeo (utilisé par le BIOS pour afficher le bootscreen)
$0116: Pointeur vers la configuration japonaise
$011A: Pointeur vers la configuration américaine
$011E: Pointeur vers la configuration européenne

$0122: Entry point du programme (un JMP sera le bienvenu)

Suivent tout un tas de "Security Codes" pas très clairs.. Certains jeux protégés ont peut être des empreintes inscrites ici

$0200 (souvent): Config du BIOS (nom du jeu, paramètres configurables comme le nombre de vies... Format encore indeterminé).

Fichier source de base à télécharger.