static __fi void HandleIOPTransfer() { if (sif2.iop.counter <= 0) // If there's no more to transfer { if (sif2.iop.end) { // Stop transferring iop, and signal an interrupt. done = true; EndIOP(); } else { // Read Fifo into an iop tag, and transfer it to hw_dma9. // And presumably process it. ProcessIOPTag(); } } else { // Write IOP to Fifo. if (sif2.fifo.sif_free() > 0) { WriteIOPtoFifo(); } else DevCon.Warning("Nothing free!"); } }
// Handle the IOP transfer. static __fi void HandleIOPTransfer() { if (sif1.iop.counter > 0) { if (sif1.fifo.size > 0) { WriteFifoToIOP(); } } if (sif1.iop.counter <= 0) { if (sif1.iop.end) { done = true; EndIOP(); } else if (sif1.fifo.size >= 4) { done = false; SIFIOPReadTag(); } } }