/***********************************************************
* Rocks'n'Diamonds -- McDuffin Strikes Back! *
*----------------------------------------------------------*
-* ©1995 Artsoft Development *
-* Holger Schemel *
-* 33659 Bielefeld-Senne *
-* Telefon: (0521) 493245 *
-* eMail: aeglos@valinor.owl.de *
-* aeglos@uni-paderborn.de *
-* q99492@pbhrzx.uni-paderborn.de *
+* (c) 1995-98 Artsoft Entertainment *
+* Holger Schemel *
+* Oststrasse 11a *
+* 33604 Bielefeld *
+* phone: ++49 +521 290471 *
+* email: aeglos@valinor.owl.de *
*----------------------------------------------------------*
* sound.c *
***********************************************************/
#include "sound.h"
+#include "misc.h"
+
#ifdef MSDOS
extern void sound_handler(struct SoundControl);
#endif
if (!FD_ISSET(sound_pipe[0], &sound_fdset))
continue;
if (read(sound_pipe[0], &snd_ctrl, sizeof(snd_ctrl)) != sizeof(snd_ctrl))
- {
- fprintf(stderr,"%s: broken pipe - no sounds\n",progname);
- exit(0);
- }
+ Error(ERR_EXIT_SOUNDSERVER, "broken pipe - no sounds");
#ifdef VOXWARE
char *sample_ptr;
long sample_size, max_sample_size;
long fragment_size;
- BOOL stereo;
+ boolean stereo;
if (playing_sounds || (sound_device=open(sound_device_name,O_WRONLY))>=0)
{
audio_ctl = open("/dev/audioCtl", O_WRONLY | O_NDELAY);
if (audio_ctl == -1)
- {
- fprintf(stderr,"%s: cannot open /dev/audioCtl - no sounds\n",progname);
- exit(0);
- }
+ Error(ERR_EXIT_SOUNDSERVER, "cannot open /dev/audioCtl - no sounds");
if (ioctl(audio_ctl, AUDIO_DESCRIBE, &ainfo) == -1)
- {
- fprintf(stderr,"%s: no audio info - no sounds\n",progname);
- exit(0);
- }
+ Error(ERR_EXIT_SOUNDSERVER, "no audio info - no sounds");
if (ioctl(audio_ctl, AUDIO_SET_DATA_FORMAT, AUDIO_FORMAT_ULAW) == -1)
- {
- fprintf(stderr,"%s: ulaw audio not available - no sounds\n",progname);
- exit(0);
- }
+ Error(ERR_EXIT_SOUNDSERVER, "ulaw audio not available - no sounds");
ioctl(audio_ctl, AUDIO_SET_CHANNELS, 1);
ioctl(audio_ctl, AUDIO_SET_SAMPLE_RATE, 8000);
return(ptr[0]<<24 | ptr[1]<<16 | ptr[2]<<8 | ptr[3]);
}
-BOOL LoadSound(struct SoundInfo *snd_info)
+boolean LoadSound(struct SoundInfo *snd_info)
{
FILE *file;
char filename[256];
#ifndef MSDOS
if (!(file=fopen(filename,"r")))
{
- fprintf(stderr,"%s: cannot open sound file '%s' - no sounds\n",
- progname,filename);
+ Error(ERR_WARN, "cannot open sound file '%s' - no sounds", filename);
return(FALSE);
}
if (fseek(file,0,SEEK_END)<0)
{
- fprintf(stderr,"%s: cannot read sound file '%s' - no sounds\n",
- progname,filename);
+ Error(ERR_WARN, "cannot read sound file '%s' - no sounds", filename);
fclose(file);
return(FALSE);
}
if (!(snd_info->file_ptr=malloc(snd_info->file_len)))
{
- fprintf(stderr,"%s: out of memory (this shouldn't happen :) - no sounds\n",
- progname);
+ Error(ERR_WARN, "out of memory (this shouldn't happen :) - no sounds");
fclose(file);
return(FALSE);
}
if (fread(snd_info->file_ptr,1,snd_info->file_len,file)!=snd_info->file_len)
{
- fprintf(stderr,"%s: cannot read sound file '%s' - no sounds\n",
- progname,filename);
+ Error(ERR_WARN, "cannot read sound file '%s' - no sounds", filename);
fclose(file);
return(FALSE);
}
snd_info->file_len != be2long(&sound_header->chunk_size)+8 ||
strncmp(sound_header->magic_8SVX,"8SVX",4))
{
- fprintf(stderr,"%s: '%s' is not an IFF/8SVX file or broken- no sounds\n",
- progname,filename);
+ Error(ERR_WARN, "'%s' is not an IFF/8SVX file or broken - no sounds",
+ filename);
return(FALSE);
}
snd_info->sample_ptr = load_sample(filename);
if(!snd_info->sample_ptr)
{
- fprintf(stderr,"%s: cannot read sound file '%s' - no sounds\n",
- progname,filename);
+ Error(ERR_WARN, "cannot read sound file '%s' - no sounds", filename);
fclose(file);
return(FALSE);
}
PlaySoundExt(nr, PSND_MAX_VOLUME, PSND_MIDDLE, PSND_LOOP);
}
-void PlaySoundExt(int nr, int volume, int stereo, BOOL loop)
+void PlaySoundExt(int nr, int volume, int stereo, boolean loop)
{
struct SoundControl snd_ctrl = emptySoundControl;
- if (sound_status==SOUND_OFF || !sound_on)
+ if (sound_status==SOUND_OFF || !setup.sound)
return;
if (volume<PSND_MIN_VOLUME)
#ifndef MSDOS
if (write(sound_pipe[1], &snd_ctrl, sizeof(snd_ctrl))<0)
{
- fprintf(stderr,"%s: cannot pipe to child process - no sounds\n",progname);
- sound_status=SOUND_OFF;
+ Error(ERR_WARN, "cannot pipe to child process - no sounds");
+ sound_status = SOUND_OFF;
return;
}
#else
#ifndef MSDOS
if (write(sound_pipe[1], &snd_ctrl, sizeof(snd_ctrl))<0)
{
- fprintf(stderr,"%s: cannot pipe to child process - no sounds\n",progname);
- sound_status=SOUND_OFF;
+ Error(ERR_WARN, "cannot pipe to child process - no sounds");
+ sound_status = SOUND_OFF;
return;
}
#else