summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorYanis002 <35189056+Yanis002@users.noreply.github.com>2025-02-04 00:43:39 +0100
committerYanis002 <35189056+Yanis002@users.noreply.github.com>2025-02-04 00:43:39 +0100
commit51d5bf69edd56d626a4f5d987ecf9b37ae17fa33 (patch)
tree42e6d19eeee300c606bc8296d121e6c10cc233d6 /include
parent64e8537ba7e4d796079a7bacf23b3f5cdb9a7213 (diff)
parent3f7197110627adbbe7ff1f69db1f5a15f9b6c598 (diff)
Merge remote-tracking branch 'upstream/main' into bmg
Diffstat (limited to 'include')
-rw-r--r--include/Actor/Actor.hpp2
-rw-r--r--include/Actor/ActorManager.hpp12
-rw-r--r--include/Actor/ActorRef.hpp4
-rw-r--r--include/Actor/ActorRupee.hpp2
-rw-r--r--include/Actor/ActorSpawner.hpp25
-rw-r--r--include/Actor/ActorType.hpp198
-rw-r--r--include/Actor/Dungeon/ActorEventIcon.hpp30
-rw-r--r--include/Actor/Dungeon/ActorSwitchObject.hpp36
-rw-r--r--include/Actor/Navi/ActorNavi.hpp (renamed from include/Actor/ActorNavi.hpp)6
-rw-r--r--include/Actor/Navi/ActorNaviBase.hpp113
-rw-r--r--include/Actor/Player/ActorArrow.hpp63
-rw-r--r--include/Actor/Player/ActorBlast.hpp59
-rw-r--r--include/Actor/Player/ActorBomb.hpp73
-rw-r--r--include/Actor/Player/ActorRope.hpp71
-rw-r--r--include/Cutscene/CutsceneHandler.hpp61
-rw-r--r--include/DTCM/UnkStruct_027e05f8.hpp17
-rw-r--r--include/DTCM/UnkStruct_027e077c.hpp11
-rw-r--r--include/DTCM/UnkStruct_027e0d38.hpp30
-rw-r--r--include/DTCM/UnkStruct_027e0fd4.hpp130
-rw-r--r--include/DTCM/UnkStruct_027e0fe0.hpp13
-rw-r--r--include/DTCM/UnkStruct_027e103c.hpp136
-rw-r--r--include/Debug/DebugHierarchy.hpp4
-rw-r--r--include/Debug/DebugHierarchyBase.hpp22
-rw-r--r--include/Debug/DebugHierarchyChild.hpp11
-rw-r--r--include/Debug/DebugHierarchyNode.hpp19
-rw-r--r--include/Item/Item.hpp73
-rw-r--r--include/Item/ItemManager.hpp141
-rw-r--r--include/Item/ItemModelLoader.hpp29
-rw-r--r--include/Map/CameraViewpoint.hpp2
-rw-r--r--include/Map/Course.hpp9
-rw-r--r--include/Map/Entrance.hpp2
-rw-r--r--include/Map/MapBase.hpp10
-rw-r--r--include/Map/MapData.hpp26
-rw-r--r--include/Map/MapManager.hpp19
-rw-r--r--include/Map/TriggerAABB.hpp9
-rw-r--r--include/Map/TriggerAABB_Unk1.hpp7
-rw-r--r--include/Map/TriggerAABB_Unk2.hpp39
-rw-r--r--include/Map/TriggerBase.hpp17
-rw-r--r--include/Map/TriggerSphere.hpp8
-rw-r--r--include/Message/MessageManager.hpp4
-rw-r--r--include/Message/MsgProc.hpp13
-rw-r--r--include/Physics/AABB.hpp15
-rw-r--r--include/Physics/Cube.hpp11
-rw-r--r--include/Physics/Cylinder.hpp2
-rw-r--r--include/Physics/Sphere.hpp2
-rw-r--r--include/Physics/Transform.hpp2
-rw-r--r--include/Player/Battle/PlayerBattleLinkControlData.hpp51
-rw-r--r--include/Player/EquipBomb.hpp33
-rw-r--r--include/Player/EquipBombchu.hpp81
-rw-r--r--include/Player/EquipBoomerang.hpp29
-rw-r--r--include/Player/EquipBow.hpp25
-rw-r--r--include/Player/EquipHammer.hpp31
-rw-r--r--include/Player/EquipItem.hpp32
-rw-r--r--include/Player/EquipPotion.hpp24
-rw-r--r--include/Player/EquipRope.hpp79
-rw-r--r--include/Player/EquipScoop.hpp27
-rw-r--r--include/Player/EquipShield.hpp20
-rw-r--r--include/Player/EquipSword.hpp27
-rw-r--r--include/Player/HealthManager.hpp22
-rw-r--r--include/Player/LinkStateBase.hpp25
-rw-r--r--include/Player/LinkStateCutscene.hpp66
-rw-r--r--include/Player/LinkStateDamage.hpp4
-rw-r--r--include/Player/LinkStateFollow.hpp14
-rw-r--r--include/Player/LinkStateInteract.hpp13
-rw-r--r--include/Player/LinkStateItem.hpp43
-rw-r--r--include/Player/LinkStateMove.hpp4
-rw-r--r--include/Player/LinkStateRoll.hpp22
-rw-r--r--include/Player/PlayerBase.hpp4
-rw-r--r--include/Player/PlayerControl.hpp16
-rw-r--r--include/Player/PlayerControlData.hpp48
-rw-r--r--include/Player/PlayerLink.hpp65
-rw-r--r--include/Player/PlayerLinkBase.hpp123
-rw-r--r--include/Player/PlayerManager.hpp34
-rw-r--r--include/Player/TouchControl.hpp2
-rw-r--r--include/Render/FadeControl.hpp30
-rw-r--r--include/Render/FadeController.hpp33
-rw-r--r--include/Render/ModelRender.hpp11
-rw-r--r--include/Save/AdventureFlags.hpp17
-rw-r--r--include/Save/SaveItemManager.hpp37
-rw-r--r--include/System/OverlayManager.hpp5
-rw-r--r--include/System/SysNew.hpp13
-rw-r--r--include/Unknown/UnkStruct_0202e1a0.hpp24
-rw-r--r--include/Unknown/UnkStruct_02032f0c.hpp79
-rw-r--r--include/Unknown/UnkStruct_02035064.hpp44
-rw-r--r--include/Unknown/UnkStruct_02037750.hpp53
-rw-r--r--include/Unknown/UnkStruct_02038aa0.hpp88
-rw-r--r--include/Unknown/UnkStruct_020397f8.hpp96
-rw-r--r--include/Unknown/UnkStruct_0203dae0.hpp49
-rw-r--r--include/Unknown/UnkStruct_ov000_020b1528.hpp27
-rw-r--r--include/Unknown/UnkStruct_ov000_020beba8.hpp22
-rw-r--r--include/Unknown/UnkStruct_ov000_020e2f04.hpp48
-rw-r--r--include/global.h2
-rw-r--r--include/lib/math.h95
-rw-r--r--include/types.h6
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