So I want to run some of my code on the slave SH2. I don't care about being able to send commands to it and whatnot, I just want it to enter a specific function that contains an endless loop where it fills up a VDP1 list every frame. Anyway, it's not working properly (neither in Yabause or on a real Saturn). Perhaps someone here has a clue about why?
Code:
#define SMPC_SSHON 1
#define SMPC_SSHOFF 2
#define SMPC_SF ((vu16*)0x20100063)
#define SMPC_COMREG ((vu16*)0x2010001F)
#define SETSINT(_Num_, _Hdr_) ((**(volatile void(**)(uint32, void*))0x6000310)((_Num_), (_Hdr_)))
void SlaveCPUmain();
void InitSlaveCPU()
{
int i;
while (*SMPC_SF & 1);
*SMPC_SF = 1;
*SMPC_COMREG = SMPC_SSHOFF;
while (*SMPC_SF & 1);
for (i=0; i<10; i++);
SETSINT(0x94, (void*)&SlaveCPUmain);
*SMPC_SF = 1;
*SMPC_COMREG = SMPC_SSHON;
while (*SMPC_SF & 1);
}
void SlaveCPUmain()
{
for (;;)
{
// do stuff
}
}