PCRTC/Counters: Fix H-Blanks per frame

This commit is contained in:
refractionpcsx2 2023-10-29 05:40:37 +00:00
parent 06e80f0c31
commit 3850227605
1 changed files with 4 additions and 3 deletions

View File

@ -216,11 +216,12 @@ static void vSyncInfoCalc(vSyncTimingInfo* info, double framesPerSecond, u32 sca
// Dynasty Warriors 3 Xtreme Legends - fake save corruption when loading save // Dynasty Warriors 3 Xtreme Legends - fake save corruption when loading save
// Jak II - random speedups // Jak II - random speedups
// Shadow of Rome - FMV audio issues // Shadow of Rome - FMV audio issues
const bool ntsc_hblank = gsVideoMode != GS_VideoMode::PAL && gsVideoMode == GS_VideoMode::DVD_PAL; const bool ntsc_hblank = gsVideoMode != GS_VideoMode::PAL && gsVideoMode != GS_VideoMode::DVD_PAL;
const u64 HalfFrame = Frame / 2; const u64 HalfFrame = Frame / 2;
const u64 Blank = Scanline * ((ntsc_hblank ? 22 : 25) + static_cast<int>(!IsProgressiveVideoMode())); const float extra_scanlines = static_cast<float>(IsProgressiveVideoMode()) * (ntsc_hblank ? 0.5f : 1.5f);
const u64 Blank = Scanline * ((ntsc_hblank ? 22.5f : 24.5f) + extra_scanlines);
const u64 Render = HalfFrame - Blank; const u64 Render = HalfFrame - Blank;
const u64 GSBlank = Scanline * (ntsc_hblank ? 3.5 : 3); // GS VBlank/CSR Swap happens roughly 3.5(NTSC) and 3(PAL) Scanlines after VBlank Start const u64 GSBlank = Scanline * ((ntsc_hblank ? 3.5 : 3) + extra_scanlines); // GS VBlank/CSR Swap happens roughly 3.5(NTSC) and 3(PAL) Scanlines after VBlank Start
// Important! The hRender/hBlank timers should be 50/50 for best results. // Important! The hRender/hBlank timers should be 50/50 for best results.
// (this appears to be what the real EE's timing crystal does anyway) // (this appears to be what the real EE's timing crystal does anyway)