Une bibliothèque PlayStation 1 complète pèse plusieurs centaines de gigaoctets en BIN/CUE. La même bibliothèque en CHD tient souvent sur une carte deux fois plus petite, avec un seul fichier par jeu au lieu d'un couple .cue plus une pile de .bin. Le format vient de MAME, il est sans perte, et la quasi-totalité des émulateurs de consoles à CD le lisent aujourd'hui.
La conversion se fait avec un outil en ligne de commande, chdman, ou avec une interface graphique. Ce n'est pas compliqué, mais trois pièges font perdre une soirée quand on ne les connaît pas : les jeux PAL protégés, les jeux multi-disques, et quelques émulateurs qui refusent certaines variantes du format.
Ce qu'est réellement un fichier CHD
CHD signifie Compressed Hunks of Data. Le format a été créé pour archiver les disques durs des bornes d'arcade dans MAME, puis étendu aux images de CD et de DVD. Deux propriétés comptent pour vous.
D'abord, la compression est sans perte. Les données restituées sont bit pour bit identiques à l'image d'origine. Ce n'est pas un ré-encodage : la musique n'est pas dégradée, les vidéos non plus.
Ensuite, le CHD est un conteneur unique. Un jeu Saturn livré en un .cue et vingt-trois .bin devient un seul .chd. Vos dossiers deviennent lisibles, et les scrapers de jaquettes s'y retrouvent beaucoup mieux. Si votre arborescence est déjà un chantier, notre guide sur l'organisation des dossiers selon le firmware traite la question en détail.
Techniquement, chdman découpe l'image en blocs (les hunks) et applique à chacun le meilleur codec parmi ceux autorisés. Pour un CD, les codecs par défaut sont cdlz, cdzl et cdfl : LZMA, Deflate et FLAC, appliqués séparément aux données, à l'audio et aux sous-canaux. C'est ce mélange qui explique les écarts de gain d'un jeu à l'autre.
Quels systèmes y gagnent, lesquels n'y gagnent rien
Le CHD n'a d'intérêt que pour les supports optiques. Une cartouche est déjà un fichier compact et souvent déjà compressé par le core lui-même : convertir une ROM Super Nintendo n'apporte rien, et aucun émulateur ne saura la relire.
| Système | Format conseillé | Commentaire |
|---|---|---|
| PlayStation 1 | CHD | Le cas le plus rentable. Lu par DuckStation, Beetle PSX, SwanStation. |
| Sega Saturn | CHD | Beetle Saturn et Yabause acceptent .chd. Fin des dossiers à vingt pistes. |
| Dreamcast | CHD | Conversion depuis GDI ou CUE, lu par Flycast. |
| Mega CD, PC Engine CD, Neo Geo CD, 3DO, CD32 | CHD | Cores libretro à jour. Le core Opera (3DO) accepte .chd. |
| PlayStation 2 | CHD | Fonctionne, mais lisez plus bas la section sur les émulateurs Android. |
| PSP | CHD ou CSO | CHD supporté depuis PPSSPP 1.17, légèrement meilleur que le CSO. |
| GameCube, Wii | RVZ | Format propre à Dolphin, plus efficace ici. Le CHD n'est pas lu par Dolphin. |
| Cartouches (NES, SNES, Mega Drive, GBA, N64…) | Aucun | Archive ZIP ou 7z si besoin, jamais CHD. |
Pour la GameCube et la Wii, la conversion se fait dans Dolphin : clic droit sur le jeu, Convert File, puis format RVZ. Le libellé exact varie selon la version de l'émulateur.
Le gain réel, et pourquoi il varie autant
L'ordre de grandeur généralement observé se situe entre 30 et 60 % d'espace récupéré. Quelques mesures publiées donnent une idée : Resident Evil 2 (PS1, disque 1) passe de 656 Mo à 370 Mo, Devil May Cry (PS2) de 4,69 Go à 1,84 Go, Summon Night 5 (PSP) de 912 Mo à 337 Mo. Sur un lot mélangé, diviser par deux est un objectif réaliste.
La variance vient du contenu du disque. Un DVD PS2 est très majoritairement rempli de vide ou de données redondantes : le remplissage se compresse énormément. À l'inverse, un CD dont la moitié de la galette est occupée par des pistes audio gagne beaucoup moins. Ces pistes sont traitées en FLAC, qui est excellent mais reste de la compression audio sans perte : on récupère typiquement un tiers à la moitié, pas 90 %.
Même logique pour les jeux bourrés de cinématiques. Les vidéos sont déjà compressées à la source ; les recompresser ne donne presque rien. Un jeu de plateforme PS1 court et sec peut fondre de 70 %, un jeu de rôle Mega CD avec bande-son Redbook complète descendra à peine de 20 %. Ne calibrez pas l'achat d'une carte mémoire sur le meilleur des cas ; notre guide des cartes microSD donne les capacités qui tiennent la route.
La méthode avec chdman
Se procurer l'outil
chdman est distribué avec MAME. Sous Windows, il se trouve dans l'archive MAME officielle sous le nom chdman.exe, et il est également fourni avec l'interface namDHC. Sous macOS, avec Homebrew :
brew install rom-tools
Sous Debian et Ubuntu, le paquet s'appelle mame-tools :
sudo apt install mame-tools
Lancez ensuite chdman sans aucun argument : le programme affiche sa version et la liste des commandes. Les dépôts Linux embarquent parfois une version très en retard sur MAME ; si vous visez la PSP ou la PS2, préférez un binaire récent.
Convertir un CD
Pour une image CD, quel que soit le système (PS1, Saturn, Dreamcast, Mega CD, PC Engine CD, 3DO) :
chdman createcd -i "jeu.cue" -o "jeu.chd"
La commande accepte aussi les images .gdi, .toc et .iso en entrée. Le fichier .cue doit être correct et les .bin qu'il référence présents dans le même dossier, sinon la conversion s'arrête immédiatement.
Convertir un DVD (PS2, PSP)
Pour une image DVD, la commande est différente, et la taille de bloc compte :
chdman createdvd -hs 2048 -i "jeu.iso" -o "jeu.chd"
L'option -hs 2048 fixe la taille de hunk à 2 048 octets. La documentation de PPSSPP la recommande explicitement pour les images PSP : avec les valeurs par défaut de certaines versions de chdman, les performances de lecture s'écroulent. Depuis PPSSPP 1.17.1, un mode Zstandard est également disponible et peut être un peu plus rapide :
chdman createdvd -hs 2048 -i "jeu.iso" -o "jeu.chd" -c zstd
N'utilisez pas createraw pour un jeu : cette commande existe pour les images de disque dur d'arcade.
Traiter tout un dossier
Sous Linux et macOS, une boucle sur les fichiers .cue du dossier courant :
for f in *.cue; do chdman createcd -i "$f" -o "${f%.cue}.chd"; done
Pour descendre dans les sous-dossiers :
find . -type f -name "*.cue" -exec sh -c 'chdman createcd -i "$1" -o "${1%.cue}.chd"' _ {} \;
Sous Windows, dans un fichier .bat placé à côté de chdman.exe :
for /r %%i in (*.cue) do chdman createcd -i "%%i" -o "%%~dpni.chd"
Si vous tapez cette même ligne directement dans l'invite de commandes, remplacez %%i par %i. La conversion est gourmande en processeur : comptez de quelques secondes à plusieurs minutes par jeu, et beaucoup plus pour un DVD PS2.
Sans ligne de commande
Trois solutions courantes, toutes construites autour du même chdman :
-
namDHC (Windows, gratuit, GPL-3.0) : glisser-déposer, conversion par lot, extraction et vérification. Il a besoin de
chdman.exedans le même dossier ; les versions publiées le fournissent. - CHDroid (Android, disponible sur le Play Store et sur GitHub) : convertit directement sur le téléphone ou sur une console Android. Pratique sur une Retroid Pocket ou une AYN, mais lent sur de gros DVD.
-
Swift-CHD (macOS) : petite interface qui appelle le
chdmaninstallé par Homebrew.
Ces interfaces exposent les mêmes options que la ligne de commande, taille de hunk comprise. Vérifiez qu'elles utilisent bien le mode DVD pour la PS2 et la PSP.
Les pièges qui coûtent une soirée
Les jeux PS1 PAL protégés et leur fichier .sbi
Une partie des jeux PlayStation 1 européens embarque une protection appelée LibCrypt, qui repose sur des données de sous-canal absentes d'un dump BIN/CUE classique. Ces données sont fournies à part, dans un petit fichier .sbi.
chdman ne l'intègre pas au CHD. Conservez le .sbi à côté du .chd, avec exactement le même nom de base : Ape Escape (Europe).chd et Ape Escape (Europe).sbi. DuckStation comme Beetle PSX le chargent alors automatiquement. Pour un jeu PAL protégé en plusieurs disques, la documentation de Beetle PSX indique une nomenclature [nom]_[numéro de disque].sbi. Sans ce fichier, le jeu démarre puis se fige ou boucle sur un écran, ce qui ressemble à s'y méprendre à une image corrompue.
Les jeux multi-disques et le fichier .m3u
Convertir chaque disque séparément donne autant de fichiers .chd. Pour que l'émulateur les voie comme un seul jeu et gère le changement de disque, créez un fichier texte d'extension .m3u portant le nom du jeu, contenant un nom de fichier par ligne, sans chemin, dans le même dossier :
Final Fantasy VII (France) (Disc 1).chdFinal Fantasy VII (France) (Disc 2).chdFinal Fantasy VII (France) (Disc 3).chd
Vous lancez ensuite le .m3u, jamais le disque 1 directement. C'est aussi ce qui permet à la carte mémoire virtuelle d'être partagée entre les disques.
Les émulateurs qui n'en veulent pas
Le cas le plus fréquent aujourd'hui concerne la PlayStation 2 sur Android : AetherSX2 et NetherSX2 refusent les CHD créés avec createdvd. Le contournement connu consiste à générer ces images avec createcd, au prix d'un fichier un peu plus gros. Ces deux applications ne sont plus maintenues, il n'y aura pas de correctif. Sur PC, PCSX2 ne pose pas ce problème. Le sujet est développé dans notre article sur les émulateurs PS2 en portable.
L'autre cas est celui des cores anciens livrés avec certains firmwares d'origine de consoles d'entrée de gamme : la prise en charge du CHD est arrivée progressivement dans les cores libretro, et un build de 2019 peut très bien ne pas la connaître. Symptôme typique : le jeu n'apparaît pas dans la liste, ou l'émulateur se ferme sans message. Mettre le firmware à jour règle le problème neuf fois sur dix — voyez notre tableau de compatibilité firmware et, si le jeu s'obstine, la liste des causes de non-démarrage.
Revenir en arrière
Un CHD n'est pas un aller simple. Pour reconstituer l'image d'origine :
chdman extractcd -i "jeu.chd" -o "jeu.cue"
Vous récupérez un .cue et ses .bin. L'extension du fichier de sortie détermine le format produit : indiquez .gdi pour un Dreamcast dumpé en GDI. Pour un DVD :
chdman extractdvd -i "jeu.chd" -o "jeu.iso"
Deux commandes utiles avant d'effacer quoi que ce soit : chdman info -i "jeu.chd" affiche la version du conteneur et les codecs employés, chdman verify -i "jeu.chd" contrôle l'intégrité du fichier. Le contenu extrait est identique à l'original ; seul le découpage des pistes peut différer de votre dump de départ, sans conséquence pour l'émulation.
En pratique
Commencez par un seul jeu, en createcd, testez-le sur la console concernée, puis lancez le lot pendant la nuit. Gardez les originaux jusqu'à validation complète, et n'oubliez pas les fichiers .sbi et .m3u lors de la copie vers la carte. Une fois la bibliothèque convertie, une carte de 128 Go accueille sans difficulté ce qui en demandait 256 auparavant — et si vous devez tout de même monter en capacité, nos cartes microSD sont testées par écriture-relecture complète avant expédition.
Le CHD dégrade-t-il la qualité audio ou vidéo du jeu ?
Non. La compression est strictement sans perte, y compris pour les pistes audio, traitées en FLAC. Les données restituées sont identiques à celles de l'image d'origine. C'est vérifiable avec la commande chdman verify, puis en réextrayant le fichier.
Faut-il convertir aussi mes jeux Game Boy Advance ou Super Nintendo ?
Non, aucun intérêt. Le CHD est conçu pour les images de disque optique. Les cartouches sont déjà des fichiers de petite taille, et aucun émulateur de console à cartouche ne lit le CHD. Si vous voulez gagner de la place, la plupart des cores libretro acceptent directement les archives ZIP.
Pourquoi mon jeu PS1 européen plante-t-il après conversion ?
C'est presque toujours la protection LibCrypt. Le fichier .sbi qui accompagnait l'image d'origine doit rester dans le même dossier que le .chd et porter le même nom de base. Il n'est pas intégré au CHD lors de la conversion, et beaucoup de gens l'oublient au moment de la copie.
createcd ou createdvd pour un jeu PlayStation 2 ?
Sur PC avec PCSX2, createdvd donne le meilleur résultat. Sur Android avec AetherSX2 ou NetherSX2, ces CHD sont refusés et il faut passer par createcd. Ces deux applications n'étant plus maintenues, la situation ne devrait pas évoluer.
Combien de temps prend la conversion d'une bibliothèque entière ?
Cela dépend entièrement de votre processeur et du nombre de cœurs. Comptez quelques dizaines de secondes pour un CD PS1 sur une machine récente, et plusieurs minutes pour un DVD PS2. Pour une collection de plusieurs centaines de jeux, lancez le traitement par lot le soir et récupérez le résultat le lendemain.
Puis-je convertir directement depuis ma console portable Android ?
Oui, avec CHDroid. C'est pratique pour quelques titres, mais le processeur d'une console portable est bien plus lent qu'un PC de bureau et la conversion sollicite la carte microSD en écriture. Pour un lot important, faites-le sur ordinateur puis copiez les fichiers.
