Skip to content

Commit 792dd60

Browse files
authored
d_a_npc_cd Equivalent (#2433)
* d_a_npc_cd fmt * d_a_npc_cd equivalent? * d_a_npc_cd cleaner * d_a_npc_cd pr
1 parent 773c0ad commit 792dd60

File tree

3 files changed

+864
-1009
lines changed

3 files changed

+864
-1009
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@ def MatchingFor(*versions) -> bool:
595595
Object(MatchingFor("GZ2E01"), "d/actor/d_a_itembase.cpp"),
596596
Object(MatchingFor("GZ2E01"), "d/actor/d_a_no_chg_room.cpp"),
597597
Object(NonMatching, "d/actor/d_a_npc.cpp"),
598-
Object(NonMatching, "d/actor/d_a_npc_cd.cpp"),
598+
Object(Equivalent, "d/actor/d_a_npc_cd.cpp"), # weak func order
599599
Object(NonMatching, "d/actor/d_a_npc_cd2.cpp"),
600600
Object(NonMatching, "d/actor/d_a_obj_item.cpp"),
601601
Object(MatchingFor("GZ2E01"), "d/d_insect.cpp"),

include/d/actor/d_a_npc_cd.h

Lines changed: 69 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2,44 +2,104 @@
22
#define A_NPC_D_A_NPC_CD_H
33

44
#include "Z2AudioLib/Z2Creature.h"
5-
#include "d/d_com_inf_game.h"
5+
#include "d/actor/d_a_npc.h"
6+
7+
class daNpcCd_c : public fopAc_ac_c {
8+
public:
9+
/* 8015605C */ int NpcCreate(int);
10+
/* 801561E8 */ J3DModel* ObjCreate(int);
11+
/* 80156228 */ BOOL isM_();
12+
/* 80156248 */ J3DAnmTransform* getAnmP(int, int);
13+
/* 801563C8 */ int setAttention(int);
14+
/* 80156B4C */ int loadResrc(int, int);
15+
/* 80156C50 */ int removeResrc(int, int);
16+
/* 80156D1C */ void setEnvTevCol();
17+
/* 80156D78 */ void setRoomNo();
18+
/* 80156DBC */ void animation();
19+
/* 80156E20 */ void setAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
20+
/* 80156E8C */ int drawObj(int, J3DModel*, f32);
21+
/* 80156F74 */ int drawNpc();
22+
/* 80157084 */ int jntNodeCB(J3DJoint*, J3DModel*);
23+
/* 8015736C */ void setHitodamaParticle();
24+
/* 80157524 */ J3DModelData* getNpcMdlDataP(int);
25+
/* 80157588 */ J3DModelData* getObjMdlDataP(int);
26+
/* 80AA8694 */ virtual ~daNpcCd_c();
27+
28+
static dCcD_SrcCyl const m_cylDat;
29+
30+
/* 0x56C */ request_of_phase_process_class mPhase1;
31+
/* 0x574 */ request_of_phase_process_class mPhase2;
32+
/* 0x57C */ request_of_phase_process_class mPhase3;
33+
/* 0x584 */ request_of_phase_process_class mPhase4;
34+
/* 0x58C */ mDoExt_McaMorfSO* mpMorf;
35+
/* 0x590 */ Z2CreatureCitizen mCreature;
36+
/* 0x634 */ dBgS_ObjAcch mAcch;
37+
/* 0x80C */ dBgS_AcchCir mAcchCir;
38+
/* 0x84C */ dCcD_Stts mStts;
39+
/* 0x888 */ dCcD_Cyl mCyl;
40+
/* 0x9C4 */ int field_0x9c4;
41+
/* 0x9C8 */ int field_0x9c8;
42+
/* 0x9CC */ int mHitodamaEmitters[2];
43+
/* 0x9D4 */ int field_0x9d4;
44+
/* 0x9D8 */ cXyz field_0x9d8;
45+
/* 0x9E4 */ s16 field_0x9e4;
46+
/* 0x9E6 */ s16 field_0x9e6;
47+
/* 0x9E8 */ bool mIsDarkWorld;
48+
};
49+
50+
STATIC_ASSERT(sizeof(daNpcCd_c) == 0x9EC);
51+
652

753
struct daNpcCd_HIO_Jnt_c : public JORReflexible {
854
/* 80157810 */ virtual ~daNpcCd_HIO_Jnt_c() {}
955
/* 801578B0 */ daNpcCd_HIO_Jnt_c() {}
1056

57+
#ifdef DEBUG
1158
void genMessage(JORMContext*);
59+
#endif
1260

13-
/* 0x04 */ cXyz jntT;
14-
/* 0x10 */ csXyz jntR;
61+
/* 0x04 */ Vec jntT;
62+
/* 0x10 */ SVec jntR;
1563
};
1664

17-
struct daNpcCd_HIO_Child_c {
65+
struct daNpcCd_HIO_Child_c : public JORReflexible {
1866
/* 801577A0 */ virtual ~daNpcCd_HIO_Child_c() {}
1967
/* 80157858 */ daNpcCd_HIO_Child_c() {}
2068

69+
#ifdef DEBUG
70+
void genMessage(JORMContext*);
71+
#endif
72+
2173
/* 0x004 */ daNpcCd_HIO_Jnt_c field_0x4[12];
22-
/* 0x128 */ s16 mAtn;
74+
/* 0x128 */ s16 field_0x128[0x0E];
75+
/* 0x136 */ s16 mAtn;
76+
/* 0x156 */ s16 field_0x146[0x10];
2377
};
2478

25-
struct daNpcCd_HIO_c : public fOpAcm_HIO_entry_c {
79+
STATIC_ASSERT(sizeof(daNpcCd_HIO_Child_c) == 0x164);
80+
81+
class daNpcCd_HIO_c : public fOpAcm_HIO_entry_c {
82+
public:
2683
/* 80157600 */ daNpcCd_HIO_c();
2784
/* 801577A0 */ virtual ~daNpcCd_HIO_c() {}
2885

86+
#ifdef DEBUG
2987
void genMessage(JORMContext*);
88+
#endif
3089

3190
/* 0x0004 */ daNpcCd_HIO_Child_c field_0x0004[16];
3291
/* 0x1648 */ daNpcCd_HIO_Child_c field_0x1648[14];
3392
};
3493

35-
extern daNpcCd_HIO_c l_Cd_HIO;
94+
STATIC_ASSERT(sizeof(daNpcCd_HIO_c) == 0x29BC);
3695

37-
inline s16 HIO_atnOfs(int param_1) {
96+
extern daNpcCd_HIO_c l_Cd_HIO;
97+
inline f32 HIO_atnOfs(int param_1) {
3898
s16 rv;
3999
if (param_1 < 16) {
40100
rv = l_Cd_HIO.field_0x0004[param_1].mAtn;
41101
} else {
42-
rv = l_Cd_HIO.field_0x0004[param_1 - 16].mAtn;
102+
rv = l_Cd_HIO.field_0x1648[param_1 - 16].mAtn;
43103
}
44104
return rv;
45105
}
@@ -104,47 +164,4 @@ static inline f32 HIO_jntTZ(int param_1, int param_2) {
104164
return 10.0f * rv;
105165
}
106166

107-
class daNpcCd_c : public fopAc_ac_c {
108-
public:
109-
/* 8015605C */ int NpcCreate(int);
110-
/* 801561E8 */ J3DModel* ObjCreate(int);
111-
/* 80156228 */ BOOL isM_();
112-
/* 80156248 */ J3DAnmTransform* getAnmP(int, int);
113-
/* 801563C8 */ int setAttention(int);
114-
/* 80156B4C */ int loadResrc(int, int);
115-
/* 80156C50 */ int removeResrc(int, int);
116-
/* 80156D1C */ void setEnvTevCol();
117-
/* 80156D78 */ void setRoomNo();
118-
/* 80156DBC */ void animation();
119-
/* 80156E20 */ void setAnm(J3DAnmTransformKey*, f32, f32, int, int, int);
120-
/* 80156E8C */ int drawObj(int, J3DModel*, f32);
121-
/* 80156F74 */ int drawNpc();
122-
/* 80157084 */ int jntNodeCB(J3DJoint*, J3DModel*);
123-
/* 8015736C */ void setHitodamaParticle();
124-
/* 80157524 */ J3DModelData* getNpcMdlDataP(int);
125-
/* 80157588 */ J3DModelData* getObjMdlDataP(int);
126-
/* 80AA8694 */ virtual ~daNpcCd_c();
127-
128-
static dCcD_SrcCyl const m_cylDat;
129-
130-
/* 0x56C */ request_of_phase_process_class mPhase1;
131-
/* 0x574 */ request_of_phase_process_class mPhase2;
132-
/* 0x57C */ request_of_phase_process_class mPhase3;
133-
/* 0x584 */ request_of_phase_process_class mPhase4;
134-
/* 0x58C */ mDoExt_McaMorfSO* mpMorf;
135-
/* 0x590 */ Z2CreatureCitizen mCreature;
136-
/* 0x634 */ dBgS_ObjAcch mAcch;
137-
/* 0x80C */ dBgS_AcchCir mAcchCir;
138-
/* 0x84C */ dCcD_Stts mStts;
139-
/* 0x888 */ dCcD_Cyl mCyl;
140-
/* 0x9C4 */ int field_0x9c4;
141-
/* 0x9C8 */ int field_0x9c8;
142-
/* 0x9CC */ int mHitodamaEmitters[2];
143-
/* 0x9D4 */ int field_0x9d4;
144-
/* 0x9D8 */ cXyz field_0x9d8;
145-
/* 0x9E4 */ s16 field_0x9e4;
146-
/* 0x9E6 */ s16 field_0x9e6;
147-
/* 0x9E8 */ bool mIsDarkWorld;
148-
};
149-
150167
#endif /* A_NPC_D_A_NPC_CD_H */

0 commit comments

Comments
 (0)