From d43095329359d48950be6fed059df95f54ab7b12 Mon Sep 17 00:00:00 2001 From: CreateSource Date: Fri, 24 May 2024 14:25:53 -0400 Subject: [PATCH] stage.c finished, have to fix types now --- config/GMPE01_00/rels/m446dll/symbols.txt | 32 ++-- include/REL/m446Dll.h | 54 +++++- src/REL/m446Dll/card.c | 38 ++-- src/REL/m446Dll/cursor.c | 2 +- src/REL/m446Dll/deck.c | 2 +- src/REL/m446Dll/main.c | 10 +- src/REL/m446Dll/player.c | 4 +- src/REL/m446Dll/stage.c | 211 ++++++++++++++++++++++ src/REL/m446Dll/table.c | 2 +- 9 files changed, 296 insertions(+), 59 deletions(-) create mode 100644 src/REL/m446Dll/stage.c diff --git a/config/GMPE01_00/rels/m446dll/symbols.txt b/config/GMPE01_00/rels/m446dll/symbols.txt index bdae2793..1bedafa5 100644 --- a/config/GMPE01_00/rels/m446dll/symbols.txt +++ b/config/GMPE01_00/rels/m446dll/symbols.txt @@ -110,7 +110,7 @@ fn_1_709C = .text:0x0000709C; // type:function size:0x244 fn_1_72E0 = .text:0x000072E0; // type:function size:0x18 fn_1_72F8 = .text:0x000072F8; // type:function size:0x58 fn_1_7350 = .text:0x00007350; // type:function size:0x1A4 -fn_1_74F4 = .text:0x000074F4; // type:function size:0x1F4 +m446CursorCreate = .text:0x000074F4; // type:function size:0x1F4 fn_1_76E8 = .text:0x000076E8; // type:function size:0xE0 fn_1_77C8 = .text:0x000077C8; // type:function size:0xBC fn_1_7884 = .text:0x00007884; // type:function size:0x84 @@ -121,7 +121,7 @@ fn_1_7AB4 = .text:0x00007AB4; // type:function size:0x13C fn_1_7BF0 = .text:0x00007BF0; // type:function size:0x18 fn_1_7C08 = .text:0x00007C08; // type:function size:0x58 fn_1_7C60 = .text:0x00007C60; // type:function size:0x460 -fn_1_80C0 = .text:0x000080C0; // type:function size:0x330 +m446StageCreate = .text:0x000080C0; // type:function size:0x330 fn_1_83F0 = .text:0x000083F0; // type:function size:0xBC fn_1_84AC = .text:0x000084AC; // type:function size:0x80 fn_1_852C = .text:0x0000852C; // type:function size:0xE0 @@ -229,19 +229,19 @@ lbl_1_rodata_288 = .rodata:0x00000288; // type:object size:0x4 scope:local data: lbl_1_rodata_290 = .rodata:0x00000290; // type:object size:0x8 scope:local data:double lbl_1_rodata_298 = .rodata:0x00000298; // type:object size:0x4 scope:local data:float lbl_1_rodata_29C = .rodata:0x0000029C; // type:object size:0x4 scope:local data:float -lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 data:float -lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 data:float -lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 data:float -lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 data:float -lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 data:float -lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 data:float -lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 data:double -lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 data:float -lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float -lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float -lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float -lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float -lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float +lbl_1_rodata_2A0 = .rodata:0x000002A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A4 = .rodata:0x000002A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2AC = .rodata:0x000002AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B4 = .rodata:0x000002B4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0xC lbl_1_data_C = .data:0x0000000C; // type:object size:0xC lbl_1_data_18 = .data:0x00000018; // type:object size:0x4 data:float @@ -280,7 +280,7 @@ lbl_1_data_410 = .data:0x00000410; // type:object size:0x14 lbl_1_data_424 = .data:0x00000424; // type:object size:0x3C lbl_1_data_460 = .data:0x00000460; // type:object size:0x54 data:byte lbl_1_data_4B4 = .data:0x000004B4; // type:object size:0x24 -lbl_1_data_4D8 = .data:0x000004D8; // type:object size:0x1E data:string +lbl_1_data_4D8 = .data:0x000004D8; // type:object size:0x1E scope:local data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte diff --git a/include/REL/m446Dll.h b/include/REL/m446Dll.h index f6fa460c..0c8010fc 100644 --- a/include/REL/m446Dll.h +++ b/include/REL/m446Dll.h @@ -3,6 +3,7 @@ #include "game/process.h" #include "game/object.h" +////// TYPES ////// typedef struct _unkStruct { s32 unk0; s16 unk4; @@ -14,17 +15,17 @@ typedef struct _unkStruct { s32 unk18; s32 unk1C; struct _unkStruct6* unk20; - s32 unk24; + struct _unkStruct9* unk24; struct _unkStruct5* unk28; struct _unkStruct8* unk2C[2]; - struct _unkStruct4* unk34; + struct _unkStruct9* unk34; struct _unkStruct4* unk38[23]; s32 unk94; Process* unk98; } unkStruct; typedef struct _unkStruct2 { - struct _unkStruct4* *unk0; + void** unk0; s32 unk4; s32 unk8; } unkStruct2; @@ -145,12 +146,34 @@ typedef struct _unkStruct8 { s32 unkC8; } unkStruct8; +typedef struct _unkStruct9 { + s16 unk0[5]; + s16 unkA[2]; + s16 unkE; + f32 unk10; + f32 unk14; + s32 unk18; + s32 unk1C; + s32 unk20; + s32 unk24; + s32 unk28; + s32 unk2C; +} unkStruct9; + +typedef struct _unkStruct10 { + Vec unk0; + Vec unkC; + GXColor unk18; +} unkStruct10; + typedef void (*m446Func)(s32); typedef void (*m446Func1)(unkStruct*); typedef void (*m446Func4)(unkStruct4*); typedef void (*m446Func8)(unkStruct8*); ////// BSS ////// +// stage.c +extern unkStruct3* lbl_1_bss_A0; // cursor.c extern unkStruct3* lbl_1_bss_98; // camera.c @@ -204,6 +227,10 @@ extern m446Func8 lbl_1_data_2DC[5]; extern Vec lbl_1_data_370; // cursor.c extern s32 lbl_1_data_3C8[9]; +// stage.c +extern unkStruct10 lbl_1_data_460[3]; +extern Vec lbl_1_data_424[5]; +extern Vec lbl_1_data_4B4[3]; ////// PROTOTYPES ////// // main.c @@ -225,9 +252,9 @@ extern void fn_1_19D4(void); // card.c extern unkStruct2* fn_1_1C64(s32); extern void fn_1_1CF8(unkStruct2*); -extern s32 fn_1_1D30(unkStruct2*, unkStruct4*); -extern s32 fn_1_1D6C(unkStruct2*, unkStruct4**); -extern s32 fn_1_1DA8(unkStruct2*, unkStruct4**); +extern s32 fn_1_1D30(unkStruct2*, void*); +extern s32 fn_1_1D6C(unkStruct2*, void**); +extern s32 fn_1_1DA8(unkStruct2*, void**); extern BOOL fn_1_1DDC(unkStruct2*); extern s32 fn_1_1DEC(unkStruct2*); extern unkStruct3* fn_1_1DF4(void*); @@ -243,7 +270,7 @@ extern s32 fn_1_2064(void); extern void fn_1_207C(void); extern void fn_1_20D4(void); extern unkStruct4* m446CardCreate(s32); -extern void fn_1_2688(unkStruct4*); +extern void fn_1_2688(unkStruct9*); extern void fn_1_272C(unkStruct4*); extern void fn_1_2794(unkStruct4*); extern void fn_1_27FC(unkStruct4*, Vec*, s32); @@ -320,11 +347,20 @@ extern void fn_1_709C(void); extern s32 fn_1_72E0(void); extern void fn_1_72F8(void); extern void fn_1_7350(void); -extern unkStruct7* fn_1_74F4(s32); +extern unkStruct7* m446CursorCreate(s32); extern void fn_1_76E8(unkStruct7*); extern void fn_1_77C8(unkStruct7*, u8); extern void fn_1_7884(unkStruct7*); extern void fn_1_7908(unkStruct7*, Vec*, s32); extern void fn_1_799C(unkStruct7*); extern void fn_1_7A38(unkStruct7*); -extern void fn_1_7AB4(unkStruct7*); \ No newline at end of file +extern void fn_1_7AB4(unkStruct7*); +// stage.c +extern s32 fn_1_7BF0(void); +extern void fn_1_7C08(void); +extern void fn_1_7C60(void); +extern unkStruct9* m446StageCreate(void); +extern void fn_1_83F0(unkStruct9*); +extern void fn_1_84AC(unkStruct9*); +extern void fn_1_852C(unkStruct9*); +extern void fn_1_860C(unkStruct9*); \ No newline at end of file diff --git a/src/REL/m446Dll/card.c b/src/REL/m446Dll/card.c index eac82b2b..3bfe2e6e 100644 --- a/src/REL/m446Dll/card.c +++ b/src/REL/m446Dll/card.c @@ -33,7 +33,7 @@ void fn_1_1CF8(unkStruct2* arg0) { HuMemDirectFree(arg0); } -s32 fn_1_1D30(unkStruct2* arg0, unkStruct4* arg1) { +s32 fn_1_1D30(unkStruct2* arg0, void* arg1) { if (arg0->unk4 <= arg0->unk8) { return 0; } else { @@ -43,7 +43,7 @@ s32 fn_1_1D30(unkStruct2* arg0, unkStruct4* arg1) { } } -s32 fn_1_1D6C(unkStruct2* arg0, unkStruct4** arg1) { +s32 fn_1_1D6C(unkStruct2* arg0, void** arg1) { if (arg0->unk8 <= 0) { return 0; } else { @@ -53,7 +53,7 @@ s32 fn_1_1D6C(unkStruct2* arg0, unkStruct4** arg1) { } } -s32 fn_1_1DA8(unkStruct2* arg0, unkStruct4** arg1) { +s32 fn_1_1DA8(unkStruct2* arg0, void** arg1) { if (arg0->unk8 <= 0) { return 0; } else { @@ -174,7 +174,7 @@ s32 fn_1_2064(void) { } void fn_1_207C(void) { - void* var_r30; + unkStruct9* var_r30; unkStruct3* var_r31; var_r31 = lbl_1_bss_18; @@ -295,24 +295,22 @@ unkStruct4* m446CardCreate(s32 arg0) { return temp_r31; } -void fn_1_2688(unkStruct4* arg0) { +void fn_1_2688(unkStruct9* arg0) { unkStruct3* var_r31 = lbl_1_bss_18; -loop_1: - if (arg0 == var_r31->unk0) { - if (var_r31 == lbl_1_bss_18) { - lbl_1_bss_18 = var_r31->unk8; + do { + if (arg0 == var_r31->unk0) { + if (var_r31 == lbl_1_bss_18) { + lbl_1_bss_18 = var_r31->unk8; + } + fn_1_1F04(var_r31); + fn_1_1E5C(var_r31); + Hu3DModelKill(arg0->unkA[0]); + Hu3DModelKill(arg0->unkA[1]); + HuMemDirectFree(arg0); + return; } - fn_1_1F04(var_r31); - fn_1_1E5C(var_r31); - Hu3DModelKill(arg0->unkA); - Hu3DModelKill(arg0->unkC); - HuMemDirectFree(arg0); - return; - } - var_r31 = var_r31->unk8; - if (var_r31) { - goto loop_1; - } + var_r31 = var_r31->unk8; + } while (var_r31); } void fn_1_272C(unkStruct4* arg0) { diff --git a/src/REL/m446Dll/cursor.c b/src/REL/m446Dll/cursor.c index 03c21389..6c67c262 100644 --- a/src/REL/m446Dll/cursor.c +++ b/src/REL/m446Dll/cursor.c @@ -65,7 +65,7 @@ void fn_1_7350(void) { } } -unkStruct7* fn_1_74F4(s32 arg0) { +unkStruct7* m446CursorCreate(s32 arg0) { s32 var_r30; unkStruct7* var_r31; unkStruct3* var_r29; diff --git a/src/REL/m446Dll/deck.c b/src/REL/m446Dll/deck.c index 0e14dc2d..c9fe3833 100644 --- a/src/REL/m446Dll/deck.c +++ b/src/REL/m446Dll/deck.c @@ -40,7 +40,7 @@ unkStruct5* fn_1_3064(void) { } void fn_1_3180(unkStruct2** arg0) { // typing nightmare - unkStruct4* sp8; + unkStruct9* sp8; while (fn_1_1D6C(*arg0, &sp8) != 0) { fn_1_2688(sp8); diff --git a/src/REL/m446Dll/main.c b/src/REL/m446Dll/main.c index b91e036c..cdb7884f 100644 --- a/src/REL/m446Dll/main.c +++ b/src/REL/m446Dll/main.c @@ -10,14 +10,6 @@ #include "game/frand.h" #include "game/minigame_seq.h" -// stage.c -extern s32 fn_1_7BF0(void); -extern void fn_1_7C08(void); -extern void fn_1_7C60(void); -extern s32 fn_1_80C0(void); -extern void fn_1_83F0(s32); -extern void fn_1_84AC(s32); - // bss s32 lbl_1_bss_14; s32 lbl_1_bss_10; @@ -120,7 +112,7 @@ unkStruct* m446FlowCreate(void) { for (var_r30 = 0; var_r30 < 23; var_r30++) { temp_r3->unk38[var_r30] = 0; } - temp_r3->unk24 = fn_1_80C0(); + temp_r3->unk24 = m446StageCreate(); temp_r3->unk20 = fn_1_39D0(); lbl_1_bss_10 = 0; diff --git a/src/REL/m446Dll/player.c b/src/REL/m446Dll/player.c index 7144e7fc..6055f092 100644 --- a/src/REL/m446Dll/player.c +++ b/src/REL/m446Dll/player.c @@ -9,7 +9,7 @@ #include "game/objsub.h" // cursor.c -extern unkStruct7 *fn_1_74F4(s32); +extern unkStruct7 *m446CursorCreate(s32); extern void fn_1_76E8(unkStruct7*); extern void fn_1_77C8(unkStruct7*, u8); @@ -167,7 +167,7 @@ unkStruct8* m446PlayerCreate(s32 arg0, unkStruct6* arg1) { for (var_r30 = 0; var_r30 < 3; var_r30++) { var_r31->unk2C[var_r30] = NULL; } - var_r31->unk8 = fn_1_74F4(1); + var_r31->unk8 = m446CursorCreate(1); if (!var_r31->unk8) { HuMemDirectFree(var_r31); return NULL; diff --git a/src/REL/m446Dll/stage.c b/src/REL/m446Dll/stage.c new file mode 100644 index 00000000..5c30d5c5 --- /dev/null +++ b/src/REL/m446Dll/stage.c @@ -0,0 +1,211 @@ +#include "REL/m446Dll.h" + +#include "game/hsfman.h" +#include "game/hsfmotion.h" + +// bss +unkStruct3* lbl_1_bss_A0; + +// data +s32 lbl_1_data_410[5] = { 0x4D0008, 0x4D0007, 0x4D0006, 0x4D001F, 0x4D001F }; +Vec lbl_1_data_424[5] = { + { 0.0f, 0.0f, 0.0f }, + { 0.0f, 0.1f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 160.0f, 160.0f, 0.0f }, + { -160.0f, 160.0f, 0.0f }, +}; +unkStruct10 lbl_1_data_460[3] = { + { + { 160.0f, 160.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { -160.0f, 160.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0xFF, 0xFF, 0xFF, 0xFF } + }, + { + { 0.0f, 160.0f, 500.0f }, + { 0.0f, 0.0f, 0.0f }, + { 0xB0, 0xB0, 0xB0, 0xFF } + } +}; +Vec lbl_1_data_4B4[3] = { + { 1.0f, 3000.0f, 1.0f }, + { 0.0f, 1.0f, 0.0f }, + { 0.0f, 0.0f, 0.0f }, +}; + +s32 fn_1_7BF0(void) { + lbl_1_bss_A0 = 0; + return 1; +} + +void fn_1_7C08(void) { + unkStruct3* var_r31; + unkStruct9* var_r30; + + var_r31 = lbl_1_bss_A0; + if (var_r31) { + do { + var_r30 = var_r31->unk0; + fn_1_2688(var_r30); + var_r31 = var_r31->unk8; + } while (var_r31); + } +} + +void fn_1_7C60(void) { + s32 var_r30; + unkStruct3* var_r29; + unkStruct9* temp_r31; + + var_r29 = lbl_1_bss_A0; + if (var_r29) { + do { + temp_r31 = var_r29->unk0; + if ((temp_r31->unk28 != 0) && (temp_r31->unk14 < 1.0f)) { + if ((temp_r31->unk14 += 0.002f) > 1.0f) { + temp_r31->unk14 = 1.0f; + } + Hu3DGLightColorSet(temp_r31->unkA[2], lbl_1_data_460[2].unk18.r * temp_r31->unk14, lbl_1_data_460[2].unk18.g * temp_r31->unk14, lbl_1_data_460[2].unk18.b * temp_r31->unk14, lbl_1_data_460[2].unk18.a * temp_r31->unk14); + } + if (temp_r31->unk24 != 0) { + for (var_r30 = 0; var_r30 <= 1; var_r30++) { + if (temp_r31->unk10 < 1.0f) { + if ((temp_r31->unk10 += 0.002f) > 1.0f) { + temp_r31->unk10 = 1.0f; + } + Hu3DGLightColorSet(temp_r31->unkA[var_r30], temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.r, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.g, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.b, temp_r31->unk10 * lbl_1_data_460[var_r30].unk18.a); + } + } + if ((temp_r31->unk18 == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[2]) != 0)) { + Hu3DMotionStartEndSet(temp_r31->unk0[2], 180.0f, 359.0f); + Hu3DModelAttrSet(temp_r31->unk0[2], 0x40000001); + temp_r31->unk18 = 1; + } + if ((temp_r31->unk1C == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[3]) != 0)) { + Hu3DMotionStartEndSet(temp_r31->unk0[3], 120.0f, 159.0f); + Hu3DModelAttrSet(temp_r31->unk0[3], 0x40000001); + temp_r31->unk1C = 1; + } + if ((temp_r31->unk20 == 0) && (Hu3DMotionEndCheck(temp_r31->unk0[4]) != 0)) { + Hu3DMotionStartEndSet(temp_r31->unk0[4], 120.0f, 159.0f); + Hu3DModelAttrSet(temp_r31->unk0[4], 0x40000001); + temp_r31->unk20 = 1; + } + } + var_r29 = var_r29->unk8; + } while (var_r29); + } +} + +unkStruct9* m446StageCreate(void) { + s32 var_r30; + unkStruct3* var_r29; + unkStruct3* temp_ret; + unkStruct9* var_r31; + + var_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 0x30, 0x10000000); + if (!var_r31) { + return NULL; + } + var_r31->unk10 = 0.0f; + var_r31->unk14 = 0.0f; + var_r31->unk18 = 0; + var_r31->unk1C = 0; + var_r31->unk20 = 0; + var_r31->unk24 = 0; + var_r31->unk28 = 0; + var_r31->unk2C = 0; + + for (var_r30 = 0; var_r30 < 5; var_r30++) { + var_r31->unk0[var_r30] = Hu3DModelCreateFile(lbl_1_data_410[var_r30]); + Hu3DModelPosSet(var_r31->unk0[var_r30], lbl_1_data_424[var_r30].x, lbl_1_data_424[var_r30].y, lbl_1_data_424[var_r30].z); + } + Hu3DModelAttrSet(var_r31->unk0[3], 1); + Hu3DModelAttrSet(var_r31->unk0[4], 1); + Hu3DModelAttrSet(var_r31->unk0[3], 0x40000002); + Hu3DModelAttrSet(var_r31->unk0[4], 0x40000002); + Hu3DModelAttrReset(var_r31->unk0[3], 0x40000001); + Hu3DModelAttrReset(var_r31->unk0[4], 0x40000001); + Hu3DModelAttrReset(var_r31->unk0[2], 0x40000001); + + for (var_r30 = 0; var_r30 < 3; var_r30++) { + var_r31->unkA[var_r30] = Hu3DGLightCreateV(&lbl_1_data_460[var_r30].unk0, &lbl_1_data_460[var_r30].unkC, &lbl_1_data_460[var_r30].unk18); + Hu3DGLightStaticSet(var_r31->unkA[var_r30], 1); + Hu3DGLightPointSet(var_r31->unkA[var_r30], 100.0f, 1.0f, 3); + Hu3DGLightColorSet(var_r31->unkA[var_r30], 0, 0, 0, 0); + } + Hu3DShadowCreate(30.0f, 20.0f, 20000.0f); + Hu3DShadowTPLvlSet(1.0f); + Hu3DShadowPosSet(&lbl_1_data_4B4[0], &lbl_1_data_4B4[1], &lbl_1_data_4B4[2]); + Hu3DModelShadowMapSet(var_r31->unk0[0]); + Hu3DModelShadowSet(var_r31->unk0[1]); + var_r29 = fn_1_1DF4(var_r31); + if (!var_r29) { + OSReport("[!] m446StageCreate ERROR...\n"); + HuMemDirectFree(var_r31); + return NULL; + } + if (lbl_1_bss_A0) { + fn_1_1EC8(lbl_1_bss_A0, var_r29); + } else { + lbl_1_bss_A0 = var_r29; + } + return var_r31; +} + +void fn_1_83F0(unkStruct9* arg0) { + s32 var_r30; + unkStruct3* var_r31; + + var_r31 = lbl_1_bss_A0; + do { + if (arg0 == var_r31->unk0) { + if (var_r31 == lbl_1_bss_A0) { + lbl_1_bss_A0 = var_r31->unk8; + } + fn_1_1F04(var_r31); + fn_1_1E5C(var_r31); + + for (var_r30 = 0; var_r30 < 5; var_r30++) { + Hu3DModelKill(arg0->unk0[var_r30]); + } + HuMemDirectFree(arg0); + return; + } + var_r31 = var_r31->unk8; + } while (var_r31); +} + +void fn_1_84AC(unkStruct9* arg0) { + Hu3DModelAttrReset(arg0->unk0[3], 1); + Hu3DModelAttrReset(arg0->unk0[4], 1); + Hu3DModelAttrReset(arg0->unk0[3], 0x40000002); + Hu3DModelAttrReset(arg0->unk0[4], 0x40000002); + arg0->unk24 = 1; + arg0->unk1C = 0; + arg0->unk20 = 0; + arg0->unk18 = 0; +} + +void fn_1_852C(unkStruct9* arg0) { + Hu3DModelAttrSet(arg0->unk0[3], 1U); + Hu3DModelAttrSet(arg0->unk0[4], 1U); + Hu3DModelAttrSet(arg0->unk0[3], 0x40000002U); + Hu3DModelAttrSet(arg0->unk0[4], 0x40000002U); + Hu3DMotionStartEndSet(arg0->unk0[2], 0.0f, 359.0f); + Hu3DMotionStartEndSet(arg0->unk0[3], 0.0f, 119.0f); + Hu3DMotionStartEndSet(arg0->unk0[4], 0.0f, 119.0f); + arg0->unk24 = 0; + arg0->unk1C = 0; + arg0->unk20 = 0; + arg0->unk18 = 0; +} + +void fn_1_860C(unkStruct9* arg0) { + arg0->unk28 = 1; +} \ No newline at end of file diff --git a/src/REL/m446Dll/table.c b/src/REL/m446Dll/table.c index a1dee33a..56d45462 100644 --- a/src/REL/m446Dll/table.c +++ b/src/REL/m446Dll/table.c @@ -50,7 +50,7 @@ unkStruct6* fn_1_39D0(void) { Hu3DModelAmbSet(var_r31->unk4, 0.0f, 0.0f, 0.0f); Hu3DModelShadowMapSet(var_r31->unk4); Hu3DModelLayerSet(var_r31->unk4, 0); - var_r31->unk0 = fn_1_74F4(0); + var_r31->unk0 = m446CursorCreate(0); fn_1_7884(var_r31->unk0); var_r31->unk60 = 10; var_r31->unk5C = 0;