From 2ba976bffbb5569fab3ebdb0dd99fa063787f529 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 7 Jul 2013 21:36:01 -0700 Subject: [PATCH] Fix rescheduling of vtimers based on return value. --- Core/HLE/sceKernelVTimer.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Core/HLE/sceKernelVTimer.cpp b/Core/HLE/sceKernelVTimer.cpp index bd29ccb5ab..d0cf88da75 100644 --- a/Core/HLE/sceKernelVTimer.cpp +++ b/Core/HLE/sceKernelVTimer.cpp @@ -102,9 +102,7 @@ void __rescheduleVTimer(SceUID id, int delay) { if (delay < 0) delay = 100; - u64 schedule = vt->nvt.schedule + delay; - - __KernelScheduleVTimer(vt, schedule); + __KernelScheduleVTimer(vt, delay); } class VTimerIntrHandler : public IntrHandler @@ -336,8 +334,7 @@ void __startVTimer(VTimer *vt) { vt->nvt.active = 1; vt->nvt.base = cyclesToUs(CoreTiming::GetTicks()); - // Checking for zero here breaks audio in Monster Hunter. It still doesn't work well though. - if (/*vt->nvt.schedule != 0 &&*/ vt->nvt.handlerAddr != 0) + if (vt->nvt.handlerAddr != 0) __KernelScheduleVTimer(vt, vt->nvt.schedule); }