Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JASChannel.h
Go to the documentation of this file.
1#ifndef JASCHANNEL_H
2#define JASCHANNEL_H
3
9#include <dolphin/os.h>
10
11class JASDSPChannel;
12
13namespace JASDsp {
14 struct TChannel;
15}
16
22public:
24 mVolume = 1.0f;
25 mPitch = 1.0f;
26 field_0x8 = 0.0f;
27 mPan = 0.5f;
28 mFxMix = 0.0f;
29 mDolby = 0.0f;
30 }
31 void init() {
32 mVolume = 1.0f;
33 mPitch = 1.0f;
34 field_0x8 = 0.0f;
35 mPan = 0.5f;
36 mFxMix = 0.0f;
37 mDolby = 0.0f;
38 }
39
40 /* 0x00 */ f32 mVolume;
41 /* 0x04 */ f32 mPitch;
42 /* 0x08 */ f32 field_0x8;
43 /* 0x0C */ f32 mPan;
44 /* 0x10 */ f32 mFxMix;
45 /* 0x14 */ f32 mDolby;
46};
47
52class JASChannel : public JASPoolAllocObject_MultiThreaded<JASChannel> {
53public:
54 typedef void (*Callback)(u32, JASChannel*, JASDsp::TChannel*, void*);
55 static const int BUSOUT_CPUCH = 6;
56 static const int OSC_NUM = 2;
57
59 /* 0 */ CB_PLAY,
60 /* 1 */ CB_START,
61 /* 2 */ CB_STOP,
62 /* 3 */ CB_TIMER,
63 };
64
65 enum Status {
66 /* 0 */ STATUS_STOP,
67 /* 1 */ STATUS_PLAY,
69 };
70
71 struct PanVector {
72 /* 0x0 */ f32 mSound;
73 /* 0x4 */ f32 mEffect;
74 /* 0x8 */ f32 mChannel;
75 };
76
77 union MixConfig {
79 struct {
84 };
85
86 JASChannel(Callback, void*);
88 int play();
89 int playForce();
90 void release(u16);
92 void setMixConfig(u32, u16);
94 static f32 calcPan(JASChannel::PanVector const*);
103 void updateMixer(f32, f32, f32, f32, u16*);
104 void free();
105 static void initBankDisposeMsgQueue();
106 static void receiveBankDisposeMsg();
107 bool checkBankDispose() const;
108
109 void setPauseFlag(bool param_0) { mPauseFlag = param_0; }
110 void setUpdateTimer(u32 param_0) { mUpdateTimer = param_0; }
111 void setBankDisposeID(const void* param_0) { mBankDisposeID = param_0; }
112 void setDirectRelease(u16 param_0) { mOscillators[0].setDirectRelease(param_0); }
113 void setVibrate(f32 param_0, f32 param_1) {
114 mVibrate.setDepth(param_0);
115 mVibrate.setPitch(param_1);
116 }
117 void setVibrateDelay(u16 param_0) { mVibrate.setDelay(param_0); }
118 void setTremolo(f32 param_0, f32 param_1) {
119 mTremolo.setDepth(param_0);
120 mTremolo.setPitch(param_1);
121 }
122 void setTremoloDelay(u16 param_0) { mTremolo.setDelay(param_0); }
123 void setPriority(u16 param_0) { mPriority = param_0; }
124 void setParams(const JASChannelParams& param_0) { mParams = param_0; }
125 void setInitVolume(f32 param_0) { mSoundParams.mVolume = param_0; }
126 void setInitFxmix(f32 param_0) { mSoundParams.mFxMix = param_0; }
127 void setInitPitch(f32 param_0) { mSoundParams.mPitch = param_0; }
128 void setInitPan(f32 param_0) { mSoundParams.mPan = param_0; }
129 void setInitDolby(f32 param_0) { mSoundParams.mDolby = param_0; }
130 void setKey(s32 param_0) { mKey = param_0; }
131 void setVelocity(u32 param_0) { mVelocity = param_0; }
132 void setSkipSamples(u32 param_0) { mSkipSamples = param_0; }
133 bool isDolbyMode() const { return mMixConfig[0].whole == 0xffff; }
134
135 /* 0x00 */ int mStatus;
136 /* 0x04 */ bool mPauseFlag;
138 /* 0x0C */ Callback mCallback;
139 /* 0x10 */ void* mCallbackData;
140 /* 0x14 */ u32 mUpdateTimer;
141 /* 0x18 */ const void* mBankDisposeID;
143 /* 0x5C */ JASLfo mVibrate;
144 /* 0x74 */ JASLfo mTremolo;
146 /* 0x98 */ u16 mPriority;
149 /* 0xC8 */ s16 mKey;
150 /* 0xCA */ u16 mVelocity;
151 /* 0xCC */ f32 mKeySweep;
153 /* 0xD4 */ u32 mKeySweepCount;
154 /* 0xD8 */ u32 mSkipSamples;
155 struct {
160
165};
166
167#endif /* JASCHANNEL_H */
Definition JASChannel.h:21
f32 mFxMix
Definition JASChannel.h:44
f32 mVolume
Definition JASChannel.h:40
f32 mPan
Definition JASChannel.h:43
f32 mDolby
Definition JASChannel.h:45
f32 mPitch
Definition JASChannel.h:41
void init()
Definition JASChannel.h:31
f32 field_0x8
Definition JASChannel.h:42
JASChannelParams()
Definition JASChannel.h:23
Definition JASAudioThread.cpp:56
int playForce()
Definition JASChannel.cpp:69
void setTremolo(f32 param_0, f32 param_1)
Definition JASChannel.h:118
void setInitDolby(f32 param_0)
Definition JASChannel.h:129
void setPriority(u16 param_0)
Definition JASChannel.h:123
void setVelocity(u32 param_0)
Definition JASChannel.h:131
bool isDolbyMode() const
Definition JASChannel.h:133
void setKey(s32 param_0)
Definition JASChannel.h:130
u32 field_0x0
Definition JASChannel.h:156
Callback mCallback
Definition JASChannel.h:138
static void receiveBankDisposeMsg()
Definition JASChannel.cpp:500
int play()
Definition JASChannel.cpp:57
void updateMixer(f32, f32, f32, f32, u16 *)
Definition JASChannel.cpp:395
JASLfo mVibrate
Definition JASChannel.h:143
void setUpdateTimer(u32 param_0)
Definition JASChannel.h:110
void setParams(const JASChannelParams &param_0)
Definition JASChannel.h:124
void setPauseFlag(bool param_0)
Definition JASChannel.h:109
static int sBankDisposeListSize
Definition JASChannel.h:164
s32 updateDSPChannel(JASDsp::TChannel *)
Definition JASChannel.cpp:303
void setInitVolume(f32 param_0)
Definition JASChannel.h:125
static OSMessageQueue sBankDisposeMsgQ
Definition JASChannel.h:161
static const int OSC_NUM
Definition JASChannel.h:56
void(*) Callback(u32, JASChannel *, JASDsp::TChannel *, void *)
Definition JASChannel.h:54
static void initBankDisposeMsgQueue()
Definition JASChannel.cpp:495
void setInitFxmix(f32 param_0)
Definition JASChannel.h:126
void * mCallbackData
Definition JASChannel.h:139
u32 mSkipSamples
Definition JASChannel.h:154
f32 mKeySweep
Definition JASChannel.h:151
static OSMessage sBankDisposeList[16]
Definition JASChannel.h:163
s32 initialUpdateDSPChannel(JASDsp::TChannel *)
Definition JASChannel.cpp:223
JASChannelParams mParams
Definition JASChannel.h:147
JASWaveInfo field_0x4
Definition JASChannel.h:157
MixConfig mMixConfig[BUSOUT_CPUCH]
Definition JASChannel.h:145
const void * mBankDisposeID
Definition JASChannel.h:141
JASDSPChannel * mDspCh
Definition JASChannel.h:137
void setBankDisposeID(const void *param_0)
Definition JASChannel.h:111
static s32 dspUpdateCallback(u32, JASDsp::TChannel *, void *)
Definition JASChannel.cpp:204
Status
Definition JASChannel.h:65
@ STATUS_PLAY
Definition JASChannel.h:67
@ STATUS_STOP
Definition JASChannel.h:66
@ STATUS_RELEASE
Definition JASChannel.h:68
bool mPauseFlag
Definition JASChannel.h:136
~JASChannel()
Definition JASChannel.cpp:46
void updateEffectorParam(JASDsp::TChannel *, u16 *, JASOscillator::EffectParams const &)
Definition JASChannel.cpp:158
int mStatus
Definition JASChannel.h:135
void setKeySweepTarget(s32, u32)
Definition JASChannel.cpp:148
static OSMessage sBankDisposeMsg[16]
Definition JASChannel.h:162
void setMixConfig(u32, u16)
Definition JASChannel.cpp:103
u16 mVelocity
Definition JASChannel.h:150
static f32 calcEffect(JASChannel::PanVector const *)
Definition JASChannel.cpp:108
JASSoundParams mSoundParams
Definition JASChannel.h:148
static f32 calcPan(JASChannel::PanVector const *)
Definition JASChannel.cpp:112
void setVibrateDelay(u16 param_0)
Definition JASChannel.h:117
JASChannel(Callback, void *)
Definition JASChannel.cpp:20
void release(u16)
Definition JASChannel.cpp:82
void setDirectRelease(u16 param_0)
Definition JASChannel.h:112
JASOscillator mOscillators[2]
Definition JASChannel.h:142
void setOscInit(u32, JASOscillator::Data const *)
Definition JASChannel.cpp:98
void setTremoloDelay(u16 param_0)
Definition JASChannel.h:122
bool checkBankDispose() const
Definition JASChannel.cpp:510
void setSkipSamples(u32 param_0)
Definition JASChannel.h:132
CallbackType
Definition JASChannel.h:58
@ CB_TIMER
Definition JASChannel.h:62
@ CB_PLAY
Definition JASChannel.h:59
@ CB_STOP
Definition JASChannel.h:61
@ CB_START
Definition JASChannel.h:60
int field_0x104
Definition JASChannel.h:159
void free()
Definition JASChannel.cpp:489
u32 mUpdateTimer
Definition JASChannel.h:140
s16 mKey
Definition JASChannel.h:149
struct JASChannel::@196 field_0xdc
void setInitPitch(f32 param_0)
Definition JASChannel.h:127
u16 mPriority
Definition JASChannel.h:146
void setInitPan(f32 param_0)
Definition JASChannel.h:128
f32 mKeySweepTarget
Definition JASChannel.h:152
u32 mKeySweepCount
Definition JASChannel.h:153
JASLfo mTremolo
Definition JASChannel.h:144
static const int BUSOUT_CPUCH
Definition JASChannel.h:55
void updateAutoMixer(JASDsp::TChannel *, f32, f32, f32, f32)
Definition JASChannel.cpp:381
void effectOsc(u32, JASOscillator::EffectParams *)
Definition JASChannel.cpp:117
void setVibrate(f32 param_0, f32 param_1)
Definition JASChannel.h:113
Definition JASHeapCtrl.h:363
void * OSMessage
Definition OSMessage.h:13
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
Definition JASChannel.h:71
f32 mSound
Definition JASChannel.h:72
f32 mChannel
Definition JASChannel.h:74
f32 mEffect
Definition JASChannel.h:73
Definition JASDSPChannel.h:10
Definition JASDSPInterface.h:32
Definition JASLfo.h:10
void setDelay(u16 param_0)
Definition JASLfo.h:18
void setPitch(f32 param_0)
Definition JASLfo.h:17
void setDepth(f32 param_0)
Definition JASLfo.h:16
Definition JASOscillator.h:37
Definition JASOscillator.h:17
Definition JASOscillator.h:10
void setDirectRelease(u16 param_0)
Definition JASOscillator.h:65
Definition JASSoundParams.h:10
f32 mDolby
Definition JASSoundParams.h:68
f32 mFxMix
Definition JASSoundParams.h:65
f32 mPan
Definition JASSoundParams.h:67
f32 mVolume
Definition JASSoundParams.h:64
f32 mPitch
Definition JASSoundParams.h:66
Definition JASWaveInfo.h:12
Definition OSMessage.h:18
Definition JASChannel.h:77
u8 lower1
Definition JASChannel.h:82
u8 upper
Definition JASChannel.h:80
u8 lower0
Definition JASChannel.h:81
u16 whole
Definition JASChannel.h:78
struct JASChannel::MixConfig::@197 parts