Compiler MAME

Apprenez à personnaliser MAME et à créer VOTRE build ! Vous découvrirez tout d’abord ce que signifie le mot « compiler », et puis vous passerez aux travaux pratiques en comilant directement les sources ! Enfin, vous verrez quelques idées d’ordre général sur la structure de MAME et de ses drivers, structure quasi-identique pour l’émulation des systèmes de 1980 à nos jours.


Ecrire un driver pour les roms décryptées

Tout d’abord, vous aurez besoin des CRC de vos ROMs. Vous pourrez l’obtenir directement en utilisant cet outil :HashCalc. Assurez-vous d’avoir tous les CRC pour les différents fichiersde votre ROM. Ceci devrait inclure :

  • 1 ROM P1
  • 1 ROM P2 (souvent, mais pas toujours)
  • 1 ROM S1
  • 1 ROM M1
  • 4 ROMS V (La plupart des jeux actuels en ont 4, mais cela peut être moins)
  • 8 ROMS C (La plupart des jeux actuels en ont 4, mais cela peut être moins)

Etape 1

Maintenant que vous avez toute l’information qu’il vous faut, je vais essayer d’expliquer, ligne par ligne, comment écrire un driver.

Etape 1.1

ROM\_REGION( 0x500000, REGION\_CPU1, 0 )

Cette ligne est également obligatoire. Dans le champ indiquant 0x500000, inscrivezla taille de votre ROM P1+la taille de votre ROM P2 en MB suivie de 5 zéros.Exemple : Votre ROM P1 pèse 1Mb, ce qui vaut 100000, et votre ROM P2 pèse 4Mb, soit 400000. L’additionde ces deux valeurs donne 500000. Ne touchez pas au reste de la ligne.

Etape 1.2

ROM\_LOAD16\_WORD\_SWAP( "xxx-p1.bin", 0x000000, 0x100000, CRC(1ABCDEF2) )
ROM\_LOAD16\_WORD\_SWAP( "xxx-p2.bin", 0x100000, 0x400000, CRC(345CDEF2) )

La ligne pour la P1 est nécessaire (si votre jeu comporte une ROM P2, il la faudra aussi). Dans le champindiquant : xxx-p1.bin and xxx-p2.bin, inscivez le nomde vos ROMs P1 et P2 (quand elles sont dézippées).Dans le champ indiquant 100000 indiquez la taille (en Mb) de votre ROM P1 suiviede 5 zéros.Dans le champ indiquant 400000 indiquez la taille (en Mb) de votre ROM P2 suiviede 5 zéros.

Exemple : la ROM P1 de kof2000 pèse 1 Mb, sa taille est donc 100000.

Dans le champ où il est écrit 1ABCDEF2 indiquez le CRC de votre ROM P1 et làoù vous voyez 345CDEF2 inscrivez le CRC de votre ROM P2. Il est capitalde rentrer ces données correctement, sinon MAME ne trouvera pas vos fichiers.

Dans le champ qui indique 100000, inscrivez la taille de votre ROM P1 (en Mbsuivie de 5 zéros).

Etape 1.3

NEO\_SFIX\_128K( "xxx-s1.bin", CRC(AAEF740C) )

Cette ligne est encore et toujours obligatoire ! Dans l’espace où il est écrit :xxx-s1.bin écrivez le nom de votre ROM S1 (quand elle est dézippée).Là où vous voyez AAEF740C , inscrivez le CRC de votre ROM S1 avec précaution.

Etape 1.4

NEO\_BIOS\_SOUND\_128K( "xxx-m1.bin", CRC(9AF84708) )

Cette ligne est indspensable (comme les autres ^^). Là où vous voyez écrit :xxx-m1.bin inscrivez le nom de votre ROM M1 quand elle est dézippée.Là ou vous voyez : 9AF84708 notez le CRC de votre ROM M1, sans faired’erreurs.

Etape 1.5

ROM\_REGION( 0x1000000, REGION\_SOUND1, ROMREGION\_SOUNDONLY )
ROM\_LOAD( "xxx-v1.bin", 0x000000, 0x400000, CRC(eeeabcd0) )
ROM\_LOAD( "xxx-v2.bin", 0x400000, 0x400000, CRC(abcd59c3) )
ROM\_LOAD( "xxx-v3.bin", 0x800000, 0x400000, CRC(f8210469) )
ROM\_LOAD( "xxx-v4.bin", 0xc00000, 0x400000, CRC(ebcdef1a) )
NO\_DELTAT\_REGION

Ici, vous pouvez avoir 1 ou plus (habituellement 4) ROMS V. Si vous en avez moins de 4, il vous suffit de supprimer les lignes inutiles.Dans le champ : 1000000, inscrivez la somme des tailles de vos ROMS V suivie de 5 zéros.Là ou il est écrit : xxx-v1.bin, xxx-v2.bin, xxx-v3.bin, et xxx-v4.bin, inscrivez le nom de vos ROMs V.Remplacez les nombres en VERT avec les CRC fr vos ROMs V, sans erreur.Dans le champ en BLEU inscrivez la taille de vos ROMs V. Gardez à l’esprit que les tailes de vos ROMs doivent être écrites en Mb suivies de 5 zéros. (1mb = 100000).Dans la zone 400000, écrivez la taille de votre ROM V1.Dans la zone 800000, inscrivez la somme de la taille de votre ROM V1 et de votre ROM V2.Ensuite là où il est écrit c00000, inscrivez la somme de la taille de votre ROM V1 et de vos ROMS V2 et V3.Si ce nombre dépasse 10 Mb, incrivez c00000 à la place.

Etape 1.6

ROM\_REGION( 0x4000000, REGION\_GFX3, 0 )
ROM\_LOAD16\_BYTE( "xxx-c1.bin", 0x0000000, 0x800000, CRC(1234573b) )
ROM\_LOAD16\_BYTE( "xxx-c2.bin", 0x0000001, 0x800000, CRC(3eb42421) )
ROM\_LOAD16\_BYTE( "xxx-c3.bin", 0x1000000, 0x800000, CRC(f4134589) )
ROM\_LOAD16\_BYTE( "xxx-c4.bin", 0x1000001, 0x800000, CRC(a6abcefg) )
ROM\_LOAD16\_BYTE( "xxx-c5.bin", 0x2000000, 0x800000, CRC(ba12459a) )
ROM\_LOAD16\_BYTE( "xxx-c6.bin", 0x2000001, 0x800000, CRC(30071c01) )
ROM\_LOAD16\_BYTE( "xxx-c7.bin", 0x3000000, 0x800000, CRC(06a05f09) )
ROM\_LOAD16\_BYTE( "xxx-c8.bin", 0x3000001, 0x800000, CRC(d090e010) )

Ici, vous pouvez avoir 2 ou plus (d’habitude 4, 6 ou 8) ROMs C. Si vous en avez moins de 8 dans le jeu concerné, supprimez simplement les lignes inutiles.Dans la zone où il est indiqué :4000000 utilisez la valeur correspondante de la table suivante :Pour 8 ROMs C de 8mb inscrivez 4000000Pour 6 ROMs C de 8mb inscrivez 3000000Pour 4 ROMs C de 8mb inscrivez 2000000Pour 2 ROMs C de 8mb inscrivez 1000000Pour 2 ROMs C de 4mb inscrivez 0800000Pour 2 ROMs C de 2mb inscrivez 400000Pour 2 ROMs C de 1mb inscrivez 200000

NB : ce sont juste les valeurs habituelles, il en a de nombreuses différentes.(Vous pouvez jeter un coup d’oeil dans le fichier neogeo.c pour plus de combinaisons)Dans le champ en ROUGE, inscrivez le nom de vos ROMs C.Remplacez les nombres en VERT avec les CRC de vos ROMs C.Dans la zone en BLEU avec les tailles de vos ROMs C.

Dans les espaces en MAUVE, vous devriez laissez les nombres « tel quel » si vous utilisez8 ROMs C de 8 Mb. Sinon, consultez le fichier neogeo.c pour trouver les valeurs correctes pour vos ROMs.

Etape 1.7

ROM\_END

Cette ligne est obligatoire, car en fait elle marque la fin du driver.

Maintenant vous avez tout le nécessaire pour écrire votre driver, je voudrais rajouter deux petiteschoses, mais qui ont leur importance ! Ce sont des petits morceaux de code à rajouter.Voici le premier :

Etape 2

GAMEB( 2000, Nom de la ROM, neogeo, neogeo, neogeo, neogeo, neogeo, ROT0, "Editeur du jeu", "Nom du jeu" )

Les nombres indiqués ici 2000 représentent la date à laquelle le jeu est sorti.

Dans le champ : Nom de la ROM, inscrivez le nom de votre ROM.Exemple : King of fighters 2000 est dans un fichier nommé kof2000, donc inscrivez donc kof2000 ici.

Dans le champ : Editeur du jeu, inscrivez le nom de la Compagnie qui a réalisé le jeu.

Là où il est écrit : Nom du jeu, mettez le vrai nom du jeu (pas de la ROM ^^).C’est ce nom qui sera visible dans l’interface graphique de Mame32.

Etape 3

Maintenant, voici la dernière partie mais aussi la plus facile ;o) Ceci va dans le fichier driver.c dans le dossier mame\src.

DRIVER( Nom de la ROM ) /\* 0xxx (c) 2000 Nom de l'éditeur \*/

Là où vous voyez : Nom de la ROM, inscrivez le nom de votre ROM.Exemple : King of fighters 2000 est contenu dans un fichier zip nommé kof2000, donc écrivez kof2000 ici.

Dans le champ en BLEU, vous pouvez inscrire l’information de votre choix. Habituellement, on y consigne la date,le numéro de cartouche et l’éditeur.

Etape 4

Si vous avez bien suivi tout ce qui suit correctement, vous devriez vous retrouver avec ces trois éléments :

Le corps principal du driver

Ceci va dans le fichier neogeo.c qui est dans le dossier mame\src\drivers des sources de MAME. Un simple coup d’oeil dans ce fichier et vous verrez vite où est sa place ;o) (avec tous les autres drivers ^^)

ROM\_START( Nom de la ROM )
ROM\_REGION( 0x500000, REGION\_CPU1, 0 )
ROM\_LOAD16\_WORD\_SWAP( "xxx-p1.bin", 0x000000, 0x100000, CRC(1ABCDEF2) )
ROM\_LOAD16\_WORD\_SWAP( "xxx-p2.bin", 0x100000, 0x400000, CRC(345CDEF2) )
NEO\_SFIX\_128K( "xxx-s1.bin", CRC(AAEF740C) )
NEO\_BIOS\_SOUND\_128K( "xxx-m1.bin", CRC(9AF84708) )
ROM\_REGION( 0x1000000, REGION\_SOUND1, ROMREGION\_SOUNDONLY )
ROM\_LOAD( "xxx-v1.bin", 0x000000, 0x400000, CRC(eeeabcd0) )
ROM\_LOAD( "xxx-v2.bin", 0x400000, 0x400000, CRC(abcd59c3) )
ROM\_LOAD( "xxx-v3.bin", 0x800000, 0x400000, CRC(f8210469) )
ROM\_LOAD( "xxx-v4.bin", 0xc00000, 0x400000, CRC(ebcdef1a) )
NO\_DELTAT\_REGION
ROM\_REGION( 0x4000000, REGION\_GFX3, 0 )
ROM\_LOAD16\_BYTE( "xxx-c1.bin", 0x0000000, 0x800000, CRC(1234573b) )
ROM\_LOAD16\_BYTE( "xxx-c2.bin", 0x0000001, 0x800000, CRC(3eb42421) )
ROM\_LOAD16\_BYTE( "xxx-c3.bin", 0x1000000, 0x800000, CRC(f4134589) )
ROM\_LOAD16\_BYTE( "xxx-c4.bin", 0x1000001, 0x800000, CRC(a6abcefg) )
ROM\_LOAD16\_BYTE( "xxx-c5.bin", 0x2000000, 0x800000, CRC(ba12459a) )
ROM\_LOAD16\_BYTE( "xxx-c6.bin", 0x2000001, 0x800000, CRC(30071c01) )
ROM\_LOAD16\_BYTE( "xxx-c7.bin", 0x3000000, 0x800000, CRC(06a05f09) )
ROM\_LOAD16\_BYTE( "xxx-c8.bin", 0x3000001, 0x800000, CRC(d090e010) )
ROM\_END

neogeo.c

Cette partie du driver doit être placée tout en bas du fichier neogeo.c :

GAMEB( 2000, Nom du jeu, neogeo, neogeo, neogeo, neogeo, neogeo, ROT0, "Editeur", "Nom du jeu" )

driver.c

Enfin cette partie du driver doit être mise dans le fichier driver.c située dans le dossier mame\src des sources de MAME.Les drivers Neogeo se situent tout en bas de la longue liste de drivers. Inscrivez ensuite :

DRIVER( Nom de la ROM ) /\* 0xxx (c) Année Editeur \*/

Etape 5

La dernière étape, c’est de re-compiler MAME après avoir apporté vos modifications ! Bon courage à tous.


Traduit de IQ_132 de romshare.net, merci à lui ;o)