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 */