SSBM Decomp
Loading...
Searching...
No Matches
ax.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_AX_H_
2#define _DOLPHIN_AX_H_
3
4#include <platform.h>
5
6#include <dolphin/dsp/dsp.h>
7
8typedef struct _AXPBMIX {
9 /* 0x00 */ u16 vL;
10 /* 0x02 */ u16 vDeltaL;
11 /* 0x04 */ u16 vR;
12 /* 0x06 */ u16 vDeltaR;
13 /* 0x08 */ u16 vAuxAL;
14 /* 0x0A */ u16 vDeltaAuxAL;
15 /* 0x0C */ u16 vAuxAR;
16 /* 0x0E */ u16 vDeltaAuxAR;
17 /* 0x10 */ u16 vAuxBL;
18 /* 0x12 */ u16 vDeltaAuxBL;
19 /* 0x14 */ u16 vAuxBR;
20 /* 0x16 */ u16 vDeltaAuxBR;
21 /* 0x18 */ u16 vAuxBS;
22 /* 0x1A */ u16 vDeltaAuxBS;
23 /* 0x1C */ u16 vS;
24 /* 0x1E */ u16 vDeltaS;
25 /* 0x20 */ u16 vAuxAS;
26 /* 0x22 */ u16 vDeltaAuxAS;
27} AXPBMIX;
28
29typedef struct _AXPBITD {
30 /* 0x00 */ u16 flag;
31 /* 0x02 */ u16 bufferHi;
32 /* 0x04 */ u16 bufferLo;
33 /* 0x06 */ u16 shiftL;
34 /* 0x08 */ u16 shiftR;
35 /* 0x0A */ u16 targetShiftL;
36 /* 0x0C */ u16 targetShiftR;
37} AXPBITD;
38
39typedef struct _AXPBUPDATE {
40 /* 0x00 */ u16 updNum[5];
41 /* 0x0A */ u16 dataHi;
42 /* 0x0C */ u16 dataLo;
44
45typedef struct _AXPBDPOP {
46 /* 0x00 */ s16 aL;
47 /* 0x02 */ s16 aAuxAL;
48 /* 0x04 */ s16 aAuxBL;
49 /* 0x06 */ s16 aR;
50 /* 0x08 */ s16 aAuxAR;
51 /* 0x0A */ s16 aAuxBR;
52 /* 0x0C */ s16 aS;
53 /* 0x0E */ s16 aAuxAS;
54 /* 0x10 */ s16 aAuxBS;
55} AXPBDPOP;
56
57typedef struct _AXPBVE {
58 /* 0x00 */ u16 currentVolume;
59 /* 0x02 */ s16 currentDelta;
60} AXPBVE;
61
62typedef struct _AXPBFIR {
63 /* 0x00 */ u16 numCoefs;
64 /* 0x02 */ u16 coefsHi;
65 /* 0x04 */ u16 coefsLo;
66} AXPBFIR;
67
68typedef struct _AXPBADDR {
69 /* 0x00 */ u16 loopFlag;
70 /* 0x02 */ u16 format;
71 /* 0x04 */ u16 loopAddressHi;
72 /* 0x06 */ u16 loopAddressLo;
73 /* 0x08 */ u16 endAddressHi;
74 /* 0x0A */ u16 endAddressLo;
77} AXPBADDR;
78
79typedef struct _AXPBADPCM {
80 /* 0x00 */ u16 a[8][2];
81 /* 0x20 */ u16 gain;
82 /* 0x22 */ u16 pred_scale;
83 /* 0x24 */ u16 yn1;
84 /* 0x26 */ u16 yn2;
85} AXPBADPCM;
86
87typedef struct _AXPBSRC {
88 /* 0x00 */ u16 ratioHi;
89 /* 0x02 */ u16 ratioLo;
91 /* 0x06 */ u16 last_samples[4];
92} AXPBSRC;
93
94typedef struct _AXPBADPCMLOOP {
95 /* 0x00 */ u16 loop_pred_scale;
96 /* 0x02 */ u16 loop_yn1;
97 /* 0x04 */ u16 loop_yn2;
99
100typedef struct _AXPB {
101 /* 0x00 */ u16 nextHi;
102 /* 0x02 */ u16 nextLo;
103 /* 0x04 */ u16 currHi;
104 /* 0x06 */ u16 currLo;
105 /* 0x08 */ u16 srcSelect;
106 /* 0x0A */ u16 coefSelect;
107 /* 0x0C */ u16 mixerCtrl;
108 /* 0x0E */ u16 state;
109 /* 0x10 */ u16 type;
110 /* 0x12 */ AXPBMIX mix;
111 /* 0x36 */ AXPBITD itd;
112 /* 0x44 */ AXPBUPDATE update;
113 /* 0x52 */ AXPBDPOP dpop;
114 /* 0x64 */ AXPBVE ve;
115 /* 0x68 */ AXPBFIR fir;
116 /* 0x6E */ AXPBADDR addr;
117 /* 0x7E */ AXPBADPCM adpcm;
118 /* 0xA6 */ AXPBSRC src;
120 /* 0xBA */ u16 pad[3];
121} AXPB;
122
123typedef struct _AXVPB {
124 /* 0x000 */ void* next;
125 /* 0x004 */ void* prev;
126 /* 0x008 */ void* next1;
127 /* 0x00C */ u32 priority;
128 /* 0x010 */ void (*callback)(void*);
129 /* 0x014 */ u32 userContext;
130 /* 0x018 */ u32 index;
131 /* 0x01C */ u32 sync;
132 /* 0x020 */ u32 depop;
133 /* 0x024 */ u32 updateMS;
134 /* 0x028 */ u32 updateCounter;
135 /* 0x02C */ u32 updateTotal;
136 /* 0x030 */ u16* updateWrite;
137 /* 0x034 */ u16 updateData[128];
138 /* 0x134 */ void* itdBuffer;
139 /* 0x138 */ AXPB pb;
140} AXVPB;
141
142typedef struct _AXPBITDBUFFER {
143 /* 0x00 */ s16 data[32];
145
146typedef struct _AXPBU {
147 /* 0x00 */ u16 data[128];
148} AXPBU;
149
150typedef struct _AXSPB {
151 /* 0x00 */ u16 dpopLHi;
152 /* 0x02 */ u16 dpopLLo;
153 /* 0x04 */ s16 dpopLDelta;
154 /* 0x06 */ u16 dpopRHi;
155 /* 0x08 */ u16 dpopRLo;
156 /* 0x0A */ s16 dpopRDelta;
157 /* 0x0C */ u16 dpopSHi;
158 /* 0x0E */ u16 dpopSLo;
159 /* 0x10 */ s16 dpopSDelta;
160 /* 0x12 */ u16 dpopALHi;
161 /* 0x14 */ u16 dpopALLo;
162 /* 0x16 */ s16 dpopALDelta;
163 /* 0x18 */ u16 dpopARHi;
164 /* 0x1A */ u16 dpopARLo;
165 /* 0x1C */ s16 dpopARDelta;
166 /* 0x1E */ u16 dpopASHi;
167 /* 0x20 */ u16 dpopASLo;
168 /* 0x22 */ s16 dpopASDelta;
169 /* 0x24 */ u16 dpopBLHi;
170 /* 0x26 */ u16 dpopBLLo;
171 /* 0x28 */ s16 dpopBLDelta;
172 /* 0x2A */ u16 dpopBRHi;
173 /* 0x2C */ u16 dpopBRLo;
174 /* 0x2E */ s16 dpopBRDelta;
175 /* 0x30 */ u16 dpopBSHi;
176 /* 0x32 */ u16 dpopBSLo;
177 /* 0x34 */ s16 dpopBSDelta;
178} AXSPB;
179
180typedef struct _AXPROFILE {
181 /* 0x00 */ u64 axFrameStart;
186 /* 0x28 */ u64 axFrameEnd;
187 /* 0x30 */ u32 axNumVoices;
188} AXPROFILE;
189
191 /* 0x00 */ long* l;
192 /* 0x00 */ long* r;
193 /* 0x00 */ long* s;
194};
195
196#define AX_DSP_SLAVE_LENGTH 3264
197#define AX_MAX_VOICES 64
198
199#define AX_SRC_TYPE_NONE 0
200#define AX_SRC_TYPE_LINEAR 1
201#define AX_SRC_TYPE_4TAP_8K 2
202#define AX_SRC_TYPE_4TAP_12K 3
203#define AX_SRC_TYPE_4TAP_16K 4
204
205// sync flags
206#define AX_SYNC_FLAG_COPYALL (1 << 31)
207#define AX_SYNC_FLAG_UNK1 (1 << 30) // reserved, unused?
208#define AX_SYNC_FLAG_UNK2 (1 << 29) // reserved, unused?
209#define AX_SYNC_FLAG_UNK3 (1 << 28) // reserved, unused?
210#define AX_SYNC_FLAG_UNK4 (1 << 27) // reserved, unused?
211#define AX_SYNC_FLAG_UNK5 (1 << 26) // reserved, unused?
212#define AX_SYNC_FLAG_UNK6 (1 << 25) // reserved, unused?
213#define AX_SYNC_FLAG_UNK7 (1 << 24) // reserved, unused?
214#define AX_SYNC_FLAG_UNK8 (1 << 23) // reserved, unused?
215#define AX_SYNC_FLAG_UNK9 (1 << 22) // reserved, unused?
216#define AX_SYNC_FLAG_UNK10 (1 << 21) // reserved, unused?
217#define AX_SYNC_FLAG_COPYADPCMLOOP (1 << 20)
218#define AX_SYNC_FLAG_COPYRATIO (1 << 19)
219#define AX_SYNC_FLAG_COPYSRC (1 << 18)
220#define AX_SYNC_FLAG_COPYADPCM (1 << 17)
221#define AX_SYNC_FLAG_COPYCURADDR (1 << 16)
222#define AX_SYNC_FLAG_COPYENDADDR (1 << 15)
223#define AX_SYNC_FLAG_COPYLOOPADDR (1 << 14)
224#define AX_SYNC_FLAG_COPYLOOP (1 << 13)
225#define AX_SYNC_FLAG_COPYADDR (1 << 12)
226#define AX_SYNC_FLAG_COPYFIR (1 << 11)
227#define AX_SYNC_FLAG_SWAPVOL (1 << 10)
228#define AX_SYNC_FLAG_COPYVOL (1 << 9)
229#define AX_SYNC_FLAG_COPYDPOP (1 << 8)
230#define AX_SYNC_FLAG_COPYUPDATE (1 << 7)
231#define AX_SYNC_FLAG_COPYTSHIFT (1 << 6)
232#define AX_SYNC_FLAG_COPYITD (1 << 5)
233#define AX_SYNC_FLAG_COPYAXPBMIX (1 << 4)
234#define AX_SYNC_FLAG_COPYTYPE (1 << 3)
235#define AX_SYNC_FLAG_COPYSTATE (1 << 2)
236#define AX_SYNC_FLAG_COPYMXRCTRL (1 << 1)
237#define AX_SYNC_FLAG_COPYSELECT (1 << 0)
238
239#define AX_PRIORITY_STACKS 32
240
241// AX.c
242void AXInit(void);
243void AXQuit(void);
244
245// AXAlloc.c
246void AXFreeVoice(AXVPB* p);
247AXVPB* AXAcquireVoice(u32 priority, void (*callback)(void*), u32 userContext);
248void AXSetVoicePriority(AXVPB* p, u32 priority);
249
250// AXAux.c
251void AXRegisterAuxACallback(void (*callback)(void*, void*), void* context);
252void AXRegisterAuxBCallback(void (*callback)(void*, void*), void* context);
253
254// AXCL.c
255void AXSetMode(u32 mode);
257
258// AXOut.c
260extern DSPTaskInfo task;
261extern u16 ax_dram_image[8192];
262
263// AXProf.c
264void AXInitProfile(AXPROFILE* profile, u32 maxProfiles);
265u32 AXGetProfile(void);
266
267// AXVPB.c
269void AXSetVoiceState(AXVPB* p, u16 state);
270void AXSetVoiceType(AXVPB* p, u16 type);
273void AXSetVoiceItdTarget(AXVPB* p, u16 lShift, u16 rShift);
275void AXSetVoiceUpdateWrite(AXVPB* p, u16 param, u16 data);
281void AXSetVoiceLoop(AXVPB* p, u16 loop);
287void AXSetVoiceSrcRatio(AXVPB* p, float ratio);
292
293// DSPCode.c
294extern u16 axDspSlaveLength;
296
297#endif // _DOLPHIN_AX_H_
u8 pad[32 - 4]
Definition OSSerial.c:34
void AXSetVoiceAddr(AXVPB *p, AXPBADDR *addr)
AXVPB * AXAcquireVoice(u32 priority, void(*callback)(void *), u32 userContext)
Definition AXAlloc.c:162
#define AX_DSP_SLAVE_LENGTH
Definition ax.h:196
void AXSetVoiceUpdateIncrement(AXVPB *p)
u32 AXGetProfile(void)
Definition AXProf.c:29
void AXSetVoiceLoopAddr(AXVPB *p, u32 addr)
u16 ax_dram_image[8192]
void AXRegisterAuxBCallback(void(*callback)(void *, void *), void *context)
Definition AXAux.c:118
void AXQuit(void)
void AXSetVoiceFir(AXVPB *p, AXPBFIR *fir)
void AXSetMode(u32 mode)
void AXSetVoicePriority(AXVPB *p, u32 priority)
Definition AXAlloc.c:194
void AXSetVoiceAdpcmLoop(AXVPB *p, AXPBADPCMLOOP *adpcmloop)
void AXSetVoiceCurrentAddr(AXVPB *p, u32 addr)
void AXSetVoiceItdTarget(AXVPB *p, u16 lShift, u16 rShift)
void AXSetVoiceType(AXVPB *p, u16 type)
u16 axDspSlave[AX_DSP_SLAVE_LENGTH]
u32 AXGetMaxDspCycles(void)
void AXInit(void)
void AXSetVoiceUpdateWrite(AXVPB *p, u16 param, u16 data)
void AXSetVoiceMix(AXVPB *p, AXPBMIX *mix)
DSPTaskInfo task
void AXSetVoiceAdpcm(AXVPB *p, AXPBADPCM *adpcm)
u16 axDspSlaveLength
void AXSetVoiceSrc(AXVPB *p, AXPBSRC *src_)
void AXSetVoiceState(AXVPB *p, u16 state)
u32 AXGetDspCycles(void)
void AXSetVoiceDpop(AXVPB *p, AXPBDPOP *dpop)
AXPROFILE __AXLocalProfile
void AXSetVoiceVeDelta(AXVPB *p, s16 delta)
void AXInitProfile(AXPROFILE *profile, u32 maxProfiles)
Definition AXProf.c:21
void AXRegisterAuxACallback(void(*callback)(void *, void *), void *context)
Definition AXAux.c:112
void AXSetMaxDspCycles(u32 cycles)
void AXSetVoiceSrcRatio(AXVPB *p, float ratio)
void AXSetVoiceItdOn(AXVPB *p)
u32 AXGetMode(void)
void AXSetVoiceEndAddr(AXVPB *p, u32 addr)
void AXSetVoiceLoop(AXVPB *p, u16 loop)
void AXFreeVoice(AXVPB *p)
Definition AXAlloc.c:148
void AXSetVoiceSrcType(AXVPB *p, u32 type)
void AXSetVoiceVe(AXVPB *p, AXPBVE *ve)
static void callback(HSD_GObj *gobj)
Definition ftDk_SpecialLw.c:88
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
signed short s16
A signed 16-bit integer.
Definition platform.h:11
unsigned short u16
An unsigned 16-bit integer.
Definition platform.h:23
unsigned long long u64
An unsigned 64-bit integer.
Definition platform.h:29
Definition ax.h:68
u16 currentAddressHi
Definition ax.h:75
u16 loopAddressLo
Definition ax.h:72
u16 loopAddressHi
Definition ax.h:71
u16 currentAddressLo
Definition ax.h:76
u16 loopFlag
Definition ax.h:69
u16 endAddressHi
Definition ax.h:73
u16 format
Definition ax.h:70
u16 endAddressLo
Definition ax.h:74
Definition ax.h:94
u16 loop_yn2
Definition ax.h:97
u16 loop_yn1
Definition ax.h:96
u16 loop_pred_scale
Definition ax.h:95
Definition ax.h:79
u16 gain
Definition ax.h:81
u16 yn2
Definition ax.h:84
u16 pred_scale
Definition ax.h:82
u16 yn1
Definition ax.h:83
Definition ax.h:45
s16 aAuxAS
Definition ax.h:53
s16 aAuxBL
Definition ax.h:48
s16 aR
Definition ax.h:49
s16 aAuxAL
Definition ax.h:47
s16 aAuxBR
Definition ax.h:51
s16 aAuxAR
Definition ax.h:50
s16 aS
Definition ax.h:52
s16 aAuxBS
Definition ax.h:54
s16 aL
Definition ax.h:46
Definition ax.h:62
u16 coefsLo
Definition ax.h:65
u16 coefsHi
Definition ax.h:64
u16 numCoefs
Definition ax.h:63
Definition ax.h:142
Definition ax.h:29
u16 shiftL
Definition ax.h:33
u16 targetShiftR
Definition ax.h:36
u16 targetShiftL
Definition ax.h:35
u16 flag
Definition ax.h:30
u16 bufferLo
Definition ax.h:32
u16 shiftR
Definition ax.h:34
u16 bufferHi
Definition ax.h:31
Definition ax.h:8
u16 vL
Definition ax.h:9
u16 vAuxBS
Definition ax.h:21
u16 vDeltaL
Definition ax.h:10
u16 vAuxBL
Definition ax.h:17
u16 vAuxAR
Definition ax.h:15
u16 vAuxAS
Definition ax.h:25
u16 vS
Definition ax.h:23
u16 vDeltaAuxBL
Definition ax.h:18
u16 vR
Definition ax.h:11
u16 vAuxAL
Definition ax.h:13
u16 vDeltaR
Definition ax.h:12
u16 vAuxBR
Definition ax.h:19
u16 vDeltaAuxBS
Definition ax.h:22
u16 vDeltaS
Definition ax.h:24
u16 vDeltaAuxAS
Definition ax.h:26
u16 vDeltaAuxAL
Definition ax.h:14
u16 vDeltaAuxAR
Definition ax.h:16
u16 vDeltaAuxBR
Definition ax.h:20
Definition ax.h:87
u16 ratioLo
Definition ax.h:89
u16 currentAddressFrac
Definition ax.h:90
u16 ratioHi
Definition ax.h:88
Definition ax.h:39
u16 dataHi
Definition ax.h:41
u16 dataLo
Definition ax.h:42
Definition ax.h:146
Definition ax.h:57
u16 currentVolume
Definition ax.h:58
s16 currentDelta
Definition ax.h:59
Definition ax.h:100
u16 srcSelect
Definition ax.h:105
AXPBVE ve
Definition ax.h:114
u16 currHi
Definition ax.h:103
u16 mixerCtrl
Definition ax.h:107
u16 nextHi
Definition ax.h:101
AXPBMIX mix
Definition ax.h:110
AXPBADPCMLOOP adpcmLoop
Definition ax.h:119
AXPBITD itd
Definition ax.h:111
AXPBDPOP dpop
Definition ax.h:113
AXPBFIR fir
Definition ax.h:115
AXPBSRC src
Definition ax.h:118
AXPBUPDATE update
Definition ax.h:112
u16 coefSelect
Definition ax.h:106
u16 nextLo
Definition ax.h:102
u16 state
Definition ax.h:108
u16 type
Definition ax.h:109
u16 currLo
Definition ax.h:104
AXPBADDR addr
Definition ax.h:116
AXPBADPCM adpcm
Definition ax.h:117
Definition ax.h:180
u64 axFrameEnd
Definition ax.h:186
u64 userCallbackEnd
Definition ax.h:185
u64 axFrameStart
Definition ax.h:181
u32 axNumVoices
Definition ax.h:187
u64 auxProcessingStart
Definition ax.h:182
u64 userCallbackStart
Definition ax.h:184
u64 auxProcessingEnd
Definition ax.h:183
Definition ax.h:150
u16 dpopBSHi
Definition ax.h:175
u16 dpopRHi
Definition ax.h:154
u16 dpopARLo
Definition ax.h:164
u16 dpopLHi
Definition ax.h:151
u16 dpopARHi
Definition ax.h:163
u16 dpopSLo
Definition ax.h:158
s16 dpopBLDelta
Definition ax.h:171
u16 dpopBLLo
Definition ax.h:170
u16 dpopSHi
Definition ax.h:157
s16 dpopBSDelta
Definition ax.h:177
u16 dpopALLo
Definition ax.h:161
u16 dpopASHi
Definition ax.h:166
s16 dpopRDelta
Definition ax.h:156
s16 dpopARDelta
Definition ax.h:165
u16 dpopBLHi
Definition ax.h:169
s16 dpopSDelta
Definition ax.h:159
s16 dpopALDelta
Definition ax.h:162
u16 dpopBRHi
Definition ax.h:172
u16 dpopRLo
Definition ax.h:155
s16 dpopBRDelta
Definition ax.h:174
u16 dpopASLo
Definition ax.h:167
u16 dpopBSLo
Definition ax.h:176
u16 dpopALHi
Definition ax.h:160
u16 dpopBRLo
Definition ax.h:173
s16 dpopLDelta
Definition ax.h:153
s16 dpopASDelta
Definition ax.h:168
u16 dpopLLo
Definition ax.h:152
Definition ax.h:123
u16 * updateWrite
Definition ax.h:136
void * next
Definition ax.h:124
void * next1
Definition ax.h:126
u32 depop
Definition ax.h:132
u32 sync
Definition ax.h:131
AXPB pb
Definition ax.h:139
u32 updateTotal
Definition ax.h:135
void * itdBuffer
Definition ax.h:138
void * prev
Definition ax.h:125
u32 updateMS
Definition ax.h:133
u32 userContext
Definition ax.h:129
u32 priority
Definition ax.h:127
u32 index
Definition ax.h:130
u32 updateCounter
Definition ax.h:134
Definition ax.h:190
long * s
Definition ax.h:193
long * l
Definition ax.h:191
long * r
Definition ax.h:192
Definition dsp.h:15
Definition ground.c:2466