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
This commit is contained in:
nakeee 2009-07-05 16:18:17 +00:00
parent 0932c11b9c
commit 36883d6a48
3 changed files with 7 additions and 7 deletions

View File

@ -156,7 +156,7 @@ void DSPCore_SetException(u8 level)
void DSPCore_CheckExternalInterrupt() void DSPCore_CheckExternalInterrupt()
{ {
// check if there is an external interrupt // 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 #ifdef DEBUG_EXP
NOTICE_LOG(DSPLLE, "trying External interupt fired"); NOTICE_LOG(DSPLLE, "trying External interupt fired");
@ -176,7 +176,7 @@ void DSPCore_CheckExternalInterrupt()
void DSPCore_CheckExceptions() void DSPCore_CheckExceptions()
{ {
if (g_dsp.exceptions != 0) { if (g_dsp.exceptions != 0 && !g_dsp.exception_in_progress_hack) {
#ifdef DEBUG_EXP #ifdef DEBUG_EXP
NOTICE_LOG(DSPLLE, "trying exception %d fired", g_dsp.exceptions); NOTICE_LOG(DSPLLE, "trying exception %d fired", g_dsp.exceptions);
#endif #endif

View File

@ -185,7 +185,7 @@ void gdsp_ifx_write(u16 addr, u16 val)
default: default:
if ((addr & 0xff) >= 0xa0) { if ((addr & 0xff) >= 0xa0) {
if (pdlabels[(addr & 0xFF) - 0xa0].name && pdlabels[(addr & 0xFF) - 0xa0].description) { 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 { else {
ERROR_LOG(DSPLLE, "%04x MW %04x (%04x)", g_dsp.pc, addr, val); ERROR_LOG(DSPLLE, "%04x MW %04x (%04x)", g_dsp.pc, addr, val);
@ -228,14 +228,14 @@ u16 gdsp_ifx_read(u16 addr)
default: default:
if ((addr & 0xff) >= 0xa0) { if ((addr & 0xff) >= 0xa0) {
if (pdlabels[(addr & 0xFF) - 0xa0].name && pdlabels[(addr & 0xFF) - 0xa0].description) { 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 { 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 { 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]; return gdsp_ifx_regs[addr & 0xFF];
} }

View File

@ -22,7 +22,7 @@
// emulation core can access the environment it runs in. If the emulation // 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 // core isn't used, for example in an asm/disasm tool, then most of these
// can be stubbed out. // can be stubbed out.
//#define DEBUG_EXP 1 #define DEBUG_EXP 1
u8 DSPHost_ReadHostMemory(u32 addr); u8 DSPHost_ReadHostMemory(u32 addr);
void DSPHost_WriteHostMemory(u8 value, u32 addr); void DSPHost_WriteHostMemory(u8 value, u32 addr);