d_a_e_dn work (#2899)

* d_a_e_dn work

* PR cleanup and more documentation
This commit is contained in:
Carco_21 2025-12-03 17:16:08 -05:00 committed by GitHub
parent c1861812ef
commit 5716efc4c8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 1696 additions and 1619 deletions

View File

@ -219,7 +219,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@1012 = .bss:0x0000003C; // type:object size:0x1 scope:local
@1010 = .bss:0x00000040; // type:object size:0x1 scope:local
@1009 = .bss:0x00000044; // type:object size:0x1 scope:local
lbl_65_bss_45 = .bss:0x00000045; // type:object size:0x1 data:byte
l_initHIO = .bss:0x00000045; // type:object size:0x1 data:byte
@3805 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x28 scope:global data:byte
target_info = .bss:0x0000007C; // type:object size:0x28 scope:global

View File

@ -260,7 +260,7 @@ cflags_base = [
]
if config.version == "ShieldD":
cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1"])
cflags_base.extend(["-O0", "-inline off", "-RTTI on", "-str reuse", "-enc SJIS", "-DDEBUG=1", "-DWIDESCREEN_SUPPORT=1", '-pragma "nosyminline on"'])
elif config.version == "RZDE01_00" or config.version == "RZDE01_02" or config.version == "Shield":
cflags_base.extend(["-O4,p", "-inline auto", "-ipa file", "-RTTI on", "-str reuse", "-enc SJIS", "-DWIDESCREEN_SUPPORT=1"])
else:

View File

@ -13,56 +13,56 @@
*
* @details
*
*/
*/
class e_dn_class {
public:
e_dn_class();
/* 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;
/* 0x05AC */ request_of_phase_process_class phase;
/* 0x05B4 */ s16 mode;
/* 0x05B6 */ u8 arg0;
/* 0x05B7 */ u8 arg1;
/* 0x05B8 */ u8 arg2;
/* 0x05B9 */ u8 arg3;
/* 0x05BC */ cXyz field_0x5bc;
/* 0x05C8 */ cXyz field_0x5c8;
/* 0x05D4 */ s16 field_0x5d4;
/* 0x05D4 */ s16 cur_angle_y_target;
/* 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;
/* 0x05DC */ mDoExt_McaMorfSO* anm_p;
/* 0x05E0 */ int anm_no;
/* 0x05E4 */ J3DModel* knife_model;
/* 0x05E8 */ Z2CreatureEnemy sound;
/* 0x068C */ J3DModel* tate_model;
/* 0x0690 */ J3DModel* skull_model;
/* 0x0694 */ s8 field_0x694;
/* 0x0698 */ cXyz field_0x698;
/* 0x0698 */ cXyz skull_trans;
/* 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;
/* 0x06B0 */ s16 skull_y_rot;
/* 0x06B2 */ s16 skull_x_rot;
/* 0x06B4 */ dJntCol_c jc;
/* 0x06C4 */ s8 death_flag;
/* 0x06C8 */ f32 color;
/* 0x06CC */ s16 frame_counter;
/* 0x06CE */ s16 action;
/* 0x06D0 */ f32 pl_dir;
/* 0x06D4 */ s16 search_angle_y;
/* 0x06D6 */ s16 search_angle_x;
/* 0x06D8 */ f32 pl_range;
/* 0x06DC */ u32 shadow_key;
/* 0x06E0 */ s16 timer[4];
/* 0x06E8 */ s16 invulnerability_timer;
/* 0x06EA */ s16 unk_timer_1;
/* 0x06EC */ s16 unk_timer_2;
/* 0x06EE */ s8 tail_at_sph_flag;
/* 0x06EF */ s8 at_chk_flag;
/* 0x06F0 */ s8 at_sph_center_flag;
/* 0x06F1 */ s8 guard_flag;
/* 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;
@ -75,16 +75,16 @@ public:
/* 0x070C */ s16 field_0x70c;
/* 0x070E */ s16 field_0x70e;
/* 0x0710 */ s8 field_0x710;
/* 0x0711 */ u8 field_0x711[15];
/* 0x0720 */ f32 field_0x720;
/* 0x0714 */ cXyz field_0x711;
/* 0x0720 */ f32 cur_pos_y_offset;
/* 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];
/* 0x0736 */ s8 unk_timer_3;
/* 0x0737 */ s8 left_right_flag;
/* 0x0738 */ cXyz find_pos;
/* 0x0744 */ int learn;
/* 0x0748 */ u8 field_0x748[0x74c - 0x748];
/* 0x074C */ f32 field_0x74c;
/* 0x0750 */ s16 field_0x750;
/* 0x0754 */ f32 field_0x754;
@ -95,49 +95,45 @@ public:
/* 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;
/* 0x07F0 */ s16 jnt_waist_z_rot;
/* 0x07F2 */ s16 jnt_arml1_z_rot_offset;
/* 0x07F4 */ s16 jnt_arml2_z_rot_offset;
/* 0x07F6 */ s16 jnt_armr1_z_rot_offset;
/* 0x07FA */ s16 jnt_armr2_z_rot_offset;
/* 0x07FA */ s16 jnt_legl1_y_rot;
/* 0x07FC */ s16 field_0x7fc[3];
/* 0x0802 */ s16 field_0x802[4];
/* 0x080A */ s16 field_0x80a;
/* 0x080C */ s16 field_0x80c;
/* 0x080A */ s16 death_jnt_rot;
/* 0x080C */ s16 death_jnt_rot_counter;
/* 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];
/* 0x0826 */ s16 jnt_tail_y_rot_offset;
/* 0x0828 */ s16 unk_timer_4;
/* 0x082A */ s16 angle_y_offset;
/* 0x082C */ s16 unk_counter_1;
/* 0x082E */ s8 snap_angle_y_flag;
/* 0x0830 */ csXyz field_0x830;
/* 0x0836 */ csXyz field_0x836;
/* 0x083C */ f32 field_0x83c;
/* 0x0840 */ s16 field_0x840;
/* 0x0842 */ s16 field_0x842;
/* 0x0844 */ dBgS_AcchCir mAcchCir;
/* 0x0884 */ dBgS_ObjAcch mObjAcch;
/* 0x0840 */ s16 unk_timer_5;
/* 0x0842 */ s16 unk_counter_2;
/* 0x0844 */ dBgS_AcchCir acchcir;
/* 0x0884 */ dBgS_ObjAcch objacch;
/* 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;
/* 0x0A60 */ dCcD_Stts stts;
/* 0x0A9C */ dCcD_Sph cc_sph[3];
/* 0x0E44 */ dCcD_Sph at_sph;
/* 0x0F7C */ dCcD_Sph tate_sph;
/* 0x10B4 */ dCcU_AtInfo at_info;
/* 0x10D8 */ u8 status;
/* 0x10D9 */ u8 hio_init;
/* 0x10DA */ s8 unk_timer_6;
/* 0x10DC */ u32 field_0x10dc;
/* 0x10E0 */ u32 field_0x10e0;
/* 0x10E4 */ s8 field_0x10e4;
/* 0x10E4 */ s8 set_smoke_flag;
/* 0x10E8 */ u32 field_0x10e8[2];
/* 0x10F0 */ u32 field_0x10f0[2];
/* 0x10F8 */ u32 field_0x10f8;
/* 0x10FC */ u32 field_0x10fc;
/* 0x10F8 */ u32 dn_tail_blur_a_prtcl;
/* 0x10FC */ u32 dn_tail_blur_b_prtcl;
/* 0x1100 */ u8 field_0x1100[12];
};

View File

@ -312,10 +312,10 @@ public:
bool checkWolfNoLock() const { return mFlags & fopEn_flag_WolfNoLock; }
BOOL checkHeadLockFlg() const { return mFlags & fopEn_flag_HeadLock; }
BOOL checkWolfBiteDamage() const { return mFlags & fopEn_flag_WolfBiteDamage; }
bool checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; }
BOOL checkWolfDownPullFlg() const { return mFlags & fopEn_flag_WolfDownPull; }
bool checkDownFlg() { return mFlags & fopEn_flag_Down; }
BOOL checkCutDownHitFlg() const { return mFlags & fopEn_flag_CutDownHit; }
bool checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; }
BOOL checkWolfDownStartFlg() const { return mFlags & fopEn_flag_WolfDownStart; }
bool checkDeadFlg() const { return mFlags & fopEn_flag_Dead; }
BOOL checkThrowMode(u8 param_1) const { return mThrowMode & param_1; }
@ -329,27 +329,21 @@ public:
void onWolfDownStartFlg() { mFlags |= (fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart); }
void onWolfDownPullEndFlg() { mFlags |= fopEn_flag_WolfDownPullEnd; }
void onWolfNoLock() { mFlags |= (u16)fopEn_flag_WolfNoLock; }
#if DEBUG
void onDownFlg() { mFlags |= (u16)fopEn_flag_Down; }
void onHeadLockFlg() { mFlags |= (u16)fopEn_flag_HeadLock; }
#else
void onDownFlg() { mFlags |= fopEn_flag_Down; }
void onHeadLockFlg() { mFlags |= fopEn_flag_HeadLock; }
#endif
#if DEBUG
void offWolfBiteDamage() { mFlags &= (u16)~fopEn_flag_WolfBiteDamage; }
#else
void offWolfBiteDamage() { mFlags &= ~fopEn_flag_WolfBiteDamage; }
#endif
void offCutDownHitFlg() { mFlags &= ~fopEn_flag_CutDownHit; }
void offCutDownHitFlg() { mFlags &= (u16)~fopEn_flag_CutDownHit; }
void offWolfDownPullFlg() { mFlags &= ~fopEn_flag_WolfDownPull; }
#if DEBUG
void offDownFlg() { mFlags &= (u16)~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); }
void offWolfNoLock() { mFlags &= (u16)~fopEn_flag_WolfNoLock; }
void offHeadLockFlg() { mFlags &= (u16)~fopEn_flag_HeadLock; }
void offThrowMode(u8 throwMode) { mThrowMode &= (u8)~throwMode; }
#else
void offWolfBiteDamage() { mFlags &= ~fopEn_flag_WolfBiteDamage; }
void offCutDownHitFlg() { mFlags &= ~fopEn_flag_CutDownHit; }
void offWolfDownPullFlg() { mFlags &= ~fopEn_flag_WolfDownPull; }
void offDownFlg() { mFlags &= ~(fopEn_flag_WolfDownPull | fopEn_flag_WolfDownStart | fopEn_flag_CutDownHit | fopEn_flag_Down); }
void offWolfNoLock() { mFlags &= ~fopEn_flag_WolfNoLock; }
void offHeadLockFlg() { mFlags &= ~fopEn_flag_HeadLock; }

File diff suppressed because it is too large Load Diff

View File

@ -5507,8 +5507,8 @@ static void* s_wb_sub2(void* i_actor, void* i_data) {
}
static void* s_lv9dn_sub(void* i_actor, void* i_data) {
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->field_0x10d8 != 0) {
((e_dn_class*)i_actor)->field_0x10d8 = 0;
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->status != 0) {
((e_dn_class*)i_actor)->status = 0;
return i_actor;
}
@ -5516,9 +5516,9 @@ static void* s_lv9dn_sub(void* i_actor, void* i_data) {
}
static void* s_lv9dn_sub2(void* i_actor, void* i_data) {
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->field_0x10d8 == 0) {
((e_dn_class*)i_actor)->field_0x10d8 = 1;
((e_dn_class*)i_actor)->mMode = 0;
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN && ((e_dn_class*)i_actor)->status == 0) {
((e_dn_class*)i_actor)->status = 1;
((e_dn_class*)i_actor)->mode = 0;
}
return NULL;
@ -5526,7 +5526,7 @@ static void* s_lv9dn_sub2(void* i_actor, void* i_data) {
static void* s_lv9dn_sub3(void* i_actor, void* i_data) {
if (fopAcM_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DN) {
((e_dn_class*)i_actor)->mMode = 2;
((e_dn_class*)i_actor)->mode = 2;
}
return NULL;

View File

@ -279,7 +279,7 @@ static void chain_control_01(obj_key_class* i_this) {
J3DModel* parent_model;
if (fopAcM_GetName(pparent) == PROC_E_DN) {
e_dn_class* dn = (e_dn_class*)pparent;
parent_model = dn->mpModelMorf->getModel();
parent_model = dn->anm_p->getModel();
MTXCopy(parent_model->getAnmMtx(1), *calc_mtx);
spC4.set(5.0f + KREG_F(0), 30.0f + KREG_F(1), 20.0f + KREG_F(2));