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 void reset(void const*);
47 bool forward(u32);
48 virtual void do_begin();
49 virtual void do_end();
50 virtual void do_paragraph(u32, void const*, u32);
51 virtual void do_wait(u32);
52 virtual void do_data(void const*, u32, void const*, u32);
53 void process_sequence_();
54 void process_paragraph_reserved_(u32, void const*, u32);
55
56 const char* toString_status(int status);
57
58 void on_begin() { do_begin(); }
59 void on_end() { do_end(); }
60 void on_paragraph(u32 arg1, const void* arg2, u32 arg3) { do_paragraph(arg1, arg2, arg3); }
61 void on_wait(u32 arg1) { do_wait(arg1); }
62 void on_data(const void* arg1, u32 arg2, const void* arg3, u32 arg4) {
63 do_data(arg1, arg2, arg3, arg4);
64 }
65
66 TControl* getControl() const { return pControl; }
67 void setControl_(TControl* control) { pControl = control; }
68 int getSuspend() const { return _20; }
69 void setSuspend(s32 val) { _20 = val; }
70 bool isSuspended() const { return getSuspend() > 0; }
71 void suspend(s32 val) { _20 += val; }
72 const void* getSequence() const { return pSequence; }
73 void setSequence_(const void* arg1) { pSequence = arg1; }
74 const void* getSequence_offset(s32 i_no) const {
75 int s32Val = (s32)getSequence();
76 return (const void*)(s32Val + i_no);
77 }
78 const void* getSequence_next() const { return pSequence_next; }
79 void setSequence_next(const void* seq) { pSequence_next = seq; }
80 u32 getWait() const { return u32Wait_; }
82 TEStatus getStatus() const { return mStatus; }
85 if (val & 0x800000) {
87 }
88 return val;
89 }
90 void setFlag_operation_(u32 u32Data) {
91 ASSERT((u32Data >> data::guBit_TSequence_type) == 0);
92 setFlag_operation(u32Data >> 16, u32Data & 0xFFFF);
93 }
94
96
97public: // private: // public for the fakematch in JStudio_JStage::TAdaptor_actor::adaptor_do_begin
98 /* 0x14 */ TControl* pControl;
99 /* 0x18 */ u32 signature;
100 /* 0x1C */ u16 mFlag;
101 /* 0x1E */ u8 bSequence_;
102 /* 0x20 */ u32 _20; // "second per frame"?
103 /* 0x24 */ const void* pSequence;
104 /* 0x28 */ const void* pSequence_next;
105 /* 0x2C */ u32 u32Wait_;
106 /* 0x30 */ TEStatus mStatus;
107};
108
109class TFactory {
110public:
112
113 virtual ~TFactory();
115 virtual void destroy(TObject*);
116};
117
118class TObject_control : public TObject {
119public:
120 TObject_control(void const*, u32);
121};
122
123// Manages TObjects
124class TControl {
125public:
126 TControl();
127 virtual ~TControl();
128
129 void appendObject(TObject*);
130 void removeObject(TObject*);
131 void destroyObject(TObject*);
132 void destroyObject_all();
133 TObject* getObject(void const*, u32);
134 void reset();
135 bool forward(u32);
136
139 bool isSuspended() const { return _54 > 0; }
140 TFactory* getFactory() const { return pFactory; }
141 void setFactory(TFactory* factory) { pFactory = factory; }
143 int getSuspend() const { return _54; }
145 void suspend(s32 param_0) { mObject_control.suspend(param_0); }
146 void unsuspend(s32 param_0) { suspend(-param_0); }
147
148private:
149 /* 0x04 */ u32 _4;
150 /* 0x08 */ u32 _8;
151 /* 0x0C */ TFactory* pFactory;
153 /* 0x1C */ u32 mStatus;
155 /* 0x54 */ s32 _54;
156};
157
158template <int S>
160 TParseData(const void* pContent) {
162 }
163
165 set(NULL);
166 }
167
169 data.getData(this);
170 }
171
172 void set(const void* pContent) {
174 }
175
176 bool isEnd() const {
177 return status == 0;
178 }
179
180 bool empty() const {
181 return content == NULL;
182 }
183
184 bool isValid() const {
185 return !empty() && status == S;
186 }
187
188 const void* getContent() const { return content; }
189
190 u32 size() const { return entryCount; }
191};
192
193template <int S, class Iterator=JGadget::binary::TValueIterator_raw<u8> >
194struct TParseData_fixed : public TParseData<S> {
195 TParseData_fixed(const void* pContent) : TParseData<S>(pContent) {}
197
198 const void* getNext() const {
199 return this->next;
200 }
201
202 bool isValid() const {
203 return TParseData<S>::isValid() && getNext() != NULL;
204 }
205
206 Iterator begin() const {
207 return Iterator(this->content);
208 }
209
210 Iterator end() const {
211 Iterator i(this->content);
212 i += this->size();
213 return i;
214 }
215
216 typename Iterator::ValueType front() const {
217 return *begin();
218 }
219
220 typename Iterator::ValueType back() const {
221 return *--end();
222 }
223};
224
225struct TParseData_string : public TParseData<0x60> {
226 TParseData_string(const void* pContent) : TParseData<0x60>(pContent) {}
228
229 const char* getData() const { return (const char*)getContent(); }
230};
231
232} // namespace stb
233} // namespace JStudio
234
235#endif /* STB_H */
Definition jstudio-object.h:110
Definition stb.h:124
void reset()
Definition stb.cpp:335
void appendObject(TObject *)
Definition stb.cpp:300
virtual ~TControl()
Definition stb.cpp:295
void destroyObject_all()
Definition stb.cpp:318
TObject_control & referObject_control()
Definition stb.h:142
TObject_control mObject_control
Definition stb.h:154
u32 _8
Definition stb.h:150
void resetStatus_()
Definition stb.h:138
u32 mStatus
Definition stb.h:153
int getSuspend() const
Definition stb.h:143
void destroyObject(TObject *)
Definition stb.cpp:312
bool isSuspended() const
Definition stb.h:139
void setFactory(TFactory *factory)
Definition stb.h:141
s32 _54
Definition stb.h:155
bool forward(u32)
Definition stb.cpp:344
TFactory * pFactory
Definition stb.h:151
TFactory * getFactory() const
Definition stb.h:140
void suspend(s32 param_0)
Definition stb.h:145
JGadget::TLinkList< TObject, -12 > mObjectContainer
Definition stb.h:152
u32 _4
Definition stb.h:149
TObject * getObject(void const *, u32)
Definition stb.cpp:325
TControl()
Definition stb.cpp:288
void setSuspend(s32 suspend)
Definition stb.h:144
void unsuspend(s32 param_0)
Definition stb.h:146
void setStatus_(u32 status)
Definition stb.h:137
void removeObject(TObject *)
Definition stb.cpp:305
Definition stb.h:109
virtual ~TFactory()
Definition stb.cpp:361
virtual JStudio::TObject * create(data::TParse_TBlock_object const &)
Definition stb.cpp:363
TFactory()
Definition stb.h:111
virtual void destroy(TObject *)
Definition stb.cpp:367
Definition stb.h:118
TObject_control(void const *, u32)
Definition stb.cpp:286
Definition stb.h:31
void setSuspend(s32 val)
Definition stb.h:69
virtual ~TObject()
Definition stb.cpp:48
void on_paragraph(u32 arg1, const void *arg2, u32 arg3)
Definition stb.h:60
JGadget::TLinkListNode ocObject_
Definition stb.h:95
void setFlag_operation_(u32 u32Data)
Definition stb.h:90
u8 bSequence_
Definition stb.h:101
void suspend(s32 val)
Definition stb.h:71
const void * getSequence_next() const
Definition stb.h:78
virtual void do_begin()
Definition stb.cpp:165
virtual void do_wait(u32)
Definition stb.cpp:177
const void * getSequence() const
Definition stb.h:72
TObject(data::TParse_TBlock_object const &)
Definition stb.cpp:43
void on_wait(u32 arg1)
Definition stb.h:61
void reset(void const *)
Definition stb.cpp:70
void process_paragraph_reserved_(u32, void const *, u32)
Definition stb.cpp:251
void setFlag_operation(u8, int)
Definition stb.cpp:52
int getSuspend() const
Definition stb.h:68
u32 getWait() const
Definition stb.h:80
u32 signature
Definition stb.h:99
TControl * getControl() const
Definition stb.h:66
TEStatus mStatus
Definition stb.h:106
u32 toInt32FromUInt24_(u32 val)
Definition stb.h:84
void setSequence_next(const void *seq)
Definition stb.h:79
u16 mFlag
Definition stb.h:100
void setStatus_(TEStatus status)
Definition stb.h:83
void setWait(u32 wait)
Definition stb.h:81
const void * getSequence_offset(s32 i_no) const
Definition stb.h:74
const void * pSequence_next
Definition stb.h:104
virtual void do_data(void const *, u32, void const *, u32)
Definition stb.cpp:181
u32 _20
Definition stb.h:102
void on_begin()
Definition stb.h:58
bool forward(u32)
Definition stb.cpp:77
const char * toString_status(int status)
Definition stb.cpp:13
void process_sequence_()
Definition stb.cpp:185
virtual void do_end()
Definition stb.cpp:169
void on_end()
Definition stb.h:59
virtual void do_paragraph(u32, void const *, u32)
Definition stb.cpp:173
TControl * pControl
Definition stb.h:98
u32 u32Wait_
Definition stb.h:105
void on_data(const void *arg1, u32 arg2, const void *arg3, u32 arg4)
Definition stb.h:62
void setSequence_(const void *arg1)
Definition stb.h:73
const void * pSequence
Definition stb.h:103
TEStatus getStatus() const
Definition stb.h:82
bool isSuspended() const
Definition stb.h:70
void setControl_(TControl *control)
Definition stb.h:67
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:410
virtual bool parseHeader(data::TParse_THeader const &, u32)
Definition stb.cpp:423
virtual bool parseHeader_next(void const **, u32 *, u32)
Definition stb.cpp:375
virtual ~TParse()
Definition stb.cpp:373
virtual bool parseBlock_object(data::TParse_TBlock_object const &, u32)
Definition stb.cpp:431
TControl * pControl
Definition stb.h:28
TParse(TControl *)
Definition stb.cpp:371
virtual bool parseBlock_block(data::TParse_TBlock const &, u32)
Definition stb.cpp:427
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
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
int i
Definition e_pow.c:165
static u32 status
Definition fstload.c:9
const u32 gu32Mask_TSequence_value_signExpansion
Definition stb-data.h:23
const int guBit_TSequence_type
Definition stb-data.h:10
Definition functionvalue.cpp:11
Definition linklist.h:11
Definition object-id.h:23
Definition stb.h:194
const void * getNext() const
Definition stb.h:198
TParseData_fixed(const void *pContent)
Definition stb.h:195
Iterator::ValueType front() const
Definition stb.h:216
bool isValid() const
Definition stb.h:202
TParseData_fixed()
Definition stb.h:196
Iterator::ValueType back() const
Definition stb.h:220
Iterator end() const
Definition stb.h:210
Iterator begin() const
Definition stb.h:206
TParseData_string()
Definition stb.h:227
const char * getData() const
Definition stb.h:229
TParseData_string(const void *pContent)
Definition stb.h:226
Definition stb.h:159
TParseData()
Definition stb.h:164
void set(const data::TParse_TParagraph_data &data)
Definition stb.h:168
TParseData(const void *pContent)
Definition stb.h:160
u32 size() const
Definition stb.h:190
const void * getContent() const
Definition stb.h:188
bool isEnd() const
Definition stb.h:176
void set(const void *pContent)
Definition stb.h:172
bool isValid() const
Definition stb.h:184
bool empty() const
Definition stb.h:180
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