mirror of
https://gitlab.com/ryandwyer/perfect-dark
synced 2026-09-08 19:22:27 -04:00
Decompile schedCreateThread
This commit is contained in:
+18
-54
@@ -446,65 +446,29 @@ void idleproc(void *data)
|
||||
|
||||
void idleCreateThread(void)
|
||||
{
|
||||
osCreateThread(&g_IdleThread, THREAD_IDLE, idleproc, NULL, allocateStack(THREAD_IDLE, 64), 0);
|
||||
osCreateThread(&g_IdleThread, THREAD_IDLE, idleproc, NULL, allocateStack(THREAD_IDLE, STACKSIZE_IDLE), THREADPRI_IDLE);
|
||||
osStartThread(&g_IdleThread);
|
||||
}
|
||||
|
||||
void rmonCreateThread(void)
|
||||
{
|
||||
osCreateThread(&g_RmonThread, 0, rmonproc, NULL, allocateStack(0, 0x300), 250);
|
||||
osCreateThread(&g_RmonThread, THREAD_RMON, rmonproc, NULL, allocateStack(THREAD_RMON, STACKSIZE_RMON), THREADPRI_RMON);
|
||||
osStartThread(&g_RmonThread);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
glabel func000019f4
|
||||
/* 19f4: 27bdffe8 */ addiu $sp,$sp,-24
|
||||
/* 19f8: afbf0014 */ sw $ra,0x14($sp)
|
||||
/* 19fc: 3c048009 */ lui $a0,%hi(var8008db30)
|
||||
/* 1a00: 3c058009 */ lui $a1,%hi(var8008db48)
|
||||
/* 1a04: 24a5db48 */ addiu $a1,$a1,%lo(var8008db48)
|
||||
/* 1a08: 2484db30 */ addiu $a0,$a0,%lo(var8008db30)
|
||||
/* 1a0c: 0c0120d0 */ jal osCreateMesgQueue
|
||||
/* 1a10: 24060020 */ addiu $a2,$zero,0x20
|
||||
/* 1a14: 3c0e8000 */ lui $t6,0x8000
|
||||
/* 1a18: 8dce0300 */ lw $t6,0x300($t6)
|
||||
/* 1a1c: 24010002 */ addiu $at,$zero,0x2
|
||||
/* 1a20: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 1a24: 15c1000a */ bne $t6,$at,.L00001a50
|
||||
/* 1a28: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 1a2c: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 1a30: 3c058009 */ lui $a1,%hi(var8008d900)
|
||||
/* 1a34: 24a5d900 */ addiu $a1,$a1,%lo(var8008d900)
|
||||
/* 1a38: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 1a3c: 2406001e */ addiu $a2,$zero,0x1e
|
||||
/* 1a40: 0c000713 */ jal osCreateScheduler
|
||||
/* 1a44: 24070001 */ addiu $a3,$zero,0x1
|
||||
/* 1a48: 10000006 */ b .L00001a64
|
||||
/* 1a4c: 00000000 */ nop
|
||||
.L00001a50:
|
||||
/* 1a50: 3c058009 */ lui $a1,%hi(var8008d900)
|
||||
/* 1a54: 24a5d900 */ addiu $a1,$a1,%lo(var8008d900)
|
||||
/* 1a58: 24060002 */ addiu $a2,$zero,0x2
|
||||
/* 1a5c: 0c000713 */ jal osCreateScheduler
|
||||
/* 1a60: 24070001 */ addiu $a3,$zero,0x1
|
||||
.L00001a64:
|
||||
/* 1a64: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 1a68: 3c058009 */ lui $a1,%hi(var8008dca8)
|
||||
/* 1a6c: 3c068009 */ lui $a2,%hi(var8008db30)
|
||||
/* 1a70: 24c6db30 */ addiu $a2,$a2,%lo(var8008db30)
|
||||
/* 1a74: 24a5dca8 */ addiu $a1,$a1,%lo(var8008dca8)
|
||||
/* 1a78: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 1a7c: 0c00078c */ jal osScAddClient
|
||||
/* 1a80: 00003825 */ or $a3,$zero,$zero
|
||||
/* 1a84: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 1a88: 0c0007a3 */ jal osScGetCmdQ
|
||||
/* 1a8c: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 1a90: 8fbf0014 */ lw $ra,0x14($sp)
|
||||
/* 1a94: 3c018009 */ lui $at,%hi(var8008dbc8)
|
||||
/* 1a98: ac22dbc8 */ sw $v0,%lo(var8008dbc8)($at)
|
||||
/* 1a9c: 03e00008 */ jr $ra
|
||||
/* 1aa0: 27bd0018 */ addiu $sp,$sp,0x18
|
||||
);
|
||||
void schedCreateThread(void)
|
||||
{
|
||||
osCreateMesgQueue(&var8008db30, &var8008db48, 32);
|
||||
|
||||
if (osTvType == OS_TV_MPAL) {
|
||||
osCreateScheduler(&g_SchedThread, &var8008d900, OS_VI_MPAL_LAN1, 1);
|
||||
} else {
|
||||
osCreateScheduler(&g_SchedThread, &var8008d900, OS_VI_NTSC_LAN1, 1);
|
||||
}
|
||||
|
||||
osScAddClient(&g_SchedThread, &var8008dca8, &var8008db30, 0);
|
||||
g_SchedCmdQ = osScGetCmdQ(&g_SchedThread);
|
||||
}
|
||||
|
||||
void mainproc(u32 value)
|
||||
{
|
||||
@@ -514,11 +478,11 @@ void mainproc(u32 value)
|
||||
rmonCreateThread();
|
||||
|
||||
if (func00012f30()) {
|
||||
osStopThread(0);
|
||||
osStopThread(NULL);
|
||||
}
|
||||
|
||||
osSetThreadPri(0, 10);
|
||||
func000019f4();
|
||||
osSetThreadPri(0, THREADPRI_MAIN);
|
||||
schedCreateThread();
|
||||
mainEntry();
|
||||
}
|
||||
|
||||
|
||||
+7
-7
@@ -44,15 +44,15 @@ glabel resetproc
|
||||
/* 2e84: 24040001 */ addiu $a0,$zero,0x1
|
||||
/* 2e88: 0c012448 */ jal func00049120
|
||||
/* 2e8c: 00000000 */ nop
|
||||
/* 2e90: 3c018009 */ lui $at,%hi(var8008fdf0)
|
||||
/* 2e94: ac22fdf0 */ sw $v0,%lo(var8008fdf0)($at)
|
||||
/* 2e90: 3c018009 */ lui $at,%hi(g_ResetSp)
|
||||
/* 2e94: ac22fdf0 */ sw $v0,%lo(g_ResetSp)($at)
|
||||
/* 2e98: 0c012448 */ jal func00049120
|
||||
/* 2e9c: ac23fdf4 */ sw $v1,-0x20c($at)
|
||||
/* 2ea0: 3c198009 */ lui $t9,%hi(var8008fdf4)
|
||||
/* 2ea4: 8f39fdf4 */ lw $t9,%lo(var8008fdf4)($t9)
|
||||
/* 2ea8: 3c188009 */ lui $t8,%hi(var8008fdf0)
|
||||
/* 2ea8: 3c188009 */ lui $t8,%hi(g_ResetSp)
|
||||
/* 2eac: 3c010022 */ lui $at,0x22
|
||||
/* 2eb0: 8f18fdf0 */ lw $t8,%lo(var8008fdf0)($t8)
|
||||
/* 2eb0: 8f18fdf0 */ lw $t8,%lo(g_ResetSp)($t8)
|
||||
/* 2eb4: 3421add7 */ ori $at,$at,0xadd7
|
||||
/* 2eb8: 03214821 */ addu $t1,$t9,$at
|
||||
/* 2ebc: 0121082b */ sltu $at,$t1,$at
|
||||
@@ -70,9 +70,9 @@ glabel resetproc
|
||||
/* 2ee8: 00000000 */ nop
|
||||
/* 2eec: 3c0b8009 */ lui $t3,%hi(var8008fdf4)
|
||||
/* 2ef0: 8d6bfdf4 */ lw $t3,%lo(var8008fdf4)($t3)
|
||||
/* 2ef4: 3c0a8009 */ lui $t2,%hi(var8008fdf0)
|
||||
/* 2ef4: 3c0a8009 */ lui $t2,%hi(g_ResetSp)
|
||||
/* 2ef8: 3c010022 */ lui $at,0x22
|
||||
/* 2efc: 8d4afdf0 */ lw $t2,%lo(var8008fdf0)($t2)
|
||||
/* 2efc: 8d4afdf0 */ lw $t2,%lo(g_ResetSp)($t2)
|
||||
/* 2f00: 3421add7 */ ori $at,$at,0xadd7
|
||||
/* 2f04: 01616821 */ addu $t5,$t3,$at
|
||||
/* 2f08: 01a1082b */ sltu $at,$t5,$at
|
||||
@@ -109,6 +109,6 @@ void resetThreadCreate(void)
|
||||
{
|
||||
osCreateMesgQueue(&g_ResetMesgQueue, &g_ResetMesg, 10);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &g_ResetMesgQueue, (OSMesg) 669);
|
||||
osCreateThread(&g_ResetThread, THREAD_RESET, resetproc, 0, &var8008fdf0, 11);
|
||||
osCreateThread(&g_ResetThread, THREAD_RESET, resetproc, 0, &g_ResetSp, THREADPRI_RESET);
|
||||
osStartThread(&g_ResetThread);
|
||||
}
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ void osCreateScheduler(OSSched *sc, void *stack, u8 mode, u32 numFields)
|
||||
|
||||
osViSetEvent(&sc->interruptQ, (OSMesg)VIDEO_MSG, numFields);
|
||||
osCreateLog();
|
||||
osCreateThread(sc->thread, THREAD_SCHED, &__scMain, sc, allocateStack(THREAD_SCHED, 0x400), 30);
|
||||
osCreateThread(sc->thread, THREAD_SCHED, &__scMain, sc, allocateStack(THREAD_SCHED, STACKSIZE_SCHED), THREADPRI_SCHED);
|
||||
osStartThread(sc->thread);
|
||||
}
|
||||
|
||||
|
||||
+5
-59
@@ -2566,7 +2566,7 @@ u32 var8008db24 = 0;
|
||||
u32 var8008db28 = 0;
|
||||
u32 var8008db2c = 0;
|
||||
OSMesgQueue var8008db30 = {0};
|
||||
u32 var8008db48 = 0;
|
||||
OSMesg var8008db48 = NULL;
|
||||
u32 var8008db4c = 0;
|
||||
u32 var8008db50 = 0;
|
||||
u32 var8008db54 = 0;
|
||||
@@ -2598,64 +2598,10 @@ u32 var8008dbb8 = 0;
|
||||
u32 var8008dbbc = 0;
|
||||
u32 var8008dbc0 = 0;
|
||||
u32 var8008dbc4 = 0;
|
||||
u32 var8008dbc8 = 0;
|
||||
OSMesgQueue *g_SchedCmdQ = NULL;
|
||||
u32 var8008dbcc = 0;
|
||||
u32 var8008dbd0 = 0;
|
||||
u32 var8008dbd4 = 0;
|
||||
u32 var8008dbd8 = 0;
|
||||
u32 var8008dbdc = 0;
|
||||
u32 var8008dbe0 = 0;
|
||||
u32 var8008dbe4 = 0;
|
||||
u32 var8008dbe8 = 0;
|
||||
u32 var8008dbec = 0;
|
||||
u32 var8008dbf0 = 0;
|
||||
u32 var8008dbf4 = 0;
|
||||
u32 var8008dbf8 = 0;
|
||||
u32 var8008dbfc = 0;
|
||||
u32 var8008dc00 = 0;
|
||||
u32 var8008dc04 = 0;
|
||||
u32 var8008dc08 = 0;
|
||||
u32 var8008dc0c = 0;
|
||||
u32 var8008dc10 = 0;
|
||||
u32 var8008dc14 = 0;
|
||||
u32 var8008dc18 = 0;
|
||||
u32 var8008dc1c = 0;
|
||||
u32 var8008dc20 = 0;
|
||||
u32 var8008dc24 = 0;
|
||||
u32 var8008dc28 = 0;
|
||||
u32 var8008dc2c = 0;
|
||||
u32 var8008dc30 = 0;
|
||||
u32 var8008dc34 = 0;
|
||||
u32 var8008dc38 = 0;
|
||||
u32 var8008dc3c = 0;
|
||||
u32 var8008dc40 = 0;
|
||||
u32 var8008dc44 = 0;
|
||||
u32 var8008dc48 = 0;
|
||||
u32 var8008dc4c = 0;
|
||||
u32 var8008dc50 = 0;
|
||||
u32 var8008dc54 = 0;
|
||||
u32 var8008dc58 = 0;
|
||||
u32 var8008dc5c = 0;
|
||||
u32 var8008dc60 = 0;
|
||||
u32 var8008dc64 = 0;
|
||||
u32 var8008dc68 = 0;
|
||||
u32 var8008dc6c = 0;
|
||||
u32 var8008dc70 = 0;
|
||||
u32 var8008dc74 = 0;
|
||||
u32 var8008dc78 = 0;
|
||||
u32 var8008dc7c = 0;
|
||||
u32 var8008dc80 = 0;
|
||||
u32 var8008dc84 = 0;
|
||||
u32 var8008dc88 = 0;
|
||||
u32 var8008dc8c = 0;
|
||||
u32 var8008dc90 = 0;
|
||||
u32 var8008dc94 = 0;
|
||||
u32 var8008dc98 = 0;
|
||||
u32 var8008dc9c = 0;
|
||||
u32 var8008dca0 = 0;
|
||||
u32 var8008dca4 = 0;
|
||||
u32 var8008dca8 = 0;
|
||||
u32 var8008dcac = 0;
|
||||
OSSched g_SchedThread = {0};
|
||||
OSScClient var8008dca8 = {0};
|
||||
u32 var8008dcb0 = 0;
|
||||
u32 g_OsMemSize = 0;
|
||||
u32 var8008dcb8 = 0;
|
||||
@@ -2827,7 +2773,7 @@ u32 var8008fde0 = 0;
|
||||
u32 var8008fde4 = 0;
|
||||
u32 var8008fde8 = 0;
|
||||
u32 var8008fdec = 0;
|
||||
u32 var8008fdf0 = 0;
|
||||
u32 g_ResetSp = 0;
|
||||
u32 var8008fdf4 = 0;
|
||||
u32 var8008fdf8 = 0;
|
||||
u32 var8008fdfc = 0;
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
|
||||
#define OS_TV_PAL 0
|
||||
#define OS_TV_NTSC 1
|
||||
#define OS_TV_MPAL 2
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
typedef signed short int s16;
|
||||
|
||||
@@ -2977,6 +2977,14 @@
|
||||
#define SQUADRON_0E 0x0e
|
||||
#define SQUADRON_0F 0x0f
|
||||
|
||||
#define STACKSIZE_RMON 0x300
|
||||
#define STACKSIZE_IDLE 0x40
|
||||
#define STACKSIZE_SCHED 0x400
|
||||
#define STACKSIZE_MAIN 0x9800
|
||||
#define STACKSIZE_AUDIO 0x1000
|
||||
#define STACKSIZE_FAULT 0
|
||||
#define STACKSIZE_RESET 0
|
||||
|
||||
#define STAGE_MP_RANDOM 0x01
|
||||
#define STAGE_MAIANSOS 0x09
|
||||
#define STAGE_TEST_SILO 0x14
|
||||
@@ -3146,12 +3154,22 @@
|
||||
#define TELEPORTSTATE_WHITE 3
|
||||
#define TELEPORTSTATE_EXITING 4
|
||||
|
||||
#define THREAD_RMON 0
|
||||
#define THREAD_IDLE 1
|
||||
#define THREAD_SCHED 2
|
||||
#define THREAD_MAIN 3
|
||||
#define THREAD_AUDIO 4
|
||||
#define THREAD_FAULT 5
|
||||
#define THREAD_RESET 6
|
||||
|
||||
#define THREADPRI_RMON 250
|
||||
#define THREADPRI_IDLE 0
|
||||
#define THREADPRI_SCHED 30
|
||||
#define THREADPRI_MAIN 10
|
||||
#define THREADPRI_AUDIO 20
|
||||
#define THREADPRI_FAULT 40
|
||||
#define THREADPRI_RESET 11
|
||||
|
||||
#define TICKMODE_0 0
|
||||
#define TICKMODE_NORMAL 1
|
||||
#define TICKMODE_WARP 3
|
||||
|
||||
@@ -329,9 +329,10 @@ extern OSThread g_IdleThread;
|
||||
extern OSThread var8008d6d0;
|
||||
extern u32 var8008d900;
|
||||
extern OSMesgQueue var8008db30;
|
||||
extern u32 var8008db48;
|
||||
extern u32 var8008dbd0;
|
||||
extern u32 var8008dca8;
|
||||
extern OSMesg var8008db48;
|
||||
extern OSMesgQueue *g_SchedCmdQ;
|
||||
extern OSSched g_SchedThread;
|
||||
extern OSScClient var8008dca8;
|
||||
extern u32 g_OsMemSize;
|
||||
extern u32 var8008dcc0;
|
||||
extern OSViMode *var8008dd60[2];
|
||||
@@ -345,7 +346,7 @@ extern u32 var8008fa68;
|
||||
extern OSMesg g_ResetMesg;
|
||||
extern OSMesgQueue g_ResetMesgQueue;
|
||||
extern OSThread g_ResetThread;
|
||||
extern u32 var8008fdf0;
|
||||
extern u32 g_ResetSp;
|
||||
extern OSThread viThread;
|
||||
extern u32 __viEventQueue;
|
||||
extern u32 viEventBuf;
|
||||
|
||||
+5
-5
@@ -24,7 +24,7 @@
|
||||
|
||||
void audioAllocateStack(void)
|
||||
{
|
||||
g_AudioSp = allocateStack(THREAD_AUDIO, 4096);
|
||||
g_AudioSp = allocateStack(THREAD_AUDIO, STACKSIZE_AUDIO);
|
||||
}
|
||||
|
||||
GLOBAL_ASM(
|
||||
@@ -519,7 +519,7 @@ glabel func00009154
|
||||
/* 916c: afb30024 */ sw $s3,0x24($sp)
|
||||
/* 9170: afb20020 */ sw $s2,0x20($sp)
|
||||
/* 9174: 2dce0001 */ sltiu $t6,$t6,0x1
|
||||
/* 9178: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 9178: 3c048009 */ lui $a0,%hi(g_SchedThread)
|
||||
/* 917c: 3c058009 */ lui $a1,%hi(var800918d0)
|
||||
/* 9180: 3c068009 */ lui $a2,%hi(var80091810)
|
||||
/* 9184: afbe0038 */ sw $s8,0x38($sp)
|
||||
@@ -535,7 +535,7 @@ glabel func00009154
|
||||
/* 91ac: afa00060 */ sw $zero,0x60($sp)
|
||||
/* 91b0: 24c61810 */ addiu $a2,$a2,%lo(var80091810)
|
||||
/* 91b4: 24a518d0 */ addiu $a1,$a1,%lo(var800918d0)
|
||||
/* 91b8: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 91b8: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
|
||||
/* 91bc: 0c00078c */ jal osScAddClient
|
||||
/* 91c0: 2dc70001 */ sltiu $a3,$t6,0x1
|
||||
/* 91c4: 3c158009 */ lui $s5,%hi(var80091590)
|
||||
@@ -720,10 +720,10 @@ glabel func00009448
|
||||
/* 945c: afbf001c */ sw $ra,0x1c($sp)
|
||||
/* 9460: 10c00007 */ beqz $a2,.L00009480
|
||||
/* 9464: afa50034 */ sw $a1,0x34($sp)
|
||||
/* 9468: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 9468: 3c048009 */ lui $a0,%hi(g_SchedThread)
|
||||
/* 946c: 3c018009 */ lui $at,%hi(var800918f4)
|
||||
/* 9470: ac2618f4 */ sw $a2,%lo(var800918f4)($at)
|
||||
/* 9474: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 9474: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
|
||||
/* 9478: 0c0007ea */ jal __scHandleRetraceViaPri
|
||||
/* 947c: 00c02825 */ or $a1,$a2,$zero
|
||||
.L00009480:
|
||||
|
||||
+1
-1
@@ -145,7 +145,7 @@ void faultproc(void *arg0);
|
||||
void faultCreateThread2(void)
|
||||
{
|
||||
osCreateMesgQueue(&g_FaultMesgQueue, &g_FaultMesg, 1);
|
||||
osCreateThread(&g_FaultThread, THREAD_FAULT, faultproc, NULL, &g_FaultSp, 40);
|
||||
osCreateThread(&g_FaultThread, THREAD_FAULT, faultproc, NULL, &g_FaultSp, THREADPRI_FAULT);
|
||||
osStartThread(&g_FaultThread);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -372,10 +372,10 @@ glabel func0002f8f4
|
||||
/* 2f9a8: acc8000c */ sw $t0,0xc($a2)
|
||||
/* 2f9ac: 0c012048 */ jal osWritebackDCacheAll
|
||||
/* 2f9b0: afa6001c */ sw $a2,0x1c($sp)
|
||||
/* 2f9b4: 3c048009 */ lui $a0,%hi(var8008dbd0)
|
||||
/* 2f9b4: 3c048009 */ lui $a0,%hi(g_SchedThread)
|
||||
/* 2f9b8: 8fa5001c */ lw $a1,0x1c($sp)
|
||||
/* 2f9bc: 0c0007ea */ jal __scHandleRetraceViaPri
|
||||
/* 2f9c0: 2484dbd0 */ addiu $a0,$a0,%lo(var8008dbd0)
|
||||
/* 2f9c0: 2484dbd0 */ addiu $a0,$a0,%lo(g_SchedThread)
|
||||
/* 2f9c4: 3c028006 */ lui $v0,%hi(var8005f108)
|
||||
/* 2f9c8: 2442f108 */ addiu $v0,$v0,%lo(var8005f108)
|
||||
/* 2f9cc: 8c490000 */ lw $t1,0x0($v0)
|
||||
|
||||
Reference in New Issue
Block a user