aboutsummaryrefslogtreecommitdiff
path: root/engines/agos/res_snd.cpp
diff options
context:
space:
mode:
authorTravis Howell2006-10-23 01:37:59 +0000
committerTravis Howell2006-10-23 01:37:59 +0000
commit99d6e6db5ce2c0fcb8c3884d7b834ab6728daa66 (patch)
treede10147775e39e456d316bfc0f822cdc30bb71d0 /engines/agos/res_snd.cpp
parentf0a162e8bbfd06340ec63348f5fcfdaca7349bc1 (diff)
downloadscummvm-rg350-99d6e6db5ce2c0fcb8c3884d7b834ab6728daa66.tar.gz
scummvm-rg350-99d6e6db5ce2c0fcb8c3884d7b834ab6728daa66.tar.bz2
scummvm-rg350-99d6e6db5ce2c0fcb8c3884d7b834ab6728daa66.zip
Add patch to make ProTracker a subclass of AudioStream, from madmoose
svn-id: r24465
Diffstat (limited to 'engines/agos/res_snd.cpp')
-rw-r--r--engines/agos/res_snd.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/engines/agos/res_snd.cpp b/engines/agos/res_snd.cpp
index 56d88351f0..f7b917b62c 100644
--- a/engines/agos/res_snd.cpp
+++ b/engines/agos/res_snd.cpp
@@ -30,6 +30,7 @@
#include "agos/agos.h"
#include "agos/vga.h"
+#include "sound/audiostream.h"
#include "sound/mididrv.h"
#include "sound/mods/protracker.h"
@@ -118,8 +119,7 @@ void AGOSEngine::loadMusic(uint music) {
if (getPlatform() == Common::kPlatformAtariST) {
// TODO: Add support for music format used by Elvira 2
} else if (getPlatform() == Common::kPlatformAmiga) {
- assert(_modPlayer);
- _modPlayer->stop();
+ _mixer->stopHandle(_modHandle);
char filename[15];
File f;
@@ -134,8 +134,10 @@ void AGOSEngine::loadMusic(uint music) {
error("loadMusic: Can't load module from '%s'", filename);
}
+ Audio::AudioStream *audioStream;
if (!(getGameType() == GType_ELVIRA1 && getFeatures() & GF_DEMO) &&
getFeatures() & GF_CRUNCHED) {
+
uint srcSize = f.size();
byte *srcBuf = (byte *)malloc(srcSize);
if (f.read(srcBuf, srcSize) != srcSize)
@@ -147,11 +149,12 @@ void AGOSEngine::loadMusic(uint music) {
free(srcBuf);
Common::MemoryReadStream stream(dstBuf, dstSize);
- _modPlayer->loadModuleStream(stream);
+ audioStream = Audio::makeProtrackerStream(&stream, _mixer->getOutputRate());
} else {
- _modPlayer->loadModuleStream(f);
+ audioStream = Audio::makeProtrackerStream(&f, _mixer->getOutputRate());
}
- _modPlayer->start();
+
+ _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_modHandle, audioStream);
} else if (getGameType() == GType_SIMON2) {
midi.stop();
_gameFile->seek(_gameOffsetsPtr[_musicIndexBase + music - 1], SEEK_SET);