mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 19:07:47 -04:00
7c9ea5f397
Three new always-on diagnostic rings, plus tools to drive Beetle in parallel and toggle the SDL window between ours and Beetle for visual validation. Built to support deterministic root-cause analysis of the memcard directory-load failure. Card transaction ring (sio.c, sio.h): one entry per 0x81-rooted card protocol run with full TX/RX bytes, cmd, sector, ack count, terminal state, end_reason classification (success/abort_reselect/abort_reset/ abort_slot/abort_bad_cmd/abort_other). 4096-entry cap. Surfaced via card_txn_dump TCP cmd. Live (in-progress) txn included separately. SIO IRQ #7 delivery ring (sio.c, sio.h): every IRQ #7 fire with byte seq linkage, mc_state at fire, active_device, ctrl, counter_7514, i_stat before/after, source classification (card/pad), slot, applied delay. 4096-entry cap. Surfaced via sio_irq_dump. EvCB walk ring (debug_server.c): captures full kernel EvCB table (class/status/spec/mode/fhandler) on every DeliverEvent entry. Reads ToT layout per nocash: 0x120=ptr, 0x124=size. Exit detection tracked via direct RA-watch (shadow stack unreliable due to psx_restore_state_escape longjmp). Surfaced via evcb_snapshot, evcb_walk_dump, evcb_walk_stats. card_txn_diff (psx_oracle_cmds.c): aligns our structured txn ring against Beetle's 64K SIO ring split into transactions, finds first byte-level divergence, returns context window. SIO_FFD_MAX_BYTES bumped 16K -> 64K so historical Beetle reads remain in scope. emu_press (psx_oracle_cmds.c, beetle_psx_bridge.cpp): drives Beetle's pad input for navigation parity with our `press` cmd. 180-frame cycles verified to navigate Beetle to MC screen. F7 toggle (main.cpp): swaps SDL window display source between ours and Beetle's framebuffer for visual A/B comparison without restart. Hygiene: 162 stale probe artifacts moved into probes/. .gitignore extended for probes/ + root-level *.json/*.png/*.bmp/*.txt scratch. Runtime data (card*.mcd, dummy.*.mcr) intentionally not covered. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>