From e280f301e7bc8a6b941d3aac2b4019f268493815 Mon Sep 17 00:00:00 2001 From: Filippos Karapetis Date: Tue, 12 May 2009 20:12:49 +0000 Subject: Rearranged all the different version checks based on SCI version in versions.h, and added some WIP and unused game flags, which will hopefully replace the SCI version numbers svn-id: r40509 --- engines/sci/sci.h | 71 ++++++++++++++++++++++++++++++++++++++++++ engines/sci/scicore/versions.h | 40 ++++++++++++------------ 2 files changed, 91 insertions(+), 20 deletions(-) diff --git a/engines/sci/sci.h b/engines/sci/sci.h index 5422e31752..3e59f9947b 100644 --- a/engines/sci/sci.h +++ b/engines/sci/sci.h @@ -73,6 +73,77 @@ struct SciGameDescription { int version; }; +enum SciGameFlags { + /* + ** SCI version flags + */ + GF_SCI0 = (1 << 0), + /* + ** kDoSound() is different in this version than its SCI0 counterpart + */ + GF_SCI01 = (1 << 1), + GF_SCI1 = (1 << 2), + GF_SCI11 = (1 << 3), + GF_SCI32 = (1 << 4), + + /* + ** SCI0 flags + */ + + /* First version known not to do this: 0.000.395 + ** Old SCI versions used two word header for script blocks (first word equal + ** to 0x82, meaning of the second one unknown). New SCI versions used one + ** word header. + */ + GF_OLDSCRIPTHEADER = (1 << 5), + + /* First version known not to do this: 0.000.395 + ** Earlier versions assign 120 degrees to left & right , and 60 to up and down. + ** Later versions use an even 90 degree distribution. + */ + GF_OLDANGLES = (1 << 6), + + /* First version known not to do this: 0.000.490 (PQ2-new) + ** When a new song is initialized, we store its state and + ** resume it when the new one finishes. Older versions completely + ** clobbered the old songs. + */ + GF_OLDRESUMESONG = (1 << 7), + + /* First version known not to do this: 0.000.502 + ** Old SCI versions used to interpret the third DrawPic() parameter inversely, + ** with the opposite default value (obviously). + ** Also, they used 15 priority zones from 42 to 200 instead of 14 priority + ** zones from 42 to 190. + */ + GF_OLDGFXFUNCTIONS = (1 << 8), + + /* First version known not to do this: 0.000.629 + ** Older SCI versions had simpler code for GetTime() + */ + GF_OLDGETTIME = (1 << 9), + + // ---------------------------------------------------------------------------- + + /* + ** SCI1 flags + */ + + /* First version known to do this: 1.000.200 + ** In later SCI1 versions, the argument of lofs[as] + ** instructions is absolute rather than relative. + */ + GF_LOFSABSOLUTE = (1 << 10), + + /* First version known to do this: 1.000.510 + ** In later SCI1 versions, CanBeHere is called inversely. + ** Also in kDisplay(), if the text would not fit on the screen, it + ** is moved to the left and upwards until it fits. + ** Finally, kDoSound() is different than in earlier SCI1 versions. + */ + GF_LATESCI1 = (1 << 11) +}; + class SciEngine : public Engine { public: SciEngine(OSystem *syst, const SciGameDescription *desc); diff --git a/engines/sci/scicore/versions.h b/engines/sci/scicore/versions.h index adde1b60fb..dba4397fd1 100644 --- a/engines/sci/scicore/versions.h +++ b/engines/sci/scicore/versions.h @@ -46,21 +46,6 @@ namespace Sci { ** - "FTU" means "First To Use" */ -#define SCI_VERSION_FTU_NEW_GETTIME SCI_VERSION(0,000,629) -/* These versions of SCI has a different set of subfunctions in GetTime() */ - -#define SCI_VERSION_FTU_NEWER_DRAWPIC_PARAMETERS SCI_VERSION(0,000,502) -/* Last version known not to do this: 0.000.435 -** Old SCI versions used to interpret the third DrawPic() parameter inversely, -** with the opposite default value (obviously) -*/ - -#define SCI_VERSION_FTU_PRIORITY_14_ZONES SCI_VERSION(0,000,502) -/* Last version known to do this: 0.000.490 - * Uses 14 zones from 42 to 190 instead of 15 zones from 42 to 200. -*/ - - #define SCI_VERSION_FTU_NEW_SCRIPT_HEADER SCI_VERSION(0,000,395) /* Last version known not to do this: 0.000.343 ** Old SCI versions used two word header for script blocks (first word equal @@ -81,10 +66,21 @@ namespace Sci { clobbered the old songs. */ -#define SCI_VERSION_FTU_INVERSE_CANBEHERE SCI_VERSION(1,000,510) -/* FIXME: This shouldn't be a version number. - * But it'll do for now. - */ +#define SCI_VERSION_FTU_NEWER_DRAWPIC_PARAMETERS SCI_VERSION(0,000,502) +/* Last version known not to do this: 0.000.435 +** Old SCI versions used to interpret the third DrawPic() parameter inversely, +** with the opposite default value (obviously) +*/ + +#define SCI_VERSION_FTU_PRIORITY_14_ZONES SCI_VERSION(0,000,502) +/* Last version known to do this: 0.000.490 + * Uses 14 zones from 42 to 190 instead of 15 zones from 42 to 200. +*/ + +#define SCI_VERSION_FTU_NEW_GETTIME SCI_VERSION(0,000,629) +/* These versions of SCI has a different set of subfunctions in GetTime() */ + +#define SCI_VERSION_FTU_DOSOUND_VARIANT_1 SCI_VERSION(1,000,000) #define SCI_VERSION_FTU_LOFS_ABSOLUTE SCI_VERSION(1,000,200) /* First version known to do this: ? @@ -92,6 +88,11 @@ namespace Sci { instructions is absolute rather than relative. */ +#define SCI_VERSION_FTU_INVERSE_CANBEHERE SCI_VERSION(1,000,510) +/* FIXME: This shouldn't be a version number. + * But it'll do for now. + */ + #define SCI_VERSION_FTU_DISPLAY_COORDS_FUZZY SCI_VERSION(1,000,510) /* First version known to do this: ? In later versions of SCI1 kDisplay(), if the text would not fit on @@ -99,7 +100,6 @@ namespace Sci { fits. */ -#define SCI_VERSION_FTU_DOSOUND_VARIANT_1 SCI_VERSION(1,000,000) #define SCI_VERSION_FTU_DOSOUND_VARIANT_2 SCI_VERSION(1,000,510) -- cgit v1.2.3