Identify and hash ROMs from the CLI
Match a ROM to an exact dump name with rom-weaver identify.
Use probe to inspect the file type. Use checksum to prove which bytes it holds.
Identify a ROM title
rom-weaver identify --input game.nes
The command checks the packaged Libretro data and OpenGood fallback data. It also checks common header, trim, and byte-order variants.
Point it at an archive to identify the ROM inside:
rom-weaver identify --input games.zip
Use --select when the archive holds more than one candidate.
Use a locally built pack instead of the built-in data:
rom-weaver identify --input game.iso --database playstation.pack
Repeat --database to search more packs. --database accepts RWFP1 packs.
Install the default identify data
Release packages include the default local database. After a Cargo or binary-only install, install the same versioned archive:
rom-weaver identify database install-all
Then identify as usual; the command finds the installed pack on its own:
rom-weaver identify --input game.bin
Check what is installed with rom-weaver identify database list. A result with "condition": "database_required" means the detected platform's pack is not installed; identify never downloads one itself. Install the database with rom-weaver setup, or point --database-dir at an existing one.
Install an optional group
Choose optional-arcade, optional-computers, optional-engines, optional-fantasy, optional-mobile, or optional-extended.
The optional-computers group contains computer systems and DOS. The optional-fantasy group contains MicroW8, PICO-8, TIC-80, and WASM-4. LowRes NX stays installed by default.
Install one group:
rom-weaver identify database install-group optional-computers
Use --from ARCHIVE to import a downloaded group archive without network access.
Force a system
Search one system's pack only, by canonical name or alias:
rom-weaver identify --input dump.bin --system psx
Use it when detection picks the wrong platform, or when a headerless dump detects nothing. rom-weaver identify database list prints the accepted names.
Inspect a file
rom-weaver probe --input game.iso
probe reports the detected format, platform, and copier header. It also answers to rom-weaver inspect.
Point it at an archive and it looks inside:
rom-weaver probe --input games.zip
--select picks one member by name, prefix, or glob. --no-extract treats the archive itself as the file to identify.
Hash a file
rom-weaver checksum --input game.sfc --algo sha256
--algo is repeatable and comma-separable, so one read produces several hashes:
rom-weaver checksum --input game.sfc --algo crc32,md5,sha1
Hash the ROM inside an archive
rom-weaver checksum --input game.zip --select 'game*.sfc' --algo crc32
This is the checksum a patch author usually means: the ROM's bytes, not the archive's.
Hash part of a file
Skip a copier header, or hash only the region a patch touches, with a byte range. rom-weaver checksum --help lists the range flags for your version.
Read from a pipeline
identify, probe, and checksum accept - as the input. Thus, they can read stdin:
curl -sL https://example.com/game.gba | rom-weaver checksum --input - --algo sha256
xz -dc game.iso.xz | rom-weaver probe --input - --json
Get machine-readable output
Add --json to a command for one JSON object per line:
rom-weaver probe --input game.sfc --json | jq
JSON mode turns off interactive selection, so scripts never block on a prompt.
Related
- CLI reference: every flag, exit code, and the JSON contract.
- Checksum support: the algorithms
--algoaccepts. - Fix a checksum error: what to do when a hash does not match.