aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/dreamweb.cpp
diff options
context:
space:
mode:
authorMax Horn2011-12-07 16:06:34 +0100
committerMax Horn2011-12-07 21:58:31 +0100
commit45a99e727675913f77100d2e4957c763ccb7546d (patch)
treeec41e1de784d6bcc3f1cde268d1a1be99bc18304 /engines/dreamweb/dreamweb.cpp
parent11b1ec1bc6f29e470ad8e22b3a802edbdbae0889 (diff)
downloadscummvm-rg350-45a99e727675913f77100d2e4957c763ccb7546d.tar.gz
scummvm-rg350-45a99e727675913f77100d2e4957c763ccb7546d.tar.bz2
scummvm-rg350-45a99e727675913f77100d2e4957c763ccb7546d.zip
DREAMWEB: Move sound related code to a new source file
Diffstat (limited to 'engines/dreamweb/dreamweb.cpp')
-rw-r--r--engines/dreamweb/dreamweb.cpp167
1 files changed, 0 insertions, 167 deletions
diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp
index df39c4dfd6..451d8ff13d 100644
--- a/engines/dreamweb/dreamweb.cpp
+++ b/engines/dreamweb/dreamweb.cpp
@@ -30,9 +30,6 @@
#include "common/timer.h"
#include "common/util.h"
-#include "audio/mixer.h"
-#include "audio/decoders/raw.h"
-
#include "graphics/palette.h"
#include "graphics/surface.h"
@@ -377,170 +374,6 @@ void DreamWebEngine::cls() {
_system->fillScreen(0);
}
-void DreamWebEngine::playSound(uint8 channel, uint8 id, uint8 loops) {
- debug(1, "playSound(%u, %u, %u)", channel, id, loops);
-
- int bank = 0;
- bool speech = false;
- Audio::Mixer::SoundType type = channel == 0?
- Audio::Mixer::kMusicSoundType: Audio::Mixer::kSFXSoundType;
-
- if (id >= 12) {
- id -= 12;
- bank = 1;
- if (id == 50) {
- speech = true;
- type = Audio::Mixer::kSpeechSoundType;
- }
- }
- const SoundData &data = _soundData[bank];
-
- Audio::SeekableAudioStream *raw;
- if (!speech) {
- if (id >= data.samples.size() || data.samples[id].size == 0) {
- warning("invalid sample #%u played", id);
- return;
- }
-
- const Sample &sample = data.samples[id];
- uint8 *buffer = (uint8 *)malloc(sample.size);
- if (!buffer)
- error("out of memory: cannot allocate memory for sound(%u bytes)", sample.size);
- memcpy(buffer, data.data.begin() + sample.offset, sample.size);
-
- raw = Audio::makeRawStream(
- buffer,
- sample.size, 22050, Audio::FLAG_UNSIGNED);
- } else {
- uint8 *buffer = (uint8 *)malloc(_speechData.size());
- if (!buffer)
- error("out of memory: cannot allocate memory for sound(%u bytes)", _speechData.size());
- memcpy(buffer, _speechData.begin(), _speechData.size());
- raw = Audio::makeRawStream(
- buffer,
- _speechData.size(), 22050, Audio::FLAG_UNSIGNED);
-
- }
-
- Audio::AudioStream *stream;
- if (loops > 1) {
- stream = new Audio::LoopingAudioStream(raw, loops < 255? loops: 0);
- } else
- stream = raw;
-
- if (_mixer->isSoundHandleActive(_channelHandle[channel]))
- _mixer->stopHandle(_channelHandle[channel]);
- _mixer->playStream(type, &_channelHandle[channel], stream);
-}
-
-void DreamWebEngine::stopSound(uint8 channel) {
- debug(1, "stopSound(%u)", channel);
- assert(channel == 0 || channel == 1);
- _mixer->stopHandle(_channelHandle[channel]);
- if (channel == 0)
- _channel0 = 0;
- else
- _channel1 = 0;
-}
-
-bool DreamWebEngine::loadSpeech(const Common::String &filename) {
- if (ConfMan.getBool("speech_mute"))
- return false;
-
- Common::File file;
- if (!file.open("speech/" + filename))
- return false;
-
- debug(1, "loadSpeech(%s)", filename.c_str());
-
- uint size = file.size();
- _speechData.resize(size);
- file.read(_speechData.begin(), size);
- file.close();
- return true;
-}
-
-void DreamWebEngine::soundHandler() {
- _base.data.byte(DreamGen::kSubtitles) = ConfMan.getBool("subtitles");
- _base.volumeAdjust();
-
- uint volume = _base.data.byte(DreamGen::kVolume);
- //.vol file loaded into soundbuf:0x4000
- //volume table at (volume * 0x100 + 0x3f00)
- //volume value could be from 1 to 7
- //1 - 0x10-0xff
- //2 - 0x1f-0xdf
- //3 - 0x2f-0xd0
- //4 - 0x3e-0xc1
- //5 - 0x4d-0xb2
- //6 - 0x5d-0xa2
- //7 - 0x6f-0x91
- if (volume >= 8)
- volume = 7;
- volume = (8 - volume) * Audio::Mixer::kMaxChannelVolume / 8;
- _mixer->setChannelVolume(_channelHandle[0], volume);
-
- uint8 ch0 = _base.data.byte(DreamGen::kCh0playing);
- if (ch0 == 255)
- ch0 = 0;
- uint8 ch1 = _base.data.byte(DreamGen::kCh1playing);
- if (ch1 == 255)
- ch1 = 0;
- uint8 ch0loop = _base.data.byte(DreamGen::kCh0repeat);
-
- if (_channel0 != ch0) {
- _channel0 = ch0;
- if (ch0) {
- playSound(0, ch0, ch0loop);
- }
- }
- if (_channel1 != ch1) {
- _channel1 = ch1;
- if (ch1) {
- playSound(1, ch1, 1);
- }
- }
- if (!_mixer->isSoundHandleActive(_channelHandle[0])) {
- _base.data.byte(DreamGen::kCh0playing) = 255;
- _channel0 = 0;
- }
- if (!_mixer->isSoundHandleActive(_channelHandle[1])) {
- _base.data.byte(DreamGen::kCh1playing) = 255;
- _channel1 = 0;
- }
-
-}
-
-void DreamWebEngine::loadSounds(uint bank, const Common::String &filename) {
- debug(1, "loadSounds(%u, %s)", bank, filename.c_str());
- Common::File file;
- if (!file.open(filename)) {
- warning("cannot open %s", filename.c_str());
- return;
- }
-
- uint8 header[0x60];
- file.read(header, sizeof(header));
- uint tablesize = READ_LE_UINT16(header + 0x32);
- debug(1, "table size = %u", tablesize);
-
- SoundData &soundData = _soundData[bank];
- soundData.samples.resize(tablesize / 6);
- uint total = 0;
- for(uint i = 0; i < tablesize / 6; ++i) {
- uint8 entry[6];
- Sample &sample = soundData.samples[i];
- file.read(entry, sizeof(entry));
- sample.offset = entry[0] * 0x4000 + READ_LE_UINT16(entry + 1);
- sample.size = READ_LE_UINT16(entry + 3) * 0x800;
- total += sample.size;
- debug(1, "offset: %08x, size: %u", sample.offset, sample.size);
- }
- soundData.data.resize(total);
- file.read(soundData.data.begin(), total);
- file.close();
-}
-
uint8 DreamWebEngine::modifyChar(uint8 c) const {
if (c < 128)
return c;