Если вы увлекаетесь ретро-играми, возможно, вы встречали файлы с расширением CHD. Эти файлы обычно содержат небольшие драгоценности, которые используются для сохранения и каталогизации некоторых из самых старых игр, вышедших на аркадную сцену. Файлы CHD обычно работают рука об руку с эмулятором игровых автоматов с открытым исходным кодом, известным как MAME, но это не единственное их применение!
Что такое файлы CHD?
Эти файлы, известные как Компактные блоки данных, содержат полный спектр ресурсов, используемых в старых игровых автоматах, которые копируются эмулятором, известным как МАМЕ . В частности, в MAME эти файлы являются полными копиями содержимого жестких дисков игровых автоматов. Это объясняет, почему они такие большие.
В последнее время файлы CHD стали нишевой альтернативой файлам ISO или парам BIN/CUE для эмуляции больших игр, которые обычно запускались на компакт-дисках. Сюда входят такие эмуляторы, как некоторые ядра PlayStation Libretro в РетроАрка и, как следствие, все популярные эмуляционные дистрибутивы для микрокомпьютеров серии Raspberry Pi.
![Файл CHD, расположенный в папке, соответствующей MAME.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-storage.png)
Если ваши CHD являются ПЗУ MAME, их необходимо будет хранить в папке в каталоге ПЗУ MAME с тем же именем, что и у zip-архива, содержащего фактическую прошивку эмулируемого аркадного автомата. В Linux каталог ROM MAME обычно имеет вид ~/.mame/roms. В Windows это папка roms в каталоге, в который вы распаковали MAME с помощью портативного установщика.
![Стрелка указывает на папку ROM в установке Windows MAME.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-romsfolder.png)
Если это резервные копии игр для оригинальной PlayStation или какой-либо другой консоли, в которой использовались оптические диски, их следует поместить непосредственно в подкаталог ROM эмулятора.
В случае с эмуляторами консолей файлы CHD обычно содержат всю игру, поэтому вы можете «открыть их» в эмуляторе и начать играть. Однако в MAME они являются лишь активами игры, поскольку MAME в первую очередь имитирует аркадные автоматы.
В отличие от игровых консолей, аркадные автоматы, начиная с середины 80-х годов, обычно имели определенный профиль оборудования, позволяющий запускать одну-единственную игру. Они почти повсеместно следовали модели, согласно которой весь исполняемый код игры хранился в ПЗУ, а все визуальные ресурсы хранились либо на компакт-диске, либо, что чаще, на жестком диске.
![Структура файлов MAME, файлы CHD в папках изображения.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-filestructure.png)
Из-за этой модели MAME не может открывать CHD самостоятельно. Помните, что они представляют собой жесткий диск аркадных автоматов, в которых они обитают. MAME должен сначала открыть файл ROM, содержащий код выполнения (почти всегда zip-файл). Он будет искать папку с тем же именем, что и файл ROM, и искать там CHD. Структура каталогов в папке ROMs должна выглядеть следующим образом:
- игра
- game.chd
- game.zip
Если у вас есть только файл CHD, вам нужно найти правильную прошивку для игры, которая работает с используемой вами версией MAME.
Проверьте содержимое файла CHD
Лучший (и, насколько нам известно, единственный) инструмент для работы с файлами CHD исходит из их источника, от самой MAME. Он называется chdman
. В зависимости от ваших настроек MAME он либо уже установлен, либо вы можете добавить его на борт:
В Ubuntu/Debian/Mint:
sudo apt install mame-tools
В дистрибутивах на базе Fedora/RHEL:
sudo dnf install mame-tools
В Arch Linux:
sudo pacman -S mame-tools
Он должен быть предустановлен в Windows. Он будет называться chdman.exe в корневом каталоге MAME.
![Экран терминала, показывающий установку инструментов MAME в Arch Linux с помощью помощника YAY AUR.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-mametools.png)
Чтобы проверить изображение CHD и просмотреть некоторую информацию о его структуре, используйте:
chdman info -i IMAGE_FILENAME.chd
Если вы используете Windows, щелкните правой кнопкой мыши корневую папку MAME, выберите Открыть в терминале и введите:
.\chdman.exe info -i IMAGE_FILENAME.chd
![Демонстрация команды chdman, показывающей информацию о файле CHD.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-chdman.png)
Конвертируйте свои CHD
Вы можете использовать один и тот же инструмент для извлечения содержимого файла CHD и его создания.
Преобразование CHD в более доступный формат, например IMG для резервных копий на жестком диске или комбинацию BIN и CUE для резервных копий компакт-дисков, имеет смысл только в том случае, если вы собираетесь использовать эти файлы в другом эмуляторе, который не поддерживает поддержка формата CHD. В случае файлов образов жесткого диска используйте:
chdman extracthd -i IMAGE_FILE.CHD -o OUTPUT_FILE.IMG
Или для Windows:
.\chdman extracthd -i IMAGE_FILE.CHD -o OUTPUT_FILE.IMG
![Преобразование файла CHD в файл IMG.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-extraction.png)
Для резервных копий компакт-дисков замените extracthd
на extractcd
в приведенной выше команде.
Если вы используете эмулятор, такой как PCSX ReARMed или Demul, RetroArch, или какой-либо другой дистрибутив эмулятора для вашего Raspberry Pi , теоретически вам нужно всего лишь поместить файлы в путь к ПЗУ эмулятора, чтобы он мог обнаружить и используйте их.
Ваша папка ROM может выглядеть хаотичной, если она содержит резервные копии более чем одной игры, которые:
- Изначально был в формате компакт-диска.
- Теперь хранится в комбинациях BIN и CUE.
- Содержит несколько звуковых дорожек.
При использовании комбинации CUE и BIN каждая дорожка исходного компакт-диска сохраняется как отдельный файл BIN, поэтому одну игру можно разделить на десятки файлов.
Формат файла CHD был создан как более современный способ хранения таких ПЗУ, поэтому превосходный во всех отношениях. Все может содержаться в одном файле, а сжатие без потерь разумно применяется в зависимости от содержимого для достижения оптимальных результатов. Например, типичные данные можно сжимать с помощью алгоритма zlib
, а отдельные звуковые дорожки сжимаются с помощью Flac. Это приводит к высокой степени сжатия с нулевой потерей данных, поскольку используемые типы сжатия «без потерь».
Чтобы преобразовать игру, разделенную между CUE и набором файлов BIN, в один файл CHD, используйте:
chdman createcd -i "FILENAME.cue" -o "OUTPUT_FILENAME.chd"
Или в Windows:
.\chdman.exe createcd -i "FILENAME.cue" -o "OUTPUT_FILENAME.chd"
Хотя это возможно, вам не нужно настраивать параметры сжатия: оптимальный вариант будет выбран автоматически. Во время преобразования chdman, помимо прочей информации, представит различные типы сжатия, которые он использует в каждом случае.
![Сжатие комбинации CUE/BIN в файл CHD.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-compression.png)
После завершения преобразования попробуйте загрузить новый файл CHD в тот же эмулятор, который вы изначально использовали для загрузки этой игры. Если это работает, удалите исходные файлы и перейдите к следующей игре.
![Файловый менеджер, отображающий преобразованный файл CHD.](https://saintist.ru/wp-content/uploads/2024/05/chdfiles-convertedfile.png)
Когда вы проверите файлы, вы можете заметить, что вновь созданный файл CHD значительно меньше преобразованных вами файлов BIN, IMG или ISO, поскольку многие из этих ПЗУ содержат артефакты игровых систем, для которых они были разработаны, и действовать так, как будто определенные биты их данных все еще должны занимать определенные позиции на диске. Поскольку вы используете эмулятор, сжатие избавит вас от лишнего мусора, не влияя на общее качество контента, который вам нравится.
Если у вас много ретро-игр, то при конвертации самых больших из них в формат CHD, по крайней мере, для эмуляторов, которые его поддерживают, вы можете в конечном итоге сэкономить несколько гигабайт пространства — гигабайт, которые затем можно использовать для хранения еще больше ретро-игр! Если вы любите играть в ретро-игры, узнайте, как перемотать их в предыдущее состояние .
Все изображения и скриншоты созданы Мигелем Лейва-Гомесом.