docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff
Attached cdb to the live 2013 retail client at the Holtburg doorway + read the decomp. The indoor flap is a STRUCTURAL divergence, settled by measurement (not inference): - Retail has ONE render path: DrawInside(viewer_cell) every frame. NO inside/outside branch (RenderNormalMode's outside branch is dead code; is_player_outside only gates sky/lighting). "Entering a building" is not a render event — only the camera sweep resolving a different viewer_cell. Same path before/after threshold -> no seam. - Retail's eye JITTERS ~36um at rest yet membership is stable -> robustness is STRUCTURAL: many small per-building floods (~7/frame, ~2 cells each, via terrain BSP -> DrawPortal -> ConstructView(CBldPortal)), not one giant knife-edge flood. - Our 3 divergences: (D1) invented inside/outside branch (GameWindow.cs:7498, clipRoot = viewerRoot ?? _outdoorNode :7396); (D2) synthetic _outdoorNode; (D3) one unified flood. DECISION (user-approved): Option A — rip out branch + outdoor node, root always at the real viewer_cell, one DrawInside, per-building rendering. Phased, conformance-tested, visual-gated. REFUTED by measurement (do not retry): bounded-propagation/churn (maxPop=1, 0/63k reciprocals empty); byte-stable eye (retail's jitters ~36um — rest-snapcd974b2failed + regressed, reverted9b1857a). Lands the canonical exhaustive handoff for a FRESH session (docs/research/2026-06-08-full-retail-render-port-OPTION-A-handoff.md), the CLAUDE.md READ-THIS-FIRST banner, and reusable cdb apparatus. No project code changed; working tree at the known-good baseline. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
9b1857ac52
commit
fe87e9794a
6 changed files with 629 additions and 0 deletions
19
tools/cdb/flap-render-capture.cdb
Normal file
19
tools/cdb/flap-render-capture.cdb
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
* Retail render-state stability at the Holtburg doorway (2026-06-08)
|
||||
* Central question does retail cell_draw_num (visible-cell membership) flicker
|
||||
* as the camera sweeps or stay stable. Also viewer_cell ptr and eye cell.
|
||||
* Offsets from flap-render-lookup PView +0x60 cell_draw_num +0x74 cell_todo_num
|
||||
* +0x48 draw_landscape SmartBox +0x50 viewer_cell +0x08 viewer.objcell_id
|
||||
* Auto-detach via .detach after threshold (cdb ignores qd inside bp actions)
|
||||
* No semicolons in comment lines they split into commands
|
||||
|
||||
.logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\thirsty-goldberg-51bb9b\flap-render-retail-sweep.log
|
||||
.sympath C:\Users\erikn\source\repos\acdream\refs
|
||||
.symopt+ 0x40
|
||||
.reload /f acclient.exe
|
||||
|
||||
r $t0 = 0
|
||||
bp acclient!SmartBox::update_viewer "r $t0 = @$t0 + 1; .printf \"[uv] h=%d eyeCell=%x viewerCellPtr=%x\\n\", @$t0, poi(@ecx+0x08), poi(@ecx+0x50); .if (@$t0 >= 2500) { .detach } .else { gc }"
|
||||
bp 0x005a57b0 "r $t0 = @$t0 + 1; .printf \"[cv-cell] h=%d drawNum=%d todoNum=%d land=%d root=%x\\n\", @$t0, poi(@ecx+0x60), poi(@ecx+0x74), poi(@ecx+0x48), poi(@esp+4); .if (@$t0 >= 2500) { .detach } .else { gc }"
|
||||
bp 0x005a59a0 "r $t0 = @$t0 + 1; .printf \"[cv-bld] h=%d drawNum=%d todoNum=%d land=%d\\n\", @$t0, poi(@ecx+0x60), poi(@ecx+0x74), poi(@ecx+0x48); .if (@$t0 >= 2500) { .detach } .else { gc }"
|
||||
.printf "flap render trace armed sweep the camera at the doorway now\n"
|
||||
g
|
||||
Loading…
Add table
Add a link
Reference in a new issue