*** 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_DIG:
case GID_FT: case GID_FT:
case GID_CMI: case GID_CMI:
case GID_FTDEMO:
return 3; return 3;
break; break;
/* TODO - I don't know the controls for these games /* 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"); ADD_BIND("b", "Black and White / Color");
break; break;
case GID_FT: case GID_FT:
case GID_FTDEMO:
ADD_BIND("e", "Eyes"); ADD_BIND("e", "Eyes");
ADD_BIND("t", "Tongue"); ADD_BIND("t", "Tongue");
ADD_BIND("i", "Inventory"); 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; return 0;
} }
} }
} else if (_scumm->_gameId == GID_FT) { } else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
for (l = 0;; l++) { for (l = 0;; l++) {
if (_ftStateMusicTable[l].index == -1) { if (_ftStateMusicTable[l].index == -1) {
return 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; return 0;
} }
} }
} else if (_scumm->_gameId == GID_FT) { } else if (_scumm->_gameId == GID_FT || _scumm->_gameId == GID_FTDEMO) {
for (l = 0;; l++) { for (l = 0;; l++) {
if (_ftSeqMusicTable[l].index == -1) { if (_ftSeqMusicTable[l].index == -1) {
return 1; return 1;

View file

@ -87,6 +87,12 @@ void ScummEngine::openRoom(int room) {
if (room > 0 && (_version == 8)) if (room > 0 && (_version == 8))
VAR(VAR_CURRENTDISK) = res.roomno[rtRoom][room]; VAR(VAR_CURRENTDISK) = res.roomno[rtRoom][room];
sprintf(buf, "%s.la%d", _gameName.c_str(), room == 0 ? 0 : 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]); sprintf(buf2, "%s.%.3d", _gameName.c_str(), room == 0 ? 0 : res.roomno[rtRoom][room]);
} else if (_features & GF_HUMONGOUS) } else if (_features & GF_HUMONGOUS)
sprintf(buf, "%s.he%.1d", _gameName.c_str(), room == 0 ? 0 : res.roomno[rtRoom][room]); 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(); _numCostumes = _fileHandle.readUint16LE();
_objectRoomTable = (byte *)calloc(_numGlobalObjects, 1); _objectRoomTable = (byte *)calloc(_numGlobalObjects, 1);
if (_gameId == GID_FTDEMO)
_numGlobalScripts = 300;
else
_numGlobalScripts = 2000; _numGlobalScripts = 2000;
_shadowPaletteSize = NUM_SHADOW_PALETTE * 256; _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 // Full Throttle implements conversation by creating new verbs, one
// for each option, but it never tells when to actually draw them. // 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; _verbRedraw = true;
op = fetchScriptByte(); op = fetchScriptByte();
@ -2411,8 +2411,18 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
// INSANE mode 0: SMUSH movie playback // INSANE mode 0: SMUSH movie playback
if (args[1] == 0) { if (args[1] == 0) {
sp->play((char *)getStringAddressVar(VAR_VIDEONAME), getGameDataPath()); sp->play((char *)getStringAddressVar(VAR_VIDEONAME), getGameDataPath());
} else if (_gameId == GID_FT) { } else if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
int insaneMode = readArray(233,0,0); 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); debug(1, "FT_INSANE Mode: %d", insaneMode);
switch (insaneMode) { switch (insaneMode) {
case 0: case 0:
@ -2425,19 +2435,19 @@ void ScummEngine_v6::o6_kernelSetFunctions() {
sp->play("tovista1.san", getGameDataPath()); sp->play("tovista1.san", getGameDataPath());
break; break;
case 3: 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."); InfoDialog info(this, "Set MineRoad - You can now jump the gorge.");
runDialog(info); runDialog(info);
writeArray(233, 0, 50, 1); // INSANE callback: Chain writeArray(insaneVarNum, 0, 50, 1); // INSANE callback: Chain
writeArray(233, 0, 51, 1); // INSANE callback: Chainsaw writeArray(insaneVarNum, 0, 51, 1); // INSANE callback: Chainsaw
writeArray(233, 0, 52, 1); // INSANE callback: Mace writeArray(insaneVarNum, 0, 52, 1); // INSANE callback: Mace
writeArray(233, 0, 53, 1); // INSANE callback: 2x4 writeArray(insaneVarNum, 0, 53, 1); // INSANE callback: 2x4
writeArray(233, 0, 54, 1); // INSANE callback: Wrench writeArray(insaneVarNum, 0, 54, 1); // INSANE callback: Wrench
writeArray(233, 0, 55, 1); // INSANE callback: Dust writeArray(insaneVarNum, 0, 55, 1); // INSANE callback: Dust
writeArray(233, 0, 8, 1); // INSANE callback: Give Googles writeArray(insaneVarNum, 0, 8, 1); // INSANE callback: Give Googles
writeArray(233, 0, 7, 1); // INSANE callback: Give nitro fuel writeArray(insaneVarNum, 0, 7, 1); // INSANE callback: Give nitro fuel
putState(235, 1); // Cheat and activate Ramp putState(235, 1); // Cheat and activate Ramp
writeVar(142 | 0x8000, 1); // Cheat and activate auto-booster (fan) writeVar(142 | 0x8000, 1); // Cheat and activate auto-booster (fan)

View file

@ -189,7 +189,8 @@ enum ScummGameId {
GID_PUTTDEMO, GID_PUTTDEMO,
GID_PUTTPUTT, GID_PUTTPUTT,
GID_PJSDEMO, GID_PJSDEMO,
GID_MONKEY_SEGA GID_MONKEY_SEGA,
GID_FTDEMO
}; };
#define _maxRooms res.num[rtRoom] #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}, GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE},
{"ftdemo", "Full Throttle (Mac Demo)", GID_FT, 7, MDT_NONE, {"ftdemo", "Full Throttle (Mac Demo)", GID_FT, 7, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE}, 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, {"dig", "The Dig", GID_DIG, 7, MDT_NONE,
GF_NEW_OPCODES | GF_NEW_COSTUMES | GF_NEW_CAMERA | GF_DIGI_IMUSE}, 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 // texts have to be drawn before the blast objects. Unless
// someone can think of a better way to achieve this effect. // someone can think of a better way to achieve this effect.
if (_gameId == GID_FT) { if (_gameId == GID_FT || _gameId == GID_FTDEMO) {
drawBlastTexts(); drawBlastTexts();
drawBlastObjects(); drawBlastObjects();
} else { } else {
@ -2769,6 +2771,10 @@ GameList Engine_SCUMM_detectGames(const FSList &fslist) {
strcpy(detectName2, g->gameName); strcpy(detectName2, g->gameName);
if (g->features & GF_HUMONGOUS) { if (g->features & GF_HUMONGOUS) {
strcat(detectName2, ".he0"); 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) { } else if (g->version >= 7) {
strcat(detectName2, ".la0"); strcat(detectName2, ".la0");
} else } else

View file

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

View file

@ -120,7 +120,7 @@ void Sound::addSoundToQueue(int sound) {
_scumm->ensureResourceLoaded(rtSound, sound); _scumm->ensureResourceLoaded(rtSound, sound);
addSoundToQueue2(sound); addSoundToQueue2(sound);
} else { } 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 ? // But why addSoundToQueue should not queue sound ?
_scumm->ensureResourceLoaded(rtSound, sound); _scumm->ensureResourceLoaded(rtSound, sound);
addSoundToQueue2(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 // and never time out. We can't do it blindly for all games, because
// it causes problem with the FOA intro. // it causes problem with the FOA intro.
if (_gameId == GID_FT && a == 4) if ((_gameId == GID_FT || _gameId == GID_FTDEMO) && a == 4)
_talkDelay = -1; _talkDelay = -1;
if (!buf[0]) { if (!buf[0]) {