From 47280b3301ae3b628dce593beb602ac6ada75b97 Mon Sep 17 00:00:00 2001 From: Travis Howell Date: Fri, 23 Feb 2007 10:18:14 +0000 Subject: 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 --- engines/agos/res.cpp | 7 ++++--- engines/agos/res_snd.cpp | 1 + engines/agos/script.cpp | 2 +- engines/agos/script_e2.cpp | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) (limited to 'engines') 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; } -- cgit v1.2.3