summaryrefslogtreecommitdiffstats
path: root/apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h')
-rw-r--r--apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h b/apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h
new file mode 100644
index 0000000000..53cbb37460
--- /dev/null
+++ b/apps/plugins/sdl/progs/duke3d/Game/src/audiolib/_guswave.h
@@ -0,0 +1,164 @@
+/*
+Copyright (C) 1994-1995 Apogee Software, Ltd.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+*/
+/**********************************************************************
+ file: _GUSWAVE.H
+
+ author: James R. Dose
+ date: March 23, 1994
+
+ Private header for GUSWAVE.C
+
+ (c) Copyright 1994 James R. Dose. All Rights Reserved.
+**********************************************************************/
+
+#ifndef ___GUSWAVE_H
+#define ___GUSWAVE_H
+
+#define TRUE ( 1 == 1 )
+#define FALSE ( !TRUE )
+
+#define LOADDS _loadds
+
+#define VOC_8BIT 0x0
+#define VOC_CT4_ADPCM 0x1
+#define VOC_CT3_ADPCM 0x2
+#define VOC_CT2_ADPCM 0x3
+#define VOC_16BIT 0x4
+#define VOC_ALAW 0x6
+#define VOC_MULAW 0x7
+#define VOC_CREATIVE_ADPCM 0x200
+
+#define MAX_BLOCK_LENGTH 0x8000
+
+#define GF1BSIZE 896L /* size of buffer per wav on GUS */
+//#define GF1BSIZE 512L /* size of buffer per wav on GUS */
+
+//#define VOICES 8 /* maximum amount of concurrent wav files */
+#define VOICES 2 /* maximum amount of concurrent wav files */
+#define MAX_VOICES 32 /* This should always be 32 */
+#define MAX_VOLUME 4095
+#define BUFFER 2048U /* size of DMA buffer for patch loading */
+
+typedef enum
+ {
+ Raw,
+ VOC,
+ DemandFeed,
+ WAV
+ } wavedata;
+
+typedef enum
+ {
+ NoMoreData,
+ KeepPlaying,
+ SoundDone
+ } playbackstatus;
+
+
+typedef volatile struct VoiceNode
+ {
+ struct VoiceNode *next;
+ struct VoiceNode *prev;
+
+ wavedata wavetype;
+ int bits;
+ playbackstatus ( *GetSound )( struct VoiceNode *voice );
+
+ int num;
+
+ unsigned long mem; /* location in ultrasound memory */
+ int Active; /* this instance in use */
+ int GF1voice; /* handle to active voice */
+
+ char *NextBlock;
+ char *LoopStart;
+ char *LoopEnd;
+ unsigned LoopCount;
+ unsigned long LoopSize;
+ unsigned long BlockLength;
+
+ unsigned long PitchScale;
+
+ unsigned char *sound;
+ unsigned long length;
+ unsigned long SamplingRate;
+ unsigned long RateScale;
+ int Playing;
+
+ int handle;
+ int priority;
+
+ void ( *DemandFeed )( char **ptr, unsigned long *length );
+
+ unsigned long callbackval;
+
+ int Volume;
+ int Pan;
+ }
+VoiceNode;
+
+typedef struct
+ {
+ VoiceNode *start;
+ VoiceNode *end;
+ }
+voicelist;
+
+typedef volatile struct voicestatus
+ {
+ VoiceNode *Voice;
+ int playing;
+ }
+voicestatus;
+
+typedef struct
+ {
+ char RIFF[ 4 ];
+ unsigned long file_size;
+ char WAVE[ 4 ];
+ char fmt[ 4 ];
+ unsigned long format_size;
+} __attribute__((packed)) riff_header;
+
+typedef struct
+ {
+ unsigned short wFormatTag;
+ unsigned short nChannels;
+ unsigned long nSamplesPerSec;
+ unsigned long nAvgBytesPerSec;
+ unsigned short nBlockAlign;
+ unsigned short nBitsPerSample;
+ } __attribute__((packed)) format_header;
+
+typedef struct
+ {
+ unsigned char DATA[ 4 ];
+ unsigned long size;
+ } __attribute__((packed)) data_header;
+
+playbackstatus GUSWAVE_GetNextVOCBlock( VoiceNode *voice );
+VoiceNode *GUSWAVE_GetVoice( int handle );
+
+int GUSWAVE_Play( VoiceNode *voice, int angle, int volume, int channels );
+
+VoiceNode *GUSWAVE_AllocVoice( int priority );
+static int GUSWAVE_InitVoices( void );
+
+#endif