aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Lange2009-07-17 16:07:57 +0000
committerNorbert Lange2009-07-17 16:07:57 +0000
commitcfe2928d98ecb3bf593299a0cdd8c29c03e0f117 (patch)
treec7d8ddc988748becb335c0f7d46417f914159457
parentc0c25d234e7e886462a3663a22b7c88b2e4229db (diff)
downloadscummvm-rg350-cfe2928d98ecb3bf593299a0cdd8c29c03e0f117.tar.gz
scummvm-rg350-cfe2928d98ecb3bf593299a0cdd8c29c03e0f117.tar.bz2
scummvm-rg350-cfe2928d98ecb3bf593299a0cdd8c29c03e0f117.zip
added primitive support for Kyrandia`s Intro Music.
svn-id: r42567
-rw-r--r--dists/msvc9/kyra.vcproj4
-rw-r--r--engines/kyra/kyra_v1.cpp2
-rw-r--r--engines/kyra/module.mk1
-rw-r--r--engines/kyra/sound_intern.h28
-rw-r--r--sound/mods/maxtrax.cpp1
5 files changed, 35 insertions, 1 deletions
diff --git a/dists/msvc9/kyra.vcproj b/dists/msvc9/kyra.vcproj
index 24575c6d5d..683dde6449 100644
--- a/dists/msvc9/kyra.vcproj
+++ b/dists/msvc9/kyra.vcproj
@@ -502,6 +502,10 @@
>
</File>
<File
+ RelativePath="..\..\engines\kyra\sound_amiga.cpp"
+ >
+ </File>
+ <File
RelativePath="..\..\engines\kyra\sound_digital.cpp"
>
</File>
diff --git a/engines/kyra/kyra_v1.cpp b/engines/kyra/kyra_v1.cpp
index 80872877d5..a8889768a7 100644
--- a/engines/kyra/kyra_v1.cpp
+++ b/engines/kyra/kyra_v1.cpp
@@ -113,6 +113,8 @@ Common::Error KyraEngine_v1::init() {
_sound = new SoundPC98(this, _mixer);
else
_sound = new SoundTownsPC98_v2(this, _mixer);
+ } else if (_flags.platform == Common::kPlatformAmiga) {
+ _sound = new SoundAmiga(this, _mixer);
} else if (midiDriver == MD_ADLIB) {
_sound = new SoundAdlibPC(this, _mixer);
assert(_sound);
diff --git a/engines/kyra/module.mk b/engines/kyra/module.mk
index 7b0c0dfb68..b484fa345f 100644
--- a/engines/kyra/module.mk
+++ b/engines/kyra/module.mk
@@ -50,6 +50,7 @@ MODULE_OBJS := \
sequences_hof.o \
sequences_mr.o \
sound_adlib.o \
+ sound_amiga.o \
sound_digital.o \
sound_midi.o \
sound_pcspk.o \
diff --git a/engines/kyra/sound_intern.h b/engines/kyra/sound_intern.h
index 8792c14815..a41ca2258c 100644
--- a/engines/kyra/sound_intern.h
+++ b/engines/kyra/sound_intern.h
@@ -36,6 +36,7 @@
namespace Audio {
class PCSpeaker;
+class MaxTrax;
} // end of namespace Audio
namespace Kyra {
@@ -343,6 +344,33 @@ private:
static const uint8 _noteTable2[];
};
+class SoundAmiga : public Sound {
+public:
+ SoundAmiga(KyraEngine_v1 *vm, Audio::Mixer *mixer);
+ ~SoundAmiga();
+
+ virtual kType getMusicType() const { return kPC98; } //FIXME
+
+ bool init();
+
+ void process() {}
+ void loadSoundFile(uint file);
+ void loadSoundFile(Common::String);
+
+ void playTrack(uint8 track);
+ void haltTrack();
+ void beginFadeOut();
+
+ int32 voicePlay(const char *file, Audio::SoundHandle *handle, uint8 volume, bool isSfx) { return -1; }
+ void playSoundEffect(uint8);
+
+protected:
+ Audio::MaxTrax *_driver;
+ uint _fileLoaded;
+
+ static const char *const kFilenameTable[3][2];
+};
+
} // end of namespace Kyra
#endif
diff --git a/sound/mods/maxtrax.cpp b/sound/mods/maxtrax.cpp
index b72089261c..686a74864e 100644
--- a/sound/mods/maxtrax.cpp
+++ b/sound/mods/maxtrax.cpp
@@ -567,7 +567,6 @@ void MaxTrax::freePatches() {
}
memset(const_cast<Patch *>(_patch), 0, sizeof(_patch));
}
-// LONG PlayNote(UWORD note,UWORD patch,UWORD duration,UWORD volume,UWORD pan)
int MaxTrax::playNote(byte note, byte patch, uint16 duration, uint16 volume, bool rightSide) {
assert(patch < ARRAYSIZE(_patch));