Loading [MathJax]/extensions/MathZoom.js
Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
JASTrack.h
Go to the documentation of this file.
1#ifndef JASTRACK_H
2#define JASTRACK_H
3
10
11struct JASSoundParams;
12
13namespace JASDsp {
14 class TChannel;
15
16 extern const u32 FILTER_MODE_IIR;
17};
18
23struct JASTrack : public JASPoolAllocObject_MultiThreaded<JASTrack> {
28
29 struct TChannelMgr : public JASPoolAllocObject_MultiThreaded<TChannelMgr> {
30 /* 802930DC */ TChannelMgr(JASTrack*);
31 /* 80293148 */ void init();
32 /* 802931B0 */ void releaseAll();
33 /* 80293220 */ bool noteOff(u32, u16);
34 /* 802932A0 */ void setPauseFlag(bool);
35
36 /* 0x00 */ JASChannel* mChannels[8];
38 /* 0x38 */ short field_0x38[8];
40 /* 0x4c */ JASTrack* mTrack;
41 };
42
43 struct TList : JGadget::TLinkList<JASTrack, -0x240> {
45 /* 80292F90 */ void append(JASTrack*);
46 /* 8029301C */ void seqMain();
47 /* 8029345C */ ~TList() {}
48
49 /* 80292F6C */ static s32 cbSeqMain(void*);
50
51 /* 0xC */ bool mCallbackRegistered;
52 };
53
54 struct MoveParam_ {
55 // TODO: fix this on debug
56#if VERSION != VERSION_SHIELD_DEBUG
57 /* 802932C8 */ MoveParam_() : mValue(0.0f), mTarget(0.0f), mCount(0) {}
58#endif
60 /* 0x00 */ f32 mValue;
61 /* 0x04 */ f32 mTarget;
62 /* 0x08 */ u32 mCount;
63 };
64
65 /* 80291228 */ JASTrack();
66 /* 8029131C */ ~JASTrack();
67 /* 80291444 */ void setChannelMgrCount(u32);
68 /* 802915D4 */ void init();
69 /* 802918FC */ void initTimed();
70 /* 8029194C */ void inherit(JASTrack const&);
71 /* 802919F4 */ void assignExtBuffer(u32, JASSoundParams*);
72 /* 80291A08 */ void setSeqData(void*, u32);
73 /* 80291A28 */ void startSeq();
74 /* 80291A78 */ void stopSeq();
75 /* 80291ABC */ void start();
76 /* 80291AC8 */ void close();
77 /* 80291B8C */ bool connectChild(u32, JASTrack*);
78 /* 80291BB8 */ void closeChild(u32);
79 /* 80291C30 */ JASTrack* openChild(u32);
80 /* 80291DAC */ void connectBus(int, int);
81 /* 80291DBC */ void setLatestKey(u8);
83 /* 80291F38 */ int noteOn(u32, u32, u32);
84 /* 80292008 */ int gateOn(u32, u32, f32, u32);
85 /* 80292198 */ int noteOff(u32, u16);
86 /* 80292220 */ bool checkNoteStop(u32) const;
87 /* 8029226C */ void overwriteOsc(JASChannel*);
88 /* 802922D8 */ void updateTimedParam();
89 /* 80292348 */ void updateTrack(f32);
90 /* 802924E4 */ void updateTempo();
91 /* 80292580 */ void updateSeq(bool, f32);
92 /* 80292644 */ u32 seqTimeToDspTime(f32);
93 /* 802926E0 */ void setParam(u32, f32, u32);
94 /* 80292708 */ void noteOffAll(u16);
95 /* 802927A0 */ void mute(bool);
96 /* 802927D8 */ void setOscScale(u32, f32);
97 /* 802927E8 */ void setOscTable(u32, JASOscillator::Point const*);
98 /* 80292808 */ void setOscAdsr(s16, s16, s16, s16, u16);
99 /* 8029285C */ void setFIR(s16 const*);
100 /* 8029289C */ void setIIR(s16 const*);
101 /* 802928D0 */ u16 readPortSelf(u32);
102 /* 802928F4 */ void writePortSelf(u32, u16);
103 /* 80292918 */ void writePort(u32, u16);
104 /* 8029297C */ u16 readPort(u32);
105 /* 802929A0 */ void setChannelPauseFlag(bool);
106 /* 80292A3C */ void pause(bool);
107 /* 80292AA4 */ int getTransposeTotal() const;
108 /* 80292AF4 */ bool isMute() const;
109 /* 80292B58 */ void setTempo(u16);
110 /* 80292B8C */ void setTempoRate(f32);
111 /* 80292BC0 */ void setTimebase(u16);
112 /* 80292BF4 */ void updateChannel(JASChannel*, JASDsp::TChannel*);
113 /* 80292D88 */ JASTrack* getRootTrack();
114 /* 80292DA0 */ int tickProc();
115 /* 80292E9C */ int seqMain();
116
117 /* 80292CA4 */ static void channelUpdateCallback(u32, JASChannel*, JASDsp::TChannel*, void*);
118
119 static JASOscillator::Point const sAdsTable[4];
120 static JASOscillator::Data const sEnvOsc;
122
125
127 u16 getPort(u32 param_0) { return mTrackPort.get(param_0); }
128 void setPort(u32 param_0, u16 param_1) { mTrackPort.set(param_0, param_1); }
129 u32 checkPortIn(u32 param_0) { return mTrackPort.checkImport(param_0); }
130 u32 checkPort(u32 param_0) { return mTrackPort.checkExport(param_0); }
132 void writeReg(JASRegisterParam::RegID param_0, u32 param_1) { mRegisterParam.write(param_0, param_1); }
136 f32 getVibDepth() const { return mVibDepth; }
137 void setVibDepth(f32 param_0) { mVibDepth = param_0; }
138 f32 getVibPitch() const { return mVibPitch; }
139 void setVibPitch(f32 param_0) { mVibPitch = param_0; }
140 f32 getTremDepth() const { return mTremDepth; }
141 void setTremDepth(f32 param_0) { mTremDepth = param_0; }
142 f32 getTremPitch() const { return mTremPitch; }
143 void setTremPitch(f32 param_0) { mTremPitch = param_0; }
144 u16 getVibDelay() const { return mVibDelay; }
145 void setVibDelay(u32 param_0) { mVibDelay = param_0; }
146 u16 getTremDelay() const { return mTremDelay; }
147 void setTremDelay(u32 param_0) { mTremDelay = param_0; }
148 u8 getStatus() const { return mStatus; }
149 void setAutoDelete(u8 param_0) { mFlags.autoDelete = param_0; }
150 f32 getPanPower() const { return mPanPower; }
151 void setPanPower(f32 param_0) { mPanPower = param_0; }
152 u32 getSkipSample() const { return mSkipSample; }
153 void setSkipSample(u32 param_0) { mSkipSample = param_0; }
155 void setDirectRelease(u16 param_0) {mDirectRelease = param_0; }
156 u16 getTimebase() const { return mTimebase; }
157 s8 getTranspose() const { return mTranspose; }
158 void setTranspose(u32 param_0) { mTranspose = param_0; }
159 u16 getBankNumber() const { return mBankNumber; }
160 void setBankNumber(u16 param_0) { mBankNumber = param_0; }
161 u16 getProgNumber() const { return mProgNumber; }
162 void setProgNumber(u16 param_0) { mProgNumber = param_0; }
163 u8 getBendSense() const { return mBendSense; }
164 void setBendSense(u8 param_0) { mBendSense = param_0; }
165 u8 getNoteOnPrio() const { return mNoteOnPrio; }
166 void setNoteOnPrio(u8 param_0) { mNoteOnPrio = param_0; }
167 u8 getReleasePrio() const { return mReleasePrio; }
168 void setReleasePrio(u8 param_0) { mReleasePrio = param_0; }
169 u8 getGateRate() const { return mGateRate; }
170 void setGateRate(u8 param_0) { mGateRate = param_0; }
171
172 /* 0x000 */ JASSeqCtrl mSeqCtrl;
175 /* 0x09C */ union {
176 struct {
188 /* 0x12C */ JASTrack* mParent;
189 /* 0x130 */ JASTrack* mChildren[16];
190 /* 0x170 */ TChannelMgr* mChannelMgrs[4];
192 /* 0x1D0 */ int mChannelMgrCount;
194 /* 0x1D8 */ f32 field_0x1d8;
195 /* 0x1DC */ f32 field_0x1dc;
196 /* 0x1E0 */ f32 mVibDepth;
197 /* 0x1E4 */ f32 mVibPitch;
198 /* 0x1E8 */ f32 mTremDepth;
199 /* 0x1EC */ f32 mTremPitch;
200 /* 0x1F0 */ u16 mVibDelay;
201 /* 0x1F2 */ u16 mTremDelay;
202 /* 0x1F4 */ short mFIR[8];
203 /* 0x204 */ short mIIR[8];
204 /* 0x214 */ u8 mFilterMode;
205 /* 0x215 */ volatile u8 mStatus;
206 /* 0x216 */ struct {
207 bool pause : 1;
208 bool mute : 1;
209 bool flag2 : 1;
210 bool autoDelete : 1;
211 bool flag4 : 1;
212 bool flag5 : 1;
213 bool flag6 : 1;
214 bool flag7 : 1;
216 /* 0x218 */ f32 mPanPower;
217 /* 0x21C */ f32 mTempoRate;
218 /* 0x220 */ u32 mSkipSample;
219 /* 0x224 */ u16 mDirectRelease;
220 /* 0x226 */ u16 mTempo;
221 /* 0x228 */ u16 mTimebase;
222 /* 0x22A */ s8 mTranspose;
223 /* 0x22B */ u8 field_0x22b;
224 /* 0x22C */ u16 mBankNumber;
225 /* 0x22E */ u16 mProgNumber;
226 /* 0x230 */ u8 mBendSense;
227 /* 0x231 */ u8 mNoteOnPrio;
228 /* 0x232 */ u8 mReleasePrio;
229 /* 0x233 */ u8 mGateRate;
230 /* 0x234 */ u16 mMixConfig[6];
232};
233
234#endif /* JASTRACK_H */
static u8 index[20][3]
Definition GXDraw.c:434
Definition JASChannel.h:21
Definition JASAudioThread.cpp:53
Definition JASBankTable.h:26
Definition JASHeapCtrl.h:294
Definition JASRegisterParam.h:10
void write(JASRegisterParam::RegID, u32)
Definition JASRegisterParam.cpp:42
RegID
Definition JASRegisterParam.h:12
u32 read(JASRegisterParam::RegID)
Definition JASRegisterParam.cpp:101
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)
Definition JASTrackPort.h:20
u32 checkImport(u32) const
Definition JASTrackPort.cpp:42
u32 checkExport(u32) const
Definition JASTrackPort.cpp:47
Definition JASAramStream.h:10
const u32 FILTER_MODE_IIR
Definition JASTrack.cpp:571
Definition JASDSPInterface.h:32
Definition JASOscillator.h:37
Definition JASOscillator.h:11
Definition JASSoundParams.h:10
Definition JASTrack.h:54
MoveParam_()
Definition JASTrack.h:57
u32 mCount
Definition JASTrack.h:62
f32 mValue
Definition JASTrack.h:60
f32 mTarget
Definition JASTrack.h:61
Definition JASTrack.h:29
TChannelMgr(JASTrack *)
Definition JASTrack.cpp:817
JASChannel * mChannels[8]
Definition JASTrack.h:36
short field_0x38[8]
Definition JASTrack.h:38
bool noteOff(u32, u16)
Definition JASTrack.cpp:853
void setPauseFlag(bool)
Definition JASTrack.cpp:869
JASChannelParams mParams
Definition JASTrack.h:37
void init()
Definition JASTrack.cpp:828
void releaseAll()
Definition JASTrack.cpp:841
JASTrack * mTrack
Definition JASTrack.h:40
JASSoundParams * mSoundParams
Definition JASTrack.h:39
Definition JASTrack.h:43
void seqMain()
Definition JASTrack.cpp:802
void append(JASTrack *)
Definition JASTrack.cpp:790
~TList()
Definition JASTrack.h:47
bool mCallbackRegistered
Definition JASTrack.h:51
TList()
Definition JASTrack.h:44
static s32 cbSeqMain(void *)
Definition JASTrack.cpp:784
Definition JASTrack.h:23
f32 mVibPitch
Definition JASTrack.h:197
JASTrack * mParent
Definition JASTrack.h:188
TChannelMgr mDefaultChannelMgr
Definition JASTrack.h:191
void updateChannel(JASChannel *, JASDsp::TChannel *)
Definition JASTrack.cpp:683
u8 mReleasePrio
Definition JASTrack.h:228
struct JASTrack::@143 mFlags
JASOscillator::Data mOscParam[2]
Definition JASTrack.h:186
void updateTempo()
Definition JASTrack.cpp:476
u8 getStatus() const
Definition JASTrack.h:148
bool flag5
Definition JASTrack.h:212
void setChannelMgrCount(u32)
Definition JASTrack.cpp:39
short mFIR[8]
Definition JASTrack.h:202
u32 seqTimeToDspTime(f32)
Definition JASTrack.cpp:504
u32 mSkipSample
Definition JASTrack.h:218
MoveParam_ volume
Definition JASTrack.h:177
bool mute
Definition JASTrack.h:208
int getChannelMgrCount()
Definition JASTrack.h:135
u16 getDirectRelease() const
Definition JASTrack.h:154
f32 getTremPitch() const
Definition JASTrack.h:142
f32 mTremPitch
Definition JASTrack.h:199
void close()
Definition JASTrack.cpp:209
void setSeqData(void *, u32)
Definition JASTrack.cpp:186
u16 getVibDelay() const
Definition JASTrack.h:144
~JASTrack()
Definition JASTrack.cpp:31
u8 mBendSense
Definition JASTrack.h:226
JASOscillator::Point mOscPoint[4]
Definition JASTrack.h:187
u8 mGateRate
Definition JASTrack.h:229
void writeReg(JASRegisterParam::RegID param_0, u32 param_1)
Definition JASTrack.h:132
static TList sTrackList
Definition JASTrack.h:124
void writePortSelf(u32, u16)
Definition JASTrack.cpp:596
bool flag2
Definition JASTrack.h:209
u16 readPort(u32)
Definition JASTrack.cpp:615
u16 mMixConfig[6]
Definition JASTrack.h:230
void setOscTable(u32, JASOscillator::Point const *)
Definition JASTrack.cpp:552
void updateTimedParam()
Definition JASTrack.cpp:419
f32 getVibDepth() const
Definition JASTrack.h:136
void setChannelPauseFlag(bool)
Definition JASTrack.cpp:620
u16 mProgNumber
Definition JASTrack.h:225
void inherit(JASTrack const &)
Definition JASTrack.cpp:160
u16 mTimebase
Definition JASTrack.h:221
u16 mVibDelay
Definition JASTrack.h:200
u8 getNoteOnPrio() const
Definition JASTrack.h:165
Status
Definition JASTrack.h:24
@ STATUS_FREE
Definition JASTrack.h:25
@ STATUS_RUN
Definition JASTrack.h:26
JASChannel * channelStart(JASTrack::TChannelMgr *, u32, u32, u32)
Definition JASTrack.cpp:298
f32 getTremDepth() const
Definition JASTrack.h:140
u8 getGateRate() const
Definition JASTrack.h:169
void setDirectRelease(u16 param_0)
Definition JASTrack.h:155
int gateOn(u32, u32, f32, u32)
Definition JASTrack.cpp:346
void setTremDelay(u32 param_0)
Definition JASTrack.h:147
s8 getTranspose() const
Definition JASTrack.h:157
union JASTrack::@142 mMoveParam
JASTrack * openChild(u32)
Definition JASTrack.cpp:254
void setPort(u32 param_0, u16 param_1)
Definition JASTrack.h:128
void init()
Definition JASTrack.cpp:74
void closeChild(u32)
Definition JASTrack.cpp:240
void setFIR(s16 const *)
Definition JASTrack.cpp:574
static JASDefaultBankTable sDefaultBankTable
Definition JASTrack.h:123
f32 mPanPower
Definition JASTrack.h:216
int noteOff(u32, u16)
Definition JASTrack.cpp:387
void pause(bool)
u16 getBankNumber() const
Definition JASTrack.h:159
void setIIR(s16 const *)
Definition JASTrack.cpp:583
void setTimebase(u16)
Definition JASTrack.cpp:675
void start()
Definition JASTrack.cpp:204
JASSeqCtrl mSeqCtrl
Definition JASTrack.h:172
f32 mTempoRate
Definition JASTrack.h:217
void connectBus(int, int)
Definition JASTrack.cpp:286
MoveParam_ dolby
Definition JASTrack.h:181
void setTempoRate(f32)
Definition JASTrack.cpp:668
u8 mNoteOnPrio
Definition JASTrack.h:227
bool autoDelete
Definition JASTrack.h:210
JASTrack * getRootTrack()
Definition JASTrack.cpp:726
u16 mTempo
Definition JASTrack.h:220
int noteOn(u32, u32, u32)
Definition JASTrack.cpp:326
void setProgNumber(u16 param_0)
Definition JASTrack.h:162
void setReleasePrio(u8 param_0)
Definition JASTrack.h:168
static void channelUpdateCallback(u32, JASChannel *, JASDsp::TChannel *, void *)
Definition JASTrack.cpp:699
void setVibDepth(f32 param_0)
Definition JASTrack.h:137
JASTrackPort mTrackPort
Definition JASTrack.h:173
void setTranspose(u32 param_0)
Definition JASTrack.h:158
u16 getTremDelay() const
Definition JASTrack.h:146
JASSeqCtrl * getSeqCtrl()
Definition JASTrack.h:126
void noteOffAll(u16)
Definition JASTrack.cpp:526
int getTransposeTotal() const
Definition JASTrack.cpp:643
f32 field_0x1d8
Definition JASTrack.h:194
int mChannelMgrCount
Definition JASTrack.h:192
int tickProc()
Definition JASTrack.cpp:735
MoveParam_ pan
Definition JASTrack.h:180
bool flag6
Definition JASTrack.h:213
int seqMain()
Definition JASTrack.cpp:763
u16 readPortSelf(u32)
Definition JASTrack.cpp:591
void updateSeq(bool, f32)
Definition JASTrack.cpp:487
f32 field_0x1dc
Definition JASTrack.h:195
void setBendSense(u8 param_0)
Definition JASTrack.h:164
void initTimed()
Definition JASTrack.cpp:146
void setAutoDelete(u8 param_0)
Definition JASTrack.h:149
f32 mVibDepth
Definition JASTrack.h:196
MoveParam_ fxmix
Definition JASTrack.h:179
MoveParam_ pitch
Definition JASTrack.h:178
short mIIR[8]
Definition JASTrack.h:203
JASRegisterParam mRegisterParam
Definition JASTrack.h:174
f32 mTremDepth
Definition JASTrack.h:198
struct JASTrack::@142::@144 params
bool pause
Definition JASTrack.h:207
JASTrack * mChildren[16]
Definition JASTrack.h:189
void writePort(u32, u16)
Definition JASTrack.cpp:601
bool flag7
Definition JASTrack.h:214
void setSkipSample(u32 param_0)
Definition JASTrack.h:153
void setTempo(u16)
Definition JASTrack.cpp:661
JASTrack()
Definition JASTrack.cpp:15
bool connectChild(u32, JASTrack *)
Definition JASTrack.cpp:230
volatile u8 mStatus
Definition JASTrack.h:205
u16 mBankNumber
Definition JASTrack.h:224
JGadget::TLinkListNode field_0x240
Definition JASTrack.h:231
static JASOscillator::Data const sPitchEnvOsc
Definition JASTrack.h:70
void setVibPitch(f32 param_0)
Definition JASTrack.h:139
bool checkNoteStop(u32) const
Definition JASTrack.cpp:400
u32 readReg(JASRegisterParam::RegID param_0)
Definition JASTrack.h:131
f32 getVibPitch() const
Definition JASTrack.h:138
u8 getReleasePrio() const
Definition JASTrack.h:167
JASTrack * getChild(u32 index)
Definition JASTrack.h:134
JASDefaultBankTable * mBankTable
Definition JASTrack.h:193
void setParam(u32, f32, u32)
Definition JASTrack.cpp:516
void setOscScale(u32, f32)
Definition JASTrack.cpp:546
u8 mFilterMode
Definition JASTrack.h:204
void setNoteOnPrio(u8 param_0)
Definition JASTrack.h:166
u16 getProgNumber() const
Definition JASTrack.h:161
u16 getPort(u32 param_0)
Definition JASTrack.h:127
void setTremPitch(f32 param_0)
Definition JASTrack.h:143
static JASOscillator::Data const sEnvOsc
Definition JASTrack.h:67
u32 checkPortIn(u32 param_0)
Definition JASTrack.h:129
void setTremDepth(f32 param_0)
Definition JASTrack.h:141
bool isMute() const
Definition JASTrack.cpp:652
MoveParam_ distFilter
Definition JASTrack.h:182
void startSeq()
Definition JASTrack.cpp:191
void setGateRate(u8 param_0)
Definition JASTrack.h:170
void overwriteOsc(JASChannel *)
Definition JASTrack.cpp:410
void mute(bool)
u16 mDirectRelease
Definition JASTrack.h:219
s8 mTranspose
Definition JASTrack.h:222
void updateTrack(f32)
Definition JASTrack.cpp:430
void setOscAdsr(s16, s16, s16, s16, u16)
Definition JASTrack.cpp:560
u8 getBendSense() const
Definition JASTrack.h:163
JASTrack * getParent()
Definition JASTrack.h:133
u16 mTremDelay
Definition JASTrack.h:201
void setBankNumber(u16 param_0)
Definition JASTrack.h:160
void stopSeq()
Definition JASTrack.cpp:198
u16 getTimebase() const
Definition JASTrack.h:156
u8 field_0x22b
Definition JASTrack.h:223
void setVibDelay(u32 param_0)
Definition JASTrack.h:145
bool flag4
Definition JASTrack.h:211
void setLatestKey(u8)
Definition JASTrack.cpp:291
MoveParam_ array[6]
Definition JASTrack.h:184
void setPanPower(f32 param_0)
Definition JASTrack.h:151
TChannelMgr * mChannelMgrs[4]
Definition JASTrack.h:190
void assignExtBuffer(u32, JASSoundParams *)
Definition JASTrack.cpp:181
static JASOscillator::Point const sAdsTable[4]
Definition JASTrack.h:59
f32 getPanPower() const
Definition JASTrack.h:150
u32 checkPort(u32 param_0)
Definition JASTrack.h:130
u32 getSkipSample() const
Definition JASTrack.h:152
Definition linklist.h:7
signed char s8
Definition types.h:4
unsigned long u32
Definition types.h:9
signed short int s16
Definition types.h:6
float f32
Definition types.h:22
unsigned short int u16
Definition types.h:7
signed long s32
Definition types.h:8
unsigned char u8
Definition types.h:5