Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
6f54646
Tiny start on d_a_obj_gra2
carter-ktb21 Jun 6, 2025
0116627
Initial work
carter-ktb21 Jun 8, 2025
6a81c94
Solid work done
carter-ktb21 Jun 8, 2025
c637ed8
More work
carter-ktb21 Jun 9, 2025
95704ee
work on some rolling functions and deme camera
carter-ktb21 Jun 11, 2025
49c7f77
Almost all functions worked on
carter-ktb21 Jun 11, 2025
b3fb0e3
All functions worked on
carter-ktb21 Jun 12, 2025
deb3c88
Fixed some BaseNpc functions I broke
carter-ktb21 Jun 12, 2025
52c4437
PR Cleanup
carter-ktb21 Jun 15, 2025
53227b0
PR cleanup part 2
carter-ktb21 Jun 15, 2025
62f5307
Worked on create function
carter-ktb21 Jun 16, 2025
3d9124d
Worked up to search_bomb
carter-ktb21 Jun 16, 2025
1ddbb5c
Work on various action functions
carter-ktb21 Jun 17, 2025
ff79b26
Almost all functions worked on
carter-ktb21 Jun 18, 2025
77f5f5b
Merge branch 'main' of https://github.com/zeldaret/tp into d_a_e_mf
carter-ktb21 Jun 19, 2025
01aa690
d_a_e_mf equivalent
carter-ktb21 Jun 19, 2025
5d5859e
Started copying over to d_a_e_dn
carter-ktb21 Jun 19, 2025
454a709
Merge branch 'main' of https://github.com/zeldaret/tp into d_a_e_mf
carter-ktb21 Jun 20, 2025
ab81262
d_a_e_dn almost equivalent, e_mf cleanup
carter-ktb21 Jun 20, 2025
2ba62d2
somehow accidentally took out something from gra2 in a previous commit
carter-ktb21 Jun 20, 2025
077203b
Fixed data layout issue in d_a_e_dn
carter-ktb21 Jun 20, 2025
4026d30
PR cleanup
carter-ktb21 Jun 20, 2025
ee452c0
Took out fopen_enemy_c inheritance
carter-ktb21 Jun 20, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -1673,7 +1673,7 @@ def MatchingFor(*versions) -> bool:
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"),
Expand Down
151 changes: 146 additions & 5 deletions include/d/actor/d_a_e_dn.h
Original file line number Diff line number Diff line change
@@ -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"

/**
Expand All @@ -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; // 学習なし
};


Expand Down
144 changes: 139 additions & 5 deletions include/d/actor/d_a_e_mf.h
Original file line number Diff line number Diff line change
@@ -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"

/**
Expand All @@ -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; // 不死身
};


Expand Down
1 change: 1 addition & 0 deletions include/f_op/f_op_actor.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,7 @@ class fopEn_enemy_c : public fopAc_ac_c {
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; }

Expand Down
1 change: 1 addition & 0 deletions include/f_op/f_op_kankyo_mng.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
Loading