From 388632b8dd8ec2dac307798b6a16084b4662ec96 Mon Sep 17 00:00:00 2001 From: Ogre Date: Wed, 30 Aug 2023 14:56:42 +0200 Subject: [PATCH] More code --- splat.yaml | 20 +++-- src/19DD0.c | 4 +- src/1A050.c | 5 +- src/1A660.c | 1 - src/1A9A0.c | 23 ++++++ src/1AA00.c | 4 +- src/1AAA0.c | 32 ++++++++ src/26E90.c | 7 ++ src/main.c | 55 +++++++++++++- src/mus.c | 28 ++++--- src/overlays/overlay0/3F1B0.c | 46 ++++++----- src/overlays/overlay99/2AE3C0.c | 131 ++++++++++++++++++++++++++++++++ symbol_addrs.txt | 32 +++++++- 13 files changed, 331 insertions(+), 57 deletions(-) create mode 100644 src/1A9A0.c create mode 100644 src/1AAA0.c create mode 100644 src/26E90.c create mode 100644 src/overlays/overlay99/2AE3C0.c diff --git a/splat.yaml b/splat.yaml index 93167db..4179540 100644 --- a/splat.yaml +++ b/splat.yaml @@ -108,9 +108,9 @@ segments: - [0x1A4F0, asm] - [0x1A5B0, asm] - [0x1A660, c] - - [0x1A9A0, asm] + - [0x1A9A0, c] - [0x1AA00, c] - - [0x1AAA0, asm] + - [0x1AAA0, c] - [0x1AD10, asm] - [0x1AFD0, asm] - [0x1B030, asm] @@ -153,6 +153,7 @@ segments: - [0x20540, asm, "libultra/os/writebackdcache"] - [0x205C0, asm, "libultra/os/writebackdcacheall"] - [0x205F0, asm, "libultra/os/contquery"] + - [0x20690, asm, "libultra/os/contreaddata"] - [0x20870, asm, "libultra/io/controller"] - [0x20B80, asm, "libultra/os/virtualtophysical"] - [0x20BE0, asm, "libultra/os/sqrtf"] @@ -172,10 +173,13 @@ segments: - [0x239A0, asm, "libultra/os/jammesg"] - [0x23AE0, asm, "libultra/os/recvmesg"] - [0x23C10, asm, "libultra/os/sendmesg"] - - [0x23DF0, asm] + - [0x23DF0, asm, "libultra/io/spgetstat"] + - [0x23E00, asm, "libultra/io/sptask"] + - [0x23E00, asm] - [0x24040, asm] - [0x24060, asm] - [0x240B0, asm] + - [0x24AC0, asm, "libultra/io/sirawdma"] - [0x24B70, asm, "libultra/io/siacs"] - [0x24C60, asm, "libultra/os/createthread"] - [0x24D50, asm, "libultra/os/setthreadpri"] @@ -203,13 +207,13 @@ segments: - [0x265E0, asm] - [0x26BC0, asm] - [0x26D80, asm] - - [0x26E90, asm] + - [0x26E90, c] - [0x27260, asm] - [0x272C0, asm] - [0x274D0, asm] - - [0x27540, asm] - - [0x27FD0, asm] - - [0x281C0, asm] + - [0x27540, asm, "libultra/io/contpfs"] + - [0x27FD0, asm, "libultra/io/contramread"] + - [0x281C0, asm, "libultra/io/contramwrite"] - [0x28430, asm] - [0x28450, asm, "libultra/os/initialize"] - [0x28740, asm, "libultra/gu/mtxcatl"] @@ -415,7 +419,7 @@ segments: follows_vram: main exclusive_ram_id: ovl_99 subsegments: - - [0x2AE3C0, asm] + - [0x2AE3C0, c] - [0x2B5230, asm] - [0x2B6F40, asm] - [0x2B8610, asm] diff --git a/src/19DD0.c b/src/19DD0.c index 3599d40..dcc55ac 100644 --- a/src/19DD0.c +++ b/src/19DD0.c @@ -2,9 +2,9 @@ #include -extern s32 FP_800A9E84; +extern void* FP_800A9E84; -void __set_fp_800A9E84(s32 arg0) { +void __set_fp_800A9E84(void* arg0) { s32 mask; mask = osSetIntMask(OS_IM_NONE); diff --git a/src/1A050.c b/src/1A050.c index 9005417..8665533 100644 --- a/src/1A050.c +++ b/src/1A050.c @@ -1,11 +1,14 @@ #include "common.h" -#include +#include + +void romCopy(const void* src, const void* dst, const s32 len); OSPiHandle* CART_HANDLE; OSMesgQueue MQ_800BE030; OSMesg OSMESG_800BE048[0x32]; + INCLUDE_ASM(const s32, "1A050", func_80089C50); INCLUDE_ASM(const s32, "1A050", __init_controllers); diff --git a/src/1A660.c b/src/1A660.c index edcfbe8..d320631 100644 --- a/src/1A660.c +++ b/src/1A660.c @@ -18,7 +18,6 @@ extern OSMesgQueue MQ_800E9BF0; INCLUDE_ASM(const s32, "1A660", func_8008A260); -// INCLUDE_ASM(const s32, "1A660", func_8008A334); extern void func_8008B1D0(u8*); extern u8 D_800A9FF8; diff --git a/src/1A9A0.c b/src/1A9A0.c new file mode 100644 index 0000000..d3bee59 --- /dev/null +++ b/src/1A9A0.c @@ -0,0 +1,23 @@ +#include "PR/os.h" +#include "common.h" + +#include + +extern s32 D_800C4B30; + +void func_8008A5A0(void) { + s32 temp_v0; + + temp_v0 = osSetIntMask(OS_IM_NONE); + D_800C4B30 = 1; + osSetIntMask(temp_v0); +} + +void func_8008A5D0(void) { + s32 temp_v0; + + temp_v0 = osSetIntMask(OS_IM_NONE); + D_800C4B30 = 0; + osSetIntMask(temp_v0); +} + diff --git a/src/1AA00.c b/src/1AA00.c index c25d314..c147952 100644 --- a/src/1AA00.c +++ b/src/1AA00.c @@ -19,9 +19,9 @@ void func_8008A640(void) { func_80089CF8(0x103, 0); } -extern s32 D_800A9FE0; +extern void(*D_800A9FE0)(s16); -void func_8008A660(s32 arg0) { +void __set_fp_8008A660(void(*arg0)(s16)) { s32 mask; mask = osSetIntMask(OS_IM_NONE); diff --git a/src/1AAA0.c b/src/1AAA0.c new file mode 100644 index 0000000..eaae4dc --- /dev/null +++ b/src/1AAA0.c @@ -0,0 +1,32 @@ +#include "common.h" + +#include + +extern void func_8008B130(u8*); +extern u8 D_800AA040; + +void func_8008A6A0(void) { + func_8008B130(&D_800AA040); +} + +extern void func_8008B1D0(u8*); + +void func_8008A6C0(void) { + func_8008B1D0(&D_800AA040); +} + +INCLUDE_ASM(const s32, "1AAA0", func_8008A6E0); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A730); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A758); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A798); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A850); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A890); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A8BC); + +INCLUDE_ASM(const s32, "1AAA0", func_8008A8E8); diff --git a/src/26E90.c b/src/26E90.c new file mode 100644 index 0000000..cae449e --- /dev/null +++ b/src/26E90.c @@ -0,0 +1,7 @@ +#include "common.h" + +INCLUDE_ASM(const s32, "26E90", func_80096A90); + +INCLUDE_ASM(const s32, "26E90", func_80096B90); + +INCLUDE_ASM(const s32, "26E90", func_80096D88); diff --git a/src/main.c b/src/main.c index f7411ec..cea187c 100644 --- a/src/main.c +++ b/src/main.c @@ -1,5 +1,8 @@ +#include "PR/os.h" #include "common.h" +#include + INCLUDE_ASM(const s32, "main", func_80070C60); INCLUDE_ASM(const s32, "main", AddHeap); @@ -48,13 +51,57 @@ INCLUDE_ASM(const s32, "main", func_80072738); INCLUDE_ASM(const s32, "main", func_800727D8); -INCLUDE_ASM(const s32, "main", func_8007284C); +extern u8 D_800AEF9A; +extern OSContPad __GLOBAL_CONTROLLER_DATA; -INCLUDE_ASM(const s32, "main", func_800728BC); +void func_8007284C(u16 __unused) { + const u16 pattern_a = CONT_A | CONT_B | CONT_L | CONT_START; + const u16 pattern_b = CONT_A | CONT_B | CONT_G | CONT_START; -INCLUDE_ASM(const s32, "main", func_80072900); + if ((D_800AEF9A & 1) && !(D_800AEF9A & 4)) { + if (D_800AEF9A & 2) { + if (__GLOBAL_CONTROLLER_DATA.button == 0) { + D_800AEF9A = D_800AEF9A & 0xFD; + } + } else if (__GLOBAL_CONTROLLER_DATA.button == pattern_a || + __GLOBAL_CONTROLLER_DATA.button == pattern_b) { + D_800AEF9A = D_800AEF9A | 6; + } + } +} + +u8 func_800728BC(void) { + s32 mask; + u8 temp_s0; + + mask = osSetIntMask(OS_IM_NONE); + temp_s0 = D_800AEF9A | 1; + D_800AEF9A = temp_s0; + osSetIntMask(mask); + return temp_s0; +} + +u8 func_80072900(void) { + s32 mask; + u8 temp_s0; + + mask = osSetIntMask(OS_IM_NONE); + temp_s0 = D_800AEF9A & 0xFA; + D_800AEF9A = temp_s0; + osSetIntMask(mask); + return temp_s0; +} + +s32 func_80072944(void) { + u8 temp_s0; + s32 mask; + + mask = osSetIntMask(OS_IM_NONE); + temp_s0 = D_800AEF9A; + osSetIntMask(mask); + return temp_s0 & 4; +} -INCLUDE_ASM(const s32, "main", func_80072944); INCLUDE_ASM(const s32, "main", __calls_copy_controller_data); diff --git a/src/mus.c b/src/mus.c index 2057673..94fbef2 100644 --- a/src/mus.c +++ b/src/mus.c @@ -39,15 +39,16 @@ INCLUDE_ASM(const s32, "mus", func_80081CA0); INCLUDE_ASM(const s32, "mus", func_80081D2C); -void __something_music(void* arg0) { - func_8008350C(); +INCLUDE_ASM(const s32, "mus", __something_music); - if (musCurrentPtrBank == 0) { - musCurrentPtrBank = arg0; - } -} +// void __something_music(void* arg0) { +// func_8008350C(); + +// if (musCurrentPtrBank == 0) { +// musCurrentPtrBank = arg0; +// } +// } -// INCLUDE_ASM(const s32, "mus", func_80081DF0); extern void* D_800B1828; void* func_80081DF0(void* arg0) { @@ -57,14 +58,11 @@ void* func_80081DF0(void* arg0) { return D_800B1828; } - -INCLUDE_ASM(const s32, "mus", MusPtrBankSetCurrent); - -// void MusPtrBankSetCurrent(void* arg0) { -// if ((arg0 != NULL) && (arg0->unk10 < 0)) { -// D_800B182C = arg0; -// } -// } +void MusPtrBankSetCurrent(void* arg0) { + if ((arg0 != NULL) && ((*(s32*)(arg0 + 0x10)) < 0)) { + musCurrentPtrBank = arg0; + } +} INCLUDE_ASM(const s32, "mus", func_80081E3C); diff --git a/src/overlays/overlay0/3F1B0.c b/src/overlays/overlay0/3F1B0.c index e462b9e..eee87d3 100644 --- a/src/overlays/overlay0/3F1B0.c +++ b/src/overlays/overlay0/3F1B0.c @@ -4,28 +4,34 @@ INCLUDE_ASM(const s32, "overlays/overlay0/3F1B0", func_800E9C20); -// extern u8 D_2B8BA0; -// extern u8 D_2BF250; -// extern u8 D_423FF0; -// extern u8 D_429CD0; -// extern u8 D_4E3140; -// extern u8 D_4F0FB0; -// extern u8 D_80104710; -// extern u8 D_8010A760; -// extern u8 D_80164770; +// extern void romCopy(const void* src, const void* dst, const s32 len); +// extern void __something_music(void* arg0, void* arg1); +// extern void func_80081F7C(void* arg); +// extern void MusFxBankSetPtrBank(void*, void*); -// extern void romCopy(u8* src, u8* dst, u32 len); -// extern void __something_music(u8*, u8*); -// extern void MusFxBankInitialize(u8*); -// extern void MusFxBankSetPtrBank(u8*, u8*); +// extern u32 D_2B8BA0; +// extern u32 D_2BF250; +// extern u32 D_2BF250_other; +// extern u32 D_423FF0; +// extern u32 D_429CD0; +// extern u32 D_429CD0_other; +// extern u32 D_4E3140; +// extern u32 D_4F0FB0; +// extern u32 D_80104710; +// extern u32 D_8010A760; +// extern u32 D_80164770; -// void func_800E9C20(void) { -// romCopy(&D_2B8BA0, &D_80164770, &D_2BF250 - &D_2B8BA0); -// romCopy(&D_423FF0, &D_80104710, &D_429CD0 - &D_423FF0); -// romCopy(&D_4E3140, &D_8010A760, &D_4F0FB0 - &D_4E3140); -// __something_music(&D_80164770, &D_2BF250); -// __something_music(&D_80104710, &D_429CD0); -// MusFxBankInitialize(&D_8010A760); +// void func_800E9C20(void) +// { +// romCopy(&D_2B8BA0, &D_80164770, (u32)&D_2BF250 - (u32)&D_2B8BA0); +// romCopy(&D_423FF0, &D_80104710, (u32)&D_429CD0 - (u32)&D_423FF0); +// romCopy(&D_4E3140, &D_8010A760, (u32)&D_4F0FB0 - (u32)&D_4E3140); + +// __something_music(&D_80164770, &D_2BF250_other); +// __something_music(&D_80104710, &D_429CD0_other); + +// func_80081F7C(&D_8010A760); + // MusFxBankSetPtrBank(&D_8010A760, &D_80104710); // } diff --git a/src/overlays/overlay99/2AE3C0.c b/src/overlays/overlay99/2AE3C0.c new file mode 100644 index 0000000..b9bf685 --- /dev/null +++ b/src/overlays/overlay99/2AE3C0.c @@ -0,0 +1,131 @@ +#include "common.h" + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031DFC0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E0DC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E110); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E158); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E254); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E6A8); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031E748); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031EBB8); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031EFEC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F070); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F1C4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F1F4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F2C0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F38C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F454); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F484); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F53C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F668); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8031F868); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803200FC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320484); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803207DC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320930); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320A8C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320C14); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320C28); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80320D8C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8032111C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803211E4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803212E4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803213FC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803215D8); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321864); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321B78); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321CC4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321D18); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321D74); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321DB4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80321EA4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803220F0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803221DC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80322468); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80322F00); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323094); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323304); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323354); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323398); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803234A0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803234D0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323930); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8032399C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323B08); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323BE4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80323D04); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_8032421C); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803243D0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_803244DC); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324590); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324788); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324814); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324958); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324BA0); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324BB4); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324C44); + +INCLUDE_ASM(const s32, "overlays/overlay99/2AE3C0", func_80324C6C); diff --git a/symbol_addrs.txt b/symbol_addrs.txt index bf35a1b..7979839 100644 --- a/symbol_addrs.txt +++ b/symbol_addrs.txt @@ -11,8 +11,35 @@ __MENU_INDEX = 0x801BA94C; __GLOBAL_CONT_STATUS = 0x800C4B38; +__set_fp_8008A660 = 0x8008A660; + musCurrentPtrBank = 0x800B182C; +__osContRamRead = 0x80097BD0; +__osContRamWrite = 0x80097DC0; + +__osRepairPackId = 0x800971B8; +__osSumcalc = 0x80097140; +__osIdCheckSum = 0x80097174; +__osCheckPackId = 0x800974A4; +__osGetId = 0x80097608; +__osCheckId = 0x800977D4; +__osPfsRWInode = 0x8009788C; + +osSpTaskLoad = 0x80093A00; +osSpTaskStartGo = 0x80093C0C; +__osSpSetStatus = 0x8009A770; +__osSpRawStartDma = 0x8009A7A0; +__osSpDeviceBusy = 0x8009A740; +__osSpSetPc = 0x8009A770; + +osDpSetNextBuffer = 0x8009A630; +__scExec = 0x800943A4; +__scAppendList = 0x8009434C; +__scTaskComplete = 0x800942C0; +__scTaskReady = 0x8009426C; +__scHandleRDP = 0x800941DC; + osViModeTable = 0x800AA7E0; osViSetMode = 0x800955C0; osViSetEvent = 0x80095560; @@ -22,7 +49,7 @@ osViSetSpecialFeatures = 0x80095610; __init_controllers = 0x80089C60; -MusFxBankInitialize = 0x80081F7C; +MusFxBankInitialize = 0x80081F7C; // rom:0x1237C osGetCause = 0x8009A6D0; osGetSR = 0x8009A6F0; @@ -32,11 +59,8 @@ osSetSR = 0x8009A720; osUnmapTLBAll = 0x8009AB00; osMapTLBRdb = 0x8009AAA0; - __something_music = 0x80081DB4; - __real_read_controller = 0x8008A42C; - __calls_romCopy_8009DA50 = 0x8009DA50; __calls_romCopy_8009DAF4 = 0x8009DAF4; __calls_romCopy_8009DBB8 = 0x8009DBB8;