aboutsummaryrefslogtreecommitdiff
path: root/scumm
diff options
context:
space:
mode:
authorEugene Sandulenko2005-03-27 21:21:05 +0000
committerEugene Sandulenko2005-03-27 21:21:05 +0000
commitdbfeb393aa3aa7a0c5252450293ff28e22ca8108 (patch)
tree0c16047ced553eb5a66be896ed52dba9662de250 /scumm
parentca8899e3c1b82cf67c6a3fd91a494931501c9f15 (diff)
downloadscummvm-rg350-dbfeb393aa3aa7a0c5252450293ff28e22ca8108.tar.gz
scummvm-rg350-dbfeb393aa3aa7a0c5252450293ff28e22ca8108.tar.bz2
scummvm-rg350-dbfeb393aa3aa7a0c5252450293ff28e22ca8108.zip
Patch from Quietust for MM NES
o Fix number of global objects o Camera-related differences o Proper user states o Updated MD5 for new 00.lfl svn-id: r17268
Diffstat (limited to 'scumm')
-rw-r--r--scumm/resource_v2.cpp5
-rw-r--r--scumm/script_v2.cpp13
-rw-r--r--scumm/scumm.cpp12
3 files changed, 20 insertions, 10 deletions
diff --git a/scumm/resource_v2.cpp b/scumm/resource_v2.cpp
index fbc4d3d392..408568032a 100644
--- a/scumm/resource_v2.cpp
+++ b/scumm/resource_v2.cpp
@@ -36,7 +36,10 @@ void ScummEngine_v2::readClassicIndexFile() {
if (!(_features & GF_AMIGA) && !(_features & GF_NES))
_musicEngine = new Player_V1(this, _midiDriver != MD_PCSPK);
- _numGlobalObjects = 800;
+ if (_features & GF_NES)
+ _numGlobalObjects = 775;
+ else
+ _numGlobalObjects = 800;
_numRooms = 55;
if (_features & GF_NES)
diff --git a/scumm/script_v2.cpp b/scumm/script_v2.cpp
index dcbc1e8429..ca244f0be3 100644
--- a/scumm/script_v2.cpp
+++ b/scumm/script_v2.cpp
@@ -1431,7 +1431,7 @@ void ScummEngine_v2::o2_endCutscene() {
// Reset user state to values before cutscene
setUserState(vm.cutSceneData[0] | 7);
- if (_gameId == GID_MANIAC) {
+ if ((_gameId == GID_MANIAC) && !(_features & GF_NES)) {
camera._mode = (byte) vm.cutSceneData[3];
if (camera._mode == kFollowActorCameraMode) {
actorFollowCamera(VAR(VAR_EGO));
@@ -1453,7 +1453,7 @@ void ScummEngine_v2::o2_beginOverride() {
}
void ScummEngine_v2::o2_chainScript() {
- int data = getVarOrDirectByte(0x80);
+ int data = getVarOrDirectByte(PARAM_1);
stopScript(vm.slot[_currentScript].number);
_currentScript = 0xFF;
runScript(data, 0, 0, 0);
@@ -1479,6 +1479,8 @@ void ScummEngine_v2::o2_pickupObject() {
clearDrawObjectQueue();
runInventoryScript(1);
+ if (_features & GF_NES)
+ _sound->addSoundToQueue(51); // play 'pickup' sound
}
void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
@@ -1494,7 +1496,10 @@ void ScummEngine_v2::o2_cursorCommand() { // TODO: Define the magic numbers
void ScummEngine_v2::setUserState(byte state) {
if (state & 4) { // Userface
- _userState = state & (32 | 64 | 128);
+ if (_features & GF_NES)
+ _userState = (_userState & ~0xE0) | (state & 0xE0);
+ else
+ _userState = state & (32 | 64 | 128);
}
if (state & 1) { // Freeze
@@ -1505,6 +1510,8 @@ void ScummEngine_v2::setUserState(byte state) {
}
if (state & 2) { // Cursor Show/Hide
+ if (_features & GF_NES)
+ _userState = (_userState & ~0x10) | (state & 0x10);
if (state & 16) {
_userPut = 1;
_cursor.state = 1;
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index a96bd09de2..cd9c0150e4 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -418,14 +418,14 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"3de99ef0523f8ca7958faa3afccd035a", "Spyfox 1: Dry Cereal (Updated)", GID_HEGAME, 6, 100, 61, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
- {"438fc5ccb17d1894f93b2add831af66c", "Maniac Mansion (NES E)", GID_MANIAC, 1, 0, 25, MDT_NONE,
- GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
{"4ce2d5b355964bbcb5e5ce73236ef868", "Freddi Fish 5: The Case of the Creature of Coral Cave (Updated Ru)", GID_HEGAME, 6, 100, 61, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // FIXME: number of actors
{"4dbff3787aedcd96b0b325f2d92d7ad9", "Freddi Fish and Luther's Maze Madness (Updated)", GID_HEGAME, 6, 100, 60, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"51305e929e330e24a75a0351c8f9975e", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Updated)", GID_HEGAME, 6, 99, 30, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
+ {"635b821a347728268ca0636c45143ab2", "Maniac Mansion (NES U)", GID_MANIAC, 1, 0, 25, MDT_NONE,
+ GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
{"6a30a07f353a75cdc602db27d73e1b42", "Putt-Putt Joins The Parade (Windows)", GID_HEGAME, 6, 70, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_WINDOWS, 0, 0},
{"6af2419fe3db5c2fdb091ae4e5833770", "Putt-Putt Enters the Race (Demo Alt)", GID_FREDDI4, 6, 98, 61, MDT_NONE,
@@ -440,8 +440,6 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // FIXME: number of actors
{"7f45ddd6dbfbf8f80c0c0efea4c295bc", "Maniac Mansion (v1)", GID_MANIAC, 1, 0, 25, MDT_PCSPK,
GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING, 0, 0},
- {"8330db03629e8fecd2c8035f0014946b", "Maniac Mansion (NES SW)", GID_MANIAC, 1, 0, 25, MDT_NONE,
- GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
{"86c9902b7bec1a17926d4dae85beaa45", "Let's Explore the Airport with Buzzy (Demo) (puttputt cd)", GID_HEGAME, 6, 71, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"8e3241ddd6c8dadf64305e8740d45e13", "Putt-Putt and Pep's Balloon-O-Rama (Updated)", GID_HEGAME, 6, 100, 60, MDT_NONE,
@@ -452,7 +450,7 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"92e7727e67f5cd979d8a1070e4eb8cb3", "Putt-Putt Saves the Zoo (Updated)", GID_FREDDI4, 6, 98, 30, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
- {"93782ee33ab4b4f4dddf5e103df5ce8b", "Maniac Mansion (NES U)", GID_MANIAC, 1, 0, 25, MDT_NONE,
+ {"92fc0b874e44177215336568d9e6b9d5", "Maniac Mansion (NES SW)", GID_MANIAC, 1, 0, 25, MDT_NONE,
GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
{"9c143c5905055d5df7a0f014ab379aee", "Putt-Putt Goes To The Moon (Windows Demo)", GID_HEGAME, 6, 70, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_WINDOWS, 0, 0},
@@ -466,6 +464,8 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"b23f7cd7c304d7dff08e92a96120d5b4", "Zak McKracken and the Alien Mindbenders (v1)", GID_ZAK, 1, 0, 13, MDT_PCSPK,
GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING, 0, 0},
+ {"b5fa3b53523c849fbbcaeff86d5fd1ee", "Maniac Mansion (NES E)", GID_MANIAC, 1, 0, 25, MDT_NONE,
+ GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
{"bf8b52fdd9a69c67f34e8e9fec72661c", "Let's Explore the Farm with Buzzy (Demo) (puttputt cd)", GID_HEGAME, 6, 71, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"d37c55388294b66e53e7ced3af88fa68", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Demo Updated)", GID_HEGAME, 6, 100, 30, MDT_NONE,
@@ -478,7 +478,7 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // PJSamDemo
{"e41de1c2a15abbcdbf9977e2d7e8a340", "Freddi Fish 2: The Case of the Haunted Schoolhouse (Updated Ru)", GID_HEGAME, 6, 100, 61, MDT_NONE, // FIXME: number of actors
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // FreddiCHSH
- {"e96fffddd20f74d8da0f9a3af0123fa4", "Maniac Mansion (NES F)", GID_MANIAC, 1, 0, 25, MDT_NONE,
+ {"f77d2f0224042a21387899a54844fded", "Maniac Mansion (NES F)", GID_MANIAC, 1, 0, 25, MDT_NONE,
GF_SMALL_HEADER | GF_USE_KEY | GF_SMALL_NAMES | GF_16COLOR | GF_OLD_BUNDLE | GF_NO_SCALING | GF_NES, 0, 0},
#endif
{NULL, NULL, 0, 0, 0, MDT_NONE, 0, 0, 0, 0}