Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
stb.h
Go to the documentation of this file.
1#ifndef STB_H
2#define STB_H
3
7#include <dolphin/os.h>
8
9namespace JStudio {
10class TObject;
11namespace stb {
12
13class TControl;
14
15class TParse : public TParse_header_block {
16public:
18 virtual ~TParse();
19 virtual bool parseHeader_next(void const**, u32*, u32);
20 virtual bool parseBlock_next(void const**, u32*, u32);
21 virtual bool parseHeader(data::TParse_THeader const&, u32);
22 virtual bool parseBlock_block(data::TParse_TBlock const&, u32);
24
25 TControl* getControl() const { return pControl; }
26
27private:
29};
30
32public:
33 enum TEStatus {
34 /* 0x0 */ STATUS_STILL = 0,
35 /* 0x1 */ STATUS_END = 1 << 0,
36 /* 0x2 */ STATUS_WAIT = 1 << 1,
37 /* 0x4 */ STATUS_SUSPEND = 1 << 2,
38 /* 0x8 */ STATUS_INACTIVE = 1 << 3,
39 };
40
42 explicit TObject(u32, void const*, u32);
43 virtual ~TObject();
44
45 void setFlag_operation(u8, int);
46#if PLATFORM_SHIELD && !DEBUG
47 void reset(void const* arg1) {
48 bSequence_ = 0;
50 pSequence_next = arg1;
51 u32Wait_ = 0;
52 }
53#else
54 void reset(void const*);
55#endif
56#if !DEBUG
57 void reset() { reset(NULL); }
58#else
59 void reset();
60#endif
61 bool forward(u32);
62 virtual void do_begin();
63 virtual void do_end();
64 virtual void do_paragraph(u32, void const*, u32);
65 virtual void do_wait(u32);
66 virtual void do_data(void const*, u32, void const*, u32);
67 void process_sequence_();
68 void process_paragraph_reserved_(u32, void const*, u32);
69
70 const char* toString_status(int status);
71
72 void on_begin() { do_begin(); }
73 void on_end() { do_end(); }
74 void on_paragraph(u32 arg1, const void* arg2, u32 arg3) { do_paragraph(arg1, arg2, arg3); }
75 void on_wait(u32 arg1) { do_wait(arg1); }
76 void on_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4) {
77 do_data(arg1, arg2, arg3, arg4);
78 }
79
80 TControl* getControl() const { return pControl; }
81 void setControl_(TControl* control) { pControl = control; }
82 int getSuspend() const { return _20; }
83 void setSuspend(s32 val) { _20 = val; }
84 bool isSuspended() const { return getSuspend() > 0; }
85 void suspend(s32 val) { _20 += val; }
86 const void* getSequence() const { return pSequence; }
87 void setSequence_(const void* arg1) { pSequence = arg1; }
88 const void* getSequence_offset(s32 i_no) const {
89 int s32Val = (s32)getSequence();
90 return (const void*)(s32Val + i_no);
91 }
92 const void* getSequence_next() const { return pSequence_next; }
93 void setSequence_next(const void* seq) { pSequence_next = seq; }
94 u32 getWait() const { return u32Wait_; }
96 TEStatus getStatus() const { return mStatus; }
99 if (val & 0x800000) {
101 }
102 return val;
103 }
104 void setFlag_operation_(u32 u32Data) {
105 ASSERT((u32Data >> data::guBit_TSequence_type) == 0);
106 setFlag_operation(u32Data >> 16, u32Data & 0xFFFF);
107 }
108
110
111public: // private: // public for the fakematch in JStudio_JStage::TAdaptor_actor::adaptor_do_begin
112 /* 0x14 */ TControl* pControl;
113 /* 0x18 */ u32 signature;
114 /* 0x1C */ u16 mFlag;
115 /* 0x1E */ u8 bSequence_;
116 /* 0x20 */ u32 _20; // "second per frame"?
117 /* 0x24 */ const void* pSequence;
118 /* 0x28 */ const void* pSequence_next;
119 /* 0x2C */ u32 u32Wait_;
120 /* 0x30 */ TEStatus mStatus;
121};
122
123class TFactory {
124public:
126
127 virtual ~TFactory();
129 virtual void destroy(TObject*);
130};
131
132class TObject_control : public TObject {
133public:
134 TObject_control(void const*, u32);
135};
136
137// Manages TObjects
138class TControl {
139public:
140 TControl();
141 virtual ~TControl();
142
143 void appendObject(TObject*);
144 void removeObject(TObject*);
145 void destroyObject(TObject*);
146 void destroyObject_all();
147 TObject* getObject(void const*, u32);
148 void reset();
149 bool forward(u32);
150
153 bool isSuspended() const { return _54 > 0; }
154 TFactory* getFactory() const { return pFactory; }
155 void setFactory(TFactory* factory) { pFactory = factory; }
157 int getSuspend() const { return _54; }
159 void suspend(s32 param_0) { mObject_control.suspend(param_0); }
160 void unsuspend(s32 param_0) { suspend(-param_0); }
161
162private:
163 /* 0x04 */ u32 _4;
164 /* 0x08 */ u32 _8;
165 /* 0x0C */ TFactory* pFactory;
167 /* 0x1C */ u32 mStatus;
169 /* 0x54 */ s32 _54;
170};
171
172template <int S>
174 TParseData(const void* pContent) {
176 }
177
179 set(NULL);
180 }
181
183 data.getData(this);
184 }
185
186 void set(const void* pContent) {
188 }
189
190 bool isEnd() const {
191 return status == 0;
192 }
193
194 bool empty() const {
195 return content == NULL;
196 }
197
198 bool isValid() const {
199 return !empty() && status == S;
200 }
201
202 const void* getContent() const { return content; }
203
204 u32 size() const { return entryCount; }
205};
206
207template <int S, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
208struct TParseData_fixed : public TParseData<S> {
209 TParseData_fixed(const void* pContent) : TParseData<S>(pContent) {}
211
212 const void* getNext() const {
213 return this->next;
214 }
215
216 bool isValid() const {
217 return TParseData<S>::isValid() && getNext() != NULL;
218 }
219
220 Iterator begin() const {
221 return Iterator(this->content);
222 }
223
224 Iterator end() const {
225 Iterator i(this->content);
226 i += this->size();
227 return i;
228 }
229
230 typename Iterator::ValueType front() const {
231 return *begin();
232 }
233
234 typename Iterator::ValueType back() const {
235 return *--end();
236 }
237};
238
239struct TParseData_string : public TParseData<0x60> {
240 TParseData_string(const void* pContent) : TParseData<0x60>(pContent) {}
242
243 const char* getData() const { return (const char*)getContent(); }
244};
245
246} // namespace stb
247} // namespace JStudio
248
249#endif /* STB_H */
Definition jstudio-object.h:110
Definition stb.h:138
void reset()
Definition stb.cpp:343
void appendObject(TObject *)
Definition stb.cpp:308
virtual ~TControl()
Definition stb.cpp:303
void destroyObject_all()
Definition stb.cpp:326
TObject_control & referObject_control()
Definition stb.h:156
TObject_control mObject_control
Definition stb.h:168
u32 _8
Definition stb.h:164
void resetStatus_()
Definition stb.h:152
u32 mStatus
Definition stb.h:167
int getSuspend() const
Definition stb.h:157
void destroyObject(TObject *)
Definition stb.cpp:320
bool isSuspended() const
Definition stb.h:153
void setFactory(TFactory *factory)
Definition stb.h:155
s32 _54
Definition stb.h:169
bool forward(u32)
Definition stb.cpp:352
TFactory * pFactory
Definition stb.h:165
TFactory * getFactory() const
Definition stb.h:154
void suspend(s32 param_0)
Definition stb.h:159
u32 _4
Definition stb.h:163
TObject * getObject(void const *, u32)
Definition stb.cpp:333
TControl()
Definition stb.cpp:296
void setSuspend(s32 suspend)
Definition stb.h:158
void unsuspend(s32 param_0)
Definition stb.h:160
JGadget::TLinkList< TObject, -12 > ocObject_
Definition stb.h:166
void setStatus_(u32 status)
Definition stb.h:151
void removeObject(TObject *)
Definition stb.cpp:313
Definition stb.h:123
virtual ~TFactory()
Definition stb.cpp:369
virtual JStudio::TObject * create(data::TParse_TBlock_object const &)
Definition stb.cpp:371
TFactory()
Definition stb.h:125
virtual void destroy(TObject *)
Definition stb.cpp:375
Definition stb.h:132
TObject_control(void const *, u32)
Definition stb.cpp:294
Definition stb.h:31
void setSuspend(s32 val)
Definition stb.h:83
virtual ~TObject()
Definition stb.cpp:48
void on_paragraph(u32 arg1, const void *arg2, u32 arg3)
Definition stb.h:74
JGadget::TLinkListNode ocObject_
Definition stb.h:109
void setFlag_operation_(u32 u32Data)
Definition stb.h:104
u8 bSequence_
Definition stb.h:115
void suspend(s32 val)
Definition stb.h:85
const void * getSequence_next() const
Definition stb.h:92
virtual void do_begin()
Definition stb.cpp:173
virtual void do_wait(u32)
Definition stb.cpp:185
const void * getSequence() const
Definition stb.h:86
TObject(data::TParse_TBlock_object const &)
Definition stb.cpp:43
void on_wait(u32 arg1)
Definition stb.h:75
void reset(void const *)
void process_paragraph_reserved_(u32, void const *, u32)
Definition stb.cpp:259
void setFlag_operation(u8, int)
Definition stb.cpp:52
int getSuspend() const
Definition stb.h:82
u32 getWait() const
Definition stb.h:94
u32 signature
Definition stb.h:113
TControl * getControl() const
Definition stb.h:80
TEStatus mStatus
Definition stb.h:120
u32 toInt32FromUInt24_(u32 val)
Definition stb.h:98
void setSequence_next(const void *seq)
Definition stb.h:93
u16 mFlag
Definition stb.h:114
void setStatus_(TEStatus status)
Definition stb.h:97
void setWait(u32 wait)
Definition stb.h:95
const void * getSequence_offset(s32 i_no) const
Definition stb.h:88
const void * pSequence_next
Definition stb.h:118
virtual void do_data(void const *, u32, void const *, u32)
Definition stb.cpp:189
u32 _20
Definition stb.h:116
void on_begin()
Definition stb.h:72
bool forward(u32)
Definition stb.cpp:85
void reset(void const *arg1)
Definition stb.h:47
const char * toString_status(int status)
Definition stb.cpp:13
void process_sequence_()
Definition stb.cpp:193
void reset()
Definition stb.h:57
virtual void do_end()
Definition stb.cpp:177
void on_end()
Definition stb.h:73
virtual void do_paragraph(u32, void const *, u32)
Definition stb.cpp:181
TControl * pControl
Definition stb.h:112
u32 u32Wait_
Definition stb.h:119
void on_data(const void *arg1, u32 arg2, const void *arg3, u32 arg4)
Definition stb.h:76
void setSequence_(const void *arg1)
Definition stb.h:87
const void * pSequence
Definition stb.h:117
TEStatus getStatus() const
Definition stb.h:96
bool isSuspended() const
Definition stb.h:84
void setControl_(TControl *control)
Definition stb.h:81
TEStatus
Definition stb.h:33
@ STATUS_INACTIVE
Definition stb.h:38
@ STATUS_END
Definition stb.h:35
@ STATUS_SUSPEND
Definition stb.h:37
@ STATUS_STILL
Definition stb.h:34
@ STATUS_WAIT
Definition stb.h:36
Definition stb.h:15
virtual bool parseBlock_next(void const **, u32 *, u32)
Definition stb.cpp:418
virtual bool parseHeader(data::TParse_THeader const &, u32)
Definition stb.cpp:431
virtual bool parseHeader_next(void const **, u32 *, u32)
Definition stb.cpp:383
virtual ~TParse()
Definition stb.cpp:381
virtual bool parseBlock_object(data::TParse_TBlock_object const &, u32)
Definition stb.cpp:439
TControl * pControl
Definition stb.h:28
TParse(TControl *)
Definition stb.cpp:379
virtual bool parseBlock_block(data::TParse_TBlock const &, u32)
Definition stb.cpp:435
TControl * getControl() const
Definition stb.h:25
Definition stb-data-parse.h:82
Definition stb-data-parse.h:27
Definition stb-data-parse.h:14
static void wait(b_gos_class *i_this)
Definition d_a_b_gos.cpp:70
int i
Definition e_log.c:92
static u32 status
Definition fstload.c:9
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
const u32 gu32Mask_TSequence_value_signExpansion
Definition stb-data.h:23
const int guBit_TSequence_type
Definition stb-data.h:10
Definition functionvalue.cpp:12
Definition linklist.h:11
Definition object-id.h:23
Definition stb.h:208
const void * getNext() const
Definition stb.h:212
TParseData_fixed(const void *pContent)
Definition stb.h:209
Iterator::ValueType front() const
Definition stb.h:230
bool isValid() const
Definition stb.h:216
TParseData_fixed()
Definition stb.h:210
Iterator::ValueType back() const
Definition stb.h:234
Iterator end() const
Definition stb.h:224
Iterator begin() const
Definition stb.h:220
TParseData_string()
Definition stb.h:241
const char * getData() const
Definition stb.h:243
TParseData_string(const void *pContent)
Definition stb.h:240
Definition stb.h:173
TParseData()
Definition stb.h:178
void set(const data::TParse_TParagraph_data &data)
Definition stb.h:182
TParseData(const void *pContent)
Definition stb.h:174
u32 size() const
Definition stb.h:204
const void * getContent() const
Definition stb.h:202
bool isEnd() const
Definition stb.h:190
void set(const void *pContent)
Definition stb.h:186
bool isValid() const
Definition stb.h:198
bool empty() const
Definition stb.h:194
const void * content
Definition stb-data-parse.h:73
u32 entryCount
Definition stb-data-parse.h:72
u8 status
Definition stb-data-parse.h:70
const void * next
Definition stb-data-parse.h:74
Definition stb-data-parse.h:68
void getData(TData *pData) const
Definition stb-data-parse.cpp:51