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> {
30
31 struct TChannelMgr : public JASPoolAllocObject_MultiThreaded<TChannelMgr> {
33 void init();
34 void releaseAll();
35 bool noteOff(u32, u16);
36 void setPauseFlag(bool);
37
38 static const int CHANNEL_MAX = 8;
39
44 /* 0x4c */ JASTrack* mTrack;
45 };
46
47 struct TList : JGadget::TLinkList<JASTrack, -0x240> {
50 void seqMain();
51 ~TList() {}
52
53 static s32 cbSeqMain(void*);
54
55 /* 0xC */ bool mCallbackRegistered;
56 };
57
58 struct MoveParam_ {
59 // TODO: fix this on debug
60#if VERSION != VERSION_SHIELD_DEBUG
61 MoveParam_() : mValue(0.0f), mTarget(0.0f), mCount(0) {}
62#endif
63
64 /* 0x00 */ f32 mValue;
65 /* 0x04 */ f32 mTarget;
66 /* 0x08 */ u32 mCount;
67 };
68
69 JASTrack();
70 ~JASTrack();
72 void init();
73 void initTimed();
74 void inherit(JASTrack const&);
76 void setSeqData(void*, u32);
77 void startSeq();
78 void stopSeq();
79 void start();
80 void close();
82 void closeChild(u32);
84 void connectBus(int, int);
85 void setLatestKey(u8);
87 int noteOn(u32, u32, u32);
88 int gateOn(u32, u32, f32, u32);
89 int noteOff(u32, u16);
90 bool checkNoteStop(u32) const;
92 void updateTimedParam();
93 void updateTrack(f32);
94 void updateTempo();
95 void updateSeq(bool, f32);
97 void setParam(u32, f32, u32);
98 void noteOffAll(u16);
99 void mute(bool);
100 void setOscScale(u32, f32);
102 void setOscAdsr(s16, s16, s16, s16, u16);
103 void setFIR(s16 const*);
104 void setIIR(s16 const*);
106 void writePortSelf(u32, u16);
107 void writePort(u32, u16);
109 void setChannelPauseFlag(bool);
110 void pause(bool);
111 int getTransposeTotal() const;
112 bool isMute() const;
113 void setTempo(u16);
114 void setTempoRate(f32);
115 void setTimebase(u16);
118 int tickProc();
119 int seqMain();
120
122
123 static JASOscillator::Point const sAdsTable[4];
124 static JASOscillator::Data const sEnvOsc;
126
129
130 static const int MAX_CHILDREN = 16;
131
133 u16 getPort(u32 param_0) const { return mTrackPort.get(param_0); }
134 void setPort(u32 param_0, u16 param_1) { mTrackPort.set(param_0, param_1); }
135 u32 checkPortIn(u32 param_0) const { return mTrackPort.checkImport(param_0); }
136 u32 checkPort(u32 param_0) const { return mTrackPort.checkExport(param_0); }
138 void writeReg(JASRegisterParam::RegID param_0, u32 param_1) { mRegisterParam.write(param_0, param_1); }
141 JUT_ASSERT(115, index < MAX_CHILDREN)
142 return mChildren[index];
143 }
144 int getChannelMgrCount() const { return mChannelMgrCount; }
145 f32 getVibDepth() const { return mVibDepth; }
146 void setVibDepth(f32 param_0) { mVibDepth = param_0; }
147 f32 getVibPitch() const { return mVibPitch; }
148 void setVibPitch(f32 param_0) { mVibPitch = param_0; }
149 f32 getTremDepth() const { return mTremDepth; }
150 void setTremDepth(f32 param_0) { mTremDepth = param_0; }
151 f32 getTremPitch() const { return mTremPitch; }
152 void setTremPitch(f32 param_0) { mTremPitch = param_0; }
153 u32 getVibDelay() const { return mVibDelay; }
154 void setVibDelay(u32 param_0) { mVibDelay = param_0; }
155 u32 getTremDelay() const { return mTremDelay; }
156 void setTremDelay(u32 param_0) { mTremDelay = param_0; }
157 u8 getStatus() const { return mStatus; }
158 void setAutoDelete(bool param_0) { mFlags.autoDelete = param_0; }
159 f32 getPanPower() const { return mPanPower; }
160 void setPanPower(f32 param_0) { mPanPower = param_0; }
161 u32 getSkipSample() const { return mSkipSample; }
162 void setSkipSample(u32 param_0) { mSkipSample = param_0; }
164 void setDirectRelease(u16 param_0) {mDirectRelease = param_0; }
165 u16 getTimebase() const { return mTimebase; }
166 int getTranspose() const { return mTranspose; }
167 void setTranspose(s32 param_0) { mTranspose = param_0; }
168 u16 getBankNumber() const { return mBankNumber; }
169 void setBankNumber(u16 param_0) { mBankNumber = param_0; }
170 u16 getProgNumber() const { return mProgNumber; }
171 void setProgNumber(u16 param_0) { mProgNumber = param_0; }
172 u8 getBendSense() const { return mBendSense; }
173 void setBendSense(u8 param_0) { mBendSense = param_0; }
174 u8 getNoteOnPrio() const { return mNoteOnPrio; }
175 void setNoteOnPrio(u8 param_0) { mNoteOnPrio = param_0; }
176 u8 getReleasePrio() const { return mReleasePrio; }
177 void setReleasePrio(u8 param_0) { mReleasePrio = param_0; }
178 u8 getGateRate() const { return mGateRate; }
179 void setGateRate(u8 param_0) { mGateRate = param_0; }
180
181 /* 0x000 */ JASSeqCtrl mSeqCtrl;
184 /* 0x09C */ union {
185 struct {
197 /* 0x12C */ JASTrack* mParent;
199 /* 0x170 */ TChannelMgr* mChannelMgrs[4];
201 /* 0x1D0 */ int mChannelMgrCount;
202 /* 0x1D4 */ const JASDefaultBankTable* mBankTable;
203 /* 0x1D8 */ f32 field_0x1d8;
204 /* 0x1DC */ f32 field_0x1dc;
205 /* 0x1E0 */ f32 mVibDepth;
206 /* 0x1E4 */ f32 mVibPitch;
207 /* 0x1E8 */ f32 mTremDepth;
208 /* 0x1EC */ f32 mTremPitch;
209 /* 0x1F0 */ u16 mVibDelay;
210 /* 0x1F2 */ u16 mTremDelay;
211 /* 0x1F4 */ short mFIR[8];
212 /* 0x204 */ short mIIR[8];
213 /* 0x214 */ u8 mFilterMode;
214 /* 0x215 */ volatile u8 mStatus;
215 /* 0x216 */ struct {
216 bool pause : 1;
217 bool mute : 1;
218 bool flag2 : 1;
219 bool autoDelete : 1;
220 bool flag4 : 1;
221 bool flag5 : 1;
222 bool flag6 : 1;
223 bool flag7 : 1;
225 /* 0x218 */ f32 mPanPower;
226 /* 0x21C */ f32 mTempoRate;
227 /* 0x220 */ u32 mSkipSample;
228 /* 0x224 */ u16 mDirectRelease;
229 /* 0x226 */ u16 mTempo;
230 /* 0x228 */ u16 mTimebase;
231 /* 0x22A */ s8 mTranspose;
232 /* 0x22B */ u8 field_0x22b;
233 /* 0x22C */ u16 mBankNumber;
234 /* 0x22E */ u16 mProgNumber;
235 /* 0x230 */ u8 mBendSense;
236 /* 0x231 */ u8 mNoteOnPrio;
237 /* 0x232 */ u8 mReleasePrio;
238 /* 0x233 */ u8 mGateRate;
239 /* 0x234 */ u16 mMixConfig[6];
241};
242
243#endif /* JASTRACK_H */
static u8 index[20][3]
Definition GXDraw.c:434
Definition JASChannel.h:21
Definition JASAudioThread.cpp:46
Definition JASBankTable.h:26
Definition JASHeapCtrl.h:347
Definition JASRegisterParam.h:10
void write(JASRegisterParam::RegID, u32)
Definition JASRegisterParam.cpp:18
RegID
Definition JASRegisterParam.h:12
u32 read(JASRegisterParam::RegID)
Definition JASRegisterParam.cpp:74
Definition JASSeqCtrl.h:13
Definition JASTrackPort.h:10
void set(u32 param_0, u16 param_1)
Definition JASTrackPort.h:21
u16 get(u32 param_0) const
Definition JASTrackPort.h:20
u32 checkImport(u32) const
Definition JASTrackPort.cpp:33
u32 checkExport(u32) const
Definition JASTrackPort.cpp:37
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:524
Definition JASDSPInterface.h:32
Definition JASOscillator.h:37
Definition JASOscillator.h:11
Definition JASSoundParams.h:10
Definition JASTrack.h:58
MoveParam_()
Definition JASTrack.h:61
u32 mCount
Definition JASTrack.h:66
f32 mValue
Definition JASTrack.h:64
f32 mTarget
Definition JASTrack.h:65
Definition JASTrack.h:31
TChannelMgr(JASTrack *)
Definition JASTrack.cpp:766
s16 field_0x38[CHANNEL_MAX]
Definition JASTrack.h:42
bool noteOff(u32, u16)
Definition JASTrack.cpp:799
static const int CHANNEL_MAX
Definition JASTrack.h:38
void setPauseFlag(bool)
Definition JASTrack.cpp:814
JASChannel * mChannels[CHANNEL_MAX]
Definition JASTrack.h:40
JASChannelParams mParams
Definition JASTrack.h:41
void init()
Definition JASTrack.cpp:776
void releaseAll()
Definition JASTrack.cpp:788
JASTrack * mTrack
Definition JASTrack.h:44
JASSoundParams * mSoundParams
Definition JASTrack.h:43
Definition JASTrack.h:47
void seqMain()
Definition JASTrack.cpp:731
void append(JASTrack *)
Definition JASTrack.cpp:721
~TList()
Definition JASTrack.h:51
bool mCallbackRegistered
Definition JASTrack.h:55
TList()
Definition JASTrack.h:48
static s32 cbSeqMain(void *)
Definition JASTrack.cpp:716
Definition JASTrack.h:24
f32 mVibPitch
Definition JASTrack.h:206
u32 checkPortIn(u32 param_0) const
Definition JASTrack.h:135
JASTrack * mParent
Definition JASTrack.h:197
TChannelMgr mDefaultChannelMgr
Definition JASTrack.h:200
void updateChannel(JASChannel *, JASDsp::TChannel *)
Definition JASTrack.cpp:621
u8 mReleasePrio
Definition JASTrack.h:237
JASOscillator::Data mOscParam[2]
Definition JASTrack.h:195
void updateTempo()
Definition JASTrack.cpp:439
u8 getStatus() const
Definition JASTrack.h:157
static const int MAX_CHILDREN
Definition JASTrack.h:130
bool flag5
Definition JASTrack.h:221
void setChannelMgrCount(u32)
Definition JASTrack.cpp:30
short mFIR[8]
Definition JASTrack.h:211
u32 seqTimeToDspTime(f32)
Definition JASTrack.cpp:465
u32 mSkipSample
Definition JASTrack.h:227
JASTrack * mChildren[MAX_CHILDREN]
Definition JASTrack.h:198
u32 getVibDelay() const
Definition JASTrack.h:153
MoveParam_ volume
Definition JASTrack.h:186
u16 getPort(u32 param_0) const
Definition JASTrack.h:133
bool mute
Definition JASTrack.h:217
union JASTrack::@157 mMoveParam
u16 getDirectRelease() const
Definition JASTrack.h:163
f32 getTremPitch() const
Definition JASTrack.h:151
f32 mTremPitch
Definition JASTrack.h:208
void close()
Definition JASTrack.cpp:187
void setSeqData(void *, u32)
Definition JASTrack.cpp:168
const JASDefaultBankTable * mBankTable
Definition JASTrack.h:202
~JASTrack()
Definition JASTrack.cpp:23
u8 mBendSense
Definition JASTrack.h:235
JASOscillator::Point mOscPoint[4]
Definition JASTrack.h:196
u8 mGateRate
Definition JASTrack.h:238
void writeReg(JASRegisterParam::RegID param_0, u32 param_1)
Definition JASTrack.h:138
static TList sTrackList
Definition JASTrack.h:128
void writePortSelf(u32, u16)
Definition JASTrack.cpp:545
bool flag2
Definition JASTrack.h:218
u16 readPort(u32)
Definition JASTrack.cpp:562
u16 mMixConfig[6]
Definition JASTrack.h:239
void setOscTable(u32, JASOscillator::Point const *)
Definition JASTrack.cpp:507
void updateTimedParam()
Definition JASTrack.cpp:384
f32 getVibDepth() const
Definition JASTrack.h:145
void setChannelPauseFlag(bool)
Definition JASTrack.cpp:566
void setAutoDelete(bool param_0)
Definition JASTrack.h:158
u16 mProgNumber
Definition JASTrack.h:234
void inherit(JASTrack const &)
Definition JASTrack.cpp:145
u16 mTimebase
Definition JASTrack.h:230
u16 mVibDelay
Definition JASTrack.h:209
u8 getNoteOnPrio() const
Definition JASTrack.h:174
Status
Definition JASTrack.h:25
@ STATUS_FREE
Definition JASTrack.h:26
@ STATUS_STOP
Definition JASTrack.h:28
@ STATUS_RUN
Definition JASTrack.h:27
JASChannel * channelStart(JASTrack::TChannelMgr *, u32, u32, u32)
Definition JASTrack.cpp:269
f32 getTremDepth() const
Definition JASTrack.h:149
u8 getGateRate() const
Definition JASTrack.h:178
void setDirectRelease(u16 param_0)
Definition JASTrack.h:164
int gateOn(u32, u32, f32, u32)
Definition JASTrack.cpp:315
void setTremDelay(u32 param_0)
Definition JASTrack.h:156
JASTrack * openChild(u32)
Definition JASTrack.cpp:229
void setPort(u32 param_0, u16 param_1)
Definition JASTrack.h:134
void init()
Definition JASTrack.cpp:61
void closeChild(u32)
Definition JASTrack.cpp:216
void setFIR(s16 const *)
Definition JASTrack.cpp:526
static JASDefaultBankTable sDefaultBankTable
Definition JASTrack.h:127
f32 mPanPower
Definition JASTrack.h:225
int noteOff(u32, u16)
Definition JASTrack.cpp:355
void pause(bool)
u16 getBankNumber() const
Definition JASTrack.h:168
int getChannelMgrCount() const
Definition JASTrack.h:144
void setIIR(s16 const *)
Definition JASTrack.cpp:534
void setTimebase(u16)
Definition JASTrack.cpp:615
void start()
Definition JASTrack.cpp:183
JASSeqCtrl mSeqCtrl
Definition JASTrack.h:181
f32 mTempoRate
Definition JASTrack.h:226
void connectBus(int, int)
Definition JASTrack.cpp:260
MoveParam_ dolby
Definition JASTrack.h:190
void setTempoRate(f32)
Definition JASTrack.cpp:609
u8 mNoteOnPrio
Definition JASTrack.h:236
bool autoDelete
Definition JASTrack.h:219
JASTrack * getRootTrack()
Definition JASTrack.cpp:661
u16 mTempo
Definition JASTrack.h:229
int noteOn(u32, u32, u32)
Definition JASTrack.cpp:296
void setProgNumber(u16 param_0)
Definition JASTrack.h:171
void setReleasePrio(u8 param_0)
Definition JASTrack.h:177
static void channelUpdateCallback(u32, JASChannel *, JASDsp::TChannel *, void *)
Definition JASTrack.cpp:635
struct JASTrack::@158 mFlags
void setVibDepth(f32 param_0)
Definition JASTrack.h:146
JASTrackPort mTrackPort
Definition JASTrack.h:182
JASSeqCtrl * getSeqCtrl()
Definition JASTrack.h:132
void noteOffAll(u16)
Definition JASTrack.cpp:485
int getTransposeTotal() const
Definition JASTrack.cpp:587
f32 field_0x1d8
Definition JASTrack.h:203
int mChannelMgrCount
Definition JASTrack.h:201
int tickProc()
Definition JASTrack.cpp:669
MoveParam_ pan
Definition JASTrack.h:189
bool flag6
Definition JASTrack.h:222
int seqMain()
Definition JASTrack.cpp:696
u16 readPortSelf(u32)
Definition JASTrack.cpp:541
void updateSeq(bool, f32)
Definition JASTrack.cpp:449
f32 field_0x1dc
Definition JASTrack.h:204
void setBendSense(u8 param_0)
Definition JASTrack.h:173
void initTimed()
Definition JASTrack.cpp:132
u32 checkPort(u32 param_0) const
Definition JASTrack.h:136
f32 mVibDepth
Definition JASTrack.h:205
MoveParam_ fxmix
Definition JASTrack.h:188
MoveParam_ pitch
Definition JASTrack.h:187
short mIIR[8]
Definition JASTrack.h:212
JASRegisterParam mRegisterParam
Definition JASTrack.h:183
f32 mTremDepth
Definition JASTrack.h:207
bool pause
Definition JASTrack.h:216
void writePort(u32, u16)
Definition JASTrack.cpp:549
bool flag7
Definition JASTrack.h:223
void setSkipSample(u32 param_0)
Definition JASTrack.h:162
void setTempo(u16)
Definition JASTrack.cpp:603
JASTrack()
Definition JASTrack.cpp:10
bool connectChild(u32, JASTrack *)
Definition JASTrack.cpp:207
volatile u8 mStatus
Definition JASTrack.h:214
u16 mBankNumber
Definition JASTrack.h:233
JGadget::TLinkListNode field_0x240
Definition JASTrack.h:240
static JASOscillator::Data const sPitchEnvOsc
Definition JASTrack.h:58
void setVibPitch(f32 param_0)
Definition JASTrack.h:148
bool checkNoteStop(u32) const
Definition JASTrack.cpp:367
u32 readReg(JASRegisterParam::RegID param_0)
Definition JASTrack.h:137
f32 getVibPitch() const
Definition JASTrack.h:147
u8 getReleasePrio() const
Definition JASTrack.h:176
JASTrack * getChild(u32 index)
Definition JASTrack.h:140
void setParam(u32, f32, u32)
Definition JASTrack.cpp:476
void setOscScale(u32, f32)
Definition JASTrack.cpp:503
u8 mFilterMode
Definition JASTrack.h:213
void setNoteOnPrio(u8 param_0)
Definition JASTrack.h:175
u16 getProgNumber() const
Definition JASTrack.h:170
void setTremPitch(f32 param_0)
Definition JASTrack.h:152
static JASOscillator::Data const sEnvOsc
Definition JASTrack.h:56
void setTremDepth(f32 param_0)
Definition JASTrack.h:150
bool isMute() const
Definition JASTrack.cpp:595
int getTranspose() const
Definition JASTrack.h:166
void setTranspose(s32 param_0)
Definition JASTrack.h:167
MoveParam_ distFilter
Definition JASTrack.h:191
void startSeq()
Definition JASTrack.cpp:172
void setGateRate(u8 param_0)
Definition JASTrack.h:179
void overwriteOsc(JASChannel *)
Definition JASTrack.cpp:376
void mute(bool)
u16 mDirectRelease
Definition JASTrack.h:228
s8 mTranspose
Definition JASTrack.h:231
void updateTrack(f32)
Definition JASTrack.cpp:394
void setOscAdsr(s16, s16, s16, s16, u16)
Definition JASTrack.cpp:514
u8 getBendSense() const
Definition JASTrack.h:172
JASTrack * getParent()
Definition JASTrack.h:139
u16 mTremDelay
Definition JASTrack.h:210
void setBankNumber(u16 param_0)
Definition JASTrack.h:169
void stopSeq()
Definition JASTrack.cpp:178
u16 getTimebase() const
Definition JASTrack.h:165
u8 field_0x22b
Definition JASTrack.h:232
void setVibDelay(u32 param_0)
Definition JASTrack.h:154
bool flag4
Definition JASTrack.h:220
void setLatestKey(u8)
Definition JASTrack.cpp:264
u32 getTremDelay() const
Definition JASTrack.h:155
MoveParam_ array[6]
Definition JASTrack.h:193
void setPanPower(f32 param_0)
Definition JASTrack.h:160
TChannelMgr * mChannelMgrs[4]
Definition JASTrack.h:199
void assignExtBuffer(u32, JASSoundParams *)
Definition JASTrack.cpp:164
static JASOscillator::Point const sAdsTable[4]
Definition JASTrack.h:49
f32 getPanPower() const
Definition JASTrack.h:159
u32 getSkipSample() const
Definition JASTrack.h:161
struct JASTrack::@157::@159 params
Definition linklist.h:11