aboutsummaryrefslogtreecommitdiff
path: root/engines/agi
diff options
context:
space:
mode:
authorFilippos Karapetis2007-04-24 15:43:16 +0000
committerFilippos Karapetis2007-04-24 15:43:16 +0000
commitaa8fa78f623b8a20eaa496f16cd29193668c9cff (patch)
treef1f3b06ab5d7a85073c3b9d74740407126d82def /engines/agi
parent5c3cd349636e8da7a6993d1cb041b011d45b6d62 (diff)
downloadscummvm-rg350-aa8fa78f623b8a20eaa496f16cd29193668c9cff.tar.gz
scummvm-rg350-aa8fa78f623b8a20eaa496f16cd29193668c9cff.tar.bz2
scummvm-rg350-aa8fa78f623b8a20eaa496f16cd29193668c9cff.zip
Patch #1705791: Patch for #1648396 - AGI : SQ2 / 2.0F / IBM / priority line
Modify a workaround made for SQ1 to work on SQ1 only, not all AGI games. This fixes bug #1648396 with SQ2, a bug with LSL1 (Sarien bug #925074) and possibly others svn-id: r26589
Diffstat (limited to 'engines/agi')
-rw-r--r--engines/agi/agi.h3
-rw-r--r--engines/agi/detection.cpp16
-rw-r--r--engines/agi/sprite.cpp8
3 files changed, 15 insertions, 12 deletions
diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index b9fac16b48..385bf6b247 100644
--- a/engines/agi/agi.h
+++ b/engines/agi/agi.h
@@ -111,7 +111,8 @@ enum AgiGameFeatures {
GF_MACGOLDRUSH = (1 << 5),
GF_FANMADE = (1 << 6),
GF_ESC_MENU = (1 << 7),
- GF_MANHUNTER = (1 << 8)
+ GF_MANHUNTER = (1 << 8),
+ GF_SQ1 = (1 << 9)
};
struct AGIGameDescription;
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index 608abf9b14..97f4ecd200 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -1236,7 +1236,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2440,
},
@@ -1252,7 +1252,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2272,
},
@@ -1268,7 +1268,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2440,
},
@@ -1284,7 +1284,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2440,
},
@@ -1300,7 +1300,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2917,
},
@@ -1316,7 +1316,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2089,
},
@@ -1332,7 +1332,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2272,
},
@@ -1348,7 +1348,7 @@ static const AGIGameDescription gameDescriptions[] = {
Common::ADGF_NO_FLAGS
},
GType_V2,
- 0,
+ GF_SQ1,
0x2440,
},
diff --git a/engines/agi/sprite.cpp b/engines/agi/sprite.cpp
index 8a67f2e60e..e4cb6ed175 100644
--- a/engines/agi/sprite.cpp
+++ b/engines/agi/sprite.cpp
@@ -618,10 +618,12 @@ void SpritesMgr::addToPic(int view, int loop, int cel, int x, int y, int pri, in
/* add rectangle around object, don't clobber control
* info in priority data. The box extends to the end of
* its priority band!
- *
- * SQ1 needs +1 (see bug #810331)
*/
- y3 = (y2 / 12) * 12 + 1;
+ y3 = (y2 / 12) * 12;
+
+ // SQ1 needs +1 (see bug #810331)
+ if (_vm->getFeatures() & GF_SQ1)
+ y3++;
// don't let box extend below y.
if (y3 > y2) y3 = y2;