aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2007-02-23 10:18:14 +0000
committerTravis Howell2007-02-23 10:18:14 +0000
commit47280b3301ae3b628dce593beb602ac6ada75b97 (patch)
tree3fe0a7d14a1a696ee8b8ae10357f5bd5f875ad74
parentf1f28b61a981293c22fbf16e4b8e27c0206e68c3 (diff)
downloadscummvm-rg350-47280b3301ae3b628dce593beb602ac6ada75b97.tar.gz
scummvm-rg350-47280b3301ae3b628dce593beb602ac6ada75b97.tar.bz2
scummvm-rg350-47280b3301ae3b628dce593beb602ac6ada75b97.zip
Fix bug #1600999 - SIMON2: Crash while talking to Bingo Bongo. A regression due to the work around for extra long strings been broken, when support for the Feeble Files was added in the past.
svn-id: r25807
-rw-r--r--engines/agos/res.cpp7
-rw-r--r--engines/agos/res_snd.cpp1
-rw-r--r--engines/agos/script.cpp2
-rw-r--r--engines/agos/script_e2.cpp2
4 files changed, 7 insertions, 5 deletions
diff --git a/engines/agos/res.cpp b/engines/agos/res.cpp
index e1a4129fb1..a7da0fb8d7 100644
--- a/engines/agos/res.cpp
+++ b/engines/agos/res.cpp
@@ -658,12 +658,13 @@ void AGOSEngine::loadVGAVideoFile(uint id, uint type) {
uint32 file, offs, srcSize, dstSize;
uint extraBuffer = 0;
- if (getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) {
- // !!! HACK !!!
+ if ((getGameType() == GType_SIMON1 || getGameType() == GType_SIMON2) &&
+ id == 2 && type == 2) {
+ // WORKAROUND: For the exta long strings in foreign languages
// Allocate more space for text to cope with foreign languages that use
// up more space than english. I hope 6400 bytes are enough. This number
// is base on: 2 (lines) * 320 (screen width) * 10 (textheight) -- olki
- extraBuffer = (id == 5 ? 6400 : 0);
+ extraBuffer += 6400;
}
if (getFeatures() & GF_ZLIBCOMP) {
diff --git a/engines/agos/res_snd.cpp b/engines/agos/res_snd.cpp
index a236047333..292eb06a80 100644
--- a/engines/agos/res_snd.cpp
+++ b/engines/agos/res_snd.cpp
@@ -191,6 +191,7 @@ void AGOSEngine::loadMusic(uint music) {
} else if (getPlatform() == Common::kPlatformAmiga) {
loadModule(music);
} else if (getFeatures() & GF_TALKIE) {
+ // WORKAROUND: For a script bug in the CD versions
// We skip this music resource, as it was replaced by
// a sound effect, and the script was never updated.
if (music == 35)
diff --git a/engines/agos/script.cpp b/engines/agos/script.cpp
index 279b5a4b48..8396ee9143 100644
--- a/engines/agos/script.cpp
+++ b/engines/agos/script.cpp
@@ -614,7 +614,7 @@ void AGOSEngine::o_picture() {
uint vga_res = getVarOrWord();
uint mode = getVarOrByte();
- // Work around a script bug in the Amiga AGA/CD32 versions
+ // WORKAROUND: For a script bug in the Amiga AGA/CD32 versions
// When selecting locations on the magical map, the script looks
// for vga_res 12701, but only vga_res 12700 exists.
if (getGameType() == GType_SIMON1 && getPlatform() == Common::kPlatformAmiga &&
diff --git a/engines/agos/script_e2.cpp b/engines/agos/script_e2.cpp
index 31d524fee3..b8a8d8dc34 100644
--- a/engines/agos/script_e2.cpp
+++ b/engines/agos/script_e2.cpp
@@ -281,7 +281,7 @@ void AGOSEngine::oe2_bNotZero() {
// 156: is bit set
uint bit = getVarWrapper();
- // WORKAROUND: Fix for glitch in some versions
+ // WORKAROUND: For for script glitch in some versions
if (getGameType() == GType_SIMON1 && _subroutine == 2962 && bit == 63) {
bit = 50;
}