Skip to content

Commit e3353f2

Browse files
authored
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
1 parent 9b4b900 commit e3353f2

File tree

9 files changed

+910
-1347
lines changed

9 files changed

+910
-1347
lines changed

configure.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1913,8 +1913,8 @@ def MatchingFor(*versions) -> bool:
19131913
ActorRel(NonMatching, "d_a_npc_ykw"),
19141914
ActorRel(NonMatching, "d_a_npc_zanb"),
19151915
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_zant"),
1916-
ActorRel(NonMatching, "d_a_npc_zelR"),
1917-
ActorRel(NonMatching, "d_a_npc_zelRo"),
1916+
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_zelR"),
1917+
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_zelRo"),
19181918
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_zelda"),
19191919
ActorRel(Equivalent, "d_a_npc_zra", extra_cflags=[DANPCF_C_HACK]), # regalloc
19201920
ActorRel(NonMatching, "d_a_npc_zrc", extra_cflags=[DANPCF_C_HACK]),

include/d/actor/d_a_npc_midp.h

Lines changed: 71 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,74 @@
1010
*
1111
* @details
1212
*
13-
*/
13+
*/
14+
15+
struct daNpc_midP_HIOParam {
16+
/* 0x0 */ daNpcT_HIOParam common;
17+
};
18+
19+
class daNpc_midP_HIO_c : public mDoHIO_entry_c {
20+
/* 0x8 */ daNpc_midP_HIOParam param;
21+
};
22+
23+
class daNpc_midP_Param_c {
24+
public:
25+
/* 80A73954 */ virtual ~daNpc_midP_Param_c() {}
26+
27+
static const daNpc_midP_HIOParam m;
28+
};
29+
1430
class daNpc_midP_c : public daNpcT_c {
1531
public:
32+
enum Joint {
33+
/* 0x00 */ JNT_CENTER,
34+
/* 0x01 */ JNT_BACKBONE1,
35+
/* 0x02 */ JNT_BACKBONE2,
36+
/* 0x03 */ JNT_NECK,
37+
/* 0x04 */ JNT_HEAD,
38+
/* 0x05 */ JNT_CHIN,
39+
/* 0x06 */ JNT_MAYUL,
40+
/* 0x07 */ JNT_MAYUR,
41+
/* 0x08 */ JNT_MOUTH,
42+
/* 0x09 */ JNT_SHOULDERL,
43+
/* 0x0A */ JNT_ARML1,
44+
/* 0x0B */ JNT_ARML2,
45+
/* 0x0C */ JNT_HANDL,
46+
/* 0x0D */ JNT_FINGERL1,
47+
/* 0x0E */ JNT_FINGERL2,
48+
/* 0x0F */ JNT_THAMBL,
49+
/* 0x10 */ JNT_MANTL1,
50+
/* 0x11 */ JNT_MANTL2,
51+
/* 0x12 */ JNT_MANT_ANIMEL1,
52+
/* 0x13 */ JNT_SHOULDERR,
53+
/* 0x14 */ JNT_ARMR1,
54+
/* 0x15 */ JNT_ARMR2,
55+
/* 0x16 */ JNT_HANDR,
56+
/* 0x17 */ JNT_FINGERR1,
57+
/* 0x18 */ JNT_FINGERR2,
58+
/* 0x19 */ JNT_THAMBR,
59+
/* 0x1A */ JNT_MANTR1,
60+
/* 0x1B */ JNT_MANTR2,
61+
/* 0x1C */ JNT_MANT_ANIMER1,
62+
/* 0x1D */ JNT_WAIST,
63+
/* 0x1E */ JNT_LEGL1,
64+
/* 0x1F */ JNT_LEGL2,
65+
/* 0x20 */ JNT_FOOTL,
66+
/* 0x21 */ JNT_TOEL,
67+
/* 0x22 */ JNT_LEGR1,
68+
/* 0x23 */ JNT_LEGR2,
69+
/* 0x24 */ JNT_FOOTR,
70+
/* 0x25 */ JNT_TOER,
71+
/* 0x26 */ JNT_MANTC1,
72+
/* 0x27 */ JNT_MANTC2,
73+
/* 0x28 */ JNT_MANT_ANIMEL2,
74+
/* 0x29 */ JNT_MANT_ANIMER2,
75+
/* 0x2A */ JNT_SKIRTB1,
76+
/* 0x2B */ JNT_SKIRTB2,
77+
/* 0x2C */ JNT_SKIRTF1,
78+
/* 0x2D */ JNT_SKIRTF2,
79+
};
80+
1681
typedef int (daNpc_midP_c::*cutFunc)(int);
1782
typedef int (daNpc_midP_c::*actionFunc)(void*);
1883

@@ -56,11 +121,11 @@ class daNpc_midP_c : public daNpcT_c {
56121
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8) {}
57122
/* 80A7390C */ u16 getEyeballRMaterialNo() { return 3; }
58123
/* 80A73914 */ u16 getEyeballLMaterialNo() { return 2; }
59-
/* 80A7391C */ s32 getHeadJointNo() { return 4; }
60-
/* 80A73924 */ s32 getNeckJointNo() { return 3; }
61-
/* 80A7392C */ s32 getBackboneJointNo() { return 2; }
62-
/* 80A73934 */ BOOL checkChangeJoint(int param_0) { return param_0 == 4; }
63-
/* 80A73944 */ BOOL checkRemoveJoint(int param_0) { return param_0 == 8; }
124+
/* 80A7391C */ s32 getHeadJointNo() { return JNT_HEAD; }
125+
/* 80A73924 */ s32 getNeckJointNo() { return JNT_NECK; }
126+
/* 80A7392C */ s32 getBackboneJointNo() { return JNT_BACKBONE2; }
127+
/* 80A73934 */ BOOL checkChangeJoint(int i_joint) { return i_joint == JNT_HEAD; }
128+
/* 80A73944 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == JNT_MOUTH; }
64129

65130
int getFlowNodeNo() {
66131
u16 nodeNo = home.angle.x;
@@ -85,52 +150,4 @@ class daNpc_midP_c : public daNpcT_c {
85150

86151
STATIC_ASSERT(sizeof(daNpc_midP_c) == 0xfa0);
87152

88-
class daNpc_midP_Param_c {
89-
public:
90-
/* 80A73954 */ virtual ~daNpc_midP_Param_c() {}
91-
92-
struct Data {
93-
/* 0x00 */ f32 field_0x00;
94-
/* 0x04 */ f32 mGravity;
95-
/* 0x08 */ f32 mScale;
96-
/* 0x0C */ f32 field_0x0c;
97-
/* 0x10 */ f32 mWeight;
98-
/* 0x14 */ f32 mCylH;
99-
/* 0x18 */ f32 mWallH;
100-
/* 0x1C */ f32 mWallR;
101-
/* 0x20 */ f32 field_0x20;
102-
/* 0x24 */ f32 field_0x24;
103-
/* 0x28 */ f32 field_0x28;
104-
/* 0x2C */ f32 field_0x2c;
105-
/* 0x30 */ f32 field_0x30;
106-
/* 0x34 */ f32 field_0x34;
107-
/* 0x38 */ f32 field_0x38;
108-
/* 0x3C */ f32 field_0x3c;
109-
/* 0x40 */ f32 field_0x40;
110-
/* 0x44 */ f32 mMorfFrames;
111-
/* 0x48 */ s16 field_0x48;
112-
/* 0x4A */ s16 field_0x4a;
113-
/* 0x4C */ s16 field_0x4c;
114-
/* 0x4E */ s16 field_0x4e;
115-
/* 0x50 */ f32 mAttnFovY;
116-
/* 0x54 */ f32 field_0x54;
117-
/* 0x58 */ f32 field_0x58;
118-
/* 0x5C */ f32 field_0x5c;
119-
/* 0x60 */ s16 field_0x60;
120-
/* 0x62 */ s16 field_0x62;
121-
/* 0x64 */ int field_0x64;
122-
/* 0x68 */ int field_0x68;
123-
/* 0x6C */ f32 field_0x6c;
124-
/* 0x70 */ f32 field_0x70;
125-
/* 0x74 */ f32 field_0x74;
126-
/* 0x78 */ f32 field_0x78;
127-
/* 0x7C */ f32 field_0x7c;
128-
/* 0x80 */ f32 field_0x80;
129-
/* 0x84 */ f32 field_0x84;
130-
/* 0x88 */ f32 field_0x88;
131-
};
132-
133-
static const Data m;
134-
};
135-
136153
#endif /* D_A_NPC_MIDP_H */

include/d/actor/d_a_npc_saru.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@
1010
*
1111
* @details
1212
*
13-
*/
14-
15-
struct daNpc_Saru_HIOParam
16-
{
13+
*/
1714

15+
struct daNpc_Saru_HIOParam {
1816
/* 0x00 */ daNpcT_HIOParam common;
1917
/* 0x8C */ s16 scared_time; // 怯える時間 - Scared Time
2018
/* 0x8E */ s16 field_0x8e;

include/d/actor/d_a_npc_zelR.h

Lines changed: 21 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,23 @@
1010
*
1111
* @details
1212
*
13-
*/
13+
*/
14+
15+
struct daNpc_ZelR_HIOParam {
16+
/* 0x0 */ daNpcT_HIOParam common;
17+
};
18+
19+
class daNpc_ZelR_HIO_c : public mDoHIO_entry_c {
20+
/* 0x8 */ daNpc_ZelR_HIOParam param;
21+
};
22+
23+
class daNpc_ZelR_Param_c {
24+
public:
25+
/* 80B71A74 */ virtual ~daNpc_ZelR_Param_c() {};
26+
27+
static const daNpc_ZelR_HIOParam m;
28+
};
29+
1430
class daNpc_ZelR_c : public daNpcT_c {
1531
public:
1632
typedef BOOL (daNpc_ZelR_c::*ActionFn)(void*);
@@ -57,10 +73,10 @@ class daNpc_ZelR_c : public daNpcT_c {
5773
daNpcT_evtData_c const* param_7, char** param_8) :
5874
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
5975
{}
60-
/* 80B71A34 */ u16 getEyeballRMaterialNo();
61-
/* 80B71A3C */ u16 getEyeballLMaterialNo();
62-
/* 80B71A44 */ s32 getHeadJointNo();
63-
/* 80B71A4C */ s32 getBackboneJointNo();
76+
/* 80B71A34 */ u16 getEyeballRMaterialNo() { return 3; }
77+
/* 80B71A3C */ u16 getEyeballLMaterialNo() { return 2; }
78+
/* 80B71A44 */ s32 getHeadJointNo() { return 3; }
79+
/* 80B71A4C */ s32 getBackboneJointNo() { return 1; }
6480
/* 80B71A54 */ BOOL checkChangeJoint(int param_1) { return param_1 == 3; };
6581
/* 80B71A64 */ BOOL checkRemoveJoint(int param_1) { return param_1 == 13; };
6682

@@ -71,7 +87,6 @@ class daNpc_ZelR_c : public daNpcT_c {
7187
/* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40];
7288
/* 0xE44 */ dCcD_Cyl mCyl;
7389
/* 0xF80 */ u8 mType;
74-
/* 0xF81 */ u8 field_0xf81[0xf84 - 0xf81];
7590
/* 0xF84 */ ActionFn field_0xf84;
7691
/* 0xF90 */ ActionFn field_0xf90;
7792
/* 0xF9C */ daNpcT_Path_c mPath;
@@ -80,53 +95,5 @@ class daNpc_ZelR_c : public daNpcT_c {
8095

8196
STATIC_ASSERT(sizeof(daNpc_ZelR_c) == 0xfc8);
8297

83-
class daNpc_ZelR_Param_c {
84-
public:
85-
/* 80B71A74 */ virtual ~daNpc_ZelR_Param_c() {};
86-
87-
struct Data {
88-
/* 0x00 */ f32 field_0x0;
89-
/* 0x04 */ f32 mGravity;
90-
/* 0x08 */ f32 field_0x8;
91-
/* 0x0C */ f32 field_0xc;
92-
/* 0x10 */ f32 mWeight;
93-
/* 0x14 */ f32 mCylH;
94-
/* 0x18 */ f32 mWallH;
95-
/* 0x1C */ f32 mWallR;
96-
/* 0x20 */ f32 field_0x20;
97-
/* 0x24 */ f32 field_0x24;
98-
/* 0x28 */ f32 field_0x28;
99-
/* 0x2C */ f32 field_0x2c;
100-
/* 0x30 */ f32 field_0x30;
101-
/* 0x34 */ f32 field_0x34;
102-
/* 0x38 */ f32 field_0x38;
103-
/* 0x3C */ f32 field_0x3c;
104-
/* 0x40 */ f32 field_0x40;
105-
/* 0x44 */ f32 mMorfFrames;
106-
/* 0x48 */ s16 field_0x48;
107-
/* 0x4A */ s16 field_0x4a;
108-
/* 0x4C */ s16 field_0x4c;
109-
/* 0x4E */ s16 field_0x4e;
110-
/* 0x50 */ f32 field_0x50;
111-
/* 0x54 */ f32 field_0x54;
112-
/* 0x58 */ f32 field_0x58;
113-
/* 0x5C */ f32 field_0x5c;
114-
/* 0x60 */ s16 field_0x60;
115-
/* 0x62 */ s16 field_0x62;
116-
/* 0x64 */ f32 field_0x64;
117-
/* 0x68 */ f32 field_0x68;
118-
/* 0x6C */ f32 field_0x6c;
119-
/* 0x70 */ f32 field_0x70;
120-
/* 0x74 */ f32 field_0x74;
121-
/* 0x78 */ f32 field_0x78;
122-
/* 0x7C */ f32 field_0x7c;
123-
/* 0x80 */ f32 field_0x80;
124-
/* 0x84 */ f32 field_0x84;
125-
/* 0x88 */ f32 field_0x88;
126-
};
127-
128-
static const Data m;
129-
};
130-
13198

13299
#endif /* D_A_NPC_ZELR_H */

0 commit comments

Comments
 (0)