From 11b62275179e6a7df5cece9581c62fb60ac81719 Mon Sep 17 00:00:00 2001 From: Joseph-Eugene Winzer Date: Fri, 30 Jun 2017 16:00:14 +0200 Subject: SUPERNOVA: Buffer Music files --- engines/supernova/supernova.cpp | 18 ++++++++++-------- engines/supernova/supernova.h | 1 + 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'engines/supernova') diff --git a/engines/supernova/supernova.cpp b/engines/supernova/supernova.cpp index 0929f6c19d..8086753e13 100644 --- a/engines/supernova/supernova.cpp +++ b/engines/supernova/supernova.cpp @@ -121,6 +121,8 @@ SupernovaEngine::~SupernovaEngine() { for (int i = 0; i < kAudioNumSamples; ++i) { delete[] _soundSamples[i]._buffer; } + delete _soundMusic[0]; + delete _soundMusic[1]; } Common::Error SupernovaEngine::run() { @@ -217,6 +219,9 @@ void SupernovaEngine::initData() { file.close(); } + _soundMusic[0] = convertToMod("msn_data.049"); + _soundMusic[1] = convertToMod("msn_data.052"); + // Cursor const uint16 *bufferNormal = reinterpret_cast(mouseNormal); const uint16 *bufferWait = reinterpret_cast(mouseWait); @@ -261,14 +266,11 @@ void SupernovaEngine::playSoundMod(int filenumber) return; } - Common::MemoryReadStream *modBuffer; - modBuffer = convertToMod(Common::String::format("msn_data.%03d", filenumber).c_str()); - - if (modBuffer) { - Audio::AudioStream *audioStream = Audio::makeProtrackerStream(modBuffer); - stopSound(); - _mixer->playStream(Audio::Mixer::kMusicSoundType, &_soundHandle, audioStream); - } + int index = filenumber == 49 ? 0 : 1; + Audio::AudioStream *audioStream = Audio::makeProtrackerStream(_soundMusic[index]); + stopSound(); + _mixer->playStream(Audio::Mixer::kMusicSoundType, &_soundHandle, audioStream, + -1, Audio::Mixer::kMaxChannelVolume, 0, DisposeAfterUse::NO); } void SupernovaEngine::renderImage(MSNImageDecoder &image, int section, bool fullscreen) { diff --git a/engines/supernova/supernova.h b/engines/supernova/supernova.h index 53fd796bd7..7362438a69 100644 --- a/engines/supernova/supernova.h +++ b/engines/supernova/supernova.h @@ -90,6 +90,7 @@ public: byte *_buffer; int _length; } _soundSamples[kAudioNumSamples]; + Common::MemoryReadStream *_soundMusic[2]; Common::Event _event; bool _gameRunning; int _screenWidth; -- cgit v1.2.3