aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2007-09-13 11:21:23 +0000
committerFilippos Karapetis2007-09-13 11:21:23 +0000
commit84393ab95e7d72484f5c612cee298f91e90221bd (patch)
treebe25e76fc37180c2e0d409e054827b5ac99f55fb
parent8158f3f35340b44bc437142a1a21ba6b6162ae39 (diff)
downloadscummvm-rg350-84393ab95e7d72484f5c612cee298f91e90221bd.tar.gz
scummvm-rg350-84393ab95e7d72484f5c612cee298f91e90221bd.tar.bz2
scummvm-rg350-84393ab95e7d72484f5c612cee298f91e90221bd.zip
The early ITE demos were not interactive
svn-id: r28897
-rw-r--r--engines/saga/detection_tables.h12
-rw-r--r--engines/saga/saga.h3
-rw-r--r--engines/saga/sfuncs.cpp14
3 files changed, 20 insertions, 9 deletions
diff --git a/engines/saga/detection_tables.h b/engines/saga/detection_tables.h
index bd0c4eef25..5bb408e947 100644
--- a/engines/saga/detection_tables.h
+++ b/engines/saga/detection_tables.h
@@ -235,10 +235,8 @@ static const SAGAGameDescription gameDescriptions[] = {
},
- // Note: This version is NOT supported yet
- // Exiting the faire leads to a crash
-
// Inherit the earth - MAC Demo version 1
+ // Non-interactive demo
{
{
"ite",
@@ -257,7 +255,7 @@ static const SAGAGameDescription gameDescriptions[] = {
},
GType_ITE,
GID_ITE_MACDEMO1,
- GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX,
+ GF_BIG_ENDIAN_DATA | GF_WYRMKEEP | GF_CD_FX | GF_NON_INTERACTIVE,
ITE_DEFAULT_SCENE,
&ITE_Resources,
ARRAYSIZE(ITEWINDEMO_GameFonts),
@@ -301,10 +299,8 @@ static const SAGAGameDescription gameDescriptions[] = {
},
- // Note: This version is NOT supported yet
- // Exiting the faire leads to a crash
-
// Inherit the earth - Win32 Demo version 1
+ // Non-interactive demo
{
{
"ite",
@@ -322,7 +318,7 @@ static const SAGAGameDescription gameDescriptions[] = {
},
GType_ITE,
GID_ITE_WINDEMO1,
- GF_WYRMKEEP | GF_CD_FX,
+ GF_WYRMKEEP | GF_CD_FX | GF_NON_INTERACTIVE,
ITE_DEFAULT_SCENE,
&ITE_Resources,
ARRAYSIZE(ITEWINDEMO_GameFonts),
diff --git a/engines/saga/saga.h b/engines/saga/saga.h
index fc74702143..8016fb9e65 100644
--- a/engines/saga/saga.h
+++ b/engines/saga/saga.h
@@ -158,7 +158,8 @@ enum GameFeatures {
GF_WYRMKEEP = 1 << 1,
GF_CD_FX = 1 << 2,
GF_SCENE_SUBSTITUTES = 1 << 3,
- GF_COMPRESSED_SOUNDS = 1 << 4
+ GF_COMPRESSED_SOUNDS = 1 << 4,
+ GF_NON_INTERACTIVE = 1 << 5
};
enum VerbTypeIds {
diff --git a/engines/saga/sfuncs.cpp b/engines/saga/sfuncs.cpp
index 1697e6c92f..4dc394130c 100644
--- a/engines/saga/sfuncs.cpp
+++ b/engines/saga/sfuncs.cpp
@@ -332,6 +332,20 @@ void Script::sfMainMode(SCRIPTFUNC_PARAMS) {
if (_vm->getGameType() == GType_ITE)
setPointerVerb();
+
+ // The early Windows and Mac demos of ITE were non-interactive. In those demos,
+ // the intro is shown and then when the first scene is shown, there's a dialog
+ // thanking the user for playing the demo and asking him to buy the full game,
+ // without allowing him to continue any further. The game data itself for these
+ // demos does not contain any scripts for the first scene (i.e. there's no text
+ // in the game data to look at Rif's silver medallion). Also, there are no more
+ // scenes apart from the Grand Tournament scene. This opcode is called in those
+ // demos, and I assume that its use there is to just show the popup window and
+ // exit the game. Therefore, once this opcode is called in the older ITE demos,
+ // exit the game. Known non-interactive demos are GID_ITE_MACDEMO1 and
+ // GID_ITE_WINDEMO1
+ if (_vm->getFeatures() & GF_NON_INTERACTIVE)
+ _vm->shutDown();
}
// Script function #6 (0x06) blocking