docs: file #389 (SmartboxFOV divergence, register AD-89) + #390 (UI stranded off-screen on downscale)
Both from the 2026-08-13 display gate session. #389 carries the full decomp-verified retail FOV law; #390 requires the retail reposition mechanism from the decomp before any clamp is implemented. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
c991de38dd
commit
4dc079533c
2 changed files with 37 additions and 1 deletions
|
|
@ -24,6 +24,41 @@ 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.
|
||||
|
||||
## #390 — UI windows stranded off-screen when the resolution shrinks (no retail reposition/clamp on display change)
|
||||
|
||||
**Status:** OPEN — filed 2026-08-13 (user gate report: "If I go from a high
|
||||
resolution to a low, the GUI will be outside of the screen and I have to
|
||||
resize the window to get it"). Floating retail-UI windows keep absolute
|
||||
pixel positions across resolution changes; a panel parked at x=2000 on a
|
||||
2560-wide window is unreachable after a pick down to 1280. Retail keeps
|
||||
windows reachable across display changes — the exact retail mechanism
|
||||
(clamp-into-bounds vs proportional reposition vs per-resolution layout
|
||||
sets) must be pulled from the named decomp (UIElementManager /
|
||||
UIRegionManager display-change handling) BEFORE implementing; do not
|
||||
invent a clamp rule. Part of the display work block with #376/#377/#388/
|
||||
#389.
|
||||
|
||||
## #389 — World-camera FOV is an invented aspect-independent constant; retail is SmartboxFOV (vFOV = gameFOV / (aspect − 0.1))
|
||||
|
||||
**Status:** OPEN — filed 2026-08-13 (user gate report: "meant to run on an
|
||||
old aspect ratio... modern screens feels weird... some resolutions feels
|
||||
like it is just squished"). Decomp-verified retail law:
|
||||
`Render::SetFOVRad(SmartBox::m_fGameFOV / (RenderDevice::m_ViewportAspectRatio − 0.1))`
|
||||
(two sites, `0x00452b2f` and `0x00453b14`; the same expression feeds a
|
||||
`tan` at `0x00451c0e`), with `m_fGameFOV` defaulting to **π/2 = 90°**
|
||||
(`0x00454649`) and set in DEGREES by the Field of View option
|
||||
(`× 0.0174533`, `0x00451e6a`). Net effect: retail holds the HORIZONTAL
|
||||
view roughly constant (~85–90°) across aspect ratios and narrows the
|
||||
vertical FOV on wide screens (16:9 → vFOV ≈ 53.6°, 4:3 → ≈ 73°). acdream
|
||||
instead hardcodes `ChaseCamera.FovY = π/3 = 60°` (FlyCamera likewise)
|
||||
with no aspect coupling and no retail anchor — wider aspects balloon the
|
||||
horizontal view and every aspect gets a different feel than retail.
|
||||
Fix: port the smartbox formula into the world cameras' aspect path
|
||||
(recompute applied vFOV on every SetAspect), drive `gameFOV` from the
|
||||
Config tab's Field of View value in retail's degree mapping (default 90),
|
||||
and delete the π/3 constant. Register row AD-89 tracks the divergence
|
||||
until the port lands.
|
||||
|
||||
## #388 — CRASH: unhandled GlfwException "Failed to set video mode: Graphics mode not supported" during a fullscreen-state resolution/settings apply; and fullscreen/maximized windows silently ignore resolution picks
|
||||
|
||||
**Status:** OPEN — filed 2026-08-13 from the user's live gate session
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue