d_a_e_mf equivalent and d_a_e_dn work (#2492)

* Tiny start on d_a_obj_gra2

* Initial work

* Solid work done

* More work

* work on some rolling functions and deme camera

* Almost all functions worked on

* All functions worked on

* Fixed some BaseNpc functions I broke

* PR Cleanup

* PR cleanup part 2

* Worked on create function

* Worked up to search_bomb

* Work on various action functions

* Almost all functions worked on

* d_a_e_mf equivalent

* Started copying over to d_a_e_dn

* d_a_e_dn almost equivalent, e_mf cleanup

* somehow accidentally took out something from gra2 in a previous commit

* Fixed data layout issue in d_a_e_dn

* PR cleanup

* Took out fopen_enemy_c inheritance
This commit is contained in:
Carco_21 2025-06-20 17:14:52 -04:00 committed by GitHub
parent ac06966414
commit 7025de1c9c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 6986 additions and 3585 deletions

View File

@ -1673,7 +1673,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_kr"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_mb"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_md"),
ActorRel(NonMatching, "d_a_e_mf"),
ActorRel(Equivalent, "d_a_e_mf"),
ActorRel(NonMatching, "d_a_e_mk"),
ActorRel(NonMatching, "d_a_e_mk_bo"),
ActorRel(NonMatching, "d_a_e_mm"),

View File

@ -1,5 +1,9 @@
#ifndef D_A_E_DN_H
#define D_A_E_DN_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_jnt_col.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -10,17 +14,154 @@
* @details
*
*/
class e_dn_class : public fopEn_enemy_c {
class e_dn_class {
public:
/* 804EDE58 */ e_dn_class();
private:
/* 0x5ac */ u8 field_0x5ac[0x110c - 0x5ac];
/* 0x0000 */ fopEn_enemy_c actor;
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 mMode;
/* 0x05B6 */ u8 field_0x5b6;
/* 0x05B7 */ u8 field_0x5b7;
/* 0x05B8 */ u8 field_0x5b8;
/* 0x05B9 */ u8 field_0x5b9;
/* 0x05BC */ cXyz field_0x5bc;
/* 0x05C8 */ cXyz field_0x5c8;
/* 0x05D4 */ s16 field_0x5d4;
/* 0x05D6 */ s16 field_0x5d6;
/* 0x05D8 */ s8 field_0x5d8;
/* 0x05DC */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x05E0 */ int mAnmID;
/* 0x05E4 */ J3DModel* mpKnifeModel;
/* 0x05E8 */ Z2CreatureEnemy mSound;
/* 0x068C */ J3DModel* mpShieldModel;
/* 0x0690 */ J3DModel* mpSkullModel;
/* 0x0694 */ s8 field_0x694;
/* 0x0698 */ cXyz field_0x698;
/* 0x06A4 */ cXyz field_0x6a4;
/* 0x06B0 */ s16 field_0x6b0;
/* 0x06B2 */ s16 field_0x6b2;
/* 0x06B4 */ dJntCol_c mJntCol;
/* 0x06C4 */ s8 field_0x6c4;
/* 0x06C8 */ f32 field_0x6c8;
/* 0x06CC */ s16 field_0x6cc;
/* 0x06CE */ s16 mAction;
/* 0x06D0 */ f32 mPlayerDistance;
/* 0x06D4 */ s16 mYAngleToPlayer;
/* 0x06D6 */ s16 mXAngleToPlayer;
/* 0x06D8 */ f32 field_0x6d8;
/* 0x06DC */ u32 mShadowKey;
/* 0x06E0 */ s16 field_0x6e0[4];
/* 0x06E8 */ s16 field_0x6e8;
/* 0x06EA */ s16 field_0x6ea;
/* 0x06EC */ s16 field_0x6ec;
/* 0x06EE */ s8 field_0x6ee;
/* 0x06EF */ s8 field_0x6ef;
/* 0x06F0 */ s8 field_0x6f0;
/* 0x06F1 */ s8 field_0x6f1;
/* 0x06F2 */ s8 field_0x6f2;
/* 0x06F3 */ s8 field_0x6f3;
/* 0x06F4 */ s8 field_0x6f4;
/* 0x06F5 */ u8 field_0x6f5;
/* 0x06F6 */ s16 field_0x6f6;
/* 0x06F8 */ s16 field_0x6f8;
/* 0x06FA */ s16 field_0x6fa;
/* 0x06FC */ s16 field_0x6fc;
/* 0x06FE */ s16 field_0x6fe;
/* 0x0700 */ s8 field_0x700;
/* 0x0701 */ s8 field_0x701;
/* 0x0704 */ f32 field_0x704;
/* 0x0708 */ f32 field_0x708;
/* 0x070C */ s16 field_0x70c;
/* 0x070E */ s16 field_0x70e;
/* 0x0710 */ s8 field_0x710;
/* 0x0711 */ u8 field_0x711[15];
/* 0x0720 */ f32 field_0x720;
/* 0x0724 */ csXyz field_0x724;
/* 0x072A */ csXyz field_0x72a;
/* 0x0730 */ csXyz field_0x730;
/* 0x0736 */ s8 field_0x736;
/* 0x0737 */ s8 field_0x737;
/* 0x0738 */ cXyz field_0x738;
/* 0x0744 */ int field_0x744;
/* 0x0748 */ u8 field_0x748[4];
/* 0x074C */ f32 field_0x74c;
/* 0x0750 */ s16 field_0x750;
/* 0x0754 */ f32 field_0x754;
/* 0x0758 */ s16 field_0x758;
/* 0x075C */ f32 field_0x75c;
/* 0x0760 */ s16 field_0x760;
/* 0x0762 */ csXyz field_0x762[11];
/* 0x07A4 */ csXyz field_0x7a4[11];
/* 0x07E8 */ f32 field_0x7e8;
/* 0x07EC */ s16 field_0x7ec[2];
/* 0x07F0 */ s16 field_0x7f0;
/* 0x07F2 */ s16 field_0x7f2;
/* 0x07F4 */ s16 field_0x7f4;
/* 0x07F6 */ s16 field_0x7f6;
/* 0x07FA */ s16 field_0x7f8;
/* 0x07FA */ s16 field_0x7fa;
/* 0x07FC */ s16 field_0x7fc[3];
/* 0x0802 */ s16 field_0x802[4];
/* 0x080A */ s16 field_0x80a;
/* 0x080C */ s16 field_0x80c;
/* 0x080E */ csXyz field_0x80e[4];
/* 0x0826 */ s16 field_0x826;
/* 0x0828 */ s16 field_0x828;
/* 0x082A */ s16 field_0x82a;
/* 0x082C */ s16 field_0x82c;
/* 0x082E */ s8 field_0x82e;
/* 0x082F */ u8 field_0x82f;
/* 0x0830 */ s16 field_0x830;
/* 0x0832 */ s16 field_0x832;
/* 0x0834 */ u8 field_0x834[2];
/* 0x0836 */ csXyz field_0x836;
/* 0x083C */ f32 field_0x83c;
/* 0x0840 */ s16 field_0x840;
/* 0x0842 */ s16 field_0x842;
/* 0x0844 */ dBgS_AcchCir mAcchCir;
/* 0x0884 */ dBgS_ObjAcch mObjAcch;
/* 0x0A5C */ f32 field_0xa5c;
/* 0x0A60 */ dCcD_Stts mStts;
/* 0x0A9C */ dCcD_Sph field_0xa9c[3];
/* 0x0E44 */ dCcD_Sph field_0xe44;
/* 0x0F7C */ dCcD_Sph field_0xf7c;
/* 0x10B4 */ dCcU_AtInfo mAtInfo;
/* 0x10D8 */ u8 field_0x10d8;
/* 0x10D9 */ u8 field_0x10d9;
/* 0x10DA */ s8 field_0x10da;
/* 0x10DB */ u8 field_0x10db;
/* 0x10DC */ u32 field_0x10dc;
/* 0x10E0 */ u32 field_0x10e0;
/* 0x10E4 */ s8 field_0x10e4;
/* 0x10E8 */ u32 field_0x10e8[2];
/* 0x10F0 */ u32 field_0x10f0[2];
/* 0x10F8 */ u32 field_0x10f8;
/* 0x10FC */ u32 field_0x10fc;
/* 0x1100 */ u8 field_0x1100[12];
};
STATIC_ASSERT(sizeof(e_dn_class) == 0x110c);
class daE_DN_HIO_c {
class daE_DN_HIO_c : public JORReflexible {
public:
/* 804E51AC */ daE_DN_HIO_c();
/* 804EE39C */ ~daE_DN_HIO_c();
/* 804EE39C */ virtual ~daE_DN_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size; // 基本サイズ
/* 0x0C */ f32 movement_speed; // 移動速度
/* 0x10 */ f32 dash_speed; // 突進速度
/* 0x14 */ f32 battle_init_range; // 戦闘開始範囲
/* 0x18 */ f32 attack_init_range; // 攻撃開始範囲
/* 0x1C */ s16 field_0x1c; // 防御静止間
/* 0x1E */ s16 field_0x1e; // 魂抜間 弱
/* 0x20 */ s16 field_0x20; // 魂抜間 強
/* 0x22 */ u8 field_0x22;
/* 0x23 */ u8 invulnerable; // 不死身
/* 0x24 */ u8 field_0x24; // 学習なし
};

View File

@ -1,5 +1,9 @@
#ifndef D_A_E_MF_H
#define D_A_E_MF_H
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "d/d_jnt_col.h"
#include "f_op/f_op_actor_mng.h"
/**
@ -10,17 +14,147 @@
* @details
*
*/
class e_mf_class : public fopEn_enemy_c {
class e_mf_class {
public:
/* 80712F20 */ e_mf_class();
private:
/* 0x5ac */ u8 field_0x5ac[0x10ec - 0x5ac];
/* 0x0000 */ fopEn_enemy_c actor;
/* 0x05AC */ request_of_phase_process_class mPhase;
/* 0x05B4 */ s16 field_0x5b4;
/* 0x05B6 */ u8 field_0x5b6;
/* 0x05B7 */ u8 field_0x5b7;
/* 0x05B8 */ u8 field_0x5b8;
/* 0x05B9 */ u8 field_0x5b9;
/* 0x05BC */ cXyz field_0x5bc;
/* 0x05C8 */ cXyz field_0x5c8;
/* 0x05D4 */ s16 field_0x5d4;
/* 0x05D6 */ s16 field_0x5d6;
/* 0x05D8 */ s8 field_0x5d8;
/* 0x05DC */ mDoExt_McaMorfSO* mpModelMorf;
/* 0x05E0 */ int mAnmID;
/* 0x05E4 */ J3DModel* mpAxeModel;
/* 0x05E8 */ Z2CreatureEnemy mSound;
/* 0x068C */ J3DModel* mpShieldModel;
/* 0x0690 */ u8 field_0x690[4];
/* 0x0694 */ dJntCol_c mJntCol;
/* 0x06A4 */ s8 field_0x6a4;
/* 0x06A8 */ f32 field_0x6a8;
/* 0x06AC */ s16 field_0x6ac;
/* 0x06AE */ s16 mAction;
/* 0x06B0 */ f32 mPlayerDistance;
/* 0x06B4 */ s16 mYAngleToPlayer;
/* 0x06B6 */ s16 mXAngleToPlayer;
/* 0x06B8 */ f32 field_0x6b8;
/* 0x06BC */ u32 mShadowKey;
/* 0x06C0 */ s16 field_0x6c0[4];
/* 0x06C8 */ s16 field_0x6c8;
/* 0x06CA */ s16 field_0x6ca;
/* 0x06CC */ s16 field_0x6cc;
/* 0x06CE */ s8 field_0x6ce;
/* 0x06CF */ s8 field_0x6cf;
/* 0x06D0 */ s8 field_0x6d0;
/* 0x06D1 */ s8 field_0x6d1;
/* 0x06D2 */ s8 field_0x6d2;
/* 0x06D3 */ s8 field_0x6d3;
/* 0x06D4 */ s8 field_0x6d4;
/* 0x06D5 */ u8 field_0x6d5;
/* 0x06D6 */ s16 field_0x6d6;
/* 0x06D8 */ s16 field_0x6d8;
/* 0x06DA */ s16 field_0x6da;
/* 0x06DC */ s16 field_0x6dc;
/* 0x06DE */ s16 field_0x6de;
/* 0x06E0 */ s8 field_0x6e0;
/* 0x06E1 */ s8 field_0x6e1;
/* 0x06E4 */ f32 field_0x6e4;
/* 0x06E8 */ f32 field_0x6e8;
/* 0x06EC */ s16 field_0x6ec;
/* 0x06EE */ s16 field_0x6ee;
/* 0x06F0 */ s8 field_0x6f0;
/* 0x06F1 */ u8 field_0x6f1[0x700 - 0x6f1];
/* 0x0700 */ f32 field_0x700;
/* 0x0704 */ csXyz field_0x704;
/* 0x070A */ csXyz field_0x70a;
/* 0x0710 */ csXyz field_0x710;
/* 0x0716 */ s8 field_0x716;
/* 0x0717 */ s8 field_0x717;
/* 0x0718 */ cXyz field_0x718;
/* 0x0724 */ u32 field_0x724;
/* 0x0728 */ u8 field_0x728;
/* 0x072C */ f32 field_0x72c;
/* 0x0730 */ s16 field_0x730;
/* 0x0734 */ f32 field_0x734;
/* 0x0738 */ s16 field_0x738;
/* 0x073C */ f32 field_0x73c;
/* 0x0740 */ s16 field_0x740;
/* 0x0742 */ csXyz field_0x742[11];
/* 0x0784 */ csXyz field_0x784[11];
/* 0x07C8 */ f32 field_0x7c8;
/* 0x07CC */ s16 field_0x7cc[2];
/* 0x07D0 */ s16 field_0x7d0;
/* 0x07D2 */ s16 field_0x7d2;
/* 0x07D4 */ s16 field_0x7d4;
/* 0x07D6 */ s16 field_0x7d6;
/* 0x07D8 */ s16 field_0x7d8;
/* 0x07DA */ s16 field_0x7da;
/* 0x07DC */ s16 field_0x7dc[3];
/* 0x07E2 */ s16 field_0x7e2[4];
/* 0x07EA */ s16 field_0x7ea;
/* 0x07EC */ s16 field_0x7ec;
/* 0x07EE */ csXyz field_0x7ee[4];
/* 0x0806 */ s16 field_0x806;
/* 0x0808 */ s16 field_0x808;
/* 0x080A */ s16 field_0x80a;
/* 0x080C */ s16 field_0x80c;
/* 0x080E */ s8 field_0x80e;
/* 0x0810 */ s16 field_0x810;
/* 0x0812 */ s16 field_0x812;
/* 0x0814 */ u8 field_0x814[2];
/* 0x0816 */ csXyz field_0x816;
/* 0x081C */ f32 field_0x81c;
/* 0x0820 */ s16 field_0x820;
/* 0x0822 */ s16 field_0x822;
/* 0x0824 */ dBgS_AcchCir mAcchCir;
/* 0x0864 */ dBgS_ObjAcch mObjAcch;
/* 0x0A3C */ f32 field_0xa3c;
/* 0x0A40 */ dCcD_Stts mStts;
/* 0x0A7C */ dCcD_Sph field_0xa7c[3];
/* 0x0E24 */ dCcD_Sph field_0xe24;
/* 0x0F5C */ dCcD_Sph field_0xf5c;
/* 0x1094 */ dCcU_AtInfo mAtInfo;
/* 0x10B8 */ u8 field_0x10b8;
/* 0x10B9 */ u8 field_0x10b9;
/* 0x10BA */ s8 field_0x10ba;
/* 0x10BB */ u8 field_0x10bb;
/* 0x10BC */ u32 field_0x10bc;
/* 0x10C0 */ u32 field_0x10c0;
/* 0x10C4 */ s8 field_0x10c4;
/* 0x10C8 */ u32 field_0x10c8[2];
/* 0x10D0 */ u32 field_0x10d0[2];
/* 0x10D8 */ u8 field_0x10d8[0x10e4 - 0x10d8];
/* 0x10E4 */ u32 field_0x10e4;
/* 0x10E8 */ u32 field_0x10e8;
};
STATIC_ASSERT(sizeof(e_mf_class) == 0x10ec);
class daE_MF_HIO_c {
class daE_MF_HIO_c : public JORReflexible {
public:
/* 8070A70C */ daE_MF_HIO_c();
/* 80713464 */ ~daE_MF_HIO_c();
/* 80713464 */ virtual ~daE_MF_HIO_c() {}
void genMessage(JORMContext*);
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 model_size; // 基本サイズ
/* 0x0C */ f32 movement_speed; // 移動速度
/* 0x10 */ f32 dash_speed; // 突進速度
/* 0x14 */ f32 battle_init_range; // 戦闘開始範囲
/* 0x18 */ f32 attack_init_range; // 攻撃開始範囲
/* 0x1C */ s16 field_0x1c; // 防御静止間
/* 0x1E */ s16 field_0x1e; // 魂抜間 弱
/* 0x20 */ s16 field_0x20; // 魂抜間 強
/* 0x22 */ u8 field_0x22;
/* 0x23 */ u8 invulnerable; // 不死身
};

View File

@ -265,6 +265,7 @@ public:
bool checkWolfDownPullFlg() const { return mFlags & 0x10; }
bool checkDownFlg() const { return mFlags & 0x1; }
bool checkCutDownHitFlg() const { return mFlags & 0x2; }
bool checkWolfDownStartFlg() const { return mFlags & 0x4; }
bool checkDeadFlg() const { return mFlags & 0x8; }
bool checkThrowMode(u8 param_1) const { return mThrowMode & param_1; }

View File

@ -20,6 +20,7 @@ fpc_ProcID fopKyM_Create(s16 i_procName, fopKyM_CreateFunc i_createFunc, void* i
base_process_class* fopKyM_fastCreate(s16 i_procName, int i_param, cXyz* i_pos, cXyz* i_scale,
fopKyM_CreateFunc i_createFunc);
fpc_ProcID fopKyM_createWpillar(cXyz const* i_pos, f32 scale, int i_param);
fpc_ProcID fopKyM_createMpillar(cXyz const* i_pos, f32 i_size);
inline fopKyM_prm_class* fopKyM_GetAppend(void* i_process) {
return (fopKyM_prm_class*)fpcM_GetAppend(i_process);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff