REDRIVER2/src_rebuild/PsyX/LIBSPU.H
Ilya Shurumov 0bc848da2c - rename EMULATOR to Psy-X
- move it's makefile
2020-11-19 01:14:45 +06:00

553 lines
20 KiB
C

#ifndef LIBSPU_H
#define LIBSPU_H
/*****************************************************************
* -*- c -*-
* $RCSfile: libspu.h,v $
*
* Copyright (c) 1993, 1994, 1995, 1996 Sony Computer Entertainment Inc.
* All Rights Reserved.
*
* This file is part of ``PlayStation(R)'' Programmer Tool /
* Runtime Library.
*
* R & D Division, Sony Computer Entertainment Inc.
*
* $Id: libspu.h,v 1.80 1997/06/24 11:14:04 kaol Exp $
*
*****************************************************************/
/*
* $PSLibId: Run-time Library Release 4.6$
*/
/* ----------------------------------------------------------------
* CONSTANT
* ---------------------------------------------------------------- */
#define SPU_SUCCESS 0
#define SPU_INVALID_ARGS (-3)
#define SPU_DIAG (-2)
#define SPU_CHECK (-1)
#define SPU_OFF 0
#define SPU_ON 1
#define SPU_CLEAR 2
#define SPU_RESET 3
#define SPU_DONT_CARE 4
#define SPU_ALL 0
#define SPU_CDONLY 5
#define SPU_VOICEONLY 6
#define SPU_CONT 7
#define SPU_BIT 8
#define SPU_NULL 0
/* Macros below will be obsoleted. */
#define SpuDiag SPU_DIAG
#define SpuCheck SPU_CHECK
#define SpuOff SPU_OFF
#define SpuOn SPU_ON
#define SpuClear SPU_CLEAR
#define SpuReset SPU_RESET
#define SpuDontCare SPU_DONT_CARE
#define SpuALL SPU_ALL
#define SpuCDOnly SPU_CDONLY
#define SpuVoiceOnly SPU_VOICEONLY
#define SpuCont SPU_CONT
#define SpuNull SPU_NULL
#define SPU_OFF_ENV_ON 2
#define SPU_ON_ENV_OFF 3
/* Macros below will be obsoleted. */
#define SpuOffEnvOn SPU_OFF_ENV_ON
#define SpuOnEnvOff SPU_ON_ENV_OFF
#define SPU_ERROR (-1)
/* Macros below will be obsoleted. */
#define SpuError SPU_ERROR
#define SPU_TRANSFER_BY_DMA 0L
#define SPU_TRANSFER_BY_IO 1L
/* Macros below will be obsoleted. */
#define SpuTransferByDMA SPU_TRANSFER_BY_DMA
#define SpuTransferByIO SPU_TRANSFER_BY_IO
#define SpuTransByDMA SpuTransferByDMA
#define SpuTransByIO SpuTransferByIO
#define SPU_TRANSFER_WAIT 1
#define SPU_TRANSFER_PEEK 0
#define SPU_TRANSFER_GLANCE SPU_TRANSFER_PEEK
/*
* Voice designate
*/
#ifndef __SPU_VOICE
#define __SPU_VOICE
#define SPU_00CH (0x1L<< 0)
#define SPU_01CH (0x1L<< 1)
#define SPU_02CH (0x1L<< 2)
#define SPU_03CH (0x1L<< 3)
#define SPU_04CH (0x1L<< 4)
#define SPU_05CH (0x1L<< 5)
#define SPU_06CH (0x1L<< 6)
#define SPU_07CH (0x1L<< 7)
#define SPU_08CH (0x1L<< 8)
#define SPU_09CH (0x1L<< 9)
#define SPU_10CH (0x1L<<10)
#define SPU_11CH (0x1L<<11)
#define SPU_12CH (0x1L<<12)
#define SPU_13CH (0x1L<<13)
#define SPU_14CH (0x1L<<14)
#define SPU_15CH (0x1L<<15)
#define SPU_16CH (0x1L<<16)
#define SPU_17CH (0x1L<<17)
#define SPU_18CH (0x1L<<18)
#define SPU_19CH (0x1L<<19)
#define SPU_20CH (0x1L<<20)
#define SPU_21CH (0x1L<<21)
#define SPU_22CH (0x1L<<22)
#define SPU_23CH (0x1L<<23)
#define SPU_0CH SPU_00CH
#define SPU_1CH SPU_01CH
#define SPU_2CH SPU_02CH
#define SPU_3CH SPU_03CH
#define SPU_4CH SPU_04CH
#define SPU_5CH SPU_05CH
#define SPU_6CH SPU_06CH
#define SPU_7CH SPU_07CH
#define SPU_8CH SPU_08CH
#define SPU_9CH SPU_09CH
#define SPU_ALLCH (SPU_00CH | SPU_01CH | SPU_02CH | SPU_03CH | SPU_04CH | \
SPU_05CH | SPU_06CH | SPU_07CH | SPU_08CH | SPU_09CH | \
SPU_10CH | SPU_11CH | SPU_12CH | SPU_13CH | SPU_14CH | \
SPU_15CH | SPU_16CH | SPU_17CH | SPU_18CH | SPU_19CH | \
SPU_20CH | SPU_21CH | SPU_22CH | SPU_23CH)
#define SPU_KEYCH(x) (0x1L<<(x))
#define SPU_VOICECH(x) SPU_KEYCH(x)
#endif /* __SPU_VOICE */
/* for Voice setting */
#define SPU_VOICE_VOLL (0x01 << 0) /* volume (left) */
#define SPU_VOICE_VOLR (0x01 << 1) /* volume (right) */
#define SPU_VOICE_VOLMODEL (0x01 << 2) /* volume mode (left) */
#define SPU_VOICE_VOLMODER (0x01 << 3) /* volume mode (right) */
#define SPU_VOICE_PITCH (0x01 << 4) /* tone (pitch setting) */
#define SPU_VOICE_NOTE (0x01 << 5) /* tone (note setting) */
#define SPU_VOICE_SAMPLE_NOTE (0x01 << 6) /* waveform data sample note */
#define SPU_VOICE_WDSA (0x01 << 7) /* waveform data start address */
#define SPU_VOICE_ADSR_AMODE (0x01 << 8) /* ADSR Attack rate mode */
#define SPU_VOICE_ADSR_SMODE (0x01 << 9) /* ADSR Sustain rate mode */
#define SPU_VOICE_ADSR_RMODE (0x01 << 10) /* ADSR Release rate mode */
#define SPU_VOICE_ADSR_AR (0x01 << 11) /* ADSR Attack rate */
#define SPU_VOICE_ADSR_DR (0x01 << 12) /* ADSR Decay rate */
#define SPU_VOICE_ADSR_SR (0x01 << 13) /* ADSR Sustain rate */
#define SPU_VOICE_ADSR_RR (0x01 << 14) /* ADSR Release rate */
#define SPU_VOICE_ADSR_SL (0x01 << 15) /* ADSR Sustain level */
#define SPU_VOICE_LSAX (0x01 << 16) /* start address for loop */
#define SPU_VOICE_ADSR_ADSR1 (0x01 << 17) /* ADSR adsr1 for `VagAtr' */
#define SPU_VOICE_ADSR_ADSR2 (0x01 << 18) /* ADSR adsr2 for `VagAtr' */
#define SPU_VOICE_DIRECT16 0
#define SPU_VOICE_LINEARIncN 1
#define SPU_VOICE_LINEARIncR 2
#define SPU_VOICE_LINEARDecN 3
#define SPU_VOICE_LINEARDecR 4
#define SPU_VOICE_EXPIncN 5
#define SPU_VOICE_EXPIncR 6
#define SPU_VOICE_EXPDec 7
#define SPU_VOICE_EXPDecN SPU_VOICE_EXPDec
#define SPU_VOICE_EXPDecR SPU_VOICE_EXPDec
#define SPU_DECODED_FIRSTHALF 0
#define SPU_DECODED_SECONDHALF 1
#define SPU_DECODE_FIRSTHALF SPU_DECODED_FIRSTHALF
#define SPU_DECODE_SECONDHALF SPU_DECODED_SECONDHALF
#define SPU_COMMON_MVOLL (0x01 << 0) /* master volume (left) */
#define SPU_COMMON_MVOLR (0x01 << 1) /* master volume (right) */
#define SPU_COMMON_MVOLMODEL (0x01 << 2) /* master volume mode (left) */
#define SPU_COMMON_MVOLMODER (0x01 << 3) /* master volume mode (right) */
#define SPU_COMMON_RVOLL (0x01 << 4) /* reverb volume (left) */
#define SPU_COMMON_RVOLR (0x01 << 5) /* reverb volume (right) */
#define SPU_COMMON_CDVOLL (0x01 << 6) /* CD input volume (left) */
#define SPU_COMMON_CDVOLR (0x01 << 7) /* CD input volume (right) */
#define SPU_COMMON_CDREV (0x01 << 8) /* CD input reverb on/off */
#define SPU_COMMON_CDMIX (0x01 << 9) /* CD input on/off */
#define SPU_COMMON_EXTVOLL (0x01 << 10) /* external digital input volume (left) */
#define SPU_COMMON_EXTVOLR (0x01 << 11) /* external digital input volume (right) */
#define SPU_COMMON_EXTREV (0x01 << 12) /* external digital input reverb on/off */
#define SPU_COMMON_EXTMIX (0x01 << 13) /* external digital input on/off */
/* for Reverb setting */
#define SPU_REV_MODE (0x01 << 0) /* mode setting */
#define SPU_REV_DEPTHL (0x01 << 1) /* reverb depth (left) */
#define SPU_REV_DEPTHR (0x01 << 2) /* reverb depth (right) */
#define SPU_REV_DELAYTIME (0x01 << 3) /* Delay Time (ECHO, DELAY only) */
#define SPU_REV_FEEDBACK (0x01 << 4) /* Feedback (ECHO only) */
#define SPU_REV_MODE_CHECK (-1)
#define SPU_REV_MODE_OFF 0
#define SPU_REV_MODE_ROOM 1
#define SPU_REV_MODE_STUDIO_A 2
#define SPU_REV_MODE_STUDIO_B 3
#define SPU_REV_MODE_STUDIO_C 4
#define SPU_REV_MODE_HALL 5
#define SPU_REV_MODE_SPACE 6
#define SPU_REV_MODE_ECHO 7
#define SPU_REV_MODE_DELAY 8
#define SPU_REV_MODE_PIPE 9
#define SPU_REV_MODE_MAX 10
#define SPU_REV_MODE_CLEAR_WA 0x100
/* ----------------------------------------------------------------
* Event flushing
* ---------------------------------------------------------------- */
#define SPU_EVENT_KEY (0x01 << 0)
#define SPU_EVENT_PITCHLFO (0x01 << 1)
#define SPU_EVENT_NOISE (0x01 << 2)
#define SPU_EVENT_REVERB (0x01 << 3)
#define SPU_EVENT_ALL 0
/* ----------------------------------------------------------------
* Structure
* ---------------------------------------------------------------- */
typedef struct {
short left; /* Lch */
short right; /* Rch */
} SpuVolume;
typedef struct {
unsigned long voice; /* set voice:
SpuSetVoiceAttr: each voice is a bit array
SpuGetVoiceAttr: voice is a bit value */
unsigned long mask; /* settings attribute bit (invalid with Get) */
SpuVolume volume; /* volume */
SpuVolume volmode; /* volume mode */
SpuVolume volumex; /* current volume (invalid with Set) */
unsigned short pitch; /* tone (pitch setting) */
unsigned short note; /* tone (note setting) */
unsigned short sample_note; /* tone (note setting) */
short envx; /* current envelope value (invalid with Set) */
unsigned long addr; /* waveform data start address */
unsigned long loop_addr; /* loop start address */
long a_mode; /* Attack rate mode */
long s_mode; /* Sustain rate mode */
long r_mode; /* Release rate mode */
unsigned short ar; /* Attack rate */
unsigned short dr; /* Decay rate */
unsigned short sr; /* Sustain rate */
unsigned short rr; /* Release rate */
unsigned short sl; /* Sustain level */
unsigned short adsr1; /* adsr1 for `VagAtr' */
unsigned short adsr2; /* adsr2 for `VagAtr' */
} SpuVoiceAttr;
typedef struct {
short voiceNum; /* voice number */
short pad; /* padding */
SpuVoiceAttr attr; /* voice attribute */
} SpuLVoiceAttr;
typedef struct {
unsigned long mask; /* settings mask */
long mode; /* reverb mode */
SpuVolume depth; /* reverb depth */
long delay; /* Delay Time (ECHO, DELAY only) */
long feedback; /* Feedback (ECHO only) */
} SpuReverbAttr;
#define SPU_DECODEDDATA_SIZE 0x200
#define SPU_DECODEDATA_SIZE SPU_DECODEDDATA_SIZE
typedef struct {
short cd_left [SPU_DECODEDDATA_SIZE];
short cd_right [SPU_DECODEDDATA_SIZE];
short voice1 [SPU_DECODEDDATA_SIZE];
short voice3 [SPU_DECODEDDATA_SIZE];
} SpuDecodedData;
typedef SpuDecodedData SpuDecodeData;
typedef struct {
SpuVolume volume; /* volume */
long reverb; /* reverb on/off */
long mix; /* mixing on/off */
} SpuExtAttr;
typedef struct {
unsigned long mask; /* settings mask */
SpuVolume mvol; /* master volume */
SpuVolume mvolmode; /* master volume mode */
SpuVolume mvolx; /* current master volume */
SpuExtAttr cd; /* CD input attributes */
SpuExtAttr ext; /* external digital input attributes */
} SpuCommonAttr;
#ifndef __SPU_IRQCALLBACK_PROC
#define __SPU_IRQCALLBACK_PROC
typedef void (*SpuIRQCallbackProc)(void);
#endif /* __SPU_IRQCALLBACK_PROC */
#ifndef __SPU_TRANSFERCALLBACK_PROC
#define __SPU_TRANSFERCALLBACK_PROC
typedef void (*SpuTransferCallbackProc)(void);
#endif /* __SPU_TRANSFERCALLBACK_PROC */
/* ----------------------------------------------------------------
* for SPU Malloc (used in SpuInitMalloc())
* ---------------------------------------------------------------- */
#define SPU_MALLOC_RECSIZ 8
/* ----------------------------------------------------------------
* User specifiable global environment
* ---------------------------------------------------------------- */
typedef struct {
unsigned long mask;
unsigned long queueing;
} SpuEnv;
#define SPU_ENV_EVENT_QUEUEING (0x01 << 0)
/* ----------------------------------------------------------------
* prototype declaration
* ---------------------------------------------------------------- */
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
extern void SpuInit (void);
extern void SpuInitHot (void);
extern void SpuStart (void);
extern void SpuQuit (void);
extern long SpuSetMute (long on_off);
extern long SpuGetMute (void);
extern void SpuSetEnv (SpuEnv *env);
extern long SpuSetNoiseClock (long n_clock);
extern long SpuGetNoiseClock (void);
extern unsigned long SpuSetNoiseVoice (long on_off, unsigned long voice_bit);
extern unsigned long SpuGetNoiseVoice (void);
extern long SpuSetReverb (long on_off);
extern long SpuGetReverb (void);
extern long SpuSetReverbModeParam (SpuReverbAttr *attr);
extern void SpuGetReverbModeParam (SpuReverbAttr *attr);
extern long SpuSetReverbDepth (SpuReverbAttr *attr);
extern long SpuReserveReverbWorkArea (long on_off);
extern long SpuIsReverbWorkAreaReserved (long on_off);
extern unsigned long SpuSetReverbVoice (long on_off, unsigned long voice_bit);
extern unsigned long SpuGetReverbVoice (void);
extern long SpuClearReverbWorkArea (long mode);
extern unsigned long SpuWrite (unsigned char *addr, unsigned long size);
extern unsigned long SpuWrite0 (unsigned long size);
extern unsigned long SpuRead (unsigned char *addr, unsigned long size);
extern long SpuSetTransferMode (long mode);
#define SpuSetTransMode(mode) SpuSetTransferMode((mode))
extern long SpuGetTransferMode (void);
#define SpuGetTransMode() SpuGetTransferMode()
extern unsigned long SpuSetTransferStartAddr (unsigned long addr);
#define SpuSetTransStartAddr(addr) SpuSetTransferStartAddr((addr))
extern unsigned long SpuGetTransferStartAddr (void);
#define SpuGetTransStartAddr() SpuGetTransferStartAddr()
extern unsigned long SpuWritePartly (unsigned char *addr, unsigned long size);
extern long SpuIsTransferCompleted (long flag);
extern SpuTransferCallbackProc SpuSetTransferCallback (SpuTransferCallbackProc func);
extern long SpuReadDecodedData (SpuDecodedData *d_data, long flag);
#define SpuReadDecodeData(d_data,flag) SpuReadDecodedData((d_data), (flag))
extern long SpuSetIRQ (long on_off);
extern long SpuGetIRQ (void);
extern unsigned long SpuSetIRQAddr (unsigned long);
extern unsigned long SpuGetIRQAddr (void);
extern SpuIRQCallbackProc SpuSetIRQCallback (SpuIRQCallbackProc);
extern void SpuSetVoiceAttr (SpuVoiceAttr *arg);
extern void SpuGetVoiceAttr (SpuVoiceAttr *arg);
extern void SpuSetKey (long on_off, unsigned long voice_bit);
extern void SpuSetKeyOnWithAttr (SpuVoiceAttr *attr);
extern long SpuGetKeyStatus (unsigned long voice_bit);
extern void SpuGetAllKeysStatus (char *status);
extern unsigned long SpuFlush (unsigned long ev);
extern unsigned long SpuSetPitchLFOVoice (long on_off, unsigned long voice_bit);
extern unsigned long SpuGetPitchLFOVoice (void);
extern void SpuSetCommonAttr (SpuCommonAttr *attr);
extern void SpuGetCommonAttr (SpuCommonAttr *attr);
extern long SpuInitMalloc (long num, char *top);
extern long SpuMalloc (long size);
extern long SpuMallocWithStartAddr (unsigned long addr, long size);
extern void SpuFree (unsigned long addr);
extern long SpuRGetAllKeysStatus (long min_, long max_, char *status);
extern long SpuRSetVoiceAttr (long min_, long max_, SpuVoiceAttr *arg);
extern void SpuNSetVoiceAttr (int vNum, SpuVoiceAttr *arg);
extern void SpuNGetVoiceAttr (int vNum, SpuVoiceAttr *arg);
extern void SpuLSetVoiceAttr (int num, SpuLVoiceAttr *argList);
extern void SpuSetVoiceVolume (int vNum, short volL, short volR);
extern void SpuSetVoiceVolumeAttr (int vNum, short volL, short volR,
short volModeL, short volModeR);
extern void SpuSetVoicePitch (int vNum, unsigned short pitch);
extern void SpuSetVoiceNote (int vNum, unsigned short note);
extern void SpuSetVoiceSampleNote (int vNum, unsigned short sampleNote);
extern void SpuSetVoiceStartAddr (int vNum, unsigned long startAddr);
extern void SpuSetVoiceLoopStartAddr (int vNum, unsigned long lsa);
extern void SpuSetVoiceAR (int vNum, unsigned short AR);
extern void SpuSetVoiceDR (int vNum, unsigned short DR);
extern void SpuSetVoiceSR (int vNum, unsigned short SR);
extern void SpuSetVoiceRR (int vNum, unsigned short RR);
extern void SpuSetVoiceSL (int vNum, unsigned short SL);
extern void SpuSetVoiceARAttr (int vNum, unsigned short AR, long ARmode);
extern void SpuSetVoiceSRAttr (int vNum, unsigned short SR, long SRmode);
extern void SpuSetVoiceRRAttr (int vNum, unsigned short RR, long RRmode);
extern void SpuSetVoiceADSR (int vNum, unsigned short AR, unsigned short DR,
unsigned short SR, unsigned short RR,
unsigned short SL);
extern void SpuSetVoiceADSRAttr (int vNum,
unsigned short AR, unsigned short DR,
unsigned short SR, unsigned short RR,
unsigned short SL,
long ARmode, long SRmode, long RRmode);
extern void SpuGetVoiceVolume (int vNum, short *volL, short *volR);
extern void SpuGetVoiceVolumeAttr (int vNum, short *volL, short *volR,
short *volModeL, short *volModeR);
extern void SpuGetVoiceVolumeX (int vNum, short *volXL, short *volXR);
extern void SpuGetVoicePitch (int vNum, unsigned short *pitch);
extern void SpuGetVoiceNote (int vNum, unsigned short *note);
extern void SpuGetVoiceSampleNote (int vNum, unsigned short *sampleNote);
extern void SpuGetVoiceEnvelope (int vNum, short *envx);
extern void SpuGetVoiceStartAddr (int vNum, unsigned long *startAddr);
extern void SpuGetVoiceLoopStartAddr (int vNum, unsigned long *loopStartAddr);
extern void SpuGetVoiceAR (int vNum, unsigned short *AR);
extern void SpuGetVoiceDR (int vNum, unsigned short *DR);
extern void SpuGetVoiceSR (int vNum, unsigned short *SR);
extern void SpuGetVoiceRR (int vNum, unsigned short *RR);
extern void SpuGetVoiceSL (int vNum, unsigned short *SL);
extern void SpuGetVoiceARAttr (int vNum, unsigned short *AR, long *ARmode);
extern void SpuGetVoiceSRAttr (int vNum, unsigned short *SR, long *SRmode);
extern void SpuGetVoiceRRAttr (int vNum, unsigned short *RR, long *RRmode);
extern void SpuGetVoiceADSR (int vNum,
unsigned short *AR, unsigned short *DR,
unsigned short *SR, unsigned short *RR,
unsigned short *SL);
extern void SpuGetVoiceADSRAttr (int vNum,
unsigned short *AR, unsigned short *DR,
unsigned short *SR, unsigned short *RR,
unsigned short *SL,
long *ARmode, long *SRmode, long *RRmode);
extern void SpuGetVoiceEnvelopeAttr (int vNum, long *keyStat, short *envx );
extern void SpuSetCommonMasterVolume (short mvol_left, short mvol_right);
extern void SpuSetCommonMasterVolumeAttr (short mvol_left, short mvol_right,
short mvolmode_left,
short mvolmode_right);
extern void SpuSetCommonCDMix (long cd_mix);
extern void SpuSetCommonCDVolume (short cd_left, short cd_right);
extern void SpuSetCommonCDReverb (long cd_reverb);
extern void SpuGetCommonMasterVolume (short *mvol_left, short *mvol_right);
extern void SpuGetCommonMasterVolumeX (short *mvolx_left, short *mvolx_right);
extern void SpuGetCommonMasterVolumeAttr (short *mvol_left, short *mvol_right,
short *mvolmode_left,
short *mvolmode_right);
extern void SpuGetCommonCDMix (long *cd_mix);
extern void SpuGetCommonCDVolume (short *cd_left, short *cd_right);
extern void SpuGetCommonCDReverb (long *cd_reverb);
extern long SpuSetReverbModeType (long mode);
extern void SpuSetReverbModeDepth (short depth_left, short depth_right);
extern void SpuSetReverbModeDelayTime (long delay);
extern void SpuSetReverbModeFeedback (long feedback);
extern void SpuGetReverbModeType (long *mode);
extern void SpuGetReverbModeDepth (short *depth_left, short *depth_right);
extern void SpuGetReverbModeDelayTime (long *delay);
extern void SpuGetReverbModeFeedback (long *feedback);
extern void SpuSetESA( long revAddr );
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) || defined(c_plusplus)
}
#endif
/* ---------------------------------------------------------------- */
#define SPU_ST_NOT_AVAILABLE 0
#define SPU_ST_ACCEPT 1
#define SPU_ST_ERROR (-1)
#define SPU_ST_INVALID_ARGUMENT (-2)
#define SPU_ST_WRONG_STATUS (-3)
#define SPU_ST_STOP 2
#define SPU_ST_IDLE 3
#define SPU_ST_PREPARE 4
#define SPU_ST_START 5
#define SPU_ST_PLAY 6
#define SPU_ST_TRANSFER 7
#define SPU_ST_FINAL 8
/* VAG's header size */
#define SPU_ST_VAG_HEADER_SIZE 0x30
typedef struct {
char status; /* stream status */
char pad1; /* padding */
char pad2; /* padding */
char pad3; /* padding */
long last_size; /* the size of last transferring
(last_size <= (size / 2)) */
unsigned long buf_addr; /* The start address of stream buffer */
unsigned long data_addr; /* The start address of SPU streaming
data in main memory */
} SpuStVoiceAttr;
typedef struct {
long size; /* The size of stream buffer */
long low_priority; /* transfer priority */
SpuStVoiceAttr voice [24];
} SpuStEnv;
#ifndef __SPU_ST_TRANSFERCALLBACK_PROC
#define __SPU_ST_TRANSFERCALLBACK_PROC
typedef void (*SpuStCallbackProc)(unsigned long, long);
#endif /* __SPU_TRANSFERCALLBACK_PROC */
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) || defined(c_plusplus)
extern "C" {
#endif
extern SpuStEnv *SpuStInit (long);
extern long SpuStQuit (void);
extern long SpuStGetStatus (void);
extern unsigned long SpuStGetVoiceStatus (void);
extern long SpuStTransfer (long flag, unsigned long voice_bit);
extern SpuStCallbackProc SpuStSetPreparationFinishedCallback (SpuStCallbackProc func);
extern SpuStCallbackProc SpuStSetTransferFinishedCallback (SpuStCallbackProc func);
extern SpuStCallbackProc SpuStSetStreamFinishedCallback (SpuStCallbackProc func);
#if defined(_LANGUAGE_C_PLUS_PLUS) || defined(__cplusplus) || defined(c_plusplus)
}
#endif
/* ----------------------------------------------------------------
* End on File
* ---------------------------------------------------------------- */
#endif /* _LIBSPU_H_ */
/* DON'T ADD STUFF AFTER THIS */