mirror of https://github.com/zeldaret/tp.git
d_a_e_po 99% Matching (#2517)
* anm_init and nodeCallBack, need to review nodeCallBack as weird code * First pass on class, 86% match * Cleanup for PR, still work to do * Solve error after pull * Clangd format * Adressing PR comments * Update l_HIOInit * Fix debug building, 60% match on debug :')
This commit is contained in:
parent
c0717e1e56
commit
522f06458d
|
@ -363,7 +363,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
|
||||||
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
||||||
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
||||||
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
||||||
lbl_221_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
|
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte
|
||||||
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
||||||
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
||||||
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
||||||
|
|
|
@ -362,7 +362,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
|
||||||
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
||||||
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
||||||
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
||||||
lbl_221_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
|
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte
|
||||||
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
||||||
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
||||||
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
||||||
|
|
|
@ -362,7 +362,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
|
||||||
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
|
||||||
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
|
||||||
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
|
||||||
lbl_221_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
|
l_HIOInit = .bss:0x00000045; // type:object size:0x1 data:byte
|
||||||
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
@3933 = .bss:0x00000048; // type:object size:0xC scope:local
|
||||||
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
l_HIO = .bss:0x00000054; // type:object size:0x3C scope:global align:4 data:float
|
||||||
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
mRollCount = .bss:0x00000090; // type:object size:0x2 scope:global
|
||||||
|
|
|
@ -1,27 +1,175 @@
|
||||||
#ifndef D_A_E_PO_H
|
#ifndef D_A_E_PO_H
|
||||||
#define D_A_E_PO_H
|
#define D_A_E_PO_H
|
||||||
#include "f_op/f_op_actor_mng.h"
|
#include "d/d_bg_s_acch.h"
|
||||||
|
#include "d/d_cc_d.h"
|
||||||
|
#include "d/d_cc_uty.h"
|
||||||
|
#include "d/d_com_inf_game.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @ingroup actors-enemies
|
* @ingroup actors-enemies
|
||||||
* @class e_po_class
|
* @class e_po_class
|
||||||
* @brief Poe
|
* @brief Poe
|
||||||
*
|
*
|
||||||
* @details
|
* @details
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
class e_po_class : public fopEn_enemy_c {
|
|
||||||
|
enum daE_PO_ANM {
|
||||||
|
ANM_ATTACK = 5,
|
||||||
|
ANM_AWAKE = 6,
|
||||||
|
ANM_DAMAGE = 7,
|
||||||
|
ANM_DOWN = 8,
|
||||||
|
ANM_DOWN_DAMAGE = 9,
|
||||||
|
ANM_DOWN_DEAD = 10,
|
||||||
|
ANM_DOWN_WAIT = 11,
|
||||||
|
ANM_FIRE_CATCH = 12,
|
||||||
|
ANM_HANGED = 13,
|
||||||
|
ANM_HANGED_BRUSH = 14,
|
||||||
|
ANM_HANGED_DAMAGE = 15,
|
||||||
|
ANM_HANGED_WAIT = 16,
|
||||||
|
ANM_POSSESS = 17,
|
||||||
|
ANM_RUN_AFTER = 18,
|
||||||
|
ANM_RUN_AFTER2 = 19,
|
||||||
|
ANM_SWAY_BACK = 20,
|
||||||
|
ANM_WAIT = 21,
|
||||||
|
ANM_WAIT02 = 22,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum Action_e {
|
||||||
|
ACT_WAIT = 0,
|
||||||
|
ACT_AVOID = 1,
|
||||||
|
ACT_OPENING = 2,
|
||||||
|
ACT_SEARCH = 3,
|
||||||
|
ACT_ATTACK = 4,
|
||||||
|
ACT_LIMBERING = 5,
|
||||||
|
ACT_ROLL_MOVE = 6,
|
||||||
|
ACT_DAMAGE = 10,
|
||||||
|
ACT_WOLF_BITE = 11,
|
||||||
|
ACT_DEAD = 12,
|
||||||
|
ACT_HOLL_DEMO = 20,
|
||||||
|
};
|
||||||
|
|
||||||
|
class e_po_class {
|
||||||
|
public:
|
||||||
/* 80756900 */ e_po_class();
|
/* 80756900 */ e_po_class();
|
||||||
private:
|
|
||||||
/* 0x5ac */ u8 field_0x5ac[0xee0 - 0x5ac];
|
/* 0x000 */ fopEn_enemy_c enemy;
|
||||||
|
/* 0x5AC */ request_of_phase_process_class mPhase;
|
||||||
|
/* 0x5B4 */ int mType;
|
||||||
|
/* 0x5B8 */ u32 field_0x5B8;
|
||||||
|
/* 0x5BC */ u8 mArg0;
|
||||||
|
/* 0x5BD */ u8 BitSW;
|
||||||
|
/* 0x5BE */ u8 BitSW2;
|
||||||
|
/* 0x5BF */ u8 BitSW3;
|
||||||
|
/* 0x5C0 */ bool field_0x5C0;
|
||||||
|
/* 0x5C1 */ bool field_0x5C1;
|
||||||
|
/* 0x5C2 */ u8 field_0x5C2[0x5D4 - 0x5C2]; // Padding
|
||||||
|
/* 0x5D4 */ mDoExt_McaMorfSO* mpMorf;
|
||||||
|
/* 0x5D8 */ mDoExt_McaMorfSO* mpMorf3;
|
||||||
|
/* 0x5DC */ mDoExt_invisibleModel mInvModel;
|
||||||
|
/* 0x5E4 */ int mAnmID;
|
||||||
|
/* 0x5E8 */ J3DModel* mpModel;
|
||||||
|
/* 0x5EC */ J3DModel* mpModel2;
|
||||||
|
/* 0x5F0 */ mDoExt_McaMorf* mpMorf2;
|
||||||
|
/* 0x5F4 */ f32 field_0x5F4;
|
||||||
|
/* 0x5F8 */ Z2CreatureEnemy mSound1;
|
||||||
|
/* 0x69C */ Z2CreatureEnemy mSound2;
|
||||||
|
/* 0x740 */ s16 field_0x740;
|
||||||
|
/* 0x742 */ s16 mActionID;
|
||||||
|
/* 0x744 */ f32 field_0x744;
|
||||||
|
/* 0x748 */ u8 field_0x748[0x74A - 0x748]; // Padding
|
||||||
|
/* 0x74A */ s16 field_0x74A[5];
|
||||||
|
/* 0x754 */ s16 field_0x754;
|
||||||
|
/* 0x756 */ u8 field_0x756;
|
||||||
|
/* 0x757 */ s8 field_0x757;
|
||||||
|
/* 0x758 */ u8 field_0x758;
|
||||||
|
/* 0x759 */ u8 field_0x759;
|
||||||
|
/* 0x75A */ u8 field_0x75A;
|
||||||
|
/* 0x75B */ u8 field_0x75B;
|
||||||
|
/* 0x75C */ u32 field_0x75C;
|
||||||
|
/* 0x760 */ u8 field_0x760;
|
||||||
|
/* 0x762 */ s16 field_0x762;
|
||||||
|
/* 0x764 */ csXyz field_0x764;
|
||||||
|
/* 0x76C */ f32 field_0x76C;
|
||||||
|
/* 0x770 */ cXyz field_0x770; // From here on, a lot of joint angles and position vectors...
|
||||||
|
/* 0x77C */ cXyz field_0x77C;
|
||||||
|
/* 0x788 */ cXyz field_0x788;
|
||||||
|
/* 0x794 */ cXyz field_0x794;
|
||||||
|
/* 0x7A0 */ cXyz field_0x7A0;
|
||||||
|
/* 0x7AC */ cXyz field_0x7AC;
|
||||||
|
/* 0x7B8 */ cXyz field_0x7B8;
|
||||||
|
/* 0x7C4 */ f32 field_0x7C4; // Linked to lamp anim after death, flame spawn height above ground ?
|
||||||
|
/* 0x7C8 */ u8 field_0x7C8[0x7D0 - 0x7C8]; // Padding
|
||||||
|
/* 0x7D0 */ f32 field_0x7D0;
|
||||||
|
/* 0x7D4 */ f32 field_0x7D4;
|
||||||
|
/* 0x7D8 */ f32 field_0x7D8; // FovY camera ?
|
||||||
|
/* 0x7DC */ bool field_0x7DC;
|
||||||
|
/* 0x7DD */ bool field_0x7DD;
|
||||||
|
/* 0x7DE */ s16 field_0x7DE; // Amount of times bitten by wolf
|
||||||
|
/* 0x7E0 */ s16 field_0x7E0;
|
||||||
|
/* 0x7E2 */ s16 field_0x7E2;
|
||||||
|
/* 0x7E4 */ s16 field_0x7E4;
|
||||||
|
/* 0x7E6 */ csXyz field_0x7E6[4];
|
||||||
|
/* 0x7FE */ u8 field_0x7FE;
|
||||||
|
/* 0x800 */ f32 field_0x800;
|
||||||
|
/* 0x804 */ f32 field_0x804;
|
||||||
|
/* 0x808 */ f32 field_0x808;
|
||||||
|
/* 0x80C */ f32 field_0x80C;
|
||||||
|
/* 0x810 */ s16 field_0x810;
|
||||||
|
/* 0x812 */ s8 field_0x812;
|
||||||
|
/* 0x814 */ cXyz field_0x814;
|
||||||
|
/* 0x820 */ cXyz field_0x820;
|
||||||
|
/* 0x82C */ cXyz field_0x82C;
|
||||||
|
/* 0x838 */ cXyz field_0x838; // Eye pointer, camera ?
|
||||||
|
/* 0x844 */ cXyz field_0x844; // Center pointer, camera ?
|
||||||
|
/* 0x850 */ dBgS_AcchCir mAcchCir;
|
||||||
|
/* 0x890 */ dBgS_ObjAcch mAcch;
|
||||||
|
/* 0xA68 */ s8 field_0xA68;
|
||||||
|
/* 0xA6C */ dCcD_Stts mColliderStts;
|
||||||
|
/* 0xAA8 */ dCcD_Cyl mCyl;
|
||||||
|
/* 0xBE4 */ dCcD_Sph mSph;
|
||||||
|
/* 0xD1C */ dCcD_Sph mSph2;
|
||||||
|
/* 0xE54 */ dCcU_AtInfo mAtInfo;
|
||||||
|
/* 0xE78 */ u32 mParticleKey6;
|
||||||
|
/* 0xE7C */ u32 mParticleKey5[2];
|
||||||
|
/* 0xE84 */ u32 mParticleKey[4];
|
||||||
|
/* 0xE94 */ u32 mParticleKey2[4];
|
||||||
|
/* 0xEA4 */ u32 mParticleKey3[2];
|
||||||
|
/* 0xEAC */ u32 mParticleKey4[2];
|
||||||
|
/* 0xEB4 */ dPa_hermiteEcallBack_c field_0xEB4;
|
||||||
|
/* 0xECC */ u8 field_0xECC;
|
||||||
|
/* 0xECD */ u8 field_0xECD[0xee0 - 0xECD]; // Padding
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC_ASSERT(sizeof(e_po_class) == 0xee0);
|
STATIC_ASSERT(sizeof(e_po_class) == 0xee0);
|
||||||
|
|
||||||
class daE_PO_HIO_c {
|
class daE_PO_HIO_c {
|
||||||
|
public:
|
||||||
/* 8074C54C */ daE_PO_HIO_c();
|
/* 8074C54C */ daE_PO_HIO_c();
|
||||||
/* 80756DE8 */ ~daE_PO_HIO_c();
|
/* 80756DE8 */ virtual ~daE_PO_HIO_c() {}
|
||||||
|
|
||||||
|
/* 0x04 */ s8 field_0x04[4];
|
||||||
|
/* 0x08 */ f32 mBaseSize;
|
||||||
|
/* 0x0c */ f32 mSearchDist;
|
||||||
|
/* 0x10 */ f32 mAttackDist;
|
||||||
|
/* 0x14 */ f32 mMovementSpeed;
|
||||||
|
/* 0x18 */ f32 mType0AtRange;
|
||||||
|
/* 0x1c */ s16 mKanteraColor1R;
|
||||||
|
/* 0x1e */ s16 mKanteraColor1G;
|
||||||
|
/* 0x20 */ s16 mKanteraColor1B;
|
||||||
|
/* 0x22 */ s16 mKanteraColor2R;
|
||||||
|
/* 0x24 */ s16 mKanteraColor2G;
|
||||||
|
/* 0x26 */ s16 mKanteraColor2B;
|
||||||
|
/* 0x28 */ s16 mKanteraColor1A;
|
||||||
|
/* 0x2a */ s16 mReviveTime1;
|
||||||
|
/* 0x2c */ s16 mReviveTime2;
|
||||||
|
/* 0x2e */ s16 mReviveTime3;
|
||||||
|
/* 0x30 */ s16 mReviveTime4;
|
||||||
|
/* 0x32 */ s16 mFallChanceTime;
|
||||||
|
/* 0x34 */ s16 mAttackChanceTime;
|
||||||
|
/* 0x36 */ s16 field_0x36;
|
||||||
|
/* 0x38 */ f32 mModelSize;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
#endif /* D_A_E_PO_H */
|
#endif /* D_A_E_PO_H */
|
||||||
|
|
|
@ -43,8 +43,12 @@ public:
|
||||||
/* 80CB3C6C */ bool Draw();
|
/* 80CB3C6C */ bool Draw();
|
||||||
/* 80CB3C74 */ void Delete();
|
/* 80CB3C74 */ void Delete();
|
||||||
/* 80CB3E58 */ ~daPoFire_c();
|
/* 80CB3E58 */ ~daPoFire_c();
|
||||||
|
|
||||||
|
u8 getMoveEnd() { return mMoveEnd; }
|
||||||
private:
|
private:
|
||||||
/* 0x568 */ u8 field_0x568[0x618 - 0x568];
|
/* 0x568 */ u8 field_0x568[0x594 - 0x568];
|
||||||
|
/* 0x594 */ bool mMoveEnd;
|
||||||
|
/* 0x595 */ u8 field_0x595[0x618 - 0x595];
|
||||||
};
|
};
|
||||||
|
|
||||||
STATIC_ASSERT(sizeof(daPoFire_c) == 0x618);
|
STATIC_ASSERT(sizeof(daPoFire_c) == 0x618);
|
||||||
|
|
|
@ -1317,6 +1317,10 @@ inline void dComIfGs_setCollectSmell(u8 smell) {
|
||||||
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(3, smell);
|
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setSelectEquip(3, smell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline void dComIfGs_addPohSpiritNum() {
|
||||||
|
g_dComIfG_gameInfo.info.getPlayer().getCollect().addPohNum();
|
||||||
|
}
|
||||||
|
|
||||||
inline u8 dComIfGs_getPohSpiritNum() {
|
inline u8 dComIfGs_getPohSpiritNum() {
|
||||||
return g_dComIfG_gameInfo.info.getPlayer().getCollect().getPohNum();
|
return g_dComIfG_gameInfo.info.getPlayer().getCollect().getPohNum();
|
||||||
}
|
}
|
||||||
|
|
|
@ -395,6 +395,11 @@ public:
|
||||||
BOOL isCollectMirror(u8 i_item) const;
|
BOOL isCollectMirror(u8 i_item) const;
|
||||||
|
|
||||||
u8 getPohNum() const { return mPohNum; }
|
u8 getPohNum() const { return mPohNum; }
|
||||||
|
void addPohNum() {
|
||||||
|
if (mPohNum < 0xFF) {
|
||||||
|
mPohNum += 1;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/* 0x0 */ u8 mItem[8];
|
/* 0x0 */ u8 mItem[8];
|
||||||
|
|
|
@ -254,7 +254,7 @@ STATIC_ASSERT(sizeof(fopAc_ac_c) == 0x568);
|
||||||
|
|
||||||
class fopEn_enemy_c : public fopAc_ac_c {
|
class fopEn_enemy_c : public fopAc_ac_c {
|
||||||
public:
|
public:
|
||||||
/* 80019404 */ bool initBallModel();
|
/* 80019404 */ BOOL initBallModel();
|
||||||
/* 800194FC */ bool checkBallModelDraw();
|
/* 800194FC */ bool checkBallModelDraw();
|
||||||
/* 80019520 */ void setBallModelEffect(dKy_tevstr_c*);
|
/* 80019520 */ void setBallModelEffect(dKy_tevstr_c*);
|
||||||
/* 800196A0 */ void drawBallModel(dKy_tevstr_c*);
|
/* 800196A0 */ void drawBallModel(dKy_tevstr_c*);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -217,7 +217,7 @@ static int fopAc_Create(void* i_this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 80019404-800194FC 013D44 00F8+00 0/0 0/0 2/2 .text initBallModel__13fopEn_enemy_cFv */
|
/* 80019404-800194FC 013D44 00F8+00 0/0 0/0 2/2 .text initBallModel__13fopEn_enemy_cFv */
|
||||||
bool fopEn_enemy_c::initBallModel() {
|
BOOL fopEn_enemy_c::initBallModel() {
|
||||||
void* objRes = dComIfG_getObjectRes("Alink", daAlink_c::getBallModelIdx());
|
void* objRes = dComIfG_getObjectRes("Alink", daAlink_c::getBallModelIdx());
|
||||||
mBallModel = mDoExt_J3DModel__create((J3DModelData*)objRes, 0x80000, 0x11000284);
|
mBallModel = mDoExt_J3DModel__create((J3DModelData*)objRes, 0x80000, 0x11000284);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue