aboutsummaryrefslogtreecommitdiff
path: root/simon
diff options
context:
space:
mode:
Diffstat (limited to 'simon')
-rw-r--r--simon/game.cpp14
-rw-r--r--simon/intern.h3
-rw-r--r--simon/simon.cpp12
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);