From b44496319d3027a625fcf876cf22e467720355df Mon Sep 17 00:00:00 2001 From: Aetias <144526980+AetiasHax@users.noreply.github.com> Date: Mon, 4 May 2026 22:07:42 +0200 Subject: ActorShopItem 98% (#151) * ActorShopItem 93% * Fix build * Add missing symbols to usa * Document BMG message ID functions * Create bmg.py for inspecting BMG files * ActorShopItem 98% * Match func_ov031_0217dfec * Port reloc changes to usa * Make `ModelRender::GetLcdcAddress` non-const --- include/Actor/ActorShopItem.hpp | 240 +++++++++++++++++---------- include/Actor/ActorTypeId.hpp | 19 ++- include/DTCM/UnkStruct_027e0f64.hpp | 14 +- include/Message/BMG.hpp | 2 + include/Message/MsgProc.hpp | 2 +- include/Save/AdventureFlags.hpp | 9 + include/System/SysNew.hpp | 2 - include/Unknown/UnkStruct_027e0dbc.hpp | 1 + include/Unknown/UnkStruct_ov000_020c0c08.hpp | 7 +- include/lib/files.hpp | 17 +- include/types.h | 1 + 11 files changed, 207 insertions(+), 107 deletions(-) (limited to 'include') diff --git a/include/Actor/ActorShopItem.hpp b/include/Actor/ActorShopItem.hpp index 2c27a854..5d2e8d55 100644 --- a/include/Actor/ActorShopItem.hpp +++ b/include/Actor/ActorShopItem.hpp @@ -1,18 +1,52 @@ #pragma once +#include "Item/Item.hpp" #include "global.h" #include "types.h" #include "Actor/Actor.hpp" #include "Actor/ActorType.hpp" +#include "Render/ModelRender.hpp" +#include "System/SysNew.hpp" + +typedef u32 ShopItem; +enum ShopItem_ { + ShopItem_Unk = -1, + ShopItem_Test = 0, + ShopItem_SoldOut = 1, + ShopItem_Bombs = 2, + ShopItem_Arrows = 3, + ShopItem_Bombchus = 4, + ShopItem_HeartContainer = 5, + ShopItem_BombBag = 6, + ShopItem_Quiver = 7, + ShopItem_BombchuBag = 8, + ShopItem_ShipPart = 9, + ShopItem_Treasure = 10, + ShopItem_CourageGem = 11, + ShopItem_PowerGem = 12, + ShopItem_WisdomGem = 13, + ShopItem_Shield = 14, + ShopItem_RedPotion = 15, + ShopItem_PurplePotion = 16, + ShopItem_YellowPotion = 17, + ShopItem_BASE_COUNT = ShopItem_YellowPotion + 1, + ShopItem_LargeBombBag = 18, + ShopItem_LargeQuiver = 19, + ShopItem_LargeBombchuBag = 20, + ShopItem_COUNT_WITH_UPGRADES = ShopItem_LargeBombchuBag + 1, + ShopItem_Ship = 21, + ShopItem_Ship2 = 22, + ShopItem_FULL_COUNT = ShopItem_Ship2 + 1, +}; class ActorShopItemBase : public Actor { public: /* 000 (base) */ - /* 158 */ unk32 mUnk_158; - /* 15c */ unk8 mUnk_15c; - /* 15d */ unk8 mUnk_15d; - /* 15e */ unk8 mUnk_15e; + /* 158 */ ShopItem mShopItemId; + /* 15c */ bool mUnk_15c; + /* 15d */ bool mUnk_15d; + /* 15e */ bool mUnk_15e; /* 160 */ /* 00 */ virtual ~ActorShopItemBase() override; @@ -29,40 +63,39 @@ public: class ActorShopItem : public ActorShopItemBase { public: /* 000 (base) */ - /* 160 */ unk32 mUnk_160; - /* 164 */ unk32 mUnk_164; - /* 168 */ unk16 mUnk_168; - /* 16a */ unk16 mUnk_16a; - /* 16c */ unk16 mUnk_16c; - /* 16e */ unk16 mUnk_16e; - /* 170 */ unk16 mUnk_170; - /* 172 */ unk16 mUnk_172; - /* 174 */ unk8 mUnk_174; - /* 175 */ unk8 mUnk_175; + /* 160 */ ModelRender *mModel; + /* 164 */ ItemId mItemId; + /* 168 */ u16 mUnk_168; + /* 16a */ u16 mUnk_16a; + /* 16c */ u16 mUnk_16c; + /* 16e */ u16 mUnk_16e; + /* 170 */ u16 mUnk_170; + /* 172 */ u16 mUnk_172; + /* 174 */ bool mUnk_174; + /* 175 */ bool mUnk_175; /* 178 */ /* 00 */ virtual ~ActorShopItem() override; /* 08 */ virtual bool Init() override; /* 14 */ virtual void vfunc_14(u32 param1) override; /* 20 */ virtual void vfunc_20(bool param1) override; - /* bc */ virtual unk32 vfunc_bc() = 0; + /* bc */ virtual unk32 GetMessageId() = 0; /* c0 */ virtual unk32 vfunc_c0(); /* c4 */ virtual void vfunc_c4(); /* c8 */ virtual void vfunc_c8(); /* cc */ virtual void vfunc_cc(); - /* d0 */ virtual unk32 vfunc_d0() = 0; + /* d0 */ virtual bool vfunc_d0() = 0; /* d4 */ virtual void vfunc_d4(); - /* d8 */ virtual unk32 vfunc_d8(); - /* dc */ virtual unk32 vfunc_dc(); - /* e0 */ virtual unk32 vfunc_e0(); + /* d8 */ virtual u32 GetPitch(); + /* dc */ virtual u32 GetYaw(); + /* e0 */ virtual s32 GetPrice(); /* e4 */ ActorShopItem(); void func_ov031_0217f0b4(); - void func_ov031_0217f114(); void func_ov031_0217f120(); - unk32 func_ov031_0217f868(); + unk32 GetSoldOutMessageId(); }; class ActorShopItemDM : public ActorShopItem { @@ -75,8 +108,8 @@ public: /* 00 */ virtual ~ActorShopItemDM() override; /* 08 */ virtual bool Init() override; /* 20 */ virtual void vfunc_20(bool param1) override; - /* bc */ virtual unk32 vfunc_bc() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* bc */ virtual unk32 GetMessageId() override; + /* d0 */ virtual bool vfunc_d0() override; /* d4 */ virtual void vfunc_d4() override; /* e4 */ @@ -92,8 +125,8 @@ public: /* 00 */ virtual ~ActorShopItemSoldOut() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* bc */ virtual unk32 GetMessageId() override; + /* d0 */ virtual bool vfunc_d0() override; /* d4 */ virtual void vfunc_d4() override; /* e4 */ @@ -109,11 +142,10 @@ public: /* 00 */ virtual ~ActorShopItemHeartContainer() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; - /* d4 */ virtual void vfunc_d4() override; - /* e0 */ virtual unk32 vfunc_e0() override; + /* d0 */ virtual bool vfunc_d0() override; + /* e0 */ virtual s32 GetPrice() override; /* e4 */ static ActorShopItemHeartContainer *Create(); @@ -128,100 +160,100 @@ public: /* 00 */ virtual ~ActorShopItemArrows() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ static ActorShopItemArrows *Create(); }; -class ActorShopItemBombs : public ActorShopItem { +class ActorShopItemQuiver : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ /* 178 */ - /* 00 */ virtual ~ActorShopItemBombs() override; + /* 00 */ virtual ~ActorShopItemQuiver() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ - static ActorShopItemBombs *Create(); + static ActorShopItemQuiver *Create(); }; -class ActorShopItemBombchus : public ActorShopItem { +class ActorShopItemBombs : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ /* 178 */ - /* 00 */ virtual ~ActorShopItemBombchus() override; + /* 00 */ virtual ~ActorShopItemBombs() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ - static ActorShopItemBombchus *Create(); + static ActorShopItemBombs *Create(); }; -class ActorShopItemQuiver : public ActorShopItem { +class ActorShopItemBombBag : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ /* 178 */ - /* 00 */ virtual ~ActorShopItemQuiver() override; + /* 00 */ virtual ~ActorShopItemBombBag() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ - static ActorShopItemQuiver *Create(); + static ActorShopItemBombBag *Create(); }; -class ActorShopItemBombBag : public ActorShopItem { +class ActorShopItemBombchus : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ /* 178 */ - /* 00 */ virtual ~ActorShopItemBombBag() override; + /* 00 */ virtual ~ActorShopItemBombchus() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ - static ActorShopItemBombBag *Create(); + static ActorShopItemBombchus *Create(); }; -class ActorShopItemB2 : public ActorShopItem { +class ActorShopItemBombchuBag : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ /* 178 */ - /* 00 */ virtual ~ActorShopItemB2() override; + /* 00 */ virtual ~ActorShopItemBombchuBag() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ - static ActorShopItemB2 *Create(); + static ActorShopItemBombchuBag *Create(); }; -struct ActorShopItemCollectable_Unk1 { +struct ActorShopItemCollectable_Unk1 : public SysObject { /* 00 */ unk32 mUnk_00; /* 04 */ unk32 mUnk_04; /* 08 */ unk32 mUnk_08; @@ -234,60 +266,62 @@ struct ActorShopItemCollectable_Unk1 { /* 24 */ unk8 mUnk_24; /* 25 */ unk8 mUnk_25; /* 28 */ + + ActorShopItemCollectable_Unk1(); + ~ActorShopItemCollectable_Unk1(); + + void func_ov000_02079f5c(unk32, unk32, unk32, unk32, u8, unk32); }; -class ActorShopItemTreasure : public ActorShopItem { +class ActorShopItemShipPart : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ - /* 178 */ ActorShopItemCollectable_Unk1 *mUnk_178; - /* 17c */ unk32 mUnk_17c; - /* 180 */ + /* 178 */ ModelRender *mUnk_178; + /* 17c */ ActorShopItemCollectable_Unk1 *mUnk_17c; + /* 180 */ unk32 mUnk_180; + /* 184 */ - /* 00 */ virtual ~ActorShopItemTreasure() override; + /* 00 */ virtual ~ActorShopItemShipPart() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 20 */ virtual void vfunc_20(bool param1) override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* d4 */ virtual void vfunc_d4() override; - /* e0 */ virtual unk32 vfunc_e0() override; + /* e0 */ virtual s32 GetPrice() override; /* e4 */ - static ActorShopItemTreasure *Create(); - ActorShopItemTreasure(); + static ActorShopItemShipPart *Create(); + ActorShopItemShipPart(); unk32 func_ov031_02180248(); unk32 func_ov031_02180260(); - unk32 func_ov031_02180278(); }; -class ActorShopItemShipPart : public ActorShopItem { +class ActorShopItemTreasure : public ActorShopItem { public: static ActorType gType; /* 000 (base) */ - /* 178 */ unk32 mUnk_178; - /* 17c */ ActorShopItemCollectable_Unk1 *mUnk_17c; - /* 180 */ unk32 mUnk_180; - /* 184 */ + /* 178 */ ActorShopItemCollectable_Unk1 *mUnk_178; + /* 17c */ unk32 mUnk_17c; + /* 180 */ - /* 00 */ virtual ~ActorShopItemShipPart() override; + /* 00 */ virtual ~ActorShopItemTreasure() override; /* 08 */ virtual bool Init() override; - /* 14 */ virtual void vfunc_14(u32 param1) override; - /* 20 */ virtual void vfunc_20(bool param1) override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* d4 */ virtual void vfunc_d4() override; - /* e0 */ virtual unk32 vfunc_e0() override; + /* e0 */ virtual s32 GetPrice() override; /* e4 */ - static ActorShopItemShipPart *Create(); - ActorShopItemShipPart(); + static ActorShopItemTreasure *Create(); + ActorShopItemTreasure(); - unk32 func_ov031_02180248(); - unk32 func_ov031_02180260(); unk32 func_ov031_02180278(); }; @@ -300,9 +334,9 @@ public: /* 00 */ virtual ~ActorShopItemGem() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ static ActorShopItemGem *Create(); @@ -317,9 +351,9 @@ public: /* 00 */ virtual ~ActorShopItemShield() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; + /* d0 */ virtual bool vfunc_d0() override; /* e4 */ static ActorShopItemShield *Create(); @@ -334,10 +368,10 @@ public: /* 00 */ virtual ~ActorShopItemPotion() override; /* 08 */ virtual bool Init() override; - /* bc */ virtual unk32 vfunc_bc() override; + /* bc */ virtual unk32 GetMessageId() override; /* c4 */ virtual void vfunc_c4() override; - /* d0 */ virtual unk32 vfunc_d0() override; - /* e0 */ virtual unk32 vfunc_e0() override; + /* d0 */ virtual bool vfunc_d0() override; + /* e0 */ virtual s32 GetPrice() override; /* e4 */ static ActorShopItemPotion *Create(); @@ -347,16 +381,21 @@ class ActorShopItemUnk : public ActorShopItemBase { public: /* 000 (base) */ /* 160 */ unk32 mUnk_160; - /* 164 */ unk8 mUnk_164; + /* 164 */ bool mUnk_164; /* 168 */ - /* 00 */ virtual ~ActorShopItemUnk() override; + /* 00 */ virtual ~ActorShopItemUnk(); /* 08 */ virtual bool Init() override; /* 14 */ virtual void vfunc_14(u32 param1) override; + /* 1c */ virtual void vfunc_1c(u16 *param1) override = 0; /* 20 */ virtual void vfunc_20(bool param1) override; + /* b4 */ virtual bool vfunc_b4() override = 0; + /* b8 */ virtual bool vfunc_b8() override = 0; /* bc */ ActorShopItemUnk(); + + void func_ov031_02180418(); }; class ActorShopItemBK : public ActorShopItemUnk { @@ -407,3 +446,20 @@ public: static ActorShopItemBY *Create(); ActorShopItemBY(); }; + +struct UnkStruct_ov031_02183e80 { + /* 000 */ PAD(0x000, 0x01c); + /* 01c */ u32 mUnk_01c[2]; + /* 024 */ u32 mUnk_024[2]; + /* 02c */ u32 mUnk_02c[2]; + /* 034 */ PAD(0x34, 0x38); + /* 038 */ u32 mUnk_038[1]; // at least 1, unclear how many + /* 03c */ PAD(0x03c, 0x178); + /* 178 */ Vec3p mUnk_178; + /* 184 */ PAD(0x184, 0x19a); + /* 19a */ u8 mUnk_19a; + /* 19b */ + + bool func_ov031_0217bd80(); + bool func_ov031_0217cec0(); +}; diff --git a/include/Actor/ActorTypeId.hpp b/include/Actor/ActorTypeId.hpp index e7e7132f..b0c6a5ee 100644 --- a/include/Actor/ActorTypeId.hpp +++ b/include/Actor/ActorTypeId.hpp @@ -14,16 +14,23 @@ enum ActorTypeId_ { ActorTypeId_TreasureMap = 'TMAP', ActorTypeId_DigSpot = 'DGTG', - ActorTypeId_ShopItemBombchus = 'ITBT', - ActorTypeId_ShopItemBombs = 'ITBM', - ActorTypeId_ShopItemTreasure = 'ITTR', - ActorTypeId_ShopItemHeartContainer = 'ITHU', ActorTypeId_ShopItemQuiver = 'ITAP', + ActorTypeId_ShopItemArrows = 'ITAR', + ActorTypeId_ShopItemBombchuBag = 'ITB2', ActorTypeId_ShopItemBombBag = 'ITBB', - ActorTypeId_ShopItemRedPotion = 'ITPB', - ActorTypeId_ShopItemCourageGem = 'ITSR', + ActorTypeId_ShopItemBK = 'ITBK', + ActorTypeId_ShopItemBombs = 'ITBM', + ActorTypeId_ShopItemBombchus = 'ITBT', + ActorTypeId_ShopItemBY = 'ITBY', + ActorTypeId_ShopItemCC = 'ITCC', + ActorTypeId_ShopItemDM = 'ITDM', + ActorTypeId_ShopItemHeartContainer = 'ITHU', + ActorTypeId_ShopItemPotion = 'ITPB', ActorTypeId_ShopItemShield = 'ITSL', ActorTypeId_ShopItemSoldOut = 'ITSO', + ActorTypeId_ShopItemShipPart = 'ITSP', + ActorTypeId_ShopItemGem = 'ITSR', + ActorTypeId_ShopItemTreasure = 'ITTR', ActorTypeId_RefillArrows = 'FLAL', ActorTypeId_RefillBombs = 'FLBM', diff --git a/include/DTCM/UnkStruct_027e0f64.hpp b/include/DTCM/UnkStruct_027e0f64.hpp index 9a0bdd36..755ba5bd 100644 --- a/include/DTCM/UnkStruct_027e0f64.hpp +++ b/include/DTCM/UnkStruct_027e0f64.hpp @@ -3,11 +3,21 @@ #include "global.h" #include "types.h" +#include + #include "Player/Bhio.hpp" struct UnkStruct_027e0f64_04 { - /* 000 */ u8 pad[0x1B4 - 0x00]; + /* 000 */ PAD(0x000, 0x01c); + /* 01c */ Mat4x3p mUnk_01c; + /* 04c */ PAD(0x04c, 0x1b4); /* 1b4 */ unk32 mUnk_1b4; + /* 1b8 */ PAD(0x1b8, 0x260); + /* 260 */ Vec3p mUnk_260; + /* 26c */ Vec3p mUnk_26c; + /* 278 */ + + bool func_01ffe468(Vec3p *param2, s32 *param3, s32 *param4, bool param5); }; class UnkStruct_027e0f64 { @@ -19,7 +29,7 @@ public: void func_ov000_0208ae94(); void func_ov000_0208b13c(); - unk32 func_ov000_0208b180(); + UnkStruct_027e0f64_04 *func_ov000_0208b180(); }; extern UnkStruct_027e0f64 *data_027e0f64; diff --git a/include/Message/BMG.hpp b/include/Message/BMG.hpp index ac0c183f..6ef203e3 100644 --- a/include/Message/BMG.hpp +++ b/include/Message/BMG.hpp @@ -10,6 +10,8 @@ #define BMG_GET_MSG_ADDR(pGroups, flags) \ ((u32) (pGroups)->entries[(flags) >> 0x10].pDAT1 + (BMG_GET_MSG_OFFSET((pGroups), (flags)) & ~1)) +#define BMG_ID(file, entry) (((file) << 0x10) | (entry)) + enum BMGTag { /* "INF1" */ BMG_TAG_INF1 = '1FNI', /* "FLW1" */ BMG_TAG_FLW1 = '1WLF', diff --git a/include/Message/MsgProc.hpp b/include/Message/MsgProc.hpp index 0615dee8..dc10f91f 100644 --- a/include/Message/MsgProc.hpp +++ b/include/Message/MsgProc.hpp @@ -125,7 +125,7 @@ public: unk32 func_ov000_0207bc48(); void func_ov000_0207bc9c(); }; -extern UnkClass_027e0e28 *data_027e0e28; +extern UnkClass_027e0e28 data_027e0e28; extern unk32 *data_ov009_0211f5b4; extern "C" unk32 func_ov003_020f3f94(unk32 *); extern "C" void func_ov003_020f4060(unk32 **); diff --git a/include/Save/AdventureFlags.hpp b/include/Save/AdventureFlags.hpp index 72c7f0f1..f4c550a0 100644 --- a/include/Save/AdventureFlags.hpp +++ b/include/Save/AdventureFlags.hpp @@ -25,6 +25,15 @@ enum AdventureFlag_ { /* 0x0030 */ AdventureFlag_Cannon = FLAG(1, 16), /* 0x0033 */ AdventureFlag_RegalNecklace = FLAG(1, 19), + /* 0x0067 */ AdventureFlag_Unk_103 = FLAG(3, 7), + /* 0x0068 */ AdventureFlag_Unk_104 = FLAG(3, 8), + /* 0x0069 */ AdventureFlag_Unk_105 = FLAG(3, 9), + /* 0x006A */ AdventureFlag_Unk_106 = FLAG(3, 10), + /* 0x006B */ AdventureFlag_Unk_107 = FLAG(3, 11), + /* 0x006C */ AdventureFlag_Unk_108 = FLAG(3, 12), + /* 0x006D */ AdventureFlag_Unk_109 = FLAG(3, 13), + /* 0x0071 */ AdventureFlag_Unk_113 = FLAG(3, 17), + /* 0x007A */ AdventureFlag_CourageCrest = FLAG(3, 26), /* 0x007D */ AdventureFlag_Azurine = FLAG(3, 29), /* 0x007E */ AdventureFlag_Crimsonine = FLAG(3, 30), diff --git a/include/System/SysNew.hpp b/include/System/SysNew.hpp index e488166b..f1696089 100644 --- a/include/System/SysNew.hpp +++ b/include/System/SysNew.hpp @@ -17,8 +17,6 @@ void SysDelete(void *ptr); void *func_0202e99c(s32 length); void *func_0202e9bc(s32 length); -extern u32 *data_027e0ce0[]; - class SysObject { public: static void *operator new(size_t length, u32 *id, u32 idLength); diff --git a/include/Unknown/UnkStruct_027e0dbc.hpp b/include/Unknown/UnkStruct_027e0dbc.hpp index 0c816fd7..a5697c80 100644 --- a/include/Unknown/UnkStruct_027e0dbc.hpp +++ b/include/Unknown/UnkStruct_027e0dbc.hpp @@ -28,6 +28,7 @@ public: void func_ov000_0207b988(GameModeId modeId); unk32 func_ov003_020f3d5c(unk32 param1); + void func_ov003_020f3d74(unk32 param1); }; extern UnkStruct_027e0dbc data_027e0dbc; diff --git a/include/Unknown/UnkStruct_ov000_020c0c08.hpp b/include/Unknown/UnkStruct_ov000_020c0c08.hpp index 2e16bed3..ed19553c 100644 --- a/include/Unknown/UnkStruct_ov000_020c0c08.hpp +++ b/include/Unknown/UnkStruct_ov000_020c0c08.hpp @@ -19,7 +19,12 @@ struct UnkStruct_ov000_020c0c08_04 { /* 20 */ }; -class ItemModel; +class ItemModel { + /* 00 */ unk32 mUnk_00; + /* 04 */ unk32 mUnk_04; + /* 08 */ unk32 mUnk_08; + /* 0c */ +}; class UnkStruct_ov000_020c0c08 : public SysObject { public: diff --git a/include/lib/files.hpp b/include/lib/files.hpp index 78b435f4..e58feb21 100644 --- a/include/lib/files.hpp +++ b/include/lib/files.hpp @@ -1,5 +1,6 @@ #pragma once +#include "System/SysNew.hpp" #include "global.h" #include "types.h" @@ -7,13 +8,14 @@ struct FileEntry_Unk8 { /* 00 */ unk8 mUnk_00[0x8]; /* 08 */ u16 mUnk_08; /* 0a */ u16 mUnk_0a; - /* 0c */ // more fields, probably + /* 0c */ u16 mUnk_0c; + /* 10 */ // more fields, probably }; -class FileEntry { +class FileEntry : public SysObject { public: /* 00 (vtable) */ - /* 04 */ char *path; + /* 04 */ const char *path; /* 08 */ FileEntry_Unk8 *mUnk_08; /* 0c */ unk32 mUnk_0c; /* 10 */ @@ -23,6 +25,11 @@ public: /* 0c */ virtual void vfunc_0c() = 0; /* 10 */ virtual u32 vfunc_10(u32 param1) = 0; /* 14 */ + + FileEntry(const char *path) : + path(path), + mUnk_08(NULL), + mUnk_0c(0) {} }; class FileEntryFlag : public FileEntry { @@ -36,4 +43,8 @@ public: /* 0c */ virtual void vfunc_0c() override; /* 10 */ virtual u32 vfunc_10(u32 param1) override; /* 14 */ + + FileEntryFlag(const char *path) : + FileEntry(path), + mUnk_10(0) {} }; diff --git a/include/types.h b/include/types.h index b5ca70bb..bcdc63b0 100644 --- a/include/types.h +++ b/include/types.h @@ -36,5 +36,6 @@ typedef s32 bool; #define CEIL_DIV(a, b) (((a) + (b) - 1) / (b)) #define UNK_PTR unk32 * +#define PAD(start, end) unk8 pad_##start[end - start] #endif -- cgit v1.2.3