aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorKari Salminen2008-01-02 19:10:01 +0000
committerKari Salminen2008-01-02 19:10:01 +0000
commit5e7cc8b2d9576e6a4d061434227f0db00c87eb31 (patch)
treefdd7894907224ed481bdcc5d9980eaa27bb2a44e /engines
parent040a7b54fa0216ff786c58adb23aee1ab5364d9c (diff)
downloadscummvm-rg350-5e7cc8b2d9576e6a4d061434227f0db00c87eb31.tar.gz
scummvm-rg350-5e7cc8b2d9576e6a4d061434227f0db00c87eb31.tar.bz2
scummvm-rg350-5e7cc8b2d9576e6a4d061434227f0db00c87eb31.zip
Add GF_OLDAMIGAV20 game flag for correctly setting computer type (v20 i.e. vComputer) for particular old Amiga AGI games (Space Quest I v1.2 at the moment).
svn-id: r30164
Diffstat (limited to 'engines')
-rw-r--r--engines/agi/agi.h31
-rw-r--r--engines/agi/cycle.cpp5
-rw-r--r--engines/agi/detection.cpp2
3 files changed, 32 insertions, 6 deletions
diff --git a/engines/agi/agi.h b/engines/agi/agi.h
index 0f792b37fe..d5959382ef 100644
--- a/engines/agi/agi.h
+++ b/engines/agi/agi.h
@@ -127,6 +127,10 @@ enum AgiGameType {
GType_V3 = 2
};
+/*
+ * GF_OLDAMIGAV20 means that the interpreter is an old Amiga AGI interpreter that
+ * uses value 20 for the computer type (v20 i.e. vComputer) rather than the usual value 5.
+ */
enum AgiGameFeatures {
GF_AGIMOUSE = (1 << 0),
GF_AGDS = (1 << 1),
@@ -136,7 +140,8 @@ enum AgiGameFeatures {
GF_MACGOLDRUSH = (1 << 5),
GF_FANMADE = (1 << 6),
GF_MENUS = (1 << 7),
- GF_ESCPAUSE = (1 << 8)
+ GF_ESCPAUSE = (1 << 8),
+ GF_OLDAMIGAV20 = (1 << 9)
};
struct AGIGameDescription;
@@ -268,13 +273,31 @@ enum AgiMonitorType {
/**
* Different computer types.
* Used with AGI variable 20 i.e. vComputer.
- * FIXME? As an exception Amiga's Space Quest I (Version 1.2, AGI 2.082) uses value 20.
+ *
+ * At least these Amiga AGI versions use value 5:
+ * 2.082 (King's Quest I v1.0U 1986)
+ * x.yyy (Black Cauldron v2.00 1987-06-14)
+ * x.yyy (Larry I v1.05 1987-06-26)
+ * 2.107 (King's Quest II v2.0J. Date is probably 1987-01-29)
+ * 2.310 (Police Quest I v2.0B 1989-02-22)
+ * 2.316 (Gold Rush! v2.05 1989-03-09)
+ * 2.333 (King's Quest III v2.15 1989-11-15)
+ *
+ * At least these Amiga AGI versions use value 20:
+ * 2.082 (Space Quest I v1.2 1986)
+ *
+ * TODO: Check Amiga version of King's Quest III (v1.01 1986-11-08, AGI 2.090).
+ * This is a good candidate for testing as it uses quite an old Amiga AGI version.
+ * TODO: Check Amiga version of Space Quest II (v2.0F, AGI 2.202) because
+ * it's a bit of an odd bird (e.g. uses a slightly different palette than others).
+ * TODO: Check Amiga versions of Manhunter I & II (I'd guess they use value 5 though).
*/
enum AgiComputerType {
kAgiComputerPC = 0,
kAgiComputerAtariST = 4,
- kAgiComputerAmiga = 5,
- kAgiComputerApple2GS = 7
+ kAgiComputerAmiga = 5, // Newer Amiga AGI interpreters' value (Commonly used)
+ kAgiComputerApple2GS = 7,
+ kAgiComputerAmigaOld = 20 // Older Amiga AGI interpreters' value (Seldom used)
};
/**
diff --git a/engines/agi/cycle.cpp b/engines/agi/cycle.cpp
index 6953635ee1..1460632777 100644
--- a/engines/agi/cycle.cpp
+++ b/engines/agi/cycle.cpp
@@ -371,7 +371,10 @@ int AgiEngine::runGame() {
setvar(vComputer, kAgiComputerAtariST);
break;
case Common::kPlatformAmiga:
- setvar(vComputer, kAgiComputerAmiga);
+ if (getFeatures() & GF_OLDAMIGAV20)
+ setvar(vComputer, kAgiComputerAmigaOld);
+ else
+ setvar(vComputer, kAgiComputerAmiga);
break;
case Common::kPlatformApple2GS:
setvar(vComputer, kAgiComputerApple2GS);
diff --git a/engines/agi/detection.cpp b/engines/agi/detection.cpp
index 7584780978..39442a5c8e 100644
--- a/engines/agi/detection.cpp
+++ b/engines/agi/detection.cpp
@@ -1471,7 +1471,7 @@ static const AGIGameDescription gameDescriptions[] = {
},
GID_SQ1,
GType_V2,
- GF_MENUS,
+ GF_MENUS | GF_OLDAMIGAV20,
0x2440,
},