From c3c43e68ae30b4a473de2c98cf25358f100b7965 Mon Sep 17 00:00:00 2001 From: Matthew Stanley <1379tech@gmail.com> Date: Thu, 2 Jul 2026 16:50:41 -0700 Subject: [PATCH] =?UTF-8?q?launcher:=20drop=20the=20"Skip=20PSX=20BIOS"=20?= =?UTF-8?q?toggle=20=E2=80=94=20HLE=20boot-skip=20is=20automatic=20now?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Releases ship [runtime] bios_hle = true, so the boot skip is on by default and no longer a per-user launcher setting (the old toggle also described the retired snapshot mechanism's "first boot still loads" behavior, which no longer exists). Power users can still set bios_hle / fast_boot in settings.toml or game.toml by hand. Also aligns CLAUDE.md: the session-start mantra now points at the §0 amendments instead of a blanket "No HLE", and the 2026-07-02 amendment names the real config key ([runtime] bios_hle). Co-Authored-By: Claude Fable 5 --- CLAUDE.md | 7 ++++--- runtime/launcher/assets/launcher.rml | 3 --- runtime/launcher/launcher.cpp | 11 ++--------- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index c9bdb425..29272378 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -116,7 +116,7 @@ first-class High-Level Emulation tier alongside LLE, modeled on 1. **Two selectable backends, LLE default.** A null-by-default hook intercepts BIOS service dispatch before the recompiled BIOS runs; selection is - per-game config (`[bios] hle = true`) + CLI + env override, with a startup + per-game config (`[runtime] bios_hle = true`) + env override (PSX_BIOS_HLE), with a startup banner naming the active backend. With HLE off the build is byte-identical to a build without the tier. 2. **LLE remains the reference implementation and the oracle.** It stays fully @@ -232,8 +232,9 @@ At the start of every session, before any code change: concrete milestone is. 3. Verify `docs/psx_bios_disasm.txt` exists (primary reference). 4. Verify Ghidra MCP is reachable. If not, stop and ask. -5. State out loud: "Architecture A is locked. No interpreter. No HLE. - No stubs. BIOS first. Game never until Phase 5." +5. State out loud: "Architecture A is locked. No interpreter. No stubs. + LLE default + oracle; HLE only per the §0 amendments (opt-in tier, + LLE fallback, no fakes). BIOS first. Game never until Phase 5." If any of these fail, do not proceed with the user's task — surface the failure first. diff --git a/runtime/launcher/assets/launcher.rml b/runtime/launcher/assets/launcher.rml index a4929f7d..d050e683 100644 --- a/runtime/launcher/assets/launcher.rml +++ b/runtime/launcher/assets/launcher.rml @@ -357,9 +357,6 @@ button:hover { background-color: #232d3c; }
Turbo loads
-
Skip PSX BIOS - - first boot still loads to build the cache — instant after
Fullscreen on launch
Widescreen EXPERIMENTAL diff --git a/runtime/launcher/launcher.cpp b/runtime/launcher/launcher.cpp index 744441d6..fc42510b 100644 --- a/runtime/launcher/launcher.cpp +++ b/runtime/launcher/launcher.cpp @@ -100,7 +100,8 @@ struct LauncherModel { int crt = 0; // 0=raw,1=crt,2=composite,3=trinitron bool auto_skip_fmv = false; // skip FMVs via the game's own skip bool turbo_loads = true; // fast-forward the machine through load screens (audio plays through); default on - bool fast_boot = false; // skip PSX BIOS via boot snapshot; default off + // (the old "Skip PSX BIOS" toggle is gone: the HLE boot shell-skip ships + // on by default via [runtime] bios_hle in the player game.toml) bool spu_hq = false; int aspect_index = 0; // index into kAspects (0 = 4:3 native) int window_width = 1280; // window size (height = width*den/num per aspect) @@ -658,7 +659,6 @@ Result run(SDL_Window* window, void* gl_context, m.crt = io.screen_kind; m.auto_skip_fmv = io.auto_skip_fmv; m.turbo_loads = io.turbo_loads; - m.fast_boot = io.fast_boot; m.fullscreen = io.fullscreen; m.skip_launcher = io.skip_launcher; m.spu_hq = io.spu_hq; @@ -721,7 +721,6 @@ Result run(SDL_Window* window, void* gl_context, c.Bind("antialiasing", &m.antialiasing); c.Bind("auto_skip_fmv", &m.auto_skip_fmv); c.Bind("turbo_loads", &m.turbo_loads); - c.Bind("fast_boot", &m.fast_boot); c.Bind("fullscreen", &m.fullscreen); c.Bind("skip_launcher", &m.skip_launcher); c.Bind("show_skip_modal",&m.show_skip_modal); @@ -845,11 +844,6 @@ Result run(SDL_Window* window, void* gl_context, m.turbo_loads = !m.turbo_loads; handle.DirtyVariable("turbo_loads"); }); - c.BindEventCallback("toggle_fast_boot", - [&m, handle](Rml::DataModelHandle, Rml::Event&, const Rml::VariantList&) mutable { - m.fast_boot = !m.fast_boot; - handle.DirtyVariable("fast_boot"); - }); c.BindEventCallback("toggle_fullscreen", [&m, handle](Rml::DataModelHandle, Rml::Event&, const Rml::VariantList&) mutable { m.fullscreen = !m.fullscreen; @@ -1058,7 +1052,6 @@ Result run(SDL_Window* window, void* gl_context, io.screen_kind = m.crt; io.has_screen_kind = true; io.auto_skip_fmv = m.auto_skip_fmv; io.has_auto_skip_fmv = true; io.turbo_loads = m.turbo_loads; io.has_turbo_loads = true; - io.fast_boot = m.fast_boot; io.has_fast_boot = true; io.fullscreen = m.fullscreen; io.has_fullscreen = true; io.skip_launcher = m.skip_launcher; io.has_skip_launcher = true; io.spu_hq = m.spu_hq; io.has_spu_hq = true;