*** empty log message ***

svn-id: r11281
This commit is contained in:
Travis Howell 2003-11-13 10:51:02 +00:00
parent 3a51c5b702
commit 313a912af2
9 changed files with 52 additions and 20 deletions

View file

@ -47,6 +47,7 @@ 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
@ -215,6 +216,7 @@ 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");

View file

@ -1066,7 +1066,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) {
} else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
for (l = 0;; l++) {
if (_ftStateMusicTable[l].index == -1) {
return 1;
@ -1113,7 +1113,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) {
} else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
for (l = 0;; l++) {
if (_ftSeqMusicTable[l].index == -1) {
return 1;

View file

@ -87,6 +87,12 @@ void ScummEngine::openRoom(int room) {
if (room > 0 && (_version == 8))
VAR(VAR_CURRENTDISK) = res.roomno[rtRoom][room];
sprintf(buf, "%s.la%d", _gameName.c_str(), room == 0 ? 0 : res.roomno[rtRoom][room]);
// FIXME: Now it is not possible to have target file and
// main resource file named differently
if (_gameId == GID_FTDEMO)
sprintf(buf2, "ft.%.3d", 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)
sprintf(buf, "%s.he%.1d", _gameName.c_str(), room == 0 ? 0 : res.roomno[rtRoom][room]);
@ -2069,6 +2075,10 @@ void ScummEngine::readMAXS() {
_numCostumes = _fileHandle.readUint16LE();
_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
if (_gameId == GID_FTDEMO)
_numGlobalScripts = 300;
else
_numGlobalScripts = 2000;
_shadowPaletteSize = NUM_SHADOW_PALETTE * 256;

View file

@ -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)
if (_gameId == GID_FT || _gameId == GID_FTDEMO)
_verbRedraw = true;
op = fetchScriptByte();
@ -2411,8 +2411,18 @@ 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) {
int insaneMode = readArray(233,0,0);
} else if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
int insaneVarNum;
int insaneMode;
if (_gameId == GID_FTDEMO)
insaneVarNum = 232;
else
insaneVarNum = 233;
insaneMode = readArray(insaneVarNum,0,0);
// FIXME: FT Demo has different Insane
debug(1, "FT_INSANE Mode: %d", insaneMode);
switch (insaneMode) {
case 0:
@ -2425,19 +2435,19 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
sp->play("tovista1.san", getGameDataPath());
break;
case 3:
if (readArray(233,0,50) == 0) {
if (readArray(insaneVarNum,0,50) == 0) {
InfoDialog info(this, "Set MineRoad - You can now jump the gorge.");
runDialog(info);
writeArray(233, 0, 50, 1); // INSANE callback: Chain
writeArray(233, 0, 51, 1); // INSANE callback: Chainsaw
writeArray(233, 0, 52, 1); // INSANE callback: Mace
writeArray(233, 0, 53, 1); // INSANE callback: 2x4
writeArray(233, 0, 54, 1); // INSANE callback: Wrench
writeArray(233, 0, 55, 1); // INSANE callback: Dust
writeArray(insaneVarNum, 0, 50, 1); // INSANE callback: Chain
writeArray(insaneVarNum, 0, 51, 1); // INSANE callback: Chainsaw
writeArray(insaneVarNum, 0, 52, 1); // INSANE callback: Mace
writeArray(insaneVarNum, 0, 53, 1); // INSANE callback: 2x4
writeArray(insaneVarNum, 0, 54, 1); // INSANE callback: Wrench
writeArray(insaneVarNum, 0, 55, 1); // INSANE callback: Dust
writeArray(233, 0, 8, 1); // INSANE callback: Give Googles
writeArray(233, 0, 7, 1); // INSANE callback: Give nitro fuel
writeArray(insaneVarNum, 0, 8, 1); // INSANE callback: Give Googles
writeArray(insaneVarNum, 0, 7, 1); // INSANE callback: Give nitro fuel
putState(235, 1); // Cheat and activate Ramp
writeVar(142 | 0x8000, 1); // Cheat and activate auto-booster (fan)

View file

@ -189,7 +189,8 @@ enum ScummGameId {
GID_PUTTDEMO,
GID_PUTTPUTT,
GID_PJSDEMO,
GID_MONKEY_SEGA
GID_MONKEY_SEGA,
GID_FTDEMO
};
#define _maxRooms res.num[rtRoom]

View file

@ -188,6 +188,8 @@ static const ScummGameSettings scumm_settings[] = {
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},
{"dig", "The Dig", GID_DIG, 7, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
@ -1482,7 +1484,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) {
if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
drawBlastTexts();
drawBlastObjects();
} else {
@ -2769,6 +2771,10 @@ 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) {
// FIXME: Now it is not possible to have target file and
// main resource file named differently
strcpy(detectName, "ft.000");
} else if (g->version >= 7) {
strcat(detectName2, ".la0");
} else

View file

@ -839,6 +839,9 @@ void SmushPlayer::setupAnim(const char *file, const char *directory) {
_sf[2] = new SmushFont(true, false);
_sf[0]->loadFont("scummfnt.nut", directory);
_sf[2]->loadFont("titlfnt.nut", directory);
} else if (_scumm->_gameId == GID_FTDEMO) {
_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);

View file

@ -120,7 +120,7 @@ void Sound::addSoundToQueue(int sound) {
_scumm->ensureResourceLoaded(rtSound, sound);
addSoundToQueue2(sound);
} else {
// WARNING ! This may break something, maybe this sould be put inside if (_gameID == GID_FT) ?
// WARNING ! This may break something, maybe this sould be put inside if (_gameID == GID_FT || _gameID == GID_FTDEMO) ?
// But why addSoundToQueue should not queue sound ?
_scumm->ensureResourceLoaded(rtSound, sound);
addSoundToQueue2(sound);

View file

@ -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 && a == 4)
if ((_gameId == GID_FT || _gameId == GID_FTDEMO) && a == 4)
_talkDelay = -1;
if (!buf[0]) {