aboutsummaryrefslogtreecommitdiff
path: root/src/NDS.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/NDS.cpp')
-rw-r--r--src/NDS.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/NDS.cpp b/src/NDS.cpp
index 4073536..cb85d13 100644
--- a/src/NDS.cpp
+++ b/src/NDS.cpp
@@ -566,7 +566,7 @@ void Reset()
KeyCnt = 0;
RCnt = 0;
- ARMJIT::ResetBlocks();
+ ARMJIT::InvalidateBlockCache();
NDSCart::Reset();
GBACart::Reset();
@@ -794,6 +794,11 @@ bool DoSavestate(Savestate* file)
GPU::SetPowerCnt(PowerControl9);
}
+ if (!file->Saving)
+ {
+ ARMJIT::InvalidateBlockCache();
+ }
+
return true;
}
@@ -884,6 +889,7 @@ void RunSystem(u64 timestamp)
}
}
+template <bool EnableJIT>
u32 RunFrame()
{
FrameStartTimestamp = SysTimestamp;
@@ -917,7 +923,10 @@ u32 RunFrame()
}
else
{
- ARM9->Execute();
+ if (EnableJIT)
+ ARM9->ExecuteJIT();
+ else
+ ARM9->Execute();
}
RunTimers(0);
@@ -940,7 +949,10 @@ u32 RunFrame()
}
else
{
- ARM7->Execute();
+ if (EnableJIT)
+ ARM7->ExecuteJIT();
+ else
+ ARM7->Execute();
}
RunTimers(1);
@@ -970,6 +982,14 @@ u32 RunFrame()
return GPU::TotalScanlines;
}
+u32 RunFrame()
+{
+ if (Config::JIT_Enable)
+ return RunFrame<true>();
+ else
+ return RunFrame<false>();
+}
+
void Reschedule(u64 target)
{
if (CurCPU == 0)