Wat is een ROM-bestand?

Een ROM-bestand is een digitale kopie van de read-only memory-chip van een fysieke spelcartridge of schijf. Wanneer u de gegevens van een cartridge dumpt, bevat het resulterende binaire bestand een header — een klein blok bytes aan het allereerste begin — dat het spel en de hardware waarvoor het is gebouwd beschrijft. Elke consolefamilie gebruikt zijn eigen unieke headerstructuur, dus een NES ROM ziet er op byteniveau fundamenteel anders uit dan een Game Boy of Sega Genesis ROM.

De header bevat doorgaans informatie zoals de doelregio, geheugenkaarttype, ROM- en RAM-groottes en een spelidentificatiecode. Dit maakt het mogelijk om de oorspronkelijke console alleen uit het bestand te detecteren, zonder alleen op de bestandsextensie te vertrouwen.

Gereedschapbeschrijving

Upload een ROM-bestand en het gereedschap identificeert onmiddellijk tot welke spelconsole het behoort. Het leest de binaire header, vergelijkt deze met bekende consolesignaturen en retourneert de consolenaam samen met systeemspecifieke metagegevens zoals regio, spelcode, kaarttype, ROM/RAM-groottes en cryptografische hashes (CRC32 en SHA-1). ZIP-archieven met een ROM worden ook ondersteund — het gereedschap extraheert en analyseert automatisch de eerste ROM die erin wordt gevonden.

Ondersteunde consoles

Console Systeemsleutel Opmerkingen
NES / Famicom nes iNES 1.0 en NES 2.0 headers; detecteert mapper en sub-mapper
Super Nintendo sfc Detecteert LoROM / HiROM, ROM-snelheid, co-processors (SuperFX, SA-1, DSP)
Nintendo 64 n64 Header-parsing, regiodetectie, byte-swap-varianten (.z64, .v64)
Game Boy / Color gb Detecteert MBC-type, RAM-grootte, GBC / SGB-compatibiliteit
Game Boy Advance gba Extraheert spel-ID en opslagtype (SRAM / Flash / EEPROM)
Nintendo DS nds Spelcode, regio, eenhedencode (DSi-compatibel), apparaatcapaciteit
Sega Genesis / Mega Drive genesis Binnenlandse en buitenlandse titel, serienummer, regio
Sega Master System sms TMR SEGA header, productcode, regio
Sega Game Gear gg Gebaseerd op Master System headerformaat
PC Engine / TurboGrafx-16 pce Basisidentificatie
WonderSwan ws End-of-ROM header, spel-ID, model
WonderSwan Color wsc End-of-ROM header, spel-ID, model

Voorbeelden

NES ROM-uploadresultaat

Gedetecteerde console  NES / Famicom
Systeemsleutel         nes
CRC32                  7d2d8d2c
SHA-1                  a793e28a...
NES-versie             iNES 1.0
Mapper                 4
PRG ROM                256 KB
CHR ROM                128 KB
Regio                  NTSC

SNES ROM-uploadresultaat

Gedetecteerde console  Super Nintendo (SNES)
Systeemsleutel         sfc
CRC32                  b19ed489
ROM-type               LoROM
ROM-snelheid           SlowROM
RAM                    8 KB

Functies

  • Consoledetectie uit headerbytes: Identificeert de console door binaire magische woorden en headerstructuren te lezen, niet alleen op basis van de bestandsextensie
  • ZIP-archiefondersteuning: Upload een .zip-bestand met een ROM en het gereedschap analyzeert de ROM erin automatisch
  • Systeemspecifieke metagegevens: Geeft kaarttype, regio, spelcode, titel, serienummer, ROM- en RAM-groottes weer, afhankelijk van de gedetecteerde console
  • Dubbele hash-uitvoer: Berekent CRC32 en SHA-1 tegelijkertijd, de twee meest gebruikte controlesommen in ROM-verificatiedatabases
  • Analyse aan serverzijde: Verwerking gebeurt op de server met behulp van de roomie-bibliotheek, dus er gelden geen beperkingen aan de clientzijde van JavaScript voor bestandsparsing

Gebruiksscenario's

  • Een ROM-bibliotheek organiseren: Identificeer snel niet-gelabelde of verkeerd benoemde ROM-bestanden en sorteer ze op console zonder een emulator te hoeven openen
  • ROM-dumps verifiëren: Controleer de CRC32- of SHA-1-hash tegen No-Intro-, Redump- of TOSEC-databases om te bevestigen dat een ROM een bekende goede dump is
  • Emulator-instellingen: Bevestig de exacte mapper en regio van een NES- of SNES-ROM voordat u een emulator configureert die deze informatie handmatig vereist

Beperkingen

  • Detectie is afhankelijk van de aanwezigheid van een geldige header in het bestand. ROM's zonder header of beschadigde ROM's worden mogelijk niet herkend.
  • Per upload wordt slechts één ROM geanalyseerd. Voor ZIP-archieven met meerdere ROM's wordt alleen het eerste overeenkomende bestand verwerkt.
  • Consoledetectie omvat de hierboven vermelde systemen; ROM-formaten voor andere platforms worden niet ondersteund.