core: changed time delay before kernel reschedule to "approximate" a screen refresh

master
bunnei 2014-05-29 20:30:17 +07:00
parent 6d267142ad
commit 9839f3b6cd
1 changed files with 12 additions and 3 deletions

@ -9,6 +9,7 @@
#include "core/core.h" #include "core/core.h"
#include "core/mem_map.h" #include "core/mem_map.h"
#include "core/hw/hw.h" #include "core/hw/hw.h"
#include "core/hw/lcd.h"
#include "core/arm/disassembler/arm_disasm.h" #include "core/arm/disassembler/arm_disasm.h"
#include "core/arm/interpreter/arm_interpreter.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 /// Run the core CPU loop
void RunLoop() { void RunLoop() {
for (;;){ for (;;){
g_app_core->Run(100); g_app_core->Run(LCD::kFrameTicks / 2);
HW::Update(); HW::Update();
Kernel::Reschedule(); Kernel::Reschedule();
} }
@ -31,9 +32,17 @@ void RunLoop() {
/// Step the CPU one instruction /// Step the CPU one instruction
void SingleStep() { void SingleStep() {
static int ticks = 0;
g_app_core->Step(); g_app_core->Step();
if (ticks >= LCD::kFrameTicks / 2) {
HW::Update(); HW::Update();
Kernel::Reschedule(); Kernel::Reschedule();
ticks = 0;
} else {
ticks++;
}
} }
/// Halt the core /// Halt the core