From a5c5ab918a778508f56b8a2619d979d7edfb8eb2 Mon Sep 17 00:00:00 2001 From: Ryan Dwyer Date: Wed, 30 Sep 2020 22:31:25 +1000 Subject: [PATCH] Decompile thread0CreateThread --- src/boot/boot.c | 33 +++++++-------------------------- src/gvars/gvars.c | 2 +- src/include/constants.h | 1 + src/include/gvars/gvars.h | 2 +- src/include/lib/lib_2fa00.h | 2 +- src/lib/lib_2fa00.c | 2 +- 6 files changed, 12 insertions(+), 30 deletions(-) diff --git a/src/boot/boot.c b/src/boot/boot.c index c6e09c9d4..4cc89cf99 100644 --- a/src/boot/boot.c +++ b/src/boot/boot.c @@ -24,6 +24,7 @@ #include "lib/lib_13710.h" #include "lib/lib_13750.h" #include "lib/lib_13900.h" +#include "lib/lib_2fa00.h" #include "lib/lib_48120.h" #include "lib/lib_48150.h" #include "lib/lib_481d0.h" @@ -745,31 +746,11 @@ void idleCreateThread(void) osStartThread(&g_IdleThread); } -GLOBAL_ASM( -glabel func0000199c -/* 199c: 27bdffe0 */ addiu $sp,$sp,-32 -/* 19a0: afbf001c */ sw $ra,0x1c($sp) -/* 19a4: 00002025 */ or $a0,$zero,$zero -/* 19a8: 0c00062b */ jal func000018ac -/* 19ac: 24050300 */ addiu $a1,$zero,0x300 -/* 19b0: 3c048009 */ lui $a0,%hi(var8008d270) -/* 19b4: 3c067003 */ lui $a2,%hi(func0002fa00) -/* 19b8: 240e00fa */ addiu $t6,$zero,0xfa -/* 19bc: afae0014 */ sw $t6,0x14($sp) -/* 19c0: 24c6fa00 */ addiu $a2,$a2,%lo(func0002fa00) -/* 19c4: 2484d270 */ addiu $a0,$a0,%lo(var8008d270) -/* 19c8: 00002825 */ or $a1,$zero,$zero -/* 19cc: 00003825 */ or $a3,$zero,$zero -/* 19d0: 0c000fb8 */ jal osCreateThread -/* 19d4: afa20010 */ sw $v0,0x10($sp) -/* 19d8: 3c048009 */ lui $a0,%hi(var8008d270) -/* 19dc: 0c01207c */ jal osStartThread -/* 19e0: 2484d270 */ addiu $a0,$a0,%lo(var8008d270) -/* 19e4: 8fbf001c */ lw $ra,0x1c($sp) -/* 19e8: 27bd0020 */ addiu $sp,$sp,0x20 -/* 19ec: 03e00008 */ jr $ra -/* 19f0: 00000000 */ nop -); +void thread0CreateThread(void) +{ + osCreateThread(&g_Thread0Thread, THREAD_0, thread0Init, NULL, func000018ac(0, 0x300), 250); + osStartThread(&g_Thread0Thread); +} GLOBAL_ASM( glabel func000019f4 @@ -826,7 +807,7 @@ void mainproc(u32 value) idleCreateThread(); func00013750(); func00013710(); - func0000199c(); + thread0CreateThread(); if (func00012f30()) { osStopThread(0); diff --git a/src/gvars/gvars.c b/src/gvars/gvars.c index fa67ee635..98ea0bbde 100644 --- a/src/gvars/gvars.c +++ b/src/gvars/gvars.c @@ -2326,7 +2326,7 @@ u32 var8008d260 = 0; u32 var8008d264 = 0; u32 var8008d268 = 0; u32 var8008d26c = 0; -OSThread var8008d270 = {0}; +OSThread g_Thread0Thread = {0}; u32 var8008d420 = 0; u32 var8008d424 = 0; u32 var8008d428 = 0; diff --git a/src/include/constants.h b/src/include/constants.h index 37e8345b1..fb15d6a87 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_0 0 #define THREAD_IDLE 1 #define THREAD_RMON 5 diff --git a/src/include/gvars/gvars.h b/src/include/gvars/gvars.h index c45b9a9cf..0e969185d 100644 --- a/src/include/gvars/gvars.h +++ b/src/include/gvars/gvars.h @@ -356,7 +356,7 @@ extern u32 var8008ae30; extern u32 var8008ae38; extern u32 var8008be38; extern u32 var8008d238; -extern OSThread var8008d270; +extern OSThread g_Thread0Thread; extern OSThread g_IdleThread; extern OSThread var8008d6d0; extern u32 var8008d900; diff --git a/src/include/lib/lib_2fa00.h b/src/include/lib/lib_2fa00.h index 5ef7ebb30..5ef6a2ff1 100644 --- a/src/include/lib/lib_2fa00.h +++ b/src/include/lib/lib_2fa00.h @@ -3,7 +3,7 @@ #include #include "types.h" -u32 func0002fa00(void); +void thread0Init(void *data); u32 func0002fa08(void); void func0002faa4(char *format, ...); diff --git a/src/lib/lib_2fa00.c b/src/lib/lib_2fa00.c index 7a71d651a..72d2712c1 100644 --- a/src/lib/lib_2fa00.c +++ b/src/lib/lib_2fa00.c @@ -13,7 +13,7 @@ #include "types.h" GLOBAL_ASM( -glabel func0002fa00 +glabel thread0Init /* 2fa00: 03e00008 */ jr $ra /* 2fa04: 00000000 */ nop );