From 7ad1f85eacd94399d0e89cbcbd21ab2ba701a135 Mon Sep 17 00:00:00 2001 From: Ogre Date: Fri, 1 Sep 2023 00:29:02 +0200 Subject: [PATCH] Added ultra64.h to common.h Identified more code Reversed a bit more --- include/common.h | 2 + splat.yaml | 27 ++++++------ src/19050.c | 83 +++++++++++++++++++++++++++++++++++ src/19FC0.c | 14 ++++++ src/1A050.c | 6 +-- src/1A660.c | 2 - src/1A9A0.c | 3 -- src/1AAA0.c | 2 - src/2DE10.c | 25 +++++++++++ src/main.c | 3 -- src/mus.c | 18 ++++---- src/overlays/overlay0/3F1B0.c | 22 +++++++--- symbol_addrs.txt | 34 +++++++++++++- undefined_funcs.txt | 2 - 14 files changed, 195 insertions(+), 48 deletions(-) create mode 100644 src/19050.c create mode 100644 src/19FC0.c create mode 100644 src/2DE10.c diff --git a/include/common.h b/include/common.h index 03cdfcc..5d51f38 100644 --- a/include/common.h +++ b/include/common.h @@ -3,4 +3,6 @@ #include "include_asm.h" +#include + #endif \ No newline at end of file diff --git a/splat.yaml b/splat.yaml index 7a8a980..cbef9bf 100644 --- a/splat.yaml +++ b/splat.yaml @@ -98,12 +98,12 @@ segments: - [0x189D0, asm] - [0x18F30, asm] - [0x18F80, asm] - - [0x19050, asm] + - [0x19050, c] - [0x19DD0, c] - [0x19E10, asm] - [0x19E30, asm, "dma_load_loop"] - [0x19EB0, asm] - - [0x19FC0, asm] + - [0x19FC0, c] - [0x1A050, c] - [0x1A4F0, asm] - [0x1A5B0, asm] @@ -193,17 +193,17 @@ segments: - [0x25140, asm, "libultra/os/settimer"] - [0x251E0, asm, "libultra/os/timerintr"] - [0x254E0, asm, "libultra/os/probetlb"] - - [0x255A0, asm] - - [0x255E0, asm] + - [0x255A0, asm, "libultra/io/vigetnextframebuf"] + - [0x255E0, asm, "libultra/io/vigetframebuf"] - [0x25620, asm, "libultra/io/vimgr"] - [0x25960, asm, "libultra/io/visetevent"] - - [0x259C0, asm] - - [0x25A10, asm] - - [0x25B80, asm] - - [0x25BD0, asm] + - [0x259C0, asm, "libultra/io/visetmode"] + - [0x25A10, asm, "libultra/io/visetspecial"] + - [0x25B80, asm, "libultra/io/visetyscale"] + - [0x25BD0, asm, "libultra/io/viswapbuf"] - [0x25C20, asm, "libultra/io/viswapcontext"] - - [0x25F30, asm] - - [0x25F90, asm] + - [0x25F30, asm, "libultra/io/viblack"] + - [0x25F90, asm, "libultra/io/pfsallocatefile"] - [0x263C0, asm] - [0x265E0, asm] - [0x26BC0, asm] @@ -211,8 +211,8 @@ segments: - [0x26E90, asm, "libultra/io/pfsinitpak"] - [0x27260, asm] - [0x272C0, asm, "libultra/io/pfsgetstatus"] - - [0x274D0, asm] - - [0x27540, asm, "libultra/io/contpfs"] + - [0x274D0, asm, "libultra/io/contpfs"] + - [0x27540, asm] - [0x27FD0, asm, "libultra/io/contramread"] - [0x281C0, asm, "libultra/io/contramwrite"] - [0x28430, asm] @@ -286,7 +286,8 @@ segments: - [0x2D7F0, asm] - [0x2DC80, asm] - [0x2DDF0, asm] - - [0x2DE10, asm] + - [0x2DE10, c] + - [0x2E450, data] - [0x3A800, asm] - [0x3A840, asm] - [0x3AB10, asm] diff --git a/src/19050.c b/src/19050.c new file mode 100644 index 0000000..2d0c8b2 --- /dev/null +++ b/src/19050.c @@ -0,0 +1,83 @@ +#include "PR/os.h" +#include "common.h" + +void func_8008949C(void*); + +INCLUDE_ASM(const s32, "19050", __idle_start_4_threads); + +INCLUDE_ASM(const s32, "19050", func_80088EF0); + +typedef struct { + /* 0x00 */ OSMesgQueue field_0x0; + /* 0x30 */ u8 field_0x30[0x58]; + /* 0x88 */ OSMesgQueue field_0x70; + /* 0x74 */ u8 field_0x74[0x20]; + /* 0xa8 */ OSMesgQueue field_0xa8; +} Unk0; + +extern Unk0 MQ_800E8B4C; + +Unk0* func_80088EFC(void) { + return &MQ_800E8B4C; +} + +INCLUDE_ASM(const s32, "19050", __thread_80088F08); + +INCLUDE_ASM(const s32, "19050", func_80089054); + +INCLUDE_ASM(const s32, "19050", func_800890E4); + +INCLUDE_ASM(const s32, "19050", func_80089124); + +INCLUDE_ASM(const s32, "19050", func_800891A0); + +INCLUDE_ASM(const s32, "19050", __thread_80089200); + +INCLUDE_ASM(const s32, "19050", __thread_80089358); + +extern OSMesgQueue MQ_800B9C40; +extern u8 __MAIN_NOT_NULL_INF_LOOP; + +void __thread_800893C0(void) { + typedef struct { + /* 0x00 */ s32 field_0x0; + /* 0x04 */ s32 field_0x4; + /* 0x08 */ s32 field_0x8; + /* 0x1C */ u8 field_0x1c[0x42]; + /* 0x50 */ OSMesgQueue* field_0x50; + } Stack0; + + Stack0* sp10; + void* sp14; + + while(1) { + osRecvMesg(&MQ_800E8B4C.field_0x0, &sp10, 1); + if (!(__MAIN_NOT_NULL_INF_LOOP & 2)) { + func_8008949C(sp10); + osWritebackDCacheAll(); + osSendMesg(&MQ_800B9C40, sp10, OS_MESG_BLOCK); + + osRecvMesg(&MQ_800E8B4C.field_0x70, &sp14, OS_MESG_BLOCK); + osSendMesg(&MQ_800B9C40, NULL, OS_MESG_BLOCK); + if (!(sp10->field_0x8 & 2)) { + osRecvMesg(&MQ_800E8B4C.field_0xa8, &sp14, OS_MESG_BLOCK); + } + } + osSendMesg(sp10->field_0x50, sp10, OS_MESG_BLOCK); + } +} + + +INCLUDE_ASM(const s32, "19050", func_8008949C); + +INCLUDE_ASM(const s32, "19050", func_80089528); + +INCLUDE_ASM(const s32, "19050", func_80089534); + +INCLUDE_ASM(const s32, "19050", __thread_80089540); + +INCLUDE_ASM(const s32, "19050", __start_thread_800B9C88); + +INCLUDE_ASM(const s32, "19050", func_80089804); + +INCLUDE_ASM(const s32, "19050", func_80089990); diff --git a/src/19FC0.c b/src/19FC0.c new file mode 100644 index 0000000..e8df68a --- /dev/null +++ b/src/19FC0.c @@ -0,0 +1,14 @@ +#include "common.h" + +void __calls_osViBlack(u8); + +// INCLUDE_ASM(const s32, "19FC0", func_80089BC0); +extern s32 __SCREEN_IS_NOT_BLACK; + +void __set_black(void) { + __SCREEN_IS_NOT_BLACK = 0; + __calls_osViBlack(1); +} + + +INCLUDE_ASM(const s32, "19FC0", __calls_osViBlack); diff --git a/src/1A050.c b/src/1A050.c index db61c1b..545426c 100644 --- a/src/1A050.c +++ b/src/1A050.c @@ -1,7 +1,5 @@ #include "common.h" -#include - void romCopy(const void* src, const void* dst, const s32 len); s32 func_80089CF8(s16 arg0, s32 arg1); @@ -10,10 +8,10 @@ OSMesgQueue MQ_800BE030; OSMesg OSMESG_800BE048[0x32]; OSThread THREAD_CONTROLLER; -extern s32 D_800C4BD8; +extern s32 __SCREEN_IS_NOT_BLACK; void func_80089C50(void) { - D_800C4BD8 = 0x80; + __SCREEN_IS_NOT_BLACK = 0x80; } diff --git a/src/1A660.c b/src/1A660.c index d320631..6e4ac76 100644 --- a/src/1A660.c +++ b/src/1A660.c @@ -1,7 +1,5 @@ #include "common.h" -#include - void __start_copy_global_controller_data(void); void __end_copy_global_controller_data(void); diff --git a/src/1A9A0.c b/src/1A9A0.c index d3bee59..34a07c4 100644 --- a/src/1A9A0.c +++ b/src/1A9A0.c @@ -1,8 +1,5 @@ -#include "PR/os.h" #include "common.h" -#include - extern s32 D_800C4B30; void func_8008A5A0(void) { diff --git a/src/1AAA0.c b/src/1AAA0.c index eaae4dc..ebdd9fd 100644 --- a/src/1AAA0.c +++ b/src/1AAA0.c @@ -1,7 +1,5 @@ #include "common.h" -#include - extern void func_8008B130(u8*); extern u8 D_800AA040; diff --git a/src/2DE10.c b/src/2DE10.c new file mode 100644 index 0000000..ee1811c --- /dev/null +++ b/src/2DE10.c @@ -0,0 +1,25 @@ +#include "common.h" + +INCLUDE_ASM(const s32, "2DE10", func_8009DA10); + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DA50); + +void func_8009DAEC(void) { } + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DAF4); + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DBB8); + +extern u8 D_594284; + +void* __add_0x594284(s32 arg0) { + return arg0 + &D_594284; +} + + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DD38); + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DE40); + +INCLUDE_ASM(const s32, "2DE10", __calls_romCopy_8009DF48); + diff --git a/src/main.c b/src/main.c index cea187c..86425c3 100644 --- a/src/main.c +++ b/src/main.c @@ -1,8 +1,5 @@ -#include "PR/os.h" #include "common.h" -#include - INCLUDE_ASM(const s32, "main", func_80070C60); INCLUDE_ASM(const s32, "main", AddHeap); diff --git a/src/mus.c b/src/mus.c index 94fbef2..4efc208 100644 --- a/src/mus.c +++ b/src/mus.c @@ -1,8 +1,5 @@ #include "common.h" -#include - - extern void* musCurrentPtrBank; void func_8008350C(); @@ -39,15 +36,16 @@ INCLUDE_ASM(const s32, "mus", func_80081CA0); INCLUDE_ASM(const s32, "mus", func_80081D2C); -INCLUDE_ASM(const s32, "mus", __something_music); +// INCLUDE_ASM(const s32, "mus", __something_music); -// void __something_music(void* arg0) { -// func_8008350C(); +void Mus__unknown_80081DB4(void* arg0) { + func_8008350C(); + + if (musCurrentPtrBank == 0) { + musCurrentPtrBank = arg0; + } +} -// if (musCurrentPtrBank == 0) { -// musCurrentPtrBank = arg0; -// } -// } extern void* D_800B1828; diff --git a/src/overlays/overlay0/3F1B0.c b/src/overlays/overlay0/3F1B0.c index 73aa9ae..5449358 100644 --- a/src/overlays/overlay0/3F1B0.c +++ b/src/overlays/overlay0/3F1B0.c @@ -8,9 +8,10 @@ void func_800EA488(void*); extern void romCopy(const void* src, const void* dst, const s32 len); -extern void __something_music(const void* arg0, const void* arg1); +extern void Mus__unknown_80081DB4(const void* arg0, const void* arg1); extern void func_80081F7C(const void* arg); extern void MusFxBankSetPtrBank(const void*, const void*); +extern void MusFxBankInitialize(const void*); extern const u8 n64_ptr_tables_v2_00_ROM_START; extern const u8 n64_ptr_tables_v2_00_ROM_END; @@ -34,11 +35,10 @@ void func_800E9C20(void) romCopy(&n64_ptr_tables_v2_01_ROM_START, &D_80104710, &n64_ptr_tables_v2_01_ROM_END - &n64_ptr_tables_v2_01_ROM_START); romCopy(&n64_wave_data_ROM_START, &D_8010A760, &n64_wave_data_ROM_END - &n64_wave_data_ROM_START); - __something_music(&D_80164770, &n64_wave_table_00_ROM_START); - __something_music(&D_80104710, &n64_wave_table_01_ROM_START); - - func_80081F7C(&D_8010A760); + Mus__unknown_80081DB4(&D_80164770, &n64_wave_table_00_ROM_START); + Mus__unknown_80081DB4(&D_80104710, &n64_wave_table_01_ROM_START); + MusFxBankInitialize(&D_8010A760); MusFxBankSetPtrBank(&D_8010A760, &D_80104710); } @@ -70,7 +70,8 @@ typedef struct { /* 0x3C */ s32 field_0x3c; /* 0x40 */ s32 field_0x40; /* 0x44 */ s32 field_0x44; - /* 0x48 */ u8* addr; + /* 0x48 */ void* addr; + /* 0x4C */ s32 field_0x4c; } Arg; void func_800EA3BC(Arg* arg0) { @@ -149,7 +150,14 @@ void func_800EA568(Arg* arg0) { INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA604); -INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA6B0); +// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA6B0); + +void func_800EA6B0(Arg* arg0, s32 arg1, s32 arg2) { + arg0->field_0x4 = arg1 + 1; + arg0->field_0xc = arg2; + arg0->field_0x4c = 1; +} + INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA6C8); diff --git a/symbol_addrs.txt b/symbol_addrs.txt index 06b1681..2a72ce9 100644 --- a/symbol_addrs.txt +++ b/symbol_addrs.txt @@ -1,6 +1,28 @@ maybe_boot_01 = 0x800851C0; +__add_0x594284 = 0x8009DD28; + +D_800A81C0 = 0x800A81C0; // size:0x30 +D_800C4BBC = 0x800C4BBC; // size:0x8 +D_800AEFE0 = 0x800AEFE0; // size:0x8 +D_80197168 = 0x80197168; // size:0x10 + +D_800E7D90 = 0x800E7D90; // size:0x58 +D_800E7DE8 = 0x800E7DE8; // size:0x58 + +__SCREEN_IS_NOT_BLACK = 0x800C4BD8; +__calls_osViBlack = 0x80089BE4; +__set_black = 0x80089BC0; + +__MAIN_NOT_NULL_INF_LOOP = 0x800C4800; +__MAIN_START_BUT_CHECK = 0x800E79B0; // size:0x14 +__MAIN_START_BUT_STATE = 0x800E8214; + +__thread_80089358 = 0x80089358; +__idle_start_4_threads = 0x80088C50; + + __CONTROLLER_0_BUTTON = 0x800E8700; __menu_handle_input = 0x8019B8AC; // type:func @@ -105,6 +127,13 @@ __osSetSR = 0x8009A720; __osSpGetStatus = 0x800939F0; __osSpSetStatus = 0x8009A760; +osViGetNextFramebuffer = 0x800951A0; +osViSetYScale = 0x80095780; +osViSwapBuffer = 0x800957D0; +osPfsAllocateFile = 0x80095B90; +__osPfsDeclearPage = 0x80095E9C; +__osPfsSelectBank = 0x800970D0; + osDpSetNextBuffer = 0x8009A630; __scExec = 0x800943A4; __scAppendList = 0x8009434C; @@ -112,11 +141,12 @@ __scTaskComplete = 0x800942C0; __scTaskReady = 0x8009426C; __scHandleRDP = 0x800941DC; +osViGetCurrentFramebuffer = 0x800951E0; osViModeTable = 0x800AA7E0; osViSetMode = 0x800955C0; osViSetEvent = 0x80095560; __osViNext = 0x800ABBD4; -osViBlack = 0x80089BE4; +osViBlack = 0x80095B30; osViSetSpecialFeatures = 0x80095610; __init_controllers = 0x80089C60; @@ -127,7 +157,7 @@ MusFxBankInitialize = 0x80081F7C; // rom:0x1237C osUnmapTLBAll = 0x8009AB00; osMapTLBRdb = 0x8009AAA0; -__something_music = 0x80081DB4; +Mus__unknown_80081DB4 = 0x80081DB4; __real_read_controller = 0x8008A42C; __calls_romCopy_8009DA50 = 0x8009DA50; __calls_romCopy_8009DAF4 = 0x8009DAF4; diff --git a/undefined_funcs.txt b/undefined_funcs.txt index 32d0f2b..ecbf276 100644 --- a/undefined_funcs.txt +++ b/undefined_funcs.txt @@ -105,5 +105,3 @@ func_80243600 = 0x80243600; func_8024366C = 0x8024366C; func_802439E0 = 0x802439E0; func_80243B94 = 0x80243B94; - -func_80081F7C = 0x80081F7C; \ No newline at end of file