Commit Graph

2085 Commits

Author SHA1 Message Date
Matthew Stanley f0a36817bd Validation: integrate PR597 for current-head regression review 2026-10-15 00:29:49 -07:00
Matthew Stanley 99a3a722a3 Respect diagnostic replay clock-only semantics in the timing fixture 2026-10-15 00:23:25 -07:00
Matthew Stanley ca2978acd1 Check scaled charge service observations during replay and conservative execution 2026-10-15 00:22:12 -07:00
Matthew Stanley d946aec09a Integrate current master for reviewed PR597 and retain canonical BIOS stamp 2026-10-15 00:00:06 -07:00
Matthew Stanley 0265a58f3a Include the carried NCLIP compatibility API declaration 2026-10-14 23:57:35 -07:00
Matthew Stanley 3e923b97d1 Carry prior four-title validation NCLIP compatibility API 2026-10-14 23:57:33 -07:00
Matthew Stanley edeeb541ef Validation: integrate PR666 for current-head regression review 2026-10-14 23:54:04 -07:00
Matthew Stanley 224d6d1273 Validate isolated render capture restoration and buffer rejection 2026-10-14 23:54:01 -07:00
Matthew Stanley 64e44e048d Validation: integrate PR666 for current-head regression review 2026-10-14 23:51:59 -07:00
Matthew Stanley dd3499ff87 Validation: integrate PR597 for current-head regression review 2026-10-14 23:51:54 -07:00
Matthew Stanley d30da497ea Exercise XR HUD compositing through the real GL submission fixture 2026-10-14 23:51:51 -07:00
Matthew Stanley dfd4555d09 Include fixed scaled-charge batching profile in netplay compatibility 2026-10-14 23:51:49 -07:00
Matthew Stanley 80edb2e5b8 Validation: integrate PR666 for current-head regression review 2026-10-14 23:49:57 -07:00
Matthew Stanley 28dfd163c3 Validation: integrate PR664 for current-head regression review 2026-10-14 23:49:52 -07:00
Matthew Stanley 09df30e47d Validation: integrate PR609 for current-head regression review 2026-10-14 23:49:45 -07:00
Matthew Stanley e05b6329a2 Validation: integrate PR597 for current-head regression review 2026-10-14 23:49:35 -07:00
Matthew Stanley fe209438cd Validation: integrate PR593 for current-head regression review 2026-10-14 23:49:29 -07:00
Matthew Stanley 2947916215 Detect active gamepad sessions without hijacking Deck Desktop Mode 2026-10-14 23:49:26 -07:00
Matthew Stanley 1e8197a030 Validation: integrate PR593 with graphics preset sources 2026-10-14 23:49:23 -07:00
Matthew Stanley 5b218fa76a Validation: integrate PR591 for current-head regression review 2026-10-14 23:48:08 -07:00
Matthew Stanley ab0bac7d31 Validation: integrate PR590 for current-head regression review 2026-10-14 23:48:02 -07:00
Matthew Stanley 28e12c7372 fix(gpu): retain wide composites when internal resolution changes 2026-10-14 14:25:24 -07:00
Yves 99dd1eee46 Add head-facing billboard surfaces with shared stereo orientation 2026-10-15 05:17:38 +08:00
Yves 890fed78f5 Add frame-local positioned RGBA surfaces to stereo rendering 2026-10-15 05:17:37 +08:00
Yves 062d6e39e0 Add isolated render capture with staged RGBA readback 2026-10-15 05:17:37 +08:00
Shokunin 9575de1ad8 psx_menu_host.h: feature macro for default_selection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:17:30 -07:00
Shokunin c3a2f2c068 Menu host follow-ups: restart bits for touched groups, local return, default provider
- Restart bits: a group waits only when the edit touches it (next differs
  from the live value) and the result differs from boot. Dynamic
  resolution moves the live internal resolution off boot, so an in-game
  texture filter change relaunched the game. test_menu_video_snapshot
  covers both cases.
- Return to the frontend from a local game opens the launcher as at
  boot; only a lobby match start (the runtime's pending-launch exit, or
  the provider's lobby view asking once its match started) keeps the
  launch and resumes the room.
- Default provider: with no title choice, the UI library's provider is
  used when it ships one (recomp_ui_psx_menu.h), so recomp-ui stays the
  default; PsxMenuHost.default_selection tells it to keep the title's
  default presentation.
- Debug: menu_host reports provider, open, pause, capture and snapshot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 12:17:18 -07:00
Matthew Stanley a36754b7ee feat(renderer): allow guarded opaque sprite backgrounds in native wide 2026-10-14 12:11:10 -07:00
Matt Stanley d3db61b199 Merge pull request #598 from RetroPortingToolKit/feat/host-pause
Host pause API (in-game overlay P1)
2026-10-14 11:55:36 -07:00
Matthew Stanley f4c5d6c93f Draw paused host menus even before the first held game frame 2026-10-14 11:47:04 -07:00
Matt Stanley 12152ecc77 Merge pull request #661 from RetroPortingToolKit/fix/depth24-hold-vblank
GPU: count the depth24 present hold down at guest VBlank
2026-10-14 11:33:00 -07:00
Matt Stanley 2c6a469b41 Merge pull request #659 from Melon-Bread/debug-server-accept-timeout
Bound debug-server shutdown without dropping delayed commands
2026-10-14 11:32:54 -07:00
Matt Stanley fba456cf00 Merge pull request #658 from Melon-Bread/xa-sentinel-bios-abi
Fix BIOS module callbacks and invalid SetLoc errors
2026-10-14 11:32:45 -07:00
Matthew Stanley 656aa1d35f Register shared menu snapshot coherence regression 2026-10-14 11:31:46 -07:00
Matthew Stanley 3bbfd03a10 Build GPU hold regression with MinGW link-time section removal 2026-10-14 11:29:13 -07:00
Matthew Stanley 8a5559cc7c Cancel debug socket waits portably without timing out valid fragmented commands 2026-10-14 11:29:13 -07:00
Matthew Stanley 934e6c96b6 Synchronize shared menu video and netplay getters across runtime threads 2026-10-14 11:29:13 -07:00
Matt Stanley cdb0210dd5 Merge pull request #662 from RetroPortingToolKit/fix/rb-verify-wait-live-seat
Rollback: a seat already Live past the target does not re-arm the POST wait
2026-10-14 11:24:47 -07:00
Matt Stanley 89ce3295f1 Merge pull request #660 from RetroPortingToolKit/fix/restore-edge-irq-check
Restore: run the resume edge's IRQ check before the block executes
2026-10-14 11:24:42 -07:00
Matthew Stanley df1150df75 Use faithful SetLoc INT5 errors and validate BIOS callback ABI by default 2026-10-14 11:23:53 -07:00
Matthew Stanley d66916f4b6 Bring portable debugger shutdown repair onto current master 2026-10-14 11:23:51 -07:00
Matthew Stanley 12f98480b3 Preserve explicit GPU hold output state before the first held VBlank 2026-10-14 11:21:57 -07:00
Matthew Stanley 8d3ab09b45 Bring the BIOS ABI and SetLoc correction onto current master 2026-10-14 11:21:51 -07:00
Matt Stanley 2fca087a1b Merge pull request #657 from RetroPortingToolKit/work/final-bout-cd-sector
fix(cdrom): preserve requested sector bytes across pending interrupts
2026-10-14 11:20:09 -07:00
Shokunin adf0ae1ba9 Rollback: multi-seat Verify regression for a lost POST past the target
Register netplay_rb_verify_lost_post_test (#636). Each seat is built from
the production POST receive loop, Verify retransmit/wait/timeout block,
quorum publish and progress helpers cut from psx_netplay_rb.c, with
recomp-net's quorum, a controlled clock and a lossy/delaying POST
transport. Covers a Live seat past the target with its POST dropped,
genuine slow replay up to and at the target, first observation, multiple
owing seats, a disconnected or never-present seat, late and duplicate
POSTs, a later epoch and a rematch; each timeout must land within
RB_VERIFY_TIMEOUT_MS of the last in-episode progress, and the following
realignment episode must confirm one digest on every seat and advance the
confirmed frontier. The lost-POST case is also built against the pre-fix
wait (rb_owing_seats_progressed) and must hang there.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:57:14 -07:00
Shokunin 0d096e2858 GPU: carry the depth24 held-VBlank flag in the snap; executable hold regression
Review follow-up on #661 (#636):
- test_depth24_present_hold_vblank.py reads sources as UTF-8 (cp1252 on
  native Windows Python raised UnicodeDecodeError).
- The present skip is now guest state: set at guest VBlank, read (not
  consumed) by the present and packed into the GPU snap's hold word (bit 8;
  older snaps derive it from the count). The executable test showed the
  host-side latch made the present of a restored tick differ from live on
  the last held VBlank (hold 0, skip 1), exposing stale trailing FMV
  columns after a rollback load.
- Depth24 scanout staging and trailing-column blanking move from main.cpp
  into gpu_depth24_stage_scanout (gpu.c), so the test renders through the
  same code every CPU depth24 present runs.
- New depth24_present_hold_exec_test: drives real gpu.c through a 15-bit to
  24-bit FMV, GP1(07h) retargets and mode transitions; compares hold, skip,
  upload span and snapshot bytes across windowed/headless/deferred presents,
  rollback replay from every tick and disk loads, and checks staged frames
  never show stale movie pixels while the new movie stays visible.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:53:21 -07:00
Shokunin 86fb76e9a1 Restore: executable restore-vs-live regression for the resume-edge IRQ check
restore_edge_irq_replay_test links the real scheduler (traps.c) and IRQ
delivery (interrupts.c) against a deterministic harness guest. Each case
runs live, captures state at a block edge with the edge's resume PC, then
restores from inside guest execution through interrupts_resync_after_restore
+ psx_scheduler_resume_at and requires every delivery (cycle, EPC, CAUSE,
SR, I_STAT, interrupted GPRs, TCB save) and every later block to match live.

Covers compiled-game, BIOS ROM, CPS-continuation and interpreted resumes,
no pending IRQ, I_MASK / SR.IEc / SR.IM2 gating, same-edge dedup against the
game dispatch-entry check, and null-PC recovery (RESUME_CURRENT without
resume_at) not inheriting the one-shot check. On master the ROM,
continuation and interpreted resumes take the IRQ one block late.

The source-guard test now reads traps.c as UTF-8.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 10:48:46 -07:00
Shokunin 14b719b20a Rollback: a seat already Live past the target does not re-arm the POST wait
Verify retransmits POST and aborts the episode (realign) after
RB_VERIFY_TIMEOUT_MS, but re-arms that timer whenever an owing seat's
tip moves, on the theory that it is still replaying. A seat that already
finished the episode and runs Live past the target also moves its tip,
so a lost POST from it kept the others in Verify until the liveness
timeout ended the match (3 seats across a Mac and a PC: two seats waited
for "peer POST" at tick 12099 while the third was Live at 12114; #636).

Only progress up to the episode target now re-arms the wait; past it the
timeout is honoured and the episode realigns.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 18:57:52 -07:00
Shokunin 594d365060 GPU: count the depth24 present hold down at guest VBlank
GP1(07h) arms s_d24_present_hold to skip a few Swaps after a depth24
display-band retarget. The hold is in the GPU snap, but it counted down
only at host present: a headless run (and any path that skips the present)
left it stuck, and a rollback snap load zeroed it. In R4's 4-seat rollback
self-test the replayed saves then differed from the live saves of the same
ticks in the GPU section (hold 3 live, 0 replay; #636).

The count now moves at guest VBlank (gpu_vblank_tick), which also latches
whether the following present skips its Swap; the present only consumes
that latch. A rollback snap load keeps the restored count. A disk
savestate load still clears it so the restored VRAM shows at once.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 17:19:25 -07:00
Shokunin 1df5990b43 Restore: run the resume edge's IRQ check before the block executes
Every state restore (savestate, rewind, selfcheck, rollback load) resumes
through psx_scheduler_resume_at at a block edge where a poll inside
psx_check_interrupts took the snapshot. The live run then evaluated IRQ
delivery at that same edge. The resumed run went straight into the block,
so an IRQ pending at the snapshot point was taken one block later, at a
different PC: a rollback replay delivered the tick-boundary VBlank 10-27
cycles after the live run did (live in BIOS ROM at 0xBFC07644, replay at
0xBFC0766C), and the replayed save differed from the live save of the same
tick in EPC and the TCB in RAM (#636).

resume_at now arms a one-shot check that the scheduler runs on the
RESUME_CURRENT path before psx_dispatch. It is the dispatch-entry check
that compiled game entries already run (deduped by cycle and PC), so a
compiled entry is not checked twice; BIOS ROM and continuation resumes get
the check they lacked. The recovery path that sets RESUME_CURRENT directly
does not arm it.

R4 4-seat local rollback self-test (PSX_RB_DET_SELFTEST=120): the boot
replay-vs-live EPC differences are gone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 16:13:11 -07:00