summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DSPCore/Src/DSPIntExtOps.cpp')
-rw-r--r--Source/Core/DSPCore/Src/DSPIntExtOps.cpp47
1 files changed, 31 insertions, 16 deletions
diff --git a/Source/Core/DSPCore/Src/DSPIntExtOps.cpp b/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
index 31ac43d10a..12432dc1ce 100644
--- a/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
+++ b/Source/Core/DSPCore/Src/DSPIntExtOps.cpp
@@ -94,6 +94,13 @@ void s(const UDSPInstruction& opc)
dsp_dmem_write(g_dsp.r[dreg], g_dsp.r[sreg]);
+ currentEpilogeFunc = s_epi;
+}
+
+void s_epi(const UDSPInstruction& opc)
+{
+ u8 dreg = opc.hex & 0x3;
+
dsp_increment_addr_reg(dreg);
}
@@ -108,6 +115,14 @@ void sn(const UDSPInstruction& opc)
dsp_dmem_write(g_dsp.r[dreg], g_dsp.r[sreg]);
+ currentEpilogeFunc = sn_epi;
+}
+
+void sn_epi(const UDSPInstruction& opc)
+{
+ u8 dreg = opc.hex & 0x3;
+
+
dsp_increase_addr_reg(dreg, (s16)g_dsp.r[DSP_REG_IX0 + dreg]);
}
@@ -141,9 +156,9 @@ void ln(const UDSPInstruction& opc)
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
}
-// LS $(0x18+D), $acS.m
+// LS $axD.l, $acS.m
// xxxx xxxx 10dd 000s
-// Load register $(0x18+D) with value from memory pointed by register
+// Load register $axD.l with value from memory pointed by register
// $ar0. Store value from register $acS.m to memory location pointed by
// register $ar3. Increment both $ar0 and $ar3.
void ls(const UDSPInstruction& opc)
@@ -165,9 +180,9 @@ void ls_epi(const UDSPInstruction& opc)
dsp_increment_addr_reg(0x00);
}
-// LSN $(0x18+D), $acS.m
+// LSN $acD.l, $acS.m
// xxxx xxxx 10dd 010s
-// Load register $(0x18+D) with value from memory pointed by register
+// Load register $acD.l with value from memory pointed by register
// $ar0. Store value from register $acS.m to memory location pointed by
// register $ar3. Add corresponding indexing register $ix0 to addressing
// register $ar0 and increment $ar3.
@@ -190,9 +205,9 @@ void lsn_epi(const UDSPInstruction& opc)
dsp_increase_addr_reg(0x00, (s16)g_dsp.r[DSP_REG_IX0]);
}
-// LSM $(0x18+D), $acS.m
+// LSM $acD.l, $acS.m
// xxxx xxxx 10dd 100s
-// Load register $(0x18+D) with value from memory pointed by register
+// Load register $acD.l with value from memory pointed by register
// $ar0. Store value from register $acS.m to memory location pointed by
// register $ar3. Add corresponding indexing register $ix3 to addressing
// register $ar3 and increment $ar0.
@@ -216,9 +231,9 @@ void lsm_epi(const UDSPInstruction& opc)
dsp_increment_addr_reg(0x00);
}
-// LSMN $(0x18+D), $acS.m
+// LSMN $acD.l, $acS.m
// xxxx xxxx 10dd 110s
-// Load register $(0x18+D) with value from memory pointed by register
+// Load register $acD.l with value from memory pointed by register
// $ar0. Store value from register $acS.m to memory location pointed by
// register $ar3. Add corresponding indexing register $ix0 to addressing
// register $ar0 and add corresponding indexing register $ix3 to addressing
@@ -243,10 +258,10 @@ void lsnm_epi(const UDSPInstruction& opc)
dsp_increase_addr_reg(0x00, (s16)g_dsp.r[DSP_REG_IX0]);
}
-// SL $acS.m, $(0x18+D)
+// SL $acS.m, $acD.l
// xxxx xxxx 10dd 001s
// Store value from register $acS.m to memory location pointed by register
-// $ar0. Load register $(0x18+D) with value from memory pointed by register
+// $ar0. Load register $acD.l with value from memory pointed by register
// $ar3. Increment both $ar0 and $ar3.
void sl(const UDSPInstruction& opc)
{
@@ -267,10 +282,10 @@ void sl_epi(const UDSPInstruction& opc)
dsp_increment_addr_reg(sreg);
}
-// SLN $acS.m, $(0x18+D)
+// SLN $acS.m, $acD.l
// xxxx xxxx 10dd 011s
// Store value from register $acS.m to memory location pointed by register
-// $ar0. Load register $(0x18+D) with value from memory pointed by register
+// $ar0. Load register $acD.l with value from memory pointed by register
// $ar3. Add corresponding indexing register $ix0 to addressing register $ar0
// and increment $ar3.
void sln(const UDSPInstruction& opc)
@@ -292,10 +307,10 @@ void sln_epi(const UDSPInstruction& opc)
dsp_increment_addr_reg(sreg);
}
-// SLM $acS.m, $(0x18+D)
+// SLM $acS.m, $acD.l
// xxxx xxxx 10dd 101s
// Store value from register $acS.m to memory location pointed by register
-// $ar0. Load register $(0x18+D) with value from memory pointed by register
+// $ar0. Load register $acD.l with value from memory pointed by register
// $ar3. Add corresponding indexing register $ix3 to addressing register $ar3
// and increment $ar0.
void slm(const UDSPInstruction& opc)
@@ -317,10 +332,10 @@ void slm_epi(const UDSPInstruction& opc)
dsp_increase_addr_reg(sreg, (s16)g_dsp.r[DSP_REG_IX0 + sreg]);
}
-// SLMN $acS.m, $(0x18+D)
+// SLMN $acS.m, $acD.l
// xxxx xxxx 10dd 111s
// Store value from register $acS.m to memory location pointed by register
-// $ar0. Load register $(0x18+D) with value from memory pointed by register
+// $ar0. Load register $acD.l with value from memory pointed by register
// $ar3. Add corresponding indexing register $ix0 to addressing register $ar0
// and add corresponding indexing register $ix3 to addressing register $ar3.
void slnm(const UDSPInstruction& opc)