e_db equivalent (#2586)

* e_db equivalent

* pr fix
This commit is contained in:
TakaRikka 2025-08-14 23:26:09 -07:00 committed by GitHub
parent 8b93a8761f
commit a6802bf7a2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 2195 additions and 1226 deletions

View File

@ -1659,7 +1659,7 @@ config.libs = [
ActorRel(Equivalent, "d_a_e_bug"), # weak func order
ActorRel(Equivalent, "d_a_e_cr"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_cr_egg"),
ActorRel(NonMatching, "d_a_e_db"),
ActorRel(Equivalent, "d_a_e_db"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_db_leaf"),
ActorRel(NonMatching, "d_a_e_dd"),
ActorRel(Equivalent, "d_a_e_df"), # weak func order

View File

@ -17,69 +17,84 @@
class e_db_class {
public:
/* 0x0000 */ fopEn_enemy_c enemy;
/* 0x05AC */ request_of_phase_process_class field_0x5ac;
/* 0x05B4 */ u8 field_0x5b4;
/* 0x05B5 */ u8 field_0x5b5;
/* 0x05B6 */ u8 field_0x5b6;
/* 0x05B7 */ u8 field_0x5b7;
/* 0x05B8 */ mDoExt_McaMorfSO* field_0x5b8;
/* 0x05AC */ request_of_phase_process_class phase;
/* 0x05B4 */ u8 arg0;
/* 0x05B5 */ u8 arg1;
/* 0x05B6 */ u8 arg2;
/* 0x05B7 */ u8 arg3;
/* 0x05B8 */ mDoExt_McaMorfSO* modelMorf;
/* 0x05BC */ Z2CreatureEnemy sound;
/* 0x0660 */ int field_0x660;
/* 0x0664 */ u32 field_0x664;
/* 0x0668 */ s16 field_0x668;
/* 0x066A */ s16 field_0x66a;
/* 0x066C */ s16 field_0x66c;
/* 0x0670 */ f32 field_0x670;
/* 0x0660 */ int anm;
/* 0x0664 */ u32 shadowId;
/* 0x0668 */ s16 counter;
/* 0x066A */ s16 action;
/* 0x066C */ s16 mode;
/* 0x0670 */ f32 pl_search_range;
/* 0x0674 */ cXyz field_0x674;
/* 0x0680 */ s16 field_0x680;
/* 0x0682 */ u8 field_0x682[0x0684 - 0x0682];
/* 0x0684 */ s16 field_0x684;
/* 0x0688 */ f32 field_0x688;
/* 0x0684 */ s16 angle_to_player;
/* 0x0688 */ f32 dist_to_player;
/* 0x068C */ f32 field_0x68c;
/* 0x0690 */ f32 field_0x690;
/* 0x0694 */ s16 field_0x694[3];
/* 0x069A */ s16 field_0x69a;
/* 0x0690 */ f32 size;
/* 0x0694 */ s16 timers[3];
/* 0x069A */ s16 invulnerabilityTimer;
/* 0x069C */ cXyz field_0x69c[12];
/* 0x072C */ csXyz field_0x72c[12];
/* 0x0774 */ J3DModel* field_0x774[11];
/* 0x07A0 */ u8 field_0x7A0[0x07D4 - 0x07A0];
/* 0x07D4 */ f32 field_0x7d4[11];
/* 0x0800 */ u8 field_0x800[0x0804 - 0x0800];
/* 0x0804 */ mDoExt_3DlineMat1_c field_0x804;
/* 0x0774 */ J3DModel* thornModel[12];
/* 0x07A4 */ f32 field_0x7a4[12];
/* 0x07D4 */ f32 thorn_size[12];
/* 0x0804 */ mDoExt_3DlineMat1_c stalkLine;
/* 0x0840 */ f32 field_0x840;
/* 0x0844 */ f32 field_0x844;
/* 0x0848 */ f32 field_0x848;
/* 0x084C */ u8 field_0x84C[0x084E - 0x084C];
/* 0x084C */ s16 field_0x84c;
/* 0x084E */ s16 field_0x84e;
/* 0x0850 */ u8 field_0x850;
/* 0x0851 */ u8 field_0x851;
/* 0x0850 */ s8 field_0x850;
/* 0x0851 */ s8 field_0x851;
/* 0x0852 */ s8 field_0x852;
/* 0x0854 */ f32 field_0x854;
/* 0x0858 */ f32 field_0x858;
/* 0x085C */ s16 field_0x85c;
/* 0x085E */ u8 field_0x85E[0x0860 - 0x085E];
/* 0x085E */ s16 field_0x85e;
/* 0x0860 */ s16 field_0x860;
/* 0x0864 */ f32 field_0x864;
/* 0x0868 */ dCcD_Stts field_0x868;
/* 0x08A4 */ dCcD_Sph field_0x8a4;
/* 0x09DC */ dCcD_Sph field_0x9dc;
/* 0x0B14 */ u8 field_0xb14;
/* 0x0B18 */ dCcD_Sph field_0xb18[4];
/* 0x0FF8 */ dCcU_AtInfo field_0xff8;
/* 0x101C */ dBgS_AcchCir field_0x101c;
/* 0x105C */ dBgS_ObjAcch field_0x105c;
/* 0x1234 */ fpc_ProcID field_0x1234;
/* 0x1238 */ u8 field_0x1238;
/* 0x1239 */ u8 field_0x1239;
/* 0x123A */ u8 field_0x123A[0x126C - 0x123A];
/* 0x126C */ u8 field_0x126c;
/* 0x0868 */ dCcD_Stts ccStts;
/* 0x08A4 */ dCcD_Sph ccSph;
/* 0x09DC */ dCcD_Sph atSph;
/* 0x0B14 */ s8 field_0xb14;
/* 0x0B15 */ u8 field_0xb15;
/* 0x0B18 */ dCcD_Sph kukiSph[4];
/* 0x0FF8 */ dCcU_AtInfo atInfo;
/* 0x101C */ dBgS_AcchCir acchcir;
/* 0x105C */ dBgS_ObjAcch acch;
/* 0x1234 */ fpc_ProcID leaf_actor_id;
/* 0x1238 */ s8 field_0x1238;
/* 0x1239 */ s8 field_0x1239;
/* 0x123C */ u32 field_0x123c[3];
/* 0x1248 */ u32 field_0x1248;
/* 0x124C */ u32 field_0x124c;
/* 0x1250 */ u32 field_0x1250;
/* 0x1254 */ f32 field_0x1254;
/* 0x1258 */ u32 field_0x1258;
/* 0x125C */ u32 field_0x125c;
/* 0x1260 */ u8 field_0x1260[0x126C - 0x1260];
/* 0x126C */ u8 HIOInit;
};
STATIC_ASSERT(sizeof(e_db_class) == 0x1270);
class daE_DB_HIO_c {
public:
/* 8069AAEC */ daE_DB_HIO_c();
/* 806A13D8 */ ~daE_DB_HIO_c();
/* 806A13D8 */ virtual ~daE_DB_HIO_c() {}
/* 0x04 */ s8 id;
/* 0x08 */ f32 base_size;
/* 0x0C */ f32 flower_size;
/* 0x10 */ f32 appear_size;
/* 0x14 */ s16 roof_reappear_interval;
/* 0x16 */ s16 attack_freq;
};

View File

@ -18,4 +18,4 @@ public:
/* 0x5B4 */ mDoExt_McaMorf* mpMorf;
}; // Size: 0x5B8
#endif /* D_A_E_DB_LEAF_H */
#endif /* D_A_E_DB_LEAF_H */

View File

@ -709,6 +709,7 @@ public:
const cXyz getLeftHandPos() const { return mLeftHandPos; }
const cXyz getItemPos() const { return mItemPos; }
bool getDkCaught() const { return checkNoResetFlg1(FLG1_DK_CAUGHT); }
bool getDkCaught2() const { return checkNoResetFlg0(FLG0_DK_CAUGHT); }
bool getStCaught() const { return checkNoResetFlg1(FLG1_UNK_80000000); }
/* vt 0X008 */ virtual cXyz* getMidnaAtnPos() const { return NULL; }
@ -942,6 +943,8 @@ public:
void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); }
void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); }
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
void onDkCaught2() { onNoResetFlg0(FLG0_DK_CAUGHT); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
u32 checkBoarSingleBattleFirst() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }

File diff suppressed because it is too large Load Diff

View File

@ -830,7 +830,7 @@ static void e_hb_damage(e_hb_class* i_this) {
i_this->action = ACTION_WAIT;
i_this->mode = 0;
}
}
}
}
/* 804FE5C8-804FE8F8 002948 0330+00 1/1 0/0 0/0 .text kuki_control1__FP10e_hb_class */

View File

@ -191,8 +191,8 @@ static daPillar_c* search_hasira(e_mk_class* i_this) {
/* 80714874-807148FC 000834 0088+00 1/1 0/0 0/0 .text s_d_sub__FPvPv */
static void* s_d_sub(void* i_actor, void* i_data) {
if (((fopAc_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB) && static_cast<e_db_class*>(i_actor)->field_0x66a == 10)
&& (static_cast<e_db_class*>(i_actor)->field_0x66c >= 1 && target_info_count < 20)) {
if (((fopAc_IsActor(i_actor) && fopAcM_GetName(i_actor) == PROC_E_DB) && static_cast<e_db_class*>(i_actor)->action == 10)
&& (static_cast<e_db_class*>(i_actor)->mode >= 1 && target_info_count < 20)) {
target_info[target_info_count] = i_actor;
target_info_count++;
}

View File

@ -322,7 +322,7 @@ static void chain_control_01(obj_key_class* i_this) {
} else if (fopAcM_GetName(pparent) == PROC_E_DB || fopAcM_GetName(pparent) == PROC_E_HB) {
e_db_class* db = (e_db_class*)pparent;
if (db->field_0x66a == 20) {
if (db->action == 20) {
spB8 = db->field_0x69c[2];
} else {
spB8 = db->field_0x69c[TREG_S(3) + 9];