d_a_e_yk 23/26 matched (#301)

* setup TU

* daE_YK_HIO_c::daE_YK_HIO_c

* anm_init

* daE_YK_Draw

* pl_check

* damage_check

* action

* daE_YK_Delete

* fly_move

* e_yk_roof

* useHeapInit

* e_yk_wind

* e_yk_chance

* e_yk_return

* e_yk_fly

* e_yk_wolfbite

* e_yk_fight

* e_yk_attack

* e_yk_path_fly

* daE_YK_Execute and daE_YK_Create and float literal prep

* pr cleanup

* rm padding
This commit is contained in:
Pheenoh
2023-02-25 21:25:55 -07:00
committed by GitHub
parent bf663a0e3d
commit c54f0816ea
18 changed files with 1325 additions and 504 deletions
+3
View File
@@ -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
+8 -8
View File
@@ -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,
+8 -3
View File
@@ -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;
};
+17
View File
@@ -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&);
+2
View File
@@ -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 */
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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();
+4
View File
@@ -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));
+1
View File
@@ -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;
+90
View File
@@ -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 */