From 47255f4e31d456d0bb2e62ed20f20186013d0699 Mon Sep 17 00:00:00 2001 From: zicodxx <> Date: Thu, 19 Aug 2010 15:54:19 +0000 Subject: [PATCH] For each Music playback system defining own volume scaling definition which was wrong for SDL_mixer --- CHANGELOG.txt | 1 + arch/sdl/digi.c | 9 ++++++--- arch/sdl/digi_mixer_music.c | 1 + arch/sdl/rbaudio.c | 8 +++++--- main/songs.c | 6 +++--- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index f61e5d3ba..d0cee4bbf 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -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 -------- diff --git a/arch/sdl/digi.c b/arch/sdl/digi.c index 94b95d67a..1d8c71d02 100644 --- a/arch/sdl/digi.c +++ b/arch/sdl/digi.c @@ -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; } diff --git a/arch/sdl/digi_mixer_music.c b/arch/sdl/digi_mixer_music.c index 82ab77eab..e60c71295 100644 --- a/arch/sdl/digi_mixer_music.c +++ b/arch/sdl/digi_mixer_music.c @@ -100,6 +100,7 @@ void mix_free_music() void mix_set_music_volume(int vol) { + vol *= MIX_MAX_VOLUME/8; Mix_VolumeMusic(vol); } diff --git a/arch/sdl/rbaudio.c b/arch/sdl/rbaudio.c index 7304a530e..6bb9d464b 100644 --- a/arch/sdl/rbaudio.c +++ b/arch/sdl/rbaudio.c @@ -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; } diff --git a/main/songs.c b/main/songs.c index 5b95159e7..c9beed0ed 100644 --- a/main/songs.c +++ b/main/songs.c @@ -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 }