mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 10:19:47 -04:00
43afb3bb16
With [timing] guest_cycle_scale active, every one-cycle psx_cyc_charge went straight to psx_cpu_charge and psx_advance_cycles, bypassing the batch the scale-1 path uses. [timing] guest_cycle_scale_batch (PSX_GCS_BATCH=0/1) scales the charge in place, with the same fractional carry and order as psx_cpu_charge, then batches it like the scale-1 path. It flushes at the same observation points. Default off. R4 exactness, frame_fingerprint off vs on, 9000 frames each: headless boot through intro, title and attract; a 1P Grand Prix race; and a 2P VS race. cyc, mmio, mc and qc are identical on every frame. sp, wr, pc and ws are identical at the end. The only differences are single-frame VBlank straddles of wc/sc (never two frames in a row). 0 dispatch misses. Speed, release builds, races at 60 Hz: - M4 (macOS sample): psx_cpu_charge 4.3 % -> 0 % of emulation-thread samples; busy 46.0 -> 44.4 % (2 pairs). - 9800X3D: no measurable change (30.0 vs 30.5 %; one core 44.6 vs 44.2 %). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>