fix bug with IPC FIFO IRQs

This commit is contained in:
StapleButter 2017-01-17 05:29:38 +01:00
parent 8ea2aaad5a
commit b10a0d64a2
2 changed files with 5 additions and 3 deletions

View File

@ -1433,8 +1433,9 @@ void ARM9IOWrite32(u32 addr, u32 val)
IPCFIFOCnt9 |= 0x4000;
else
{
bool wasempty = IPCFIFO9->IsEmpty();
IPCFIFO9->Write(val);
if (IPCFIFOCnt7 & 0x0400)
if ((IPCFIFOCnt7 & 0x0400) && wasempty)
TriggerIRQ(1, IRQ_IPCRecv);
}
}
@ -1736,8 +1737,9 @@ void ARM7IOWrite32(u32 addr, u32 val)
IPCFIFOCnt7 |= 0x4000;
else
{
bool wasempty = IPCFIFO7->IsEmpty();
IPCFIFO7->Write(val);
if (IPCFIFOCnt9 & 0x0400)
if ((IPCFIFOCnt9 & 0x0400) && wasempty)
TriggerIRQ(0, IRQ_IPCRecv);
}
}

View File

@ -67,7 +67,7 @@
1481037554 c:\documents\sources\melonds\cp15.h
1484524458 source:c:\documents\sources\melonds\cp15.cpp
1484616493 source:c:\documents\sources\melonds\cp15.cpp
<stdio.h>
"NDS.h"
"ARM.h"