aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTravis Howell2006-09-29 05:33:22 +0000
committerTravis Howell2006-09-29 05:33:22 +0000
commit8d0d856bd85b11998655608a3ca4d1e52e129c96 (patch)
treec1f11afc810763a5929cb23566264f8bbeefbebf
parent5a8f3df4e8b131c3d393ebd0bea1b4ed08bd815e (diff)
downloadscummvm-rg350-8d0d856bd85b11998655608a3ca4d1e52e129c96.tar.gz
scummvm-rg350-8d0d856bd85b11998655608a3ca4d1e52e129c96.tar.bz2
scummvm-rg350-8d0d856bd85b11998655608a3ca4d1e52e129c96.zip
Add last game (dimp) of PP
svn-id: r24002
-rw-r--r--engines/simon/game.cpp24
-rw-r--r--engines/simon/intern.h1
-rw-r--r--engines/simon/res.cpp54
-rw-r--r--engines/simon/simon.cpp5
4 files changed, 79 insertions, 5 deletions
diff --git a/engines/simon/game.cpp b/engines/simon/game.cpp
index d574a7a16b..65754e104d 100644
--- a/engines/simon/game.cpp
+++ b/engines/simon/game.cpp
@@ -73,6 +73,7 @@ static const PlainGameDescriptor simonGames[] = {
{"simon1", "Simon the Sorcerer 1"},
{"simon2", "Simon the Sorcerer 2"},
{"feeble", "The Feeble Files"},
+ {"dimp", "Demon in my Pocket"},
{"jumble", "Jumble"},
{"puzzle", "NoPatience"},
{"swampy", "Swampy Adventures"},
@@ -614,6 +615,10 @@ static GameFileDescription ELVIRA_GameFiles[] = {
{ "tbllist", GAME_TBLFILE, "319f6b227c7822a551f57d24e70f8149"},
};
+static GameFileDescription DIMP_GameFiles[] = {
+ { "Gdimp", GAME_BASEFILE, "0b1e89ae1dc2e012b7fa7a987b4ac42a"},
+};
+
static GameFileDescription JUMBLE_GameFiles[] = {
{ "Gjumble", GAME_BASEFILE, "d54cce46d339038d1a6b74ea213655bc"},
};
@@ -1436,7 +1441,20 @@ static GameDescription gameDescriptions[] = {
Common::kPlatformWindows,
},
- // Jumble
+ // Simon the Sorcerer's Puzzle Pack - Demon in my Pocket
+ {
+ "dimp",
+ GType_PP,
+ GID_DIMP,
+ "CD",
+ ARRAYSIZE(DIMP_GameFiles),
+ DIMP_GameFiles,
+ GF_OLD_BUNDLE | GF_TALKIE,
+ Common::EN_ANY,
+ Common::kPlatformWindows,
+ },
+
+ // Simon the Sorcerer's Puzzle Pack - Jumble
{
"jumble",
GType_PP,
@@ -1449,7 +1467,7 @@ static GameDescription gameDescriptions[] = {
Common::kPlatformWindows,
},
- // Puzzle
+ // Simon the Sorcerer's Puzzle Pack - NoPatience
{
"puzzle",
GType_PP,
@@ -1462,7 +1480,7 @@ static GameDescription gameDescriptions[] = {
Common::kPlatformWindows,
},
- // Swampy Adventures
+ // Simon the Sorcerer's Puzzle Pack - Swampy Adventures
{
"swampy",
GType_PP,
diff --git a/engines/simon/intern.h b/engines/simon/intern.h
index 8bdcef29a2..7dca106266 100644
--- a/engines/simon/intern.h
+++ b/engines/simon/intern.h
@@ -251,6 +251,7 @@ enum GameIds {
GID_FEEBLEFILES_IT,
GID_FEEBLEFILES_ES,
+ GID_DIMP,
GID_JUMBLE,
GID_PUZZLE,
GID_SWAMPY
diff --git a/engines/simon/res.cpp b/engines/simon/res.cpp
index b8fe09120f..4724353ce1 100644
--- a/engines/simon/res.cpp
+++ b/engines/simon/res.cpp
@@ -932,10 +932,62 @@ byte *SimonEngine::loadVGAFile(uint id, uint type, uint32 &dstSize) {
return dst;
}
+static const char *dimpSoundList[32] = {
+ "Beep",
+ "Birth",
+ "Boiling",
+ "Burp",
+ "Cough",
+ "Die1",
+ "Die2",
+ "Fart",
+ "Inject",
+ "Killchik",
+ "Puke",
+ "Lights",
+ "Shock",
+ "Snore",
+ "Snotty",
+ "Whip",
+ "Whistle",
+ "Work1",
+ "Work2",
+ "Yawn",
+ "And0w",
+ "And0x",
+ "And0y",
+ "And0z",
+ "And10",
+ "And11",
+ "And12",
+ "And13",
+ "And14",
+ "And15",
+ "And16",
+ "And17",
+};
+
+
void SimonEngine::loadSound(uint sound, int pan, int vol, uint type) {
byte *dst;
- if (getFeatures() & GF_ZLIBCOMP) {
+ if (getGameId() == GID_DIMP) {
+ File in;
+ char filename[15];
+
+ assert(sound >= 1 && sound <= 32);
+ sprintf(filename, "%s.wav", dimpSoundList[sound - 1]);
+
+ in.open(filename);
+ if (in.isOpen() == false)
+ error("loadSound: Can't load %s", filename);
+
+ uint32 dstSize = in.size();
+ dst = (byte *)malloc(dstSize);
+ if (in.read(dst, dstSize) != dstSize)
+ error("loadSound: Read failed");
+ in.close();
+ } else if (getFeatures() & GF_ZLIBCOMP) {
char filename[15];
uint32 file, offset, srcSize, dstSize;
diff --git a/engines/simon/simon.cpp b/engines/simon/simon.cpp
index 74cc08ee8c..d238b7e269 100644
--- a/engines/simon/simon.cpp
+++ b/engines/simon/simon.cpp
@@ -422,7 +422,10 @@ int SimonEngine::init() {
return -1;
}
- if (getGameType() == GType_FF || getGameType() == GType_PP) {
+ if (getGameId() == GID_DIMP) {
+ _screenWidth = 496;
+ _screenHeight = 400;
+ } else if (getGameType() == GType_FF || getGameType() == GType_PP) {
_screenWidth = 640;
_screenHeight = 480;
} else {