diff options
| author | Aetias <144526980+AetiasHax@users.noreply.github.com> | 2025-08-29 20:01:10 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-29 20:01:10 +0200 |
| commit | cb52c8c23f5de5ba8509f9471025b4fa995e3b65 (patch) | |
| tree | 81523e43f3f948a47110db7bcb55bc96c60cdf05 /include | |
| parent | be02098914d37fda7796a39d0c8332c2ab88c235 (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')
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(); +}; |
