Dry-run of scenario 1 (retail-v1-broken-offsets.log preserved as audit trail) surfaced three issues with the v1 cdb script: 1. STACK-ARG OFFSETS WRONG: BP actions used arbitrary registers (@edx, @edi) to read function args, but __thiscall puts non-this args on the stack ([esp+N] after the return address). All 12 BP5 "adjust_sphere" hits printed Nx=0.0 Ny=0.0 ... — fields not read. Fixed by writing a type dumper (a6-types-dump.cdb + runner) that uses cdb's `dt` command against the loaded PDB to get authoritative struct offsets. v2 probe script (to be written next) will use double-indirect reads (dwo(poi(@esp+N)+offset)) with correct offsets from the dump. 2. TEE-OBJECT UTF-16 ENCODING: PowerShell's default Tee-Object writes UTF-16 LE with BOM, making logs unparseable by grep without conversion. Runner now uses Out-File -Encoding ASCII. Sacrifices live console echo; use `Get-Content -Tail 50 -Wait` in a separate shell if live monitoring is needed. 3. BP6 SYMBOL NOT FOUND: `acclient!CTransition::validate_walkable` doesn't exist in the PDB. Decomp at line 272811 has `CTransition::check_walkable` — likely the actual name. To be verified + fixed in v2. The BP hit-count distribution from v1 is still meaningful diagnostic data (14,318 transitional_insert + 16,558 find_collisions + 40 set_contact_plane + 12 adjust_sphere + 1 step_up + 1 set_collide in a 2-second walk through the inn doorway). Preserved as a baseline sanity-check the v2 distribution can be diffed against. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| architecture | ||
| audit | ||
| plans | ||
| research | ||
| superpowers | ||
| bugs.md | ||
| ISSUES.md | ||