aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorPaweł Kołodziejski2003-11-17 21:16:43 +0000
committerPaweł Kołodziejski2003-11-17 21:16:43 +0000
commit185395ca36af5851d6b59b00ab70ad5a74d32664 (patch)
tree04947e99854b244b17f00cb920a29faa94224e5e /scumm
parent1b77e5c41f6a5d7f45deac6f308b8841e8c40b24 (diff)
downloadscummvm-rg350-185395ca36af5851d6b59b00ab70ad5a74d32664.tar.gz
scummvm-rg350-185395ca36af5851d6b59b00ab70ad5a74d32664.tar.bz2
scummvm-rg350-185395ca36af5851d6b59b00ab70ad5a74d32664.zip
replaced demo GIDs wth GF_DEMO
svn-id: r11326
Diffstat (limited to 'scumm')
-rw-r--r--scumm/help.cpp2
-rw-r--r--scumm/imuse_digi.cpp6
-rw-r--r--scumm/resource.cpp8
-rw-r--r--scumm/script_v6.cpp8
-rw-r--r--scumm/scumm.h7
-rw-r--r--scumm/scummvm.cpp28
-rw-r--r--scumm/smush/smush_player.cpp30
-rw-r--r--scumm/string.cpp2
8 files changed, 49 insertions, 42 deletions
diff --git a/scumm/help.cpp b/scumm/help.cpp
index fb764c8613..c8d46baa1f 100644
--- a/scumm/help.cpp
+++ b/scumm/help.cpp
@@ -47,7 +47,6 @@ int ScummHelp::numPages(byte gameId) {
case GID_DIG:
case GID_FT:
case GID_CMI:
- case GID_FTDEMO:
return 3;
break;
/* TODO - I don't know the controls for these games
@@ -216,7 +215,6 @@ void ScummHelp::updateStrings(byte gameId, byte version, int page,
ADD_BIND("b", "Black and White / Color");
break;
case GID_FT:
- case GID_FTDEMO:
ADD_BIND("e", "Eyes");
ADD_BIND("t", "Tongue");
ADD_BIND("i", "Inventory");
diff --git a/scumm/imuse_digi.cpp b/scumm/imuse_digi.cpp
index 8b65e55863..3f7c9ff57c 100644
--- a/scumm/imuse_digi.cpp
+++ b/scumm/imuse_digi.cpp
@@ -1047,7 +1047,7 @@ int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, i
return 0;
}
}
- } else if (_scumm->_gameId == GID_CMIDEMO) {
+ } else if ((_scumm->_gameId == GID_CMI) && (_scumm->_features & GF_DEMO)) {
if (b == 1000) { // STATE_NULL
_scumm->_sound->stopBundleMusic();
return 0;
@@ -1082,7 +1082,7 @@ int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, i
return 0;
}
}
- } else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
+ } else if (_scumm->_gameId == GID_FT) {
for (l = 0;; l++) {
if (_ftStateMusicTable[l].index == -1) {
return 1;
@@ -1129,7 +1129,7 @@ int32 IMuseDigital::doCommand(int a, int b, int c, int d, int e, int f, int g, i
return 0;
}
}
- } else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
+ } else if (_scumm->_gameId == GID_FT) {
for (l = 0;; l++) {
if (_ftSeqMusicTable[l].index == -1) {
return 1;
diff --git a/scumm/resource.cpp b/scumm/resource.cpp
index a12e7d2ab9..b745827cce 100644
--- a/scumm/resource.cpp
+++ b/scumm/resource.cpp
@@ -90,8 +90,12 @@ void ScummEngine::openRoom(int room) {
// FIXME: Now it is not possible to have target file and
// main resource file named differently
- if (_gameId == GID_FTDEMO)
+ if ((_gameId == GID_FT) && (_features & GF_DEMO))
sprintf(buf2, "ft.%.3d", room == 0 ? 0 : res.roomno[rtRoom][room]);
+ else if ((_gameId == GID_DIG) && (_features & GF_DEMO))
+ sprintf(buf2, "dig.la%d", room == 0 ? 0 : res.roomno[rtRoom][room]);
+ else if ((_gameId == GID_CMI) && (_features & GF_DEMO))
+ sprintf(buf2, "comi.la%d", room == 0 ? 0 : res.roomno[rtRoom][room]);
else
sprintf(buf2, "%s.%.3d", _gameName.c_str(), room == 0 ? 0 : res.roomno[rtRoom][room]);
} else if (_features & GF_HUMONGOUS)
@@ -2076,7 +2080,7 @@ void ScummEngine::readMAXS() {
_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
- if (_gameId == GID_FTDEMO)
+ if ((_gameId == GID_FT) && (_features & GF_DEMO))
_numGlobalScripts = 300;
else
_numGlobalScripts = 2000;
diff --git a/scumm/script_v6.cpp b/scumm/script_v6.cpp
index c1a2ea0e95..fdc1401239 100644
--- a/scumm/script_v6.cpp
+++ b/scumm/script_v6.cpp
@@ -927,7 +927,7 @@ void ScummEngine_v6::o6_getOwner() {
}
void ScummEngine_v6::o6_startSound() {
- if ((_features & GF_HUMONGOUS) && (_gameId != GID_PUTTDEMO))
+ if ((_features & GF_HUMONGOUS) && (_gameId != GID_PUTTPUTT) && (!(_features & GF_DEMO)))
pop(); // offset which seems to always be zero
_sound->addSoundToQueue(pop());
}
@@ -1814,7 +1814,7 @@ void ScummEngine_v6::o6_verbOps() {
// Full Throttle implements conversation by creating new verbs, one
// for each option, but it never tells when to actually draw them.
- if (_gameId == GID_FT || _gameId == GID_FTDEMO)
+ if (_gameId == GID_FT)
_verbRedraw = true;
op = fetchScriptByte();
@@ -2411,11 +2411,11 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
// INSANE mode 0: SMUSH movie playback
if (args[1] == 0) {
sp->play((char *)getStringAddressVar(VAR_VIDEONAME), getGameDataPath());
- } else if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
+ } else if (_gameId == GID_FT) {
int insaneVarNum;
int insaneMode;
- if (_gameId == GID_FTDEMO)
+ if ((_gameId == GID_FT) && (_features & GF_DEMO))
insaneVarNum = 232;
else
insaneVarNum = 233;
diff --git a/scumm/scumm.h b/scumm/scumm.h
index 21440f5cd4..aff1d2ad5c 100644
--- a/scumm/scumm.h
+++ b/scumm/scumm.h
@@ -94,6 +94,7 @@ enum GameFeatures {
GF_NES = 1 << 18,
GF_ATARI_ST = 1 << 19,
GF_MACINTOSH = 1 << 20,
+ GF_DEMO = 1 << 21,
GF_EXTERNAL_CHARSET = GF_SMALL_HEADER
};
@@ -186,13 +187,9 @@ enum ScummGameId {
GID_CMI,
GID_MANIAC,
GID_ZAK,
- GID_PUTTDEMO,
GID_PUTTPUTT,
GID_PJSDEMO,
- GID_MONKEY_SEGA,
- GID_FTDEMO,
- GID_CMIDEMO,
- GID_DIGDEMO
+ GID_MONKEY_SEGA
};
#define _maxRooms res.num[rtRoom]
diff --git a/scumm/scummvm.cpp b/scumm/scummvm.cpp
index 1e3b2ce712..5a5a9c2489 100644
--- a/scumm/scummvm.cpp
+++ b/scumm/scummvm.cpp
@@ -152,8 +152,8 @@ static const ScummGameSettings scumm_settings[] = {
/* Scumm Version 6 */
{"puttputt", "Putt-Putt Joins The Parade (DOS)", GID_PUTTPUTT, 6, MDT_ADLIB | MDT_NATIVE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES},
- {"puttdemo", "Putt-Putt Joins The Parade (DOS Demo)", GID_PUTTDEMO, 6, MDT_ADLIB | MDT_NATIVE,
- GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS},
+ {"puttdemo", "Putt-Putt Joins The Parade (DOS Demo)", GID_PUTTPUTT, 6, MDT_ADLIB | MDT_NATIVE,
+ GF_DEMO | GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS},
{"moondemo", "Putt-Putt Goes To The Moon (DOS Demo)", GID_PUTTPUTT, 6, MDT_ADLIB | MDT_NATIVE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES},
{"puttmoon", "Putt-Putt Goes To The Moon (DOS)", GID_PUTTPUTT, 6, MDT_ADLIB | MDT_NATIVE,
@@ -186,23 +186,21 @@ static const ScummGameSettings scumm_settings[] = {
/* Scumm Version 7 */
{"ft", "Full Throttle", GID_FT, 7, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
- {"ftdemo", "Full Throttle (Mac Demo)", GID_FT, 7, MDT_NONE,
- GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
- {"ftpcdemo", "Full Throttle (Demo)", GID_FTDEMO, 7, MDT_NONE,
- GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
+ {"ftdemo", "Full Throttle (PC Demo)", GID_FT, 7, MDT_NONE,
+ GF_DEMO | GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
{"dig", "The Dig", GID_DIG, 7, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
- {"digdemo", "The Dig", GID_DIGDEMO, 7, MDT_NONE,
- GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
+ {"digdemo", "The Dig (Demo)", GID_DIG, 7, MDT_NONE,
+ GF_DEMO | GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
#ifndef __PALM_OS__ // these are SVGA games not supported under PalmOS
/* Scumm Version 8 */
{"comi", "The Curse of Monkey Island", GID_CMI, 8, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEFAULT_TO_1X_SCALER},
- {"comidemo", "The Curse of Monkey Island", GID_CMIDEMO, 8, MDT_NONE,
- GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEFAULT_TO_1X_SCALER},
-
+ {"comidemo", "The Curse of Monkey Island (Demo)", GID_CMI, 8, MDT_NONE,
+ GF_DEMO | GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE | GF_DEFAULT_TO_1X_SCALER},
+
/* Note that both full versions of Humongous games and demos were often released for
* several interpreter versions... */
/*
@@ -1488,7 +1486,7 @@ load_game:
// texts have to be drawn before the blast objects. Unless
// someone can think of a better way to achieve this effect.
- if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
+ if (_gameId == GID_FT) {
drawBlastTexts();
drawBlastObjects();
} else {
@@ -2775,10 +2773,14 @@ GameList Engine_SCUMM_detectGames(const FSList &fslist) {
strcpy(detectName2, g->gameName);
if (g->features & GF_HUMONGOUS) {
strcat(detectName2, ".he0");
- } else if (g->id == GID_FTDEMO) {
+ } else if ((g->id == GID_FT) && (g->features & GF_DEMO)) {
// FIXME: Now it is not possible to have target file and
// main resource file named differently
strcpy(detectName, "ft.000");
+ } else if ((g->id == GID_DIG) && (g->features & GF_DEMO)) {
+ strcpy(detectName, "dig.la0");
+ } else if ((g->id == GID_CMI) && (g->features & GF_DEMO)) {
+ strcpy(detectName, "comi.la0");
} else if (g->version >= 7) {
strcat(detectName2, ".la0");
} else
diff --git a/scumm/smush/smush_player.cpp b/scumm/smush/smush_player.cpp
index a6ad89ba08..6d5878aaa8 100644
--- a/scumm/smush/smush_player.cpp
+++ b/scumm/smush/smush_player.cpp
@@ -828,24 +828,30 @@ void SmushPlayer::setupAnim(const char *file, const char *directory) {
readString(file, directory);
if (_scumm->_gameId == GID_FT) {
- _sf[0] = new SmushFont(true, false);
- _sf[2] = new SmushFont(true, false);
- _sf[0]->loadFont("scummfnt.nut", directory);
- _sf[2]->loadFont("titlfnt.nut", directory);
- } else if (_scumm->_gameId == GID_FTDEMO) {
+ if (!(_scumm->_features & GF_DEMO)) {
+ _sf[0] = new SmushFont(true, false);
+ _sf[2] = new SmushFont(true, false);
+ _sf[0]->loadFont("scummfnt.nut", directory);
+ _sf[2]->loadFont("titlfnt.nut", directory);
+ } else {
_sf[0] = new SmushFont(true, false);
_sf[0]->loadFont("scummfnt.nut", directory);
+ }
} else if (_scumm->_gameId == GID_DIG) {
- for (i = 0; i < 4; i++) {
- sprintf(file_font, "font%d.nut", i);
- _sf[i] = new SmushFont(i != 0, false);
- _sf[i]->loadFont(file_font, directory);
+ if (!(_scumm->_features & GF_DEMO)) {
+ for (i = 0; i < 4; i++) {
+ sprintf(file_font, "font%d.nut", i);
+ _sf[i] = new SmushFont(i != 0, false);
+ _sf[i]->loadFont(file_font, directory);
+ }
}
} else if (_scumm->_gameId == GID_CMI) {
for (i = 0; i < 5; i++) {
- sprintf(file_font, "font%d.nut", i);
- _sf[i] = new SmushFont(false, true);
- _sf[i]->loadFont(file_font, directory);
+ if ((!(_scumm->_features & GF_DEMO)) && (i != 5)) {
+ sprintf(file_font, "font%d.nut", i);
+ _sf[i] = new SmushFont(false, true);
+ _sf[i]->loadFont(file_font, directory);
+ }
}
} else {
error("SmushPlayer::setupAnim() Unknown font setup for game");
diff --git a/scumm/string.cpp b/scumm/string.cpp
index ec89b5e6fd..fc55dda3d5 100644
--- a/scumm/string.cpp
+++ b/scumm/string.cpp
@@ -401,7 +401,7 @@ void ScummEngine::drawString(int a) {
// and never time out. We can't do it blindly for all games, because
// it causes problem with the FOA intro.
- if ((_gameId == GID_FT || _gameId == GID_FTDEMO) && a == 4)
+ if ((_gameId == GID_FT) && a == 4)
_talkDelay = -1;
if (!buf[0]) {