For each Music playback system defining own volume scaling definition which was wrong for SDL_mixer

This commit is contained in:
zicodxx 2010-08-19 15:54:19 +00:00
parent 709496a932
commit 47255f4e31
5 changed files with 16 additions and 9 deletions

View file

@ -4,6 +4,7 @@ D2X-Rebirth Changelog
--------
d2x-rebirth/main/multi.c, d2x-rebirth/main/bmread.c, d2x-rebirth/main/bmread.h, d2x-rebirth/main/paging.c, d2x-rebirth/main/piggy.c, d2x-rebirth/main/render.c, d2x-rebirth/main/net_ipx.c, d2x-rebirth/main/dumpmine.c, d2x-rebirth/main/editor/kmine.c, d2x-rebirth/main/editor/mine.c, d2x-rebirth/main/editor/group.c, d2x-rebirth/main/editor/med.c, d2x-rebirth/main/editor/eswitch.c, d2x-rebirth/main/editor/medwall.c, d2x-rebirth/main/kconfig.c, d2x-rebirth/main/gamecntl.c, d2x-rebirth/ui/window.c, d2x-rebirth/ui/keypad.c, d2x-rebirth/mem/mem.c: Patching together editor so it compiles again (while still not running); Implemented PhysFS for file accessing for editor- and debugging-related code
main/gamecntl.c: Removed processing of HandleVRKey() as this code is not usable anymore and blocks some system keys (removal of general VR-code will follow later)
main/songs.c, arch/sdl/digi_mixer_music.c, arch/sdl/rbaudio.c, arch/sdl/digi.c: For each Music playback system defining own volume scaling definition which was wrong for SDL_mixer
20100817
--------

View file

@ -145,17 +145,20 @@ void digi_debug()
#ifdef _WIN32
// Windows native-MIDI stuff.
#define MIDI_VOLUME_SCALE 128
int digi_win32_midi_song_playing=0;
static hmp_file *cur_hmp=NULL;
void digi_win32_set_midi_volume( int mvolume )
{
int mm_volume, midi_volume=0;
mvolume *= MIDI_VOLUME_SCALE/8;
if (mvolume < 0)
midi_volume = 0;
else if (mvolume > 127)
midi_volume = 127;
else if (mvolume > MIDI_VOLUME_SCALE-1)
midi_volume = MIDI_VOLUME_SCALE-1;
else
midi_volume = mvolume;
@ -179,7 +182,7 @@ int digi_win32_play_midi_song( char * filename, int loop )
if (hmp_play(cur_hmp,loop) != 0)
return 0; // error
digi_win32_midi_song_playing = 1;
digi_win32_set_midi_volume((GameCfg.MusicVolume*128)/8);
digi_win32_set_midi_volume((GameCfg.MusicVolume*MIDI_VOLUME_SCALE)/8);
return 1;
}

View file

@ -100,6 +100,7 @@ void mix_free_music()
void mix_set_music_volume(int vol)
{
vol *= MIX_MAX_VOLUME/8;
Mix_VolumeMusic(vol);
}

View file

@ -23,6 +23,8 @@
#include "console.h"
#include "timer.h"
#define REDBOOK_VOLUME_SCALE 255
static SDL_CD *s_cd = NULL;
static int initialised = 0;
@ -140,10 +142,10 @@ void RBASetVolume(int volume)
if (!s_cd) return;
cdfile = s_cd->id;
level = volume;
level = volume*REDBOOK_VOLUME_SCALE/8;
if ((level<0) || (level>255)) {
con_printf(CON_CRITICAL, "illegal volume value (allowed values 0-255)\n");
if ((level<0) || (level>REDBOOK_VOLUME_SCALE)) {
con_printf(CON_CRITICAL, "illegal volume value (allowed values 0-%i)\n",REDBOOK_VOLUME_SCALE);
return;
}

View file

@ -49,15 +49,15 @@ void songs_set_volume(int volume)
{
#ifdef _WIN32
if (GameArg.SndDisableSdlMixer)
digi_win32_set_midi_volume((volume*128)/8);
digi_win32_set_midi_volume(volume);
#endif
if (GameCfg.MusicType == MUSIC_TYPE_REDBOOK)
{
RBASetVolume(0);
RBASetVolume(volume*EXTMUSIC_VOLUME_SCALE/8);
RBASetVolume(volume);
}
#ifdef USE_SDLMIXER
mix_set_music_volume(volume*EXTMUSIC_VOLUME_SCALE/8);
mix_set_music_volume(volume);
#endif
}