Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ The first consumer is [dw2003recomp](https://github.com/gascarcella/dw2003recomp
| `psyq/` | The Psy-Q shim, one file per library, plus the hardware models `gpu.c`, `gte.c`, `mdec.c`, `xa.c`; `check.sh` |
| `shaders/` | The hardware renderer's HLSL (DXC to SPIR-V, for Windows also DXIL, at build time) |
| `mods/fast_forward/`, `mods/fast_loading/` | The stack's own mods, which every game has; a game's own mods live in the game |
| `launcher/` | The launcher (C++, SDL3 + Dear ImGui): its own CMake project; every string from the game description (`launcher/src/brand.h`); `ui/` the Settings, Controls and Mods screens, the style and the in-game menu, compiled (with `src/`'s data layer) into a game built with `PSXSTACK_MENU` (`include/psxstack/menu.h`, `runtime/menu.c` the stubs); the update check (`src/http.cpp`, `src/update.cpp`), Update now and the self-update (`src/app.cpp`, `src/update_apply.cpp`, its self-test `src/selftest_update.cpp`); the Steam shortcut (`src/vdf.cpp`, `src/steam.cpp`, the Settings section `src/steam_section.cpp`, the game's artwork `src/steam_art.cpp`, its self-test `src/selftest_steam.cpp`) |
| `launcher/` | The launcher (C++, SDL3 + Dear ImGui): its own CMake project; every string from the game description (`launcher/src/brand.h`); `ui/` the Video, Graphics, Audio, Controls, Mods and System screens, the style and the in-game menu, compiled (with `src/`'s data layer) into a game built with `PSXSTACK_MENU` (`include/psxstack/menu.h`, `runtime/menu.c` the stubs); the update check (`src/http.cpp`, `src/update.cpp`), Update now and the self-update (`src/app.cpp`, `src/update_apply.cpp`, its self-test `src/selftest_update.cpp`); the Steam shortcut (`src/vdf.cpp`, `src/steam.cpp`, the System screen's section `src/steam_section.cpp`, the game's artwork `src/steam_art.cpp`, its self-test `src/selftest_steam.cpp`) |
| `cmake/` | `psxstack.cmake` (`psxstack_add_game()`, documented inline), `imgui.cmake` (the Dear ImGui target), `version.cmake`, `embed.cmake`, `windows-x86_64.cmake` (llvm-mingw) |
| `windows/` | The game's Windows resource and manifest templates |
| `tools/` | `game_gen.py` (`game.json` → header), `port_gen.py` (the build's generators), `port_inventory.py` (the host-compile gate a game configures), `replay/` (the emulator and port replay runners a game configures: `emulator.py`, `run.lua`, `boot_check.lua`, `port_test.py`, `redux.sh`; docs/RUNTIME.md "The replay runners"), `mcp/` (the debug channel's MCP server, client, symbols; `tools/mcp/README.md`); built tools under `tools/<name>` (gitignored) |
Expand All @@ -68,7 +68,7 @@ python3 tests/hello_test.py [--record] # the smoke test: examples/hel
python3 tests/tasks_test.py [--sanitize|--m32] # the fibers: examples/tasks (three tasks, one preempted), its picture, its log twice, a state saved on a task's fiber and resumed
python3 tests/shim_test.py [--sanitize|--m32] # the shim alone (psyq/*.c + tests/shim/shim_test.c): LIBAPI's events and root counter 3, the card's BIOS file calls and LIBCARD, CdSearchFile over a built ISO, CdRead, LIBSPU, LIBSND's SEQs
python3 tests/hello_test.py --exe build/hello-win/hello.exe --wine --gpu # its Windows build (-DPSXSTACK_SDL=ON, cross-built) under Wine; --gpu: the hardware renderer's picture too (D3D12)
python3 tests/hello_test.py --menu [--gpu] # hello with the window and the in-game menu (-DPSXSTACK_MENU=ON): the input self-test offscreen, ending with the menu's round trip (unmuted live: the device opens), and the menu's pictures (Settings; Mods at 1920x1080, 1280x800, 640x480), none wider than its window; --gpu: Settings on the hardware renderer too (lavapipe), the software one but for edge pixels
python3 tests/hello_test.py --menu [--gpu] # hello with the window and the in-game menu (-DPSXSTACK_MENU=ON): the input self-test offscreen, ending with the menu's round trip (unmuted live: the device opens), and the menu's pictures (Graphics; Video, Audio, System at 640x480; Mods at 1920x1080, 1280x800, 640x480), none wider than its window; --gpu: Graphics on the hardware renderer too (lavapipe), the software one but for edge pixels
cmake -S launcher -B build/launcher -G Ninja [-DPSXSTACK_GAME_JSON=path/to/game.json] && cmake --build build/launcher
SDL_VIDEO_DRIVER=offscreen build/launcher/<id>-launcher --self-test build/selftest # <id> from game.json (dw2003 by default)
cmake -S launcher -B build/launcher-win -G Ninja -DCMAKE_TOOLCHAIN_FILE="$PWD/cmake/windows-x86_64.cmake" -DCMAKE_BUILD_TYPE=Release # the toolchain path must be absolute
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ consumer is [dw2003recomp](https://github.com/gascarcella/dw2003recomp), the Dig
(docs/LAUNCHER.md "Updates").
- **Add to Steam:** the game as a non-Steam shortcut with its artwork, for Steam's library, Game Mode on the Steam
Deck and its controller configuration (docs/LAUNCHER.md "Steam").
- **The in-game menu:** the launcher's Settings, Controls and Mods inside the game's window on Escape or Back+Start,
- **The in-game menu:** the launcher's Video, Graphics, Audio, Controls, Mods and System screens inside the game's window on Escape or Back+Start,
applied live (docs/LAUNCHER.md "In-game menu").

### Mods
Expand Down
2 changes: 1 addition & 1 deletion docs/GAME_CONTRACT.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ the port and the launcher stay single binaries. Contents:
filter sets, one for its 2D scenes and one for its 3D scenes, and the runtime switches between them at the vsync
where the adapter's `game_state_scene()` changes ("4. The adapter units"). A set is a filter and its crt values;
the sub-pixel mode, the scale, fullscreen, the scaling and the internal scale stay global. `label` names each set in
the launcher's Filter rows (`"the field and the menus"`, `"battles"`); `2d.filter` (optional) is the 2D set's
the launcher's filter tabs (`"the field and the menus"`, `"battles"`); `2d.filter` (optional) is the 2D set's
default filter, with the default crt values (absent: the 2D set starts as a copy of the 3D set). The settings'
`video.filter` and `video.crt` are the 3D set, `video.scene_2d` the 2D set (docs/LAUNCHER.md "Settings file").
The sets are fixed, `2d` and `3d`. Absent: one set, and the probe is never read.
Expand Down
Loading
Loading