Repository navigation
Launcher: a Filter row for 2D scenes and one for 3D (dw2003recomp #122) - #110
Merged
gascarcella merged 1 commit intoOct 26, 2026
Conversation
A game with video.scenes has two present-filter sets (dw2003recomp #122). The launcher's settings layer holds them as FilterSets: video.filter and video.crt (the 3D set, the only one of a game without scenes) and video.scene_2d (the 2D set), read member by member over what an absent scene_2d means (game.json's 2d.filter with the default crt values, else a copy of the 3D set), written whole once it differs from that or the file has it, so a file that never chose a 2D set stays as it was. A game without scenes neither reads nor writes the key. The Settings screen draws, for such a game, two Filter rows, "Filter: <3D label>" and "Filter: <2D label>", each with its combo, sliders and help line (a colon: the UI font has no dash); the screen of a game without scenes is unchanged. The in-game menu marks the set on screen through the runtime's port_video_scene(); a change to either set is saved and applied live as before (port_live_apply rebuilds both). brand.h carries the labels and the 2D default from the generated PSXSTACK_GAME_SCENE* macros. The self-test covers the scene_2d round trip, the absent, partial and bad cases, the key left alone by a game without scenes, and a picture of the two rows with the 2D one marked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gascarcella
force-pushed
the
gascarcella/dual-filters-launcher
branch
from
October 26, 2026 18:28
3ba9863 to
5d838d8
Compare
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of gascarcella/dw2003recomp#122 (two present-filter sets, one for a game's 2D scenes and one for its 3D scenes). This is stacked on the runtime and contract PR (base
gascarcella/dual-filters-runtime). It changes the launcher and the in-game menu only.What and why
launcher/src/settings.{h,cpp}): aFilterSet(filter + crt).video.filter/video.crtare the 3D set, which is the only set for a game without scenes.video.scene_2dis the 2D set.scene_2dmember by member over what an absent one means: game.json's2d.filterwith the default crt, or a copy of the 3D set when game.json names no filter. A runtime and the launcher read it the same way (settled with the runtime side).scene_2dis written whole once it differs from that default, or once the file already has it. A file that never chose a 2D set gets noscene_2d, the same wayvideo.filteris kept today.GAME_SCENES, the two labels and the 2D default filter, from the generatedPSXSTACK_GAME_SCENE*macros.launcher/ui/screens.cpp): for a game with scenes, two rows, "Filter: battles" and "Filter: the field and the menus". Each has its own combo, sliders and help line, and "Smooth (2D)" keeps its label. The rows use a colon rather than the brief's em dash because the UI font has no dash glyph (it drew "?"). A game without scenes gets the same single row as before.launcher/ui/menu.cpp): it marks the set on screen as "(on screen now)", usingport_video_scene(). A change to either set is saved and applied live through the existingport_live_apply, which now rebuilds both sets.docs/LAUNCHER.mdadds avideo.scene_2dmember and the menu's live apply.launcher/README.mddescribes the self-test's new coverage.Gates that ran
--self-test:examples/hello(no scenes): 542/542PushIDaround it.python3 tests/hello_test.py --menu(before the rebase onto the getter) and--menu --gpu(after it, with the menu change): pass.For the owner to try
video.filter: check that the battles row keeps that filter and the field row shows Smooth (2D).🤖 Generated with Claude Code