mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-27 02:32:02 -04:00
b0391bc778
Adds a force-interp knob (dirty_ram_is_dirty reports all RAM above the kernel window dirty when PSX_FORCE_INTERP=1) so the dispatcher routes clean compiled game text through the dirty-RAM interpreter — the SAME path overlays take — with no emitter/dispatch change. This is the interp-path Δ-ruler enabler: it lets the cyctest isolation loops be measured native-INTERP vs Beetle. RESULT — the dirty-RAM interpreter == Beetle EXACT on all 12 ruler#2 components (baseline/alu/load/load2/load_use/div/div_spaced/mult/ gte_rtps/gte_nclip/gte_read_use/ld_div). The interpreter's per-instruction load-delay + GTE/muldiv interlock is now MEASURED equal to the oracle and to the compiled backend, not merely shared-by-construction. Process notes (cost real time, now documented in the cyctest README): - launch psx-cyctest via PowerShell Start-Process; a bash '&' launch fails to boot (pc=0). - sample cyc_watch / freeze_check at STEADY STATE: an early query (before the BIOS boots to the EXE entry) reports dirty_ram_insns=0 / warm-up values. This premature-sampling artifact was the whole "dispatch paradox" — the interp engages only after the EXE entry is reached. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>