aboutsummaryrefslogtreecommitdiff
path: root/engines/scumm
diff options
context:
space:
mode:
authorathrxx2011-09-13 23:10:02 +0200
committerathrxx2011-09-17 21:15:41 +0200
commit867f2887e8b3c74dda2b66ea58a26148286db1a3 (patch)
tree005f3507572c6540f0462a790187491765614f9e /engines/scumm
parent9c5415b6ae63a685abdbb523bdb091b9e8feebb0 (diff)
downloadscummvm-rg350-867f2887e8b3c74dda2b66ea58a26148286db1a3.tar.gz
scummvm-rg350-867f2887e8b3c74dda2b66ea58a26148286db1a3.tar.bz2
scummvm-rg350-867f2887e8b3c74dda2b66ea58a26148286db1a3.zip
SCUMM FM-TOWNS: fix invalid mem accesses
- handle some invalid sound resources that come up when starting LOOM - fix typo in midi driver code (causing invalid mem reads)
Diffstat (limited to 'engines/scumm')
-rw-r--r--engines/scumm/player_towns.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/engines/scumm/player_towns.cpp b/engines/scumm/player_towns.cpp
index dd7630d370..f6f493a1e1 100644
--- a/engines/scumm/player_towns.cpp
+++ b/engines/scumm/player_towns.cpp
@@ -242,7 +242,8 @@ void Player_Towns_v1::startSound(int sound) {
}
velocity = velocity ? velocity >> 2 : ptr[14] >> 1;
- playPcmTrack(sound, ptr + 6, velocity, 64, note ? note : ptr[50], READ_LE_UINT16(ptr + 10));
+ 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) {
playEuphonyTrack(sound, ptr + 6);