GPUCMD_AddSingleParam(0x000F0111, 0x00000001);
GPUCMD_AddSingleParam(0x000F0110, 0x00000001);
GPUCMD_AddSingleParam(0x000F0010, 0x12345678);
+ GPUCMD_AddSingleParam(0x000F0010, 0x12345678); //not the cleanest way of guaranteeing 0x10-byte size but whatever good enough for now
}
extern u32 gpuResetSequence[];
return -1;
}
-//hm
-static inline u8 minu8(u8 a, u8 b)
-{
- if(a<b)return a;
- return b;
-}
-static inline u8 maxu8(u8 a, u8 b)
-{
- if(a<b)return b;
- return a;
-}
-
void DVLP_SendCode(DVLP_s* dvlp)
{
if(!dvlp)return;
GPUCMD_AddSingleParam(0x000F02CB, 0x00000000);
int i;
- // for(i=0;i<dvlp->codeSize;i+=0x80)GPUCMD_Add(0x000F02CC, &dvlp->codeData[i], ((dvlp->codeSize-i)<0x80)?(dvlp->codeSize-i):0x80);
- for(i=0;i<dvlp->codeSize;i+=0x80)GPUCMD_Add(0x000F02CC, &dvlp->codeData[i], maxu8(minu8(dvlp->codeSize-i,0x80),0x37)); //not sure why, but anything smaller than 0x37 seems to break stuff atm...
+ for(i=0;i<dvlp->codeSize;i+=0x80)GPUCMD_Add(0x000F02CC, &dvlp->codeData[i], ((dvlp->codeSize-i)<0x80)?(dvlp->codeSize-i):0x80);
GPUCMD_AddSingleParam(0x000F02BF, 0x00000001);
}
Handle gspGpuHandle=0;
Handle gspEvents[GSPEVENT_MAX];
+u32 gspEventCounts[GSPEVENT_MAX];
u64 gspEventStack[GSP_EVENT_STACK_SIZE/sizeof(u64)]; //u64 so that it's 8-byte aligned
volatile bool gspRunEvents;
Handle gspEventThread;
if (cur >= 0x34) cur -= 0x34;
if (curEvt >= GSPEVENT_MAX) continue;
svcSignalEvent(gspEvents[curEvt]);
+ gspEventCounts[curEvt]++;
}
gspEventData[0] = last;