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 {
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_SIMON1AMIGA = GF_SIMON1 | 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

View File

@ -96,6 +96,23 @@ static const char *const opcode_arg_table_simon2dos[256] = {
" ", " ", "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) {
Common::File in;
int num_inited_objects;
@ -148,6 +165,9 @@ void SimonEngine::loadGamePcFile(const char *filename) {
_tablesHeapPtrOrg = _tablesHeapPtr;
_tablesHeapCurPosOrg = _tablesHeapCurPos;
if (_game == GAME_FEEBLEFILES)
return;
/* Read list of TEXT resources */
if (_game == GAME_SIMON1ACORN)
in.open("STRIPPED");
@ -260,7 +280,9 @@ byte *SimonEngine::readSingleOpcode(Common::File *in, byte *ptr) {
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;
else if (_game & GF_SIMON2)
table = opcode_arg_table_simon2dos;

View File

@ -496,7 +496,7 @@ char *SimonEngine::gen_savename(int slot) {
}
bool SimonEngine::load_game(uint slot) {
char ident[18];
char ident[100];
Common::InSaveFile *f;
uint num, item_index, i, j;
@ -508,7 +508,11 @@ bool SimonEngine::load_game(uint slot) {
return false;
}
f->read(ident, 18);
if (_game == GAME_FEEBLEFILES) {
f->read(ident, 18);
} else {
f->read(ident, 100);
}
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},
{"simon1cd32", "Simon the Sorcerer 1 Talkie (Amiga CD32)", GAME_SIMON1CD32, "gameamiga"},
{"simon1demo", "Simon the Sorcerer 1 (DOS Demo)", GAME_SIMON1DEMO, "GDEMO"},
{"ff", "The Feeble Files", GAME_FEEBLEFILES, "GAME22"},
{NULL, NULL, 0, NULL}
};
@ -261,6 +262,20 @@ static const GameSpecificSettings simon2dos_settings = {
"", // flac_effects_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
static const char* bad_versions[3] = {
@ -378,7 +393,9 @@ SimonEngine::SimonEngine(GameDetector *detector, OSystem *syst)
}
_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) {
gss = PTR(simon2win_settings);
@ -1367,9 +1384,9 @@ void SimonEngine::loadTablesIntoMem(uint subr_id) {
readSubroutineBlock(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]);
} else if (_game & GF_TALKIE) {
} else if (_game == GAME_SIMON1TALKIE) {
memcpy(filename, "SFXXXX", 6);
_sound->readSfxFile(filename);
}
@ -3815,7 +3832,8 @@ void SimonEngine::openGameFile() {
#endif
}
loadIconFile();
if (_game != GAME_FEEBLEFILES)
loadIconFile();
vc34_setMouseOff();