Decompile overlay 1 (Part 4) (#97)

* UnkStruct_027e095c_001 OK

* UnkStruct_027e095c_001 OK (JP)

* SysNew_001 OK

* SaveManager_001 98%

* UnkStruct_027e09bc_001 OK

* MapObjectManager_001 OK

* ActorManager_001 OK

* remove useless thumb pragmas

* ItemManager_001 OK

* fix regressions

* fix build issues
This commit is contained in:
Yanis
2026-07-02 20:56:08 +02:00
committed by GitHub
parent 66eb66f081
commit f0dfb70749
73 changed files with 1223 additions and 440 deletions
+3 -3
View File
@@ -156,9 +156,9 @@ public:
/* 0C */ virtual unk8 vfunc_0C();
/* 10 */ virtual void vfunc_10(VecFx32 *param1);
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual bool vfunc_18(unk32 param1);
/* 1C */ virtual void vfunc_1C();
/* 20 */ virtual void vfunc_20();
/* 18 */ virtual bool vfunc_18(unk32 param1); // Init?
/* 1C */ virtual void vfunc_1C(); // Setup
/* 20 */ virtual void vfunc_20(); // Update?
/* 24 */ virtual void vfunc_24();
/* 28 */ virtual void vfunc_28();
/* 2C */ virtual void vfunc_2C(unk32 param1);
+2 -1
View File
@@ -26,7 +26,6 @@ public:
/* 4C */ virtual ~ActorUnkPMST() override;
void func_ov077_02159db4(void);
void func_ov077_02159ddc(void);
void func_ov077_02159e14(void);
void func_ov077_02159e40(void);
@@ -47,6 +46,8 @@ public:
void func_ov077_0215aa20(void);
void func_ov077_0215aa44(void);
void func_ov077_0215aa88(void);
static void func_ov077_02159db4(void);
};
class ActorProfileUnkPMST : public ActorProfile_Derived1 {
+2 -1
View File
@@ -26,7 +26,6 @@ public:
/* 4C */ virtual ~ActorUnkPMTT() override;
void func_ov042_0212d8a4(void);
void func_ov042_0212d8cc(void);
void func_ov042_0212d904(void);
void func_ov042_0212d930(void);
@@ -44,6 +43,8 @@ public:
void func_ov042_0212e4d8(void);
void func_ov042_0212e4f8(void);
void func_ov042_0212e53c(void);
static void func_ov042_0212d8a4(void);
};
class ActorProfileUnkPMTT : public ActorProfile {
+2 -2
View File
@@ -94,8 +94,8 @@ enum SceneIndex_ {
/* 75 */ SceneIndex_tekiya05 = 0x4B, // take em all on?
/* 76 */ SceneIndex_tekiya06 = 0x4C, // take em all on?
/* 77 */ SceneIndex_tekiya07 = 0x4D, // take em all on?
/* 78 */ SceneIndex_tekiya08 = 0x4E, // take em all on?
/* 79 */ SceneIndex_tekiya09 = 0x4F, // take em all on?
/* 78 */ SceneIndex_tekiya08 = 0x4E, // take em all on - fire boss
/* 79 */ SceneIndex_tekiya09 = 0x4F, // take em all on - sand boss
/* 80 */ SceneIndex_demo_train = 0x50, // title screen?
/* 81 */ SceneIndex_e3_train = 0x51, // ?
/* 82 */ SceneIndex_e3_dungeon = 0x52, // ?
+1 -1
View File
@@ -33,7 +33,7 @@ public:
/* 04 */ GameModeCreateCallback createCallback;
/* 08 */ GameUnkCallback1 mUnk_08; // seems related to entering and leaving houses/grottos??
/* 0C */ unk32 mFrameCounter;
/* 10 */ SaveSlot *mpSaveSlot;
/* 10 */ GameSaveSlot *mpSaveSlot;
/* 14 */ GameUnkCallback2 mUnk_14; // only set for wireless stuff?
/* 18 */ GameUnkCallback3 mUnk_18; // same as above
/* 1C */ UnkStruct_02049a2c_1C mUnk_1C;
+1
View File
@@ -5,6 +5,7 @@
#define MAX_KEYS 8
#define MAX_TEARS_OF_LIGHT 3
#define MAX_RUPEES 9999
#define CAPACITY_QUIVER_TIER_1 20
#define CAPACITY_QUIVER_TIER_2 30
+104 -19
View File
@@ -54,8 +54,23 @@ public:
bool func_ov031_020db8f8();
};
class ItemManager {
public:
struct InvImportData {
/* 00 */ u32 quiverCapacity : 2;
/* */ u32 bombBagCapacity : 2;
/* */ u32 arrowAmount : 6;
/* */ u32 bombsAmount : 6;
/* */ u32 pad : 12;
/* */ u32 potion1 : 2;
/* */ u32 potion2 : 2;
/* 04 */ u32 flags[2];
/* 0C */ u16 numRupees;
/* 0E */ u16 unk_0E;
/* 10 */ s8 equippedItem;
/* 14 */
};
class Inventory {
private:
/* 00 */ ItemFlag mEquippedItem;
/* 04 */ ItemFlag mForcedItem;
/* 08 */ u32 mFlags[2]; // inventory items bitfield & collection/equipment bitfield
@@ -69,25 +84,47 @@ public:
/* 1A */ u8 mArrowAmount;
/* 1B */ u8 mBombAmount;
/* 1C */ u8 mPotions[MAX_POTIONS];
/* 1E */ unk16 mUnk_1E;
/* 20 */ UnkStruct_ItemManager_20 *mUnk_20;
/* 24 */ unk8 mUnk_24;
/* 24 */ unk8 mUnk_25;
/* 24 */ unk8 mUnk_26;
/* 24 */ unk8 mUnk_27;
/* 28 */
/* 1E */ unk16 mUnk_1E; // pad?
/* 20 */
u8 GetTearsAmount() const {
return this->mTearsAmount;
public:
// clang-format off
const ItemFlag GetCurrentItem() const { return this->mEquippedItem; }
const bool HasItem(int flag) const { return GET_FLAG(this->mFlags, flag); }
const u16 GetNumRupees() const { return this->mNumRupees; }
const u16 GetRestrictions() const { return this->mItemRestrictions; }
const bool HasUnk12(int value) const { return (this->mUnk_12 & value) != 0; }
const bool HasRestriction(int flag) const { return IS_ITEM_RESTRICTED(this->mItemRestrictions, flag); }
const u8 GetTearsAmount() const { return this->mTearsAmount; }
const u8 GetKeyAmount() const { return this->mKeyAmount; }
const UpgradeCapacity GetQuiverCap() const { return this->mQuiverCapacity; }
const UpgradeCapacity GetBombsCap() const { return this->mBombBagCapacity; }
const UpgradeCapacity GetArrowAmount() const { return this->mArrowAmount; }
const UpgradeCapacity GetBombAmount() const { return this->mBombAmount; }
void FlipUnk12(int value) { this->mUnk_12 ^= value; }
// clang-format on
void SetNextQuiverCapacity() {
if (this->mQuiverCapacity < UpgradeCapacity_Tier3) {
this->mQuiverCapacity++;
}
this->mArrowAmount = this->GetQuiverCapacity();
}
u8 GetKeyAmount() const {
return this->mKeyAmount;
void SetNextBombBagCapacity() {
if (this->mBombBagCapacity < UpgradeCapacity_Tier3) {
this->mBombBagCapacity++;
}
this->mBombAmount = this->GetBombBagCapacity();
}
ItemManager();
~ItemManager();
Inventory();
~Inventory();
// overlay 0
void SetFlag(ItemFlag itemFlag);
void ClearFlag(ItemFlag itemFlag);
bool HasRecruitUniform();
@@ -105,8 +142,55 @@ public:
bool HasPurplePotion();
void RemovePurplePotion();
bool PotionSlotsFull();
static UnkStruct_ov000_020afc48 *func_ov000_020a8974(ItemFlag itemFlag);
static ItemFlag GetEquippedItemFlag(ItemId itemId);
// overlay 1
void func_ov001_020bb8bc(const InvImportData *pSrc);
void func_ov001_020bb9f8();
void func_ov001_020bba54();
void func_ov001_020bba6c();
// overlay 96
void func_ov096_02179b20();
// overlay 110
bool func_ov110_02184a40(ItemId itemId);
};
class ItemManager {
private:
/* 00 */ Inventory mInventory;
/* 20 */ UnkStruct_ItemManager_20 *mUnk_20;
/* 24 */ unk8 mUnk_24;
/* 24 */ unk8 mUnk_25;
/* 24 */ unk8 mUnk_26;
/* 24 */ unk8 mUnk_27;
/* 28 */
public:
// clang-format off
Inventory* GetInventory() { return &this->mInventory; }
const Inventory* GetInventory() const { return &this->mInventory; }
const ItemFlag GetCurrentItem() const { return this->GetInventory()->GetCurrentItem(); }
const bool HasItem(int flag) const { return this->GetInventory()->HasItem(flag); }
const u16 GetNumRupees() const { return this->GetInventory()->GetNumRupees(); }
const u16 GetRestrictions() const { return this->GetInventory()->GetRestrictions(); }
const bool HasUnk12(int value) const { return this->GetInventory()->HasUnk12(value); }
const bool HasRestriction(int flag) const { return this->GetInventory()->HasRestriction(flag); }
const u8 GetTearsAmount() const { return this->GetInventory()->GetTearsAmount(); }
const u8 GetKeyAmount() const { return this->GetInventory()->GetKeyAmount(); }
const UpgradeCapacity GetQuiverCap() const { return this->GetInventory()->GetQuiverCap(); }
const UpgradeCapacity GetBombsCap() const { return this->GetInventory()->GetBombsCap(); }
const UpgradeCapacity GetArrowAmount() const { return this->GetInventory()->GetArrowAmount(); }
const UpgradeCapacity GetBombAmount() const { return this->GetInventory()->GetBombAmount(); }
void FlipUnk12(int value) { this->GetInventory()->FlipUnk12(value); }
// clang-format on
ItemManager();
~ItemManager() {}
// overlay 0
void func_ov000_020a89bc();
bool func_ov000_020a89d4();
bool func_ov000_020a8a0c();
@@ -117,9 +201,10 @@ public:
unk32 func_ov000_020a8ab8();
unk32 func_ov000_020a8acc();
void func_ov001_020bb9f8();
static UnkStruct_ov000_020afc48 *func_ov000_020a8974(ItemFlag itemFlag);
static ItemFlag GetEquippedItemFlag(ItemId itemId);
bool func_ov110_02184a40(ItemId itemId);
// overlay 110
static u32 GetBmgIDFromItem(ItemId itemId);
static AdventureFlag GetAdvFlagFromItem(ItemId itemId);
};
+2 -2
View File
@@ -132,8 +132,8 @@ public:
/* 40 */
// data_ov000_020b3590
/* 00 */ virtual bool vfunc_00(); // Init? the newly-created map object is deleted if this returns false
/* 04 */ virtual void vfunc_04();
/* 00 */ virtual bool vfunc_00(); // Init
/* 04 */ virtual void vfunc_04(); // Setup
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
+4 -4
View File
@@ -24,8 +24,8 @@ public:
/* 04 */ MapObject **mMapObjTableEnd;
/* 08 */ MapObject **mUnk_08; // pointer to first available slot?
/* 0C */ s16 **mUnk_0C; // unknown table
/* 10 */ void **mUnk_10; // unknown table end
/* 14 */ void *mUnk_14;
/* 10 */ s16 **mUnk_10; // unknown table end
/* 14 */ s16 *mUnk_14;
/* 18 */ unk16 mUnk_18;
/* 1A */ unk16 mUnk_1A;
/* 1C */ unk16 mUnk_1C;
@@ -47,7 +47,7 @@ public:
// overlay 0
MapObjectId func_ov000_0209c3a8(Vec2bCpp *param1);
void func_ov000_0209c3e8();
void func_ov000_0209c444();
void func_ov000_0209c444(unk32 param1);
MapObject *AllocateMapObject(MapObjectId mapObjId, Vec2b param2, u16 param3, unk32 param4, u8 param5);
static void func_ov000_0209c490();
@@ -59,9 +59,9 @@ public:
void func_ov001_020bada0();
void func_ov001_020badb4();
void func_ov001_020bade0();
void func_ov001_020baea0(Vec2s *param1);
void func_ov001_020bae40(ZeldaObjectList *pObjList);
void func_ov001_020bae6c();
void func_ov001_020baea0(u16 *param1);
void func_ov001_020baf28();
static MapObjectManager *Create();
+2 -1
View File
@@ -26,7 +26,7 @@ public:
/* 10 */ MapObjectId mMapObjId;
/* 14 */ MapObjectId mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1C */ unk8 mUnk_1C;
/* 1C */ u8 mUnk_1C;
/* 1D */ unk8 mUnk_1D;
/* 1E */ u16 mUnk_1E;
/* 20 */
@@ -48,6 +48,7 @@ public:
static unk32 func_ov000_0209c820();
static void func_ov000_0209c8ec(MapObjectProfile *thisx);
void func_ov000_0209c8ec();
};
class MapObjectProfile_Derived1 : public MapObjectProfile {
+8
View File
@@ -332,6 +332,14 @@ struct SaveFile_00000_2600_Data {
/* 80 */
};
struct GameSaveSlot {
/* 0000 */ SaveInfoData mInfoData;
/* 0E00 */ SaveTreasureData mTreasureData;
/* 0E80 */ SaveFile_00000_2600_Data mUnk_2600;
/* 0F00 */ SaveFile_00000_1D00_Data mUnk_1D00;
/* 1300 */
};
class SaveSlot {
public:
/* 0000 */ SaveInfoData mInfoData[COUNT_DATA];
+20 -4
View File
@@ -9,6 +9,7 @@
#include "global.h"
#include "types.h"
#include <nitro/card.h>
#include <nitro/mi.h>
#define SAVE_DATA_SIZE (sizeof(SaveSlot) + sizeof(u8) * NUM_UNK_BLOCKS * SIZE_UNK_BLOCK)
@@ -36,23 +37,37 @@ struct SaveManager_00 {
unk_B78(param1) {}
};
class SaveManager_244 {
public:
/* 00 */ STRUCT_PAD(0x00, 0x7E);
/* 7E */ u16 mUnk_7E;
/* 80 */
SaveManager_244();
};
class SaveManager {
public:
/* 000 */ SaveManager_00 *mUnk_000; // related to mUnk_184, allocated from func_ov001_020ba670
/* 004 */ unk32 mUnk_004;
/* 008 */ STRUCT_PAD(0x08, 0x204);
/* 204 */ unk16 mUnk_204;
/* 206 */ unk16 mUnk_206;
/* 204 */ u16 mCardId;
/* 206 */ s16 mUnk_206; // this is a save slot index?
/* 208 */ unk16 mUnk_208;
/* 20A */ u8 mUnk_20A; // bool?
/* 20B */ unk8 mUnk_20B;
/* 20C */ unk32 mUnk_20C;
/* 20C */ CARDResult mResultCode;
/* 210 */ unk32 mUnk_210;
/* 214 */ unk32 mUnk_214;
/* 218 */ SaveFile *mpSaveFile;
/* 21C */ SaveFile_00000_0000_Data_D9C mUnk_21C;
/* 23C */ PTMF<SaveFile>::PTMFCallback mUnk_23C;
/* 244 */ void *mUnk_244;
/* 244 */ SaveManager_244 *mUnk_244;
/* 248 */
const size_t GetOffset() const {
return mUnk_206 * 0x7A700;
}
bool IsUnk20A() {
return this->mUnk_20A == 0;
@@ -94,6 +109,7 @@ public:
void func_ov019_020d09dc(u16 saveSlotIndex);
void func_ov019_020d0a04(u16 saveSlotIndex);
void func_ov019_020d0ae0(unk32 param1);
void func_ov001_020ba858(void);
static void func_ov019_020d086c(u16 param1);
static void func_ov019_020d0a2c(u16 param1);
+15 -12
View File
@@ -387,21 +387,24 @@ public:
/* 00 */ OverlayIndex mLoadedOverlays[OverlaySlot_COUNT];
/* 48 */
bool IsPlayerSub() {
return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub;
}
// clang-format off
const bool IsTower() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_Tower; }
const bool IsBossDesert() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDesert; }
const bool IsBossDeago() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossDeago; }
const bool IsBossLast1() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast1; }
const bool IsBossLast2() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_BossLast2; }
const bool IsDungeonForest() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_DgnForest; }
const bool IsPirateHideout() const { return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito; }
bool IsMapA6() {
return this->mLoadedOverlays[OverlaySlot_13] == OverlayIndex_MapA6;
}
const bool IsASR() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR; }
const bool IsPlayerSub() const { return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_PlayerSub; }
bool IsPirateHideout() {
return this->mLoadedOverlays[OverlaySlot_8] == OverlayIndex_FldAjito;
}
const bool IsPlayerZelda() const { return this->mLoadedOverlays[OverlaySlot_10] == OverlayIndex_PlayerZelda; }
bool IsASR() {
return this->mLoadedOverlays[OverlaySlot_9] == OverlayIndex_ASR;
}
const bool IsMapA6() const { return this->mLoadedOverlays[OverlaySlot_13] == OverlayIndex_MapA6; }
const bool IsMapB3() const { return this->mLoadedOverlays[OverlaySlot_14] == OverlayIndex_MapB3; }
// clang-format on
void Load(OverlaySlot slot, OverlayIndex index);
void LoadIfNotLoaded(OverlaySlot slot, OverlayIndex index);
+34 -4
View File
@@ -35,7 +35,9 @@ enum HeapIndex_ {
};
void *operator new(size_t length, u32 id, u32 idLength = 4);
void *operator new[](size_t length, u32 id, u32 idLength = 4);
inline void *operator new[](size_t length, u32 id, u32 idLength = 4) {
return ::operator new(length, id, idLength);
}
class UnkStruct_02011e10_Sub1 {
public:
@@ -53,15 +55,29 @@ public:
/* 2C */ unk8 mUnk_2C[0x60 - 0x2C];
};
class UnkStruct_02011e10_2C {
public:
/* 00 */ UnkStruct_02011e10_Sub1 *mUnk_00;
/* 04 */ STRUCT_PAD(0x04, 0x18);
/* 18 */
UnkStruct_02011e10_2C();
// main
void func_020144cc(unk32 param1, unk32 param2, unk32 param3);
void func_02014538();
};
class UnkStruct_02011e10 {
public:
/* 00 */ UnkStruct_02011e10_Sub1 *mUnk_00[HeapIndex_Max]; // the pointer seems to match arena lo
/* 24 */ unk32 mUnk_24[2];
/* 28 */ STRUCT_PAD(0x2C, 0x5C);
/* 2C */ UnkStruct_02011e10_2C mUnk_2C;
/* 44 */ UnkStruct_02011e10_2C mUnk_44;
/* 5C */ unk32 mUnk_5C;
/* 60 */ unk32 mUnk_60;
/* 64 */ unk32 mUnk_64;
/* 68 */ unk32 mUnk_68;
/* 64 */ void *mUnk_64;
/* 68 */ void *mUnk_68;
/* 6C */ unk32 mUnk_6C;
/* 70 */ unk32 mUnk_70;
/* 74 */ unk32 mUnk_74;
@@ -75,12 +91,26 @@ public:
/* 82 */ unk8 mUnk_82;
/* 83 */ unk8 mUnk_83;
UnkStruct_02011e10() {}
~UnkStruct_02011e10();
// main
unk32 func_02013014();
bool func_02013070();
void func_020130d4(unk32 param1);
// overlay 1
void func_ov001_020ba588(unk32 param1, unk32 param2);
void func_ov001_020ba59c();
void func_ov001_020ba5ac(unk32 param1, unk32 param2);
void func_ov001_020ba5c0();
void func_ov001_020ba5d0();
void func_ov001_020ba608();
void func_ov001_020ba620();
void func_ov001_020ba640();
void func_ov001_020ba658();
// overlay 18
void func_ov018_020c4980();
void func_ov018_020c4a5c();
};
+10
View File
@@ -1210,3 +1210,13 @@ public:
// data_ov000_020b2940
/* 00 */ virtual void vfunc_00();
};
class UnkSystem9 : public LinkList<UnkSystem9> {
public:
/* 00 (vtable) */
/* 04 (base) */
/* 0C */
// data_ov000_020b24c4
/* 00 */ virtual void vfunc_00();
};
+1
View File
@@ -15,6 +15,7 @@ public:
UnkStruct_02049b80();
void func_02013ecc(unk32 param1, UnkCallback param2, unk32 param3);
void func_02013ee8(unk32 param1, unk32 param2);
void func_02013f80(unk32 param1);
};
extern UnkStruct_02049b80 data_02049b80;
+20 -1
View File
@@ -1,12 +1,31 @@
#pragma once
#include "global.h"
#include "math.hpp"
#include "types.h"
#include "versions.h"
class UnkStruct_027e095c : public AutoInstance<UnkStruct_027e095c> {
public:
/* 000 */ unk32 mUnk_000;
#if IS_JP
/* 000 */ VecFx32 mUnk_000[64];
/* 300 */ unk32 mUnk_2F4;
/* 304 */ STRUCT_PAD(0x304, 0x900);
/* 900 */ void *mUnk_8DC;
/* 904 */ unk32 mUnk_8E0;
/* 908 */ STRUCT_PAD(0x908, 0x964);
/* 960 */ void *mUnk_940;
/* 968 */
#else
/* 000 */ VecFx32 mUnk_000[63];
/* 2F4 */ unk32 mUnk_2F4;
/* 2F8 */ STRUCT_PAD(0x2F8, 0x8DC);
/* 8DC */ void *mUnk_8DC;
/* 8E0 */ unk32 mUnk_8E0;
/* 8E4 */ STRUCT_PAD(0x8E4, 0x940);
/* 940 */ void *mUnk_940;
/* 944 */
#endif
UnkStruct_027e095c();
~UnkStruct_027e095c() {}
+1
View File
@@ -12,6 +12,7 @@ struct UnkStruct_func_ov000_020702a8 {
/* 10 */ Vec2s mUnk_10;
/* 14 */ STRUCT_PAD(0x14, 0x20);
/* 20 */ unk16 mUnk_20;
/* 22 */ unk16 mUnk_22;
};
class CourseInitBinary {
+42 -5
View File
@@ -1,33 +1,70 @@
#pragma once
#include "Unknown/Common.hpp"
#include "Unknown/UnkStruct_0204a060.hpp"
#include "global.h"
#include "types.h"
class UnkStruct_027e09bc_0C {
public:
/* 00 */ STRUCT_PAD(0x00, 0x34);
/* 34 */ VecFx32 mUnk_34;
/* 000 (vtable) */
/* 004 */ STRUCT_PAD(0x04, 0x34);
/* 034 */ VecFx32 mUnk_034;
/* 040 */ STRUCT_PAD(0x40, 0x264);
/* 264 */ unk32 mUnk_264;
/* 268 */ STRUCT_PAD(0x268, 0x280);
/* 280 */ unk32 mUnk_280;
/* 284 */
UnkStruct_027e09bc_0C(unk32 param1);
// data_ov000_020b24b4
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual ~UnkStruct_027e09bc_0C();
/* 10 */
// itcm
bool func_01ffd640(VecFx32 *param1);
// overlay 0
void func_ov000_02078230(unk32 param1);
bool func_ov000_0207834c(VecFx32 *param1, unk32 param2, unk32 param3);
bool func_ov000_02078764(VecFx32 *param1, void *param2, unk32 param3);
void func_ov000_02078ba4();
void func_ov000_02078cec();
};
class UnkStruct_027e09bc_24 : public UnkStruct_0204a060_Base {
public:
/* 00 (base) */
/* 24 */
UnkStruct_027e09bc_24();
// data_ov000_020b2488
/* 0C */ virtual bool vfunc_0C(void) override;
};
class UnkStruct_027e09bc : public AutoInstance<UnkStruct_027e09bc> {
public:
/* 00 */ unk32 mUnk_00;
/* 00 (vtable) */
/* 04 */ UnkStruct_027e09bc_0C *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ UnkStruct_027e09bc_0C *mUnk_0C;
/* 10 */ STRUCT_PAD(0x10, 0x48);
/* 48 */ UnkSystem8 mUnk_48;
/* 10 */ UnkStruct_027e09bc_0C *mUnk_10;
/* 14 */ UnkStruct_027e09bc_0C *mUnk_14[4];
/* 24 */ UnkStruct_027e09bc_24 mUnk_24;
/* 48 */ UnkSystem9 mUnk_48;
UnkStruct_027e09bc();
~UnkStruct_027e09bc();
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
// overlay 0
void func_ov000_020771b8(unk32 param1);
void func_ov000_020771c8();
// overlay 1
@@ -30,6 +30,8 @@ public:
MapObjectProfile *GetProfileFromId(MapObjectId mapObjId);
MapObject *CreateMapObject(MapObjectId mapObjId);
MapObjectProfile **func_ov000_0209c6a0();
MapObjectProfile **func_ov000_0209c6ac();
static unk32 func_ov000_0209c718(u32 param1);
};
@@ -0,0 +1,24 @@
#pragma once
#include "global.h"
#include "types.h"
class UnkStruct_ov020_020e8544 {
public:
/* 00 (vtable) */
UnkStruct_ov020_020e8544();
~UnkStruct_ov020_020e8544();
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
/* 0C */ virtual void vfunc_0C();
/* 10 */ virtual void vfunc_10();
/* 14 */ virtual void vfunc_14();
/* 18 */ virtual void vfunc_18();
/* 1C */ virtual void vfunc_1C();
/* 20 */ virtual unk32 vfunc_20();
};
extern UnkStruct_ov020_020e8544 *data_ov020_020e8544;