ActorCharacter OK (#162)

* ActorCharacter 93%

* ActorCharacter 98%

* ActorCharacter OK

* Fix broken matches
This commit is contained in:
Aetias
2026-05-11 20:34:17 +02:00
committed by GitHub
parent d02c870d1d
commit e704ec9942
21 changed files with 722 additions and 209 deletions
+4 -4
View File
@@ -203,15 +203,15 @@ public:
/* 68 */ virtual void vfunc_68();
/* 6c */ virtual bool vfunc_6c();
/* 70 */ virtual bool vfunc_70();
/* 74 */ virtual void vfunc_74();
/* 74 */ virtual void vfunc_74(ActorRef *ref);
/* 78 */ virtual bool vfunc_78();
/* 7c */ virtual void vfunc_7c();
/* 7c */ virtual void vfunc_7c(ActorRef *ref);
/* 80 */ virtual void vfunc_80();
/* 84 */ virtual void vfunc_84();
/* 88 */ virtual void vfunc_88();
/* 8c */ virtual bool vfunc_8c();
/* 90 */ virtual bool vfunc_90();
/* 94 */ virtual void vfunc_94();
/* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2);
/* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2);
/* 98 */ virtual bool vfunc_98();
/* 9c */ virtual bool vfunc_9c();
/* a0 */ virtual bool TrySetTransform(Transform *transform);
+128 -49
View File
@@ -1,5 +1,6 @@
#pragma once
#include "Actor/ActorRef.hpp"
#include "Render/ModelRender.hpp"
#include "global.h"
#include "nds/math.h"
@@ -23,11 +24,11 @@ public:
/* 000 (base) */
/* 158 */ UnkStruct_ov000_020d18f4 mUnk_158;
/* 1b4 */ unk32 mUnk_1b4;
/* 1b8 */ unk32 (*mUnk_1b8)(unk32);
/* 1bc */ unk32 mUnk_1bc;
/* 1b8 */ bool (*mUnk_1b8)(ActorCharacterBase *);
/* 1bc */ ActorCharacterBase *mUnk_1bc;
/* 1c0 */ bool mUnk_1c0;
/* 1c1 */ bool mUnk_1c1;
/* 1c2 */ unk8 mUnk_1c2;
/* 1c2 */ bool mUnk_1c2;
/* 1c3 */ bool mUnk_1c3;
/* 1c4 */
@@ -58,12 +59,12 @@ public:
};
struct ActorCharacter_1c4 {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 00 */ Vec3p mUnk_00;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
/* 14 */
ActorCharacter_1c4();
};
class ActorCharacterModel : public ModelRender {
@@ -77,8 +78,7 @@ public:
/* 6a */ unk16 mUnk_6a;
/* 6c */ unk16 mUnk_6c;
/* 6e */ unk16 mUnk_6e;
/* 70 */ unk32 mUnk_70;
/* 74 */ unk32 mUnk_74;
/* 70 */ ActorRef mUnk_70;
/* 78 */ Vec3p mUnk_78;
/* 84 */ unk32 mUnk_84;
/* 88 */ unk32 mUnk_88;
@@ -88,58 +88,128 @@ public:
/* 8f */ unk8 mUnk_8f;
/* 90 */
/* 00 */ virtual ~ActorCharacterModel() override;
/* 00 */ virtual ~ActorCharacterModel() override {}
/* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override;
/* 40 */
ActorCharacterModel();
void func_ov014_0214a92c(Vec3p *param1, Vec3p *param2, s16 angle);
unk32 func_ov014_0214aa0c(Vec3p *param1, s16 angle);
};
class ActorCharacter_288 : public UnkStruct_ov000_020c0c08 {
class ActorCharacter_1d8_b0 : public UnkStruct_ov000_020c0c08 {
public:
/* 00 (base) */
/* 24 */ UnkStruct_ov000_020c0c08_04 *mUnk_24;
/* 28 */ PAD(0x28, 0x80);
/* 24 */ UnkStruct_ov000_020c0c08_04 mUnk_24;
/* 44 */ PAD(0x44, 0x80);
/* 80 */
ActorCharacter_288();
/* 00 */ virtual ~ActorCharacter_1d8_b0() override;
/* 08 */
inline ActorCharacter_1d8_b0();
};
struct ActorCharacter_430_04_04 {
/* 00 */ PAD(0x00, 0x04);
/* 04 */ Vec3p mUnk_04;
/* 10 */ PAD(0x10, 0x24);
/* 24 */
};
struct ActorCharacter_430_04 {
/* 00 */ u8 *mUnk_00;
/* 04 */ ActorCharacter_430_04_04 *mUnk_04;
/* 08 */
};
struct ActorCharacter_430 {
/* 00 */ PAD(0x00, 0x18);
/* 00 */ PAD(0x00, 0x4);
/* 04 */ ActorCharacter_430_04 *mUnk_04;
/* 08 */ PAD(0x08, 0xc);
/* 0c */ unk8 mUnk_0c;
/* 0d */ PAD(0x0d, 0x18);
/* 18 */
ActorCharacter_430();
~ActorCharacter_430();
bool func_ov000_020c66e4(Vec3p *pos, s16 angle, unk32 param3);
bool func_ov000_020c6794(Vec3p *pos);
void func_ov000_020c6838(Vec3p *pos, unk32 param2, s16 angle, unk32 param4, Vec3p *vel, u16 *pAngle);
bool func_ov000_020c6e30(Vec3p *vec);
void func_ov000_020c6f08(Vec3p *vec);
};
struct ActorCharacter_1d8_248 {
/* 00 */ unk32 mUnk_00[2];
/* 08 */ unk32 mUnk_08;
/* 0c */ PAD(0x0c, 0x0e);
/* 0e */ unk8 mUnk_0e;
/* 0f */ unk8 mUnk_0f;
/* 10 */
inline ActorCharacter_1d8_248() {
mUnk_08 = 0;
mUnk_0e = 1;
mUnk_0f = 0;
mUnk_00[0] = -1;
mUnk_00[1] = -1;
}
};
class ActorCharacter_1d8 : public UnkStruct_ov000_020c5c2c {
public:
/* 000 (base) */
/* 020 */ ActorCharacterModel mUnk_020;
/* 0b0 */ ActorCharacter_1d8_b0 mUnk_0b0[2];
/* 1b0 */ ActorCharacter_1d8_b0 mUnk_1b0;
/* 230 */ unk32 mUnk_230;
/* 234 */ unk32 mUnk_234;
/* 238 */ unk32 mUnk_238;
/* 23c */ unk32 mUnk_23c;
/* 240 */ unk32 mUnk_240;
/* 244 */ unk32 mUnk_244;
/* 248 */ ActorCharacter_1d8_248 mUnk_248;
/* 00 */ virtual void vfunc_00(unk32 param1, unk32 *param2, unk32 *param3) override; // func_ov014_02145bcc
/* 04 */ virtual void vfunc_04() override; // func_ov014_02146194
/* 0c */
inline ActorCharacter_1d8(void *param1) :
UnkStruct_ov000_020c5c2c(param1, &mUnk_020, &mUnk_0b0[0]),
mUnk_230(0),
mUnk_234(0),
mUnk_238(0),
mUnk_23c(0),
mUnk_240(0x1000),
mUnk_244(0x11f) {}
void func_ov014_02145cac();
bool func_ov014_02145f0c(unk32 param1);
inline bool UnkFunc1(unk32 param1) {
return param1 == mUnk_248.mUnk_00[mUnk_248.mUnk_08];
}
};
class ActorCharacter : public ActorCharacterBase {
public:
/* 000 (base) */
/* 1c4 */ ActorCharacter_1c4 mUnk_1c4;
/* 1d8 */ UnkStruct_ov000_020c5c2c mUnk_1d8;
/* 1f8 */ ActorCharacterModel mUnk_1f8;
/* 288 */ ActorCharacter_288 mUnk_288[2];
/* 388 */ ActorCharacter_288 mUnk_388;
/* 408 */ unk32 mUnk_408;
/* 40c */ unk32 mUnk_40c;
/* 410 */ unk32 mUnk_410;
/* 414 */ unk32 mUnk_414;
/* 418 */ unk32 mUnk_418;
/* 41c */ unk32 mUnk_41c;
/* 420 */ unk32 mUnk_420;
/* 424 */ unk32 mUnk_424;
/* 428 */ unk32 mUnk_428;
/* 428 */ PAD(0x42c, 0x42e);
/* 42e */ unk8 mUnk_42e;
/* 42f */ unk8 mUnk_42f;
/* 1d8 */ ActorCharacter_1d8 mUnk_1d8;
/* 430 */ ActorCharacter_430 mUnk_430;
/* 448 */ unk32 mUnk_448;
/* 44c */ PAD(0x44c, 0x454);
/* 44c */ unk32 mUnk_44c;
/* 450 */ unk32 mUnk_450;
/* 454 */ unk32 mUnk_454;
/* 458 */ unk32 mUnk_458;
/* 44c */ PAD(0x45c, 0x460);
/* 44c */ unk32 mUnk_45c;
/* 460 */ unk32 mUnk_460;
/* 464 */ unk32 mUnk_464;
/* 468 */ unk8 mUnk_468;
/* 469 */ unk8 mUnk_469;
/* 468 */ bool mUnk_468;
/* 469 */ bool mUnk_469;
/* 46a */ PAD(0x46a, 0x46c);
/* 46c */ unk32 mUnk_46c[1];
/* 470 */
@@ -148,44 +218,53 @@ public:
/* 08 */ virtual bool Init() override;
/* 20 */ virtual void vfunc_20(bool param1) override;
/* 40 */ virtual bool IsHitboxTouched(bool param1) override;
/* 68 */ virtual void vfunc_68() override;
/* 74 */ virtual void vfunc_74() override;
/* 74 */ virtual void vfunc_74(ActorRef *ref) override;
/* 78 */ virtual bool vfunc_78() override;
/* 7c */ virtual void vfunc_7c() override;
/* 7c */ virtual void vfunc_7c(ActorRef *ref) override;
/* 80 */ virtual void vfunc_80() override;
/* 84 */ virtual void vfunc_84() override;
/* 90 */ virtual bool vfunc_90() override;
/* 94 */ virtual void vfunc_94() override;
/* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2) override;
/* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2) override;
/* 98 */ virtual bool vfunc_98() override;
/* 9c */ virtual bool vfunc_9c() override;
/* c8 */ virtual void vfunc_c8() override;
/* cc */ virtual void vfunc_cc() override;
/* d0 */ virtual void vfunc_d0() override;
/* ec */ virtual void vfunc_ec(unk32 param1);
/* f0 */ virtual void vfunc_f0(unk32 param1);
/* f0 */ virtual void vfunc_f0(unk32 param1, unk32 param2);
/* f4 */
ActorCharacter();
void func_ov014_02144d94();
void func_ov014_02144dec();
void func_ov014_02144e14();
void func_ov014_02144e28();
void func_ov014_02144e3c();
void func_ov014_02144e58();
void func_ov014_02144e74();
bool func_ov014_02144e14();
bool func_ov014_02144e28();
bool func_ov014_02144e3c();
bool func_ov014_02144e58();
bool func_ov014_02144e74();
void func_ov014_02145178();
void func_ov014_021451f0(unk32 *param1);
void func_ov014_02145258();
unk32 func_ov014_021452b0();
unk32 func_ov014_02145318();
void func_ov014_021453f4();
void func_ov014_02145414();
void func_ov014_0214548c();
void func_ov014_021453f4(unk32 param1);
void func_ov014_02145414(unk32 param1, unk32 param2);
void func_ov014_0214548c(unk32 param1);
void func_ov014_02145508();
void func_ov014_0214552c();
static bool func_ov014_02145520(ActorCharacterBase *actor);
bool func_ov014_0214552c();
void func_ov014_0214591c();
inline unk32 UnkInline1() {
unk32 ret = 1;
if (mUnk_458 != -1) {
ret = mUnk_458;
mUnk_458 = -1;
}
return ret;
}
};
class ActorGenericCharacter : public ActorCharacter {
+4 -4
View File
@@ -43,7 +43,7 @@ public:
class ActorNaviBase_Unk3 : public ModelRender {
public:
/* 00 */ virtual ~ActorNaviBase_Unk3() {}
/* 3c */ virtual void vfunc_3c() override;
/* 3c */ virtual void vfunc_3c(ModelRenderCommandsData *renderData) override;
/* 40 */
ActorNaviBase_Unk3(ItemModel *param1);
@@ -85,12 +85,12 @@ public:
/* 30 */ virtual unk32 vfunc_30() override;
/* 34 */ virtual void GetOffsetPos(Vec3p *pos) override;
/* 38 */ virtual unk32 vfunc_38() override;
/* 74 */ virtual void vfunc_74() override;
/* 74 */ virtual void vfunc_74(ActorRef *) override;
/* 78 */ virtual bool vfunc_78() override;
/* 80 */ virtual void vfunc_80() override;
/* 84 */ virtual void vfunc_84() override;
/* 90 */ virtual bool vfunc_90() override;
/* 94 */ virtual void vfunc_94() override;
/* 90 */ virtual bool vfunc_90(unk32 param1, unk32 param2) override;
/* 94 */ virtual void vfunc_94(unk32 param1, unk32 param2) override;
/* b4 */ virtual FairyId GetFairyId() = 0;
/* b8 */ virtual s32 vfunc_b8();
/* bc */ virtual bool vfunc_bc(unk32 param1, unk8 param2, s32 param3);
+1 -1
View File
@@ -14,7 +14,7 @@ public:
/* c */
/* 00 */ virtual ~ActorRope_Unk_0219a3b0() override;
/* 08 */ virtual void vfunc_08(unk16 *param1) override;
/* 08 */ virtual bool vfunc_08(UnkStruct_ov000_020beba8_08 *param1) override;
/* 10 */ virtual bool vfunc_10(s32 *param1) override;
/* 1c */
+24 -10
View File
@@ -117,12 +117,21 @@ struct FlagsData {
/* 40 */
};
struct astruct_23 {
struct UnkStruct_ov000_0209a50c {
/* 00 */ unk32 mUnk_00;
/* 04 */ unk32 mUnk_04;
/* 08 */ unk32 mUnk_08;
/* 0c */ unk32 mUnk_0c;
/* 10 */ unk32 mUnk_10;
/* 08 */ unk8 mUnk_08;
/* 09 */ unk8 mUnk_09;
/* 0a */ unk8 mUnk_0a;
/* 0b */ unk8 mUnk_0b;
/* 0c */ unk8 mUnk_0c;
/* 0d */ unk8 mUnk_0d;
/* 0e */ unk8 mUnk_0e;
/* 0f */ unk8 mUnk_0f;
/* 10 */ unk8 mUnk_10;
/* 11 */ unk8 mUnk_11;
/* 12 */ unk8 mUnk_12;
/* 13 */ unk8 mUnk_13;
/* 14 */ unk8 mUnk_14;
/* 15 */ unk8 mUnk_15;
/* 16 */ bool mUnk_16;
@@ -133,7 +142,12 @@ struct astruct_23 {
/* 1c */ unk16 mUnk_1c;
/* 1e */ unk8 mUnk_1e;
/* 1f */ unk8 mUnk_1f;
/* 20 */ unk8 mUnk_20[0x94 - 0x20];
/* 20 */ unk32 mUnk_20;
/* 24 */ unk32 mUnk_24;
/* 28 */ unk32 mUnk_28;
/* 2c */ PAD(0x2c, 0x34);
/* 34 */ unk32 mUnk_34;
/* 38 */ PAD(0x38, 0x94);
/* 94 */ unk32 mUnk_94;
/* 98 */ unk16 mUnk_98;
/* 9a */ unk16 mUnk_9a;
@@ -146,8 +160,8 @@ struct astruct_23 {
/* ac */ unk32 mUnk_ac;
/* b0 */
astruct_23();
~astruct_23();
UnkStruct_ov000_0209a50c();
~UnkStruct_ov000_0209a50c();
};
struct AdventureFlags_44 {
@@ -156,7 +170,7 @@ struct AdventureFlags_44 {
bool func_ov000_02098c68();
bool func_ov000_02098d20();
bool func_ov000_02098fa4(s32 param1);
bool func_ov000_020990a4(astruct_23 *param1);
bool func_ov000_020990a4(UnkStruct_ov000_0209a50c *param1);
s32 func_ov000_0209907c();
};
@@ -178,14 +192,14 @@ public:
bool func_ov00_02097750();
bool Get(AdventureFlag flag);
void Set(AdventureFlag flag, bool value);
void func_ov00_02097810(s32 param1, astruct_23 *param2);
unk32 func_ov00_02097810(UnkStruct_ov000_0209a50c *param2);
unk32 func_ov00_02097968(unk32 param1);
unk32 func_ov00_02097a44(unk32 param1, s32 param2);
bool func_ov00_02097b9c(s32 param1);
bool func_ov00_02097bac();
bool func_ov00_02097bbc();
bool func_ov00_02097bcc(s32 param1);
bool func_ov00_02097bcc(astruct_23 *param1);
bool func_ov00_02097bcc(UnkStruct_ov000_0209a50c *param1);
s32 func_ov00_02097c08();
bool Get_FlagsUnk_30_Flag(s32 index);
u8 Get_FlagsUnk_49(s32 index);
+29 -2
View File
@@ -3,6 +3,33 @@
#include "global.h"
#include "types.h"
struct UnkStruct_ov000_020c5c2c {
PAD(0x00, 0x20);
#include "Actor/Actor.hpp"
#include "Render/ModelRender.hpp"
#include "System/SysNew.hpp"
#include "Unknown/UnkStruct_0202e1a0.hpp"
#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
struct UnkStruct_ov000_020c5c2c_10 {
/* 00 */ PAD(0x00, 0x0c);
/* 0c */ UnkStruct_0202e1a0 mUnk_0c;
/* 24 */
};
class UnkStruct_ov000_020c5c2c : public SysObject {
public:
/* 00 (vtable) */
/* 04 */ PAD(0x04, 0x10);
/* 10 */ UnkStruct_ov000_020c5c2c_10 *mUnk_10;
/* 14 */ PAD(0x14, 0x1c);
/* 1c */ Actor *mActor;
/* 20 */
/* 00 */ virtual void vfunc_00(unk32 param1, unk32 *param2, unk32 *param3); // func_ov000_020c5d34
/* 04 */ virtual void vfunc_04(); // func_ov000_020c5e54
/* 08 */ virtual void vfunc_08(); // func_ov000_020c5e58
/* 0c*/
UnkStruct_ov000_020c5c2c(void *param1, ModelRender *param2, UnkStruct_ov000_020c0c08 *param3);
void func_ov000_020c5f1c();
};
@@ -0,0 +1,15 @@
#pragma once
#include "Actor/ActorRef.hpp"
#include "global.h"
#include "types.h"
struct UnkStruct_ov000_020e8b08 {
/* 00 */ PAD(0x00, 0x20);
/* 20 */ ActorRef mUnk_20[1]; // more than 1, unclear how many
/* 28 */ PAD(0x28, 0x55);
/* 55 */ u8 mUnk_55;
/* 56 */
};
extern UnkStruct_ov000_020e8b08 *data_ov000_020e8b08;