Add FF table.

svn-id: r18948
This commit is contained in:
Travis Howell 2005-10-06 14:34:24 +00:00
parent ccaaeecc1c
commit e91503cb1c
4 changed files with 59 additions and 12 deletions

View File

@ -160,14 +160,17 @@ enum {
enum { enum {
GAME_SIMON1DOS = GF_SIMON1 | GF_OLD_BUNDLE, GAME_SIMON1DOS = GF_SIMON1 | GF_OLD_BUNDLE,
GAME_SIMON2DOS = GF_SIMON2,
GAME_SIMON1TALKIE = GF_SIMON1 | GF_TALKIE,
GAME_SIMON2TALKIE = GF_SIMON2 | GF_TALKIE,
GAME_SIMON2WIN = GF_SIMON2 | GF_WIN | GF_TALKIE,
GAME_SIMON1DEMO = GF_SIMON1 | GF_DEMO | GF_OLD_BUNDLE, GAME_SIMON1DEMO = GF_SIMON1 | GF_DEMO | GF_OLD_BUNDLE,
GAME_SIMON1AMIGA = GF_SIMON1 | GF_AMIGA | GF_OLD_BUNDLE, GAME_SIMON1AMIGA = GF_SIMON1 | GF_AMIGA | GF_OLD_BUNDLE,
GAME_SIMON1CD32 = GF_SIMON1 | GF_TALKIE | GF_AMIGA | GF_OLD_BUNDLE, GAME_SIMON1CD32 = GF_SIMON1 | GF_TALKIE | GF_AMIGA | GF_OLD_BUNDLE,
GAME_SIMON1ACORN = GF_SIMON1 | GF_TALKIE | GF_ACORN GAME_SIMON1ACORN = GF_SIMON1 | GF_TALKIE | GF_ACORN,
GAME_SIMON1TALKIE = GF_SIMON1 | GF_TALKIE,
GAME_SIMON2DOS = GF_SIMON2,
GAME_SIMON2TALKIE = GF_SIMON2 | GF_TALKIE,
GAME_SIMON2WIN = GF_SIMON2 | GF_WIN | GF_TALKIE,
GAME_FEEBLEFILES = GF_SIMON2 | GF_WIN | GF_TALKIE | GF_OLD_BUNDLE
}; };
#endif #endif

View File

@ -96,6 +96,23 @@ static const char *const opcode_arg_table_simon2dos[256] = {
" ", " ", "BT ", " ", "B " " ", " ", "BT ", " ", "B "
}; };
static const char *const opcode_arg_table_feeblefiles[256] = {
" ", "I ", "I ", "I ", "I ", "I ", "I ", "II ", "II ", "II ", "II ", "B ", "B ", "BN ", "BN ",
"BN ", "BN ", "BB ", "BB ", "BB ", "BB ", "II ", "II ", "N ", "I ", "I ", "I ", "IN ", "IB ",
"II ", "I ", "I ", "II ", "II ", "IBB ", "BIB ", "BB ", "B ", "BI ", "IB ", "B ", "B ", "BN ",
"BN ", "BN ", "BB ", "BB ", "BN ", "BN ", "BB ", "BB ", "BN ", "BB ", "BN ", "B ", "I ", "IB ",
"IB ", "II ", "I ", "I ", "IN ", "B ", "T ", "T ", "NNNNNB ", "BT ", "BTS ", "T ", " ", "B ",
"N ", "IBN ", "I ", "I ", "I ", "NN ", " ", " ", "IT ", "II ", "I ", "B ", " ", "IB ", "IBB ",
"IIB ", "T ", " ", " ", "IB ", "IB ", "IB ", "B ", "BB ", "IBB ", "NB ", "N ", "NNBNNN ", "NN ",
" ", "BNNNNNN ", "B ", " ", "B ", "B ", "BB ", "NNNNNIN ", "N ", "N ", "N ", "NNN ", "NBNN ",
"IBNN ", "IB ", "IB ", "IB ", "IB ", "N ", "N ", "N ", "BI ", " ", " ", "N ", "I ", "IBB ",
"NNB ", "N ", "N ", "Ban ", " ", " ", " ", " ", " ", "IB ", "B ", " ", "II ", " ", "BI ",
"N ", "I ", "IB ", "IB ", "IB ", "IB ", "IB ", "IB ", "IB ", "BI ", "BB ", "B ", "B ", "B ",
"B ", "IBB ", "IBN ", "IB ", "B ", "BNNN ", "BBTS ", "N ", " ", "Ian ", "B ", "B ", "B ", "B ",
"T ", "N ", " ", " ", "I ", " ", " ", "BBI ", "NNBB ", "BBB ", " ", " ", "T ", " ", "N ", "N ",
" ", " ", "BT ", " ", "B ", " ", "BBBB ", " ", " ", "BBBB ", "B ", "B ", "B ", "B "
};
void SimonEngine::loadGamePcFile(const char *filename) { void SimonEngine::loadGamePcFile(const char *filename) {
Common::File in; Common::File in;
int num_inited_objects; int num_inited_objects;
@ -148,6 +165,9 @@ void SimonEngine::loadGamePcFile(const char *filename) {
_tablesHeapPtrOrg = _tablesHeapPtr; _tablesHeapPtrOrg = _tablesHeapPtr;
_tablesHeapCurPosOrg = _tablesHeapCurPos; _tablesHeapCurPosOrg = _tablesHeapCurPos;
if (_game == GAME_FEEBLEFILES)
return;
/* Read list of TEXT resources */ /* Read list of TEXT resources */
if (_game == GAME_SIMON1ACORN) if (_game == GAME_SIMON1ACORN)
in.open("STRIPPED"); in.open("STRIPPED");
@ -260,7 +280,9 @@ byte *SimonEngine::readSingleOpcode(Common::File *in, byte *ptr) {
const char *const *table; const char *const *table;
if ((_game & GF_SIMON2) && (_game & GF_TALKIE)) if (_game == GAME_FEEBLEFILES) {
table = opcode_arg_table_feeblefiles;
} else if ((_game & GF_SIMON2) && (_game & GF_TALKIE))
table = opcode_arg_table_simon2win; table = opcode_arg_table_simon2win;
else if (_game & GF_SIMON2) else if (_game & GF_SIMON2)
table = opcode_arg_table_simon2dos; table = opcode_arg_table_simon2dos;

View File

@ -496,7 +496,7 @@ char *SimonEngine::gen_savename(int slot) {
} }
bool SimonEngine::load_game(uint slot) { bool SimonEngine::load_game(uint slot) {
char ident[18]; char ident[100];
Common::InSaveFile *f; Common::InSaveFile *f;
uint num, item_index, i, j; uint num, item_index, i, j;
@ -508,7 +508,11 @@ bool SimonEngine::load_game(uint slot) {
return false; return false;
} }
f->read(ident, 18); if (_game == GAME_FEEBLEFILES) {
f->read(ident, 18);
} else {
f->read(ident, 100);
}
num = f->readUint32BE(); num = f->readUint32BE();

View File

@ -75,6 +75,7 @@ static const SimonGameSettings simon_settings[] = {
{"simon2mac", "Simon the Sorcerer 2 Talkie (Amiga or Mac)", GAME_SIMON2WIN, 0}, {"simon2mac", "Simon the Sorcerer 2 Talkie (Amiga or Mac)", GAME_SIMON2WIN, 0},
{"simon1cd32", "Simon the Sorcerer 1 Talkie (Amiga CD32)", GAME_SIMON1CD32, "gameamiga"}, {"simon1cd32", "Simon the Sorcerer 1 Talkie (Amiga CD32)", GAME_SIMON1CD32, "gameamiga"},
{"simon1demo", "Simon the Sorcerer 1 (DOS Demo)", GAME_SIMON1DEMO, "GDEMO"}, {"simon1demo", "Simon the Sorcerer 1 (DOS Demo)", GAME_SIMON1DEMO, "GDEMO"},
{"ff", "The Feeble Files", GAME_FEEBLEFILES, "GAME22"},
{NULL, NULL, 0, NULL} {NULL, NULL, 0, NULL}
}; };
@ -261,6 +262,20 @@ static const GameSpecificSettings simon2dos_settings = {
"", // flac_effects_filename "", // flac_effects_filename
"GAME32", // gamepc_filename "GAME32", // gamepc_filename
}; };
static const GameSpecificSettings feeblefiles_settings = {
"", // gme_filename
"", // wav_filename
"", // voc_filename
"", // mp3_filename
"", // vorbis_filename
"", // flac_filename
"", // voc_effects_filename
"", // mp3_effects_filename
"", // vorbis_effects_filename
"", // flac_effects_filename
"GAME22", // gamepc_filename
};
#endif #endif
static const char* bad_versions[3] = { static const char* bad_versions[3] = {
@ -378,7 +393,9 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
} }
_language = Common::parseLanguage(ConfMan.get("language")); _language = Common::parseLanguage(ConfMan.get("language"));
if (_game & GF_SIMON2) { if (_game == GAME_FEEBLEFILES) {
gss = PTR(feeblefiles_settings);
} else if (_game & GF_SIMON2) {
if (_game & GF_TALKIE) { if (_game & GF_TALKIE) {
gss = PTR(simon2win_settings); gss = PTR(simon2win_settings);
@ -1367,9 +1384,9 @@ void SimonEngine::loadTablesIntoMem(uint subr_id) {
readSubroutineBlock(in); readSubroutineBlock(in);
closeTablesFile(in); closeTablesFile(in);
if (_game & GF_SIMON2) { if (_game == GAME_SIMON2DOS || _game == GAME_SIMON2WIN) {
_sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename + 6) - 1 + SOUND_INDEX_BASE]); _sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename + 6) - 1 + SOUND_INDEX_BASE]);
} else if (_game & GF_TALKIE) { } else if (_game == GAME_SIMON1TALKIE) {
memcpy(filename, "SFXXXX", 6); memcpy(filename, "SFXXXX", 6);
_sound->readSfxFile(filename); _sound->readSfxFile(filename);
} }
@ -3815,7 +3832,8 @@ void SimonEngine::openGameFile() {
#endif #endif
} }
loadIconFile(); if (_game != GAME_FEEBLEFILES)
loadIconFile();
vc34_setMouseOff(); vc34_setMouseOff();