O que é um arquivo ROM?

Um arquivo ROM é uma cópia digital do chip de memória somente leitura de um cartucho de jogo físico ou disco. Quando você extrai os dados de um cartucho, o arquivo binário resultante contém um cabeçalho — um pequeno bloco de bytes no início — que descreve o jogo e o hardware para o qual foi construído. Cada família de console usa sua própria estrutura de cabeçalho única, então um ROM de NES parece fundamentalmente diferente de um ROM de Game Boy ou Sega Genesis no nível de bytes.

O cabeçalho normalmente armazena informações como a região de destino, tipo de mapeador de memória, tamanhos de ROM e RAM, e um código identificador do jogo. Isso torna possível detectar o console de origem apenas do arquivo, sem depender apenas da extensão do arquivo.

Descrição da ferramenta

Envie qualquer arquivo ROM e a ferramenta identificará instantaneamente a qual console de jogo ele pertence. Ela lê o cabeçalho binário, compara com assinaturas conhecidas de consoles e retorna o nome do console junto com metadados específicos do sistema, como região, código do jogo, tipo de mapeador, tamanhos de ROM/RAM e hashes criptográficos (CRC32 e SHA-1). Arquivos ZIP contendo uma ROM também são suportados — a ferramenta extrairá e analisará a primeira ROM encontrada dentro.

Consoles suportados

Console Chave do sistema Notas
NES / Famicom nes Cabeçalhos iNES 1.0 e NES 2.0; detecta mapeador e sub-mapeador
Super Nintendo sfc Detecta LoROM / HiROM, velocidade de ROM, co-processadores (SuperFX, SA-1, DSP)
Nintendo 64 n64 Análise de cabeçalho, detecção de região, variantes com byte-swap (.z64, .v64)
Game Boy / Color gb Detecta tipo de MBC, tamanho de RAM, compatibilidade GBC / SGB
Game Boy Advance gba Extrai ID do jogo e tipo de save (SRAM / Flash / EEPROM)
Nintendo DS nds Código do jogo, região, código da unidade (compatível com DSi), capacidade do dispositivo
Sega Genesis / Mega Drive genesis Título doméstico e internacional, número de série, região
Sega Master System sms Cabeçalho TMR SEGA, código do produto, região
Sega Game Gear gg Baseado no formato de cabeçalho do Master System
PC Engine / TurboGrafx-16 pce Identificação básica
WonderSwan ws Cabeçalho no final da ROM, ID do jogo, modelo
WonderSwan Color wsc Cabeçalho no final da ROM, ID do jogo, modelo

Exemplos

Resultado do envio de ROM de NES

Console detectado  NES / Famicom
Chave do sistema   nes
CRC32              7d2d8d2c
SHA-1              a793e28a...
Versão NES         iNES 1.0
Mapeador           4
PRG ROM            256 KB
CHR ROM            128 KB
Região             NTSC

Resultado do envio de ROM de SNES

Console detectado  Super Nintendo (SNES)
Chave do sistema   sfc
CRC32              b19ed489
Tipo de ROM        LoROM
Velocidade de ROM  SlowROM
RAM                8 KB

Recursos

  • Detecção de console a partir de bytes de cabeçalho: Identifica o console lendo palavras mágicas binárias e estruturas de cabeçalho, não apenas pela extensão do arquivo
  • Suporte a arquivos ZIP: Envie um arquivo .zip contendo uma ROM e a ferramenta analisa automaticamente a ROM dentro
  • Metadados específicos do sistema: Exibe tipo de mapeador, região, código do jogo, título, número de série, tamanhos de ROM e RAM dependendo do console detectado
  • Saída de hash duplo: Calcula CRC32 e SHA-1 simultaneamente, os dois checksums mais comumente usados em bancos de dados de verificação de ROM
  • Análise do lado do servidor: O processamento ocorre no servidor usando a biblioteca roomie, então não há limitações de JavaScript do lado do cliente na análise de arquivos

Casos de uso

  • Organizando uma biblioteca de ROM: Identifique rapidamente arquivos ROM sem rótulo ou mal nomeados e classifique-os por console sem precisar abrir um emulador
  • Verificando dumps de ROM: Compare o hash CRC32 ou SHA-1 com bancos de dados No-Intro, Redump ou TOSEC para confirmar que uma ROM é um dump conhecido e válido
  • Configuração de emulador: Confirme o mapeador exato e a região de uma ROM de NES ou SNES antes de configurar um emulador que exija essas informações manualmente

Limitações

  • A detecção depende da presença de um cabeçalho válido no arquivo. ROMs sem cabeçalho ou corrompidas podem não ser reconhecidas.
  • Apenas uma ROM é analisada por envio. Para arquivos ZIP com múltiplas ROMs, apenas o primeiro arquivo correspondente é processado.
  • A detecção de console cobre os sistemas listados acima; formatos de ROM para outras plataformas não são suportados.