diff --git a/NDS.cpp b/NDS.cpp index d1189da4..ba45c78e 100644 --- a/NDS.cpp +++ b/NDS.cpp @@ -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); } } diff --git a/melonDS.depend b/melonDS.depend index 3e315d8e..32c870b8 100644 --- a/melonDS.depend +++ b/melonDS.depend @@ -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 "NDS.h" "ARM.h"