diff options
| author | Yanis002 <35189056+Yanis002@users.noreply.github.com> | 2025-02-04 00:43:39 +0100 |
|---|---|---|
| committer | Yanis002 <35189056+Yanis002@users.noreply.github.com> | 2025-02-04 00:43:39 +0100 |
| commit | 51d5bf69edd56d626a4f5d987ecf9b37ae17fa33 (patch) | |
| tree | 42e6d19eeee300c606bc8296d121e6c10cc233d6 /include | |
| parent | 64e8537ba7e4d796079a7bacf23b3f5cdb9a7213 (diff) | |
| parent | 3f7197110627adbbe7ff1f69db1f5a15f9b6c598 (diff) | |
Merge remote-tracking branch 'upstream/main' into bmg
Diffstat (limited to 'include')
94 files changed, 2736 insertions, 595 deletions
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 64402237..2a30a7c1 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "Actor/ActorRef.hpp" #include "Actor/ActorType.hpp" diff --git a/include/Actor/ActorManager.hpp b/include/Actor/ActorManager.hpp index 6d3cce71..fd246f37 100644 --- a/include/Actor/ActorManager.hpp +++ b/include/Actor/ActorManager.hpp @@ -93,6 +93,18 @@ public: void func_ov00_020c3ce8(unk32 param1, bool param2); void Actor_vfunc_28(); static bool ActorTypeIsOneOf(ActorTypeId type, const ActorTypeId *types); + + static void Create(); + static void Destroy(); + ActorManager(); + ~ActorManager(); + void func_ov004_0210532c(); + void func_ov004_021053dc(); + void func_ov004_021054a4(s32 *param1, s32 param2, unk32 param3); + void func_ov004_0210554c(); + bool func_ov004_02105578(unk32 param1); + bool func_ov004_02105608(unk32 param1, unk32 param2, unk32 param3); + void func_ov004_021056b8(); }; extern ActorManager *gActorManager; diff --git a/include/Actor/ActorRef.hpp b/include/Actor/ActorRef.hpp index eeace571..5ef03f2c 100644 --- a/include/Actor/ActorRef.hpp +++ b/include/Actor/ActorRef.hpp @@ -8,7 +8,9 @@ struct ActorRef { /* 4 */ s32 index; /* 8 */ - inline ActorRef() {} + inline ActorRef() { + Reset(); + } inline ActorRef(s32 id, s32 index) : id(id), index(index) {} diff --git a/include/Actor/ActorRupee.hpp b/include/Actor/ActorRupee.hpp index 56519394..a5fcbea3 100644 --- a/include/Actor/ActorRupee.hpp +++ b/include/Actor/ActorRupee.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/Actor.hpp" diff --git a/include/Actor/ActorSpawner.hpp b/include/Actor/ActorSpawner.hpp new file mode 100644 index 00000000..e417ddcc --- /dev/null +++ b/include/Actor/ActorSpawner.hpp @@ -0,0 +1,25 @@ +#pragma once + +#include <nds/math.h> + +#include "global.h" +#include "types.h" + +#include "Actor/ActorRef.hpp" +#include "Actor/ActorType.hpp" + +class ActorSpawner { +public: + /* 0 (empty) */ + + static ActorSpawner *Create(); + static void Destroy(); + ActorSpawner(); + ~ActorSpawner(); + void _ZN12ActorSpawner19func_ov000_020c4014Ev(); + void _ZN12ActorSpawner19func_ov000_020c4018Ev(); + Actor *CreateActor(ActorTypeId type); + s32 Spawn(ActorTypeId type, Vec3p *pos, void *param3, ActorRef *ref); +}; + +extern ActorSpawner *gActorSpawner; diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index 4adc3a7a..7842da14 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -3,127 +3,87 @@ #include "global.h" #include "types.h" -#define __ACTOR_TYPE_A 'A' -#define __ACTOR_TYPE_B 'B' -#define __ACTOR_TYPE_C 'C' -#define __ACTOR_TYPE_D 'D' -#define __ACTOR_TYPE_E 'E' -#define __ACTOR_TYPE_F 'F' -#define __ACTOR_TYPE_G 'G' -#define __ACTOR_TYPE_H 'H' -#define __ACTOR_TYPE_I 'I' -#define __ACTOR_TYPE_J 'J' -#define __ACTOR_TYPE_K 'K' -#define __ACTOR_TYPE_L 'L' -#define __ACTOR_TYPE_M 'M' -#define __ACTOR_TYPE_N 'N' -#define __ACTOR_TYPE_O 'O' -#define __ACTOR_TYPE_P 'P' -#define __ACTOR_TYPE_Q 'Q' -#define __ACTOR_TYPE_R 'R' -#define __ACTOR_TYPE_S 'S' -#define __ACTOR_TYPE_T 'T' -#define __ACTOR_TYPE_U 'U' -#define __ACTOR_TYPE_V 'V' -#define __ACTOR_TYPE_W 'W' -#define __ACTOR_TYPE_X 'X' -#define __ACTOR_TYPE_Y 'Y' -#define __ACTOR_TYPE_Z 'Z' -#define __ACTOR_TYPE_0 '0' -#define __ACTOR_TYPE_1 '1' -#define __ACTOR_TYPE_2 '2' -#define __ACTOR_TYPE_3 '3' -#define __ACTOR_TYPE_4 '4' -#define __ACTOR_TYPE_5 '5' -#define __ACTOR_TYPE_6 '6' -#define __ACTOR_TYPE_7 '7' -#define __ACTOR_TYPE_8 '8' -#define __ACTOR_TYPE_9 '9' -#define __CONCAT(a, b) a##b -#define __EVAL(x) x -#define __ACTOR_TYPE_ID(a, b, c, d) \ - ((__EVAL(__CONCAT(__ACTOR_TYPE_, a)) << 24) | (__EVAL(__CONCAT(__ACTOR_TYPE_, b)) << 16) | \ - (__EVAL(__CONCAT(__ACTOR_TYPE_, c)) << 8) | (__EVAL(__CONCAT(__ACTOR_TYPE_, d)))) - typedef u32 ActorTypeId; enum ActorTypeId_ { - ActorTypeId_Null = __ACTOR_TYPE_ID(N, U, L, L), - - ActorTypeId_Navi = __ACTOR_TYPE_ID(N, A, V, I), - ActorTypeId_ForceNavi = __ACTOR_TYPE_ID(F, C, N, V), - ActorTypeId_WisdomNavi = __ACTOR_TYPE_ID(W, S, N, V), - - ActorTypeId_TreasureMap = __ACTOR_TYPE_ID(T, M, A, P), - ActorTypeId_DigSpot = __ACTOR_TYPE_ID(D, G, T, G), - - ActorTypeId_ShopItemBombchus = __ACTOR_TYPE_ID(I, T, B, T), - ActorTypeId_ShopItemBombs = __ACTOR_TYPE_ID(I, T, B, M), - ActorTypeId_ShopItemTreasure = __ACTOR_TYPE_ID(I, T, T, R), - ActorTypeId_ShopItemHeartContainer = __ACTOR_TYPE_ID(I, T, H, U), - ActorTypeId_ShopItemQuiver = __ACTOR_TYPE_ID(I, T, A, P), - ActorTypeId_ShopItemBombBag = __ACTOR_TYPE_ID(I, T, B, B), - ActorTypeId_ShopItemRedPotion = __ACTOR_TYPE_ID(I, T, P, B), - ActorTypeId_ShopItemCourageGem = __ACTOR_TYPE_ID(I, T, S, R), - ActorTypeId_ShopItemShield = __ACTOR_TYPE_ID(I, T, S, L), - ActorTypeId_ShopItemSoldOut = __ACTOR_TYPE_ID(I, T, S, O), - - ActorTypeId_Heart = __ACTOR_TYPE_ID(H, A, R, T), - ActorTypeId_Rupee = __ACTOR_TYPE_ID(R, U, P, Y), - - ActorTypeId_Bomb = __ACTOR_TYPE_ID(B, O, M, B), - ActorTypeId_Arrow = __ACTOR_TYPE_ID(A, R, R, W), - - ActorTypeId_PlayerDummy = __ACTOR_TYPE_ID(P, L, D, M), - ActorTypeId_PushBlock = __ACTOR_TYPE_ID(P, S, B, L), - ActorTypeId_WindBlock = __ACTOR_TYPE_ID(W, B, L, K), - ActorTypeId_StorageDrum = __ACTOR_TYPE_ID(D, R, U, M), - - ActorTypeId_SmallKey = __ACTOR_TYPE_ID(N, K, E, Y), - - ActorTypeId_Sandworm = __ACTOR_TYPE_ID(M, L, D, W), - ActorTypeId_Tektite = __ACTOR_TYPE_ID(T, E, K, T), - ActorTypeId_PolsVoice = __ACTOR_TYPE_ID(P, L, S, V), - ActorTypeId_Yook = __ACTOR_TYPE_ID(Y, E, T, I), - ActorTypeId_Armos = __ACTOR_TYPE_ID(A, M, O, S), - ActorTypeId_Stalfos = __ACTOR_TYPE_ID(S, T, L, F), - ActorTypeId_StalfosWarrior = __ACTOR_TYPE_ID(S, T, L, W), - ActorTypeId_ChuChu = __ACTOR_TYPE_ID(C, H, U, C), - ActorTypeId_Gel = __ACTOR_TYPE_ID(G, E, L, L), - ActorTypeId_Bee = __ACTOR_TYPE_ID(B, E, E, 0), - ActorTypeId_BeeHive = __ACTOR_TYPE_ID(B, E, E, H), - ActorTypeId_Cucco = __ACTOR_TYPE_ID(K, O, K, O), - ActorTypeId_Rope = __ACTOR_TYPE_ID(S, N, A, K), - ActorTypeId_Octorok = __ACTOR_TYPE_ID(O, C, T, A), - ActorTypeId_Keese = __ACTOR_TYPE_ID(K, E, T, H), - ActorTypeId_Rat = __ACTOR_TYPE_ID(R, A, T, 0), - ActorTypeId_Beamos = __ACTOR_TYPE_ID(B, M, O, S), - ActorTypeId_LikeLike = __ACTOR_TYPE_ID(L, K, L, K), - ActorTypeId_Crow = __ACTOR_TYPE_ID(C, R, O, W), - - ActorTypeId_Linebeck = __ACTOR_TYPE_ID(L, N, B, K), - ActorTypeId_Mailbox = __ACTOR_TYPE_ID(P, O, S, T), - ActorTypeId_Postman = __ACTOR_TYPE_ID(P, S, T, M), - - ActorTypeId_BIGR = __ACTOR_TYPE_ID(B, I, G, R), - ActorTypeId_BKEY = __ACTOR_TYPE_ID(B, K, E, Y), - ActorTypeId_BLST = __ACTOR_TYPE_ID(B, L, S, T), - ActorTypeId_BMRN = __ACTOR_TYPE_ID(B, M, R, N), - ActorTypeId_BMTY = __ACTOR_TYPE_ID(B, M, T, Y), - ActorTypeId_BTRF = __ACTOR_TYPE_ID(B, T, R, F), - ActorTypeId_CBLS = __ACTOR_TYPE_ID(C, B, L, S), - ActorTypeId_FLAL = __ACTOR_TYPE_ID(F, L, A, L), - ActorTypeId_FLBM = __ACTOR_TYPE_ID(F, L, B, M), - ActorTypeId_FLBT = __ACTOR_TYPE_ID(F, L, B, T), - ActorTypeId_FLTB = __ACTOR_TYPE_ID(F, L, T, B), - ActorTypeId_FLTM = __ACTOR_TYPE_ID(F, L, T, M), - ActorTypeId_FORC = __ACTOR_TYPE_ID(F, O, R, C), - ActorTypeId_ROPE = __ACTOR_TYPE_ID(R, O, P, E), - ActorTypeId_SBEM = __ACTOR_TYPE_ID(S, B, E, M), - ActorTypeId_STNE = __ACTOR_TYPE_ID(S, T, N, E), - ActorTypeId_TARU = __ACTOR_TYPE_ID(T, A, R, U), - ActorTypeId_TSBH = __ACTOR_TYPE_ID(T, S, B, H), - ActorTypeId_TSUB = __ACTOR_TYPE_ID(T, S, U, B), - ActorTypeId_VLR0 = __ACTOR_TYPE_ID(V, L, R, 0), + ActorTypeId_Null = 'NULL', + + ActorTypeId_Navi = 'NAVI', + ActorTypeId_ForceNavi = 'FCNV', + ActorTypeId_WisdomNavi = 'WSNV', + + ActorTypeId_TreasureMap = 'TMAP', + ActorTypeId_DigSpot = 'DGTG', + + ActorTypeId_ShopItemBombchus = 'ITBT', + ActorTypeId_ShopItemBombs = 'ITBM', + ActorTypeId_ShopItemTreasure = 'ITTR', + ActorTypeId_ShopItemHeartContainer = 'ITHU', + ActorTypeId_ShopItemQuiver = 'ITAP', + ActorTypeId_ShopItemBombBag = 'ITBB', + ActorTypeId_ShopItemRedPotion = 'ITPB', + ActorTypeId_ShopItemCourageGem = 'ITSR', + ActorTypeId_ShopItemShield = 'ITSL', + ActorTypeId_ShopItemSoldOut = 'ITSO', + + ActorTypeId_Heart = 'HART', + ActorTypeId_Rupee = 'RUPY', + + ActorTypeId_Arrow = 'ARRW', + ActorTypeId_Blast = 'BLST', + ActorTypeId_Bomb = 'BOMB', + ActorTypeId_GrapplingHook = 'ROPE', + + ActorTypeId_PlayerDummy = 'PLDM', + ActorTypeId_PushBlock = 'PSBL', + ActorTypeId_WindBlock = 'WBLK', + ActorTypeId_StorageDrum = 'DRUM', + + ActorTypeId_SmallKey = 'NKEY', + ActorTypeId_SwitchObject = 'SWOB', + ActorTypeId_EventIcon = 'EVIC', + + ActorTypeId_Sandworm = 'MLDW', + ActorTypeId_Tektite = 'TEKT', + ActorTypeId_PolsVoice = 'PLSV', + ActorTypeId_Yook = 'YETI', + ActorTypeId_Armos = 'AMOS', + ActorTypeId_Stalfos = 'STLF', + ActorTypeId_StalfosWarrior = 'STLW', + ActorTypeId_ChuChu = 'CHUC', + ActorTypeId_Gel = 'GELL', + ActorTypeId_Bee = 'BEE0', + ActorTypeId_BeeHive = 'BEEH', + ActorTypeId_Cucco = 'KOKO', + ActorTypeId_Rope = 'SNAK', + ActorTypeId_Octorok = 'OCTA', + ActorTypeId_Keese = 'KETH', + ActorTypeId_Rat = 'RAT0', + ActorTypeId_Beamos = 'BMOS', + ActorTypeId_LikeLike = 'LKLK', + ActorTypeId_Crow = 'CROW', + + ActorTypeId_Linebeck = 'LNBK', + ActorTypeId_Mailbox = 'POST', + ActorTypeId_Postman = 'PSTM', + + ActorTypeId_BIGR = 'BIGR', + ActorTypeId_BKEY = 'BKEY', + ActorTypeId_BMRN = 'BMRN', + ActorTypeId_BMTY = 'BMTY', + ActorTypeId_BTRF = 'BTRF', + ActorTypeId_CBLS = 'CBLS', + ActorTypeId_FLAL = 'FLAL', + ActorTypeId_FLBM = 'FLBM', + ActorTypeId_FLBT = 'FLBT', + ActorTypeId_FLTB = 'FLTB', + ActorTypeId_FLTM = 'FLTM', + ActorTypeId_FORC = 'FORC', + ActorTypeId_SBEM = 'SBEM', + ActorTypeId_STNE = 'STNE', + ActorTypeId_TARU = 'TARU', + ActorTypeId_TSBH = 'TSBH', + ActorTypeId_TSUB = 'TSUB', + ActorTypeId_VLR0 = 'VLR0', }; class ActorType_UnkClass { diff --git a/include/Actor/Dungeon/ActorEventIcon.hpp b/include/Actor/Dungeon/ActorEventIcon.hpp new file mode 100644 index 00000000..ccef162d --- /dev/null +++ b/include/Actor/Dungeon/ActorEventIcon.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" +#include "Unknown/UnkStruct_02035064.hpp" + +class ActorEventIcon : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ void *mUnk_158; + /* 15c */ u32 mUnk_15c; + /* 160 */ UnkStruct_02035064 mUnk_160; + + /* 00 */ virtual ~ActorEventIcon() override; + /* 08 */ virtual bool vfunc_08() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* 1c */ virtual void vfunc_1c(u16 *param1) override; + /* b4 */ + + static ActorEventIcon *Create(); + ActorEventIcon(); + u32 func_ov000_02090648(u32 param1); + bool func_ov000_02090774(u32 param1); +}; diff --git a/include/Actor/Dungeon/ActorSwitchObject.hpp b/include/Actor/Dungeon/ActorSwitchObject.hpp new file mode 100644 index 00000000..b2fa08d3 --- /dev/null +++ b/include/Actor/Dungeon/ActorSwitchObject.hpp @@ -0,0 +1,36 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" + +class ActorSwitchObject : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ unk32 mUnk_158; + /* 15c */ unk32 mUnk_15c; + /* 160 */ unk32 mUnk_160; + /* 164 */ unk32 mUnk_164; + /* 168 */ unk32 mUnk_168; + /* 16c */ u32 mUnk_16c; + /* 170 */ ActorRef mUnk_170[5]; + /* 198 */ + + /* 00 */ virtual ~ActorSwitchObject() override; + /* 08 */ virtual bool vfunc_08() override; + /* 0c */ virtual void vfunc_0c() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* b4 */ + + static ActorSwitchObject *Create(); + bool func_ov000_0208fc10(s32 param1); + void func_ov000_0208fc7c(); + bool func_ov000_0208fcb4(); + void func_ov000_0208fef8(); + void func_ov000_0209032c(); +}; diff --git a/include/Actor/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp index 36ce860d..98ebcf51 100644 --- a/include/Actor/ActorNavi.hpp +++ b/include/Actor/Navi/ActorNavi.hpp @@ -1,3 +1,3 @@ -#pragma once
-
-class ActorNavi;
+#pragma once + +class ActorNavi; diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp new file mode 100644 index 00000000..f3a45e8a --- /dev/null +++ b/include/Actor/Navi/ActorNaviBase.hpp @@ -0,0 +1,113 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Player/EquipHammer.hpp" +#include "Render/ModelRender.hpp" + +class ActorNaviBase_Unk1 {}; + +class ActorNaviBase : public Actor { + /* 000 (base) */ + /* 158 */ Vec3p mUnk_158; + /* 164 */ unk32 mUnk_164; + /* 168 */ ModelRender mUnk_168; + /* 1c4 */ unk8 mUnk_1c4[0xc]; + /* 1d0 */ void *mUnk_1d0; + /* 1d4 */ unk8 mUnk_1d4[0x30]; + /* 214 */ unk16 mUnk_214; + /* 216 */ unk8 mUnk_216[0xc]; + /* 222 */ unk16 mUnk_222; + /* 224 */ unk8 mUnk_224[0x18]; + /* 24c */ unk32 mUnk_24c; + /* 250 */ unk32 mUnk_250; + /* 254 */ unk32 mUnk_254; + /* 258 */ unk32 mUnk_258; + /* 25c */ unk32 mUnk_25c; + /* 260 */ unk32 mUnk_260; + /* 264 */ unk8 mUnk_264[0x1c]; + /* 280 */ unk32 mUnk_280; + /* 284 */ unk32 mUnk_284; + /* 288 */ unk8 mUnk_288[0x2]; + /* 28a */ unk16 mUnk_28a; + /* 28c */ unk8 mUnk_28c[0x8]; + /* 294 */ ModelRender mUnk_294; + /* 2f0 */ void *mUnk_2f0; + /* 2f4 */ unk8 mUnk_2f4[0x40]; + /* 334 */ unk32 mUnk_334; + /* 338 */ unk32 mUnk_338; + /* 33c */ unk32 mUnk_33c; + /* 340 */ unk16 mUnk_340; + /* 342 */ unk8 mUnk_342[0x2]; + /* 344 */ unk32 mUnk_344; + /* 348 */ unk32 mUnk_348; + /* 34c */ unk8 mUnk_34c[0x68]; + /* 3b4 */ EquipHammer *mHammer; + /* 3b8 */ unk32 mUnk_3b8; + /* 3bc */ unk32 mUnk_3bc; + /* 3c0 */ unk8 mUnk_3c0[0x8]; + /* 3c8 */ + + /* 00 */ virtual ~ActorNaviBase() override; + /* 08 */ virtual bool vfunc_08() override; + /* 10 */ virtual void vfunc_10(u32 param1) override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* 30 */ virtual unk32 vfunc_30() override; + /* 34 */ virtual void GetOffsetPos(Vec3p *pos) override; + /* 38 */ virtual unk32 vfunc_38() override; + /* 74 */ virtual void vfunc_74() override; + /* 78 */ virtual bool vfunc_78() override; + /* 80 */ virtual void vfunc_80() override; + /* 84 */ virtual void vfunc_84() override; + /* 90 */ virtual bool vfunc_90() override; + /* 94 */ virtual void vfunc_94() override; + /* a0 */ virtual bool TrySetTransform(Transform *transform) override; + /* b0 */ virtual void SetTransform(Transform *transform) override; + /* b4 */ virtual void vfunc_b4() = 0; + /* b8 */ virtual s32 vfunc_b8(); + /* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3); + /* c0 */ virtual bool vfunc_c0(Vec3p *param1); + /* c4 */ virtual void vfunc_c4(); + /* c8 */ virtual void vfunc_c8(); + /* cc */ virtual bool vfunc_cc(unk32 *param1); + /* d0 */ virtual void vfunc_d0(); + /* d4 */ virtual void vfunc_d4(); + /* d8 */ virtual void vfunc_d8(); + /* dc */ virtual void SetActive(bool active); + /* e0 */ virtual void vfunc_e0(); + /* e4 */ virtual void vfunc_e4(); + /* e8 */ virtual void vfunc_e8(); + /* ec */ virtual void vfunc_ec(); + /* f0 */ + + void func_ov000_020b8c50(); + void func_ov000_020b8c98(unk32 param1, unk32 param2, unk32 param3); + void TeleportAboveLink(); + void func_ov000_020b9770(s32 param1); + void func_ov000_020b9fdc(); + void func_ov000_020b9fe8(); + unk32 func_ov000_020ba204(Vec3p *param1, Vec3p *param2, s32 param3); + unk32 func_ov000_020ba3b4(); + void func_ov000_020ba414(Vec3p *param1); + bool func_ov000_020ba458(); + void func_ov000_020ba4e4(); + void func_ov000_020ba53c(); + void func_ov000_020baca8(Vec3p *param1, unk32 param2); + void func_ov000_020bad18(); + static void func_ov000_020bb0ac(); + static void func_ov000_020bb0e0(); + + ActorNaviBase(); + + bool func_ov059_0219933c(u32 param1); + void func_ov059_0219a0ac(); + void func_ov059_0219aa08(); + void func_ov059_0219aba8(u32 param1); + bool func_ov059_0219af14(); + bool func_ov059_0219afc4(); + void func_ov059_0219b020(); +}; diff --git a/include/Actor/Player/ActorArrow.hpp b/include/Actor/Player/ActorArrow.hpp new file mode 100644 index 00000000..a0ced1e3 --- /dev/null +++ b/include/Actor/Player/ActorArrow.hpp @@ -0,0 +1,63 @@ +#pragma once + +#include "global.h" +#include "nds/math.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" +#include "Player/EquipRope.hpp" + +class ActorArrow : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ Vec3p mUnk_158; + /* 164 */ ActorRef mUnk_164; + /* 16c */ unk32 mUnk_16c; + /* 170 */ unk8 mUnk_170[0x14]; + /* 184 */ void *mUnk_184; + /* 188 */ unk8 mUnk_188[0x4]; + /* 18c */ s32 mUnk_18c; + /* 190 */ s32 mUnk_190; + /* 194 */ s32 mUnk_194; + /* 198 */ s32 mUnk_198; + /* 19c */ unk32 mUnk_19c; + /* 1a0 */ unk32 mSpeed; + /* 1a4 */ unk32 mUnk_1a4; + /* 1a8 */ s32 mUnk_1a8; + /* 1ac */ unk16 mUnk_1ac; + /* 1ae */ s16 mUnk_1ae; + /* 1b0 */ s16 mUnk_1b0; + /* 1b2 */ unk16 mUnk_1b2; + /* 1b4 */ unk8 mUnk_1b4[0x3]; + /* 1b7 */ bool mUnk_1b7; + /* 1b8 */ + + /* 00 */ virtual ~ActorArrow() override; + /* 08 */ virtual bool vfunc_08() override; + /* 10 */ virtual void vfunc_10(u32 param1) override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* 44 */ virtual bool CollidesWith(Actor *other) override; + /* 48 */ virtual bool vfunc_48(Knockback *param1) override; + /* b4 */ + + static ActorArrow *Create(); + static void func_ov014_0211fd80(unk32 param1); + static void func_ov014_0211fd90(); + ActorArrow(); + void func_ov014_021200d4(); + void func_ov014_02120118(); + bool func_ov014_02120180(); + static EquipRope *GetEquipRope(); + void func_ov014_021207b8(ActorRef *ref, s32 param2, s32 param3); + void func_ov014_02120998(ActorRef *ref, q20 x, q20 y, q20 z, s16 param5); + void func_ov014_02120ac4(unk32 param1, bool param2); + void func_ov014_02120c98(Vec3p *param1); + void func_ov014_02120d58(); + void func_ov014_02120da8(); + bool func_ov014_02120dec(unk32 param1); +}; diff --git a/include/Actor/Player/ActorBlast.hpp b/include/Actor/Player/ActorBlast.hpp new file mode 100644 index 00000000..a1e8b5fe --- /dev/null +++ b/include/Actor/Player/ActorBlast.hpp @@ -0,0 +1,59 @@ +#pragma once + +#include "global.h" +#include "nds/math.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" + +class ActorBlast : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ unk8 mUnk_158[0x4]; + /* 15c */ s32 mUnk_15c; + /* 160 */ s32 mUnk_160; + /* 164 */ + + /* 00 */ virtual ~ActorBlast() override; + /* 08 */ virtual bool vfunc_08() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* b4 */ + + static ActorBlast *Create(); + ActorBlast(); +}; + +class ActorBlast_Unk1 : public UnkStruct_ov000_020beba8 { + /* 00 (base) */ + /* 0c */ ActorBlast *mBlast; + /* 10 */ Vec3p mUnk_10; + /* 1c */ unk8 mUnk_1c[0x18]; + /* 34 */ unk16 mUnk_34; + /* 36 */ unk16 mUnk_36; + /* 38 */ unk16 mUnk_38; + /* 3a */ unk16 mUnk_3a; + /* 3c */ unk16 mUnk_3c; + /* 3e */ unk8 mUnk_3e[0x20]; + /* 5e */ unk8 mUnk_5e; + /* 5f */ unk8 mUnk_5f; + /* 60 */ unk8 mUnk_60; + /* 61 */ unk8 mUnk_61; + /* 62 */ unk8 mUnk_62[0x6]; + /* 68 */ unk8 mUnk_68; + /* 69 */ unk8 mUnk_69; + /* 6a */ unk8 mUnk_6a; + /* 6b */ unk8 mUnk_6b; + /* 6c */ unk8 mUnk_6c; + /* 6d */ unk8 mUnk_6d; + /* 6e */ unk8 mUnk_6e[0x2]; + /* 70 */ + + /* 00 */ virtual ~ActorBlast_Unk1(); + /* 10 */ virtual void vfunc_10(s32 *param1); + /* 18 */ +}; diff --git a/include/Actor/Player/ActorBomb.hpp b/include/Actor/Player/ActorBomb.hpp new file mode 100644 index 00000000..17538bf8 --- /dev/null +++ b/include/Actor/Player/ActorBomb.hpp @@ -0,0 +1,73 @@ +#pragma once + +#include "global.h" +#include "nds/math.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" + +class ActorBomb_Unk1 : public UnkStruct_ov000_020beba8 { +public: + /* 00 (base) */ + /* 0c */ unk32 mUnk_0c; + /* 10 */ + + /* 00 */ virtual ~ActorBomb_Unk1() override; + /* 08 */ virtual void vfunc_0c(unk16 *param1) override; + /* 0c */ virtual void vfunc_10(s32 *param1) override; + /* 18 */ +}; + +class ActorBomb_Unk2 { + /* 0 */ unk32 mUnk_0; + /* 4 */ unk32 mUnk_4; + /* 8 */ unk32 mUnk_8; + /* c */ + + ActorBomb_Unk2(); + ~ActorBomb_Unk2(); +}; + +class ActorBomb : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ unk8 mUnk_158[0x7c]; + /* 1c4 */ unk32 mUnk_1c4; + /* 1c8 */ void *mUnk_1c8; + /* 1cc */ unk8 mUnk_1cc[0x24]; + /* 230 */ unk32 mUnk_230; + /* 234 */ unk32 mUnk_234; + /* 238 */ unk8 mUnk_238[0x4]; + /* 23c */ unk32 mUnk_23c; + /* 240 */ unk32 mUnk_240; + /* 244 */ unk32 mUnk_244; + /* 248 */ unk8 mUnk_248[0xc]; + /* 254 */ unk32 mUnk_254; + /* 258 */ unk32 mUnk_258; + /* 25c */ unk32 mUnk_25c; + /* 260 */ unk32 mUnk_260; + /* 264 */ unk8 mUnk_264[0x8]; + /* 26c */ + + /* 00 */ virtual ~ActorBomb() override; + /* 08 */ virtual bool vfunc_08() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* 54 */ virtual void vfunc_54() override; + /* 5c */ virtual bool SetVelocity(Vec3p *vel) override; + /* b4 */ + + static ActorBomb *Create(); + ActorBomb(); + bool func_ov014_02122bb8(s32 param1); + bool func_ov014_02122e48(unk32 *param1); + bool func_ov014_02122e7c(); + bool func_ov014_02122e98(); + bool func_ov014_02122eb8(); + bool func_ov014_02122ed4(); +}; diff --git a/include/Actor/Player/ActorRope.hpp b/include/Actor/Player/ActorRope.hpp new file mode 100644 index 00000000..1d70a5fd --- /dev/null +++ b/include/Actor/Player/ActorRope.hpp @@ -0,0 +1,71 @@ +#pragma once + +#include "global.h" +#include "nds/math.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Actor/ActorType.hpp" +#include "Unknown/UnkStruct_ov000_020beba8.hpp" + +class ActorRope_Unk_0219a3b0 : public UnkStruct_ov000_020beba8 { +public: + /* 0 (base) */ + /* c */ + + /* 00 */ virtual ~ActorRope_Unk_0219a3b0() override; + /* 08 */ virtual void vfunc_08(unk16 *param1) override; + /* 10 */ virtual void vfunc_10(s32 *param1) override; + /* 1c */ + + inline ActorRope_Unk_0219a3b0() : + UnkStruct_ov000_020beba8(6) {} +}; + +class ActorRope : public Actor { +public: + static ActorType gType; + + /* 000 (base) */ + /* 158 */ unk8 mUnk_158[0xc]; + /* 164 */ unk16 mUnk_164; + /* 166 */ unk16 mUnk_166; + /* 168 */ s16 mUnk_168; + /* 16a */ unk8 mUnk_16a; + /* 16b */ unk8 mUnk_16b; + /* 16c */ unk8 mUnk_16c; + /* 16d */ unk8 mUnk_16d; + /* 16e */ unk16 mUnk_16e; + /* 170 */ u16 mUnk_170; + /* 172 */ unk8 mUnk_172[0x2]; + /* 174 */ Vec3p mUnk_174; + /* 180 */ Vec3p mUnk_180; + /* 18c */ unk8 mUnk_18c[0x4]; + /* 190 */ Vec3p mUnk_190; + /* 19c */ u32 mUnk_19c; + /* 1a0 */ + + /* 00 */ virtual ~ActorRope() override; + /* 08 */ virtual bool vfunc_08() override; + /* 10 */ virtual void vfunc_10(u32 param1) override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 18 */ virtual void vfunc_18(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* b4 */ + + static ActorRope *Create(); + static void func_ov014_0212382c(Vec4p *vec); + static q20 func_ov014_0212384c(); + s32 func_ov014_021238f0(); + void func_ov014_02123904(); + bool func_ov014_02123960(); + void func_ov014_02123c54(s32 param1); + bool func_ov014_02123cd0(Vec3p *param1, s32 param2); + bool func_ov014_02123e1c(); + bool func_ov014_02123e48(unk32 param1); + + ActorRope(); + q20 func_ov057_0219a5ac(); + void func_ov057_0219a6b8(); + void func_ov057_0219a850(); +}; diff --git a/include/Cutscene/CutsceneHandler.hpp b/include/Cutscene/CutsceneHandler.hpp index 3f1858df..035638a7 100644 --- a/include/Cutscene/CutsceneHandler.hpp +++ b/include/Cutscene/CutsceneHandler.hpp @@ -3,4 +3,63 @@ #include "global.h" #include "types.h" -class CutsceneHandler; +#include <nds/math.h> + +#include "Render/FadeControl.hpp" + +class CutsceneHandler { +public: + /* 00 */ u32 mFlags1; + /* 04 */ u32 mFlags2; + /* 08 */ bool mCutsceneActive; + /* 09 */ bool mSkipping; + /* 0a */ bool mUnk_0a; + /* 0b */ unk8 mUnk_0b; + /* 0c */ unk32 mCutsceneTimer1; + /* 10 */ unk32 mCutsceneTimer2; + /* 14 */ unk32 mCutsceneEnd; + /* 18 */ unk32 mFreeze; + /* 1c */ u32 mUnk_1c; + /* 20 */ unk8 mUnk_20; + /* 21 */ char mUnk_21; + /* 22 */ unk8 mUnk_22; + /* 23 */ unk8 mUnk_23; + /* 24 */ unk16 mUnk_24; + /* 26 */ unk8 mUnk_26[0x2]; + /* 28 */ s32 mUnk_28; + /* 2c */ s32 mUnk_2c; + /* 30 */ unk32 mUnk_30; + /* 34 */ unk32 mUnk_34; + /* 38 */ unk32 mUnk_38; + /* 3c */ unk32 mUnk_3c; + /* 40 */ unk32 mUnk_40; + /* 44 */ unk32 mUnk_44; + /* 48 */ unk16 mUnk_48; + /* 4a */ unk8 mUnk_4a[0x2]; + /* 4c */ Mat4x3p mUnk_4c; + /* 7c */ FadeControl *mFadeControl; + /* 80 */ s32 **mUnk_80; + /* 84 */ s32 *mUnk_84; + /* 88 */ s32 mUnk_88; + /* 8c */ + + s32 func_ov000_020980fc(unk32 param1, unk32 param2, void **param3); + bool func_ov000_02098114(); + bool SkipCutscene(s32 param1); + unk32 func_ov000_020981b8(unk32 *param1); + void func_ov000_020985c0(); + void func_ov000_020985c4(); + void func_ov000_02098618(s32 param1, unk32 param2, void **param3); + void func_ov000_02098658(); + bool func_ov000_02098694(unk32 param1); + bool func_ov000_020987c4(unk32 param1, unk16 param2, unk32 param3, unk32 param4, bool param5); + bool func_ov000_02098834(); + bool func_ov000_02098860(); + unk32 func_ov000_02098890(unk32 param1, s32 param2); + static unk32 func_ov000_02098920(unk32 param1); + + CutsceneHandler(); + ~CutsceneHandler(); + void func_ov004_0210f3e4(s32 param1); + void func_ov004_0210f46c(); +}; diff --git a/include/DTCM/UnkStruct_027e05f8.hpp b/include/DTCM/UnkStruct_027e05f8.hpp new file mode 100644 index 00000000..43e83540 --- /dev/null +++ b/include/DTCM/UnkStruct_027e05f8.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e05f8 { + // TODO: Add fields + + void func_0202adf4(unk32 param1, s32 param2); + ~UnkStruct_027e05f8(); + + // Big gap to next TU + UnkStruct_027e05f8(); + void func_02037458(u16 param1); + void func_02037480(); + static unk32 func_02037490(unk32 param1); +}; diff --git a/include/DTCM/UnkStruct_027e077c.hpp b/include/DTCM/UnkStruct_027e077c.hpp new file mode 100644 index 00000000..3adda2bc --- /dev/null +++ b/include/DTCM/UnkStruct_027e077c.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e077c { + // TODO: Add fields + + UnkStruct_027e077c(unk32 param1); + bool func_0202e740(unk32 param1); +}; diff --git a/include/DTCM/UnkStruct_027e0d38.hpp b/include/DTCM/UnkStruct_027e0d38.hpp new file mode 100644 index 00000000..a36af0fe --- /dev/null +++ b/include/DTCM/UnkStruct_027e0d38.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0d38 { + /* 00 */ unk8 mUnk_00; + /* 01 */ unk8 mUnk_01[3]; // padding? + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ unk32 mUnk_10; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk16 mUnk_1c; + /* 1e */ unk8 mUnk_1e; + /* 1f */ unk8 mUnk_1f; + /* 20 */ unk8 mUnk_20; + /* 21 */ unk8 mUnk_21; + /* 22 */ unk8 mUnk_22[2]; // padding? + /* 24 */ void *mUnk_24; + /* 28 */ void *mUnk_28; + /* 2c */ + + unk32 func_ov000_02078b40(); + unk8 func_ov000_02078b64(); + bool func_ov000_02078b88(); +}; + +extern UnkStruct_027e0d38 *data_027e0d38; diff --git a/include/DTCM/UnkStruct_027e0fd4.hpp b/include/DTCM/UnkStruct_027e0fd4.hpp new file mode 100644 index 00000000..4d931bd5 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0fd4.hpp @@ -0,0 +1,130 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Actor/Actor.hpp" +#include "Physics/Cylinder.hpp" +#include "Unknown/UnkStruct_ov000_020b1528.hpp" + +class UnkStruct_027e0fd4_Unk1 { +public: + /* 00 (vtable) */ + /* 04 */ unk8 mUnk_04; + /* 08 */ Vec3p mUnk_08; + /* 14 */ + + /* 00 */ virtual ~UnkStruct_027e0fd4_Unk1(); + /* 08 */ virtual void vfunc_08(u16 *param1, unk32 param2, u32 param3); + /* 0c */ virtual unk32 vfunc_0c(); + /* 10 */ virtual bool vfunc_10(s32 *param1); + /* 14 */ virtual bool vfunc_14(); + /* 18 */ +}; + +class UnkStruct_027e0fd4 : public UnkStruct_ov000_020b1528 { +public: + /* 000 (base) */ + /* 01c */ unk8 mUnk_018[0x4]; + /* 020 */ Cylinder mUnk_020; + /* 030 */ s32 mUnk_030; + /* 034 */ s32 mUnk_034; + /* 038 */ s32 mUnk_038; + /* 03c */ s32 mUnk_03c; + /* 040 */ s32 mUnk_040; + /* 044 */ Vec3p mUnk_044; + /* 050 */ s32 mUnk_050; + /* 054 */ unk8 mUnk_054[0x6]; + /* 05a */ unk16 mUnk_05a; + /* 05c */ unk16 mUnk_05c; + /* 05e */ unk16 mUnk_05e; + /* 060 */ unk16 mUnk_060; + /* 062 */ unk8 mUnk_062[0x2]; + /* 064 */ s32 mUnk_064; + /* 068 */ s32 mUnk_068; + /* 06c */ s32 mUnk_06c; + /* 070 */ unk32 mUnk_070; + /* 074 */ unk32 mUnk_074; + /* 078 */ unk8 mUnk_078[0x18]; + /* 090 */ unk32 mUnk_090; + /* 094 */ u32 mUnk_094; + /* 098 */ s32 mUnk_098; + /* 09c */ unk32 mUnk_09c; + /* 0a0 */ u16 mUnk_0a0; + /* 0a2 */ s16 mUnk_0a2; + /* 0a4 */ unk16 mUnk_0a4; + /* 0a6 */ unk16 mUnk_0a6; + /* 0a8 */ unk16 mUnk_0a8; + /* 0aa */ unk8 mUnk_0aa[0x2]; + /* 0ac */ unk32 mUnk_0ac; + /* 0b0 */ unk32 mUnk_0b0; + /* 0b4 */ unk32 mUnk_0b4; + /* 0b8 */ unk8 mUnk_0b8; + /* 0b9 */ bool mUnk_0b9; + /* 0ba */ bool mUnk_0ba; + /* 0bb */ unk8 mUnk_0bb[0x5]; + /* 0c0 */ unk32 mUnk_0c0; + /* 0c4 */ u8 mUnk_0c4; + /* 0c5 */ u8 mUnk_0c5; + /* 0c6 */ s16 mUnk_0c6; + /* 0c8 */ unk16 mUnk_0c8; + /* 0ca */ u16 mUnk_0ca; + /* 0cc */ u8 mUnk_0cc; + /* 0cd */ bool mUnk_0cd; + /* 0ce */ u8 mUnk_0ce; + /* 0cf */ unk8 mUnk_0cf; + /* 0d0 */ u32 mUnk_0d0; + /* 0d4 */ s32 mUnk_0d4; + /* 0d8 */ s32 mUnk_0d8; + /* 0dc */ s32 mUnk_0dc; + /* 0e0 */ Actor *mUnk_0e0; + /* 0e4 */ unk32 mUnk_0e4; + /* 0e8 */ unk32 mUnk_0e8; + /* 0ec */ unk32 mUnk_0ec; + /* 0f0 */ unk32 mUnk_0f0; + /* 0f4 */ unk32 mUnk_0f4; + /* 0f8 */ unk32 mUnk_0f8; + /* 0fc */ s32 mUnk_0fc; + /* 100 */ s32 mUnk_100; + /* 104 */ s32 mUnk_104; + /* 108 */ unk32 mUnk_108; + /* 10c */ unk32 mUnk_10c; + /* 110 */ unk32 mUnk_110; + /* 114 */ unk32 mUnk_114; + /* 118 */ unk32 mUnk_118; + /* 11c */ s32 mUnk_11c; + /* 120 */ Vec3p mUnk_120; + /* 12c */ + + /* 00 */ virtual ~UnkStruct_027e0fd4() override; + /* 08 */ virtual bool vfunc_08() override; + /* 0c */ virtual bool vfunc_0c() override; + /* 10 */ virtual bool vfunc_10(s32 *param1) override; + /* 14 */ virtual bool vfunc_14(u16 *index, unk32 param2) override; + /* 18 */ virtual void Clear() override; + /* 1c */ virtual void vfunc_1c(); + /* 20 */ + + UnkStruct_027e0fd4(); + s32 func_Ov000_020b4c2c(); + void func_ov000_020b4c4c(Vec3p *param1, s32 size); + void func_ov000_020b4d00(); + unk32 func_ov000_020b4d28(u32 *param1, s32 *param2, s32 *param3); + unk32 func_ov000_020b5034(Vec3p *param1); + bool func_ov000_020b50e0(); + bool func_ov000_020b50f8(); + unk32 func_ov000_020b510c(); + void func_ov000_020b5160(u32 *param1, u32 param2); + bool func_ov000_020b5268(unk32 param1, Vec3p *param2, unk32 param3); + u32 func_ov000_020b5360(s32 param1, s32 param2); + void func_ov000_020b53c4(unk32 *param1); + bool func_ov000_020b53f4(unk32 param1, unk32 param2, u32 param3); + static void func_ov000_020b5420(unk32 *param1, UnkStruct_027e0fd4 *param2); + void func_ov000_020b542c(u32 param1); + void func_ov000_020b54c8(); + void func_ov000_020b5514(Vec3p *param1, Vec3p *param2); + void func_ov000_020b5cb4(Vec3p *param1, Vec3p *param2, s32 *param3, s32 *param4); + s32 func_ov000_020b6af0(unk32 *param1); + void func_ov000_020b6ba4(s32 param1, s32 param2); + bool func_ov000_020b6e70(); +}; diff --git a/include/DTCM/UnkStruct_027e0fe0.hpp b/include/DTCM/UnkStruct_027e0fe0.hpp new file mode 100644 index 00000000..906a0e87 --- /dev/null +++ b/include/DTCM/UnkStruct_027e0fe0.hpp @@ -0,0 +1,13 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_027e0fe0 { + // TODO: Add fields + + void Init(); + void Dispose(); + void func_0202ea50(unk32 param1, unk32 param2, unk32 param3); + void func_0202ea98(); +}; diff --git a/include/DTCM/UnkStruct_027e103c.hpp b/include/DTCM/UnkStruct_027e103c.hpp index b1f5792f..e133e876 100644 --- a/include/DTCM/UnkStruct_027e103c.hpp +++ b/include/DTCM/UnkStruct_027e103c.hpp @@ -16,29 +16,129 @@ struct UnkStruct_027e103c { /* 20 */ unk16 mUnk_20; /* 22 */ s16 mUnk_22; /* 24 */ u8 mUnk_24; - /* 25 */ unk8 mUnk_25[7]; + /* 25 */ unk8 mUnk_25[0x5]; + /* 2a */ unk8 mUnk_2a; + /* 2b */ unk8 mUnk_2b; /* 2c */ - void func_ov000_020cf284(unk32, unk32); - - void func_ov000_020cf224(unk32); - void func_ov000_020cf2a0(unk32); - s8* func_ov000_020cef9c(void); - unk32 func_ov000_020cf0bc(void); - bool func_ov000_020cf42c(void); - unk32 func_ov000_020cf488(void); - unk32 func_ov000_020cf4bc(void); - void func_ov000_020cfa24(void); - void func_ov000_020cfb38(void); - void func_ov000_020cfe40(unk32, unk32); - void func_ov005_02103f8c(unk32*); - void func_ov005_02104028(unk32); - void func_ov000_020cfb58(u8*); - unk32 func_ov000_020cf8fc(unk32); - void func_ov000_020cfc9c(unk32, unk32); + void *func_ov000_020cef9c(); + unk32 func_ov000_020cefbc(); + unk32 func_ov000_020cefdc(); + unk32 func_ov000_020ceffc(); + unk32 func_ov000_020cf01c(); + unk32 func_ov000_020cf03c(); + unk32 func_ov000_020cf05c(); + unk32 func_ov000_020cf07c(); + unk32 func_ov000_020cf09c(); + unk32 func_ov000_020cf0bc(); + unk32 func_ov000_020cf0dc(); + unk32 func_ov000_020cf0fc(); + unk32 func_ov000_020cf11c(); + void func_ov000_020cf13c(s32 param1); + void func_ov000_020cf1b8(); + void func_ov000_020cf1d4(unk32 param1); + void func_ov000_020cf20c(); + void func_ov000_020cf224(unk32 param1); + void func_ov000_020cf238(unk32 param1, unk32 param2); + bool func_ov000_020cf270(u16 param1); + void func_ov000_020cf284(u16 param1, s32 param2); + void func_ov000_020cf2a0(u32 param1); + void func_ov000_020cf2b8(); + void func_ov000_020cf2d8(); + void func_ov000_020cf2f8(); + void func_ov000_020cf330(); + void func_ov000_020cf348(); + s32 func_ov000_020cf374(bool param1); + void func_ov000_020cf384(); + void func_ov000_020cf398(); + void func_ov000_020cf3b8(); + void func_ov000_020cf3c8(); + void func_ov000_020cf3dc(); + void func_ov000_020cf3f0(); + void func_ov000_020cf404(); + void func_ov000_020cf414(); + bool func_ov000_020cf42c(); + bool func_ov000_020cf444(); + bool func_ov000_020cf488(); + bool func_ov000_020cf4bc(); + bool func_ov000_020cf4d8(); + bool func_ov000_020cf4f4(); + bool func_ov000_020cf518(); + bool func_ov000_020cf534(); + bool func_ov000_020cf550(); + bool func_ov000_020cf678(); + bool func_ov000_020cf750(); + bool func_ov000_020cf7c4(); + void func_ov000_020cf7e8(); + u32 func_ov000_020cf864(u32 param1); + bool func_ov000_020cf8fc(u32 param1); + bool func_ov000_020cf948(); + void func_ov000_020cf9dc(s32 param1, s32 param2); + void func_ov000_020cfa24(s32 param1, s32 param2); + unk8 func_ov000_020cfa64(); + void func_ov000_020cfa70(s32 param1, s32 param2); + unk8 func_ov000_020cfab0(); + void func_ov000_020cfabc(s32 param1, s32 param2); + void func_ov000_020cfae8(s32 param1, s32 param2); //! TODO: find out if the type is always `MsgProc_Type1*` void func_ov000_020cfb20(void*); + + void func_ov000_020cfb38(); + void func_ov000_020cfb48(); + void func_ov000_020cfb58(); + void func_ov000_020cfb68(); + void func_ov000_020cfb84(); + void func_ov000_020cfb94(); + unk32 func_ov000_020cfbb0(); + void func_ov000_020cfbd8(unk8 param1); + void func_ov000_020cfbf0(unk32 param1, unk32 param2, unk32 param3); + void func_ov000_020cfc20(); + void func_ov000_020cfc44(unk32 param1); + void func_ov000_020cfc70(unk32 param1); + void func_ov000_020cfc9c(unk32 param1, unk32 param2); + void func_ov000_020cfcec(); + bool func_ov000_020cfcf8(); + void func_ov000_020cfde4(unk32 param1); + void func_ov000_020cfe10(unk8 param1); + void func_ov000_020cfe40(unk8 param1, unk32 param2); + void func_ov000_020cfe74(unk32 param1, unk32 param2); + unk32 func_ov000_020cfea8(); + + UnkStruct_027e103c(); + ~UnkStruct_027e103c(); + static void Create(); + static void Destroy(); + void func_ov004_02104d68(); + static bool func_ov004_02104f5c(); + void func_ov004_02104f78(); + void func_ov004_02104fa8(); + void func_ov004_02104fb8(); + void func_ov004_02104ffc(unk32 param1, unk32 param2); + void func_ov004_0210504c(); + + void func_ov005_02103f20(); + void func_ov005_02103f3c(); + bool func_ov005_02103f4c(); + void func_ov005_02103f70(); + void func_ov005_02103f80(unk8 param1); + void func_ov005_02103f8c(char *param1); + void func_ov005_02103fb4(); + void func_ov005_02103fc8(unk8 param1); + void func_ov005_02103fd8(); + void func_ov005_02103ff0(); + void WalletFull(); + void func_ov005_02104104(); + void func_ov005_02104028(bool param1); + void func_ov005_02104058(); + void func_ov005_02104070(); + void func_ov005_02104088(unk32 param1); + void func_ov005_021040c8(); + bool func_ov005_021040ec(); + void func_ov005_02104114(); + void func_ov005_0210413c(); + void func_ov005_02104160(); + void func_Ov005_0210418c(char param1); }; extern UnkStruct_027e103c *data_027e103c; diff --git a/include/Debug/DebugHierarchy.hpp b/include/Debug/DebugHierarchy.hpp index 05ab803f..70e4de9c 100644 --- a/include/Debug/DebugHierarchy.hpp +++ b/include/Debug/DebugHierarchy.hpp @@ -6,6 +6,10 @@ #include "Debug/DebugHierarchyBase.hpp" class DebugHierarchy : public DebugHierarchyBase { +public: /* 00 (base) */ /* 08 */ + + /* 00 */ virtual ~DebugHierarchy() override; + /* 40 */ }; diff --git a/include/Debug/DebugHierarchyBase.hpp b/include/Debug/DebugHierarchyBase.hpp index 718ce1eb..5b4a175a 100644 --- a/include/Debug/DebugHierarchyBase.hpp +++ b/include/Debug/DebugHierarchyBase.hpp @@ -3,10 +3,32 @@ #include "global.h" #include "types.h" +#include "Debug/DebugHierarchyNode.hpp" #include "System/SysNew.hpp" class DebugHierarchyBase : public SysObject { +public: /* 00 (vtable) */ /* 04 */ void *mNodes; /* 08 */ + + /* 00 */ virtual ~DebugHierarchyBase(); + /* 08 */ virtual void vfunc_08(); + /* 0c */ virtual void vfunc_0c(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ virtual void vfunc_24(); + /* 28 */ virtual void vfunc_28(); + /* 2c */ virtual void vfunc_2c(); + /* 30 */ virtual void vfunc_30(); + /* 34 */ virtual bool GetChildNode(unk32 param1, const char *description, u32 parent, s32 *param4); + /* 38 */ virtual void vfunc_38(); + /* 3c */ virtual void vfunc_3c(); + /* 40 */ + + DebugHierarchyBase(); + DebugHierarchyNode *FindNode(u32 id); }; diff --git a/include/Debug/DebugHierarchyChild.hpp b/include/Debug/DebugHierarchyChild.hpp new file mode 100644 index 00000000..c095fae2 --- /dev/null +++ b/include/Debug/DebugHierarchyChild.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class DebugHierarchyChild { +public: + /* 00 */ char mUnk_00[0xc]; + /* 0c */ s32 mUnk_0c; + /* 10 */ +}; diff --git a/include/Debug/DebugHierarchyNode.hpp b/include/Debug/DebugHierarchyNode.hpp new file mode 100644 index 00000000..057d1946 --- /dev/null +++ b/include/Debug/DebugHierarchyNode.hpp @@ -0,0 +1,19 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Debug/DebugHierarchyChild.hpp" + +class DebugHierarchyNode { +public: + /* 00 */ u32 mNodeId; + /* 04 */ u32 mUnk_04; + /* 08 */ u32 mUnk_08; + /* 0c */ unk8 mUnk_0c[0x4]; + /* 10 */ u32 mId; + /* 14 */ s32 mUnk_14; + /* 18 */ unk8 mUnk_18[0x8]; + /* 20 */ DebugHierarchyChild mChildren; + /* 30 */ +}; diff --git a/include/Item/Item.hpp b/include/Item/Item.hpp index 1b67ada3..4d70c9f1 100644 --- a/include/Item/Item.hpp +++ b/include/Item/Item.hpp @@ -2,6 +2,8 @@ #include "types.h" +#define MAX_POTIONS 2 + typedef s32 ItemFlag; enum ItemFlag_ { ItemFlag_None = -1, @@ -233,6 +235,77 @@ enum ItemId_ { /* 0x88 */ ItemId_Unk_136 = 136, }; +enum Gem { + Gem_Courage, + Gem_Power, + Gem_Wisdom, + Gem_COUNT, +}; + +typedef u32 ShipPart; +enum ShipPart_ { + ShipPart_Anchor, + ShipPart_Prow, + ShipPart_Hull, + ShipPart_Cannon, + ShipPart_Handrail, + ShipPart_Wheel, + ShipPart_Chimney, + ShipPart_Bridge, + ShipPart_COUNT, +}; + +typedef u32 ShipType; +enum ShipType_ { + ShipType_Linebeck, + ShipType_Bright, + ShipType_Iron, + ShipType_Stone, + ShipType_Vintage, + ShipType_Demon, + ShipType_Tropical, + ShipType_Dignified, + ShipType_Golden, + ShipType_COUNT, +}; + +typedef u32 ShipItem; +#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type) +#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT) + +typedef u32 Treasure; +enum Treasure_ { + Treasure_PinkCoral, + Treasure_WhitePearlLoop, + Treasure_DarkPearlLoop, + Treasure_ZoraScale, + Treasure_GoronAmber, + Treasure_RutoCrown, + Treasure_HelmarocPlume, + Treasure_RegalRing, + + Treasure_COUNT, +}; + +typedef u8 Potion; +enum Potion_ { + Potion_None, + Potion_Red, + Potion_Purple, + Potion_Yellow, + Potion_COUNT, +}; + +struct ItemFlags { + /* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)]; + /* 10 */ +}; + +struct ShipPartPricesShown { + /* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)]; + /* c */ +}; + namespace Item { bool func_ov00_020ad020(ItemId item); bool func_ov00_020ad068(ItemId item); diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp index 35985374..5a5c8d3d 100644 --- a/include/Item/ItemManager.hpp +++ b/include/Item/ItemManager.hpp @@ -5,25 +5,20 @@ extern "C" { }
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
-#include "Actor/ActorNavi.hpp"
-#include "DTCM/UnkStruct_027e0f78.hpp"
+#include "Actor/Navi/ActorNavi.hpp"
#include "Item/Item.hpp"
-#include "Map/MapManager.hpp"
#include "Player/EquipItem.hpp"
-#include "Player/HealthManager.hpp"
#include "Render/ModelRender.hpp"
-#include "Save/AdventureFlags.hpp"
+#include "Save/SaveItemManager.hpp"
#include "Sound/Sfx.hpp"
-#include "System/OverlayManager.hpp"
#include "System/SysNew.hpp"
#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes
#define MAX_AMMO_UPGRADE 2
#define MAX_UNK_0BA 9
-#define MAX_POTIONS 2
typedef s32 FairyId;
enum FairyId_ {
@@ -34,100 +29,6 @@ enum FairyId_ { FairyId_COUNT = 3,
};
-enum Gem {
- Gem_Courage,
- Gem_Power,
- Gem_Wisdom,
- Gem_COUNT,
-};
-
-typedef u32 ShipPart;
-enum ShipPart_ {
- ShipPart_Anchor,
- ShipPart_Prow,
- ShipPart_Hull,
- ShipPart_Cannon,
- ShipPart_Handrail,
- ShipPart_Wheel,
- ShipPart_Chimney,
- ShipPart_Bridge,
- ShipPart_COUNT,
-};
-
-typedef u32 ShipType;
-enum ShipType_ {
- ShipType_Linebeck,
- ShipType_Bright,
- ShipType_Iron,
- ShipType_Stone,
- ShipType_Vintage,
- ShipType_Demon,
- ShipType_Tropical,
- ShipType_Dignified,
- ShipType_Golden,
- ShipType_COUNT,
-};
-
-typedef u32 ShipItem;
-#define SHIP_ITEM(part, ship) (ShipPart_##part * ShipPart_COUNT + ShipType_##type)
-#define ShipItem_COUNT (ShipPart_COUNT * ShipType_COUNT)
-
-typedef u32 Treasure;
-enum Treasure_ {
- Treasure_PinkCoral,
- Treasure_WhitePearlLoop,
- Treasure_DarkPearlLoop,
- Treasure_ZoraScale,
- Treasure_GoronAmber,
- Treasure_RutoCrown,
- Treasure_HelmarocPlume,
- Treasure_RegalRing,
-
- Treasure_COUNT,
-};
-
-#define NUM_POTIONS 2
-typedef u8 Potion;
-enum Potion_ {
- Potion_None,
- Potion_Red,
- Potion_Purple,
- Potion_Yellow,
- Potion_COUNT,
-};
-
-struct ItemFlags {
- /* 00 */ u32 flags[CEIL_DIV(ItemFlag_COUNT, 32)];
- /* 10 */
-};
-
-struct ShipPartPricesShown {
- /* 0 */ u32 flags[CEIL_DIV(ShipItem_COUNT, 32)];
- /* c */
-};
-
-struct UnkStruct_027e0d38 {
- /* 00 */ unk8 mUnk_00;
- /* 01 */ unk8 mUnk_01[3]; // padding?
- /* 04 */ unk32 mUnk_04;
- /* 08 */ unk32 mUnk_08;
- /* 0c */ unk32 mUnk_0c;
- /* 10 */ unk32 mUnk_10;
- /* 14 */ unk32 mUnk_14;
- /* 18 */ unk32 mUnk_18;
- /* 1c */ unk16 mUnk_1c;
- /* 1e */ unk8 mUnk_1e;
- /* 1f */ unk8 mUnk_1f;
- /* 20 */ unk8 mUnk_20;
- /* 21 */ unk8 mUnk_21;
- /* 22 */ unk8 mUnk_22[2]; // padding?
- /* 24 */ void *mUnk_24;
- /* 28 */ void *mUnk_28;
- /* 2c */
-
- unk32 func_ov000_02078b40(void);
-};
-
typedef u32 ItemModelId;
enum ItemModelId_ {
ItemModelId_OshusSword, // swA
@@ -158,35 +59,6 @@ enum DungeonItemModelId_ { DungeonItemModelId_COUNT,
};
-struct SaveItemManager {
- /* 00 */ ItemFlags itemFlags;
- /* 10 */ u32 salvagedTreasureFlags;
- /* 14 */ ShipPartPricesShown shipPartPricesShown;
- /* 20 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)];
- /* 24 */ u8 equippedShipParts[ShipPart_COUNT];
- /* 2c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT];
- /* 74 */ s8 treasure[Treasure_COUNT];
- /* 7c */ unk8 unk_7c[4];
- /* 80 */ u16 hourglassSeconds;
- /* 82 */ u16 unk_82[6];
- /* 8e */ u16 numRupees;
- /* 90 */ unk8 unk_90;
- /* 91 */ unk8 unk_91;
- /* 92 */ unk8 unk_92;
- /* 93 */ u8 numBombs;
- /* 94 */ u8 numBombchus;
- /* 95 */ u8 numArrows;
- /* 96 */ s8 equippedItem;
- /* 97 */ Potion potions[NUM_POTIONS];
- /* 99 */ u8 numGems[Gem_COUNT];
- /* 9c */ u8 quiverSize;
- /* 9d */ u8 bombBagSize;
- /* 9e */ u8 bombchuBagSize;
- /* 9f */ u8 unk_9f[6];
- /* a5 */ u8 equippedFairy;
- /* a6 */
-};
-
class ItemManager : public SysObject {
private:
/* 000 */ ItemFlag mEquippedItem;
@@ -234,6 +106,7 @@ public: static void Destroy();
ItemManager();
~ItemManager();
+ void Init();
// Save/load
void Save(SaveItemManager *save);
@@ -244,6 +117,7 @@ public: ActorNavi *GetFairy(FairyId id) const;
u32 GetActiveFairyLevel(FairyId id) const;
u32 GetFairyLevel(FairyId id) const;
+ void SpawnFairies();
// Equip item
void ClearPrevEquippedItem();
@@ -262,6 +136,11 @@ public: bool ClearForcedEquipItem();
void UpdateSwordShieldInUse();
static EquipItem *GetEquipItemUnchecked(ItemFlag equipId);
+ void InitEquipItems();
+ void func_ov004_02107648();
+ void func_ov004_02107650();
+ void func_ov004_02107698();
+ void func_ov004_021076bc();
// Ammo
u16 GetAmmo(ItemFlag equipId) const;
diff --git a/include/Item/ItemModelLoader.hpp b/include/Item/ItemModelLoader.hpp new file mode 100644 index 00000000..6b06893a --- /dev/null +++ b/include/Item/ItemModelLoader.hpp @@ -0,0 +1,29 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class ItemModelLoader { +public: + /* 00 */ unk32 mItems; + /* 04 */ unk32 mDungeonItems; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk8 mUnk_0c[0x14]; + /* 20 */ + + ItemModelLoader(); + ItemModelLoader *func_ov000_020bb2ec(); + unk32 func_ov000_020bb34c(); + void func_ov000_020bb378(s32 param1); + unk32 func_ov000_020bb390(s32 equipId); + unk32 func_ov000_020bb3a8(s32 param1); + s32 func_ov000_020bb3b4(s32 param1, char *param2); + unk32 func_ov000_020bb3d4(s32 param1, unk32 param2); + void func_ov000_020bb3f4(char *param2); + void func_ov000_020bb414(unk32 param1); + void func_ov000_020bb420(unk32 param1); + void func_ov000_020bb42c(unk32 param1); + + static void Create(); + static void Destroy(); +}; diff --git a/include/Map/CameraViewpoint.hpp b/include/Map/CameraViewpoint.hpp index c952078b..924ef379 100644 --- a/include/Map/CameraViewpoint.hpp +++ b/include/Map/CameraViewpoint.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "System/SysNew.hpp" diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp index 8f87379c..b9b11904 100644 --- a/include/Map/Course.hpp +++ b/include/Map/Course.hpp @@ -111,4 +111,13 @@ class Course : public SysObject { bool GetMapDataFlag4(unk32 param_2); MapData *FindMapData(u32 map); MapData *FindCurrentMapData(); + + Course(); + ~Course(); + bool func_ov004_0210ee84(char *param1); + unk32 func_ov004_0210ef90(unk32 param1); + void func_ov004_0210f010(); + void LoadMapData(u8 *map, s32 x, s32 y, char param4, unk32 param5); + bool func_ov004_0210f0fc(unk32 param1, unk16 *param2, s32 param3); + void func_ov004_0210f140(s32 param1); }; diff --git a/include/Map/Entrance.hpp b/include/Map/Entrance.hpp index d9bea6ef..8d7d6a29 100644 --- a/include/Map/Entrance.hpp +++ b/include/Map/Entrance.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "System/SysNew.hpp" diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp index f9d08cac..c92060a3 100644 --- a/include/Map/MapBase.hpp +++ b/include/Map/MapBase.hpp @@ -5,7 +5,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "Map/CameraViewpoint.hpp" #include "Map/Course.hpp" @@ -25,6 +25,7 @@ struct MapBase_Unk_180 { /* 4 */ ~MapBase_Unk_180(); + MapBase_Unk_180(); }; struct MapBase_Unk1 { @@ -234,4 +235,11 @@ public: void func_ov00_02080de4(); unk8 func_ov00_02080de8(unk32 param_2); void func_ov00_02080edc(); + + MapBase(u32 param1, u32 param2); + void func_ov004_0210c118(); + void func_ov004_0210cb1c(); + void func_ov004_0210cb38(); + void func_ov004_0210cc20(Course *course); + void func_ov004_0210cc58(Course *course, u32 map); }; diff --git a/include/Map/MapData.hpp b/include/Map/MapData.hpp index be4b691f..a2343aa2 100644 --- a/include/Map/MapData.hpp +++ b/include/Map/MapData.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "System/SysNew.hpp" @@ -16,13 +16,29 @@ public: /* 06 */ unk8 mUnk_06[2]; /* 08 */ unk32 mUnk_08; /* 0c */ unk32 mUnk_0c; - /* 10 */ unk8 mUnk_10[4]; + /* 10 */ unk8 mGridX; + /* 11 */ unk8 mGridY; + /* 12 */ unk8 mUnk_12[2]; /* 14 */ Vec3p mCenter; /* 20 */ unk32 mFlags0[1]; /* 24 */ unk32 mFlags1[8]; /* 44 */ unk32 mFlags2[2]; - /* 4c */ unk32 mFlags3[1]; - /* 50 */ unk32 mUnk_50; - /* 54 */ unk32 mUnk_54; + /* 4c */ unk32 mFlags3[2]; + /* 54 */ unk32 mFlags4[1]; /* 58 */ + + MapData(u8 *map, unk8 x, unk8 y, unk32 param4, unk32 param5); + ~MapData(); + void func_ov000_020972e4(u16 *param1, unk32 *param2, bool param3); + void func_ov000_02097354(); + void SetFlag0(u32 index, bool value); + bool GetFlag0(u32 index); + void SetFlag1(u32 index, bool value); + bool GetFlag1(u32 index); + void SetFlag2(u32 index, bool value); + bool GetFlag2(u32 index); + void SetFlag3(u32 index, bool value); + bool GetFlag3(u32 index); + void SetFlag4(u32 index, bool value); + bool GetFlag4(u32 index); }; diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp index ff3397b9..13ca4348 100644 --- a/include/Map/MapManager.hpp +++ b/include/Map/MapManager.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" #include "Map/Course.hpp" #include "Map/MapBase.hpp" @@ -40,6 +40,11 @@ public: /* 0f */ unk8 mUnk_0f; /* 10 */ + bool func_01ffbe78(Vec3p *param1, Vec3p *param2, Vec3p *param3, Vec4p *param4); + bool func_01ffbf5c(s32 param1, Vec3p *param2, Vec3p *param3, s32 length); + bool func_01ffc118(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); + bool func_01ffd1e0(s32 *param1, Vec3p *param2, Vec3p *param3, s32 param4, s32 *param5, u32 param6, s32 *param7); + void func_ov00_020820ec(unk32 *param_2); void func_ov00_020820fc(s32 param_2, unk32 param_3, unk32 param_4); unk8 func_ov00_0208210c(unk32 param_2, unk32 param_3); @@ -172,7 +177,7 @@ public: unk8 MapData_vfunc_6c(); unk8 MapData_vfunc_70(); static unk8 func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3); - void func_ov00_02084024(unk32 param_2, AABB *param_3); + void GetTileWorldBounds(Vec2b *tile, AABB *tileBounds); unk8 MapData_vfunc_54(); unk8 func_ov00_020840a0(unk8 param_2, unk8 param_3, unk32 param_4); unk8 MapData_vfunc_78(); @@ -240,6 +245,16 @@ public: Vec3p *param_8); bool func_ov00_02086a84(s32 *param_2, Vec3p *param_3, Vec3p *param_4, s32 param_5, s32 param_6, unk32 param_7, Vec3p *param_8, Vec3p *param_9); + + MapManager(); + ~MapManager(); + static void Create(); + static void Destroy(); + static void LoadMapTexSprites(s32 param1); + void func_ov004_02102260(); + void func_ov004_02102264(unk32 *param1, char *param2); + void func_ov004_021024c4(s32 param1, unk32 param2, unk32 param3); + void func_ov004_021025d8(); }; extern MapManager *gMapManager; diff --git a/include/Map/TriggerAABB.hpp b/include/Map/TriggerAABB.hpp index a1d7e782..331f25ad 100644 --- a/include/Map/TriggerAABB.hpp +++ b/include/Map/TriggerAABB.hpp @@ -7,7 +7,16 @@ #include "Physics/AABB.hpp" class TriggerAABB : public TriggerBase { +public: /* 00 (base) */ /* 14 */ AABB mAABB; /* 2c */ + + /* 00 */ virtual ~TriggerAABB() override; + /* 14 */ virtual bool Overlaps(Vec3p *point) override; + /* 18 */ virtual bool GetBoundingBox(AABB *bbox) override; + /* 1c */ + + TriggerAABB(TriggerParams *params); + TriggerAABB(u8 id, u32 param2, u32 param3, u32 param4); }; diff --git a/include/Map/TriggerAABB_Unk1.hpp b/include/Map/TriggerAABB_Unk1.hpp index 55edbfca..59692b6b 100644 --- a/include/Map/TriggerAABB_Unk1.hpp +++ b/include/Map/TriggerAABB_Unk1.hpp @@ -6,6 +6,7 @@ #include "Map/TriggerAABB.hpp" class TriggerAABB_Unk1 : public TriggerAABB { +public: /* 00 (base) */ /* 2c */ unk8 mUnk_2c; /* 2d */ unk8 mUnk_2d[3]; @@ -17,4 +18,10 @@ class TriggerAABB_Unk1 : public TriggerAABB { /* 3c */ unk32 mUnk_3c; /* 40 */ unk32 mUnk_40; /* 44 */ + + /* 00 */ virtual ~TriggerAABB_Unk1() override; + /* 08 */ virtual void vfunc_08() override; + /* 1c */ + + TriggerAABB_Unk1(TriggerParams *params); }; diff --git a/include/Map/TriggerAABB_Unk2.hpp b/include/Map/TriggerAABB_Unk2.hpp index c87c34ba..f3a2f075 100644 --- a/include/Map/TriggerAABB_Unk2.hpp +++ b/include/Map/TriggerAABB_Unk2.hpp @@ -4,10 +4,47 @@ #include "types.h" #include "Map/TriggerAABB.hpp" +#include "Unknown/UnkStruct_ov000_020e2f04.hpp" + +class TriggerAABB_Unk2_Unk1 : public UnkStruct_ov000_020e2f04 { +public: + /* 00 (base) */ + /* 10 */ unk32 mUnk_10; + /* 14 */ AABB mUnk_14; + /* 2c */ + + /* 00 */ virtual ~TriggerAABB_Unk2_Unk1() override; + /* 08 */ virtual unk32 vfunc_08() override; + /* 14 */ virtual void vfunc_14(AABB *param1, unk32 param2, unk32 param3, unk32 param4) override; + /* 20 */ virtual void SetBoundingBox(AABB *param1) override; + /* 2c */ virtual void GetBoundingBox(AABB *bbox) override; + /* 30 */ virtual void SetPosition(Vec3p *pos) override; + /* 34 */ virtual void vfunc_34() override; + /* 38 */ virtual void vfunc_38() override; + /* 3c */ virtual void GetPosition(Vec3p *pos) override; + /* 40 */ virtual q20 GetSizeXZ() override; + /* 44 */ virtual q20 GetHeight() override; + /* 48 */ virtual bool ContainsInXZ(Vec3p *pos) override; + /* 4c */ virtual bool Contains(Vec3p *pos) override; + /* 50 */ virtual bool IntersectsCube(Cube *cube) override; + /* 54 */ virtual void vfunc_54(Cube *param1, Vec3p *param2, u32 *param3) override; + /* 5c */ + + TriggerAABB_Unk2_Unk1(); +}; class TriggerAABB_Unk2 : public TriggerAABB { +public: /* 00 (base) */ /* 2c */ unk32 mUnk_2c; - /* 30 */ unk8 mUnk_30[0x2c][4]; // non-documented class which inherits from base class + /* 30 */ TriggerAABB_Unk2_Unk1 mUnk_30[4]; /* e0 */ + + /* 00 */ virtual ~TriggerAABB_Unk2() override; + /* 08 */ virtual void vfunc_08() override; + /* 0c */ virtual unk32 vfunc_0c() override; + /* 10 */ virtual unk32 vfunc_10() override; + /* 1c */ + + TriggerAABB_Unk2(TriggerParams *params); }; diff --git a/include/Map/TriggerBase.hpp b/include/Map/TriggerBase.hpp index 03046e71..49311e1e 100644 --- a/include/Map/TriggerBase.hpp +++ b/include/Map/TriggerBase.hpp @@ -3,6 +3,9 @@ #include "global.h" #include "types.h" +#include "nds/math.h" + +#include "Physics/AABB.hpp" #include "System/SysNew.hpp" struct TriggerParams { @@ -21,6 +24,7 @@ struct TriggerParams { }; class TriggerBase : public SysObject { +public: /* 00 (vtable) */ /* 04 */ unk8 mUnk_04; /* 05 */ u8 mId; @@ -31,10 +35,13 @@ class TriggerBase : public SysObject { /* 14 */ /* 00 */ virtual ~TriggerBase(); - /* 08 */ void vfunc_08(); - /* 0c */ unk32 vfunc_0c(); - /* 10 */ unk32 vfunc_10(); - /* 14 */ bool Overlaps(); - /* 18 */ bool GetBoundingBox(); + /* 08 */ virtual void vfunc_08(); + /* 0c */ virtual unk32 vfunc_0c(); + /* 10 */ virtual unk32 vfunc_10(); + /* 14 */ virtual bool Overlaps(Vec3p *point); + /* 18 */ virtual bool GetBoundingBox(AABB *bbox); /* 1c */ + + TriggerBase(TriggerParams *params); + TriggerBase(u8 id, u32 param2, u32 param3, u32 param4); }; diff --git a/include/Map/TriggerSphere.hpp b/include/Map/TriggerSphere.hpp index 56a874df..12d6d9e1 100644 --- a/include/Map/TriggerSphere.hpp +++ b/include/Map/TriggerSphere.hpp @@ -11,4 +11,12 @@ class TriggerSphere : public TriggerBase { /* 14 */ Sphere mSphere; /* 24 */ s32 mHeight; /* 28 */ + + /* 00 */ virtual ~TriggerSphere() override; + /* 14 */ virtual bool Overlaps(Vec3p *point) override; + /* 18 */ virtual bool GetBoundingBox(AABB *bbox) override; + /* 1c */ + + TriggerSphere(TriggerParams *params); + TriggerSphere(u8 id, u32 param2, u32 param3, u32 param4); }; diff --git a/include/Message/MessageManager.hpp b/include/Message/MessageManager.hpp index 6628e0e7..f8098ca0 100644 --- a/include/Message/MessageManager.hpp +++ b/include/Message/MessageManager.hpp @@ -8,7 +8,7 @@ #include "Message/MsgProc.hpp" #include "lib/math.h" -// astruct_14 +// astruct_14, UnkStruct_02037750 class UnkStruct_027E0C68_UnkSubClass2_Base1 : public SysObject { public: /* 0x00 (vtable) */ @@ -45,7 +45,7 @@ public: void func_020376c0(Vec3p param_2); }; -// astruct_15 +// astruct_15, UnkStruct_020386d88 class UnkStruct_027E0C68_UnkSubClass2 : public UnkStruct_027E0C68_UnkSubClass2_Base1 { public: /* 0x20 */ unk8 unk_20; diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index fb167332..c2e0f68c 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -28,7 +28,7 @@ typedef struct UnkStruct_0203b264 { typedef u32 (*UnkCallback1)(void); -// astruct_11 +// astruct_11, UnkStruct_02035064 class UnkSubClass1_UnkownClass1_Sub1 { public: /* 0x00 */ unk16 unk_00; @@ -43,7 +43,7 @@ public: UnkSubClass1_UnkownClass1_Sub1(); }; -// astruct_10 +// astruct_10, UnkStruct_02035064 class UnkSubClass1_UnkownClass1 { public: /* 0x00 (vtable) */ @@ -114,6 +114,7 @@ public: typedef bool (*UnknownCallback)(class MsgProc_Type1*); +// UnkStruct_0203881c class UnkSubClass1_UnkownClass2 : public UnkSubClass1_UnkownClass2_Base1 { public: /* 0x14 */ unk32 unk_14; @@ -221,7 +222,7 @@ struct UnkStruct_MsgProc_Base_unk_2C { /* 0x0C */ }; -// astruct_8 +// astruct_8, UnkStruct_02032e7c class MsgProc_Base : public SysObject { public: /* 0x000 (vtable) */ @@ -309,7 +310,7 @@ public: unk32 func_0203d1b4(void); }; -// astruct_7 +// astruct_7, UnkStruct_0203dae0 class MsgProc_Base2 : public MsgProc_Base { public: /* 0x052 */ unk16 unk_52; @@ -425,7 +426,7 @@ struct func_02038f44_param4 { u8 unk_15; }; -// astruct_6 +// astruct_6, UnkStruct_02038aa0 class MsgProc_Main : public MsgProc_Base2 { public: /* 0x124 */ UnkSubClass1_unk_124* unk_124; @@ -531,7 +532,7 @@ struct UnknownMsgChoiceStruct { /* 0x08 */ }; -// astruct_2 +// astruct_2, UnkStruct_020397f8 class MsgProc_Type1 : public MsgProc_Main { public: /* 0x164 */ MsgProc_Type1* unk_164; diff --git a/include/Physics/AABB.hpp b/include/Physics/AABB.hpp index ef90ffcd..25a7f34b 100644 --- a/include/Physics/AABB.hpp +++ b/include/Physics/AABB.hpp @@ -3,12 +3,25 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" + +#include "Physics/Cube.hpp" struct AABB { Vec3p min; Vec3p max; + bool func_ov000_0208e680(); + void GetCenter(Vec3p *center); + q20 GetSizeX(); + q20 GetSizeZ(); + q20 GetSizeY(); bool Contains(Vec3p *vec); bool ContainsInXZ(Vec3p *vec); + bool ContainsInXY(Vec3p *vec); + bool IntersectsCube(Cube *cube); + bool func_ov000_0208e87c(Cube *cube, Vec3p *vec, u32 *out); + void GrowToPoint(Vec3p *point); + void Grow(Vec3p *dimensions); + void GrowScalar(q20 amount); }; diff --git a/include/Physics/Cube.hpp b/include/Physics/Cube.hpp new file mode 100644 index 00000000..b16ac97f --- /dev/null +++ b/include/Physics/Cube.hpp @@ -0,0 +1,11 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "nds/math.h" + +struct Cube { + Vec3p center; + q20 size; +}; diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp index 59c03c46..353635dd 100644 --- a/include/Physics/Cylinder.hpp +++ b/include/Physics/Cylinder.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" struct Cylinder { Vec3p pos; diff --git a/include/Physics/Sphere.hpp b/include/Physics/Sphere.hpp index eb88f74d..ba42ddf2 100644 --- a/include/Physics/Sphere.hpp +++ b/include/Physics/Sphere.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" struct Sphere { Vec3p pos; diff --git a/include/Physics/Transform.hpp b/include/Physics/Transform.hpp index 6b72af57..140e574d 100644 --- a/include/Physics/Transform.hpp +++ b/include/Physics/Transform.hpp @@ -3,7 +3,7 @@ #include "global.h" #include "types.h" -#include "lib/math.h" +#include "nds/math.h" struct Transform { Vec3p pos; diff --git a/include/Player/Battle/PlayerBattleLinkControlData.hpp b/include/Player/Battle/PlayerBattleLinkControlData.hpp new file mode 100644 index 00000000..f3f9deaf --- /dev/null +++ b/include/Player/Battle/PlayerBattleLinkControlData.hpp @@ -0,0 +1,51 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Item/ItemModelLoader.hpp" +#include "Player/PlayerControlData.hpp" +#include "Unknown/UnkStruct_02035064.hpp" + +class PlayerBattleLinkControlData : public PlayerControlData { +public: + /* 000 (base) */ + /* 1a0 */ s32 mUnk_1a0; + /* 1a4 */ unk32 mUnk_1a4; + /* 1a8 */ UnkStruct_02035064 mUnk_1a8; + /* 230 */ unk32 mUnk_230; + /* 234 */ unk32 mUnk_234; + /* 238 */ ItemModelLoader *mUnk_238; + /* 23c */ unk32 mUnk_23c; + /* 240 */ unk32 mUnk_240; + /* 244 */ u8 mUnk_244; + /* 245 */ u8 mUnk_245; + /* 246 */ u8 mUnk_246; + /* 247 */ unk8 mUnk_247; + /* 248 */ + + /* 04 */ virtual ~PlayerBattleLinkControlData() override; + /* 10 */ virtual unk32 GetCharacterId() override; + /* 14 */ virtual void vfunc_14(s32 param1) override; + /* 18 */ virtual void vfunc_18() override; + /* 20 */ virtual void vfunc_20() override; + /* 2c */ virtual void vfunc_2c() override; + /* 30 */ virtual void vfunc_30() override; + /* 38 */ virtual void vfunc_38(s32 param1, s32 param2) override; + /* 3c */ virtual void vfunc_3c(s32 param1, s32 param2) override; + /* 40 */ virtual void vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4) override; + /* 44 */ virtual void vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4) override; + /* 4c */ virtual void vfunc_4c(unk32 param1, Vec3p *param2) override; + /* 60 */ virtual void vfunc_60(unk32 param1, unk32 param2, s32 param3) override; + /* 64 */ virtual void vfunc_64(u32 param1) override; + /* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2) override; + /* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2) override; + /* 70 */ virtual void vfunc_70(s32 param1) override; + /* 80 */ virtual void vfunc_80(s32 param1) override; + /* 84 */ + + PlayerBattleLinkControlData(); + void func_ov012_0211af70(); + bool func_ov012_0211b9c4(s32 param1, Vec3p *param2); + void func_ov012_0211bb08(s32 param1); +}; diff --git a/include/Player/EquipBomb.hpp b/include/Player/EquipBomb.hpp index 9eb26ec9..43689dc4 100644 --- a/include/Player/EquipBomb.hpp +++ b/include/Player/EquipBomb.hpp @@ -2,32 +2,35 @@ #include "types.h"
+#include "Actor/Actor.hpp"
+#include "Actor/ActorRef.hpp"
#include "Player/EquipItem.hpp"
+#include "Render/ModelRender.hpp"
+
+#define MAX_BOMB_ACTORS 3
class LinkStateItem;
class EquipBomb : public EquipItem {
-private:
+public:
+ static ModelRender gModelRender;
+
/* 00 (base) */
- /* 09 */ unk8 mUnk_09[3];
- /* 0c */ unk32 mUnk_0c;
- /* 10 */ unk8 mUnk_10[0x14];
+ /* 09 */ unk8 mUnk_09[0x3];
+ /* 0c */ ActorRef mBombs[MAX_BOMB_ACTORS];
/* 24 */
-public:
- EquipBomb();
-
- /* 00 */ virtual void vfunc_00() override; // func_ov55_02198d00
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipBomb() override;
/* 0c */ virtual ItemFlag GetId() const override;
-
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov55_02198d8c
-
- /* 30 */ virtual void vfunc_30() override; // func_ov55_02198da4
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov55_2198df8
- /* 50 */ virtual void vfunc_50(); // func_ov14_0213d228
+ /* 18 */ virtual void vfunc_18() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
+ /* 50 */ virtual unk32 vfunc_50();
/* 54 */
- static void StopUsing(LinkStateItem *param1, unk32 param2);
+ EquipBomb();
+
+ Actor *func_ov055_02198e60();
};
diff --git a/include/Player/EquipBombchu.hpp b/include/Player/EquipBombchu.hpp index 449e6512..c2e924b5 100644 --- a/include/Player/EquipBombchu.hpp +++ b/include/Player/EquipBombchu.hpp @@ -2,22 +2,51 @@ #include "types.h"
+#include "Actor/Actor.hpp"
#include "Player/EquipItem.hpp"
+#include "Render/ModelRender.hpp"
+#include "Unknown/UnkStruct_ov000_020beba8.hpp"
+
+struct EquipBombchu_Unk1 {
+ /* 0 */ unk8 mUnk_0;
+ /* 1 */ unk8 mUnk_1;
+ /* 2 */
+
+ EquipBombchu_Unk1();
+};
+
+class EquipBombchu_Unk_02198d00 : public UnkStruct_ov000_020beba8 {
+public:
+ /* 0 (base) */
+ /* c */
+
+ /* 00 */ virtual ~EquipBombchu_Unk_02198d00() override;
+ /* 08 */ virtual void vfunc_08(unk16 *param1) override;
+ /* 0c */ virtual void vfunc_0c(unk16 *param1) override;
+ /* 10 */ virtual void vfunc_10(s32 *param1) override;
+ /* 14 */ virtual void vfunc_14(u16 *param1) override;
+ /* 1c */
+
+ inline EquipBombchu_Unk_02198d00() :
+ UnkStruct_ov000_020beba8(3) {}
+};
class EquipBombchu : public EquipItem {
-private:
+public:
+ static ModelRender gModelRenderBombchu;
+ static ModelRender gModelRenderBombchuPt;
+
/* 00 (base) */
/* 09 */ u8 mUnk_09[3];
- /* 0c */ u8 mUnk_0c[0x0c];
+ /* 0c */ ActorRef mUnk_0c;
+ /* 0c */ u8 mUnk_14[0x4];
/* 18 */ u32 mUnk_18;
- /* 1c */ void *mUnk_1c;
- /* 20 */ void *mUnk_20;
- /* 24 */ u32 mUnk_24;
- /* 28 */ u32 mUnk_28;
+ /* 1c */ EquipBombchu_Unk1 *mUnk_1c;
+ /* 20 */ Vec3p mUnk_20;
/* 2c */ void *mUnk_2c;
/* 30 */ u32 mUnk_30;
/* 34 */ u32 mUnk_34;
- /* 38 */ u8 mUnk_38[0xc];
+ /* 38 */ Vec3p mUnk_38;
/* 44 */ u16 mUnk_44;
/* 46 */ u8 mUnk_46;
/* 47 */ char mUnk_47;
@@ -25,20 +54,34 @@ private: /* 49 */ unk8 mUnk_49[3];
/* 4c */
-public:
- EquipBombchu();
-
- /* 00 */ virtual void vfunc_00() override; // func_ov58_02198fc0
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipBombchu() override;
/* 0c */ virtual ItemFlag GetId() const override;
-
- bool CheckUsable(unk32 param1) const;
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov58_0219903c
- /* 1c */ virtual void vfunc_1c() override; // func_ov58_02199060
-
- /* 30 */ virtual void vfunc_30() override; // func_ov58_0219906c
- /* 34 */ virtual void vfunc_34(unk16 *param1) override; // func_ov58_0213ecb4
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov58_02199170
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 34 */ virtual void vfunc_34(unk16 *param1) override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
/* 50 */
+
+ EquipBombchu();
+ void func_ov014_0213eba4();
+ void func_ov014_0213ec40();
+ void func_ov014_0213ec64();
+ Actor *func_ov014_0213ed74();
+ void *func_ov014_0213ed94(s32 param1);
+ void func_ov014_0213eda0();
+
+ void func_ov058_02199220();
+ void func_ov058_02199228();
+ void func_ov058_02199264();
+ void func_ov058_0219926c();
+ bool CheckUsable(unk32 param1) const;
+ Actor *func_ov058_02199400();
+ bool func_ov058_02199498(Vec3p *vec);
+ void func_ov058_02199ef0(unk16 param1);
+ void func_ov058_02199fd8(u32 param1);
+ unk32 func_ov058_0219a084(unk16 param1);
+ bool func_ov058_0219a3b4(unk16 param1);
};
diff --git a/include/Player/EquipBoomerang.hpp b/include/Player/EquipBoomerang.hpp index 1fc97caa..39814af4 100644 --- a/include/Player/EquipBoomerang.hpp +++ b/include/Player/EquipBoomerang.hpp @@ -25,15 +25,30 @@ private: public:
/* 04 */ virtual ~EquipBoomerang() override;
/* 0c */ virtual ItemFlag GetId() const override;
- /* 10 */ virtual void vfunc_10() override; // func_ov14_0213d078
-
+ /* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov53_02199064
- /* 1c */ virtual void vfunc_1c() override; // func_ov53_021990d0
-
- /* 30 */ virtual void vfunc_30() override; // func_ov53_0219913c
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov53_02199318
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
+ /* 28 */ virtual bool UpdateInUse(unk32 param1) override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
/* 50 */
+ EquipBoomerang();
+ void func_ov014_0213d098();
+ void func_ov014_0213d0bc(Vec3p *param1);
Actor *GetActor();
+ void func_ov014_0213d184();
+ void func_ov014_0213d1b0();
+
+ void func_ov053_02199014();
+ void func_ov053_02199020();
+ s32 func_ov053_0219902c(s32 param1);
+ void func_ov053_02199038();
+ void func_ov053_021990f0(unk16 param1);
+ bool func_ov053_02199128(s32 *param1);
+ void func_ov053_02199168();
+ void func_ov053_021991ec();
+ bool func_ov053_02199410(s32 param1);
+ bool func_ov053_021994cc(Vec3p *param1);
};
diff --git a/include/Player/EquipBow.hpp b/include/Player/EquipBow.hpp index d9cf0433..f3037198 100644 --- a/include/Player/EquipBow.hpp +++ b/include/Player/EquipBow.hpp @@ -3,9 +3,13 @@ #include "types.h"
#include "Player/EquipItem.hpp"
+#include "Render/ModelRender.hpp"
class EquipBow : public EquipItem {
-private:
+public:
+ static ModelRender gModelRenderBow;
+ static ModelRender gModelRenderArrow;
+
/* 00 (base) */
/* 09 */ unk8 mUnk_09;
/* 0a */ unk8 mUnk_0a;
@@ -14,17 +18,18 @@ private: /* 0d */ unk8 mUnk_0d[3];
/* 10 */
-public:
- EquipBow();
-
- /* 00 */ virtual void vfunc_00() override; // func_ov56_02198d00
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipBow() override;
/* 0c */ virtual ItemFlag GetId() const override;
-
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov56_02198d84
-
- /* 30 */ virtual void vfunc_30() override; // func_ov56_02198de4
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov56_02198df8
+ /* 18 */ virtual void vfunc_18() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
/* 50 */
+
+ EquipBow();
+
+ bool func_ov056_02198ee8();
+ void func_ov056_02198f48(u16 param1);
+ bool func_ov056_021992f8();
};
diff --git a/include/Player/EquipHammer.hpp b/include/Player/EquipHammer.hpp index 9d3f0394..27e046c5 100644 --- a/include/Player/EquipHammer.hpp +++ b/include/Player/EquipHammer.hpp @@ -10,7 +10,7 @@ class EquipHammer : public EquipItem { private:
/* 00 (base) */
/* 09 */ unk8 mUnk_09[3];
- /* 0c */ unk8 mUnk_0c[0xc];
+ /* 0c */ Vec3p mUnk_0c;
/* 18 */ unk32 mUnk_18;
/* 1c */ unk8 mUnk_1c;
/* 1d */ unk8 mUnk_1d;
@@ -21,22 +21,25 @@ private: /* 2c */
public:
- EquipHammer();
-
/* 04 */ virtual ~EquipHammer() override;
/* 0c */ virtual ItemFlag GetId() const override;
- /* 10 */ virtual void vfunc_10() override; // func_ov14_0213ee04
-
+ /* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov59_02198e3c
- /* 1c */ virtual void vfunc_1c() override; // func_ov59_02198e58
-
- /* 2c */ virtual u32 vfunc_2c() override; // func_ov59_02198fcc
- /* 30 */ virtual void vfunc_30() override; // func_ov59_02198e6c
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_0v59_02198fc8
- /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const override; // func_ov14_0213ee10
- /* 4c */ virtual s32 vfunc_4c() const override; // func_ov14_0213eea8
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
+ /* 2c */ virtual u32 vfunc_2c() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
+ /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const override;
+ /* 4c */ virtual s32 vfunc_4c() const override;
/* 50 */
- static void StopUsing(LinkStateItem *param1);
+ EquipHammer();
+
+ void func_ov059_02198e90();
+ bool func_ov059_02198ebc();
+ bool func_ov059_02198ed4();
+ void func_ov059_02198f10(Vec3p *vec, unk32 param2, s32 param3);
+ void func_ov059_02198fa8(unk32 param1);
+ bool func_ov059_02198fe0();
};
diff --git a/include/Player/EquipItem.hpp b/include/Player/EquipItem.hpp index d429a2e7..6702bc48 100644 --- a/include/Player/EquipItem.hpp +++ b/include/Player/EquipItem.hpp @@ -8,36 +8,38 @@ #include "System/SysNew.hpp"
class EquipItem : public SysObject {
-private:
+public:
/* 0 (vtable) */
/* 4 */ u16 mUnk_00;
/* 6 */ u16 mUnk_04;
/* 8 */ bool mInUse;
+ /* 9 */
-public:
EquipItem();
- /* 00 */ virtual void vfunc_00(); // func_ov00_020be8dc
+ /* 00 */ virtual void vfunc_00();
/* 04 */ virtual ~EquipItem();
/* 0c */ virtual ItemFlag GetId() const = 0;
- /* 10 */ virtual void vfunc_10(); // func_ov04_0210ba88
-
- u16 GetAmmo();
+ /* 10 */ virtual void vfunc_10();
/* 14 */ virtual bool IsUsable(unk32 param1) const;
/* 18 */ virtual void vfunc_18() = 0;
- /* 1c */ virtual void vfunc_1c(); // func_ov00_020be8e0
+ /* 1c */ virtual void vfunc_1c();
/* 20 */ virtual void GiveAmmo(u32 amount);
-
/* 24 */ virtual bool IsInUse() const;
/* 28 */ virtual bool UpdateInUse(unk32 param1);
- /* 2c */ virtual u32 vfunc_2c(); // func_ov00_020be964
+ /* 2c */ virtual u32 vfunc_2c();
/* 30 */ virtual void vfunc_30() = 0;
- /* 34 */ virtual void vfunc_34(unk16 *param1); // func_ov00_020be96c
+ /* 34 */ virtual void vfunc_34(unk16 *param1);
/* 38 */ virtual void vfunc_38(unk32 param1) = 0;
- /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const; // func_ov00_020beb90
- /* 40 */ virtual unk32 vfunc_40() const; // func_ov00_020be970
- /* 44 */ virtual unk32 vfunc_44(unk32 param1) const; // func_ov00_020be978
- /* 48 */ virtual unk32 vfunc_48(unk32 param1) const; // func_ov00_020be980
- /* 4c */ virtual s32 vfunc_4c() const; // func_ov00_020be988
+ /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const;
+ /* 40 */ virtual unk32 vfunc_40() const;
+ /* 44 */ virtual unk32 vfunc_44(unk32 param1) const;
+ /* 48 */ virtual unk32 vfunc_48(unk32 param1) const;
+ /* 4c */ virtual s32 vfunc_4c() const;
/* 50 */
+
+ Vec3p *GetPlayerPos();
+ void func_ov000_020be99c(Vec3p *param1);
+ void func_ov000_020be9e4(s32 param1, s32 param2, s32 param3, s16 param4);
+ u16 GetAmmo();
};
diff --git a/include/Player/EquipPotion.hpp b/include/Player/EquipPotion.hpp index a80c0492..ea7d4434 100644 --- a/include/Player/EquipPotion.hpp +++ b/include/Player/EquipPotion.hpp @@ -12,34 +12,32 @@ private: /* 10 */
public:
- EquipPotion();
-
- /* 00 */ virtual void vfunc_00() override; // func_ov55_021991a8
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipPotion() override;
-
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov55_021991ac
- /* 1c */ virtual void vfunc_1c() override; // func_ov55_021991b0
-
- /* 30 */ virtual void vfunc_30() override; // func_ov55_02199274
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_0v55_02199278
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
/* 50 */
+
+ EquipPotion();
};
class EquipPotionA : public EquipPotion {
public:
- EquipPotionA();
-
/* 04 */ virtual ~EquipPotionA() override;
/* 0c */ virtual ItemFlag GetId() const override;
/* 50 */
+
+ EquipPotionA();
};
class EquipPotionB : public EquipPotion {
public:
- EquipPotionB();
-
/* 04 */ virtual ~EquipPotionB() override;
/* 0c */ virtual ItemFlag GetId() const override;
/* 50 */
+
+ EquipPotionB();
};
diff --git a/include/Player/EquipRope.hpp b/include/Player/EquipRope.hpp index 127eb974..ba157678 100644 --- a/include/Player/EquipRope.hpp +++ b/include/Player/EquipRope.hpp @@ -1,10 +1,11 @@ #pragma once
#include "global.h"
-#include "lib/math.h"
+#include "nds/math.h"
#include "types.h"
#include "Actor/ActorRef.hpp"
+#include "Actor/Player/ActorRope.hpp"
#include "Physics/Cylinder.hpp"
#include "Player/EquipItem.hpp"
@@ -12,6 +13,27 @@ struct EquipRope_Unk_18 { /* 00 */ Vec3p vec;
/* 0c */ unk8 mUnk_0c[0x10];
/* 1c */
+
+ bool func_ov057_02198e80();
+ void func_ov057_02198fc0(u32 param1);
+ void func_ov057_02199028(s32 param1);
+ bool func_ov057_02199104(EquipRope_Unk_18 *other);
+};
+
+class EquipRope_Unk_02198dd0 {
+public:
+ /* 0 (vtable) */
+ /* 4 */ unk32 mUnk_4;
+ /* 8 */
+
+ /* 00 */ virtual ~EquipRope_Unk_02198dd0();
+ /* 08 */ unk32 vfunc_08();
+ /* 0c */ unk32 vfunc_0c();
+ /* 10 */ unk32 vfunc_10(s32 *param1);
+ /* 14 */ unk32 vfunc_14();
+ /* 18 */
+
+ EquipRope_Unk_02198dd0();
};
class Actor;
@@ -23,7 +45,7 @@ public: /* 09 */ unk8 mUnk_09;
/* 0a */ unk16 mUnk_0a;
/* 0c */ unk8 mUnk_0c[4];
- /* 10 */ ActorRef mRef;
+ /* 10 */ ActorRef mRopeRef;
/* 18 */ EquipRope_Unk_18 mUnk_18[2];
/* 50 */ unk8 mUnk_50[0x1a];
/* 6a */ bool mUnk_6a;
@@ -37,29 +59,58 @@ public: /* a0 */ unk32 mUnk_a0;
/* a4 */
- EquipRope();
-
/* 04 */ virtual ~EquipRope() override;
/* 0c */ virtual ItemFlag GetId() const override;
- /* 10 */ virtual void vfunc_10() override; // func_ov14_0213d3a0
-
- u16 GetAmmo();
+ /* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov57_021992f4
- /* 1c */ virtual void vfunc_1c() override; // func_ov57_0219935c
-
- /* 30 */ virtual void vfunc_30() override; // func_ov57_02199744
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov57_021998f0
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
/* 50 */
- Actor *func_ov14_0213d420();
+ u16 GetAmmo();
+
+ EquipRope();
+ bool func_ov014_0213d3d4(Vec3p *vec);
+ void func_ov014_0213d404(unk32 *param1);
+ ActorRope *GetRopeActor();
s32 func_ov14_0213d440(s32 actorId);
s32 func_ov14_0213d480(s32 actorId);
+ bool func_ov014_0213d4c8();
+ bool func_ov014_0213d4ec(unk32 *param1, s32 param2);
+ s32 func_ov014_0213d594(s32 param1);
+ bool func_ov014_0213d5d0(unk32 *param1, s32 param2);
+ s32 func_ov014_0213d63c(s32 param1);
+ bool func_ov014_0213d684();
+ bool func_ov014_0213d6e0();
+ bool func_ov014_0213d71c(s32 param1, ActorRef *param2);
+ bool func_ov014_0213d788(s32 param1);
bool func_ov14_0213d81c(s32 index, Vec3p *vec);
void func_ov14_0213d91c(s32 index);
+ bool func_ov014_0213d9ac();
bool func_ov14_0213dadc(s32 index, Cylinder *cylinder);
+ void func_ov014_0213db34();
+ void func_ov014_0213db60();
+ void func_ov014_0213dba4(Vec3p *param1);
+ s32 func_ov014_0213dda0();
s32 func_ov14_0213ddd4(Actor *actor);
bool func_ov14_0213defc(Actor *actor);
+ bool func_ov014_0213dfbc(Cylinder *cylinder, s32 param2, Vec3p *vec);
+ void func_ov014_0213e144(Vec3p *param1, Vec3p *param2, s32 param3);
+ bool func_ov014_0213e20c(s32 param1, Vec3p *param2);
+ bool func_ov014_0213e328();
- static void StopUsing(LinkStateItem *param1);
+ void func_ov057_021990ec();
+ void func_ov057_021990f8();
+ bool func_ov057_0219922c(u32 param1);
+ void func_ov057_021992b4(s32 param1);
+ bool func_ov057_0219939c(s32 *param1, s32 param2);
+ bool func_ov057_02199454(s32 param1);
+ bool func_ov057_021994c0(unk32 *param1);
+ s32 func_ov057_021996b0(Vec3p *param1);
+ void func_ov057_02199ad8();
+ void func_ov057_02199c78();
+ void func_ov057_02199d54();
+ void func_ov057_02199e24();
};
diff --git a/include/Player/EquipScoop.hpp b/include/Player/EquipScoop.hpp index 8c4694bc..fadbbb24 100644 --- a/include/Player/EquipScoop.hpp +++ b/include/Player/EquipScoop.hpp @@ -3,29 +3,32 @@ #include "types.h"
#include "Player/EquipItem.hpp"
+#include "Render/ModelRender.hpp"
class LinkStateItem;
class EquipScoop : public EquipItem {
-private:
+public:
+ static ModelRender gModelRender;
+
/* 0 (base) */
/* 9 */ unk8 mUnk_9[3];
/* c */
-public:
- /* 00 */ virtual void vfunc_00() override; // func_ov54_02198d00
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipScoop() override;
/* 0c */ virtual ItemFlag GetId() const override;
-
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_0v54_02198d2c
-
- /* 30 */ virtual void vfunc_30() override; // func_ov54_02198e04
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov54_02198e4c
- /* 40 */ virtual unk32 vfunc_40() const override; // func_ov54_02198d30
- /* 44 */ virtual unk32 vfunc_44(unk32 param1) const override; // func_ov54_02198d38
- /* 48 */ virtual unk32 vfunc_48(unk32 param1) const override; // func_ov54_02198d48
+ /* 18 */ virtual void vfunc_18() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
+ /* 40 */ virtual unk32 vfunc_40() const override;
+ /* 44 */ virtual unk32 vfunc_44(unk32 param1) const override;
+ /* 48 */ virtual unk32 vfunc_48(unk32 param1) const override;
/* 50 */
- static void StopUsing(LinkStateItem *param1);
+ EquipScoop();
+
+ s32 func_ov054_02198e08(Vec3p *param1);
+ bool func_ov054_021980e24(Vec3p *param1);
};
diff --git a/include/Player/EquipShield.hpp b/include/Player/EquipShield.hpp index b83a5557..9da2599d 100644 --- a/include/Player/EquipShield.hpp +++ b/include/Player/EquipShield.hpp @@ -20,17 +20,17 @@ private: public:
EquipShield();
- /* 00 */ virtual void vfunc_00() override; // func_ov00_020c06d4
- /* 04 */ virtual ~EquipShield() override; // func_ov04_0210bc94
+ /* 00 */ virtual void vfunc_00() override;
+ /* 04 */ virtual ~EquipShield() override;
/* 0c */ virtual ItemFlag GetId() const override;
- /* 10 */ virtual void vfunc_10() override; // func_ov00_020c076c
-
+ /* 10 */ virtual void vfunc_10() override;
/* 14 */ virtual bool IsUsable(unk32 param1) const override;
- /* 18 */ virtual void vfunc_18() override; // func_ov00_020c0770
- /* 1c */ virtual void vfunc_1c(); // func_ov00_020c07f8
-
- /* 30 */ virtual void vfunc_30() override; // func_ov00_020c0804
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov00_020c086c
- /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const; // func_ov00_020c0a88
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c();
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
+ /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const;
/* 50 */
+
+ void func_ov000_020c070c(u32 param1, Vec3p *param2, unk32 param3);
};
diff --git a/include/Player/EquipSword.hpp b/include/Player/EquipSword.hpp index d7cd47ad..2a48d217 100644 --- a/include/Player/EquipSword.hpp +++ b/include/Player/EquipSword.hpp @@ -43,20 +43,31 @@ private: public:
EquipSword();
- /* 00 */ virtual void vfunc_00() override; // func_ov00_020beffc
+ /* 00 */ virtual void vfunc_00() override;
/* 04 */ virtual ~EquipSword() override;
/* 0c */ virtual ItemFlag GetId() const override;
- /* 10 */ virtual void vfunc_10() override; // func_ov00_020bf18c
+ /* 10 */ virtual void vfunc_10() override;
- /* 18 */ virtual void vfunc_18() override; // func_ov00_020bf270
- /* 1c */ virtual void vfunc_1c() override; // func_ov00_020bf2d8
+ /* 18 */ virtual void vfunc_18() override;
+ /* 1c */ virtual void vfunc_1c() override;
/* 28 */ virtual bool UpdateInUse(unk32 param1) override;
- /* 2c */ virtual u32 vfunc_2c() override; // func_ov00_020c0674
- /* 30 */ virtual void vfunc_30() override; // func_ov00_020bf538
- /* 38 */ virtual void vfunc_38(unk32 param1) override; // func_ov00_020bff94
- /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const override; // func_ov00_020c01dc
+ /* 2c */ virtual u32 vfunc_2c() override;
+ /* 30 */ virtual void vfunc_30() override;
+ /* 38 */ virtual void vfunc_38(unk32 param1) override;
+ /* 3c */ virtual bool GetHitbox(Cylinder *hitbox) const override;
/* 50 */
+ void func_ov000_020bf008(unk16 param1, unk16 param2);
+ bool func_ov000_020bf028();
+ void func_ov000_020bf088();
+ void func_ov000_020bf330();
+ bool func_ov000_020bf4f4();
static EquipRope *GetEquipRope();
+ void func_ov000_020c024c(Vec3p *param1, s32 param2);
+ void func_ov000_020c0318(Vec3p *param1, s32 param2);
+ void func_ov000_020c0550(Vec3p *param1, s32 param2);
+ void func_ov000_020c05ec(s32 param1);
+ void func_ov000_020c0648();
+ void func_ov000_020c06b0(s32 param1);
};
diff --git a/include/Player/HealthManager.hpp b/include/Player/HealthManager.hpp deleted file mode 100644 index 5ebb7181..00000000 --- a/include/Player/HealthManager.hpp +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "global.h" -#include "types.h" - -#include "System/SysNew.hpp" - -class HealthManager : public SysObject { -public: - /* 00 */ u16 mMaxHealth; - /* 02 */ u16 mHealth; - /* 04 */ s16 mMaxShipHealth; - /* 06 */ s16 mShipHealth; - /* 08 */ u16 mSalvageArmHealth; - /* 0a */ s16 mFlags; - /* 0c */ unk16 mUnk_0c; - /* 0e */ unk8 mUnk_0e; - /* 0f */ unk8 mUnk_0f; - /* 10 */ -}; - -extern HealthManager *gHealthManager; diff --git a/include/Player/LinkStateBase.hpp b/include/Player/LinkStateBase.hpp index 3371b937..bca6c796 100644 --- a/include/Player/LinkStateBase.hpp +++ b/include/Player/LinkStateBase.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/Actor.hpp" @@ -127,6 +127,29 @@ public: s32 Get_PlayerLinkBase_Unk38(); DebugHierarchy *GetDebugHierarchy0(); DebugHierarchy *GetDebugHierarchy1(); + + LinkStateBase(PlayerLinkBase *link); + + void func_ov005_0210f768(); + void func_ov005_0210f7b8(); + u32 func_ov005_0210f808(u32 param1, Vec3p *param2, s32 param3); + void func_ov005_02110228(s32 param1, s32 param2, s32 param3, char param4, char param5); + bool func_ov005_0211058c(s32 param1); + void func_ov005_021107fc(); + void func_ov005_0211086c(s32 param1); + void func_ov005_0211097c(unk32 param1, unk8 param2, unk8 param3); + unk32 func_ov005_021109c0(); + void func_ov005_02110b40(s32 param1); + void func_ov005_02110bb4(); + void func_ov005_02110be8(); + void func_ov005_02110e0c(u16 param1, s32 param2); + void func_ov005_02110e28(u16 param1, s32 param2, s32 param3, char param4); + bool func_ov005_02110f50(s32 param1, s32 param2, s32 param3, u32 *param4); + void func_ov005_021112ec(); + bool func_ov005_02111358(); + bool func_ov005_0211139c(); + bool func_ov005_021113b4(); + void func_ov005_021113c4(bool param1); }; LinkStateBase *GetLinkState(s32 index); diff --git a/include/Player/LinkStateCutscene.hpp b/include/Player/LinkStateCutscene.hpp index f39c7430..224350fd 100644 --- a/include/Player/LinkStateCutscene.hpp +++ b/include/Player/LinkStateCutscene.hpp @@ -1,11 +1,25 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Item/Item.hpp" #include "Player/LinkStateBase.hpp" +#include "Unknown/UnkStruct_02037750.hpp" + +class UnkStruct_ov004_0210abb8 : public UnkStruct_02037750 { +public: + /* 00 (base) */ + /* 20 */ unk32 mUnk_20; + /* 24 */ + + /* 00 */ virtual ~UnkStruct_ov004_0210abb8() override; + /* 08 */ virtual void vfunc_08(unk32 param1) override; + /* 24 */ virtual void vfunc_24(unk32 param1) override; + /* 2c */ virtual unk32 vfunc_2c(s32 param1) override; + /* 34 */ +}; class LinkStateCutscene : public LinkStateBase { public: @@ -58,4 +72,54 @@ public: /* 38 */ virtual bool vfunc_38() override; /* 40 */ virtual bool vfunc_40() override; /* 44 */ + + bool func_ov000_020b1e98(s32 param1); + bool func_ov000_020b1eb8(); + bool func_ov000_020b1eec(); + void StopVerticalVelocity(); + void func_ov000_020b2568(); + void func_ov000_020b2598(); + void func_ov000_020b2ba4(); + void func_ov000_020b2ce4(unk32 param1, s16 param2); + void func_ov000_020b2cf0(); + void func_ov000_020b2d60(); + bool func_ov000_020b2d8c(); + void func_ov000_020b2e84(); + void func_ov000_020b2f48(unk32 param1, unk32 param2); + void func_ov000_020b2f70(unk32 param1, void *param2, unk32 *param3); + void ChangeToMoveState(); + bool func_ov000_020b2fac(); + void func_ov000_020b3024(Vec3p *param1, unk32 param2); + void func_ov000_020b305c(Vec3p *param1, Vec3p *param2); + void func_ov000_020b309c(Vec3p *param1); + void func_ov000_020b30e4(u32 param1, unk32 param2, unk32 param3); + void func_ov000_020b3278(s32 param1, s32 *param2); + void func_ov000_020b35d8(s32 param1, s32 param2); + void func_ov000_020b38dc(u32 param1, u32 param2); + + LinkStateCutscene(PlayerLinkBase *link); + + void func_ov005_021089c0(); + void func_ov005_021089f4(); + void func_ov005_02108d08(); + void func_ov005_02108e08(); + void func_ov005_02108e8c(); + void func_ov005_02108f38(); + void func_ov005_02108f98(unk32 param1, unk32 param2, unk32 param3); + void func_ov005_021092bc(); + void func_ov005_0210952c(); + void func_ov005_02109588(); + void func_ov005_0210960c(); + void func_ov005_02109650(); + bool PlayItemCutscene(unk32 itemId); + bool func_ov005_02109768(); + void func_ov005_021097b0(s32 param1); + void func_ov005_021099dc(); + bool func_ov005_02109cd0(s32 *param1, s32 param2, unk32 param3); + void func_ov005_02109e84(); + void func_ov005_02109f2c(); + void func_ov005_02109f88(); + void func_ov005_0210a018(); + void func_ov005_0210a06c(); + bool func_ov005_0210a0c0(unk16 param1); }; diff --git a/include/Player/LinkStateDamage.hpp b/include/Player/LinkStateDamage.hpp index 2c5e6e00..0e3a70a7 100644 --- a/include/Player/LinkStateDamage.hpp +++ b/include/Player/LinkStateDamage.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Player/LinkStateBase.hpp" @@ -48,4 +48,6 @@ class LinkStateDamage : public LinkStateBase { void func_ov00_020ace90(Vec3p *param1, unk32 param2); void func_ov00_020acfe8(bool param1); + + LinkStateDamage(PlayerLinkBase *link); }; diff --git a/include/Player/LinkStateFollow.hpp b/include/Player/LinkStateFollow.hpp index c422faa1..add6d456 100644 --- a/include/Player/LinkStateFollow.hpp +++ b/include/Player/LinkStateFollow.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/Actor.hpp" @@ -37,4 +37,16 @@ public: LinkStateCutscene *GetLinkStateCutscene(); bool func_ov00_020a9180(Vec3p *param1); bool func_ov00_020a9210(Vec3p *param1, Actor *param2); + + LinkStateFollow(PlayerLinkBase *link); + + static EquipRope *GetEquipRope(); + void func_ov005_0210b9c4(); + void func_ov005_0210ba98(); + void func_ov005_0210babc(); + void func_ov005_0210bb50(); + void func_ov005_0210bb98(); + void func_ov005_0210bd70(); + void func_ov005_0210bf50(); + void func_ov005_0210ca80(Vec3p *param1, s32 *param2); }; diff --git a/include/Player/LinkStateInteract.hpp b/include/Player/LinkStateInteract.hpp index 150983b8..6151585b 100644 --- a/include/Player/LinkStateInteract.hpp +++ b/include/Player/LinkStateInteract.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/Actor.hpp" @@ -53,4 +53,15 @@ public: void func_ov00_020abc18(ActorRef *ref); bool func_ov00_020abc40(); bool func_ov00_020abc78(ActorRef *ref); + + LinkStateInteract(PlayerLinkBase *link); + + void func_ov005_0210a690(); + bool func_ov005_0210a714(); + void func_ov005_0210a774(); + void func_ov005_0210a7d4(); + void func_ov005_0210ab1c(); + void func_ov005_0210ad88(); + void func_ov005_0210b2a4(); + void func_ov005_0210b4f4(Vec3p *vec, Actor *actor); }; diff --git a/include/Player/LinkStateItem.hpp b/include/Player/LinkStateItem.hpp index 0c5f4a4d..cba602f8 100644 --- a/include/Player/LinkStateItem.hpp +++ b/include/Player/LinkStateItem.hpp @@ -50,4 +50,47 @@ public: static EquipBombchu *GetEquipBombchu(); static LinkStateMove *GetLinkStateMove(); bool func_ov00_020abf70(); + + LinkStateItem(PlayerLinkBase *link); + + void func_ov005_02105850(); + void func_ov005_02105c28(); + void func_ov005_02105d94(); + void func_ov005_02105dac(); + void func_ov005_02106644(); + void func_ov005_02106700(Vec3p *param1, unk8 *param2); + void func_ov005_02106740(s32 *param1, s32 param2); + bool func_ov005_02106894(s32 param1, s32 param2); + void func_ov005_02106980(unk32 param, s32 param2, s32 *param3); + bool func_ov005_02106a50(); + bool func_ov005_02106bbc(Vec3p *param1, unk32 param2, u32 param3); + + bool func_ov054_02198efc(s32 param1, unk32 param2, u32 param3); + bool func_ov054_021992c8(unk32 param1, unk32 param2, u32 param3); + void StopUsingScoop(); + + void func_ov054_02198eec(); + void func_ov055_02198f78(); + void StopUsingBomb(s32 param1); + void func_ov055_02199020(); + void func_ov055_021993b8(); + void func_ov055_02199654(); + + void func_ov056_021990c0(); + void func_ov056_0219911c(); + bool func_ov056_021992f8(); + + void func_ov057_02199e64(); + void func_ov057_02199edc(); + void func_ov057_0219a208(); + void StopUsingRope(); + bool func_ov057_0219a364(); + + void func_ov058_0219a454(); + void func_ov058_0219a47c(); + + void func_ov059_02198ffc(); + void func_ov059_0219907c(); + void func_ov059_021990a4(); + void StopUsingHammer(); }; diff --git a/include/Player/LinkStateMove.hpp b/include/Player/LinkStateMove.hpp index e56eee3c..9b369e9c 100644 --- a/include/Player/LinkStateMove.hpp +++ b/include/Player/LinkStateMove.hpp @@ -29,4 +29,8 @@ public: bool func_ov00_020a8f2c(); bool func_ov00_020a8f4c(); + + LinkStateMove(PlayerLinkBase *link); + + void func_ov005_021113d0(); }; diff --git a/include/Player/LinkStateRoll.hpp b/include/Player/LinkStateRoll.hpp index 52b42b43..a82dbdf1 100644 --- a/include/Player/LinkStateRoll.hpp +++ b/include/Player/LinkStateRoll.hpp @@ -23,7 +23,7 @@ public: /* 28 */ unk8 mUnk_28[4]; /* 2c */ unk32 mUnk_2c[5]; /* 40 */ unk32 mUnk_40; - /* 44 */ unk32 mUnk_44[0x10]; + /* 44 */ ActorRef mUnk_44[0x8]; /* 84 */ void *mUnk_84; /* 88 */ unk32 mUnk_88; /* 8c */ unk8 mUnk_8c[0xc]; @@ -43,4 +43,24 @@ public: void func_ov00_020aee58(s16 param1, u16 param2); void func_ov00_020aee84(); bool func_ov00_020aeeac(); + + LinkStateRoll(PlayerLinkBase *link); + + s32 func_ov005_02106c80(u32 param1); + void func_ov005_02106cd0(); + void func_ov005_02107208(u32 param1); + void func_ov005_02107214(); + void func_ov005_021073b8(); + void func_ov005_021075bc(); + void func_ov005_02107880(); + void func_ov005_02107954(unk32 param1, unk32 param2, unk32 param3); + void func_ov005_02107b74(unk32 *param1, unk16 param2, unk16 param3); + bool func_ov005_02107bd4(); + bool func_ov005_02107c8c(); + bool func_ov005_02107d74(); + unk32 func_ov005_02107e80(u32 param1, unk32 *param2, unk16 param3, unk8 *param4); + void func_ov005_02107fc0(); + bool func_ov005_02108094(); + void func_ov005_02108188(); + void func_ov005_021081a8(); }; diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp index 578f3e27..354e1078 100644 --- a/include/Player/PlayerBase.hpp +++ b/include/Player/PlayerBase.hpp @@ -32,7 +32,7 @@ public: /* 18 */ virtual void vfunc_18() = 0; /* 1c */ virtual void Init() = 0; /* 20 */ virtual void vfunc_20() = 0; - /* 24 */ virtual void vfunc_24() = 0; + /* 24 */ virtual void UpdatePos() = 0; /* 28 */ virtual void vfunc_28(s32 param1) = 0; /* 2c */ virtual void vfunc_2c(s32 param1, unk8 param2) = 0; /* 30 */ virtual bool vfunc_30(s32 param1, Vec3p *param2, s32 param3) = 0; @@ -57,6 +57,8 @@ public: bool EquipCollidesWith(Cylinder *cylinder, ItemFlag equipId); s32 EquipItem_vfunc_2c(); void SetHealth(s16 health); + + PlayerBase(); }; extern PlayerBase *gPlayer; diff --git a/include/Player/PlayerControl.hpp b/include/Player/PlayerControl.hpp index 0e0da8ae..f2cc23eb 100644 --- a/include/Player/PlayerControl.hpp +++ b/include/Player/PlayerControl.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/Actor.hpp" @@ -124,6 +124,20 @@ public: bool IsTouchingFast(); bool IsTappedNow(); bool func_ov00_020b13c4(); + + void ResetTouchWorld(); + void InitTouchMovement(); + void func_ov000_020b7924(s32 param1); + void ApplyTouchWorld(Vec3p *result, unk32 scale); + bool func_ov000_020b7d6c(); + + PlayerControl(); + ~PlayerControl(); + static void Create(); + static void Destroy(); + void Init(); + void func_ov004_0210b1d0(); + static void func_ov004_0210b1f0(); }; extern PlayerControl *gPlayerControl; diff --git a/include/Player/PlayerControlData.hpp b/include/Player/PlayerControlData.hpp index 3f998186..3527810c 100644 --- a/include/Player/PlayerControlData.hpp +++ b/include/Player/PlayerControlData.hpp @@ -1,7 +1,7 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "System/SysNew.hpp" @@ -58,4 +58,50 @@ public: /* 19c */ unk16 mUnk_19c; /* 19e */ unk16 mUnk_19e; /* 1a0 */ + + /* 00 */ virtual void vfunc_00(); + /* 04 */ virtual ~PlayerControlData(); + /* 0c */ virtual unk32 vfunc_0c(); + /* 10 */ virtual unk32 GetCharacterId() = 0; + /* 14 */ virtual void vfunc_14(s32 param1) = 0; + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ virtual void vfunc_24(); + /* 28 */ virtual void vfunc_28(); + /* 2c */ virtual void vfunc_2c(); + /* 30 */ virtual void vfunc_30(); + /* 34 */ virtual void vfunc_34(); + /* 38 */ virtual void vfunc_38(s32 param1, s32 param2) = 0; + /* 3c */ virtual void vfunc_3c(s32 param1, s32 param2); + /* 40 */ virtual void vfunc_40(u16 *param1, Vec3p *param2, unk32 param3, char param4); + /* 44 */ virtual void vfunc_44(unk32 param1, unk32 *param2, unk32 param3, unk16 param4); + /* 48 */ virtual void vfunc_48(unk32 param1, unk32 param2, unk32 param3, s16 param4); + /* 4c */ virtual void vfunc_4c(unk32 param1, Vec3p *param2); + /* 50 */ virtual void vfunc_50(); + /* 54 */ virtual void vfunc_54(); + /* 58 */ virtual void vfunc_58(); + /* 5c */ virtual void vfunc_5c(); + /* 60 */ virtual void vfunc_60(unk32 param1, unk32 param2, s32 param3); + /* 64 */ virtual void vfunc_64(u32 param1); + /* 68 */ virtual void vfunc_68(unk32 param1, unk32 param2); + /* 6c */ virtual void vfunc_6c(s32 param1, Vec3p *param2); + /* 70 */ virtual void vfunc_70(s32 param1); + /* 74 */ virtual unk32 vfunc_74(); + /* 78 */ virtual unk32 vfunc_78(); + /* 7c */ virtual unk32 vfunc_7c(); + /* 80 */ + + void func_ov000_020b4440(); + void func_ov000_020b4460(s32 param1); + void func_ov000_020b44d4(s32 param1, u32 param2); + void func_ov000_020b4558(s32 param1, u32 param2); + void func_ov000_020b45e0(); + void func_ov000_020b45f8(unk32 *param1, unk8 param2, unk8 param3); + void func_ov000_020b464c(unk32 *param1, unk8 param2, unk8 param3); + void func_ov000_020b484c(s32 param1, s32 param2, s32 param3); + void func_ov000_020b4944(unk32 param1, u32 param2, s32 param3); + void func_ov000_020b4a00(s32 *param1, s32 *param2, s32 *param3, s32 param4); + + PlayerControlData(); }; diff --git a/include/Player/PlayerLink.hpp b/include/Player/PlayerLink.hpp new file mode 100644 index 00000000..51429cea --- /dev/null +++ b/include/Player/PlayerLink.hpp @@ -0,0 +1,65 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "DTCM/UnkStruct_027e0fd4.hpp" +#include "Player/EquipBombchu.hpp" +#include "Player/EquipShield.hpp" +#include "Player/LinkStateCutscene.hpp" +#include "Player/LinkStateFollow.hpp" +#include "Player/PlayerLinkBase.hpp" + +class PlayerLink : public PlayerLinkBase { +public: + /* 00 (base) */ + /* 70 */ s32 mUnk_70; + /* 74 */ unk8 mUnk_74[0x4]; + /* 78 */ unk32 mUnk_78; + /* 7c */ unk32 mUnk_7c; + /* 80 */ char mUnk_80; + /* 81 */ unk8 mUnk_81[0x3]; + /* 84 */ + + /* 00 */ virtual s32 GetMaxHealth() override; + /* 04 */ virtual bool vfunc_04() override; + /* 1c */ virtual void Init() override; + /* 24 */ virtual void UpdatePos() override; + /* 2c */ virtual void vfunc_2c(s32 param1, unk8 param2) override; + /* 40 */ virtual void AddHealth(s16 amount) override; + /* 44 */ virtual void vfunc_44() override; + /* 48 */ virtual void vfunc_48() override; + /* 4c */ virtual void vfunc_4c() override; + /* 50 */ virtual ~PlayerLink() override; + /* 68 */ virtual void vfunc_68() override; + /* 6c */ virtual void vfunc_6c() override; + /* 74 */ virtual void vfunc_74() override; + /* 78 */ virtual unk32 vfunc_78() override; + /* 7c */ virtual void vfunc_7c() override; + /* 80 */ virtual void SetUnk_5e() override; + /* 84 */ virtual void ResetUnk_5e() override; + /* 88 */ virtual void OnDeath(bool param1); + /* 8c */ + + static PlayerLink *Create(); + static PlayerLink *GetInstance(); + void func_ov014_0213eef0(s32 param1); + static LinkStateCutscene *GetLinkStateCutscene(); + PlayerLink(); + void func_ov014_0213f37c(); + static LinkStateItem *GetLinkStateItem(); + static void func_ov014_0213f734(unk32 *param1, UnkStruct_027e0fd4 *param2); + void func_ov014_0213f740(); + void func_ov014_0213f97c(); + + unk32 func_ov023_02177e7c(); + unk32 func_ov023_02177e84(); + void func_ov023_02177e90(); + bool func_ov023_02178058(); + static LinkStateFollow *GetLinkStateFollow(); + void func_ov023_02178174(); + static EquipBombchu *GetEquipBombchu(); + static EquipShield *GetEquipShield(); + void GiveControlToLink(); + void func_ov023_02178630(); +}; diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp index 02cf3219..2a208365 100644 --- a/include/Player/PlayerLinkBase.hpp +++ b/include/Player/PlayerLinkBase.hpp @@ -1,13 +1,15 @@ #pragma once #include "global.h" -#include "lib/math.h" +#include "nds/math.h" #include "types.h" #include "Actor/ActorManager.hpp" #include "Debug/DebugHierarchy.hpp" +#include "Item/ItemManager.hpp" #include "Player/MotionParams.hpp" #include "Player/PlayerBase.hpp" +#include "Player/PlayerControlData.hpp" typedef s32 PlayerCharacter; enum PlayerCharacter_ { @@ -43,22 +45,22 @@ public: /* 6c */ DebugHierarchy *mDebugHierarchy_2; /* 70 */ - /* 00 */ s32 GetMaxHealth() override; - /* 08 */ ItemFlag GetEquipId() override; - /* 0c */ bool CanMove() override; - /* 10 */ void vfunc_10(Cylinder *param1) override; - /* 14 */ void vfunc_14(Cylinder *param1) override; - /* 18 */ void vfunc_18(s32 param1) override; - /* 1c */ void Init() override; - /* 20 */ void vfunc_20() override; - /* 24 */ void vfunc_24() override; - /* 28 */ void vfunc_28(s32 param1) override; - /* 2c */ void vfunc_2c(s32 param1, unk8 param2) override; - /* 30 */ bool vfunc_30(s32 param1, Vec3p *param2, s32 param3) override; - /* 34 */ bool Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) override; - /* 38 */ bool TeleportToEntrance(unk32 entranceId, bool param2) override; - /* 3c */ bool TeleportToLastEntrance(bool param1) override; - /* 50 */ ~PlayerLinkBase() override; + /* 00 */ virtual s32 GetMaxHealth() override; + /* 08 */ virtual ItemFlag GetEquipId() override; + /* 0c */ virtual bool CanMove() override; + /* 10 */ virtual void vfunc_10(Cylinder *param1) override; + /* 14 */ virtual void vfunc_14(Cylinder *param1) override; + /* 18 */ virtual void vfunc_18(s32 param1) override; + /* 1c */ virtual void Init() override; + /* 20 */ virtual void vfunc_20() override; + /* 24 */ virtual void UpdatePos() override; + /* 28 */ virtual void vfunc_28(s32 param1) override; + /* 2c */ virtual void vfunc_2c(s32 param1, unk8 param2) override; + /* 30 */ virtual bool vfunc_30(s32 param1, Vec3p *param2, s32 param3) override; + /* 34 */ virtual bool Teleport(Vec3p *pos, s16 angle, unk32 param3, bool param4, bool param5) override; + /* 38 */ virtual bool TeleportToEntrance(unk32 entranceId, bool param2) override; + /* 3c */ virtual bool TeleportToLastEntrance(bool param1) override; + /* 50 */ virtual ~PlayerLinkBase() override; /* 58 */ virtual bool vfunc_58(); /* 5c */ virtual bool vfunc_5c(); /* 60 */ virtual bool vfunc_60(); @@ -73,13 +75,88 @@ public: /* 84 */ virtual void ResetUnk_5e(); /* 88 */ - bool func_ov00_020bbd80(s32 param1); - void func_ov00_020bc854(Vec3p *param1); - bool func_ov00_020bce48(ItemId cutsceneItemId); // PlayItemCutscene - bool func_ov00_020bd304(); - bool GongoronCollidesWith(Cylinder *hitbox); - s32 GetGrabActorId(); + void UnequipPotion(); + void ChangeLinkState(s32 index); + void SetLinkSubState(s32 index, unk32 substate); + PlayerControlData *GetPlayerControlData(s32 index); + void GetDistanceTo(Vec3p *vec, q20 *yDist, q20 *xzDist); + bool func_ov000_020bb68c(Vec3p *target); + bool func_ov000_020bb6d4(); + void func_ov000_020bb810(Vec3p *target, unk32 param2); + void func_ov000_020bb8c4(Vec3p *param1); + void TurnTo(Vec3p *target); + void func_ov000_020bb9b0(); + void func_ov000_020bb9c8(); + void func_ov000_020bb9e4(); + bool func_ov000_020bba00(); + bool func_ov000_020bba14(); + bool func_ov000_020bba28(); + void func_ov000_020bba48(); + bool func_ov000_020bbabc(); + bool func_ov000_020bbb18(); + bool func_ov000_020bbb64(); + bool func_ov000_020bbb78(); + void func_ov000_020bbbb8(); + bool func_ov000_020bbbd0(s32 param1, s32 param2); + bool func_ov000_020bbc68(s32 param1); + bool func_ov000_020bbd40(); + bool func_ov000_020bbd60(); + bool func_ov000_020bbd80(s32 param1); + unk32 func_ov000_020bbe94(); + void func_ov000_020bc088(); + ItemManager *GetItemManager(); + void func_ov000_020bc1c8(unk32 param1, unk32 param2, unk32 param3); + bool func_ov000_020bc210(); + void SetVelocity(Vec3p *velocity, bool setAngle); + void func_ov000_020bc280(unk16 param1); + unk32 func_ov000_020bc2d4(unk32 param1); + unk32 func_ov000_020bc320(unk32 param1, unk32 param2, unk32 param3); + void func_ov000_020bc398(unk32 param1, s32 param2); PlayerCharacter GetCurrentCharacter(); + s32 GetHealth(PlayerCharacter character); + void AddHealth(s16 amount, PlayerCharacter character); + void func_ov000_020bc4ac(); + s32 GetStateId(); + s32 func_ov000_020bc520(Vec3p *param1); + unk32 Grab(); + void func_ov000_020bc7e0(unk32 param1); + s32 GetGrabActorId(); + s32 func_ov000_020bc808(); + unk32 func_ov000_020bc84c(); + void func_ov000_020bc854(Vec3p *param1); + void UpdateTilePos(Vec3p *param1, PlayerCharacter character); + void func_ov000_020bc90c(unk32 *param1, s32 param2); + bool func_ov000_020bc960(unk32 param1, unk32 param2, unk32 param3); + bool GongoronCollidesWith(Cylinder *hitbox); + bool func_ov000_020bcc78(); + void func_ov000_020bccc8(); + void func_ov000_020bcdb8(); + void func_ov000_020bcdec(Vec3p *param1, unk16 param2); + bool PlayItemCutscene(ItemId cutsceneItemId); + bool func_ov000_020bcec8(); + bool func_ov000_020bcefc(); + bool func_ov000_020bcf2c(); + bool func_ov000_020bcf50(Vec3p *param1, unk32 param2); + bool func_ov000_020bcf84(Vec3p *param1, Vec3p *param2); + bool func_ov000_020bcfb8(s32 param1); + bool func_ov000_020bd030(unk32 param1); + bool func_ov000_020bd070(unk32 param1); + bool func_ov000_020bd0a8(); + bool func_ov000_020bd0bc(Vec3p *param1, s32 param2); + bool func_ov000_020bd268(); + bool func_ov000_020bd2bc(); + bool func_ov000_020bd304(); + bool func_ov000_020bd318(); + void SetPlayerCharacter(PlayerCharacter character); + bool func_ov000_020bd3b0(unk32 param1, unk32 param2, unk32 param3, unk16 param4); + void SetPosition(Vec3p *position); + void SetAngle(s16 *angle); + bool func_ov000_020bd510(s32 param1, unk32 *param2); + + PlayerLinkBase(); + + void UpdatePos(unk32 param1); + bool func_ov005_0210eba4(); }; extern PlayerLinkBase *gPlayerLink; diff --git a/include/Player/PlayerManager.hpp b/include/Player/PlayerManager.hpp new file mode 100644 index 00000000..63d4b303 --- /dev/null +++ b/include/Player/PlayerManager.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Save/SaveItemManager.hpp" +#include "System/SysNew.hpp" + +class PlayerManager : public SysObject { +public: + /* 00 */ u16 mMaxHealth; + /* 02 */ u16 mHealth; + /* 04 */ s16 mMaxShipHealth; + /* 06 */ s16 mShipHealth; + /* 08 */ u16 mSalvageArmHealth; + /* 0a */ s16 mFlags; + /* 0c */ unk16 mUnk_0c; + /* 0e */ unk8 mUnk_0e; + /* 0f */ unk8 mUnk_0f; + /* 10 */ + + void Save(SaveItemManager *save); + void IncreaseMaxHealth(s16 amount); + void UpdateShipMaxHealth(); + + static void Create(); + static void Destroy(); + PlayerManager(); + ~PlayerManager(); + void Init(bool param1); + void func_ov004_02108008(); +}; + +extern PlayerManager *gPlayerManager; diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp index 47349d28..1301e144 100644 --- a/include/Player/TouchControl.hpp +++ b/include/Player/TouchControl.hpp @@ -1,8 +1,8 @@ #pragma once #include "global.h" -#include "lib/math.h" #include "lib/touch.h" +#include "nds/math.h" #include "types.h" typedef u16 TouchFlags; diff --git a/include/Render/FadeControl.hpp b/include/Render/FadeControl.hpp index 805cbcb7..8e9697ef 100644 --- a/include/Render/FadeControl.hpp +++ b/include/Render/FadeControl.hpp @@ -1,3 +1,31 @@ #pragma once -struct FadeControl; +#include "global.h" +#include "types.h" + +struct FadeControl { + /* 00 */ unk32 mState; + /* 04 */ unk32 mUnk_04; + /* 08 */ s32 mCurrentBright; + /* 0c */ s32 mBrightA; + /* 10 */ s32 mBrightB; + /* 14 */ unk16 mCurrentFadeLength; + /* 16 */ unk16 mUnk_16; + /* 18 */ u16 mUnk_18; + /* 1a */ u16 mFadeLength; + /* 1c */ unk32 mFadeTimer; + /* 20 */ bool mUnk_20; + /* 20 */ bool mUnk_21; + /* 20 */ bool mUnk_22; + /* 23 */ unk8 mUnk_23; + /* 24 */ + + void Register(); + void Unregister(); + FadeControl(); + void func_0202aba8(s32 fadeLength, unk32 param2, unk32 newState); + bool func_0202abdc(s32 fadeLength, unk32 param2); + bool func_0202abf4(s32 fadeLength, unk32 param2); + bool func_0202ac0c(s32 currentFadeLength, u16 param2, s32 fadeLength, unk32 param4); + void UpdateFade(s32 speed); +}; diff --git a/include/Render/FadeController.hpp b/include/Render/FadeController.hpp new file mode 100644 index 00000000..59a17e48 --- /dev/null +++ b/include/Render/FadeController.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Render/FadeControl.hpp" + +#define FADE_CONTROL_COUNT 16 + +struct FadeControlEntry { + /* 0 */ FadeControl *mControl; + /* 4 */ unk32 mUnk_4; + /* 8 */ unk32 mUnk_8; + /* c */ +}; + +struct FadeController { + /* 00 */ s32 mLength; + /* 04 */ FadeControl (*mList)[FADE_CONTROL_COUNT]; + /* 44 */ FadeControl *mCurrent; + /* 48 */ + + bool Has(FadeControl *control); + static bool Contains(FadeControlEntry *needle, s32 length, FadeControl **haystack); + bool AddIfAbsent(FadeControl *control, unk32 param2, unk32 param3); + static bool Add(FadeControlEntry *entry, s32 maxLength, s32 *length, FadeControl **list, bool allowDuplicates); + void RemoveFadeControl(FadeControl *control); + static bool Remove(FadeControlEntry *entry, s32 *length, FadeControl **list); + bool func_0202d77c(FadeControl *control); + bool func_0202d7ac(); + void ProcessFade(s32 param1); + void SetScreenBrightness(s32 param1); +}; diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp index e6c26635..a9242578 100644 --- a/include/Render/ModelRender.hpp +++ b/include/Render/ModelRender.hpp @@ -3,6 +3,8 @@ #include "global.h" #include "types.h" +#include <nds/math.h> + #include "System/SysNew.hpp" class ItemModel; @@ -37,4 +39,13 @@ public: /* 38 */ virtual void vfunc_38(); /* 3c */ virtual void vfunc_3c(); /* 40 */ + + ModelRender(); + void *func_ov000_020a9624(s32 param1); + void func_ov000_020a98e8(unk32 param1); + void func_ov000_020a990c(unk32 param1); + void func_ov000_020a9938(unk32 param1); + void func_ov000_020a9960(unk32 param1); + void func_ov000_020a9998(unk32 param1, unk32 param2); + void func_ov000_020a99c0(); }; diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index 2a353075..b076cd73 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -51,6 +51,8 @@ struct FlagsUnk2 { /* 16 */ unk8 mUnk_16; /* 17 */ unk8 mUnk_17; /* 18 */ + + ~FlagsUnk2(); }; struct FlagsUnk { @@ -69,6 +71,10 @@ struct FlagsUnk { /* 4a */ unk8 mUnk_4a; /* 4b */ unk8 mUnk_4b; /* 4c */ + + ~FlagsUnk(); + + void func_ov000_020980f8(); }; class AdventureFlags : public SysObject { @@ -125,7 +131,16 @@ public: bool func_ov00_0209809c(); bool func_ov00_020980ac(); void func_ov00_020980bc(s32 param1); - void func_ov00_020980d0(); + + AdventureFlags(); + ~AdventureFlags(); + static void Create(); + static void Destroy(); + void func_ov004_021044f8(s32 param1); + void func_ov004_0210453c(); + bool func_ov004_0210455c(s32 param1); + void func_ov004_021046c8(unk32 param1); + void func_ov004_021046d4(); }; extern AdventureFlags *gAdventureFlags; diff --git a/include/Save/SaveItemManager.hpp b/include/Save/SaveItemManager.hpp new file mode 100644 index 00000000..0f0142f8 --- /dev/null +++ b/include/Save/SaveItemManager.hpp @@ -0,0 +1,37 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "../Item/Item.hpp" + +struct SaveItemManager { + /* 00 */ ItemFlags itemFlags; + /* 10 */ u32 salvagedTreasureFlags; + /* 14 */ ShipPartPricesShown shipPartPricesShown; + /* 20 */ u32 treasurePriceShownFlags[CEIL_DIV(Treasure_COUNT, 32)]; + /* 24 */ u8 equippedShipParts[ShipPart_COUNT]; + /* 2c */ s8 shipParts[ShipPart_COUNT][ShipType_COUNT]; + /* 74 */ s8 treasure[Treasure_COUNT]; + /* 7c */ unk8 unk_7c[4]; + /* 80 */ u16 hourglassSeconds; + /* 82 */ u16 unk_82[6]; + /* 8e */ u16 numRupees; + /* 90 */ unk8 unk_90; + /* 91 */ unk8 unk_91; + /* 92 */ unk8 unk_92; + /* 93 */ u8 numBombs; + /* 94 */ u8 numBombchus; + /* 95 */ u8 numArrows; + /* 96 */ s8 equippedItem; + /* 97 */ Potion potions[MAX_POTIONS]; + /* 99 */ u8 numGems[Gem_COUNT]; + /* 9c */ u8 quiverSize; + /* 9d */ u8 bombBagSize; + /* 9e */ u8 bombchuBagSize; + /* 9f */ u8 unk_9f[6]; + /* a5 */ u8 equippedFairy; + /* a6 */ + + SaveItemManager(); +}; diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp index 4ac727a1..636208fc 100644 --- a/include/System/OverlayManager.hpp +++ b/include/System/OverlayManager.hpp @@ -92,9 +92,12 @@ class OverlayManager { public: OverlayId mLoadedOverlays[OverlayIndex_COUNT]; - void Unload(OverlayIndex index); void Load(OverlayIndex index, OverlayId id); void LoadIfNotLoaded(OverlayIndex index, OverlayId id); + void Unload(OverlayIndex index); + void LoadOverlaySetup(s32 index); + void UnloadOverlaySetup(); + void LoadEquipItem(ItemFlag equipId); }; diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index 78f3b290..7e9b0cd8 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -2,8 +2,21 @@ #include "types.h"
+struct UnkStruct_0202e894 {
+ /* 00 */ u32 mId;
+ /* 04 */ unk8 mUnk_04[0x28];
+ /* 2c */
+};
+
+void *SysNew(UnkStruct_0202e894 *param1, s32 length, s32 param3);
+void SysDelete(void *ptr);
+void *func_0202e99c(s32 length);
+void *func_0202e9bc(s32 length);
+
class SysObject {
public:
static void *operator new(unsigned long length, u32 *id, u32 idLength);
+ static void *operator new[](unsigned long length, u32 *id, u32 idLength);
static void operator delete(void *ptr);
+ static void operator delete[](void *ptr);
};
diff --git a/include/Unknown/UnkStruct_0202e1a0.hpp b/include/Unknown/UnkStruct_0202e1a0.hpp new file mode 100644 index 00000000..a99956bc --- /dev/null +++ b/include/Unknown/UnkStruct_0202e1a0.hpp @@ -0,0 +1,24 @@ +#pragma once + +#include "global.h" +#include "types.h" + +struct UnkStruct_0202e1a0 { + /* 00 */ unk16 mUnk_00; + /* 02 */ unk16 mUnk_02; + /* 04 */ s32 mUnk_04; + /* 08 */ u32 mUnk_08; + /* 0c */ s32 mUnk_0c; + /* 10 */ s32 mUnk_10; + /* 14 */ s32 mUnk_14; + /* 18 */ + + UnkStruct_0202e1a0(); + void func_0202e1c4(); + void func_0202e1e8(); + bool func_0202e310(s32 param1); + unk32 func_0202e544(); + unk32 func_0202e58c(); + void func_0202e5cc(); + void func_0202e670(); +}; diff --git a/include/Unknown/UnkStruct_02032f0c.hpp b/include/Unknown/UnkStruct_02032f0c.hpp new file mode 100644 index 00000000..4907f95d --- /dev/null +++ b/include/Unknown/UnkStruct_02032f0c.hpp @@ -0,0 +1,79 @@ +#pragma once + +#include "global.h" +#include "types.h" + +// MsgProc_Base +class UnkStruct_02032e7c { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk16 mUnk_08; + /* 0a */ unk16 mUnk_0a; + /* 0c */ unk16 mUnk_0c; + /* 0e */ unk16 mUnk_0e; + /* 10 */ unk32 mUnk_10; + /* 14 */ + + /* 0 */ virtual ~UnkStruct_02032e7c(); + /* 8 */ + + UnkStruct_02032e7c(); +}; + +class UnkStruct_02032f0c { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ u16 *mUnk_0c; + /* 10 */ unk32 mUnk_10[6]; + /* 28 */ unk32 mUnk_28; + /* 2c */ s32 **mUnk_2c; + /* 30 */ s32 mUnk_30; + /* 34 */ s32 mUnk_34; + /* 38 */ unk32 mUnk_38; + /* 3c */ unk16 mUnk_3c; + /* 3e */ unk16 mUnk_3e[6]; + /* 4a */ u16 mUnk_4a; + /* 4c */ u8 mUnk_4c; + /* 4d */ bool mUnk_4d; + /* 4e */ u8 mUnk_4e; + /* 4f */ u8 mUnk_4f; + /* 50 */ u8 mUnk_50; + /* 51 */ u8 mUnk_51; + /* 52 */ + + /* 00 */ virtual ~UnkStruct_02032f0c(); + /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4); + /* 0c */ virtual void vfunc_0c(unk32 param1, unk32 param2, unk32 param3, unk32 param4); + /* 10 */ virtual void vfunc_10(u32 param1, unk32 param2); + /* 14 */ virtual bool vfunc_14(s32 param1, s32 param2); + /* 18 */ virtual unk32 vfunc_18(s32 param1); + /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4); + /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2); + /* 24 */ virtual bool vfunc_24(s16 **param1); + /* 28 */ + + UnkStruct_02032f0c(); + void func_02032f94(); + u16 **SetUnk_0c(u16 *value); + u8 func_02032fa4(); + s32 func_02032fb4(); + void func_02033214(unk32 param1, unk32 param2, unk32 param3, u8 param4, unk32 param5); + void func_020334b4(u32 param1, s32 param2, s32 param3, s32 param4); + void func_02033628(unk32 param1, u16 *param2); + u32 func_0203369c(u16 *param1, s32 param2); + void func_02033780(s32 param1); + s32 func_020337d8(s32 param1); + s32 func_020337fc(s16 *param1, s32 param2); + void func_020338a8(s32 param1, unk32 param2); + void func_020338d0(unk32 *param1, unk32 param2); + s32 func_02033904(unk32 param1, unk32 param2); + s32 func_02033938(unk32 param1); + s32 func_0203396c(u16 *param1); + u16 *func_02033b0c(s32 param1); + bool func_02033c6c(); + unk32 func_02033c88(u32 param1); + s32 func_02033cbc(s16 *param1); +}; diff --git a/include/Unknown/UnkStruct_02035064.hpp b/include/Unknown/UnkStruct_02035064.hpp new file mode 100644 index 00000000..69011e21 --- /dev/null +++ b/include/Unknown/UnkStruct_02035064.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Unknown/UnkStruct_0202e1a0.hpp" + +class UnkStruct_02035064 { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04; + /* 08 */ unk8 mUnk_08[0xc]; + /* 14 */ u32 mUnk_14; + /* 18 */ unk8 mUnk_18[0x4]; + /* 1c */ unk32 mUnk_1c; + /* 20 */ u32 mUnk_20; + /* 24 */ unk8 mUnk_24[0x28]; + /* 4c */ s16 mUnk_4c; + /* 4e */ s16 mUnk_4e; + /* 50 */ unk8 mUnk_50[0xc]; + /* 5c */ UnkStruct_0202e1a0 mUnk_5c; + /* 74 */ u16 *mUnk_74; + /* 78 */ s32 mUnk_78; + /* 7c */ u32 mUnk_7c; + /* 80 */ u16 mUnk_80; + /* 82 */ unk16 mUnk_82; + /* 84 */ unk16 mUnk_84; + /* 86 */ bool mUnk_86; + /* 87 */ unk8 mUnk_87; + /* 88 */ + + /* 0 */ virtual s32 vfunc_0(); + /* 4 */ virtual s32 vfunc_4(); + /* 8 */ + + UnkStruct_02035064(); + ~UnkStruct_02035064(); + + void func_020350b0(); + void func_020350b4(s32 param1, unk32 param2, unk8 param3, unk16 param4, unk16 param5); + void func_0203516c(); + void func_020351b8(bool param1, bool param2, bool param3, bool param4); + void func_020352d8(); +}; diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp new file mode 100644 index 00000000..5fe84a89 --- /dev/null +++ b/include/Unknown/UnkStruct_02037750.hpp @@ -0,0 +1,53 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Player/LinkStateInteract.hpp" + +class UnkStruct_02037750 { +public: + /* 00 (vtable) */ + /* 04 */ unk32 mUnk_04[0x4]; + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ u8 mUnk_1c; + /* 1d */ unk8 mUnk_1d; + /* 1e */ u16 mUnk_1e; + /* 20 */ + + /* 00 */ virtual ~UnkStruct_02037750(); + /* 08 */ virtual void vfunc_08(unk32 param1); + /* 0c */ virtual void vfunc_0c(s32 param1); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual unk32 vfunc_1c(); + /* 20 */ virtual void vfunc_20(); + /* 24 */ virtual void vfunc_24(unk32 param1); + /* 28 */ virtual void vfunc_28(s32 param1); + /* 2c */ virtual unk32 vfunc_2c(s32 param1); + /* 30 */ virtual unk32 vfunc_30(); + /* 34 */ + + UnkStruct_02037750(unk32 param1, unk32 param2); + LinkStateInteract *GetLinkStateInteract(); + void func_020385d0(s32 param1, unk32 *param2); +}; + +class UnkStruct_020386d8 : public UnkStruct_02037750 { +public: + /* 00 (base) */ + /* 20 */ unk8 mUnk_20; + /* 21 */ unk8 mUnk_21[0x3]; + /* 24 */ unk32 mUnk_24; + /* 28 */ + + UnkStruct_020386d8(); + /* 00 */ virtual ~UnkStruct_020386d8(); + /* 08 */ virtual void vfunc_08(unk32 param1); + /* 24 */ virtual void vfunc_24(unk32 param1); + /* 28 */ virtual void vfunc_28(); + /* 30 */ virtual unk32 vfunc_30(); + /* 34 */ +}; diff --git a/include/Unknown/UnkStruct_02038aa0.hpp b/include/Unknown/UnkStruct_02038aa0.hpp new file mode 100644 index 00000000..1053b7ef --- /dev/null +++ b/include/Unknown/UnkStruct_02038aa0.hpp @@ -0,0 +1,88 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Unknown/UnkStruct_0203dae0.hpp" + +class UnkStruct_02038aa0; + +class UnkStruct_0203881c : public UnkStruct_02032e7c { +public: + /* 00 (base) */ + /* 14 */ unk32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ unk32 mUnk_1c; + /* 20 */ unk32 mUnk_20; + /* 24 */ unk32 mUnk_24; + /* 28 */ + + /* 0 */ virtual ~UnkStruct_0203881c(); + /* 8 */ + + UnkStruct_0203881c(); + void func_02038858(unk32 param1); + void func_02038888(); + void func_02038950(UnkStruct_02038aa0 *param1, s32 param2); + void func_02038a80(s32 param1); +}; + +class UnkStruct_02038aa0 : public UnkStruct_0203dae0 { +public: + /* 000 (base) */ + /* 123 */ unk8 mUnk_123; + /* 124 */ unk32 mUnk_124; + /* 128 */ unk32 mUnk_128; + /* 12c */ unk32 mUnk_12c; + /* 130 */ unk8 mUnk_130[0x20]; + /* 150 */ unk8 mUnk_150; + /* 151 */ unk8 mUnk_151; + /* 152 */ unk8 mUnk_152; + /* 153 */ unk8 mUnk_153; + /* 154 */ unk32 mUnk_154; + /* 158 */ unk8 mUnk_158[0x2]; + /* 15a */ unk16 mUnk_15a; + /* 15c */ unk16 mUnk_15c; + /* 15e */ u8 mUnk_15e; + /* 15f */ u8 mUnk_15f; + /* 160 */ u8 mUnk_160; + /* 161 */ + + /* 00 */ virtual ~UnkStruct_02038aa0(); + /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4); + /* 10 */ virtual void vfunc_10(unk32 param1); + /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4); + /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2); + /* 2c */ virtual void vfunc_2c(); + /* 30 */ virtual void vfunc_30(); + /* 34 */ virtual unk32 vfunc_34(s32 param1); + /* 38 */ virtual unk32 vfunc_38(); + /* 3c */ virtual void vfunc_3c() = 0; + /* 40 */ virtual void vfunc_40() = 0; + /* 44 */ virtual void vfunc_44(); + /* 48 */ virtual void vfunc_48(); + /* 4c */ virtual void vfunc_4c(); + /* 50 */ virtual void vfunc_50(unk32 param1, unk32 param2, s32 param3, unk32 param4); + /* 54 */ virtual void vfunc_54(); + /* 58 */ virtual void vfunc_58(); + /* 5c */ virtual void vfunc_5c(); + /* 60 */ virtual void vfunc_60(); + /* 64 */ virtual void vfunc_64(); + /* 68 */ virtual s32 vfunc_68(unk32 param1); + /* 6c */ virtual void vfunc_6c(s32 *param1, s32 *param2); + /* 70 */ virtual void vfunc_70(s32 *param1, s32 *param2); + /* 74 */ + + UnkStruct_02038aa0(u8 param1, u8 param2); + void func_02038b34(u32 param1, unk32 param2); + void func_02038b40(); + bool func_02038b78(); + s32 func_02038cb8(s32 param1); + s32 func_02038cf4(); + s32 func_02038d10(); + bool func_02038ef4(s32 param1, s32 param2); + void func_02039208(unk16 param1); + unk32 func_02039250(); + void func_02039440(unk32 param1, unk32 param2); + bool func_0203951c(); +}; diff --git a/include/Unknown/UnkStruct_020397f8.hpp b/include/Unknown/UnkStruct_020397f8.hpp new file mode 100644 index 00000000..53c37017 --- /dev/null +++ b/include/Unknown/UnkStruct_020397f8.hpp @@ -0,0 +1,96 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Unknown/UnkStruct_02035064.hpp" +#include "Unknown/UnkStruct_02038aa0.hpp" + +class UnkStruct_020397f8 : public UnkStruct_02038aa0 { +public: + /* 000 (base) */ + /* 161 */ unk8 mUnk_161[0x3]; + /* 164 */ unk32 mUnk_164; + /* 168 */ UnkStruct_02035064 mUnk_168; + /* 1f0 */ UnkStruct_02035064 mUnk_1f0; + /* 278 */ UnkStruct_02035064 mUnk_278; + /* 300 */ UnkStruct_02035064 mUnk_300; + /* 388 */ UnkStruct_02035064 mUnk_388; + /* 410 */ unk32 *mUnk_410; + /* 414 */ unk32 mUnk_414; + /* 418 */ unk32 mUnk_418; + /* 41c */ unk16 mUnk_41c; + /* 41e */ unk16 mUnk_41e; + /* 420 */ unk16 mUnk_420; + /* 422 */ unk8 mUnk_422[0x2]; + /* 424 */ unk32 *mUnk_424; + /* 428 */ unk32 mUnk_428; + /* 42c */ unk8 mUnk_42c[0x124]; + /* 550 */ unk32 mUnk_550; + /* 554 */ unk32 mUnk_554; + /* 558 */ unk8 mUnk_558[0x4]; + /* 55c */ unk32 mUnk_55c; + /* 560 */ unk32 mUnk_560; + /* 564 */ unk8 mUnk_564[0x8]; + /* 56c */ unk16 mUnk_56c; + /* 56e */ unk16 mUnk_56e; + /* 570 */ unk16 mUnk_570; + /* 572 */ unk16 mUnk_572; + /* 574 */ unk16 mUnk_574; + /* 576 */ unk16 mUnk_576; + /* 578 */ unk16 mUnk_578; + /* 57a */ u8 mUnk_57a; + /* 57b */ u8 mUnk_57b; + /* 57c */ u8 mUnk_57c; + /* 57d */ u8 mUnk_57d; + /* 57e */ u8 mUnk_57e; + /* 57f */ u8 mUnk_57f; + /* 580 */ u8 mUnk_580; + /* 581 */ u8 mUnk_581; + /* 582 */ u8 mUnk_582; + /* 583 */ u8 mUnk_583; + /* 584 */ unk8 mUnk_584; + /* 585 */ u8 mUnk_585; + /* 586 */ u8 mUnk_586; + /* 587 */ unk8 mUnk_587; + /* 588 */ unk32 mUnk_588; + /* 58c */ + + UnkStruct_020397f8(); + /* 4c */ virtual void vfunc_4c(); + /* 2c */ virtual void vfunc_2c(); + void func_02039ca8(); + /* 3c */ virtual void vfunc_3c(); + /* 40 */ virtual void vfunc_40(s32 param1, s32 param2); + void func_0203a188(s32 param1, s32 param2); + bool func_0203a2c0(); + unk32 func_0203a30c(); + /* 48 */ virtual void vfunc_48(); + void func_0203a35c(); + bool func_0203a3e0(); + /* 44 */ virtual void vfunc_44(s32 param1, s32 param2); + bool func_0203a6d0(unk32 param1); + /* 50 */ virtual void vfunc_50(unk32 param1, unk32 param2, s32 param3, unk32 param4); + /* 54 */ virtual void vfunc_54(); + /* 5c */ virtual void vfunc_5c(); + /* 58 */ virtual void vfunc_58(); + bool func_0203b0bc(); + s32 func_0203b0ec(u32 param1); + /* 18 */ virtual unk32 vfunc_18(s32 param1); + /* 1c */ virtual unk32 vfunc_1c(s32 param1, unk32 *param2, unk32 param3, unk32 param4); + /* 60 */ virtual void vfunc_60(s32 param1); + /* 64 */ virtual void vfunc_64(unk32 param1); + void func_0203b764(); + /* 20 */ virtual unk32 vfunc_20(s32 param1, s32 *param2); + void func_0203bd8c(s32 param1); + /* 6c */ virtual void vfunc_6c(s32 *param1, s32 *param2); + void func_0203be08(); + void func_0203be64(); + bool func_0203c084(); + bool func_0203c13c(); + bool func_0203c1a0(); + bool func_0203c25c(); + /* 00 */ virtual ~UnkStruct_020397f8(); + /* 38 */ virtual unk32 vfunc_38(); + /* 74 */ +}; diff --git a/include/Unknown/UnkStruct_0203dae0.hpp b/include/Unknown/UnkStruct_0203dae0.hpp new file mode 100644 index 00000000..cfda7368 --- /dev/null +++ b/include/Unknown/UnkStruct_0203dae0.hpp @@ -0,0 +1,49 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include "Unknown/UnkStruct_02032f0c.hpp" + +class UnkStruct_0203dae0 : public UnkStruct_02032f0c { +public: + /* 000 (base) */ + /* 052 */ unk8 mUnk_052[0x2]; + /* 054 */ unk32 mUnk_054[0x30]; + /* 114 */ void *mUnk_114; + /* 118 */ unk32 mUnk_118; + /* 11c */ unk16 mUnk_11c; + /* 11e */ u8 mUnk_11e; + /* 11f */ u8 mUnk_11f; + /* 120 */ u8 mUnk_120; + /* 121 */ u8 mUnk_121; + /* 122 */ u8 mUnk_122; + /* 123 */ + + /* 00 */ virtual ~UnkStruct_0203dae0(); + /* 08 */ virtual void vfunc_08(s32 param1, unk32 param2, s16 *param3, unk32 param4); + /* 0c */ virtual void vfunc_0c(unk32 param1, unk32 param2, unk32 param3, unk32 param4); + /* 10 */ virtual void vfunc_10(u32 param1, unk32 param2); + /* 14 */ virtual bool vfunc_14(s32 param1, s32 param2); + /* 18 */ virtual unk32 vfunc_18(s32 param1); + /* 28 */ virtual bool vfunc_28(); + /* 2c */ virtual void vfunc_2c(); + /* 30 */ virtual void vfunc_30(); + /* 34 */ + + UnkStruct_0203dae0(u8 param1); + void func_0203dc10(s32 param1); + bool func_0203dc74(s32 param1, s32 param2); + void func_0203dcfc(u8 param1, unk32 param2, unk32 param3, s32 param4); + void func_0203ddec(); + void func_0203ddfc(); + void func_0203de14(); + s32 func_0203de24(); + bool func_0203de58(s32 param1); + bool func_0203e0f8(unk32 param1, s32 param2); + bool func_0203e1b0(unk32 param1, unk32 param2, s32 param3); + void func_0203e2e8(s32 param1, s32 param2, unk32 param3, u32 param4); + void func_0203e510(s32 *param1, s32 param2, s32 param3); + void func_0203e62c(s32 *param1, s32 param2); + bool func_0203e6e4(u32 param1, u32 param2, s32 param3); +}; diff --git a/include/Unknown/UnkStruct_ov000_020b1528.hpp b/include/Unknown/UnkStruct_ov000_020b1528.hpp new file mode 100644 index 00000000..2169564b --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020b1528.hpp @@ -0,0 +1,27 @@ +#pragma once + +#include "global.h" +#include "types.h" + +#include <nds/math.h> + +class UnkStruct_ov000_020b1528 { +public: + /* 00 (vtable) */ + /* 04 */ unk16 mUnk_04; + /* 06 */ unk8 mUnk_06[0x2]; + /* 08 */ Vec3p mUnk_08; + /* 14 */ u32 mUnk_14; + /* 18 */ unk32 mUnk_18; + /* 1c */ + + /* 00 */ virtual ~UnkStruct_ov000_020b1528(); + /* 08 */ virtual bool vfunc_08(); + /* 0c */ virtual bool vfunc_0c(); + /* 10 */ virtual bool vfunc_10(s32 *param1); + /* 14 */ virtual bool vfunc_14(u16 *index, unk32 param2); + /* 18 */ virtual void Clear(); + /* 1c */ + + UnkStruct_ov000_020b1528(); +}; diff --git a/include/Unknown/UnkStruct_ov000_020beba8.hpp b/include/Unknown/UnkStruct_ov000_020beba8.hpp new file mode 100644 index 00000000..f9bbcead --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020beba8.hpp @@ -0,0 +1,22 @@ +#pragma once + +#include "global.h" +#include "types.h" + +class UnkStruct_ov000_020beba8 { +public: + /* 0 (vtable) */ + /* 4 */ unk32 mUnk_4; + /* 8 */ unk32 mUnk_8; + /* c */ + + /* 00 */ virtual ~UnkStruct_ov000_020beba8(); + /* 08 */ virtual void vfunc_08(unk16 *param1); + /* 0c */ virtual void vfunc_0c(unk16 *param1); + /* 10 */ virtual void vfunc_10(s32 *param1); + /* 14 */ virtual void vfunc_14(u16 *param1); + /* 18 */ virtual void vfunc_18(s32 *param1); + /* 1c */ + + UnkStruct_ov000_020beba8(unk32 param1); +}; diff --git a/include/Unknown/UnkStruct_ov000_020e2f04.hpp b/include/Unknown/UnkStruct_ov000_020e2f04.hpp new file mode 100644 index 00000000..74739291 --- /dev/null +++ b/include/Unknown/UnkStruct_ov000_020e2f04.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include <nds/math.H> + +#include "Physics/AABB.hpp" +#include "global.h" +#include "types.h" + +class UnkStruct_ov000_020e2f04 { +public: + /* 00 (vtable) */ + /* 04 */ unk8 mUnk_04; + /* 05 */ unk8 mUnk_05; + /* 06 */ unk8 mUnk_06[0x2]; + /* 08 */ unk32 mUnk_08; + /* 0c */ unk32 mUnk_0c; + /* 10 */ + + /* 00 */ virtual ~UnkStruct_ov000_020e2f04(); + /* 08 */ virtual unk32 vfunc_08() = 0; + /* 0c */ virtual void vfunc_0c(); + /* 10 */ virtual void vfunc_10(); + /* 14 */ virtual void vfunc_14(AABB *param1, unk32 param2, unk32 param3, unk32 param4); + /* 18 */ virtual void vfunc_18(); + /* 1c */ virtual void vfunc_1c(); + /* 20 */ virtual void SetBoundingBox(AABB *param1); + /* 24 */ virtual void vfunc_24(); + /* 28 */ virtual void vfunc_28(); + /* 2c */ virtual void GetBoundingBox(AABB *bbox); + /* 30 */ virtual void SetPosition(Vec3p *pos) = 0; + /* 34 */ virtual void vfunc_34() = 0; + /* 38 */ virtual void vfunc_38() = 0; + /* 3c */ virtual void GetPosition(Vec3p *pos) = 0; + /* 40 */ virtual q20 GetSizeXZ() = 0; + /* 44 */ virtual q20 GetHeight() = 0; + /* 48 */ virtual bool ContainsInXZ(Vec3p *pos) = 0; + /* 4c */ virtual bool Contains(Vec3p *pos) = 0; + /* 50 */ virtual bool IntersectsCube(Cube *cube) = 0; + /* 54 */ virtual void vfunc_54(Cube *param1, Vec3p *param2, u32 *param3) = 0; + /* 58 */ virtual void vfunc_58(unk32 param1, unk32 param2, s32 param3); + /* 5c */ + + inline UnkStruct_ov000_020e2f04() : + mUnk_04(1), + mUnk_05(0), + mUnk_08(0), + mUnk_0c(0) {} +}; diff --git a/include/global.h b/include/global.h index 8d6635dd..ca961164 100644 --- a/include/global.h +++ b/include/global.h @@ -1,8 +1,6 @@ #ifndef PH_GLOBAL_H #define PH_GLOBAL_H -#define NULL 0 - #define GET_FLAG(arr, pos) (((1 << ((pos) & 0x1f)) & (arr)[((u32) (pos)) >> 5]) != 0) #define SET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] |= 1 << ((pos) & 0x1f)) #define RESET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1f))) diff --git a/include/lib/math.h b/include/lib/math.h deleted file mode 100644 index f7204acc..00000000 --- a/include/lib/math.h +++ /dev/null @@ -1,95 +0,0 @@ -#pragma once - -#include "global.h" -#include "types.h" - -// Q20.12 fixed point number -typedef s32 q20; -// Q4.12 fixed point number -typedef s16 q4; - -#define INT_TO_Q20(n) ((s32) ((n) << 12)) -#define FLOAT_TO_Q21(n) ((s32) (((n) * 8192 + 1) / 4)) -#define FLOAT_TO_Q20(n) ((s32) (((n) * 8192 + 1) / 2)) -#define FLOAT_TO_Q19(n) ((s32) (((n) * 8192 + 1))) -#define ROUND_Q20(n) (((s32) (n) + 0x800) >> 12) -#define MUL_Q20(a, b) (q20)((((s64) (a)) * ((s64) (b)) + 0x800) >> 12) - -#define DEG_TO_ANG(n) ((n) * 0x10000 / 360) -#define SIN(n) (gSinCosTable[2 * ((n) >> 4)]) -#define COS(n) (gSinCosTable[2 * ((n) >> 4) + 1]) - -extern "C" s32 Atan2(s32 x, s32 y); -extern q4 gSinCosTable[]; - -typedef struct { - /* 0 */ s8 x; - /* 1 */ s8 y; - /* 2 */ -} Vec2b; - -typedef struct { - /* 0 */ s16 x; - /* 1 */ s16 y; - /* 2 */ -} Vec2s; - -typedef struct { - /* 0 */ q20 x; - /* 4 */ q20 y; - /* 8 */ q20 z; - /* c */ -} Vec3p; - -extern const Vec3p gVec3p_ZERO; - -extern "C" void Vec3p_Add(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" void Vec3p_Sub(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Dot(Vec3p *a, Vec3p *b); -extern "C" void Vec3p_Cross(Vec3p *a, Vec3p *b, Vec3p *out); -extern "C" q20 Vec3p_Length(Vec3p *a); -extern "C" void Vec3p_Normalize(Vec3p *vec, Vec3p *out); -extern "C" void Vec3p_Axpy(q20 a, Vec3p *x, Vec3p *y, Vec3p *out); -extern "C" q20 Vec3p_Distance(Vec3p *a, Vec3p *b); - -inline void Vec3p_Rotate(Vec3p *vec, q20 sin, q20 cos, Vec3p *out) { - out->x += MUL_Q20(vec->z, sin); - out->z += MUL_Q20(vec->z, cos); - out->x += MUL_Q20(vec->x, cos); - out->z += MUL_Q20(vec->x, -sin); -} - -inline void Vec3p_CopyXZ(Vec3p *vec, Vec3p *out) { - q20 z = vec->z; - q20 x = vec->x; - - out->x = x; - out->y = 0; - out->z = z; -} - -inline void Vec3p_Copy(Vec3p *vec, Vec3p *out) { - out->x = vec->x; - out->y = vec->y; - out->z = vec->z; -} - -typedef struct { - /* 00 */ q20 x; - /* 04 */ q20 y; - /* 08 */ q20 z; - /* 0c */ q20 w; - /* 10 */ -} Vec4p; - -typedef struct { - /* 00 */ Vec3p xColumn; - /* 0c */ Vec3p yColumn; - /* 18 */ Vec3p zColumn; - /* 24 */ -} Mat3p; - -extern "C" u32 FastDivide(u32 a, u32 b); -extern "C" u32 Divide(u32 a, u32 b); -extern "C" bool Approach(unk32 *src, unk32 dest, unk32 step); -extern "C" bool Approach_thunk(unk32 *src, unk32 dest, unk32 step); diff --git a/include/types.h b/include/types.h index a0952eff..03e8352f 100644 --- a/include/types.h +++ b/include/types.h @@ -1,6 +1,8 @@ #ifndef PH_TYPES_H
#define PH_TYPES_H
+#include <stddef.h>
+
typedef unsigned long long u64;
typedef unsigned int u32;
typedef unsigned short u16;
@@ -15,6 +17,10 @@ typedef s8 unk8; typedef s16 unk16;
typedef s32 unk32;
+#ifndef __cplusplus
+typedef s32 bool;
+#endif
+
#define CEIL_DIV(a, b) (((a) + (b) - 1) / (b))
#endif
|
