mirror of
https://github.com/zeldaret/st
synced 2026-05-31 17:32:08 -04:00
Started decompiling ActorHeart (#41)
* feat: change symbols for ActorHeart * feat: begin ActorHeart decompilation * feat: continue decompilation (some changes should be refactored) * improvements * fix build issues * feat: improve matching code * fix: remove back nitro/math * feat: load s8 as u8 * refactor: remove shady variadic function * feat: better function, reg order issue * refactor: switch EC, F0 and F4 to a single VecFx32 variable and improve vfunc_20 * feat: improvements in vfunc_v20 * docs: add what should be written in comments * feat: match with temporary unknown actor structure * style: remove unnecessary curly brackets in switch cases * style: move external functions to the top * docs: mark unmatched functions as non-matching * refactor: use FLOAT_TO_Q20 instead of raw hex values * style: remove unnecessary cast * refactor: use macros to manipulate flags * refactor: better floating values * refactor: use hex values over bin values * feat: use ROUND_Q20 to increase matching * refactor: use Cylinder::Init instead of assigning each variable * refactor: change mangled names --------- Co-authored-by: Yanis002 <35189056+Yanis002@users.noreply.github.com>
This commit is contained in:
@@ -61,6 +61,8 @@ public:
|
||||
ActorProfile *GetProfileFromId(ActorId actorId);
|
||||
};
|
||||
|
||||
class Actor_c4;
|
||||
|
||||
typedef u32 ActorFlags;
|
||||
enum ActorFlag_ {
|
||||
ActorFlag_Alive = FLAG(0, 0),
|
||||
@@ -195,6 +197,7 @@ public:
|
||||
void func_ov000_02098a88(unk32 param1, unk32 param2);
|
||||
|
||||
void func_ov017_020bf5c4(VecFx32 *param1, unk32 param2, unk32 param3, unk32 param4, unk32 param5);
|
||||
void func_ov017_020bf9c8(Actor *param1);
|
||||
};
|
||||
|
||||
struct Actor_c4_stack {
|
||||
@@ -207,6 +210,19 @@ public:
|
||||
Actor_c4_Base(void *param1, unk32 param2);
|
||||
};
|
||||
|
||||
class Actor_9c {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */
|
||||
|
||||
/* 00 */ virtual void vfunc_00(); // corresponds to func_ov000_02097c14
|
||||
/* 04 */ virtual void vfunc_04(); // corresponds to func_ov000_02097c20
|
||||
/* 08 */
|
||||
|
||||
Actor_9c();
|
||||
void func_ov000_02097bec();
|
||||
};
|
||||
|
||||
class Actor_c4 : public Actor_c4_Base {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
#pragma once
|
||||
|
||||
#include "Actor/Actor.hpp"
|
||||
#include "Actor/ActorProfile.hpp"
|
||||
#include "ActorRupee.hpp"
|
||||
#include "types.h"
|
||||
|
||||
class ActorHeart_c4 : public Actor_c4 {
|
||||
public:
|
||||
ActorHeart_c4(Actor *param1);
|
||||
|
||||
/* 00 */ virtual unk32 vfunc_00(Actor_c4_stack param1, unk32 param2) override;
|
||||
/* 04 */ virtual void vfunc_04() override;
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 0C */ virtual void vfunc_0c(unk32 param1) override;
|
||||
};
|
||||
|
||||
class ActorHeart : public Actor {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 94 */ u16 mUnk_94;
|
||||
/* 96 */ u16 mUnk_96;
|
||||
/* 98 */ Actor_9c mUnk_98;
|
||||
/* 9C */ unk32 mUnk_9C;
|
||||
/* A0 */ unk32 mUnk_A0;
|
||||
/* A4 */ unk32 mUnk_A4;
|
||||
/* A8 */ STRUCT_PAD(0xA8, 0xB4);
|
||||
/* B4 */ unk16 mUnk_B4;
|
||||
/* B6 */ STRUCT_PAD(0xB6, 0xB8);
|
||||
/* B8 */ s16 mUnk_B8;
|
||||
/* BA */ unk16 mUnk_BA;
|
||||
/* BC */ unk16 mUnk_BC;
|
||||
/* BE */ s8 mUnk_BE;
|
||||
/* BF */ STRUCT_PAD(0xBF, 0xC0);
|
||||
/* C0 */ unk32 mUnk_C0;
|
||||
/* C4 */ unk32 mUnk_C4;
|
||||
/* C8 */ ActorHeart_c4 mUnk_C8;
|
||||
/* EC */ VecFx32 mUnk_EC;
|
||||
|
||||
ActorHeart();
|
||||
|
||||
/* 18 */ virtual bool vfunc_18(unk32 param1) override;
|
||||
/* 20 */ virtual void vfunc_20() override;
|
||||
/* 2C */ virtual void vfunc_2c(unk32 param1) override;
|
||||
/* 4C */ virtual ~ActorHeart() override {};
|
||||
|
||||
void func_ov031_020f0750();
|
||||
void func_ov031_020eed64(ActorParams *param_2, unk32 param_3, unk32 param_4);
|
||||
void func_ov031_020ef1b4(unk16 param_2);
|
||||
void func_ov031_020ef208();
|
||||
void func_ov031_020ef4a8();
|
||||
void func_ov031_020ef528();
|
||||
void func_ov031_020ef570();
|
||||
void func_ov031_020ef698();
|
||||
|
||||
// data_ov031_02113d74
|
||||
void func_ov031_020ef2f8();
|
||||
void func_ov031_020ef334();
|
||||
void func_ov031_020ef3a0();
|
||||
void func_ov031_020ef3d0();
|
||||
void func_ov031_020ef444();
|
||||
void func_ov031_020ef458();
|
||||
|
||||
// data_ov031_02113da4
|
||||
void func_ov031_020ef2ec();
|
||||
void func_ov031_020ef320();
|
||||
void func_ov031_020ef35c();
|
||||
void func_ov031_020ef3b8();
|
||||
void func_ov031_020ef430();
|
||||
void func_ov031_020ef448();
|
||||
};
|
||||
|
||||
class ActorProfileHeart : public ActorProfile {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
|
||||
ActorProfileHeart();
|
||||
~ActorProfileHeart() {}
|
||||
|
||||
/* 0C */ virtual Actor *Create();
|
||||
|
||||
static ActorProfileHeart *GetProfile();
|
||||
};
|
||||
@@ -19,19 +19,6 @@ enum RupeeId_ {
|
||||
/* 7 */ RupeeId_7,
|
||||
};
|
||||
|
||||
class Actor_9c {
|
||||
public:
|
||||
/* 00 (vtable) */
|
||||
/* 04 */
|
||||
|
||||
/* 00 */ virtual void vfunc_00(); // corresponds to func_ov000_02097c14
|
||||
/* 04 */ virtual void vfunc_04(); // corresponds to func_ov000_02097c20
|
||||
/* 08 */
|
||||
|
||||
Actor_9c();
|
||||
void func_ov000_02097bec();
|
||||
};
|
||||
|
||||
class ActorRupee_c4 : public Actor_c4 {
|
||||
public:
|
||||
ActorRupee_c4(Actor *param1);
|
||||
@@ -76,8 +63,6 @@ public:
|
||||
/* 2C */ virtual void vfunc_2c(unk32 param1) override;
|
||||
/* 4C */ virtual ~ActorRupee() override;
|
||||
|
||||
void func_ov017_020bf9c8(Actor *param1);
|
||||
|
||||
void func_ov031_020e8d2c(VecFx32 *param1, u8 param2, unk32 param3, unk32 param4);
|
||||
void func_ov031_020e8fec();
|
||||
void func_ov031_020e9068();
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
//! TODO: This file was generated automatically and might contain errors
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Actor/Actor.hpp"
|
||||
#include "Actor/ActorProfile.hpp"
|
||||
#include "global.h"
|
||||
#include "types.h"
|
||||
|
||||
class ActorUnkHERT_c4 : public Actor_c4 {
|
||||
public:
|
||||
ActorUnkHERT_c4(Actor *param1);
|
||||
|
||||
/* 00 */ virtual unk32 vfunc_00(Actor_c4_stack param1, unk32 param2) override;
|
||||
/* 04 */ virtual void vfunc_04() override;
|
||||
/* 08 */ virtual void vfunc_08() override;
|
||||
/* 0C */ virtual void vfunc_0c(unk32 param1) override;
|
||||
};
|
||||
|
||||
class ActorUnkHERT : public Actor {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
/* 94 */
|
||||
|
||||
ActorUnkHERT();
|
||||
|
||||
/* 4C */ virtual ~ActorUnkHERT() override;
|
||||
|
||||
void func_ov031_020eed64(void);
|
||||
void func_ov031_020eeed8(void);
|
||||
void func_ov031_020eeee8(void);
|
||||
void func_ov031_020ef1b4(void);
|
||||
void func_ov031_020ef208(void);
|
||||
void func_ov031_020ef2ec(void);
|
||||
void func_ov031_020ef2f8(void);
|
||||
void func_ov031_020ef320(void);
|
||||
void func_ov031_020ef334(void);
|
||||
void func_ov031_020ef35c(void);
|
||||
void func_ov031_020ef3a0(void);
|
||||
void func_ov031_020ef3b8(void);
|
||||
void func_ov031_020ef3d0(void);
|
||||
void func_ov031_020ef430(void);
|
||||
void func_ov031_020ef444(void);
|
||||
void func_ov031_020ef448(void);
|
||||
void func_ov031_020ef458(void);
|
||||
void func_ov031_020ef4a8(void);
|
||||
void func_ov031_020ef528(void);
|
||||
void func_ov031_020ef570(void);
|
||||
void func_ov031_020ef5e8(void);
|
||||
void func_ov031_020ef698(void);
|
||||
void func_ov031_020ef6f8(void);
|
||||
void func_ov031_020ef730(void);
|
||||
void func_ov031_020ef774(void);
|
||||
void func_ov031_020ef794(void);
|
||||
void func_ov031_020ef7bc(void);
|
||||
};
|
||||
|
||||
class ActorProfileUnkHERT : public ActorProfile {
|
||||
public:
|
||||
/* 00 (base) */
|
||||
|
||||
ActorProfileUnkHERT();
|
||||
~ActorProfileUnkHERT();
|
||||
|
||||
/* 0C */ virtual Actor *Create();
|
||||
|
||||
static ActorProfileUnkHERT *GetProfile();
|
||||
};
|
||||
@@ -84,6 +84,7 @@ public:
|
||||
void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, u16 param3);
|
||||
|
||||
void func_ov000_0208bbd4(unk32 param1, VecFx32 *param2, void *param3);
|
||||
void func_ov000_0208bc9c(unk32 param1, unk32 param2);
|
||||
|
||||
static UnkStruct_027e0ce0_34 *func_ov000_0205c904();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user