diff --git a/core/hw/sh4/sh4_sched.cpp b/core/hw/sh4/sh4_sched.cpp index 516bee912..c64f49bf9 100755 --- a/core/hw/sh4/sh4_sched.cpp +++ b/core/hw/sh4/sh4_sched.cpp @@ -36,11 +36,11 @@ vector list; int sh4_sched_next_id=-1; -u32 sh4_sched_remaining(int id) +u32 sh4_sched_remaining(int id, u32 reference) { - if (list[id].end!=-1) + if (list[id].end != -1) { - return list[id].end-sh4_sched_now(); + return list[id].end - reference; } else { @@ -48,6 +48,11 @@ u32 sh4_sched_remaining(int id) } } +u32 sh4_sched_remaining(int id) +{ + return sh4_sched_remaining(id, sh4_sched_now()); +} + void sh4_sched_ffts() { u32 diff=-1; @@ -150,8 +155,9 @@ void sh4_sched_tick(int cycles) { for (int i=0;i= 0 || remaining == -1); + if (remaining >= 0 && remaining <= (u32)cycles) { handle_cb(i); } }