Как навести порядок в BIOS для десятков эмуляторов раз и навсегда

01 сен 2026
6,948
662
126
1 неделя

RetroBIOS

Каждый, кто хоть раз настраивал ретро-комбайн на Steam Deck, старом мини-ПК или Raspberry Pi, знает эту рутину. Вы ставите Batocera, EmuDeck или обычный RetroArch, закидываете любимые игры для PlayStation 2 или Sega Saturn, запускаете ром и видите темный экран. Лог сообщает, что не хватает файла вроде scph1001.bin или saturn_bios.bin.

Дальше начинается типичный квест: вы идете в поисковик, находите сомнительные сайты с рекламой, качаете архивы весом в 50 гигабайт с кучей дубликатов и мусора. Половина дампов переименована с ошибками, контрольные суммы не сходятся, а эмулятор продолжает падать. Проект RetroBIOS решает эту проблему инженерным подходом.

Почему документация эмуляторов часто врет

Главная проблема с биосами кроется в рассинхронизации. Авторы фронтендов и оболочек (например, Recalbox или Batocera) пишут свои списки необходимых файлов в вики. Разработчики ядер эмуляторов тем временем обновляют кодовую базу, меняют требования к именам файлов, добавляют поддержку новых ревизий чипов или меняют алгоритмы инициализации железа.

В итоге официальный список BIOS для фронтенда может годами не соответствовать тому, что реально запрашивает бинарник эмулятора при старте.

Реклама

Создатели RetroBIOS пошли с другого конца. Вместо чтения устаревших форумов и вики-страниц они анализируют непосредственно исходный код эмуляторов. Если ядро Libretro или отдельный эмулятор ищет файл конкретного размера с определенным MD5-хешем, этот факт фиксируется как единственный источник правды.

Что внутри проекта

Репозиторий объединяет огромную базу метаданных, скрипты верификации и готовые наборы системных файлов для 12 популярных платформ: Batocera, BizHawk, EmuDeck, Lakka, MiSTer FPGA, ROCKNIX, Recalbox, RetroArch, RetroBat, RetroDECK, RetroPie и RomM.

Масштаб проделанной работы впечатляет цифрами:

  • 436 эмуляторов разобрано по исходникам
  • 463 игровые системы, от древних Atari и ZX Spectrum до PS3 и Nintendo Switch
  • 8 925 файлов в базе, включая системные прошивки, аркадные сетки и системные шрифты
  • 5 типов контрольных сумм для каждого файла (MD5, SHA1, SHA256, CRC32, Adler-32)

Разработчики проекта также сверяют системные дампы с базами сохранения цифрового наследия вроде No-Intro, Redump и TOSEC.

Отдельный интерес представляет так называемый gap analysis. В документации проекта открыто перечислено то, чего в базе пока нет: редкие дампы, которые сообщество пока физически не сделало, или уникальные ключи шифрования конкретных пользовательских консолей.

Как установить все в одну команду

Для быстрой настройки авторы написали установочные скрипты. Они сами распознают вашу операционную систему, сверяют хеши уже имеющихся у вас файлов и скачивают только то, чего не хватает.

Для Linux, macOS и Steam Deck достаточно выполнить в терминале:

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh

На Windows через PowerShell:

irm https://raw.githubusercontent.com/Abdess/retrobios/main/install.ps1 | iex

Если вы настраиваете SD-карту для портативной консоли прямо с компьютера, можно передать целевой путь и платформу аргументами:

curl -fsSL https://raw.githubusercontent.com/Abdess/retrobios/main/install.sh | sh -s -- --platform retroarch --dest /path/to/sdcard

Скрипт проверяет файлы ровно тем способом, которым их проверяет выбранная оболочка. Например, Batocera сверяет MD5-хеш каждого файла, BizHawk ориентируется на SHA1, а RetroArch проверяет лишь корректность имени файла в папке system/.

Сборка собственных паков через Python

Если вы не хотите тянуть весь архив на несколько гигабайт, а собираете минималистичную систему под пару конкретных платформ, в репозитории есть удобные CLI-инструменты. Для их работы нужен только Python 3 и библиотека pyyaml.

Собрать пак только для эмулятора Dolphin:

python scripts/generate_pack.py --emulator dolphin

Сгенерировать набор файлов исключительно под PlayStation 2:

python scripts/generate_pack.py --system sony-playstation-2

Посмотреть доступный список платформ и ядер:

python scripts/generate_pack.py --list-emulators
python scripts/generate_pack.py --list-systems

Также есть скрипт валидации. Он сканирует вашу существующую директорию с биосами и выдает детальный отчет: какие файлы лежат на месте, где поврежден хеш, а каких дампов не хватает для запуска определенных игр.

python scripts/verify.py --platform batocera
python scripts/verify.py --emulator flycast

Открытые данные для разработчиков

RetroBIOS полезен не только как источник готовых файлов, но и как структурированная база данных. На сайте документации авторы публикуют выгрузки в форматах JSON, CSV и SQLite со всеми хешами, путями и зависимостями эмуляторов.

Если вы пишете собственный лаунчер, менеджер ромов или настраиваете кастомную сборку Linux для портативок, эти файлы избавят вас от необходимости вручную парсить исходники сотен ядер. Сообщество уже начало собирать свои утилиты на базе этих данных, например, сканеры для сортировки домашних архивов.

Нюансы и лицензирование

Исходный код скриптов и утилит сборки распространяется под лицензией MIT. Системные файлы и прошивки относятся к стороннему проприетарному софту, поэтому распространяются на условиях сохранения для личного бэкапа и совместимости. Авторы держат открытую страницу NOTICE с формой для запросов на удаление файлов от правообладателей.

Архивы размером больше 2 ГБ в релизах разделены на тома .zip.001 и .zip.002. Их можно распаковать через 7-Zip или склеить обычной командой cat Pack.zip.0* > Pack.zip в терминале перед распаковкой.

Стоит ли пробовать

Если у вас есть портативная консоль (Anbernic, Miyoo, Steam Deck), ретро-сборка на Raspberry Pi или вы просто запускаете эмуляторы на рабочем ПК, положите этот репозиторий в закладки.

Вместо хаотичного поиска архивов по форумам вы получаете чистую коллекцию, где каждый байт проверен по исходному коду самого эмулятора. Скрипт ставится за пару минут и экономит часы ручной возни с директориями.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.