Pour vérifier l’intégrité d’une ROM, calculez l’empreinte du fichier exact, puis comparez-la à une valeur de référence utilisant le même algorithme et le même format. Un CRC32, un MD5 ou un SHA-1 différent signale un écart, mais pas automatiquement une corruption : la région, la révision, l’archive ou le modèle de calcul peuvent aussi différer.
La procédure consiste donc à contrôler le périmètre avant de lancer une commande. Une ROM extraite d’un fichier ZIP ne produit pas la même empreinte que l’archive, tandis qu’un clone MAME peut dépendre d’un parent ou d’un BIOS. Le bon diagnostic commence toujours par le nom, la taille, le format et la référence utilisés.
Sommaire
En bref
🔎 Calculez l’empreinte des octets exacts de la ROM, et non celle d’un fichier proche ou d’une archive si la référence concerne le fichier extrait.
🧩 Une comparaison n’est valable qu’avec le même algorithme et le même modèle CRC. CRC32, CRC-32C, MD5 et SHA-1 ne sont pas interchangeables.
🛠️ Un écart doit être diagnostiqué avant toute conclusion : vérifiez la région, la révision, les en-têtes, l’extraction et, pour MAME, le parent ou le BIOS requis.
CRC32, MD5 et SHA-1 : ce qu’une empreinte de ROM permet vraiment de vérifier
Une empreinte de fichier est une valeur calculée à partir de son contenu binaire exact. Une modification d’un octet, l’ajout d’un en-tête ou l’application d’un patch change généralement la valeur obtenue. La comparaison sert donc à vérifier qu’un fichier correspond à une référence précise, pas à établir toute son histoire.

Le CRC32 est une famille d’algorithmes qui produit une somme de contrôle de 32 bits. Le nom « CRC32 » ne suffit pas toujours à identifier le calcul : deux modèles ayant des paramètres différents peuvent produire des résultats différents pour la même ROM.
Les différences utiles entre CRC32, MD5 et SHA-1
Le format d’affichage aide à repérer une erreur de méthode, même s’il ne remplace pas l’identification de l’algorithme. Un CRC32 est habituellement affiché sur 8 caractères hexadécimaux, tandis qu’un MD5 et un SHA-1 produisent des chaînes plus longues.
| Empreinte | Longueur habituelle | Usage pertinent pour une ROM | Limite principale |
|---|---|---|---|
| CRC32 | 32 bits, souvent 8 caractères hexadécimaux | Contrôle rapide et nombreuses bases de ROM | Le modèle et ses paramètres doivent correspondre |
| MD5 | 128 bits, généralement 32 caractères hexadécimaux | Comparaison avec une valeur MD5 publiée | Ne constitue pas une garantie de sécurité moderne |
| SHA-1 | 160 bits, généralement 40 caractères hexadécimaux | Contrôle avec une base ou une documentation existante | À éviter comme preuve de sécurité actuelle |
Le modèle CRC-32/ISO-HDLC est aussi appelé CRC-32, CRC-32/ADCCP, CRC-32/V-42, CRC-32/XZ ou PKZIP dans certains outils. Les paramètres souvent associés à ce modèle comprennent une largeur de 32 bits, le polynôme 04C11DB7, une valeur initiale FFFFFFFF et un XOR final FFFFFFFF. Une référence sérieuse doit toutefois préciser le modèle utilisé.
MD5 et SHA-1 restent pratiques pour comparer des fichiers lorsque la valeur de référence est publiée sous ces formats. Pour un besoin de sécurité actuel, une source fiable proposant SHA-256 serait préférable, car une somme de contrôle n’a pas le même objectif qu’un mécanisme de protection contre une modification intentionnelle.
Ce qu’une empreinte ne peut pas prouver
Une empreinte identique indique que le fichier contrôlé correspond à la référence selon l’algorithme choisi. Elle ne prouve pas, à elle seule, l’origine légale de la ROM, l’autorisation de sa distribution ou l’absence de tout problème dans l’environnement d’émulation.
Une empreinte différente ne donne pas non plus la cause exacte de l’écart. La ROM peut être issue d’une autre région, contenir un en-tête différent, provenir d’une révision distincte ou avoir été modifiée. La source de référence doit donc décrire précisément le fichier comparé.
Préparer le bon fichier avant de calculer son empreinte
Avant de calculer une empreinte de ROM, identifiez le fichier à contrôler et les caractéristiques associées à la référence : extension, taille, région, révision, format et emplacement. Une somme de contrôle ne sait pas quel fichier vous aviez l’intention de vérifier. Elle traite seulement les octets qui lui sont transmis.
Le nom et l’emplacement n’entrent pas dans le calcul du contenu. Renommer ou déplacer une ROM ne change donc pas son empreinte, mais ces opérations peuvent vous conduire à sélectionner une version voisine, un mauvais fichier ou une archive au lieu de la ROM extraite.
ROM compressée ou ROM extraite : deux empreintes différentes
Un fichier ZIP, 7z ou RAR est un conteneur. La ROM stockée à l’intérieur possède un contenu binaire différent de celui du conteneur, avec des métadonnées de compression et une structure propre à l’archive. Les deux fichiers auront donc des empreintes différentes.
- Vérifiez l’archive si la référence décrit explicitement l’archive complète.
- Vérifiez le fichier extrait si la référence indique le nom et la taille de la ROM.
- Contrôlez séparément l’intégrité de l’archive et l’identité de la ROM qu’elle contient.
Une archive ZIP peut être parfaitement lisible tout en ne correspondant pas au ROMset attendu par MAME. Un fichier peut manquer, appartenir à un autre set ou dépendre d’un parent et d’un BIOS absents. L’intégrité du conteneur et la validité du ROMset sont deux contrôles distincts.
Région, révision, format et en-têtes : les écarts à anticiper
Les bases de données peuvent distinguer les versions Europe, Japon et États-Unis, les révisions d’un même jeu, les traductions et les éditions modifiées. Une ROM portant un nom presque identique peut donc contenir des octets différents et produire un CRC32, un MD5 et un SHA-1 différents.
Un en-tête ajouté ou retiré modifie lui aussi les trois empreintes. Notez les informations de la référence avant le calcul, notamment le nom exact, la taille en octets, la région, la révision, le format et le type d’en-tête attendu.
Calculer l’empreinte d’une ROM sous Windows, macOS et Linux
Pour calculer une empreinte, ouvrez l’outil adapté à votre système, indiquez le chemin complet du fichier et copiez uniquement la valeur produite. Les commandes MD5 et SHA-1 sont disponibles dans les environnements courants, tandis que le CRC32 peut nécessiter un outil compatible avec le modèle demandé par la référence.

| Système | MD5 | SHA-1 | Point de vigilance |
|---|---|---|---|
| Windows | certutil -hashfile "C:\ROMs\jeu.bin" MD5 |
certutil -hashfile "C:\ROMs\jeu.bin" SHA1 |
Le CRC32 ne dispose pas d’une commande universelle aussi directe dans les outils standards. |
| macOS | md5 "/Users/nom/ROMs/jeu.bin" |
shasum -a 1 "/Users/nom/ROMs/jeu.bin" |
La commande cksum ne correspond pas nécessairement au CRC32 attendu par une base. |
| Linux | md5sum "/home/nom/ROMs/jeu.bin" |
sha1sum "/home/nom/ROMs/jeu.bin" |
Un utilitaire CRC32 compatible avec la distribution et la référence peut être nécessaire. |
Sous Windows : commandes intégrées et outil graphique pour CRC32
Ouvrez PowerShell ou l’invite de commandes, puis lancez CertUtil avec un chemin placé entre guillemets. Les guillemets sont indispensables lorsque le chemin ou le nom du fichier contient des espaces.
certutil -hashfile "C:\Mes ROMs\jeu.bin" MD5
certutil -hashfile "C:\Mes ROMs\jeu.bin" SHA1
Le résultat affiche l’empreinte et le nom de l’algorithme demandé. Ignorez les lignes de présentation et copiez la chaîne hexadécimale complète. Pour un CRC32, utilisez un outil graphique fiable qui permet d’identifier clairement le modèle calculé, puis comparez cette indication avec celle de la référence.
Sous macOS : MD5, SHA-1 et calcul de CRC32
Ouvrez Terminal et saisissez la commande correspondant à l’empreinte recherchée. Les chemins contenant des espaces doivent être entourés de guillemets ou complétés avec l’autocomplétion du terminal.
md5 "/Users/nom/ROMs/jeu.bin"
shasum -a 1 "/Users/nom/ROMs/jeu.bin"
Le calcul d’un CRC32 peut nécessiter un utilitaire supplémentaire. Ne choisissez pas une commande uniquement parce qu’elle contient le mot cksum : contrôlez la définition exacte de l’algorithme, ses paramètres et le format de sortie avant de comparer la valeur.
Sous Linux : md5sum, sha1sum et utilitaire CRC32
Les commandes usuelles sont md5sum et sha1sum. Commencez à saisir le chemin, puis appuyez sur la touche Tab afin que le terminal complète le nom et limite les erreurs de frappe.
md5sum "/home/nom/ROMs/jeu.bin"
sha1sum "/home/nom/ROMs/jeu.bin"
Pour le CRC32, installez ou utilisez un utilitaire présent dans votre distribution uniquement après avoir vérifié le modèle pris en charge. Le nom du fichier apparaît généralement à côté de la valeur : contrôlez-le avant de copier le résultat, surtout lors d’un calcul sur plusieurs ROMs.
Une autre méthode reproductible consiste à utiliser un programme qui documente explicitement le modèle CRC32, comme CRC-32/ISO-HDLC. Pour une valeur de référence MAME, l’audit MAME reste souvent plus pertinent que le calcul isolé, car il tient compte de la structure du ROMset.
Comment comparer l’empreinte obtenue avec une valeur de référence ?
Comparez d’abord l’algorithme, puis la longueur de la valeur et enfin chaque caractère de l’empreinte. Une correspondance n’a de sens que si la référence porte sur le même fichier, les mêmes octets, le même modèle de calcul et, pour un ROMset MAME, le même ensemble de référence ou le même DAT.
-
Identifiez la référence
Notez l’algorithme, le nom du fichier, sa taille, sa région, sa révision et son format. Une valeur CRC32 isolée, sans contexte, ne suffit pas pour conclure.
-
Calculez le fichier exact
Lancez la commande sur la ROM extraite ou sur l’archive selon l’objet décrit par la référence. Ne modifiez pas le fichier entre deux calculs.
-
Vérifiez la longueur
Un CRC32 complet comporte habituellement 8 caractères hexadécimaux, un MD5 32 et un SHA-1 40. Une longueur inattendue signale souvent un mauvais outil ou une sortie mal copiée.
-
Comparez la chaîne complète
Utilisez un copier-coller contrôlé et comparez tous les caractères. Les majuscules et minuscules ne changent pas la valeur hexadécimale, mais les caractères 0 et O, 1 et l peuvent provoquer une erreur visuelle.
Ne comparez jamais une valeur CRC32 avec un MD5 ou un SHA-1, même si les trois empreintes proviennent du même fichier. Une référence SHA-1 ne peut être validée que par un calcul SHA-1 effectué sur le même contenu.
Faire une comparaison manuelle fiable
Conservez la valeur de référence dans un fichier texte ou copiez-la directement depuis la base concernée. Évitez de la retaper à la main : une seule erreur rend la comparaison négative alors que la ROM peut être correcte.
Pour un contrôle isolé, la comparaison manuelle suffit. Pour une collection, un fichier manifeste associant chaque empreinte à un nom de fichier réduit les manipulations, à condition que son format soit compatible avec l’outil utilisé.
Vérifier plusieurs ROM avec MAME
MAME permet de vérifier un ensemble de ROMs avec la commande mame -verifyroms. Pour un set précis, utilisez mame -verifyroms <nom_du_set>, avec l’exécutable et la configuration correspondant à la référence du ROMset contrôlé.
mame -verifyroms
mame -verifyroms nom_du_set
La commande mame -verifyroms | grep 'is bad' peut filtrer les sets signalés comme défectueux dans un environnement qui dispose de grep. Les sorties de commande restent liées à la version de MAME, au DAT et à l’organisation du ROMset utilisés : ne généralisez pas un résultat obtenu dans une autre configuration.
Pourquoi une empreinte de ROM est-elle différente ?
Une empreinte différente signifie que le contenu analysé ne correspond pas à la référence avec l’algorithme utilisé. Cette différence peut provenir d’une ROM réellement altérée, mais aussi d’un fichier parfaitement fonctionnel appartenant à une autre région, une autre révision, une autre archive ou un autre ROMset.
Les causes les plus courantes d’un écart
| Symptôme | Cause possible | Contrôle à effectuer | Action prudente |
|---|---|---|---|
| CRC32 différent | Modèle CRC ou paramètres différents | Lire la définition de la référence | Recalculer avec le même modèle |
| Fichier lisible mais non reconnu | Région ou révision différente | Comparer les informations du dump | Ne pas remplacer la ROM sans nouvelle référence |
| Archive valide, set MAME incorrect | Fichier manquant, parent ou BIOS absent | Lancer l’audit du set avec MAME | Contrôler les dépendances du ROMset |
| Empreinte modifiée après préparation | En-tête, patch ou traduction appliquée | Comparer la taille et le contenu d’origine | Utiliser une référence correspondant au format modifié |
La marche à suivre pour vérifier l’écart
-
Recalculez sans modifier le fichier
Répétez le calcul sur le même fichier afin d’écarter une erreur de chemin, de copie ou de lecture du résultat.
-
Contrôlez les caractéristiques
Comparez la taille, l’extension, le format, la région, la révision et la présence éventuelle d’un en-tête avec les informations de la référence.
-
Vérifiez l’archive d’origine
Si la ROM provient d’une archive, contrôlez l’archive séparément puis recalculez la ROM extraite. Ne confondez pas les deux résultats.
-
Lancez l’audit MAME si nécessaire
Utilisez la commande adaptée au set et examinez les messages de fichier manquant, de parent ou de BIOS. Une ROM clone peut dépendre de fichiers présents dans sa ROM parente ou dans un BIOS.
-
Recoupez la référence
Comparez la valeur avec une seconde source fiable qui décrit précisément la même version. Ne qualifiez le fichier de corrompu qu’après ces contrôles.
Pour comprendre le rôle des fichiers BIOS dans cette dernière étape, consultez également notre article sur le rôle du BIOS d’un émulateur. Un audit MAME peut signaler une dépendance absente sans que la ROM ciblée soit elle-même endommagée.
Quelle somme de contrôle utiliser pour une ROM ?
Utilisez en priorité l’algorithme fourni par la valeur de référence. Le meilleur choix n’est donc pas une hiérarchie abstraite entre CRC32, MD5 et SHA-1 : une référence CRC32 fiable est plus utile qu’un MD5 calculé sans valeur de comparaison.
Le bon réflexe : suivre la référence, pas une hiérarchie abstraite
Le CRC32 convient aux contrôles rapides d’erreurs accidentelles et aux bases de ROM qui publient cette valeur. Dans l’écosystème MAME, l’audit du ROMset peut apporter davantage de contexte qu’un simple calcul isolé, notamment pour les clones, les parents et les BIOS.
MD5 et SHA-1 restent adaptés à la comparaison lorsque ces empreintes sont celles de la source consultée. Ces algorithmes ne doivent toutefois pas être présentés comme une protection moderne contre une modification intentionnelle. Pour un besoin de sécurité actuel, choisissez SHA-256 lorsqu’une source fiable le fournit.
- Référence CRC32 : utilisez le même modèle et les mêmes paramètres.
- Référence MD5 : calculez un MD5 sur les mêmes octets.
- Référence SHA-1 : calculez un SHA-1 sans le remplacer par un autre algorithme.
- Référence MAME : utilisez l’audit correspondant au ROMset et au DAT concernés.
Questions fréquentes sur la vérification d’intégrité d’une ROM
Une empreinte différente signifie-t-elle que la ROM est inutilisable ?
Non. Une empreinte différente indique un écart avec une référence précise, mais la ROM peut appartenir à une autre région, une autre révision ou un autre format. Vérifiez la taille, les en-têtes et le périmètre de comparaison avant de la remplacer.
Peut-on vérifier une ROM sans installer de logiciel ?
Oui pour MD5 et SHA-1, avec les commandes intégrées de Windows, macOS ou Linux présentées plus haut. Le CRC32 peut demander un utilitaire compatible avec le modèle indiqué par la référence ; MAME fournit aussi son propre audit pour les ROMsets concernés.
Faut-il vérifier l’archive compressée ou le fichier ROM extrait ?
Vérifiez l’objet décrit par la référence. Une archive ZIP, 7z ou RAR possède une empreinte différente de la ROM qu’elle contient, et un contrôle valide de l’archive ne prouve pas que le ROMset MAME est complet.
Pourquoi mon CRC32 ne correspond-il pas alors que le jeu fonctionne ?
Le jeu peut fonctionner malgré une région différente, un patch, une traduction, un en-tête ou une variante de ROM. Un modèle CRC différent peut aussi expliquer l’écart. Comparez la référence, les octets contrôlés et les paramètres avant de parler de corruption.
Quelle est la meilleure empreinte entre CRC32, MD5 et SHA-1, et le nom du fichier change-t-il le résultat ?
La meilleure empreinte est celle publiée pour le fichier que vous devez vérifier ; CRC32, MD5 et SHA-1 ne se remplacent pas librement. Le nom et l’emplacement ne changent pas les octets ni l’empreinte, mais ils peuvent vous faire sélectionner le mauvais fichier.
La vérification fiable tient en quatre gestes : identifiez exactement le fichier, calculez la bonne empreinte, comparez-la à une référence contextualisée, puis analysez méthodiquement tout écart. Pour une ROM isolée, un contrôle CRC32, MD5 ou SHA-1 suffit si le périmètre est identique ; pour un ROMset MAME, l’audit de la version et des dépendances reste indispensable.
Sources utiles à consulter
- Documentation MAME → commande
-verifyromset audit des sets → vérifier une ROM ou un ROMset → contrôler la version de MAME et la référence du set. - Documentation Microsoft CertUtil → calcul de MD5 et SHA-1 sous Windows → contrôler un fichier local → vérifier le chemin et l’algorithme affiché.
- Documentation Python du module zlib → calcul CRC32 selon l’implémentation utilisée → reproduire un contrôle → confirmer le modèle CRC attendu par la référence.