WHDLoad game drawers on Workbench — the destination of a live install, not proof the floppy was the right one.

2 October 2026

Building our own WHDLoad media index

Community databases tell you what WHDLoad packs exist or which unmodified ADF set OpenRetro recognizes. None of them answer: will this staged disk satisfy RawDIC for this install? We are indexing our stash instead.

We searched for a public RawDIC-compatible ADF index. There isn’t one. Useful neighbors:

  • WHDLoad-Database — Retroplay pack metadata (installed slaves), not install-time floppies.
  • OpenRetro — checksum-identified ADF/IPF/WHDLoad variants for emulators; strict unmodified sets only.
  • whdload.de per-game ReadMes — supported editions, often SPS #… numbers.
  • SPS — preserved originals as IPF plus an XML catalog.

The legal install path is your disks + WHDLoad’s imager. The index’s job is to say whether what you staged is even in the ballpark.

Four tiers (what we automate vs what stays manual)

TierSignalCostVerdict
0 — InventorySHA-256, size, path under build/games-src/Host scan seconds“This file exists.”
1 — Boot prefilterAmiga boot block: DOS-like vs custom; printable strings (crack groups, etc.)Host, per ADF“Probably not retail” vs “might be DOS data disk.”
2 — Install hintsParse WHDLoad Install ReadMe / script for SPS ####; join whdload-catalog.json ADF pathsHost after fetch_whdload_install.sh“Author expected these editions.”
3 — Guest probe (later)Headless RawDIC-Auto or window text: sync error vs *.slaveWinUAE + AmiPilot minutesGround truth for this rig.

Tiers 0–2 run on the Mac or quo without booting the install HDF. Tier 3 is optional batch work — same tier as puppeteer installs, not vamos.

Artifact: build/adf-index.jsonl

One JSON object per line, append-friendly. Each record is a floppy image we might feed RawDIC or TrackWarp:

{
  "path": "games-src/adf/killinggameshow/KGS.ADF",
  "sha256": "…",
  "size": 901120,
  "boot": { "dos_like": true, "filesystem": "OFS", "tags": ["SKID ROW"] },
  "catalog": [{ "game_id": "killing-game-show", "disk_index": 0 }],
  "whdload_sps_hint": [1234, 5678],
  "tier": 2,
  "rawdic_probe": null
}

Policy hooks (next): if tier 1 says DOS scene boot and tier 2 lists no matching SPS, prefer prebuilt_src from the catalog before opening RawDIC. If tier 3 exists and status is no_sync_track_0, block the live install in CI.

What we are not building

A replacement for OpenRetro, TOSEC, or WHDownLoad. We are not redistributing disk images. The index is local metadata over paths we already stage from NAS — enough for scripts and agents to stop treating every *.adf filename as gospel.

External joins stay read-only references: when SPS XML is present on the build host, tier 2 can later add sps_title_id matches by hash rules SPS publishes; that is a follow-on, not day one.

Run tier 0–2 today

cd ~/amiga-utils
./scripts/stage_nas_games.sh          # if ADFs not under build/games-src yet
./scripts/fetch_whdload_install.sh KillingGameShow   # for ReadMe SPS hints
./scripts/index_whdload_media.sh
# → build/adf-index.jsonl
# → build/adf-index-summary.json

amiga-utils — scripts/whdload_media_index.py, docs/whdload-media-index.md. Related: RawDIC-Auto, WHDLoad slaves, A second drive.