aboutsummaryrefslogtreecommitdiff
path: root/engines/gob
diff options
context:
space:
mode:
authorSven Hesse2016-07-20 21:53:29 +0200
committerSven Hesse2016-07-20 21:59:22 +0200
commitaca13f7ba95f0707d6d68fb52bfa36b1d420a42c (patch)
tree908575b0f0f08c46000cdee7d7d5ff0df9e6c27b /engines/gob
parent46aadaa0e02e1b9a3b1778c2cddb0f96fbe78eac (diff)
downloadscummvm-rg350-aca13f7ba95f0707d6d68fb52bfa36b1d420a42c.tar.gz
scummvm-rg350-aca13f7ba95f0707d6d68fb52bfa36b1d420a42c.tar.bz2
scummvm-rg350-aca13f7ba95f0707d6d68fb52bfa36b1d420a42c.zip
GOB: Work around broken resource sizes in Gobliiins EGA
The EGA version of Gobliiins, similar to Little Red Riding Hood, claims a few resources are larger than they actually are. The original happily reads past the resource structure, but we'll instead fix the size of the resource after loading. This fixes bug #7162.
Diffstat (limited to 'engines/gob')
-rw-r--r--engines/gob/gob.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/engines/gob/gob.cpp b/engines/gob/gob.cpp
index b51a6382e6..dfbff33c63 100644
--- a/engines/gob/gob.cpp
+++ b/engines/gob/gob.cpp
@@ -429,6 +429,23 @@ Common::Error GobEngine::initGameParts() {
_map = new Map_v1(this);
_goblin = new Goblin_v1(this);
_scenery = new Scenery_v1(this);
+
+ // WORKAROUND: The EGA version of Gobliiins claims a few resources are
+ // larger than they actually are. The original happily reads
+ // past the resource structure boundary, but we don't.
+ // To make sure we don't throw an error like we normally do
+ // (which leads to these resources not loading), we enable
+ // this workaround that automatically fixes the resources
+ // sizes.
+ //
+ // This glitch is visible in levels
+ // - 03 (ICIGCAA)
+ // - 09 (ICVGCGT)
+ // - 16 (TCVQRPM)
+ // - 20 (NNGWTTO)
+ // See also ScummVM bug report #7162.
+ if (isEGA())
+ _resourceSizeWorkaround = true;
break;
case kGameTypeGeisha: