diff --git a/include/Actor/Actor.hpp b/include/Actor/Actor.hpp index 32423853..a21a8d6b 100644 --- a/include/Actor/Actor.hpp +++ b/include/Actor/Actor.hpp @@ -5,15 +5,12 @@ #include "global.h" #include "types.h" -struct UnkStruct_vfunc_00 { - unk32 mUnk_00; - unk32 mUnk_04; - unk32 mUnk_08; -}; - class Actor_5c { public: - /* 00 */ unk32 mUnk_00; + /* 00 */ Vec3p mUnk_00; + /* 0c */ s16 mUnk_0c; + /* 0e */ unk16 mUnk_0e; // padding? + /* 10 */ void func_ov000_020975f8(); }; @@ -43,19 +40,15 @@ public: class Actor : public SysObject { public: /* 00 (vtable) */ - /* 04 */ unk32 mUnk_04; - /* 08 */ unk32 mUnk_08; - /* 0c */ unk32 mUnk_0c; - /* 10 */ unk32 mUnk_10; - /* 14 */ unk32 mUnk_14; - /* 18 */ unk32 mUnk_18; - /* 1c */ Vec3p mUnk_1c; - /* 28 */ u16 mUnk_28; + /* 04 */ Vec3p mPos; + /* 10 */ Vec3p mPrevPos; + /* 1c */ Vec3p mVel; + /* 28 */ u16 mAngle; /* 28 */ unk16 mUnk_2a; - /* 2c */ unk32 mUnk_2c; + /* 2c */ unk32 mUnk_2c; // gravity? /* 30 */ unk32 *mUnk_30; /* 34 */ unk32 *mUnk_34; - /* 38 */ unk32 mUnk_38; + /* 38 */ unk32 *mUnk_38; /* 3c */ unk32 mUnk_3c; /* 40 */ unk32 mUnk_40; /* 44 */ u16 mUnk_44; @@ -70,10 +63,6 @@ public: /* 54 */ unk32 mUnk_54; /* 58 */ unk32 mUnk_58; /* 5c */ Actor_5c mUnk_5c; - /* 60 */ unk32 mUnk_60; - /* 64 */ unk32 mUnk_64; - /* 68 */ s16 mUnk_68; - /* 68 */ unk16 mUnk_6a; /* 6c */ unk32 mUnk_6c; /* 70 */ unk32 mUnk_70; /* 74 */ unk32 mUnk_74; @@ -86,7 +75,7 @@ public: /* 8c */ unk32 mUnk_8c; /* 90 */ UnkStruct_ov000_020b539c_30 *mUnk_90; - /* 00 */ virtual unk32 vfunc_00(UnkStruct_vfunc_00 *param1); + /* 00 */ virtual void vfunc_00(Vec3p *param1); /* 04 */ virtual bool vfunc_04(); /* 08 */ virtual unk16 vfunc_08(); /* 0c */ virtual unk8 vfunc_0c(); @@ -101,7 +90,7 @@ public: /* 30 */ virtual void vfunc_30(); /* 34 */ virtual unk32 vfunc_34(); /* 38 */ virtual unk32 vfunc_38(unk32 param1); - /* 3c */ virtual bool vfunc_3c(Vec3p* param1); + /* 3c */ virtual bool vfunc_3c(unk32 param2, Vec3p* param3); /* 40 */ virtual void vfunc_40(); /* 44 */ virtual void vfunc_44(); /* 48 */ virtual void vfunc_48(); diff --git a/src/00_Second/Actor/Actor.cpp b/src/00_Second/Actor/Actor.cpp index 512c82ab..b8ca65d3 100644 --- a/src/00_Second/Actor/Actor.cpp +++ b/src/00_Second/Actor/Actor.cpp @@ -3,13 +3,9 @@ #include "Unknown/UnkStruct_027e0ce0.hpp" ARM Actor::Actor() { - unk32 temp_r2; - unk32 temp_ip; - unk32 temp_r3; - - this->mUnk_1c.x = 0; - this->mUnk_1c.y = 0; - this->mUnk_1c.z = 0; + this->mVel.x = 0; + this->mVel.y = 0; + this->mVel.z = 0; this->mUnk_2c = 0xCD; this->mUnk_38 = 0; this->mUnk_3c = 0; @@ -25,18 +21,10 @@ ARM Actor::Actor() { this->mUnk_8c = 0; this->mUnk_90 = 0; data_ov000_020b539c.func_02028cdc(&this->mUnk_5c, 0x30); - temp_r2 = this->mUnk_5c.mUnk_00; - temp_ip = this->mUnk_60; - temp_r3 = this->mUnk_64; - this->mUnk_04 = temp_r2; - this->mUnk_10 = temp_r2; - this->mUnk_28 = this->mUnk_68; + this->mPrevPos = this->mPos = this->mUnk_5c.mUnk_00; + this->mAngle = this->mUnk_5c.mUnk_0c; this->mUnk_58 = 0x400B; this->mUnk_44 = 0xFF; - this->mUnk_08 = temp_ip; - this->mUnk_0c = temp_r3; - this->mUnk_14 = temp_ip; - this->mUnk_18 = temp_r3; this->mUnk_46 = 0; this->func_ov000_0209862c(0); this->func_ov000_0209848c(data_ov000_020b539c.mUnk_30); @@ -92,16 +80,16 @@ ARM void Actor::func_ov000_020984f0() { } // non-matching -ARM unk32 Actor::vfunc_00(UnkStruct_vfunc_00 *param1) { - unk32 iVar1; - unk32 uVar2; +ARM void Actor::vfunc_00(Vec3p *param1) { + *param1 = mPos; + param1->y += mUnk_4e; + // short sVar1; + // int iVar2; + // int iVar3; - uVar2 = this->mUnk_0c; - iVar1 = this->mUnk_08 + this->mUnk_4e; - param1->mUnk_00 = this->mUnk_04; - param1->mUnk_04 = iVar1; - param1->mUnk_08 = uVar2; - return iVar1; + // param1->x = this->mPos.x; + // param1->y = this->mPos.y + this->mUnk_4e; + // param1->z = this->mPos.z; } ARM void Actor::func_ov000_0209853c(void) { @@ -152,16 +140,14 @@ ARM unk32 Actor::vfunc_38(unk32 param1) { } // non-matching -ARM bool Actor::vfunc_3c(Vec3p *param1) { - if (this->mUnk_58 & 0x100) { - this->mUnk_1c.x = param1->x; - this->mUnk_1c.y = param1->y; - this->mUnk_1c.z = param1->z; - this->mUnk_58 &= ~0x100; - return true; +ARM bool Actor::vfunc_3c(unk32 param2, Vec3p* param3) { + if (!(this->mUnk_58 & 0x100)) { + return false; } - return false; + this->mVel = *param3; + this->mUnk_58 &= ~0x100; + return true; } // non-matching