summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorAetias <144526980+AetiasHax@users.noreply.github.com>2025-08-29 20:01:10 +0200
committerGitHub <noreply@github.com>2025-08-29 20:01:10 +0200
commitcb52c8c23f5de5ba8509f9471025b4fa995e3b65 (patch)
tree81523e43f3f948a47110db7bcb55bc96c60cdf05 /include
parentbe02098914d37fda7796a39d0c8332c2ab88c235 (diff)
ActorNavi (#132)
* Map symbol in Game * ActorNavi 93% * ActorNavi_04 96% * Document Actor fields * Move MAX_KEYS to ItemManager * Move gTouchControl to its own header * Fix missing includes * Fix regressions * Fix build * Update decompiling guide images * Fix regression
Diffstat (limited to 'include')
-rw-r--r--include/Actor/Actor.hpp24
-rw-r--r--include/Actor/ActorType.hpp94
-rw-r--r--include/Actor/ActorTypeId.hpp96
-rw-r--r--include/Actor/Dungeon/ActorActionObject.hpp1
-rw-r--r--include/Actor/Navi/ActorForceNavi.hpp1
-rw-r--r--include/Actor/Navi/ActorNavi.hpp46
-rw-r--r--include/Actor/Navi/ActorNaviBase.hpp66
-rw-r--r--include/Actor/Navi/ActorWisdomNavi.hpp1
-rw-r--r--include/Actor/Player/ActorBomb.hpp2
-rw-r--r--include/DTCM/UnkStruct_027e0f6c.hpp3
-rw-r--r--include/Item/ItemManager.hpp1
-rw-r--r--include/Map/Course.hpp2
-rw-r--r--include/Map/MapBase.hpp2
-rw-r--r--include/Map/MapManager.hpp2
-rw-r--r--include/Message/MsgProc.hpp1
-rw-r--r--include/Physics/Cylinder.hpp5
-rw-r--r--include/Player/TouchControl.hpp1
-rw-r--r--include/Render/ModelRender.hpp4
-rw-r--r--include/Unknown/UnkStruct_02037750.hpp10
-rw-r--r--include/Unknown/UnkStruct_02057200.hpp10
-rw-r--r--include/Unknown/UnkStruct_ov000_020b7d74.hpp14
-rw-r--r--include/Unknown/UnkStruct_ov000_020beba8.hpp4
-rw-r--r--include/Unknown/UnkStruct_ov000_020c0c08.hpp2
-rw-r--r--include/Unknown/UnkStruct_ov000_020d18f4.hpp25
24 files changed, 268 insertions, 149 deletions
diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp
index 77a943a4..2ce19ac8 100644
--- a/include/Actor/Actor.hpp
+++ b/include/Actor/Actor.hpp
@@ -3,10 +3,10 @@
#include "global.h"
#include "types.h"
-#include "nds/math.h"
+#include <nds/math.h>
#include "Actor/ActorRef.hpp"
-#include "Actor/ActorType.hpp"
+#include "Actor/ActorTypeId.hpp"
#include "Actor/FilterActorBase.hpp"
#include "Physics/Cylinder.hpp"
#include "Physics/Transform.hpp"
@@ -60,8 +60,7 @@ struct Actor_UnkStruct_0a4 {
/* 01 */ bool mUnk_01;
/* 02 */ bool mUnk_02;
/* 03 */ bool mUnk_03;
- /* 04 */ Vec3p mUnk_04;
- /* 10 */ s32 mUnk_10;
+ /* 04 */ Cylinder mUnk_04;
/* 14 */
Actor_UnkStruct_0a4(q20 x, q20 y, q20 z, s32 unk_10);
@@ -126,20 +125,23 @@ public:
/* 08c */ Cylinder mUnk_08c;
/* 09c */ Actor_UnkStruct_09c mUnk_09c;
/* 0a4 */ Actor_UnkStruct_0a4 mUnk_0a4;
- /* 0b8 */ unk8 mUnk_0b8[0x24];
+ /* 0b8 */ Vec3p mUnk_0b8; // same as position for some actors
+ /* 0c4 */ unk8 mUnk_0c4[0x18];
/* 0dc */ u16 mUnk_0dc;
/* 0de */ u16 mUnk_0de;
/* 0e0 */ u16 mUnk_0e0;
/* 0e2 */ u16 mUnk_0e2;
/* 0e4 */ unk16 mUnk_0e4;
- /* 0e6 */ unk8 mUnk_0e6[0x20];
+ /* 0e6 */ unk8 mUnk_0e6[0x1a];
+ /* 100 */ void *mUnk_100;
+ /* 104 */ unk16 mUnk_104;
/* 106 */ unk8 mUnk_106;
/* 107 */ unk8 mUnk_107;
/* 108 */ unk8 mUnk_108;
/* 109 */ unk8 mUnk_109;
/* 10a */ unk8 mUnk_10a[0x6];
- /* 110 */ bool mUnk_110;
- /* 111 */ bool mUnk_111;
+ /* 110 */ bool mTouchingWall;
+ /* 111 */ bool mTouchingFloor;
/* 112 */ bool mUnk_112;
/* 113 */ bool mUnk_113;
/* 114 */ unk8 mUnk_114;
@@ -149,7 +151,7 @@ public:
/* 118 */ bool mAlive;
/* 119 */ u8 mUnk_119;
/* 11a */ bool mVisible;
- /* 11b */ bool mUnk_11b;
+ /* 11b */ bool mGrabbed;
/* 11c */ unk8 mUnk_11c;
/* 11d */ bool mUnk_11d;
/* 11e */ q4 mYOffset;
@@ -194,8 +196,8 @@ public:
/* 4c */ virtual bool vfunc_4c(unk32 *param1);
/* 50 */ virtual Vec3p *GetPos();
/* 54 */ virtual void vfunc_54();
- /* 58 */ virtual bool SetUnk_11b();
- /* 5c */ virtual bool SetVelocity(Vec3p *vel);
+ /* 58 */ virtual bool Grab();
+ /* 5c */ virtual bool Drop(Vec3p *vel);
/* 60 */ virtual bool vfunc_60();
/* 64 */ virtual void vfunc_64();
/* 68 */ virtual void vfunc_68();
diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp
index b5ba6685..cb9e840c 100644
--- a/include/Actor/ActorType.hpp
+++ b/include/Actor/ActorType.hpp
@@ -3,97 +3,8 @@
#include "global.h"
#include "types.h"
-typedef u32 ActorTypeId;
-enum ActorTypeId_ {
- 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_RefillArrows = 'FLAL',
- ActorTypeId_RefillBombs = 'FLBM',
- ActorTypeId_RefillBombchus = 'FLBT',
- ActorTypeId_RefillTime = 'FLTM',
- ActorTypeId_Heart = 'HART',
- ActorTypeId_LSTM = 'LSTM',
- ActorTypeId_Rupee = 'RUPY',
-
- ActorTypeId_Arrow = 'ARRW',
- ActorTypeId_Blast = 'BLST',
- ActorTypeId_Bomb = 'BOMB',
- ActorTypeId_Bombchu = 'BMTY',
- 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_ActionObject = 'ACOB',
-
- 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_EVIC = 'EVIC',
- ActorTypeId_FLAL = 'FLAL',
- ActorTypeId_FLBM = 'FLBM',
- ActorTypeId_FLBT = 'FLBT',
- ActorTypeId_FLTB = 'FLTB',
- ActorTypeId_FLTM = 'FLTM',
- ActorTypeId_FORC = 'FORC',
- ActorTypeId_PWBS = 'PWBS',
- ActorTypeId_SBEM = 'SBEM',
- ActorTypeId_STNE = 'STNE',
- ActorTypeId_TARU = 'TARU',
- ActorTypeId_TSBH = 'TSBH',
- ActorTypeId_TSUB = 'TSUB',
- ActorTypeId_VLR0 = 'VLR0',
-};
+#include "Actor/Actor.hpp"
+#include "Actor/ActorTypeId.hpp"
class ActorType_UnkClass {
public:
@@ -106,7 +17,6 @@ public:
mUnk_4(unk_04) {}
};
-class Actor;
typedef Actor *(*ActorCreateFunc)();
struct ActorType {
diff --git a/include/Actor/ActorTypeId.hpp b/include/Actor/ActorTypeId.hpp
new file mode 100644
index 00000000..9f5925b5
--- /dev/null
+++ b/include/Actor/ActorTypeId.hpp
@@ -0,0 +1,96 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+typedef u32 ActorTypeId;
+enum ActorTypeId_ {
+ 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_RefillArrows = 'FLAL',
+ ActorTypeId_RefillBombs = 'FLBM',
+ ActorTypeId_RefillBombchus = 'FLBT',
+ ActorTypeId_RefillTime = 'FLTM',
+ ActorTypeId_Heart = 'HART',
+ ActorTypeId_LSTM = 'LSTM',
+ ActorTypeId_Rupee = 'RUPY',
+
+ ActorTypeId_Arrow = 'ARRW',
+ ActorTypeId_Blast = 'BLST',
+ ActorTypeId_Bomb = 'BOMB',
+ ActorTypeId_Bombchu = 'BMTY',
+ 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_ActionObject = 'ACOB',
+
+ 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_EVIC = 'EVIC',
+ ActorTypeId_FLAL = 'FLAL',
+ ActorTypeId_FLBM = 'FLBM',
+ ActorTypeId_FLBT = 'FLBT',
+ ActorTypeId_FLTB = 'FLTB',
+ ActorTypeId_FLTM = 'FLTM',
+ ActorTypeId_FORC = 'FORC',
+ ActorTypeId_PWBS = 'PWBS',
+ ActorTypeId_SBEM = 'SBEM',
+ ActorTypeId_STNE = 'STNE',
+ ActorTypeId_TARU = 'TARU',
+ ActorTypeId_TSBH = 'TSBH',
+ ActorTypeId_TSUB = 'TSUB',
+ ActorTypeId_VLR0 = 'VLR0',
+};
diff --git a/include/Actor/Dungeon/ActorActionObject.hpp b/include/Actor/Dungeon/ActorActionObject.hpp
index c4e2add3..b984491c 100644
--- a/include/Actor/Dungeon/ActorActionObject.hpp
+++ b/include/Actor/Dungeon/ActorActionObject.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "Actor/Actor.hpp"
+#include "Actor/ActorType.hpp"
class ActorActionObject : public Actor {
public:
diff --git a/include/Actor/Navi/ActorForceNavi.hpp b/include/Actor/Navi/ActorForceNavi.hpp
index 18a124f4..d2fad08b 100644
--- a/include/Actor/Navi/ActorForceNavi.hpp
+++ b/include/Actor/Navi/ActorForceNavi.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include "Actor/ActorType.hpp"
#include "Actor/Navi/ActorNaviBase.hpp"
class ActorForceNavi : public ActorNaviBase {
diff --git a/include/Actor/Navi/ActorNavi.hpp b/include/Actor/Navi/ActorNavi.hpp
index 44027971..4dbad5fe 100644
--- a/include/Actor/Navi/ActorNavi.hpp
+++ b/include/Actor/Navi/ActorNavi.hpp
@@ -1,6 +1,8 @@
#pragma once
+#include "Actor/ActorType.hpp"
#include "Actor/Navi/ActorNaviBase.hpp"
+#include "Unknown/UnkStruct_02057200.hpp"
#include "Unknown/UnkStruct_ov000_020beba8.hpp"
#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
@@ -10,34 +12,50 @@ public:
/* c */
/* 00 */ virtual ~UnkStruct_ov000_020b8110() override;
- /* 08 */ virtual void vfunc_08(unk16 *param1) override;
+ /* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1) override;
/* 14 */ virtual bool vfunc_14(u16 *param1) override;
- /* 18 */ virtual void vfunc_18(s32 *param1) override;
+ /* 18 */ virtual bool vfunc_18(s32 *param1) override;
/* 1c */
UnkStruct_ov000_020b8110();
};
+class ActorNavi_Unk_334 {
+public:
+ /* 00 */ Vec3p mUnk_00;
+ /* 0c */
+
+ inline ActorNavi_Unk_334() {
+ mUnk_00.x = 0;
+ mUnk_00.y = 0;
+ mUnk_00.z = 0;
+ }
+};
+
class ActorNavi : public ActorNaviBase {
public:
static ActorType gType;
/* 000 (base) */
/* 294 */ ModelRender mUnk_294;
- /* 2f0 */ UnkStruct_ov000_020c0c08 mUnk_2f0;
- /* 314 */ UnkStruct_ov000_020c0c08_04 mUnk_314;
- /* 334 */ Vec3p mUnk_334;
+ /* 2f0 */ ActorNaviBase_Unk2 mUnk_2f0;
+ /* 334 */ ActorNavi_Unk_334 mUnk_334;
/* 340 */ unk16 mUnk_340;
- /* 342 */ unk8 mUnk_342[0x2];
- /* 344 */ u32 mUnk_344;
+ /* 342 (padding) */
+ /* 344 */ q20 mUnk_344;
/* 348 */ unk32 mUnk_348;
- /* 34c */ unk8 mUnk_34c[0x38];
+ /* 34c */ ActorNaviBase_Unk1 mUnk_34c[4];
+ /* 35c */ unk8 mUnk_35c[0x28];
/* 384 */ Mat3p mUnk_384;
/* 3a8 */ unk8 mUnk_3a8[0xC];
/* 3b4 */ EquipHammer *mHammer;
- /* 3b8 */ unk32 mUnk_3b8;
- /* 3bc */ unk32 mUnk_3bc;
- /* 3c0 */ u8 mUnk_3c0[0x8];
+ /* 3b8 */ UnkStruct_02057200 mUnk_3b8;
+ /* 3c0 */ u8 mUnk_3c0;
+ /* 3c1 */ u8 mUnk_3c1;
+ /* 3c2 */ u8 mUnk_3c2;
+ /* 3c2 */ u8 mUnk_3c3;
+ /* 3c4 */ u16 mUnk_3c4;
+ /* 3c6 */ u16 mUnk_3c6;
/* 3c8 */
/* 00 */ virtual ~ActorNavi() override;
@@ -47,8 +65,8 @@ public:
/* 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;
+ /* c4 */ virtual u16 vfunc_c4() override;
+ /* c8 */ virtual u16 vfunc_c8() override;
/* cc */ virtual bool vfunc_cc(unk32 *param1) override;
/* d0 */ virtual void vfunc_d0() override;
/* d4 */ virtual void vfunc_d4() override;
@@ -64,7 +82,7 @@ public:
bool func_ov059_0219933c(u32 param1);
void func_ov059_0219a0ac();
- void func_ov059_0219aa08();
+ void func_ov059_0219aa08(bool param1);
void func_ov059_0219aba8(u32 param1);
bool func_ov059_0219af14();
bool func_ov059_0219afc4();
diff --git a/include/Actor/Navi/ActorNaviBase.hpp b/include/Actor/Navi/ActorNaviBase.hpp
index 4427853a..4434c1ff 100644
--- a/include/Actor/Navi/ActorNaviBase.hpp
+++ b/include/Actor/Navi/ActorNaviBase.hpp
@@ -6,6 +6,8 @@
#include "Actor/Actor.hpp"
#include "Player/EquipHammer.hpp"
#include "Render/ModelRender.hpp"
+#include "Unknown/UnkStruct_ov000_020b7d74.hpp"
+#include "Unknown/UnkStruct_ov000_020d18f4.hpp"
typedef s32 FairyId;
enum FairyId_ {
@@ -16,34 +18,62 @@ enum FairyId_ {
FairyId_COUNT = 3,
};
-class ActorNaviBase_Unk1 {};
+class ActorNaviBase_Unk1 : public UnkStruct_ov000_020b7d74 {
+public:
+ ActorNaviBase_Unk1();
+};
+
+class ActorNaviBase_Unk2 : public UnkStruct_ov000_020c0c08 {
+public:
+ /* 00 (base) */
+ /* 24 */ UnkStruct_ov000_020c0c08_04 mUnk_24;
+ /* 44 */
+
+ /* 00 */ virtual ~ActorNaviBase_Unk2() override;
+ /* 08 */
+
+ inline ActorNaviBase_Unk2(ItemModel *model) :
+ UnkStruct_ov000_020c0c08(&mUnk_24, model) {}
+ inline ActorNaviBase_Unk2(NsAnimation *param2, ItemModel *model) :
+ UnkStruct_ov000_020c0c08(&mUnk_24, model) {
+ this->func_ov000_020c0c44(param2);
+ }
+};
+
+class ActorNaviBase_Unk3 : public ModelRender {
+public:
+ /* 00 */ virtual ~ActorNaviBase_Unk3() {}
+ /* 3c */ virtual void vfunc_3c() override;
+ /* 40 */
+
+ ActorNaviBase_Unk3(ItemModel *param1);
+};
class ActorNaviBase : public Actor {
public:
/* 000 (base) */
/* 158 */ Vec3p mOffsetPos;
/* 164 */ unk32 mUnk_164;
- /* 168 */ ModelRender mUnk_168;
+ /* 168 */ ActorNaviBase_Unk3 mUnk_168;
/* 1c4 */ unk8 mUnk_1c4[0xc];
- /* 1d0 */ void *mUnk_1d0;
- /* 1d4 */ unk8 mUnk_1d4[0x20];
- /* 1f4 */ unk8 mUnk_1f4[0x20];
+ /* 1d0 */ ActorNaviBase_Unk2 mUnk_1d0;
/* 214 */ unk16 mUnk_214;
- /* 216 */ unk8 mUnk_216[0xc];
+ /* 216 */ unk8 mUnk_216[0x2];
+ /* 218 */ ActorNaviBase_Unk1 mUnk_218[2];
+ /* 220 */ unk8 mUnk_220[0x2];
/* 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];
+ /* 224 */ UnkStruct_ov000_020d18f4 mUnk_224;
/* 280 */ unk32 mUnk_280;
/* 284 */ unk32 mUnk_284;
- /* 288 */ unk8 mUnk_288[0x2];
+ /* 288 */ unk8 mUnk_288;
+ /* 288 */ unk8 mUnk_289;
/* 28a */ unk16 mUnk_28a;
- /* 28c */ unk8 mUnk_28c[0x8];
+ /* 28c */ unk8 mUnk_28c;
+ /* 28d */ unk8 mUnk_28d;
+ /* 28e */ unk8 mUnk_28e;
+ /* 28e */ unk8 mUnk_28f;
+ /* 290 */ unk8 mUnk_290;
+ /* 291 */ unk8 mUnk_291;
/* 294 */
/* 00 */ virtual ~ActorNaviBase() override;
@@ -65,8 +95,8 @@ public:
/* 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();
+ /* c4 */ virtual u16 vfunc_c4();
+ /* c8 */ virtual u16 vfunc_c8();
/* cc */ virtual bool vfunc_cc(unk32 *param1);
/* d0 */ virtual void vfunc_d0();
/* d4 */ virtual void vfunc_d4();
diff --git a/include/Actor/Navi/ActorWisdomNavi.hpp b/include/Actor/Navi/ActorWisdomNavi.hpp
index fb6d2641..bf18b5cb 100644
--- a/include/Actor/Navi/ActorWisdomNavi.hpp
+++ b/include/Actor/Navi/ActorWisdomNavi.hpp
@@ -1,5 +1,6 @@
#pragma once
+#include "Actor/ActorType.hpp"
#include "Actor/Navi/ActorNaviBase.hpp"
class ActorWisdomNavi : public ActorNaviBase {
diff --git a/include/Actor/Player/ActorBomb.hpp b/include/Actor/Player/ActorBomb.hpp
index 2c1cd196..38d49a53 100644
--- a/include/Actor/Player/ActorBomb.hpp
+++ b/include/Actor/Player/ActorBomb.hpp
@@ -59,7 +59,7 @@ public:
/* 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;
+ /* 5c */ virtual bool Drop(Vec3p *vel) override;
/* b4 */
static ActorBomb *Create();
diff --git a/include/DTCM/UnkStruct_027e0f6c.hpp b/include/DTCM/UnkStruct_027e0f6c.hpp
index 7608b75b..5124371a 100644
--- a/include/DTCM/UnkStruct_027e0f6c.hpp
+++ b/include/DTCM/UnkStruct_027e0f6c.hpp
@@ -3,6 +3,8 @@
#include "global.h"
#include "types.h"
+#include <nds/math.h>
+
class UnkStruct_027e0f6c_Unk_1 {
public:
/* 00 */ unk32 mUnk_00;
@@ -49,6 +51,7 @@ struct UnkStruct_027e0f6c {
/* 00 */ unk8 mUnk_00[0x20];
/* 20 */ UnkStruct_027e0f6c_20 *mUnk_20;
+ static void func_ov000_02093a1c(u32 *param_1, UnkStruct_027e0f6c *param_2, u16 param_3);
void func_ov004_02102770();
};
diff --git a/include/Item/ItemManager.hpp b/include/Item/ItemManager.hpp
index 2f552bb5..5f632a2e 100644
--- a/include/Item/ItemManager.hpp
+++ b/include/Item/ItemManager.hpp
@@ -20,6 +20,7 @@ extern "C" {
#define MAX_HOURGLASS_SECONDS 1500 // 25 minutes
#define MAX_AMMO_UPGRADE 2
#define MAX_UNK_0BA 9
+#define MAX_KEYS 8
typedef u32 ItemModelId;
enum ItemModelId_ {
diff --git a/include/Map/Course.hpp b/include/Map/Course.hpp
index 2cbf8387..b64a3ef3 100644
--- a/include/Map/Course.hpp
+++ b/include/Map/Course.hpp
@@ -9,8 +9,6 @@
#include "Physics/AABB.hpp"
#include "System/SysNew.hpp"
-#define MAX_KEYS 8
-
typedef unk32 CourseType;
enum CourseType_ {
CourseType_Normal = 0,
diff --git a/include/Map/MapBase.hpp b/include/Map/MapBase.hpp
index 8decca85..ac64e596 100644
--- a/include/Map/MapBase.hpp
+++ b/include/Map/MapBase.hpp
@@ -142,7 +142,7 @@ public:
/* 64 */ virtual unk32 vfunc_64();
/* 68 */ virtual unk32 vfunc_68(Vec3p *param_1, bool param_2);
/* 6c */ virtual unk8 vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4);
- /* 70 */ virtual unk32 vfunc_70(Vec3p *param_2);
+ /* 70 */ virtual u16 vfunc_70(Vec3p *param_2);
/* 74 */ virtual unk32 *vfunc_74(Vec3p *param_2);
/* 78 */ virtual unk32 *vfunc_78(TilePos *param_1);
/* 7c */ virtual s32 vfunc_7c(s32 param_1, unk32 *param_2, s32 param_3, short param_4[4]);
diff --git a/include/Map/MapManager.hpp b/include/Map/MapManager.hpp
index 56888ab1..37b6ce13 100644
--- a/include/Map/MapManager.hpp
+++ b/include/Map/MapManager.hpp
@@ -268,7 +268,7 @@ public:
s32 func_ov00_02083ef8(Vec3p *param_2, Vec3p *param_3, bool param_4);
unk32 func_ov00_02083f44(Vec3p *param_2, bool param_3);
unk8 MapData_vfunc_6c(Vec3p *param_2, unk32 *param_3, Vec3p *param_4);
- unk32 MapData_vfunc_70(Vec3p *param_2);
+ u16 MapData_vfunc_70(Vec3p *param_2);
static void func_ov00_02083fb0(u32 *param_1, MapManager *param_2, Vec3p *param_3);
void GetTileWorldBounds(TilePos *tile, AABB *tileBounds);
unk32 MapData_vfunc_54(TilePos *a);
diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp
index 97cf46e9..0615dee8 100644
--- a/include/Message/MsgProc.hpp
+++ b/include/Message/MsgProc.hpp
@@ -119,7 +119,6 @@ extern "C" void func_020347b0(unk32, unk16, unk32 *, unk32 *, unk32, unk32);
extern THUMB unk32 func_0202ab48(void);
extern "C" void func_02034984(unk32, u8, unk32, unk32);
extern "C" void func_02034698(unk32, unk32, unk32 *, unk32 *);
-extern struct TouchControl gTouchControl;
class UnkClass_027e0e28 {
public:
diff --git a/include/Physics/Cylinder.hpp b/include/Physics/Cylinder.hpp
index 9fb50ef2..89e78467 100644
--- a/include/Physics/Cylinder.hpp
+++ b/include/Physics/Cylinder.hpp
@@ -18,6 +18,11 @@ struct Cylinder {
this->size = size;
}
+ inline void MakeEmpty() {
+ pos = gVec3p_ZERO;
+ size = -1;
+ }
+
bool Overlaps(Cylinder *other);
bool func_ov000_0208f030(Vec3p *param1, Vec3p *param2, s32 param3);
};
diff --git a/include/Player/TouchControl.hpp b/include/Player/TouchControl.hpp
index 989f4791..ee63a3ee 100644
--- a/include/Player/TouchControl.hpp
+++ b/include/Player/TouchControl.hpp
@@ -53,5 +53,6 @@ public:
static bool func_0202b864(Vec3p *param1, s32 size, unk8 param3);
static bool func_0202b894(Vec3p *param1, s32 size, unk8 param3);
};
+extern TouchControl gTouchControl;
extern "C" void Fill16(int value, unsigned short *dst, int size); // TODO: Replace with header file
diff --git a/include/Render/ModelRender.hpp b/include/Render/ModelRender.hpp
index 8c8bd394..8698d5b9 100644
--- a/include/Render/ModelRender.hpp
+++ b/include/Render/ModelRender.hpp
@@ -41,12 +41,12 @@ public:
/* 3c */ virtual void vfunc_3c();
/* 40 */
- ModelRender(unk32 param1);
+ ModelRender(ItemModel *param1);
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_020a9960(void *param1);
void func_ov000_020a9998(unk32 param1, unk32 param2);
void func_ov000_020a99c0();
void func_ov000_020b413c(unk16 param1, Vec3p *param2);
diff --git a/include/Unknown/UnkStruct_02037750.hpp b/include/Unknown/UnkStruct_02037750.hpp
index a480c1a3..493ca6b0 100644
--- a/include/Unknown/UnkStruct_02037750.hpp
+++ b/include/Unknown/UnkStruct_02037750.hpp
@@ -3,9 +3,11 @@
#include "global.h"
#include "types.h"
-#include "Player/LinkStateInteract.hpp"
+#include <nds/math.h>
+
#include "System/SysNew.hpp"
+class LinkStateInteract;
class UnkStruct_020397f8;
typedef unk32 (*UnkStruct_02037750_Callback1)(unk32);
@@ -43,9 +45,9 @@ public:
class UnkStruct_020386d8_24 {
public:
/* 00 */ u8 mUnk_00;
- /* 00 */ u8 mUnk_01;
- /* 00 */ u8 mUnk_02;
- /* 00 */ u8 mUnk_03;
+ /* 01 */ u8 mUnk_01;
+ /* 02 */ u8 mUnk_02;
+ /* 03 */ u8 mUnk_03;
/* 04 */
void func_020376c0(const Vec3p *param_2);
diff --git a/include/Unknown/UnkStruct_02057200.hpp b/include/Unknown/UnkStruct_02057200.hpp
new file mode 100644
index 00000000..48887226
--- /dev/null
+++ b/include/Unknown/UnkStruct_02057200.hpp
@@ -0,0 +1,10 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+struct UnkStruct_02057200 {
+ /* 00 */ unk32 mUnk_00;
+ /* 04 */ unk32 mUnk_04;
+};
+extern UnkStruct_02057200 data_02057200;
diff --git a/include/Unknown/UnkStruct_ov000_020b7d74.hpp b/include/Unknown/UnkStruct_ov000_020b7d74.hpp
new file mode 100644
index 00000000..7e2dd773
--- /dev/null
+++ b/include/Unknown/UnkStruct_ov000_020b7d74.hpp
@@ -0,0 +1,14 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+class UnkStruct_ov000_020b7d74 {
+public:
+ /* 0 */ unk32 mUnk_0;
+ /* 4 */
+
+ inline UnkStruct_ov000_020b7d74() :
+ mUnk_0(0) {}
+ ~UnkStruct_ov000_020b7d74();
+};
diff --git a/include/Unknown/UnkStruct_ov000_020beba8.hpp b/include/Unknown/UnkStruct_ov000_020beba8.hpp
index 4cf4bbbb..fb48e60e 100644
--- a/include/Unknown/UnkStruct_ov000_020beba8.hpp
+++ b/include/Unknown/UnkStruct_ov000_020beba8.hpp
@@ -24,8 +24,8 @@ public:
/* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1);
/* 0c */ virtual void vfunc_0c(unk16 *param1);
/* 10 */ virtual bool vfunc_10(s32 *param1);
- /* 14 */ virtual bool vfunc_14(u16 *param1, s32 param2);
- /* 18 */ virtual void vfunc_18(s32 *param1);
+ /* 14 */ virtual bool vfunc_14(u16 *param1);
+ /* 18 */ virtual bool vfunc_18(s32 *param1);
/* 1c */
UnkStruct_ov000_020beba8(unk32 param1);
diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp
index ec253a46..2e16bed3 100644
--- a/include/Unknown/UnkStruct_ov000_020c0c08.hpp
+++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp
@@ -3,6 +3,8 @@
#include "global.h"
#include "types.h"
+#include <nds/ns.h>
+
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_0202e1a0.hpp"
diff --git a/include/Unknown/UnkStruct_ov000_020d18f4.hpp b/include/Unknown/UnkStruct_ov000_020d18f4.hpp
new file mode 100644
index 00000000..ad2b80df
--- /dev/null
+++ b/include/Unknown/UnkStruct_ov000_020d18f4.hpp
@@ -0,0 +1,25 @@
+#pragma once
+
+#include "global.h"
+#include "types.h"
+
+#include "Actor/ActorRef.hpp"
+#include "Unknown/UnkStruct_02037750.hpp"
+
+class UnkStruct_ov000_020d18f4 : public UnkStruct_02037750 {
+public:
+ /* 00 (base) */
+ /* 20 */ ActorRef mUnk_20;
+ /* 28 */ unk8 mUnk_28[0x18];
+ /* 40 */ void *mUnk_40;
+ /* 44 */ unk32 mUnk_44;
+ /* 48 */ unk32 mUnk_48;
+ /* 4c */ unk32 mUnk_4c;
+ /* 50 */ unk32 mUnk_50;
+ /* 54 */ unk32 mUnk_54;
+ /* 58 */ unk32 mUnk_58;
+ /* 5c */
+
+ UnkStruct_ov000_020d18f4(unk32 param1);
+ ~UnkStruct_ov000_020d18f4();
+};