summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-12-31 00:44:11 +0100
committerrobojumper <robojumper@gmail.com>2026-01-28 19:14:17 +0100
commitf6ac925487969efbecef775fae10365fee2cb037 (patch)
treec573c9a851acc27943aeaf4d0727a4e1c153336f /include
parentdcb16363e51df13dfefff072edadbb737572b5b9 (diff)
Progress
Diffstat (limited to 'include')
-rw-r--r--include/d/a/b/d_a_b_lastboss.h20
-rw-r--r--include/d/col/c/c_cc_d.h3
-rw-r--r--include/d/d_cc.h3
-rw-r--r--include/d/d_player_act.h27
-rw-r--r--include/toBeSorted/d_enemy_sword_mdl.h20
5 files changed, 60 insertions, 13 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;
diff --git a/include/toBeSorted/d_enemy_sword_mdl.h b/include/toBeSorted/d_enemy_sword_mdl.h
index 96989e51..40883513 100644
--- a/include/toBeSorted/d_enemy_sword_mdl.h
+++ b/include/toBeSorted/d_enemy_sword_mdl.h
@@ -21,8 +21,8 @@ public:
/* 0x01C */ dSwordSwingEffectProcMgr_c mProc;
private:
- /* 0x070 */ bool field_0x070;
- /* 0x071 */ bool field_0x071;
+ /* 0x070 */ bool mIsActive;
+ /* 0x071 */ bool mFirstFramePassed;
/* 0x074 */ mVec3_c field_0x074;
/* 0x080 */ mVec3_c field_0x080;
/* 0x08C */ mVec3_c field_0x08C;
@@ -30,6 +30,8 @@ private:
/* 0x0A4 */ f32 field_0x0A4;
/* 0x0A8 */ f32 field_0x0A8;
/* 0x0AC */ dCcD_Linked_Cps mCcs[3];
+
+public:
/* 0x52C */ dColliderLinkedList mCcList;
public:
@@ -53,11 +55,19 @@ public:
}
bool entry(dAcObjBase_c *obj, dShadowCircle_c *shadow, mQuat_c *quat);
- void fn_8006B640();
+ void enableAttack();
void fn_8006B660(UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, UNKWORD, f32);
+ void setDamageMaybe(u8 damage);
+ void fn_8006B7A0(u32);
+ void fn_8006B800(u32);
+
+ void enable() {
+ enableAttack();
+ mProc.setActive(true);
+ }
- void setAttackActive(bool b) {
- field_0x070 = b;
+ void disable() {
+ mIsActive = false;
mProc.setActive(false);
}
};