This commit is contained in:
lepelog
2023-08-09 16:59:04 +02:00
commit 42880ec9ae
195 changed files with 61297 additions and 0 deletions
+141
View File
@@ -0,0 +1,141 @@
#pragma once
#include <d/d_base.h>
#include <d/d_heap.h>
#include <m/mAllocator.h>
#include <UnknownTypeBelongings.h>
// Ghidra: ActorBase
// size: 0xFC
// non-official name
class dAcBase_c : public dBase_c {
public:
/* 0x68 */ mHeapAllocator mHeapAllocator; // mHeapAlloctor
/* 0x84 */ ObjInfoPtr* objInfo; //
/* 0x88 */ int field_0x88;
/* 0x8C */ int field_0x8C;
/* 0x90 */ int field_0x90;
/* 0x94 */ void* soundRelated;
protected:
/* 80501544 */ // vtable
/* 0x08 */ virtual int create();
/* 0x0C */ // virtual int preCreate(); // uses fBase_c::preCreate()
/* 0x10 */ virtual void postCreate(MAIN_STATE_e state);
/* 0x14 */ // virtual int doDelete(); / uses fBase_c::doDelete
/* 0x18 */ virtual int preDelete();
/* 0x1C */ // virtual void postDelete(MAIN_STATE_e state); // uses fBase_c::postDelete
/* 0x20 */ virtual int execute(); // calls either actorExecute/executeInEvent
/* 0x24 */ virtual int preExecute(); // looks at some actor properties
/* 0x28 */ virtual void postExecute(MAIN_STATE_e state); // not fully understood
/* 0x2C */ // virtual int draw(); // uses fBase_c::draw
/* 0x30 */ // virtual int preDraw(); // uses dBase_c::preDraw
/* 0x34 */ // virtual void postDraw(MAIN_STATE_e state); // uses dBase_c::postDraw
/* 0x38 */ // virtual void deleteReady(); // uses fBase_c::deleteReady
/* 0x3C */ // virtual bool entryFrmHeap(unsigned long size, EGG::Heap *parentHeap); // uses fBase_c::entryFrmHeap
/* 0x40 */ // virtual bool entryFrmHeapNonAdjust(unsigned long size, EGG::Heap *parentHeap); // uses fBase_c::entryFrmHeapNonAdjust
/* 0x44 */ virtual bool createHeap();
/* 0x48 */ virtual ~dAcBase_c();
// Start of dAcBase_c vtable additions (after dBase_c)
/* 0x4C */ virtual int actorCreate(); // name is assumed
/* 0x50 */ virtual int actorReCreate(); // name is assumed
/* 0x54 */ virtual int actorExecute(); // name is assumed
/* 0x58 */ virtual int actorExecuteInEvent(); // name is assumed
/* 0x5C */ virtual void unkVirtFunc_0x5C();
/* 0x60 */ virtual void unkVirtFunc_0x60();
/* 0x64 */ virtual bool restorePosRotFromCopy();
/* 0x68 */ virtual void* getCurrentEventActor();
/* 0x6C */ virtual void unkVirtFunc_0x6C();
/* 0x70 */ virtual void doInteraction(s32);
public:
dAcBase_c();
public:
// funcs found in TU
static void setTempCreateParams( \
Vec3f* pos, Vec3s* rot, Vec3f* scale, \
s32 roomId, u32 params2, dAcBase_c* parent, \
u8 subtype, s16 unkFlag, u8 viewClipIdx,\
ObjInfoPtr* objInfo );
void* FUN_8002c690();
int initAllocatorWork1Heap(int size, char* name);
int initAllocator(int size, char* name, EGG::Heap* heap);
bool addActorToRoom(s32 roomId);
void setBit_field_0xE8(s32);
u32 itemDroppingAndGivingRelated(Vec3f* spawnPos, int subtype);
void fillUpperParams2Byte();
u32 getParams2_ignoreLower();
void setParams2Upper_ignoreLower(u32 val);
u8 getParams2UpperByte();
void setParams2UpperByte(u32 val);
static u32 buildParams2(u32 lower, u8 upper);
u32 getParams2Lower();
static dAcBase_c* findActor(char* objName, dAcBase_c* parent);
static dAcBase_c* searchActor(dAcBase_c& optionalParent);
// Kinda performs the code of the first param on every actor (second param is optional parent)
static void forEachActor(void*, dAcBase_c&);
// Not really static, but we currently dont have a type for the return (not just simply a s16)
static void getXZAngleToPlayer(s16&, dAcBase_c&);
// returns true if under the distThresh, False if not. the actual distance is returned in outDist
bool getDistanceToActor(dAcBase_c& actor, f32 distThresh, f32* outDist);
// same concept as above
bool getDistanceAndAngleToActor(dAcBase_c& actor, f32 distThresh, s16 yAngle, s16 xAngle, f32* outDist, s16* outDiffAngleY, s16* outDiffAngleX);
bool isWithinPlayerRadius(f32 radius);
bool getDistanceAndAngleToPlayer(f32 distThresh, s16 yAngle, s16 xAngle, f32* outDist, s16* outDiffAngleY, s16* outDiffAngleX);
f32 getDistToPlayer();
f32 getSquareDistToPlayer();
void updateRoomId(f32 yOffs);
bool isRoomFlags_0x6_Set();
// Begin Sound Effect Related
void FUN_8002d590();
void FUN_8002d5b0();
void playSound();
void FUN_8002d600();
void FUN_8002d630();
void FUN_8002d6d0();
void playSoundEffect1();
void FUN_8002d740();
void FUN_8002d770();
void FUN_8002d7a0();
void FUN_8002d7d0();
void FUN_8002d7f0();
void FUN_8002d810();
void FUN_8002d830();
void FUN_8002d860();
void FUN_8002d880();
// End Sound Effect Related
void FUN_8002d890();
void setActorRef(dBase_c&);
// next three funcs are related
void setUnkFlag();
void FUN_8002d940();
void FUN_8002d960();
static dAcBase_c createActor(ProfileName actorId, u32 params1, Vec3f* pos, Vec3s* rot, \
Vec3f* scale, u32 params2, s32 roomId, dBase_c* ref);
static dAcBase_c createActorUnkGroup3(ProfileName actorId, u32 params1, Vec3f* pos, Vec3s* rot, \
Vec3f* scale, u32 params2, s32 roomId, dBase_c* ref);
void FUN_8002dc20(s16*, s16*);
void incrementKillCounter();
void FUN_8002dcd0();
void FUN_8002dd10();
void FUN_8002dd50();
void FUN_8002dd90();
void FUN_8002ddd0();
void FUN_8002de30();
public:
// static vars
static u32 s_Create_RoomId;
static u32 s_Create_Params2;
static u16 s_Create_UnkFlags;
static u8 s_Create_ViewClipIdx;
static Vec3f* s_Create_Position;
static Vec3s* s_Create_Rotation;
static Vec3f* s_Create_Scale;
static dAcBase_c* s_Create_Parent;
static ObjInfoPtr* s_Create_ObjInfo;
static u8 s_Create_Subtype;
};
+10
View File
@@ -0,0 +1,10 @@
#pragma once
#include <d/a/obj/d_a_obj_base.h>
// Ghidra: ActorEnemyBase
// size:
// non-official name
class dAcEnBase_c : public dAcOBase_c {
};
+12
View File
@@ -0,0 +1,12 @@
#pragma once
#include <d/a/obj/d_a_obj_base.h>
// This is the NPC base. Most npcs actually use dAcOrdinaryNpc, but this just is a simpler one?
// Ghidra: ActorNpcBase
// size: 0x6e4
// official name
class dAcNpc_c : public dAcOBase_c {
};
+11
View File
@@ -0,0 +1,11 @@
#pragma once
#include <d/a/npc/d_a_npc.h>
// Ghidra: AcOrdinaryNpc
// size:
// official name
class dAcOrdinaryNpc_c : public dAcNpc_c {
};
+10
View File
@@ -0,0 +1,10 @@
#pragma once
#include <d/a/d_a_base.h>
// Ghidra: ActorObjectBase
// size: 0x330
// non-official name
class dAcOBase_c : public dAcBase_c {
};
+10
View File
@@ -0,0 +1,10 @@
#pragma once
#include <d/a/obj/d_a_obj_base.h>
// Ghidra: AcItem
// Size: 0xd68
// official name
class dAcItem_c : public dAcOBase_c {
};
+41
View File
@@ -0,0 +1,41 @@
#pragma once
#include <f/f_base.h>
#include <c/c_owner_set.h>
// Ghidra: dBase_c
// size: 0x68
// non-official but likely name
class dBase_c : public fBase_c{
public:
/* 80050800 */ dBase_c();
/* 80050890 */ virtual int preExecute();
/* 800508f0 */ virtual void postExecute(MAIN_STATE_e state);
/* 80050920 */ virtual int preDraw();
/* 80050860 */ virtual void postDraw(MAIN_STATE_e state);
/* 8002c530 */ virtual ~dBase_c();
public:
u32 baseProperties; // field from profile init
public:
/* 80050980 */ static void resetFlags();
/* 800509a0 */ static bool isActorPlayer(dBase_c&);
/* 800509e0 */ static void initLoader();
/* 80050a00 */ static dBase_c* createBase(ProfileName, dBase_c*, unsigned long, u8);
/* 80050a10 */ static dBase_c* createRoot(ProfileName, unsigned long, u8);
private:
/* 800509c0 */ static int loadAsyncCallback();
/* 800509d0 */ static void unloadCallback();
inline bool isProcControlFlag(u32 flag) const { return (baseProperties & flag) != 0; }
public:
// /* 805750c0 */ static u32 ACTOR_SHOULD_UPDATE_FLAGS;
// /* 805750c0 */ static u32 ACTOR_SHOULD_DRAW_FLAGS;
// /* 805750c0 */ static u32 ACTOR_SHOULD_UNK_FLAGS;
// /* 80575bc0 */ static fProfile::fBaseProfile_c** DAT_ACTOR_ALLOCATION_FUNCTIONS;
friend class fBase_c;
};
+8
View File
@@ -0,0 +1,8 @@
#pragma once
#include <lib/egg/core/eggHeap.h>
class dHeap {
public:
static EGG::Heap* work1Heap;
};