docs: file #393 - retail texture-detail options (highres toggle + mip-skip levels)

From the 2026-08-14 highres verification: acdream always runs at retail
MAX texture detail (Textures[0] + unconditional client_highres.dat).
Retail's two knobs (ID_Option_HighResChange gating LoadHighResDat
@0x004FA250; Landscape/Environment TextureDetail as a mip-chain start
index @0x0044C3C8) are recorded with their decomp anchors and the
acdream-side seams. Post-M4.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Erik 2026-08-14 11:06:55 +02:00
parent e449c75e9f
commit bee38b0746

View file

@ -24,6 +24,40 @@ What does NOT go here:
- Every session: scan OPEN issues at start; promote/close anything we touched during the session before ending.
- Promoting to a Phase: mark as `DONE (promoted to Phase X)` + commit SHA where the Phase entry landed.
## #393 — Texture detail options: retail's "High Resolution Textures" toggle + Landscape/Environment TextureDetail mip-skip
**Status:** OPEN — filed 2026-08-14 from the highres-texture verification
(post-M4 nice-to-have; perf/nostalgia option, no gameplay impact).
acdream today loads `client_highres.dat` unconditionally and always picks
`Textures[0]` — retail's MAXIMUM texture detail, verified end-to-end (live
path AND the baked `acdream.pak`; the 2026-08-14 investigation's evidence
chain). Retail additionally offers two knobs acdream has no equivalent for:
1. **"High Resolution Textures" toggle** (change-notice string
`ID_Option_HighResChange`; `CLCache::LoadHighResDat @0x004FA250` only
runs when armed). Off = `client_highres.dat` never loads; lookups use
the portal-resident versions. acdream shape: a Config-tab option that
skips the highres fallback in `DatCollectionAdapter.TryGet` (portal
class: `_portal || _highRes`, `DatCollectionAdapter.cs:90`) and
`MeshExtractor`'s explicit highres fallbacks (`MeshExtractor.cs:399,767`
— which currently THROW on a miss; the off-path must degrade the way
retail does, NOT throw). **Research prerequisite:** what retail falls
back to for surfaces whose ONLY copy lives in highres.
2. **Texture detail levels** (`Render_LandscapeTextureDetail` /
`Render_EnvironmentTextureDetail` UIPreferences; the pick
`@0x0044C3C8`): the enum is an INDEX into the texture's source-level
(mip) chain — detail 0 keeps every level, detail N drops the N largest
(`i_1 = m_num - esi_1` keeps levels from index N;
`RenderTexture::ShouldDropHighDetail` can force it under memory
pressure). acdream shape: skip/downsample the top N levels at Vulkan
texture upload — works for live uploads and pak payloads alike (the
downsample is at upload, not bake; NO re-bake needed).
Also carried from the same investigation: a one-off enumeration proving
portal/highres id sets are disjoint (the "portal wins on overlap"
`TryResolvePreferred` corner — no overlap evidence exists, a ~20-line
tool run closes it).
## #392 — A refused/failed fullscreen enter leaves `fullscreen: true` persisted against a windowed client
**Status:** OPEN — filed 2026-08-13 from the #376/#388 blast review (M4).