aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gameDetector.cpp7
-rw-r--r--resource.cpp5
-rw-r--r--scumm.h3
-rw-r--r--verbs.cpp2
4 files changed, 15 insertions, 2 deletions
diff --git a/gameDetector.cpp b/gameDetector.cpp
index af2847dd87..3ce6f3dda0 100644
--- a/gameDetector.cpp
+++ b/gameDetector.cpp
@@ -404,7 +404,12 @@ static const VersionSettings version_settings[] = {
{"samnmax", "Sam & Max", GID_SAMNMAX, 6, 4, 2,
GF_NEW_OPCODES | GF_AFTER_V6 | GF_USE_KEY | GF_DRAWOBJ_OTHER_ORDER},
{"snmdemo", "Sam & Max (Demo)", GID_SAMNMAX, 6, 3, 0,
- GF_NEW_OPCODES | GF_AFTER_V6 | GF_USE_KEY | GF_ADLIB_DEFAULT},
+ GF_NEW_OPCODES | GF_AFTER_V6 | GF_USE_KEY | GF_ADLIB_DEFAULT},
+
+ {"puttdemo", "Putt Putt joins the parade (demo)", GID_SAMNMAX, 6, 3, 0,
+ GF_NEW_OPCODES | GF_AFTER_V6 | GF_USE_KEY | GF_ADLIB_DEFAULT | GF_HUMONGOUS},
+ {"moondemo", "Putt Putt goes to the moon (demo)", GID_SAMNMAX, 6, 3, 0,
+ GF_NEW_OPCODES | GF_AFTER_V6 | GF_USE_KEY | GF_ADLIB_DEFAULT | GF_HUMONGOUS},
/* Scumm Version 7 */
{"ft", "Full Throttle", GID_FT, 7, 3, 0,
diff --git a/resource.cpp b/resource.cpp
index fdb9899370..5d4c856836 100644
--- a/resource.cpp
+++ b/resource.cpp
@@ -64,12 +64,17 @@ void Scumm::openRoom(int room)
return;
}
if (!(_features & GF_SMALL_HEADER)) {
+
if (_features & GF_AFTER_V7)
sprintf(buf, "%s%s.la%d", _gameDataPath, _exe_name,
room == 0 ? 0 : res.roomno[rtRoom][room]);
+ else if (_features & GF_HUMONGOUS)
+ sprintf(buf, "%s%s.he%.1d", _gameDataPath, _exe_name,
+ room == 0 ? 0 : res.roomno[rtRoom][room]);
else
sprintf(buf, "%s%s.%.3d", _gameDataPath, _exe_name,
room == 0 ? 0 : res.roomno[rtRoom][room]);
+
_encbyte = (_features & GF_USE_KEY) ? 0x69 : 0;
} else if (!(_features & GF_SMALL_NAMES)) {
if (room == 0 || room >= 900) {
diff --git a/scumm.h b/scumm.h
index 6a74e09a66..4e9a8299a4 100644
--- a/scumm.h
+++ b/scumm.h
@@ -479,7 +479,8 @@ enum GameFeatures {
GF_AUDIOTRACKS = 1024,
GF_NO_SCALLING = 2048,
GF_ADLIB_DEFAULT = 4096,
- GF_AMIGA = 8192
+ GF_AMIGA = 8192,
+ GF_HUMONGOUS = 16384
};
enum WhereIsObject {
diff --git a/verbs.cpp b/verbs.cpp
index ac0956b698..fc2bc0c256 100644
--- a/verbs.cpp
+++ b/verbs.cpp
@@ -150,6 +150,8 @@ void Scumm::drawVerb(int vrb, int mode)
*/
_messagePtr = getResourceAddress(rtVerb, vrb);
+ if (!_messagePtr)
+ return;
assert(_messagePtr);
tmp = charset._center;