[Scummvm-git-logs] scummvm master -> 830d4fb1e7fc3bd96f51ac3b82a503270c90215d

elasota noreply at scummvm.org
Sun Jun 11 06:53:57 UTC 2023


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

Summary:
097751fc0c VCRUISE: Add detection for Reah Polish demo and Schizm Dutch DVD
830d4fb1e7 MTROPOLIS: Fix hang in MTI cannon scene


Commit: 097751fc0cf806fa6adb9d5e6d2fd7afa291dfd9
    https://github.com/scummvm/scummvm/commit/097751fc0cf806fa6adb9d5e6d2fd7afa291dfd9
Author: elasota (ejlasota at gmail.com)
Date: 2023-06-11T02:53:35-04:00

Commit Message:
VCRUISE: Add detection for Reah Polish demo and Schizm Dutch DVD

Changed paths:
    engines/vcruise/detection_tables.h


diff --git a/engines/vcruise/detection_tables.h b/engines/vcruise/detection_tables.h
index 209cbccdbce..13b3c4a7baf 100644
--- a/engines/vcruise/detection_tables.h
+++ b/engines/vcruise/detection_tables.h
@@ -128,6 +128,19 @@ static const VCruiseGameDescription gameDescriptions[] = {
 		GID_REAH,
 		Common::RU_RUS,
 	},
+	{ // Reah: Face the Unknown, Polish demo
+		{
+			"reah",
+			"Polish Demo",
+			AD_ENTRY1s("Reah.exe", "4667d7e3d886f01ec28040a9022b1b56", 281600),
+			Common::UNK_LANG,
+			Common::kPlatformWindows,
+			ADGF_TESTING,
+			GUIO0()
+		},
+		GID_REAH,
+		Common::PL_POL,
+	},
 
 	{ // Schizm: Mysterious Journey, English CD Version
 		{
@@ -158,7 +171,20 @@ static const VCruiseGameDescription gameDescriptions[] = {
 		Common::DE_DEU,
 	},
 
-		
+
+	{ // Schizm: Mysterious Journey, Dutch DVD Version
+		{
+			"schizm",
+			"English DVD",
+			AD_ENTRY1s("disk1.pak", "41bd7514a7d783c555f3783c9417bf9e", 272405273),
+			Common::UNK_LANG,
+			Common::kPlatformWindows,
+			ADGF_TESTING | VCRUISE_GF_WANT_OGG_VORBIS | VCRUISE_GF_NEED_JPEG | VCRUISE_GF_GENTEE_PACKAGE,
+			GUIO0()
+		},
+		GID_SCHIZM,
+		Common::NL_NLD,
+	},
 	{ // Schizm: Mysterious Journey, English DVD Version
 		{
 			"schizm",


Commit: 830d4fb1e7fc3bd96f51ac3b82a503270c90215d
    https://github.com/scummvm/scummvm/commit/830d4fb1e7fc3bd96f51ac3b82a503270c90215d
Author: elasota (ejlasota at gmail.com)
Date: 2023-06-11T02:53:35-04:00

Commit Message:
MTROPOLIS: Fix hang in MTI cannon scene

Changed paths:
    engines/mtropolis/elements.cpp
    engines/mtropolis/elements.h


diff --git a/engines/mtropolis/elements.cpp b/engines/mtropolis/elements.cpp
index 89110dbf9c0..7a3a477ddc3 100644
--- a/engines/mtropolis/elements.cpp
+++ b/engines/mtropolis/elements.cpp
@@ -1223,7 +1223,7 @@ MiniscriptInstructionOutcome ImageElement::scriptSetFlushPriority(MiniscriptThre
 
 MToonElement::MToonElement()
 	: _cacheBitmap(false), _maintainRate(false), _assetID(0), _rateTimes100000(0), _flushPriority(0), _celStartTimeMSec(0),
-	  _isPlaying(false), _renderedFrame(0), _playRange(IntRange(1, 1)), _cel(1), _hasIssuedRenderWarning(false) {
+	  _isPlaying(false), _isStopped(false), _renderedFrame(0), _playRange(IntRange(1, 1)), _cel(1), _hasIssuedRenderWarning(false) {
 }
 
 MToonElement::~MToonElement() {
@@ -1305,6 +1305,11 @@ VThreadState MToonElement::consumeCommand(Runtime *runtime, const Common::Shared
 		becomeVisibleTaskData->desiredFlag = true;
 		becomeVisibleTaskData->runtime = runtime;
 
+		if (_isStopped) {
+			_isStopped = false;
+			runtime->setSceneGraphDirty();
+		}
+
 		return kVThreadReturn;
 	}
 	if (Event(EventIDs::kStop, 0).respondsTo(msg->getEvent())) {
@@ -1320,6 +1325,7 @@ VThreadState MToonElement::consumeCommand(Runtime *runtime, const Common::Shared
 
 		StopPlayingTaskData *stopPlayingTaskData = runtime->getVThread().pushTask("MToonElement::stopPlayingTask", this, &MToonElement::stopPlayingTask);
 		stopPlayingTaskData->runtime = runtime;
+
 		return kVThreadReturn;
 	}
 
@@ -1369,6 +1375,11 @@ bool MToonElement::canAutoPlay() const {
 }
 
 void MToonElement::render(Window *window) {
+	// Stopped mToons are not supposed to render
+	// FIXME: Should this also disable mouse collision?  Should we detect ths somewhere else?
+	if (_isStopped)
+		return;
+
 	if (_cachedMToon) {
 		_cachedMToon->optimize(getRuntime());
 
@@ -1534,9 +1545,13 @@ VThreadState MToonElement::stopPlayingTask(const StopPlayingTaskData &taskData)
 	_contentsDirty = true;
 	_isPlaying = false;
 
-	Common::SharedPtr<MessageProperties> msgProps(new MessageProperties(Event(EventIDs::kStop, 0), DynamicValue(), getSelfReference()));
-	Common::SharedPtr<MessageDispatch> dispatch(new MessageDispatch(msgProps, this, false, true, false));
-	taskData.runtime->sendMessageOnVThread(dispatch);
+	if (!_isStopped) {
+		_isStopped = true;
+
+		Common::SharedPtr<MessageProperties> msgProps(new MessageProperties(Event(EventIDs::kStop, 0), DynamicValue(), getSelfReference()));
+		Common::SharedPtr<MessageDispatch> dispatch(new MessageDispatch(msgProps, this, false, true, false));
+		taskData.runtime->sendMessageOnVThread(dispatch);
+	}
 
 	return kVThreadReturn;
 }
diff --git a/engines/mtropolis/elements.h b/engines/mtropolis/elements.h
index 6ba6d4f6edb..aee25dc8f84 100644
--- a/engines/mtropolis/elements.h
+++ b/engines/mtropolis/elements.h
@@ -284,6 +284,15 @@ private:
 	uint32 _celStartTimeMSec;
 	bool _isPlaying;	// Is actually rolling media, this is only set by playMedia because it needs to start after scene transition
 
+	// Stop state works independently of pause/hidden even though it has similar effect:
+	// If an mToon is stopped, then it it is always hidden and will not play until a Play
+	// command is received.
+	//
+	// Also, MTI depends on not firing Stopped commands if the mToon is already stopped,
+	// otherwise the cannon scene in the Hispaniola will get stuck in an infinite loop due
+	// to Stopped
+	bool _isStopped;
+
 	Common::SharedPtr<Graphics::ManagedSurface> _renderSurface;
 	uint32 _renderedFrame;
 




More information about the Scummvm-git-logs mailing list