PS2SDK
PS2 Homebrew Libraries
libspu2.h
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
11 #ifndef _LIBSPU2_H
12 #define _LIBSPU2_H
13 
14 #define SPU_SUCCESS 0
15 #define SPU_INVALID_ARGS (-3)
16 #define SPU_DIAG (-2)
17 #define SPU_CHECK (-1)
18 #define SPU_OFF 0
19 #define SPU_ON 1
20 #define SPU_CLEAR 2
21 #define SPU_RESET 3
22 #define SPU_DONT_CARE 4
23 #define SPU_ALL 0
24 #define SPU_CDONLY 5
25 #define SPU_VOICEONLY 6
26 #define SPU_CONT 7
27 #define SPU_BIT 8
28 #define SPU_NULL 0
29 
30 #define SpuDiag SPU_DIAG
31 #define SpuCheck SPU_CHECK
32 #define SpuOff SPU_OFF
33 #define SpuOn SPU_ON
34 #define SpuClear SPU_CLEAR
35 #define SpuReset SPU_RESET
36 #define SpuDontCare SPU_DONT_CARE
37 #define SpuALL SPU_ALL
38 #define SpuCDOnly SPU_CDONLY
39 #define SpuVoiceOnly SPU_VOICEONLY
40 #define SpuCont SPU_CONT
41 #define SpuNull SPU_NULL
42 
43 #define SPU_OFF_ENV_ON 2
44 #define SPU_ON_ENV_OFF 3
45 
46 #define SpuOffEnvOn SPU_OFF_ENV_ON
47 #define SpuOnEnvOff SPU_ON_ENV_OFF
48 
49 #define SPU_ERROR (-1)
50 #define SpuError SPU_ERROR
51 
52 #define SPU_TRANSFER_BY_DMA 0
53 #define SPU_TRANSFER_BY_IO 1
54 
55 #define SpuTransferByDMA SPU_TRANSFER_BY_DMA
56 #define SpuTransferByIO SPU_TRANSFER_BY_IO
57 #define SpuTransByDMA SPU_TRANSFER_BY_DMA
58 #define SpuTransByIO SPU_TRANSFER_BY_IO
59 
60 #define SPU_TRANSFER_WAIT 1
61 #define SPU_TRANSFER_PEEK 0
62 #define SPU_TRANSFER_GLANCE SPU_TRANSFER_PEEK
63 
64 #define SPU_AUTODMA_ONESHOT 0
65 #define SPU_AUTODMA_LOOP 1
66 #define SPU_AUTODMA_START_ADDR (1 << 1)
67 #define SPU_AUTODMA_BIT4 (1 << 4)
68 #define SPU_AUTODMA_BIT6 (1 << 6)
69 #define SPU_AUTODMA_BIT7 (1 << 6)
70 
71 #define SPU_00CH ((u32)1 << 0)
72 #define SPU_01CH ((u32)1 << 1)
73 #define SPU_02CH ((u32)1 << 2)
74 #define SPU_03CH ((u32)1 << 3)
75 #define SPU_04CH ((u32)1 << 4)
76 #define SPU_05CH ((u32)1 << 5)
77 #define SPU_06CH ((u32)1 << 6)
78 #define SPU_07CH ((u32)1 << 7)
79 #define SPU_08CH ((u32)1 << 8)
80 #define SPU_09CH ((u32)1 << 9)
81 #define SPU_10CH ((u32)1 << 10)
82 #define SPU_11CH ((u32)1 << 11)
83 #define SPU_12CH ((u32)1 << 12)
84 #define SPU_13CH ((u32)1 << 13)
85 #define SPU_14CH ((u32)1 << 14)
86 #define SPU_15CH ((u32)1 << 15)
87 #define SPU_16CH ((u32)1 << 16)
88 #define SPU_17CH ((u32)1 << 17)
89 #define SPU_18CH ((u32)1 << 18)
90 #define SPU_19CH ((u32)1 << 19)
91 #define SPU_20CH ((u32)1 << 20)
92 #define SPU_21CH ((u32)1 << 21)
93 #define SPU_22CH ((u32)1 << 22)
94 #define SPU_23CH ((u32)1 << 23)
95 
96 #define SPU_0CH SPU_00CH
97 #define SPU_1CH SPU_01CH
98 #define SPU_2CH SPU_02CH
99 #define SPU_3CH SPU_03CH
100 #define SPU_4CH SPU_04CH
101 #define SPU_5CH SPU_05CH
102 #define SPU_6CH SPU_06CH
103 #define SPU_7CH SPU_07CH
104 #define SPU_8CH SPU_08CH
105 #define SPU_9CH SPU_09CH
106 
107 #define SPU_ALLCH \
108  (SPU_00CH | SPU_01CH | SPU_02CH | SPU_03CH | SPU_04CH | SPU_05CH | SPU_06CH | SPU_07CH | SPU_08CH | SPU_09CH \
109  | SPU_10CH | SPU_11CH | SPU_12CH | SPU_13CH | SPU_14CH | SPU_15CH | SPU_16CH | SPU_17CH | SPU_18CH | SPU_19CH \
110  | SPU_20CH | SPU_21CH | SPU_22CH | SPU_23CH | 0)
111 
112 #define SPU_KEYCH(x) ((u32)1 << (x))
113 #define SPU_VOICECH(...) SPU_VOICECH(__VA_ARGS__)
114 
115 #define SPU_VOICE_VOLL ((u32)1 << 0)
116 #define SPU_VOICE_VOLR ((u32)1 << 1)
117 #define SPU_VOICE_VOLMODEL ((u32)1 << 2)
118 #define SPU_VOICE_VOLMODER ((u32)1 << 3)
119 #define SPU_VOICE_PITCH ((u32)1 << 4)
120 #define SPU_VOICE_NOTE ((u32)1 << 5)
121 #define SPU_VOICE_SAMPLE_NOTE ((u32)1 << 6)
122 #define SPU_VOICE_WDSA ((u32)1 << 7)
123 #define SPU_VOICE_ADSR_AMODE ((u32)1 << 8)
124 #define SPU_VOICE_ADSR_SMODE ((u32)1 << 9)
125 #define SPU_VOICE_ADSR_RMODE ((u32)1 << 10)
126 #define SPU_VOICE_ADSR_AR ((u32)1 << 11)
127 #define SPU_VOICE_ADSR_DR ((u32)1 << 12)
128 #define SPU_VOICE_ADSR_SR ((u32)1 << 13)
129 #define SPU_VOICE_ADSR_RR ((u32)1 << 14)
130 #define SPU_VOICE_ADSR_SL ((u32)1 << 15)
131 #define SPU_VOICE_LSAX ((u32)1 << 16)
132 #define SPU_VOICE_ADSR_ADSR1 ((u32)1 << 17)
133 #define SPU_VOICE_ADSR_ADSR2 ((u32)1 << 18)
134 
135 enum libspu2_spu_voice_enum
136 {
137  SPU_VOICE_DIRECT = 0,
138  SPU_VOICE_LINEARIncN,
139  SPU_VOICE_LINEARIncR,
140  SPU_VOICE_LINEARDecN,
141  SPU_VOICE_LINEARDecR,
142  SPU_VOICE_EXPIncN,
143  SPU_VOICE_EXPIncR,
144  SPU_VOICE_EXPDec,
145  SPU_VOICE_EXPDecN = 7,
146  SPU_VOICE_EXPDecR = 7,
147 };
148 
149 #define SPU_DECODED_FIRSTHALF 0
150 #define SPU_DECODED_SECONDHALF 1
151 #define SPU_DECODE_FIRSTHALF SPU_DECODED_FIRSTHALF
152 #define SPU_DECODE_SECONDHALF SPU_DECODED_SECONDHALF
153 
154 #define SPU_COMMON_MVOLL (1 << 0)
155 #define SPU_COMMON_MVOLR (1 << 1)
156 #define SPU_COMMON_MVOLMODEL (1 << 2)
157 #define SPU_COMMON_MVOLMODER (1 << 3)
158 #define SPU_COMMON_RVOLL (1 << 4)
159 #define SPU_COMMON_RVOLR (1 << 5)
160 #define SPU_COMMON_CDVOLL (1 << 6)
161 #define SPU_COMMON_CDVOLR (1 << 7)
162 #define SPU_COMMON_CDREV (1 << 8)
163 #define SPU_COMMON_CDMIX (1 << 9)
164 #define SPU_COMMON_EXTVOLL (1 << 10)
165 #define SPU_COMMON_EXTVOLR (1 << 11)
166 #define SPU_COMMON_EXTREV (1 << 12)
167 #define SPU_COMMON_EXTMIX (1 << 13)
168 
169 #define SPU_REV_MODE (1 << 0)
170 #define SPU_REV_DEPTHL (1 << 1)
171 #define SPU_REV_DEPTHR (1 << 2)
172 #define SPU_REV_DELAYTIME (1 << 3)
173 #define SPU_REV_FEEDBACK (1 << 4)
174 
175 enum libspu2_spu_rev_type_enum
176 {
177  SPU_REV_MODE_CHECK = -1,
178  SPU_REV_MODE_OFF = 0,
179  SPU_REV_MODE_ROOM,
180  SPU_REV_MODE_STUDIO_A,
181  SPU_REV_MODE_STUDIO_B,
182  SPU_REV_MODE_STUDIO_C,
183  SPU_REV_MODE_HALL,
184  SPU_REV_MODE_SPACE,
185  SPU_REV_MODE_ECHO,
186  SPU_REV_MODE_DELAY,
187  SPU_REV_MODE_PIPE,
188  SPU_REV_MODE_MAX,
189 };
190 
191 #define SPU_REV_MODE_CLEAR_WA 0x100
192 
193 #define SPU_EVENT_KEY (1 << 0)
194 #define SPU_EVENT_PITCHLFO (1 << 1)
195 #define SPU_EVENT_NOISE (1 << 2)
196 #define SPU_EVENT_REVERB (1 << 3)
197 
198 enum libspu2_spu_spdif_out_enum
199 {
200  SPU_SPDIF_OUT_OFF = 0,
201  SPU_SPDIF_OUT_PCM,
202  SPU_SPDIF_OUT_BITSTREAM,
203  SPU_SPDIF_OUT_BYPASS,
204 };
205 
206 #define SPU_SPDIF_COPY_NORMAL 0x00
207 #define SPU_SPDIF_COPY_PROHIBIT 0x80
208 
209 #define SPU_SPDIF_MEDIA_CD 0x000
210 #define SPU_SPDIF_MEDIA_DVD 0x800
211 
212 #define SPU_DECODEDDATA_SIZE 0x200
213 #define SPU_DECODEDATA_SIZE SPU_DECODEDDATA_SIZE
214 
215 // sizeof(libspu2_malloc_t)
216 #define SPU_MALLOC_RECSIZ 8
217 
218 #define SPU_ENV_EVENT_QUEUEING (1 << 0)
219 
220 #define SPU_ST_NOT_AVAILABLE 0
221 #define SPU_ST_ACCEPT 1
222 #define SPU_ST_ERROR (-1)
223 #define SPU_ST_INVALID_ARGUMENT (-2)
224 #define SPU_ST_WRONG_STATUS (-3)
225 #define SPU_ST_STOP 2
226 #define SPU_ST_IDLE 3
227 #define SPU_ST_PREPARE 4
228 #define SPU_ST_START 5
229 #define SPU_ST_PLAY 6
230 #define SPU_ST_TRANSFER 7
231 #define SPU_ST_FINAL 8
232 
233 #define SPU_ST_VAG_HEADER_SIZE 0x30
234 
235 typedef struct SpuVolume_
236 {
237  s16 left;
238  s16 right;
239 } SpuVolume;
240 
241 typedef struct SpuVoiceAttr_
242 {
243  unsigned int voice;
244  unsigned int mask;
245  SpuVolume volume;
246  SpuVolume volmode;
247  SpuVolume volumex;
248  u16 pitch;
249  u16 note;
250  u16 sample_note;
251  s16 envx;
252  unsigned int addr;
253  unsigned int loop_addr;
254  int a_mode;
255  int s_mode;
256  int r_mode;
257  u16 ar;
258  u16 dr;
259  u16 sr;
260  u16 rr;
261  u16 sl;
262  u16 adsr1;
263  u16 adsr2;
264 } SpuVoiceAttr;
265 
266 typedef struct SpuLVoiceAttr_
267 {
268  s16 voiceNum;
269  s16 pad;
270  SpuVoiceAttr attr;
271 } SpuLVoiceAttr;
272 
273 typedef struct SpuReverbAttr_
274 {
275  unsigned int mask;
276  int mode;
277  SpuVolume depth;
278  int delay;
279  int feedback;
280 } SpuReverbAttr;
281 
282 typedef struct SpuDecodedData_
283 {
284  s16 cd_left[SPU_DECODEDDATA_SIZE];
285  s16 cd_right[SPU_DECODEDDATA_SIZE];
286  s16 voice1[SPU_DECODEDDATA_SIZE];
287  s16 voice3[SPU_DECODEDDATA_SIZE];
289 
290 typedef struct SpuExtAttr_
291 {
292  SpuVolume volume;
293  int reverb;
294  int mix;
295 } SpuExtAttr;
296 
297 typedef struct SpuCommonAttr_
298 {
299  unsigned int mask;
300  SpuVolume mvol;
301  SpuVolume mvolmode;
302  SpuVolume mvolx;
303  SpuExtAttr cd;
304  SpuExtAttr ext;
305 } SpuCommonAttr;
306 
307 typedef void (*SpuIRQCallbackProc)(void);
308 typedef void (*SpuTransferCallbackProc)(void);
309 
310 typedef struct SpuEnv_
311 {
312  unsigned int mask;
313  unsigned int queueing;
314 } SpuEnv;
315 
316 typedef struct SpuStVoiceAttr_
317 {
318  char status;
319  char pad1;
320  char pad2;
321  char pad3;
322  int last_size;
323  unsigned int buf_addr;
324  unsigned int data_addr;
326 
327 typedef struct SpuStEnv_
328 {
329  int size;
330  int low_priority;
331  SpuStVoiceAttr voice[24];
332 } SpuStEnv;
333 
334 typedef void (*SpuStCallbackProc)(unsigned int voice_bit, int status);
335 
336 extern void SpuSetDigitalOut(int mode);
337 #define SpuSetDegitalOut(...) SpuSetDigitalOut(__VA_ARGS__)
338 extern void SpuStart(void);
339 extern void SpuInit(void);
340 extern unsigned int SpuSetCore(unsigned int which_core);
341 extern unsigned int SpuGetCore(void);
342 extern void SpuSetReverbEndAddr(unsigned int eea);
343 extern unsigned int SpuGetReverbEndAddr(void);
344 extern void SpuInitHot(void);
345 extern void SpuQuit(void);
346 extern int SpuSetMute(int on_off);
347 extern int SpuGetMute(void);
348 extern int SpuInitMalloc(int num, char *top);
349 extern int SpuMalloc(int size);
350 extern int SpuMallocWithStartAddr(unsigned int addr, int size);
351 extern void SpuFree(unsigned int addr);
352 extern void SpuSetEnv(const SpuEnv *env);
353 extern unsigned int SpuFlush(unsigned int ev);
354 extern unsigned int SpuSetNoiseVoice(int on_off, unsigned int voice_bit);
355 extern unsigned int SpuGetNoiseVoice(void);
356 extern int SpuSetNoiseClock(int n_clock);
357 extern int SpuGetNoiseClock(void);
358 extern int SpuSetReverb(int on_off);
359 extern int SpuGetReverb(void);
360 extern int SpuSetReverbModeParam(SpuReverbAttr *attr);
361 extern void SpuGetReverbModeParam(SpuReverbAttr *attr);
362 extern int SpuReserveReverbWorkArea(int on_off);
363 extern int SpuIsReverbWorkAreaReserved(int on_off);
364 extern int SpuSetReverbDepth(SpuReverbAttr *attr);
365 extern unsigned int SpuSetReverbVoice(int on_off, unsigned int voice_bit);
366 extern unsigned int SpuGetReverbVoice(void);
367 extern int SpuClearReverbWorkArea(int mode);
368 extern int SpuReadDecodedData(SpuDecodedData *d_data, int flag);
369 extern int SpuSetIRQ(int on_off);
370 extern int SpuGetIRQ(void);
371 extern unsigned int SpuSetIRQAddr(unsigned int addr);
372 extern unsigned int SpuGetIRQAddr(void);
373 extern unsigned int SpuGetNextAddr(int v_num);
374 extern SpuIRQCallbackProc SpuSetIRQCallback(SpuIRQCallbackProc func);
375 extern void SpuSetKey(int on_off, unsigned int voice_bit);
376 extern int SpuGetKeyStatus(unsigned int voice_bit);
377 extern void SpuSetKeyOnWithAttr(SpuVoiceAttr *attr);
378 extern void SpuGetVoiceEnvelopeAttr(int v_num, int *key_stat, s16 *envx);
379 extern unsigned int SpuRead(u8 *addr, unsigned int size);
380 extern unsigned int SpuWrite(u8 *addr, unsigned int size);
381 extern unsigned int SpuAutoDMAWrite(u8 *addr, unsigned int size, unsigned int mode, ...);
382 extern int SpuAutoDMAStop(void);
383 extern int SpuAutoDMAGetStatus(void);
384 extern unsigned int SpuWrite0(unsigned int size);
385 extern unsigned int SpuSetTransferStartAddr(unsigned int addr);
386 extern unsigned int SpuGetTransferStartAddr(void);
387 extern int SpuSetTransferMode(int mode);
388 extern int SpuGetTransferMode(void);
389 extern unsigned int SpuWritePartly(u8 *addr, unsigned int size);
390 extern int SpuIsTransferCompleted(int flag);
391 extern SpuTransferCallbackProc SpuSetTransferCallback(SpuTransferCallbackProc func);
392 extern SpuTransferCallbackProc SpuAutoDMASetCallback(SpuTransferCallbackProc func);
393 extern unsigned int SpuSetPitchLFOVoice(int on_off, unsigned int voice_bit);
394 extern unsigned int SpuGetPitchLFOVoice(void);
395 extern void SpuSetCommonAttr(SpuCommonAttr *attr);
396 extern void SpuGetCommonAttr(SpuCommonAttr *attr);
397 extern int SpuRGetAllKeysStatus(int min_, int max_, char *status);
398 extern void SpuGetAllKeysStatus(char *status);
399 extern int SpuStTransfer(int flag, unsigned int voice_bit);
400 extern SpuStEnv *SpuStInit(int mode);
401 extern int SpuStQuit(void);
402 extern int SpuStGetStatus(void);
403 extern unsigned int SpuStGetVoiceStatus(void);
404 extern SpuStCallbackProc SpuStSetPreparationFinishedCallback(SpuStCallbackProc func);
405 extern SpuStCallbackProc SpuStSetTransferFinishedCallback(SpuStCallbackProc func);
406 extern SpuStCallbackProc SpuStSetStreamFinishedCallback(SpuStCallbackProc func);
407 extern unsigned int SpuStSetCore(unsigned int core);
408 extern void SpuSetVoiceVolume(int v_num, s16 voll, s16 volr);
409 extern void SpuSetVoiceVolumeAttr(int v_num, s16 voll, s16 volr, s16 voll_mode, s16 volr_mode);
410 extern void SpuSetVoicePitch(int v_num, u16 pitch);
411 extern void SpuSetVoiceNote(int v_num, u16 note);
412 extern void SpuSetVoiceSampleNote(int v_num, u16 sample_note);
413 extern void SpuSetVoiceStartAddr(int v_num, unsigned int start_addr);
414 extern void SpuSetVoiceLoopStartAddr(int v_num, unsigned int lsa);
415 extern void SpuSetVoiceAR(int v_num, u16 ar);
416 extern void SpuSetVoiceDR(int v_num, u16 dr);
417 extern void SpuSetVoiceSR(int v_num, u16 sr);
418 extern void SpuSetVoiceRR(int v_num, u16 rr);
419 extern void SpuSetVoiceSL(int v_num, u16 sl);
420 extern void SpuSetVoiceARAttr(int v_num, u16 ar, int ar_mode);
421 extern void SpuSetVoiceSRAttr(int v_num, u16 sr, int sr_mode);
422 extern void SpuSetVoiceRRAttr(int v_num, u16 rr, int rr_mode);
423 extern void SpuSetVoiceADSR(int v_num, u16 ar, u16 dr, u16 sr, u16 rr, u16 sl);
424 extern void
425 SpuSetVoiceADSRAttr(int v_num, u16 ar, u16 dr, u16 sr, u16 rr, u16 sl, int ar_mode, int sr_mode, int rr_mode);
426 extern void SpuSetVoiceAttr(SpuVoiceAttr *arg);
427 extern int SpuRSetVoiceAttr(int min_, int max_, SpuVoiceAttr *arg);
428 extern void SpuNSetVoiceAttr(int v_num, SpuVoiceAttr *arg);
429 extern void SpuLSetVoiceAttr(int num, SpuLVoiceAttr *arg_list);
430 extern void SpuGetVoiceVolume(int v_num, s16 *voll, s16 *volr);
431 extern void SpuGetVoiceVolumeAttr(int v_num, s16 *voll, s16 *volr, s16 *voll_mode, s16 *volr_mode);
432 extern void SpuGetVoiceVolumeX(int v_num, s16 *voll_x, s16 *volr_x);
433 extern void SpuGetVoicePitch(int v_num, u16 *pitch);
434 extern void SpuGetVoiceNote(int v_num, u16 *note);
435 extern void SpuGetVoiceSampleNote(int v_num, u16 *sample_note);
436 extern void SpuGetVoiceEnvelope(int v_num, s16 *envx);
437 extern void SpuGetVoiceStartAddr(int v_num, unsigned int *start_addr);
438 extern void SpuGetVoiceLoopStartAddr(int v_num, unsigned int *loop_start_addr);
439 extern void SpuGetVoiceAR(int v_num, u16 *ar);
440 extern void SpuGetVoiceDR(int v_num, u16 *dr);
441 extern void SpuGetVoiceSR(int v_num, u16 *sr);
442 extern void SpuGetVoiceRR(int v_num, u16 *rr);
443 extern void SpuGetVoiceSL(int v_num, u16 *sl);
444 extern void SpuGetVoiceARAttr(int v_num, u16 *ar, int *ar_mode);
445 extern void SpuGetVoiceSRAttr(int v_num, u16 *sr, int *sr_mode);
446 extern void SpuGetVoiceRRAttr(int v_num, u16 *rr, int *rr_mode);
447 extern void SpuGetVoiceADSR(int v_num, u16 *ar, u16 *dr, u16 *sr, u16 *rr, u16 *sl);
448 extern void
449 SpuGetVoiceADSRAttr(int v_num, u16 *ar, u16 *dr, u16 *sr, u16 *rr, u16 *sl, int *ar_mode, int *sr_mode, int *rr_mode);
450 extern void SpuSetCommonMasterVolume(s16 mvol_left, s16 mvol_right);
451 extern void SpuSetCommonMasterVolumeAttr(s16 mvol_left, s16 mvol_right, s16 mvolmode_left, s16 mvolmode_right);
452 extern void SpuSetCommonCDVolume(s16 cd_left, s16 cd_right);
453 extern void SpuSetCommonCDReverb(int cd_reverb);
454 extern void SpuSetCommonCDMix(int cd_mix);
455 extern void SpuGetCommonMasterVolume(s16 *mvol_left, s16 *mvol_right);
456 extern void SpuGetCommonMasterVolumeX(s16 *mvolx_left, s16 *mvolx_right);
457 extern void SpuGetCommonMasterVolumeAttr(s16 *mvol_left, s16 *mvol_right, s16 *mvolmode_left, s16 *mvolmode_right);
458 extern void SpuGetCommonCDVolume(s16 *cd_left, s16 *cd_right);
459 extern void SpuGetCommonCDReverb(int *cd_reverb);
460 extern void SpuGetCommonCDMix(int *cd_mix);
461 extern int SpuSetReverbModeType(int mode);
462 extern void SpuSetReverbModeDepth(s16 depth_left, s16 depth_right);
463 extern void SpuSetReverbModeDelayTime(int delay);
464 extern void SpuSetReverbModeFeedback(int feedback);
465 extern void SpuGetReverbModeType(int *mode);
466 extern void SpuGetReverbModeDepth(s16 *depth_left, s16 *depth_right);
467 extern void SpuGetReverbModeDelayTime(int *delay);
468 extern void SpuGetReverbModeFeedback(int *feedback);
469 extern void SpuGetVoiceAttr(SpuVoiceAttr *arg);
470 extern void SpuNGetVoiceAttr(int v_num, SpuVoiceAttr *arg);
471 extern void SpuSetESA(int rev_addr);
472 extern void SpuSetAutoDMAAttr(s16 vol_l, s16 vol_r, s16 dry_on, s16 effect_on);
473 extern void SpuSetSerialInAttr(s16 dry_on, s16 effect_on);
474 
475 #endif
SpuStVoiceAttr_
Definition: libspu2.h:316
SpuCommonAttr_
Definition: libspu2.h:297
SpuStEnv_
Definition: libspu2.h:327
SpuLVoiceAttr_
Definition: libspu2.h:266
SpuVolume_
Definition: libspu2.h:235
SpuExtAttr_
Definition: libspu2.h:290
SpuEnv_
Definition: libspu2.h:310
SpuReverbAttr_
Definition: libspu2.h:273
SpuDecodedData_
Definition: libspu2.h:282
SpuVoiceAttr_
Definition: libspu2.h:241