aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/scumm/smush/channel.h8
-rw-r--r--engines/scumm/smush/saud_channel.cpp7
-rw-r--r--engines/scumm/smush/smush_mixer.cpp4
3 files changed, 8 insertions, 11 deletions
diff --git a/engines/scumm/smush/channel.h b/engines/scumm/smush/channel.h
index 9f3c4ad31f..633c87a8c4 100644
--- a/engines/scumm/smush/channel.h
+++ b/engines/scumm/smush/channel.h
@@ -87,12 +87,12 @@ public:
bool checkParameters(int32 index, int32 duration, int32 flags, int32 vol1, int32 vol2);
bool appendData(Chunk &b, int32 size);
int32 getAvailableSoundDataSize() const;
- void getSoundData(int16 *sound_buffer, int32 size);
- void getSoundData(int8 *sound_buffer, int32 size) { error("8bit request for SAUD channel should never happen"); };
+ void getSoundData(int16 *sound_buffer, int32 size) { error("16bit request for SAUD channel should never happen"); };
+ void getSoundData(int8 *sound_buffer, int32 size);
int32 getRate() { return 22050; }
bool getParameters(bool &stereo, bool &is_16bit, int32 &vol, int32 &pan) {
- stereo = true;
- is_16bit = true;
+ stereo = false;
+ is_16bit = false;
vol = _volume;
pan = _pan;
return true;
diff --git a/engines/scumm/smush/saud_channel.cpp b/engines/scumm/smush/saud_channel.cpp
index 25066f85cf..86ed7811ca 100644
--- a/engines/scumm/smush/saud_channel.cpp
+++ b/engines/scumm/smush/saud_channel.cpp
@@ -184,11 +184,8 @@ int32 SaudChannel::getAvailableSoundDataSize(void) const {
return _sbufferSize;
}
-void SaudChannel::getSoundData(int16 *snd, int32 size) {
- for (int32 i = 0; i < size; i++) {
- snd[2 * i] = TO_LE_16(_sbuffer[i] ^ 0x80);
- snd[2 * i + 1] = TO_LE_16(_sbuffer[i] ^ 0x80);
- }
+void SaudChannel::getSoundData(int8 *snd, int32 size) {
+ memcpy(snd, _sbuffer, size);
if (!_keepSize)
_dataSize -= size;
delete []_sbuffer;
diff --git a/engines/scumm/smush/smush_mixer.cpp b/engines/scumm/smush/smush_mixer.cpp
index fbf6ee1ad1..ea5d167193 100644
--- a/engines/scumm/smush/smush_mixer.cpp
+++ b/engines/scumm/smush/smush_mixer.cpp
@@ -113,14 +113,14 @@ bool SmushMixer::handleFrame() {
byte flags = stereo ? Audio::Mixer::FLAG_STEREO : 0;
if (is_16bit) {
- data = malloc(size * (stereo ? 2 : 1) * 4);
+ data = malloc(size * (stereo ? 4 : 2));
_channels[i].chan->getSoundData((int16 *)data, size);
size *= stereo ? 4 : 2;
flags |= Audio::Mixer::FLAG_16BITS;
} else {
- data = malloc(size * (stereo ? 2 : 1) * 2);
+ data = malloc(size * (stereo ? 2 : 1));
_channels[i].chan->getSoundData((int8 *)data, size);
size *= stereo ? 2 : 1;