d_a_e_df Equivalent (func order) (#2440)

* d_a_e_df first pass

* d_a_e_df second pass

* d_a_e_df equivalent

* d_a_e_df debug final

* d_a_e_df comments

* Fix dEvtCnd_CANDEMO_e usage

---------

Co-authored-by: hatal175 <hatal175@users.noreply.github.com>
This commit is contained in:
Niklas Bauer 2025-05-16 23:03:36 +09:00 committed by GitHub
parent fe0c894daa
commit d86fc591f4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 675 additions and 520 deletions

View File

@ -1648,7 +1648,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_db"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_db_leaf"),
ActorRel(NonMatching, "d_a_e_dd"),
ActorRel(NonMatching, "d_a_e_df"),
ActorRel(Equivalent, "d_a_e_df"), # weak func order
ActorRel(NonMatching, "d_a_e_dk"),
ActorRel(Equivalent, "d_a_e_dt"), # weak func order
ActorRel(NonMatching, "d_a_e_fb"),

View File

@ -1,10 +1,10 @@
#ifndef D_A_E_DF_H
#define D_A_E_DF_H
#include "Z2AudioLib/Z2Creature.h"
#include "JSystem/JHostIO/JORReflexible.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
#include "f_op/f_op_actor.h"
/**
* @ingroup actors-enemies
@ -16,14 +16,34 @@
*/
class daE_DF_c : public fopEn_enemy_c {
public:
/* 806A7710 */ void CreateHeap();
enum {
/* 0x0 */ EAT_TYPE_OBJ,
/* 0x1 */ EAT_TYPE_LINK,
/* 0x2 */ EAT_TYPE_BOMB,
};
enum {
/* 0x0 */ ACT_WAIT,
/* 0x1 */ ACT_EAT,
/* 0x2 */ ACT_DAMAGE,
/* 0x3 */ ACT_MISS,
/* 0x4 */ ANIM_BOUND,
/* 0x5 */ ANIM_BURST,
/* 0x6 */ ANIM_DIE,
/* 0x7 */ ANIM_EAT,
/* 0x8 */ ANIM_EAT_WAIT,
/* 0x9 */ ANIM_SPITOUT,
/* 0xA */ ANIM_WAIT,
};
/* 806A7710 */ int CreateHeap();
/* 806A7828 */ void initCcCylinder();
/* 806A78A0 */ void setCcCylinder();
/* 806A78D4 */ void SetAnm(int, int, f32, f32);
/* 806A7980 */ void CameraSet(f32);
/* 806A7B40 */ void DemoStart();
/* 806A7B40 */ bool DemoStart();
/* 806A7C3C */ void SetReleaseCam();
/* 806A7CE0 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 806A7CE0 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 806A8030 */ void Link_Eat_Pos();
/* 806A8098 */ void Set_Angle(cXyz*);
/* 806A816C */ void Obj_Damage();
@ -31,44 +51,42 @@ public:
/* 806A8368 */ void BombEatAction();
/* 806A8790 */ void Spid_Out();
/* 806A8938 */ void LinkEatAction();
/* 806A8C80 */ void Mogu_Mogu();
/* 806A8C80 */ bool Mogu_Mogu();
/* 806A8D98 */ void ObjEatAction();
/* 806A8ED4 */ void EatAction();
/* 806A8F2C */ void SearchAction();
/* 806A91B4 */ void WaitAction();
/* 806A9254 */ void MissAction();
/* 806A9304 */ void Action();
/* 806A9384 */ void Execute();
/* 806A9384 */ int Execute();
/* 806A949C */ void Yazirushi();
/* 806A94E0 */ void Draw();
/* 806A9550 */ void Delete();
/* 806A94E0 */ int Draw();
/* 806A9550 */ int Delete();
/* 806A95B8 */ void setBaseMtx();
/* 806A9678 */ void Create();
/* 806A9678 */ int Create();
private:
/* 0x5AC */ u8 field_0x5ac;
/* 0x5AD */ u8 field_0x5ad;
/* 0x5AE */ u8 field_0x5ae;
/* 0x5B0 */ csXyz field_0x5b0;
/* 0x5B6 */ u8 field_0x5B6[0x5B8 - 0x5B6];
/* 0x5B8 */ s32 field_0x5b8;
/* 0x5BC */ u8 field_0x5bc;
/* 0x5BE */ s16 field_0x5be;
/* 0x5C0 */ s32 field_0x5c0;
/* 0x5C4 */ s16 field_0x5c4;
/* 0x5C6 */ s16 field_0x5c6;
/* 0x5AC */ u8 mAction;
/* 0x5AD */ u8 mEatObjType;
/* 0x5AE */ u8 mEatStep;
/* 0x5B0 */ csXyz mChaseAngle;
/* 0x5B8 */ s32 mCarryType;
/* 0x5BC */ u8 mMoguCount;
/* 0x5BE */ s16 mTimer;
/* 0x5C0 */ s32 mAnim;
/* 0x5C4 */ s16 mTargetAngle;
/* 0x5C6 */ s16 mInvincibilityTimer;
/* 0x5C8 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5CC */ request_of_phase_process_class mPhaseReq;
/* 0x5D4 */ u8 field_0x5D4[0x5D8 - 0x5D4];
/* 0x5D4 */ u8 field_0x5d4[0x5D8 - 0x5D4];
/* 0x5D8 */ Z2CreatureEnemy mCreatureSound;
/* 0x67C */ dCcD_Stts mStts;
/* 0x6B8 */ dCcD_Cyl mCylinder;
/* 0x6B8 */ dCcD_Cyl mCyl;
/* 0x7F4 */ dCcU_AtInfo mAtInfo;
/* 0x818 */ u8 mHIOInit;
/* 0x819 */ u8 field_0x819;
/* 0x81C */ cXyz field_0x81c;
/* 0x828 */ cXyz field_0x828;
/* 0x834 */ f32 field_0x834;
/* 0x819 */ u8 mArg0;
/* 0x81C */ cXyz mCenterPos;
/* 0x828 */ cXyz mEyePos;
/* 0x834 */ f32 mFovY;
};
STATIC_ASSERT(sizeof(daE_DF_c) == 0x838);
@ -76,12 +94,14 @@ STATIC_ASSERT(sizeof(daE_DF_c) == 0x838);
class daE_DF_HIO_c : public JORReflexible {
public:
/* 806A76EC */ daE_DF_HIO_c();
/* 806A9A84 */ virtual ~daE_DF_HIO_c();
/* 806A9A84 */ virtual ~daE_DF_HIO_c() {};
void genMessage(JORMContext*);
/* 0x4 */ s8 field_0x4;
/* 0x8 */ f32 speed;
/* 0x4 */ s8 mNo;
/* 0x8 */ f32 field_0x8;
};
STATIC_ASSERT(sizeof(daE_DF_HIO_c) == 0xC);
#endif /* D_A_E_DF_H */

File diff suppressed because it is too large Load Diff