Commit Graph

2160 Commits

Author SHA1 Message Date
Shokunin cb17f2f2d4 Windows GL vsync workaround: scope to the measured case
Narrow host_driver_vsync_unreliable() on Windows to the configuration the
stall was measured on: GL active, render thread running, GL_VENDOR NVIDIA,
not exclusive fullscreen. Other driver families and the unthreaded path
keep driver vsync; PSX_TRUST_DRIVER_VSYNC=1 still forces it everywhere.
Evaluated per call, so runtime renderer/fullscreen changes apply.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 14:17:33 -07:00
Shokunin 594b507efd Windows GL: wall-clock pacing instead of driver vsync unless exclusive
Windowed or borderless, DWM composes the window and owns the display's
vsync, so a driver swap interval only adds a stall. On NVIDIA (RTX 4080
SUPER, 610.88) a vsync'd SwapBuffers holds the GPU queue the render
thread submits to: every render-thread frame cost a full refresh
(16.7 ms "GPU" at any internal scale, render_busy 100 %), back-pressure
slowed the guest to 52-57 Hz, and dynamic resolution dropped for
nothing. Measured on R4 0.8 at 7680x4320, windowed and borderless: guest
60.0 Hz, render_busy 5-8 %, GPU 4.4 ms. Exclusive fullscreen keeps
driver vsync; PSX_TRUST_DRIVER_VSYNC=1 restores it everywhere.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 16:02:19 -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 665f7eb823 Guard session_restart debug command in no-debug-tools builds
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-19 18:27:56 -07:00
Matt Stanley 54a2d5e01c Merge pull request #700 from RetroPortingToolKit/feat/diagnostics-public-release-mode
Default Playtest Diagnostics on except in public releases
2026-10-19 18:18:50 -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
Matt Stanley 916da6f80d Integrate shared disc tray with the maintained menu provider (#652) 2026-10-19 18:13:38 -07:00
Matthew Stanley ee9e464fd0 Preserve stock-frame VSync on faster displays 2026-10-19 18:02:47 -07:00
Matt Stanley 13b7f81d29 Add guarded instruction variants fixed during offline mod activation
Keep selector zero stock and seal all choices until the next session restart. Refuse nonzero online activation, scope non-stock save states by frozen choices, and preserve original instruction guards when combined with effective-address adapters. Use overlay ABI34 on current master without the old menu dependency stack.
2026-10-19 16:37:32 -07:00
Matt Stanley c0ffd6d4c5 Support guarded mod address adapters and atomic extended memory cards
Extract the audited adapters and card transport onto master without the held selector/menu stack. Keep adapters and codecs tied to mod activation, use overlay ABI 33, retain rejected-load protection on codec registration, and refuse extended-card codecs in netplay before frame zero. Preserve default atomic save publication and guest-visible write failures.
2026-10-19 16:00:11 -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 422238d0fa Merge current master and qualified review fixes into PR #642 2026-10-19 14:00:58 -07:00
Matt Stanley da9029a73a Merge current master and qualified review fixes into PR #408 2026-10-19 13:09:25 -07:00
Matt Stanley cda860fe74 Merge current master and qualified review fixes into PR #670 2026-10-19 13:09: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
Matt Stanley 98f584b450 Merge current master and qualified review fixes into PR #646 2026-10-19 13:07:33 -07:00
Matt Stanley 82062711b3 Merge pull request #669 from RetroPortingToolKit/work/windows-file-identity-fallback
Use full verification for unqualified Windows file identities
2026-10-19 13:06:47 -07:00
Zap0xfce2 1b778616b7 feat(widescreen): continue framebuffer-feedback sprites into native-wide bands (#692)
* feat(widescreen): continue framebuffer-feedback sprites into native-wide bands

Titles tag a 15-bit sprite that copies a framebuffer 1:1 (gpu_ws_tag_feedback_rect / psx_mod_tag_feedback_rect). Where it touches the draw area's edge, gpu.c emits band spans and the new optional backend op wide_feedback_rect (GL incl. render thread, software) samples the source buffer's wide surface. Band texels count as bit 15 set, as the centre does once the trail blends.

The software rasterizer now writes the texel's bit 15 into the framebuffer, and wide_full can dump the surface alpha ("alpha":1).

* fix(widescreen): quantise band feedback like packed VRAM

The centre samples 5-bit packed VRAM each frame; the band copy read the 8-bit wide surface and modulated with /128, so the bands drifted ~3 grey levels brighter and left a step at the 4:3 edge. Truncate like PACK_FS and modulate like TEX_FS.

* Reject fully clipped sprites before extending feedback margins

* Complete isolated resident and PGXP fixture collaborators

* Preserve existing line endings in the review fixes

---------

Co-authored-by: Matthew Stanley <1379tech@gmail.com>
2026-10-19 11:44:13 -07:00
Matt Stanley 282a72e3bd Merge pull request #691 from maliquem/fix/mdec-busy-drain
mdec: keep status bit 29 set until decode output is down to one OutFIFO load
2026-10-19 11:44:07 -07:00
Matt Stanley ac71aec441 Merge pull request #685 from boburning/fix/portable-generated-texture-defaults
Keep runtime-generated texture-pack defaults portable across installs
2026-10-19 11:44:00 -07:00
Matt Stanley 01564fa71e Merge pull request #680 from Alexbeav/fix/ps1b526-same-thread-rfe-k0-20261017
interrupts: retain handler k0 on qualified same-thread RFE
2026-10-19 11:43:54 -07:00
Matt Stanley c159a94cc6 Merge pull request #679 from Alexbeav/fix/ps1b526-digital-pad-command-id-20261017
sio: preserve digital pad ID when rejecting a command
2026-10-19 11:43:48 -07:00
Matt Stanley a5db252c3f Merge pull request #676 from zap0xfce2/feat/ws-screen-x-sltu-band
feat(widescreen): screen_x_sites band form for sltu with the width in a register
2026-10-19 11:43:40 -07:00
Matt Stanley 02173a5e24 Merge pull request #694 from zap0xfce2/fix/cli-musl-toolchain-bios-stamp
fix(cli): write the BIOS emitter stamp after generate --bios (#672, part 2)
2026-10-19 11:10:33 -07:00
Matt Stanley 036515495f Merge pull request #693 from zap0xfce2/fix/portability-musl-build
fix: musl and macOS build portability (#672, part 1)
2026-10-19 11:10:26 -07:00
Matt Stanley c24a236c4d Merge pull request #678 from Alexbeav/fix/ps1b526-cycle-fixture-link-20261017
tests: refresh isolated clock and optional-netplay fixtures
2026-10-19 11:10:17 -07:00
Zap0xfce2 9de74475b3 fix(cli): write the BIOS emitter stamp after generate --bios
regen_bios_profile now records generated/<out_stem>.emitter.sha via tools/bios_emitter_fingerprint.cmake, like tools/regen_bios.sh, so the next configure does not report the fresh BIOS as STALE.
2026-10-19 16:38:41 +02:00
Zap0xfce2 860cf8f596 fix(beetle): use uint16_t for the debug port (u_short is undeclared on musl) 2026-10-19 16:36:51 +02:00
Zap0xfce2 c88b6a5ff5 build: prefer python3 over python for PSX_PYTHON
A Python 2 `python` first in PATH (macOS with python.org 2.7) breaks embed_spirv.py.
2026-10-19 16:36:51 +02:00
Zap0xfce2 beca8f5637 build: link libucontext where getcontext is missing (musl) 2026-10-19 16:36:51 +02:00
maliquem 613112996f mdec: keep status bit 29 set until decode output is down to one OutFIFO load
Bit 29 is Beetle's InCommand. The hardware decodes progressively and stalls
while its 32-word OutFIFO is full, so a decode command stays in progress until
all but the last FIFO load of its output has been read. mdec.c decodes a whole
command at once and cleared the bit at execute time.

libpress DecDCTin spins on bit 29 before issuing the next frame. Reporting
ready early let Breath of Fire IV's FMV player issue the next DecDCTin and
DecDCTout while a column DMA was mid-transfer; DecDCTout's CHCR=0 restart
dropped the 205 words already moved, so every later column read started 820
bytes late (vertical stripes at macroblock edges, a one-macroblock vertical
wrap and shifted colour channels in the intro FMV).

Derive the bit from the unread output instead. No new state, so snapshots
are unchanged. Adds mdec_busy_drain_test (fails on the old behaviour).
2026-10-19 10:38:08 -03:00
Matthew Stanley a848b2281e Retain complete radial masks across buffered packet layouts 2026-10-18 21:54:58 -07:00
Matthew Stanley 96fbf0391c Merge remote-tracking branch 'origin/master' into fix/playtest-renderer-coverage-20261018 2026-10-18 21:08:46 -07:00
Matthew Stanley db596520ab Record real renderer activity and explicit playtest verification coverage 2026-10-18 20:55:22 -07:00
boburning 572558394b Keep runtime-generated texture-pack defaults portable across installs 2026-10-18 13:09:07 -04:00
Matthew Stanley 852199db7c Stage OpenBIOS assets only when its backend is linked 2026-10-17 15:49:54 -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 e7c4b3eb7b Merge buffered disc hashing into MediEvil setup base 2026-10-17 14:44:39 -07:00
Matthew Stanley 46405ae14a Buffer file reads before hashing large disc images 2026-10-17 14:43:47 -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 309b5cdd1d Recognize the standalone diagnostics test registrations 2026-10-17 13:18:56 -07:00
Matthew Stanley 40892ebb2c Fix transition capture and enforce title-disabled mod packages 2026-10-17 13:15:40 -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
Matthew Stanley 6bc150c85c Restore device profiles when developer pad injections finish 2026-10-17 09:53:22 -07:00
Matthew Stanley cf9bf1f9fd Allow developer pad injections to exercise serial hotplug 2026-10-17 09:40:22 -07:00
Matthew Stanley fedb5319d2 Support scoped modern controls and replay controller presence
Keep temporary keyboard profiles separate from saved bindings. Add optional persistent mouse capture with ordered release/focus/reset handling, and let offline sources represent an unplugged port without falling back to physical input. Existing capture and source defaults remain intact. Beads: beads-9wg8 and beads-eio.19.18.
2026-10-17 09:19:31 -07:00