Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JASTrack.h
Go to the documentation of this file.
1#ifndef JASTRACK_H
2#define JASTRACK_H
3
10#include "global.h"
11
12struct JASSoundParams;
13
14namespace JASDsp {
15 class TChannel;
16
17 extern const u32 FILTER_MODE_IIR;
18};
19
24struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
25 static const int CHANNEL_MGR_MAX = 4;
26 static const int TIMED_PARAMS = 6;
27 static const int OSC_NUM = 2;
28
34
35 struct TChannelMgr : public JASPoolAllocObject_MultiThreaded<TChannelMgr> {
37 void init();
38 void releaseAll();
39 bool noteOff(u32, u16);
40 void setPauseFlag(bool);
41
42 static const int CHANNEL_MAX = 8;
43
48 /* 0x4c */ JASTrack* mTrack;
49 };
50
51 struct TList : JGadget::TLinkList<JASTrack, -0x240> {
54 void seqMain();
55 ~TList() {}
56
57 static s32 cbSeqMain(void*);
58
59 /* 0xC */ bool mCallbackRegistered;
60 };
61
62 struct MoveParam_ {
63 // TODO: fix this on debug
64#if VERSION != VERSION_SHIELD_DEBUG
65 MoveParam_() : mValue(0.0f), mTarget(0.0f), mCount(0) {}
66#endif
67
68 /* 0x00 */ f32 mValue;
69 /* 0x04 */ f32 mTarget;
70 /* 0x08 */ u32 mCount;
71 };
72
73 JASTrack();
74 ~JASTrack();
76 void init();
77 void initTimed();
78 void inherit(JASTrack const&);
80 void setSeqData(void*, u32);
81 void startSeq();
82 void stopSeq();
83 void start();
84 void close();
86 void closeChild(u32);
88 void connectBus(int, int);
89 f32 getVolume() const;
90 f32 getPitch() const;
91 f32 getPan() const;
92 f32 getFxmix() const;
93 f32 getDolby() const;
94 void setLatestKey(u8);
96 int noteOn(u32, u32, u32);
97 int gateOn(u32, u32, f32, u32);
98 int noteOff(u32, u16);
99 bool checkNoteStop(u32) const;
101 void updateTimedParam();
102 void updateTrack(f32);
103 void updateTempo();
104 void updateSeq(bool, f32);
106 void setParam(u32, f32, u32);
107 void noteOffAll(u16);
108 void mute(bool);
109 void setOscScale(u32, f32);
111 void setOscAdsr(s16, s16, s16, s16, u16);
112 void setFIR(s16 const*);
113 void setIIR(s16 const*);
115 void writePortSelf(u32, u16);
116 void writePort(u32, u16);
118 void setChannelPauseFlag(bool);
119 void pause(bool);
120 int getTransposeTotal() const;
121 bool isMute() const;
122 void setTempo(u16);
123 void setTempoRate(f32);
124 void setTimebase(u16);
127 int getChannelCount() const;
128 int tickProc();
129 int seqMain();
130
132
133 static JASOscillator::Point const sAdsTable[4];
134 static JASOscillator::Data const sEnvOsc;
136
139
140 static const int MAX_CHILDREN = 16;
141
143 u16 getPort(u32 param_0) const { return mTrackPort.get(param_0); }
144 void setPort(u32 param_0, u16 param_1) { mTrackPort.set(param_0, param_1); }
145 u32 checkPortIn(u32 param_0) const { return mTrackPort.checkImport(param_0); }
146 u32 checkPort(u32 param_0) const { return mTrackPort.checkExport(param_0); }
148 void writeReg(JASRegisterParam::RegID param_0, u32 param_1) { mRegisterParam.write(param_0, param_1); }
151 JUT_ASSERT(115, index < MAX_CHILDREN)
152 return mChildren[index];
153 }
154 int getChannelMgrCount() const { return mChannelMgrCount; }
155 f32 getVibDepth() const { return mVibDepth; }
156 void setVibDepth(f32 param_0) { mVibDepth = param_0; }
157 f32 getVibPitch() const { return mVibPitch; }
158 void setVibPitch(f32 param_0) { mVibPitch = param_0; }
159 f32 getTremDepth() const { return mTremDepth; }
160 void setTremDepth(f32 param_0) { mTremDepth = param_0; }
161 f32 getTremPitch() const { return mTremPitch; }
162 void setTremPitch(f32 param_0) { mTremPitch = param_0; }
163 u32 getVibDelay() const { return mVibDelay; }
164 void setVibDelay(u32 param_0) { mVibDelay = param_0; }
165 u32 getTremDelay() const { return mTremDelay; }
166 void setTremDelay(u32 param_0) { mTremDelay = param_0; }
167 u8 getStatus() const { return mStatus; }
168 void setAutoDelete(bool param_0) { mFlags.autoDelete = param_0; }
169 f32 getPanPower() const { return mPanPower; }
170 void setPanPower(f32 param_0) { mPanPower = param_0; }
171 u32 getSkipSample() const { return mSkipSample; }
172 void setSkipSample(u32 param_0) { mSkipSample = param_0; }
174 void setDirectRelease(u16 param_0) {mDirectRelease = param_0; }
175 u16 getTimebase() const { return mTimebase; }
176 int getTranspose() const { return mTranspose; }
177 void setTranspose(s32 param_0) { mTranspose = param_0; }
178 u16 getBankNumber() const { return mBankNumber; }
179 void setBankNumber(u16 param_0) { mBankNumber = param_0; }
180 u16 getProgNumber() const { return mProgNumber; }
181 void setProgNumber(u16 param_0) { mProgNumber = param_0; }
182 u8 getBendSense() const { return mBendSense; }
183 void setBendSense(u8 param_0) { mBendSense = param_0; }
184 u8 getNoteOnPrio() const { return mNoteOnPrio; }
185 void setNoteOnPrio(u8 param_0) { mNoteOnPrio = param_0; }
186 u8 getReleasePrio() const { return mReleasePrio; }
187 void setReleasePrio(u8 param_0) { mReleasePrio = param_0; }
188 u8 getGateRate() const { return mGateRate; }
189 void setGateRate(u8 param_0) { mGateRate = param_0; }
190
191 /* 0x000 */ JASSeqCtrl mSeqCtrl;
194#ifdef __MWERKS__
195 /* 0x09C */ union {
196 struct {
206#else
219#endif
222 /* 0x12C */ JASTrack* mParent;
227 /* 0x1D4 */ const JASDefaultBankTable* mBankTable;
228 /* 0x1D8 */ f32 field_0x1d8;
229 /* 0x1DC */ f32 field_0x1dc;
230 /* 0x1E0 */ f32 mVibDepth;
231 /* 0x1E4 */ f32 mVibPitch;
232 /* 0x1E8 */ f32 mTremDepth;
233 /* 0x1EC */ f32 mTremPitch;
234 /* 0x1F0 */ u16 mVibDelay;
235 /* 0x1F2 */ u16 mTremDelay;
236 /* 0x1F4 */ short mFIR[8];
237 /* 0x204 */ short mIIR[8];
238 /* 0x214 */ u8 mFilterMode;
239 /* 0x215 */ volatile u8 mStatus;
240 /* 0x216 */ struct {
241 bool pause : 1;
242 bool mute : 1;
243 bool flag2 : 1;
244 bool autoDelete : 1;
245 bool flag4 : 1;
246 bool flag5 : 1;
247 bool flag6 : 1;
248 bool flag7 : 1;
250 /* 0x218 */ f32 mPanPower;
251 /* 0x21C */ f32 mTempoRate;
252 /* 0x220 */ u32 mSkipSample;
253 /* 0x224 */ u16 mDirectRelease;
254 /* 0x226 */ u16 mTempo;
255 /* 0x228 */ u16 mTimebase;
256 /* 0x22A */ s8 mTranspose;
257 /* 0x22B */ u8 field_0x22b;
258 /* 0x22C */ u16 mBankNumber;
259 /* 0x22E */ u16 mProgNumber;
260 /* 0x230 */ u8 mBendSense;
261 /* 0x231 */ u8 mNoteOnPrio;
262 /* 0x232 */ u8 mReleasePrio;
263 /* 0x233 */ u8 mGateRate;
264 /* 0x234 */ u16 mMixConfig[6];
266};
267
268#endif /* JASTRACK_H */
Definition JASChannel.h:21
Definition JASAudioThread.cpp:56
Definition JASBankTable.h:26
Definition JASHeapCtrl.h:363
Definition JASRegisterParam.h:10
void write(JASRegisterParam::RegID, u32)
Definition JASRegisterParam.cpp:19
RegID
Definition JASRegisterParam.h:12
u32 read(JASRegisterParam::RegID)
Definition JASRegisterParam.cpp:77
Definition JASSeqCtrl.h:13
Definition JASTrackPort.h:10
void set(u32 param_0, u16 param_1)
Definition JASTrackPort.h:23
u16 get(u32 param_0) const
Definition JASTrackPort.h:22
u32 checkImport(u32) const
Definition JASTrackPort.cpp:37
u32 checkExport(u32) const
Definition JASTrackPort.cpp:41
static u8 index[20][3]
Definition GXDraw.c:434
signed char s8
Definition types.h:7
unsigned long u32
Definition types.h:12
signed short int s16
Definition types.h:9
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 JASAramStream.h:10
const u32 FILTER_MODE_IIR
Definition JASTrack.cpp:555
Definition JASDSPInterface.h:32
Definition JASOscillator.h:37
Definition JASOscillator.h:11
Definition JASSoundParams.h:10
Definition JASTrack.h:62
MoveParam_()
Definition JASTrack.h:65
u32 mCount
Definition JASTrack.h:70
f32 mValue
Definition JASTrack.h:68
f32 mTarget
Definition JASTrack.h:69
Definition JASTrack.h:35
TChannelMgr(JASTrack *)
Definition JASTrack.cpp:822
s16 field_0x38[CHANNEL_MAX]
Definition JASTrack.h:46
bool noteOff(u32, u16)
Definition JASTrack.cpp:855
static const int CHANNEL_MAX
Definition JASTrack.h:42
void setPauseFlag(bool)
Definition JASTrack.cpp:871
JASChannel * mChannels[CHANNEL_MAX]
Definition JASTrack.h:44
JASChannelParams mParams
Definition JASTrack.h:45
void init()
Definition JASTrack.cpp:832
void releaseAll()
Definition JASTrack.cpp:844
JASTrack * mTrack
Definition JASTrack.h:48
JASSoundParams * mSoundParams
Definition JASTrack.h:47
Definition JASTrack.h:51
void seqMain()
Definition JASTrack.cpp:787
void append(JASTrack *)
Definition JASTrack.cpp:776
~TList()
Definition JASTrack.h:55
bool mCallbackRegistered
Definition JASTrack.h:59
TList()
Definition JASTrack.h:52
static s32 cbSeqMain(void *)
Definition JASTrack.cpp:770
Definition JASTrack.h:24
f32 mVibPitch
Definition JASTrack.h:231
u32 checkPortIn(u32 param_0) const
Definition JASTrack.h:145
JASTrack * mParent
Definition JASTrack.h:222
TChannelMgr mDefaultChannelMgr
Definition JASTrack.h:225
void updateChannel(JASChannel *, JASDsp::TChannel *)
Definition JASTrack.cpp:657
u32 mChannelMgrCount
Definition JASTrack.h:226
u8 mReleasePrio
Definition JASTrack.h:262
void updateTempo()
Definition JASTrack.cpp:466
u8 getStatus() const
Definition JASTrack.h:167
static const int MAX_CHILDREN
Definition JASTrack.h:140
bool flag5
Definition JASTrack.h:246
void setChannelMgrCount(u32)
Definition JASTrack.cpp:31
short mFIR[8]
Definition JASTrack.h:236
u32 seqTimeToDspTime(f32)
Definition JASTrack.cpp:493
u32 mSkipSample
Definition JASTrack.h:252
JASTrack * mChildren[MAX_CHILDREN]
Definition JASTrack.h:223
u32 getVibDelay() const
Definition JASTrack.h:163
MoveParam_ volume
Definition JASTrack.h:197
u16 getPort(u32 param_0) const
Definition JASTrack.h:143
bool mute
Definition JASTrack.h:242
f32 getPan() const
Definition JASTrack.cpp:282
u16 getDirectRelease() const
Definition JASTrack.h:173
f32 getTremPitch() const
Definition JASTrack.h:161
f32 mTremPitch
Definition JASTrack.h:233
void close()
Definition JASTrack.cpp:198
void setSeqData(void *, u32)
Definition JASTrack.cpp:174
const JASDefaultBankTable * mBankTable
Definition JASTrack.h:227
~JASTrack()
Definition JASTrack.cpp:23
u8 mBendSense
Definition JASTrack.h:260
union JASTrack::@202 mMoveParam
struct JASTrack::@202::@204 params
JASOscillator::Point mOscPoint[4]
Definition JASTrack.h:221
u8 mGateRate
Definition JASTrack.h:263
void writeReg(JASRegisterParam::RegID param_0, u32 param_1)
Definition JASTrack.h:148
static TList sTrackList
Definition JASTrack.h:138
void writePortSelf(u32, u16)
Definition JASTrack.cpp:576
bool flag2
Definition JASTrack.h:243
int getChannelCount() const
Definition JASTrack.cpp:697
u16 readPort(u32)
Definition JASTrack.cpp:593
u16 mMixConfig[6]
Definition JASTrack.h:264
void setOscTable(u32, JASOscillator::Point const *)
Definition JASTrack.cpp:537
void updateTimedParam()
Definition JASTrack.cpp:412
f32 getVibDepth() const
Definition JASTrack.h:155
void setChannelPauseFlag(bool)
Definition JASTrack.cpp:597
void setAutoDelete(bool param_0)
Definition JASTrack.h:168
u16 mProgNumber
Definition JASTrack.h:259
void inherit(JASTrack const &)
Definition JASTrack.cpp:150
u16 mTimebase
Definition JASTrack.h:255
u16 mVibDelay
Definition JASTrack.h:234
u8 getNoteOnPrio() const
Definition JASTrack.h:184
Status
Definition JASTrack.h:29
@ STATUS_FREE
Definition JASTrack.h:30
@ STATUS_STOPPED
Definition JASTrack.h:32
@ STATUS_RUN
Definition JASTrack.h:31
JASChannel * channelStart(JASTrack::TChannelMgr *, u32, u32, u32)
Definition JASTrack.cpp:291
f32 getTremDepth() const
Definition JASTrack.h:159
u8 getGateRate() const
Definition JASTrack.h:188
void setDirectRelease(u16 param_0)
Definition JASTrack.h:174
int gateOn(u32, u32, f32, u32)
Definition JASTrack.cpp:338
void setTremDelay(u32 param_0)
Definition JASTrack.h:166
JASOscillator::Data mOscParam[OSC_NUM]
Definition JASTrack.h:220
JASTrack * openChild(u32)
Definition JASTrack.cpp:242
void setPort(u32 param_0, u16 param_1)
Definition JASTrack.h:144
void init()
Definition JASTrack.cpp:65
void closeChild(u32)
Definition JASTrack.cpp:228
void setFIR(s16 const *)
Definition JASTrack.cpp:557
static JASDefaultBankTable sDefaultBankTable
Definition JASTrack.h:137
f32 mPanPower
Definition JASTrack.h:250
int noteOff(u32, u16)
Definition JASTrack.cpp:377
void pause(bool)
u16 getBankNumber() const
Definition JASTrack.h:178
int getChannelMgrCount() const
Definition JASTrack.h:154
void setIIR(s16 const *)
Definition JASTrack.cpp:565
void setTimebase(u16)
Definition JASTrack.cpp:650
void start()
Definition JASTrack.cpp:192
JASSeqCtrl mSeqCtrl
Definition JASTrack.h:191
f32 mTempoRate
Definition JASTrack.h:251
void connectBus(int, int)
Definition JASTrack.cpp:275
MoveParam_ dolby
Definition JASTrack.h:201
void setTempoRate(f32)
Definition JASTrack.cpp:643
u8 mNoteOnPrio
Definition JASTrack.h:261
bool autoDelete
Definition JASTrack.h:244
JASTrack * getRootTrack()
Definition JASTrack.cpp:712
u16 mTempo
Definition JASTrack.h:254
int noteOn(u32, u32, u32)
Definition JASTrack.cpp:318
f32 getFxmix() const
Definition JASTrack.cpp:283
void setProgNumber(u16 param_0)
Definition JASTrack.h:181
void setReleasePrio(u8 param_0)
Definition JASTrack.h:187
static void channelUpdateCallback(u32, JASChannel *, JASDsp::TChannel *, void *)
Definition JASTrack.cpp:671
void setVibDepth(f32 param_0)
Definition JASTrack.h:156
JASTrackPort mTrackPort
Definition JASTrack.h:192
JASSeqCtrl * getSeqCtrl()
Definition JASTrack.h:142
void noteOffAll(u16)
Definition JASTrack.cpp:513
int getTransposeTotal() const
Definition JASTrack.cpp:620
f32 field_0x1d8
Definition JASTrack.h:228
int tickProc()
Definition JASTrack.cpp:720
MoveParam_ pan
Definition JASTrack.h:200
bool flag6
Definition JASTrack.h:247
int seqMain()
Definition JASTrack.cpp:748
u16 readPortSelf(u32)
Definition JASTrack.cpp:572
void updateSeq(bool, f32)
Definition JASTrack.cpp:476
f32 field_0x1dc
Definition JASTrack.h:229
void setBendSense(u8 param_0)
Definition JASTrack.h:183
void initTimed()
Definition JASTrack.cpp:137
u32 checkPort(u32 param_0) const
Definition JASTrack.h:146
f32 mVibDepth
Definition JASTrack.h:230
MoveParam_ fxmix
Definition JASTrack.h:199
MoveParam_ pitch
Definition JASTrack.h:198
static const int CHANNEL_MGR_MAX
Definition JASTrack.h:25
short mIIR[8]
Definition JASTrack.h:237
JASRegisterParam mRegisterParam
Definition JASTrack.h:193
f32 mTremDepth
Definition JASTrack.h:232
bool pause
Definition JASTrack.h:241
void writePort(u32, u16)
Definition JASTrack.cpp:580
bool flag7
Definition JASTrack.h:248
static const int OSC_NUM
Definition JASTrack.h:27
void setSkipSample(u32 param_0)
Definition JASTrack.h:172
void setTempo(u16)
Definition JASTrack.cpp:636
JASTrack()
Definition JASTrack.cpp:10
bool connectChild(u32, JASTrack *)
Definition JASTrack.cpp:218
volatile u8 mStatus
Definition JASTrack.h:239
u16 mBankNumber
Definition JASTrack.h:258
JGadget::TLinkListNode field_0x240
Definition JASTrack.h:265
static JASOscillator::Data const sPitchEnvOsc
Definition JASTrack.h:62
void setVibPitch(f32 param_0)
Definition JASTrack.h:158
bool checkNoteStop(u32) const
Definition JASTrack.cpp:390
u32 readReg(JASRegisterParam::RegID param_0)
Definition JASTrack.h:147
f32 getVibPitch() const
Definition JASTrack.h:157
f32 getDolby() const
Definition JASTrack.cpp:284
u8 getReleasePrio() const
Definition JASTrack.h:186
JASTrack * getChild(u32 index)
Definition JASTrack.h:150
void setParam(u32, f32, u32)
Definition JASTrack.cpp:503
void setOscScale(u32, f32)
Definition JASTrack.cpp:532
u8 mFilterMode
Definition JASTrack.h:238
void setNoteOnPrio(u8 param_0)
Definition JASTrack.h:185
MoveParam_ array[TIMED_PARAMS]
Definition JASTrack.h:204
u16 getProgNumber() const
Definition JASTrack.h:180
void setTremPitch(f32 param_0)
Definition JASTrack.h:162
static JASOscillator::Data const sEnvOsc
Definition JASTrack.h:60
f32 getPitch() const
Definition JASTrack.cpp:281
void setTremDepth(f32 param_0)
Definition JASTrack.h:160
bool isMute() const
Definition JASTrack.cpp:628
int getTranspose() const
Definition JASTrack.h:176
void setTranspose(s32 param_0)
Definition JASTrack.h:177
f32 getVolume() const
Definition JASTrack.cpp:280
MoveParam_ distFilter
Definition JASTrack.h:202
void startSeq()
Definition JASTrack.cpp:179
void setGateRate(u8 param_0)
Definition JASTrack.h:189
void overwriteOsc(JASChannel *)
Definition JASTrack.cpp:403
void mute(bool)
u16 mDirectRelease
Definition JASTrack.h:253
s8 mTranspose
Definition JASTrack.h:256
void updateTrack(f32)
Definition JASTrack.cpp:422
void setOscAdsr(s16, s16, s16, s16, u16)
Definition JASTrack.cpp:545
u8 getBendSense() const
Definition JASTrack.h:182
JASTrack * getParent()
Definition JASTrack.h:149
u16 mTremDelay
Definition JASTrack.h:235
TChannelMgr * mChannelMgrs[CHANNEL_MGR_MAX]
Definition JASTrack.h:224
void setBankNumber(u16 param_0)
Definition JASTrack.h:179
void stopSeq()
Definition JASTrack.cpp:187
u16 getTimebase() const
Definition JASTrack.h:175
u8 field_0x22b
Definition JASTrack.h:257
void setVibDelay(u32 param_0)
Definition JASTrack.h:164
bool flag4
Definition JASTrack.h:245
void setLatestKey(u8)
Definition JASTrack.cpp:286
u32 getTremDelay() const
Definition JASTrack.h:165
void setPanPower(f32 param_0)
Definition JASTrack.h:170
static const int TIMED_PARAMS
Definition JASTrack.h:26
void assignExtBuffer(u32, JASSoundParams *)
Definition JASTrack.cpp:169
struct JASTrack::@203 mFlags
static JASOscillator::Point const sAdsTable[4]
Definition JASTrack.h:53
f32 getPanPower() const
Definition JASTrack.h:169
u32 getSkipSample() const
Definition JASTrack.h:171
Definition linklist.h:11
Definition JASTrack.h:207
MoveParam_u()
Definition JASTrack.h:217
MoveParam_ volume
Definition JASTrack.h:209
MoveParam_ fxmix
Definition JASTrack.h:211
MoveParam_ dolby
Definition JASTrack.h:213
MoveParam_ array[TIMED_PARAMS]
Definition JASTrack.h:216
MoveParam_ pan
Definition JASTrack.h:212
MoveParam_ distFilter
Definition JASTrack.h:214
MoveParam_ pitch
Definition JASTrack.h:210
struct JASTrack::MoveParam_u::@205 params