[Scummvm-cvs-logs] scummvm master -> 1286710248730db63149169c8e482f633fa9ccad

bluegr bluegr at gmail.com
Mon Oct 22 13:10:57 CEST 2012


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
146d00a799 SCI: Add the Inside the Chest / Benind the Developer's Shield demo
81c9bcc010 SCI: Fix bug #3578336 - "SCI: Codename: ICEMAN - No 'EGA undithering' option"
bcf41fa7d2 SCI: Add another version of Castle of Dr. Brain (bug #3578286)
1286710248 SCI: Fix bug #3578335 - "SCI: Mixed-Up Mother Goose EGA - crash upon choosing kid"


Commit: 146d00a799f425a0871709bdf75557a0d7be9424
    https://github.com/scummvm/scummvm/commit/146d00a799f425a0871709bdf75557a0d7be9424
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-10-22T02:19:13-07:00

Commit Message:
SCI: Add the Inside the Chest / Benind the Developer's Shield demo

Changed paths:
    engines/sci/detection.cpp
    engines/sci/detection_tables.h
    engines/sci/engine/features.cpp
    engines/sci/sci.h



diff --git a/engines/sci/detection.cpp b/engines/sci/detection.cpp
index 8695d97..ebad3d0 100644
--- a/engines/sci/detection.cpp
+++ b/engines/sci/detection.cpp
@@ -103,6 +103,7 @@ static const PlainGameDescriptor s_sciGameTitles[] = {
 	{"pq4",             "Police Quest IV: Open Season"}, // floppy is SCI2, CD SCI2.1
 	{"qfg4",            "Quest for Glory IV: Shadows of Darkness"},	// floppy is SCI2, CD SCI2.1
 	// === SCI2.1 games ========================================================
+	{"chest",           "Inside the Chest"},	// aka Behind the Developer's Shield
 	{"gk2",             "The Beast Within: A Gabriel Knight Mystery"},
 	// TODO: Inside The Chest/Behind the Developer's Shield
 	{"kq7",             "King's Quest VII: The Princeless Bride"},
@@ -132,6 +133,7 @@ static const GameIdStrToEnum s_gameIdStrToEnum[] = {
 	{ "astrochicken",    GID_ASTROCHICKEN },
 	{ "camelot",         GID_CAMELOT },
 	{ "castlebrain",     GID_CASTLEBRAIN },
+	{ "chest",           GID_CHEST },
 	{ "christmas1988",   GID_CHRISTMAS1988 },
 	{ "christmas1990",   GID_CHRISTMAS1990 },
 	{ "christmas1992",   GID_CHRISTMAS1992 },
@@ -208,6 +210,7 @@ struct OldNewIdTableEntry {
 };
 
 static const OldNewIdTableEntry s_oldNewTable[] = {
+	{ "archive",    "chest",            SCI_VERSION_NONE     },
 	{ "arthur",		"camelot",			SCI_VERSION_NONE     },
 	{ "brain",      "castlebrain",      SCI_VERSION_1_MIDDLE },	// Amiga
 	{ "brain",      "castlebrain",      SCI_VERSION_1_LATE   },
diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index b978f40..1e9ae51 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -162,6 +162,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 	 	Common::ES_ESP, Common::kPlatformPC, ADGF_ADDENGLISH, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
 
+#ifdef ENABLE_SCI32
+	// Inside the Chest / Behind the Developer's Shield
+	// SCI interpreter version 2.000.000
+	{"chest", "", {
+		{"resource.map", 0, "9dd015e79cac4f91e7de805448f39775", 1912},
+		{"resource.000", 0, "e4efcd042f86679dd4e1834bb3a38edb", 3770943},
+		AD_LISTEND},
+	 	Common::EN_ANY, Common::kPlatformPC, ADGF_UNSTABLE, GUIO3(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_FB01_MIDI)	},
+#endif
+
 	// Christmas Card 1988 - English DOS
 	// SCI interpreter version 0.000.294
 	{"christmas1988", "", {
diff --git a/engines/sci/engine/features.cpp b/engines/sci/engine/features.cpp
index 22c0a14..49e2bfc 100644
--- a/engines/sci/engine/features.cpp
+++ b/engines/sci/engine/features.cpp
@@ -466,6 +466,14 @@ bool GameFeatures::autoDetectSci21KernelType() {
 		// This case doesn't occur in early SCI2.1 games, and we've only
 		// seen it happen in the RAMA demo, thus we can assume that the
 		// game is using a SCI2.1 table
+
+		// HACK: The Inside the Chest Demo doesn't have sounds at all, but
+		// it's using a SCI2 kernel
+		if (g_sci->getGameId() == GID_CHEST) {
+			_sci21KernelType = SCI_VERSION_2;
+			return true;
+		}
+
 		warning("autoDetectSci21KernelType(): Sound object not loaded, assuming a SCI2.1 table");
 		_sci21KernelType = SCI_VERSION_2_1;
 		return true;
diff --git a/engines/sci/sci.h b/engines/sci/sci.h
index 3441e26..3b9844b 100644
--- a/engines/sci/sci.h
+++ b/engines/sci/sci.h
@@ -110,6 +110,7 @@ enum SciGameId {
 	GID_ASTROCHICKEN,
 	GID_CAMELOT,
 	GID_CASTLEBRAIN,
+	GID_CHEST,
 	GID_CHRISTMAS1988,
 	GID_CHRISTMAS1990,
 	GID_CHRISTMAS1992,


Commit: 81c9bcc01004f05650aa500a5d798c3fcf88dbc1
    https://github.com/scummvm/scummvm/commit/81c9bcc01004f05650aa500a5d798c3fcf88dbc1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-10-22T02:25:52-07:00

Commit Message:
SCI: Fix bug #3578336 - "SCI: Codename: ICEMAN - No 'EGA undithering' option"

Changed paths:
    engines/sci/detection_tables.h



diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index 1e9ae51..a376af7 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -278,7 +278,7 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		{"resource.006", 0, "08050329aa113a9f14ed99cbfe3536ec", 232942},
 		{"resource.007", 0, "64f342463f6f35ba71b3509ef696ae3f", 267702},
 		AD_LISTEND},
-	 	Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
+	 	Common::EN_ANY, Common::kPlatformPC, 0, GUIO5(GUIO_NOSPEECH, GAMEOPTION_EGA_UNDITHER, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
 
 	// Conquests of Camelot - English Amiga (from www.back2roots.org)
 	// Executable scanning reports "1.002.030"


Commit: bcf41fa7d23f804a0939b9a19f23100f05ef330b
    https://github.com/scummvm/scummvm/commit/bcf41fa7d23f804a0939b9a19f23100f05ef330b
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-10-22T02:32:11-07:00

Commit Message:
SCI: Add another version of Castle of Dr. Brain (bug #3578286)

Changed paths:
    engines/sci/detection_tables.h



diff --git a/engines/sci/detection_tables.h b/engines/sci/detection_tables.h
index a376af7..8e8b818 100644
--- a/engines/sci/detection_tables.h
+++ b/engines/sci/detection_tables.h
@@ -129,6 +129,16 @@ static const struct ADGameDescription SciGameDescriptions[] = {
 		AD_LISTEND},
 	 	Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
 
+	// Castle of Dr. Brain - English DOS 5.25" Floppy VGA 1.1 (from rnjacobs, bug report #3578286)
+	{"castlebrain", "", {
+		{"resource.map", 0, "a1deac2647ad09472c63656bfb950a4d", 2739},
+		{"resource.000", 0, "27ec5fa09cd12a7fd16e86d96a2ed245", 347071},
+		{"resource.001", 0, "13e81e1839cd7b216d2bb5615c1ca160", 356812},
+		{"resource.002", 0, "583d348c908f89f94f8551d7fe0a2eca", 991752},
+		{"resource.003", 0, "6c3d1bb26ad532c94046bc9ac49b5ff4", 728315},
+		AD_LISTEND},
+	 	Common::EN_ANY, Common::kPlatformPC, 0, GUIO4(GUIO_NOSPEECH, GAMEOPTION_PREFER_DIGITAL_SFX, GAMEOPTION_ORIGINAL_SAVELOAD, GAMEOPTION_FB01_MIDI)	},
+
 	// Castle of Dr. Brain - English DOS Floppy 1.1
 	{"castlebrain", "", {
 		{"resource.map", 0, "f77728304c70017c54793eb6ca648174", 2745},


Commit: 1286710248730db63149169c8e482f633fa9ccad
    https://github.com/scummvm/scummvm/commit/1286710248730db63149169c8e482f633fa9ccad
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2012-10-22T02:47:28-07:00

Commit Message:
SCI: Fix bug #3578335 - "SCI: Mixed-Up Mother Goose EGA - crash upon choosing kid"

In several SCI0 games, the parameter to kDoSoundFade can be null.
We handle that case, instead of adding individual workarounds per game

Changed paths:
    engines/sci/engine/kernel_tables.h
    engines/sci/engine/workarounds.cpp
    engines/sci/sound/soundcmd.cpp



diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index b6b36c4..d0c9b9b 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -94,7 +94,7 @@ static const SciKernelMapSubEntry kDoSound_subops[] = {
 	{ SIG_SOUNDSCI0,       7, MAP_CALL(DoSoundResumeAfterRestore), "",                     NULL },
 	{ SIG_SOUNDSCI0,       8, MAP_CALL(DoSoundMasterVolume),       "(i)",                  NULL },
 	{ SIG_SOUNDSCI0,       9, MAP_CALL(DoSoundUpdate),             "o",                    NULL },
-	{ SIG_SOUNDSCI0,      10, MAP_CALL(DoSoundFade),               "o",                    kDoSoundFade_workarounds },
+	{ SIG_SOUNDSCI0,      10, MAP_CALL(DoSoundFade),               "[o0]",                 kDoSoundFade_workarounds },
 	{ SIG_SOUNDSCI0,      11, MAP_CALL(DoSoundGetPolyphony),       "",                     NULL },
 	{ SIG_SOUNDSCI0,      12, MAP_CALL(DoSoundStopAll),            "",                     NULL },
 	{ SIG_SOUNDSCI1EARLY,  0, MAP_CALL(DoSoundMasterVolume),       NULL,                   NULL },
diff --git a/engines/sci/engine/workarounds.cpp b/engines/sci/engine/workarounds.cpp
index 9fa0368..db510c2 100644
--- a/engines/sci/engine/workarounds.cpp
+++ b/engines/sci/engine/workarounds.cpp
@@ -243,9 +243,6 @@ const SciWorkaroundEntry kDisposeScript_workarounds[] = {
 
 //    gameID,           room,script,lvl,          object-name, method-name,    call,index,                workaround
 const SciWorkaroundEntry kDoSoundFade_workarounds[] = {
-	{ GID_CAMELOT,        -1,   989,  0,            "rmMusic", "fade",           -1,    0, { WORKAROUND_IGNORE,    0 } }, // gets called frequently with a NULL reference (i.e. 0:0) - bug #3035149
-	{ GID_KQ1,            -1,   989,  0,          "gameSound", "fade",           -1,    0, { WORKAROUND_IGNORE,    0 } }, // gets called in several scenes (e.g. graham cracker) with 0:0
-	{ GID_KQ4,            -1,   989,  0,            "mySound", "",               -1,    0, { WORKAROUND_IGNORE,    0 } }, // gets called in the demo when trying to open the non-existent menu with 0:0 - bug #3036942
 	{ GID_KQ5,           213,   989,  0,       "globalSound3", "fade",           -1,    0, { WORKAROUND_STILLCALL, 0 } }, // english floppy: when bandits leave the secret temple, parameter 4 is an object - bug #3037594
 	{ GID_KQ6,           105,   989,  0,        "globalSound", "fade",           -1,    0, { WORKAROUND_STILLCALL, 0 } }, // floppy: during intro, parameter 4 is an object
 	{ GID_KQ6,           460,   989,  0,       "globalSound2", "fade",           -1,    0, { WORKAROUND_STILLCALL, 0 } }, // after pulling the black widow's web on the isle of wonder, parameter 4 is an object - bug #3034567
diff --git a/engines/sci/sound/soundcmd.cpp b/engines/sci/sound/soundcmd.cpp
index 5d32f40..7782ab4 100644
--- a/engines/sci/sound/soundcmd.cpp
+++ b/engines/sci/sound/soundcmd.cpp
@@ -340,6 +340,12 @@ reg_t SoundCommandParser::kDoSoundMasterVolume(int argc, reg_t *argv, reg_t acc)
 reg_t SoundCommandParser::kDoSoundFade(int argc, reg_t *argv, reg_t acc) {
 	reg_t obj = argv[0];
 
+	// The object can be null in several SCI0 games (e.g. Camelot, KQ1, KQ4, MUMG).
+	// Check bugs #3035149, #3036942 and #3578335.
+	// In this case, we just ignore the call.
+	if (obj.isNull() && argc == 1)
+		return acc;
+
 	MusicEntry *musicSlot = _music->getSlot(obj);
 	if (!musicSlot) {
 		debugC(kDebugLevelSound, "kDoSound(fade): Slot not found (%04x:%04x)", PRINT_REG(obj));






More information about the Scummvm-git-logs mailing list