[Scummvm-git-logs] scummvm master -> 97d4a9eff1a54a03f506b76aad55a61adc832f30

m-kiewitz m_kiewitz at users.sourceforge.net
Wed May 24 15:37:28 CEST 2017


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

Summary:
97d4a9eff1 SCI32: Add script patch for cheese maker issue


Commit: 97d4a9eff1a54a03f506b76aad55a61adc832f30
    https://github.com/scummvm/scummvm/commit/97d4a9eff1a54a03f506b76aad55a61adc832f30
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2017-05-24T15:37:18+02:00

Commit Message:
SCI32: Add script patch for cheese maker issue

Room 540, was game breaking, but effectively a script
bug, that just happened to work in SSCI.

Changed paths:
    engines/sci/engine/script_patches.cpp


diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 1a276b1..fb59bad 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -2498,6 +2498,49 @@ static const SciScriptPatcherEntry larry6HiresSignatures[] = {
 	SCI_SIGNATUREENTRY_TERMINATOR
 };
 
+#pragma mark -
+#pragma mark Leisure Suit Larry 7
+
+// ===========================================================================
+// In room 540 of Leisure Suit Larry 7, Larry will use 4 items on a so called cheese maker.
+//  A short cutscene will then play.
+//  During that cutscene on state 6, an animation will get triggered via a special
+//  cycler ("End", but from script 64041), that is capable of doing ::cues on specific cels.
+//  The code of the state is broken and pushes the object itself as the 2nd cel to cue on.
+//  This parameter gets later changed to last cel by CycleCueList::init.
+//  Right now, we do not handle comparisons between references to objects and regular values like
+//  SSCI, so this will need to get fixed too. But this script bug should also get fixed, because
+//  otherwise it works just by accident.
+//
+// Applies to at least: English PC-CD, German PC-CD
+// Responsible method: soMakeCheese::changeState(6) in script 540
+static const uint16 larry7SignatureMakeCheese[] = {
+	0x38, SIG_UINT16(4),             // pushi 04
+	0x51, 0xc4,                      // class End
+	0x36,                            // push
+	SIG_MAGICDWORD,
+	0x7c,                            // pushSelf
+	0x39, 0x04,                      // pushi 04
+	0x7c,                            // pushSelf
+	SIG_END
+};
+
+static const uint16 larry7PatchMakeCheese[] = {
+	0x39, 0x04,                      // pushi 04 - save 1 byte
+	0x51, 0xc4,                      // class End
+	0x36,
+	0x7c,                            // pushSelf
+	0x39, 0x04,                      // pushi 04
+	0x39, 0x10,                      // pushi 10h (last cel of view 54007, loop 0)
+	PATCH_END
+};
+
+//          script, description,                         signature                   patch
+static const SciScriptPatcherEntry larry7Signatures[] = {
+	{  true,   540, "fix make cheese cutscene",       1, larry7SignatureMakeCheese,  larry7PatchMakeCheese },
+	SCI_SIGNATUREENTRY_TERMINATOR
+};
+
 #endif
 
 // ===========================================================================
@@ -5962,6 +6005,9 @@ void ScriptPatcher::processScript(uint16 scriptNr, SciSpan<byte> scriptData) {
 	case GID_LSL6HIRES:
 		signatureTable = larry6HiresSignatures;
 		break;
+	case GID_LSL7:
+		signatureTable = larry7Signatures;
+		break;
 #endif
 	case GID_MOTHERGOOSE256:
 		signatureTable = mothergoose256Signatures;





More information about the Scummvm-git-logs mailing list