Démystification des ROMS MAME

Article trouvé sur le net et traduit de l’anglais afin de comprendre ou/quoi/et comment télécharger les ROMS d’arcades afin de les faires tourner sur un émulateur.

Démystification des ROMS MAME

Beaucoup de gens ont une méconnaissance des ROMs pour le logiciel MAME.

  • “J’ai mis a jour ma version de MAME et plus aucun jeux ne fonctionne”
  • “J’ai téléchargé la ROM xxxx depuis le site web yyyyyy et ca ne fonctionne pas”
  • “Pourquoi c’est plus compliqué que les ROMs NES et SNES ?”

Il y a quelques conceptions et des terminologies qu’il faut connaître pour comprendre le monde de l’émulation et tout cela aura un sens.

Qu’est-ce qu’une ROM?

Un fichier ROM est le code enregistré depuis un chipset (circuit électronique) après avoir été “dumper” (copié). Pour des systèmes simple comme les consoles de jeux NES, SNES ou megadrive, le jeux entier provient de l’extraction des données des cartouches de jeux. Dans un seul fichier l’émulateur à ainsi toutes les données nécessaires pour pouvoir le lancer.
Les jeux d’arcade sont un peu plus compliqué car il existe beaucoup d’IC et beaucoup de ces IC contiennent le code et les données nécessaires au bon fonctionnement du jeux. Chaque partie doit être extraite séparément et l’ensemble des ces extractions sont nécessaires pour le bon fonctionnement de l’émulation. Le fichier résultant est ce que l’on appel communément une ROM MAME, une archive zip (ou 7z) contenant tous les fichiers pour le jeux d’arcade. c’est ce que l’on appel une ROM set.

Qu’est ce que les parents, les clones que sont-ils ?

Au cours des dump les programmeurs se sont rendu compte que beaucoup de fichiers dump était les même que d’autres jeux et dans beaucoup de cas seulement peut d’IC étaient différentes. Ces jeux sont des variations d’un autre et c’est alors que le concept de parent/clone est né. Le parent étant le jeux le plus ancien et le clone le plus récent par rapport au parent. Il y a donc logiquement plusieurs clone pour un même parent.

Et les Split/Merged ROM sets?

A l’origine les ROMS était organisé de façon simple, chaque fichier ROM pour un jeu était enregistré dans un fichier zip du nom du jeux, un jeux= un fichier simple ! Mais auparavant l’espace disque coûtait chère. il était considéré non optimisé d’enregistrer pleins de copies d’un même fichier. le concept de split ROM est alors né. un “set parent” devrait contenir tous les fichiers ROM requis pour être lancé en temps que version ‘maître’ d’un jeux, les autres jeux basé sur ce jeux sont nommé un split. un split set contient en fait que les fichiers ROM qui sont différents du parent set.
ex. Pour jouer à pac-man par exemple il faut le puck-man set (le parent) et pac-man set (le split)
ce qui signifie que pour lancer un jeux il faut 2 jeux… le parent et le split.
MAME comprend la partie split et va rechercher tous les fichiers ROM requis, en premier lieu dans le zip du ‘split set’ ensuite dans le ‘parent set’. Du moment qu’il trouve les bons fichiers quelque part il pourra lancer le jeux voulu. La nouvelle évolution des cette façon de faire était : “Si MAME recherche dans les parent set pour tous ses fichiers ROM, pourquoi s'embêter à séparer les clones ?” les Merged set sont né. un set mergé contient donc tous les fichiers pour tous les clones d’un jeux parent.

Qu’est ce que les BIOS Sets?

Beaucoup de jeux d’arcade ont été écrits pour le même système, avec des changements pour l’usage en arcade. les exemples les plus populaires sont mega-tech (megadrive), playchoice (nes), neogeo. ces systèmes contiennent une unité de base et une cartouche électronique de type plugin pour les jeux.
Les fichiers pour chaque jeux ont besoins des fichiers pour le système, un peu comme les jeux parents/clones (mais les jeux n’ont pas besoin d'être basé les uns sur les autres). Pour sauvegarder de l’espace disque et surtout parce que logiquement (et physiquement) les jeux sont groupés de cette façon dans la réalité. les fichiers ROM pour la base peuvent être groupé dans ce qu’on appel le BIOS Set.
Si l’on a un ‘split rom set’ alors il y aura séparément les ‘bios sets’. il faudra du coup peut etre 3 fichiers pour avoir un jeu en état de fonctionnement.
ex. pour jouer à ‘King of fighters 10th anniversary’ on a besoin du ‘Neogeo set’ (le bios), de ‘king of fighters 2002’ (le set parent) et de ‘King of fighters 10th anniversary’ (le set clone)

C’est quoi les devices ?

Les ‘devices’ sont un concept introduit par le logiciel MAME. cela sert à reconstituer des fonctionnalites specifiques d’une manière standard. Les ‘devices’ sont utilisés de manière programmatique afin de créer des drivers plus facilement. De temps en temps ces ‘devices’ utilise du code de chipsets au travers de plusieurs jeux (tout comme les BIOS le font). Ces Devices set ne sont pas classé commes les bios, les parents ou les clones.
Ex. pour jouer a ‘galaga’ il faut ‘galaga’ (le parent), ‘Namco51xx (un device) et ‘Namco54xx (un device).

C’est quoi un CHD?

Les nouvelles machines d’arcades (et les consoles supporté par MESS) ont beaucoup plus de données à enregistrer que les jeux classiques, il y a eu l’introduction des disques durs, des CD (ou des DVD et laserdisc) pour le stockages de données et l’usage de ROM simple pour démarrer et charger les systèmes. Ces stockages de masse sont supporté par MAME via l’usage de fichiers CHD.
Les CHD ou “Compressed Hunks of Data” sont déjà compressé et ne sont pas inclu dans un fichier zip. Ils sont placés dans le même répertoire que la ROM pour pouvoir être pris en compte par l'émulateur.

Les Samples

Les Samples sont des fichiers sons digitalisés. Certains jeux en ont besoin, en plus des fichiers ROMs, de maniére à obtenir des sons plus authentiques… Par exemple, les routines de sons pour le jeu Donkey Kong Jr. ne sont pas complétement émulés. Si vous y jouez, sans les samples correspondants, les sons « sauter » et « grimper » manqueront, ainsi que les musiques jouées en inter-levels Il y’a une 40aine de jeux qui nécessite des samples.

Mon jeux ne fonctionne pas.

Vous avez probablement eu ces ROMs depuis un site qui n’a pas connaissance ou qui se fiche du type de ‘rom set’ qu’il possède. Vous avez telecharger certainement une‘ rom set’ pour une version précise de MAME assumant que cette version est compatible avec les versions courante de l'émulateur.
Un grand nombre de fichier ROM ont été mal dumpé au début de la scène de l’émulation, tout le monde était nouveau dans ce jolie monde et plein d’erreurs ont été commises. Les émulateurs ont été écris pour utiliser les meilleurs dumps disponible et MAME ne fait pas exception. Au cours du temps de nouveau dumps ont été réalisé en lieu et place des mauvais, les mauvais noms donnés ont été identifié, les conventions de nommage ont changé. En connaissance de cause les développeurs de MAME ont mis a jour les ‘rom set’ avec les bons fichiers, le renommage à pu être réalisé au fur et a mesure des améliorations. Les ‘split set’ ont ensuite été introduits et toutes les ROM ont été réorganisé (encore !). Les ‘bios set’ sont ensuite apparu et une nouvelle réorganisation à du être réalisé. Et enfin les fichiers ‘devices’ ont été créé générant alors une nouvelle réorganisation de l’ensemble. Le travail est toujours en cours !!! De nouveau jeux sont ajouté, les mauvais fichiers sont remplacé, les fichiers renommés, les set réorganisé. A chaque fois que cela se produit le ‘rom set’ pour un jeu peut ne plus fonctionner. donc pour répondre a la question :

  1. le ‘rom set’ est trop vieux
  2. Vous avez une ROM pour la version correct de l’émulateur mais il manque l’un des set Parent/Bios/device correspondant au jeu.

La solution la plus simple est de posséder une version complète des ‘rom set’ pour la dernière version de MAME. Faire ça est illégale mais…. google est ton ami...

Du coup c’est quoi le mieux ? Split ou merged ?

La réponse n’est pas si simple, cela dépend de l’environnement dans lequel vous êtes et ce que vous voulez faire des ROMs que vous avez.

  • Si l’espace disque est un problème, vous pouvez gagner 20GB en utilisant les ‘merged set’ au lieu des ‘split set’, mais le frontend servant a lancer mame ne sera peut etre pas en mesure de dire si vous avez un jeu dispo si c’est un clone.
  • Si vous voulez supprimer des ROMS qui ne vous servent pas sans cassez une autre alors la version ‘non merged set’ est la pour ca mais celle-ci prend enormement plus de place (500GB)
  • Si vous désirez quelque chose entre les deux un ‘split set’ est pour vous mais supprimer une rom parent, un bios, un device rendra impossible le lancement des jeux basé dessus….

Les ‘split set’ sont les plus disponibles sur les sites web de l’émulation.

C’est quoi une liste de logiciel ?

Avant MAME v0.162, MAME avait une application appelé MESS (Multi Emulator Super System) qui était la pour faire fonctionner les consoles, ordinateurs, consoles portables, contrairement a MAME qui était la pour l’arcade uniquement. La version 162 a vu les 2 applications fusionner et le nom MESS a disparu.
Afin d’effectuer l’association avec le bon émulateur il y a donc eu l'émergence d’une liste pour les ROM et une liste pour les CHD.
Dans le monde de l’émulation les jeux d’arcades sont un cas spécial et complexe. Chaque jeux d’arcade ou presque est un système propre. Les ROM d’arcade sont packagé dans des fichiers zip qu’il ne faut surtout pas renommer car le nom du fichier est l’identifiant permettant à l'émulateur de reconnaître le jeux et la plateforme. Il y a encore des systèmes d'arcades que MAME n'arrive pas a faire tourner (on appel ca les jeux non-MAME)

Conclusion

Il y a donc :

  • Non mergé : l’archive zip contient tous le nécessaire (et notamment les ROM parent).
  • Split : les jeux ont besoin des rom parent pour fonctionner.
  • Mergé : les ROM sont avec les parents, on se retrouve avec plusieurs jeux dans un fichier zip. (non supporté par retro-arch).

Les ROMs pour l’arcade :

  • sont toujours dans des zip
  • l'émulateur lance directement le zip
  • les noms ne doivent jamais être renommé

Les ROM ont des versions par émulateur, une rom qui marche avec mame2003 peux ne pas fonctionner avec mame2014 ou fba.

Les codes des ROMs

A force les ROM ont été répertoriés et classé. Le classement à été basé sur le standard "GoodRom" ci dessous.

................: COUNTRY CODES ::...............
(1) Japan & Korea  (4) USA & BrazilNTSC
(A) Australia           (J) Japan
(B) non USA (Genesis)  (K) Korea
(C) China             (NL) Netherlands
(E) Europe            (PD) Public Domain
(F) France             (S) Spain
(FC) French Canadian   (Sw) Sweden
(FN) Finland            (U) USA
(G) Germany           (UK) England
(GR) Greece           (Unk) Unknown Country
(HK) Hong Kong          (I) Italy
(D)  Dutch            (Unl) Unlicensed

...............: STANDARD CODES ::...............
[a?] Alternate       [p?] Pirate
[b?] Bad Dump        [t?] Trained
[f?] Fixed           [T-] OldTranslation
[o?] Overdump        [T+] NewerTranslation
[h?] Hack            (-) Unknown Year
[!p] Pending Dump    [!] Verified Good Dump
(M#) Multilanguage (# of Languages)
(###) Checksum       (??k) ROM Size
(Unl) Unlicensed

................: SPECIAL CODES ::...............
--Gameboy 
[C] Color
[S] Super
[BF] Bung Fix
--Super Nintendo
(NP) Nintendo Power
(ST) Sufami Turbo
(BS) BS ROMs
--Atari
(PAL) Euro Version
--Genesis
(1) Japan
(4) USA
(5) NTSC Only
[R-] Countries
(8) PAL Only
(B) non USA
[c] Checksum
[x] Bad Checksum
--GBA
[hI??] Intro hacks
[f_?] EEPROMV124 fix
--Coleco
(Adam) ADAM Version
--NeoGeo Pocket
[M] Mono Only
--NES/FC
(PC10) PlayChoice 10
(VS) Versus
[hFFE] FFE Copier fmt

.............: STANDARD CODE NOTES ::............
[a] This is simply an alternate version of a ROM. Many games have been re-released to fix bugs or even to eliminate Game Genie codes (Yes, Nintendo hates that device).
[b] A bad dump often occurs with an older game or a faulty dumper (bad connection). Another common source of [b] ROMs is a corrupted upload to a release FTP.
[f] A fixed game has been altered in some way so that it will run better on a copier or emulator.
[h] Something in this ROM is not quite as it should be. Often a hacked ROM simply has a changed header or has been enabled to run in different regions. Other times it could be a release group intro, or just some kind of cheating or funny hack.
[o] An overdumped ROM image has more data than is actually in the cart. The extra information means nothing and is removed from the true image.
[t] A trainer is special code which executes before the game is begun. It allows you to access cheats from a menu.
[!] Verified good dump. Thank God for these !

Pour la france le mieux sera d'avoir un jeux avec les codes : nomDeMonJeu(F)!
Et oui les enfants ne vont pas lire ni l'anglais ni le japonais :-)

Haut de page