Linux reference-frame set for all 21 levels and the cross-platform golden
rule (D521); golden tooling made non-destructive (D524); the gate pins a
canonical in-tree save (D529) and the PRNG seed (D532); the capture tool's
per-level re-pin bug fixed and the Linux set re-captured under the
canonical save (D530, D531); no-arg verify.sh exits non-zero. README and
docs visual/consolidation passes; the 15 MB preview gif replaced by stills.
Refs: D521 D523 D524 D525 D526 D527 D528 D529 D530 D531 D532
'Game file' (the manual's term) reads, in modern PC usage, as the
program's own files, not the user's save. 'Profile' is the clearest
end-user term for what these files actually are -- a per-player
bundle of progress + per-file settings -- and '(per profile)'
expresses the tag's scope where '(save)' read as a verb.
Strings (both UIs: front options + F10 overlay):
- front top row: 'Save file' / 'File N' -> 'Profile' / 'N'
- section annotation: '(File N)' / '(no file)' -> '(Profile N)' / '(none)'
- per-file row tag: '(game file)' -> '(per profile)'
- F10 unavailable value: 'Select game file' -> 'Select a profile'
Display layer only: identifiers and ini keys (Bond.* rows,
watchSettings*, ini) are untouched. D357 plan section 4 is the
terminology record; new D359 finding + index row; manual
'game file' -> 'profile' sync noted as a TODO (port-owned doc,
not in this repo). Build + headless smoke clean.
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.
- The front options screen numbers items 0..s_rowN (0 = the top
save-file row, k = content row k-1), but the level-1 draw loop painted
content row k at rowY(k) -- the save row's own line -- and mapped
s_hl (item-numbered) straight into s_rowIdx (content-numbered): the
'Save file' row overlapped the first content row, highlights/adjusts
hit the wrong row, the last content row was dead, and s_rowIdx[s_hl]
could read one past the built rows. Content rows now draw at rowY(k+1)
and all s_hl -> s_rowIdx uses take s_hl - 1 (A-press, L/R repeat,
reset-maintain); hit-test/cursor were already item-numbered and are
untouched.
- Per-file row tag '(save)' -> '(profile)' (maintainer request), both
UIs (front options + F10 overlay) plus the stale comments.
- docs/dev/D357-SETTINGS-VALUES-PLAN.md (PROPOSAL): row-by-row audit of
current defaults/ranges/steps/displays vs the PD port (local checkout)
and the Turok PC list (maintainer notes); proposals: mouse sensitivity
as a x multiplier, deadzone as a whole-% key (D333 legacy-alias
pattern), texture filter '3-Point' -> Bilinear, audio step 128 -> 328
(whole-%), MSAA +16x, FPS-cap preset grid, FOV degrees; kResetDefaults
lockstep gate + GE_WSPROBE_RESET re-verification.
Build clean (248 targets), headless menu boot smoke clean; visual
check of the front options screen + F10 owed to the maintainer.