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
|
#ifndef D_EVENT_D_EVENT_DATA_H
#define D_EVENT_D_EVENT_DATA_H
#include "global.h"
struct event_binary_data_header {
/* 0x00 */ u32 eventTop; // offset to Event chunk
/* 0x04 */ s32 eventNum;
/* 0x08 */ u32 staffTop; // offset to Staff chunk
/* 0x0C */ s32 staffNum;
/* 0x10 */ u32 cutTop; // offset to Cut chunk
/* 0x14 */ s32 cutNum;
/* 0x18 */ u32 dataTop; // offset to Data chunk
/* 0x1C */ s32 dataNum;
/* 0x20 */ u32 fDataTop; // offset to FData chunk
/* 0x24 */ s32 fDataNum;
/* 0x28 */ u32 iDataTop; // offset to IData chunk
/* 0x2C */ s32 iDataNum;
/* 0x30 */ u32 sDataTop; // offset to SData chunk
/* 0x34 */ s32 sDataNum;
/* 0x38 */ u8 unk[8];
}; // Size: 0x40
class dEvDtData_c {
public:
enum DataType {
/* 0x0 */ TYPE_FLOAT,
/* 0x1 */ TYPE_VEC,
/* 0x3 */ TYPE_INT = 3,
/* 0x4 */ TYPE_STRING
};
/* 0x00 */ char mName[32];
/* 0x20 */ s32 mIndex;
/* 0x24 */ s32 mSubstanceType;
/* 0x28 */ s32 mSubstanceIdx;
/* 0x2C */ s32 mSubstanceSize;
/* 0x30 */ s32 mNextIdx;
/* 0x34 */ u32 field_0x34[3];
char* getName() { return mName; }
s32 getNext() { return mNextIdx; }
s32 getNumber() { return mSubstanceSize; }
s32 getIndex() { return mSubstanceIdx; }
s32 getType() { return mSubstanceType; }
}; // Size: 0x40
class dEvDtCut_c {
public:
s32 startCheck();
s32 getNext() { return mNextCutIdx; }
u32 getFlagId() { return mFlagIdx; }
u32 getTagId() { return mTagId; }
u32 getStartFlag(int idx) { return mStartFlag[idx]; }
u32 getDataTop() { return mFirstDataIdx; }
char* getName() { return mName; }
public:
/* 0x00 */ char mName[32];
/* 0x20 */ u32 mTagId;
/* 0x24 */ u32 mIndex;
/* 0x28 */ u32 mStartFlag[3];
/* 0x34 */ u32 mFlagIdx;
/* 0x38 */ u32 mFirstDataIdx;
/* 0x3C */ u32 mNextCutIdx;
/* 0x40 */ u32 field_0x40[4];
};
class dEvDtStaff_c {
public:
void specialProc_WaitStart(int);
void specialProc_WaitProc(int);
void specialProc();
void init();
void advanceCut(int);
void specialProcLight();
void specialProcMessage();
void specialProcSound();
void specialProcCreate();
void specialProcDirector();
void specialProcPackage();
void specialProcTimekeeper();
const char* getName() { return mName; }
u32 getStartCut() { return mFirstCutIdx; }
u32 getCurrentCut() { return mCurCutIdx; }
s32 getType() { return mStaffType; }
s32 getTagID() { return mTagID; }
enum StaffType_e {
NORMAL_e,
ALL_e,
CAMERA_e,
EFFECT_e,
TIMEKEEPER_e,
FIVE_e,
DIRECTOR_e,
MESSAGE_e,
SOUND_e,
LIGHT_e,
TEN_e,
PACKAGE_e,
CREATE_e,
};
public:
/* 0x00 */ char mName[32];
/* 0x20 */ int mTagID;
/* 0x24 */ int mStaffIdx;
/* 0x28 */ int m28;
/* 0x2C */ int mStaffType;
/* 0x30 */ int mFirstCutIdx;
/* 0x34 */ u8 m34[0x38 - 0x34];
/* 0x38 */ int mCurCutIdx;
/* 0x3C */ u32 mCurActionIdx;
/* 0x40 */ s16 mWipeDirection;
/* 0x42 */ s16 mTimer;
/* 0x44 */ u8 m44;
/* 0x45 */ u8 m45;
/* 0x46 */ u8 mAdvance;
/* 0x47 */ u8 mbHasAction;
/* 0x48 */ u8 field_48[0x50 - 0x48];
}; // Size: 0x50
class dEvDtEvent_c {
public:
BOOL finish_check();
void specialStaffProc(dEvDtStaff_c*);
char * getName() { return mName; }
int getStaff(int idx) { return mStaffIdx[idx]; }
s32 getNStaff() { return mNStaff; }
u32 getPriority() { return mPriority; }
u8 getEndSound() { return mEventEndSound; }
enum {
NONE_e,
ORDER_e,
PLAY_e,
UNK3_e,
CLOSE_e,
};
public:
/* 0x00 */ char mName[0x20];
/* 0x20 */ u32 field_0x20;
/* 0x24 */ u32 field_0x24;
/* 0x28 */ u32 mPriority;
/* 0x2C */ u32 mStaffIdx[20];
/* 0x7C */ s32 mNStaff;
/* 0x80 */ int mFlagCheckStart[2];
/* 0x88 */ int mFlagCheckFinish[3];
/* 0x94 */ u8 mEventEndSound;
/* 0x98 */ u32 field_0x98;
/* 0x9C */ u32 field_0x9c;
/* 0xA0 */ u32 field_0xa0;
/* 0xA4 */ s32 mEventState;
/* 0xA8 */ u32 field_0xa8;
/* 0xAC */ u32 field_0xac;
};
class dEvDtFlag_c {
public:
dEvDtFlag_c() {}
BOOL flagCheck(int);
BOOL flagSet(int);
BOOL flagMaxCheck(int);
void init();
public:
u32 mFlag[320];
enum { FlagMax = 320 * 32 };
}; // Size = 0x500
class dEvDtBase_c {
public:
dEvDtBase_c() { init(); }
~dEvDtBase_c() {}
void init();
void advanceCut(dEvDtEvent_c*);
bool advanceCutLocal(dEvDtStaff_c*);
event_binary_data_header* getHeaderP() { return mHeaderP; }
dEvDtStaff_c* getStaffP(int i) { return &mStaffP[i]; }
dEvDtEvent_c* getEventP(int i) { return &mEventP[i]; }
dEvDtData_c* getDataP(int i) { return &mDataP[i]; }
dEvDtCut_c* getCutP(int i) { return &mCutP[i]; }
char* getEventName(int i) { return mEventP[i].getName(); }
int getStaffCurrentCut(int i) { return mStaffP[i].getCurrentCut(); }
dEvDtCut_c* getCutStaffCurrentCutP(int i) { return getCutP(getStaffCurrentCut(i)); }
int getStaffStartCut(int i) { return mStaffP[i].getStartCut(); }
dEvDtCut_c* getCutStaffStartCutP(int i) { return getCutP(getStaffStartCut(i)); }
int* getIDataP(int i) { return &mIDataP[i]; }
f32* getFDataP(int i) { return &mFDataP[i]; }
char* getSDataP(int i) { return &mSDataP[i]; }
u32 getEventTop() { return mHeaderP->eventTop; }
s32 getEventNum() { return mHeaderP->eventNum; }
u32 getStaffTop() { return mHeaderP->staffTop; }
s32 getStaffNum() { return mHeaderP->staffNum; }
u32 getCutTop() { return mHeaderP->cutTop; }
s32 getCutNum() { return mHeaderP->cutNum; }
u32 getDataTop() { return mHeaderP->dataTop; }
s32 getDataNum() { return mHeaderP->dataNum; }
u32 getFDataTop() { return mHeaderP->fDataTop; }
s32 getFDataNum() { return mHeaderP->fDataNum; }
u32 getIDataTop() { return mHeaderP->iDataTop; }
s32 getIDataNum() { return mHeaderP->iDataNum; }
u32 getSDataTop() { return mHeaderP->sDataTop; }
s32 getSDataNum() { return mHeaderP->sDataNum; }
void setHeaderP(event_binary_data_header* p_header) { mHeaderP = p_header; }
void setEventP(dEvDtEvent_c* p_event) { mEventP = p_event; }
void setStaffP(dEvDtStaff_c* p_staff) { mStaffP = p_staff; }
void setCutP(dEvDtCut_c* p_cut) { mCutP = p_cut; }
void setDataP(dEvDtData_c* p_data) { mDataP = p_data; }
void setFDataP(f32* p_fdata) { mFDataP = p_fdata; }
void setIDataP(int* p_idata) { mIDataP = p_idata; }
void setSDataP(char* p_sdata) { mSDataP = p_sdata; }
public:
/* 0x00 */ event_binary_data_header* mHeaderP;
/* 0x04 */ dEvDtEvent_c* mEventP;
/* 0x08 */ dEvDtStaff_c* mStaffP;
/* 0x0C */ dEvDtCut_c* mCutP;
/* 0x10 */ dEvDtData_c* mDataP;
/* 0x14 */ f32* mFDataP;
/* 0x18 */ int* mIDataP;
/* 0x1C */ char* mSDataP;
}; // Size = 0x20
STATIC_ASSERT(sizeof(dEvDtBase_c) == 0x20);
#endif /* D_EVENT_D_EVENT_DATA_H */
|