[Scummvm-git-logs] scummvm master -> 5e2f191d75b590fbc61cb521cef209af173caa6a

elasota noreply at scummvm.org
Wed Jul 27 06:35:43 UTC 2022


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:
3503feec23 MTROPOLIS: Fix up some things used by Obsidian demos
5e2f191d75 MTROPOLIS: Fix detection entry for Obsidian Mac demo


Commit: 3503feec239729741c96ff16b40ab4c3496c032d
    https://github.com/scummvm/scummvm/commit/3503feec239729741c96ff16b40ab4c3496c032d
Author: elasota (ejlasota at gmail.com)
Date: 2022-07-27T02:34:17-04:00

Commit Message:
MTROPOLIS: Fix up some things used by Obsidian demos

Changed paths:
    engines/mtropolis/plugin/standard.cpp
    engines/mtropolis/plugin/standard.h
    engines/mtropolis/plugin/standard_data.cpp
    engines/mtropolis/runtime.cpp
    engines/mtropolis/runtime.h


diff --git a/engines/mtropolis/plugin/standard.cpp b/engines/mtropolis/plugin/standard.cpp
index b50598d7733..8629179616f 100644
--- a/engines/mtropolis/plugin/standard.cpp
+++ b/engines/mtropolis/plugin/standard.cpp
@@ -2423,6 +2423,9 @@ MiniscriptInstructionOutcome MidiModifier::writeRefAttribute(MiniscriptThread *t
 	} else if (attrib == "tempo") {
 		DynamicValueWriteFuncHelper<MidiModifier, &MidiModifier::scriptSetTempo>::create(this, result);
 		return kMiniscriptInstructionOutcomeContinue;
+	} else if (attrib == "mutetrack") {
+		DynamicValueWriteFuncHelper<MidiModifier, &MidiModifier::scriptSetMuteTrack>::create(this, result);
+		return kMiniscriptInstructionOutcomeContinue;
 	}
 
 	return Modifier::writeRefAttribute(thread, result, attrib);
@@ -2591,7 +2594,25 @@ MiniscriptInstructionOutcome MidiModifier::scriptSetPlayNote(MiniscriptThread *t
 	return kMiniscriptInstructionOutcomeContinue;
 }
 
-MiniscriptInstructionOutcome MidiModifier::scriptSetMuteTrack(MiniscriptThread *thread, size_t trackIndex, bool muted) {
+MiniscriptInstructionOutcome MidiModifier::scriptSetMuteTrack(MiniscriptThread *thread, const DynamicValue &value) {
+	if (value.getType() != DynamicValueTypes::kBoolean) {
+		thread->error("Invalid type for mutetrack");
+		return kMiniscriptInstructionOutcomeFailed;
+	}
+
+	uint16 mutedTracks = value.getBool() ? 0xffffu : 0u;
+
+	if (mutedTracks != _mutedTracks) {
+		_mutedTracks = mutedTracks;
+
+		if (_filePlayer)
+			_plugIn->getMidi()->setPlayerMutedTracks(_filePlayer, mutedTracks);
+	}
+
+	return kMiniscriptInstructionOutcomeContinue;
+}
+
+MiniscriptInstructionOutcome MidiModifier::scriptSetMuteTrackIndexed(MiniscriptThread *thread, size_t trackIndex, bool muted) {
 	if (trackIndex >= 16) {
 		thread->error("Invalid track index for mutetrack");
 		return kMiniscriptInstructionOutcomeFailed;
@@ -2621,7 +2642,7 @@ MiniscriptInstructionOutcome MidiModifier::MuteTrackProxyInterface::write(Minisc
 		return kMiniscriptInstructionOutcomeFailed;
 	}
 
-	return static_cast<MidiModifier *>(objectRef)->scriptSetMuteTrack(thread, ptrOrOffset, value.getBool());
+	return static_cast<MidiModifier *>(objectRef)->scriptSetMuteTrackIndexed(thread, ptrOrOffset, value.getBool());
 }
 
 MiniscriptInstructionOutcome MidiModifier::MuteTrackProxyInterface::refAttrib(MiniscriptThread *thread, DynamicValueWriteProxy &proxy, void *objectRef, uintptr ptrOrOffset, const Common::String &attrib) {
diff --git a/engines/mtropolis/plugin/standard.h b/engines/mtropolis/plugin/standard.h
index f01f3c9bf29..feb9ff5a950 100644
--- a/engines/mtropolis/plugin/standard.h
+++ b/engines/mtropolis/plugin/standard.h
@@ -252,8 +252,9 @@ private:
 	MiniscriptInstructionOutcome scriptSetLoop(MiniscriptThread *thread, const DynamicValue &value);
 	MiniscriptInstructionOutcome scriptSetPlayNote(MiniscriptThread *thread, const DynamicValue &value);
 	MiniscriptInstructionOutcome scriptSetTempo(MiniscriptThread *thread, const DynamicValue &value);
+	MiniscriptInstructionOutcome scriptSetMuteTrack(MiniscriptThread *thread, const DynamicValue &value);
 
-	MiniscriptInstructionOutcome scriptSetMuteTrack(MiniscriptThread *thread, size_t trackIndex, bool muted);
+	MiniscriptInstructionOutcome scriptSetMuteTrackIndexed(MiniscriptThread *thread, size_t trackIndex, bool muted);
 
 	uint getBoostedVolume(Runtime *runtime) const;
 
diff --git a/engines/mtropolis/plugin/standard_data.cpp b/engines/mtropolis/plugin/standard_data.cpp
index 29011b102a9..743e2f5e8a6 100644
--- a/engines/mtropolis/plugin/standard_data.cpp
+++ b/engines/mtropolis/plugin/standard_data.cpp
@@ -140,7 +140,7 @@ ListVariableModifier::~ListVariableModifier() {
 }
 
 DataReadErrorCode ListVariableModifier::load(PlugIn &plugIn, const PlugInModifier &prefix, DataReader &reader) {
-	if (prefix.plugInRevision != 2 && prefix.plugInRevision != 3)
+	if (prefix.plugInRevision < 1 || prefix.plugInRevision > 3)
 		return kDataReadErrorUnsupportedRevision;
 
 	int64 privateDataPos = reader.tell();
@@ -150,12 +150,17 @@ DataReadErrorCode ListVariableModifier::load(PlugIn &plugIn, const PlugInModifie
 
 	persistentValuesGarbled = false;
 
-	if (prefix.plugInRevision == 3) {
-		PlugInTypeTaggedValue persistentFlag;
-		if (!persistentFlag.load(reader) || persistentFlag.type != PlugInTypeTaggedValue::kBoolean)
-			return kDataReadErrorReadFailed;
+	if (prefix.plugInRevision == 1 || prefix.plugInRevision == 3) {
+		if (prefix.plugInRevision == 1) {
+			havePersistentData = true;
+		} else if (prefix.plugInRevision == 3) {
+			PlugInTypeTaggedValue persistentFlag;
+			if (!persistentFlag.load(reader) || persistentFlag.type != PlugInTypeTaggedValue::kBoolean)
+				return kDataReadErrorReadFailed;
+
+			havePersistentData = (persistentFlag.value.asBoolean != 0);
+		}
 
-		havePersistentData = (persistentFlag.value.asBoolean != 0);
 		if (havePersistentData) {
 			PlugInTypeTaggedValue numValuesVar;
 			if (!numValuesVar.load(reader) || numValuesVar.type != PlugInTypeTaggedValue::kInteger || numValuesVar.value.asInt < 0)
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index 13e52eabd06..2d0fd6062b4 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -2414,6 +2414,10 @@ MiniscriptInstructionOutcome WorldManagerInterface::writeRefAttribute(Miniscript
 		DynamicValueWriteFuncHelper<WorldManagerInterface, &WorldManagerInterface::setAutoResetCursor>::create(this, result);
 		return kMiniscriptInstructionOutcomeContinue;
 	}
+	if (attrib == "winsndbuffersize") {
+		DynamicValueWriteFuncHelper<WorldManagerInterface, &WorldManagerInterface::setWinSndBufferSize>::create(this, result);
+		return kMiniscriptInstructionOutcomeContinue;
+	}
 	return RuntimeObject::writeRefAttribute(thread, result, attrib);
 }
 
@@ -2463,6 +2467,11 @@ MiniscriptInstructionOutcome WorldManagerInterface::setAutoResetCursor(Miniscrip
 	return kMiniscriptInstructionOutcomeContinue;
 }
 
+MiniscriptInstructionOutcome WorldManagerInterface::setWinSndBufferSize(MiniscriptThread *thread, const DynamicValue &value) {
+	// Ignore
+	return kMiniscriptInstructionOutcomeContinue;
+}
+
 SystemInterface::SystemInterface() : _masterVolume(kFullVolume) {
 }
 
diff --git a/engines/mtropolis/runtime.h b/engines/mtropolis/runtime.h
index d842d08bfae..ae4f58ccb9f 100644
--- a/engines/mtropolis/runtime.h
+++ b/engines/mtropolis/runtime.h
@@ -1938,6 +1938,7 @@ private:
 	MiniscriptInstructionOutcome setCurrentScene(MiniscriptThread *thread, const DynamicValue &value);
 	MiniscriptInstructionOutcome setRefreshCursor(MiniscriptThread *thread, const DynamicValue &value);
 	MiniscriptInstructionOutcome setAutoResetCursor(MiniscriptThread *thread, const DynamicValue &value);
+	MiniscriptInstructionOutcome setWinSndBufferSize(MiniscriptThread *thread, const DynamicValue &value);
 };
 
 class AssetManagerInterface : public RuntimeObject {


Commit: 5e2f191d75b590fbc61cb521cef209af173caa6a
    https://github.com/scummvm/scummvm/commit/5e2f191d75b590fbc61cb521cef209af173caa6a
Author: elasota (ejlasota at gmail.com)
Date: 2022-07-27T02:35:13-04:00

Commit Message:
MTROPOLIS: Fix detection entry for Obsidian Mac demo

Changed paths:
    engines/mtropolis/detection_tables.h


diff --git a/engines/mtropolis/detection_tables.h b/engines/mtropolis/detection_tables.h
index 4d6c7b640e5..4d4dbfab862 100644
--- a/engines/mtropolis/detection_tables.h
+++ b/engines/mtropolis/detection_tables.h
@@ -127,7 +127,7 @@ static const MTropolisGameDescription gameDescriptions[] = {
 				{ "mNet.rPP",			   0, "ed5d998e7db6daae1f24bb124cc269aa", 134784 },
 				{ "Obsidian.cPP",		   0, "6da7babae9725a716f27f9f4ea382e92", 7552 },
 				{ "RSGKit.rPP",			   0, "c359e3c932b09280d1ccf21f8fb52bd7", 668160 },
-				{ "Obs Demo Large w Sega", 0, "34efe95fc32dcf0a2a90bf6854c08e95", 98953679 },
+				{ "Obs Demo Large w Sega", 0, "4672fe8ba459811dea0744cf90063a35", 98954240 },
 				AD_LISTEND
 			},
 			Common::EN_ANY,




More information about the Scummvm-git-logs mailing list