From 4f841548759e6bd05303225f10ff2a88d661a8eb Mon Sep 17 00:00:00 2001 From: Florian Kagerer Date: Sun, 29 Nov 2009 12:18:42 +0000 Subject: KYRA/PC98: fixed regression svn-id: r46190 --- engines/kyra/kyra_lok.cpp | 9 ++++++--- engines/kyra/sound.h | 7 +++++++ engines/kyra/sound_adlib.h | 1 + engines/kyra/sound_intern.h | 7 ++++++- engines/kyra/sound_towns.cpp | 22 ++++++---------------- 5 files changed, 26 insertions(+), 20 deletions(-) (limited to 'engines') diff --git a/engines/kyra/kyra_lok.cpp b/engines/kyra/kyra_lok.cpp index f578411724..14b18e9c19 100644 --- a/engines/kyra/kyra_lok.cpp +++ b/engines/kyra/kyra_lok.cpp @@ -197,10 +197,13 @@ Common::Error KyraEngine_LoK::init() { if (!_sound->init()) error("Couldn't init sound"); - if (_flags.platform == Common::kPlatformPC98) - _sound->loadSoundFile(k1PC98IntroSfx); - else + if (_flags.platform == Common::kPlatformPC98) { + int sfxSize; + const uint8 *sfxData = _staticres->loadRawData(k1PC98IntroSfx, sfxSize); + _sound->loadSoundFile(sfxData, sfxSize); + } else { _sound->loadSoundFile(0); + } setupButtonData(); diff --git a/engines/kyra/sound.h b/engines/kyra/sound.h index f04e96d6c9..98ca71f93d 100644 --- a/engines/kyra/sound.h +++ b/engines/kyra/sound.h @@ -107,6 +107,12 @@ public: */ virtual void loadSoundFile(Common::String file) = 0; + /** + * Load static data for playing sound + * effects from. + */ + virtual void loadSoundFile(const uint8 *soundData, int dataSize) = 0; + /** * Load a sound file for playing sound * effects from. @@ -268,6 +274,7 @@ public: bool hasSoundFile(uint file) const { return _music->hasSoundFile(file) && _sfx->hasSoundFile(file); } void loadSoundFile(uint file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); } void loadSoundFile(Common::String file) { _music->loadSoundFile(file); _sfx->loadSoundFile(file); } + void loadSoundFile(const uint8 *soundData, int dataSize) { _sfx->loadSoundFile(soundData, dataSize); } void loadSfxFile(Common::String file) { _sfx->loadSoundFile(file); } diff --git a/engines/kyra/sound_adlib.h b/engines/kyra/sound_adlib.h index d96eb5ab8f..25ef320dc5 100644 --- a/engines/kyra/sound_adlib.h +++ b/engines/kyra/sound_adlib.h @@ -72,6 +72,7 @@ public: void loadSoundFile(uint file); void loadSoundFile(Common::String file); + void loadSoundFile(const uint8 *soundData, int dataSize) {} void playTrack(uint8 track); void haltTrack(); diff --git a/engines/kyra/sound_intern.h b/engines/kyra/sound_intern.h index f4aab4db29..6ff9fe6ef8 100644 --- a/engines/kyra/sound_intern.h +++ b/engines/kyra/sound_intern.h @@ -62,6 +62,7 @@ public: void loadSoundFile(uint file); void loadSoundFile(Common::String file); + void loadSoundFile(const uint8 *soundData, int dataSize) {} void loadSfxFile(Common::String file); void playTrack(uint8 track); @@ -114,6 +115,7 @@ public: void loadSoundFile(uint file); void loadSoundFile(Common::String) {} + void loadSoundFile(const uint8 *soundData, int dataSize) {} void playTrack(uint8 track); void haltTrack(); @@ -170,8 +172,9 @@ public: bool init(); void process() {} - void loadSoundFile(uint file); + void loadSoundFile(uint file) {} void loadSoundFile(Common::String file); + void loadSoundFile(const uint8 *soundData, int dataSize); void playTrack(uint8 track); void haltTrack(); @@ -199,6 +202,7 @@ public: void loadSoundFile(uint file) {} void loadSoundFile(Common::String file); + void loadSoundFile(const uint8 *soundData, int dataSize) {} void playTrack(uint8 track); void haltTrack(); @@ -306,6 +310,7 @@ public: void process() {} void loadSoundFile(uint file); void loadSoundFile(Common::String) {} + void loadSoundFile(const uint8 *soundData, int dataSize) {} void playTrack(uint8 track); void haltTrack(); diff --git a/engines/kyra/sound_towns.cpp b/engines/kyra/sound_towns.cpp index d30098d5f7..93969deaa0 100644 --- a/engines/kyra/sound_towns.cpp +++ b/engines/kyra/sound_towns.cpp @@ -4049,27 +4049,17 @@ bool SoundPC98::init() { return _driver->init(); } -void SoundPC98::loadSoundFile(uint file) { - delete[] _sfxTrackData; - - int tmpSize; - const uint8 *tmp = _vm->staticres()->loadRawData((int) file, tmpSize); - - if (!tmp) { - warning("Failed to load static sound data with id %d.", file); - _sfxTrackData = 0; - return; - } - - _sfxTrackData = new uint8[tmpSize]; - memcpy(_sfxTrackData, tmp, tmpSize); -} - void SoundPC98::loadSoundFile(Common::String file) { delete[] _sfxTrackData; _sfxTrackData = _vm->resource()->fileData(file.c_str(), 0); } +void SoundPC98::loadSoundFile(const uint8 *soundData, int dataSize) { + delete[] _sfxTrackData; + _sfxTrackData = new uint8[dataSize]; + memcpy(_sfxTrackData, soundData, dataSize); +} + void SoundPC98::playTrack(uint8 track) { track += extraOffset(); -- cgit v1.2.3