diff --git a/source/common/music/i_music.cpp b/source/common/music/i_music.cpp index 42a07bf58..6ae04e6df 100644 --- a/source/common/music/i_music.cpp +++ b/source/common/music/i_music.cpp @@ -51,6 +51,7 @@ #include "i_soundfont.h" #include "s_music.h" #include "printf.h" +#include "timer.h" #include "zmusic/zmusic.h" #include "streamsources/streamsource.h" #include "filereadermusicinterface.h" @@ -255,6 +256,7 @@ void Mus_Init(void) ZMusic_SetCallbacks(&callbacks); SetupGenMidi(); + timerSetCallback(S_UpdateMusic); } diff --git a/source/common/music/i_music.h b/source/common/music/i_music.h index 958ed4511..5574f58c8 100644 --- a/source/common/music/i_music.h +++ b/source/common/music/i_music.h @@ -39,7 +39,6 @@ class FileReader; // // MUSIC I/O // -void I_InitMusic (); // Volume. void I_SetRelativeVolume(float); diff --git a/source/common/music/music.cpp b/source/common/music/music.cpp index ca3b816ae..837c456d8 100644 --- a/source/common/music/music.cpp +++ b/source/common/music/music.cpp @@ -208,6 +208,7 @@ bool S_ChangeMusic(const char* musicname, int order, bool looping, bool force) mus_playing.LastSong = ""; return true; } + if (*musicname == '/') musicname++; FString DEH_Music; diff --git a/source/common/music/musicstream.cpp b/source/common/music/musicstream.cpp index 4fd888920..7926d45f6 100644 --- a/source/common/music/musicstream.cpp +++ b/source/common/music/musicstream.cpp @@ -48,7 +48,7 @@ static playbackstatus MV_GetNextZMusicBlock(VoiceNode *voice) } voice->sound = (const char*)buffer[whichbuffer]; - voice->length = 8192; + voice->length = 8192 << 16; voice->position = 0; voice->BlockLength = 0; whichbuffer ^= 1; diff --git a/source/duke3d/src/sounds.cpp b/source/duke3d/src/sounds.cpp index fb5e7c0b8..4ccd0f2a7 100644 --- a/source/duke3d/src/sounds.cpp +++ b/source/duke3d/src/sounds.cpp @@ -380,7 +380,7 @@ void S_PlayLevelMusicOrNothing(unsigned int m) { if (S_TryPlayLevelMusic(m)) { - S_StopMusic(); + //S_StopMusic(); S_SetMusicIndex(m); } } @@ -404,7 +404,7 @@ void S_PlaySpecialMusicOrNothing(unsigned int m) { if (S_TryPlaySpecialMusic(m)) { - S_StopMusic(); + //S_StopMusic(); S_SetMusicIndex(m); } } diff --git a/source/rr/src/sounds.cpp b/source/rr/src/sounds.cpp index 8bad79e1a..bd27e7864 100644 --- a/source/rr/src/sounds.cpp +++ b/source/rr/src/sounds.cpp @@ -340,7 +340,7 @@ void S_PlayLevelMusicOrNothing(unsigned int m) { if (S_TryPlayLevelMusic(m)) { - S_StopMusic(); + //S_StopMusic(); S_SetMusicIndex(m); } } @@ -380,7 +380,7 @@ void S_PlaySpecialMusicOrNothing(unsigned int m) { if (S_TryPlaySpecialMusic(m)) { - S_StopMusic(); + //S_StopMusic(); S_SetMusicIndex(m); } }