aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2005-03-30 23:25:49 +0000
committerEugene Sandulenko2005-03-30 23:25:49 +0000
commitf4c50eff957a7bdb65769fbee9e60c63e24605bf (patch)
treea9ccd799f6e9ae68f28259c7d52f4eb25bf1a353
parent9c772ce7d85153e4cfb44d8510569bc7fc2004d2 (diff)
downloadscummvm-rg350-f4c50eff957a7bdb65769fbee9e60c63e24605bf.tar.gz
scummvm-rg350-f4c50eff957a7bdb65769fbee9e60c63e24605bf.tar.bz2
scummvm-rg350-f4c50eff957a7bdb65769fbee9e60c63e24605bf.zip
Switch to headerless PRG data for MM NES for better compatibility.
svn-id: r17302
-rw-r--r--scumm/scumm.cpp24
-rw-r--r--scumm/util.cpp21
2 files changed, 22 insertions, 23 deletions
diff --git a/scumm/scumm.cpp b/scumm/scumm.cpp
index 5c0f2b09c0..037bc91043 100644
--- a/scumm/scumm.cpp
+++ b/scumm/scumm.cpp
@@ -408,6 +408,8 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"22c9eb04455440131ffc157aeb8d40a8", "Fatty Bear's Birthday Surprise (Windows Demo)", GID_FBEAR, 6, 70, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES | GF_WINDOWS, 0, 0},
+ {"22d07d6c386c9c25aca5dac2a0c0d94b", "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, "Maniac Mansion (SW).prg"},
{"2e85f7aa054930c692a5b1bed1dfc295", "Backyard Football 2002 (Demo Updated)", GID_HEGAME, 6, 100, 61, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // Football2002
{"32709cbeeb3044b34129950860a83f14", "Pajama Sam 2: Thunder and Lightning Aren't so Frightening (Updated)", GID_HEGAME, 6, 99, 61, MDT_NONE, // FIXME: number of actors
@@ -416,18 +418,16 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // PajamaNHD
{"37ff1b308999c4cca7319edfcc1280a0", "Putt-Putt Joins The Parade (Windows Demo)", GID_PUTTDEMO, 6, 70, 13, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
+ {"3905799e081b80a61d4460b7b733c206", "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, "Maniac Mansion (U).prg"},
{"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},
{"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},
- {"4f101be44a2a2323ae679e34a7c3f634", "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, "Maniac Mansion (SW).nes"},
{"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},
- {"59293b8524faee354f6ce7db9b5460d4", "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, "Maniac Mansion (F).nes"},
{"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,
@@ -442,6 +442,8 @@ 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},
+ {"81bbfa181184cb494e7a81dcfa94fbd9", "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, "Maniac Mansion (F).prg"},
{"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,8 +454,6 @@ 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},
- {"9a7f9443a7372f09f325c96176d9fec3", "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, "Maniac Mansion (E).nes"},
{"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},
{"9c92eeaf517a31b7221ec2546ab669fd", "Putt-Putt Goes To The Moon (Windows)", GID_HEGAME, 6, 70, 13, MDT_NONE,
@@ -476,10 +476,10 @@ static const ScummGameSettings multiple_versions_md5_settings[] = {
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0},
{"d7ab7cd6105546016e6a0d46fb36b964", "Pajama Sam: No Need To Hide When It's Dark Outside (Demo Updated)", GID_HEGAME, 6, 100, 61, MDT_NONE,
GF_NEW_OPCODES | GF_USE_KEY | GF_HUMONGOUS | GF_NEW_COSTUMES, 0, 0}, // PJSamDemo
+ {"d8d07efcb88f396bee0b402b10c3b1c9", "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, "Maniac Mansion (E).prg"},
{"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
- {"fcd1fb5aaae86dc0d23c624cd66c0aef", "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, "Maniac Mansion (U).nes"},
#endif
{NULL, NULL, 0, 0, 0, MDT_NONE, 0, 0, 0, 0}
};
@@ -499,10 +499,10 @@ struct SubstResFileNames {
static SubstResFileNames substResFileNameTable[] = {
{ "Intentionally/left/blank", "", kGenMacNoParens},
- { "00.LFL", "Maniac Mansion (E).nes", kGenAsIs },
- { "00.LFL", "Maniac Mansion (F).nes", kGenAsIs },
- { "00.LFL", "Maniac Mansion (SW).nes", kGenAsIs },
- { "00.LFL", "Maniac Mansion (U).nes", kGenAsIs },
+ { "00.LFL", "Maniac Mansion (E).prg", kGenAsIs },
+ { "00.LFL", "Maniac Mansion (F).prg", kGenAsIs },
+ { "00.LFL", "Maniac Mansion (SW).prg", kGenAsIs },
+ { "00.LFL", "Maniac Mansion (U).prg", kGenAsIs },
{ "racedemo", "500demo", kGenPC},
{ "Spydemo", "foxdemo", kGenPC},
{ "Spydemo", "FoxDemo", kGenMac },
diff --git a/scumm/util.cpp b/scumm/util.cpp
index 9ef56cfe8d..9a7a1d21f2 100644
--- a/scumm/util.cpp
+++ b/scumm/util.cpp
@@ -766,7 +766,7 @@ uint16 ScummNESFile::extractResource(Common::MemoryWriteStream *output, p_resour
if ((resOffset(res) == 0) && (resLength(res) == 0))
return 0; /* there are 8 scripts that are zero bytes long, so we should skip them */
- File::seek(16 + resOffset(res),SEEK_SET);
+ File::seek(resOffset(res),SEEK_SET);
switch (res->type) {
case NES_GLOBDATA:
@@ -794,8 +794,8 @@ uint16 ScummNESFile::extractResource(Common::MemoryWriteStream *output, p_resour
reslen += write_byte(output, FileReadByte());
}
- if (File::pos() - resOffset(res) - 16 != resLength(res))
- error("extract_resource - length mismatch while extracting graphics resource (was %04X, should be %04X)", File::pos() - resOffset(res) - 16, resLength(res));
+ if (File::pos() - resOffset(res) != resLength(res))
+ error("extract_resource - length mismatch while extracting graphics resource (was %04X, should be %04X)", File::pos() - resOffset(res), resLength(res));
break;
@@ -849,8 +849,8 @@ uint16 ScummNESFile::extractResource(Common::MemoryWriteStream *output, p_resour
} else
error("extract_resource - unknown sound type %d/%d detected",val,cnt);
- if (File::pos() - resOffset(res) - 16 != resLength(res))
- error("extract_resource - length mismatch while extracting sound resource (was %04X, should be %04X)", File::pos() - resOffset(res) - 16, resLength(res));
+ if (File::pos() - resOffset(res) != resLength(res))
+ error("extract_resource - length mismatch while extracting sound resource (was %04X, should be %04X)", File::pos() - resOffset(res), resLength(res));
break;
@@ -1136,23 +1136,22 @@ bool ScummNESFile::open(const char *filename, AccessMode mode) {
uint8 md5sum[16];
if (_ROMset == kROMsetNum) {
- // calculate md5 of first 900 bytes which is enough to tell the difference
- if (md5_file(filename, md5sum, 0, 900)) {
+ if (md5_file(filename, md5sum)) {
char md5str[32+1];
for (int j = 0; j < 16; j++) {
sprintf(md5str + j*2, "%02x", (int)md5sum[j]);
}
- if (!strcmp(md5str, "27b1163056a66b16f862345ecb433890")) {
+ if (!strcmp(md5str, "3905799e081b80a61d4460b7b733c206")) {
_ROMset = kROMsetUSA;
debug(1, "ROM contents verified as Maniac Mansion (USA)");
- } else if (!strcmp(md5str, "3a831207809d1dc8e6ca323102827ec1")) {
+ } else if (!strcmp(md5str, "d8d07efcb88f396bee0b402b10c3b1c9")) {
_ROMset = kROMsetEurope;
debug(1, "ROM contents verified as Maniac Mansion (Europe)");
- } else if (!strcmp(md5str, "96129094b3e09b7e3292b132bf345b17")) {
+ } else if (!strcmp(md5str, "22d07d6c386c9c25aca5dac2a0c0d94b")) {
_ROMset = kROMsetSweden;
debug(1, "ROM contents verified as Maniac Mansion (Sweden)");
- } else if (!strcmp(md5str, "95274b9e82c15b1be98ba6e99122196d")) {
+ } else if (!strcmp(md5str, "81bbfa181184cb494e7a81dcfa94fbd9")) {
_ROMset = kROMsetFrance;
debug(2, "ROM contents verified as Maniac Mansion (France)");
} else {