diff options
-rw-r--r-- | gameDetector.cpp | 7 | ||||
-rw-r--r-- | resource.cpp | 5 | ||||
-rw-r--r-- | scumm.h | 3 | ||||
-rw-r--r-- | verbs.cpp | 2 |
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) { @@ -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 { @@ -150,6 +150,8 @@ void Scumm::drawVerb(int vrb, int mode) */ _messagePtr = getResourceAddress(rtVerb, vrb); + if (!_messagePtr) + return; assert(_messagePtr); tmp = charset._center; |