aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/sci/sci.h71
-rw-r--r--engines/sci/scicore/versions.h40
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)