Commit graph

2 commits

Author SHA1 Message Date
Erik
7b9b26f647 fix(cdb): A6.P1 — a6-probe.cdb v2 with PDB-verified offsets
Replaces v1's broken-offset BP actions with PDB-authoritative field
reads. All offsets extracted from `dt acclient!TYPENAME` against the
loaded PDB (output preserved at tools/cdb/a6-types-dump.txt).

Key offsets:
  Plane.N at +0x00, .d at +0x0c
  CSphere.center at +0x00, .radius at +0x0c
  CPolygon.plane at +0x20
  SPHEREPATH.collide +0x104, .walkable_allowance +0x1b8, .walk_interp +0x1bc
  CTransition.sphere_path +0x020 (so e.g. CTransition+0x174 = insert_type)

Per-BP arg-read fixes (all use __thiscall: ecx=this, args at [esp+N]):
  BP1: substeps from [esp+4], insertType from this+0x174
  BP2: walkable_allowance from this+0x1d8, normal.z from *(arg+8)
  BP3: normal.x/y/z from *arg
  BP4: collide+insertType via *(arg2+0x124/0x174), walkAllow from arg3
  BP5 (the over-correction suspect): full plane + sphere + walk_interp +
       movement vector. 12 fields, all double-indirect for pointer args.
  BP6 SYMBOL FIXED: CTransition::check_walkable (v1 had
       validate_walkable which doesn't exist; check_walkable confirmed
       in symbols.json and at decomp line 272811).
  BP7: plane + isWater from *arg.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 19:43:50 +02:00
Erik
7bb799b02c feat(cdb): A6.P1 — 7-BP probe script for retail BSP collision response
Sets non-blocking breakpoints on transitional_insert, step_up,
set_collide, find_collisions, adjust_sphere_to_plane,
validate_walkable, set_contact_plane. Each BP increments a counter
and emits a single printf line. Auto-detach via qd at 50K total
hits to avoid retail lag (CLAUDE.md gotcha — high BP rates trigger
ACE timeout).

Also adds !tools/cdb/*.cdb negation to .gitignore so committed
reference scripts in tools/cdb/ are tracked despite the blanket
*.cdb scratch-file rule.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 18:41:29 +02:00