Building WhatROM
Don’t trust the filename. Ask the ROM.
Over the years, ROM collections can get messy.
Files get renamed. Archives get moved between collections. Different platforms wind up mixed. Extensions are wrong or missing. Old dumps carry names that made sense to somebody twenty years ago but tell you very little today. Sometimes you have a binary file, and the only useful question is:
What ROM is this?
That is why I started building WhatROM.
WhatROM is a small command-line utility designed to examine a ROM as an artifact rather than trusting its filename. It looks at the structure of the file, known headers, signatures, checksums, embedded titles, and other platform-specific evidence to make an informed determination of what kind of ROM you actually have. WhatROM does not depend on external databases and works independantly just. interrogating the files you have.
For example: (Unix/Linix/Mac Example)
$ ./whatrom “AeroFighters Assault (USA).zip”
Container : ZIP archive
Member : AeroFighters Assault (USA).n64
System : Nintendo 64
Title : AERO FIGHTERS ASSAUL
Score : 83
The important part is that the answer does not come from .n64 in the filename. WhatROM examines the contents of the ROM and explains the evidence it found.
WhatROM is built for triage.
The idea comes from digital forensics: detect, corroborate, classify, then parse.
WhatROM does not assume that a file is a Game Boy ROM because somebody named it game.gb. A filename or extension can be a useful clue, but it is not evidence strong enough to identify the artifact by itself.
Where possible, WhatROM independently checks things such as platform signatures, cartridge headers, embedded manufacturer or product information, internal titles, expected structures and header checksums. Multiple observations can contribute to a confidence score.
That approach becomes particularly useful when working with an entire collection.
$ whatrom -r /Volumes/ROMs
WhatROM can recursively examine a directory, look inside ZIP archives, and report the platforms it actually finds.
That has already produced some interesting surprises in my own collection. Directories I believed contained material for one system turned out to contain ROMs from several different platforms.
Cleanup without touching your collection
WhatROM is deliberately non-destructive.
Its job is to tell you what it found, not automatically rename, delete or reorganize thousands of files.
Mismatch auditing can identify material that does not appear to belong in a collection and create simple platform-specific manifests. Those manifests can then be reviewed or used with ordinary shell tools to move files elsewhere.
You remain in control of the collection.
Platforms
Development is ongoing, but WhatROM already understands ROM and image structures from a growing collection of Nintendo, Atari and Sega systems, including cartridge and optical-disc platforms.
Current work includes Nintendo Game Boy, Game Boy Color, Game Boy Advance, NES, SNES and Nintendo 64; Atari 2600, 5200, 7800, Lynx and Atari 8-bit families; and Sega systems ranging from the SG-1000 and Master System through Genesis, 32X, Sega CD, Saturn and Dreamcast.
WhatROM also understands common containers and descriptors such as ZIP, CUE and GDI so that the file handed to the utility does not necessarily have to be the ROM or disc image itself.
Why build another ROM tool?
There are already excellent ROM managers, DAT tools, front ends and collection organizers. I have not yet found anything like WhatROM that simply looks inside the files and uses the elements of the file to tell us what it is likely to be.
WhatROM is intended to solve a slightly different problem than a rom manager.
Before I organize a ROM, rename it, match it against a database or add it to a library, I want to know:
What can the artifact tell me about itself?
Eventually, external DAT and hash matching can provide another powerful layer of exact identification. But the first job of WhatROM is to examine the bytes in front of it and report what can be independently determined from them.
That distinction matters when the filenames have been renamed incorrectly by someone long before you obtained the file. Eventually the folders are all wrong, or there is no filename worth trusting at all.
WhatROM
Forensic identification and triage for ROM images.
Don’t trust the filename. Ask the ROM.