[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