Sfoglia il codice sorgente

Merge pull request #1072 from yuriks/GetSystemTick-advance-time

SVC: Advance time when calling GetSystemTick to escape busy-wait loops
bunnei 11 anni fa
parent
commit
5e3536f66f
1 ha cambiato i file con 4 aggiunte e 1 eliminazioni
  1. 4 1
      src/core/hle/svc.cpp

+ 4 - 1
src/core/hle/svc.cpp

@@ -755,7 +755,10 @@ static void SleepThread(s64 nanoseconds) {
 
 
 /// This returns the total CPU ticks elapsed since the CPU was powered-on
 /// This returns the total CPU ticks elapsed since the CPU was powered-on
 static s64 GetSystemTick() {
 static s64 GetSystemTick() {
-    return (s64)CoreTiming::GetTicks();
+    s64 result = CoreTiming::GetTicks();
+    // Advance time to defeat dumb games (like Cubic Ninja) that busy-wait for the frame to end.
+    Core::g_app_core->AddTicks(150); // Measured time between two calls on a 9.2 o3DS with Ninjhax 1.1b
+    return result;
 }
 }
 
 
 /// Creates a memory block at the specified address with the specified permissions and size
 /// Creates a memory block at the specified address with the specified permissions and size