diff --git a/CLAUDE.md b/CLAUDE.md index 29272378..313fe23d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -114,11 +114,19 @@ first-class High-Level Emulation tier alongside LLE, modeled on `F:/Projects/gbarecomp/gbarecomp` (`src/runtime/bios_hle.{h,cpp}`, commits 23a57ce + 168e313): -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 (`[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. +1. **Two selectable backends. AMENDMENT 2026-07-06 — HLE is now the DEFAULT, but + this changes NOTHING institutional.** We still BUILD LLE: the recompiled BIOS + is the foundation we architect against, the reference implementation, and the + oracle — fully linked, load-bearing, selectable, and the thing every accuracy + check runs against. HLE is a QoL layer we lay ON TOP (instant boot-skip for + players); the faithful LLE core is proven, so defaulting the convenience on is + an enhancement-phase load-time win, not an architecture change. Mechanically + this only flips the framework runtime default `bios_hle` false→true + (`config_loader.h`); opt OUT per-game with `[runtime] bios_hle = false` or env + `PSX_BIOS_HLE=0`. A null-by-default hook intercepts BIOS service dispatch + before the recompiled BIOS runs; a startup banner names the active backend. + With HLE off the build is byte-identical to a build without the tier. Keep new + bring-up and all verification on LLE; HLE-default is the shipping convenience. 2. **LLE remains the reference implementation and the oracle.** It stays fully linked, load-bearing, and selectable; every BIOS call the HLE layer does not implement transparently falls through to the recompiled BIOS, so HLE is diff --git a/recompiler/src/config_loader.h b/recompiler/src/config_loader.h index a0d2a36d..10735f79 100644 --- a/recompiler/src/config_loader.h +++ b/recompiler/src/config_loader.h @@ -92,15 +92,18 @@ struct RuntimeConfig { // at host speed. Kept so existing game.toml/settings.toml keep working. bool fast_boot = false; - // bios_hle: opt-in High-Level Emulation tier for BIOS kernel services - // (CLAUDE.md §0 amendment 2026-07-02, the gbarecomp model). Default off = - // LLE (the recompiled BIOS), which remains the reference implementation - // and the oracle. When on, implemented kernel services are computed - // in-runtime against the real guest kernel structures and every other - // call falls through to LLE. Implies the HLE boot shell-skip unless - // bios_hle_keep_intro. PSX_BIOS_HLE / PSX_BIOS_HLE_KEEP_INTRO env - // override at launch. Runtime: runtime/src/bios_hle.c. - bool bios_hle = false; + // bios_hle: High-Level Emulation tier for BIOS kernel services + // (CLAUDE.md §0 amendment 2026-07-02, the gbarecomp model). DEFAULT ON as of + // 2026-07-06 (user-directed player default: instant boot-skip for every + // game). Opt OUT with [runtime] bios_hle = false or env PSX_BIOS_HLE=0 to run + // pure LLE (the recompiled BIOS), which REMAINS the reference implementation + // and the oracle — this only flips the default, LLE is still fully linked and + // selectable. When on, implemented kernel services are computed in-runtime + // against the real guest kernel structures and every other call falls through + // to LLE. Implies the HLE boot shell-skip unless bios_hle_keep_intro. + // PSX_BIOS_HLE / PSX_BIOS_HLE_KEEP_INTRO env override at launch. + // Runtime: runtime/src/bios_hle.c. + bool bios_hle = true; bool bios_hle_keep_intro = false; // hle_scheduler: the HLE tier's standing SUBSYSTEM REPLACEMENT for guest