summaryrefslogtreecommitdiff
path: root/Source/Core/DSPCore/Src/gdsp_interface.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Core/DSPCore/Src/gdsp_interface.cpp')
-rw-r--r--Source/Core/DSPCore/Src/gdsp_interface.cpp39
1 files changed, 31 insertions, 8 deletions
diff --git a/Source/Core/DSPCore/Src/gdsp_interface.cpp b/Source/Core/DSPCore/Src/gdsp_interface.cpp
index 4aae90a9ea..9a7fb823a0 100644
--- a/Source/Core/DSPCore/Src/gdsp_interface.cpp
+++ b/Source/Core/DSPCore/Src/gdsp_interface.cpp
@@ -30,6 +30,7 @@
#include "DSPCore.h"
#include "DSPHost.h"
+#include "DSPTables.h"
#include "DSPAnalyzer.h"
#include "gdsp_aram.h"
#include "gdsp_interpreter.h"
@@ -89,6 +90,8 @@ void gdsp_mbox_write_l(u8 mbx, u16 val)
if (mbx == GDSP_MBOX_DSP)
{
DEBUG_LOG(DSPLLE, " - DSP writes mail to mbx %i: 0x%08x (pc=0x%04x)", mbx, gdsp_mbox_peek(GDSP_MBOX_DSP), g_dsp.pc);
+ } else {
+ // Trigger exception?
}
}
@@ -138,6 +141,11 @@ void gdsp_ifx_write(u16 addr, u16 val)
gdsp_ifx_regs[DSP_DSCR] &= ~0x0004;
break;
+ case 0xd3: // ZeldaUnk (accelerator WRITE)
+ ERROR_LOG(DSPLLE, "Write To ZeldaUnk pc=%04x (%04x)\n", g_dsp.pc, val);
+ dsp_write_aram_d3(val);
+ break;
+
case 0xde:
//if (val)
// PanicAlert("Gain written: %04x", val); // BMX XXX does, and sounds HORRIBLE.
@@ -149,10 +157,17 @@ void gdsp_ifx_write(u16 addr, u16 val)
break;
default:
-/* if ((addr & 0xff) >= 0xa0 && reg_names[addr - 0xa0])
- DEBUG_LOG(DSPLLE, "%04x MW %s (%04x)\n", g_dsp.pc, reg_names[addr - 0xa0], val);
- else
- DEBUG_LOG(DSPLLE, "%04x MW %04x (%04x)\n", g_dsp.pc, addr, val);*/
+ if ((addr & 0xff) >= 0xa0) {
+ if (pdlabels[(addr & 0xFF) - 0xa0].name) {
+ INFO_LOG(DSPLLE, "%04x MW %s (%04x)\n", g_dsp.pc, pdlabels[(addr & 0xFF) - 0xa0].name, val);
+ }
+ else {
+ ERROR_LOG(DSPLLE, "%04x MW %04x (%04x)\n", g_dsp.pc, addr, val);
+ }
+ }
+ else {
+ ERROR_LOG(DSPLLE, "%04x MW %04x (%04x)\n", g_dsp.pc, addr, val);
+ }
gdsp_ifx_regs[addr & 0xFF] = val;
break;
}
@@ -176,14 +191,22 @@ u16 gdsp_ifx_read(u16 addr)
return gdsp_ifx_regs[addr & 0xFF];
case 0xdd:
+ // ERROR_LOG(DSPLLE, "Accelerator");
return dsp_read_aram();
default:
+ if ((addr & 0xff) >= 0xa0) {
+ if (pdlabels[(addr & 0xFF) - 0xa0].name) {
+ INFO_LOG(DSPLLE, "%04x MR %s (%04x)\n", g_dsp.pc, pdlabels[(addr & 0xFF) - 0xa0].name, gdsp_ifx_regs[addr & 0xFF]);
+ }
+ else {
+ ERROR_LOG(DSPLLE, "%04x MR %04x (%04x)\n", g_dsp.pc, addr, gdsp_ifx_regs[addr & 0xFF]);
+ }
+ }
+ else {
+ ERROR_LOG(DSPLLE, "%04x MR %04x (%04x)\n", g_dsp.pc, addr, gdsp_ifx_regs[addr & 0xFF]);
+ }
return gdsp_ifx_regs[addr & 0xFF];
-/* if ((addr & 0xff) >= 0xc0 && reg_names[addr & 0x3f])
- printf("%04x MR %s (%04x)\n", g_dsp.pc, reg_names[addr & 0x3f], val);
- else
- printf("%04x MR %04x (%04x)\n", g_dsp.pc, addr, val);*/
}
}