From dbee8d0efcfdba446904248398eb182c0f1ac24a Mon Sep 17 00:00:00 2001 From: Ryan Myers Date: Tue, 14 Sep 2021 07:55:46 -0400 Subject: [PATCH] Add thread0_epc.h, and link files to it for signatures --- src/main.c | 1 + src/memory.c | 1 + src/printf.c | 1 + src/textures_sprites.h | 2 +- src/thread0_epc.c | 81 ++----------------------------------- src/thread0_epc.h | 92 ++++++++++++++++++++++++++++++++++++++++++ src/unknown_00BC20.c | 3 +- src/unknown_06B2B0.c | 1 + 8 files changed, 102 insertions(+), 80 deletions(-) create mode 100644 src/thread0_epc.h diff --git a/src/main.c b/src/main.c index 09b7d5fb..d65a8de2 100644 --- a/src/main.c +++ b/src/main.c @@ -2,6 +2,7 @@ /* RAM_POS: 0x80065D40 */ #include "main.h" +#include "thread0_epc.h" /************ .rodata ************/ diff --git a/src/memory.c b/src/memory.c index 32536f4f..c0f68ea9 100644 --- a/src/memory.c +++ b/src/memory.c @@ -3,6 +3,7 @@ #include "memory.h" #include "printf.h" +#include "thread0_epc.h" /************ .rodata ************/ diff --git a/src/printf.c b/src/printf.c index f70b2b95..b885fe4b 100644 --- a/src/printf.c +++ b/src/printf.c @@ -5,6 +5,7 @@ #include "types.h" #include "macros.h" #include "f3ddkr.h" +#include "thread0_epc.h" /************ .data ************/ diff --git a/src/textures_sprites.h b/src/textures_sprites.h index 5fefdd6d..0113bb38 100644 --- a/src/textures_sprites.h +++ b/src/textures_sprites.h @@ -90,6 +90,6 @@ s32 func_8007C860(s32 spriteIndex); // Non Matching s32 load_sprite_info(s32 spriteIndex, s32 *numOfInstancesOut, s32 *unkOut, s32 *numFramesOut, s32 *formatOut, s32 *sizeOut); // Non Matching void free_sprite(Sprite *sprite); // Non Matching -void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); +void func_8007F594(Gfx **dlist, u32 index, u32 primitiveColor, u32 environmentColor); // Non Matching #endif diff --git a/src/thread0_epc.c b/src/thread0_epc.c index f0b9f09f..77a75df1 100644 --- a/src/thread0_epc.c +++ b/src/thread0_epc.c @@ -1,9 +1,9 @@ /* The comment below is needed for this file to be picked up by generate_ld */ /* RAM_POS: 0x800B6E50 */ +#include "thread0_epc.h" #include "types.h" #include "macros.h" -#include "libultra_internal.h" #include "menu.h" #include "controller_pak.h" #include "printf.h" @@ -36,61 +36,6 @@ char *D_800E302C[3] = { /************ .bss ************/ -/* Size: 0x1B0 bytes */ -typedef struct epcInfo { -/* 0x00 */ s32 unk0; -/* 0x04 */ s32 unk4; -/* 0x08 */ s32 unk8; -/* 0x0C */ s32 unkC; -/* 0x10 */ s32 unk10; -/* 0x14 */ s32 thread; -/* 0x18 */ s32 unk18; -/* 0x1C */ s32 unk1C; -/* 0x20 */ s64 at; -/* 0x28 */ s64 v0; -/* 0x30 */ s64 v1; -/* 0x38 */ s64 a0; -/* 0x40 */ s64 a1; -/* 0x48 */ s64 a2; -/* 0x50 */ s64 a3; -/* 0x58 */ s64 t0; -/* 0x60 */ s64 t1; -/* 0x68 */ s64 t2; -/* 0x70 */ s64 t3; -/* 0x78 */ s64 t4; -/* 0x80 */ s64 t5; -/* 0x88 */ s64 t6; -/* 0x90 */ s64 t7; -/* 0x98 */ s64 s0; -/* 0xA0 */ s64 s1; -/* 0xA8 */ s64 s2; -/* 0xB0 */ s64 s3; -/* 0xB8 */ s64 s4; -/* 0xC0 */ s64 s5; -/* 0xC8 */ s64 s6; -/* 0xD0 */ s64 s7; -/* 0xD8 */ s64 t8; -/* 0xE0 */ s64 t9; -/* 0xE8 */ s64 gp; -/* 0xF0 */ s64 sp; -/* 0xF8 */ s64 s8; -/* 0x100 */ s64 ra; -/* 0x108 */ s32 unk108; -/* 0x10C */ s32 unk10C; -/* 0x110 */ s32 unk110; -/* 0x114 */ s32 unk114; -/* 0x118 */ s32 sr; -/* 0x11C */ s32 epc; -/* 0x120 */ s32 cause; -/* 0x124 */ s32 badvaddr; -/* 0x128 */ s32 unk128; -/* 0x12C */ s32 unk12C; -/* 0x130 */ f32 unk130; -/* 0x134 */ f32 unk134; -/* 0x138 */ f32 unk138; -/* 0x13C */ u8 pad13C[0x74]; -} epcInfo; - epcInfo gEpcInfo; s32 D_801299B0[64]; @@ -98,13 +43,6 @@ extern s32 D_80129BB0[256]; /******************************/ -s16 *func_80024594(s32 *arg0, s32 *arg1); - -void thread0(s32 arg0); -void func_800B70D0(void); -void func_800B7144(void); -void func_800B71B0(void); - extern OSThread D_801295E0; extern OSMesgQueue D_80129790; extern OSMesg D_801297A8; @@ -139,8 +77,6 @@ void func_800B6E50(void) { } } - - void func_800B6EE0(void) { D_80127CAC = D_80127CBC; D_80127CAE = D_80127CC4; @@ -206,18 +142,8 @@ void thread0(s32 arg0) { // Has regalloc issues GLOBAL_ASM("asm/non_matchings/thread0_epc/thread0.s") #endif -/* Unknown Size, might be epcInfo? */ -typedef struct unk800D2470 { -/* 0x00 */ OSThread *thread; -/* 0x04 */ s32 unk4; -/* 0x08 */ s32 unk8; -/* 0x0C */ struct unk800D2470 *next; -/* 0x10 */ u8 pad10[0x108]; -/* 0x118 */ s32 unk118; -} unk800D2470; - void func_800B70D0(void) { - unk800D2470 *node = func_800D2470(); + unk800D2470 *node = func_800D2470(); //Might be epcInfo? while(node->unk4 != -1) { if (node->unk4 == 0) { node->unk118 &= 0xFFFF00FE; @@ -246,7 +172,7 @@ GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B71B0.s") #if 1 GLOBAL_ASM("asm/non_matchings/thread0_epc/func_800B7460.s") #else - +//Rename mask to colorTag? void func_800B7460(s32 *epc, s32 size, s32 mask) { epcInfo sp840; s16 sp440[0x200]; @@ -287,6 +213,7 @@ void func_800B76B8(s32 arg0, s32 arg1) { } } +//Called as a check to see if render_epc_lock_up_display should be called. s32 func_800B76DC(void) { s32 fileNum; u8 sp820[4]; // Unused? diff --git a/src/thread0_epc.h b/src/thread0_epc.h new file mode 100644 index 00000000..2e288174 --- /dev/null +++ b/src/thread0_epc.h @@ -0,0 +1,92 @@ +#ifndef _THREAD0_EPC_H_ +#define _THREAD0_EPC_H_ + +#include "types.h" +#include "libultra_internal.h" + +/* Size: 0x1B0 bytes */ +typedef struct epcInfo { +/* 0x00 */ s32 unk0; +/* 0x04 */ s32 unk4; +/* 0x08 */ s32 unk8; +/* 0x0C */ s32 unkC; +/* 0x10 */ s32 unk10; +/* 0x14 */ s32 thread; +/* 0x18 */ s32 unk18; +/* 0x1C */ s32 unk1C; +/* 0x20 */ s64 at; +/* 0x28 */ s64 v0; +/* 0x30 */ s64 v1; +/* 0x38 */ s64 a0; +/* 0x40 */ s64 a1; +/* 0x48 */ s64 a2; +/* 0x50 */ s64 a3; +/* 0x58 */ s64 t0; +/* 0x60 */ s64 t1; +/* 0x68 */ s64 t2; +/* 0x70 */ s64 t3; +/* 0x78 */ s64 t4; +/* 0x80 */ s64 t5; +/* 0x88 */ s64 t6; +/* 0x90 */ s64 t7; +/* 0x98 */ s64 s0; +/* 0xA0 */ s64 s1; +/* 0xA8 */ s64 s2; +/* 0xB0 */ s64 s3; +/* 0xB8 */ s64 s4; +/* 0xC0 */ s64 s5; +/* 0xC8 */ s64 s6; +/* 0xD0 */ s64 s7; +/* 0xD8 */ s64 t8; +/* 0xE0 */ s64 t9; +/* 0xE8 */ s64 gp; +/* 0xF0 */ s64 sp; +/* 0xF8 */ s64 s8; +/* 0x100 */ s64 ra; +/* 0x108 */ s32 unk108; +/* 0x10C */ s32 unk10C; +/* 0x110 */ s32 unk110; +/* 0x114 */ s32 unk114; +/* 0x118 */ s32 sr; +/* 0x11C */ s32 epc; +/* 0x120 */ s32 cause; +/* 0x124 */ s32 badvaddr; +/* 0x128 */ s32 unk128; +/* 0x12C */ s32 unk12C; +/* 0x130 */ f32 unk130; +/* 0x134 */ f32 unk134; +/* 0x138 */ f32 unk138; +/* 0x13C */ u8 pad13C[0x74]; +} epcInfo; + +/* Unknown Size, might be epcInfo? */ +typedef struct unk800D2470 { +/* 0x00 */ OSThread *thread; +/* 0x04 */ s32 unk4; +/* 0x08 */ s32 unk8; +/* 0x0C */ struct unk800D2470 *next; +/* 0x10 */ u8 pad10[0x108]; +/* 0x118 */ s32 unk118; +} unk800D2470; + +s16 *func_80024594(s32 *arg0, s32 *arg1); //unknown_00BC20.c + +void func_800B6E50(void); +void func_800B6EE0(void); +void func_800B6F04(void); +void func_800B6F30(s32 arg0, s32 arg1, s32 arg2); +void func_800B6F40(s32 arg0, s32 arg1, s32 arg2); +void func_800B70D0(void); +void func_800B7144(void); +void func_800B76B8(s32 arg0, s32 arg1); +s32 func_800B76DC(void); +void func_800B77D4(s32 arg0); + + +void func_800B6F50(void); // Non Matching +void thread0(s32 arg0); // Non Matching +void func_800B7460(s32 *epc, s32 size, s32 mask); // Non Matching +void render_epc_lock_up_display(void); // Non Matching +void func_800B71B0(void); // Non Matching + +#endif diff --git a/src/unknown_00BC20.c b/src/unknown_00BC20.c index ca8a3f6c..a757f60b 100644 --- a/src/unknown_00BC20.c +++ b/src/unknown_00BC20.c @@ -10,6 +10,7 @@ #include "f3ddkr.h" #include "asset_sections.h" #include "asset_loading.h" +#include "thread0_epc.h" /************ .data ************/ @@ -278,8 +279,6 @@ extern s16 D_8011D5AC; /******************************/ -extern s32 osTvType; - typedef struct unk8001D6E4_arg1_40 { u8 pad0[0x71]; /* 0x71 */ u8 unk71; diff --git a/src/unknown_06B2B0.c b/src/unknown_06B2B0.c index b5f03090..82171aa5 100644 --- a/src/unknown_06B2B0.c +++ b/src/unknown_06B2B0.c @@ -16,6 +16,7 @@ #include "lib/src/mips1/sc/sched.h" #include "gzip.h" #include "printf.h" +#include "thread0_epc.h" /************ .rodata ************/