[Scummvm-cvs-logs] SF.net SVN: scummvm:[39409] scummvm/trunk/engines/parallaction
Kirben at users.sourceforge.net
Kirben at users.sourceforge.net
Sun Mar 15 07:07:57 CET 2009
Revision: 39409
http://scummvm.svn.sourceforge.net/scummvm/?rev=39409&view=rev
Author: Kirben
Date: 2009-03-15 06:07:57 +0000 (Sun, 15 Mar 2009)
Log Message:
-----------
Enable music in Amiga version of BRA too.
Modified Paths:
--------------
scummvm/trunk/engines/parallaction/disk_br.cpp
scummvm/trunk/engines/parallaction/parallaction_br.cpp
scummvm/trunk/engines/parallaction/sound.h
scummvm/trunk/engines/parallaction/sound_br.cpp
Modified: scummvm/trunk/engines/parallaction/disk_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/disk_br.cpp 2009-03-15 04:34:00 UTC (rev 39408)
+++ scummvm/trunk/engines/parallaction/disk_br.cpp 2009-03-15 06:07:57 UTC (rev 39409)
@@ -480,23 +480,18 @@
delete stream;
}
#if 0
- if (mask && _mskDir.exists()) {
- filepath = Common::String(mask) + ".msk";
- node = _mskDir.getChild(filepath);
- if (!node.exists()) {
- filepath = Common::String(mask) + ".msk";
- node = _commonMskDir.getChild(filepath);
- }
-
- if (node.exists()) {
- stream.open(node);
- stream.seek(0x30, SEEK_SET);
- Graphics::PackBitsReadStream unpackedStream(stream);
- info.mask.create(info.width, info.height);
- unpackedStream.read(info.mask.data, info.mask.size);
+ if (mask) {
+ stream = tryOpenFile("msk/" + Common::String(path), ".msk");
+ if (stream) {
+ Graphics::PackBitsReadStream unpackedStream(*stream);
+ info._mask = new MaskBuffer;
+ info._mask->create(info.width, info.height);
+ unpackedStream.read(info._mask->data, info._mask->size);
// TODO: there is another step to do after decompression...
- loadMask(info, stream);
- stream.close();
+ loadMask(mask, *info._mask);
+ delete stream;
+ } else {
+ debugC(1, kDebugDisk, "AmigaDisk_br::loadScenery: (%s) not found", mask);
}
}
#endif
@@ -603,7 +598,7 @@
Common::SeekableReadStream* AmigaDisk_br::loadMusic(const char* name) {
debugC(5, kDebugDisk, "AmigaDisk_br::loadMusic");
- return openFile("msc/" + Common::String(name), ".msc");
+ return tryOpenFile("msc/" + Common::String(name), ".msc");
}
Modified: scummvm/trunk/engines/parallaction/parallaction_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/parallaction_br.cpp 2009-03-15 04:34:00 UTC (rev 39408)
+++ scummvm/trunk/engines/parallaction/parallaction_br.cpp 2009-03-15 06:07:57 UTC (rev 39409)
@@ -66,6 +66,7 @@
} else {
_disk = new AmigaDisk_br(this);
_disk->setLanguage(2); // NOTE: language is now hardcoded to English. Original used command-line parameters.
+ _soundManI = new AmigaSoundMan_br(this);
}
_disk->init();
Modified: scummvm/trunk/engines/parallaction/sound.h
===================================================================
--- scummvm/trunk/engines/parallaction/sound.h 2009-03-15 04:34:00 UTC (rev 39408)
+++ scummvm/trunk/engines/parallaction/sound.h 2009-03-15 06:07:57 UTC (rev 39409)
@@ -182,6 +182,8 @@
class SoundMan_br : public SoundManImpl {
protected:
+ Audio::Mixer *_mixer;
+
Common::String _musicFile;
virtual void playMusic() = 0;
@@ -206,6 +208,20 @@
void pause(bool p);
};
+class AmigaSoundMan_br : public SoundMan_br {
+
+ Audio::AudioStream *_musicStream;
+ Audio::SoundHandle _musicHandle;
+
+public:
+ AmigaSoundMan_br(Parallaction_br *vm);
+ ~AmigaSoundMan_br();
+
+ void playMusic();
+ void stopMusic();
+ void pause(bool p);
+};
+
} // namespace Parallaction
#endif
Modified: scummvm/trunk/engines/parallaction/sound_br.cpp
===================================================================
--- scummvm/trunk/engines/parallaction/sound_br.cpp 2009-03-15 04:34:00 UTC (rev 39408)
+++ scummvm/trunk/engines/parallaction/sound_br.cpp 2009-03-15 06:07:57 UTC (rev 39409)
@@ -26,8 +26,11 @@
#include "sound/mixer.h"
#include "common/stream.h"
#include "common/util.h"
+
+#include "sound/mixer.h"
#include "sound/mididrv.h"
#include "sound/midiparser.h"
+#include "sound/mods/protracker.h"
#include "parallaction/disk.h"
#include "parallaction/parallaction.h"
@@ -416,6 +419,44 @@
_midiPlayer->pause(p);
}
+AmigaSoundMan_br::AmigaSoundMan_br(Parallaction_br *vm) {
+ _musicStream = 0;
+}
+
+AmigaSoundMan_br::~AmigaSoundMan_br() {
+}
+
+void AmigaSoundMan_br::playMusic() {
+ stopMusic();
+
+ debugC(1, kDebugAudio, "AmigaSoundMan_ns::playMusic()");
+
+ Common::SeekableReadStream *stream = _vm->_disk->loadMusic(_musicFile.c_str());
+ if (!stream)
+ return;
+
+ _musicStream = Audio::makeProtrackerStream(stream);
+ delete stream;
+
+ debugC(3, kDebugAudio, "AmigaSoundMan_ns::playMusic(): created new music stream");
+
+ _mixer->playInputStream(Audio::Mixer::kMusicSoundType, &_musicHandle, _musicStream, -1, 255, 0, false, false);
+}
+
+void AmigaSoundMan_br::stopMusic() {
+ debugC(1, kDebugAudio, "AmigaSoundMan_ns::stopMusic()");
+
+ if (_mixer->isSoundHandleActive(_musicHandle)) {
+ _mixer->stopHandle(_musicHandle);
+ delete _musicStream;
+ _musicStream = 0;
+ }
+}
+
+void AmigaSoundMan_br::pause(bool p) {
+ _mixer->pauseHandle(_musicHandle, p);
+}
+
void SoundMan_br::setMusicFile(const char *name) {
_musicFile = name;
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list