Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
d_msg_flow.h
Go to the documentation of this file.
1#ifndef D_MSG_D_MSG_FLOW_H
2#define D_MSG_D_MSG_FLOW_H
3
4#include "dolphin/types.h"
5
6enum {
10};
11
12enum {
16};
17
18class fopAc_ac_c;
19class msg_class;
20
21// all mesg_flow_node structs members might be wrong
23 /* 0x00 */ u8 type;
24 /* 0x01 */ u8 field_0x1;
25 /* 0x02 */ u16 msg_index;
26 /* 0x04 */ u16 next_node_idx;
27 /* 0x06 */ u16 unk_0x6;
28}; // Size: 0x8
29
31 /* 0x00 */ u8 type;
32 /* 0x01 */ u8 field_0x1;
33 /* 0x02 */ u16 query_idx;
34 /* 0x04 */ u16 param;
35 /* 0x06 */ u16 next_node_idx;
36};
37
39 /* 0x00 */ u8 type;
40 /* 0x01 */ u8 event_idx;
41 /* 0x02 */ u16 next_node_idx;
42 /* 0x04 */ u8 params[4];
43}; // Size: 0x8
44
45class dMsgFlow_c;
48
50public:
51 dMsgFlow_c();
52 virtual ~dMsgFlow_c();
53
54 void init(fopAc_ac_c* i_partner, int i_flowID, int, fopAc_ac_c**);
55 int checkOpenDoor(fopAc_ac_c*, int*);
56 int doFlow(fopAc_ac_c*, fopAc_ac_c**, int i_flow);
57 int checkEventRender(int*, int*, int*, int*);
58 void remove();
59 u16 getEventId(int*);
60 u32 getMsgNo();
63 void setInitValue(int);
65 u8* getMsgDataBlock(char const*);
74 int getParam(u16*, u16*, u8*);
75 int getParam(u8*, u8*);
76 int getParam(u8*);
173
174 void initWord(fopAc_ac_c*, const char*, u8, int, fopAc_ac_c**);
175
176#if DEBUG
177 void dbgPrint();
178#endif
179
182 u16 getSelectNum() { return query005(NULL, NULL, 0); }
183 int getChoiceNo() { return (s16)mChoiceNo; }
184 void setMsg(u32 msg) { mMsg = msg; }
185 bool checkEndFlow() { return (u32)field_0x26 == 1; }
186
187 static queryFunc mQueryList[53];
188 static eventFunc mEventList[43];
189
190private:
191 /* 0x04 */ u8* mFlow_p;
192 /* 0x08 */ u8* mLabelInfo_p;
198 /* 0x10 */ u16 mNodeIdx;
199 /* 0x12 */ u16 field_0x12;
200 /* 0x14 */ u16* mFlowIdxTBL;
201 /* 0x18 */ u16* field_0x18;
202 /* 0x1C */ u16 mFlow;
203 /* 0x20 */ u32 mMsg;
204 /* 0x24 */ u8 mSelectMessage;
205 /* 0x25 */ u8 field_0x25;
206 /* 0x26 */ u8 field_0x26;
207 /* 0x27 */ u8 field_0x27;
208 /* 0x28 */ u32 mMsgNo;
209 /* 0x2C */ u32 mNowMsgNo;
210 /* 0x30 */ u16 field_0x30;
211 /* 0x32 */ u16 mEventId;
212 /* 0x34 */ int field_0x34;
213 /* 0x38 */ u16 field_0x38;
214 /* 0x3A */ u16 mChoiceNo;
215 /* 0x3C */ s32 mTimer;
216 /* 0x40 */ u8 field_0x40;
217 /* 0x41 */ u8 field_0x41;
218 /* 0x42 */ u8 field_0x42;
219 /* 0x43 */ u8 field_0x43;
220 /* 0x44 */ u8 field_0x44;
221 /* 0x45 */ u8 field_0x45;
222 /* 0x46 */ u8 mSelType;
223 /* 0x47 */ u8 field_0x47;
225}; // size 0x4c
226
227#endif /* D_MSG_D_MSG_FLOW_H */
Definition d_msg_flow.h:49
u16 query036(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1348
int event004(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1807
u16 field_0x38
Definition d_msg_flow.h:213
void setInitValue(int)
Definition d_msg_flow.cpp:274
u16 query009(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:906
int event024(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2177
u8 * getMsgDataBlock(char const *)
Definition d_msg_flow.cpp:330
u16 query018(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1027
int setNormalMsg(mesg_flow_node *, fopAc_ac_c *)
Definition d_msg_flow.cpp:492
u16 query007(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:862
u16 mEventId
Definition d_msg_flow.h:211
u8 mNonStopJunpFlowFlag
Definition d_msg_flow.h:224
int event015(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1976
int event034(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2450
u16 query047(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1602
int event003(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1796
u8 field_0x45
Definition d_msg_flow.h:221
u16 mNodeIdx
Definition d_msg_flow.h:198
u16 query043(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1527
int event032(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2392
u16 query039(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1422
virtual ~dMsgFlow_c()
Definition d_msg_flow.cpp:22
u16 query041(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1481
u32 getNowMsgNo()
Definition d_msg_flow.cpp:262
int event016(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2008
u8 mSelectMessage
Definition d_msg_flow.h:204
int event038(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2507
int getChoiceNo()
Definition d_msg_flow.h:183
u16 query042(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1504
u8 isSelectMessage()
Definition d_msg_flow.h:180
int event006(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1829
int nodeProc(fopAc_ac_c *, fopAc_ac_c **)
Definition d_msg_flow.cpp:692
int event042(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2575
u16 getEventId(int *)
Definition d_msg_flow.cpp:252
int setSelectMsg(mesg_flow_node *, mesg_flow_node *, fopAc_ac_c *)
Definition d_msg_flow.cpp:441
u16 query006(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:849
u16 getInitNodeIndex(u16)
Definition d_msg_flow.cpp:356
int event013(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1930
int event025(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2188
u8 * mLabelInfo_p
Definition d_msg_flow.h:192
u16 query040(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1445
u16 query050(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1660
u16 query019(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1046
u16 query033(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1302
u16 query012(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:943
int event029(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2344
int checkEventRender(int *, int *, int *, int *)
Definition d_msg_flow.cpp:216
int event001(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1766
int event012(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1922
int event039(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2517
int event018(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2059
int event040(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2528
u32 getMsgNo()
Definition d_msg_flow.cpp:258
u16 query005(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:833
int event014(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1944
u16 query016(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:995
int event036(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2479
void initWord(fopAc_ac_c *, const char *, u8, int, fopAc_ac_c **)
Definition d_msg_flow.cpp:78
void setNodeIndex(u16, fopAc_ac_c **)
Definition d_msg_flow.cpp:374
s32 mTimer
Definition d_msg_flow.h:215
int event005(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1818
u16 query027(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1201
int event020(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2096
u16 query010(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:918
int event011(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1902
u16 query020(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1065
u16 mChoiceNo
Definition d_msg_flow.h:214
u16 query025(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1174
u32 mMsgNo
Definition d_msg_flow.h:208
int event028(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2312
u16 query049(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1635
int eventNodeProc(fopAc_ac_c *, fopAc_ac_c **)
Definition d_msg_flow.cpp:633
int event007(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1840
u16 field_0x30
Definition d_msg_flow.h:210
int messageNodeProc(fopAc_ac_c *, fopAc_ac_c **)
Definition d_msg_flow.cpp:536
u8 field_0x41
Definition d_msg_flow.h:217
int branchNodeProc(fopAc_ac_c *, fopAc_ac_c **)
Definition d_msg_flow.cpp:623
u16 query046(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1590
u16 query045(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1566
int event023(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2143
u16 query051(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1678
int event017(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2022
int event008(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1851
u8 field_0x26
Definition d_msg_flow.h:206
bool checkEndFlow()
Definition d_msg_flow.h:185
union dMsgFlow_c::mesg_flow * mFlowNodeTBL
u16 * field_0x18
Definition d_msg_flow.h:201
u16 query029(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1235
int event033(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2421
int event026(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2200
u16 query014(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:969
void setInitValueGroupChange(int, fopAc_ac_c **)
Definition d_msg_flow.cpp:308
dMsgFlow_c()
Definition d_msg_flow.cpp:17
static queryFunc mQueryList[53]
Definition d_msg_flow.h:747
u16 query034(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1319
int event022(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2126
int getParam(u16 *, u16 *, u8 *)
Definition d_msg_flow.cpp:728
u16 query021(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1084
u16 query015(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:982
int doFlow(fopAc_ac_c *, fopAc_ac_c **, int i_flow)
Definition d_msg_flow.cpp:172
u8 field_0x40
Definition d_msg_flow.h:216
u16 query030(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1252
u16 query011(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:930
int event030(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2359
void onNonStopJunpFlowFlag()
Definition d_msg_flow.h:181
int event010(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1882
int event041(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2564
int event027(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2226
u32 mMsg
Definition d_msg_flow.h:203
int field_0x34
Definition d_msg_flow.h:212
u16 query017(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1008
u8 mSelType
Definition d_msg_flow.h:222
u16 query013(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:956
u16 query004(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:814
u32 mNowMsgNo
Definition d_msg_flow.h:209
int event000(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1746
u8 field_0x42
Definition d_msg_flow.h:218
u16 query037(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1366
int event019(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2092
int event037(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2493
u16 query008(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:893
int event021(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2116
u16 query026(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1187
void remove()
Definition d_msg_flow.cpp:238
u16 query035(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1332
u16 getSelectNum()
Definition d_msg_flow.h:182
u16 query048(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1615
int event031(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2382
void setMsg(u32 msg)
Definition d_msg_flow.h:184
u16 query044(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1549
int event009(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1872
u16 query053(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1717
u16 query031(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1264
void dbgPrint()
Definition d_msg_flow.cpp:765
u16 query052(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1702
u16 * mFlowIdxTBL
Definition d_msg_flow.h:200
msg_class * getMsg()
Definition d_msg_flow.cpp:266
u8 field_0x43
Definition d_msg_flow.h:219
u16 query032(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1285
u8 field_0x44
Definition d_msg_flow.h:220
u8 field_0x47
Definition d_msg_flow.h:223
static eventFunc mEventList[43]
Definition d_msg_flow.h:1732
u16 query002(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:781
u16 mFlow
Definition d_msg_flow.h:202
u16 field_0x12
Definition d_msg_flow.h:199
u16 query038(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1384
int event002(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:1785
u16 query028(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1218
u16 query003(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:800
u8 * mFlow_p
Definition d_msg_flow.h:191
u16 query001(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:768
u16 query024(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1161
u8 field_0x25
Definition d_msg_flow.h:205
u16 query022(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1132
u16 query023(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.cpp:1145
int event035(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.cpp:2461
int checkOpenDoor(fopAc_ac_c *, int *)
Definition d_msg_flow.cpp:92
u8 field_0x27
Definition d_msg_flow.h:207
Definition f_op_actor.h:230
static initFunc init[]
Definition d_menu_collect.cpp:39
@ SELTYPE_HORIZONTAL_e
Definition d_msg_flow.h:15
@ SELTYPE_NONE_e
Definition d_msg_flow.h:13
@ SELTYPE_VERTICAL_e
Definition d_msg_flow.h:14
u16(dMsgFlow_c::* queryFunc)(mesg_flow_node_branch *, fopAc_ac_c *, int)
Definition d_msg_flow.h:46
@ NODETYPE_BRANCH_e
Definition d_msg_flow.h:8
@ NODETYPE_EVENT_e
Definition d_msg_flow.h:9
@ NODETYPE_MESSAGE_e
Definition d_msg_flow.h:7
int(dMsgFlow_c::* eventFunc)(mesg_flow_node_event *, fopAc_ac_c *)
Definition d_msg_flow.h:47
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
Definition d_msg_flow.h:30
u8 field_0x1
Definition d_msg_flow.h:32
u8 type
Definition d_msg_flow.h:31
u16 next_node_idx
Definition d_msg_flow.h:35
u16 query_idx
Definition d_msg_flow.h:33
u16 param
Definition d_msg_flow.h:34
Definition d_msg_flow.h:38
u8 params[4]
Definition d_msg_flow.h:42
u16 next_node_idx
Definition d_msg_flow.h:41
u8 event_idx
Definition d_msg_flow.h:40
u8 type
Definition d_msg_flow.h:39
Definition d_msg_flow.h:22
u16 msg_index
Definition d_msg_flow.h:25
u8 field_0x1
Definition d_msg_flow.h:24
u16 next_node_idx
Definition d_msg_flow.h:26
u8 type
Definition d_msg_flow.h:23
u16 unk_0x6
Definition d_msg_flow.h:27
Definition f_op_msg.h:25
Definition d_msg_flow.h:193
mesg_flow_node_event event
Definition d_msg_flow.h:196
mesg_flow_node_branch branch
Definition d_msg_flow.h:195
mesg_flow_node message
Definition d_msg_flow.h:194