aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorathrxx2015-11-10 17:16:52 +0100
committerathrxx2015-11-10 18:00:01 +0100
commitfb61f649035f8d823f4afa5302487d9a30009403 (patch)
treef266c8da03cdf5ae1f9f001256e7db72716f8802 /engines/scumm
parent91e6abd3050ed028bab3fd4d1746adb79fe8adcd (diff)
downloadscummvm-rg350-fb61f649035f8d823f4afa5302487d9a30009403.tar.gz
scummvm-rg350-fb61f649035f8d823f4afa5302487d9a30009403.tar.bz2
scummvm-rg350-fb61f649035f8d823f4afa5302487d9a30009403.zip
SCUMM: WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/players/player_towns.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/engines/scumm/players/player_towns.cpp b/engines/scumm/players/player_towns.cpp
index 67993888aa..d540fc4f6b 100644
--- a/engines/scumm/players/player_towns.cpp
+++ b/engines/scumm/players/player_towns.cpp
@@ -255,7 +255,9 @@ void Player_Towns_v1::startSound(int sound) {
uint16 len = READ_LE_UINT16(ptr) + 2;
playPcmTrack(sound, ptr + 6, velocity, 64, note ? note : (len > 50 ? ptr[50] : 60), READ_LE_UINT16(ptr + 10));
- } else if (type == 1) {
+ // WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted
+ // The resource for sound 40 accidently sets the sound type to 255 instead of 1.
+ } else if (type == 1 || (_vm->_game.id == GID_INDY3 && sound == 40)) {
playEuphonyTrack(sound, ptr + 6);
} else if (type == 2) {
@@ -410,7 +412,9 @@ void Player_Towns_v1::restoreAfterLoad() {
if (_vm->_game.version != 3)
ptr += 2;
- if (ptr[7] == 1) {
+ // WORKAROUND for bug #1873 INDY3 FMTOWNS: Music in Venice is distorted
+ // The resource for sound 40 accidently sets the sound type to 255 instead of 1.
+ if (ptr[7] == 1 || (_vm->_game.id == GID_INDY3 && _eupCurrentSound == 40)) {
setSoundVolume(_eupCurrentSound, _eupVolLeft, _eupVolRight);
playEuphonyTrack(_eupCurrentSound, ptr);
}