forked from Ports/goldeneye-pc-port
optionsoverlay: add D293 quit-to-desktop row to the F10 overlay
No discoverable in-UI way to quit (Deck/controller-only setups had only window-close/Alt+F4). Adds a ROW_ACTION row kind (not config-backed, same pattern as the existing __Resolution row) that triggers the identical configSave()+exit(0) path SDL_QUIT already uses. Build-verified on Windows and Linux; verify.sh dam PASS, no regression. Claude-Session: https://claude.ai/code/session_01KwZViAFaXua3PKgHHjNgvi
This commit is contained in:
1 parent
acf80a874f
commit
a3637c40e1
4 files changed
+32
-7
No files matched your search
@@ -170,5 +170,5 @@ D289,OPEN,"Dam: a crash in the computer room, not reproducible on a second attem
|
||||
D290,OPEN,"Watch's in-game ""controller"" section shows no control-pad graphic (M-141, Steam Deck user playtest).","OPEN — observed, not investigated."
|
||||
D291,OPEN,"Dam: texture glitches when the truck drives past (M-141, Steam Deck user playtest).","OPEN — observed, not investigated."
|
||||
D292,OPEN,Death animations are glitched —,"OPEN — same status as D173 (observed, not root-caused)."
|
||||
D293,OPEN,"QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest —","OPEN — not investigated, low complexity.…"
|
||||
D293,FIXED,"QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest —","FIXED (M-141) — ""Quit to desktop"" row added to the F10 overlay; build-verified Win+Linux, not yet live-confirmed.…"
|
||||
D294,OPEN,"Statue: ground geometry near the large CCCP/hammer-and-sickle monument briefly renders solid black over a wide area, then self-recovers 10-30 seconds later… —",OPEN — not investigated.…
|
||||
|
@@ -579,7 +579,7 @@ covers D24–D69; the log continues in §H (D32 procedure, D70–D121).
|
||||
| D290 | **Watch's in-game "controller" section shows no control-pad graphic (M-141, Steam Deck user playtest).** — full `## D290` entry at file tail | OPEN — observed, not investigated. Needs a live repro (open the watch, navigate to the controller-config page) plus a screenshot for comparison against N64 reference. |
|
||||
| D291 | **Dam: texture glitches when the truck drives past (M-141, Steam Deck user playtest).** — full `## D291` entry at file tail | OPEN — observed, not investigated. Needs a live repro with the truck's exact position/timing and, ideally, a screenshot. |
|
||||
| D292 | **Death animations are glitched — Bond is often sunk halfway into the floor (M-141, Steam Deck user playtest).** — full `## D292` entry at file tail | OPEN — same status as D173 (observed, not root-caused). Cross-ref D173/D148 as one investigation thread, not three separate bugs, next time someone has a live session to chase it. |
|
||||
| D293 | **QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest — "couldn't see a way to exit the game. Maybe build this into the…** — full `## D293` entry at file tail | OPEN — not investigated, low complexity.… |
|
||||
| D293 | **QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest — "couldn't see a way to exit the game. Maybe build this into the…** — full `## D293` entry at file tail | FIXED (M-141) — "Quit to desktop" row added to the F10 overlay; build-verified Win+Linux, not yet live-confirmed.… |
|
||||
| D294 | **Statue: ground geometry near the large CCCP/hammer-and-sickle monument briefly renders solid black over a wide area, then self-recovers 10-30 seconds later…** — full `## D294` entry at file tail | OPEN — not investigated.… |
|
||||
|
||||
Phase 2 replaced the Phase-1 demo loop with the real `mainproc()` on real OS
|
||||
@@ -10859,7 +10859,7 @@ crash class C2 (Facility `-level_34`, Runway `-level_35`): `import_texture_i8` A
|
||||
|
||||
**Dam: a crash in the computer room, not reproducible on a second attempt (M-141, Steam Deck user playtest).** **User's own read, most likely: the same computer-terminal SIGSEGV as D255** (Facility door-opening terminals — root-caused and FIXED this session, M-141, `vtxstore_fix_refs` reading `Model*` through the wrong union field, a 32-bit pointer truncation). D255's mechanism is generic to computer-terminal props, not Facility-specific, so a Dam terminal hitting the same bug is plausible and would already be fixed by the same patch. **Not yet confirmed** which build the user was on when this happened (pre- or post-D255-fix) — if it was pre-fix, this is very likely just D255 and needs no separate investigation; if it recurs on a build that has the D255 fix, that's a new, real, distinct bug worth its own crash log.
|
||||
|
||||
**Status (from §F table):** OPEN — needs a human re-test specifically on a build with the D255 fix (this session's `release/v0.3.0`, not any earlier build) to see if it still happens. If it does, get `ge007.crash.log` (or a gdb `bt full` under `debug.ps1`) and the exact terminal/action — that's the actionable next step, not further static analysis.
|
||||
**Status (from §F table):** OPEN — needs a human re-test specifically on a build with the D255 fix (this session's `release/v0.3.0`, not any earlier build) to see if it still happens. If it does, get `ge007.crash.log` (or a gdb `bt full` under `debug.ps1`) and the exact terminal/action — that's the actionable next step, not further static analysis. **A build with both the D255 fix and this session's D293 quit-QoL row has been deployed to the Deck's own `~/Downloads/goldeneye-pc-port-0.3.0-local.20260915c-linux-x86_64/ge007.x86_64`** (rebuilt via WSL `Ubuntu-24.04`, `scp`'d over — SSH itself can't drive the Deck's own X/gamescope display to launch-and-play remotely, so the actual Dam-computer-room retest still needs the user at the hardware).
|
||||
|
||||
## D290 — Watch's in-game "controller" section shows no control-pad graphic (M-141, Steam Deck user playtest).
|
||||
|
||||
@@ -10883,7 +10883,7 @@ crash class C2 (Facility `-level_34`, Runway `-level_35`): `import_texture_i8` A
|
||||
|
||||
**QoL ask: no discoverable way to quit the game from the UI (M-141, Steam Deck user playtest — "couldn't see a way to exit the game. Maybe build this into the settings/options menu.").** Confirmed in code: the only quit path is `SDL_QUIT` (`port/src/video.c:515`, the OS window-close event / Alt+F4) — there is no Escape-key handler and no "Quit" entry in the front-end menus or the F10 options overlay. Fine on a desktop with visible window chrome; a real gap on Steam Deck / controller-only / fullscreen setups with no easy way to reach the OS window controls.
|
||||
|
||||
**Status (from §F table):** OPEN — not investigated, low complexity. Candidate fix: a "Quit to Desktop" row in the F10 overlay (`port/src/optionsoverlay.c`) and/or an Escape-key binding in the front-end menu context (`port/src/input.c`), calling the same path `SDL_QUIT` already triggers. Cheap, port-only, good QoL-batch candidate.
|
||||
**Status (from §F table):** FIXED (M-141, `release/v0.3.0` local). Added a "Quit to desktop" row to the F10 overlay (`port/src/optionsoverlay.c`) — a new `ROW_ACTION` kind (not config-backed, same non-config pattern as the existing `__Resolution` row) that calls the identical `sysLogPrintf` + `configSave()` + `exit(0)` path `SDL_QUIT`/Alt+F4 already use. Reachable by keyboard (arrow/Enter when the row is selected), mouse click, or gamepad A/X — no new Escape binding was added (D145 already dedicates ESC to menu-back / cursor-release). Build-verified on Windows (`ninja`, clean link) and Linux (WSL `Ubuntu-24.04` cross-build); `tools_pc/verify.sh dam` PASS, no regression. **Not yet live-confirmed** — needs a human to actually select the row on a real session (headless/SSH-launched smoke tests can't reach the Deck's own X/gamescope display to drive input).
|
||||
|
||||
## D294 — Statue: ground geometry near the large CCCP/hammer-and-sickle monument briefly renders solid black over a wide area, then self-recovers 10-30 seconds later…
|
||||
|
||||
|
||||
@@ -1225,6 +1225,15 @@ and turns every such overrun into a fatal `*** stack smashing detected ***`
|
||||
path (`cd C:\Users\...`) is unreliable in this same shell and can silently
|
||||
mis-parse to a mangled path on a later command in the same tool call —
|
||||
prefer `cd /c/Users/...` (forward slashes) for the build working directory.
|
||||
**The PATH fix alone can still leave the *link* step broken (M-141):**
|
||||
compiling succeeds but `ld.exe` fails with `cannot find @C:\Windows\Temp\
|
||||
ccXXXX: Invalid argument` if `TMP`/`TEMP` are unset or point at a
|
||||
non-writable/non-real path like a literal `C:\Windows\Temp` string — the
|
||||
response-file `ld` uses for the link command has to land somewhere this
|
||||
shell's child process can actually write and re-read. Fix: `export
|
||||
TMP=... TEMP=...` to a real writable per-session directory (the Claude
|
||||
Code scratchpad path works well) before `ninja`/`build-pc.sh`, not just any
|
||||
Windows-looking path string.
|
||||
- **A crash fault address of `0xffffffffffffffff` on x86-64 usually means a
|
||||
non-canonical #GP from a garbage-high-bits pointer (bits 63:48 not a sign
|
||||
extension of bit 47), not a computed `-1` sentinel** (cross-validated
|
||||
|
||||
@@ -62,7 +62,7 @@ extern s16 viGetY(void);
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
enum { ROW_TOGGLE, ROW_SLIDER, ROW_ENUM, ROW_MSAA, ROW_RES };
|
||||
enum { ROW_TOGGLE, ROW_SLIDER, ROW_ENUM, ROW_MSAA, ROW_RES, ROW_ACTION };
|
||||
|
||||
static const char *const kOnOff[] = { "OFF", "ON", NULL };
|
||||
static const char *const kTexFilter[] = { "NEAREST", "BILINEAR", "3-POINT", NULL };
|
||||
@@ -141,6 +141,11 @@ static struct Row rows[] = {
|
||||
/* D257: everything-unlocked goodie (default ON). Consumed at startup by
|
||||
* main.c -- applies from the next launch. */
|
||||
{ "Game.AllUnlocked", "All unlocked", ROW_TOGGLE, 1, kOnOff, 0, 0, 0, 0,0,0,0,0 },
|
||||
/* D293: only quit path used to be the OS window-close / Alt+F4 -- no
|
||||
* discoverable in-game way to exit, a real gap on Deck/controller-only
|
||||
* setups. Not config-backed (like __Resolution); activating it exits
|
||||
* the same way video.c's SDL_QUIT/Alt+F4 handlers already do. */
|
||||
{ "__QuitToDesktop", "Quit to desktop", ROW_ACTION, 0, NULL, 0, 0, 0, 0,0,0,0,0 },
|
||||
};
|
||||
#define NUM_ROWS ((int)(sizeof(rows) / sizeof(rows[0])))
|
||||
|
||||
@@ -320,8 +325,8 @@ static void overlayInit(void)
|
||||
configForEachOption(resolveCb, NULL);
|
||||
|
||||
for (int i = 0; i < NUM_ROWS; i++) {
|
||||
if (rows[i].kind == ROW_RES) {
|
||||
rows[i].found = 1; /* not config-backed; driven via video.c */
|
||||
if (rows[i].kind == ROW_RES || rows[i].kind == ROW_ACTION) {
|
||||
rows[i].found = 1; /* not config-backed */
|
||||
continue;
|
||||
}
|
||||
if (!rows[i].found) {
|
||||
@@ -497,6 +502,13 @@ static void rowAdjust(struct Row *r, int dir)
|
||||
videoRequestWindowSize(kResList[i][0], kResList[i][1]);
|
||||
break;
|
||||
}
|
||||
case ROW_ACTION:
|
||||
/* D293: same exit path as SDL_QUIT / Alt+F4 (video.c), just reachable
|
||||
* without OS window chrome or a keyboard. */
|
||||
sysLogPrintf(LOG_INFO, "optionsoverlay: quit to desktop requested");
|
||||
configSave();
|
||||
exit(0);
|
||||
break;
|
||||
default: /* ROW_SLIDER */
|
||||
rowSet(r, v + dir * r->step);
|
||||
break;
|
||||
@@ -716,6 +728,10 @@ static void valueText(const struct Row *r, char *out, int n)
|
||||
else snprintf(out, n, "%dx", (int)lround(v));
|
||||
return;
|
||||
}
|
||||
if (r->kind == ROW_ACTION) {
|
||||
snprintf(out, n, "[ENTER]");
|
||||
return;
|
||||
}
|
||||
if (r->kind == ROW_SLIDER && r->type == CONFIG_OPT_FLOAT) {
|
||||
snprintf(out, n, "%.2f", v);
|
||||
return;
|
||||
|
||||
Reference in new issue
Block a user