01
Scan
Build an inventory by content hash (SHA-1, plus CRC32/MD5), so every file is identified by what it is, not what it happens to be called.
Catalogue · verify · reorganise
Know exactly what's in your retro collection, and reorganise it without fear. Cat198x matches your files against the reference DATs by content hash, shows what you have and what's missing, and moves nothing until you approve the plan — Terraform for ROMs.
$ cat198x scan
$ cat198x status "Nintendo - Game Boy"
Nintendo - Game Boy v20240315 [83.7% complete]
1412 games, 1412 ROMs required
1182 have, 230 missingWhy
Retro collections drift. Files get renamed, re-compressed, half-downloaded, and duplicated across drives, and the reference DATs that define a “correct” set keep changing too. Most tools either mutate files in place with no safety net or assume one rigid layout. Cat198x keeps the two jobs apart: it tells you the truth about your collection first, and only reorganises when you say so — transactionally, with nothing ever silently lost.
How it works
01
Build an inventory by content hash (SHA-1, plus CRC32/MD5), so every file is identified by what it is, not what it happens to be called.
02
Compare that inventory against your active DATs — accounting for headered ROMs (iNES, SMC, A78, LNX) and MAME merge modes — to see what you have, what’s missing, and what’s misnamed or duplicated.
03
Propose copies, moves, repacks, and deletions as a reviewable plan. Nothing touches disk until you apply — transactionally, with a rollback log.
Verifies against the reference databases you already use:No-IntroRedumpMAMEFinalBurn Neo
Install
Install with Homebrew on macOS (Apple silicon or Intel) and Linux (ARM64 or x86-64). Prebuilt archives also cover Windows x86-64; no Rust toolchain is needed. Run cat198x doctor to check the install, then point it at your DATs and ROMs. You can also build from source with Rust.
# macOS or Linux with Homebrew
brew install cat198x/tap/cat198x
# verify, then start a catalogue
cat198x doctor
cat198x initPlan before apply
Every reorganisation is written to a plan you inspect first, applied in a single transaction, and reversible from a rollback log. There is no silent in-place mutation and nothing is ever lost.
Content-addressed
Files are matched by content hash — SHA-1, with CRC32 and MD5 — not by name, so a renamed or re-compressed ROM is still recognised, and headered formats and MAME merge modes are understood.
Agent-native
The full workflow is a scriptable command line, and an MCP interface lets tools and agents drive scanning, status, and planning directly — the same operations, one machine-readable surface.