Commit Graph

552 Commits

Author SHA1 Message Date
Matthew Stanley effb75e63d Scaffold: keep the disc probe running when marketing fields are empty
Windows PowerShell 5.1 drops empty native arguments, leaving --description without a value.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 12:42:28 -07:00
Matthew Stanley 56a6cfe782 Add one shared title release command with a required channel
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 20:46:47 -07:00
Matthew Stanley 9e0548137a Default Playtest Diagnostics on except in public releases (PSX_PUBLIC_RELEASE)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 18:18:34 -07:00
Matthew Stanley 038ed4a078 Require Playtest Diagnostics to ship off by default
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 17:42:01 -07:00
Matt Stanley bc574c5700 Isolate runtime publication and wall-time diagnostics from held mod selector stack 2026-10-19 14:07:22 -07:00
Matt Stanley 0b1f1a70e6 Merge current master and qualified review fixes into PR #651 2026-10-19 13:09:36 -07:00
Matt Stanley e4ec3926f0 Merge current master and qualified review fixes into PR #645 2026-10-19 13:08:28 -07:00
Matt Stanley 93c2c7c098 Merge current master and qualified review fixes into PR #403 2026-10-19 13:08:14 -07:00
Matt Stanley aa36c8bfe4 Merge current master and qualified review fixes into PR #402 2026-10-19 13:08:01 -07:00
Matt Stanley b4be0aa0f7 Merge current master and qualified review fixes into PR #392 2026-10-19 13:07:47 -07:00
Zap0xfce2 d749a58901 fix(tools): regen_bios.sh also finds ../build-recompiler from build_emitters.sh 2026-10-19 16:36:52 +02:00
Matthew Stanley db596520ab Record real renderer activity and explicit playtest verification coverage 2026-10-18 20:55:22 -07:00
Matthew Stanley 947f1da5de Audit the current Windows offline toolchain picker title 2026-10-17 15:16:39 -07:00
Matthew Stanley a9a19e70f5 Omit launcher state and demo ROM fixtures from setup SDKs 2026-10-17 15:04:02 -07:00
Matthew Stanley db147e2c04 Recognize macOS executables when auditing diagnostics packages 2026-10-17 14:56:19 -07:00
Matthew Stanley 48f8dbe0da Merge private overlay capture path isolation into MediEvil diagnostics 2026-10-17 14:22:00 -07:00
Matthew Stanley 019d6e8ade Keep replay overlay captures within the private output directory 2026-10-17 14:21:41 -07:00
Matthew Stanley 78e7e7636d Merge private native overlay replay payload copies into MediEvil setup compatibility 2026-10-17 14:20:12 -07:00
Matthew Stanley 6ef2a85119 Preserve packaged native overlay payloads in isolated diagnostic replay 2026-10-17 14:19:43 -07:00
Matthew Stanley 2c92ac3ff1 Restore native POSIX setup tools and platform release validation 2026-10-17 14:17:16 -07:00
Matthew Stanley 444264f2aa Restore retail-only setup packaging and audit diagnostic release ZIPs 2026-10-17 14:04:52 -07:00
Matthew Stanley 4a7a8d54ac Keep diagnostic display independent and stage setup replay helper 2026-10-17 13:13:02 -07:00
Matthew Stanley 09221b8263 Share bounded playtest diagnostics and isolated verified replay 2026-10-17 13:04:46 -07:00
Matt Stanley 035af4e444 Merge pull request #592 from RetroPortingToolKit/feat/linux-tcc
Linux releases bundle TinyCC (built from source) with musl headers
2026-10-13 01:31:14 -07:00
Shokunin 3fee0ae7be Linux tcc: build without the legacy bounds-checking runtime (glibc 2.34+)
tcc 0.9.27's lib/bcheck.c uses __malloc_hook, removed in glibc 2.34, so
the pinned build failed on Ubuntu 24.04 (lib/bcheck.c:738). Shards never use
-b; the build now passes BCHECK_O= unconditionally, keeping every other
libtcc1.a object. The bundle smoke also clears LIBRARY_PATH, CC and
GCC_EXEC_PREFIX and checks shards import no bounds-checking symbols.
Verified: linux_tcc_bundle_smoke_test passes on Ubuntu 24.04 x86_64
(glibc 2.39, gcc + libc6-dev installed, so host headers exist but are not
used) and on Steam Runtime sniper (glibc 2.31).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 00:02:09 -07:00
Matthew Stanley f34c15f18b Keep AOT dispatch observations separate from callable roots 2026-10-12 17:06:57 -07:00
Matthew Stanley a5d332e6b7 runtime: always-on wall-time rings, stale-toolchain guard, announce published shards
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-12 13:28:09 -07:00
Matthew Stanley c0b037db58 aot: cross_image_call_roots - jal targets other images call are roots of the image holding them
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 03:06:37 -07:00
Matthew Stanley a519f5e740 aot: cross_image_call_roots - jal targets other images call are roots of the image holding them
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 03:06:37 -07:00
Matthew Stanley d6d680f2b9 aot: tests, docs and test registration for prepared images
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 02:40:12 -07:00
Matthew Stanley b28af43b95 aot: tests, docs and test registration for prepared images
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 02:40:12 -07:00
Matthew Stanley 7b88260fe5 aot: prepared_files (bpe_container), file_aliases, disc_set, generic exclusions
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 02:25:28 -07:00
Matthew Stanley 493b4498a9 aot: prepared_files (bpe_container), file_aliases, disc_set, generic exclusions
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 02:25:23 -07:00
Matthew Stanley 5237ff01fc Scaffold: commit game_options.toml; keep multi-disc probe files tracked
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-11 23:35:39 -07:00
Matthew Stanley 94ac3d37a8 update_disc_set: write in-project disc paths relative with '/'
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-11 23:34:13 -07:00
Matthew Stanley fa83aeb064 Fix Windows scaffold: BOM-less writes, native Python, configuring cmake for builds
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-11 23:30:47 -07:00
Shokunin 9714fb678a Linux tcc bundle: hermetic includes and a real-shard smoke test
- compile_overlays: the bundle layout now compiles with -nostdinc and only
  the bundle's own headers (tcc's include/, then musl's libc-include/), so a
  host with libc6-dev cannot change what a shard compiles against.
- runtime/tests/test_linux_tcc_bundle_smoke.py (ctest
  linux_tcc_bundle_smoke_test): stages the bundle exactly as a release does
  (pinned tcc 0.9.27 built from source, musl 1.2.5 headers, runtime
  headers), compiles an emitter-shaped overlay shard through
  compile_overlays' own tcc path (preamble shim, call_by_address rewrite,
  exports) for PGXP flavors 0 and 2 with PATH emptied, loads the .so and
  checks overlay_abi() and the exported function. Linux x86_64 only (skips
  77 elsewhere). Passes in the Steam Runtime sniper SDK image.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:38:53 -07:00
Shokunin 7e869d7741 Linux tcc: adapt musl's va_list to tcc's stdarg.h
Found by the clean-box smoke: every shard failed with "';' expected (got
va_list)". With the adaptation, 26 overlay shards compile on a Debian box
with no compiler and no libc headers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:38:48 -07:00
Shokunin 32f6aa7315 Linux releases bundle TinyCC (built from source) with musl headers
tinycc publishes no Linux binary, so Linux release toolchains had no tcc and
a player without a compiler -- every Steam Deck: SteamOS has none and a
read-only root -- kept overlays interpreted. stage_toolchain now builds the
pinned, unmodified tcc 0.9.27 source on the packaging machine and stages it
as overlay_toolchain/tcc/ (tcc, libtcc1.a, tcc's include/) with musl 1.2.5's
MIT-licensed C headers in libc-include/ (both sources SHA-256 pinned).

compile_overlays.py recognises that layout and calls tcc with -B<dir>
-nostdlib -isystem <dir>/libc-include <dir>/libtcc1.a, so nothing from the
player's system is needed; shard libc symbols resolve against the game's
glibc at dlopen. Windows and system tcc invocations are unchanged. The
TinyCC notice names the Linux build and the musl headers.

Tests: test_release_stage_cache.py (Linux pins, notice, bundle args).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-11 22:38:48 -07:00
Alex Vanderveen 2a4824fcb8 ci: check_bios_stamps defaults to the stamps present, not a fixed retail list
The default demanded SCPH1001.emitter.sha, which is gitignored (retail output
is generated from a dump, never committed), so every game's release CI failed
with 'SCPH1001.emitter.sha missing' on a clean checkout. Default to every
generated/*.emitter.sha; naming a stem still requires it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-11 16:22:12 -04:00
Matthew Stanley 7dfef44598 Reconcile current master with validated X4 co-op support for PR23 playtest 2026-10-10 20:49:35 -07:00
Shokunin 1751c6973b Netplay rb: PSX_RB_SNAP_AUDIT replay-determinism log + diff tool
Per ring save, the section CRCs (and small sections in hex) of the
boot_state blob, marked live or replay. tools/rb_snap_audit_diff.py
checks a seat's replay against its own live save and seats against each
other, naming the first differing section and bytes. Off unless set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 20:40:50 -07:00
Matthew Stanley 95010e1a2e Omit unused Windows pip launchers from Linux release toolchains 2026-10-08 11:37:57 -07:00
Matthew Stanley eba5b86325 Integrate latest shared runtime with serial renderer and resident loading work
# Conflicts:
#	runtime/CMakeLists.txt
#	runtime/runtime.cmake
#	runtime/src/gpu.c
#	runtime/src/gpu_gl_renderer.c
#	runtime/src/memory.c
#	runtime/tests/run_gl_texture_filter.py
#	runtime/tests/test_gpu_gp0_history_guard.py
#	runtime/tests/test_savestate_status_protocol.py
2026-10-08 05:40:53 -07:00
Shokunin 771ded8167 ci: require only the tracked OpenBIOS backend in release checks
#575 stopped tracking generated/SCPH1001_*, but check_generated.sh and the
game-release template still required them, failing title release packaging.
SCPH1001 is now optional/local: complete -> noted, absent -> skipped with a
note, partial -> error.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 03:34:56 -07:00
Shokunin 91cd6db705 guest_cycle_scale: one CPU charge for every tier, declarative gate, rollback
Review of #561. Guest time now has two entry points (psx_cycles.h): the
CPU charge psx_cpu_charge() (instruction base, load fudge/region/completion,
i-cache refills, BIOS HLE costs), which applies [timing] guest_cycle_scale,
and the unscaled device advance psx_advance_cycles() (DMA, idle skips,
mul/div and GTE deadline waits). The emitters' block-mode charges emit
psx_cpu_charge; overlay DLLs accumulate it raw and publish through the
cpu_charge callback (was advance_cycles, same slot) into the same host
function, so nothing is scaled at the DLL boundary. The batched
psx_cyc_charge path, the dirty-RAM interpreter, psx_cyc_readmem, i-cache
refills and bios_hle.c all charge through it. At scale 1 it is exactly
psx_advance_cycles.

Gate in psxrecomp: [timing] guest_cycle_scale_gate, RAM predicates judged
at every VBlank edge (deterministic, works online, no mod needed), plus
psx_mod_set_guest_cycle_scale_gate() in mod_plugins.h for custom logic or
to tie the scale to a mod (guest_cycle_scale_gated = true; every mod
session reset shuts it). The carried fraction and both gate states are a
boot_state section (BS_SEC_GCS, written only when the scale is not 1), so
savestates and the netplay rollback snapshot re-simulate the same cycles.
psx_guest_cycle_scale_gate_test pins tier identity, the gates and rollback
re-simulation against the real psx_cycles.c.

OpenBIOS regenerated (emitter stamp); retail SCPH1001 is not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07 21:41:39 -07:00
Matthew Stanley e28f7f18ee Host sampler: accessors in every build; tools/host_profile.py names hot functions
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit a51504fd3b)
2026-10-07 18:20:58 -07:00
Matthew Stanley 30d56d6e2b Bind packaged execution profiles and share Linux AppImage staging 2026-10-06 20:16:43 -07:00
Matthew Stanley d8c5e9d0a5 Bind staged execution contracts to the packaged binary 2026-10-06 18:52:15 -07:00
Matthew Stanley b0bb115dd0 Honor HOLD when presenting native replay generations 2026-10-06 18:36:52 -07:00