From 5e7cc8b2d9576e6a4d061434227f0db00c87eb31 Mon Sep 17 00:00:00 2001 From: Kari Salminen Date: Wed, 2 Jan 2008 19:10:01 +0000 Subject: 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 --- engines/agi/agi.h | 31 +++++++++++++++++++++++++++---- engines/agi/cycle.cpp | 5 ++++- engines/agi/detection.cpp | 2 +- 3 files changed, 32 insertions(+), 6 deletions(-) (limited to 'engines') 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, }, -- cgit v1.2.3