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>
15 lines
958 B
Text
15 lines
958 B
Text
* Retail eye-position stability at rest (2026-06-08)
|
|
* THE crux is retail viewer (eye) origin byte-stable at rest or does it jitter
|
|
* SmartBox+0x08 viewer Position objcell_id +0x04 frame +0x08 m_fOrigin +0x34
|
|
* so viewer.objcell_id = ecx+0x0c origin x/y/z = ecx+0x44 / +0x48 / +0x4c (raw float bits in hex)
|
|
* Also viewer_sought_position at SmartBox+0x58 (pre-collision desired eye) origin at ecx+0x94
|
|
* Hold the camera still during this capture
|
|
|
|
.logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\thirsty-goldberg-51bb9b\flap-eye-stability.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 \"[eye] h=%d cell=%x pub=(%08x,%08x,%08x) sought=(%08x,%08x,%08x)\\n\", @$t0, poi(@ecx+0x0c), poi(@ecx+0x44), poi(@ecx+0x48), poi(@ecx+0x4c), poi(@ecx+0x94), poi(@ecx+0x98), poi(@ecx+0x9c); .if (@$t0 >= 120) { .detach } .else { gc }"
|
|
g
|