From 1d45805511d6eb6901422a43460b7f6fd7e4992c Mon Sep 17 00:00:00 2001 From: Ogre Date: Fri, 1 Sep 2023 21:21:24 +0200 Subject: [PATCH] Identified more code --- include/common.h | 34 +++++++ splat.yaml | 78 +++++++++------- src/19050.c | 25 +++++- src/19E30.c | 13 ++- src/1B3E0.c | 13 +-- src/A370.c | 161 ++++++++++++++++++++++++++++++++++ src/black.c | 5 +- src/main.c | 23 ++++- src/overlays/overlay0/3F1B0.c | 43 ++------- src/overlays/overlay1/42C30.c | 14 +-- symbol_addrs.txt | 58 ++++++++++-- undefined_syms.txt | 3 +- 12 files changed, 364 insertions(+), 106 deletions(-) create mode 100644 src/A370.c diff --git a/include/common.h b/include/common.h index 5028ea0..8ba2a07 100644 --- a/include/common.h +++ b/include/common.h @@ -10,4 +10,38 @@ typedef u8 bool; #define false 0 #define true 1 +typedef struct { + /* 0x00 */ s32 field_0x0; + /* 0x04 */ s32 field_0x4; + /* 0x08 */ s32 field_0x8; + /* 0x0c */ s32 field_0xc; + /* 0x10 */ s32 field_0x10; + /* 0x14 */ s32 field_0x14; + /* 0x18 */ s32 field_0x18; + /* 0x1C */ s32 field_0x1c; + /* 0x20 */ s32 field_0x20; + /* 0x24 */ unsigned long handle; + /* 0x28 */ s32 field_0x28; + /* 0x2C */ s32 field_0x2c; + /* 0x30 */ s32 field_0x30; + /* 0x34 */ s32 field_0x34; + /* 0x38 */ s32 field_0x38; + /* 0x3C */ s32 field_0x3c; + /* 0x40 */ s32 field_0x40; + /* 0x44 */ s32 field_0x44; + /* 0x48 */ void* dst_addr; + /* 0x4C */ s32 field_0x4c; +} SomethingMusic; // size:0x50 + +typedef struct { + /* 0x0 */ void* next; + /* 0x4 */ OSMesgQueue* mq; + /* 0x8 */ s16 flags; + /* 0xa */ s16 field_0xa; + /* 0xc */ s32 field_0xc; +} Stack__dma_load_loop; // size:0x10 + +extern void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* arg1, s16 arg2); +extern void Stack__dma_load_loop_delete(Stack__dma_load_loop* arg0); + #endif \ No newline at end of file diff --git a/splat.yaml b/splat.yaml index 4c7650c..4d8e203 100644 --- a/splat.yaml +++ b/splat.yaml @@ -51,7 +51,7 @@ segments: - [0x5FC0, asm] - [0x68E0, asm] - [0x8700, asm] - - [0xA370, asm] + - [0xA370, c] - [0xFC80, c, "boot"] - [0xFDC0, asm] - [0xFF10, asm] @@ -264,7 +264,8 @@ segments: - [0x2B060, asm] - [0x2B070, asm, "libultra/io/pfschecker"] - [0x2B790, asm] - - [0x2BA70, asm] + - [0x2BA70, asm, "libc/xlitob"] + - [0x2BCC0, asm] - [0x2C750, asm] - [0x2C770, asm] - [0x2C790, asm] @@ -300,36 +301,44 @@ segments: - [0x3AB90, asm] - [0x3ABC0, asm] - - [0x3BEC0, asm] - - - # - [0x3E198, rodata, "isallocatedpointer"] - # - [0x3E278, rodata] - # - [0x3E330, rodata] - # - [0x3E460, rodata, "logs_file_read_error"] - # - [0x3E7C0, rodata] - # - [0x3E7D0, rodata] - # - [0x3E7F0, rodata] - # - [0x3E810, rodata] - # - [0x3E8F0, rodata] - # - [0x3E930, rodata] - # - [0x3E9A0, rodata] - # - [0x3E9B0, rodata] - # - [0x3E9F0, rodata] - # - [0x3EAC0, rodata] - # - [0x3EB00, rodata, "libultra/gu/cosf"] - # - [0x3ECF0, rodata, "libultra/gu/lookat"] - # - [0x3ED40, rodata, "libultra/gu/lookathil"] - # - [0x3EDF0, rodata] - # - [0x3EE20, rodata] - # - [0x3EE70, rodata] - # - [0x3EE80, rodata] - # - [0x3EEA0, rodata] - # - [0x3F000, rodata, "libultra/io/vi"] - # - [0x3F070, rodata, heapcheck] - # - [0x3F0C0, rodata, heapcheck] - # - [0x3F140, rodata, heapcheck] - # - [0x3F170, rodata, heapcheck] + - [0x3BEC0, rodata, "libultra/os/initialize"] + - [0x3BEE0, rodata, "libultra/gu/rotate"] + - [0x3BEF0, rodata] + - [0x3BF20, rodata] + - [0x3BF70, rodata, "libultra/io/vi"] + - [0x3BFE0, rodata, "libultra/io/vimodepallan1"] + - [0x3C030, rodata, "libc/xlitob"] + - [0x3C060, rodata] + - [0x3C170, rodata] + - [0x3C180, rodata] + - [0x3C1A0, rodata] + - [0x3D190, rodata] + - [0x3D5A0, rodata] + - [0x3D990, rodata] + - [0x3E460, rodata] + - [0x3E7C0, rodata] + - [0x3E7D0, rodata] + - [0x3E7F0, rodata] + - [0x3E810, rodata] + - [0x3E8F0, rodata] + - [0x3E930, rodata] + - [0x3E9A0, rodata] + - [0x3E9B0, rodata] + - [0x3E9F0, rodata] + - [0x3EAC0, rodata] + - [0x3EB00, rodata] + - [0x3ECF0, rodata] + - [0x3ED40, rodata] + - [0x3EDF0, rodata] + - [0x3EE20, rodata] + - [0x3EE70, rodata] + - [0x3EE80, rodata] + - [0x3EEA0, rodata] + - [0x3F000, rodata] + - [0x3F070, rodata] + - [0x3F0C0, rodata] + - [0x3F140, rodata] + - [0x3F170, rodata] - { start: 0x3F1B0, type: bss, vram: 0x800E9C20 } @@ -496,7 +505,10 @@ segments: - [0x429CD0, bin, "n64_wave_table_01"] - [0x4E3140, bin, "n64_wave_data"] - - [0x4F0FB0, bin] + - [0x4F0FB0, bin] # Song + - [0x4F4070, bin] + + - [0x594280, bin] - [0x636784, bin, "last_battle_test.n64"] - [0x64A04C, bin, "makai_battle_bg1.n64"] diff --git a/src/19050.c b/src/19050.c index 4848448..8e1ad83 100644 --- a/src/19050.c +++ b/src/19050.c @@ -28,11 +28,31 @@ Unk0* func_80088EFC(void) { INCLUDE_ASM(const s32, "19050", __thread_80088F08); -INCLUDE_ASM(const s32, "19050", func_80089054); +extern Stack__dma_load_loop *D_800E9178[0]; +extern u8 __MAIN_NOT_NULL_INF_LOOP; + +/* 19454 80089054 */ +void Stack__dma_load_loop_new(Stack__dma_load_loop* arg0, OSMesgQueue* mq, s16 flags) +{ + s32 mask = osSetIntMask(OS_IM_NONE); + + arg0->mq = mq; + arg0->next = D_800E9178[0]; + arg0->flags = flags; + + D_800E9178[0] = arg0; + + if ((flags & 2) && (__MAIN_NOT_NULL_INF_LOOP != 0)) { + osSendMesg(mq, (u8*)(&D_800E9178) - 0x666, OS_MESG_NOBLOCK); + } + + osSetIntMask(mask); +} + INCLUDE_ASM(const s32, "19050", func_800890E4); -INCLUDE_ASM(const s32, "19050", func_80089124); +INCLUDE_ASM(const s32, "19050", Stack__dma_load_loop_delete); INCLUDE_ASM(const s32, "19050", func_800891A0); @@ -41,7 +61,6 @@ 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 { diff --git a/src/19E30.c b/src/19E30.c index e731936..c09581b 100644 --- a/src/19E30.c +++ b/src/19E30.c @@ -1,18 +1,15 @@ #include "common.h" -extern void func_80089054(s32*, OSMesgQueue*, s32); -extern void func_80089124(s32*); - -void __dma_load_loop(s32 arg0) { - s32 sp10[4]; +void __dma_load_loop(s32 count) { + Stack__dma_load_loop sp10; OSMesgQueue mq; OSMesg buf; osCreateMesgQueue(&mq, &buf, 1); - func_80089054(&sp10, &mq, 1); + Stack__dma_load_loop_new(&sp10, &mq, 1); - for(; arg0 != 0; arg0--) + for(; count != 0; count--) osRecvMesg(&mq, NULL, OS_MESG_BLOCK); - func_80089124(&sp10); + Stack__dma_load_loop_delete(&sp10); } diff --git a/src/1B3E0.c b/src/1B3E0.c index 432f4f9..3e2fe47 100644 --- a/src/1B3E0.c +++ b/src/1B3E0.c @@ -11,21 +11,12 @@ extern OSMesg OSMESG_800BE1A0[8]; /* 1B3E0 8008AFE0 */ void __thread_8008AFE0(void* arg0) { - typedef struct { - /* 0x0 */ void* field_0x0; - /* 0x4 */ OSMesgQueue* field_0x4; - /* 0x8 */ s32 field_0x8; - /* 0xc */ s32 field_0xc; - } Stack; - - extern void func_80089054(OSMesg, OSMesgQueue*, s32); - - Stack sp10; + Stack__dma_load_loop sp10; u16* sp20; s16 temp_v0; osCreateMesgQueue(&MQ_800C4C28, OSMESG_800BE1A0, 8); - func_80089054(&sp10, &MQ_800C4C28, 3); + Stack__dma_load_loop_new(&sp10, &MQ_800C4C28, 3); while(1) { osRecvMesg(&MQ_800C4C28, &sp20, OS_MESG_BLOCK); diff --git a/src/A370.c b/src/A370.c new file mode 100644 index 0000000..17d16d4 --- /dev/null +++ b/src/A370.c @@ -0,0 +1,161 @@ +#include "common.h" + +void Unpack(s32, s32); + +INCLUDE_ASM(const s32, "A370", func_80079F70); + +INCLUDE_ASM(const s32, "A370", func_8007A070); + +INCLUDE_ASM(const s32, "A370", Unpack); + +/* ABE0 8007A7E0 */ +u32 __read_u32_le(u8* arg0) { + return (arg0[0] << 24) | (arg0[1] << 16) | (arg0[2] << 8) | arg0[3]; +} + + +INCLUDE_ASM(const s32, "A370", func_8007A80C); + +INCLUDE_ASM(const s32, "A370", func_8007AB30); + +INCLUDE_ASM(const s32, "A370", func_8007AB7C); + +INCLUDE_ASM(const s32, "A370", func_8007ABAC); + +extern void __some_logging(char*, u8); +extern char D_800AE038; +extern OSMesgQueue MQ_800AF320; + +/* B030 8007AC30 */ +void UnpackProc(void) { + struct { + /* 0x00 */ s32 field_0x0; + /* 0x04 */ OSMesgQueue* field_0x4; + /* 0x08 */ u8 field_0x8; + /* 0x09 */ u8 field_0x9[3]; + /* 0x0C */ s32 field_0xc; + /* 0x10 */ s32 field_0x10; + } *sp10; + + sp10 = NULL; + while(1) { + osRecvMesg(&MQ_800AF320, &sp10, 1); + if (sp10->field_0x8 == 1) { + Unpack(sp10->field_0x10, sp10->field_0xc); + osSendMesg(sp10->field_0x4, sp10, 1); + } else { + __some_logging(&D_800AE038, sp10->field_0x8); + } + } +} + + +INCLUDE_ASM(const s32, "A370", func_8007ACB0); + +INCLUDE_ASM(const s32, "A370", func_8007AE9C); + +INCLUDE_ASM(const s32, "A370", func_8007AF3C); + +INCLUDE_ASM(const s32, "A370", func_8007AFE4); + +INCLUDE_ASM(const s32, "A370", func_8007B710); + +INCLUDE_ASM(const s32, "A370", func_8007B744); + +INCLUDE_ASM(const s32, "A370", func_8007B7A8); + +INCLUDE_ASM(const s32, "A370", func_8007B83C); + +INCLUDE_ASM(const s32, "A370", can_log_crc_error); + +INCLUDE_ASM(const s32, "A370", func_8007BA98); + +INCLUDE_ASM(const s32, "A370", func_8007BB48); + +INCLUDE_ASM(const s32, "A370", func_8007BB90); + +INCLUDE_ASM(const s32, "A370", func_8007BBC0); + +INCLUDE_ASM(const s32, "A370", func_8007BBF4); + +INCLUDE_ASM(const s32, "A370", func_8007BC24); + +INCLUDE_ASM(const s32, "A370", func_8007BF10); + +INCLUDE_ASM(const s32, "A370", func_8007C204); + +INCLUDE_ASM(const s32, "A370", func_8007C25C); + +INCLUDE_ASM(const s32, "A370", func_8007C378); + +INCLUDE_ASM(const s32, "A370", func_8007C438); + +INCLUDE_ASM(const s32, "A370", func_8007C538); + +INCLUDE_ASM(const s32, "A370", __logs_read_error); + +INCLUDE_ASM(const s32, "A370", func_8007C74C); + +INCLUDE_ASM(const s32, "A370", func_8007CAB8); + +INCLUDE_ASM(const s32, "A370", func_8007CE48); + +INCLUDE_ASM(const s32, "A370", func_8007D200); + +INCLUDE_ASM(const s32, "A370", func_8007D594); + +INCLUDE_ASM(const s32, "A370", func_8007D5B8); + +INCLUDE_ASM(const s32, "A370", func_8007D7BC); + +INCLUDE_ASM(const s32, "A370", func_8007D8A8); + +INCLUDE_ASM(const s32, "A370", func_8007DBF4); + +INCLUDE_ASM(const s32, "A370", func_8007DDF0); + +INCLUDE_ASM(const s32, "A370", func_8007DFF0); + +INCLUDE_ASM(const s32, "A370", func_8007E2F8); + +INCLUDE_ASM(const s32, "A370", func_8007E698); + +INCLUDE_ASM(const s32, "A370", func_8007E6DC); + +INCLUDE_ASM(const s32, "A370", func_8007E800); + +INCLUDE_ASM(const s32, "A370", func_8007E8F0); + +INCLUDE_ASM(const s32, "A370", func_8007EE2C); + +INCLUDE_ASM(const s32, "A370", func_8007F1A0); + +INCLUDE_ASM(const s32, "A370", func_8007F1F8); + +INCLUDE_ASM(const s32, "A370", func_8007F218); + +INCLUDE_ASM(const s32, "A370", func_8007F234); + +INCLUDE_ASM(const s32, "A370", func_8007F314); + +INCLUDE_ASM(const s32, "A370", func_8007F334); + +INCLUDE_ASM(const s32, "A370", func_8007F408); + +INCLUDE_ASM(const s32, "A370", func_8007F450); + +INCLUDE_ASM(const s32, "A370", func_8007F47C); + +INCLUDE_ASM(const s32, "A370", func_8007F4B0); + +INCLUDE_ASM(const s32, "A370", func_8007F4E4); + +INCLUDE_ASM(const s32, "A370", __file_read); + +INCLUDE_ASM(const s32, "A370", __file_write); + +void func_8007F640(void) { } + +INCLUDE_ASM(const s32, "A370", func_8007F648); + +INCLUDE_ASM(const s32, "A370", func_8007F844); diff --git a/src/black.c b/src/black.c index 1870bd3..78f7fe4 100644 --- a/src/black.c +++ b/src/black.c @@ -1,3 +1,4 @@ +#include "PR/os.h" #include "common.h" void __set_black(); @@ -14,9 +15,9 @@ void __set_black() { /* 19FE4 80089BE4 */ void __calls_osViBlack(bool black) { - if (osTvType == 0) + if (osTvType == OS_TV_PAL) { - if (black == 1) + if (black == true) osViSetYScale(1.0f); else osViSetYScale(0.833f); diff --git a/src/main.c b/src/main.c index 59e20a0..479928d 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,4 @@ +#include "PR/os.h" #include "common.h" INCLUDE_ASM(const s32, "main", func_80070C60); @@ -132,7 +133,27 @@ INCLUDE_ASM(const s32, "main", func_80073ED8); INCLUDE_ASM(const s32, "main", func_80073F58); -INCLUDE_ASM(const s32, "main", func_80073FD4); +// INCLUDE_ASM(const s32, "main", func_80073FD4); + +extern SomethingMusic* __MAYBE_SONG_ARRAY_800A8218[7]; +/* 43D4 80073FD4 */ +void __initialize_song_mem(void) { + s32 mask; + s32 count; + + mask = osSetIntMask(OS_IM_NONE); + for(count = 0; count < 7; count++) { + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x2c = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x30 = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x34 = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x38 = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x3c = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x40 = 0; + __MAYBE_SONG_ARRAY_800A8218[count]->field_0x4c = 0; + } + osSetIntMask(mask); +} + INCLUDE_ASM(const s32, "main", func_80074050); diff --git a/src/overlays/overlay0/3F1B0.c b/src/overlays/overlay0/3F1B0.c index 3367a57..9949431 100644 --- a/src/overlays/overlay0/3F1B0.c +++ b/src/overlays/overlay0/3F1B0.c @@ -1,11 +1,6 @@ #include "common.h" -#include - -void __calls_romCopy_800EA488(void*); - -// INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800E9C20); - +void __load_song(void*); extern void romCopy(const void* src, const void* dst, const s32 len); extern void Mus__unknown_80081DB4(const void* arg0, const void* arg1); @@ -29,6 +24,7 @@ extern const u8 D_8010A760; extern const u8 D_80164770; extern const u8 D_80104710; +/* 3F1B0 800E9C20 */ void func_800E9C20(void) { romCopy(&n64_ptr_tables_v2_00_ROM_START, &D_80164770, &n64_ptr_tables_v2_00_ROM_END - &n64_ptr_tables_v2_00_ROM_START); @@ -51,30 +47,7 @@ INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA0E4); INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA1C8); -typedef struct { - /* 0x00 */ s32 field_0x0; - /* 0x04 */ s32 field_0x4; - /* 0x08 */ s32 field_0x8; - /* 0x0c */ s32 field_0xc; - /* 0x10 */ s32 field_0x10; - /* 0x14 */ s32 field_0x14; - /* 0x18 */ s32 field_0x18; - /* 0x1C */ s32 field_0x1c; - /* 0x20 */ s32 field_0x20; - /* 0x24 */ unsigned long handle; - /* 0x28 */ s32 field_0x28; - /* 0x2C */ s32 field_0x2c; - /* 0x30 */ s32 field_0x30; - /* 0x34 */ s32 field_0x34; - /* 0x38 */ s32 field_0x38; - /* 0x3C */ s32 field_0x3c; - /* 0x40 */ s32 field_0x40; - /* 0x44 */ s32 field_0x44; - /* 0x48 */ void* addr; - /* 0x4C */ s32 field_0x4c; -} Arg; - -void func_800EA3BC(Arg* arg0) { +void func_800EA3BC(SomethingMusic* arg0) { s32 temp_a1; s32 temp_v0; s32 temp_v1; @@ -98,12 +71,12 @@ extern s32 func_80081B08(s32); extern s32 D_800EB0E8; -void func_800EA3E4(Arg* arg0) { +void func_800EA3E4(SomethingMusic* arg0) { s32 var_v0; if (func_80081B08(arg0->handle) == 0) { D_800EB0E8 = 0; - __calls_romCopy_800EA488(arg0); + __load_song(arg0); return; } if (arg0->field_0x38 == 0) { @@ -122,14 +95,14 @@ void func_800EA3E4(Arg* arg0) { } -INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", __calls_romCopy_800EA488); +INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", __load_song); // INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA568); extern s32 func_80081770(s32); extern void func_80081DF0(const void*); -void func_800EA568(Arg* arg0) { +void func_800EA568(SomethingMusic* arg0) { if (arg0->field_0x18 != 0) { if (func_80081B08(arg0->handle) != 0) { @@ -152,7 +125,7 @@ INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA604); // INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800EA6B0); -void func_800EA6B0(Arg* arg0, s32 arg1, s32 arg2) { +void func_800EA6B0(SomethingMusic* arg0, s32 arg1, s32 arg2) { arg0->field_0x4 = arg1 + 1; arg0->field_0xc = arg2; arg0->field_0x4c = 1; diff --git a/src/overlays/overlay1/42C30.c b/src/overlays/overlay1/42C30.c index d92ef03..147701d 100644 --- a/src/overlays/overlay1/42C30.c +++ b/src/overlays/overlay1/42C30.c @@ -1,19 +1,19 @@ #include "common.h" u8 D_80187020; -u8 D_80187021; +u8 __compared_osTvType; /* 42C30 8016CD30 */ -u8 func_8016CD30(void) { +u8 __get_compared_osTvType(void) { return D_80187020; } /* 42C3C 8016CD3C */ -u8 func_8016CD3C(void) { +u8 __reset_compared_osTvType(void) { u8 temp_v0; - temp_v0 = D_80187021; - D_80187021 = 0; + temp_v0 = __compared_osTvType; + __compared_osTvType = 0; return temp_v0; } @@ -23,9 +23,9 @@ void func_8016CD50(u8 arg0) { } /* 42C5C 8016CD5C */ -void func_8016CD5C(u8 arg0) { +void __inc_compared_osTvType(u8 arg0) { if (D_80187020 != arg0) { - D_80187021 = arg0 + 1; + __compared_osTvType = arg0 + 1; } D_80187020 = arg0; } diff --git a/symbol_addrs.txt b/symbol_addrs.txt index 8c18f65..5196e91 100644 --- a/symbol_addrs.txt +++ b/symbol_addrs.txt @@ -1,4 +1,5 @@ + maybe_boot_01 = 0x800851C0; __add_0x594284 = 0x8009DD28; @@ -19,17 +20,25 @@ osAiSetFrequency = 0x8008C430; osAiGetLength = 0x8008C410; osAiGetStatus = 0x8008C420; + __osException = 0x80098D70; __osExceptionPreamble = 0x80098D60; +dtor_rotate = 0x800ABAE0; // type:f32 +ldigs = 0x800ABC30; // type:asciz +udigs = 0x800ABC44; // type:asciz +_Litob = 0x8009B670; + __osSiRawWriteIo = 0x -__osFinalrom = 0x800E82C0; -osViClock = 0x800ABAC8; +__osFinalrom = 0x800E82C0; // type:u32 +osViClock = 0x800ABAC8; // type:s32 +__OSGlobalIntMask = 0x800ABAD0; // type:u32 +__osShutdown = 0x800ABACC; // type:u32 __osSiRawReadIo = 0x8009A830; __osSiRawWriteIo = 0x8009A880; osResetType = 0x8000030C; osAppNMIBuffer = 0x8000031C; -osClockRate = 0x800ABAC0; +osClockRate = 0x800ABAC0; // type:u64 osPiRawStartDma = 0x800997F0; osEPiRawStartDma = 0x8008BA50; @@ -168,10 +177,18 @@ osViGetCurrentFramebuffer = 0x800951E0; osViModeTable = 0x800AA7E0; osViSetMode = 0x800955C0; osViSetEvent = 0x80095560; +vi = 0x800ABB70; // size:0x60 +__osViCurr = 0x800ABBD0; __osViNext = 0x800ABBD4; osViBlack = 0x80095B30; osViSetSpecialFeatures = 0x80095610; +osViModeNtscHpf1 = 0x800AB9B0; +osViModeMpalHpf1 = 0x800ABA50; +osViModePalLan1 = 0x800ABBE0; +osViModeMpalLan1 = 0x800ABA00; +osViModeNtscLan1 = 0x800AB960; + __init_controllers = 0x80089C60; MusFxBankInitialize = 0x80081F7C; // rom:0x1237C @@ -188,7 +205,7 @@ __calls_romCopy_8009DBB8 = 0x8009DBB8; __calls_romCopy_8009DD38 = 0x8009DD38; __calls_romCopy_8009DE40 = 0x8009DE40; __calls_romCopy_8009DF48 = 0x8009DF48; -__calls_romCopy_800EA488 = 0x800EA488; +//__calls_romCopy_800EA488 = 0x800EA488; __start_thread_800BE1C0 = 0x8008B0B0; __start_thread_800B9C88 = 0x80089660; @@ -206,6 +223,7 @@ __MUS_MEM_800B1870 = 0x800B1870; __MUS_MEM_800B1868 = 0x800B1868; MQ_CONTROLLER = 0x800E9B88; +MQ_SWAP_BUFFER = 0x800E9BA8; MQ_800E7988 = 0x800E7988; MQ_800C4A00 = 0x800C4A00; MQ_800E9BF0 = 0x800E9BF0; @@ -241,7 +259,33 @@ THREAD_800B7A90 = 0x800B7A90; THREAD_800BE1C0 = 0x800BE1C0; THREAD_800B9C88 = 0x800B9C88; -__thread_8007AC30 = 0x8007AC30; +// Name taken from error message. +UnpackProc = 0x8007AC30; +// Inferred from UnpackProc. +Unpack = 0x8007A110; + +__read_u32_le = 0x8007A7E0; + +__load_song = 0x800EA488; +__SONG_VOLUME = 0x800EB2E0; +__SONG_SOURCE_START = 0x800EB4F0; +__SONG_SOURCE_END = 0x800EB4F4; + +__MAYBE_SONG_800EB0B0 = 0x800EB0B0; // size:0x50 +__MAYBE_SONG_800EB100 = 0x800EB100; // size:0x50 +__MAYBE_SONG_800EB150 = 0x800EB150; // size:0x50 +__MAYBE_SONG_800EB1A0 = 0x800EB1A0; // size:0x50 +__MAYBE_SONG_800EB1F0 = 0x800EB1F0; // size:0x50 +__MAYBE_SONG_800EB240 = 0x800EB240; // size:0x50 +__MAYBE_SONG_800EB290 = 0x800EB290; // size:0x50 +// 7 pointers +__MAYBE_SONG_ARRAY_800A8218 = 0x800A8218; // size:0x1C +__initialize_song_mem = 0x80073FD4; + +Stack__dma_load_loop_new = 0x80089054; +Stack__dma_load_loop_delete = 0x80089124; + + __thread_8008AFE0 = 0x8008AFE0; __thread_80088F08 = 0x80088F08; __thread_80089200 = 0x80089200; @@ -251,6 +295,10 @@ __thread_80089540 = 0x80089540; SWAP_BUFFER_FUNC = 0x800A9E84; set_swap_buffer_func = 0x800899D0; +__reset_compared_osTvType = 0x8016CD3C; +__get_compared_osTvType = 0x8016CD30; +__inc_compared_osTvType = 0x8016CD5C; +__compared_osTvType = 0x80187021; romCopy = 0x80089F80; diff --git a/undefined_syms.txt b/undefined_syms.txt index 795a487..7bd4e21 100644 --- a/undefined_syms.txt +++ b/undefined_syms.txt @@ -36,4 +36,5 @@ D_800A8210 = 0x800A8210; D_80187020 = 0x80187020; D_80187030 = 0x80187030; D_8018F1A0 = 0x8018F1A0; -D_8018FC18 = 0x8018FC18; \ No newline at end of file +D_8018FC18 = 0x8018FC18; +D_800EB0E8 = 0x800EB0E8; \ No newline at end of file