aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2009-05-12 20:12:49 +0000
committerFilippos Karapetis2009-05-12 20:12:49 +0000
commite280f301e7bc8a6b941d3aac2b4019f268493815 (patch)
tree2a393fc8d0027549b06edd9c9f67c1507b669a75 /engines
parent0cc6b88f581a565c2b94f638e1b759c2608ba9f1 (diff)
downloadscummvm-rg350-e280f301e7bc8a6b941d3aac2b4019f268493815.tar.gz
scummvm-rg350-e280f301e7bc8a6b941d3aac2b4019f268493815.tar.bz2
scummvm-rg350-e280f301e7bc8a6b941d3aac2b4019f268493815.zip
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
Diffstat (limited to 'engines')
-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)