mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
c: osCreateScheduler
This commit is contained in:
@@ -42,7 +42,7 @@ glabel func_8006C3E0
|
||||
/* 06D070 8006C470 AFB90010 */ sw $t9, 0x10($sp)
|
||||
/* 06D074 8006C474 24A534E8 */ addiu $a1, %lo(D_801234E8) # addiu $a1, $a1, 0x34e8
|
||||
/* 06D078 8006C478 24841260 */ addiu $a0, %lo(D_80121260) # addiu $a0, $a0, 0x1260
|
||||
/* 06D07C 8006C47C 0C01E4D4 */ jal func_80079350
|
||||
/* 06D07C 8006C47C 0C01E4D4 */ jal osCreateScheduler
|
||||
/* 06D080 8006C480 2406000D */ li $a2, 13
|
||||
/* 06D084 8006C484 3C01800E */ lui $at, %hi(D_800DD3A0) # $at, 0x800e
|
||||
/* 06D088 8006C488 0C01BBEE */ jal func_8006EFB8
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
glabel D_800795AC
|
||||
glabel __scMain
|
||||
/* 07A1AC 800795AC 27BDFF98 */ addiu $sp, $sp, -0x68
|
||||
/* 07A1B0 800795B0 AFBE0038 */ sw $fp, 0x38($sp)
|
||||
/* 07A1B4 800795B4 AFB70034 */ sw $s7, 0x34($sp)
|
||||
@@ -1,78 +0,0 @@
|
||||
glabel func_80079350
|
||||
/* 079F50 80079350 27BDFFD8 */ addiu $sp, $sp, -0x28
|
||||
/* 079F54 80079354 AFB0001C */ sw $s0, 0x1c($sp)
|
||||
/* 079F58 80079358 AFBF0024 */ sw $ra, 0x24($sp)
|
||||
/* 079F5C 8007935C AFB10020 */ sw $s1, 0x20($sp)
|
||||
/* 079F60 80079360 AFA5002C */ sw $a1, 0x2c($sp)
|
||||
/* 079F64 80079364 AFA60030 */ sw $a2, 0x30($sp)
|
||||
/* 079F68 80079368 AFA70034 */ sw $a3, 0x34($sp)
|
||||
/* 079F6C 8007936C 240E0001 */ li $t6, 1
|
||||
/* 079F70 80079370 240F0004 */ li $t7, 4
|
||||
/* 079F74 80079374 00808025 */ move $s0, $a0
|
||||
/* 079F78 80079378 AC800274 */ sw $zero, 0x274($a0)
|
||||
/* 079F7C 8007937C AC800278 */ sw $zero, 0x278($a0)
|
||||
/* 079F80 80079380 AC800260 */ sw $zero, 0x260($a0)
|
||||
/* 079F84 80079384 AC800264 */ sw $zero, 0x264($a0)
|
||||
/* 079F88 80079388 AC800268 */ sw $zero, 0x268($a0)
|
||||
/* 079F8C 8007938C AC80026C */ sw $zero, 0x26c($a0)
|
||||
/* 079F90 80079390 AC800270 */ sw $zero, 0x270($a0)
|
||||
/* 079F94 80079394 AC800280 */ sw $zero, 0x280($a0)
|
||||
/* 079F98 80079398 AC80027C */ sw $zero, 0x27c($a0)
|
||||
/* 079F9C 8007939C A48E0000 */ sh $t6, ($a0)
|
||||
/* 079FA0 800793A0 A48F0020 */ sh $t7, 0x20($a0)
|
||||
/* 079FA4 800793A4 30F100FF */ andi $s1, $a3, 0xff
|
||||
/* 079FA8 800793A8 0C034664 */ jal osCreateViManager
|
||||
/* 079FAC 800793AC 240400FE */ li $a0, 254
|
||||
/* 079FB0 800793B0 0011C080 */ sll $t8, $s1, 2
|
||||
/* 079FB4 800793B4 0311C021 */ addu $t8, $t8, $s1
|
||||
/* 079FB8 800793B8 3C19800E */ lui $t9, %hi(D_800E3900) # $t9, 0x800e
|
||||
/* 079FBC 800793BC 27393900 */ addiu $t9, %lo(D_800E3900) # addiu $t9, $t9, 0x3900
|
||||
/* 079FC0 800793C0 0018C100 */ sll $t8, $t8, 4
|
||||
/* 079FC4 800793C4 0C034728 */ jal func_800D1CA0
|
||||
/* 079FC8 800793C8 03192021 */ addu $a0, $t8, $t9
|
||||
/* 079FCC 800793CC 0C034744 */ jal osViBlack
|
||||
/* 079FD0 800793D0 24040001 */ li $a0, 1
|
||||
/* 079FD4 800793D4 26110040 */ addiu $s1, $s0, 0x40
|
||||
/* 079FD8 800793D8 02202025 */ move $a0, $s1
|
||||
/* 079FDC 800793DC 26050058 */ addiu $a1, $s0, 0x58
|
||||
/* 079FE0 800793E0 0C032208 */ jal osCreateMesgQueue
|
||||
/* 079FE4 800793E4 24060008 */ li $a2, 8
|
||||
/* 079FE8 800793E8 26040078 */ addiu $a0, $s0, 0x78
|
||||
/* 079FEC 800793EC 26050090 */ addiu $a1, $s0, 0x90
|
||||
/* 079FF0 800793F0 0C032208 */ jal osCreateMesgQueue
|
||||
/* 079FF4 800793F4 24060008 */ li $a2, 8
|
||||
/* 079FF8 800793F8 24040004 */ li $a0, 4
|
||||
/* 079FFC 800793FC 02202825 */ move $a1, $s1
|
||||
/* 07A000 80079400 0C0332EC */ jal osSetEventMesg
|
||||
/* 07A004 80079404 2406029B */ li $a2, 667
|
||||
/* 07A008 80079408 24040009 */ li $a0, 9
|
||||
/* 07A00C 8007940C 02202825 */ move $a1, $s1
|
||||
/* 07A010 80079410 0C0332EC */ jal osSetEventMesg
|
||||
/* 07A014 80079414 2406029C */ li $a2, 668
|
||||
/* 07A018 80079418 2404000E */ li $a0, 14
|
||||
/* 07A01C 8007941C 02202825 */ move $a1, $s1
|
||||
/* 07A020 80079420 0C0332EC */ jal osSetEventMesg
|
||||
/* 07A024 80079424 2406029D */ li $a2, 669
|
||||
/* 07A028 80079428 93A6003B */ lbu $a2, 0x3b($sp)
|
||||
/* 07A02C 8007942C 02202025 */ move $a0, $s1
|
||||
/* 07A030 80079430 0C034760 */ jal osViSetEventMsg
|
||||
/* 07A034 80079434 2405029A */ li $a1, 666
|
||||
/* 07A038 80079438 8FA8002C */ lw $t0, 0x2c($sp)
|
||||
/* 07A03C 8007943C 8FA90030 */ lw $t1, 0x30($sp)
|
||||
/* 07A040 80079440 261100B0 */ addiu $s1, $s0, 0xb0
|
||||
/* 07A044 80079444 3C068008 */ lui $a2, %hi(D_800795AC) # $a2, 0x8008
|
||||
/* 07A048 80079448 24C695AC */ addiu $a2, %lo(D_800795AC) # addiu $a2, $a2, -0x6a54
|
||||
/* 07A04C 8007944C 02202025 */ move $a0, $s1
|
||||
/* 07A050 80079450 24050005 */ li $a1, 5
|
||||
/* 07A054 80079454 02003825 */ move $a3, $s0
|
||||
/* 07A058 80079458 AFA80010 */ sw $t0, 0x10($sp)
|
||||
/* 07A05C 8007945C 0C032214 */ jal osCreateThread
|
||||
/* 07A060 80079460 AFA90014 */ sw $t1, 0x14($sp)
|
||||
/* 07A064 80079464 0C032268 */ jal osStartThread
|
||||
/* 07A068 80079468 02202025 */ move $a0, $s1
|
||||
/* 07A06C 8007946C 8FBF0024 */ lw $ra, 0x24($sp)
|
||||
/* 07A070 80079470 8FB0001C */ lw $s0, 0x1c($sp)
|
||||
/* 07A074 80079474 8FB10020 */ lw $s1, 0x20($sp)
|
||||
/* 07A078 80079478 03E00008 */ jr $ra
|
||||
/* 07A07C 8007947C 27BD0028 */ addiu $sp, $sp, 0x28
|
||||
|
||||
@@ -29,7 +29,7 @@ glabel func_8007A550
|
||||
/* 07B1B4 8007A5B4 3C19800E */ lui $t9, %hi(D_800E3900) # $t9, 0x800e
|
||||
/* 07B1B8 8007A5B8 27393900 */ addiu $t9, %lo(D_800E3900) # addiu $t9, $t9, 0x3900
|
||||
/* 07B1BC 8007A5BC 0018C100 */ sll $t8, $t8, 4
|
||||
/* 07B1C0 8007A5C0 0C034728 */ jal func_800D1CA0
|
||||
/* 07B1C0 8007A5C0 0C034728 */ jal osViSetMode
|
||||
/* 07B1C4 8007A5C4 03192021 */ addu $a0, $t8, $t9
|
||||
/* 07B1C8 8007A5C8 1000007D */ b .L8007A7C0
|
||||
/* 07B1CC 8007A5CC 00000000 */ nop
|
||||
@@ -66,7 +66,7 @@ glabel func_8007A550
|
||||
/* 07B240 8007A640 ACAE0030 */ sw $t6, 0x30($a1)
|
||||
/* 07B244 8007A644 ACB80044 */ sw $t8, 0x44($a1)
|
||||
.L8007A648:
|
||||
/* 07B248 8007A648 0C034728 */ jal func_800D1CA0
|
||||
/* 07B248 8007A648 0C034728 */ jal osViSetMode
|
||||
/* 07B24C 8007A64C 00A02025 */ move $a0, $a1
|
||||
/* 07B250 8007A650 1000005B */ b .L8007A7C0
|
||||
/* 07B254 8007A654 00000000 */ nop
|
||||
@@ -94,7 +94,7 @@ glabel func_8007A550
|
||||
/* 07B2A4 8007A6A4 AC990008 */ sw $t9, 8($a0)
|
||||
/* 07B2A8 8007A6A8 AC880020 */ sw $t0, 0x20($a0)
|
||||
/* 07B2AC 8007A6AC AC820028 */ sw $v0, 0x28($a0)
|
||||
/* 07B2B0 8007A6B0 0C034728 */ jal func_800D1CA0
|
||||
/* 07B2B0 8007A6B0 0C034728 */ jal osViSetMode
|
||||
/* 07B2B4 8007A6B4 AC82003C */ sw $v0, 0x3c($a0)
|
||||
/* 07B2B8 8007A6B8 10000041 */ b .L8007A7C0
|
||||
/* 07B2BC 8007A6BC 00000000 */ nop
|
||||
@@ -122,7 +122,7 @@ glabel func_8007A550
|
||||
/* 07B30C 8007A70C AC890008 */ sw $t1, 8($a0)
|
||||
/* 07B310 8007A710 AC8A0020 */ sw $t2, 0x20($a0)
|
||||
/* 07B314 8007A714 AC820028 */ sw $v0, 0x28($a0)
|
||||
/* 07B318 8007A718 0C034728 */ jal func_800D1CA0
|
||||
/* 07B318 8007A718 0C034728 */ jal osViSetMode
|
||||
/* 07B31C 8007A71C AC82003C */ sw $v0, 0x3c($a0)
|
||||
/* 07B320 8007A720 10000027 */ b .L8007A7C0
|
||||
/* 07B324 8007A724 00000000 */ nop
|
||||
@@ -132,7 +132,7 @@ glabel func_8007A550
|
||||
/* 07B334 8007A734 3C0D800E */ lui $t5, %hi(D_800E3900) # $t5, 0x800e
|
||||
/* 07B338 8007A738 25AD3900 */ addiu $t5, %lo(D_800E3900) # addiu $t5, $t5, 0x3900
|
||||
/* 07B33C 8007A73C 256C0280 */ addiu $t4, $t3, 0x280
|
||||
/* 07B340 8007A740 0C034728 */ jal func_800D1CA0
|
||||
/* 07B340 8007A740 0C034728 */ jal osViSetMode
|
||||
/* 07B344 8007A744 018D2021 */ addu $a0, $t4, $t5
|
||||
/* 07B348 8007A748 1000001D */ b .L8007A7C0
|
||||
/* 07B34C 8007A74C 00000000 */ nop
|
||||
@@ -142,7 +142,7 @@ glabel func_8007A550
|
||||
/* 07B35C 8007A75C 3C18800E */ lui $t8, %hi(D_800E3900) # $t8, 0x800e
|
||||
/* 07B360 8007A760 27183900 */ addiu $t8, %lo(D_800E3900) # addiu $t8, $t8, 0x3900
|
||||
/* 07B364 8007A764 25CF0320 */ addiu $t7, $t6, 0x320
|
||||
/* 07B368 8007A768 0C034728 */ jal func_800D1CA0
|
||||
/* 07B368 8007A768 0C034728 */ jal osViSetMode
|
||||
/* 07B36C 8007A76C 01F82021 */ addu $a0, $t7, $t8
|
||||
/* 07B370 8007A770 10000013 */ b .L8007A7C0
|
||||
/* 07B374 8007A774 00000000 */ nop
|
||||
@@ -152,7 +152,7 @@ glabel func_8007A550
|
||||
/* 07B384 8007A784 3C09800E */ lui $t1, %hi(D_800E3900) # $t1, 0x800e
|
||||
/* 07B388 8007A788 25293900 */ addiu $t1, %lo(D_800E3900) # addiu $t1, $t1, 0x3900
|
||||
/* 07B38C 8007A78C 272802D0 */ addiu $t0, $t9, 0x2d0
|
||||
/* 07B390 8007A790 0C034728 */ jal func_800D1CA0
|
||||
/* 07B390 8007A790 0C034728 */ jal osViSetMode
|
||||
/* 07B394 8007A794 01092021 */ addu $a0, $t0, $t1
|
||||
/* 07B398 8007A798 10000009 */ b .L8007A7C0
|
||||
/* 07B39C 8007A79C 00000000 */ nop
|
||||
@@ -162,7 +162,7 @@ glabel func_8007A550
|
||||
/* 07B3AC 8007A7AC 3C0C800E */ lui $t4, %hi(D_800E3900) # $t4, 0x800e
|
||||
/* 07B3B0 8007A7B0 258C3900 */ addiu $t4, %lo(D_800E3900) # addiu $t4, $t4, 0x3900
|
||||
/* 07B3B4 8007A7B4 254B0370 */ addiu $t3, $t2, 0x370
|
||||
/* 07B3B8 8007A7B8 0C034728 */ jal func_800D1CA0
|
||||
/* 07B3B8 8007A7B8 0C034728 */ jal osViSetMode
|
||||
/* 07B3BC 8007A7BC 016C2021 */ addu $a0, $t3, $t4
|
||||
.L8007A7C0:
|
||||
/* 07B3C0 8007A7C0 0C034898 */ jal osViSetSpecialFeatures
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
glabel func_800D1CA0
|
||||
glabel osViSetMode
|
||||
/* 0D28A0 800D1CA0 27BDFFD8 */ addiu $sp, $sp, -0x28
|
||||
/* 0D28A4 800D1CA4 AFBF001C */ sw $ra, 0x1c($sp)
|
||||
/* 0D28A8 800D1CA8 AFA40028 */ sw $a0, 0x28($sp)
|
||||
@@ -4,4 +4,4 @@
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D28A0/func_800D1CA0.s")
|
||||
GLOBAL_ASM("lib/asm/non_matchings/unknown_0D28A0/osViSetMode.s")
|
||||
|
||||
@@ -1436,7 +1436,7 @@ extern u8 D_80123538;
|
||||
extern s32 D_80123544;
|
||||
extern s32 D_801234E8;
|
||||
|
||||
void func_80079350(u16*, s32*, s32, u8, s32);
|
||||
void osCreateScheduler(u16*, s32*, s32, u8, s32);
|
||||
void func_80079480(u16*, u8*, s32**, s32);
|
||||
|
||||
void func_8006C3E0(void) {
|
||||
@@ -1459,7 +1459,7 @@ void func_8006C3E0(void) {
|
||||
sp24 = 0x1C;
|
||||
}
|
||||
|
||||
func_80079350(&D_80121260, &D_801234E8, 0xD, sp24, 1);
|
||||
osCreateScheduler(&D_80121260, &D_801234E8, 0xD, sp24, 1);
|
||||
D_800DD3A0 = 0;
|
||||
if (func_8006EFB8() == 0) {
|
||||
D_800DD3A0 = 1;
|
||||
|
||||
+100
-2
@@ -3,12 +3,110 @@
|
||||
|
||||
#include "types.h"
|
||||
#include "macros.h"
|
||||
#include "libultra_internal.h"
|
||||
|
||||
#if 0
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/osCreateScheduler.s")
|
||||
#else
|
||||
#define OS_SC_RETRACE_MSG 1
|
||||
#define OS_SC_PRE_NMI_MSG 4
|
||||
#define OS_SC_MAX_MESGS 8
|
||||
|
||||
typedef struct {
|
||||
short type;
|
||||
char misc[30];
|
||||
} OSScMsg;
|
||||
|
||||
typedef struct OSScTask_s {
|
||||
struct OSScTask_s *next; /* note: this must be first */
|
||||
u32 state;
|
||||
u32 flags;
|
||||
void *framebuffer; /* used by graphics tasks */
|
||||
|
||||
OSTask list;
|
||||
OSMesgQueue *msgQ;
|
||||
OSMesg msg;
|
||||
#ifndef _FINALROM /* all #ifdef items should */
|
||||
OSTime startTime; /* remain at the end!!, or */
|
||||
OSTime totalTime; /* possible conflict if */
|
||||
#endif /* FINALROM library used with */
|
||||
} OSScTask; /* non FINALROM code */
|
||||
|
||||
|
||||
typedef struct SCClient_s {
|
||||
struct SCClient_s *next; /* next client in the list */
|
||||
OSMesgQueue *msgQ; /* where to send the frame msg */
|
||||
} OSScClient;
|
||||
|
||||
typedef struct {
|
||||
OSScMsg retraceMsg;
|
||||
OSScMsg prenmiMsg;
|
||||
OSMesgQueue interruptQ;
|
||||
OSMesg intBuf[OS_SC_MAX_MESGS];
|
||||
OSMesgQueue cmdQ;
|
||||
OSMesg cmdMsgBuf[OS_SC_MAX_MESGS];
|
||||
OSThread thread;
|
||||
OSScClient *clientList;
|
||||
OSScTask *audioListHead;
|
||||
OSScTask *gfxListHead;
|
||||
OSScTask *audioListTail;
|
||||
OSScTask *gfxListTail;
|
||||
OSScTask *curRSPTask;
|
||||
OSScTask *curRDPTask;
|
||||
u32 frameCount;
|
||||
s32 doAudio;
|
||||
} OSSched;
|
||||
|
||||
typedef struct{
|
||||
u8 pad00[0x50];
|
||||
}unk800E3900;
|
||||
|
||||
extern OSViMode D_800E3900[];//osViModeTable;
|
||||
|
||||
void __scMain(void);
|
||||
|
||||
void osCreateScheduler(OSSched *sc, void *stack, OSPri priority, u8 mode, u8 numFields){
|
||||
sc->curRSPTask = 0;
|
||||
sc->curRDPTask = 0;
|
||||
sc->clientList = 0;
|
||||
|
||||
sc->audioListHead = 0;
|
||||
sc->gfxListHead = 0;
|
||||
sc->audioListTail = 0;
|
||||
sc->gfxListTail = 0;
|
||||
sc->doAudio = 0;
|
||||
sc->frameCount = 0;
|
||||
sc->retraceMsg.type = OS_SC_RETRACE_MSG; /* sent to apps */
|
||||
sc->prenmiMsg.type = OS_SC_PRE_NMI_MSG;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Set up video manager, listen for Video, RSP, and RDP interrupts
|
||||
*/
|
||||
osCreateViManager(OS_PRIORITY_VIMGR);
|
||||
osViSetMode(&D_800E3900[mode]);
|
||||
osViBlack(TRUE);
|
||||
|
||||
osCreateMesgQueue(&sc->interruptQ, sc->intBuf, OS_SC_MAX_MESGS);
|
||||
osCreateMesgQueue(&sc->cmdQ, sc->cmdMsgBuf, OS_SC_MAX_MESGS);
|
||||
|
||||
osSetEventMesg(OS_EVENT_SP, &sc->interruptQ, (OSMesg)667);
|
||||
osSetEventMesg(OS_EVENT_DP, &sc->interruptQ, (OSMesg)668);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &sc->interruptQ, (OSMesg)669);
|
||||
|
||||
osViSetEventMsg(&sc->interruptQ, (OSMesg)666, numFields);
|
||||
|
||||
|
||||
osCreateThread(&sc->thread, 5, __scMain, (void *)sc, stack, priority);
|
||||
osStartThread(&sc->thread);
|
||||
}
|
||||
#endif
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079350.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079480.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079574.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_8007957C.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/D_800795AC.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/__scMain.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079760.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079818.s")
|
||||
GLOBAL_ASM("asm/non_matchings/unknown_079F50/func_80079B44.s")
|
||||
|
||||
+1
-1
@@ -42,7 +42,7 @@ alAuxBusParam = 0x800659D4;
|
||||
D_80065D40 = 0x80065D40;
|
||||
D_80065D98 = 0x80065D98;
|
||||
D_8006C330 = 0x8006C330;
|
||||
D_800795AC = 0x800795AC;
|
||||
__scMain = 0x800795AC;
|
||||
D_8008F618 = 0x8008F618;
|
||||
D_800B6FC4 = 0x800B6FC4;
|
||||
func_800C7340 = 0x800C7340;
|
||||
|
||||
Reference in New Issue
Block a user