decompile a few enemy classes (#2423)

This commit is contained in:
Trueffel 2025-05-07 02:32:23 +02:00 committed by GitHub
parent df8f49f422
commit 38c42522d5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 429 additions and 42 deletions

View File

@ -1,16 +1,23 @@
#ifndef D_A_E_AI_H
#define D_A_E_AI_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class e_ai_class
* @brief Armos
*
* @details
*
*
* @details
*
*/
class e_ai_class : public fopEn_enemy_c {
public:
/* 806791BC */ void initCcCylinder();
/* 80679284 */ void setCcCylinder();
/* 80679350 */ void anm_init(int, f32, u8, f32);
@ -33,16 +40,76 @@ class e_ai_class : public fopEn_enemy_c {
/* 8067B6F0 */ void CreateHeap();
/* 8067B8E4 */ void Create();
/* 8067BAEC */ e_ai_class();
private:
/* 0x5ac */ u8 field_0x5ac[0xd44 - 0x5ac];
/* 0x5AC */ JPABaseEmitter* mpEmitter;
/* 0x5B0 */ request_of_phase_process_class mPhaseReq;
/* 0x5B8 */ u8 field_0x5B8[0x5B9 - 0x5B8];
/* 0x5B9 */ u8 field_0x5b9;
/* 0x5BA */ u8 field_0x5ba;
/* 0x5BC */ cXyz mUnused; // The offset of this member is a guess. Debug only says that it
// exists, unsure of offset in retail
/* 0x5C8 */ mDoExt_brkAnm* mpBrkAnm;
/* 0x5CC */ u8 field_0x5cc;
/* 0x5D0 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5D4 */ Z2CreatureEnemy mCreatureSound;
/* 0x678 */ u8 field_0x678[0x67C - 0x678];
/* 0x67C */ u8 field_0x67c;
/* 0x680 */ u32 mShadowKey;
/* 0x684 */ s32 field_0x684;
/* 0x688 */ u8 field_0x688[0x68C - 0x688];
/* 0x68C */ s16 field_0x68c;
/* 0x68E */ s16 field_0x68e;
/* 0x690 */ s16 field_0x690;
/* 0x692 */ s16 field_0x692;
/* 0x694 */ s16 field_0x694;
/* 0x696 */ s16 field_0x696;
/* 0x698 */ u8 field_0x698;
/* 0x699 */ cXyz mUnused2; // The offset of this member is a guess. Also unused in debug but
// exists, unsure of offset in retail
/* 0x6A8 */ s16 field_0x6a8;
/* 0x6AA */ s16 field_0x6aa;
/* 0x6AC */ f32 field_0x6ac;
/* 0x6B0 */ s16 field_0x6b0[4];
/* 0x6B8 */ s16 field_0x6b8;
/* 0x6BA */ s16 field_0x6ba;
/* 0x6BC */ s16 field_0x6bc;
/* 0x6C0 */ f32 field_0x6c0;
/* 0x6C4 */ u8 field_0x6C4[0x6C8 - 0x6C4];
/* 0x6C8 */ dBgS_AcchCir mAcchCir;
/* 0x708 */ dBgS_ObjAcch mObjAcch;
/* 0x8E0 */ dCcD_Stts mAtStts;
/* 0x91C */ dCcD_Stts mShieldStts;
/* 0x958 */ dCcD_Sph mAtSphere;
/* 0xA90 */ dCcD_Sph mShieldSphere;
/* 0xBC8 */ dCcD_Cyl mCylinder;
/* 0xD04 */ dCcU_AtInfo mAtInfo;
/* 0xD28 */ u8 field_0xd28;
/* 0xD29 */ s8 field_0xd29;
/* 0xD2C */ u32 field_0xd2c;
/* 0xD30 */ u32 field_0xd30;
/* 0xD34 */ u32 field_0xd34;
/* 0xD38 */ u32 field_0xd38;
/* 0xD3C */ u8 field_0xD3C[0xD40 - 0xD3C];
/* 0xD40 */ u8 mHIOInit;
};
STATIC_ASSERT(sizeof(e_ai_class) == 0xd44);
class daE_AI_HIO_c {
class daE_AI_HIO_c : public JORReflexible {
public:
/* 8067916C */ daE_AI_HIO_c();
/* 8067BF40 */ ~daE_AI_HIO_c();
/* 8067BF40 */ virtual ~daE_AI_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 movement_speed;
/* 0x10 */ f32 pl_recognition_distance;
/* 0x14 */ f32 attack_range_1;
/* 0x18 */ f32 attack_range_2;
/* 0x1C */ f32 home_distance;
};
#endif /* D_A_E_AI_H */

View File

@ -1,17 +1,22 @@
#ifndef D_A_E_BG_H
#define D_A_E_BG_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_BG_c
* @brief Bomb Fish
*
* @details
*
*
* @details
*
*/
class daE_BG_c : public fopEn_enemy_c {
public:
/* 8068585C */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80685948 */ void JointCallBack(J3DJoint*, int);
/* 80685994 */ void draw();
@ -36,16 +41,75 @@ class daE_BG_c : public fopEn_enemy_c {
/* 80689978 */ void _delete();
/* 80689A0C */ void CreateHeap();
/* 80689C38 */ void create();
void setBgId(u32 i_bgId) { mBgId = i_bgId; }
bool isBomb() { return mIsBomb; }
private:
/* 0x5ac */ u8 field_0x5ac[0xbbc - 0x5ac];
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5B8 */ mDoExt_brkAnm* mpBrkAnm;
/* 0x5BC */ Z2CreatureEnemy mCreatureSound;
/* 0x660 */ cXyz field_0x660;
/* 0x66C */ u32 mBgId;
/* 0x670 */ s32 mActionMode;
/* 0x674 */ s32 mMoveMode;
/* 0x678 */ u32 mShadowKey;
/* 0x67C */ u8 field_0x67C[0x684 - 0x67C];
/* 0x684 */ f32 field_0x684;
/* 0x688 */ f32 field_0x688;
/* 0x68C */ u8 field_0x68c;
/* 0x68D */ u8 field_0x68d;
/* 0x68E */ u8 field_0x68e;
/* 0x68F */ u8 field_0x68f;
/* 0x690 */ s32 field_0x690;
/* 0x694 */ s32 field_0x694;
/* 0x698 */ s16 field_0x698;
/* 0x69A */ s16 field_0x69a;
/* 0x69C */ s16 field_0x69c;
/* 0x69E */ s16 field_0x69e;
/* 0x6A0 */ s16 field_0x6a0;
/* 0x6A2 */ s16 field_0x6a2;
/* 0x6A4 */ s16 field_0x6a4;
/* 0x6A6 */ s16 field_0x6a6;
/* 0x6A8 */ s16 field_0x6a8;
/* 0x6AA */ s16 field_0x6aa;
/* 0x6AC */ s16 field_0x6ac;
/* 0x6AE */ u8 field_0x6ae;
/* 0x6AF */ u8 field_0x6af;
/* 0x6B0 */ u8 field_0x6b0;
/* 0x6B1 */ bool mIsBomb;
/* 0x6B2 */ u8 field_0x6B2[0x6B4 - 0x6B2];
/* 0x6B4 */ dBgS_AcchCir mAcchCir;
/* 0x6F4 */ dBgS_ObjAcch mObjAcch;
/* 0x8CC */ dCcD_Stts mStts;
/* 0x908 */ dCcD_Sph mSphere;
/* 0xA40 */ dCcD_Sph mAtSphere;
/* 0xB78 */ dCcU_AtInfo mAtInfo;
/* 0xB9C */ u32 mParticle;
/* 0xBA0 */ u8 field_0xBA0[0xBB0 - 0xBA0];
/* 0xBB0 */ u32 mParticle2;
/* 0xBB4 */ u32 mParticle3;
/* 0xBB8 */ u8 mHIOInit;
};
STATIC_ASSERT(sizeof(daE_BG_c) == 0xbbc);
class daE_BG_HIO_c {
class daE_BG_HIO_c : public JORReflexible {
public:
/* 8068580C */ daE_BG_HIO_c();
/* 8068A19C */ ~daE_BG_HIO_c();
/* 8068A19C */ virtual ~daE_BG_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 tracking_speed;
/* 0x0C */ f32 rush_speed;
/* 0x10 */ f32 waiting_distance_before_charging;
/* 0x14 */ f32 player_search_distance;
/* 0x18 */ f32 attack_range;
/* 0x1C */ f32 swimming_range;
/* 0x20 */ f32 spring_time;
};
#endif /* D_A_E_BG_H */

View File

@ -1,16 +1,21 @@
#ifndef D_A_E_DF_H
#define D_A_E_DF_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_DF_c
* @brief Deku Flower
*
* @details
*
*
* @details
*
*/
class daE_DF_c : public fopEn_enemy_c {
public:
/* 806A7710 */ void CreateHeap();
/* 806A7828 */ void initCcCylinder();
/* 806A78A0 */ void setCcCylinder();
@ -39,16 +44,44 @@ class daE_DF_c : public fopEn_enemy_c {
/* 806A9550 */ void Delete();
/* 806A95B8 */ void setBaseMtx();
/* 806A9678 */ void Create();
private:
/* 0x5ac */ u8 field_0x5ac[0x838 - 0x5ac];
/* 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;
/* 0x5C8 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5CC */ request_of_phase_process_class mPhaseReq;
/* 0x5D4 */ u8 field_0x5D4[0x5D8 - 0x5D4];
/* 0x5D8 */ Z2CreatureEnemy mCreatureSound;
/* 0x67C */ dCcD_Stts mStts;
/* 0x6B8 */ dCcD_Cyl mCylinder;
/* 0x7F4 */ dCcU_AtInfo mAtInfo;
/* 0x818 */ u8 mHIOInit;
/* 0x819 */ u8 field_0x819;
/* 0x81C */ cXyz field_0x81c;
/* 0x828 */ cXyz field_0x828;
/* 0x834 */ f32 field_0x834;
};
STATIC_ASSERT(sizeof(daE_DF_c) == 0x838);
class daE_DF_HIO_c {
class daE_DF_HIO_c : public JORReflexible {
public:
/* 806A76EC */ daE_DF_HIO_c();
/* 806A9A84 */ ~daE_DF_HIO_c();
/* 806A9A84 */ virtual ~daE_DF_HIO_c();
void genMessage(JORMContext*);
/* 0x4 */ s8 field_0x4;
/* 0x8 */ f32 speed;
};
#endif /* D_A_E_DF_H */

View File

@ -1,17 +1,23 @@
#ifndef D_A_E_DK_H
#define D_A_E_DK_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_bg_s_sph_chk.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_DK_c
* @brief Bari
*
* @details
*
*
* @details
*
*/
class daE_DK_c : public fopEn_enemy_c {
public:
/* 806AA228 */ void draw();
/* 806AA5C8 */ void setBck(int, u8, f32, f32);
/* 806AA68C */ void setBckCore(int, u8, f32, f32);
@ -38,16 +44,64 @@ class daE_DK_c : public fopEn_enemy_c {
/* 806ACAA4 */ void CreateHeap();
/* 806ACE14 */ void create();
/* 806AD0AC */ daE_DK_c();
private:
/* 0x5ac */ u8 field_0x5ac[0xd54 - 0x5ac];
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5B8 */ mDoExt_McaMorfSO* mpCoreMorfSO;
/* 0x5BC */ mDoExt_brkAnm* mpBrkAnm[2];
/* 0x5C4 */ mDoExt_btkAnm* mpBtkAnm[2];
/* 0x5CC */ Z2CreatureEnemy mCreatureSound;
/* 0x670 */ cXyz field_0x670;
/* 0x67C */ s32 mActionMode;
/* 0x680 */ s32 mMoveMode;
/* 0x684 */ u32 mShadowKey;
/* 0x688 */ u32 mShadowKey2;
/* 0x68C */ s16 field_0x68c;
/* 0x68E */ s16 field_0x68e;
/* 0x690 */ u8 field_0x690;
/* 0x691 */ u8 field_0x691;
/* 0x692 */ u8 field_0x692;
/* 0x694 */ s16 field_0x694;
/* 0x698 */ s32 field_0x698;
/* 0x69C */ s32 field_0x69c;
/* 0x6A0 */ u8 field_0x6a0;
/* 0x6A1 */ u8 field_0x6a1;
/* 0x6A2 */ u8 field_0x6a2;
/* 0x6A3 */ u8 field_0x6a3;
/* 0x6A4 */ u8 field_0x6a4;
/* 0x6A8 */ f32 field_0x6a8;
/* 0x6AC */ f32 field_0x6ac;
/* 0x6B0 */ f32 field_0x6b0;
/* 0x6B4 */ f32 field_0x6b4;
/* 0x6B8 */ f32 field_0x6b8;
/* 0x6BC */ dBgS_AcchCir mAcchCir;
/* 0x6FC */ dBgS_ObjAcch mObjAcch;
/* 0x8D4 */ dBgS_SphChk mSphereChk;
/* 0x928 */ dCcD_Stts mStts;
/* 0x964 */ dCcD_Sph mSphere;
/* 0xA9C */ dCcD_Sph mAtSphere;
/* 0xBD4 */ dCcD_Sph mCoreSphere;
/* 0xD0C */ dCcU_AtInfo field_0xd0c;
/* 0xD30 */ u32 mEffects[6];
/* 0xD48 */ u8 field_0xD48[0xD50 - 0xD48];
/* 0xD50 */ u8 mHIOInit;
};
STATIC_ASSERT(sizeof(daE_DK_c) == 0xd54);
class daE_DK_HIO_c {
class daE_DK_HIO_c : public JORReflexible {
public:
/* 806AA1EC */ daE_DK_HIO_c();
/* 806AD490 */ ~daE_DK_HIO_c();
/* 806AD490 */ virtual ~daE_DK_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 player_detection_range;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 first_attack_range;
};
#endif /* D_A_E_DK_H */

View File

@ -1,17 +1,22 @@
#ifndef D_A_E_FB_H
#define D_A_E_FB_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
* @ingroup actors-enemies
* @class daE_FB_c
* @brief Freezard
*
* @details
*
*
* @details
*
*/
class daE_FB_c : public fopEn_enemy_c {
public:
/* 806B6520 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 806B65C0 */ void JointCallBack(J3DJoint*, int);
/* 806B660C */ void draw();
@ -34,16 +39,66 @@ class daE_FB_c : public fopEn_enemy_c {
/* 806B8678 */ void CreateHeap();
/* 806B88E0 */ void create();
/* 806B8C1C */ daE_FB_c();
private:
/* 0x5ac */ u8 field_0x5ac[0xce8 - 0x5ac];
/* 0x5AC */ request_of_phase_process_class mPhaseReq;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x5B8 */ mDoExt_invisibleModel mInvisibleModel;
/* 0x5C0 */ mDoExt_brkAnm* mpBrkAnm;
/* 0x5C4 */ Z2CreatureEnemy mCreatureSound;
/* 0x668 */ s32 field_0x668;
/* 0x66C */ s32 field_0x66c;
/* 0x670 */ s32 field_0x670;
/* 0x674 */ cXyz mUnused; // This offset is a guess based on debug
/* 0x680 */ s16 field_0x680;
/* 0x684 */ f32 field_0x684;
/* 0x688 */ u32 mShadowKey;
/* 0x68C */ s16 field_0x68c;
/* 0x68E */ u8 field_0x68e;
/* 0x68F */ u8 field_0x68f;
/* 0x690 */ u8 field_0x690;
/* 0x691 */ u8 mPrm1;
/* 0x692 */ u8 mPrm2;
/* 0x694 */ s16 mRotation;
/* 0x696 */ s16 field_0x696;
/* 0x698 */ s16 mHeadAngle;
/* 0x69C */ s32 field_0x69c;
/* 0x6A0 */ u8 mPrm0;
/* 0x6A4 */ dBgS_AcchCir mAcchCir;
/* 0x6E4 */ dBgS_ObjAcch mObjAcch;
/* 0x8BC */ dCcD_Stts mStts;
/* 0x8F8 */ dCcD_Sph mSphere;
/* 0xA30 */ dCcD_Sph mSphere2;
/* 0xB68 */ dCcD_Sph mAtSph;
/* 0xCA0 */ dCcU_AtInfo mAtInfo;
/* 0xCC4 */ u8 field_0xCC4[0xCD8 - 0xCC4];
/* 0xCD8 */ u16 field_0xcd8[3]; // This might be incorrect
/* 0xCDE */ u8 field_0xCDE[0xCE0 - 0xCDE];
/* 0xCE0 */ u8 mHIOInit;
/* 0xCE1 */ u8 field_0xce1[0xce8 - 0xce1];
};
STATIC_ASSERT(sizeof(daE_FB_c) == 0xce8);
class daE_FB_HIO_c {
class daE_FB_HIO_c : public JORReflexible {
public:
/* 806B64AC */ daE_FB_HIO_c();
/* 806B8EE4 */ ~daE_FB_HIO_c();
/* 806B8EE4 */ virtual ~daE_FB_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 player_detection_range;
/* 0x10 */ s16 next_attack_waiting_time;
/* 0x12 */ s16 maximum_rotation_width;
/* 0x14 */ s16 minimum_turning_range;
/* 0x16 */ s16 rotation_width_stairs; // ""Rotation width (speed) for stairs""
/* 0x18 */ s16 color_register_1r;
/* 0x1A */ s16 color_register_1g;
/* 0x1C */ s16 color_register_1b;
/* 0x1E */ s16 color_register_1a;
/* 0x20 */ s16 maximum_rotation_width_2;
};
#endif /* D_A_E_FB_H */

View File

@ -1,5 +1,10 @@
#ifndef D_A_E_FK_H
#define D_A_E_FK_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -11,6 +16,7 @@
*
*/
class daE_FK_c : public fopEn_enemy_c {
public:
/* 806B93CC */ void CreateHeap();
/* 806B9534 */ void initBodySph();
/* 806B95BC */ void initSwordSph();
@ -46,14 +52,60 @@ class daE_FK_c : public fopEn_enemy_c {
/* 806BAF74 */ void CreateChk();
/* 806BB004 */ void Create();
private:
/* 0x5ac */ u8 field_0x5ac[0xf6c - 0x5ac];
/* 0x5AC */ u8 field_0x5AC[0x5B1 - 0x5AC];
/* 0x5B1 */ u8 field_0x5b1;
/* 0x5B2 */ u8 field_0x5B2[0x5B6 - 0x5B2];
/* 0x5B6 */ s16 field_0x5b6[2];
/* 0x5BA */ u8 field_0x5BA[0x5C0 - 0x5BA];
/* 0x5C0 */ s32 field_0x5c0;
/* 0x5C4 */ s16 field_0x5c4[4];
/* 0x5CC */ f32 field_0x5cc;
/* 0x5D0 */ s16 field_0x5d0;
/* 0x5D2 */ s16 field_0x5d2;
/* 0x5D4 */ s16 field_0x5d4;
/* 0x5D6 */ u8 field_0x5D6[0x5D8 - 0x5D6];
/* 0x5D8 */ s16 field_0x5d8;
/* 0x5DC */ f32 field_0x5dc;
/* 0x5E0 */ u8 field_0x5E0[0x5E4 - 0x5E0];
/* 0x5E4 */ f32 field_0x5e4;
/* 0x5E8 */ f32 field_0x5e8;
/* 0x5EC */ u8 field_0x5EC[0x604 - 0x5EC];
/* 0x604 */ f32 field_0x604;
/* 0x608 */ u8 field_0x608[0x60C - 0x608];
/* 0x60C */ f32 field_0x60c;
/* 0x610 */ u8 field_0x610[0x615 - 0x610];
/* 0x615 */ u8 field_0x615;
/* 0x616 */ u8 field_0x616;
/* 0x617 */ u8 field_0x617[0x618 - 0x617];
/* 0x618 */ dCcD_Sph mBodySpheres[2];
/* 0x888 */ dCcD_Sph mSwordSpheres[3];
/* 0xC30 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0xC34 */ mDoExt_invisibleModel mInvisibleModel;
/* 0xC3C */ J3DModel* mpModel;
/* 0xC40 */ request_of_phase_process_class mPhaseReq;
/* 0xC48 */ u8 field_0xC48[0xC4C - 0xC48];
/* 0xC4C */ Z2CreatureEnemy mCreatureSound;
/* 0xCF0 */ dBgS_AcchCir mAcchCir;
/* 0xD30 */ dBgS_ObjAcch mObjAcch;
/* 0xF08 */ dCcD_Stts mStts;
/* 0xF44 */ dCcU_AtInfo mAtInfo;
/* 0xF68 */ u8 mHIOInit;
};
STATIC_ASSERT(sizeof(daE_FK_c) == 0xf6c);
class daE_FK_HIO_c {
class daE_FK_HIO_c : public JORReflexible {
public:
/* 806B938C */ daE_FK_HIO_c();
/* 806BB594 */ ~daE_FK_HIO_c();
/* 806BB594 */ virtual ~daE_FK_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 alpha; // "α"
/* 0x10 */ s16 effect_alpha; // "Effectα"
/* 0x12 */ s16 generation_time;
};

View File

@ -1,6 +1,10 @@
#ifndef D_A_E_GI_H
#define D_A_E_GI_H
#include "Z2AudioLib/Z2Creature.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -12,6 +16,7 @@
*
*/
class daE_GI_c : public fopEn_enemy_c {
public:
/* 806CD4F4 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 806CD594 */ void JointCallBack(J3DJoint*, int);
/* 806CD5E0 */ void draw();
@ -38,15 +43,72 @@ class daE_GI_c : public fopEn_enemy_c {
/* 806D0054 */ void _delete();
/* 806D00E8 */ void CreateHeap();
/* 806D027C */ void create();
private:
/* 0x5ac */ u8 field_0x5ac[0x107c - 0x5ac];
/* 0x05AC */ request_of_phase_process_class mPhaseReq;
/* 0x05B4 */ mDoExt_McaMorfSO* mpMorfSO;
/* 0x05B8 */ J3DModel* mpModel;
/* 0x05BC */ Z2CreatureEnemy mCreatureSound;
/* 0x0660 */ f32 field_0x0660;
/* 0x0664 */ f32 field_0x0664;
/* 0x0668 */ f32 field_0x0668;
/* 0x066C */ s16 field_0x066c;
/* 0x066E */ u8 field_0x066E[0x0670 - 0x066E];
/* 0x0670 */ s32 mActionMode;
/* 0x0674 */ s32 mMoveMode;
/* 0x0678 */ u32 mShadowKey;
/* 0x067C */ u8 field_0x067C[0x067E - 0x067C];
/* 0x067E */ s16 field_0x067e;
/* 0x0680 */ s32 field_0x0680;
/* 0x0684 */ s32 field_0x0684;
/* 0x0688 */ s32 field_0x0688;
/* 0x068C */ s32 field_0x068c;
/* 0x0690 */ s32 field_0x0690;
/* 0x0694 */ s32 field_0x0694;
/* 0x0698 */ u8 field_0x0698;
/* 0x0699 */ u8 field_0x0699;
/* 0x069A */ u8 field_0x069a;
/* 0x069B */ u8 field_0x069b;
/* 0x069C */ u8 field_0x069c;
/* 0x069D */ u8 field_0x069d;
/* 0x069E */ u8 field_0x069e;
/* 0x069F */ u8 field_0x069f;
/* 0x06A0 */ u8 field_0x06a0;
/* 0x06A1 */ u8 field_0x06A1[0x06A2 - 0x06A1];
/* 0x06A2 */ s16 field_0x06a2;
/* 0x06A4 */ u8 field_0x06a4;
/* 0x06A5 */ u8 field_0x06a5;
/* 0x06A6 */ s16 field_0x06a6;
/* 0x06A8 */ s32 field_0x06a8;
/* 0x06AC */ dBgS_AcchCir mAcchCir;
/* 0x06EC */ dBgS_ObjAcch mObjAcch;
/* 0x08C4 */ dCcD_Stts mStts;
/* 0x0900 */ dCcD_Sph mSpheres[2];
/* 0x0B70 */ dCcD_Sph mAttSpheres[4];
/* 0x1050 */ dCcU_AtInfo mAtInfo;
/* 0x1074 */ u32 mPolyColorKey;
/* 0x1078 */ u8 mHIOInit;
};
STATIC_ASSERT(sizeof(daE_GI_c) == 0x107c);
class daE_GI_HIO_c {
class daE_GI_HIO_c : public JORReflexible {
public:
/* 806CD48C */ daE_GI_HIO_c();
/* 806D098C */ ~daE_GI_HIO_c();
/* 806D098C */ virtual ~daE_GI_HIO_c();
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size;
/* 0x0C */ f32 move_speed;
/* 0x10 */ f32 player_detect_range;
/* 0x14 */ f32 player_attack_distance;
/* 0x18 */ f32 attack_angle;
/* 0x1C */ f32 link_down_time;
/* 0x20 */ f32 wolf_stop_time;
/* 0x24 */ f32 scream_prevention_time;
/* 0x28 */ f32 lever_spin_time;
};

View File

@ -417,7 +417,7 @@ void daE_BG_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) {
}
/* 80685C14-80685C2C 0004F4 0018+00 7/7 0/0 0/0 .text setActionMode__8daE_BG_cFii */
void daE_BG_c::setActionMode(int param_0, int param_1) {
void daE_BG_c::setActionMode(int i_action, int i_mode) {
// NONMATCHING
}