1 /***********************************************************
2 * Rocks'n'Diamonds -- McDuffin Strikes Back! *
3 *----------------------------------------------------------*
4 * ©1995 Artsoft Development *
6 * 33659 Bielefeld-Senne *
7 * Telefon: (0521) 493245 *
8 * eMail: aeglos@valinor.owl.de *
9 * aeglos@uni-paderborn.de *
10 * q99492@pbhrzx.uni-paderborn.de *
11 *----------------------------------------------------------*
13 ***********************************************************/
22 #include <linux/soundcard.h>
26 /* where is the right declaration for 'ioctl'? */
27 extern void ioctl(long, long, void *);
31 #include <machine/soundcard.h>
34 #define SND_BLOCKSIZE 4096
37 #include <sys/audio.h>
39 #define SND_BLOCKSIZE 32768
41 #endif /* _HPUX_SOURCE */
43 #define MAX_SOUNDS_PLAYING 16
45 /* some values for PlaySound(), StopSound() and friends */
46 #define PSND_SILENCE 0
47 #define PSND_MAX_VOLUME_BITS 7
48 #define PSND_MIN_VOLUME 0
49 #define PSND_MAX_VOLUME (1 << PSND_MAX_VOLUME_BITS)
50 #define PSND_NO_LOOP 0
53 #define PSND_MAX_STEREO_BITS 7
54 #define PSND_MAX_STEREO (1 << PSND_MAX_STEREO_BITS)
55 #define PSND_MAX_LEFT (-PSND_MAX_STEREO)
56 #define PSND_MAX_RIGHT (+PSND_MAX_STEREO)
57 #define PSND_MAX_LEFT2RIGHT_BITS (PSND_MAX_STEREO_BITS+1)
58 #define PSND_MAX_LEFT2RIGHT (1 << PSND_MAX_LEFT2RIGHT_BITS)
60 #define SSND_FADE_SOUND (1<<0)
61 #define SSND_FADE_ALL_SOUNDS (1<<1)
62 #define SSND_FADING(x) (x & (SSND_FADE_SOUND | SSND_FADE_ALL_SOUNDS))
63 #define SSND_STOP_SOUND (1<<2)
64 #define SSND_STOP_ALL_SOUNDS (1<<3)
65 #define SSND_STOPPING(x) (x & (SSND_STOP_SOUND | SSND_STOP_ALL_SOUNDS))
66 #define SSND_ALL(x) (x&(SSND_FADE_ALL_SOUNDS|SSND_STOP_ALL_SOUNDS))
71 /* settings for sound path, sound device, etc. */
73 #define SND_PATH "./sounds"
76 #define DEV_AUDIO "/dev/audio"
77 #define DEV_DSP "/dev/dsp"
80 #define SOUND_DEVICE DEV_DSP
82 #define SOUND_DEVICE DEV_AUDIO
86 #define SOUND_AVAILABLE 1
89 #define SOUND_STATUS SOUND_OFF
91 #define SOUND_STATUS SOUND_AVAILABLE
94 struct SoundHeader_SUN
97 unsigned long hdr_size;
98 unsigned long data_size;
99 unsigned long encoding;
100 unsigned long sample_rate;
101 unsigned long channels;
104 struct SoundHeader_8SVX
107 unsigned long chunk_size;
114 unsigned char *file_ptr;
116 long file_len, data_len;
128 BOOL stop_all_sounds;
135 /* sound server functions */
136 void SoundServer(void);
137 void SoundServer_InsertNewSound(struct SoundControl);
138 void SoundServer_StopSound(int);
139 void SoundServer_StopAllSounds(void);
140 void HPUX_Audio_Control(void);
141 unsigned char linear_to_ulaw(int);
142 int ulaw_to_linear(unsigned char);
144 /* application functions */
145 BOOL LoadSound(struct SoundInfo *);
147 void PlaySoundStereo(int, int);
148 void PlaySoundLoop(int);
149 void PlaySoundExt(int, int, int, BOOL);
151 void FadeSounds(void);
153 void StopSounds(void);
154 void StopSoundExt(int, int);
155 void FreeSounds(int);