aboutsummaryrefslogtreecommitdiff
path: root/engines/chewy/sound.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/chewy/sound.cpp')
-rw-r--r--engines/chewy/sound.cpp24
1 files changed, 16 insertions, 8 deletions
diff --git a/engines/chewy/sound.cpp b/engines/chewy/sound.cpp
index 41f91d0886..9ef4df97d9 100644
--- a/engines/chewy/sound.cpp
+++ b/engines/chewy/sound.cpp
@@ -31,8 +31,8 @@
namespace Chewy {
Sound::Sound() {
- _speechRes = new Resource("speech.tvp");
- _soundRes = new Resource("details.tap");
+ _speechRes = new SoundResource("speech.tvp");
+ _soundRes = new SoundResource("details.tap");
}
Sound::~Sound() {
@@ -41,16 +41,20 @@ Sound::~Sound() {
}
void Sound::playSound(int num, bool loop) {
- Chunk *chunk = _soundRes->getChunk(num);
- byte *data = _soundRes->getChunkData(num);
+ SoundChunk *sound = _soundRes->getSound(num);
+ byte *data = (byte *)malloc(sound->size);
+ memcpy(data, sound->data, sound->size);
Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
Audio::makeRawStream(data,
- chunk->size, 22050, Audio::FLAG_UNSIGNED,
+ sound->size, 22050, Audio::FLAG_UNSIGNED,
DisposeAfterUse::NO),
loop ? 0 : 1);
g_engine->_mixer->playStream(Audio::Mixer::kSFXSoundType, &_soundHandle, stream);
+
+ delete[] sound->data;
+ delete sound;
}
void Sound::playMusic(int num, bool loop) {
@@ -72,16 +76,20 @@ void Sound::playMusic(int num, bool loop) {
}
void Sound::playSpeech(int num) {
- Chunk *chunk = _speechRes->getChunk(num);
- byte *data = _speechRes->getChunkData(num);
+ SoundChunk *sound = _speechRes->getSound(num);
+ byte *data = (byte *)malloc(sound->size);
+ memcpy(data, sound->data, sound->size);
Audio::AudioStream *stream = Audio::makeLoopingAudioStream(
Audio::makeRawStream(data,
- chunk->size, 22050, Audio::FLAG_UNSIGNED,
+ sound->size, 22050, Audio::FLAG_UNSIGNED,
DisposeAfterUse::NO),
1);
g_engine->_mixer->playStream(Audio::Mixer::kSpeechSoundType, &_speechHandle, stream);
+
+ delete[] sound->data;
+ delete sound;
}
} // End of namespace Chewy