aboutsummaryrefslogtreecommitdiff
path: root/engines/kyra/sound_towns.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/kyra/sound_towns.cpp')
-rw-r--r--engines/kyra/sound_towns.cpp22
1 files changed, 16 insertions, 6 deletions
diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp
index fe0a44c052..0c67b1e83a 100644
--- a/engines/kyra/sound_towns.cpp
+++ b/engines/kyra/sound_towns.cpp
@@ -4069,12 +4069,25 @@ SoundPC98::~SoundPC98() {
bool SoundPC98::init() {
_driver = new TownsPC98_OpnDriver(_mixer, TownsPC98_OpnDriver::OD_TYPE26);
- _sfxTrackData = _vm->resource()->fileData("se.dat", 0);
- if (!_sfxTrackData)
- return false;
+
return _driver->init();
}
+void SoundPC98::loadSoundFile(Common::String file) {
+ if (_sfxTrackData)
+ delete _sfxTrackData;
+
+ _sfxTrackData = _vm->resource()->fileData(file.c_str(), 0);
+}
+
+void SoundPC98::loadSoundFile(const uint8 *data, int len) {
+ if (_sfxTrackData)
+ delete _sfxTrackData;
+
+ _sfxTrackData = new uint8[len];
+ memcpy(_sfxTrackData, data, len);
+}
+
void SoundPC98::playTrack(uint8 track) {
track += extraOffset();
@@ -4119,9 +4132,6 @@ void SoundPC98::playSoundEffect(uint8 track) {
if (!_sfxTrackData)
return;
- // This has been disabled for now since I don't know
- // how to make up the correct track number. It probably
- // needs a map.
_driver->loadSoundEffectData(_sfxTrackData, track);
}