From 6e5426a5288d9f2512b062fa47c44bedeb60ce5d Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Tue, 3 Sep 2013 00:12:48 -0700 Subject: [PATCH] Spend a lot less time calculating the hcount. Tiny loss in precision, can't even notice. Cuts time significantly in Valkyrie Profile. --- Core/HLE/sceDisplay.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Core/HLE/sceDisplay.cpp b/Core/HLE/sceDisplay.cpp index d294e5fc76..c5db1aff73 100644 --- a/Core/HLE/sceDisplay.cpp +++ b/Core/HLE/sceDisplay.cpp @@ -686,9 +686,10 @@ u32 sceDisplayGetVcount() { } u32 __DisplayGetCurrentHcount() { - const u64 ticksIntoFrame = CoreTiming::GetTicks() - frameStartTicks; + const static int ticksPerVblank333 = 333 * 1000000 / 60 / hCountPerVblank; + const int ticksIntoFrame = CoreTiming::GetTicks() - frameStartTicks; // Can't seem to produce a 0 on real hardware, offsetting by 1 makes things look right. - return 1 + (ticksIntoFrame / ((u64)CoreTiming::GetClockFrequencyMHz() * 1000000 / 60 / hCountPerVblank)); + return 1 + (ticksIntoFrame / (CoreTiming::GetClockFrequencyMHz() * ticksPerVblank333 / 333)); } u32 __DisplayGetAccumulatedHcount() {