acdream/tools/cdb
Erik 8257b9ba10 fix(#186): render side-cull mis-sided thin connectors — use dat PortalSide bit, not AABB centroid
The indoor GREY flap at a top-floor connecting room. The render portal side-cull
reconstructed each doorway's "interior side" (PortalClipPlane.InsideSide) from the
cell's AABB CENTROID. For a THIN connector cell (0xF6820118, 5 render polys), the
bounding-box center falls on the WRONG side of the 0118->0116 doorway, so the eye
read as a back-portal and the forward room 0116 was culled -> the aperture showed
the fog clear color = grey.

Retail's PView::InitCell (0x005a4b70) and acdream's own PHYSICS path
(CellTransit.cs:190) both read the explicit dat PortalSide bit ((Flags&2)==0)
instead of guessing from geometry. Port the render path (GameWindow.BuildLoadedCell)
to the same bit.

Proven by a live retail cdb trace (retail draws 0116 from the 0118 root at the grey
pose; tools/cdb/issue186-connector-decider.cdb) + an offline dat diagnostic
(Issue186...PortalSide_CentroidVsDatBit_AtGreyEye): the dat bit matches the old
centroid on every portal of these cells EXCEPT the one #186 breaks, so the switch is
surgical. Full regression green (App 741 / Core 2631); the CornerFlood + Issue113
dat-loading helpers updated to the same bit confirm every real Holtburg/tower/hall
cell floods identically. Touches neither PortalSideEpsilon nor the deleted
EyeInsidePortalOpening rescue (the two DO-NOT-RETRY traps).

Live-gated: user-confirmed no grey at any camera angle; probe shows 216 root=0118
frames, 0 still grey (0118->0116 now TRV, vis=4).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 15:06:33 +02:00
..
a6-probe-runner.ps1 fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-probe.cdb fix(cdb): A6.P1 — a6-probe.cdb v4 hex-bits floats 2026-05-21 19:55:48 +02:00
a6-types-dump-runner.ps1 fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-types-dump.cdb fix(cdb): A6.P1 — v1 dry-run lessons + v2 prep tooling 2026-05-21 19:38:31 +02:00
a6-types-dump.txt fix(cdb): A6.P1 — a6-probe.cdb v2 with PDB-verified offsets 2026-05-21 19:43:50 +02:00
a7-fixd-golden-probe.cdb docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140) 2026-06-18 17:08:27 +02:00
a7-fixd-golden2-probe.cdb docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140) 2026-06-18 17:08:27 +02:00
a7-fixd-lights-v2.cdb docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140) 2026-06-18 17:08:27 +02:00
a7-fixd-lights.cdb docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140) 2026-06-18 17:08:27 +02:00
a7-fixd-numstatic-probe.cdb docs(lighting): A7 Fix D investigation RESOLVED + implementation spec (#140) 2026-06-18 17:08:27 +02:00
cellar-corner-escape.cdb docs(p2): cellar corner-wedge pinned to step-up-onto-floor (retail cdb) + trace apparatus 2026-06-04 11:27:44 +02:00
chat-colors.cdb @ 2026-06-16 10:08:42 +02:00
chat-colors2.cdb @ 2026-06-16 10:08:42 +02:00
decode_fcl_capture.py test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
decode_retail_hex.py feat(cdb): A6.P1 — decode_retail_hex.py hex→float decoder 2026-05-21 20:03:03 +02:00
discover-types.cdb test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
door-inside-out-v2.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
door-inside-out-v3.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
door-inside-out.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00
find-cell-list-capture-aligned.cdb fix(p1): membership already matches retail — the 0/11 was a cdb capture artifact 2026-06-03 18:54:27 +02:00
find-cell-list-capture.cdb test(p0): retail-trace golden captured — membership criterion divergence pinned (P0 GATE MET) 2026-06-03 15:04:51 +02:00
flap-cam-measure.cdb diag(cdb): flap-cam-measure.cdb — retail eye-hover + CameraManager smoothing capture 2026-06-08 23:14:54 +02:00
flap-eye-stability.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
flap-pos-lookup.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
flap-render-capture.cdb docs(render): FLAP settled by live-retail measurement — full retail port DECIDED (Option A) + exhaustive handoff 2026-06-08 16:19:34 +02:00
issue98-cellar-up-find-walkable.cdb tools(cdb): A6.P3 #98 Step 4 — retail find_walkable capture script 2026-05-23 15:29:02 +02:00
issue98-runner.ps1 tools(cdb): A6.P3 #98 Step 4 — retail find_walkable capture script 2026-05-23 15:29:02 +02:00
issue176-floor-light.cdb feat(lighting): SelectForCell (all dynamic lights per EnvCell) + #176 handoff — residual is a runtime z-fight 2026-07-06 13:55:16 +02:00
issue186-connector-decider.cdb fix(#186): render side-cull mis-sided thin connectors — use dat PortalSide bit, not AABB centroid 2026-07-08 15:06:33 +02:00
l2g-observer.cdb docs(L.2g-S2): verbatim inbound-funnel pseudocode + observer cdb trace script 2026-07-02 18:33:23 +02:00
paperdoll-pose.cdb fix(D.2b): Slice 2 — retail-exact doll pose, camera + heading (visual gate) 2026-06-25 13:16:27 +02:00
pview-spiral2.cdb park #177: retail cdb trace DISPROVES the portal-flood theory 2026-07-07 08:43:21 +02:00
pview-verify.cdb park #177: retail cdb trace DISPROVES the portal-flood theory 2026-07-07 08:43:21 +02:00
README-a6-probe.md docs(cdb): A6.P1 — README for the cdb probe + runner 2026-05-21 18:44:42 +02:00
README-find-cell-list-capture.md test(p0): retail find_cell_list trace parser + cdb value-capture tooling 2026-06-03 14:26:24 +02:00
retail-connector-collide-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-crowd-jump.cdb docs(#182): crowd-collision investigation outcome + velocity-model rebuild design 2026-07-07 13:07:56 +02:00
retail-crowd-jump2.cdb docs(#182): crowd-collision investigation outcome + velocity-model rebuild design 2026-07-07 13:07:56 +02:00
retail-crowd-jump3.cdb docs(#182): crowd-collision investigation outcome + velocity-model rebuild design 2026-07-07 13:07:56 +02:00
retail-flatfloor-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-lip-trace.cdb test(p2): faithful cellar-lip wedge reproduction + investigation apparatus (no fix yet) 2026-06-05 08:30:36 +02:00
retail-viewer-cell.cdb docs: indoor flicker/void root cause (decomp + live cdb) + 3-part fix plan handoff 2026-06-05 15:31:17 +02:00
run-issue186-decider.ps1 fix(#186): render side-cull mis-sided thin connectors — use dat PortalSide bit, not AABB centroid 2026-07-08 15:06:33 +02:00
symbol-probe.cdb feat(phys): A6.P4 door — cdb-driven NegPolyHit dispatch (incomplete; needs BSP near-miss recording) 2026-05-25 10:36:22 +02:00