mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
v0.5.0 playtest fold-in: fog and near-plane clip, crash fixes, polish (D540-D564)
Deck/Windows playtest fixes: fog rework (D540) and RSP-style CPU near-plane clip with per-vertex N64 fog (D543), with fog recomputed on near-plane-clipped vertices as the RSP does, so the haze around the player stays steady (D553); colour-combiner clamp for banded walls (D548); rocket and thrown-item stack overflows (D545, D549); menu double-trigger mitigation (D541); Dam ending first-shot camera swivel restored by removing an old port look-at workaround (D552); settings standardisation (D546), live All unlocked (D547), F10 mouse (D544); static window title and the project mark (the in-game crosshair shape, site gold) as window/taskbar icon and favicon (D550). Reference frames re-based on Windows, Linux and Steam Deck (A/B-confirmed); capture_p7.sh runs on Windows. Opt-in update check, off by default (D551: one HTTPS request to GitHub per launch when enabled; winhttp.dll loaded only then; the tag CI job checks the tag against GE007_VERSION). Release notes, ROADMAP, internals and security docs updated; tree-hygiene pass. Refs: D540 D541 D543 D544 D545 D546 D547 D548 D549 D550 D551 D552 D553 D554 D555 D556 D557 D558 D559 D560 D561 D562 D563 D564
This commit is contained in:
1 parent
d7b9371afb
commit
4b710728bf
243 files changed
+2908
-614
No files matched your search
@@ -382,6 +382,51 @@ sync/flush) is shared.
|
||||
rumble/mempak.
|
||||
This is simpler than a full Memory Pak/PFS emulation.
|
||||
|
||||
* **F10 settings overlay: mouse and scrolling** (`port/src/optionsoverlay.c`,
|
||||
`port/src/input.c`; D544, D314, D304):
|
||||
* *Cursor.* `inputSuspendForOverlay()` (`input.c`) drops relative-mouse
|
||||
grab and calls `mouseRequestCursor(1)`. With `Input.CrosshairCursor` on
|
||||
(default, D555) `inputApplyMouseRequests()` (host thread) then hides the OS
|
||||
cursor while the overlay is open and `drawCrosshairPointer()` in
|
||||
`optionsoverlay.c` draws the game's own `crosshairimage` sprite at the mouse,
|
||||
last in the overlay DL, at the game's on-screen size; the front end's own
|
||||
crosshair keeps tracking the mouse (D519) and the pointer is drawn exactly
|
||||
over it (`inputFrontEndCursorUiFrac()`), so only one shows; in a level it
|
||||
follows the OS mouse. With the option off the OS arrow shows over the box. One owner of the cursor state (no show/hide race).
|
||||
* *Hover vs selection.* `overlayHandleInputLocked()` maps the pointer to a
|
||||
visible row with `overlayRowAtY()` (follows the eased scroll position, so
|
||||
a click lands on the row it visually covers). Hover sets `s_hover` only
|
||||
while `s_mouseActive` (mouse moved or clicked); it is a focus cue, never
|
||||
the selection. The tip line (`helpVis` in the emit path) follows the
|
||||
hovered row while the mouse is in use, else the selected row. The
|
||||
wheel clears `s_mouseActive`.
|
||||
* *Clicks.* Left-click on a row selects it; headers, links and Back act on
|
||||
the whole row, otherwise only a click in the control span to the right of
|
||||
the name changes the setting (toggle/cycle, open a dropdown, start a
|
||||
binding capture, or set + drag a slider). With a dropdown open
|
||||
(`s_ddRow >= 0`) it owns the pointer: hover picks, click confirms, click
|
||||
outside or right-click cancels. Right-click elsewhere = Esc/back (closes a
|
||||
dropdown first, then one page, then the overlay). `s_rmbBlock` holds that
|
||||
off until release after a binding capture, so a right-click just bound
|
||||
does not also back out.
|
||||
* *Scrolling.* Long pages scroll as a window
|
||||
over the visible-row list (`s_visIdx`/`s_visN`, first displayed entry
|
||||
`s_scroll`, section header pinned). `overlayUpdateScroll()` moves the
|
||||
window only when the selection leaves it (D304). The wheel arrives on the
|
||||
host thread: `optionsOverlayScroll()` only queues notches in
|
||||
`s_wheelPending` (SDL atomic, D314) and `overlayApplyWheel()` applies them
|
||||
on the scheduler thread. The drawn position `s_scrollF` eases toward
|
||||
`s_scroll` each emit (snaps on page change via `s_scrollSnap`).
|
||||
* *Scrollbar (D556).* A page that overflows (same test as the "^ v" title
|
||||
marker) draws a thin track + thumb in the card's right margin
|
||||
(`overlayScrollbar()`: x = right-7..right-4, clear of the value text that
|
||||
ends at right-10); thumb size = visible/total rows, position from
|
||||
`s_scrollF`. Mouse: a press on the thumb drags it, a press on the track
|
||||
pages up/down; both call `overlayScrollTo()`, which sets `s_scroll` and
|
||||
moves `s_sel` into the window (like the wheel; otherwise
|
||||
`overlayUpdateScroll()` would snap back). A scrollbar press never reaches
|
||||
the row-click path.
|
||||
|
||||
---
|
||||
|
||||
## 8. Recommended plan
|
||||
|
||||
Reference in new issue
Block a user