Pile de disques optiques vierges à côté d'un lecteur externe fin et fermé

Una libreria PlayStation 1 completa pesa diversi centinaia di gigabyte in BIN/CUE. La stessa libreria in CHD spesso entra in una scheda di memoria di metà dimensione, con un solo file per gioco anziché una coppia .cue più una pila di .bin. Il formato proviene da MAME, è lossless e quasi tutti gli emulatori di console a CD lo leggono oggi.

La conversione si effettua con uno strumento a riga di comando, chdman, o con un'interfaccia grafica. Non è complicato, ma tre insidie fanno perdere una serata quando non si conoscono: i giochi PAL protetti, i giochi multi-disco e alcuni emulatori che rifiutano certe varianti del formato.

Cos'è realmente un file CHD

CHD significa Compressed Hunks of Data. Il formato è stato creato per archiviare i dischi rigidi delle sale giochi in MAME, poi esteso alle immagini di CD e DVD. Due proprietà contano per te.

Innanzitutto, la compressione è lossless. I dati restituiti sono identici bit per bit all'immagine originale. Non è un re-encoding: la musica non è degradata, nemmeno i video.

Inoltre, il CHD è un contenitore unico. Un gioco Saturn fornito in un .cue e ventitré .bin diventa un unico .chd. Le tue cartelle diventano leggibili e gli scraper di copertine se ne trovano molto meglio. Se la tua struttura di cartelle è già un cantiere, la nostra guida sull'organizzazione delle cartelle secondo il firmware tratta la questione in dettaglio.

Tecnicamente, chdman taglia l'immagine in blocchi (gli hunks) e applica a ciascuno il miglior codec tra quelli autorizzati. Per un CD, i codec predefiniti sono cdlz, cdzl e cdfl: LZMA, Deflate e FLAC, applicati separatamente ai dati, all'audio e ai sottocanali. È questa miscela che spiega le differenze di guadagno da un gioco all'altro.

Quali sistemi ne traggono vantaggio, quali non ne traggono alcun vantaggio

Il CHD ha interesse solo per i supporti ottici. Una cartuccia è già un file compatto e spesso già compresso dal core stesso: convertire una ROM Super Nintendo non apporta nulla e nessun emulatore saprà rileggerla.

Sistema Formato consigliato Commento
PlayStation 1 CHD Il caso più conveniente. Leggibile da DuckStation, Beetle PSX, SwanStation.
Sega Saturn CHD Beetle Saturn e Yabause accettano .chd. Fine delle cartelle con venti tracce.
Dreamcast CHD Conversione da GDI o CUE, leggibile da Flycast.
Mega CD, PC Engine CD, Neo Geo CD, 3DO, CD32 CHD Core libretro aggiornati. Il core Opera (3DO) accetta .chd.
PlayStation 2 CHD Funziona, ma leggi più avanti la sezione sugli emulatori Android.
PSP CHD o CSO CHD supportato da PPSSPP 1.17, leggermente migliore del CSO.
GameCube, Wii RVZ Formato proprietario di Dolphin, più efficace qui. Dolphin non legge il CHD.
Cartucce (NES, SNES, Mega Drive, GBA, N64…) Nessuno Archivio ZIP o 7z se necessario, mai CHD.

Per GameCube e Wii, la conversione si effettua in Dolphin: clic destro sul gioco, Convert File, quindi formato RVZ. La dicitura esatta varia a seconda della versione dell'emulatore.

Il guadagno reale, e perché varia così tanto

L'ordine di grandezza generalmente osservato si colloca tra il 30 e il 60% di spazio recuperato. Alcune misure pubblicate danno un'idea: Resident Evil 2 (PS1, disco 1) passa da 656 MB a 370 MB, Devil May Cry (PS2) da 4,69 GB a 1,84 GB, Summon Night 5 (PSP) da 912 MB a 337 MB. Su un lotto misto, dividere per due è un obiettivo realistico.

La varianza deriva dal contenuto del disco. Un DVD PS2 è per la maggior parte riempito di vuoto o di dati ridondanti: il riempimento si comprime enormemente. Al contrario, un CD di cui metà del disco è occupato da tracce audio guadagna molto meno. Queste tracce sono trattate in FLAC, che è eccellente ma rimane compressione audio lossless: si recupera tipicamente un terzo o la metà, non il 90%.

Stessa logica per i giochi pieni di cinemaghe. I video sono già compressi alla fonte; ricomprimerli non dà quasi nulla. Un gioco platform PS1 breve e asciutto può ridursi del 70%, un gioco di ruolo Mega CD con colonna sonora Redbook completa scenderà a malapena del 20%. Non calibrare l'acquisto di una scheda di memoria sul caso migliore; la nostra guida alle schede microSD dà le capacità che reggono.

Il metodo con chdman

Ottenere lo strumento

chdman è distribuito con MAME. Sotto Windows, si trova nell'archivio MAME ufficiale con il nome chdman.exe, ed è fornito anche con l'interfaccia namDHC. Sotto macOS, con Homebrew:

brew install rom-tools

Sotto Debian e Ubuntu, il pacchetto si chiama mame-tools:

sudo apt install mame-tools

Avvia quindi chdman senza alcun argomento: il programma mostra la sua versione e la lista dei comandi. I repository Linux incorporano a volte una versione molto arretrata di MAME; se punti a PSP o PS2, preferisci un binario recente.

Convertire un CD

Per un'immagine CD, a prescindere dal sistema (PS1, Saturn, Dreamcast, Mega CD, PC Engine CD, 3DO):

chdman createcd -i "gioco.cue" -o "gioco.chd"

Il comando accetta anche immagini .gdi, .toc e .iso in ingresso. Il file .cue deve essere corretto e i .bin a cui fa riferimento presenti nella stessa cartella, altrimenti la conversione si ferma immediatamente.

Convertire un DVD (PS2, PSP)

Per un'immagine DVD, il comando è diverso, e la dimensione del blocco conta:

chdman createdvd -hs 2048 -i "gioco.iso" -o "gioco.chd"

L'opzione -hs 2048 fissa la dimensione dell'hunk a 2 048 byte. La documentazione di PPSSPP lo raccomanda per le immagini PSP: su PPSSPP 1.17, era l'unica dimensione che dava prestazioni corrette. Il problema è stato corretto da allora, ma è sempre il comando consigliato dalla documentazione. Da PPSSPP 1.17.1, una modalità Zstandard è disponibile anche ed è un po' più veloce:

chdman createdvd -hs 2048 -i "gioco.iso" -o "gioco.chd" -c zstd

Non usare createraw per un gioco: questo comando produce un CHD grezzo, senza la struttura di un CD o di un DVD, e la documentazione di PPSSPP lo sconsiglia.

Elaborare un'intera cartella

Sotto Linux e macOS, un ciclo sui file .cue della cartella corrente:

for f in *.cue; do chdman createcd -i "$f" -o "${f%.cue}.chd"; done

Per scendere nelle sottocartelle:

find . -type f -name "*.cue" -exec sh -c 'chdman createcd -i "$1" -o "${1%.cue}.chd"' _ {} \;

Sotto Windows, in un file .bat posizionato accanto a chdman.exe:

for /r %%i in (*.cue) do chdman createcd -i "%%i" -o "%%~dpni.chd"

Se digiti questa stessa riga direttamente nel prompt dei comandi, sostituisci %%i con %i. La conversione è esigente in termini di CPU: calcola da qualche secondo a diversi minuti per gioco, e molto di più per un DVD PS2.

Non cancellare nulla subito. Converti, testa almeno un gioco per sistema sulla macchina di destinazione, e solo dopo cancella gli originali. Una conversione riuscita lato strumento non garantisce che il tuo emulatore accetterà il risultato.

Senza riga di comando

Due soluzioni comuni, entrambe costruite attorno allo stesso chdman:

  • namDHC (Windows, gratuito, GPL-3.0): un'interfaccia grafica che elabora più file in una volta e espone le opzioni di chdman. Ha bisogno di chdman.exe nella stessa cartella; il repository del progetto lo fornisce.
  • CHDroid (Android): converte direttamente sul telefono o su una console Android. Pratico su una Retroid Pocket o una AYN, ma lento su DVD di grandi dimensioni.

Queste interfacce riprendono le opzioni della riga di comando. Verifica che usino correttamente la modalità DVD per PS2 e PSP.

Le insidie che fanno perdere una serata

I giochi PS1 PAL protetti e il loro file .sbi

Una parte dei giochi PlayStation 1 europei incorpora una protezione chiamata LibCrypt, che si basa su dati dei sottocanali assenti da un dump BIN/CUE classico. Questi dati sono forniti separatamente, in un piccolo file .sbi.

chdman non lo integra nel CHD. Conserva il .sbi accanto al .chd, con esattamente lo stesso nome di base: Ape Escape (Europe).chd e Ape Escape (Europe).sbi. DuckStation come Beetle PSX lo caricano quindi automaticamente. Per un gioco PAL protetto in più dischi raggruppati in un unico file PBP, la documentazione di Beetle PSX indica una nomenclatura [nome]_[numero del disco].sbi. Senza questo file, il gioco parte e poi si blocca o cicla su uno schermo, il che sembra a tutti gli effetti un'immagine corrotta.

I giochi multi-disco e il file .m3u

Convertire ogni disco separatamente dà tanti file .chd. Perché l'emulatore li veda come un unico gioco e gestisca il cambio disco, crea un file di testo con estensione .m3u con il nome del gioco, contenente un nome di file per riga, senza percorso, nella stessa cartella:

  • Final Fantasy VII (France) (Disc 1).chd
  • Final Fantasy VII (France) (Disc 2).chd
  • Final Fantasy VII (France) (Disc 3).chd

Avvia quindi il .m3u, mai il disco 1 direttamente. È anche ciò che permette alla scheda di memoria virtuale di essere condivisa tra i dischi.

Gli emulatori che non lo vogliono

Il caso più frequente oggi riguarda la PlayStation 2 su Android: AetherSX2 e NetherSX2 sono noti per rifiutare i CHD creati con createdvd. Il workaround noto consiste nel generare queste immagini con createcd, al costo di un file un po' più grande. AetherSX2 non è più sviluppato e NetherSX2 non è che una versione modificata: non contare su una patch. ARMSX2, più recente e derivato da PCSX2, legge anche lui il CHD: testa un gioco convertito con createdvd prima di elaborare un intero lotto. Su PC, PCSX2 non pone questo problema. L'argomento è sviluppato in il nostro articolo sugli emulatori PS2 portatili.

L'altro caso è quello dei core vecchi forniti con alcuni firmware originali di console di fascia bassa: il supporto del CHD è arrivato gradualmente nei core libretro, e un build del 2019 può benissimo non conoscerlo. Sintomo tipico: il gioco non appare nella lista, o l'emulatore si chiude senza messaggio. Aggiornare il firmware risolve il problema nove volte su dieci — vedi la nostra tabella di compatibilità firmware e, se il gioco insiste, la lista delle cause di mancato avvio.

Tornare indietro

Un CHD non è un viaggio di sola andata. Per ricostituire l'immagine originale:

chdman extractcd -i "gioco.chd" -o "gioco.cue"

Recuperi un .cue e i suoi .bin. L'estensione del file di output determina il formato prodotto: indica .gdi per un dump Dreamcast in GDI. Per un DVD:

chdman extractdvd -i "gioco.chd" -o "gioco.iso"

Due comandi utili prima di cancellare qualsiasi cosa: chdman info -i "gioco.chd" mostra la versione del contenitore e i codec usati, chdman verify -i "gioco.chd" controlla l'integrità del file. Il contenuto estratto è identico all'originale; solo la suddivisione delle tracce può differire dal tuo dump iniziale, senza conseguenze per l'emulazione.

Promemoria: la conversione in CHD non cambia nulla alla questione della provenienza dei file. Si applica a immagini che possiedi già legittimamente. Non forniamo né giochi, né BIOS, né link di download. Le soluzioni legali per costituirsi una libreria sono riunite nella nostra pagina Dove giocare legalmente.

In pratica

Inizia con un solo gioco, in createcd, testalo sulla console interessata, poi avvia il lotto durante la notte. Conserva gli originali fino alla validazione completa, e non dimenticare i file .sbi e .m3u durante la copia sulla scheda. Una volta convertita la libreria, una scheda da 128 GB accoglie senza difficoltà ciò che ne richiedeva 256 prima — e se devi comunque aumentare la capacità, vedi le nostre schede microSD.

Il CHD degrada la qualità audio o video del gioco?

No. La compressione è rigorosamente lossless, inclusi i canali audio, trattati in FLAC. I dati restituiti sono identici a quelli dell'immagine originale. È verificabile con il comando chdman verify, quindi re-estraendo il file.

Devo convertire anche i miei giochi Game Boy Advance o Super Nintendo?

No, non ha alcun interesse. Il CHD è progettato per le immagini di dischi ottici. Le cartucce sono già file di piccole dimensioni, e nessun emulatore di console a cartuccia legge il CHD. Se vuoi guadagnare spazio, la maggior parte dei core libretro accetta direttamente gli archivi ZIP.

Perché il mio gioco PS1 europeo crasha dopo la conversione?

È quasi sempre la protezione LibCrypt. Il file .sbi che accompagnava l'immagine originale deve rimanere nella stessa cartella del .chd e avere lo stesso nome di base. Non è integrato nel CHD durante la conversione, e molte persone lo dimenticano al momento della copia.

createcd o createdvd per un gioco PlayStation 2?

Su PC con PCSX2, createdvd dà il miglior risultato. Su Android con AetherSX2 o NetherSX2, questi CHD sono generalmente rifiutati e bisogna passare per createcd; con ARMSX2, testa prima un gioco. Poiché AetherSX2 non è più sviluppato e NetherSX2 non è che una versione modificata, la situazione non dovrebbe evolvere.

Quanto tempo ci vuole per la conversione di un'intera libreria?

Dipende interamente dalla tua CPU e dal numero di core. Calcola qualche decina di secondi per un CD PS1 su una macchina recente, e diversi minuti per un DVD PS2. Per una collezione di diversi centinaia di giochi, avvia l'elaborazione in batch la sera e recupera il risultato il giorno dopo.

Posso convertire direttamente dalla mia console portatile Android?

Sì, con CHDroid. È pratico per qualche titolo, ma la CPU di una console portatile è molto più lenta di un PC desktop e la conversione sollecita la scheda microSD in scrittura. Per un lotto importante, fallo sul computer e poi copia i file.

Chd, Chdman, Émulation, Playstation, Rubrique-technique, Stockage

Lascia un commento