Что такое файл ROM?

Файл ROM — это цифровая копия микросхемы постоянной памяти из физического игрового картриджа или диска. Когда вы извлекаете данные из картриджа, полученный двоичный файл содержит заголовок — небольшой блок байтов в самом начале — который описывает игру и оборудование, для которого она была создана. Каждое семейство консолей использует свою уникальную структуру заголовка, поэтому ROM для NES выглядит принципиально иначе, чем ROM для Game Boy или Sega Genesis на уровне байтов.

Заголовок обычно содержит информацию, такую как целевой регион, тип картографа памяти, размеры ROM и RAM, а также код идентификатора игры. Это позволяет определить исходную консоль только по файлу, без необходимости полагаться исключительно на расширение файла.

Описание инструмента

Загрузите любой файл ROM, и инструмент мгновенно определит, какой игровой консоли он принадлежит. Он читает двоичный заголовок, сравнивает его с известными сигнатурами консолей и возвращает название консоли вместе с метаданными, специфичными для системы, такими как регион, код игры, тип картографа, размеры ROM/RAM и криптографические хеши (CRC32 и SHA-1). Также поддерживаются ZIP-архивы, содержащие ROM — инструмент автоматически извлечет и проанализирует первый найденный ROM внутри.

Поддерживаемые консоли

Консоль Ключ системы Примечания
NES / Famicom nes Заголовки iNES 1.0 и NES 2.0; определяет картограф и под-картограф
Super Nintendo sfc Определяет LoROM / HiROM, скорость ROM, сопроцессоры (SuperFX, SA-1, DSP)
Nintendo 64 n64 Разбор заголовка, определение региона, варианты с обратным порядком байтов (.z64, .v64)
Game Boy / Color gb Определяет тип MBC, размер RAM, совместимость GBC / SGB
Game Boy Advance gba Извлекает ID игры и тип сохранения (SRAM / Flash / EEPROM)
Nintendo DS nds Код игры, регион, код устройства (совместимо с DSi), емкость устройства
Sega Genesis / Mega Drive genesis Внутреннее и зарубежное название, серийный номер, регион
Sega Master System sms Заголовок TMR SEGA, код продукта, регион
Sega Game Gear gg На основе формата заголовка Master System
PC Engine / TurboGrafx-16 pce Базовая идентификация
WonderSwan ws Заголовок в конце ROM, ID игры, модель
WonderSwan Color wsc Заголовок в конце ROM, ID игры, модель

Примеры

Результат загрузки ROM для NES

Обнаруженная консоль  NES / Famicom
Ключ системы        nes
CRC32             7d2d8d2c
SHA-1             a793e28a...
Версия NES       iNES 1.0
Картограф            4
PRG ROM           256 KB
CHR ROM           128 KB
Регион            NTSC

Результат загрузки ROM для SNES

Обнаруженная консоль  Super Nintendo (SNES)
Ключ системы        sfc
CRC32             b19ed489
Тип ROM          LoROM
Скорость ROM         SlowROM
RAM               8 KB

Возможности

  • Определение консоли по байтам заголовка: Определяет консоль путем чтения двоичных магических слов и структур заголовков, а не только по расширению файла
  • Поддержка ZIP-архивов: Загрузите файл .zip, содержащий ROM, и инструмент автоматически проанализирует ROM внутри
  • Метаданные, специфичные для системы: Отображает тип картографа, регион, код игры, название, серийный номер, размеры ROM и RAM в зависимости от обнаруженной консоли
  • Двойной вывод хеша: Одновременно вычисляет CRC32 и SHA-1 — два наиболее часто используемых контрольных суммы в базах данных проверки ROM
  • Анализ на стороне сервера: Обработка происходит на сервере с использованием библиотеки roomie, поэтому ограничения JavaScript на стороне клиента не применяются к разбору файлов

Варианты использования

  • Организация библиотеки ROM: Быстро определите неподписанные или неправильно названные файлы ROM и отсортируйте их по консолям без необходимости открывать эмулятор
  • Проверка дампов ROM: Сравните хеш CRC32 или SHA-1 с базами данных No-Intro, Redump или TOSEC, чтобы подтвердить, что ROM является известным хорошим дампом
  • Настройка эмулятора: Подтвердите точный картограф и регион ROM для NES или SNES перед настройкой эмулятора, который требует этой информации вручную

Ограничения

  • Определение зависит от наличия действительного заголовка в файле. ROM без заголовка или поврежденные ROM могут не быть распознаны.
  • За одну загрузку анализируется только один ROM. Для ZIP-архивов с несколькими ROM обрабатывается только первый найденный файл.
  • Определение консоли охватывает системы, перечисленные выше; форматы ROM для других платформ не поддерживаются.