Make "PS2 Invaders v1.6" by "InPulSe Team" work.
Posted on 2005-10-02 00:00:00
This demo has nothing out of the ordinary graphics wise, but it uses the IOP for sound, controller input and memory card saving. I don't know much about the mechanics of the IOP and the communication between the EE and IOP yet.

I've been spending my time reading about it and that's what I can say from my reading session:

- Both sides have interrupt handlers set on the DMAC interrupt line to be informed when new data has arrived.
- DMA channel 5 is used for incoming messages by the EE.
- DMA channels 6 or 7 is used for incoming messages by the IOP.
- On the EE side, this program calls SifSendCmd system call to send data to the IOP.
- There's a set of registers on the IOP that are accessible through system calls on the EE side (SifGetReg and SifSetReg). These registers contain the address of the DMA buffer on the IOP side amongst other things.

That's pretty much what I can say about it right now. I'll keep on reading on the next days to understand it better.

I've had to implement DI and MFC0 in the EE core. The program seems to test the 16th bit of the Status register, which I'm not sure about its use. It's marked as "implementation specific" in the general COP0 documentation from MIPS.

There's also a missing instruction (JALR) which prevents the demo from showing stuff, so no screen shots for now.