1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
|
#ifndef D_A_NPC_LS1_H
#define D_A_NPC_LS1_H
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_hostIO.h"
class J3DMaterial;
class J3DNode;
class daNpc_Ls1_matAnm_c : public J3DMaterialAnm {
public:
daNpc_Ls1_matAnm_c();
void clrMoveFlag() { mbMove = 0; }
f32* getNowOffsetX() { return &mOffset.x; }
f32* getNowOffsetY() { return &mOffset.y; }
void setMoveFlag() { mbMove = 1; }
void calc(J3DMaterial*) const;
public:
/* 0x6C */ cXy mOffset;
/* 0x74 */ u8 m74[0x7C - 0x74];
/* 0x7C */ u8 mbMove;
/* 0x7D */ u8 m7D[0x80 - 0x7D];
}; // Size: 0x80
class daNpc_Ls1_c : public fopNpc_npc_c {
public:
typedef BOOL (daNpc_Ls1_c::*ProcFunc)(void*);
struct anm_prm_c {
/* 0x00 */ s8 bckNum;
/* 0x01 */ s8 btpNum;
/* 0x04 */ f32 morf;
/* 0x08 */ f32 speed;
/* 0x0C */ int loopMode;
}; // Size: 0x10
enum AnmNum {
/* 0x00 */ ANMNUM_WAIT01_e,
/* 0x01 */ ANMNUM_WAIT02_e,
/* 0x02 */ ANMNUM_WAIT03_e,
/* 0x03 */ ANMNUM_WAIT04_e,
/* 0x04 */ ANMNUM_WAIT05_e,
/* 0x05 */ ANMNUM_WAIT06_e,
/* 0x06 */ ANMNUM_WATASU_e,
/* 0x07 */ ANMNUM_FURIMUKI_e,
/* 0x08 */ ANMNUM_NOZOKU_e,
/* 0x09 */ ANMNUM_GET_e,
/* 0x0A */ ANMNUM_WAIT07_e,
/* 0x0B */ ANMNUM_TALK01_e,
/* 0x0C */ ANMNUM_DEMOWAIT_e,
/* 0x0D */ ANMNUM_DEMOLOOK_e,
/* 0x0E */ ANMNUM_NULL_e,
};
enum BckNum {
/* 0x00 */ BCKNUM_WAIT01_e,
/* 0x01 */ BCKNUM_WAIT02_e,
/* 0x02 */ BCKNUM_WAIT03_e,
/* 0x03 */ BCKNUM_WAIT04_e,
/* 0x04 */ BCKNUM_WAIT05_e,
/* 0x05 */ BCKNUM_WAIT06_e,
/* 0x06 */ BCKNUM_WATASU_e,
/* 0x07 */ BCKNUM_FURIMUKI_e,
/* 0x08 */ BCKNUM_NOZOKU_e,
/* 0x09 */ BCKNUM_GET_e,
/* 0x0A */ BCKNUM_WAIT07_e,
/* 0x0B */ BCKNUM_TALK01_e,
/* 0x0C */ BCKNUM_DEMOWAIT_e,
/* 0x0D */ BCKNUM_DEMOLOOK_e,
/* 0x0E */ BCKNUM_NULL_e,
};
enum BtpNum {
/* 0x00 */ BTPNUM_FUAN_e,
/* 0x01 */ BTPNUM_MABA_e,
/* 0x02 */ BTPNUM_FUAN02_e,
/* 0x03 */ BTPNUM_KIZUKU_e,
/* 0x04 */ BTPNUM_GET_e,
/* 0x05 */ BTPNUM_NGWARAI_e,
/* 0x06 */ BTPNUM_NOZOKU_e,
/* 0x07 */ BTPNUM_OKORI_e,
/* 0x08 */ BTPNUM_WARAI_e,
/* 0x09 */ BTPNUM_DEMOLOOK_e,
/* 0x0A */ BTPNUM_DEMOWAIT_e,
/* 0x0B */ BTPNUM_NULL_e,
};
enum BtkNum {
/* 0x00 */ BTKNUM_DEFAULT_e,
/* 0x01 */ BTKNUM_DEMOLOOK_e,
/* 0x02 */ BTKNUM_DEMOWAIT_e,
/* 0x03 */ BTKNUM_NULL_e,
};
inline daNpc_Ls1_c();
void _nodeCB_Head(J3DNode*, J3DModel*);
void _nodeCB_BackBone(J3DNode*, J3DModel*);
void _nodeCB_Hand_L(J3DNode*, J3DModel*);
void _nodeCB_Hand_R(J3DNode*, J3DModel*);
void _Ls_hand_nodeCB_Hand_L(J3DNode*, J3DModel*);
void _Ls_hand_nodeCB_Hand_R(J3DNode*, J3DModel*);
bool init_LS1_0();
bool init_LS1_1();
bool init_LS1_2();
bool init_LS1_3();
bool init_LS1_4();
bool createInit();
void play_animation();
void setMtx(bool);
int bckResID(int);
int btpResID(int);
int btkResID(int);
bool setBtp(s8, bool);
void setMat();
bool setBtk(s8, bool);
bool init_texPttrnAnm(s8, bool);
void play_btp_anm();
void eye_ctrl();
void play_btk_anm();
void setAnm_anm(anm_prm_c*);
void setAnm_NUM(int, BOOL);
void setAnm();
void chngAnmTag();
void ctrlAnmTag();
void chngAnmAtr(u8);
void ctrlAnmAtr();
void setAnm_ATR(BOOL);
void anmAtr(u16);
u16 next_msgStatus(u32*);
u32 getMsg_LS1_0();
u32 getMsg_LS1_3();
u32 getMsg();
void eventOrder();
void checkOrder();
bool chk_talk();
bool chk_parts_notMov();
fopAc_ac_c* searchByID(fpc_ProcID, int*);
bool partner_search_sub(fpcLyIt_JudgeFunc);
void partner_search();
void setEyeCtrl();
void clrEyeCtrl();
void lookBack();
bool chkAttention();
void setAttention(bool);
bool decideType(int);
void cut_init_LOK_PLYER(int);
bool cut_move_LOK_PLYER();
void cut_init_PLYER_MOV(int);
bool cut_move_PLYER_MOV();
void cut_init_WAI(int);
bool cut_move_WAI();
void cut_init_ANM_CHG(int);
bool cut_move_ANM_CHG();
void privateCut(int);
void endEvent();
int isEventEntry();
void event_proc(int);
BOOL set_action(ProcFunc, void*);
void setStt(s8);
bool chk_areaIN(f32, f32, s16, cXyz);
cXyz get_playerEvnPos(int);
bool chkTelescope_sph(cXyz, f32, f32);
bool chkTelescope(cXyz, f32, f32);
bool telescope_proc();
BOOL wait_1();
BOOL wait_2();
BOOL wait_3();
BOOL wait_4();
BOOL talk_1();
BOOL wait_action1(void*);
BOOL demo_action1(void*);
bool demo();
void shadowDraw();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
BOOL bodyCreateHeap();
BOOL handCreateHeap();
BOOL itemCreateHeap();
BOOL CreateHeap();
private:
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ s8 m_hed_jnt_num;
/* 0x6CD */ s8 m_bbone_jnt_num;
/* 0x6CE */ s8 m_hnd_L_jnt_num;
/* 0x6CF */ s8 m_hnd_R_jnt_num;
/* 0x6D0 */ J3DModel* mpTelescopeModel;
/* 0x6D4 */ f32 mTelescopeScale;
/* 0x6D8 */ daNpc_Ls1_matAnm_c* mpMatAnms[2];
/* 0x6E0 */ char mArcName[3];
/* 0x6E3 */ u8 m6E3[0x6E4 - 0x6E3];
/* 0x6E4 */ u32 mShadowID;
/* 0x6E8 */ J3DModel* mpLsHandModel;
/* 0x6EC */ s8 m_lsHnd_L_jnt_num;
/* 0x6ED */ s8 m_lsHnd_R_jnt_num;
/* 0x6EE */ u8 m6EE[0x6F0 - 0x6EE];
/* 0x6F0 */ mDoExt_btkAnm mBtkAnm;
/* 0x704 */ u8 mBtkFrame;
/* 0x705 */ u8 m705[0x708 - 0x705];
/* 0x708 */ mDoExt_btpAnm mBtpAnm;
/* 0x71C */ u8 mBtpFrame;
/* 0x71D */ u8 m71D[0x71E - 0x71D];
/* 0x71E */ s16 mTimer1;
/* 0x720 */ ProcFunc mCurrProcFunc;
/* 0x72C */ Mtx mHand_L_Mtx;
/* 0x75C */ Mtx mHand_R_Mtx;
/* 0x78C */ fpc_ProcID mBm1ProcID;
/* 0x790 */ fpc_ProcID m790;
/* 0x794 */ cXyz m794;
/* 0x7A0 */ csXyz m7A0;
/* 0x7A6 */ csXyz mAngle;
/* 0x7AC */ u8 m7AC[0x7B4 - 0x7AC];
/* 0x7B4 */ cXyz mTransformedEyePos;
/* 0x7C0 */ cXyz mPlayerEyePos;
/* 0x7CC */ cXyz m7CC[2];
/* 0x7E4 */ cXyz m7E4;
/* 0x7F0 */ u8 m7F0[0x800 - 0x7F0];
/* 0x800 */ f32 mPrevMorfFrame;
/* 0x804 */ s16 mActorAngleY;
/* 0x806 */ s16 mJointHeadY;
/* 0x808 */ s16 mJointBackboneY;
/* 0x80A */ u8 m80A[0x80C - 0x80A];
/* 0x80C */ BOOL mbSetEyePos;
/* 0x810 */ u32 m810;
/* 0x814 */ s16 mEventIDTbl[4];
/* 0x81C */ s16 mEventIndex;
/* 0x81E */ s16 mTimer2;
/* 0x820 */ u8 m820[0x822 - 0x820];
/* 0x822 */ s16 mTimer3;
/* 0x824 */ s16 mTimer4;
/* 0x826 */ s16 mTimer5;
/* 0x828 */ u8 m828[0x82E - 0x828];
/* 0x82E */ s16 m82E;
/* 0x830 */ s8 mbMorfAnimStopped; // Not typed as bool, but used like one
/* 0x831 */ u8 m831;
/* 0x832 */ u8 mItemNo;
/* 0x833 */ u8 m833;
/* 0x834 */ bool m834;
/* 0x835 */ bool m835;
/* 0x836 */ bool m836;
/* 0x837 */ bool mbResLoadIsComplete;
/* 0x838 */ bool m838;
/* 0x839 */ u8 mbEyeCtrlSet;
/* 0x83A */ bool m83A;
/* 0x83B */ u8 m83B;
/* 0x83C */ u8 m83C;
/* 0x83D */ bool m83D;
/* 0x83E */ bool mbAttention;
/* 0x83F */ bool m83F;
/* 0x840 */ bool m840;
/* 0x841 */ bool m841;
/* 0x842 */ s16 mHalfHeadAngleY;
/* 0x844 */ s16 mHalfHeadAngleX;
/* 0x846 */ s16 m846;
/* 0x848 */ s16 m848;
/* 0x84A */ s8 mActionIndex;
/* 0x84B */ u8 m84B;
/* 0x84C */ u8 mMesgAnimeTag;
/* 0x84D */ s8 mBtpNum;
/* 0x84E */ s8 mBtkNum;
/* 0x84F */ s8 mBckNum;
/* 0x850 */ s8 m850;
/* 0x851 */ s8 m851;
/* 0x852 */ s8 m852;
/* 0x853 */ s8 m853;
/* 0x854 */ s8 m854;
/* 0x855 */ s8 mType;
/* 0x856 */ s8 m856;
/* 0x857 */ s8 m857;
}; // Size: 0x858
class daNpc_Ls1_HIO_c : public mDoHIO_entry_c {
public:
struct hio_prm_c {
/* 0x00 */ s16 mMaxHeadX;
/* 0x02 */ s16 mMaxHeadY;
/* 0x04 */ s16 mMinHeadX;
/* 0x06 */ s16 mMinHeadY;
/* 0x08 */ s16 mMaxBackBoneX;
/* 0x0A */ s16 mMaxBackBoneY;
/* 0x0C */ s16 mMinBackBoneX;
/* 0x0E */ s16 mMinBackBoneY;
/* 0x10 */ s16 mMaxTurnStep;
/* 0x12 */ s16 m12;
/* 0x14 */ f32 mAttPosOffsetY;
/* 0x18 */ bool m18;
/* 0x1C */ f32 m1C;
/* 0x20 */ f32 m29;
/* 0x24 */ f32 m24;
/* 0x28 */ f32 m28;
/* 0x2C */ f32 m2C;
/* 0x30 */ s16 m30;
/* 0x34 */ f32 mPlayerEyePosOffsetY;
}; // Size: 0x38
daNpc_Ls1_HIO_c();
inline virtual ~daNpc_Ls1_HIO_c();
void genMessage(JORMContext* ctx) {}
public:
/* 0x04 */ s8 m04;
/* 0x08 */ s32 m08;
/* 0x0C */ hio_prm_c mPrm;
}; // Size: 0x44
#endif /* D_A_NPC_LS1_H */
|