summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2025-05-22 22:05:31 +0200
committerAetias <aetias@outlook.com>2025-05-22 22:05:31 +0200
commit0ae9b8c14902a59341ec84730d417eabe595f2de (patch)
tree03ce8d268435e7165017374eaee15fbc37b1ace6 /include
parent4a764f9d58cb16343c02afb3592aad7aabf66d6d (diff)
parent3f6a81d03dec2bd7c8394b508dbe4f017a5244b9 (diff)
Merge remote-tracking branch 'zeldaret/main' into decomp-PlayerControl
Diffstat (limited to 'include')
-rw-r--r--include/Actor/Actor.hpp2
-rw-r--r--include/Actor/ActorType.hpp1
-rw-r--r--include/Actor/Dungeon/ActorActionObject.hpp20
-rw-r--r--include/Actor/Navi/ActorForceNavi.hpp15
-rw-r--r--include/Actor/Navi/ActorNavi.hpp94
-rw-r--r--include/Actor/Navi/ActorNaviBase.hpp36
-rw-r--r--include/Actor/Navi/ActorWisdomNavi.hpp15
-rw-r--r--include/Debug/DebugHierarchyBase.hpp5
-rw-r--r--include/Item/ItemManager.hpp9
-rw-r--r--include/Item/ItemModelLoader.hpp2
-rw-r--r--include/Map/MapBase.hpp3
-rw-r--r--include/Map/MapManager.hpp2
-rw-r--r--include/Map/MapOverworld.hpp75
-rw-r--r--include/Player/LinkStateBase.hpp22
-rw-r--r--include/Player/LinkStateDamage.hpp1
-rw-r--r--include/Player/LinkStateMove.hpp7
-rw-r--r--include/Player/PlayerBase.hpp6
-rw-r--r--include/Player/PlayerLinkBase.hpp2
-rw-r--r--include/Player/TouchControl.hpp6
-rw-r--r--include/Save/AdventureFlags.hpp26
-rw-r--r--include/System/OverlayManager.hpp192
-rw-r--r--include/Unknown/UnkStruct_02037750.hpp2
-rw-r--r--include/Unknown/UnkStruct_ov000_020c0c08.hpp21
23 files changed, 402 insertions, 162 deletions
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index 2a30a7c1..c22f086e 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -227,7 +227,7 @@ public:
bool func_ov00_020c195c();
bool func_ov00_020c198c();
void KillPickupItemActors();
- void func_Ov00_020c1bfc(s32 param1);
+ bool func_ov00_020c1bfc(s32 param1);
void func_ov00_020c1c20(s32 param1, unk32 param2);
bool IsNearLink();
void func_ov00_020c1cf8();
diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp
index 7842da14..f71c533b 100644
--- a/include/Actor/ActorType.hpp
+++ b/include/Actor/ActorType.hpp
@@ -41,6 +41,7 @@ enum ActorTypeId_ {
ActorTypeId_SmallKey = 'NKEY',
ActorTypeId_SwitchObject = 'SWOB',
ActorTypeId_EventIcon = 'EVIC',
+ ActorTypeId_ActionObject = 'ACOB',
ActorTypeId_Sandworm = 'MLDW',
ActorTypeId_Tektite = 'TEKT',
diff --git a/include/Actor/Dungeon/ActorActionObject.hpp b/include/Actor/Dungeon/ActorActionObject.hpp
new file mode 100644
index 00000000..0bf35dfb
--- /dev/null
+++ b/include/Actor/Dungeon/ActorActionObject.hpp
@@ -0,0 +1,20 @@
+#pragma once
+
+#include "Actor/Actor.hpp"
+
+class ActorActionObject : public Actor {
+public:
+ static ActorType gType;
+
+ /* 000 (base) */
+ /* 158 */
+
+ /* 00 */ virtual ~ActorActionObject() 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 ActorActionObject *Create();
+ ActorActionObject();
+};
diff --git a/include/Actor/Navi/ActorForceNavi.hpp b/include/Actor/Navi/ActorForceNavi.hpp
new file mode 100644
index 00000000..18a124f4
--- /dev/null
+++ b/include/Actor/Navi/ActorForceNavi.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "Actor/Navi/ActorNaviBase.hpp"
+
+class ActorForceNavi : public ActorNaviBase {
+public:
+ static ActorType gType;
+
+ /* 000 (base) */
+ /* 294 */
+
+ /* b4 */ virtual FairyId GetFairyId() override;
+
+ static ActorForceNavi *Create();
+};
diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp
index bb6b15d4..86774de4 100644
--- a/include/Actor/Navi/ActorNavi.hpp
+++ b/include/Actor/Navi/ActorNavi.hpp
@@ -1,29 +1,65 @@
-#pragma once
-
-#include "global.h"
-#include "types.h"
-
-#include "Actor/Actor.hpp"
-#include "Actor/ActorNaviBase.hpp"
-#include "Render/ModelRender.hpp"
-
-class ActorNavi : public ActorNaviBase {
-public:
- /* 000 (base) */
- /* 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 */ unk32 mUnk_3b4;
- /* 3b8 */ unk32 mUnk_3b8;
- /* 3bc */ unk32 mUnk_3bc;
- /* 3c0 */ unk8 mUnk_3c0[0x8];
- /* 3c8 */
-};
+#pragma once
+
+#include "Actor/Navi/ActorNaviBase.hpp"
+#include "Unknown/UnkStruct_ov000_020beba8.hpp"
+
+class UnkStruct_ov000_020b8110 : public UnkStruct_ov000_020beba8 {
+public:
+ /* 0 (base) */
+ /* c */
+
+ /* 00 */ virtual ~UnkStruct_ov000_020b8110() override;
+ /* 08 */ virtual void vfunc_08(unk16 *param1) override;
+ /* 14 */ virtual void vfunc_14(u16 *param1) override;
+ /* 18 */ virtual void vfunc_18(s32 *param1) override;
+ /* 1c */
+
+ UnkStruct_ov000_020b8110();
+};
+
+class ActorNavi : public ActorNaviBase {
+public:
+ static ActorType gType;
+
+ /* 000 (base) */
+ /* 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 ~ActorNavi() override;
+ /* 08 */ virtual bool vfunc_08() override;
+ /* 20 */ virtual void vfunc_20(bool param1) override;
+ /* 8c */ virtual bool vfunc_8c() override;
+ /* b4 */ virtual FairyId GetFairyId() override;
+ /* b8 */ virtual s32 vfunc_b8() override;
+ /* c0 */ virtual bool vfunc_c0(Vec3p *param1) override;
+ /* c4 */ virtual void vfunc_c4() override;
+ /* c8 */ virtual void vfunc_c8() override;
+ /* cc */ virtual bool vfunc_cc(unk32 *param1) override;
+ /* d0 */ virtual void vfunc_d0() override;
+ /* d4 */ virtual void vfunc_d4() override;
+ /* d8 */ virtual void vfunc_d8() override;
+ /* dc */ virtual void SetActive(bool active) override;
+ /* e0 */ virtual void vfunc_e0() override;
+ /* e8 */ virtual void vfunc_e8() override;
+ /* ec */ virtual void vfunc_ec() override;
+
+ static ActorNavi *Create();
+ void func_ov000_020b8200();
+ void func_ov000_020b853c();
+
+ ActorNavi();
+};
diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp
index 95a34c6c..59db230b 100644
--- a/include/Actor/Navi/ActorNaviBase.hpp
+++ b/include/Actor/Navi/ActorNaviBase.hpp
@@ -7,6 +7,15 @@
#include "Player/EquipHammer.hpp"
#include "Render/ModelRender.hpp"
+typedef s32 FairyId;
+enum FairyId_ {
+ FairyId_None = -1,
+ FairyId_Courage = 0,
+ FairyId_Power = 1,
+ FairyId_Wisdom = 2,
+ FairyId_COUNT = 3,
+};
+
class ActorNaviBase_Unk1 {};
class ActorNaviBase : public Actor {
@@ -16,12 +25,12 @@ public:
/* 164 */ unk32 mUnk_164;
/* 168 */ ModelRender mUnk_168;
/* 1c4 */ unk8 mUnk_1c4[0xc];
- /* 1d0 */ void *mUnk_1d0;
- /* 1d4 */ unk8 mUnk_1d4[0x30];
+ /* 1d0 */ unk8 mUnk_1d0[0x24];
+ /* 1f4 */ unk8 mUnk_1f4[0x20];
/* 214 */ unk16 mUnk_214;
/* 216 */ unk8 mUnk_216[0xc];
/* 222 */ unk16 mUnk_222;
- /* 224 */ unk8 mUnk_224[0x18];
+ /* 224 */ unk8 mUnk_224[0x28];
/* 24c */ unk32 mUnk_24c;
/* 250 */ unk32 mUnk_250;
/* 254 */ unk32 mUnk_254;
@@ -34,22 +43,7 @@ public:
/* 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 */
+ /* 294 */
/* 00 */ virtual ~ActorNaviBase() override;
/* 08 */ virtual bool vfunc_08() override;
@@ -66,9 +60,7 @@ public:
/* 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;
+ /* b4 */ virtual FairyId GetFairyId() = 0;
/* b8 */ virtual s32 vfunc_b8();
/* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3);
/* c0 */ virtual bool vfunc_c0(Vec3p *param1);
diff --git a/include/Actor/Navi/ActorWisdomNavi.hpp b/include/Actor/Navi/ActorWisdomNavi.hpp
new file mode 100644
index 00000000..fb6d2641
--- /dev/null
+++ b/include/Actor/Navi/ActorWisdomNavi.hpp
@@ -0,0 +1,15 @@
+#pragma once
+
+#include "Actor/Navi/ActorNaviBase.hpp"
+
+class ActorWisdomNavi : public ActorNaviBase {
+public:
+ static ActorType gType;
+
+ /* 000 (base) */
+ /* 294 */
+
+ /* b4 */ virtual FairyId GetFairyId() override;
+
+ static ActorWisdomNavi *Create();
+};
diff --git a/include/Debug/DebugHierarchyBase.hpp b/include/Debug/DebugHierarchyBase.hpp
index 37c0242f..ca1e0eb7 100644
--- a/include/Debug/DebugHierarchyBase.hpp
+++ b/include/Debug/DebugHierarchyBase.hpp
@@ -24,9 +24,10 @@ public:
/* 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);
+ /* 34 */ virtual bool GetChildNode(unk32 param1, const char *description, u32 parent, s32 *param4, unk32 param5,
+ unk32 param6, unk32 param7, unk32 param8);
/* 38 */ virtual void vfunc_38();
- /* 3c */ virtual void vfunc_3c();
+ /* 3c */ virtual void vfunc_3c(unk32 param1, void *param2);
/* 40 */
DebugHierarchyBase();
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index 00a9e52e..37f22457 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -20,15 +20,6 @@ extern "C" {
#define MAX_AMMO_UPGRADE 2
#define MAX_UNK_0BA 9
-typedef s32 FairyId;
-enum FairyId_ {
- FairyId_None = -1,
- FairyId_Courage = 0,
- FairyId_Power = 1,
- FairyId_Wisdom = 2,
- FairyId_COUNT = 3,
-};
-
typedef u32 ItemModelId;
enum ItemModelId_ {
ItemModelId_OshusSword, // swA
diff --git a/include/Item/ItemModelLoader.hpp b/include/Item/ItemModelLoader.hpp
index 6b06893a..3eb3e157 100644
--- a/include/Item/ItemModelLoader.hpp
+++ b/include/Item/ItemModelLoader.hpp
@@ -27,3 +27,5 @@ public:
static void Create();
static void Destroy();
};
+
+extern ItemModelLoader *gItemModelLoader;
diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp
index c92060a3..4c061620 100644
--- a/include/Map/MapBase.hpp
+++ b/include/Map/MapBase.hpp
@@ -113,8 +113,7 @@ public:
/* 188 */ unk8 mUnk_188[0x14];
/* 19c */ unk32 mUnk_19c;
/* 1a0 */ unk8 mUnk_1a0[0xc];
- /* 1ac */ s16 mUnk_1ac;
- /* 1ae */ unk8 mUnk_1ae[2];
+ /* 1ac */ unk32 mUnk_1ac;
/* 1b0 */
/* 00 */ virtual ~MapBase();
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index 5fdbcabf..91e958d8 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -210,7 +210,7 @@ public:
unk8 func_ov00_0208499c();
unk8 func_ov00_020849c0();
unk8 func_ov00_020849dc();
- static bool func_ov00_020849f8(unk32 param_1);
+ bool func_ov00_020849f8();
unk8 func_ov00_02084a50();
void SpawnNPC(Vec3p *param_2, unk32 param_3, unk32 param_4);
bool func_ov00_02084ac4(u32 actorId);
diff --git a/include/Map/MapOverworld.hpp b/include/Map/MapOverworld.hpp
new file mode 100644
index 00000000..482b3ad1
--- /dev/null
+++ b/include/Map/MapOverworld.hpp
@@ -0,0 +1,75 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Map/MapBase.hpp"
+#include "Render/ModelRender.hpp"
+#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
+
+class MapOverworld_Unk1 : public UnkStruct_ov000_020c0c08 {
+public:
+ /* 00 (base) */
+ /* 24 */
+
+ MapOverworld_Unk1(u32 param1, u8 *param2, unk32 param3);
+};
+
+class MapOverworld : public MapBase {
+public:
+ /* 000 (base) */
+ /* 1b0 */ void *mUnk_1b0;
+ /* 1b4 */ unk8 mUnk_1b4;
+ /* 1b5 */ unk8 mUnk_1b5;
+ /* 1b6 */ unk8 mUnk_1b6;
+ /* 1b7 */ unk8 mUnk_1b7;
+ /* 1b8 */ u8 mUnk_1b8;
+ /* 1b9 */ unk8 mUnk_1b9;
+ /* 1ba */ unk8 mUnk_1ba;
+ /* 1bb */ unk8 mUnk_1bb;
+ /* 1bc */ s32 mUnk_1bc;
+ /* 1c0 */ ModelRender *mUnk_1c0;
+ /* 1c4 */ void *mUnk_1c4;
+ /* 1c8 */ void *mUnk_1c8;
+ /* 1cc */ unk8 mUnk_1cc;
+ /* 1cd */ unk8 mUnk_1cd;
+ /* 1ce */ unk8 mUnk_1ce[0x2];
+ /* 1d0 */ unk32 mUnk_1d0;
+ /* 1d4 */ unk32 mUnk_1d4;
+ /* 1d8 */ s16 mUnk_1d8;
+ /* 1da */ s16 mUnk_1da;
+ /* 1dc */
+
+ /* 00 */ virtual ~MapOverworld() override;
+ /* 08 */ virtual void vfunc_08(u32 param_2, u32 param_3, Course *param_4) override;
+ /* 14 */ virtual void vfunc_14() override;
+ /* 1c */ virtual void vfunc_1c(bool param_2) override;
+ /* 20 */ virtual void vfunc_20(s32 param_2) override;
+ /* 2c */ virtual void vfunc_2c() override;
+ /* 4c */ virtual void vfunc_4c() override;
+ /* 54 */ virtual unk32 vfunc_54() override;
+ /* 58 */ virtual unk32 vfunc_58() override;
+ /* 5c */ virtual unk32 vfunc_5c() override;
+ /* 60 */ virtual unk32 vfunc_60() override;
+ /* 64 */ virtual unk32 vfunc_64() override;
+ /* 78 */ virtual unk32 vfunc_78() override;
+ /* 7c */ virtual unk32 vfunc_7c() override;
+ /* 80 */ virtual unk32 vfunc_80() override;
+ /* 94 */ virtual void vfunc_94() override;
+ /* 98 */ virtual void vfunc_98() override;
+ /* a4 */ virtual unk32 vfunc_a4() override;
+ /* b0 */ virtual unk8 vfunc_b0(unk32 param_2, unk32 param_3) override;
+ /* bc */ virtual void vfunc_bc() override;
+ /* c0 */ virtual void vfunc_c0() override;
+ /* c4 */
+
+ MapOverworld(u32 width, u32 height);
+ void func_ov018_0215bfc8();
+ u32 func_ov018_0215c34c();
+ u32 func_ov018_0215c368();
+ s32 func_ov018_0215c380(u8 *param1);
+ void func_ov018_0215c650();
+ void func_ov018_0215c6ac();
+ void func_ov018_0215c6d0();
+ void func_ov018_0215c9ac();
+};
diff --git a/include/Player/LinkStateBase.hpp b/include/Player/LinkStateBase.hpp
index bca6c796..14f4603d 100644
--- a/include/Player/LinkStateBase.hpp
+++ b/include/Player/LinkStateBase.hpp
@@ -14,13 +14,13 @@
typedef unk32 LinkStateId;
enum LinkStateId_ {
- LinkStateId_Move = 0,
- LinkStateId_Item = 1,
- LinkStateId_Grab = 2,
- LinkStateId_Unk3 = 3,
- LinkStateId_Unk4 = 4,
- LinkStateId_Damage = 5,
- LinkStateId_ItemGet = 6,
+ LinkStateId_Move = 0,
+ LinkStateId_Item = 1,
+ LinkStateId_Interact = 2,
+ LinkStateId_Follow = 3,
+ LinkStateId_Roll = 4,
+ LinkStateId_Damage = 5,
+ LinkStateId_Cutscene = 6,
LinkStateId_COUNT
};
@@ -60,7 +60,7 @@ public:
void func_ov00_020a81b8(unk32 param1, unk32 param2);
LinkStateItem *GetLinkItemState();
void LookAt(Vec3p *target);
- void func_ov00_020a81fc();
+ void func_ov00_020a81fc(Vec3p *param1, unk32 param2);
void AddHealth(s16 amount);
void func_ov00_020a8224(unk32 param1);
void TurnTo(s16 angle, unk32 param2, unk32 speed);
@@ -82,7 +82,7 @@ public:
void Clear_PlayerLinkBase_Unk48(u16 flags);
void func_ov00_020a8680(unk32 param1, unk16 param2, bool param3);
void PlayerLinkBase_func_ov00_020bccc8();
- bool PlayerLinkBase_vfunc_58();
+ bool PlayerLinkBase_vfunc_58(unk32 param1, ActorRef *param2);
bool func_ov00_020a8704(s16 *pAngle);
bool func_ov00_020a8774(Vec3p *param1, s32 angle);
void func_ov00_020a8844(Vec3p *param1, bool param2, bool param3);
@@ -90,7 +90,7 @@ public:
void func_ov00_020a8994();
void func_ov00_020a89bc(unk32 param1, unk32 param2);
void func_ov00_020a8a08(unk32 param1);
- void func_ov00_020a8a4c(unk32 param1, unk32 param2);
+ void func_ov00_020a8a4c(const void *param1, unk32 param2);
void func_ov00_020a8a90(unk32 param1);
void func_ov00_020a8ab0(unk32 param1);
void func_ov00_020a8ad0(unk32 param1);
@@ -152,6 +152,6 @@ public:
void func_ov005_021113c4(bool param1);
};
-LinkStateBase *GetLinkState(s32 index);
+LinkStateBase *GetLinkState(LinkStateId index);
extern LinkStateBase **gLinkStates;
diff --git a/include/Player/LinkStateDamage.hpp b/include/Player/LinkStateDamage.hpp
index 0e3a70a7..02e2c526 100644
--- a/include/Player/LinkStateDamage.hpp
+++ b/include/Player/LinkStateDamage.hpp
@@ -8,6 +8,7 @@
#include "Render/ModelRender.hpp"
class LinkStateDamage : public LinkStateBase {
+public:
/* 00 (base) */
/* 0c */ void *mUnk_0c;
/* 10 */ unk32 mUnk_10;
diff --git a/include/Player/LinkStateMove.hpp b/include/Player/LinkStateMove.hpp
index 9b369e9c..a782b22d 100644
--- a/include/Player/LinkStateMove.hpp
+++ b/include/Player/LinkStateMove.hpp
@@ -7,13 +7,16 @@
class LinkStateMove : public LinkStateBase {
public:
+ static unk32 data_ov000_020e56f0;
+
/* 00 (base) */
/* 0c */ s32 mUnk_0c;
/* 10 */ unk16 mUnk_10;
/* 12 */ unk16 mUnk_12;
/* 14 */ bool mUnk_14;
- /* 14 */ bool mUnk_15;
- /* 16 */ unk8 mUnk_16[2];
+ /* 15 */ bool mUnk_15;
+ /* 16 */ bool mUnk_16;
+ /* 17 */ bool mUnk_17;
/* 18 */
/* 00 */ virtual void vfunc_00() override;
diff --git a/include/Player/PlayerBase.hpp b/include/Player/PlayerBase.hpp
index b08e71a4..744ff464 100644
--- a/include/Player/PlayerBase.hpp
+++ b/include/Player/PlayerBase.hpp
@@ -29,7 +29,7 @@ public:
/* 0c */ virtual bool CanMove();
/* 10 */ virtual void vfunc_10(Cylinder *param1) = 0;
/* 14 */ virtual void vfunc_14(Cylinder *param1) = 0;
- /* 18 */ virtual void vfunc_18() = 0;
+ /* 18 */ virtual bool vfunc_18(s32 param1) = 0;
/* 1c */ virtual void Init() = 0;
/* 20 */ virtual void vfunc_20() = 0;
/* 24 */ virtual void UpdatePos() = 0;
@@ -48,8 +48,8 @@ public:
void SetUpdatePos(bool updatePos);
void SetVisible(bool visible);
- EquipSword *GetEquipSword();
- EquipShield *GetEquipShield();
+ static EquipSword *GetEquipSword();
+ static EquipShield *GetEquipShield();
void LookAt(Vec3p *target);
bool func_ov00_020a7c00(s32 param1);
bool CollidesWith(Cylinder *cylinder);
diff --git a/include/Player/PlayerLinkBase.hpp b/include/Player/PlayerLinkBase.hpp
index 2a208365..b5bf77ed 100644
--- a/include/Player/PlayerLinkBase.hpp
+++ b/include/Player/PlayerLinkBase.hpp
@@ -50,7 +50,7 @@ public:
/* 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;
+ /* 18 */ virtual bool vfunc_18(s32 param1) override;
/* 1c */ virtual void Init() override;
/* 20 */ virtual void vfunc_20() override;
/* 24 */ virtual void UpdatePos() override;
diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp
index 1301e144..8970c032 100644
--- a/include/Player/TouchControl.hpp
+++ b/include/Player/TouchControl.hpp
@@ -5,6 +5,8 @@
#include "nds/math.h"
#include "types.h"
+extern u16 *data_0207aecc;
+
typedef u16 TouchFlags;
enum TouchFlag_ {
TouchFlag_TouchedNow = 0x0001,
@@ -42,9 +44,11 @@ public:
void Update(TouchState *state, u16 speed);
bool func_ov00_0207aeac();
void UpdateConditionally(TouchState *state, u16 speed);
- void func_ov00_0207af38(u16 speed, bool param2);
+ void func_ov00_0207af38(u16 speedIncrease, bool shouldIncrease);
~TouchControl();
static bool func_0202b864(Vec3p *param1, s32 size, unk8 param3);
static bool func_0202b894(Vec3p *param1, s32 size, unk8 param3);
};
+
+void Fill16(int value, unsigned short *dst, int size); // TODO: Replace with header file
diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp
index b076cd73..0484fba8 100644
--- a/include/Save/AdventureFlags.hpp
+++ b/include/Save/AdventureFlags.hpp
@@ -104,19 +104,19 @@ public:
bool func_ov00_02097bcc();
bool func_ov00_02097bcc(s32 param2);
s32 func_ov00_02097c08();
- bool Get_FlagsUnk_30_Flag(int index);
- unk8 Get_FlagsUnk_49(int index);
- unk8 Get_FlagsUnk_48(int index);
- unk8 Get_FlagsUnk_4a(int index);
- unk16 Get_FlagsUnk_42(int index);
- unk16 Get_FlagsUnk_40(int index);
- unk32 Get_FlagsUnk_38(int index);
- unk32 Get_FlagsUnk_34(int index);
- unk32 Get_FlagsUnk_44(int index);
- static unk32 Get_FlagsUnk_30(int index);
- static bool Get_FlagsUnk_00(int index, FlagsUnk2 *result);
- bool Get_FlagsUnk_18(int index, FlagsUnk2 *result);
- FlagsUnk *Get_FlagsUnk(int index);
+ bool Get_FlagsUnk_30_Flag(s32 index);
+ u8 Get_FlagsUnk_49(s32 index);
+ u8 Get_FlagsUnk_48(s32 index);
+ u8 Get_FlagsUnk_4a(s32 index);
+ u16 Get_FlagsUnk_42(s32 index);
+ u16 Get_FlagsUnk_40(s32 index);
+ unk32 Get_FlagsUnk_38(s32 index);
+ unk32 Get_FlagsUnk_34(s32 index);
+ unk32 Get_FlagsUnk_44(s32 index);
+ static unk32 Get_FlagsUnk_30(s32 index);
+ static bool Get_FlagsUnk_00(s32 index, FlagsUnk2 *result);
+ bool Get_FlagsUnk_18(s32 index, FlagsUnk2 *result);
+ FlagsUnk *Get_FlagsUnk(s32 index);
bool func_ov00_02097e6c();
bool func_ov00_02097e7c();
bool func_ov00_02097ea4();
diff --git a/include/System/OverlayManager.hpp b/include/System/OverlayManager.hpp
index 636208fc..42118b57 100644
--- a/include/System/OverlayManager.hpp
+++ b/include/System/OverlayManager.hpp
@@ -2,73 +2,137 @@
#include "types.h"
+#include <nds/overlay.h>
+
#include "Item/Item.hpp"
+EXTERN_OVERLAY_ID(0);
+EXTERN_OVERLAY_ID(1);
+EXTERN_OVERLAY_ID(2);
+EXTERN_OVERLAY_ID(3);
+EXTERN_OVERLAY_ID(4);
+EXTERN_OVERLAY_ID(5);
+EXTERN_OVERLAY_ID(6);
+EXTERN_OVERLAY_ID(7);
+EXTERN_OVERLAY_ID(8);
+EXTERN_OVERLAY_ID(9);
+EXTERN_OVERLAY_ID(10);
+EXTERN_OVERLAY_ID(11);
+EXTERN_OVERLAY_ID(12);
+EXTERN_OVERLAY_ID(13);
+EXTERN_OVERLAY_ID(14);
+EXTERN_OVERLAY_ID(15);
+EXTERN_OVERLAY_ID(16);
+EXTERN_OVERLAY_ID(17);
+EXTERN_OVERLAY_ID(18);
+EXTERN_OVERLAY_ID(19);
+EXTERN_OVERLAY_ID(20);
+EXTERN_OVERLAY_ID(21);
+EXTERN_OVERLAY_ID(22);
+EXTERN_OVERLAY_ID(23);
+EXTERN_OVERLAY_ID(24);
+EXTERN_OVERLAY_ID(25);
+EXTERN_OVERLAY_ID(26);
+EXTERN_OVERLAY_ID(27);
+EXTERN_OVERLAY_ID(28);
+EXTERN_OVERLAY_ID(29);
+EXTERN_OVERLAY_ID(30);
+EXTERN_OVERLAY_ID(31);
+EXTERN_OVERLAY_ID(32);
+EXTERN_OVERLAY_ID(33);
+EXTERN_OVERLAY_ID(34);
+EXTERN_OVERLAY_ID(35);
+EXTERN_OVERLAY_ID(36);
+EXTERN_OVERLAY_ID(37);
+EXTERN_OVERLAY_ID(38);
+EXTERN_OVERLAY_ID(39);
+EXTERN_OVERLAY_ID(40);
+EXTERN_OVERLAY_ID(41);
+EXTERN_OVERLAY_ID(42);
+EXTERN_OVERLAY_ID(43);
+EXTERN_OVERLAY_ID(44);
+EXTERN_OVERLAY_ID(45);
+EXTERN_OVERLAY_ID(46);
+EXTERN_OVERLAY_ID(47);
+EXTERN_OVERLAY_ID(48);
+EXTERN_OVERLAY_ID(49);
+EXTERN_OVERLAY_ID(50);
+EXTERN_OVERLAY_ID(51);
+EXTERN_OVERLAY_ID(52);
+EXTERN_OVERLAY_ID(53);
+EXTERN_OVERLAY_ID(54);
+EXTERN_OVERLAY_ID(55);
+EXTERN_OVERLAY_ID(56);
+EXTERN_OVERLAY_ID(57);
+EXTERN_OVERLAY_ID(58);
+EXTERN_OVERLAY_ID(59);
+EXTERN_OVERLAY_ID(60);
+EXTERN_OVERLAY_ID(61);
+
typedef u32 OverlayId;
-enum OverlayId_ {
- OverlayId_Core,
- OverlayId_01,
- OverlayId_02,
- OverlayId_03,
- OverlayId_Memory,
- OverlayId_05,
- OverlayId_06,
- OverlayId_07,
- OverlayId_08,
- OverlayId_09,
- OverlayId_10,
- OverlayId_11,
- OverlayId_12,
- OverlayId_13,
- OverlayId_Land,
- OverlayId_15,
- OverlayId_16,
- OverlayId_17,
- OverlayId_18,
- OverlayId_19,
- OverlayId_20,
- OverlayId_21,
- OverlayId_22,
- OverlayId_23,
- OverlayId_24,
- OverlayId_25,
- OverlayId_26,
- OverlayId_27,
- OverlayId_28,
- OverlayId_29,
- OverlayId_30,
- OverlayId_31,
- OverlayId_32,
- OverlayId_33,
- OverlayId_34,
- OverlayId_35,
- OverlayId_36,
- OverlayId_37,
- OverlayId_38,
- OverlayId_39,
- OverlayId_40,
- OverlayId_41,
- OverlayId_42,
- OverlayId_43,
- OverlayId_44,
- OverlayId_45,
- OverlayId_46,
- OverlayId_47,
- OverlayId_48,
- OverlayId_49,
- OverlayId_50,
- OverlayId_51,
- OverlayId_52,
- OverlayId_PlayerBoomerang,
- OverlayId_PlayerScoop,
- OverlayId_PlayerBomb,
- OverlayId_PlayerBow,
- OverlayId_PlayerRope,
- OverlayId_PlayerBombchu,
- OverlayId_PlayerHammer,
- OverlayId_60,
- OverlayId_61,
-};
+#define OverlayId_None -1
+#define OverlayId_Core OVERLAY_ID(0)
+#define OverlayId_01 OVERLAY_ID(1)
+#define OverlayId_02 OVERLAY_ID(2)
+#define OverlayId_03 OVERLAY_ID(3)
+#define OverlayId_Memory OVERLAY_ID(4)
+#define OverlayId_05 OVERLAY_ID(5)
+#define OverlayId_06 OVERLAY_ID(6)
+#define OverlayId_07 OVERLAY_ID(7)
+#define OverlayId_08 OVERLAY_ID(8)
+#define OverlayId_09 OVERLAY_ID(9)
+#define OverlayId_10 OVERLAY_ID(10)
+#define OverlayId_11 OVERLAY_ID(11)
+#define OverlayId_12 OVERLAY_ID(12)
+#define OverlayId_13 OVERLAY_ID(13)
+#define OverlayId_Land OVERLAY_ID(14)
+#define OverlayId_15 OVERLAY_ID(15)
+#define OverlayId_16 OVERLAY_ID(16)
+#define OverlayId_17 OVERLAY_ID(17)
+#define OverlayId_18 OVERLAY_ID(18)
+#define OverlayId_19 OVERLAY_ID(19)
+#define OverlayId_20 OVERLAY_ID(20)
+#define OverlayId_21 OVERLAY_ID(21)
+#define OverlayId_22 OVERLAY_ID(22)
+#define OverlayId_23 OVERLAY_ID(23)
+#define OverlayId_24 OVERLAY_ID(24)
+#define OverlayId_25 OVERLAY_ID(25)
+#define OverlayId_26 OVERLAY_ID(26)
+#define OverlayId_27 OVERLAY_ID(27)
+#define OverlayId_28 OVERLAY_ID(28)
+#define OverlayId_29 OVERLAY_ID(29)
+#define OverlayId_30 OVERLAY_ID(30)
+#define OverlayId_31 OVERLAY_ID(31)
+#define OverlayId_32 OVERLAY_ID(32)
+#define OverlayId_33 OVERLAY_ID(33)
+#define OverlayId_34 OVERLAY_ID(34)
+#define OverlayId_35 OVERLAY_ID(35)
+#define OverlayId_36 OVERLAY_ID(36)
+#define OverlayId_37 OVERLAY_ID(37)
+#define OverlayId_38 OVERLAY_ID(38)
+#define OverlayId_39 OVERLAY_ID(39)
+#define OverlayId_40 OVERLAY_ID(40)
+#define OverlayId_41 OVERLAY_ID(41)
+#define OverlayId_42 OVERLAY_ID(42)
+#define OverlayId_43 OVERLAY_ID(43)
+#define OverlayId_44 OVERLAY_ID(44)
+#define OverlayId_45 OVERLAY_ID(45)
+#define OverlayId_46 OVERLAY_ID(46)
+#define OverlayId_47 OVERLAY_ID(47)
+#define OverlayId_48 OVERLAY_ID(48)
+#define OverlayId_49 OVERLAY_ID(49)
+#define OverlayId_50 OVERLAY_ID(50)
+#define OverlayId_51 OVERLAY_ID(51)
+#define OverlayId_52 OVERLAY_ID(52)
+#define OverlayId_PlayerBoomerang OVERLAY_ID(53)
+#define OverlayId_PlayerScoop OVERLAY_ID(54)
+#define OverlayId_PlayerBomb OVERLAY_ID(55)
+#define OverlayId_PlayerBow OVERLAY_ID(56)
+#define OverlayId_PlayerRope OVERLAY_ID(57)
+#define OverlayId_PlayerBombchu OVERLAY_ID(58)
+#define OverlayId_PlayerHammer OVERLAY_ID(59)
+#define OverlayId_60 OVERLAY_ID(60)
+#define OverlayId_61 OVERLAY_ID(61)
typedef u32 OverlayIndex;
enum OverlayIndex_ {
diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp
index 5fe84a89..2e5ea7b6 100644
--- a/include/Unknown/UnkStruct_02037750.hpp
+++ b/include/Unknown/UnkStruct_02037750.hpp
@@ -31,7 +31,7 @@ public:
/* 34 */
UnkStruct_02037750(unk32 param1, unk32 param2);
- LinkStateInteract *GetLinkStateInteract();
+ static LinkStateInteract *GetLinkStateInteract();
void func_020385d0(s32 param1, unk32 *param2);
};
diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp
new file mode 100644
index 00000000..69054538
--- /dev/null
+++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp
@@ -0,0 +1,21 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "System/SysNew.hpp"
+#include "Unknown/UnkStruct_0202e1a0.hpp"
+
+class UnkStruct_ov000_020c0c08 : public SysObject {
+public:
+ /* 00 (vtable) */
+ /* 04 */ unk32 mUnk_04;
+ /* 08 */ u8 *mUnk_08;
+ /* 0c */ UnkStruct_0202e1a0 mUnk_0c;
+ /* 24 */
+
+ /* 00 */ virtual ~UnkStruct_ov000_020c0c08();
+ /* 08 */
+
+ UnkStruct_ov000_020c0c08(unk32 param1, u8 *param2);
+};