diff options
Diffstat (limited to 'simon')
-rw-r--r-- | simon/game.cpp | 14 | ||||
-rw-r--r-- | simon/intern.h | 3 | ||||
-rw-r--r-- | simon/simon.cpp | 12 |
3 files changed, 19 insertions, 10 deletions
diff --git a/simon/game.cpp b/simon/game.cpp index 21d6c73ff8..a2ac24f5ab 100644 --- a/simon/game.cpp +++ b/simon/game.cpp @@ -224,6 +224,14 @@ static GameFileDescription SIMON1_GameFiles[] = { }; // Simon the Sorcerer 2 +static GameFileDescription SIMON2DOS_GameFiles[] = { + {"game32", GAME_BASEFILE}, + {"icon.dat", GAME_ICONFILE}, + {"simon2.gme", GAME_GMEFILE}, + {"stripped.txt", GAME_STRFILE}, + {"tbllist", GAME_TBLFILE}, +}; + static GameFileDescription SIMON2_GameFiles[] = { {"gsptr30", GAME_BASEFILE}, {"icon.dat", GAME_ICONFILE}, @@ -265,7 +273,7 @@ static GameDescription gameDescriptions[] = { GType_SIMON1, GID_SIMON1CD32, "Simon the Sorcerer 1 (Amiga CD32)", - ARRAYSIZE(SIMON1_GameFiles), + ARRAYSIZE(SIMON1CD32_GameFiles), SIMON1CD32_GameFiles, GF_TALKIE | GF_OLD_BUNDLE, Common::EN_USA, @@ -408,8 +416,8 @@ static GameDescription gameDescriptions[] = { GType_SIMON2, GID_SIMON2DOS, "Simon the Sorcerer 2 (DOS Floppy)", - ARRAYSIZE(SIMON2_GameFiles), - SIMON2_GameFiles, + ARRAYSIZE(SIMON2DOS_GameFiles), + SIMON2DOS_GameFiles, 0, Common::EN_USA, Common::kPlatformPC, diff --git a/simon/intern.h b/simon/intern.h index 0218fd2ed4..d2ee33036b 100644 --- a/simon/intern.h +++ b/simon/intern.h @@ -149,7 +149,8 @@ struct GameSpecificSettings { enum GameFeatures { GF_TALKIE = 1 << 0, - GF_OLD_BUNDLE = 1 << 1 + GF_OLD_BUNDLE = 1 << 1, + GF_CRUNCHED = 1 << 2 }; enum GameFileTypes { diff --git a/simon/simon.cpp b/simon/simon.cpp index c30809d793..c62c4b3a6b 100644 --- a/simon/simon.cpp +++ b/simon/simon.cpp @@ -1314,7 +1314,7 @@ void SimonEngine::loadTablesIntoMem(uint subr_id) { // TODO } else if (getGameType() == GType_SIMON2) { _sound->loadSfxTable(_gameFile, _gameOffsetsPtr[atoi(filename + 6) - 1 + SOUND_INDEX_BASE]); - } else if (getFeatures() & GF_TALKIE) { + } else if (getPlatform() == Common::kPlatformWindows) { memcpy(filename, "SFXXXX", 6); _sound->readSfxFile(filename); } @@ -3562,7 +3562,7 @@ void SimonEngine::talk_with_text(uint vgaSpriteId, uint color, const char *strin #define SD_TYPE_LITERAL (0) #define SD_TYPE_MATCH (1) -static bool decrunch_file_amiga (byte *src, byte *dst, uint32 size) { +static bool decrunchFile(byte *src, byte *dst, uint32 size) { byte *s = src + size - 4; uint32 destlen = READ_BE_UINT32 (s); uint32 bb, x, y; @@ -3675,11 +3675,11 @@ void SimonEngine::read_vga_from_datfile_1(uint vga_id) { error("read_vga_from_datfile_1: can't open %s", buf); size = in.size(); - if (getPlatform() == Common::kPlatformAmiga) { + if (getFeatures() & GF_CRUNCHED) { byte *buffer = new byte[size]; if (in.read(buffer, size) != size) error("read_vga_from_datfile_1: read failed"); - decrunch_file_amiga (buffer, _vgaBufferPointers[11].vgaFile2, size); + decrunchFile(buffer, _vgaBufferPointers[11].vgaFile2, size); delete [] buffer; } else { if (in.read(_vgaBufferPointers[11].vgaFile2, size) != size) @@ -3721,12 +3721,12 @@ byte *SimonEngine::read_vga_from_datfile_2(uint id) { error("read_vga_from_datfile_2: can't open %s", buf); size = in.size(); - if (getPlatform() == Common::kPlatformAmiga) { + if (getFeatures() & GF_CRUNCHED) { byte *buffer = new byte[size]; if (in.read(buffer, size) != size) error("read_vga_from_datfile_2: read failed"); dst = setup_vga_destination (READ_BE_UINT32(buffer + size - 4) + extraBuffer); - decrunch_file_amiga (buffer, dst, size); + decrunchFile(buffer, dst, size); delete[] buffer; } else { dst = setup_vga_destination(size + extraBuffer); |