D_a_fm matching (#917)

* small progress push

* bit of progress

* most funcs done

* mostly matching

* debug drawr matching

* cleanup and matching

* bit of cleanup, matching for GZLE01 and GZLP01

* accidentally changed the wrong actor  in configure.py

* even more cleanup

* removed changed configure.py

* fully matching

* version select jut assert
This commit is contained in:
Zeclos
2026-03-12 21:48:04 +01:00
committed by GitHub
parent ea7c107eb7
commit cca42433ac
4 changed files with 3140 additions and 194 deletions
+1 -1
View File
@@ -1596,7 +1596,7 @@ config.libs = [
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_fganon"),
ActorRel(MatchingFor("GZLE01"), "d_a_fgmahou"),
ActorRel(Matching, "d_a_fire"),
ActorRel(NonMatching, "d_a_fm"),
ActorRel(Matching, "d_a_fm"),
ActorRel(NonMatching, "d_a_gm"),
ActorRel(NonMatching, "d_a_gnd"),
ActorRel(Matching, "d_a_goal_flag"),
+116 -50
View File
@@ -7,21 +7,22 @@
class daFm_c : public fopEn_enemy_c {
public:
enum Proc_e {
PROC_0_e,
PROC_1_e,
};
void isBodyAppear() {}
void isHoleAppear() {}
void modeProcInit(int) {}
bool isBodyAppear() {return mMode != 1 && mMode != 0x12 && mMode != 0 && (mMode != 2 && (mMode != 4) && (mMode != 3 && (mMode != 0x11)));}
bool isHoleAppear() {return field_0x3E0 > 0.015f;}
void modeProcInit(int newMode) {modeProc(PROC_0_e, newMode);}
void _nodeControl(J3DNode*, J3DModel*);
void _createHeap();
void holeCreateHeap();
void bodyCreateHeap();
void jntHitCreateHeap();
void _pathMove(cXyz*, cXyz*, cXyz*);
void searchNearOtherActor(fopAc_ac_c*);
void searchNearFm(fopAc_ac_c*);
BOOL _createHeap();
bool holeCreateHeap();
bool bodyCreateHeap();
bool jntHitCreateHeap();
BOOL _pathMove(cXyz*, cXyz*, cXyz*);
fopAc_ac_c* searchNearOtherActor(fopAc_ac_c*);
bool searchNearFm(fopAc_ac_c*);
void moveRndBack();
void moveRndEscape();
void spAttackVJump();
@@ -32,15 +33,15 @@ public:
void holeSetMtx();
void setCollision();
void setAttention();
void checkTgHit();
bool checkTgHit();
void setGrabPos();
void getOffsetPos();
void checkPlayerGrabBomb();
void checkPlayerGrabNpc();
void checkPlayerGrabTarget();
void isGrabPos();
void isGrab();
void isGrabFoot();
cXyz getOffsetPos();
u8 checkPlayerGrabBomb();
u8 checkPlayerGrabNpc();
u8 checkPlayerGrabTarget();
bool isGrabPos();
bool isGrab();
bool isGrabFoot();
void modeSwWaitInit();
void modeSwWait();
void modeHideInit();
@@ -84,7 +85,7 @@ public:
void modeBikubikuInit();
void modeBikubiku();
void modeProc(Proc_e, int);
void setAnm(signed char, bool);
void setAnm(s8, bool);
void cancelGrab();
void calcInvKine(fopAc_ac_c*);
void resetInvKine();
@@ -95,16 +96,16 @@ public:
void searchTarget();
void setBaseTarget();
void turnToBaseTarget();
void isNpc(fopAc_ac_c*);
void checkHeight(fopAc_ac_c*);
void isLink(fopAc_ac_c*);
void isLinkControl();
void areaCheck();
void lineCheck(cXyz*, cXyz*);
void setRnd(int, int);
bool isNpc(fopAc_ac_c*);
bool checkHeight(fopAc_ac_c*);
bool isLink(fopAc_ac_c*);
bool isLinkControl();
bool areaCheck();
bool lineCheck(cXyz*, cXyz*);
int setRnd(int, int);
void setHoleEffect();
void holeExecute();
void setHoleScale(float, float, float);
bool setHoleScale(f32, f32, f32);
bool _execute();
void MtxToRot(Mtx, csXyz*);
void debugDraw();
@@ -116,33 +117,98 @@ public:
cPhs_State _create();
bool _delete();
typedef void (daFm_c::*ModeFunc)();
static const dCcD_SrcSph m_sph_src;
static const dCcD_SrcCyl m_cyl_src;
static const u32 m_heapsize;
static const char m_arc_name[3];
public:
/* 0x2AC */ u8 m2AC[0x2C5 - 0x2AC];
/* 0x2C5 */ s8 m2C5;
/* 0x2C6 */ u8 m2C6[0x2E4 - 0x2C6];
/* 0x2E4 */ u8 m2E4;
/* 0x2E5 */ u8 m2E5[0x400 - 0x2E5];
/* 0x400 */ mDoExt_McaMorf* mpMcaMorf;
/* 0x404 */ u8 m404[0x608 - 0x404];
/* 0x2AC */ int mMode;
/* 0x2B0 */ dPa_followEcallBack mpFollowEcallBack;
/* 0x2C4 */ s8 mBckIdx;
/* 0x2C5 */ s8 mAnmPrmIdx;
/* 0x2C6 */ s8 mOldAnmPrmIdx;
/* 0x2C7 */ u8 field_0x2C7;
/* 0x2C8 */ s16 field_0x2C8;
/* 0x2CC */ int m_path_no;
/* 0x2D0 */ int field_0x2D0;
/* 0x2D4 */ int field_0x2D4;
/* 0x2D8 */ int field_0x2D8;
/* 0x2DC */ int field_0x2DC;
/* 0x2E0 */ f32 field_0x2E0;
/* 0x2E4 */ u8 field_0x2E4;
/* 0x2E5 */ bool field_0x2E5;
/* 0x2E6 */ u8 field_0x2E6[0x2E8 - 0x2E6];
#if VERSION == VERSION_DEMO
u8 field_0x2E82[0x10];
#endif
/* 0x2E8 */ cXyz field_0x2E8[6];
/* 0x330 */ Quaternion field_0x330[6];
/* 0x390 */ int field_0x390;
/* 0x394 */ f32 field_0x394;
/* 0x398 */ cXyz field_0x398;
/* 0x3A4 */ cXyz field_0x3A4;
/* 0x3B0 */ cXyz field_0x3B0;
/* 0x3BC */ s8 field_0x3BC;
/* 0x3C0 */ dPath* mpPath;
/* 0x3C4 */ u8 field_0x3C4[0x3C8 - 0x3C4];
/* 0x3C8 */ J3DModel* mpModel;
/* 0x3CC */ mDoExt_btkAnm mBtkAnm;
/* 0x3E0 */ f32 field_0x3E0;
/* 0x3E4 */ cXyz field_0x3E4;
/* 0x3F0 */ request_of_phase_process_class mPhs;
/* 0x3F8 */ u8 field_0x3F8[0x3FC - 0x3F8];
/* 0x3FC */ bool field_0x3FC;
/* 0x400 */ mDoExt_McaMorf* mpMorf;
/* 0x404 */ dBgS_ObjAcch mObjAcch;
/* 0x5C8 */ dBgS_AcchCir mAcchCir;
/* 0x608 */ mDoExt_invisibleModel mInvisibleModel;
/* 0x610 */ u8 m610[0x9CC - 0x610];
/* 0x610 */ cXyz field_0x610;
/* 0x61C */ cXyz field_0x61C;
/* 0x628 */ u8 field_0x628[0x630 - 0x628];
/* 0x630 */ cXyz field_0x630;
/* 0x63C */ cXyz field_0x63C;
/* 0x648 */ int field_0x648;
/* 0x64C */ int field_0x64C;
/* 0x650 */ int field_0x650;
/* 0x654 */ int mSinkTimer;
/* 0x658 */ int field_0x658;
/* 0x65C */ int field_0x65C;
/* 0x660 */ cXyz field_0x660;
/* 0x66C */ fopAc_ac_c* mpActorTarget;
/* 0x670 */ fpc_ProcID mProcId;
/* 0x674 */ cXyz mGrabPos;
/* 0x680 */ s16 field_0x680;
/* 0x684 */ int field_0x684;
/* 0x688 */ bool field_0x688;
/* 0x68A */ s16 field_0x68A;
/* 0x68C */ s16 field_0x68C;
/* 0x690 */ cXyz field_0x690;
/* 0x69C */ cXyz field_0x69C;
/* 0x6A8 */ fpc_ProcID mProcId2;
/* 0x6AC */ u8 field_0x6AC[0x6B4 - 0x6AC];
/* 0x6B4 */ int field_0x6B4;
/* 0x6B8 */ u8 field_0x6B8;
/* 0x6BC */ Mtx field_0x6BC;
/* 0x6EC */ JntHit_c* mpJntHit;
/* 0x6F0 */ dCcD_Stts mStts;
/* 0x72C */ dCcD_Stts mStts2;
/* 0x768 */ dCcD_Sph mSph;
/* 0x894 */ dCcD_Cyl mCyl;
/* 0x9C4 */ int field_0x9C4;
/* 0x9C8 */ u8 mHitType;
/* 0x9CC */ fopAc_ac_c* mBaseTarget;
/* 0x9D0 */ u8 m9D0[0xAE4 - 0x9D0];
/* 0xAE4 */ u8 mAE4;
/* 0xAE5 */ u8 mAE5;
/* 0xAE6 */ u8 mAE6[0xAE8 - 0xAE6];
/* 0x9D0 */ s16 field_0x9D0;
/* 0x9D4 */ f32 field_0x9D4;
/* 0x9D8 */ dBgS_ObjLinChk mLinChk;
/* 0xA44 */ u8 field_0xA44[0xA48 - 0xA44];
/* 0xA48 */ cXyz field_0xA48[12];
/* 0xAD8 */ bool field_0xAD8[12];
/* 0xAE4 */ u8 field_0xAE4;
/* 0xAE5 */ u8 field_0xAE5;
/* 0xAE8 */ enemyice mEnemyIce;
};
class daFm_HIO_c {
public:
daFm_HIO_c();
public:
/* Place member variables here */
};
}; // Size: 0xEA0
#endif /* D_A_FM_H */
+2 -2
View File
@@ -208,13 +208,13 @@ namespace daTsubo {
return param;
}
void prm_make_skull() {}
static u32 prm_make_skull() { return 0x57f3f3f; }
void prm_make_yw1() {}
void prm_off_moveBg() { fopAcM_SetParam(this, fopAcM_GetParam(this) | 0xC000); }
void prm_off_stick() { fopAcM_SetParam(this, fopAcM_GetParam(this) & ~0x80000000); }
void prm_set_cull_non() { fopAcM_SetParam(this, fopAcM_GetParam(this) & ~0x70000000); }
void prm_set_itemNo(int) {}
void set_drop_spd_y0(float) {}
void set_drop_spd_y0(f32 drop_speed) {speed.y = drop_speed;}
bool spec_chk_prm_boko() const { return prm_get_spec() != 0x3F; }
void prmZ_init();
+3021 -141
View File
File diff suppressed because it is too large Load Diff