mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Matched __scMain
This commit is contained in:
@@ -1,119 +0,0 @@
|
||||
glabel __scMain
|
||||
/* 07A1AC 800795AC 27BDFF98 */ addiu $sp, $sp, -0x68
|
||||
/* 07A1B0 800795B0 AFBE0038 */ sw $fp, 0x38($sp)
|
||||
/* 07A1B4 800795B4 AFB70034 */ sw $s7, 0x34($sp)
|
||||
/* 07A1B8 800795B8 AFB60030 */ sw $s6, 0x30($sp)
|
||||
/* 07A1BC 800795BC AFB5002C */ sw $s5, 0x2c($sp)
|
||||
/* 07A1C0 800795C0 AFB40028 */ sw $s4, 0x28($sp)
|
||||
/* 07A1C4 800795C4 AFB30024 */ sw $s3, 0x24($sp)
|
||||
/* 07A1C8 800795C8 AFB20020 */ sw $s2, 0x20($sp)
|
||||
/* 07A1CC 800795CC 00809025 */ move $s2, $a0
|
||||
/* 07A1D0 800795D0 AFBF003C */ sw $ra, 0x3c($sp)
|
||||
/* 07A1D4 800795D4 AFB1001C */ sw $s1, 0x1c($sp)
|
||||
/* 07A1D8 800795D8 AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* 07A1DC 800795DC AFA00064 */ sw $zero, 0x64($sp)
|
||||
/* 07A1E0 800795E0 AFA00054 */ sw $zero, 0x54($sp)
|
||||
/* 07A1E4 800795E4 AFA00050 */ sw $zero, 0x50($sp)
|
||||
/* 07A1E8 800795E8 24930040 */ addiu $s3, $a0, 0x40
|
||||
/* 07A1EC 800795EC 27B40064 */ addiu $s4, $sp, 0x64
|
||||
/* 07A1F0 800795F0 24150063 */ li $s5, 99
|
||||
/* 07A1F4 800795F4 2416029A */ li $s6, 666
|
||||
/* 07A1F8 800795F8 2417029B */ li $s7, 667
|
||||
/* 07A1FC 800795FC 241E029C */ li $fp, 668
|
||||
/* 07A200 80079600 02602025 */ move $a0, $s3
|
||||
.L80079604:
|
||||
/* 07A204 80079604 02802825 */ move $a1, $s4
|
||||
/* 07A208 80079608 0C0322EC */ jal osRecvMesg
|
||||
/* 07A20C 8007960C 24060001 */ li $a2, 1
|
||||
/* 07A210 80079610 8FAE0064 */ lw $t6, 0x64($sp)
|
||||
/* 07A214 80079614 00000000 */ nop
|
||||
/* 07A218 80079618 11D50017 */ beq $t6, $s5, .L80079678
|
||||
/* 07A21C 8007961C 00000000 */ nop
|
||||
/* 07A220 80079620 11D60009 */ beq $t6, $s6, .L80079648
|
||||
/* 07A224 80079624 00000000 */ nop
|
||||
/* 07A228 80079628 11D7000B */ beq $t6, $s7, .L80079658
|
||||
/* 07A22C 8007962C 00000000 */ nop
|
||||
/* 07A230 80079630 11DE000D */ beq $t6, $fp, .L80079668
|
||||
/* 07A234 80079634 2401029D */ li $at, 669
|
||||
/* 07A238 80079638 11C10013 */ beq $t6, $at, .L80079688
|
||||
/* 07A23C 8007963C 00000000 */ nop
|
||||
/* 07A240 80079640 10000020 */ b .L800796C4
|
||||
/* 07A244 80079644 8FA50064 */ lw $a1, 0x64($sp)
|
||||
.L80079648:
|
||||
/* 07A248 80079648 0C01E606 */ jal __scHandleRetrace
|
||||
/* 07A24C 8007964C 02402025 */ move $a0, $s2
|
||||
/* 07A250 80079650 1000FFEC */ b .L80079604
|
||||
/* 07A254 80079654 02602025 */ move $a0, $s3
|
||||
.L80079658:
|
||||
/* 07A258 80079658 0C01E6D1 */ jal __scHandleRSP
|
||||
/* 07A25C 8007965C 02402025 */ move $a0, $s2
|
||||
/* 07A260 80079660 1000FFE8 */ b .L80079604
|
||||
/* 07A264 80079664 02602025 */ move $a0, $s3
|
||||
.L80079668:
|
||||
/* 07A268 80079668 0C01E757 */ jal __scHandleRDP
|
||||
/* 07A26C 8007966C 02402025 */ move $a0, $s2
|
||||
/* 07A270 80079670 1000FFE4 */ b .L80079604
|
||||
/* 07A274 80079674 02602025 */ move $a0, $s3
|
||||
.L80079678:
|
||||
/* 07A278 80079678 0C01E5D8 */ jal func_80079760
|
||||
/* 07A27C 8007967C 02402025 */ move $a0, $s2
|
||||
/* 07A280 80079680 1000FFE0 */ b .L80079604
|
||||
/* 07A284 80079684 02602025 */ move $a0, $s3
|
||||
.L80079688:
|
||||
/* 07A288 80079688 8E500260 */ lw $s0, 0x260($s2)
|
||||
/* 07A28C 8007968C 26510020 */ addiu $s1, $s2, 0x20
|
||||
/* 07A290 80079690 1200FFDC */ beqz $s0, .L80079604
|
||||
/* 07A294 80079694 02602025 */ move $a0, $s3
|
||||
.L80079698:
|
||||
/* 07A298 80079698 8E040008 */ lw $a0, 8($s0)
|
||||
/* 07A29C 8007969C 02202825 */ move $a1, $s1
|
||||
/* 07A2A0 800796A0 0C03238C */ jal osSendMesg
|
||||
/* 07A2A4 800796A4 00003025 */ move $a2, $zero
|
||||
/* 07A2A8 800796A8 8E100004 */ lw $s0, 4($s0)
|
||||
/* 07A2AC 800796AC 00000000 */ nop
|
||||
/* 07A2B0 800796B0 1600FFF9 */ bnez $s0, .L80079698
|
||||
/* 07A2B4 800796B4 00000000 */ nop
|
||||
/* 07A2B8 800796B8 1000FFD2 */ b .L80079604
|
||||
/* 07A2BC 800796BC 02602025 */ move $a0, $s3
|
||||
/* 07A2C0 800796C0 8FA50064 */ lw $a1, 0x64($sp)
|
||||
.L800796C4:
|
||||
/* 07A2C4 800796C4 0C01E7D0 */ jal __scAppendList
|
||||
/* 07A2C8 800796C8 02402025 */ move $a0, $s2
|
||||
/* 07A2CC 800796CC 8E4F0274 */ lw $t7, 0x274($s2)
|
||||
/* 07A2D0 800796D0 8E480278 */ lw $t0, 0x278($s2)
|
||||
/* 07A2D4 800796D4 2DF80001 */ sltiu $t8, $t7, 1
|
||||
/* 07A2D8 800796D8 0018C840 */ sll $t9, $t8, 1
|
||||
/* 07A2DC 800796DC 2D090001 */ sltiu $t1, $t0, 1
|
||||
/* 07A2E0 800796E0 03298025 */ or $s0, $t9, $t1
|
||||
/* 07A2E4 800796E4 02003825 */ move $a3, $s0
|
||||
/* 07A2E8 800796E8 02402025 */ move $a0, $s2
|
||||
/* 07A2EC 800796EC 27A50054 */ addiu $a1, $sp, 0x54
|
||||
/* 07A2F0 800796F0 0C01E835 */ jal __scSchedule
|
||||
/* 07A2F4 800796F4 27A60050 */ addiu $a2, $sp, 0x50
|
||||
/* 07A2F8 800796F8 1050FFC2 */ beq $v0, $s0, .L80079604
|
||||
/* 07A2FC 800796FC 02602025 */ move $a0, $s3
|
||||
/* 07A300 80079700 8FA50054 */ lw $a1, 0x54($sp)
|
||||
/* 07A304 80079704 8FA60050 */ lw $a2, 0x50($sp)
|
||||
/* 07A308 80079708 0C01E7EA */ jal __scExec
|
||||
/* 07A30C 8007970C 02402025 */ move $a0, $s2
|
||||
/* 07A310 80079710 1000FFBC */ b .L80079604
|
||||
/* 07A314 80079714 02602025 */ move $a0, $s3
|
||||
/* 07A318 80079718 00000000 */ nop
|
||||
/* 07A31C 8007971C 00000000 */ nop
|
||||
/* 07A320 80079720 00000000 */ nop
|
||||
/* 07A324 80079724 00000000 */ nop
|
||||
/* 07A328 80079728 00000000 */ nop
|
||||
/* 07A32C 8007972C 00000000 */ nop
|
||||
/* 07A330 80079730 8FBF003C */ lw $ra, 0x3c($sp)
|
||||
/* 07A334 80079734 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* 07A338 80079738 8FB1001C */ lw $s1, 0x1c($sp)
|
||||
/* 07A33C 8007973C 8FB20020 */ lw $s2, 0x20($sp)
|
||||
/* 07A340 80079740 8FB30024 */ lw $s3, 0x24($sp)
|
||||
/* 07A344 80079744 8FB40028 */ lw $s4, 0x28($sp)
|
||||
/* 07A348 80079748 8FB5002C */ lw $s5, 0x2c($sp)
|
||||
/* 07A34C 8007974C 8FB60030 */ lw $s6, 0x30($sp)
|
||||
/* 07A350 80079750 8FB70034 */ lw $s7, 0x34($sp)
|
||||
/* 07A354 80079754 8FBE0038 */ lw $fp, 0x38($sp)
|
||||
/* 07A358 80079758 03E00008 */ jr $ra
|
||||
/* 07A35C 8007975C 27BD0068 */ addiu $sp, $sp, 0x68
|
||||
|
||||
+56
-63
@@ -150,63 +150,52 @@ 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);
|
||||
osRecvMesg(&sc->interruptQ, (OSMesg *)&msg, OS_MESG_BLOCK);
|
||||
switch ((int) msg) {
|
||||
case (VIDEO_MSG):
|
||||
__scHandleRetrace(sc);
|
||||
break;
|
||||
|
||||
switch ((int) msg) {
|
||||
case (VIDEO_MSG):
|
||||
__scHandleRetrace(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
case (RSP_DONE_MSG):
|
||||
__scHandleRSP(sc);
|
||||
break;
|
||||
|
||||
case (RSP_DONE_MSG):
|
||||
__scHandleRSP(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
case (RDP_DONE_MSG):
|
||||
__scHandleRDP(sc);
|
||||
break;
|
||||
|
||||
case (RDP_DONE_MSG):
|
||||
__scHandleRDP(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
case (99):
|
||||
func_80079760(sc);
|
||||
break;
|
||||
|
||||
case (99):
|
||||
func_80079760(sc);
|
||||
goto loop1;
|
||||
break;
|
||||
|
||||
case (PRE_NMI_MSG):
|
||||
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;
|
||||
for (client = sc->clientList; client != 0; client = client->next) {
|
||||
osSendMesg(client->msgQ, (OSMesg) &sc->prenmiMsg,
|
||||
OS_MESG_NOBLOCK);
|
||||
};
|
||||
break;
|
||||
|
||||
default:
|
||||
__scAppendList(sc, (OSScTask *) msg);
|
||||
state = ((sc->curRSPTask == 0) << 1) | (sc->curRDPTask == 0);
|
||||
if (__scSchedule(sc, &sp, &dp, state) != state)
|
||||
__scExec(sc, sp, dp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("lib/asm/non_matchings/sched/__scMain.s")
|
||||
#endif
|
||||
|
||||
void func_80079760(OSSched *sc) {
|
||||
s32 state;
|
||||
@@ -416,38 +405,42 @@ OSScTask *__scTaskReady(OSScTask *t) {
|
||||
}
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* __scTaskComplete checks to see if the task is complete (all RCP
|
||||
* operations have been performed) and sends the done message to the
|
||||
* client if it is.
|
||||
*/
|
||||
s32 __scTaskComplete(OSSched *sc, OSScTask *t) {
|
||||
int rv;
|
||||
int firsttime = 1;
|
||||
static int firsttime = 1;
|
||||
|
||||
if ((t->state & 0x03) == 0) { /* none of the needs bits set */
|
||||
if ((t->state & OS_SC_RCP_MASK) == 0) { /* none of the needs bits set */
|
||||
|
||||
assert (t->msgQ);
|
||||
if(t->msgQ){
|
||||
|
||||
//rv = osSendMesg(t->msgQ, &t->msg, OS_MESG_BLOCK);
|
||||
#ifndef _FINALROM
|
||||
t->totalTime += osGetTime() - t->startTime;
|
||||
#endif
|
||||
|
||||
//if (t->list.t.type == M_GFXTASK) {
|
||||
if ((t->flags & 0x20) /*&& (t->flags & OS_SC_LAST_TASK)*/){
|
||||
if(sc->doAudio < 2){
|
||||
sc->frameCount = t;
|
||||
}
|
||||
else{
|
||||
if(t->startTime == 0){
|
||||
osSendMesg(t->msgQ, t->msg, 1);
|
||||
}
|
||||
}
|
||||
//if (firsttime) {
|
||||
// osViBlack(FALSE);
|
||||
// firsttime = 0;
|
||||
//}
|
||||
//osViSwapBuffer(t->framebuffer);
|
||||
}
|
||||
//}
|
||||
}
|
||||
#ifdef SC_LOGGING
|
||||
osLogEvent(l, 504, 1, t);
|
||||
#endif
|
||||
rv = osSendMesg(t->msgQ, t->msg, OS_MESG_BLOCK);
|
||||
|
||||
if (t->list.t.type == M_GFXTASK) {
|
||||
if ((t->flags & OS_SC_SWAPBUFFER) && (t->flags & OS_SC_LAST_TASK)){
|
||||
if (firsttime) {
|
||||
osViBlack(FALSE);
|
||||
firsttime = 0;
|
||||
}
|
||||
osViSwapBuffer(t->framebuffer);
|
||||
#ifdef SC_LOGGING
|
||||
osLogEvent(l, 525, 1, t->framebuffer);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
|
||||
@@ -99,7 +99,7 @@ extern OSViMode osViModeTable[];
|
||||
/*******************************/
|
||||
|
||||
void __scYield(OSSched *sc);
|
||||
#ifdef NON_MATCHING
|
||||
#if 1
|
||||
static void __scMain(void *arg);
|
||||
#else
|
||||
void __scMain(void *arg);
|
||||
|
||||
Reference in New Issue
Block a user