From ebaa41df1a1c49e7b674065a34250c0af4c5e8f5 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 2 Sep 2026 18:09:11 +0200 Subject: [PATCH] tools(render): OH retail capture scripts for the S3/S4 answer key Recon script, three capture templates (walk / parts / alpha-depth), runner, and operator README under tools/walk-oracle/oh/. FW0 line formats are kept byte-identical; new EC/OC/PD/DM/AM/FL/PM/PC line kinds are documented. Auto-detach uses the fall-through + top-level qd recipe; qd never appears inside a breakpoint action. Lead-resolved: DBObj::m_DID is +0x28 (header layout, first base of CGfxObj and CObjCell, matches the proven FW0 cell reads); the three D3DPolyRender alpha functions are static cdecl with stack arguments, uint8 arguments read with by(). Co-Authored-By: Claude Fable 5.1 --- tools/walk-oracle/oh/README.md | 291 ++++++++++++++++++ .../oh/oh-capture-alpha-depth.cdb.template | 108 +++++++ .../oh/oh-capture-parts.cdb.template | 111 +++++++ .../oh/oh-capture-walk.cdb.template | 75 +++++ tools/walk-oracle/oh/oh-run-capture.ps1 | 131 ++++++++ 5 files changed, 716 insertions(+) create mode 100644 tools/walk-oracle/oh/README.md create mode 100644 tools/walk-oracle/oh/oh-capture-alpha-depth.cdb.template create mode 100644 tools/walk-oracle/oh/oh-capture-parts.cdb.template create mode 100644 tools/walk-oracle/oh/oh-capture-walk.cdb.template create mode 100644 tools/walk-oracle/oh/oh-run-capture.ps1 diff --git a/tools/walk-oracle/oh/README.md b/tools/walk-oracle/oh/README.md new file mode 100644 index 00000000..4fc88bf0 --- /dev/null +++ b/tools/walk-oracle/oh/README.md @@ -0,0 +1,291 @@ +# OH1 walk-oracle capture kit (2026-09-02) + +Draft cdb capture scripts for Campaign OVERHAUL's OH1 evidence gap: the four +OH1 contract docs +(`docs/research/2026-09-01-overhaul/oh1-retail-world-contract.md`, +`oh1-built-mesh-view-contract.md`, `oh1-alpha-list-contract.md`, +`oh1-depth-lifecycle.md`) establish retail's built-mesh/view/stamp, alpha +FIFO, and depth-lifecycle contracts from the named decomp plus live Ghidra +arbitration, but they explicitly say (`oh1-retail-world-contract.md` s10): +"Existing FW0 captures cover only frame/pose/DrawInside/DrawCells/ +landscape/building entry. Full semantic equality requires a bounded richer +retail capture before the owning later slices close." This kit is that +richer capture: it extends the proven FW0 F/P/LS/BLD/DI/DC per-frame shape +with three new families (cell-shell/object-cell stamps, part/mesh +admission, and the alpha-FIFO/depth-counter state machine) without changing +any existing line format. + +**These scripts are DRAFTS pending the recon pass below. Do not treat any +offset as final until `oh-recon.cdb`'s `dt` output confirms it against a +live attach.** See "Open questions" at the end before running a real +session. + +## Files + +| File | Purpose | +|---|---| +| `oh-recon.cdb` | No breakpoints. `dt`/`x`/`uf`/`dd` dumps that confirm every offset the three capture scripts assume. Run this FIRST, once per session. | +| `oh-capture-walk.cdb.template` | FW0's F/P/LS/BLD/DI/DC lines, byte-identical, plus new `EC`/`OC` lines (cell-shell and object-cell draw-stamp events). 5 frames. | +| `oh-capture-parts.cdb.template` | F/P lines plus new `PD`/`DM` lines (per-part and per-mesh admission/GfxObj identity). The high-hit-rate script. 3 frames. | +| `oh-capture-alpha-depth.cdb.template` | F/P lines plus new `AM`/`FL`/`PM`/`PC` lines (the two alpha FIFO lists and the persistent portal-mask depth counter). 5 frames. | +| `oh-run-capture.ps1` | Runner: `-Script -Log -Frames`. Verifies the live acclient.exe pairs with `refs/acclient.pdb` (aborts on mismatch), substitutes ``/``, launches `cdb -pn acclient.exe -cf