Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JAISound.h
Go to the documentation of this file.
1#ifndef JAISOUND_H
2#define JAISOUND_H
3
7#include "global.h"
8
14public:
15 operator u32() const { return id_.composite_; }
16
17 JAISoundID(u32 id) { id_.composite_ = id; };
18
19 JAISoundID(const JAISoundID& other) { id_.composite_ = other.id_.composite_; };
20
22
23 bool isAnonymous() const { return id_.composite_ == -1; }
24 void setAnonymous() { id_.composite_ = -1; }
25
26 union {
28 struct {
29 union {
31 struct {
38 } id_;
39};
40
41class JASTrack;
42
50
51 void init() {
52 field_0x0.value = 0;
53 field_0x1.value = 0;
54 *((u16*)&state) = 0;
55 userdata_ = 0;
56 }
57
58 bool isAlive() const { return state.unk != 6; }
59 bool isDead() const { return state.unk == 6;}
60
61 bool isPlaying() const { return state.unk == 5; }
62 bool isPrepared() const { return state.unk >= 3; }
63 bool isMute() const { return field_0x0.flags.mute; }
64 bool isPaused() const { return field_0x0.flags.paused; }
65 void pauseWhenOut() {
66 field_0x1.flags.flag6 = 1;
67 }
68
69 /* 0x0 */ union {
71 struct {
72 u8 mute : 1;
74 u8 flag3 : 1;
75 u8 flag4 : 1;
76 u8 flag5 : 1;
77 u8 flag6 : 1;
78 u8 flag7 : 1;
79 u8 flag8 : 1;
82 /* 0x1 */ union {
83 u8 value;
84 struct {
85 u8 flag1 : 1;
86 u8 flag2 : 1;
87 u8 flag3 : 1;
88 u8 flag4 : 1;
89 u8 flag5 : 1;
90 u8 flag6 : 1;
91 u8 flag7 : 1;
92 u8 flag8 : 1;
95 /* 0x2 */ struct {
97 struct {
98 u8 flag1 : 1;
101 u8 flag5 : 1;
102 u8 flag6 : 1;
103 u8 flag7 : 1;
104 u8 flag8 : 1;
107 /* 0x4 */ u32 userdata_;
108}; // Size: 0x8
109
115 void forceIn() {
116 value_ = 1.0f;
118 }
119
120 void forceOut() {
121 value_ = 0.0f;
123 }
124
125 void fadeOut(u32 maxSteps) {
126 if (maxSteps != 0) {
127 mTransition.set(0.0f, value_, maxSteps);
128 } else {
129 forceOut();
130 }
131 }
132
133 void fadeIn(u32 maxSteps) {
134 if (maxSteps != 0) {
135 mTransition.set(1.0f, value_, maxSteps);
136 } else {
137 forceIn();
138 }
139 }
140
141 void fadeInFromOut(u32 maxSteps) {
142 value_ = 0.0f;
143 fadeIn(maxSteps);
144 }
145
146 bool isOut() const {
147 return (mTransition.remainingSteps_ == 0 && value_ < 0.01f);
148 }
149
151 f32 getIntensity() const { return value_; }
152
153 /* 0x00 */ f32 value_;
155}; // Size: 0x10
156
161template <typename A0>
163 virtual void virtual2();
164 virtual void calc(A0*);
165 virtual void virtual4(A0*, const JASSoundParams&);
166};
167
172template <typename A0>
178
184public:
185 void init() { field_0x0.value = 0; }
186
187 /* 0x0 */ union {
189 struct {
200};
201
207public:
208 /* 0x00 */ f32 tempo_;
210
212 void init() { setTempo(1.0f); }
213 void setTempo(f32 tempo) {
214 tempo_ = tempo;
216 }
217 f32 getTempo() const { return tempo_; }
219};
220
221class JAISoundHandle;
222class JAIAudible;
223class JAIAudience;
224class JAISe;
225class JAISeq;
226class JAISoundChild;
227class JAIStream;
228class JAITempoMgr;
229
234class JAISound {
235public:
236 void releaseHandle();
237 void attachHandle(JAISoundHandle* handle);
238 JAISound();
239 void start_JAISound_(JAISoundID id, const JGeometry::TVec3<f32>* posPtr, JAIAudience* audience);
240 bool acceptsNewAudible() const;
242 JAIAudience*);
243 void stop();
244 void stop(u32 fadeTime);
245 void die_JAISound_();
247 bool calc_JAISound_();
248 void initTrack_JAISound_(JASTrack* track);
249
250 virtual s32 getNumChild() const = 0;
251 virtual JAISoundChild* getChild(int) = 0;
252 virtual void releaseChild(int) = 0;
253 virtual JAISe* asSe();
254 virtual JAISeq* asSeq();
255 virtual JAIStream* asStream();
256 virtual JASTrack* getTrack() = 0;
257 virtual JASTrack* getChildTrack(int) = 0;
258 virtual JAITempoMgr* getTempoMgr() = 0;
259 virtual bool JAISound_tryDie_() = 0;
260
261 JAISoundID getID() const { return soundID_; }
263 bool isAnimated() const { return getAnimationState() != 0; }
264 void setAnimationState(u32 state) {
266 }
267 u32 getUserData() const { return status_.userdata_; }
268 void setUserData(u32 userData) { status_.userdata_ = userData; }
270 bool isHandleAttached() const { return handle_ != NULL; }
271 bool hasLifeTime() const { return status_.field_0x1.flags.flag2; }
272
277
278 bool isPrepared() const { return status_.isPrepared(); }
284 }
285
286 bool isStopping() const {
288 }
289
290 void pause(bool param_0) {
291 status_.field_0x0.flags.paused = param_0;
292 }
293
294 void updateLifeTime(u32 lifeTime) {
295 if (lifeTime > lifeTime_) {
296 lifeTime_ = lifeTime;
297 }
298 }
299
300 void setLifeTime(u32 lifeTime, bool param_1) {
301 JUT_ASSERT(333, status_.state.flags.calcedOnce == 0);
302 lifeTime_ = lifeTime;
303 setComesBack(param_1);
305 }
306
307 void setComesBack(bool param_0) {
308 JUT_ASSERT(354, status_.state.flags.calcedOnce == 0);
310 if (param_0) {
312 }
313 }
314
315 bool setPos(const JGeometry::TVec3<f32>& pos) {
316 if (audible_ != NULL) {
317 audible_->setPos(pos);
318 }
319 return audible_ != NULL;
320 }
321
323 void fadeIn(u32 maxSteps) { fader_.fadeInFromOut(maxSteps); }
324 void fadeOut(u32 maxSteps) { fader_.fadeOut(maxSteps); }
325
327
328 s32 getCount() const { return count_; }
329
331
333 /* 0x08 */ JAIAudible* audible_;
335 /* 0x10 */ u32 lifeTime_;
336 /* 0x14 */ s32 prepareCount_;
340 /* 0x34 */ u32 priority_;
341 /* 0x38 */ s32 count_;
343}; // Size: 0x98
344
345STATIC_ASSERT(sizeof(JAISound) == 0x98);
346
347#endif /* JAISOUND_H */
STATIC_ASSERT(sizeof(JAISound)==0x98)
Definition JAIAudible.h:12
void setPos(const JGeometry::TVec3< float > &other)
Definition JAIAudible.h:19
Definition JAISe.h:13
Definition JAISeq.h:15
Definition JAISound.h:183
u8 flag3
Definition JAISound.h:192
u8 flag8
Definition JAISound.h:197
u8 value
Definition JAISound.h:188
u8 flag5
Definition JAISound.h:194
u8 flag1
Definition JAISound.h:190
u8 flag2
Definition JAISound.h:191
struct JAISoundActivity::@148::@149 flags
u8 flag6
Definition JAISound.h:195
void init()
Definition JAISound.h:185
u8 flag7
Definition JAISound.h:196
union JAISoundActivity::@148 field_0x0
u8 flag4
Definition JAISound.h:193
Definition JAISoundHandles.h:14
Definition JAISound.h:13
bool isAnonymous() const
Definition JAISound.h:23
struct JAISoundID::@138::@139 info
u32 composite_
Definition JAISound.h:27
u16 value
Definition JAISound.h:30
union JAISoundID::@138 id_
u16 waveID
Definition JAISound.h:36
JAISoundID()
Definition JAISound.h:21
union JAISoundID::@138::@139::@140 type
u8 sectionID
Definition JAISound.h:32
struct JAISoundID::@138::@139::@140::@141 parts
JAISoundID(const JAISoundID &other)
Definition JAISound.h:19
void setAnonymous()
Definition JAISound.h:24
u8 groupID
Definition JAISound.h:33
JAISoundID(u32 id)
Definition JAISound.h:17
Definition JAISound.h:234
void initTrack_JAISound_(JASTrack *track)
Definition JAISound.cpp:194
void increasePrepareCount_JAISound_()
Definition JAISound.cpp:144
virtual JASTrack * getTrack()=0
virtual s32 getNumChild() const =0
bool isHandleAttached() const
Definition JAISound.h:270
void setLifeTime(u32 lifeTime, bool param_1)
Definition JAISound.h:300
virtual JASTrack * getChildTrack(int)=0
JAISoundFader fader_
Definition JAISound.h:339
u32 getAnimationState() const
Definition JAISound.h:262
JAIAudience * audience_
Definition JAISound.h:334
void unlockIfLocked()
Definition JAISound.h:279
bool hasLifeTime() const
Definition JAISound.h:271
bool isAnimated() const
Definition JAISound.h:263
u32 lifeTime_
Definition JAISound.h:335
bool setPos(const JGeometry::TVec3< f32 > &pos)
Definition JAISound.h:315
void pause(bool param_0)
Definition JAISound.h:290
void start_JAISound_(JAISoundID id, const JGeometry::TVec3< f32 > *posPtr, JAIAudience *audience)
Definition JAISound.cpp:66
void stop_JAISound_()
Definition JAISound.h:281
void removeLifeTime_()
Definition JAISound.h:273
JAISoundID soundID_
Definition JAISound.h:337
u32 priority_
Definition JAISound.h:340
virtual JAIStream * asStream()
Definition JAISound.cpp:129
void stop()
Definition JAISound.cpp:116
void setComesBack(bool param_0)
Definition JAISound.h:307
JAISoundID getID() const
Definition JAISound.h:261
virtual JAISeq * asSeq()
Definition JAISound.cpp:125
bool calc_JAISound_()
Definition JAISound.cpp:151
bool acceptsNewAudible() const
Definition JAISound.cpp:85
JAISound()
Definition JAISound.cpp:64
virtual void releaseChild(int)=0
s32 count_
Definition JAISound.h:341
virtual JAISe * asSe()
Definition JAISound.cpp:121
JAISoundParamsProperty & getProperty()
Definition JAISound.h:326
virtual JAITempoMgr * getTempoMgr()=0
void updateLifeTime(u32 lifeTime)
Definition JAISound.h:294
void fadeIn(u32 maxSteps)
Definition JAISound.h:323
void releaseHandle()
Definition JAISound.cpp:16
JAIAudible * audible_
Definition JAISound.h:333
s32 getCount() const
Definition JAISound.h:328
void lockWhenPrepared()
Definition JAISound.h:280
void newAudible(const JGeometry::TVec3< f32 > &, JGeometry::TVec3< f32 > const *, u32, JAIAudience *)
Definition JAISound.cpp:93
s32 prepareCount_
Definition JAISound.h:336
void fadeOut(u32 maxSteps)
Definition JAISound.h:324
bool isStopping() const
Definition JAISound.h:286
JAIAudible * getAudible()
Definition JAISound.h:269
virtual JAISoundChild * getChild(int)=0
JAISoundParams params_
Definition JAISound.h:342
void setUserData(u32 userData)
Definition JAISound.h:268
void die_JAISound_()
Definition JAISound.cpp:133
void setAnimationState(u32 state)
Definition JAISound.h:264
JAISoundFader & getFader()
Definition JAISound.h:322
JAISoundHandle * handle_
Definition JAISound.h:332
bool isPrepared() const
Definition JAISound.h:278
virtual bool JAISound_tryDie_()=0
void attachHandle(JAISoundHandle *handle)
Definition JAISound.cpp:23
JAISoundStatus_ status_
Definition JAISound.h:338
u32 getUserData() const
Definition JAISound.h:267
JAISoundParamsMove & getAuxiliary()
Definition JAISound.h:330
Definition JAIStream.h:14
Definition JAISound.h:206
JAISoundParamsTransition::TTransition transition_
Definition JAISound.h:209
JAITempoMgr()
Definition JAISound.h:211
void init()
Definition JAISound.h:212
void setTempo(f32 tempo)
Definition JAISound.h:213
f32 tempo_
Definition JAISound.h:208
f32 getTempo() const
Definition JAISound.h:217
void calc()
Definition JAISound.h:218
static u16 const id[4]
Definition d_a_obj_smtile.cpp:242
unsigned long u32
Definition types.h:12
float f32
Definition types.h:25
unsigned short int u16
Definition types.h:10
signed long s32
Definition types.h:11
unsigned char u8
Definition types.h:8
Definition JAIAudience.h:14
Definition JAISoundChild.h:13
Definition JAISound.h:114
void forceIn()
Definition JAISound.h:115
bool isOut() const
Definition JAISound.h:146
void calc()
Definition JAISound.h:150
void fadeOut(u32 maxSteps)
Definition JAISound.h:125
void fadeInFromOut(u32 maxSteps)
Definition JAISound.h:141
JAISoundParamsTransition::TTransition mTransition
Definition JAISound.h:154
void forceOut()
Definition JAISound.h:120
f32 value_
Definition JAISound.h:153
void fadeIn(u32 maxSteps)
Definition JAISound.h:133
f32 getIntensity() const
Definition JAISound.h:151
Definition JAISoundParams.h:85
Definition JAISoundParams.h:10
Definition JAISoundParams.h:27
f32 apply(f32 value)
Definition JAISoundParams.h:40
void zero()
Definition JAISoundParams.h:28
u32 remainingSteps_
Definition JAISoundParams.h:55
void set(f32 newValue, f32 currentValue, u32 maxSteps)
Definition JAISoundParams.h:34
Definition JAISoundParams.h:109
JAISoundParamsProperty property_
Definition JAISoundParams.h:118
JAISoundParamsMove move_
Definition JAISoundParams.h:119
Definition JAISound.h:47
u8 flag1
Definition JAISound.h:85
u8 flag2
Definition JAISound.h:86
u8 flag4
Definition JAISound.h:75
u8 flag3
Definition JAISound.h:74
u8 unk
Definition JAISound.h:96
s32 unlockIfLocked()
Definition JAISound.cpp:44
struct JAISoundStatus_::@144 state
bool isMute() const
Definition JAISound.h:63
u8 flag8
Definition JAISound.h:79
u8 flag6
Definition JAISound.h:77
bool isPlaying() const
Definition JAISound.h:61
u8 value
Definition JAISound.h:70
bool isAlive() const
Definition JAISound.h:58
s32 lockWhenPrepared()
Definition JAISound.cpp:36
u8 calcedOnce
Definition JAISound.h:99
bool isPaused() const
Definition JAISound.h:64
u8 paused
Definition JAISound.h:73
u8 mute
Definition JAISound.h:72
void init()
Definition JAISound.h:51
bool isDead() const
Definition JAISound.h:59
u8 flag5
Definition JAISound.h:76
u8 animationState
Definition JAISound.h:100
union JAISoundStatus_::@142 field_0x0
u8 flag7
Definition JAISound.h:78
bool isPrepared() const
Definition JAISound.h:62
struct JAISoundStatus_::@142::@145 flags
void pauseWhenOut()
Definition JAISound.h:65
u32 userdata_
Definition JAISound.h:107
union JAISoundStatus_::@143 field_0x1
Definition JAISound.h:162
virtual void virtual4(A0 *, const JASSoundParams &)
virtual void calc(A0 *)
Definition JAISound.h:173
virtual void virtual2()
virtual void virtual4(JAISoundStrategyMgr__unknown< A0 > *)
virtual JAISoundStrategyMgr__unknown< A0 > * calc(JAISoundID)
Definition JASSoundParams.h:10
Definition JASTrack.h:24
Definition JGeometry.h:70