Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
JASAramStream.h
Go to the documentation of this file.
1#ifndef JASARAMSTREAM_H
2#define JASARAMSTREAM_H
3
6#include "dolphin/dvd.h"
7
8class JASChannel;
9
10namespace JASDsp {
11 class TChannel;
12}
13
19public:
20 typedef void (*StreamCallback)(u32, JASAramStream*, void*);
21
23 /* 0 */ CB_START,
24 /* 1 */ CB_STOP,
25 };
26
27 // Used internally for passing data to task functions
28 struct TaskData {
30 /* 0x4 */ u32 field_0x4;
31 /* 0x8 */ int field_0x8;
32 };
33
34 struct Header {
35 /* 0x00 */ u32 tag;
36 /* 0x04 */ u8 field_0x4[5];
37 /* 0x09 */ u8 format;
38 /* 0x0A */ u8 bits;
39 /* 0x0C */ u16 channels;
40 /* 0x0E */ u16 loop;
41 /* 0x10 */ int field_0x10;
42 /* 0x14 */ u8 field_0x14[4];
43 /* 0x18 */ int loop_start;
44 /* 0x1C */ int loop_end;
45 /* 0x20 */ u32 block_size;
46 /* 0x24 */ u8 field_0x24[4];
47 /* 0x28 */ u8 field_0x28;
48 /* 0x29 */ u8 field_0x29[0x17];
49 }; // Size: 0x40
50
51 struct BlockHeader {
52 /* 0x00 */ u32 tag;
53 /* 0x04 */ u32 field_0x4;
54 /* 0x08 */ struct {
58 }; // Size: 0x20
59
60 static void initSystem(u32, u32);
62 void init(u32, u32, StreamCallback, void*);
63 bool prepare(s32, int);
64 bool start();
65 bool stop(u16);
66 bool pause(bool);
67 bool cancel();
68 u32 getBlockSamples() const;
69 static void headerLoadTask(void*);
70 static void firstLoadTask(void*);
71 static void loadToAramTask(void*);
72 static void finishTask(void*);
73 static void prepareFinishTask(void*);
74 bool headerLoad(u32, int);
75 bool load();
76 static s32 channelProcCallback(void*);
77 static s32 dvdErrorCheck(void*);
78 static void channelCallback(u32, JASChannel*, JASDsp::TChannel*, void*);
81 void channelStart();
82 void channelStop(u16);
83
84 void setPitch(f32 pitch) { mPitch = pitch; }
85 void setVolume(f32 volume) {
86 for (int i = 0; i < 6; i++) {
87 mChannelVolume[i] = volume;
88 }
89 }
90
91 void setPan(f32 pan) {
92 for (int i = 0; i < 6; i++) {
93 mChannelPan[i] = pan;
94 }
95 }
96
97 void setFxmix(f32 fxMix) {
98 for (int i = 0; i < 6; i++) {
99 mChannelFxMix[i] = fxMix;
100 }
101 }
102
103 void setDolby(f32 dolby) {
104 for (int i = 0; i < 6; i++) {
105 mChannelDolby[i] = dolby;
106 }
107 }
108
109 void setChannelVolume(int channel, f32 volume) {
110 JUT_ASSERT(290, channel < CHANNEL_MAX);
111 mChannelVolume[channel] = volume;
112 }
113
114 void setChannelPan(int channel, f32 pan) {
115 JUT_ASSERT(296, channel < CHANNEL_MAX);
116 mChannelPan[channel] = pan;
117 }
118
119 void setChannelFxmix(int channel, f32 fxMix) {
120 JUT_ASSERT(302, channel < CHANNEL_MAX);
121 mChannelFxMix[channel] = fxMix;
122 }
123
124 void setChannelDolby(int channel, f32 dolby) {
125 JUT_ASSERT(308, channel < CHANNEL_MAX);
126 mChannelDolby[channel] = dolby;
127 }
128
129 static u32 getBlockSize() { return sBlockSize; }
130
131 static const int CHANNEL_MAX = 6;
132
135 /* 0x040 */ void* field_0x040[16];
136 /* 0x080 */ void* field_0x080[4];
139 /* 0x0AC */ bool field_0x0ac;
140 /* 0x0AD */ bool field_0x0ad;
141 /* 0x0AE */ u8 field_0x0ae;
142 /* 0x0B0 */ int field_0x0b0;
143 /* 0x0B4 */ int field_0x0b4;
144 /* 0x0B8 */ u32 field_0x0b8;
145 /* 0x0BC */ int field_0x0bc;
146 /* 0x0C0 */ bool field_0x0c0;
147 /* 0x0C4 */ volatile u32 field_0x0c4;
148 /* 0x0C8 */ volatile f32 field_0x0c8;
150 /* 0x108 */ u32 field_0x108;
151 /* 0x10C */ int field_0x10c;
152 /* 0x110 */ u32 mBlock;
153 /* 0x114 */ u8 field_0x114;
154 /* 0x118 */ u32 field_0x118;
155 /* 0x11C */ int field_0x11c;
156 /* 0x120 */ int field_0x120;
157 /* 0x124 */ int field_0x124;
158 /* 0x128 */ u16 field_0x128;
159 /* 0x12C */ int field_0x12c;
162 /* 0x148 */ int field_0x148;
163 /* 0x14C */ u32 field_0x14c;
165 /* 0x154 */ void* mCallbackData;
166 /* 0x158 */ u16 field_0x158;
167 /* 0x15A */ u16 mChannelNum;
168 /* 0x15C */ u32 mBufCount;
169 /* 0x160 */ u32 field_0x160;
170 /* 0x164 */ u32 field_0x164;
171 /* 0x168 */ bool mLoop;
172 /* 0x16C */ u32 mLoopStart;
173 /* 0x170 */ u32 mLoopEnd;
174 /* 0x174 */ f32 mVolume;
175 /* 0x178 */ f32 mPitch;
181
186};
187
188#endif /* JASARAMSTREAM_H */
Definition JASAramStream.h:18
int field_0x11c
Definition JASAramStream.h:155
u32 field_0x160
Definition JASAramStream.h:169
u32 mBufCount
Definition JASAramStream.h:168
u16 field_0x128
Definition JASAramStream.h:158
u32 field_0x108
Definition JASAramStream.h:150
void setChannelDolby(int channel, f32 dolby)
Definition JASAramStream.h:124
void channelStart()
Definition JASAramStream.cpp:613
int field_0x148
Definition JASAramStream.h:162
CallbackType
Definition JASAramStream.h:22
@ CB_STOP
Definition JASAramStream.h:24
@ CB_START
Definition JASAramStream.h:23
u8 field_0x114
Definition JASAramStream.h:153
JASChannel * field_0x0a8
Definition JASAramStream.h:138
static void prepareFinishTask(void *)
Definition JASAramStream.cpp:204
static void finishTask(void *)
Definition JASAramStream.cpp:195
void setChannelFxmix(int channel, f32 fxMix)
Definition JASAramStream.h:119
u32 field_0x0b8
Definition JASAramStream.h:144
static u8 * sReadBuffer
Definition JASAramStream.h:183
JASAramStream()
Definition JASAramStream.cpp:41
volatile u32 field_0x0c4
Definition JASAramStream.h:147
bool cancel()
Definition JASAramStream.cpp:150
int field_0x10c
Definition JASAramStream.h:151
bool headerLoad(u32, int)
Definition JASAramStream.cpp:212
void channelStop(u16)
Definition JASAramStream.cpp:652
int field_0x12c
Definition JASAramStream.h:159
OSMessageQueue field_0x000
Definition JASAramStream.h:133
DVDFileInfo mDvdFileInfo
Definition JASAramStream.h:149
void(*) StreamCallback(u32, JASAramStream *, void *)
Definition JASAramStream.h:20
OSMessageQueue field_0x020
Definition JASAramStream.h:134
int field_0x0b0
Definition JASAramStream.h:142
bool load()
Definition JASAramStream.cpp:259
bool prepare(s32, int)
Definition JASAramStream.cpp:111
bool field_0x0c0
Definition JASAramStream.h:146
bool stop(u16)
Definition JASAramStream.cpp:133
u32 getBlockSamples() const
Definition JASAramStream.cpp:155
u32 mLoopEnd
Definition JASAramStream.h:173
void setVolume(f32 volume)
Definition JASAramStream.h:85
static JASTaskThread * sLoadThread
Definition JASAramStream.h:182
u32 mLoopStart
Definition JASAramStream.h:172
u16 field_0x1dc[CHANNEL_MAX]
Definition JASAramStream.h:180
static void channelCallback(u32, JASChannel *, JASDsp::TChannel *, void *)
Definition JASAramStream.cpp:360
volatile f32 field_0x0c8
Definition JASAramStream.h:148
static void firstLoadTask(void *)
Definition JASAramStream.cpp:167
s16 field_0x130[CHANNEL_MAX]
Definition JASAramStream.h:160
static s32 dvdErrorCheck(void *)
Definition JASAramStream.cpp:337
u32 mBlock
Definition JASAramStream.h:152
u32 field_0x164
Definition JASAramStream.h:170
u16 field_0x158
Definition JASAramStream.h:166
f32 mVolume
Definition JASAramStream.h:174
StreamCallback mCallback
Definition JASAramStream.h:164
static const int CHANNEL_MAX
Definition JASAramStream.h:131
u32 field_0x14c
Definition JASAramStream.h:163
bool mLoop
Definition JASAramStream.h:171
bool field_0x0ac
Definition JASAramStream.h:139
void setChannelVolume(int channel, f32 volume)
Definition JASAramStream.h:109
f32 mChannelFxMix[CHANNEL_MAX]
Definition JASAramStream.h:178
void * field_0x040[16]
Definition JASAramStream.h:135
static s32 channelProcCallback(void *)
Definition JASAramStream.cpp:333
int field_0x0b4
Definition JASAramStream.h:143
f32 mChannelPan[CHANNEL_MAX]
Definition JASAramStream.h:177
void setPitch(f32 pitch)
Definition JASAramStream.h:84
f32 mChannelVolume[CHANNEL_MAX]
Definition JASAramStream.h:176
bool pause(bool)
Definition JASAramStream.cpp:137
void setChannelPan(int channel, f32 pan)
Definition JASAramStream.h:114
s16 field_0x13c[CHANNEL_MAX]
Definition JASAramStream.h:161
bool field_0x0ad
Definition JASAramStream.h:140
static u32 sChannelMax
Definition JASAramStream.h:185
JASChannel * mChannels[CHANNEL_MAX]
Definition JASAramStream.h:137
void * mCallbackData
Definition JASAramStream.h:165
s32 channelProc()
Definition JASAramStream.cpp:548
u32 field_0x118
Definition JASAramStream.h:154
int field_0x124
Definition JASAramStream.h:157
void updateChannel(u32, JASChannel *, JASDsp::TChannel *)
Definition JASAramStream.cpp:365
static u32 getBlockSize()
Definition JASAramStream.h:129
static void headerLoadTask(void *)
Definition JASAramStream.cpp:162
u8 field_0x0ae
Definition JASAramStream.h:141
void * field_0x080[4]
Definition JASAramStream.h:136
static void loadToAramTask(void *)
Definition JASAramStream.cpp:191
bool start()
Definition JASAramStream.cpp:129
static u32 sBlockSize
Definition JASAramStream.h:184
u16 mChannelNum
Definition JASAramStream.h:167
f32 mChannelDolby[CHANNEL_MAX]
Definition JASAramStream.h:179
void setDolby(f32 dolby)
Definition JASAramStream.h:103
static void initSystem(u32, u32)
Definition JASAramStream.cpp:28
void setPan(f32 pan)
Definition JASAramStream.h:91
f32 mPitch
Definition JASAramStream.h:175
int field_0x120
Definition JASAramStream.h:156
void setFxmix(f32 fxMix)
Definition JASAramStream.h:97
int field_0x0bc
Definition JASAramStream.h:145
Definition JASAudioThread.cpp:46
Definition JASTaskThread.h:13
static initFunc init[]
Definition d_menu_collect.cpp:39
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
int i
Definition e_pow.c:165
Definition JASAramStream.h:10
Definition dvd.h:105
Definition JASAramStream.h:51
s16 field_0x0
Definition JASAramStream.h:55
u32 field_0x4
Definition JASAramStream.h:53
struct JASAramStream::BlockHeader::@150 field_0x8[6]
s16 field_0x2
Definition JASAramStream.h:56
u32 tag
Definition JASAramStream.h:52
Definition JASAramStream.h:34
u8 format
Definition JASAramStream.h:37
u16 loop
Definition JASAramStream.h:40
int loop_start
Definition JASAramStream.h:43
u32 block_size
Definition JASAramStream.h:45
u8 field_0x4[5]
Definition JASAramStream.h:36
u16 channels
Definition JASAramStream.h:39
u8 bits
Definition JASAramStream.h:38
u32 tag
Definition JASAramStream.h:35
u8 field_0x29[0x17]
Definition JASAramStream.h:48
u8 field_0x24[4]
Definition JASAramStream.h:46
u8 field_0x14[4]
Definition JASAramStream.h:42
int loop_end
Definition JASAramStream.h:44
u8 field_0x28
Definition JASAramStream.h:47
int field_0x10
Definition JASAramStream.h:41
Definition JASAramStream.h:28
int field_0x8
Definition JASAramStream.h:31
u32 field_0x4
Definition JASAramStream.h:30
JASAramStream * stream
Definition JASAramStream.h:29
Definition JASDSPInterface.h:32
Definition OSMessage.h:18