summaryrefslogtreecommitdiff
path: root/include/Actor
diff options
context:
space:
mode:
Diffstat (limited to 'include/Actor')
-rw-r--r--include/Actor/Actor.hpp2
-rw-r--r--include/Actor/ActorManager.hpp12
-rw-r--r--include/Actor/ActorNaviBase.hpp34
-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)0
-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
15 files changed, 566 insertions, 156 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/ActorNaviBase.hpp b/include/Actor/ActorNaviBase.hpp
deleted file mode 100644
index 9b49aa13..00000000
--- a/include/Actor/ActorNaviBase.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-#pragma once
-
-#include "global.h"
-#include "types.h"
-
-#include "Actor/Actor.hpp"
-#include "Render/ModelRender.hpp"
-
-class ActorNaviBase : public Actor {
-public:
- /* 000 (base) */
- /* 158 */ Vec3p mOffsetPos;
- /* 164 */ u32 mUnk_164;
- /* 168 */ unk8 mUnk_168[0x68];
- /* 1d0 */ void *mUnk_1d0;
- /* 164 */ unk8 mUnk_1d4[0x40];
- /* 214 */ unk16 mUnk_214;
- /* 216 */ unk8 mUnk_216[0xc];
- /* 222 */ unk16 mUnk_222;
- /* 224 */ unk8 mUnk_224[0x28];
- /* 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 */
-};
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 bb6b15d4..bb6b15d4 100644
--- a/include/Actor/ActorNavi.hpp
+++ b/include/Actor/Navi/ActorNavi.hpp
diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp
new file mode 100644
index 00000000..c98bf84f
--- /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 mOffsetPos;
+ /* 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();
+};