From 7e0dbcc144b9d4cc1055cfdb0fde308282f603e3 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Sun, 19 May 2024 10:55:12 -0400 Subject: [PATCH] update m446 to have a header --- include/REL/m446Dll.h | 76 ++++++++++++++++++++++++++++++++++++++ src/REL/m446Dll/card.c | 79 +++++++++++++++++++++++++++++++++++++++ src/REL/m446Dll/main.c | 84 +++++------------------------------------- 3 files changed, 164 insertions(+), 75 deletions(-) create mode 100644 include/REL/m446Dll.h diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h new file mode 100644 index 00000000..c092f2d3 --- /dev/null +++ b/include/REL/m446Dll.h @@ -0,0 +1,76 @@ +#include "dolphin/types.h" + +#include "game/process.h" +#include "game/object.h" + +typedef struct _unkSubStruct { + s32 unk0; + char unk4[0x20]; + s32 unk24; + char unk28[0x3C]; + u8 unk64; + u8 unk65; + u8 unk66; + s32 unk68; + char unk6C[0x4]; +} unkSubStruct; + +typedef struct _unkSubStruct2 { + s32 unk0; + s32 unk4; + char unk8[0x68]; + s32 unk70; + s32 unk74; + s32 unk78; +} unkSubStruct2; + +typedef struct _unkStruct { + s32 unk0; + s16 unk4; + s16 unk6; + char unk8[0x4]; + s32 unkC; + s32 unk10; + s32 unk14; + s32 unk18; + s32 unk1C; + unkSubStruct *unk20; + s32 unk24; + s32 unk28; + unkSubStruct *unk2C[2]; + unkSubStruct2 *unk34; + s32 unk38[23]; + s32 unk94; + Process *unk98; +} unkStruct; + +typedef struct _unkStruct2 { + s32 *unk0; + s32 unk4; + s32 unk8; +} unkStruct2; + +typedef struct _unkStruct3 { + s32 unk0; + s32 unk4; + s32 unk8; +} unkStruct3; + +typedef void (*m446Func)(unkStruct *); + +// prototypes +extern void ModuleProlog(void); +extern void fn_1_13C(omObjData*); +extern unkStruct* m446FlowCreate(void); +extern void fn_1_3FC(unkStruct*); +extern void fn_1_4B4(unkStruct*); +extern void fn_1_53C(unkStruct*); +extern void fn_1_958(unkStruct*); +extern void fn_1_B78(unkStruct*); +extern void fn_1_C0C(unkStruct*); +extern void fn_1_CA0(unkStruct*); +extern s32 fn_1_17FC(unkStruct*); +extern void fn_1_183C(unkStruct*); +extern void fn_1_1874(unkStruct*); +extern void fn_1_18B0(unkStruct*); +extern void fn_1_19D4(void); \ No newline at end of file diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index e69de29b..1d24ee32 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -0,0 +1,79 @@ +#include "REL/m446Dll.h" + +#include "game/hsfman.h" + +unkStruct2* fn_1_1C64(s32 arg0) { + unkStruct2* temp_r3; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, 0x10000000U); + if (!temp_r3) { + return NULL; + } + temp_r3->unk0 = HuMemDirectMallocNum(HEAP_SYSTEM, arg0 * 4, 0x10000000U); + if (!temp_r3->unk0) { + HuMemDirectFree(temp_r3); + return NULL; + } + temp_r3->unk4 = arg0; + temp_r3->unk8 = 0; + return temp_r3; +} + +void fn_1_1CF8(unkStruct2* arg0) { + HuMemDirectFree(arg0->unk0); + HuMemDirectFree(arg0); +} + +s32 fn_1_1D30(unkStruct2* arg0, s32 arg1) { + if (arg0->unk4 <= arg0->unk8) { + return 0; + } else { + arg0->unk0[arg0->unk8] = arg1; + arg0->unk8++; + return 1; + } +} + +s32 fn_1_1D6C(unkStruct2* arg0, s32* arg1) { + if (arg0->unk8 <= 0) { + return 0; + } else { + arg0->unk8--; + arg1[0] = arg0->unk0[arg0->unk8]; + return 1; + } +} + +s32 fn_1_1DA8(unkStruct2* arg0, s32* arg1) { + if (arg0->unk8 <= 0) { + return 0; + } else { + arg1[0] = *(&arg0->unk0[arg0->unk8] - 1); + return 1; + } +} + +BOOL fn_1_1DDC(unkStruct2* arg0) { + return arg0->unk8 == 0; +} + +s32 fn_1_1DEC(unkStruct2* arg0) { + return arg0->unk8; +} + +unkStruct3* fn_1_1DF4(s32 arg0) { + unkStruct3* temp_r3; + + temp_r3 = HuMemDirectMallocNum(HEAP_SYSTEM, 0xC, 0x10000000); + if (!temp_r3) { + return NULL; + } + temp_r3->unk4 = 0; + temp_r3->unk8 = 0; + temp_r3->unk0 = arg0; + return temp_r3; +} + +void fn_1_1E5C(unkStruct3* arg0) { + HuMemDirectFree(arg0); +} \ No newline at end of file diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index d981864a..6d64f31c 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -1,86 +1,37 @@ -#include "dolphin/types.h" +#include "REL/m446Dll.h" #include "rel_sqrt_consts.h" #include "game/gamework_data.h" #include "game/hsfman.h" #include "game/audio.h" #include "game/jmp.h" -#include "game/process.h" #include "game/window.h" #include "game/wipe.h" #include "game/frand.h" -#include "game/object.h" #include "game/minigame_seq.h" -typedef struct _unkSubStruct { - s32 unk0; - char unk4[0x20]; - s32 unk24; - char unk28[0x3C]; - u8 unk64; - u8 unk65; - u8 unk66; - s32 unk68; - char unk6C[0x4]; -} unkSubStruct; - -typedef struct _unkSubStruct2 { - char unk0; -} unkSubStruct2; - -typedef struct _unkSubStruct3 { - s32 unk0; - s32 unk4; - char unk8[0x68]; - s32 unk70; - s32 unk74; - s32 unk78; -} unkSubStruct3; - -typedef struct _unkStruct { - s32 unk0; - s16 unk4; - s16 unk6; - char unk8[0x4]; - s32 unkC; - s32 unk10; - s32 unk14; - s32 unk18; - s32 unk1C; - unkSubStruct *unk20; - s32 unk24; - s32 unk28; - unkSubStruct *unk2C[2]; - unkSubStruct3 *unk34; - s32 unk38[23]; - s32 unk94; - Process *unk98; -} unkStruct; - -typedef void (*m446Func)(unkStruct *); - // card.c extern s32 fn_1_2064(void); extern void fn_1_207C(void); extern void fn_1_20D4(void); -extern void fn_1_2EC0(unkSubStruct3*, s32); +extern void fn_1_2EC0(unkSubStruct2*, s32); // deck.c extern void fn_1_3180(s32); extern void fn_1_31D8(s32, s32*, s32*, s32); extern s32 fn_1_38E0(void); extern s32 fn_1_3064(void); extern void fn_1_34A0(s32, s32*, s32, s32); -extern void fn_1_3700(s32, unkSubStruct3*, s32); +extern void fn_1_3700(s32, unkSubStruct2*, s32); // table.c extern s32 fn_1_3924(void); extern void fn_1_393C(void); extern void fn_1_3994(void); extern unkSubStruct *fn_1_39D0(void); extern void fn_1_3B4C(unkSubStruct*); -extern s32 fn_1_3BF0(unkSubStruct*, unkSubStruct3*, s32); -extern s32 fn_1_3EB4(unkSubStruct*, unkSubStruct3*, s32); +extern s32 fn_1_3BF0(unkSubStruct*, unkSubStruct2*, s32); +extern s32 fn_1_3EB4(unkSubStruct*, unkSubStruct2*, s32); extern void fn_1_4000(unkSubStruct*, s32); -extern s32 fn_1_4088(unkSubStruct*, u8, u8, s32, unkSubStruct3**, s32); +extern s32 fn_1_4088(unkSubStruct*, u8, u8, s32, unkSubStruct2**, s32); extern void fn_1_46D0(unkSubStruct*); // player.c extern s32 fn_1_480C(void); @@ -88,9 +39,9 @@ extern void fn_1_4824(void); extern void fn_1_487C(void); extern unkSubStruct *fn_1_4B00(s32, unkSubStruct*); extern void fn_1_509C(unkSubStruct*); -extern s32 fn_1_5504(unkSubStruct*, unkSubStruct3*, s32); -extern unkSubStruct *fn_1_5648(unkSubStruct*, s32, unkSubStruct3**); -extern s32 fn_1_5678(unkSubStruct*, unkSubStruct3**, s32); +extern s32 fn_1_5504(unkSubStruct*, unkSubStruct2*, s32); +extern unkSubStruct *fn_1_5648(unkSubStruct*, s32, unkSubStruct2**); +extern s32 fn_1_5678(unkSubStruct*, unkSubStruct2**, s32); extern void fn_1_5B34(unkSubStruct*); extern void fn_1_5C10(unkSubStruct*); extern void fn_1_5CEC(unkSubStruct*); @@ -115,23 +66,6 @@ extern s32 fn_1_80C0(void); extern void fn_1_83F0(s32); extern void fn_1_84AC(s32); -// prototypes -void ModuleProlog(void); -void fn_1_13C(omObjData*); -unkStruct* m446FlowCreate(void); -void fn_1_3FC(unkStruct*); -void fn_1_4B4(unkStruct*); -void fn_1_53C(unkStruct*); -void fn_1_958(unkStruct*); -void fn_1_B78(unkStruct*); -void fn_1_C0C(unkStruct*); -void fn_1_CA0(unkStruct*); -s32 fn_1_17FC(unkStruct*); -void fn_1_183C(unkStruct*); -void fn_1_1874(unkStruct*); -void fn_1_18B0(unkStruct*); -void fn_1_19D4(void); - // bss s32 lbl_1_bss_14; s32 lbl_1_bss_10;