From 4f499b1f0f9a87c99e418218b89b5f2a9ec65c6c Mon Sep 17 00:00:00 2001 From: gijs Date: Wed, 18 Oct 2023 17:05:12 +0200 Subject: [PATCH] Decompiled `func_800764E0` and fixed `func_80077494` a bit --- src/_ob_rabid_jar.c | 118 ++++++++++++++++++++++++++++++-------------- 1 file changed, 82 insertions(+), 36 deletions(-) diff --git a/src/_ob_rabid_jar.c b/src/_ob_rabid_jar.c index 88adee7..eac854c 100644 --- a/src/_ob_rabid_jar.c +++ b/src/_ob_rabid_jar.c @@ -8,6 +8,56 @@ typedef struct { extern SomethingMalloc D_800E8300[]; +extern s32* D_800C4804; +extern s32 D_800C480A; +extern s32 D_800C49D2; +extern s32* D_800C4AD4; +extern s32* D_800C4B24; +extern s32 D_800C4B28; +extern s32* D_800C4BAC; +extern s32 D_800C4BB0; +extern s32 D_800C4BD0; +extern s32* D_800C4BDC; +extern s32* D_800C4BE0; +extern s32* D_800C4BE8; +extern s32* D_800C4C0C; +extern s32* D_800C4C4C; +extern s32 D_800E797C; +extern s32 D_800E79BC; +extern s32* D_800E7A08; +extern s32 D_800E7A24; +extern s32* D_800E7D6C; +extern s32 D_800E8100; +extern s32* D_800E8108; +extern s32* D_800E9BC0; +extern s32 __CONTROLLER_0_BUTTON; +extern s32 __MAIN_START_BUT_CHECK; +extern u8 __SOMETHING_WITH_GFX; + +extern u16 D_800C4C10[6]; + +extern struct { + s16 field_0x0; + s8 field_0x2; + s8 field_0x3; + s8 field_0x4; +} D_800AF0A0; + +extern s32 D_800AF0B0; +extern s16 D_800C49D0; +extern s32 D_800C4C20; +extern s32 D_800E79A0; + +extern u8 D_800E82C8[0x3F0]; + +extern s16 D_800AF0A6[4]; +extern void* D_800AF090[4]; +extern void* D_800C47F0[4]; + +extern void func_8007819C(); +extern void func_8009C7C0(s32 time); // this function doesnt take an s64 +extern s32 func_80173B60(s32); + INCLUDE_ASM(const s32, "_ob_rabid_jar", __calls_loads_overlay_array); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076150); @@ -52,7 +102,35 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80076324); INCLUDE_ASM(const s32, "_ob_rabid_jar", __get_overlay_index); -INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800764E0); +// INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800764E0); + +/* 68E0 800764E0 */ +void func_800764E0(void) { + u16 i; + + osGetTime(); + bzero(D_800E82C8, 0x3F0); + bzero(D_800C4C10, sizeof(D_800C4C10)); + + D_800C4C20 = 1; + D_800E79A0 = 8; + D_800C49D0 = 0; + D_800AF0B0 = 0; + D_800AF0A0.field_0x0 = 0; + D_800AF0A0.field_0x3 = 0; + D_800AF0A0.field_0x2 = 0; + D_800AF0A0.field_0x4 = 0; + + for(i = 0; i < 4; i++) { + D_800AF0A6[i] = 0; + D_800AF090[i] = &D_800AF0A0; + } + + func_8009C7C0(osGetTime()); + + D_800AF0B0 = func_80173B60(D_800AF0B0); + func_8007819C(); +} INCLUDE_ASM(const s32, "_ob_rabid_jar", func_800765D8); @@ -115,42 +193,10 @@ INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007740C); INCLUDE_ASM(const s32, "_ob_rabid_jar", func_8007745C); -// INCLUDE_ASM(const s32, "_ob_rabid_jar", func_80077494); - -extern s32 D_800AF090; -extern s32 D_800AF0A6; -extern s32 D_800C47F0; -extern s32* D_800C4804; -extern s32 D_800C480A; -extern s32 D_800C49D2; -extern s32* D_800C4AD4; -extern s32* D_800C4B24; -extern s32 D_800C4B28; -extern s32* D_800C4BAC; -extern s32 D_800C4BB0; -extern s32 D_800C4BD0; -extern s32* D_800C4BDC; -extern s32* D_800C4BE0; -extern s32* D_800C4BE8; -extern s32* D_800C4C0C; -extern u16 D_800C4C10; -extern s32* D_800C4C4C; -extern s32 D_800E797C; -extern s32 D_800E79BC; -extern s32* D_800E7A08; -extern s32 D_800E7A24; -extern s32* D_800E7D6C; -extern s32 D_800E8100; -extern s32* D_800E8108; -extern s32* D_800E9BC0; -extern s32 __CONTROLLER_0_BUTTON; -extern s32 __MAIN_START_BUT_CHECK; -extern u8 __SOMETHING_WITH_GFX; - /* 7894 80077494 */ void func_80077494(s32 arg0) { - if (arg0 == D_800C4C10) { - D_800C4BE0 = &D_800C47F0; + if (arg0 == D_800C4C10[0]) { + D_800C4BE0 = D_800C47F0; D_800E8108 = &__MAIN_START_BUT_CHECK; D_800C4BDC = &D_800E8100; D_800C4804 = &D_800C4BD0; @@ -164,7 +210,7 @@ void func_80077494(s32 arg0) { D_800E7D6C = &D_800C4BB0; D_800C4C4C = &__CONTROLLER_0_BUTTON; } else { - D_800C4BE0 = &D_800AF090; + D_800C4BE0 = D_800AF090; D_800E8108 = &D_800AF0A6; D_800C4BDC = &D_800AF0A6; D_800C4804 = &D_800AF0A6;