d_a_npc_zelro matching and some npct's linked (#2649)

* npc_zero matching and some other npcts cleaned and linked

* debug fix

* okay actual debug fix... i hope

* this isnt funny anymore

* please

* this should fix things

* added JP matching to zelR and zelRo

* added attention flag enum
This commit is contained in:
Carco_21
2025-09-15 02:44:07 -07:00
committed by GitHub
parent 9b4b9003c4
commit e3353f2c56
9 changed files with 1015 additions and 1452 deletions
+71 -54
View File
@@ -10,9 +10,74 @@
*
* @details
*
*/
*/
struct daNpc_midP_HIOParam {
/* 0x0 */ daNpcT_HIOParam common;
};
class daNpc_midP_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_midP_HIOParam param;
};
class daNpc_midP_Param_c {
public:
/* 80A73954 */ virtual ~daNpc_midP_Param_c() {}
static const daNpc_midP_HIOParam m;
};
class daNpc_midP_c : public daNpcT_c {
public:
enum Joint {
/* 0x00 */ JNT_CENTER,
/* 0x01 */ JNT_BACKBONE1,
/* 0x02 */ JNT_BACKBONE2,
/* 0x03 */ JNT_NECK,
/* 0x04 */ JNT_HEAD,
/* 0x05 */ JNT_CHIN,
/* 0x06 */ JNT_MAYUL,
/* 0x07 */ JNT_MAYUR,
/* 0x08 */ JNT_MOUTH,
/* 0x09 */ JNT_SHOULDERL,
/* 0x0A */ JNT_ARML1,
/* 0x0B */ JNT_ARML2,
/* 0x0C */ JNT_HANDL,
/* 0x0D */ JNT_FINGERL1,
/* 0x0E */ JNT_FINGERL2,
/* 0x0F */ JNT_THAMBL,
/* 0x10 */ JNT_MANTL1,
/* 0x11 */ JNT_MANTL2,
/* 0x12 */ JNT_MANT_ANIMEL1,
/* 0x13 */ JNT_SHOULDERR,
/* 0x14 */ JNT_ARMR1,
/* 0x15 */ JNT_ARMR2,
/* 0x16 */ JNT_HANDR,
/* 0x17 */ JNT_FINGERR1,
/* 0x18 */ JNT_FINGERR2,
/* 0x19 */ JNT_THAMBR,
/* 0x1A */ JNT_MANTR1,
/* 0x1B */ JNT_MANTR2,
/* 0x1C */ JNT_MANT_ANIMER1,
/* 0x1D */ JNT_WAIST,
/* 0x1E */ JNT_LEGL1,
/* 0x1F */ JNT_LEGL2,
/* 0x20 */ JNT_FOOTL,
/* 0x21 */ JNT_TOEL,
/* 0x22 */ JNT_LEGR1,
/* 0x23 */ JNT_LEGR2,
/* 0x24 */ JNT_FOOTR,
/* 0x25 */ JNT_TOER,
/* 0x26 */ JNT_MANTC1,
/* 0x27 */ JNT_MANTC2,
/* 0x28 */ JNT_MANT_ANIMEL2,
/* 0x29 */ JNT_MANT_ANIMER2,
/* 0x2A */ JNT_SKIRTB1,
/* 0x2B */ JNT_SKIRTB2,
/* 0x2C */ JNT_SKIRTF1,
/* 0x2D */ JNT_SKIRTF2,
};
typedef int (daNpc_midP_c::*cutFunc)(int);
typedef int (daNpc_midP_c::*actionFunc)(void*);
@@ -56,11 +121,11 @@ public:
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {}
/* 80A7390C */ u16 getEyeballRMaterialNo() { return 3; }
/* 80A73914 */ u16 getEyeballLMaterialNo() { return 2; }
/* 80A7391C */ s32 getHeadJointNo() { return 4; }
/* 80A73924 */ s32 getNeckJointNo() { return 3; }
/* 80A7392C */ s32 getBackboneJointNo() { return 2; }
/* 80A73934 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; }
/* 80A73944 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 8; }
/* 80A7391C */ s32 getHeadJointNo() { return JNT_HEAD; }
/* 80A73924 */ s32 getNeckJointNo() { return JNT_NECK; }
/* 80A7392C */ s32 getBackboneJointNo() { return JNT_BACKBONE2; }
/* 80A73934 */ BOOL checkChangeJoint(int i_joint) { return i_joint == JNT_HEAD; }
/* 80A73944 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == JNT_MOUTH; }
int getFlowNodeNo() {
u16 nodeNo = home.angle.x;
@@ -85,52 +150,4 @@ private:
STATIC_ASSERT(sizeof(daNpc_midP_c) == 0xfa0);
class daNpc_midP_Param_c {
public:
/* 80A73954 */ virtual ~daNpc_midP_Param_c() {}
struct Data {
/* 0x00 */ f32 field_0x00;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ f32 mWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ s16 field_0x4a;
/* 0x4C */ s16 field_0x4c;
/* 0x4E */ s16 field_0x4e;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 field_0x62;
/* 0x64 */ int field_0x64;
/* 0x68 */ int field_0x68;
/* 0x6C */ f32 field_0x6c;
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 field_0x88;
};
static const Data m;
};
#endif /* D_A_NPC_MIDP_H */
+2 -4
View File
@@ -10,11 +10,9 @@
*
* @details
*
*/
struct daNpc_Saru_HIOParam
{
*/
struct daNpc_Saru_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ s16 scared_time; // 怯える時間 - Scared Time
/* 0x8E */ s16 field_0x8e;
+21 -54
View File
@@ -10,7 +10,23 @@
*
* @details
*
*/
*/
struct daNpc_ZelR_HIOParam {
/* 0x0 */ daNpcT_HIOParam common;
};
class daNpc_ZelR_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_ZelR_HIOParam param;
};
class daNpc_ZelR_Param_c {
public:
/* 80B71A74 */ virtual ~daNpc_ZelR_Param_c() {};
static const daNpc_ZelR_HIOParam m;
};
class daNpc_ZelR_c : public daNpcT_c {
public:
typedef BOOL (daNpc_ZelR_c::*ActionFn)(void*);
@@ -57,10 +73,10 @@ public:
daNpcT_evtData_c const* param_7, char** param_8) :
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
{}
/* 80B71A34 */ u16 getEyeballRMaterialNo();
/* 80B71A3C */ u16 getEyeballLMaterialNo();
/* 80B71A44 */ s32 getHeadJointNo();
/* 80B71A4C */ s32 getBackboneJointNo();
/* 80B71A34 */ u16 getEyeballRMaterialNo() { return 3; }
/* 80B71A3C */ u16 getEyeballLMaterialNo() { return 2; }
/* 80B71A44 */ s32 getHeadJointNo() { return 3; }
/* 80B71A4C */ s32 getBackboneJointNo() { return 1; }
/* 80B71A54 */ BOOL checkChangeJoint(int param_1) { return param_1 == 3; };
/* 80B71A64 */ BOOL checkRemoveJoint(int param_1) { return param_1 == 13; };
@@ -71,7 +87,6 @@ private:
/* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40];
/* 0xE44 */ dCcD_Cyl mCyl;
/* 0xF80 */ u8 mType;
/* 0xF81 */ u8 field_0xf81[0xf84 - 0xf81];
/* 0xF84 */ ActionFn field_0xf84;
/* 0xF90 */ ActionFn field_0xf90;
/* 0xF9C */ daNpcT_Path_c mPath;
@@ -80,53 +95,5 @@ private:
STATIC_ASSERT(sizeof(daNpc_ZelR_c) == 0xfc8);
class daNpc_ZelR_Param_c {
public:
/* 80B71A74 */ virtual ~daNpc_ZelR_Param_c() {};
struct Data {
/* 0x00 */ f32 field_0x0;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 field_0xc;
/* 0x10 */ f32 mWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ s16 field_0x4a;
/* 0x4C */ s16 field_0x4c;
/* 0x4E */ s16 field_0x4e;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 field_0x62;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ f32 field_0x68;
/* 0x6C */ f32 field_0x6c;
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 field_0x88;
};
static const Data m;
};
#endif /* D_A_NPC_ZELR_H */
+123 -44
View File
@@ -10,66 +10,145 @@
*
* @details
*
*/
class daNpc_ZelRo_c : public fopAc_ac_c {
*/
struct daNpc_ZelRo_HIOParam {
/* 0x0 */ daNpcT_HIOParam common;
};
class daNpc_ZelRo_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_ZelRo_HIOParam param;
};
class daNpc_ZelRo_Param_c {
public:
/* 80B74BF0 */ virtual ~daNpc_ZelRo_Param_c() {}
static daNpc_ZelRo_HIOParam const m;
};
class daNpc_ZelRo_c : public daNpcT_c {
public:
enum Material {
/* 0x0 */ SC_EYE_L_V,
/* 0x1 */ SC_EYE_R_V,
/* 0x2 */ ZELR_ROBE01_M_V,
/* 0x3 */ ZELR_ROBE02_M_V,
/* 0x4 */ ZELDA_BODY_M_V,
/* 0x5 */ ZELDA_DOUBLESIDE_M_V,
/* 0x6 */ ZELDA_EYEBALL_L_V,
/* 0x7 */ ZELDA_EYEBALL_R_V,
/* 0x8 */ ZELDA_HAIR_M_V,
/* 0x9 */ ZELDA_JEWEL_M_V,
};
enum Joint {
/* 0x00 */ JNT_CENTER,
/* 0x01 */ JNT_BACKBONE1,
/* 0x02 */ JNT_BACKBONE2,
/* 0x03 */ JNT_NECK,
/* 0x04 */ JNT_HEAD,
/* 0x05 */ JNT_CHIN,
/* 0x06 */ JNT_MANT,
/* 0x07 */ JNT_MAYUL,
/* 0x08 */ JNT_MAYUR,
/* 0x09 */ JNT_MOMIL1,
/* 0x0A */ JNT_MOMIL2,
/* 0x0B */ JNT_MOMIL3,
/* 0x0C */ JNT_MOMIR1,
/* 0x0D */ JNT_MOMIR2,
/* 0x0E */ JNT_MOMIR3,
/* 0x0F */ JNT_MOUTH,
/* 0x10 */ JNT_SHOULDERL,
/* 0x11 */ JNT_ARML1,
/* 0x12 */ JNT_ARML2,
/* 0x13 */ JNT_HANDL,
/* 0x14 */ JNT_FINGERL1,
/* 0x15 */ JNT_FINGERL2,
/* 0x16 */ JNT_THAMBL,
/* 0x17 */ JNT_SHOULDERR,
/* 0x18 */ JNT_ARMR1,
/* 0x19 */ JNT_ARMR2,
/* 0x1A */ JNT_HANDR,
/* 0x1B */ JNT_FINGERR1,
/* 0x1C */ JNT_FINGERR2,
/* 0x1D */ JNT_THAMBR,
/* 0x1E */ JNT_WAIST,
/* 0x1F */ JNT_SKARTL_01,
/* 0x20 */ JNT_SKARTL_02,
/* 0x21 */ JNT_SKARTL_03,
/* 0x22 */ JNT_SKARTR_01,
/* 0x23 */ JNT_SKARTR_02,
/* 0x24 */ JNT_SKARTR_03,
};
typedef int (daNpc_ZelRo_c::*actionFunc)(void*);
typedef int (daNpc_ZelRo_c::*cutFunc)(int);
/* 80B71FAC */ ~daNpc_ZelRo_c();
/* 80B720E4 */ void create();
/* 80B72378 */ void CreateHeap();
/* 80B727E4 */ void Delete();
/* 80B72818 */ void Execute();
/* 80B72838 */ void Draw();
/* 80B728FC */ void createHeapCallBack(fopAc_ac_c*);
/* 80B7291C */ void ctrlJointCallBack(J3DJoint*, int);
/* 80B72974 */ void getType();
/* 80B72994 */ void getFlowNodeNo();
/* 80B729B0 */ void getPath();
/* 80B729BC */ void isDelete();
/* 80B720E4 */ cPhs__Step create();
/* 80B72378 */ int CreateHeap();
/* 80B727E4 */ int Delete();
/* 80B72818 */ int Execute();
/* 80B72838 */ int Draw();
/* 80B728FC */ static int createHeapCallBack(fopAc_ac_c*);
/* 80B7291C */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80B72974 */ u8 getType();
/* 80B72994 */ int getFlowNodeNo();
/* 80B729B0 */ u8 getPath();
/* 80B729BC */ BOOL isDelete();
/* 80B72A10 */ void reset();
/* 80B72B8C */ void afterJntAnm(int);
/* 80B72C18 */ void ctrlBtk();
/* 80B72C18 */ BOOL ctrlBtk();
/* 80B72D24 */ void setParam();
/* 80B72E18 */ void setAfterTalkMotion();
/* 80B72E78 */ void srchActors();
/* 80B72E7C */ void evtTalk();
/* 80B72F7C */ void evtCutProc();
/* 80B72E7C */ BOOL evtTalk();
/* 80B72F7C */ BOOL evtCutProc();
/* 80B73044 */ void action();
/* 80B73194 */ void beforeMove();
/* 80B7320C */ void setAttnPos();
/* 80B7342C */ void setCollision();
/* 80B7355C */ bool drawDbgInfo();
/* 80B73564 */ void selectAction();
/* 80B735AC */ void chkAction(int (daNpc_ZelRo_c::*)(void*));
/* 80B735D8 */ void setAction(int (daNpc_ZelRo_c::*)(void*));
/* 80B73680 */ void wait(void*);
/* 80B7382C */ void talk(void*);
/* 80B74AE8 */ daNpc_ZelRo_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_evtData_c const*, char**);
/* 80B74BA8 */ u16 getEyeballRMaterialNo();
/* 80B74BB0 */ u16 getEyeballLMaterialNo();
/* 80B74BB8 */ s32 getHeadJointNo();
/* 80B74BC0 */ s32 getNeckJointNo();
/* 80B74BC8 */ bool getBackboneJointNo();
/* 80B74BD0 */ void checkChangeJoint(int);
/* 80B74BE0 */ void checkRemoveJoint(int);
/* 80B7355C */ int drawDbgInfo();
/* 80B73564 */ BOOL selectAction();
/* 80B735AC */ BOOL chkAction(actionFunc);
/* 80B735D8 */ BOOL setAction(actionFunc);
/* 80B73680 */ int wait(void*);
/* 80B7382C */ int talk(void*);
#ifdef DEBUG
int test(void*);
#endif
/* 80B74AE8 */ daNpc_ZelRo_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
int i_faceMotionStepNum,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
daNpcT_evtData_c const* i_evtData, char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
/* 80B74BA8 */ u16 getEyeballRMaterialNo() { return ZELDA_EYEBALL_R_V; }
/* 80B74BB0 */ u16 getEyeballLMaterialNo() { return ZELDA_EYEBALL_L_V; }
/* 80B74BB8 */ s32 getHeadJointNo() { return JNT_HEAD; }
/* 80B74BC0 */ s32 getNeckJointNo() { return JNT_NECK; }
/* 80B74BC8 */ s32 getBackboneJointNo() { return JNT_BACKBONE1; }
/* 80B74BD0 */ BOOL checkChangeJoint(int i_joint) { return i_joint == JNT_HEAD; }
/* 80B74BE0 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == JNT_MOUTH; }
static void* mCutNameList;
static u8 mCutList[12];
static char* mCutNameList;
static cutFunc mCutList[1];
private:
/* 0x568 */ u8 field_0x568[0xfc8 - 0x568];
/* 0xE40 */ daNpc_ZelRo_HIO_c* mHIO;
/* 0xE44 */ dCcD_Cyl mCyl;
/* 0xF80 */ u8 mType;
/* 0xF84 */ actionFunc mNextAction;
/* 0xF90 */ actionFunc mAction;
/* 0xF9C */ daNpcT_Path_c mPath;
/* 0xFC4 */ u8 field_0xfc4;
};
STATIC_ASSERT(sizeof(daNpc_ZelRo_c) == 0xfc8);
class daNpc_ZelRo_Param_c {
public:
/* 80B74BF0 */ ~daNpc_ZelRo_Param_c();
static u8 const m[140];
};
#endif /* D_A_NPC_ZELRO_H */