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:
parent
0932c11b9c
commit
36883d6a48
|
@ -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
|
||||||
|
|
|
@ -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];
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue