From 9839f3b6cd9ea0d62730edee7db027dde86f6239 Mon Sep 17 00:00:00 2001
From: bunnei <ericbunnie@gmail.com>
Date: Thu, 29 May 2014 20:30:17 -0400
Subject: [PATCH] core: changed time delay before kernel reschedule to
 "approximate" a screen refresh

---
 src/core/core.cpp | 15 ++++++++++++---
 1 file changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/core/core.cpp b/src/core/core.cpp
index f88bcd704e..070f92ed5f 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -9,6 +9,7 @@
 #include "core/core.h"
 #include "core/mem_map.h"
 #include "core/hw/hw.h"
+#include "core/hw/lcd.h"
 #include "core/arm/disassembler/arm_disasm.h"
 #include "core/arm/interpreter/arm_interpreter.h"
 
@@ -23,7 +24,7 @@ ARM_Interface*  g_sys_core  = NULL; ///< ARM11 system (OS) core
 /// Run the core CPU loop
 void RunLoop() {
     for (;;){
-        g_app_core->Run(100);
+        g_app_core->Run(LCD::kFrameTicks / 2);
         HW::Update();
         Kernel::Reschedule();
     }
@@ -31,9 +32,17 @@ void RunLoop() {
 
 /// Step the CPU one instruction
 void SingleStep() {
+    static int ticks = 0;
+
     g_app_core->Step();
-    HW::Update();
-    Kernel::Reschedule();
+    
+    if (ticks >= LCD::kFrameTicks / 2) {
+        HW::Update();
+        Kernel::Reschedule();
+        ticks = 0;
+    } else {
+        ticks++;
+    }
 }
 
 /// Halt the core