mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Attempt to match __scMain
This commit is contained in:
@@ -68,10 +68,6 @@ s32 D_80126128[18];
|
||||
|
||||
/*******************************/
|
||||
|
||||
void __scYield(OSSched *sc);
|
||||
void __scMain(void);
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
|
||||
void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 numFields) {
|
||||
sc->curRSPTask = 0;
|
||||
sc->curRDPTask = 0;
|
||||
@@ -154,7 +150,63 @@ void func_80079584(f32 *arg0, f32 *arg1, f32 *arg2) {
|
||||
*arg2 = D_800DE74C;
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
static void __scMain(void *arg) {
|
||||
OSMesg msg = NULL;
|
||||
OSSched *sc = (OSSched *)arg;
|
||||
OSScClient *client;
|
||||
//static int count = 0;
|
||||
s32 state = 0;
|
||||
OSScTask *sp = 0;
|
||||
OSScTask *dp = 0;
|
||||
|
||||
while (1) {
|
||||
loop1:
|
||||
do {
|
||||
osRecvMesg(&sc->interruptQ, (OSMesg *)&msg, OS_MESG_BLOCK);
|
||||
|
||||
switch ((int) msg) {
|
||||
case (VIDEO_MSG):
|
||||
__scHandleRetrace(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
|
||||
case (RSP_DONE_MSG):
|
||||
__scHandleRSP(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
|
||||
case (RDP_DONE_MSG):
|
||||
__scHandleRDP(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
|
||||
case (99):
|
||||
func_80079760(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
|
||||
case (PRE_NMI_MSG):
|
||||
/*
|
||||
* notify audio and graphics threads to fade out
|
||||
*/
|
||||
for (client = sc->clientList; client != 0; client = client->next) {
|
||||
osSendMesg(client->msgQ, (OSMesg) &sc->prenmiMsg,
|
||||
OS_MESG_NOBLOCK);
|
||||
}
|
||||
goto loop1;
|
||||
break;
|
||||
}
|
||||
__scAppendList(sc, (OSScTask *) msg);
|
||||
state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0);
|
||||
} while (__scSchedule(sc, &sp, &dp, state) == state);
|
||||
__scExec(sc, sp, dp);
|
||||
goto loop1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scMain.s")
|
||||
#endif
|
||||
|
||||
void func_80079760(OSSched *sc) {
|
||||
s32 state;
|
||||
|
||||
@@ -99,7 +99,11 @@ extern OSViMode osViModeTable[];
|
||||
/*******************************/
|
||||
|
||||
void __scYield(OSSched *sc);
|
||||
void __scMain(void);
|
||||
#ifdef NON_MATCHING
|
||||
static void __scMain(void *arg);
|
||||
#else
|
||||
void __scMain(void *arg);
|
||||
#endif
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 numFields);
|
||||
void osScAddClient(OSSched *sc, OSScClient *c, OSMesgQueue *msgQ, u8 arg3);
|
||||
@@ -109,9 +113,11 @@ OSMesgQueue *osScGetInterruptQ(OSSched *sc);
|
||||
void func_80079584(f32 *arg0, f32 *arg1, f32 *arg2);
|
||||
void func_80079760(OSSched *sc);
|
||||
void __scHandleRDP(OSSched *sc);
|
||||
void __scHandleRSP(OSSched *sc);
|
||||
OSScTask *__scTaskReady(OSScTask *t);
|
||||
s32 __scTaskComplete(OSSched *sc, OSScTask *t);
|
||||
void __scAppendList(OSSched *sc, OSScTask *t);
|
||||
void __scExec(OSSched *sc, OSScTask *sp, OSScTask *dp);
|
||||
void __scHandleRetrace(OSSched *sc);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user