d_a_npc_gwolf matching (#2693)

* almost matching

* matching

* PR cleanup
This commit is contained in:
Carco_21 2025-09-24 09:51:23 -07:00 committed by GitHub
parent f932405784
commit 749de8e36d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 1968 additions and 2108 deletions

View File

@ -229,6 +229,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@4017 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x4 scope:global data:4byte
@4815 = .bss:0x00000058; // type:object size:0xC scope:local
init$2502 = .bss:0x00000064; // type:object size:0x1 scope:local align:1
eyeOffset$4814 = .bss:0x00000068; // type:object size:0xC scope:local
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000074; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000078; // type:object size:0x4 scope:global

View File

@ -1841,7 +1841,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_grs"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_grz", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_guard"),
ActorRel(NonMatching, "d_a_npc_gwolf"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_gwolf", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_hanjo"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_henna0"),
ActorRel(NonMatching, "d_a_npc_hoz"),

View File

@ -10,42 +10,69 @@
*
* @details
*
*/
*/
struct daNpc_GWolf_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 attack_spd_horizontal; // 攻撃速度横 - Attack Speed Horizontal
/* 0x70 */ f32 attack_spd_vertical; // 攻撃速度縦 - Attack Speed Vertical
/* 0x74 */ f32 attack_spd_horizontal_horse; // 攻撃速度横(馬) - Attack Speed Horizontal (Horse)
/* 0x78 */ f32 attack_spd_vertical_horse; // 攻撃速度縦(馬) - Attack Speed Vertical (Horse)
/* 0x7C */ f32 demo_start_dist; // デモ開始距離 - Demo Start Distance
/* 0x80 */ f32 blur_scale; // ブラーのスケール - Blur Scale
/* 0x84 */ f32 blur_opacity; // ブラーの透明度 - Blur Opacity
/* 0x88 */ f32 warp_start_dist; // ワープ開始距離 - Warp Start Distance
};
class daNpc_GWolf_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_GWolf_HIOParam param;
};
class daNpc_GWolf_Param_c {
public:
/* 809F8488 */ virtual ~daNpc_GWolf_Param_c() {}
static daNpc_GWolf_HIOParam const m;
};
class daNpc_GWolf_c : public daNpcF_c {
public:
typedef BOOL (daNpc_GWolf_c::*actionFunc)(void*);
typedef BOOL (daNpc_GWolf_c::*cutFunc)(int);
/* 809F30AC */ daNpc_GWolf_c();
/* 809F34C0 */ void create();
/* 809F37C0 */ void CreateHeap();
/* 809F3BD8 */ void Delete();
/* 809F3C0C */ void Execute();
/* 809F3C2C */ void Draw();
/* 809F3CBC */ void draw(int, int, f32, GXColorS10*, int);
/* 809F3FB8 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 809F41EC */ void createHeapCallBack(fopAc_ac_c*);
/* 809F420C */ void ctrlJointCallBack(J3DJoint*, int);
/* 809F4E38 */ void getTypeFromParam();
/* 809F4E84 */ void getModeFromParam();
/* 809F4F00 */ void isDelete();
/* 809F34C0 */ cPhs__Step create();
/* 809F37C0 */ int CreateHeap();
/* 809F3BD8 */ int Delete();
/* 809F3C0C */ int Execute();
/* 809F3C2C */ int Draw();
/* 809F3CBC */ int draw(int, int, f32, GXColorS10*, int);
/* 809F3FB8 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 809F41EC */ static int createHeapCallBack(fopAc_ac_c*);
/* 809F420C */ static int ctrlJointCallBack(J3DJoint*, int);
/* 809F420C */ u8 getTypeFromParam();
/* 809F4E84 */ int getModeFromParam();
/* 809F4F00 */ BOOL isDelete();
/* 809F4FF4 */ void reset();
/* 809F520C */ void playMotion();
/* 809F55D0 */ void chkAction(int (daNpc_GWolf_c::*)(void*));
/* 809F55FC */ void setAction(int (daNpc_GWolf_c::*)(void*));
/* 809F56A4 */ void selectAction();
/* 809F55D0 */ BOOL chkAction(actionFunc);
/* 809F55FC */ BOOL setAction(actionFunc);
/* 809F56A4 */ BOOL selectAction();
/* 809F5770 */ void doNormalAction(int);
/* 809F5884 */ void doEvent();
/* 809F5884 */ BOOL doEvent();
/* 809F5B60 */ void setLookMode(int);
/* 809F5B84 */ void lookat();
/* 809F5E0C */ void ECut_attackWarp(int);
/* 809F6548 */ void ECut_attackWarpHorse(int);
/* 809F6BFC */ void ECut_howlingSessionA(int);
/* 809F5E0C */ BOOL ECut_attackWarp(int);
/* 809F6548 */ BOOL ECut_attackWarpHorse(int);
/* 809F6BFC */ BOOL ECut_howlingSessionA(int);
/* 809F70A8 */ void meetGWolfSkip();
/* 809F70EC */ void ECut_meetGWolf(int);
/* 809F71E0 */ void wait(void*);
/* 809F75C0 */ void waitHowling(void*);
/* 809F775C */ void waitBrave(void*);
/* 809F77E4 */ void talk(void*);
/* 809F797C */ void test(void*);
/* 809F7A30 */ void getGroundSlope(dBgS_ObjAcch&, s16);
/* 809F70EC */ BOOL ECut_meetGWolf(int);
/* 809F71E0 */ BOOL wait(void*);
/* 809F75C0 */ BOOL waitHowling(void*);
/* 809F775C */ BOOL waitBrave(void*);
/* 809F77E4 */ BOOL talk(void*);
/* 809F797C */ BOOL test(void*);
/* 809F7A30 */ s16 getGroundSlope(dBgS_ObjAcch&, s16);
/* 809F32C0 */ virtual ~daNpc_GWolf_c();
/* 809F4258 */ virtual void setParam();
@ -60,35 +87,41 @@ public:
/* 809F4E2C */ virtual BOOL drawDbgInfo();
/* 809F4E34 */ virtual void drawOtherMdls();
int getSwBitFromParam() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; }
u16 getSaveTableFromParam() { return home.angle.z & 0xFF; }
void setHowlingEndFlag() { field_0xe1c = 2; }
void setHowlingFlag() { field_0xe1c = 1; }
static void* mEvtCutNameList[5];
static u8 mEvtCutList[60];
static char* mEvtCutNameList[5];
static cutFunc mEvtCutList[5];
private:
/* 0xB48 */ Z2Creature mSound;
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ daNpcF_Lookat_c mLookAt;
/* 0xC78 */ daNpcF_ActorMngr_c mActorMng[2];
/* 0xC88 */ u8 field_0xC88[0xC8C - 0xC88];
/* 0xC8C */ dCcD_Cyl mCcCyl;
/* 0xDC8 */ u8 field_0xDC8[0xE08 - 0xDC8];
/* 0xBDC */ daNpcF_Lookat_c mLookat;
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngrs[2];
/* 0xC88 */ daNpc_GWolf_HIO_c* mHIO;
/* 0xC8C */ dCcD_Cyl mCyl;
/* 0xDC8 */ actionFunc mNextAction;
/* 0xDD4 */ actionFunc mAction;
/* 0xDE0 */ request_of_phase_process_class mPhases[3];
/* 0xDF8 */ int field_0xdf8;
/* 0xDFC */ int field_0xdfc;
/* 0xE00 */ int field_0xe00;
/* 0xE04 */ int field_0xe04;
/* 0xE08 */ int field_0xe08;
/* 0xE0C */ u8 field_0xE0C[0xE14 - 0xE0C];
/* 0xE14 */ u32 field_0xe14;
/* 0xE18 */ u8 field_0xe18[0xE1C - 0xE18];
/* 0xE0C */ s16 mLookMode;
/* 0xE0E */ u16 mMode;
/* 0xE10 */ u8 mType;
/* 0xE11 */ s8 mParamMode;
/* 0xE14 */ int mExitId;
/* 0xE18 */ int mAnm;
/* 0xE1C */ u8 field_0xe1c;
/* 0xE1D */ u8 field_0xe1d;
/* 0xE1E */ u8 swBit;
/* 0xE1F */ u8 mSaveTable;
};
STATIC_ASSERT(sizeof(daNpc_GWolf_c) == 0xe20);
class daNpc_GWolf_Param_c {
public:
/* 809F8488 */ ~daNpc_GWolf_Param_c();
static u8 const m[140];
};
#endif /* D_A_NPC_GWOLF_H */

File diff suppressed because it is too large Load Diff