diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt
index 37f2c3ebab..0d76fb8c47 100644
--- a/Source/Core/Core/CMakeLists.txt
+++ b/Source/Core/Core/CMakeLists.txt
@@ -33,7 +33,6 @@ set(SRCS ActionReplay.cpp
DSP/DSPMemoryMap.cpp
DSP/DSPStacks.cpp
DSP/DSPAnalyzer.cpp
- DSP/DSPEmitter.cpp
DSP/DSPCodeUtil.cpp
DSP/LabelMap.cpp
DSP/DSPCore.cpp
@@ -46,6 +45,7 @@ set(SRCS ActionReplay.cpp
DSP/Interpreter/DSPIntLoadStore.cpp
DSP/Interpreter/DSPIntMisc.cpp
DSP/Interpreter/DSPIntMultiplier.cpp
+ DSP/Jit/DSPEmitter.cpp
DSP/Jit/DSPJitRegCache.cpp
DSP/Jit/DSPJitExtOps.cpp
DSP/Jit/DSPJitBranch.cpp
diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj
index 29f554ae9a..47845d7b3d 100644
--- a/Source/Core/Core/Core.vcxproj
+++ b/Source/Core/Core/Core.vcxproj
@@ -59,7 +59,6 @@
-
@@ -72,6 +71,7 @@
+
@@ -286,7 +286,6 @@
-
@@ -296,6 +295,7 @@
+
diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters
index 515f3fdf61..ea1040901e 100644
--- a/Source/Core/Core/Core.vcxproj.filters
+++ b/Source/Core/Core/Core.vcxproj.filters
@@ -210,6 +210,9 @@
DSPCore\Interpreter
+
+ DSPCore\Jit
+
DSPCore\Jit
@@ -237,9 +240,6 @@
DSPCore\Jit
-
- DSPCore\Jit
-
FifoPlayer
@@ -821,10 +821,10 @@
DSPCore\Interpreter
-
+
DSPCore\Jit
-
+
DSPCore\Jit
diff --git a/Source/Core/Core/DSP/DSPCore.cpp b/Source/Core/Core/DSP/DSPCore.cpp
index ca901459bf..d6d0e0fe6b 100644
--- a/Source/Core/Core/DSP/DSPCore.cpp
+++ b/Source/Core/Core/DSP/DSPCore.cpp
@@ -18,11 +18,11 @@
#include "Common/MsgHandler.h"
#include "Core/DSP/DSPAnalyzer.h"
-#include "Core/DSP/DSPEmitter.h"
#include "Core/DSP/DSPHWInterface.h"
#include "Core/DSP/DSPHost.h"
#include "Core/DSP/Interpreter/DSPIntUtil.h"
#include "Core/DSP/Interpreter/DSPInterpreter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
SDSP g_dsp;
DSPBreakpoints g_dsp_breakpoints;
diff --git a/Source/Core/Core/DSP/DSPCore.h b/Source/Core/Core/DSP/DSPCore.h
index c6ac49eb99..f53a860b97 100644
--- a/Source/Core/Core/DSP/DSPCore.h
+++ b/Source/Core/Core/DSP/DSPCore.h
@@ -13,7 +13,8 @@
#include "Core/DSP/DSPBreakpoints.h"
#include "Core/DSP/DSPCaptureLogger.h"
-#include "Core/DSP/DSPEmitter.h"
+
+class DSPEmitter;
enum : u32
{
diff --git a/Source/Core/Core/DSP/DSPMemoryMap.cpp b/Source/Core/Core/DSP/DSPMemoryMap.cpp
index 98f3aff1d6..7b5524e2ea 100644
--- a/Source/Core/Core/DSP/DSPMemoryMap.cpp
+++ b/Source/Core/Core/DSP/DSPMemoryMap.cpp
@@ -64,3 +64,21 @@ void dsp_dmem_write(u16 addr, u16 val)
break;
}
}
+
+u16 dsp_fetch_code()
+{
+ u16 opc = dsp_imem_read(g_dsp.pc);
+
+ g_dsp.pc++;
+ return opc;
+}
+
+u16 dsp_peek_code()
+{
+ return dsp_imem_read(g_dsp.pc);
+}
+
+void dsp_skip_inst()
+{
+ g_dsp.pc += opTable[dsp_peek_code()]->size;
+}
diff --git a/Source/Core/Core/DSP/DSPMemoryMap.h b/Source/Core/Core/DSP/DSPMemoryMap.h
index d9ebcef9fb..db6ed4f8f3 100644
--- a/Source/Core/Core/DSP/DSPMemoryMap.h
+++ b/Source/Core/Core/DSP/DSPMemoryMap.h
@@ -7,27 +7,10 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPCore.h"
-#include "Core/DSP/DSPTables.h"
-
u16 dsp_imem_read(u16 addr);
void dsp_dmem_write(u16 addr, u16 val);
u16 dsp_dmem_read(u16 addr);
-inline u16 dsp_fetch_code()
-{
- u16 opc = dsp_imem_read(g_dsp.pc);
-
- g_dsp.pc++;
- return opc;
-}
-
-inline u16 dsp_peek_code()
-{
- return dsp_imem_read(g_dsp.pc);
-}
-
-inline void dsp_skip_inst()
-{
- g_dsp.pc += opTable[dsp_peek_code()]->size;
-}
+u16 dsp_fetch_code();
+u16 dsp_peek_code();
+void dsp_skip_inst();
diff --git a/Source/Core/Core/DSP/DSPTables.cpp b/Source/Core/Core/DSP/DSPTables.cpp
index be93f5b2c0..60458252d1 100644
--- a/Source/Core/Core/DSP/DSPTables.cpp
+++ b/Source/Core/Core/DSP/DSPTables.cpp
@@ -8,9 +8,9 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
#include "Core/DSP/Interpreter/DSPIntExtOps.h"
#include "Core/DSP/Interpreter/DSPInterpreter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
// clang-format off
const DSPOPCTemplate opcodes[] =
diff --git a/Source/Core/Core/DSP/DSPTables.h b/Source/Core/Core/DSP/DSPTables.h
index 28b67d7fec..4501f5b598 100644
--- a/Source/Core/Core/DSP/DSPTables.h
+++ b/Source/Core/Core/DSP/DSPTables.h
@@ -7,7 +7,7 @@
#pragma once
#include "Core/DSP/DSPCommon.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
// The non-ADDR ones that end with _D are the opposite one - if the bit specify
// ACC0, then ACC_D will be ACC1.
diff --git a/Source/Core/Core/DSP/Interpreter/DSPIntExtOps.cpp b/Source/Core/Core/DSP/Interpreter/DSPIntExtOps.cpp
index 337e2322a5..7b5cc46960 100644
--- a/Source/Core/Core/DSP/Interpreter/DSPIntExtOps.cpp
+++ b/Source/Core/Core/DSP/Interpreter/DSPIntExtOps.cpp
@@ -5,6 +5,7 @@
#include "Core/DSP/Interpreter/DSPIntExtOps.h"
#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/DSPTables.h"
#include "Core/DSP/Interpreter/DSPIntUtil.h"
// not needed for game ucodes (it slows down interpreter/dspjit32 + easier to compare int VS
diff --git a/Source/Core/Core/DSP/Interpreter/DSPIntUtil.h b/Source/Core/Core/DSP/Interpreter/DSPIntUtil.h
index 9c540400e1..31ec638b31 100644
--- a/Source/Core/Core/DSP/Interpreter/DSPIntUtil.h
+++ b/Source/Core/Core/DSP/Interpreter/DSPIntUtil.h
@@ -5,6 +5,7 @@
#pragma once
+#include "Common/Assert.h"
#include "Common/CommonTypes.h"
#include "Core/DSP/DSPCore.h"
diff --git a/Source/Core/Core/DSP/DSPEmitter.cpp b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp
similarity index 99%
rename from Source/Core/Core/DSP/DSPEmitter.cpp
rename to Source/Core/Core/DSP/Jit/DSPEmitter.cpp
index f4c558cd37..c1fb7c3156 100644
--- a/Source/Core/Core/DSP/DSPEmitter.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPEmitter.cpp
@@ -2,7 +2,7 @@
// Licensed under GPLv2+
// Refer to the license.txt file included.
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
#include
@@ -15,7 +15,7 @@
#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPHost.h"
#include "Core/DSP/DSPMemoryMap.h"
-#include "Core/DSP/Interpreter/DSPInterpreter.h"
+#include "Core/DSP/DSPTables.h"
#define MAX_BLOCK_SIZE 250
#define DSP_IDLE_SKIP_CYCLES 0x1000
diff --git a/Source/Core/Core/DSP/DSPEmitter.h b/Source/Core/Core/DSP/Jit/DSPEmitter.h
similarity index 100%
rename from Source/Core/Core/DSP/DSPEmitter.h
rename to Source/Core/Core/DSP/Jit/DSPEmitter.h
diff --git a/Source/Core/Core/DSP/Jit/DSPJitArithmetic.cpp b/Source/Core/Core/DSP/Jit/DSPJitArithmetic.cpp
index fde040416c..b647327a92 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitArithmetic.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitArithmetic.cpp
@@ -6,8 +6,9 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp
index 18ca7053a6..5cc72548a2 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitBranch.cpp
@@ -5,8 +5,10 @@
#include "Common/CommonTypes.h"
#include "Core/DSP/DSPAnalyzer.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/DSPTables.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitCCUtil.cpp b/Source/Core/Core/DSP/Jit/DSPJitCCUtil.cpp
index be4b69e56b..3d7657a074 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitCCUtil.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitCCUtil.cpp
@@ -5,7 +5,7 @@
// Additional copyrights go to Duddie and Tratax (c) 2004
#include "Core/DSP/DSPCore.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitExtOps.cpp b/Source/Core/Core/DSP/Jit/DSPJitExtOps.cpp
index aec658f975..1dc75e43d4 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitExtOps.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitExtOps.cpp
@@ -4,8 +4,8 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
-#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/DSPCore.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitLoadStore.cpp b/Source/Core/Core/DSP/Jit/DSPJitLoadStore.cpp
index 2d37f18a30..645fdbcaa7 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitLoadStore.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitLoadStore.cpp
@@ -6,9 +6,10 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPMemoryMap.h"
#include "Core/DSP/Interpreter/DSPInterpreter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitMisc.cpp b/Source/Core/Core/DSP/Jit/DSPJitMisc.cpp
index f71f9d3b33..0b064047a2 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitMisc.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitMisc.cpp
@@ -4,9 +4,10 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPMemoryMap.h"
#include "Core/DSP/Interpreter/DSPInterpreter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitMultiplier.cpp b/Source/Core/Core/DSP/Jit/DSPJitMultiplier.cpp
index 3c6b614f72..63047f6d83 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitMultiplier.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitMultiplier.cpp
@@ -9,7 +9,7 @@
#include "Common/CommonTypes.h"
#include "Core/DSP/DSPCore.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
index 05dce4878b..63b91c424b 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitRegCache.cpp
@@ -9,8 +9,9 @@
#include "Common/Assert.h"
#include "Common/Logging/Log.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/DSP/Jit/DSPJitUtil.cpp b/Source/Core/Core/DSP/Jit/DSPJitUtil.cpp
index de088f0f4c..9b273e619b 100644
--- a/Source/Core/Core/DSP/Jit/DSPJitUtil.cpp
+++ b/Source/Core/Core/DSP/Jit/DSPJitUtil.cpp
@@ -4,9 +4,9 @@
#include "Common/CommonTypes.h"
-#include "Core/DSP/DSPEmitter.h"
+#include "Core/DSP/DSPCore.h"
#include "Core/DSP/DSPHWInterface.h"
-#include "Core/DSP/DSPMemoryMap.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
using namespace Gen;
diff --git a/Source/Core/Core/HW/DSPLLE/DSPHost.cpp b/Source/Core/Core/HW/DSPLLE/DSPHost.cpp
index 83b50bc60a..6bd2394cbd 100644
--- a/Source/Core/Core/HW/DSPLLE/DSPHost.cpp
+++ b/Source/Core/Core/HW/DSPLLE/DSPHost.cpp
@@ -9,6 +9,7 @@
#include "Core/ConfigManager.h"
#include "Core/DSP/DSPAnalyzer.h"
#include "Core/DSP/DSPCore.h"
+#include "Core/DSP/Jit/DSPEmitter.h"
#include "Core/HW/DSP.h"
#include "Core/HW/DSPLLE/DSPLLETools.h"
#include "Core/HW/DSPLLE/DSPSymbols.h"
diff --git a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp
index 370acfcd86..8af0c9b7ec 100644
--- a/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp
+++ b/Source/Core/Core/HW/DSPLLE/DSPLLE.cpp
@@ -13,6 +13,7 @@
#include "Common/CommonTypes.h"
#include "Common/Event.h"
#include "Common/Logging/Log.h"
+#include "Common/MemoryUtil.h"
#include "Common/Thread.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h"