Skip to content

Launcher and in-game menu: Settings split into Video, Graphics, Audio and System - #114

Merged
gascarcella merged 2 commits into
mainfrom
gascarcella/settings-improvements
Oct 26, 2026
Merged

gascarcella merged 2 commits into
mainfrom
gascarcella/settings-improvements

Conversation

@gascarcella

@gascarcella gascarcella commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

The Settings screen had become one long scroll: the window, the rate, the renderer and its two filter sets with their sliders, then audio, memory cards, updates and Steam. It is now four screens, each its own entry in the launcher's navigation and in the in-game menu.

  • Video: window size, fullscreen, scaling, the rate (with the game's note), the in-game menu's size.
  • Graphics: the renderer, then the hardware renderer's resolution, 3D vertices and filter set(s).
    • On the Software renderer these are greyed out, under a line saying they need the GPU renderer, so the page keeps its shape.
    • 3D vertices is also greyed out at Resolution x1, with a note that it applies above x1 only.
    • A game with 2D and 3D scenes has its two filter sets in tabs named by the scenes' labels ("Battles" | "The field and the menus").
      • The set on screen in the in-game menu says "(on screen)" in its tab's name.
      • A change of scene selects that set's tab, so the menu opens on the set the player is looking at.
  • Audio: mute. More audio settings can go here later.
  • System: memory cards, the launcher's Updates and Steam sections (the hook set_settings_extra is now set_system_extra), and the settings file.
Navigation
Launcher Play · Disc · Video · Graphics · Audio · Controls · Mods · System
In-game menu Game · Video · Graphics · Audio · Controls · Mods · System

<PREFIX>_PORT_MENU_SCREEN takes the new page names; settings still opens Video. The settings file and the contract are unchanged, so there is no PSXSTACK_API bump.

The tests follow the pages:

  • The self-test's pictures are renamed to match: 9-Graphics*, 18*-System-update*, 20*-System-steam*.
  • The self-test's Ctrl+PageDown loop also takes a picture of each of the three new screens.
  • hello_test.py --menu now takes its picture, and the GPU comparison's, on Graphics, the largest settings page. It also checks that Video, Audio and System fit a 640x480 window.

The docs describe the new screens: docs/LAUNCHER.md, docs/RUNTIME.md, launcher/README.md, README.md and CLAUDE.md.

Gates run

  • Launcher build and --self-test on Linux (offscreen): 600 of 600 checks passed (588 before; the screen loop's 3 new screens add 12).
  • tests/hello_test.py --menu --gpu passes (lavapipe):
    • the menu's round trip and the live apply;
    • Graphics on the software and hardware renderers, 0 pixels off by more than 8 levels;
    • Video, Audio and System at 640x480, nothing wider than the window;
    • the Mods page at its four sizes;
    • the players.
  • The Windows cross-build (llvm-mingw) and its --self-test under Wine: 597 of 597 checks passed.
  • tests/game_gen_test.py passes (the schema's label descriptions now say "filter tab").
  • Not run: dw2003recomp. hello has no scenes, so the filter tabs are only covered by the launcher self-test's picture (dw2003's description), not by the in-game menu at 640x480. Only the launcher's UI and the menu's page list changed; its in-game menu will show the new pages after a pin bump.

🤖 Generated with Claude Code

gascarcella and others added 2 commits October 26, 2026 17:59
… and System

The one Settings screen had grown long enough to need scrolling to find anything (the hardware renderer's two filter
sets with their sliders on top of the window, the rate, the audio, the memory cards, the updates and Steam), in the
launcher and more so in the in-game menu. It is now four screens, each its own entry in the navigation:

- Video: window size, fullscreen, scaling, the rate (with the game's note), the in-game menu's size.
- Graphics: the renderer, then the hardware renderer's resolution, 3D vertices and filter set(s). Under the software
  renderer these are shown greyed out under a line that says they need the GPU renderer, so the page keeps its shape;
  3D vertices is greyed out at x1 too, saying it applies above x1 only.
- Audio: mute (the place for audio settings to come).
- System: memory cards, the host's own sections (the launcher's Updates and Steam: set_settings_extra is now
  set_system_extra), the settings file.

The launcher's screens are Play, Disc, Video, Graphics, Audio, Controls, Mods, System; the menu's Game, Video,
Graphics, Audio, Controls, Mods, System. <PREFIX>_PORT_MENU_SCREEN takes the new names, `settings` still opening
Video. The settings file and the contract are unchanged.

The self-test's pictures follow the pages (9-Graphics*, 18*-System-update*, 20*-System-steam*) and its screen loop
takes the three new ones. hello_test.py --menu takes Graphics, the largest settings page, as its picture (and the
GPU comparison's), and checks Video, Audio and System fit a 640x480 window.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A game with scenes had its two filter sets one under the other, each with up to three sliders and a help line, so the
Graphics page still scrolled. They are now two tabs under the 3D vertices row, named by the scenes' labels (the first
letter capitalised: "Battles", "The field and the menus"); each tab holds the set's Filter row, sliders and help. The
set on screen in the in-game menu says so in its tab's name ("(on screen)", the tab's id stable as its name changes),
and a change of scene chooses its tab, so the menu opens on the set the player is looking at. A game without scenes
keeps its one Filter row. The game description's label is documented as the tab's name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gascarcella
gascarcella merged commit 8e9153a into main Oct 26, 2026
9 of 10 checks passed
@gascarcella
gascarcella deleted the gascarcella/settings-improvements branch October 26, 2026 22:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant