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