rom-weaver

Identify and hash files from the CLI

Find out what a file is with rom-weaver probe, and prove which bytes it holds with rom-weaver checksum.

Identify a file

rom-weaver probe --input game.iso

probe reports the detected format, the platform, and any copier header the file carries. 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

probe and checksum accept - as the input, so 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 either 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.