diff --git a/config/eur/arm9/overlays/ov000/symbols.txt b/config/eur/arm9/overlays/ov000/symbols.txt index 02c879d3..17b2719f 100644 --- a/config/eur/arm9/overlays/ov000/symbols.txt +++ b/config/eur/arm9/overlays/ov000/symbols.txt @@ -962,7 +962,7 @@ func_ov000_0206f70c kind:function(arm,size=0x48) addr:0x0206f70c func_ov000_0206f754 kind:function(arm,size=0x24) addr:0x0206f754 _ZN24UnkStruct_ov000_020b52b419func_ov000_0206f778Eiii kind:function(arm,size=0x1f0) addr:0x0206f778 func_ov000_0206f968 kind:function(arm,size=0x18) addr:0x0206f968 -func_ov000_0206f980 kind:function(arm,size=0x14) addr:0x0206f980 +_ZN24UnkStruct_ov000_020b52e819func_ov000_0206f980Ei kind:function(arm,size=0x14) addr:0x0206f980 func_ov000_0206f994 kind:function(arm,size=0xc) addr:0x0206f994 func_ov000_0206f9a0 kind:function(arm,size=0x128) addr:0x0206f9a0 func_ov000_0206fac8 kind:function(arm,size=0x1c) addr:0x0206fac8 diff --git a/config/eur/arm9/overlays/ov031/delinks.txt b/config/eur/arm9/overlays/ov031/delinks.txt index 8ba93624..07e0a134 100644 --- a/config/eur/arm9/overlays/ov031/delinks.txt +++ b/config/eur/arm9/overlays/ov031/delinks.txt @@ -168,6 +168,7 @@ src/031_Land/Actor/ActorUnkMLCK.cpp: .text start:0x020fab5c end:0x020fb2ac .init start:0x02111988 end:0x021119fc .ctor start:0x02112800 end:0x02112804 + .data start:0x02114d28 end:0x02114e1c .bss start:0x02116f9c end:0x02116fe8 src/031_Land/Actor/ActorUnkCLLT.cpp: diff --git a/config/eur/arm9/overlays/ov031/relocs.txt b/config/eur/arm9/overlays/ov031/relocs.txt index eede45f5..65a09c63 100644 --- a/config/eur/arm9/overlays/ov031/relocs.txt +++ b/config/eur/arm9/overlays/ov031/relocs.txt @@ -3772,7 +3772,7 @@ from:0x020fab98 kind:arm_call to:0x0209767c module:overlay(0) from:0x020fabb0 kind:load to:0x02114d4c add:0x8 module:overlay(31) from:0x020fabbc kind:arm_call to:0x02098388 module:overlay(0) from:0x020fabc4 kind:arm_call to:0x02061648 module:overlay(0) -from:0x020fac58 kind:load to:0x02114d3c module:overlay(31) +from:0x020fac58 kind:load to:0x02114d34 module:overlay(31) add:0x8 from:0x020fac5c kind:load to:0x02114d70 add:0x8 module:overlay(31) from:0x020fac60 kind:load to:0x02114dec add:0x8 module:overlay(31) from:0x020fac9c kind:arm_call to:0x01fff350 module:itcm diff --git a/config/eur/arm9/overlays/ov031/symbols.txt b/config/eur/arm9/overlays/ov031/symbols.txt index 94b714f2..235a146e 100644 --- a/config/eur/arm9/overlays/ov031/symbols.txt +++ b/config/eur/arm9/overlays/ov031/symbols.txt @@ -73,9 +73,9 @@ func_ov031_020d98bc kind:function(arm,size=0x1c) addr:0x020d98bc func_ov031_020d98d8 kind:function(arm,size=0x1c) addr:0x020d98d8 func_ov031_020d98f4 kind:function(arm,size=0x2c) addr:0x020d98f4 func_ov031_020d9920 kind:function(arm,size=0x2c) addr:0x020d9920 -func_ov031_020d994c kind:function(arm,size=0x10) addr:0x020d994c +_ZN18UnkStruct_027e0d3419func_ov031_020d994cEv kind:function(arm,size=0x10) addr:0x020d994c func_ov031_020d995c kind:function(arm,size=0x10) addr:0x020d995c -func_ov031_020d996c kind:function(arm,size=0x10) addr:0x020d996c +_ZN18UnkStruct_027e0d3419func_ov031_020d996cEv kind:function(arm,size=0x10) addr:0x020d996c func_ov031_020d997c kind:function(arm,size=0x30) addr:0x020d997c func_ov031_020d99ac kind:function(arm,size=0x10) addr:0x020d99ac func_ov031_020d99bc kind:function(arm,size=0x10) addr:0x020d99bc @@ -1205,24 +1205,24 @@ _ZN19ActorProfileUnkMLCK10GetProfileEv kind:function(arm,size=0xc) addr:0x020fab _ZN19ActorProfileUnkMLCK6CreateEv kind:function(arm,size=0x24) addr:0x020fab68 _ZN19ActorProfileUnkMLCKC1Ev kind:function(arm,size=0x28) addr:0x020fab8c _ZN12ActorUnkMLCKC1Ev kind:function(arm,size=0xb0) addr:0x020fabb4 -_ZN12ActorUnkMLCK19func_ov031_020fac64Ev kind:function(arm,size=0xd8) addr:0x020fac64 -_ZN12ActorUnkMLCK19func_ov031_020fad3cEv kind:function(arm,size=0x4c) addr:0x020fad3c -_ZN12ActorUnkMLCK19func_ov031_020fad88Ev kind:function(arm,size=0x20) addr:0x020fad88 -_ZN12ActorUnkMLCK19func_ov031_020fada8Ev kind:function(arm,size=0xc) addr:0x020fada8 -_ZN12ActorUnkMLCK19func_ov031_020fadb4Ev kind:function(arm,size=0x54) addr:0x020fadb4 -_ZN12ActorUnkMLCK19func_ov031_020fae08Ev kind:function(arm,size=0x18) addr:0x020fae08 -_ZN12ActorUnkMLCK19func_ov031_020fae20Ev kind:function(arm,size=0x90) addr:0x020fae20 +_ZN12ActorUnkMLCK8vfunc_18Ei kind:function(arm,size=0xd8) addr:0x020fac64 +_ZN12ActorUnkMLCK8vfunc_64Ei kind:function(arm,size=0x4c) addr:0x020fad3c +_ZN12ActorUnkMLCK8vfunc_54Eii kind:function(arm,size=0x20) addr:0x020fad88 +_ZN12ActorUnkMLCK8vfunc_58Ev kind:function(arm,size=0xc) addr:0x020fada8 +_ZN12ActorUnkMLCK8vfunc_5CEv kind:function(arm,size=0x54) addr:0x020fadb4 +_ZN12ActorUnkMLCK8vfunc_60Ev kind:function(arm,size=0x18) addr:0x020fae08 +_ZN12ActorUnkMLCK8vfunc_68Ev kind:function(arm,size=0x90) addr:0x020fae20 _ZN12ActorUnkMLCK19func_ov031_020faeb0Ev kind:function(arm,size=0x4) addr:0x020faeb0 -_ZN12ActorUnkMLCK19func_ov031_020faeb4Ev kind:function(arm,size=0x50) addr:0x020faeb4 -_ZN12ActorUnkMLCK19func_ov031_020faf04Ev kind:function(arm,size=0x20) addr:0x020faf04 +_ZN12ActorUnkMLCK8vfunc_6CEv kind:function(arm,size=0x50) addr:0x020faeb4 +_ZN12ActorUnkMLCK8vfunc_70Ev kind:function(arm,size=0x20) addr:0x020faf04 _ZN12ActorUnkMLCK19func_ov031_020faf24Ev kind:function(arm,size=0x1e0) addr:0x020faf24 _ZN12ActorUnkMLCK19func_ov031_020fb104Ev kind:function(arm,size=0x18) addr:0x020fb104 _ZN12ActorUnkMLCK19func_ov031_020fb11cEv kind:function(arm,size=0x68) addr:0x020fb11c -_ZN12ActorUnkMLCK19func_ov031_020fb184Ev kind:function(arm,size=0x2c) addr:0x020fb184 -_ZN12ActorUnkMLCK19func_ov031_020fb1b0Ev kind:function(arm,size=0x1c) addr:0x020fb1b0 -_ZN12ActorUnkMLCK19func_ov031_020fb1ccEv kind:function(arm,size=0x1c) addr:0x020fb1cc -_ZN12ActorUnkMLCK19func_ov031_020fb1e8Ev kind:function(arm,size=0x1c) addr:0x020fb1e8 -_ZN12ActorUnkMLCK19func_ov031_020fb204Ev kind:function(arm,size=0x4c) addr:0x020fb204 +_ZN18ActorUnkMLCK_B4_0019func_ov031_020fb184Ev kind:function(arm,size=0x2c) addr:0x020fb184 +_ZN15ActorUnkMLCK_D89vfunc2_00Ev kind:function(arm,size=0x1c) addr:0x020fb1b0 +_ZN15ActorUnkMLCK_D89vfunc2_04Ev kind:function(arm,size=0x1c) addr:0x020fb1cc +_ZN12ActorUnkMLCK19func_ov031_020fb1e8EP18ActorUnkMLCK_B4_00 kind:function(arm,size=0x1c) addr:0x020fb1e8 +_ZN12ActorUnkMLCK19func_ov031_020fb204Ei kind:function(arm,size=0x4c) addr:0x020fb204 _ZN12ActorUnkMLCKD0Ev kind:function(arm,size=0x28) addr:0x020fb250 _ZN12ActorUnkMLCKD2Ev kind:function(arm,size=0x20) addr:0x020fb278 _ZN19ActorProfileUnkMLCKD1Ev kind:function(arm,size=0x14) addr:0x020fb298 @@ -2401,10 +2401,10 @@ _ZTV25ActorProfileRedPotionDrop kind:data(any) addr:0x02114c80 _ZTV20ActorProfileBombDrop kind:data(any) addr:0x02114ca4 _ZTV13ActorItemDrop kind:data(any) addr:0x02114cc8 data_ov031_02114d28 kind:data(any) addr:0x02114d28 -data_ov031_02114d3c kind:data(any) addr:0x02114d3c -_ZTV19data_ov031_02114d4c kind:data(any) addr:0x02114d4c -_ZTV19data_ov031_02114d70 kind:data(any) addr:0x02114d70 -_ZTV19data_ov031_02114dec kind:data(any) addr:0x02114dec +_ZTV15ActorUnkMLCK_D8 kind:data(any) addr:0x02114d34 +_ZTV19ActorProfileUnkMLCK kind:data(any) addr:0x02114d4c +_ZTV12ActorUnkMLCK kind:data(any) addr:0x02114d70 +_ZTV15ActorUnkMLCK_94 kind:data(any) addr:0x02114dec _ZTV19data_ov031_02114e1c kind:data(any) addr:0x02114e1c _ZTV19data_ov031_02114e40 kind:data(any) addr:0x02114e40 _ZTV19data_ov031_02114eac kind:data(any) addr:0x02114eac diff --git a/config/jp/arm9/overlays/ov031/symbols.txt b/config/jp/arm9/overlays/ov031/symbols.txt index f87cec07..c2dbc0b5 100644 --- a/config/jp/arm9/overlays/ov031/symbols.txt +++ b/config/jp/arm9/overlays/ov031/symbols.txt @@ -1204,24 +1204,24 @@ _ZN19ActorProfileUnkMLCK10GetProfileEv kind:function(arm,size=0xc) addr:0x020fc5 _ZN19ActorProfileUnkMLCK6CreateEv kind:function(arm,size=0x24) addr:0x020fc5c0 _ZN19ActorProfileUnkMLCKC1Ev kind:function(arm,size=0x28) addr:0x020fc5e4 _ZN12ActorUnkMLCKC1Ev kind:function(arm,size=0xb0) addr:0x020fc60c -_ZN12ActorUnkMLCK19func_ov031_020fac64Ev kind:function(arm,size=0xd8) addr:0x020fc6bc -_ZN12ActorUnkMLCK19func_ov031_020fad3cEv kind:function(arm,size=0x4c) addr:0x020fc794 -_ZN12ActorUnkMLCK19func_ov031_020fad88Ev kind:function(arm,size=0x20) addr:0x020fc7e0 -_ZN12ActorUnkMLCK19func_ov031_020fada8Ev kind:function(arm,size=0xc) addr:0x020fc800 -_ZN12ActorUnkMLCK19func_ov031_020fadb4Ev kind:function(arm,size=0x54) addr:0x020fc80c -_ZN12ActorUnkMLCK19func_ov031_020fae08Ev kind:function(arm,size=0x18) addr:0x020fc860 -_ZN12ActorUnkMLCK19func_ov031_020fae20Ev kind:function(arm,size=0x90) addr:0x020fc878 +_ZN12ActorUnkMLCK8vfunc_18Ei kind:function(arm,size=0xd8) addr:0x020fc6bc +_ZN12ActorUnkMLCK8vfunc_64Ei kind:function(arm,size=0x4c) addr:0x020fc794 +_ZN12ActorUnkMLCK8vfunc_54Eii kind:function(arm,size=0x20) addr:0x020fc7e0 +_ZN12ActorUnkMLCK8vfunc_58Ev kind:function(arm,size=0xc) addr:0x020fc800 +_ZN12ActorUnkMLCK8vfunc_5CEv kind:function(arm,size=0x54) addr:0x020fc80c +_ZN12ActorUnkMLCK8vfunc_60Ev kind:function(arm,size=0x18) addr:0x020fc860 +_ZN12ActorUnkMLCK8vfunc_68Ev kind:function(arm,size=0x90) addr:0x020fc878 _ZN12ActorUnkMLCK19func_ov031_020faeb0Ev kind:function(arm,size=0x4) addr:0x020fc908 -_ZN12ActorUnkMLCK19func_ov031_020faeb4Ev kind:function(arm,size=0x50) addr:0x020fc90c -_ZN12ActorUnkMLCK19func_ov031_020faf04Ev kind:function(arm,size=0x20) addr:0x020fc95c +_ZN12ActorUnkMLCK8vfunc_6CEv kind:function(arm,size=0x50) addr:0x020fc90c +_ZN12ActorUnkMLCK8vfunc_70Ev kind:function(arm,size=0x20) addr:0x020fc95c _ZN12ActorUnkMLCK19func_ov031_020faf24Ev kind:function(arm,size=0x1e0) addr:0x020fc97c _ZN12ActorUnkMLCK19func_ov031_020fb104Ev kind:function(arm,size=0x18) addr:0x020fcb5c _ZN12ActorUnkMLCK19func_ov031_020fb11cEv kind:function(arm,size=0x68) addr:0x020fcb74 -_ZN12ActorUnkMLCK19func_ov031_020fb184Ev kind:function(arm,size=0x2c) addr:0x020fcbdc -_ZN12ActorUnkMLCK19func_ov031_020fb1b0Ev kind:function(arm,size=0x1c) addr:0x020fcc08 -_ZN12ActorUnkMLCK19func_ov031_020fb1ccEv kind:function(arm,size=0x1c) addr:0x020fcc24 -_ZN12ActorUnkMLCK19func_ov031_020fb1e8Ev kind:function(arm,size=0x1c) addr:0x020fcc40 -_ZN12ActorUnkMLCK19func_ov031_020fb204Ev kind:function(arm,size=0x4c) addr:0x020fcc5c +_ZN18ActorUnkMLCK_B4_0019func_ov031_020fb184Ev kind:function(arm,size=0x2c) addr:0x020fcbdc +_ZN15ActorUnkMLCK_D89vfunc2_00Ev kind:function(arm,size=0x1c) addr:0x020fcc08 +_ZN15ActorUnkMLCK_D89vfunc2_04Ev kind:function(arm,size=0x1c) addr:0x020fcc24 +_ZN12ActorUnkMLCK19func_ov031_020fb1e8EP18ActorUnkMLCK_B4_00 kind:function(arm,size=0x1c) addr:0x020fcc40 +_ZN12ActorUnkMLCK19func_ov031_020fb204Ei kind:function(arm,size=0x4c) addr:0x020fcc5c _ZN12ActorUnkMLCKD0Ev kind:function(arm,size=0x28) addr:0x020fcca8 _ZN12ActorUnkMLCKD2Ev kind:function(arm,size=0x20) addr:0x020fccd0 _ZN19ActorProfileUnkMLCKD1Ev kind:function(arm,size=0x14) addr:0x020fccf0 diff --git a/include/Actor/ActorUnkMLCK.hpp b/include/Actor/ActorUnkMLCK.hpp index e992f3f3..e42188e3 100644 --- a/include/Actor/ActorUnkMLCK.hpp +++ b/include/Actor/ActorUnkMLCK.hpp @@ -1,49 +1,128 @@ -//! TODO: This file was generated automatically and might contain errors - #pragma once #include "Actor/Actor.hpp" #include "Actor/ActorProfile.hpp" +#include "FileSelect/FileSelectUnkDraw.hpp" #include "global.h" #include "types.h" -class ActorUnkMLCK_C4 : public Actor_C4 { -public: - ActorUnkMLCK_C4(Actor *param1); +class ActorUnkMLCK; - /* 00 */ virtual bool vfunc_00(ActorRef ref, unk32 param2) override; - /* 04 */ virtual void vfunc_04() override; - /* 08 */ virtual void vfunc_08() override; - /* 0C */ virtual void vfunc_0C(unk32 param1) override; +class ActorUnkMLCK_94 : FileSelectManager_UnkDrawBase { +public: + /* 00 (base) */ + /* 0C */ + + // /* 00 */ virtual ~ActorUnkMLCK_94() override; // func_ov031_020fb2fc & func_ov031_020fb2ac + /* 10 */ virtual void vfunc_10(unk32 param1, unk32 param2) override; // func_ov031_020fb2ec + /* 1C */ virtual void vfunc_1C(unk32 param1) override; // func_ov031_020fb2dc + /* 20 */ virtual void vfunc_20(unk32 param1, unk32 param2) override; // func_ov031_020fb2cc + /* 24 */ virtual void vfunc_24() override; // func_ov031_020fb2bc }; -class ActorUnkMLCK : public Actor { +class ActorUnkMLCK_D8 { +public: + /* 00 (vtable) */ + /* 04 */ bool mUnk_04; + /* 05 */ bool mUnk_05; + /* 08 */ ActorUnkMLCK *mUnk_08; + /* 0C */ + + ActorUnkMLCK_D8(ActorUnkMLCK *actor) : + mUnk_04(true), + mUnk_05(true), + mUnk_08(actor) {} + + /* 00 */ virtual void vfunc2_00() override; // func_ov031_020fb1b0 + /* 04 */ virtual void vfunc2_04() override; // func_ov031_020fb1cc +}; + +class ActorUnkMLCK_B4_00 { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0C */ u16 mUnk_0C; + /* 0E */ u16 mUnk_0E; + /* 10 */ u16 mUnk_10; + /* 12 */ u16 mUnk_12; + /* 14 */ + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual bool vfunc_04(); + /* 08 */ virtual void vfunc_08(); + + void func_ov031_020fb184(); +}; + +class ActorUnkMLCK_B4 { +public: + /* 00 */ ActorUnkMLCK_B4_00 *mUnk_00; + /* 04 */ +}; + +class Actor_ov102_02184950 : public Actor { public: /* 00 (base) */ /* 94 */ + /* 20 */ virtual void vfunc_20() override; // func_ov102_02184644 + /* 24 */ virtual void vfunc_24() override; // func_ov102_021847d4 + + /* 54 */ virtual void vfunc_54(unk32 param1, unk32 param2) override; + /* 58 */ virtual void vfunc_58() override; + /* 5C */ virtual void vfunc_5C() override; + /* 60 */ virtual void vfunc_60() override; + /* 64 */ virtual void vfunc_64(unk32 param1) override; + /* 68 */ virtual void vfunc_68() override; + /* 6C */ virtual void vfunc_6C() override; + /* 70 */ virtual void vfunc_70() override; +}; + +class ActorUnkMLCK : public Actor_ov102_02184950 { +public: + /* 00 (base) */ + /* 94 */ ActorUnkMLCK_94 mUnk_94; + /* A0 */ ActorUnkMLCK_B4 mUnk_A0[0x5]; + /* B4 */ ActorUnkMLCK_B4 *mUnk_B4; + /* B8 */ unk32 mUnk_B8; + /* BC */ unk32 mUnk_BC; + /* C0 */ u16 mUnk_C0; + /* C2 */ u16 mUnk_C2; + /* C4 */ ActorUnkMLCK_B4_00 *mUnk_C4; + /* C8 */ unk32 mUnk_C8; + /* CC */ unk32 mUnk_CC; + /* D0 */ unk16 mUnk_D0; + /* D0 */ unk16 mUnk_D2; + /* D0 */ unk16 mUnk_D4; + /* D0 */ unk16 mUnk_D6; + /* D8 */ ActorUnkMLCK_D8 mUnk_D8; + /* E4 */ ActorUnkMLCK_D8 mUnk_E4; + /* F0 */ bool mUnk_F0; + /* F1 */ bool mUnk_F1; + /* F2 */ bool mUnk_F2; + /* F2 */ bool mUnk_F3; + /* F4 */ unk32 mUnk_F4; + ActorUnkMLCK(); + /* 18 */ virtual bool vfunc_18(unk32 param1) override; // func_ov031_020fac64 /* 4C */ virtual ~ActorUnkMLCK() override; + /* 54 */ virtual void vfunc_54(unk32 param1, unk32 param2) override; // func_ov031_020fad88 + /* 58 */ virtual void vfunc_58() override; // func_ov031_020fada8 + /* 5C */ virtual void vfunc_5C() override; // func_ov031_020fadb4 + /* 60 */ virtual void vfunc_60() override; // func_ov031_020fae08 + /* 64 */ virtual void vfunc_64(unk32 param1) override; // func_ov031_020fad3c + /* 68 */ virtual void vfunc_68() override; // func_ov031_020fae20 + /* 6C */ virtual void vfunc_6C() override; // func_ov031_020faeb4 + /* 70 */ virtual void vfunc_70() override; // func_ov031_020faf04 - void func_ov031_020fac64(void); - void func_ov031_020fad3c(void); - void func_ov031_020fad88(void); - void func_ov031_020fada8(void); - void func_ov031_020fadb4(void); - void func_ov031_020fae08(void); - void func_ov031_020fae20(void); - void func_ov031_020faeb0(void); - void func_ov031_020faeb4(void); - void func_ov031_020faf04(void); - void func_ov031_020faf24(void); - void func_ov031_020fb104(void); - void func_ov031_020fb11c(void); - void func_ov031_020fb184(void); - void func_ov031_020fb1b0(void); - void func_ov031_020fb1cc(void); - void func_ov031_020fb1e8(void); - void func_ov031_020fb204(void); + void func_ov031_020faeb0(); + void func_ov031_020faf24(); + void func_ov031_020fb104(); + void func_ov031_020fb11c(); + void func_ov031_020fb1e8(ActorUnkMLCK_B4_00 *param1); + bool func_ov031_020fb204(unk32 param1); }; class ActorProfileUnkMLCK : public ActorProfile { diff --git a/include/MainGame/AdventureMode.hpp b/include/MainGame/AdventureMode.hpp index ee78ac2f..1357328d 100644 --- a/include/MainGame/AdventureMode.hpp +++ b/include/MainGame/AdventureMode.hpp @@ -636,10 +636,17 @@ public: bool func_ov024_020ca280(); }; +class AdventureModeManager_194_0C { +public: + /* 00 (base) */ STRUCT_PAD(0x00, 0xC4); + /* C4 */ u8 mUnk_C4; + /* C8 */ +}; + class AdventureModeManager_194 : public FileSelectManager_UnkDrawBase { public: /* 00 (base) */ - /* 0C */ unk32 mUnk_0C; + /* 0C */ AdventureModeManager_194_0C *mUnk_0C; /* 10 */ STRUCT_PAD(0x10, 0x48); /* 48 */ @@ -991,7 +998,7 @@ public: void func_ov024_020c6c60(); void func_ov024_020c6cd4(); bool func_ov024_020c6ce4(); - unk32 func_ov024_020c6d04(); + AdventureModeManager_194_0C *func_ov024_020c6d04(); void func_ov024_020c6d10(); void func_ov024_020c6d20(unk32 param1); void func_ov024_020c6d2c(unk32 param1); diff --git a/include/Unknown/UnkStruct_027e0d34.hpp b/include/Unknown/UnkStruct_027e0d34.hpp index b8150b32..d372ca85 100644 --- a/include/Unknown/UnkStruct_027e0d34.hpp +++ b/include/Unknown/UnkStruct_027e0d34.hpp @@ -17,9 +17,12 @@ public: UnkStruct_027e0d34(); ~UnkStruct_027e0d34(); + // overlay 31 bool func_ov031_020d97e4(); bool func_ov031_020d97f4(); void func_ov031_020d9844(); + void func_ov031_020d994c(); + void func_ov031_020d996c(); bool TryItemGive(ItemId itemId); }; diff --git a/include/Unknown/UnkStruct_ov000_020b52e8.hpp b/include/Unknown/UnkStruct_ov000_020b52e8.hpp index 23098269..79fff540 100644 --- a/include/Unknown/UnkStruct_ov000_020b52e8.hpp +++ b/include/Unknown/UnkStruct_ov000_020b52e8.hpp @@ -1,5 +1,6 @@ #pragma once +#include "Actor/ActorUnkMLCK.hpp" #include "global.h" #include "types.h" @@ -15,6 +16,9 @@ public: UnkStruct_ov000_020b52e8(); ~UnkStruct_ov000_020b52e8(); + + // overlay 0 + ActorUnkMLCK_B4_00 *func_ov000_0206f980(unk32 param1); }; extern UnkStruct_ov000_020b52e8 data_ov000_020b52e8; diff --git a/src/024_MainGame/Game/AdventureModeManager_024.cpp b/src/024_MainGame/Game/AdventureModeManager_024.cpp index d643fa4b..cd571b12 100644 --- a/src/024_MainGame/Game/AdventureModeManager_024.cpp +++ b/src/024_MainGame/Game/AdventureModeManager_024.cpp @@ -889,7 +889,7 @@ bool AdventureModeManager::func_ov024_020c6ce4() { return false; } -unk32 AdventureModeManager::func_ov024_020c6d04() { +AdventureModeManager_194_0C *AdventureModeManager::func_ov024_020c6d04() { return this->mUnk_194->mUnk_0C; } diff --git a/src/031_Land/Actor/ActorUnkMLCK.cpp b/src/031_Land/Actor/ActorUnkMLCK.cpp index 6a9782d5..61e113f6 100644 --- a/src/031_Land/Actor/ActorUnkMLCK.cpp +++ b/src/031_Land/Actor/ActorUnkMLCK.cpp @@ -1,7 +1,17 @@ -//! TODO: This file was generated automatically and might contain errors - #include "Actor/ActorUnkMLCK.hpp" + +#include "Actor/ActorManager.hpp" +#include "MainGame/AdventureMode.hpp" #include "System/SysNew.hpp" +#include "Unknown/UnkStruct_0204a088.hpp" +#include "Unknown/UnkStruct_027e09b8.hpp" +#include "Unknown/UnkStruct_027e0ce0.hpp" +#include "Unknown/UnkStruct_027e0d34.hpp" +#include "Unknown/UnkStruct_ov000_020b51b8.hpp" +#include "Unknown/UnkStruct_ov000_020b52e8.hpp" + +extern "C" unk32 data_ov031_02110bec[]; +extern "C" unk32 data_ov031_02112ad4; DECL_PROFILE(ActorProfileUnkMLCK); @@ -12,26 +22,246 @@ Actor *ActorProfileUnkMLCK::Create() { ActorProfileUnkMLCK::ActorProfileUnkMLCK() : ActorProfile(ActorId_MLCK) {} -ActorUnkMLCK::ActorUnkMLCK() {} +// non-matching +ActorUnkMLCK::ActorUnkMLCK() : + mUnk_B4(mUnk_A0), + mUnk_BC(0x4), + mUnk_C0(0x0), + mUnk_C2(0x0), + mUnk_C4(NULL), + mUnk_C8(0x0), + mUnk_CC(-1), + mUnk_D0(0x0), + mUnk_D2(0x0), + mUnk_D4(0x0), + mUnk_D6(0x0), + mUnk_D8(this), + mUnk_E4(this), + mUnk_F0(false), + mUnk_F1(false), + mUnk_F2(false), + mUnk_F3(true), + mUnk_F4(-1) {} -void ActorUnkMLCK::func_ov031_020fac64(void) {} -void ActorUnkMLCK::func_ov031_020fad3c(void) {} -void ActorUnkMLCK::func_ov031_020fad88(void) {} -void ActorUnkMLCK::func_ov031_020fada8(void) {} -void ActorUnkMLCK::func_ov031_020fadb4(void) {} -void ActorUnkMLCK::func_ov031_020fae08(void) {} -void ActorUnkMLCK::func_ov031_020fae20(void) {} -void ActorUnkMLCK::func_ov031_020faeb0(void) {} -void ActorUnkMLCK::func_ov031_020faeb4(void) {} -void ActorUnkMLCK::func_ov031_020faf04(void) {} -void ActorUnkMLCK::func_ov031_020faf24(void) {} -void ActorUnkMLCK::func_ov031_020fb104(void) {} -void ActorUnkMLCK::func_ov031_020fb11c(void) {} -void ActorUnkMLCK::func_ov031_020fb184(void) {} -void ActorUnkMLCK::func_ov031_020fb1b0(void) {} -void ActorUnkMLCK::func_ov031_020fb1cc(void) {} -void ActorUnkMLCK::func_ov031_020fb1e8(void) {} -void ActorUnkMLCK::func_ov031_020fb204(void) {} +bool ActorUnkMLCK::vfunc_18(unk32 param1) { + this->mUnk_B8 = this->mUnk_5C.mParams[0]; + + struct { + void *ptr; + unk32 actorId; + unk32 param; + } local_9c; + local_9c.actorId = ActorId_MLCK; + local_9c.param = this->mUnk_5C.mParams[0]; + local_9c.ptr = &data_ov031_02112ad4; + Actor **lppActor = gpActorManager->func_01fff350(&local_9c, gpActorManager->mActorTable); + + if (gpActorManager->mUnk_08 != lppActor) { + return false; + } + void *param = this; + if (param != NULL) { + param = &this->mUnk_94; + } + data_0204a088->func_ov000_020611dc(param, 0x9); + bool var1 = true; + if (!((u16) gpMiscAdvManager->mSongs & (1 << this->mUnk_B8))) { + var1 = false; + } + bool var2; + if (var1 == false) { + var2 = false; + } else { + var2 = true; + } + + this->mUnk_B4 = this->mUnk_A0; + this->mUnk_F2 = var2; + this->vfunc_64(0x0); + return true; +} + +void ActorUnkMLCK::vfunc_54(unk32 param1, unk32 param2) { + if (param2 != 0) { + return; + } + this->vfunc_64(0x1); +} + +void ActorUnkMLCK::vfunc_58() { + this->mUnk_F0 = true; +} + +void ActorUnkMLCK::vfunc_5C() { + if (!this->mUnk_F1 || !this->mUnk_F0) { + return; + } + data_027e0d34->func_ov031_020d994c(); + data_ov000_020b51b8.func_ov000_0206d274(data_ov031_02110bec[this->mUnk_B8]); + this->mUnk_F0 = false; +} + +void ActorUnkMLCK::vfunc_60() { + this->vfunc_64(0x0); +} + +// non-matching +void ActorUnkMLCK::vfunc_64(unk32 param1) { + this->mUnk_BC = param1; + this->mUnk_C2 = 0xFFFF; + this->mUnk_C0 = 0x0; + if (param1 != 0x1) { + return; + } + + this->mUnk_F1 = false; + this->mUnk_C4 = data_ov000_020b52e8.func_ov000_0206f980(this->mUnk_B8); + this->mUnk_C4->func_ov031_020fb184(); +} + +void ActorUnkMLCK::vfunc_68() { + if (data_0204a088->mUnk_04 != -1 || data_0204a088->mUnk_08 != -1) { + return; + } + if (this->mUnk_F2) { + data_ov000_020b51b8.func_ov000_0206d274(0x83); + GetAdventureModeManager()->func_ov024_020c6d04()->mUnk_C4 = 0x1; + GetAdventureModeManager()->func_ov024_020c6d10(); + this->vfunc_64(0x2); + return; + } + this->vfunc_6C(); +} + +void ActorUnkMLCK::func_ov031_020faeb0() {} + +void ActorUnkMLCK::vfunc_6C() { + if (this->mUnk_5C.mUnk_1A[0] != 0x0) { + this->func_ov000_02098a88(0x0, 0x1); + } + for (ActorUnkMLCK_B4 *ptr = this->mUnk_A0; ptr != this->mUnk_B4; ++ptr) { + ptr->mUnk_00->vfunc_00(); + } +} + +void ActorUnkMLCK::vfunc_70() { + if (this->mUnk_5C.mUnk_1A[0] == 0x0) { + return; + } + this->func_ov000_02098a88(0x0, 0x0); +} + +// non-matching +void ActorUnkMLCK::func_ov031_020faf24() { + UnkStackStruct1 stack; + if (this->mUnk_C0 != 0xF) { + return; + } + if (!this->mUnk_F2) { + return; + } + bool var1 = this->func_ov031_020fb204(this->mUnk_B8); + bool var9 = true; + bool var = data_0204a088->func_ov000_020611fc(0x1); + + GetAdventureModeManager()->func_ov024_020c6d10(); + + func_ov000_02072fd0(&stack); + + stack.mUnk_00 = 0x1; + stack.mUnk_3A = 0x0; + stack.mUnk_3B = 0x0; + + VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &stack.mUnk_0C); + + this->mUnk_F4 = data_027e09b8->func_ov000_02073388(&stack, 0x0); + + this->mUnk_D8.mUnk_04 = true; + this->mUnk_D8.mUnk_05 = var1; + ActorUnk_vfunc_B0 actor = ActorUnk_vfunc_B0(); + actor.mUnk_0C = (u16) (this->mUnk_B8 + 0x28) | 0x10000; + actor.mUnk_00 = 0x1; + actor.mUnk_14 = 0x0; + actor.mUnk_32 = 0x0; + + VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &actor.mUnk_34); + actor.mUnk_04 = (unk32) & this->mUnk_D8; + + data_027e09b8->func_ov000_02073470(&actor, 0x0); + + if (!var) { + if (var) { + var9 = false; + } + this->mUnk_E4.mUnk_04 = false; + this->mUnk_E4.mUnk_05 = var9; + ActorUnk_vfunc_B0 actor2 = ActorUnk_vfunc_B0(); + actor2.mUnk_00 = 0x1; + actor2.mUnk_0C = (u16) (this->mUnk_B8 + 0x88) | 0x10000; + actor2.mUnk_14 = 0x0; + actor2.mUnk_32 = 0x0; + + VecFx32_Copy(data_027e0ce0->func_01fff148(0x0), &actor2.mUnk_34); + actor2.mUnk_04 = (unk32) & this->mUnk_E4; + + data_027e09b8->func_ov000_02073470(&actor2, 0x0); + } + + this->mUnk_F0 = false; + this->mUnk_F1 = true; +} + +void ActorUnkMLCK::func_ov031_020fb104() { + this->vfunc_64(0x3); +} + +void ActorUnkMLCK::func_ov031_020fb11c() { + this->vfunc_6C(); + data_027e0d34->func_ov031_020d996c(); + this->vfunc_64(0x0); + for (ActorUnkMLCK_B4 *ptr = this->mUnk_A0; ptr != this->mUnk_B4; ++ptr) { + ptr->mUnk_00->vfunc_08(); + } +} + +void ActorUnkMLCK_B4_00::func_ov031_020fb184() { + this->mUnk_04 = 0x0; + this->mUnk_08 = -1; + this->mUnk_0E = 0xFFFF; + this->mUnk_0C = 0x0; + this->mUnk_12 = 0xFFFF; + this->mUnk_10 = 0x0; +} + +void ActorUnkMLCK_D8::vfunc2_00() { + if (!this->mUnk_04) { + return; + } + this->mUnk_08->func_ov031_020fb104(); +} + +void ActorUnkMLCK_D8::vfunc2_04() { + if (!this->mUnk_05) { + return; + } + this->mUnk_08->func_ov031_020fb11c(); +} + +void ActorUnkMLCK::func_ov031_020fb1e8(ActorUnkMLCK_B4_00 *param1) { + if (this->mUnk_B4 != NULL) { + this->mUnk_B4->mUnk_00 = param1; + } + ++this->mUnk_B4; +} + +bool ActorUnkMLCK::func_ov031_020fb204(unk32 param1) { + for (ActorUnkMLCK_B4 *ptr = this->mUnk_A0; ptr != this->mUnk_B4; ++ptr) { + if (ptr->mUnk_00->vfunc_04()) { + return true; + } + } + return false; +} ActorUnkMLCK::~ActorUnkMLCK() {} ActorProfileUnkMLCK::~ActorProfileUnkMLCK() {}