diff options
| author | robojumper <robojumper@gmail.com> | 2025-12-31 00:44:11 +0100 |
|---|---|---|
| committer | robojumper <robojumper@gmail.com> | 2026-01-28 19:14:17 +0100 |
| commit | f6ac925487969efbecef775fae10365fee2cb037 (patch) | |
| tree | c573c9a851acc27943aeaf4d0727a4e1c153336f /include/d | |
| parent | dcb16363e51df13dfefff072edadbb737572b5b9 (diff) | |
Progress
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/a/b/d_a_b_lastboss.h | 20 | ||||
| -rw-r--r-- | include/d/col/c/c_cc_d.h | 3 | ||||
| -rw-r--r-- | include/d/d_cc.h | 3 | ||||
| -rw-r--r-- | include/d/d_player_act.h | 27 |
4 files changed, 45 insertions, 8 deletions
diff --git a/include/d/a/b/d_a_b_lastboss.h b/include/d/a/b/d_a_b_lastboss.h index 0097aeec..e1831a06 100644 --- a/include/d/a/b/d_a_b_lastboss.h +++ b/include/d/a/b/d_a_b_lastboss.h @@ -202,12 +202,18 @@ class dAcBlastboss_c : public dAcEnBase_c { B_LAST_BOSS_NODE_skirtHU1 = 134, }; + // TODO: mFightState probably means different things in + // different states, so maybe we need to either remove + // this again or split this up further. enum FightState_e { - FIGHT_STATE_0, + FIGHT_STATE_0 = 0, FIGHT_STATE_1, FIGHT_STATE_2, FIGHT_STATE_3, FIGHT_STATE_4, + + FIGHT_STATE_10 = 10, + FIGHT_STATE_11, }; public: @@ -246,6 +252,7 @@ private: bool fn_143_77C0(); void fn_143_7B00(); void fn_143_7F80(); + bool fn_143_9420(); void fn_143_9610(); void fn_143_A110(s32); @@ -284,7 +291,7 @@ private: /* 0x1141 */ u8 field_0x1141; /* 0x1142 */ u8 field_0x1142; /* 0x1143 */ u8 field_0x1143; - /* 0x1144 */ u8 field_0x1144; + /* 0x1144 */ s8 field_0x1144; /* 0x1145 */ u8 field_0x1145; /* 0x1146 */ bool mIsSwordEmpowered; /* 0x1147 */ u8 field_0x1147; @@ -297,9 +304,8 @@ private: /* 0x114E */ u8 field_0x114E; /* 0x114F */ u8 field_0x114F; /* 0x1150 */ u8 field_0x1150; - - /* 0x1151 */ u8 _0x1151[0x1156 - 0x1151]; - + /* 0x1152 */ u16 field_0x1152; + /* 0x1154 */ u16 field_0x1154; /* 0x1156 */ u16 field_0x1156[6]; /* 0x1162 */ u8 _0x1162[0x1164 - 0x1162]; @@ -346,7 +352,9 @@ private: /* 0x11B0 */ f32 field_0x11B0; - /* 0x11B4 */ u8 _0x11B4[0x11BC - 0x11B4]; + /* 0x11B4 */ u8 _0x11B4[0x11B8 - 0x11B4]; + + /* 0x11B8 */ f32 field_0x11B8; /* 0x11BC */ f32 field_0x11BC; /* 0x11C0 */ f32 field_0x11C0; diff --git a/include/d/col/c/c_cc_d.h b/include/d/col/c/c_cc_d.h index 69fe1e20..06b81841 100644 --- a/include/d/col/c/c_cc_d.h +++ b/include/d/col/c/c_cc_d.h @@ -992,6 +992,9 @@ public: void ClrTg_0x10000() { return mTg.OffSPrm(0x10000); } + void ClrTg_0x8000000() { + return mTg.OffSPrm(0x8000000); + } u32 ChkTgBonk() const { return mTg.MskSPrm(0x200000); } diff --git a/include/d/d_cc.h b/include/d/d_cc.h index ddc9803e..c06a35e5 100644 --- a/include/d/d_cc.h +++ b/include/d/d_cc.h @@ -84,7 +84,8 @@ public: // a ptmf. It's not immediately clear how this works, // does every actor subclass the LinkedCollider___, // or are the functions all added here for the other - // files to implement? + // files to implement? d_a_b_lastboss commits a typing crime here + // to make it work... typedef bool (cCcD_Obj::*ccPtmf)(); cCcD_Obj *find(ccPtmf f) const; diff --git a/include/d/d_player_act.h b/include/d/d_player_act.h index 2a948aa8..621b3cc2 100644 --- a/include/d/d_player_act.h +++ b/include/d/d_player_act.h @@ -463,6 +463,19 @@ public: ATTACK_FINAL_BLOW = 11, }; + enum SpecificPlayerAttackDirection_e { + /* 0x000 */ ATTACK_DIRECTION_NONE = 0, + /* 0x001 */ ATTACK_DIRECTION_DOWN = 1 << 0, + /* 0x002 */ ATTACK_DIRECTION_DOWNRIGHT = 1 << 1, + /* 0x004 */ ATTACK_DIRECTION_RIGHT = 1 << 2, + /* 0x008 */ ATTACK_DIRECTION_UPRIGHT = 1 << 3, + /* 0x010 */ ATTACK_DIRECTION_UP = 1 << 4, + /* 0x020 */ ATTACK_DIRECTION_UPLEFT = 1 << 5, + /* 0x040 */ ATTACK_DIRECTION_LEFT = 1 << 6, + /* 0x080 */ ATTACK_DIRECTION_DOWNLEFT = 1 << 7, + /* 0x100 */ ATTACK_DIRECTION_STAB = 1 << 8, + }; + enum ModelUpdateFlags_e { UPDATE_MODEL_SWORD = 0x20, UPDATE_MODEL_SHIELD = 0x40, @@ -625,6 +638,14 @@ public: return mAttackDirection != ATTACK_NONE; } + bool isAttackingJumpSlash() const { + return mAttackDirection == ATTACK_JUMP_SLASH; + } + + u16 getSpecificAttackDirection() const { + return mSpecificAttackDirection; + } + inline bool hasvt_0x1C0() const { return vt_0x1C0() != nullptr; } @@ -637,6 +658,9 @@ public: bool isAttackingStab() const; bool isAttackingSpinHorizontal() const; bool isAttackingSpinVertical() const; + bool isAttackingSpin() const { + return isAttackingSpinHorizontal() || isAttackingSpinVertical(); + } void setBonkRelatedAnimFlag(bool b); void setPosYRot(const mVec3_c &pos, mAng rot, bool force = false, UNKWORD = 0, UNKWORD = 0); void setTransform(const mMtx_c &mtx, bool force, UNKWORD, UNKWORD); @@ -668,7 +692,8 @@ protected: /* 0x334 */ f32 field_0x334; /* 0x338 */ u8 mAttackDirection; /* 0x339 */ u8 mRidingActorType; - /* 0x33A */ u8 unk_0x33A[0x340 - 0x33A]; + /* 0x33A */ u16 mSpecificAttackDirection; + /* 0x33C */ u8 unk_0x33C[0x340 - 0x33C]; /* 0x340 */ u32 someFlags_0x340; /* 0x344 */ u32 mFaceUpdateFlags; /* 0x348 */ u32 mSwordAndMoreStates; |
