summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/SSystem/SComponent/c_cc_d.h3
-rw-r--r--include/Z2AudioLib/Z2SeMgr.h16
-rw-r--r--include/d/a/d_a_player.h11
-rw-r--r--include/d/cc/d_cc_d.h17
-rw-r--r--include/d/cc/d_cc_uty.h2
-rw-r--r--include/d/s/d_s_play.h2
-rw-r--r--include/f_op/f_op_actor.h2
-rw-r--r--include/f_op/f_op_actor_mng.h4
-rw-r--r--include/m_Do/m_Do_ext.h1
-rw-r--r--include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h90
10 files changed, 135 insertions, 13 deletions
diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h
index 844d8449c6..f37db70369 100644
--- a/include/SSystem/SComponent/c_cc_d.h
+++ b/include/SSystem/SComponent/c_cc_d.h
@@ -48,6 +48,7 @@ enum cCcD_ObjAtType {
/* 0x10000000 */ AT_TYPE_10000000 = (1 << 28),
/* 0x40000000 */ AT_TYPE_WOLF_CUT_TURN = (1 << 30),
/* 0x80000000 */ AT_TYPE_WOLF_ATTACK = (1 << 31),
+ /* 0xD8000000 */ AT_TYPE_UNK = 0xD8000000
};
class cCcD_ShapeAttr {
@@ -454,6 +455,8 @@ public:
void OnTgSetBit() { mObjTg.OnSPrmBit(1); }
void OffTgSetBit() { mObjTg.ClrSet(); }
void OnCoSetBit() { mObjCo.OnSPrmBit(1); }
+ void OffAtVsPlayerBit() { mObjAt.OffSPrmBit(0xC); }
+ void OnAtVsPlayerBit() { mObjAt.OnSPrmBit(0xC); }
}; // Size = 0x40
diff --git a/include/Z2AudioLib/Z2SeMgr.h b/include/Z2AudioLib/Z2SeMgr.h
index d3a63a3562..3f70146733 100644
--- a/include/Z2AudioLib/Z2SeMgr.h
+++ b/include/Z2AudioLib/Z2SeMgr.h
@@ -2400,14 +2400,14 @@ enum Z2SoundID {
Z2SE_EN_BA_V_FURA = 0x701C5,
Z2SE_EN_BA_FIRE = 0x701C6,
Z2SE_EN_YK_WING = 0x701C7,
- Z2SE_EN_YK_V_NAKU = 0x701C8,
- Z2SE_EN_YK_V_ATTACK = 0x701C9,
- Z2SE_EN_YK_V_DEATH = 0x701CA,
- Z2SE_EN_YK_V_BITE = 0x701CB,
- Z2SE_EN_YK_V_DEATH2 = 0x701CC,
- Z2SE_EN_YK_V_FURA = 0x701CD,
+ Z2SE_EN_YK_V_NAKU = 0x701C8, // shadow keese - cry/screech
+ Z2SE_EN_YK_V_ATTACK = 0x701C9, // shadow keese - attack
+ Z2SE_EN_YK_V_DEATH = 0x701CA, // shadow keese - death
+ Z2SE_EN_YK_V_BITE = 0x701CB, // shadow keese - bite
+ Z2SE_EN_YK_V_DEATH2 = 0x701CC, // shadow keese - death2
+ Z2SE_EN_YK_V_FURA = 0x701CD, // shadow keese - unsteady
Z2SE_EN_BA_V_SPIN = 0x701CE,
- Z2SE_EN_YK_V_SPIN = 0x701CF,
+ Z2SE_EN_YK_V_SPIN = 0x701CF, // shadow keese - spinning in gale boomerang wind
Z2SE_EN_YG_V_NAKU = 0x701D0,
Z2SE_EN_YG_V_FIND = 0x701D1,
Z2SE_EN_YG_V_DEATH = 0x701D2,
@@ -2463,7 +2463,7 @@ enum Z2SoundID {
Z2SE_EN_GOB_HELMET_MELT = 0x70204,
Z2SE_EN_GOB_KNUCKLES_FRICTION = 0x70205,
Z2SE_EN_BA_V_FAINT = 0x70206,
- Z2SE_EN_YK_V_FAINT = 0x70207,
+ Z2SE_EN_YK_V_FAINT = 0x70207, // shadow keese - bouncing on ground during chance
Z2SE_EN_HZ_V_WALK = 0x70208,
Z2SE_EN_HZ_WALK = 0x70209,
Z2SE_EN_HZ_V_WIND_NAKU = 0x7020A,
diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h
index 34e238107a..6ebfbd8526 100644
--- a/include/d/a/d_a_player.h
+++ b/include/d/a/d_a_player.h
@@ -274,6 +274,7 @@ public:
FLG2_UNK_200 = 0x200,
FLG2_UNK_80 = 0x80,
FLG2_UNK_40 = 0x40,
+ FLG2_WOLF_ENEMY_LEFT_THROW = 0x20,
FLG2_UNK_10 = 0x10,
FLG2_UNK_8 = 8,
FLG2_UNK_2 = 2,
@@ -762,14 +763,18 @@ public:
inline BOOL i_checkSwordGet();
inline bool i_checkShieldGet() const;
inline static BOOL checkNowWolf();
- inline static BOOL i_checkNowWolf() {
- return dComIfGp_getLinkPlayer()->i_checkWolf();
- }
+ inline static BOOL i_checkNowWolf() { return dComIfGp_getLinkPlayer()->i_checkWolf(); }
inline bool checkZoraWearFlg() const;
inline bool checkMagicArmorWearFlg() const;
static daMidna_c* getMidnaActor() { return m_midnaActor; }
+ // not sure how to define this properly
+ // static void onWolfEnemyCatch(fopAc_ac_c* i_actorP) { onWolfEnemyBiteAll(i_actorP,8);}
+
+ bool checkWolfEnemyCatchOwn(fopAc_ac_c* i_actorP) { return checkWolfEnemyBiteAllOwn(i_actorP); }
+ bool checkWolfEnemyLeftThrow() const { return i_checkNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW); }
+
static daMidna_c* m_midnaActor;
};
diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h
index 1105b7c0e8..5c8ed40c72 100644
--- a/include/d/cc/d_cc_d.h
+++ b/include/d/cc/d_cc_d.h
@@ -1,6 +1,11 @@
#ifndef D_CC_D_CC_D_H
#define D_CC_D_CC_D_H
+/**
+ * d_cc_d.h
+ * Actor Collision
+ */
+
#include "SSystem/SComponent/c_cc_d.h"
#include "dolphin/types.h"
@@ -134,6 +139,8 @@ public:
class dCcD_GObjInf;
typedef void (*dCcD_HitCallback)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);
+
+// Attack/Defense/Correction Collider Common Base
class dCcD_GAtTgCoCommonBase {
public:
/* 0x00 */ u32 mGFlag;
@@ -171,6 +178,8 @@ public:
dCcD_HitCallback GetHitCallback() { return mHitCallback; }
}; // Size = 0x1C
+
+// Attack (At) Collider
class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase {
public:
/* 80083944 */ void Set(dCcD_SrcGObjAt const&);
@@ -199,6 +208,7 @@ public:
/* 0x38 */ cXyz mRVec;
}; // Size = 0x44
+// Defense (Tg) Collider
class dCcD_GObjTg : public dCcD_GAtTgCoCommonBase {
public:
/* 800839A0 */ void Set(dCcD_SrcGObjTg const&);
@@ -229,11 +239,13 @@ private:
/* 0x48 */ s16 mShieldRange;
}; // Size = 0x4A ?
+// Correction (Co) Collider
class dCcD_GObjCo : public dCcD_GAtTgCoCommonBase {
public:
/* 80083B8C */ virtual ~dCcD_GObjCo() {}
}; // Size = 0x1C ?
+// Object Info
class dCcD_GObjInf : public cCcD_GObjInf {
public:
/* 80083A28 */ dCcD_GObjInf();
@@ -343,6 +355,7 @@ protected:
/* 0x0E8 */ dCcD_GObjCo mGObjCo;
}; // Size = 0x104
+// Cylinder
class dCcD_Cyl : public dCcD_GObjInf, public cCcD_CylAttr {
public:
/* 800848B4 */ void Set(dCcD_SrcCyl const&);
@@ -354,6 +367,7 @@ public:
dCcD_Cyl() {}
}; // Size = 0x13C
+// Sphere
class dCcD_Sph : public dCcD_GObjInf, public cCcD_SphAttr {
public:
dCcD_Sph() {}
@@ -364,6 +378,8 @@ public:
/* 80084BF4 */ virtual ~dCcD_Sph() {}
}; // Size = 0x138
+
+// Capsule
class dCcD_Cps : public dCcD_GObjInf, public cCcD_CpsAttr {
public:
/* 800847D0 */ void Set(dCcD_SrcCps const&);
@@ -374,6 +390,7 @@ public:
dCcD_Cps() {}
}; // Size = 0x144
+// Triangle
class dCcD_Tri : public dCcD_GObjInf, public cCcD_TriAttr {
public:
/* 80084884 */ void Set(dCcD_SrcTri const&);
diff --git a/include/d/cc/d_cc_uty.h b/include/d/cc/d_cc_uty.h
index 81719f4bf9..3e5cf8256a 100644
--- a/include/d/cc/d_cc_uty.h
+++ b/include/d/cc/d_cc_uty.h
@@ -29,4 +29,6 @@ struct dCcU_AtInfo {
/* 0x20 */ u8 mHitType;
};
+fopAc_ac_c* cc_at_check(fopAc_ac_c*,dCcU_AtInfo*);
+
#endif /* D_CC_D_CC_UTY_H */
diff --git a/include/d/s/d_s_play.h b/include/d/s/d_s_play.h
index 3e13f3304f..e497c9c62e 100644
--- a/include/d/s/d_s_play.h
+++ b/include/d/s/d_s_play.h
@@ -67,7 +67,7 @@ public:
/* 80259BFC */ void offReset();
static bool isPause() { return pauseTimer == 0; }
- static void setPauseTimer(s8 time) { nextPauseTimer = time; }
+ static void setPauseTimer(s8 time) { pauseTimer = time; }
static s8 pauseTimer;
static s8 nextPauseTimer;
diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h
index b76d3d9fe2..dbe347e096 100644
--- a/include/f_op/f_op_actor.h
+++ b/include/f_op/f_op_actor.h
@@ -137,7 +137,7 @@ public:
/* 0x538 */ cXyz mEyePos;
/* 0x544 */ actor_attention_types mAttentionInfo;
/* 0x560 */ s16 field_0x560;
- /* 0x562 */ s16 field_0x562;
+ /* 0x562 */ s16 mHealth;
/* 0x564 */ u8 field_0x564[0x4];
fopAc_ac_c();
diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h
index 2651274405..e71a40de48 100644
--- a/include/f_op/f_op_actor_mng.h
+++ b/include/f_op/f_op_actor_mng.h
@@ -306,6 +306,10 @@ inline bool i_fopAcM_isSwitch(const fopAc_ac_c* item, int sw) {
return dComIfGs_isSwitch(sw, fopAcM_GetHomeRoomNo(item));
}
+inline fopAc_ac_c* i_fopAcM_SearchByName(s16 proc_id) {
+ return (fopAc_ac_c*)fopAcIt_Judge(fpcSch_JudgeForPName, &proc_id);
+}
+
inline void dComIfGs_onItem(int bitNo, int roomNo);
inline void fopAcM_onItem(const fopAc_ac_c* item, int bitNo) {
dComIfGs_onItem(bitNo, fopAcM_GetHomeRoomNo(item));
diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h
index 40d5d75aee..b68840f1d5 100644
--- a/include/m_Do/m_Do_ext.h
+++ b/include/m_Do/m_Do_ext.h
@@ -261,6 +261,7 @@ public:
u8 getPlayMode() { return mFrameCtrl.getAttribute(); }
bool isLoop() { return mFrameCtrl.checkState(2); }
f32 getEndFrame() { return mFrameCtrl.getEnd(); }
+ BOOL checkFrame(f32 frame) { return mFrameCtrl.checkPass(frame); }
bool isStop() {
bool stopped = true;
diff --git a/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h b/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h
index 9331067bdf..be52d7f2cd 100644
--- a/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h
+++ b/include/rel/d/a/e/d_a_e_yk/d_a_e_yk.h
@@ -2,5 +2,95 @@
#define D_A_E_YK_H
#include "dolphin/types.h"
+#include "f_op/f_op_actor_mng.h"
+#include "d/com/d_com_inf_game.h"
+#include "d/cc/d_cc_uty.h"
+#include "d/d_path.h"
+
+enum daE_YK_Action {
+ ACT_ROOF, // keese is on roof
+ ACT_FIGHT_FLY, // keese is transitioning from flying to aggro
+ ACT_FIGHT, // keese is aggroed
+ ACT_ATTACK, // keese is attacking
+ ACT_RETURN, // keese is returning to roof
+ ACT_FLY, // keese is flying around
+ ACT_PATH_FLY, // Unconfirmed: keese is flying along its path?
+ ACT_CHANCE = 10, // keese is stunned/fell down
+ ACT_WOLFBITE = 13, // keese is being bitten by wolf
+ ACT_WIND // keese is in the gale boomerang
+};
+
+// tmp struct to get HIO to match
+struct daE_YK_HIO_c_tmp {
+ void* vtable;
+ /* 0x04 */ s8 field_0x04;
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ f32 field_0x0c;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+};
+
+class daE_YK_HIO_c {
+public:
+ /* 8080482C */ daE_YK_HIO_c();
+ /* 808077E0 */ virtual ~daE_YK_HIO_c();
+
+ /* 0x00 */ // vtable
+ /* 0x04 */ s8 field_0x04; // padding after this
+ /* 0x08 */ f32 field_0x08;
+ /* 0x0C */ f32 field_0x0c;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+};
+
+class e_yk_class : public fopEn_enemy_c {
+public:
+ /* 0x5AC */ request_of_phase_process_class mPhase;
+ /* 0x5B4 */ u8 mParam1; // paramter - used to determine default action?
+ /* 0x5B5 */ u8 mPlayerTriggerBase; // parameter - base value used to determine mPlayerTrigger below
+ /* 0x5B6 */ u8 field_0x5b6;
+ /* 0x5B7 */ u8 mPathIdx; // parameter - used to lookup/set mpPath based on the room
+ /* 0x5B8 */ u8 field_0x5b8;
+ /* 0x5B9 */ s8 mPathPntIdx; // tracks the index of the points along the keese's path
+ /* 0x5BA */ s8 field_0x5ba;
+ /* 0x5BB */ u8 field_0x5bb;
+ /* 0x5BC */ dPath* mpPath; // flight path for keese to follow?
+ /* 0x5C0 */ mDoExt_McaMorfSO* mpMorfSO; // last res loaded
+ /* 0x5C4 */ Z2CreatureEnemy mCreature; // used for playing keese noises
+ /* 0x668 */ int mResIdx; // index number of last res loaded
+ /* 0x66C */ s16 field_0x66c;
+ /* 0x66E */ s16 mAction; // current action (see daE_YK_Action above)
+ /* 0x670 */ s16 mActionPhase; // current phase of current action
+ /* 0x674 */ cXyz mPathPntPos; // tracks the position of the point the keese is along a path
+ /* 0x680 */ s16 mAngleFromPlayer; // current keese angle from player
+ /* 0x684 */ f32 mDistanceXZFromPlayer; // current keese distance from player
+ /* 0x688 */ f32 mPlayerTrigger; // how close to the keese the player has to be before aggro
+ /* 0x68C */ f32 field_0x68c;
+ /* 0x690 */ f32 field_0x690;
+ /* 0x694 */ f32 field_0x694;
+ /* 0x698 */ s16 field_0x698;
+ /* 0x69A */ csXyz field_0x69a;
+ /* 0x6A0 */ s8 field_0x6a0;
+ /* 0x6A1 */ u8 field_0x6a1;
+ /* 0x6A2 */ s16 field_0x6a2[4];
+ /* 0x6AA */ s16 field_0x6aa;
+ /* 0x6AC */ s16 field_0x6ac[6];
+ /* 0x6B8 */ cXyz mBoomrangPosOffset; // offset position when keese caught in rang
+ /* 0x6C4 */ s16 mBoomrangXRotOffset; // offset x rotation when keese caught in rang
+ /* 0x6C8 */ dBgS_AcchCir field_0x6c8;
+ /* 0x708 */ dBgS_ObjAcch field_0x708;
+ /* 0x8E0 */ dCcD_Stts mCollisionStatus; // collision status
+ /* 0x91C */ dCcD_Sph mCollisionSphere; // collision sphere
+ /* 0xA54 */ dCcU_AtInfo mAtColliderInfo; // attack collider info (used when keese gets hit)
+ /* 0xA78 */ u32 field_0xa78;
+ /* 0xA7C */ u32 field_0xa7c;
+ /* 0xA80 */ u32 field_0xa80;
+ /* 0xA84 */ u32 mParticleEmitterIds[2];
+ /* 0xA8C */ u8 field_0xa8c;
+};
+
+// size: 0xA90
#endif /* D_A_E_YK_H */