diff --git a/polymer/eduke32/eduke32.vcxproj b/polymer/eduke32/eduke32.vcxproj
index 58e808476..0e2590fd9 100644
--- a/polymer/eduke32/eduke32.vcxproj
+++ b/polymer/eduke32/eduke32.vcxproj
@@ -321,6 +321,7 @@
+
@@ -358,14 +359,11 @@
-
-
-
diff --git a/polymer/eduke32/eduke32.vcxproj.filters b/polymer/eduke32/eduke32.vcxproj.filters
index 708c954be..14322a3c1 100644
--- a/polymer/eduke32/eduke32.vcxproj.filters
+++ b/polymer/eduke32/eduke32.vcxproj.filters
@@ -243,9 +243,6 @@
jaudiolib\headers
-
- jaudiolib\headers
-
jaudiolib\headers
@@ -264,9 +261,6 @@
jaudiolib\headers
-
- jaudiolib\headers
-
jmact\headers
@@ -516,6 +510,9 @@
build\headers
+
+ jaudiolib\headers
+
diff --git a/polymer/eduke32/source/jaudiolib/include/drivers.h b/polymer/eduke32/source/jaudiolib/include/drivers.h
index 3f284b70c..431068b69 100644
--- a/polymer/eduke32/source/jaudiolib/include/drivers.h
+++ b/polymer/eduke32/source/jaudiolib/include/drivers.h
@@ -26,8 +26,11 @@
typedef enum
{
ASS_NoSound,
- ASS_SDL,
+#if defined HAVE_DS
ASS_DirectSound,
+#elif defined HAVE_SDL
+ ASS_SDL,
+#endif
ASS_NumSoundCards,
ASS_AutoDetect = -2
} soundcardnames;
@@ -38,7 +41,7 @@ int32_t SoundDriver_IsSupported(int32_t driver);
int32_t SoundDriver_GetError(void);
const char *SoundDriver_ErrorString(int32_t ErrorNumber);
-int32_t SoundDriver_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void *initdata);
+int32_t SoundDriver_Init(int32_t *mixrate, int32_t *numchannels, void *initdata);
void SoundDriver_Shutdown(void);
int32_t SoundDriver_BeginPlayback(char *BufferStart, int32_t BufferSize, int32_t NumDivisions, void(*CallBackFunc)(void));
void SoundDriver_StopPlayback(void);
diff --git a/polymer/eduke32/source/jaudiolib/include/fx_man.h b/polymer/eduke32/source/jaudiolib/include/fx_man.h
index 2a12e9a44..7749e350f 100644
--- a/polymer/eduke32/source/jaudiolib/include/fx_man.h
+++ b/polymer/eduke32/source/jaudiolib/include/fx_man.h
@@ -57,8 +57,7 @@ enum FX_LOOP_HOW
#define FX_MUSIC_PRIORITY INT_MAX
const char *FX_ErrorString(int32_t ErrorNumber);
-int32_t FX_Init(int32_t SoundCard, int32_t numvoices, int32_t numchannels, int32_t samplebits, unsigned mixrate,
- void *initdata);
+int32_t FX_Init(int32_t SoundCard, int32_t numvoices, int32_t numchannels, unsigned mixrate, void *initdata);
int32_t FX_Shutdown(void);
void FX_SetCallBack(void(*function)(uint32_t));
void FX_SetVolume(int32_t volume);
diff --git a/polymer/eduke32/source/jaudiolib/src/_multivc.h b/polymer/eduke32/source/jaudiolib/src/_multivc.h
index 586eecd00..8d062bfb7 100644
--- a/polymer/eduke32/source/jaudiolib/src/_multivc.h
+++ b/polymer/eduke32/source/jaudiolib/src/_multivc.h
@@ -36,16 +36,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include "multivoc.h"
#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 T_SIXTEENBIT_STEREO 0
-#define T_8BITS 1
#define T_MONO 2
#define T_16BITSOURCE 4
#define T_STEREOSOURCE 8
@@ -64,24 +57,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#define MIX_VOLUME(volume) ((max(0, min((volume), 255)) * (MV_MAXVOLUME + 1)) >> 8)
-#define STEREO 1
-#define SIXTEEN_BIT 2
-
-#define MONO_8BIT 0
-#define STEREO_8BIT ( STEREO )
-#define MONO_16BIT ( SIXTEEN_BIT )
-#define STEREO_16BIT ( STEREO | SIXTEEN_BIT )
-
-#define MONO_8BIT_SAMPLE_SIZE 1
-#define MONO_16BIT_SAMPLE_SIZE 2
-#define STEREO_8BIT_SAMPLE_SIZE ( 2 * MONO_8BIT_SAMPLE_SIZE )
-#define STEREO_16BIT_SAMPLE_SIZE ( 2 * MONO_16BIT_SAMPLE_SIZE )
-
-//#define SILENCE_16BIT 0x80008000
-#define SILENCE_16BIT 0
-#define SILENCE_8BIT 0x80808080
-//#define SILENCE_16BIT_PAS 0
-
#define MV_MIXBUFFERSIZE 256
#define MV_NUMBEROFBUFFERS 16
#define MV_TOTALBUFFERSIZE ( MV_MIXBUFFERSIZE * MV_NUMBEROFBUFFERS )
@@ -200,28 +175,18 @@ void MV_ReleaseFLACVoice(VoiceNode *voice);
void MV_ReleaseXAVoice(VoiceNode *voice);
// implemented in mix.c
-void MV_Mix8BitMono(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitStereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitMono(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitStereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitMono16(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitMono16(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitStereo16(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitStereo16(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_16BitReverb( char const *src, char *dest, int16_t *volume, int32_t count );
-void MV_8BitReverb( int8_t *src, int8_t *dest, int16_t *volume, int32_t count );
// implemented in mixst.c
-void MV_Mix8BitMono8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitStereo8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitMono8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitStereo8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitMono16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitMono16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-void MV_Mix8BitStereo16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
void MV_Mix16BitStereo16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length);
-extern char *MV_HarshClipTable;
extern char *MV_MixDestination; // pointer to the next output sample
extern uint32_t MV_MixPosition; // return value of where the source pointer got to
extern const int16_t *MV_LeftVolume;
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_directsound.c b/polymer/eduke32/source/jaudiolib/src/driver_directsound.c
index 49f81abcf..a10b9f70a 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_directsound.c
+++ b/polymer/eduke32/source/jaudiolib/src/driver_directsound.c
@@ -300,7 +300,7 @@ static void TeardownDSound(HRESULT err)
lpds = NULL;
}
-int32_t DirectSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void * initdata)
+int32_t DirectSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, void * initdata)
{
HRESULT err;
DSBUFFERDESC bufdesc;
@@ -341,7 +341,7 @@ int32_t DirectSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t
wfex.wFormatTag = WAVE_FORMAT_PCM;
wfex.nChannels = *numchannels;
wfex.nSamplesPerSec = *mixrate;
- wfex.wBitsPerSample = *samplebits;
+ wfex.wBitsPerSample = 16;
wfex.nBlockAlign = wfex.nChannels * wfex.wBitsPerSample / 8;
wfex.nAvgBytesPerSec = wfex.nSamplesPerSec * wfex.nBlockAlign;
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_directsound.h b/polymer/eduke32/source/jaudiolib/src/driver_directsound.h
index af2408e8a..27c68c729 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_directsound.h
+++ b/polymer/eduke32/source/jaudiolib/src/driver_directsound.h
@@ -22,7 +22,7 @@
int32_t DirectSoundDrv_GetError(void);
const char *DirectSoundDrv_ErrorString( int32_t ErrorNumber );
-int32_t DirectSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void * initdata);
+int32_t DirectSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, void * initdata);
void DirectSoundDrv_PCM_Shutdown(void);
int32_t DirectSoundDrv_PCM_BeginPlayback(char *BufferStart, int32_t BufferSize,
int32_t NumDivisions, void ( *CallBackFunc )( void ) );
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_nosound.c b/polymer/eduke32/source/jaudiolib/src/driver_nosound.c
index 9e2f8e152..b81eb1e98 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_nosound.c
+++ b/polymer/eduke32/source/jaudiolib/src/driver_nosound.c
@@ -40,11 +40,10 @@ const char *NoSoundDrv_ErrorString( int32_t ErrorNumber )
return "No sound, Ok.";
}
-int32_t NoSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void * initdata)
+int32_t NoSoundDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, void * initdata)
{
UNREFERENCED_PARAMETER(mixrate);
UNREFERENCED_PARAMETER(numchannels);
- UNREFERENCED_PARAMETER(samplebits);
UNREFERENCED_PARAMETER(initdata);
return 0;
}
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_nosound.h b/polymer/eduke32/source/jaudiolib/src/driver_nosound.h
index 0fb599aff..8892c46ab 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_nosound.h
+++ b/polymer/eduke32/source/jaudiolib/src/driver_nosound.h
@@ -21,7 +21,7 @@
int NoSoundDrv_GetError(void);
const char *NoSoundDrv_ErrorString( int ErrorNumber );
-int NoSoundDrv_PCM_Init(int *mixrate, int *numchannels, int *samplebits, void * initdata);
+int NoSoundDrv_PCM_Init(int *mixrate, int *numchannels, void * initdata);
void NoSoundDrv_PCM_Shutdown(void);
int NoSoundDrv_PCM_BeginPlayback(char *BufferStart, int BufferSize,
int NumDivisions, void ( *CallBackFunc )( void ) );
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_sdl.c b/polymer/eduke32/source/jaudiolib/src/driver_sdl.c
index 1ac0577e9..71a80d73f 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_sdl.c
+++ b/polymer/eduke32/source/jaudiolib/src/driver_sdl.c
@@ -143,7 +143,7 @@ const char *SDLDrv_ErrorString( int32_t ErrorNumber )
return ErrorString;
}
-int32_t SDLDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void * initdata)
+int32_t SDLDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, void * initdata)
{
int32_t err = 0;
int32_t chunksize;
@@ -164,17 +164,21 @@ int32_t SDLDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *sampleb
if (*mixrate >= 16000) chunksize *= 2;
if (*mixrate >= 32000) chunksize *= 2;
- err = Mix_OpenAudio(*mixrate, (*samplebits == 8) ? AUDIO_U8 : AUDIO_S16SYS, *numchannels, chunksize);
+ err = Mix_OpenAudio(*mixrate, AUDIO_S16SYS, *numchannels, chunksize);
if (err < 0) {
ErrorCode = SDLErr_OpenAudio;
return SDLErr_Error;
}
+
if (Mix_QuerySpec(mixrate, &fmt, numchannels))
{
- if (fmt == AUDIO_U8 || fmt == AUDIO_S8) *samplebits = 8;
- else *samplebits = 16;
+ if (fmt == AUDIO_U8 || fmt == AUDIO_S8)
+ {
+ ErrorCode = SDLErr_OpenAudio;
+ return SDLErr_Error;
+ }
}
//Mix_SetPostMix(fillData, NULL);
diff --git a/polymer/eduke32/source/jaudiolib/src/driver_sdl.h b/polymer/eduke32/source/jaudiolib/src/driver_sdl.h
index 557d35b4b..2df453700 100644
--- a/polymer/eduke32/source/jaudiolib/src/driver_sdl.h
+++ b/polymer/eduke32/source/jaudiolib/src/driver_sdl.h
@@ -21,7 +21,7 @@
int32_t SDLDrv_GetError(void);
const char *SDLDrv_ErrorString( int32_t ErrorNumber );
-int32_t SDLDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void * initdata);
+int32_t SDLDrv_PCM_Init(int32_t *mixrate, int32_t *numchannels, void * initdata);
void SDLDrv_PCM_Shutdown(void);
int32_t SDLDrv_PCM_BeginPlayback(char *BufferStart, int32_t BufferSize,
int32_t NumDivisions, void ( *CallBackFunc )( void ) );
diff --git a/polymer/eduke32/source/jaudiolib/src/drivers.c b/polymer/eduke32/source/jaudiolib/src/drivers.c
index 2e1226e77..fe180fcd7 100644
--- a/polymer/eduke32/source/jaudiolib/src/drivers.c
+++ b/polymer/eduke32/source/jaudiolib/src/drivers.c
@@ -27,12 +27,10 @@
#include "driver_nosound.h"
-#ifdef HAVE_SDL
-# include "driver_sdl.h"
-#endif
-
-#ifdef HAVE_DS
+#if defined HAVE_DS
# include "driver_directsound.h"
+#elif defined HAVE_SDL
+# include "driver_sdl.h"
#endif
int32_t ASS_SoundDriver = -1;
@@ -43,7 +41,7 @@ static struct
{
int32_t (*GetError)(void);
const char *(*ErrorString)(int32_t);
- int32_t (*Init)(int32_t *, int32_t *, int32_t *, void *);
+ int32_t (*Init)(int32_t *, int32_t *, void *);
void (*Shutdown)(void);
int32_t (*BeginPlayback)(char *, int32_t, int32_t, void (*)(void));
void (*StopPlayback)(void);
@@ -57,32 +55,24 @@ static struct
NoSoundDrv_PCM_BeginPlayback, NoSoundDrv_PCM_StopPlayback, NoSoundDrv_PCM_Lock, NoSoundDrv_PCM_Unlock,
},
- // Simple DirectMedia Layer
- #ifdef HAVE_SDL
- {
- SDLDrv_GetError, SDLDrv_ErrorString, SDLDrv_PCM_Init, SDLDrv_PCM_Shutdown,
- SDLDrv_PCM_BeginPlayback, SDLDrv_PCM_StopPlayback, SDLDrv_PCM_Lock, SDLDrv_PCM_Unlock,
- },
- #else
- UNSUPPORTED
- #endif
-
// Windows DirectSound
- #ifdef HAVE_DS
+#if defined HAVE_DS
{
DirectSoundDrv_GetError, DirectSoundDrv_ErrorString, DirectSoundDrv_PCM_Init, DirectSoundDrv_PCM_Shutdown,
DirectSoundDrv_PCM_BeginPlayback, DirectSoundDrv_PCM_StopPlayback, DirectSoundDrv_PCM_Lock,
DirectSoundDrv_PCM_Unlock,
},
- #else
- UNSUPPORTED
- #endif
+ // Simple DirectMedia Layer
+#elif defined HAVE_SDL
+ {
+ SDLDrv_GetError, SDLDrv_ErrorString, SDLDrv_PCM_Init, SDLDrv_PCM_Shutdown,
+ SDLDrv_PCM_BeginPlayback, SDLDrv_PCM_StopPlayback, SDLDrv_PCM_Lock, SDLDrv_PCM_Unlock,
+ },
+#endif
};
-
int32_t SoundDriver_IsSupported(int32_t driver) { return (SoundDrivers[driver].GetError != 0); }
-
int32_t SoundDriver_GetError(void)
{
return SoundDriver_IsSupported(ASS_SoundDriver) ? SoundDrivers[ASS_SoundDriver].GetError() : -1;
@@ -99,9 +89,9 @@ const char * SoundDriver_ErrorString( int32_t ErrorNumber )
return SoundDrivers[ASS_SoundDriver].ErrorString(ErrorNumber);
}
-int32_t SoundDriver_Init(int32_t *mixrate, int32_t *numchannels, int32_t *samplebits, void *initdata)
+int32_t SoundDriver_Init(int32_t *mixrate, int32_t *numchannels, void *initdata)
{
- return SoundDrivers[ASS_SoundDriver].Init(mixrate, numchannels, samplebits, initdata);
+ return SoundDrivers[ASS_SoundDriver].Init(mixrate, numchannels, initdata);
}
void SoundDriver_Shutdown(void) { SoundDrivers[ASS_SoundDriver].Shutdown(); }
diff --git a/polymer/eduke32/source/jaudiolib/src/flac.c b/polymer/eduke32/source/jaudiolib/src/flac.c
index 8811ed175..9cf45370d 100644
--- a/polymer/eduke32/source/jaudiolib/src/flac.c
+++ b/polymer/eduke32/source/jaudiolib/src/flac.c
@@ -665,6 +665,10 @@ void MV_ReleaseFLACVoice(VoiceNode *voice)
voice->rawdataptr = 0;
}
#else
+#include
+#include
+#include "_multivc.h"
+
int32_t MV_PlayFLAC(char *ptr, uint32_t ptrlength, int32_t loopstart, int32_t loopend, int32_t pitchoffset,
int32_t vol, int32_t left, int32_t right, int32_t priority, uint32_t callbackval)
{
diff --git a/polymer/eduke32/source/jaudiolib/src/fx_man.c b/polymer/eduke32/source/jaudiolib/src/fx_man.c
index 963c76a1d..88103e210 100644
--- a/polymer/eduke32/source/jaudiolib/src/fx_man.c
+++ b/polymer/eduke32/source/jaudiolib/src/fx_man.c
@@ -75,7 +75,7 @@ static inline int32_t FX_CheckMVErr(int32_t status)
return status;
}
-int32_t FX_Init(int32_t SoundCard, int32_t numvoices, int32_t numchannels, int32_t samplebits, unsigned mixrate, void *initdata)
+int32_t FX_Init(int32_t SoundCard, int32_t numvoices, int32_t numchannels, unsigned mixrate, void *initdata)
{
if (FX_Installed)
FX_Shutdown();
@@ -106,7 +106,7 @@ int32_t FX_Init(int32_t SoundCard, int32_t numvoices, int32_t numchannels, int32
int status = FX_Ok;
- if (MV_Init(SoundCard, mixrate, numvoices, numchannels, samplebits, initdata) != MV_Ok)
+ if (MV_Init(SoundCard, mixrate, numvoices, numchannels, initdata) != MV_Ok)
{
FX_SetErrorCode(FX_MultiVocError);
status = FX_Error;
diff --git a/polymer/eduke32/source/jaudiolib/src/mix.c b/polymer/eduke32/source/jaudiolib/src/mix.c
index fce2a940d..83bbd5f74 100644
--- a/polymer/eduke32/source/jaudiolib/src/mix.c
+++ b/polymer/eduke32/source/jaudiolib/src/mix.c
@@ -29,56 +29,6 @@
length = count of samples to mix
*/
-// 8-bit mono source, 8-bit mono output
-void MV_Mix8BitMono(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- uint8_t const * const source = (uint8_t *) start;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0;
-
- while (length--) {
- sample0 = source[position >> 16];
- position += rate;
-
- sample0 = MV_LeftVolume[sample0] + *dest;
- sample0 = MV_HarshClipTable[sample0 + 128];
-
- *dest = sample0 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
-// 8-bit mono source, 8-bit stereo output
-void MV_Mix8BitStereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- uint8_t const * const source = (uint8_t *) start;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[position >> 16];
- sample1 = sample0;
- position += rate;
-
- sample0 = MV_LeftVolume[sample0] + *dest;
- sample1 = MV_RightVolume[sample1] + *(dest + MV_RightChannelOffset);
- sample0 = MV_HarshClipTable[sample0 + 128];
- sample1 = MV_HarshClipTable[sample1 + 128];
-
- *dest = sample0 & 255;
- *(dest + MV_RightChannelOffset) = sample1 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
// 8-bit mono source, 16-bit mono output
void MV_Mix16BitMono(uint32_t position, uint32_t rate, const char *start, uint32_t length)
{
@@ -165,56 +115,6 @@ void MV_Mix16BitMono16(uint32_t position, uint32_t rate, const char *start, uint
MV_MixDestination = (char *) dest;
}
-// 16-bit mono source, 8-bit mono output
-void MV_Mix8BitMono16(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- int8_t const * const source = (int8_t *) start + 1;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0;
-
- while (length--) {
- sample0 = source[(position >> 16) << 1];
- position += rate;
-
- sample0 = MV_LeftVolume[sample0 + 128] + *dest;
- sample0 = MV_HarshClipTable[sample0 + 128];
-
- *dest = sample0 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
-// 16-bit mono source, 8-bit stereo output
-void MV_Mix8BitStereo16(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- int8_t const * const source = (int8_t *) start + 1;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[(position >> 16) << 1];
- sample1 = sample0;
- position += rate;
-
- sample0 = MV_LeftVolume[sample0 + 128] + *dest;
- sample1 = MV_RightVolume[sample1 + 128] + *(dest + MV_RightChannelOffset);
- sample0 = MV_HarshClipTable[sample0 + 128];
- sample1 = MV_HarshClipTable[sample1 + 128];
-
- *dest = sample0 & 255;
- *(dest + MV_RightChannelOffset) = sample1 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
// 16-bit mono source, 16-bit stereo output
void MV_Mix16BitStereo16(uint32_t position, uint32_t rate, const char *start, uint32_t length)
{
@@ -278,13 +178,3 @@ void MV_16BitReverb(char const *src, char *dest, int16_t *volume, int32_t count)
*output++ = (int16_t) (sample0l + sample0h + 128);
} while (--count > 0);
}
-
-void MV_8BitReverb(int8_t *src, int8_t *dest, int16_t *volume, int32_t count)
-{
- uint8_t const * input = (uint8_t *) src;
- uint8_t * output = (uint8_t *) dest;
-
- do {
- *output++ = ((int16_t *) volume)[*input++] + 128;
- } while (--count > 0);
-}
diff --git a/polymer/eduke32/source/jaudiolib/src/mixst.c b/polymer/eduke32/source/jaudiolib/src/mixst.c
index ca461a7b5..8e4c55ee9 100644
--- a/polymer/eduke32/source/jaudiolib/src/mixst.c
+++ b/polymer/eduke32/source/jaudiolib/src/mixst.c
@@ -30,57 +30,6 @@
length = count of samples to mix
*/
-// 8-bit stereo source, 8-bit mono output
-void MV_Mix8BitMono8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- uint8_t const * const source = (uint8_t *) start;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[(position >> 16) << 1];
- sample1 = source[((position >> 16) << 1) + 1];
- position += rate;
-
- sample0 = (MV_LeftVolume[sample0] + MV_LeftVolume[sample1]) / 2 + *dest;
- sample0 = MV_HarshClipTable[sample0 + 128];
-
- *dest = sample0 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
-// 8-bit stereo source, 8-bit stereo output
-void MV_Mix8BitStereo8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- uint8_t const * const source = (uint8_t *) start;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[(position >> 16) << 1];
- sample1 = source[((position >> 16) << 1) + 1];
- position += rate;
-
- sample0 = MV_LeftVolume[sample0] + *dest;
- sample1 = MV_RightVolume[sample1] + *(dest + MV_RightChannelOffset);
- sample0 = MV_HarshClipTable[sample0 + 128];
- sample1 = MV_HarshClipTable[sample1 + 128];
-
- *dest = sample0 & 255;
- *(dest + MV_RightChannelOffset) = sample1 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
// 8-bit stereo source, 16-bit mono output
void MV_Mix16BitMono8Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
{
@@ -179,59 +128,6 @@ void MV_Mix16BitMono16Stereo(uint32_t position, uint32_t rate, const char *start
MV_MixDestination = (char *) dest;
}
-// 16-bit stereo source, 8-bit mono output
-void MV_Mix8BitMono16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- int8_t const * const source = (int8_t *) start + 1;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[(position >> 16) << 2];
- sample1 = source[((position >> 16) << 2) + 2];
- position += rate;
-
- sample0 = MV_LeftVolume[sample0 + 128];
- sample1 = MV_LeftVolume[sample1 + 128];
- sample0 = (sample0 + sample1) / 2 + *dest;
- sample0 = MV_HarshClipTable[sample0 + 128];
-
- *dest = sample0 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
-// 16-bit stereo source, 8-bit stereo output
-void MV_Mix8BitStereo16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
-{
- int8_t const * const source = (int8_t *) start + 1;
- uint8_t *dest = (uint8_t *) MV_MixDestination;
- int32_t sample0, sample1;
-
- while (length--) {
- sample0 = source[(position >> 16) << 2];
- sample1 = source[((position >> 16) << 2) + 2];
- position += rate;
-
- sample0 = MV_LeftVolume[sample0 + 128] + *dest;
- sample1 = MV_RightVolume[sample1 + 128] + *(dest + MV_RightChannelOffset);
- sample0 = MV_HarshClipTable[sample0 + 128];
- sample1 = MV_HarshClipTable[sample1 + 128];
-
- *dest = sample0 & 255;
- *(dest + MV_RightChannelOffset) = sample1 & 255;
-
- dest += MV_SampleSize;
- }
-
- MV_MixPosition = position;
- MV_MixDestination = (char *) dest;
-}
-
// 16-bit stereo source, 16-bit stereo output
void MV_Mix16BitStereo16Stereo(uint32_t position, uint32_t rate, const char *start, uint32_t length)
{
diff --git a/polymer/eduke32/source/jaudiolib/src/multivoc.c b/polymer/eduke32/source/jaudiolib/src/multivoc.c
index c9a7e7c23..3416978b7 100644
--- a/polymer/eduke32/source/jaudiolib/src/multivoc.c
+++ b/polymer/eduke32/source/jaudiolib/src/multivoc.c
@@ -52,7 +52,6 @@ static VoiceNode *MV_GetVoice(int32_t handle);
static const int16_t *MV_GetVolumeTable(int32_t vol);
-static void MV_CalcVolume(int32_t MaxLevel);
static void MV_CalcPanTable(void);
#define IS_QUIET(ptr) ((void *)(ptr) == (void *)&MV_VolumeTable[0])
@@ -74,15 +73,11 @@ static int32_t MV_BufferLength;
static int32_t MV_NumberOfBuffers = MV_NUMBEROFBUFFERS;
static int32_t MV_Channels = 1;
-static int32_t MV_Bits = 8;
-static int32_t MV_Silence = SILENCE_8BIT;
-static int32_t MV_SwapLeftRight = FALSE;
+static int32_t MV_ReverseStereo = FALSE;
int32_t MV_MixRate;
-// static int32_t MV_BuffShift;
-
static int32_t MV_BufferEmpty[MV_NUMBEROFBUFFERS];
char *MV_MixBuffer[MV_NUMBEROFBUFFERS + 1];
@@ -95,9 +90,7 @@ static int32_t MV_MixPage = 0;
void (*MV_Printf)(const char *fmt, ...) = NULL;
static void (*MV_CallBackFunc)(uint32_t) = NULL;
-static void (*MV_MixFunction)(VoiceNode *voice, int32_t buffer);
-char *MV_HarshClipTable;
char *MV_MixDestination;
const int16_t *MV_LeftVolume;
const int16_t *MV_RightVolume;
@@ -122,15 +115,6 @@ static inline void RestoreInterrupts(void)
SoundDriver_Unlock();
}
-static inline void ClearBuffer_DW(void *ptr, unsigned data, int32_t length)
-{
- unsigned *ptrdw = (unsigned *)ptr;
- while (length--)
- {
- *(ptrdw++) = data;
- }
-}
-
const char *MV_ErrorString(int32_t ErrorNumber)
{
switch (ErrorNumber)
@@ -168,7 +152,7 @@ static void MV_Mix(VoiceNode *voice, int32_t buffer)
{
/* cheap fix for a crash under 64-bit linux */
/* v v v v */
- if (voice->length == 0 && (!voice->GetSound || voice->GetSound(voice) != KeepPlaying))
+ if (voice->length == 0 && (voice->GetSound == NULL || voice->GetSound(voice) != KeepPlaying))
return;
int32_t length = MV_MIXBUFFERSIZE;
@@ -282,7 +266,7 @@ static void MV_ServiceVoc(void)
//buffer even when no sounds are playing.
if (!MV_BufferEmpty[MV_MixPage])
{
- ClearBuffer_DW(MV_MixBuffer[ MV_MixPage ], MV_Silence, MV_BufferSize >> 2);
+ Bmemset(MV_MixBuffer[MV_MixPage], 0, MV_BufferSize);
MV_BufferEmpty[ MV_MixPage ] = TRUE;
}
}
@@ -301,10 +285,7 @@ static void MV_ServiceVoc(void)
{
int const count = (source + length > end) ? (end - source) : length;
- if (MV_Bits == 16)
- MV_16BitReverb(source, dest, MV_ReverbTable, count / 2);
- else // if (MV_Bits == 8)
- MV_8BitReverb((int8_t *) source, (int8_t *) dest, MV_ReverbTable, count);
+ MV_16BitReverb(source, dest, MV_ReverbTable, count / 2);
// if we go through the loop again, it means that we've wrapped around the buffer
source = MV_MixBuffer[ 0 ];
@@ -337,7 +318,7 @@ static void MV_ServiceVoc(void)
MV_BufferEmpty[ MV_MixPage ] = FALSE;
- MV_MixFunction(voice, MV_MixPage);
+ MV_Mix(voice, MV_MixPage);
// Is this voice done?
if (!voice->Playing)
@@ -606,37 +587,25 @@ static const inline int16_t *MV_GetVolumeTable(int32_t vol) { return MV_VolumeTa
Selects which method should be used to mix the voice.
- 8Bit 16Bit 8Bit 16Bit | 8Bit 16Bit 8Bit 16Bit |
- Mono Mono Ster Ster | Mono Mono Ster Ster | Mixer
- Out Out Out Out | In In In In |
---------------------------+---------------------------+-------------
- X | X | Mix8BitMono16
- X | X | Mix8BitMono
- X | X | Mix8BitStereo16
- X | X | Mix8BitStereo
- X | X | Mix16BitMono16
- X | X | Mix16BitMono
- X | X | Mix16BitStereo16
- X | X | Mix16BitStereo
---------------------------+---------------------------+-------------
- X | X | Mix16BitStereo16Stereo
- X | X | Mix16BitStereo8Stereo
- X | X | Mix8BitStereo16Stereo
- X | X | Mix8BitStereo8Stereo
- X | X | Mix16BitMono16Stereo
- X | X | Mix16BitMono8Stereo
- X | X | Mix8BitMono16Stereo
- X | X | Mix8BitMono8Stereo
-
+ 16Bit 16Bit | 8Bit 16Bit 8Bit 16Bit |
+ Mono Ster | Mono Mono Ster Ster | Mixer
+ Out Out | In In In In |
+----------------------+---------------------------+-------------
+ X | X | Mix16BitMono16
+ X | X | Mix16BitMono
+ X | X | Mix16BitStereo16
+ X | X | Mix16BitStereo
+----------------------+---------------------------+-------------
+ X | X | Mix16BitStereo16Stereo
+ X | X | Mix16BitStereo8Stereo
+ X | X | Mix16BitMono16Stereo
+ X | X | Mix16BitMono8Stereo
---------------------------------------------------------------------*/
void MV_SetVoiceMixMode(VoiceNode *voice)
{
int32_t type = T_DEFAULT;
- if (MV_Bits == 8)
- type |= T_8BITS;
-
if (MV_Channels == 1)
type |= T_MONO;
else
@@ -658,18 +627,6 @@ void MV_SetVoiceMixMode(VoiceNode *voice)
switch (type)
{
- case T_8BITS | T_16BITSOURCE | T_LEFTQUIET: MV_LeftVolume = MV_RightVolume;
- case T_8BITS | T_16BITSOURCE | T_MONO:
- case T_8BITS | T_16BITSOURCE | T_RIGHTQUIET: voice->mix = MV_Mix8BitMono16; break;
-
- case T_8BITS | T_LEFTQUIET: MV_LeftVolume = MV_RightVolume;
- case T_8BITS | T_MONO:
- case T_8BITS | T_RIGHTQUIET: voice->mix = MV_Mix8BitMono; break;
-
- case T_8BITS | T_16BITSOURCE: voice->mix = MV_Mix8BitStereo16; break;
-
- case T_8BITS: voice->mix = MV_Mix8BitStereo; break;
-
case T_16BITSOURCE | T_LEFTQUIET: MV_LeftVolume = MV_RightVolume;
case T_16BITSOURCE | T_MONO:
case T_16BITSOURCE | T_RIGHTQUIET: voice->mix = MV_Mix16BitMono16; break;
@@ -684,20 +641,12 @@ void MV_SetVoiceMixMode(VoiceNode *voice)
case T_16BITSOURCE | T_STEREOSOURCE: voice->mix = MV_Mix16BitStereo16Stereo; break;
- case T_16BITSOURCE | T_STEREOSOURCE | T_8BITS: voice->mix = MV_Mix8BitStereo16Stereo; break;
-
case T_16BITSOURCE | T_STEREOSOURCE | T_MONO: voice->mix = MV_Mix16BitMono16Stereo; break;
- case T_16BITSOURCE | T_STEREOSOURCE | T_8BITS | T_MONO: voice->mix = MV_Mix8BitMono16Stereo; break;
-
case T_STEREOSOURCE: voice->mix = MV_Mix16BitStereo8Stereo; break;
- case T_STEREOSOURCE | T_8BITS: voice->mix = MV_Mix8BitStereo8Stereo; break;
-
case T_STEREOSOURCE | T_MONO: voice->mix = MV_Mix16BitMono8Stereo; break;
- case T_STEREOSOURCE | T_8BITS | T_MONO: voice->mix = MV_Mix8BitMono8Stereo; break;
-
default: voice->mix = NULL; break;
}
}
@@ -715,7 +664,7 @@ void MV_SetVoiceVolume(VoiceNode *voice, int32_t vol, int32_t left, int32_t righ
{
voice->RightVolume = MV_GetVolumeTable(right);
- if (MV_SwapLeftRight)
+ if (MV_ReverseStereo)
swapptr(&voice->LeftVolume, &voice->RightVolume);
}
@@ -843,33 +792,13 @@ void MV_SetReverbDelay(int32_t delay)
MV_ReverbDelay = max(MV_MIXBUFFERSIZE, min(delay, MV_GetMaxReverbDelay())) * MV_SampleSize;
}
-static int32_t MV_SetMixMode(int32_t numchannels, int32_t samplebits)
+static int32_t MV_SetMixMode(int32_t numchannels)
{
if (!MV_Installed)
return MV_Error;
- int32_t mode = 0;
-
- if (numchannels == 2)
- mode |= STEREO;
-
- if (samplebits == 16)
- mode |= SIXTEEN_BIT;
-
- MV_Channels = 1 + (mode & STEREO);
- MV_SampleSize = sizeof(int8_t) * MV_Channels;
-
- if (mode & SIXTEEN_BIT)
- {
- MV_Bits = 16;
- MV_Silence = SILENCE_16BIT;
- MV_SampleSize <<= 1;
- }
- else
- {
- MV_Bits = 8;
- MV_Silence = SILENCE_8BIT;
- }
+ MV_Channels = 1 + (numchannels == 2);
+ MV_SampleSize = sizeof(int8_t) * MV_Channels * 2;
MV_BufferSize = MV_MIXBUFFERSIZE * MV_SampleSize;
MV_NumberOfBuffers = MV_TOTALBUFFERSIZE / MV_BufferSize;
@@ -883,18 +812,14 @@ static int32_t MV_SetMixMode(int32_t numchannels, int32_t samplebits)
static int32_t MV_StartPlayback(void)
{
// Initialize the buffers
- ClearBuffer_DW(MV_MixBuffer[ 0 ], MV_Silence, MV_TOTALBUFFERSIZE >> 2);
+ Bmemset(MV_MixBuffer[0], 0, MV_TOTALBUFFERSIZE);
for (int buffer = 0; buffer < MV_NumberOfBuffers; buffer++)
- MV_BufferEmpty[ buffer ] = TRUE;
+ MV_BufferEmpty[buffer] = TRUE;
MV_MixPage = 1;
- MV_MixFunction = MV_Mix;
-
- int status = SoundDriver_BeginPlayback(MV_MixBuffer[0], MV_BufferSize, MV_NumberOfBuffers, MV_ServiceVoc);
-
- if (status != MV_Ok)
+ if (SoundDriver_BeginPlayback(MV_MixBuffer[0], MV_BufferSize, MV_NumberOfBuffers, MV_ServiceVoc) != MV_Ok)
{
MV_SetErrorCode(MV_DriverError);
return MV_Error;
@@ -925,38 +850,18 @@ static void MV_StopPlayback(void)
RestoreInterrupts();
}
-static void MV_CreateVolumeTable(int32_t index, int32_t volume, int32_t MaxVolume)
-{
- int const level = (volume * MaxVolume) / MV_MAXTOTALVOLUME;
-
- if (MV_Bits == 16)
- {
- for (int i = 0; i < 65536; i += 256)
- MV_VolumeTable[ index ][ i / 256 ] = ((i - 0x8000) * level) / MV_MAXVOLUME;
- }
- else
- {
- for (int i = 0; i < 256; i++)
- MV_VolumeTable[ volume ][ i ] = ((i - 0x80) * level) / MV_MAXVOLUME;
- }
-}
-
static void MV_CalcVolume(int32_t MaxVolume)
{
- for (int volume = 0; volume < 128; volume++)
- {
- MV_HarshClipTable[volume] = 0;
- MV_HarshClipTable[volume + 384] = 255;
- }
-
- for (int volume = 0; volume < 256; volume++)
- MV_HarshClipTable[volume + 128] = volume;
-
// For each volume level, create a translation table with the
// appropriate volume calculated.
for (int volume = 0; volume <= MV_MAXVOLUME; volume++)
- MV_CreateVolumeTable(volume, volume, MaxVolume);
+ {
+ int const level = (volume * MaxVolume) / MV_MAXTOTALVOLUME;
+
+ for (int i = 0; i < 65536; i += 256)
+ MV_VolumeTable[volume][i / 256] = ((i - 0x8000) * level) / MV_MAXVOLUME;
+ }
}
static void MV_CalcPanTable(void)
@@ -997,11 +902,11 @@ int32_t MV_GetVolume(void) { return MV_TotalVolume; }
void MV_SetCallBack(void (*function)(uint32_t)) { MV_CallBackFunc = function; }
-void MV_SetReverseStereo(int32_t setting) { MV_SwapLeftRight = setting; }
+void MV_SetReverseStereo(int32_t setting) { MV_ReverseStereo = setting; }
-int32_t MV_GetReverseStereo(void) { return MV_SwapLeftRight; }
+int32_t MV_GetReverseStereo(void) { return MV_ReverseStereo; }
-int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numchannels, int32_t samplebits, void *initdata)
+int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numchannels, void *initdata)
{
if (MV_Installed)
MV_Shutdown();
@@ -1009,7 +914,7 @@ int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numc
MV_SetErrorCode(MV_Ok);
// MV_TotalMemory + 2: FIXME, see valgrind_errors.log
- int const totalmem = Voices * sizeof(VoiceNode) + sizeof(HARSH_CLIP_TABLE_8) + MV_TOTALBUFFERSIZE + 2;
+ int const totalmem = Voices * sizeof(VoiceNode) + MV_TOTALBUFFERSIZE + 2;
char *ptr = (char *) Xaligned_alloc(16, totalmem);
@@ -1024,9 +929,6 @@ int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numc
MV_Voices = (VoiceNode *)ptr;
ptr += Voices * sizeof(VoiceNode);
- MV_HarshClipTable = ptr;
- ptr += sizeof(HARSH_CLIP_TABLE_8);
-
// Set number of voices before calculating volume table
MV_MaxVoices = Voices;
@@ -1043,19 +945,14 @@ int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numc
ASS_SoundDriver = soundcard;
// Initialize the sound card
- int32_t status = SoundDriver_Init(&MixRate, &numchannels, &samplebits, initdata);
- if (status != MV_Ok)
+ if (SoundDriver_Init(&MixRate, &numchannels, initdata) != MV_Ok)
MV_SetErrorCode(MV_DriverError);
if (MV_ErrorCode != MV_Ok)
{
- status = MV_ErrorCode;
-
ALIGNED_FREE_AND_NULL(MV_Voices);
- MV_HarshClipTable = NULL;
- MV_SetErrorCode(status);
return MV_Error;
}
@@ -1068,7 +965,7 @@ int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numc
MV_MixRate = MixRate;
// Set Mixer to play stereo digitized sound
- MV_SetMixMode(numchannels, samplebits);
+ MV_SetMixMode(numchannels);
MV_ReverbDelay = MV_BufferSize * 3;
// Make sure we don't cross a physical page
@@ -1085,11 +982,10 @@ int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numc
MV_SetVolume(MV_MAXTOTALVOLUME);
// Start the playback engine
- status = MV_StartPlayback();
- if (status != MV_Ok)
+ if (MV_StartPlayback() != MV_Ok)
{
// Preserve error code while we shutdown.
- status = MV_ErrorCode;
+ int status = MV_ErrorCode;
MV_Shutdown();
MV_SetErrorCode(status);
return MV_Error;
diff --git a/polymer/eduke32/source/jaudiolib/src/multivoc.h b/polymer/eduke32/source/jaudiolib/src/multivoc.h
index 87b2d0caf..a82e4c6e6 100644
--- a/polymer/eduke32/source/jaudiolib/src/multivoc.h
+++ b/polymer/eduke32/source/jaudiolib/src/multivoc.h
@@ -161,7 +161,7 @@ int32_t MV_GetVolume(void);
void MV_SetCallBack(void (*function)(uint32_t));
void MV_SetReverseStereo(int32_t setting);
int32_t MV_GetReverseStereo(void);
-int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numchannels, int32_t samplebits,
+int32_t MV_Init(int32_t soundcard, int32_t MixRate, int32_t Voices, int32_t numchannels,
void *initdata);
int32_t MV_Shutdown(void);
int32_t MV_SetVoiceCallback(int32_t handle, uint32_t callbackval);
diff --git a/polymer/eduke32/source/jaudiolib/src/vorbis.c b/polymer/eduke32/source/jaudiolib/src/vorbis.c
index fe9104f99..ced829f47 100644
--- a/polymer/eduke32/source/jaudiolib/src/vorbis.c
+++ b/polymer/eduke32/source/jaudiolib/src/vorbis.c
@@ -474,6 +474,10 @@ void MV_ReleaseVorbisVoice( VoiceNode * voice )
voice->rawdataptr = 0;
}
#else
+#include
+#include
+#include "_multivc.h"
+
int32_t MV_PlayVorbis(char *ptr, uint32_t ptrlength, int32_t loopstart, int32_t loopend, int32_t pitchoffset,
int32_t vol, int32_t left, int32_t right, int32_t priority, uint32_t callbackval)
{
diff --git a/polymer/eduke32/source/menus.c b/polymer/eduke32/source/menus.c
index 08c2c62fd..d5e7c6090 100644
--- a/polymer/eduke32/source/menus.c
+++ b/polymer/eduke32/source/menus.c
@@ -958,7 +958,7 @@ static MenuEntry_t ME_SAVE_TEMPLATE = MAKE_MENUENTRY( NULL, &MF_MinifontRed, &ME
static MenuEntry_t ME_SAVE[MAXSAVEGAMES];
static MenuEntry_t *MEL_SAVE[MAXSAVEGAMES];
-static int32_t soundrate, soundbits, soundvoices;
+static int32_t soundrate, soundvoices;
static MenuOption_t MEO_SOUND = MAKE_MENUOPTION( &MF_Redfont, &MEOS_OffOn, &ud.config.SoundToggle );
static MenuEntry_t ME_SOUND = MAKE_MENUENTRY( "Sound:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND, Option );
@@ -983,12 +983,6 @@ static MenuOptionSet_t MEOS_SOUND_SAMPLINGRATE = MAKE_MENUOPTIONSET( MEOSN_SOUND
static MenuOption_t MEO_SOUND_SAMPLINGRATE = MAKE_MENUOPTION( &MF_Redfont, &MEOS_SOUND_SAMPLINGRATE, &soundrate );
static MenuEntry_t ME_SOUND_SAMPLINGRATE = MAKE_MENUENTRY( "Sample rate:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_SAMPLINGRATE, Option );
-static char *MEOSN_SOUND_SAMPLESIZE[] = { "8-bit", "16-bit", };
-static int32_t MEOSV_SOUND_SAMPLESIZE[] = { 8, 16, };
-static MenuOptionSet_t MEOS_SOUND_SAMPLESIZE = MAKE_MENUOPTIONSET( MEOSN_SOUND_SAMPLESIZE, MEOSV_SOUND_SAMPLESIZE, 0x3 );
-static MenuOption_t MEO_SOUND_SAMPLESIZE = MAKE_MENUOPTION( &MF_Redfont, &MEOS_SOUND_SAMPLESIZE, &soundbits );
-static MenuEntry_t ME_SOUND_SAMPLESIZE = MAKE_MENUENTRY( "Sample size:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_SAMPLESIZE, Option );
-
static MenuRangeInt32_t MEO_SOUND_NUMVOICES = MAKE_MENURANGE( &soundvoices, &MF_Redfont, 16, 256, 0, 16, 1 );
static MenuEntry_t ME_SOUND_NUMVOICES = MAKE_MENUENTRY( "Voices:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_SOUND_NUMVOICES, RangeInt32 );
@@ -1015,7 +1009,6 @@ static MenuEntry_t *MEL_SOUND[] = {
static MenuEntry_t *MEL_ADVSOUND[] = {
&ME_SOUND_SAMPLINGRATE,
- &ME_SOUND_SAMPLESIZE,
&ME_Space2,
&ME_SOUND_NUMVOICES,
&ME_Space2,
@@ -1639,11 +1632,9 @@ static void M_PreMenu(MenuID_t cm)
MenuEntry_DisableOnCondition(&ME_SOUND_VOLUME_MUSIC, !ud.config.MusicToggle);
MenuEntry_DisableOnCondition(&ME_SOUND_DUKETALK, !ud.config.SoundToggle);
MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLINGRATE, !ud.config.SoundToggle && !ud.config.MusicToggle);
- MenuEntry_DisableOnCondition(&ME_SOUND_SAMPLESIZE, !ud.config.SoundToggle && !ud.config.MusicToggle);
MenuEntry_DisableOnCondition(&ME_SOUND_NUMVOICES, !ud.config.SoundToggle);
MenuEntry_DisableOnCondition(&ME_SOUND_RESTART, soundrate == ud.config.MixRate &&
- soundvoices == ud.config.NumVoices &&
- soundbits == ud.config.NumBits);
+ soundvoices == ud.config.NumVoices);
break;
case MENU_MOUSESETUP:
@@ -2588,7 +2579,6 @@ static void M_MenuEntryLinkActivate(MenuEntry_t *entry)
{
ud.config.MixRate = soundrate;
ud.config.NumVoices = soundvoices;
- ud.config.NumBits = soundbits;
S_SoundShutdown();
S_MusicShutdown();
@@ -3398,7 +3388,6 @@ void M_ChangeMenu(MenuID_t cm)
case MENU_ADVSOUND:
soundrate = ud.config.MixRate;
soundvoices = ud.config.NumVoices;
- soundbits = ud.config.NumBits;
break;
default:
diff --git a/polymer/eduke32/source/osdcmds.c b/polymer/eduke32/source/osdcmds.c
index 6866e8752..43f7a0a15 100644
--- a/polymer/eduke32/source/osdcmds.c
+++ b/polymer/eduke32/source/osdcmds.c
@@ -1632,7 +1632,6 @@ int32_t registerosdcommands(void)
{ "snd_mastervolume", "master volume for sound system", (void *)&ud.config.MasterVolume, CVAR_INT, 0, 255 },
{ "snd_fxvolume", "volume of sound effects", (void *)&ud.config.FXVolume, CVAR_INT, 1, 255 },
{ "snd_mixrate", "sound mixing rate", (void *)&ud.config.MixRate, CVAR_INT, 0, 48000 },
- { "snd_numbits", "sound bits", (void *)&ud.config.NumBits, CVAR_INT, 8, 16 },
{ "snd_numchannels", "the number of sound channels", (void *)&ud.config.NumChannels, CVAR_INT, 0, 2 },
{ "snd_numvoices", "the number of concurrent sounds", (void *)&ud.config.NumVoices, CVAR_INT, 0, 256 },
{ "snd_reversestereo", "reverses the stereo channels", (void *)&ud.config.ReverseStereo, CVAR_BOOL, 0, 16 },
diff --git a/polymer/eduke32/source/sounds.c b/polymer/eduke32/source/sounds.c
index 847493b50..7959dcc9d 100644
--- a/polymer/eduke32/source/sounds.c
+++ b/polymer/eduke32/source/sounds.c
@@ -64,7 +64,7 @@ void S_SoundStartup(void)
initprintf("Initializing sound... ");
- if (FX_Init(ASS_AutoDetect, ud.config.NumVoices, ud.config.NumChannels, ud.config.NumBits, ud.config.MixRate, initdata) != FX_Ok)
+ if (FX_Init(ASS_AutoDetect, ud.config.NumVoices, ud.config.NumChannels, ud.config.MixRate, initdata) != FX_Ok)
{
initprintf("failed! %s\n", FX_ErrorString(FX_Error));
return;
diff --git a/polymer/eduke32/source/sounds_mapster32.c b/polymer/eduke32/source/sounds_mapster32.c
index 7444cb683..cca859538 100644
--- a/polymer/eduke32/source/sounds_mapster32.c
+++ b/polymer/eduke32/source/sounds_mapster32.c
@@ -77,7 +77,7 @@ int32_t S_SoundStartup(void)
void *initdata = 0;
// TODO: read config
- int32_t FXVolume=220, /*NumVoices=32,*/ NumChannels=2, NumBits=16, ReverseStereo=0;
+ int32_t FXVolume=220, /*NumVoices=32,*/ NumChannels=2, ReverseStereo=0;
fxdevicetype = ASS_AutoDetect;
@@ -85,15 +85,14 @@ int32_t S_SoundStartup(void)
initdata = (void *) win_gethwnd(); // used for DirectSound
#endif
- status = FX_Init(fxdevicetype, NumVoices, NumChannels, NumBits, MixRate, initdata);
+ status = FX_Init(fxdevicetype, NumVoices, NumChannels, MixRate, initdata);
if (status == FX_Ok)
{
FX_SetVolume(FXVolume);
FX_SetReverseStereo(ReverseStereo);
- status = FX_SetCallBack(S_Callback);
+ FX_SetCallBack(S_Callback);
}
-
- if (status != FX_Ok)
+ else
{
initprintf("Sound startup error: %s\n", FX_ErrorString(FX_Error));
return -2;