mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
options UI: anchor all file terminology on the manual's 'game file' (English review)
Full-string audit of the settings UI (front options + F10 overlay): - front top-row label 'Save file' -> 'Game file' (the instruction manual's term) - per-file row tag '(profile)' -> '(game file)', both UIs - F10 unavailable value 'Select file' -> 'Select game file' - kept: 'File N' values, the '(File N)' section annotation and the '(no file)' unavailable state (short forms; the annotation's host word is the section title, which says the file number) - 'Bond file' now appears only in identifiers/config keys (Bond.* rows, watchSettings* names, ini keys), never user-visible Docs: D357 plan section 4 is now the terminology record (final string table); D358 finding notes the (profile) -> (game file) supersession. Build + headless smoke clean.
This commit is contained in:
1 parent
8775ca6435
commit
44d2b4353a
4 files changed
+37
-21
No files matched your search
@@ -9,7 +9,9 @@ the `Bond.*` rows only). Triggered by maintainer report: the current values
|
||||
are "a bit confusing".
|
||||
|
||||
Companion change landed with this doc's review: the dim per-file row tag is
|
||||
now **"(profile)"** (was "(save)"; user request, both UIs).
|
||||
now **"(game file)"** (was "(save)"); the front top row reads **"Game
|
||||
file"** and the F10 unavailable value reads **"Select game file"** — the
|
||||
instruction manual's term (§4).
|
||||
|
||||
## 1. Problem
|
||||
|
||||
@@ -111,13 +113,23 @@ ranges (2026-09-27). "Display" = what the value column shows today.
|
||||
| Frame rate cap | 60 · 0–1000 · 1 · `Uncapped/N FPS` | Turok: "up to 120 FPS" / uncapped | **Preset grid**: 0/30/60/120/144 (step = next preset, wraps to Uncapped); value text already `N FPS`/`Uncapped`. Decision: preset grid vs free 1-step (recommend presets; 117 FPS has no purpose). |
|
||||
| Show FPS | Off/On | both | Keep. |
|
||||
|
||||
## 4. Terminology
|
||||
## 4. Terminology (instruction manual = "game file")
|
||||
|
||||
- Per-file row tag: **"(save)" → "(profile)"** (landed with this doc's
|
||||
review; `frontoptions.c` + `optionsoverlay.c`, both draw paths + comments).
|
||||
- Open question for the maintainer: the front screen's top row still reads
|
||||
**"Save file: File N"** — rename to "Profile: File N" for consistency?
|
||||
(Not done; the save *file* is literally what's being chosen.)
|
||||
The instruction manual calls the per-player save a **"game file"**; the
|
||||
settings UI anchors on that term (2026-09-27, maintainer request). Final
|
||||
string set:
|
||||
|
||||
| String | Where | State |
|
||||
|---|---|---|
|
||||
| **"Game file"** | front options top-row label (was "Save file") | changed |
|
||||
| **"(game file)"** | per-file row tag, both UIs (was "(save)", briefly "(profile)") | changed |
|
||||
| **"Select game file"** | F10 unavailable value (was "Select file") | changed |
|
||||
| `File N` | row values + the `(File N)` section annotation | kept (value-column short form, PD "Player N" pattern) |
|
||||
| `(no file)` | unavailable state, dim annotation | kept |
|
||||
|
||||
"Bond file" remains in code identifiers/config keys (`Bond.*` rows,
|
||||
`watchSettingsChooseFile`, ini keys) only -- never user-visible; the manual
|
||||
and UI say "game file".
|
||||
|
||||
## 5. Gates
|
||||
|
||||
|
||||
@@ -13965,4 +13965,7 @@ and are untouched. Verified by build + headless boot smoke; visual check
|
||||
of the screen owed (D357 plan gate 4).
|
||||
|
||||
**Companion change (same commit):** the per-file row tag now reads
|
||||
"(profile)" (was "(save)", maintainer request), both UIs.
|
||||
"(profile)" (was "(save)", maintainer request), both UIs. (Later the same
|
||||
day the tag and the rest of the file terminology were anchored on the
|
||||
instruction manual's "game file" term: "(game file)" tag, "Game file" top
|
||||
row, "Select game file" -- D357 plan §4.)
|
||||
@@ -500,9 +500,10 @@ Gfx *frontOptionsMenuDraw(Gfx *DL)
|
||||
DL = ink(DL, ROW_X + titleW + 8, TITLE_Y, note, INK_DIM);
|
||||
}
|
||||
|
||||
/* D356: the top save-file row (item 0, not in the row table): the
|
||||
/* D356: the top game-file row (item 0, not in the row table; the
|
||||
* label reads "Game file", the instruction manual's term): the
|
||||
* single file control of the front screen (F10 always targets the
|
||||
* active file, so it has no file row). L/R (and A) cycle folders; ""
|
||||
* active file, so it has no file row). L/R (and A) cycle folders;
|
||||
* (no file) is the unavailable state until one is created. */
|
||||
{
|
||||
int y = rowY(0);
|
||||
@@ -511,7 +512,7 @@ Gfx *frontOptionsMenuDraw(Gfx *DL)
|
||||
DL = microcode_constructor_related_to_menus(DL, ROW_X - 2, y - 1,
|
||||
ROW_X + 140, y + 0xE, HILITE);
|
||||
}
|
||||
DL = ink(DL, ROW_X, y, "Save file\n", INK);
|
||||
DL = ink(DL, ROW_X, y, "Game file\n", INK);
|
||||
int f = watchSettingsActiveFolder();
|
||||
if (f < 0) snprintf(sv, sizeof(sv), "(no file)");
|
||||
else snprintf(sv, sizeof(sv), "File %d\n", f + 1);
|
||||
@@ -533,9 +534,9 @@ Gfx *frontOptionsMenuDraw(Gfx *DL)
|
||||
DL = ink(DL, ROW_X, y, label, INK);
|
||||
|
||||
/* D357: per-file rows in the mixed-scope section carry a dim
|
||||
* "(profile)" tag (the section title already says which file). */
|
||||
* "(game file)" tag (the section title already says which file). */
|
||||
if (optionsRowIsSaveScoped(i)) {
|
||||
DL = ink(DL, ROW_X + measureW(label) + 4, y, "(profile)\n", INK_DIM);
|
||||
DL = ink(DL, ROW_X + measureW(label) + 4, y, "(game file)\n", INK_DIM);
|
||||
}
|
||||
|
||||
if (optionsRowIsSlider(i)) {
|
||||
|
||||
@@ -146,7 +146,7 @@ struct Row {
|
||||
int dispDiv;
|
||||
|
||||
/* D356: 1 = this row's value lives in the selected save file (per-file
|
||||
* watch rows). Carries the dim "(profile)" tag on the only section that
|
||||
* watch rows). Carries the dim "(game file)" tag on the only section that
|
||||
* mixes scopes (GAMEPLAY); on headers the flag is recomputed at init to
|
||||
* mean "this section contains per-file rows" (drives the "(File N)"
|
||||
* title annotation in both UIs). */
|
||||
@@ -158,7 +158,7 @@ static struct Row rows[] = {
|
||||
* GAMEPLAY, GRAPHICS, AUDIO, VIDEO; docs/dev/D356-SETTINGS-REGROUP-PLAN.md).
|
||||
* The D353 "BOND FILE" section -- the one named after WHERE a value is
|
||||
* saved -- is gone: its surviving rows split into GAMEPLAY (the per-file
|
||||
* watch toggles, dim "(profile)" tagged since the section mixes scopes) and
|
||||
* watch toggles, dim "(game file)" tagged since the section mixes scopes) and
|
||||
* AUDIO (the per-file volume sliders, homogeneous so title annotation
|
||||
* only), and the "Edit file" chooser row is retired in favour of the
|
||||
* single top save-file row on the front options screen (frontoptions.c).
|
||||
@@ -198,7 +198,7 @@ static struct Row rows[] = {
|
||||
* Bond.AimControl collides with Input.AimMode (two rows fighting over
|
||||
* the same N64-vs-PC aim model).
|
||||
* The four surviving per-file toggles move here from the D353 BOND FILE
|
||||
* section and carry .saveScoped (dim "(profile)" tag, the only mixed-scope
|
||||
* section and carry .saveScoped (dim "(game file)" tag, the only mixed-scope
|
||||
* section). */
|
||||
/* { .key="Bond.Look", .label="Look up/down (watch; stacks)", .kind=ROW_TOGGLE,
|
||||
.names=kReverse, .found=1, .uiMax=1, .cfgMax=1 }, */
|
||||
@@ -1231,12 +1231,12 @@ static void valueText(int i, char *out, int n)
|
||||
double v = rowGet(r);
|
||||
if (r->kind == ROW_BOND_FILE) {
|
||||
int f = watchSettingsFolder();
|
||||
if (f < 0) snprintf(out, n, "Select file");
|
||||
if (f < 0) snprintf(out, n, "Select game file");
|
||||
else snprintf(out, n, "File %d", f + 1);
|
||||
return;
|
||||
}
|
||||
if (watchSettingsFieldForKey(r->key) >= 0 && !watchSettingsAvailable()) {
|
||||
snprintf(out, n, "Select file");
|
||||
snprintf(out, n, "Select game file");
|
||||
return;
|
||||
}
|
||||
if (r->kind == ROW_RES) {
|
||||
@@ -1437,10 +1437,10 @@ Gfx *optionsOverlayEmit(void)
|
||||
gdl = drawText(gdl, OV_LABEL_X, rowY, (char *)r->label,
|
||||
r->found ? col : 0x808080ff);
|
||||
/* D357: per-file rows in the mixed-scope section carry a dim
|
||||
* "(profile)" tag (the section title already says which file). */
|
||||
* "(game file)" tag (the section title already says which file). */
|
||||
if (r->saveScoped && r->kind != ROW_HEADER) {
|
||||
gdl = drawText(gdl, OV_LABEL_X + measureText(r->label) + 5, rowY,
|
||||
"(profile)", 0x909090ff);
|
||||
"(game file)", 0x909090ff);
|
||||
}
|
||||
if (!r->found) {
|
||||
gdl = drawTextR(gdl, right, rowY, "(n/a)", 0x808080ff);
|
||||
@@ -1520,7 +1520,7 @@ int optionsRowIsBondChooser(int i)
|
||||
|
||||
/* D356: content rows carry the literal per-file flag from the table; header
|
||||
* rows were recomputed at init to "this section contains per-file rows".
|
||||
* Both drive UI decoration (the "(profile)" tag, the "(File N)" annotation).
|
||||
* Both drive UI decoration (the "(game file)" tag, the "(File N)" annotation).
|
||||
* The F10 overlay and the front options screen are the only consumers. */
|
||||
int optionsRowIsSaveScoped(int i)
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user