mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-24 00:02:45 +02:00
port: front-end PC Options pagination for long sections (D406)
INPUT (17 visible rows) outgrew the fixed 440x330 paper: the 18px pitch was sized before the D356 profile row, so a full page's last row landed at y=335 (off the bottom of the screen) and rows past the silent 14-row cap (Crouch mode, Reset to defaults, Bindings...) were unreachable from the front screen. Sections now page at 13 rows (the largest that fits); the vertical stepper crosses page boundaries in both directions and the title carries a (p/N) marker. F10 overlay untouched (it scrolls its own window). Headless verification (SkipIntro boot + scripted D-pad stepping + GE_FRONTNAVLOG): page 1 -> page 2 down and back up, all 17 rows reachable. GE_FRONTOPTIONS_AUTO test hook added (diagnostic-only, same convention as GE_FRONTOPTIONS_SECTION). Findings D406 + index; release notes: options section list corrected to the shipped Input/Gameplay/HUD/ Graphics/Audio/Display and the D406 line added.
This commit is contained in:
1 parent
82476f3dd2
commit
8e58376d46
4 files changed
+95
-24
No files matched your search
@@ -282,3 +282,4 @@ D402,RESOLVED,First clean Linux (glibc / SteamOS) build of release/v0.4.0 broke
|
||||
D403,RESOLVED,Deck v0.4.0-pre test:,"RESOLVED (2026-09-27, user-confirmed on the Deck:"
|
||||
D404,RESOLVED,"""Aim style: Centred (PC)"" (Input.AimMode=1, D333/D337) has no effect when aiming with a gamepad; the row's own doc comment over-promises (""applies to every aim…","RESOLVED (2026-09-28, port-layer only):"
|
||||
D405,CLOSED,"fast3d/OpenGL: MSAA above the driver max black-screens; two glBindFramebuffer calls pass an index where a GL name is required (PR #106, italoarruda, 2026-09-25…","CLOSED (2026-09-28). Merged from PR #106 (code file only; security-reviewed clean - port-layer GL state fixes, no external input, no allocations)."
|
||||
D406,OPEN,front-end PC Options screen:,"OPEN (implemented 2026-09-28, port-layer only):"
|
||||
|
@@ -690,6 +690,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121).
|
||||
| D403 | **Deck v0.4.0-pre test: Nintendo logo + copyright/legal page render broken, broader graphics "not reflecting new updates" — stale 0.3.0-era sidecars seeded into the bundle (2026-09-27).** Full `## D403` entry at file tail. | RESOLVED (2026-09-27, user-confirmed on the Deck: a stale-sidecar **test artifact**, never a code regression): the Deck bundle was seeded with `pcmodels`/`pccg` sidecars from the `0.3.0-local` install (data dated 2026-09-15), which predate the D75/M-197 embedded-blob raw-pixel fix (commit `425237f9`, 2026-09-21) and the D303 muzzle-vertex converter fix (2026-09-26) → the `P*` front-end logo/legal textures come out broken while the in-exe fast3d fixes (D397 gun-barrel/file-select) render correctly. Disambiguation performed (2026-09-27): `data/pcmodels-ntsc-final` + `data/pccg-ntsc-final` regenerated from the Python-source converter (`prepare-assets.py` + the current `d43/d69/d88_emit.py`, `ALL CHECKS PASSED`) on the NTSC ROM and pushed to the Deck (sha256-verified), preserving the user's `ge007.eep`/`ge007.ini`. **RESOLVED (user-confirmed on the Deck, 2026-09-27): the front-end logo / copyright / legal page now render correctly — confirming this was the stale-sidecar test artifact, not a code regression.** |
|
||||
| D404 | **"Aim style: Centred (PC)" (`Input.AimMode=1`, D333/D337) has no effect when aiming with a gamepad; the row's own doc comment over-promises ("applies to every aim input … pad trigger") but the centred path is mouse-only (Steam Deck, 2026-09-27).** Full `## D404` entry at file tail. | RESOLVED (2026-09-28, port-layer only): the toggle now genuinely works on a pad. First logged as a communication bug and closed by relabel ("Aim style (mouse)"), then reopened on user challenge the same day: the pad path emits stick *deflection* into the game's crosshair integrator, so the pad was actually always in the **N64** model (a flick travels the crosshair; edge-scroll + spring-back only made a hold *feel* direct), and the "stick has no crosshair to travel" rationale was wrong. Fix: new `padDirectCompute()` in `input.c` (the pad twin of `hipDirectCompute`'s CENTRED branch -- same dead/watch/pause/cutscene gates, minus the mouse-grab gate; revised same day to the N64 path's verbatim quadratic curve -- `sign(v)\u00b7clamp(defl/70,\u00b11)\u00b2 \u00b7 (fov/60) \u00b7 3.5 deg/poll` (bondview2.c canNaturalTurn/canNaturalPitch), full-stick parity with the N64 path, pending retest on the refreshed build); the natural-pitch pad branch routes CENTRED through it and keeps N64's classic deflection behaviour (also the default, so no pad default changes). Labels reverted to device-neutral ("Aim style" / "Aim range"). **Steam Deck (2026-09-27/28): "centered aim is broken on deck too" -- fixed for real; the first-pass linear gain was measured as a dramatic sensitivity loss (2026-09-28) and replaced with the N64 path's verbatim quadratic curve (fov/60 base, 3.5 deg/poll top rate); retest on the refreshed build: user "good". RESOLVED.** |
|
||||
| D405 | **fast3d/OpenGL: MSAA above the driver max black-screens; two `glBindFramebuffer` calls pass an index where a GL name is required** (PR #106, italoarruda, 2026-09-25; label rebased from the PR's D323, which collides with our D323 LOD finding) — full `## D405` entry at file tail | **CLOSED (2026-09-28).** Merged from PR #106 (code file only; security-reviewed clean - port-layer GL state fixes, no external input, no allocations). `resolve_msaa_color_buffer` clamps `msaa_level` to `GL_MAX_SAMPLES`; the resolve/copy paths bind `current_framebuffer ? framebuffers[i].fbo : 0` (the default framebuffer is GL name 0). Both Windows (opengl32) and Linux use this backend. Post-merge sweep 21/21 PASS + MSAA=16 boot check render-verified; link ritual clean. |
|
||||
| D406 | **front-end PC Options screen: long sections (INPUT, 17 visible rows) run off the bottom of the 440x330 paper, and rows past the silent 14-row page cap (Crouch mode, Reset to defaults, Bindings…) are unreachable from the front screen** (user report 2026-09-28, v0.4.0 pre-push review) — full `## D406` entry at file tail | OPEN (implemented 2026-09-28, port-layer only): in-section pagination in `frontoptions.c` (13 rows/page fit the paper; the vertical stepper crosses page boundaries; title carries a (p/N) marker; the F10 overlay is untouched). Verification owed on the rebuilt binary (user re-check of the front screen). |
|
||||
|
||||
|
||||
Phase 2 replaced the Phase-1 demo loop with the real `mainproc()` on real OS
|
||||
@@ -15479,3 +15480,15 @@ issue, README-disclosed; Nintendo logo + legal page are clean.** Release decisio
|
||||
M7/D387 ships as the loudly-documented EXPERIMENTAL option (user: the warning is sufficient);
|
||||
D258 ships NTSC-only (PAL/JP repair deferred post-v0.4); D224 rumble validated on the Deck and
|
||||
included; D281 keeps the shipped mitigation + disclosure, zero-saves root cause moves to v0.5.0.
|
||||
|
||||
## D406 — front-end PC Options: long sections (INPUT) run off the bottom of the paper; rows past the silent page cap are unreachable (user report 2026-09-28, during the v0.4.0 pre-push review)
|
||||
|
||||
**Report:** on the main-menu PC Options screen (MENU_PC_OPTIONS, `port/src/frontoptions.c`), the INPUT section "has too many settings and they go off the bottom of the screen."
|
||||
|
||||
**Root cause (geometry, two stacked miscalculations):** the 440x330 paper ends at y=330. `rowY()` puts content row k at `ROW_Y0 + (k+2)*ROW_DY` (the D356 top profile row takes slot 1). D346b sized the 18px pitch for 15 rows *without* a profile row; D356 then added the profile row (cap became `MAX_PROWS-1 = 14`), which pushed the 14th content row to y = 65+15*18 = **335 — 5px below the paper's bottom edge** (text + highlight box mostly off-screen). Meanwhile the v0.4.0 Wave-A additions grew INPUT to **17 visible rows** (mouse H/V, invert-mouse, aim style, aim range, invert-pad, deadzone L/R, pad look-sens X/Y, look smoothing, southpaw, trigger threshold, vibration, crouch mode, reset, Bindings…), so rows 15–17 (Crouch mode, Reset to defaults, **Bindings…**) were dropped by `buildPages()`' silent cap — logged as a warning, but **unreachable from the front screen** (key rebinding was only reachable via the F10 overlay).
|
||||
|
||||
**Fix (port-layer only, `frontoptions.c`; no `src/` edits, F10 overlay untouched — it scrolls its own window, D345–D347):** in-section pagination. `buildPages()` now gathers all visible rows of the active section and pages them at `ROWS_PER_PAGE = 13` (the largest page that fits: last row at y = 65+14*18 = 317, +~10px text stays inside 330). The discrete vertical stepper crosses page boundaries — stepping past the last visible row turns the page (cursor lands on the next page's first row; the reverse at the top), single-page sections still clamp as before — and the section title carries a `(p/N)` marker when it spans pages (e.g. "Input (1/2)"). `s_pageno` resets on every section/nested-page entry and back-navigation, and is re-clamped on each `buildPages()` so rows that auto-hide (aim range, auto-FOV) cannot strand the cursor past the end.
|
||||
|
||||
**Verification:** rebuild + user re-check of the front screen owed on the refreshed build (INPUT shows 13 rows + "Input (1/2)", stepping down turns to page 2 with Crouch mode / Reset / Bindings…; `GE_FRONTNAVLOG` logs the page number per step; `GE_FRONTOPTIONS_SECTION=INPUT` logs the gathered row count).
|
||||
|
||||
**Status:** OPEN (implemented 2026-09-28, pre-push; verification pending rebuild).
|
||||
Reference in new issue
Block a user