From a81c81684157aeb5a8515a846707cce25c4e1c4a Mon Sep 17 00:00:00 2001 From: normmatt234 Date: Wed, 23 Jun 2010 14:09:35 +0000 Subject: [PATCH] Fix a few FIFO bugs. --- desmume/src/FIFO.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/desmume/src/FIFO.cpp b/desmume/src/FIFO.cpp index 3807b6382..6daa87378 100644 --- a/desmume/src/FIFO.cpp +++ b/desmume/src/FIFO.cpp @@ -75,7 +75,7 @@ void IPC_FIFOsend(u8 proc, u32 val) T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); T1WriteWord(MMU.MMU_MEM[proc_remote][0x40], 0x184, cnt_r); - setIF(proc_remote, ((cnt_l & 0x0400)<<8)); // IRQ18: recv not empty + setIF(proc_remote, ((cnt_r & 0x0400)<<8)); // IRQ18: recv not empty } u32 IPC_FIFOrecv(u8 proc) @@ -109,14 +109,14 @@ u32 IPC_FIFOrecv(u8 proc) if ( ipc_fifo[proc_remote].size == 0 ) // FIFO empty { - cnt_l |= 0x0100; + cnt_l |= 0x0101; cnt_r |= 0x0001; } T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, cnt_l); T1WriteWord(MMU.MMU_MEM[proc_remote][0x40], 0x184, cnt_r); - setIF(proc_remote, ((cnt_l & 0x0004)<<15)); // IRQ17: send empty + setIF(proc_remote, ((cnt_r & 0x0004)<<15)); // IRQ17: send empty return (val); } @@ -133,7 +133,7 @@ void IPC_FIFOcnt(u8 proc, u16 val) T1WriteWord(MMU.MMU_MEM[proc][0x40], 0x184, (cnt_l & 0x0301) | (val & 0x8404) | 1); T1WriteWord(MMU.MMU_MEM[proc^1][0x40], 0x184, (cnt_r & 0x8407) | 0x100); //MMU.reg_IF[proc^1] |= ((val & 0x0004) << 15); - setIF(proc^1, ((val & 0x0004)<<15)); + setIF(proc^1, ((cnt_r & 0x0004)<<15)); return; }