Retour à notre série d'articles sur MAME sur macOS. Dans l'article 4, nous avions vu comment utiliser les lignes de commande pour vérifier vos ROMs. Aujourd'hui nous irons un peu plus loin puisque je vais vous expliquer comment lire les résultats de cette commande puis quelques astuces pour trouver les ROMs.
1/ Explication de l'action verifyroms
Comme nous l'avions vu précédemment, l'action verifyroms permet de vérifier qu'une ROM est bien conforme à ce qu'attend MAME. Avec les mises à jour successives de MAME qui peuvent altérer le fonctionnement d'une ROM, la commande prend toute son importance.
D'ailleurs si vous avez installé SDLMAME et MAME via brew, sachant que cette dernière est souvent en retard d'une (ou plusieurs) version(s), vous pourriez avoir des résultats différents selon l'application utilisée, en vérifiant les ROMs modifiées dernièrement.
Revoyons comment vérifier une ROM avec MAME via Homebrew.
mame -verifyroms sf2
et regardons les 4 résultats possible
romset sf2 is good
1 romsets found, 1 were OK.
C'est le meilleur résultat possible, celui que l'on attend pour l'ensemble de ses ROMs.
La ROM telle qu'elle est, est compatible avec la version courante de MAME.
romset sf2 is bad
…
1 romsets found, 0 were OK.
Ici c'est moins bien. MAME considère votre ROM comme invalide et ne la lancera même pas. Si vous souhaitez jouer à ce jeu, il faudra la mettre à jour.
romset sf2 is best available
…
1 romsets found, 1 were OK.
Ce résultat n'est pas aussi mauvais qu'il n'y parait. Certains éléments de la ROM ne sont pas bons. Cependant, il n'existe pas de version correcte pour ces éléments et MAME le sait. L'application vous permettra donc de lancer le jeu, mais il faut savoir qu'il est possible que le jeu ait des soucis.
Enfin, si vous lancez la commande sur une ROM qui n'existe pas
mame -verifyroms pouet
Vous obtiendrez le résultat
No matching systems found for 'pouet'
2/ Décryptage d'une vérification dont le résultat est "bad"
Lorsque MAME vérifie une ROM, il vérifie l'ensemble des éléments contenus, les uns après les autres. Il va indiquer tous les problèmes présents sur la ROM.
Dans l'ordre, il va vérifier la présence de l'élément. En cas de défaut il indiquera
sf2cems6b : ms6_gal20v8a.u104 (343 bytes) - NOT FOUND
Un grand NOT FOUND à la fin de la ligne indique que l'élément est donc manquant.
Ensuite il va vérifier la longueur de l'élément, un moyen rapide de savoir si l'élément a changé. Encore une fois, avec un problème nous aurons
sf2hf : ioc1.ic7 (260 bytes) - INCORRECT LENGTH: 279 bytes
Ici, c'est le INCORRECT LENGTH qui est l'annonciateur de la mauvaise nouvelle. Juste avant, entre parenthèse, vous avez la taille attendue par MAME et en bout de ligne le poids de votre élément. Comme vous pouvez le voir ici, il diffère.
Enfin l'élément peut être présent et de la bonne longueur, mais son contenu peut ne pas être bon. Pour vérifier cela, MAME effectue une somme de contrôle sur les éléments et les compare à celles qu'il attend.
Voici à quoi ressemble l'erreur
swa : 315-5711.bin (8192 bytes) - INCORRECT CHECKSUM:
EXPECTED: CRC(c5ddb8fc) SHA1(9e21d3a07ffa315e0139483b664e3fa283ef4e06) BAD_DUMP
FOUND: CRC(22affe54)
Le terme INCORRECT CHECKSUM nous indique bien une erreur sur la somme de contrôle, tandis que les deux lignes suivantes nous donne les sommes trouvées et attendues.
Si vous souhaitez que MAME lance votre ROM, il faudra corriger les erreurs, soit en trouvant une autre ROM sans défaut, soit en remplaçant seulement les éléments en défaut. Je vous expliquerai comment faire cela, un peu plus tard dans l'article.
3/ Récupérer les ROMs
Evidemment, le moyen le plus légal de récupérer les ROMs est de faire soit-même un dump des différents jeux. Dans les faits, cela n'est pas envisageable ! Trouver les bornes d'arcade est de plus en plus compliqué, elles sont de moins en moins nombreuses, voire certaines n'existent carrément plus.
La solution est donc de trouver sur Internet les ROMs des jeux auxquelles vous souhaitez jouer. De nombreux sites proposent les ROMs en libre accès, il vous faudra les trouver.
La première idée est de trouver les fichiers via leurs noms. Ainsi pour rechercher le jeu "Street Fighter 2", dont le code est "sf2", je vous conseille de chercher "mame sf2.zip".
Cette solution devrait vous renvoyer des dizaines de résultats.
Pour un collectionneur, il est possible d'avoir une ROM qui n'est pas correcte, que vous ne connaissez pas, et dont vous n'arrivez pas à la trouver via son nom de fichier. La solution peut être de la trouver via le titre du jeu (ou du bios) qui se cache derrière.
Pour trouver le titre exact, il faudra lancer la commande avec l'action listfull, en remplaçant le nom de la ROM que vous cherchez, évidemment.
mame -listfull sf2
Le résultat vous donne quelque chose comme
Name: Description:
sf2 "Street Fighter II: The World Warrior (World 910522)"
Maintenant pour faire ma recherche je peux tenter la requête 'mame "Street Fighter II: The World Warrior (World 910522)"'.
Une fois que la ROM est récupérée, placez la dans votre dossier de ROMs et n'oubliez pas de relancer une vérification. En effet, certains sites fournissent d'anciennes versions des ROMs, une version différente de votre MAME, ou carrément des versions défectueuses.
Jusqu'ici c'est assez basique et simple finalement. Maintenant voici mes petites astuces un petit peu plus subtiles qui pourront vous aider.
Si vous avez trouvé un site qui vous fournit les ROMs telles que vous le souhaitez, n'hésitez pas à en mettre l'URL de côté. La prochaine fois que vous chercherez une ROMs, si vous souhaitez chercher sur ce site, voici la recherche à effectuer sur Google "site:www.mon-super-site.com masuperrom.zip" en remplaçant le nom du site et de la ROM. Et évidemment, cela fonctionne en cherchant aussi le titre du jeu.
Deuxième astuce, voici une troisième façon de trouver les roms, en cherchant précisément la version que vous souhaitez. En effet, certains sites fournissent la somme de contrôle des différents éléments d'une ROM. Pour obtenir les CRC des éléments d'une ROM, utilisez l'action listcrc
mame -listcrc sf2
Vous obtiendrez la liste telle que
fe39ee33 sf2e_30g.11e sf2 Street Fighter II: The World Warrior (World 910522)
fb92cd74 sf2e_37g.11f sf2 Street Fighter II: The World Warrior (World 910522)
69a0a301 sf2e_31g.12e sf2 Street Fighter II: The World Warrior (World 910522)
5e22db70 sf2e_38g.12f sf2 Street Fighter II: The World Warrior (World 910522)
8bf9f1e5 sf2e_28g.9e sf2 Street Fighter II: The World Warrior (World 910522)
626ef934 sf2e_35g.9f sf2 Street Fighter II: The World Warrior (World 910522)
bb4af315 sf2_29b.10e sf2 Street Fighter II: The World Warrior (World 910522)
c02a13eb sf2_36b.10f sf2 Street Fighter II: The World Warrior (World 910522)
22c9cc8e sf2-5m.4a sf2 Street Fighter II: The World Warrior (World 910522)
57213be8 sf2-7m.6a sf2 Street Fighter II: The World Warrior (World 910522)
ba529b4f sf2-1m.3a sf2 Street Fighter II: The World Warrior (World 910522)
4b1b33a8 sf2-3m.5a sf2 Street Fighter II: The World Warrior (World 910522)
2c7e2229 sf2-6m.4c sf2 Street Fighter II: The World Warrior (World 910522)
b5548f17 sf2-8m.6c sf2 Street Fighter II: The World Warrior (World 910522)
14b84312 sf2-2m.3c sf2 Street Fighter II: The World Warrior (World 910522)
5e9cd89a sf2-4m.5c sf2 Street Fighter II: The World Warrior (World 910522)
994bfa58 sf2-13m.4d sf2 Street Fighter II: The World Warrior (World 910522)
3e66ad9d sf2-15m.6d sf2 Street Fighter II: The World Warrior (World 910522)
c1befaa8 sf2-9m.3d sf2 Street Fighter II: The World Warrior (World 910522)
0627c831 sf2-11m.5d sf2 Street Fighter II: The World Warrior (World 910522)
a4823a1b sf2_9.12a sf2 Street Fighter II: The World Warrior (World 910522)
7f162009 sf2_18.11c sf2 Street Fighter II: The World Warrior (World 910522)
beade53f sf2_19.12c sf2 Street Fighter II: The World Warrior (World 910522)
eb122de7 buf1 sf2 Street Fighter II: The World Warrior (World 910522)
59c7ee3b ioa1 sf2 Street Fighter II: The World Warrior (World 910522)
f1129744 prg1 sf2 Street Fighter II: The World Warrior (World 910522)
41dc73b9 rom1 sf2 Street Fighter II: The World Warrior (World 910522)
84f4b2fe sou1 sf2 Street Fighter II: The World Warrior (World 910522)
043309c5 stf29.1a sf2 Street Fighter II: The World Warrior (World 910522)
3abc0700 iob1.11d sf2 Street Fighter II: The World Warrior (World 910522)
0fbd9270 c632.ic1 sf2 Street Fighter II: The World Warrior (World 910522)
Maintenant, il ne vous reste plus qu'à chercher sur Internet l'élément qui fait défaut dans votre ROM, avec sa somme de contrôle.
Malheureusement, les sites qui fournissent les CRC ne sont pas très nombreux. Cependant, ils ont tendance à fournir des ROMs de meilleure qualité.
Le prochain article de la série sera la suite directe de celui-ci car nous continuerons à travailler sur la vérification des ROMs de notre collection.