From 54a2ca65ffab11fa58b1ab2f54befd91ba7fdeca Mon Sep 17 00:00:00 2001 From: raven02 Date: Fri, 8 Mar 2013 09:30:04 +0800 Subject: [PATCH] Fix slowdown in RR2 or may be others --- Core/HLE/sceDisplay.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index 2b3a76aaf8..4940620d4a 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -363,6 +363,7 @@ void hleEnterVblank(u64 userdata, int cyclesLate) { DEBUG_LOG(HLE, "Enter VBlank %i", vbCount); isVblank = 1; + vCount++; // // vCount increases at each VBLANK. // Fire the vblank listeners before we wake threads. __DisplayFireVblank(); @@ -450,7 +451,6 @@ void hleAfterFlip(u64 userdata, int cyclesLate) void hleLeaveVblank(u64 userdata, int cyclesLate) { isVblank = 0; DEBUG_LOG(HLE,"Leave VBlank %i", (int)userdata - 1); - vCount++; frameStartTicks = CoreTiming::GetTicks(); CoreTiming::ScheduleEvent(msToCycles(frameMs - vblankMs) - cyclesLate, enterVblankEvent, userdata); } @@ -594,8 +594,9 @@ u32 sceDisplayGetVcount() { } u32 sceDisplayGetCurrentHcount() { - DEBUG_LOG(HLE,"sceDisplayGetCurrentHcount()"); - return (CoreTiming::GetTicks() - frameStartTicks) / ((u64)CoreTiming::GetClockFrequencyMHz() * 1000000 / 60 / 272); + u32 currentHCount = (CoreTiming::GetTicks() - frameStartTicks) / ((u64)CoreTiming::GetClockFrequencyMHz() * 1000000 / 60 / 272); + DEBUG_LOG(HLE,"sceDisplayGetCurrentHcount(%08x)", currentHCount); + return currentHCount; } u32 sceDisplayAdjustAccumulatedHcount() { @@ -607,7 +608,7 @@ u32 sceDisplayGetAccumulatedHcount() { float hCountPerVblank = 285.72f; // insprired by jpcsp u32 currentHCount = (CoreTiming::GetTicks() - frameStartTicks) / ((u64)CoreTiming::GetClockFrequencyMHz() * 1000000 / 60 / 272); u32 accumHCount = currentHCount + (u32) (vCount * hCountPerVblank); - DEBUG_LOG(HLE,"%i=sceDisplayGetAccumulatedHcount()", accumHCount); + DEBUG_LOG(HLE,"%i=sceDisplayGetAccumulatedHcount(%08x)", accumHCount); return accumHCount; }