Decompile ActorManager_001.cpp (#31)

* started ActorManager_001.cpp

* create, ctor, dtor

* prog

* fix build

* fix build issues

* progress

* struct comments

* match ClearInstance
This commit is contained in:
Yanis
2026-02-04 04:08:40 +01:00
committed by GitHub
parent 3ab5bf6de9
commit 0b367ecdfb
44 changed files with 1068 additions and 161 deletions
+42 -33
View File
@@ -5,6 +5,7 @@
#include "Actor/ActorType.hpp"
#include "Physics/Cylinder.hpp"
#include "System/SysNew.hpp"
#include "flags.h"
#include "global.h"
#include "nitro/math.h"
#include "types.h"
@@ -32,42 +33,46 @@ public:
/* 00 */ Actor_5c_Base mUnk_00[3];
/* 30 */ ActorType *mUnk_30;
/* 34 */
ActorType **func_ov000_02073dc();
ActorType **func_ov000_02073e8();
ActorType *func_ov000_020974dc(u32 id);
};
typedef u32 ActorFlags;
enum ActorFlag_ {
ActorFlag_Alive,
ActorFlag_Visible,
ActorFlag_2,
ActorFlag_Active, // stops updating if false
ActorFlag_4,
ActorFlag_5,
ActorFlag_6,
ActorFlag_7,
ActorFlag_Grabbed,
ActorFlag_9,
ActorFlag_Interacting, // set when player interacts with actor
ActorFlag_11,
ActorFlag_12,
ActorFlag_13,
ActorFlag_14,
ActorFlag_15,
ActorFlag_16,
ActorFlag_17,
ActorFlag_18,
ActorFlag_19,
ActorFlag_20,
ActorFlag_21,
ActorFlag_22,
ActorFlag_23,
ActorFlag_24,
ActorFlag_25,
ActorFlag_26,
ActorFlag_27,
ActorFlag_28,
ActorFlag_29,
ActorFlag_30,
ActorFlag_31,
ActorFlag_Alive = FLAG(0, 0),
ActorFlag_Visible = FLAG(0, 1),
ActorFlag_2 = FLAG(0, 2),
ActorFlag_Active = FLAG(0, 3), // stops updating if false
ActorFlag_4 = FLAG(0, 4),
ActorFlag_5 = FLAG(0, 5),
ActorFlag_6 = FLAG(0, 6),
ActorFlag_7 = FLAG(0, 7),
ActorFlag_Grabbed = FLAG(0, 8),
ActorFlag_9 = FLAG(0, 9),
ActorFlag_Interacting = FLAG(0, 10), // set when player interacts with actor
ActorFlag_11 = FLAG(0, 11),
ActorFlag_12 = FLAG(0, 12),
ActorFlag_13 = FLAG(0, 13),
ActorFlag_14 = FLAG(0, 14),
ActorFlag_15 = FLAG(0, 15),
ActorFlag_16 = FLAG(0, 16),
ActorFlag_17 = FLAG(0, 17),
ActorFlag_18 = FLAG(0, 18),
ActorFlag_19 = FLAG(0, 19),
ActorFlag_20 = FLAG(0, 20),
ActorFlag_21 = FLAG(0, 21),
ActorFlag_22 = FLAG(0, 22),
ActorFlag_23 = FLAG(0, 23),
ActorFlag_24 = FLAG(0, 24),
ActorFlag_25 = FLAG(0, 25),
ActorFlag_26 = FLAG(0, 26),
ActorFlag_27 = FLAG(0, 27),
ActorFlag_28 = FLAG(0, 28),
ActorFlag_29 = FLAG(0, 29),
ActorFlag_30 = FLAG(0, 30),
ActorFlag_31 = FLAG(0, 31),
};
class Actor : public SysObject {
@@ -94,7 +99,7 @@ public:
/* 50 */ volatile u16 mUnk_50;
/* 52 */ u16 mUnk_52;
/* 54 */ unk32 mUnk_54;
/* 58 */ ActorFlags mFlags;
/* 58 */ ActorFlags mFlags[1];
/* 5c */ Actor_5c mUnk_5c;
/* 6c */ u16 mUnk_6c; // actor user id?
/* 6e */ u16 mUnk_6e;
@@ -138,6 +143,10 @@ public:
unk32 func_01fff5d0(unk32 param1, unk32 param2);
void ResetFlags() {
*(u32 *) this->mFlags = 0;
}
Actor();
void func_ov000_0209848c(ActorType *param1);
void func_ov000_020984b0();
+36 -16
View File
@@ -1,47 +1,67 @@
#pragma once
#include "Actor/ActorUnk_ov000_020a8bb0.hpp"
#include "System/SysNew.hpp"
#include "Unknown/Common.hpp"
#include "files.h"
#include "types.h"
class ActorManager {
struct UnkStruct_func_ov001_020bb018_param2 {
/* 00 */ STRUCT_PAD(0x00, 0x08);
/* 08 */ u16 mUnk_08;
/* 08 */ u16 mUnk_0A;
};
class ActorManager : public SysObject {
public:
/* 00 */ Actor **mActorTable;
/* 04 */ Actor **mActorTableEnd;
/* 08 */ Actor **mUnk_08;
/* 0c */ unk16 mActorCount;
/* 0e */ unk16 mNextActorId;
/* 10 */ unk8 mUnk_10[0x14 - 0x10];
/* 14 */ unk32 mUnk_14;
/* 18 */ unk32 mUnk_18;
/* 1c */ unk8 mUnk_1c[0x24 - 0x1c];
/* 10 */ unk8 mUnk_10;
/* 10 */ unk8 mUnk_11;
/* 10 */ unk8 mUnk_12;
/* 10 */ unk8 mUnk_13;
/* 14 */ UnkStruct_ov019_020d24c8_28_258_00 mUnk_14;
/* 1c */ unk32 mUnk_1c;
/* 20 */ unk8 mUnk_20;
/* 21 */ unk8 mUnk_21;
/* 22 */ unk8 mUnk_22;
/* 23 */ unk8 mUnk_23;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2c */ unk32 mUnk_2c;
/* 30 */ unk16 mUnk_30;
/* 32 */ unk8 mUnk_32[0x34 - 0x32];
/* 32 */ unk8 mUnk_32;
/* 33 */ unk8 mUnk_33;
/* 34 */ unk32 mUnk_34;
/* 38 */
ActorManager();
~ActorManager();
static void SetInstance(ActorManager *instance);
static void ClearInstance();
static void Create();
static void Destroy();
ActorUnk_ov000_020a8bb0 *func_01fff3b4(unk32 param1);
void func_ov000_02096e44(int index);
int ClearInstance();
void func_ov001_020bafdc();
void func_ov001_020bb018(s32 param1);
void func_ov001_020bb414();
void func_ov001_020bb018(UnkStruct_func_ov001_020bb018_param2 *param1);
void func_ov001_020bb488();
void func_ov001_020bb548();
void func_ov001_020bb630();
void func_ov001_020bb6b0(s32 *param1);
static bool func_ov001_020bb728(s32 param1);
void func_ov001_020bb7b0(s32 param1);
void func_ov001_020bb7b0(ZeldaObjectList *pObjList);
void func_ov001_020bb7f0();
static void SetInstance(ActorManager *instance);
static ActorManager *Create();
static void Destroy();
static void func_ov001_020bb414(ActorManager *instance);
static bool func_ov001_020bb728(s32 param1);
static void func_ov001_020bb824();
static void func_ov001_020bb844();
ActorUnk_ov000_020a8bb0 *func_01fff3b4(unk32 param1);
};
extern ActorManager *gActorManager;
+1 -1
View File
@@ -23,7 +23,7 @@ public:
/* 2c */ unk32 mUnk_2c;
/* 30 */ unk32 mUnk_30;
/* 34 */ unk32 mUnk_34;
/* 38 */ unk8 mUnk_38;
/* 38 */ u8 mUnk_38;
/* 39 */ unk8 mUnk_39;
/* 3a */
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "types.h"
enum MapObjectId {
#define DEFINE_MAP_OBJECT_TYPE(id, name) MapObjectId_##name = id,
#include "Map/MapObjectTypeTable.inl"
#undef DEFINE_MAP_OBJECT_TYPE
};
+265
View File
@@ -0,0 +1,265 @@
// IMPORTANT: Map Object types must be sorted by ID!
// DEFINE_MAP_OBJECT_TYPE(id, name)
DEFINE_MAP_OBJECT_TYPE('ACDS', ACDS)
DEFINE_MAP_OBJECT_TYPE('ACFR', ACFR)
DEFINE_MAP_OBJECT_TYPE('ACSN', ACSN)
DEFINE_MAP_OBJECT_TYPE('ACVC', ACVC)
DEFINE_MAP_OBJECT_TYPE('ACWT', ACWT)
DEFINE_MAP_OBJECT_TYPE('ARWL', ARWL)
DEFINE_MAP_OBJECT_TYPE('BBFL', BBFL)
DEFINE_MAP_OBJECT_TYPE('BFFL', BFFL)
DEFINE_MAP_OBJECT_TYPE('BFSP', BFSP)
DEFINE_MAP_OBJECT_TYPE('BKCT', BKCT)
DEFINE_MAP_OBJECT_TYPE('BLCC', BLCC)
DEFINE_MAP_OBJECT_TYPE('BLCE', BLCE)
DEFINE_MAP_OBJECT_TYPE('BLCK', BLCK)
DEFINE_MAP_OBJECT_TYPE('BLCM', BLCM)
DEFINE_MAP_OBJECT_TYPE('BLHL', BLHL)
DEFINE_MAP_OBJECT_TYPE('BLKF', BLKF)
DEFINE_MAP_OBJECT_TYPE('BLRB', BLRB)
DEFINE_MAP_OBJECT_TYPE('BLSR', BLSR)
DEFINE_MAP_OBJECT_TYPE('BLT3', BLT3)
DEFINE_MAP_OBJECT_TYPE('BLT4', BLT4)
DEFINE_MAP_OBJECT_TYPE('BLVC', BLVC)
DEFINE_MAP_OBJECT_TYPE('BMFL', BMFL)
DEFINE_MAP_OBJECT_TYPE('BREX', BREX)
DEFINE_MAP_OBJECT_TYPE('BRGL', BRGL)
DEFINE_MAP_OBJECT_TYPE('BRGS', BRGS)
DEFINE_MAP_OBJECT_TYPE('BRGW', BRGW)
DEFINE_MAP_OBJECT_TYPE('BRLI', BRLI)
DEFINE_MAP_OBJECT_TYPE('CHAI', CHAI)
DEFINE_MAP_OBJECT_TYPE('CLMN', CLMN)
DEFINE_MAP_OBJECT_TYPE('CRLL', CRLL)
DEFINE_MAP_OBJECT_TYPE('CRWL', CRWL)
DEFINE_MAP_OBJECT_TYPE('CSTL', CSTL)
DEFINE_MAP_OBJECT_TYPE('CTPT', CTPT)
DEFINE_MAP_OBJECT_TYPE('DFNC', DFNC)
DEFINE_MAP_OBJECT_TYPE('DNGN', DNGN)
DEFINE_MAP_OBJECT_TYPE('DOPA', DOPA)
DEFINE_MAP_OBJECT_TYPE('DRBK', DRBK)
DEFINE_MAP_OBJECT_TYPE('DRBR', DRBR)
DEFINE_MAP_OBJECT_TYPE('DRCG', DRCG)
DEFINE_MAP_OBJECT_TYPE('DRCK', DRCK)
DEFINE_MAP_OBJECT_TYPE('DRDS', DRDS)
DEFINE_MAP_OBJECT_TYPE('DRHS', DRHS)
DEFINE_MAP_OBJECT_TYPE('DRKY', DRKY)
DEFINE_MAP_OBJECT_TYPE('DRMC', DRMC)
DEFINE_MAP_OBJECT_TYPE('DRRS', DRRS)
DEFINE_MAP_OBJECT_TYPE('DRSN', DRSN)
DEFINE_MAP_OBJECT_TYPE('DRST', DRST)
DEFINE_MAP_OBJECT_TYPE('DRSW', DRSW)
DEFINE_MAP_OBJECT_TYPE('DRTC', DRTC)
DEFINE_MAP_OBJECT_TYPE('DRTW', DRTW)
DEFINE_MAP_OBJECT_TYPE('DRTY', DRTY)
DEFINE_MAP_OBJECT_TYPE('DRVC', DRVC)
DEFINE_MAP_OBJECT_TYPE('DRVT', DRVT)
DEFINE_MAP_OBJECT_TYPE('EBRD', EBRD)
DEFINE_MAP_OBJECT_TYPE('EFRF', EFRF)
DEFINE_MAP_OBJECT_TYPE('EFRS', EFRS)
DEFINE_MAP_OBJECT_TYPE('ETDK', ETDK)
DEFINE_MAP_OBJECT_TYPE('ETET', ETET)
DEFINE_MAP_OBJECT_TYPE('ETMW', ETMW)
DEFINE_MAP_OBJECT_TYPE('ETNL', ETNL)
DEFINE_MAP_OBJECT_TYPE('ETNM', ETNM)
DEFINE_MAP_OBJECT_TYPE('ETNS', ETNS)
DEFINE_MAP_OBJECT_TYPE('ETSD', ETSD)
DEFINE_MAP_OBJECT_TYPE('ETSW', ETSW)
DEFINE_MAP_OBJECT_TYPE('ETTV', ETTV)
DEFINE_MAP_OBJECT_TYPE('ETUS', ETUS)
DEFINE_MAP_OBJECT_TYPE('ETWP', ETWP)
DEFINE_MAP_OBJECT_TYPE('ETYG', ETYG)
DEFINE_MAP_OBJECT_TYPE('EXIT', EXIT)
DEFINE_MAP_OBJECT_TYPE('FLSP', FLSP)
DEFINE_MAP_OBJECT_TYPE('FNCE', FNCE)
DEFINE_MAP_OBJECT_TYPE('FRA1', FRA1)
DEFINE_MAP_OBJECT_TYPE('FRAI', FRAI)
DEFINE_MAP_OBJECT_TYPE('FRAM', FRAM)
DEFINE_MAP_OBJECT_TYPE('FRSH', FRSH)
DEFINE_MAP_OBJECT_TYPE('FRWL', FRWL)
DEFINE_MAP_OBJECT_TYPE('FSCT', FSCT)
DEFINE_MAP_OBJECT_TYPE('FSFR', FSFR)
DEFINE_MAP_OBJECT_TYPE('FSFS', FSFS)
DEFINE_MAP_OBJECT_TYPE('FSSN', FSSN)
DEFINE_MAP_OBJECT_TYPE('FSSV', FSSV)
DEFINE_MAP_OBJECT_TYPE('FST0', FST0)
DEFINE_MAP_OBJECT_TYPE('FST1', FST1)
DEFINE_MAP_OBJECT_TYPE('FST2', FST2)
DEFINE_MAP_OBJECT_TYPE('FST3', FST3)
DEFINE_MAP_OBJECT_TYPE('FSVC', FSVC)
DEFINE_MAP_OBJECT_TYPE('FSWT', FSWT)
DEFINE_MAP_OBJECT_TYPE('GATE', GATE)
DEFINE_MAP_OBJECT_TYPE('GBDR', GBDR)
DEFINE_MAP_OBJECT_TYPE('GELG', GELG)
DEFINE_MAP_OBJECT_TYPE('GRSG', GRSG)
DEFINE_MAP_OBJECT_TYPE('GRSS', GRSS)
DEFINE_MAP_OBJECT_TYPE('GRSV', GRSV)
DEFINE_MAP_OBJECT_TYPE('GSST', GSST)
DEFINE_MAP_OBJECT_TYPE('GTCT', GTCT)
DEFINE_MAP_OBJECT_TYPE('GTMT', GTMT)
DEFINE_MAP_OBJECT_TYPE('GTRB', GTRB)
DEFINE_MAP_OBJECT_TYPE('GTRK', GTRK)
DEFINE_MAP_OBJECT_TYPE('GTSN', GTSN)
DEFINE_MAP_OBJECT_TYPE('GTTN', GTTN)
DEFINE_MAP_OBJECT_TYPE('HOF0', HOF0)
DEFINE_MAP_OBJECT_TYPE('HOF1', HOF1)
DEFINE_MAP_OBJECT_TYPE('HOL0', HOL0)
DEFINE_MAP_OBJECT_TYPE('HOL1', HOL1)
DEFINE_MAP_OBJECT_TYPE('HOL2', HOL2)
DEFINE_MAP_OBJECT_TYPE('HOLB', HOLB)
DEFINE_MAP_OBJECT_TYPE('HOS0', HOS0)
DEFINE_MAP_OBJECT_TYPE('HOS1', HOS1)
DEFINE_MAP_OBJECT_TYPE('HOSB', HOSB)
DEFINE_MAP_OBJECT_TYPE('HOSO', HOSO)
DEFINE_MAP_OBJECT_TYPE('HOST', HOST)
DEFINE_MAP_OBJECT_TYPE('HOT0', HOT0)
DEFINE_MAP_OBJECT_TYPE('HOT1', HOT1)
DEFINE_MAP_OBJECT_TYPE('HOT2', HOT2)
DEFINE_MAP_OBJECT_TYPE('HOUS', HOUS)
DEFINE_MAP_OBJECT_TYPE('HOV0', HOV0)
DEFINE_MAP_OBJECT_TYPE('HOV1', HOV1)
DEFINE_MAP_OBJECT_TYPE('HOW0', HOW0)
DEFINE_MAP_OBJECT_TYPE('HOW1', HOW1)
DEFINE_MAP_OBJECT_TYPE('ICEB', ICEB)
DEFINE_MAP_OBJECT_TYPE('ICGR', ICGR)
DEFINE_MAP_OBJECT_TYPE('ITFL', ITFL)
DEFINE_MAP_OBJECT_TYPE('KNBN', KNBN)
DEFINE_MAP_OBJECT_TYPE('LEVS', LEVS)
DEFINE_MAP_OBJECT_TYPE('LTRW', LTRW)
DEFINE_MAP_OBJECT_TYPE('LTST', LTST)
DEFINE_MAP_OBJECT_TYPE('LVCM', LVCM)
DEFINE_MAP_OBJECT_TYPE('LVVT', LVVT)
DEFINE_MAP_OBJECT_TYPE('MBBS', MBBS)
DEFINE_MAP_OBJECT_TYPE('MBRB', MBRB)
DEFINE_MAP_OBJECT_TYPE('MBRG', MBRG)
DEFINE_MAP_OBJECT_TYPE('MTFS', MTFS)
DEFINE_MAP_OBJECT_TYPE('MTGT', MTGT)
DEFINE_MAP_OBJECT_TYPE('MTIC', MTIC)
DEFINE_MAP_OBJECT_TYPE('MTIR', MTIR)
DEFINE_MAP_OBJECT_TYPE('MTJR', MTJR)
DEFINE_MAP_OBJECT_TYPE('MTOR', MTOR)
DEFINE_MAP_OBJECT_TYPE('MTWD', MTWD)
DEFINE_MAP_OBJECT_TYPE('MTWR', MTWR)
DEFINE_MAP_OBJECT_TYPE('MZFE', MZFE)
DEFINE_MAP_OBJECT_TYPE('MZTR', MZTR)
DEFINE_MAP_OBJECT_TYPE('NPST', NPST)
DEFINE_MAP_OBJECT_TYPE('OJTH', OJTH)
DEFINE_MAP_OBJECT_TYPE('PLCT', PLCT)
DEFINE_MAP_OBJECT_TYPE('PLFM', PLFM)
DEFINE_MAP_OBJECT_TYPE('PLFR', PLFR)
DEFINE_MAP_OBJECT_TYPE('PLV2', PLV2)
DEFINE_MAP_OBJECT_TYPE('PRSH', PRSH)
DEFINE_MAP_OBJECT_TYPE('RCFL', RCFL)
DEFINE_MAP_OBJECT_TYPE('RDSD', RDSD)
DEFINE_MAP_OBJECT_TYPE('RKAG', RKAG)
DEFINE_MAP_OBJECT_TYPE('RLFL', RLFL)
DEFINE_MAP_OBJECT_TYPE('RLSG', RLSG)
DEFINE_MAP_OBJECT_TYPE('RNBO', RNBO)
DEFINE_MAP_OBJECT_TYPE('RPFL', RPFL)
DEFINE_MAP_OBJECT_TYPE('SAND', SAND)
DEFINE_MAP_OBJECT_TYPE('SBDE', SBDE)
DEFINE_MAP_OBJECT_TYPE('SHWB', SHWB)
DEFINE_MAP_OBJECT_TYPE('SKBN', SKBN)
DEFINE_MAP_OBJECT_TYPE('SKDI', SKDI)
DEFINE_MAP_OBJECT_TYPE('SKFR', SKFR)
DEFINE_MAP_OBJECT_TYPE('SKSN', SKSN)
DEFINE_MAP_OBJECT_TYPE('SKVC', SKVC)
DEFINE_MAP_OBJECT_TYPE('SKWT', SKWT)
DEFINE_MAP_OBJECT_TYPE('SPTB', SPTB)
DEFINE_MAP_OBJECT_TYPE('STAL', STAL)
DEFINE_MAP_OBJECT_TYPE('STAT', STAT)
DEFINE_MAP_OBJECT_TYPE('STDE', STDE)
DEFINE_MAP_OBJECT_TYPE('STDS', STDS)
DEFINE_MAP_OBJECT_TYPE('STIR', STIR)
DEFINE_MAP_OBJECT_TYPE('STNE', STNE)
DEFINE_MAP_OBJECT_TYPE('STSD', STSD)
DEFINE_MAP_OBJECT_TYPE('STSF', STSF)
DEFINE_MAP_OBJECT_TYPE('STSH', STSH)
DEFINE_MAP_OBJECT_TYPE('STSP', STSP)
DEFINE_MAP_OBJECT_TYPE('STSS', STSS)
DEFINE_MAP_OBJECT_TYPE('STSV', STSV)
DEFINE_MAP_OBJECT_TYPE('SWBR', SWBR)
DEFINE_MAP_OBJECT_TYPE('SWCB', SWCB)
DEFINE_MAP_OBJECT_TYPE('SWCR', SWCR)
DEFINE_MAP_OBJECT_TYPE('SWEY', SWEY)
DEFINE_MAP_OBJECT_TYPE('SWHT', SWHT)
DEFINE_MAP_OBJECT_TYPE('SWRA', SWRA)
DEFINE_MAP_OBJECT_TYPE('SWST', SWST)
DEFINE_MAP_OBJECT_TYPE('SWSW', SWSW)
DEFINE_MAP_OBJECT_TYPE('SWWN', SWWN)
DEFINE_MAP_OBJECT_TYPE('TATZ', TATZ)
DEFINE_MAP_OBJECT_TYPE('TBSD', TBSD)
DEFINE_MAP_OBJECT_TYPE('TBSF', TBSF)
DEFINE_MAP_OBJECT_TYPE('TBSS', TBSS)
DEFINE_MAP_OBJECT_TYPE('TCBT', TCBT)
DEFINE_MAP_OBJECT_TYPE('TDBP', TDBP)
DEFINE_MAP_OBJECT_TYPE('TDBR', TDBR)
DEFINE_MAP_OBJECT_TYPE('TDDR', TDDR)
DEFINE_MAP_OBJECT_TYPE('THAW', THAW)
DEFINE_MAP_OBJECT_TYPE('TMDE', TMDE)
DEFINE_MAP_OBJECT_TYPE('TMFR', TMFR)
DEFINE_MAP_OBJECT_TYPE('TMSB', TMSB)
DEFINE_MAP_OBJECT_TYPE('TMSN', TMSN)
DEFINE_MAP_OBJECT_TYPE('TMWT', TMWT)
DEFINE_MAP_OBJECT_TYPE('TOWN', TOWN)
DEFINE_MAP_OBJECT_TYPE('TRBB', TRBB)
DEFINE_MAP_OBJECT_TYPE('TRBF', TRBF)
DEFINE_MAP_OBJECT_TYPE('TRBL', TRBL)
DEFINE_MAP_OBJECT_TYPE('TRBM', TRBM)
DEFINE_MAP_OBJECT_TYPE('TRBR', TRBR)
DEFINE_MAP_OBJECT_TYPE('TRCC', TRCC)
DEFINE_MAP_OBJECT_TYPE('TRDA', TRDA)
DEFINE_MAP_OBJECT_TYPE('TRDR', TRDR)
DEFINE_MAP_OBJECT_TYPE('TRDT', TRDT)
DEFINE_MAP_OBJECT_TYPE('TREE', TREE)
DEFINE_MAP_OBJECT_TYPE('TREP', TREP)
DEFINE_MAP_OBJECT_TYPE('TRES', TRES)
DEFINE_MAP_OBJECT_TYPE('TRET', TRET)
DEFINE_MAP_OBJECT_TYPE('TRFI', TRFI)
DEFINE_MAP_OBJECT_TYPE('TRFO', TRFO)
DEFINE_MAP_OBJECT_TYPE('TRFS', TRFS)
DEFINE_MAP_OBJECT_TYPE('TRFV', TRFV)
DEFINE_MAP_OBJECT_TYPE('TRGE', TRGE)
DEFINE_MAP_OBJECT_TYPE('TRGM', TRGM)
DEFINE_MAP_OBJECT_TYPE('TRGW', TRGW)
DEFINE_MAP_OBJECT_TYPE('TRH0', TRH0)
DEFINE_MAP_OBJECT_TYPE('TRH1', TRH1)
DEFINE_MAP_OBJECT_TYPE('TRH2', TRH2)
DEFINE_MAP_OBJECT_TYPE('TRH3', TRH3)
DEFINE_MAP_OBJECT_TYPE('TRLS', TRLS)
DEFINE_MAP_OBJECT_TYPE('TRMA', TRMA)
DEFINE_MAP_OBJECT_TYPE('TRMR', TRMR)
DEFINE_MAP_OBJECT_TYPE('TRPI', TRPI)
DEFINE_MAP_OBJECT_TYPE('TRPT', TRPT)
DEFINE_MAP_OBJECT_TYPE('TRRA', TRRA)
DEFINE_MAP_OBJECT_TYPE('TRRC', TRRC)
DEFINE_MAP_OBJECT_TYPE('TRRD', TRRD)
DEFINE_MAP_OBJECT_TYPE('TRRS', TRRS)
DEFINE_MAP_OBJECT_TYPE('TRRW', TRRW)
DEFINE_MAP_OBJECT_TYPE('TRSA', TRSA)
DEFINE_MAP_OBJECT_TYPE('TRSD', TRSD)
DEFINE_MAP_OBJECT_TYPE('TRSH', TRSH)
DEFINE_MAP_OBJECT_TYPE('TRSN', TRSN)
DEFINE_MAP_OBJECT_TYPE('TRSR', TRSR)
DEFINE_MAP_OBJECT_TYPE('TRSS', TRSS)
DEFINE_MAP_OBJECT_TYPE('TRST', TRST)
DEFINE_MAP_OBJECT_TYPE('TRSW', TRSW)
DEFINE_MAP_OBJECT_TYPE('TRTF', TRTF)
DEFINE_MAP_OBJECT_TYPE('TRTS', TRTS)
DEFINE_MAP_OBJECT_TYPE('TRWA', TRWA)
DEFINE_MAP_OBJECT_TYPE('TRWS', TRWS)
DEFINE_MAP_OBJECT_TYPE('TSUB', TSUB)
DEFINE_MAP_OBJECT_TYPE('TWGS', TWGS)
DEFINE_MAP_OBJECT_TYPE('TWPG', TWPG)
DEFINE_MAP_OBJECT_TYPE('WDST', WDST)
DEFINE_MAP_OBJECT_TYPE('WHSW', WHSW)
DEFINE_MAP_OBJECT_TYPE('WLM0', WLM0)
DEFINE_MAP_OBJECT_TYPE('WLM1', WLM1)
DEFINE_MAP_OBJECT_TYPE('WLM2', WLM2)
DEFINE_MAP_OBJECT_TYPE('WLM3', WLM3)
DEFINE_MAP_OBJECT_TYPE('WLM4', WLM4)
DEFINE_MAP_OBJECT_TYPE('WLM5', WLM5)
DEFINE_MAP_OBJECT_TYPE('WLM6', WLM6)
DEFINE_MAP_OBJECT_TYPE('WLM7', WLM7)
DEFINE_MAP_OBJECT_TYPE('WLMS', WLMS)
DEFINE_MAP_OBJECT_TYPE('ZDPF', ZDPF)
+2 -1
View File
@@ -27,7 +27,6 @@ enum HeapIndex_ {
class SysObject {
public:
static void operator delete(void *ptr);
static void operator delete[](void *ptr);
};
@@ -75,6 +74,8 @@ public:
void func_02013014();
void func_02013070();
void func_ov001_020ba588(unk32 param1, unk32 param2);
void func_ov018_020c4980();
void func_ov018_020c4a5c();
};
+23 -6
View File
@@ -233,10 +233,19 @@ public:
}
};
class UnkStruct_ov019_020d24c8_28_258 {
public:
struct UnkStruct_ov019_020d24c8_28_258_00 {
/* 00 */ void *mUnk_00;
/* 04 */ unk32 mUnk_04;
UnkStruct_ov019_020d24c8_28_258_00() {}
UnkStruct_ov019_020d24c8_28_258_00(void *param1, unk32 param2) :
mUnk_00(param1),
mUnk_04(param2) {}
void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4);
};
class UnkStruct_ov019_020d24c8_28_258 : public UnkStruct_ov019_020d24c8_28_258_00 {
public:
/* 08 */ unk16 mUnk_08;
/* 0A */ union { //! TODO: figure out
Vec2s mPos;
@@ -257,8 +266,7 @@ public:
};
UnkStruct_ov019_020d24c8_28_258(unk32 param1, unk32 param2) :
mUnk_00(0),
mUnk_04(0) {
UnkStruct_ov019_020d24c8_28_258_00(NULL, 0) {
this->UnknownAction(param1, param2);
}
@@ -267,8 +275,6 @@ public:
this->mUnk_12 = param1;
this->mUnk_14 = param2;
}
void func_ov000_0205fc20(unk32 param1, unk32 param2, void *param3, void *param4);
};
#define BTN_ID_NONE -1
@@ -844,3 +850,14 @@ public:
unk32 func_ov000_02060c28(void);
void func_ov000_02060bd8(unk32 param1);
};
struct UnkStruct_StackTitleScreen {
/* 00 */ unk32 pad[5];
/* 14 */
UnkStruct_StackTitleScreen(const char *path, unk32 param1);
~UnkStruct_StackTitleScreen();
void func_ov000_02059270(unk32 param1, char *param2, unk32 param3);
void func_ov000_02059288(unk32 param1, char *param2, unk32 param3);
};
+27
View File
@@ -0,0 +1,27 @@
#pragma once
#include "global.h"
#include "types.h"
struct UnkStruct_func_ov000_0207029c {
/* 00 */ STRUCT_PAD(0x00, 0x1D);
/* 20 */ u8 mUnk_1D;
};
struct UnkStruct_func_ov000_020702a8 {
/* 00 */ STRUCT_PAD(0x00, 0x20);
/* 20 */ unk16 mUnk_20;
};
class UnkStruct_027e09a0 {
public:
/* 00 */ unk32 mUnk_00;
UnkStruct_027e09a0();
~UnkStruct_027e09a0();
UnkStruct_func_ov000_0207029c *func_ov000_0207029c(unk32 param1);
UnkStruct_func_ov000_020702a8 *func_ov000_020702a8(unk32 param1);
};
extern UnkStruct_027e09a0 *data_027e09a0;
+50
View File
@@ -1,15 +1,65 @@
#pragma once
#include "System/SysNew.hpp"
#include "global.h"
#include "types.h"
struct UnkStruct_027e09a4_58_78 {
unk32 mUnk_00;
unk32 mUnk_04;
unk8 mUnk_08;
unk8 mUnk_09;
u8 mUnk_0A;
};
struct UnkStruct_func_01ffd400 {
/* 00 */ STRUCT_PAD(0x00, 0x10);
/* 1B */ unk32 mUnk_10;
/* 1B */ unk32 mUnk_14;
/* 1B */ unk8 mUnk_18;
/* 1B */ unk8 mUnk_19;
/* 1B */ unk8 mUnk_1A;
/* 1B */ u8 mUnk_1B;
};
class UnkStruct_027e09a4 : public SysObject {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0C */ u8 mUnk_0C;
/* 0D */ STRUCT_PAD(0x0D, 0x60);
/* 60 */ unk32 mUnk_60;
bool UnkCheck(unk32 value) {
switch (value) {
case 0x03:
case 0x13:
case 0x42:
case 0x5A:
case 0x5B:
case 0x5D:
case 0x63:
return true;
case 0x5C:
case 0x5E:
case 0x5F:
case 0x60:
case 0x61:
case 0x62:
default:
break;
}
return false;
}
~UnkStruct_027e09a4();
UnkStruct_func_01ffd400 *func_01ffd400();
unk8 func_ov000_02070bd0(unk32, unk32);
UnkStruct_027e09a4_58_78 *func_ov000_02070560();
void func_ov000_020707a8(void *param1);
void func_ov000_02070834(void *param1);
void func_ov000_0207087c(unk32 param1);
+61 -1
View File
@@ -1,10 +1,70 @@
#pragma once
#include "files.h"
#include "nitro/math.h"
#include "types.h"
class UnkStruct_027e0cd8_0c {
public:
/* 000 (vtable) */
/* 004 */ unk32 *mUnk_04;
/* 008 */ unk32 *mUnk_08;
/* 00c */ unk32 mUnk_0c;
/* 010 */ unk32 *mUnk_10;
/* 014 */ unk32 *mUnk_14;
/* 018 */ unk32 mUnk_18;
/* 01c */ unk32 *mUnk_1c;
/* 020 */ unk32 mUnk_20;
/* 024 */ unk32 *mUnk_24;
/* 028 */ unk32 mUnk_28;
/* 02c */ unk32 *mUnk_2c;
/* 030 */ unk32 mUnk_30;
/* 034 */ unk32 *mUnk_34;
/* 038 */ unk32 mUnk_38;
/* 03c */ unk32 mUnk_3c;
/* 040 */ unk32 mUnk_40;
/* 044 */ unk32 mUnk_44;
/* 048 */ unk32 mUnk_48;
/* 04c */ unk32 mUnk_4c;
/* 050 */ unk32 mUnk_50;
/* 054 */ unk32 mUnk_54;
/* 058 */ unk32 mUnk_58;
/* 05c */ unk32 mUnk_5c;
/* 060 */ unk32 mUnk_60;
/* 064 */ unk32 mUnk_64;
/* 068 */ unk32 mUnk_68;
/* 06c */ unk32 mUnk_6c;
/* 070 */ unk32 *mUnk_70;
/* 074 */ unk32 *mUnk_74;
/* 078 */ unk32 *mUnk_78;
/* 07c */ unk32 mUnk_7c;
/* 080 */ unk32 mUnk_80;
/* 084 */ unk32 mUnk_84;
/* 088 */ unk32 *mUnk_88;
/* 08c */ unk32 *mUnk_8c;
/* 090 */ unk32 mUnk_90;
/* 094 */ unk32 mUnk_94;
/* 098 */ unk32 mUnk_98;
/* 09c */ unk32 mUnk_9c;
/* 0a0 */ unk32 mUnk_a0;
/* 0a4 */ unk32 mUnk_a4;
/* 0a8 */ unk32 mUnk_a8;
/* 0ac */ unk32 mUnk_ac;
/* 0b0 */ unk32 mUnk_b0;
/* 0b4 */ ZeldaObjectList *mUnk_b4;
/* 0b8 */ ZeldaObjectList *mUnk_b8;
/* 0bc */ ZeldaObjectList *mUnk_bc;
/* 0c0 */ ZeldaObjectList *mUnk_c0;
/* 0c4 */ ZeldaObjectList *mUnk_c4;
/* 0c8 */ ZeldaObjectList *mUnk_c8;
/* 0cc */ ZeldaObjectList *mUnk_cc;
/* 0d0 */ ZeldaObjectList *mUnk_d0;
/* 0d4 */ ZeldaObjectList *mUnk_d4;
/* 0d8 */ ZeldaObjectList *mUnk_d8;
/* 0dc */ ZeldaObjectList *mUnk_dc[8];
/* 0fc */ STRUCT_PAD(0xFC, 0x128);
/* 128 */ u16 mUnk_128;
/* 00 */ virtual void vfunc_00();
/* 04 */ virtual void vfunc_04();
/* 08 */ virtual void vfunc_08();
@@ -24,7 +84,7 @@ public:
class UnkStruct_027e0cd8 {
public:
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 04 */ unk32 *mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ UnkStruct_027e0cd8_0c *mUnk_0c;
/* 10 */
+14
View File
@@ -0,0 +1,14 @@
#pragma once
#include "System/SysNew.hpp"
#include "types.h"
class UnkStruct_027e0cf4 : public SysObject {
public:
~UnkStruct_027e0cf4();
void func_ov021_020f8cdc();
void func_ov021_020f8d20();
};
// gBattleGame?
extern UnkStruct_027e0cf4 *data_027e0cf4;
+14
View File
@@ -0,0 +1,14 @@
#pragma once
#include "System/SysNew.hpp"
#include "types.h"
class UnkStruct_027e0d70 : public SysObject {
public:
~UnkStruct_027e0d70();
void func_ov068_0215e8f8();
void func_ov071_0215e9ac();
void func_ov071_0215eac8();
};
extern UnkStruct_027e0d70 *data_027e0d70;
+19
View File
@@ -0,0 +1,19 @@
#pragma once
#include "Map/MapObjectId.hpp"
#include "types.h"
enum FileType {
FileType_ZOB = 'BLOZ',
};
// .zob
typedef struct ZeldaObjectList {
/* 00 */ FileType type; // always "ZOLB"
/* 04 */ unk32 nSize; // file size?
/* 08 */ unk16 unk_08;
/* 0a */ unk16 unk_0a;
/* 0c */ u16 nEntries; // number of entries
/* 0e */ unk16 unk_0e;
/* 10 */ u32 aIdList[]; // actor id or map object id
} ZeldaObjectList;
+12
View File
@@ -14,3 +14,15 @@
#define SET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] |= 1 << ((pos) & 0x1F))
#define UNSET_FLAG(arr, pos) ((arr)[((u32) (pos)) >> 5] &= ~(1 << ((pos) & 0x1F)))
#define FLAG(index, pos) (((index) << 5) | ((pos) & 0x1F))
//! TODO: improve or remove? idk
#define VA_NARGS_IMPL(_1, _2, _3, _4, N, ...) N
#define VA_NARGS(...) VA_NARGS_IMPL(__VA_ARGS__, 4, 3, 2, 1)
#define GET_FLAGS_1(f1) (1 << (f1))
#define GET_FLAGS_2(f1, f2) GET_FLAGS_1(f1) | (1 << (f2))
#define GET_FLAGS_3(f1, f2, f3) GET_FLAGS_2(f1, f2) | (1 << (f3))
#define GET_FLAGS_4(f1, f2, f3, f4) GET_FLAGS_3(f1, f2, f3) | (1 << (f4))
#define GET_FLAGS_IMPL2(N, ...) GET_FLAGS_##N(__VA_ARGS__)
#define GET_FLAGS_IMPL(N, ...) GET_FLAGS_IMPL2(N, __VA_ARGS__)
#define GET_FLAGS(...) GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__)
#define SET_FLAGS(arr, ...) (*(u32 *) arr = GET_FLAGS_IMPL(VA_NARGS(__VA_ARGS__), __VA_ARGS__))
+4
View File
@@ -47,4 +47,8 @@
#define SUBSCREEN_WIDTH 256
#define SUBSCREEN_HEIGHT 192
#define ALIGN_PREV(X, N) ((X) & ~((N) - 1))
#define ALIGN_NEXT(X, N) ALIGN_PREV(((X) + (N) - 1), N)
#define ALIGN(X, N) ((X + N) & ~N)
#endif