summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-04-15 01:16:22 -0700
committerGitHub <noreply@github.com>2025-04-15 11:16:22 +0300
commit59ff71c355015c7ed2ffadf96371db67c1b1d0b5 (patch)
tree572b18d2c724557955bf15275622464477d15dbb /include
parentc1845e9e09953d0a93048b6d8bee28d909d328c8 (diff)
e_fm equivalent (#2395)
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_e_fm.h222
-rw-r--r--include/d/actor/d_a_obj_hhashi.h1
2 files changed, 211 insertions, 12 deletions
diff --git a/include/d/actor/d_a_e_fm.h b/include/d/actor/d_a_e_fm.h
index a1b39a274c..8ece67184a 100644
--- a/include/d/actor/d_a_e_fm.h
+++ b/include/d/actor/d_a_e_fm.h
@@ -2,8 +2,39 @@
#define D_A_E_FM_H
#include "f_op/f_op_actor_mng.h"
+#include "d/d_cc_d.h"
+#include "d/d_cc_uty.h"
+#include "d/d_bg_s_acch.h"
#include "Z2AudioLib/Z2Creature.h"
+struct chain_s {
+ /* 0x0000 */ J3DModel* model[26];
+ /* 0x0068 */ cXyz field_0x68;
+ /* 0x0074 */ cXyz pos[26];
+ /* 0x01AC */ cXyz field_0x1ac[26];
+ /* 0x02E4 */ cXyz field_0x2e4[26];
+ /* 0x041C */ csXyz rot[26];
+ /* 0x04B8 */ dKy_tevstr_c tevstr[26];
+ /* 0x6088 */ cXyz sound_pos;
+ /* 0x6094 */ cXyz field_0x6094;
+ /* 0x60A0 */ u8 field_0x60A0[0x6170 - 0x60A0];
+ /* 0x6170 */ int field_0x6170;
+ /* 0x6174 */ f32 field_0x6174;
+ /* 0x6178 */ f32 field_0x6178;
+ /* 0x617C */ s8 field_0x617c;
+ /* 0x617D */ s8 field_0x617d;
+ /* 0x617E */ s8 field_0x617e;
+ /* 0x6180 */ cXyz field_0x6180;
+ /* 0x618C */ cXyz field_0x618c;
+ /* 0x6198 */ f32 field_0x6198;
+ /* 0x619C */ s8 field_0x619c;
+ /* 0x619E */ s16 field_0x619e;
+ /* 0x61A0 */ f32 field_0x61a0;
+ /* 0x61A4 */ f32 field_0x61a4;
+ /* 0x61A8 */ u8 field_0x61A8[0x61D0 - 0x61A8];
+ /* 0x61D0 */ int field_0x61d0;
+};
+
/**
* @ingroup actors-enemies
* @class e_fm_class
@@ -15,23 +46,192 @@
class e_fm_class : public fopEn_enemy_c {
public:
/* 804F9B64 */ e_fm_class();
- /* 0x005AC */ u8 field_0x5ac[0x63c - 0x5ac];
- /* 0x0063C */ Z2CreatureFM field_0x63c;
- /* 0x00760 */ u8 field_0x760[0x1828 - 0x760];
- /* 0x01828 */ u8 field_0x1828;
- /* 0x01829 */ u8 field_0x1829[0x1b084 - 0x1829];
+
+ BOOL checkCameraFree() { return field_0x1b07c; }
+
+ /* 0x005AC */ request_of_phase_process_class mPhase;
+ /* 0x005B4 */ u8 arg0;
+ /* 0x005B5 */ u8 arg1;
+ /* 0x005B6 */ u8 arg3;
+ /* 0x005B7 */ u8 field_0x5B7[0x005C4 - 0x005B7];
+ /* 0x005C4 */ s16 field_0x5c4;
+ /* 0x005C6 */ s16 mAngleToPlayer;
+ /* 0x005C8 */ int field_0x5c8;
+ /* 0x005CC */ f32 mKankyoBlend;
+ /* 0x005D0 */ mDoExt_McaMorf* mpFmModelMorf;
+ /* 0x005D4 */ mDoExt_btkAnm* mpFmBtk[9];
+ /* 0x005F8 */ mDoExt_brkAnm* mpFmBrk[9];
+ /* 0x0061C */ int mPlayTexAnmNo;
+ /* 0x00620 */ int mAnm;
+ /* 0x00624 */ s8 mDrawDemoModel;
+ /* 0x00628 */ mDoExt_McaMorf* mpDemoFmModelMorf;
+ /* 0x0062C */ u8 field_0x62C[0x00630 - 0x0062C];
+ /* 0x00630 */ mDoExt_brkAnm* mpDemoFmBrk;
+ /* 0x00634 */ f32 mDemoModelSize;
+ /* 0x00638 */ f32 mDemoModelSizeStep;
+ /* 0x0063C */ Z2CreatureFM mSound;
+ /* 0x00760 */ J3DModel* mpCoreModel;
+ /* 0x00764 */ mDoExt_btkAnm* mpCoreBtk;
+ /* 0x00768 */ mDoExt_brkAnm* mpCoreBrk;
+ /* 0x0076C */ f32 mCoreBrkFrame;
+ /* 0x00770 */ s16 field_0x770;
+ /* 0x00772 */ s8 mDoCreateBa;
+ /* 0x00773 */ u8 field_0x773;
+ /* 0x00774 */ f32 mChainColorR;
+ /* 0x00778 */ f32 field_0x778;
+ /* 0x0077C */ mDoExt_McaMorf* mpAttackEfModelMorf[2];
+ /* 0x00784 */ mDoExt_btkAnm* mpAttackEfBtk[2];
+ /* 0x0078C */ mDoExt_brkAnm* mpAttackEfBrk;
+ /* 0x00790 */ s16 field_0x790;
+ /* 0x00792 */ s8 field_0x792;
+ /* 0x00794 */ f32 field_0x794;
+ /* 0x00798 */ f32 field_0x798;
+ /* 0x0079C */ f32 field_0x79c;
+ /* 0x007A0 */ s16 mCounter;
+ /* 0x007A2 */ s16 mAction;
+ /* 0x007A4 */ s16 mMode;
+ /* 0x007A8 */ u32 mShadowKey;
+ /* 0x007AC */ s16 mTimers[4];
+ /* 0x007B4 */ s16 mDamageInvulnerabilityTimer;
+ /* 0x007B6 */ s8 field_0x7b6;
+ /* 0x007B8 */ f32 field_0x7b8;
+ /* 0x007BC */ u8 field_0x7BC[0x007C0 - 0x007BC];
+ /* 0x007C0 */ s8 field_0x7c0;
+ /* 0x007C2 */ s16 mBodyRotX;
+ /* 0x007C4 */ s16 mHeadRotZ;
+ /* 0x007C8 */ cXyz mFootPos[2];
+ /* 0x007E0 */ int field_0x7e0;
+ /* 0x007E4 */ cXyz field_0x7e4[2];
+ /* 0x007FC */ f32 field_0x7fc;
+ /* 0x00800 */ s16 field_0x800;
+ /* 0x00802 */ s8 mDownCnt;
+ /* 0x00804 */ s16 field_0x804;
+ /* 0x00806 */ s16 field_0x806;
+ /* 0x00808 */ s8 field_0x808;
+ /* 0x00809 */ s8 field_0x809;
+ /* 0x0080C */ dBgS_AcchCir mAcchCir;
+ /* 0x0084C */ dBgS_ObjAcch mAcch;
+ /* 0x00A24 */ dCcD_Stts field_0xa24;
+ /* 0x00A60 */ dCcD_Stts field_0xa60;
+ /* 0x00A9C */ dCcD_Sph mCcSph[8];
+ /* 0x0145C */ dCcD_Sph mAtSph;
+ /* 0x01594 */ dCcD_Sph mCoreSph;
+ /* 0x016CC */ dCcD_Sph mEffAtSph;
+ /* 0x01804 */ dCcU_AtInfo mAtInfo;
+ /* 0x01828 */ s8 field_0x1828;
+ /* 0x01829 */ s8 field_0x1829;
+ /* 0x0182A */ s8 field_0x182a;
+ /* 0x0182B */ s8 field_0x182b;
+ /* 0x0182C */ s8 field_0x182c;
+ /* 0x0182D */ s8 mHideCore;
+ /* 0x01830 */ f32 field_0x1830;
+ /* 0x01834 */ f32 field_0x1834;
+ /* 0x01838 */ u32 field_0x1838[14];
+ /* 0x01870 */ u32 field_0x1870;
+ /* 0x01874 */ u32 field_0x1874;
+ /* 0x01878 */ u32 field_0x1878;
+ /* 0x0187C */ u32 field_0x187c[2];
+ /* 0x01884 */ u32 field_0x1884;
+ /* 0x01888 */ u32 field_0x1888[4];
+ /* 0x01898 */ fopAc_ac_c* mHashiraActors[10];
+ /* 0x018C0 */ u8 field_0x18c0[0x018D0 - 0x018C0];
+ /* 0x018D0 */ cXyz field_0x18d0[8];
+ /* 0x01930 */ u8 field_0x1930[0x1990 - 0x01930];
+ /* 0x01990 */ dCcD_Sph mFEffAtSph[8];
+ /* 0x02350 */ u32 field_0x2350;
+ /* 0x02354 */ u32 field_0x2354[8];
+ /* 0x02374 */ u32 field_0x2374[6];
+ /* 0x0238C */ u32 field_0x238c[3];
+ /* 0x02398 */ s8 field_0x2398;
+ /* 0x02399 */ s8 field_0x2399;
+ /* 0x0239C */ LIGHT_INFLUENCE mPlight;
+ /* 0x023BC */ chain_s mChain[4];
+ /* 0x1AB0C */ s8 field_0x1ab0c[4];
+ /* 0x1AB10 */ dCcD_Sph mChainAtSph[4];
+ /* 0x1AFF0 */ u8 field_0x1aff0;
+ /* 0x1AFF2 */ s16 mDemoCamMode;
+ /* 0x1AFF4 */ s16 mDemoCamTimer;
+ /* 0x1AFF6 */ s16 field_0x1aff6;
+ /* 0x1AFF8 */ cXyz mDemoCamEye;
+ /* 0x1B004 */ cXyz mDemoCamCenter;
+ /* 0x1B010 */ cXyz mDemoCamEyeTarget;
+ /* 0x1B01C */ cXyz mDemoCamCenterTarget;
+ /* 0x1B028 */ cXyz mDemoCamEyeSpd;
+ /* 0x1B034 */ cXyz mDemoCamCenterSpd;
+ /* 0x1B040 */ cXyz field_0x1b040;
+ /* 0x1B04C */ f32 mDemoCamFovy;
+ /* 0x1B050 */ f32 field_0x1b050;
+ /* 0x1B054 */ f32 field_0x1b054;
+ /* 0x1B058 */ u8 field_0x1B058[0x1B05C - 0x1B058];
+ /* 0x1B05C */ f32 field_0x1b05c;
+ /* 0x1B060 */ u8 field_0x1B060[0x1B064 - 0x1B060];
+ /* 0x1B064 */ f32 field_0x1b064;
+ /* 0x1B068 */ f32 field_0x1b068;
+ /* 0x1B06C */ f32 field_0x1b06c;
+ /* 0x1B070 */ f32 field_0x1b070;
+ /* 0x1B074 */ f32 field_0x1b074;
+ /* 0x1B078 */ s8 field_0x1b078;
+ /* 0x1B07C */ int field_0x1b07c;
+ /* 0x1B080 */ s8 field_0x1b080;
+ /* 0x1B081 */ u8 mInitHIO;
};
STATIC_ASSERT(sizeof(e_fm_class) == 0x1b084);
-class daE_FM_HIO_c {
+class daE_FM_HIO_c : public JORReflexible {
+public:
/* 804EF0EC */ daE_FM_HIO_c();
- /* 804FA3D8 */ ~daE_FM_HIO_c();
-};
-struct chain_s {
- /* 804F9E14 */ ~chain_s();
- /* 804F9F14 */ chain_s();
+ void genMessage(JORMContext*);
+ /* 804FA3D8 */ virtual ~daE_FM_HIO_c() {}
+
+ /* 0x04 */ s8 no;
+ /* 0x08 */ f32 base_size;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ f32 field_0x24;
+ /* 0x28 */ f32 field_0x28;
+ /* 0x2C */ f32 field_0x2c;
+ /* 0x30 */ f32 field_0x30;
+ /* 0x34 */ s16 field_0x34;
+ /* 0x36 */ s16 field_0x36;
+ /* 0x38 */ s16 field_0x38;
+ /* 0x3C */ f32 field_0x3c;
+ /* 0x40 */ f32 field_0x40;
+ /* 0x44 */ f32 field_0x44;
+ /* 0x48 */ f32 chain_size;
+ /* 0x4C */ f32 field_0x4c;
+ /* 0x50 */ f32 field_0x50;
+ /* 0x54 */ f32 field_0x54;
+ /* 0x58 */ f32 field_0x58;
+ /* 0x5C */ f32 field_0x5c;
+ /* 0x60 */ u8 field_0x60;
+ /* 0x61 */ u8 field_0x61;
+ /* 0x64 */ f32 field_0x64;
+ /* 0x68 */ f32 field_0x68;
+ /* 0x6C */ f32 field_0x6c;
+ /* 0x70 */ f32 field_0x70;
+ /* 0x74 */ f32 field_0x74;
+ /* 0x78 */ f32 field_0x78;
+ /* 0x7C */ f32 field_0x7c;
+ /* 0x80 */ f32 field_0x80;
+ /* 0x84 */ f32 field_0x84;
+ /* 0x88 */ f32 field_0x88;
+ /* 0x8C */ f32 field_0x8c;
+ /* 0x90 */ f32 field_0x90;
+ /* 0x94 */ s16 field_0x94;
+ /* 0x96 */ s16 field_0x96;
+ /* 0x98 */ s16 field_0x98;
+ /* 0x9A */ s16 field_0x9a;
+ /* 0x9C */ s16 field_0x9c;
+ /* 0xA0 */ f32 field_0xa0;
+ /* 0xA4 */ f32 field_0xa4;
+ /* 0xA8 */ f32 field_0xa8;
+ /* 0xAC */ u8 field_0xac;
};
diff --git a/include/d/actor/d_a_obj_hhashi.h b/include/d/actor/d_a_obj_hhashi.h
index 7392886029..353c0f039e 100644
--- a/include/d/actor/d_a_obj_hhashi.h
+++ b/include/d/actor/d_a_obj_hhashi.h
@@ -34,7 +34,6 @@ public:
/* 805812BC */ int Draw();
/* 8058140C */ int Delete();
-private:
/* 0x05A0 */ int field_0x5a0;
/* 0x05A4 */ int field_0x5a4;
/* 0x05A8 */ s8 field_0x5a8;