From 79e2eaabb49f2ca13226966796f9bf577176477e Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 30 Sep 2020 22:19:50 +1000 Subject: [PATCH] Decompile idleCreateThread --- src/boot/boot.c | 31 ++++++------------------------- src/gvars/gvars.c | 2 +- src/include/boot/boot.h | 2 +- src/include/constants.h | 1 + src/include/gvars/gvars.h | 2 +- 5 files changed, 10 insertions(+), 28 deletions(-) diff --git a/src/boot/boot.c b/src/boot/boot.c index 5e3d35c31..c6e09c9d4 100644 --- a/src/boot/boot.c +++ b/src/boot/boot.c @@ -739,30 +739,11 @@ void idle(void *data) while (true); } -GLOBAL_ASM( -glabel func00001948 -/* 1948: 27bdffe0 */ addiu $sp,$sp,-32 -/* 194c: afbf001c */ sw $ra,0x1c($sp) -/* 1950: 24040001 */ addiu $a0,$zero,0x1 -/* 1954: 0c00062b */ jal func000018ac -/* 1958: 24050040 */ addiu $a1,$zero,0x40 -/* 195c: 3c048009 */ lui $a0,%hi(var8008d4a0) -/* 1960: 3c067000 */ lui $a2,%hi(idle) -/* 1964: 24c61934 */ addiu $a2,$a2,%lo(idle) -/* 1968: 2484d4a0 */ addiu $a0,$a0,%lo(var8008d4a0) -/* 196c: 24050001 */ addiu $a1,$zero,0x1 -/* 1970: 00003825 */ or $a3,$zero,$zero -/* 1974: afa20010 */ sw $v0,0x10($sp) -/* 1978: 0c000fb8 */ jal osCreateThread -/* 197c: afa00014 */ sw $zero,0x14($sp) -/* 1980: 3c048009 */ lui $a0,%hi(var8008d4a0) -/* 1984: 0c01207c */ jal osStartThread -/* 1988: 2484d4a0 */ addiu $a0,$a0,%lo(var8008d4a0) -/* 198c: 8fbf001c */ lw $ra,0x1c($sp) -/* 1990: 27bd0020 */ addiu $sp,$sp,0x20 -/* 1994: 03e00008 */ jr $ra -/* 1998: 00000000 */ nop -); +void idleCreateThread(void) +{ + osCreateThread(&g_IdleThread, THREAD_IDLE, &idle, NULL, func000018ac(1, 64), 0); + osStartThread(&g_IdleThread); +} GLOBAL_ASM( glabel func0000199c @@ -842,7 +823,7 @@ glabel func000019f4 void mainproc(u32 value) { - func00001948(); + idleCreateThread(); func00013750(); func00013710(); func0000199c(); diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index db17d3aec..fa67ee635 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -2359,7 +2359,7 @@ u32 var8008d490 = 0; u32 var8008d494 = 0; u32 var8008d498 = 0; u32 var8008d49c = 0; -OSThread var8008d4a0 = {0}; +OSThread g_IdleThread = {0}; u32 var8008d650 = 0; u32 var8008d654 = 0; u32 var8008d658 = 0; diff --git a/src/include/boot/boot.h b/src/include/boot/boot.h index 9db85d0e8..6458d6b55 100644 --- a/src/include/boot/boot.h +++ b/src/include/boot/boot.h @@ -6,7 +6,7 @@ s32 func000010a4(void); s32 func0000113c(void); s32 func00001180(void); s32 osGetMemSize(void); -s32 func000018ac(void); +void *func000018ac(s32 arg0, s32 arg1); void func00001b28(u32 arg0); s32 func00001e30(void); s32 func00001fa8(void); diff --git a/src/include/constants.h b/src/include/constants.h index a87487ee6..37e8345b1 100644 --- a/src/include/constants.h +++ b/src/include/constants.h @@ -2840,6 +2840,7 @@ #define TELEPORTSTATE_3 3 #define TELEPORTSTATE_4 4 +#define THREAD_IDLE 1 #define THREAD_RMON 5 #define TICKMODE_0 0 diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index ac2fa0e9e..c45b9a9cf 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -357,7 +357,7 @@ extern u32 var8008ae38; extern u32 var8008be38; extern u32 var8008d238; extern OSThread var8008d270; -extern OSThread var8008d4a0; +extern OSThread g_IdleThread; extern OSThread var8008d6d0; extern u32 var8008d900; extern u32 var8008db30;