Skip to content

Commit 9fbbec4

Browse files
authored
d_a_npc_yamid equivalent (#2574)
* initial work * more work * d_a_npc_yamid equivalent * configure.py updated * comment indent fix
1 parent 2dc324c commit 9fbbec4

File tree

3 files changed

+733
-1146
lines changed

3 files changed

+733
-1146
lines changed

configure.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1856,7 +1856,7 @@ def MatchingFor(*versions) -> bool:
18561856
ActorRel(NonMatching, "d_a_npc_uri"),
18571857
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_worm", extra_cflags=['-pragma "nosyminline off"']),
18581858
ActorRel(NonMatching, "d_a_npc_wrestler", extra_cflags=[DANPCF_C_HACK]),
1859-
ActorRel(NonMatching, "d_a_npc_yamid"),
1859+
ActorRel(Equivalent, "d_a_npc_yamid"), # weak function order
18601860
ActorRel(NonMatching, "d_a_npc_yamis"),
18611861
ActorRel(NonMatching, "d_a_npc_yamit"),
18621862
ActorRel(Equivalent, "d_a_npc_yelia"), # weak function order

include/d/actor/d_a_npc_yamid.h

Lines changed: 98 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10,68 +10,122 @@
1010
*
1111
* @details
1212
*
13-
*/
14-
class daNpc_yamiD_c : public fopAc_ac_c {
13+
*/
14+
15+
struct daNpc_yamiD_HIOParam {
16+
/* 0x0 */ daNpcT_HIOParam common;
17+
};
18+
19+
class daNpc_yamiD_Param_c {
20+
public:
21+
/* 80B45FE0 */ virtual ~daNpc_yamiD_Param_c() {}
22+
23+
static daNpc_yamiD_HIOParam const m;
24+
};
25+
26+
class daNpc_yamiD_c : public daNpcT_c {
1527
public:
28+
typedef BOOL (daNpc_yamiD_c::*cutFunc)(int);
29+
typedef int (daNpc_yamiD_c::*actionFunc)(void*);
30+
1631
/* 80B42F4C */ ~daNpc_yamiD_c();
17-
/* 80B43084 */ void create();
18-
/* 80B43338 */ void CreateHeap();
19-
/* 80B43788 */ void Delete();
20-
/* 80B437BC */ void Execute();
21-
/* 80B437DC */ void Draw();
22-
/* 80B43884 */ void createHeapCallBack(fopAc_ac_c*);
23-
/* 80B438A4 */ void ctrlJointCallBack(J3DJoint*, int);
24-
/* 80B438FC */ void getType();
25-
/* 80B43934 */ void getFlowNodeNo();
26-
/* 80B43998 */ void isDelete();
32+
/* 80B43084 */ cPhs__Step create();
33+
/* 80B43338 */ int CreateHeap();
34+
/* 80B43788 */ int Delete();
35+
/* 80B437BC */ int Execute();
36+
/* 80B437DC */ int Draw();
37+
/* 80B43884 */ static int createHeapCallBack(fopAc_ac_c*);
38+
/* 80B438A4 */ static int ctrlJointCallBack(J3DJoint*, int);
39+
/* 80B438FC */ u8 getType();
40+
/* 80B43934 */ u32 getFlowNodeNo();
41+
/* 80B43998 */ BOOL isDelete();
2742
/* 80B43A20 */ void reset();
2843
/* 80B43C34 */ void afterJntAnm(int);
2944
/* 80B43CC0 */ void setParam();
3045
/* 80B43DBC */ void setAfterTalkMotion();
3146
/* 80B43E1C */ void srchActors();
32-
/* 80B43E28 */ void evtTalk();
33-
/* 80B43F0C */ void evtCutProc();
47+
/* 80B43E28 */ BOOL evtTalk();
48+
/* 80B43F0C */ BOOL evtCutProc();
3449
/* 80B43FD4 */ void action();
3550
/* 80B440C0 */ void beforeMove();
3651
/* 80B44138 */ void setAttnPos();
3752
/* 80B44364 */ void setCollision();
38-
/* 80B44498 */ bool drawDbgInfo();
53+
/* 80B44498 */ int drawDbgInfo();
3954
/* 80B444A0 */ void drawGhost();
40-
/* 80B4450C */ void selectAction();
41-
/* 80B44554 */ void chkAction(int (daNpc_yamiD_c::*)(void*));
42-
/* 80B44580 */ void setAction(int (daNpc_yamiD_c::*)(void*));
43-
/* 80B44628 */ void wait(void*);
44-
/* 80B44900 */ void talk(void*);
45-
/* 80B44AF8 */ void cutStopper(int);
46-
/* 80B44B8C */ void _cutStopper_Init(int const&);
47-
/* 80B44BD4 */ void _cutStopper_Main(int const&);
48-
/* 80B45E74 */ daNpc_yamiD_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
49-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
50-
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
51-
daNpcT_evtData_c const*, char**);
52-
/* 80B45F34 */ u16 getEyeballMaterialNo();
53-
/* 80B45F3C */ s32 getHeadJointNo();
54-
/* 80B45F44 */ s32 getNeckJointNo();
55-
/* 80B45F4C */ bool getBackboneJointNo();
56-
/* 80B45F54 */ void checkChangeJoint(int);
57-
/* 80B45F64 */ void checkRemoveJoint(int);
58-
/* 80B45F74 */ void evtEndProc();
55+
/* 80B4450C */ int selectAction();
56+
/* 80B44554 */ BOOL chkAction(int (daNpc_yamiD_c::*)(void*));
57+
/* 80B44580 */ int setAction(int (daNpc_yamiD_c::*)(void*));
58+
/* 80B44628 */ int wait(void*);
59+
/* 80B44900 */ int talk(void*);
60+
/* 80B44AF8 */ BOOL cutStopper(int);
61+
/* 80B44B8C */ BOOL _cutStopper_Init(int const&);
62+
/* 80B44BD4 */ BOOL _cutStopper_Main(int const&);
63+
/* 80B45E74 */ daNpc_yamiD_c(
64+
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
65+
daNpcT_motionAnmData_c const* i_motionAnmData,
66+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
67+
int i_faceMotionStepNum,
68+
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData,
69+
int i_motionStepNum,
70+
daNpcT_evtData_c const* i_evtData,
71+
char** i_arcNames)
72+
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
73+
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
74+
i_arcNames) {}
75+
/* 80B45F34 */ u16 getEyeballMaterialNo() { return 1; }
76+
/* 80B45F3C */ s32 getHeadJointNo() { return 4; }
77+
/* 80B45F44 */ s32 getNeckJointNo() { return 3; }
78+
/* 80B45F4C */ s32 getBackboneJointNo() { return 1; }
79+
/* 80B45F54 */ BOOL checkChangeJoint(int i_joint) { return i_joint == 4; }
80+
/* 80B45F64 */ BOOL checkRemoveJoint(int i_joint) { return i_joint == 6; }
81+
/* 80B45F74 */ BOOL evtEndProc() {
82+
mJntAnm.lookNone(0);
83+
eventInfo.setIdx(0);
84+
mEvtNo = 0;
85+
return TRUE;
86+
}
87+
88+
u32 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
89+
int getSwitchBitNo() { return (fopAcM_GetParam(this) >> 16) & 0xFF; }
90+
BOOL _is_vanish_prm() {
91+
u8 uVar1 = ((fopAcM_GetParam(this) >> 28)) ? 1 : 0;
92+
int iVar1 = uVar1;
93+
if (iVar1 == 15) {
94+
iVar1 = 0;
95+
}
96+
return iVar1;
97+
98+
}
99+
bool is_vanish() { return mVanish; }
100+
void vanish_on() { mVanish = 1; }
101+
void vanish_off() { mVanish = 0; }
102+
void on_CoHit() {
103+
field_0xe44.OnCoSetBit();
104+
field_0xe44.OnTgSetBit();
105+
}
106+
void off_CoHit() {
107+
field_0xe44.OffCoSetBit();
108+
field_0xe44.OffTgSetBit();
109+
}
59110

60-
static void* mCutNameList[2];
61-
static u8 mCutList[24];
111+
static char* mCutNameList[2];
112+
static cutFunc mCutList[2];
62113

63114
private:
64-
/* 0x568 */ u8 field_0x568[0xfcc - 0x568];
115+
/* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40];
116+
/* 0xE44 */ dCcD_Cyl field_0xe44;
117+
/* 0xF80 */ u8 mType;
118+
/* 0xF81 */ s8 mVanish;
119+
/* 0xF82 */ s8 field_0xf82;
120+
/* 0xF83 */ u8 field_0xf83;
121+
/* 0xF84 */ actionFunc mNextAction;
122+
/* 0xF90 */ actionFunc mAction;
123+
/* 0xF9C */ daNpcT_Path_c mPath;
124+
/* 0xFC4 */ u8 field_0xfc4;
125+
/* 0xFC8 */ int field_0xfc8;
65126
};
66127

67128
STATIC_ASSERT(sizeof(daNpc_yamiD_c) == 0xfcc);
68129

69-
class daNpc_yamiD_Param_c {
70-
public:
71-
/* 80B45FE0 */ ~daNpc_yamiD_Param_c();
72-
73-
static u8 const m[140];
74-
};
75-
76130

77131
#endif /* D_A_NPC_YAMID_H */

0 commit comments

Comments
 (0)