Vad är en ROM-fil?

En ROM-fil är en digital kopia av read-only memory-chipet från ett fysiskt spelkassett eller skiva. När du dumpar data från ett kassett, innehåller den resulterande binära filen en header — ett litet block med bytes i början — som beskriver spelet och hårdvaran det byggdes för. Varje konsollfamilj använder sin egen unika headerstruktur, så en NES ROM ser fundamentalt annorlunda ut från en Game Boy eller Sega Genesis ROM på bytenivå.

Headern lagrar vanligtvis information såsom målregion, minneskarteringstyp, ROM- och RAM-storlekar och en spelidentifieringskod. Detta gör det möjligt att detektera ursprungskonsolen från bara filen, utan att förlita sig enbart på filnamnstillägget.

Verktygsbeskrivning

Ladda upp vilken ROM-fil som helst och verktyget identifierar omedelbar vilken spelkonsol den tillhör. Det läser den binära headern, matchar den mot kända konsolsignaturer och returnerar konsolnamnet tillsammans med systemspecifika metadata såsom region, spelkod, karteringstyp, ROM/RAM-storlekar och kryptografiska hashvärden (CRC32 och SHA-1). ZIP-arkiv som innehåller en ROM stöds också — verktyget extraherar och analyserar den första ROM-filen som hittas inuti.

Konsoler som stöds

Konsol Systemnyckel Anteckningar
NES / Famicom nes iNES 1.0 och NES 2.0-headers; detekterar mapper och sub-mapper
Super Nintendo sfc Detekterar LoROM / HiROM, ROM-hastighet, co-processorer (SuperFX, SA-1, DSP)
Nintendo 64 n64 Headerparsning, regiondetektering, byte-swap-varianter (.z64, .v64)
Game Boy / Color gb Detekterar MBC-typ, RAM-storlek, GBC / SGB-kompatibilitet
Game Boy Advance gba Extraherar spel-ID och spartyp (SRAM / Flash / EEPROM)
Nintendo DS nds Spelkod, region, enhetskod (DSi-kompatibel), enhetskapacitet
Sega Genesis / Mega Drive genesis Inhemsk och utländsk titel, serienummer, region
Sega Master System sms TMR SEGA-header, produktkod, region
Sega Game Gear gg Baserad på Master System-headerformat
PC Engine / TurboGrafx-16 pce Grundläggande identifiering
WonderSwan ws End-of-ROM-header, spel-ID, modell
WonderSwan Color wsc End-of-ROM-header, spel-ID, modell

Exempel

NES ROM-uppladdningsresultat

Detekterad konsol  NES / Famicom
Systemnyckel       nes
CRC32              7d2d8d2c
SHA-1              a793e28a...
NES-version        iNES 1.0
Mapper             4
PRG ROM            256 KB
CHR ROM            128 KB
Region             NTSC

SNES ROM-uppladdningsresultat

Detekterad konsol  Super Nintendo (SNES)
Systemnyckel       sfc
CRC32              b19ed489
ROM-typ            LoROM
ROM-hastighet      SlowROM
RAM                8 KB

Funktioner

  • Konsoldetektering från headerbytes: Identifierar konsolen genom att läsa binära magiska ord och headerstrukturer, inte bara filnamnstillägget
  • ZIP-arkivstöd: Ladda upp en .zip-fil som innehåller en ROM och verktyget analyserar ROM-filen inuti automatiskt
  • Systemspecifika metadata: Visar mappertyp, region, spelkod, titel, serienummer, ROM- och RAM-storlekar beroende på detekterad konsol
  • Dubbel hashutmatning: Beräknar CRC32 och SHA-1 samtidigt, de två mest använda checksummorna i ROM-verifieringsdatabaser
  • Analys på serversidan: Bearbetningen sker på servern med hjälp av roomie-biblioteket, så inga JavaScript-begränsningar på klientsidan gäller för filparsning

Användningsfall

  • Organisera ett ROM-bibliotek: Identifiera snabbt omärkta eller felnamnade ROM-filer och sortera dem efter konsol utan att behöva öppna en emulator
  • Verifiera ROM-dumpar: Korsreferera CRC32- eller SHA-1-hashen mot No-Intro-, Redump- eller TOSEC-databaser för att bekräfta att en ROM är en känd bra dump
  • Emulatorinställning: Bekräfta den exakta mappern och regionen för en NES eller SNES ROM innan du konfigurerar en emulator som kräver denna information manuellt

Begränsningar

  • Detektering förlitar sig på närvaron av en giltig header i filen. Headerless eller skadade ROM-filer kanske inte känns igen.
  • Endast en ROM analyseras per uppladdning. För ZIP-arkiv med flera ROM-filer bearbetas endast den första matchande filen.
  • Konsoldetektering täcker systemen som anges ovan; ROM-format för andra plattformar stöds inte.