From 36883d6a48fae0cc31aeb39be1a2b98f7970f7bd Mon Sep 17 00:00:00 2001 From: nakeee Date: Sun, 5 Jul 2009 16:18:17 +0000 Subject: [PATCH] Returned the exception in action check, it seems that we are missing how 2 exceptions are handled together. For example SSBM got both 32 and 4 exception together but with the hack 4 is lost. Removed some junk from LLE logging git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3682 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/DSPCore/Src/DSPCore.cpp | 4 ++-- Source/Core/DSPCore/Src/DSPHWInterface.cpp | 8 ++++---- Source/Core/DSPCore/Src/DSPHost.h | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Source/Core/DSPCore/Src/DSPCore.cpp b/Source/Core/DSPCore/Src/DSPCore.cpp index 6a70432552..c143852251 100644 --- a/Source/Core/DSPCore/Src/DSPCore.cpp +++ b/Source/Core/DSPCore/Src/DSPCore.cpp @@ -156,7 +156,7 @@ void DSPCore_SetException(u8 level) void DSPCore_CheckExternalInterrupt() { // check if there is an external interrupt - if (g_dsp.cr & CR_EXTERNAL_INT) + if (g_dsp.cr & CR_EXTERNAL_INT && !g_dsp.exception_in_progress_hack) { #ifdef DEBUG_EXP NOTICE_LOG(DSPLLE, "trying External interupt fired"); @@ -176,7 +176,7 @@ void DSPCore_CheckExternalInterrupt() void DSPCore_CheckExceptions() { - if (g_dsp.exceptions != 0) { + if (g_dsp.exceptions != 0 && !g_dsp.exception_in_progress_hack) { #ifdef DEBUG_EXP NOTICE_LOG(DSPLLE, "trying exception %d fired", g_dsp.exceptions); #endif diff --git a/Source/Core/DSPCore/Src/DSPHWInterface.cpp b/Source/Core/DSPCore/Src/DSPHWInterface.cpp index 03c5910d7a..c19730be70 100644 --- a/Source/Core/DSPCore/Src/DSPHWInterface.cpp +++ b/Source/Core/DSPCore/Src/DSPHWInterface.cpp @@ -185,7 +185,7 @@ void gdsp_ifx_write(u16 addr, u16 val) default: if ((addr & 0xff) >= 0xa0) { if (pdlabels[(addr & 0xFF) - 0xa0].name && pdlabels[(addr & 0xFF) - 0xa0].description) { - WARN_LOG(DSPLLE, "%04x MW %s (%04x)", g_dsp.pc, pdlabels[(addr & 0xFF) - 0xa0].name, val); + INFO_LOG(DSPLLE, "%04x MW %s (%04x)", g_dsp.pc, pdlabels[(addr & 0xFF) - 0xa0].name, val); } else { ERROR_LOG(DSPLLE, "%04x MW %04x (%04x)", g_dsp.pc, addr, val); @@ -228,14 +228,14 @@ u16 gdsp_ifx_read(u16 addr) default: if ((addr & 0xff) >= 0xa0) { if (pdlabels[(addr & 0xFF) - 0xa0].name && pdlabels[(addr & 0xFF) - 0xa0].description) { - NOTICE_LOG(DSPLLE, "%04x MR %s (%04x)\n", g_dsp.pc, pdlabels[(addr & 0xFF) - 0xa0].name, gdsp_ifx_regs[addr & 0xFF]); + INFO_LOG(DSPLLE, "%04x MR %s (%04x)", 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]); + ERROR_LOG(DSPLLE, "%04x MR %04x (%04x)", 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]); + ERROR_LOG(DSPLLE, "%04x MR %04x (%04x)", g_dsp.pc, addr, gdsp_ifx_regs[addr & 0xFF]); } return gdsp_ifx_regs[addr & 0xFF]; } diff --git a/Source/Core/DSPCore/Src/DSPHost.h b/Source/Core/DSPCore/Src/DSPHost.h index e3e6b2d1ef..60791deeb1 100644 --- a/Source/Core/DSPCore/Src/DSPHost.h +++ b/Source/Core/DSPCore/Src/DSPHost.h @@ -22,7 +22,7 @@ // emulation core can access the environment it runs in. If the emulation // core isn't used, for example in an asm/disasm tool, then most of these // can be stubbed out. -//#define DEBUG_EXP 1 +#define DEBUG_EXP 1 u8 DSPHost_ReadHostMemory(u32 addr); void DSPHost_WriteHostMemory(u8 value, u32 addr);