O que são arquivos CHD e como você pode usá-los?

Um jogo rodando a partir de um arquivo CHD com seu ROM acompanhante apropriado.

Se você gosta de jogos retro, pode ter encontrado arquivos com a extensão CHD. Esses arquivos geralmente contêm pequenas preciosidades que são usadas para preservar e catalogar alguns dos jogos mais antigos que chegaram à cena dos fliperamas. Os arquivos CHD normalmente funcionam em conjunto com um emulador de máquinas de fliperama de código aberto conhecido como MAME, mas essa não é a única utilização deles!

Índice

  • O que são arquivos CHD?
  • Verificar conteúdo do arquivo CHD
  • Converter seus CHDs

O que são arquivos CHD?

Conhecidos como Compact Hunks of Data, esses arquivos contêm todo o espectro de ativos usados em máquinas de fliperama mais antigas que são replicadas por um emulador conhecido como MAME. Especificamente no MAME, esses arquivos são réplicas completas do conteúdo dos discos rígidos encontrados nas máquinas de fliperama. Isso explica o porquê de serem tão grandes.

Mais recentemente, os arquivos CHD se tornaram uma alternativa de nicho aos arquivos ISO ou pares BIN/CUE para emular grandes jogos que normalmente rodavam em CD-ROMs. Isso inclui emuladores como alguns dos núcleos Libretro do PlayStation no RetroArch e, por extensão, todas as distribuições populares orientadas à emulação para a série de microcomputadores Raspberry Pi.

Um arquivo CHD residindo na sua pasta adequada para MAME.

Se seus CHDs forem ROMs do MAME, eles precisarão ser armazenados em uma pasta dentro do diretório de ROMs do MAME com o mesmo nome de um arquivo zip que contém o firmware real da máquina de fliperama sendo emulada. No Linux, o diretório de ROMs do MAME é geralmente ~/.mame/roms. No Windows, é a pasta roms dentro do diretório onde você extraiu o MAME com o instalador portátil.

Uma seta aponta para a pasta ROMs dentro de uma instalação do MAME no Windows.

Se forem backups de jogos para o PlayStation original ou algum outro console que usou discos ópticos, eles devem ser colocados diretamente no subdiretório ROM do emulador.

No caso dos emuladores de console, os arquivos CHD geralmente contêm o jogo completo, então você pode “abri-los” no emulador e começar a jogar. No MAME, porém, eles são apenas os ativos do jogo, já que o MAME emula principalmente máquinas de fliperama.

Diferente dos consoles de jogos, as máquinas de fliperama a partir de meados dos anos 80 geralmente tinham um perfil de hardware específico que permitia que elas rodassem um único jogo. Elas quase universalmente seguiam um modelo, onde todo o código de execução de um jogo seria armazenado em um chip ROM, e todos os ativos visuais seriam armazenados em um CD ou, mais comumente, em um disco rígido.

Estrutura de arquivos do MAME, arquivos CHD dentro das pastas na imagem.

O MAME não pode abrir CHDs por conta própria devido a esse modelo. Lembre-se, eles são a parte do disco rígido das máquinas de fliperama que habitavam. O MAME deve primeiro abrir um arquivo ROM contendo o código de execução (quase universalmente um arquivo zip). Ele procurará por uma pasta com o mesmo nome que o arquivo ROM e procurará o CHD ali. A estrutura do diretório dentro da pasta de ROMs, então, deve parecer assim:

  • jogo - game.chd
  • jogo.zip

Se tudo o que você tem é o arquivo CHD, você precisará encontrar o firmware correto para o jogo que funcione com a versão do MAME que você está usando.

Verificar conteúdo do arquivo CHD

A melhor (e, pelo que sabemos, única) ferramenta para trabalhar com arquivos CHD vem de sua fonte, do próprio MAME. Chama-se chdman. Dependendo da sua configuração do MAME, ela já pode estar instalada, ou você pode trazê-la:

No Ubuntu/Debian/Mint:

sudo apt install mame-tools

No Fedora/RHEL-based distros:

sudo dnf install mame-tools

No Arch Linux:

sudo pacman -S mame-tools

Deve estar pré-instalada no Windows. Chamar-se-á chdman.exe dentro do diretório raiz do MAME.

Uma exibição de terminal mostrando a instalação das ferramentas do MAME no Arch Linux usando o helper YAY AUR.

Para verificar uma imagem CHD e ver algumas informações sobre sua estrutura, use:

chdman info -i IMAGE_FILENAME.chd

Se você estiver usando Windows, clique com o botão direito na pasta raiz do MAME, clique em Abrir no Terminal, e então digite:

.\chdman.exe info -i IMAGE_FILENAME.chd

Uma demonstração do comando chdman mostrando informações sobre um arquivo CHD.

Converter seus CHDs

Você pode usar a mesma ferramenta para extrair o conteúdo de um arquivo CHD e para criar um.

Converter um CHD para um formato mais acessível, como IMG para backups de disco rígido ou uma combinação BIN & CUE para backups de CD, só é útil se você for usar esses arquivos em um emulador diferente que não suporta o formato CHD. No caso de arquivos de imagem de disco rígido, use:

chdman extracthd -i IMAGE_FILE.CHD -o OUTPUT_FILE.IMG

Ou para Windows:

.\chdman extracthd -i IMAGE_FILE.CHD -o OUTPUT_FILE.IMG

Para backups de CD, substitua extracthd por extractcd no comando acima.

Se você estiver usando um emulador como PCSX ReARMed ou Demul, RetroArch ou alguma distribuição de emulador para seu Raspberry Pi, teoricamente, você só precisa colocar seus arquivos no caminho de ROM do emulador para que ele os detecte e os use.

Sua pasta de ROMs pode parecer caótica se contiver backups de mais de um jogo que:

  • Estava originalmente em formato CD
  • Agora está armazenado em combinações BIN & CUE
  • Contém várias faixas de áudio

Com a combinação CUE & BIN, cada faixa do CD original é salva como um arquivo BIN separado, então um único jogo pode ser dividido em dezenas de arquivos.

O formato de arquivo CHD foi criado como uma maneira mais moderna de armazenar tais ROMs, assim se destacando em todos os aspectos. Tudo pode ser contido em um único arquivo, e a compressão sem perdas é aplicada inteligentemente dependendo do conteúdo para resultados ideais. Por exemplo, dados típicos poderiam ser comprimidos com o algoritmo zlib, mas faixas de áudio individuais são comprimidas com Flac. Isso resulta em ótimas taxas de compressão com zero perda de dados, uma vez que os tipos de compressão utilizados são “sem perdas”.

Para converter um jogo dividido entre um CUE e vários arquivos BIN para um único arquivo CHD, use:

chdman createcd -i"FILENAME.cue"-o"OUTPUT_FILENAME.chd"

Ou no Windows:

.\chdman.exe createcd -i "FILENAME.cue"-o "OUTPUT_FILENAME.chd"

Embora você possa, não precisa ajustar os parâmetros de compressão – as escolhas ótimas serão automaticamente selecionadas para você. Durante a conversão, o chdman apresentará, entre outras informações, os diferentes tipos de compressão que utiliza em cada caso.

Compressão da combinação CUE/BIN em um arquivo CHD.

Após a conclusão da conversão, tente carregar seu novo arquivo CHD no mesmo emulador que você usou inicialmente para carregar aquele jogo. Se funcionar, delete os arquivos originais e passe para o próximo jogo.

Gerenciador de arquivos exibindo o arquivo CHD convertido.

Quando você verificar os arquivos, pode notar que o novo arquivo CHD criado é significativamente menor do que os arquivos BIN, IMG ou ISO que você converteu, já que muitos desses ROMs contêm artefatos dos sistemas de jogos para os quais foram projetados e atuam como se certos bits de seus dados ainda precisassem ocupar certas posições no disco. Como você está usando um emulador, a compressão eliminará muito desse inchaço sem impactar a qualidade geral do conteúdo que você aprecia.

Se você mantiver muitos jogos retro, ao converter os maiores deles para o formato CHD, pelo menos para os emuladores que o suportam, você pode acabar economizando vários gigabytes de espaço – gigabytes que você poderia usar para armazenar ainda mais jogos retro! Se você gosta de jogar jogos retro, aprenda como retrocedê-los a um estado anterior.

Todas as imagens e capturas de tela por Miguel Leiva-Gomez.