[Scummvm-cvs-logs] scummvm master -> d5331ab923c74ecfd6aa5a0b0f2e7ffdde6ea7d5

m-kiewitz m_kiewitz at users.sourceforge.net
Sun Dec 22 20:47:29 CET 2013


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:
d5331ab923 SCI: improved lb2+kq6 patches (new speech state)


Commit: d5331ab923c74ecfd6aa5a0b0f2e7ffdde6ea7d5
    https://github.com/scummvm/scummvm/commit/d5331ab923c74ecfd6aa5a0b0f2e7ffdde6ea7d5
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2013-12-22T11:46:54-08:00

Commit Message:
SCI: improved lb2+kq6 patches (new speech state)

adds a third button state to the game menu
this state is "dual mode" (audio+text at the same time)
currently uses the "speech" graphic
CD versions of Laura Bow 2 + King's Quest 6 will now always get patched

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



diff --git a/engines/sci/engine/script_patches.cpp b/engines/sci/engine/script_patches.cpp
index 0e2b38b..d9a03fb 100644
--- a/engines/sci/engine/script_patches.cpp
+++ b/engines/sci/engine/script_patches.cpp
@@ -926,7 +926,7 @@ static const uint16 kq6PatchDrinkMeFix[] = {
 	0x4a, 0x04,                         // send 04 (call addToPics::doit)
 	0x3a,                               // toss
 	0x48,                               // ret
-	PATCH_ADDTOOFFSET(+8),               // skip to check 11h code
+	PATCH_ADDTOOFFSET(+8),              // skip to check 11h code
 	0x35, 0x10,                         // ldi 10 instead of 11
 	PATCH_ADDTOOFFSET(+23),             // skip to check 12h code
 	0x35, 0x11,                         // ldi 11 instead of 12
@@ -938,6 +938,7 @@ static const uint16 kq6PatchDrinkMeFix[] = {
 // Audio + subtitles support - SHARED! - used for King's Quest 6 and Laura Bow 2
 //  this patch gets enabled, when the user selects "both" in the ScummVM "Speech + Subtitles" menu
 //  We currently use global 98d to hold a kMemory pointer.
+// Applies to at least: KQ6 PC-CD, LB2 PC-CD
 // Patched method: Messager::sayNext / lb2Messager::sayNext (always use text branch)
 static const uint16 kq6laurabow2CDSignatureAudioTextSupport1[] = {
 	0x89, 0x5a,                         // lsg global[5a]
@@ -955,6 +956,7 @@ static const uint16 kq6laurabow2CDPatchAudioTextSupport1[] = {
 	PATCH_END
 };
 
+// Applies to at least: KQ6 PC-CD, LB2 PC-CD
 // Patched method: Messager::sayNext / lb2Messager::sayNext (allocate audio memory)
 static const uint16 kq6laurabow2CDSignatureAudioTextSupport2[] = {
 	0x7a,                               // push2
@@ -971,6 +973,7 @@ static const uint16 kq6laurabow2CDPatchAudioTextSupport2[] = {
 	PATCH_END
 };
 
+// Applies to at least: KQ6 PC-CD, LB2 PC-CD
 // Patched method: Messager::sayNext / lb2Messager::sayNext (release audio memory)
 static const uint16 kq6laurabow2CDSignatureAudioTextSupport3[] = {
 	0x7a,                               // push2
@@ -987,8 +990,19 @@ static const uint16 kq6laurabow2CDPatchAudioTextSupport3[] = {
 	PATCH_END
 };
 
+// startText call gets acc = 0 for text-only and acc = 2 for audio+text
+// Applies to at least: KQ6 PC-CD, LB2 PC-CD
 // Patched method: Narrator::say (use audio memory)
 static const uint16 kq6laurabow2CDSignatureAudioTextSupport4[] = {
+	// set caller property code
+	0x31, 0x08,                         // bnt [set acc to 0 for caller]
+	0x87, 0x02,                         // lap param[2]
+	0x31, 0x04,                         // bnt [set acc to 0 for caller]
+	0x87, 0x02,                         // lap param[2]
+	0x33, 0x02,                         // jmp [set caller]
+	0x35, 0x00,                         // ldi 00
+	0x65, 0x68,                         // aTop caller
+	// call startText + startAudio code
 	0x89, 0x5a,                         // lsg global[5a]
 	0x35, 0x01,                         // ldi 01
 	0x12,                               // and
@@ -1010,15 +1024,23 @@ static const uint16 kq6laurabow2CDSignatureAudioTextSupport4[] = {
 };
 
 static const uint16 kq6laurabow2CDPatchAudioTextSupport4[] = {
-	PATCH_ADDTOOFFSET(+2),
-	0x34, PATCH_UINT16(0x0001),         // ldi 0001 (waste 1 byte)
-	0x12,
-	0x18,                               // not - prepares acc for KQ6 talker::startText
-	PATCH_ADDTOOFFSET(+19),
+	0x31, 0x02,                         // bnt [set caller]
+	0x87, 0x02,                         // lap param[2]
+	0x65, 0x68,                         // aTop caller
+	0x81, 0x5a,                         // lag global[5a]
+	0x78,                               // push1
+	0x12,                               // and
+	0x31, 0x11,                         // bnt [skip startText code]
+	0x81, 0x5a,                         // lag global[5a]
+	0x7a,                               // push2
+	0x12,                               // and
+	0x33, 0x03,                         // skip over 3 unused bytes
+	PATCH_ADDTOOFFSET(+22),
 	0x89, 98,                           // lsp global[98d]
 	PATCH_END
 };
 
+// Applies to at least: KQ6 PC-CD, LB2 PC-CD
 // Patched method: Talker::display/Narrator::say (remove reset saved mouse cursor code)
 //  code would screw over mouse cursor
 static const uint16 kq6laurabow2CDSignatureAudioTextSupport5[] = {
@@ -1034,28 +1056,30 @@ static const uint16 kq6laurabow2CDPatchAudioTextSupport5[] = {
 };
 
 // Additional patch specifically for King's Quest 6
-//  Fixes text window placement, when portrait+text is shown
+//  Fixes text window placement, when in "dual" mode
+// Applies to at least: PC-CD
 // Patched method: Kq6Talker::init
 static const uint16 kq6CDSignatureAudioTextSupport1[] = {
 	SIG_MAGICDWORD,
 	0x89, 0x5a,                         // lsg global[5a]
 	0x35, 0x02,                         // ldi 02
 	0x1a,                               // eq?
-	0x31, 0x32,                         // bnt [jump-for-text-code]
-	0x87, 0x00,                         // lap param[0]
+	0x31, SIG_ADDTOOFFSET(+1),          // bnt [jump-to-text-code]
+	0x78,                               // push1
 	SIG_END
 };
 
 static const uint16 kq6CDPatchAudioTextSupport1[] = {
-	PATCH_ADDTOOFFSET(+5),
-	0x33, 0x32,                         // jmp [jump-for-text-code]
+	PATCH_ADDTOOFFSET(+4),
+	0x12,                               // and
 	PATCH_END
 };
 
 // Additional patch specifically for King's Quest 6
 //  Fixes low-res portrait staying on screen for hi-res mode
+// Applies to at least: PC-CD
 // Patched method: Talker::startText
-//  this method is called by Narrator::say and acc is 0 for text-only and true for audio+text
+//  this method is called by Narrator::say and acc is 0 for text-only and 2 for dual mode (audio+text)
 static const uint16 kq6CDSignatureAudioTextSupport2[] = {
 	SIG_MAGICDWORD,
 	0x3f, 0x01,                         // link 01
@@ -1085,6 +1109,7 @@ static const uint16 kq6CDPatchAudioTextSupport2[] = {
 //   KQ6Print::showSelf, which is called much later and KQ6Print::addText requires
 //   KQ6Print::dialog to be set, which means we have to set it before calling addText
 //   for audio mode, otherwise the user would have to click to get those windows disposed.
+// Applies to at least: PC-CD
 // Patched method: KQ6Print::say
 static const uint16 kq6CDSignatureAudioTextSupport3[] = {
 	0x31, 0x6e,                         // bnt [to text code]
@@ -1107,7 +1132,7 @@ static const uint16 kq6CDPatchAudioTextSupport3[] = {
 	0x31, 0x5c,                         // adjust jump to reuse audio mode addText-calling code
 	PATCH_ADDTOOFFSET(102),
 	0x48,                               // ret
-	0x48,                               // waste byte
+	0x48,                               // ret (waste byte)
 	0x72, 0x0e, 0x00,                   // lofsa myDialog
 	0x65, 0x12,                         // aTop dialog
 	0x33, 0xed,                         // jump back to audio mode addText-calling code
@@ -1117,6 +1142,7 @@ static const uint16 kq6CDPatchAudioTextSupport3[] = {
 // Additional patch specifically for King's Quest 6
 //  Fixes text-window size for hires portraits mode
 //   Otherwise at least at the end some text-windows will be way too small
+// Applies to at least: PC-CD
 // Patched method: Talker::init
 static const uint16 kq6CDSignatureAudioTextSupport4[] = {
 	SIG_MAGICDWORD,
@@ -1134,7 +1160,8 @@ static const uint16 kq6CDPatchAudioTextSupport4[] = {
 	PATCH_END
 };
 
-//  Fixes text window placement, when portrait+text is shown (Guard in room 220)
+//  Fixes text window placement, when dual mode is active (Guards in room 220)
+// Applies to at least: PC-CD
 // Patched method: tlkGateGuard1::init & tlkGateGuard2::init
 static const uint16 kq6CDSignatureAudioTextSupportGuards[] = {
 	SIG_MAGICDWORD,
@@ -1146,38 +1173,102 @@ static const uint16 kq6CDSignatureAudioTextSupportGuards[] = {
 
 static const uint16 kq6CDPatchAudioTextSupportGuards[] = {
 	PATCH_ADDTOOFFSET(+2),
-	0x34, PATCH_UINT16(0x0001),         // ldi 0001 (waste 1 byte to overwrite eq?)
+	0x35, 0x02,                         // ldi 02
+	0x1c,                               // ne?
 	PATCH_END
 };
 
-//  Fixes text window placement, when portrait+text is shown (Stepmother in room 250)
-// Patched method: tlkStepmother::init
-static const uint16 kq6CDSignatureAudioTextSupportStepmother[] = {
+//  Fixes "Girl In The Tower" to get played in dual mode as well
+// Applies to at least: PC-CD
+// Patched method: rm740::cue
+static const uint16 kq6CDSignatureAudioTextSupportGirlInTheTower[] = {
 	SIG_MAGICDWORD,
 	0x89, 0x5a,                         // lsg global[5a]
 	0x35, 0x02,                         // ldi 02
-	0x12,                               // and
-	0x31, 0x1a,                         // bnt [jump-for-text-code]
+	0x1a,                               // eq?
+	0x31,                               // bnt [jump-for-text-code]
 	SIG_END
 };
 
-static const uint16 kq6CDPatchAudioTextSupportJumpAlways[] = {
-	PATCH_ADDTOOFFSET(+5),
-	0x33,                               // jump always
+static const uint16 kq6CDPatchAudioTextSupportGirlInTheTower[] = {
+	PATCH_ADDTOOFFSET(+4),
+	0x12,                               // and
 	PATCH_END
 };
 
-//  Fixes text window placement, when portrait+text is shown (Gnomes in room 450)
-// Patched method: GnomeTalker::init
-static const uint16 kq6CDSignatureAudioTextSupportGnomes[] = {
+// Additional patch specifically for King's Quest 6
+//  Adds another button state for the text/audio button. We currently use the "speech" view for "dual" mode.
+// View 947, loop 9, cel 0+1 -> "text"
+// View 947, loop 8, cel 0+1 -> "speech"
+// View 947, loop 12, cel 0+1 -> "dual" (TODO: inject our own 2 views for the new "dual" mode)
+// Applies to at least: PC-CD
+// Patched method: iconTextSwitch::show, iconTextSwitch::doit
+static const uint16 kq6CDSignatureAudioTextMenuSupport[] = {
 	SIG_MAGICDWORD,
 	0x89, 0x5a,                         // lsg global[5a]
 	0x35, 0x02,                         // ldi 02
 	0x1a,                               // eq?
-	0x31, 0x16,                         // bnt [jump-for-text-code]
+	0x31, 0x06,                         // bnt [set text view]
+	0x35, 0x08,                         // ldi 08
+	0x65, 0x14,                         // aTop loop
+	0x33, 0x04,                         // jmp [skip over text view]
+	0x35, 0x09,                         // ldi 09
+	0x65, 0x14,                         // aTop loop
+	SIG_ADDTOOFFSET(+102),              // skip to iconTextSwitch::doit code
+	0x89, 0x5a,                         // lsg global[5a]
+	0x3c,                               // dup
+	0x35, 0x01,                         // ldi 01
+	0x1a,                               // eq?
+	0x31, 0x06,                         // bnt [set text mode]
+	0x35, 0x02,                         // ldi 02
+	0xa1, 0x5a,                         // sag global[5a]
+	0x33, 0x0a,                         // jmp [skip over text mode code]
+	0x3c,                               // dup
+	0x35, 0x02,                         // ldi 02
+	0x1a,                               // eq?
+	0x31, 0x04,                         // bnt [skip over text ode code]
+	0x35, 0x01,                         // ldi 01
+	0xa1, 0x5a,                         // sag global[5a]
+	0x3a,                               // toss
+	0x67, 0x14,                         // pTos loop
+	0x35, 0x09,                         // ldi 09
+	0x1a,                               // eq?
+	0x31, 0x04,                         // bnt [set text view]
+	0x35, 0x08,                         // ldi 08
+	0x33, 0x02,                         // jmp [skip text view]
+	0x35, 0x09,                         // ldi 09
+	0x65, 0x14,                         // aTop loop
 	SIG_END
 };
 
+static const uint16 kq6CDPatchAudioTextMenuSupport[] = {
+	PATCH_ADDTOOFFSET(+13),
+	0x33, 0x79,                         // jmp to new text+dual code
+	PATCH_ADDTOOFFSET(+104),            // seek to iconTextSwitch::doit
+	0x81, 0x5a,                         // lag global[5a]
+	0x78,                               // push1
+	0x02,                               // add
+	0xa1, 0x5a,                         // sag global[5a]
+	0x36,                               // push
+	0x35, 0x03,                         // ldi 03
+	0x1e,                               // gt?
+	0x31, 0x03,                         // bnt [skip over]
+	0x78,                               // push1
+	0xa9, 0x5a,                         // ssg global[5a]
+	0x33, 0x17,                         // jmp [iconTextSwitch::show call]
+	// additional code for iconTextSwitch::show
+	0x89, 0x5a,                         // lsg global[5a]
+	0x35, 0x01,                         // ldi 01
+	0x1a,                               // eq?
+	0x31, 0x04,                         // bnt [dual mode]
+	0x35, 0x09,                         // ldi 09
+	0x33, 0x02,                         // jmp [skip over dual mode]
+	0x35, 0x08,                         // ldi 08 (-> insert dual mode view here)
+	0x65, 0x14,                         // aTop loop
+	0x32, PATCH_UINT16(0xff75),         // jmp [back to iconTextSwitch::show]
+	PATCH_END
+};
+
 //          script, description,                                      signature                                 patch
 static const SciScriptPatcherEntry kq6Signatures[] = {
 	{  true,   481, "duplicate baby cry",                          1, kq6SignatureDuplicateBabyCry,             kq6PatchDuplicateBabyCry },
@@ -1185,19 +1276,18 @@ static const SciScriptPatcherEntry kq6Signatures[] = {
 	{  true,    87, "Drink Me bottle fix",                         1, kq6SignatureDrinkMeFix,                   kq6PatchDrinkMeFix },
 	// King's Quest 6 and Laura Bow 2 share basic patches for audio + text support
 	// *** King's Quest 6 audio + text support ***
-	//  TODO: all window placements seems to be fixed, game should be played through to check for any more issues
-	{ false,   924, "CD: audio + text support KQ6&LB2 1",          1, kq6laurabow2CDSignatureAudioTextSupport1, kq6laurabow2CDPatchAudioTextSupport1 },
-	{ false,   924, "CD: audio + text support KQ6&LB2 2",          1, kq6laurabow2CDSignatureAudioTextSupport2, kq6laurabow2CDPatchAudioTextSupport2 },
-	{ false,   924, "CD: audio + text support KQ6&LB2 3",          1, kq6laurabow2CDSignatureAudioTextSupport3, kq6laurabow2CDPatchAudioTextSupport3 },
-	{ false,   928, "CD: audio + text support KQ6&LB2 4",          1, kq6laurabow2CDSignatureAudioTextSupport4, kq6laurabow2CDPatchAudioTextSupport4 },
-	{ false,   928, "CD: audio + text support KQ6&LB2 5",          2, kq6laurabow2CDSignatureAudioTextSupport5, kq6laurabow2CDPatchAudioTextSupport5 },
-	{ false,   909, "CD: audio + text support KQ6 1",              1, kq6CDSignatureAudioTextSupport1,          kq6CDPatchAudioTextSupport1 },
-	{ false,   928, "CD: audio + text support KQ6 2",              1, kq6CDSignatureAudioTextSupport2,          kq6CDPatchAudioTextSupport2 },
-	{ false,   104, "CD: audio + text support KQ6 3",              1, kq6CDSignatureAudioTextSupport3,          kq6CDPatchAudioTextSupport3 },
-	{ false,   928, "CD: audio + text support KQ6 4",              1, kq6CDSignatureAudioTextSupport4,          kq6CDPatchAudioTextSupport4 },
-	{ false,  1009, "CD: audio + text support KQ6 Guards",         2, kq6CDSignatureAudioTextSupportGuards,     kq6CDPatchAudioTextSupportGuards },
-	{ false,  1027, "CD: audio + text support KQ6 Stepmother",     1, kq6CDSignatureAudioTextSupportStepmother, kq6CDPatchAudioTextSupportJumpAlways },
-	{ false,  1037, "CD: audio + text support KQ6 Gnomes",         1, kq6CDSignatureAudioTextSupportGnomes,     kq6CDPatchAudioTextSupportJumpAlways },
+	{ false,   924, "CD: audio + text support KQ6&LB2 1",             1, kq6laurabow2CDSignatureAudioTextSupport1,     kq6laurabow2CDPatchAudioTextSupport1 },
+	{ false,   924, "CD: audio + text support KQ6&LB2 2",             1, kq6laurabow2CDSignatureAudioTextSupport2,     kq6laurabow2CDPatchAudioTextSupport2 },
+	{ false,   924, "CD: audio + text support KQ6&LB2 3",             1, kq6laurabow2CDSignatureAudioTextSupport3,     kq6laurabow2CDPatchAudioTextSupport3 },
+	{ false,   928, "CD: audio + text support KQ6&LB2 4",             1, kq6laurabow2CDSignatureAudioTextSupport4,     kq6laurabow2CDPatchAudioTextSupport4 },
+	{ false,   928, "CD: audio + text support KQ6&LB2 5",             2, kq6laurabow2CDSignatureAudioTextSupport5,     kq6laurabow2CDPatchAudioTextSupport5 },
+	{ false,   909, "CD: audio + text support KQ6 1",                 2, kq6CDSignatureAudioTextSupport1,              kq6CDPatchAudioTextSupport1 },
+	{ false,   928, "CD: audio + text support KQ6 2",                 1, kq6CDSignatureAudioTextSupport2,              kq6CDPatchAudioTextSupport2 },
+	{ false,   104, "CD: audio + text support KQ6 3",                 1, kq6CDSignatureAudioTextSupport3,              kq6CDPatchAudioTextSupport3 },
+	{ false,   928, "CD: audio + text support KQ6 4",                 1, kq6CDSignatureAudioTextSupport4,              kq6CDPatchAudioTextSupport4 },
+	{ false,  1009, "CD: audio + text support KQ6 Guards",            2, kq6CDSignatureAudioTextSupportGuards,         kq6CDPatchAudioTextSupportGuards },
+	{ false,   740, "CD: audio + text support KQ6 Girl In The Tower", 1, kq6CDSignatureAudioTextSupportGirlInTheTower, kq6CDPatchAudioTextSupportGirlInTheTower },
+	{ false,   903, "CD: audio + text support KQ6 menu",              1, kq6CDSignatureAudioTextMenuSupport,           kq6CDPatchAudioTextMenuSupport },
 	SCI_SIGNATUREENTRY_TERMINATOR
 };
 
@@ -1486,6 +1576,72 @@ static const uint16 laurabow2CDPatchFixProblematicIconBar[] = {
 	PATCH_END
 };
 
+// Directly use global 5a for view-cel id
+//  That way it's possible to use a new "dual" mode view in the game menu
+// View 995, loop 13, cel 0 -> "text"
+// View 995, loop 13, cel 1 -> "speech"
+// View 995, loop 13, cel 2 -> "dual" (TODO: inject our own view for the new "dual" mode)
+// Patched method: gcWin::open
+static const uint16 laurabow2CDSignatureAudioTextMenuSupport1[] = {
+	SIG_MAGICDWORD,
+	0x89, 0x5a,                         // lsg global[5a]
+	0x35, 0x02,                         // ldi 02
+	0x1a,                               // eq?
+	0x36,                               // push
+	SIG_END
+};
+
+static const uint16 laurabow2CDPatchAudioTextMenuSupport1[] = {
+	PATCH_ADDTOOFFSET(+2),
+	0x35, 0x01,                         // ldi 01
+	0x04,                               // sub
+	PATCH_END
+};
+
+//  Adds another button state for the text/audio button. We currently use the "speech" view for "dual" mode.
+//  TODO: inject our own 2 views for the new "dual" mode
+// Patched method: iconMode::doit
+static const uint16 laurabow2CDSignatureAudioTextMenuSupport2[] = {
+	SIG_MAGICDWORD,
+	0x89, 0x5a,                         // lsg global[5a]
+	0x3c,                               // dup
+	0x1a,                               // eq?
+	0x31, 0x0a,                         // bnt [set text mode]
+	0x35, 0x02,                         // ldi 02
+	0xa1, 0x5a,                         // sag global[5a]
+	0x35, 0x01,                         // ldi 01
+	0xa5, 0x00,                         // sat temp[0]
+	0x33, 0x0e,                         // jmp [draw cel code]
+	0x3c,                               // dup
+	0x35, 0x02,                         // ldi 02
+	0x1a,                               // eq?
+	0x31, 0x08,                         // bnt [draw cel code]
+	0x35, 0x01,                         // ldi 01
+	0xa1, 0x5a,                         // sag global[5a]
+	0x35, 0x00,                         // ldi 00
+	0xa5, 0x00,                         // sat temp[0]
+	0x3a,                               // toss
+	SIG_END
+};
+
+static const uint16 laurabow2CDPatchAudioTextMenuSupport2[] = {
+	0x81, 0x5a,                         // lag global[5a]
+	0x78,                               // push1
+	0x02,                               // add
+	0xa1, 0x5a,                         // sag global[5a]
+	0x36,                               // push
+	0x35, 0x03,                         // ldi 03
+	0x1e,                               // gt?
+	0x31, 0x03,                         // bnt [skip over]
+	0x78,                               // push1
+	0xa9, 0x5a,                         // ssg global[5a]
+	0x89, 0x5a,                         // lsg global[5a]
+	0x35, 0x01,                         // ldi 01
+	0x04,                               // sub
+	0xa5, 0x00,                         // sat temp[0] - calculate global[5a] - 1 to use as view cel id
+	0x33, 0x07,                         // jmp [draw cel code, don't do toss]
+	PATCH_END
+};
 
 //          script, description,                                      signature                                  patch
 static const SciScriptPatcherEntry laurabow2Signatures[] = {
@@ -1497,6 +1653,8 @@ static const SciScriptPatcherEntry laurabow2Signatures[] = {
 	{ false,   924, "CD: audio + text support 3",                  1, kq6laurabow2CDSignatureAudioTextSupport3,  kq6laurabow2CDPatchAudioTextSupport3 },
 	{ false,   928, "CD: audio + text support 4",                  1, kq6laurabow2CDSignatureAudioTextSupport4,  kq6laurabow2CDPatchAudioTextSupport4 },
 	{ false,   928, "CD: audio + text support 5",                  2, kq6laurabow2CDSignatureAudioTextSupport5,  kq6laurabow2CDPatchAudioTextSupport5 },
+	{ false,    24, "CD: audio + text support LB2 menu 1",             1, laurabow2CDSignatureAudioTextMenuSupport1, laurabow2CDPatchAudioTextMenuSupport1 },
+	{ false,    24, "CD: audio + text support LB2 menu 2",             1, laurabow2CDSignatureAudioTextMenuSupport2, laurabow2CDPatchAudioTextMenuSupport2 },
 	SCI_SIGNATUREENTRY_TERMINATOR
 };
 
@@ -2720,14 +2878,14 @@ void ScriptPatcher::processScript(uint16 scriptNr, byte *scriptData, const uint3
 				}
 				break;
 			case GID_KQ6:
-				if (g_sci->speechAndSubtitlesEnabled()) {
-					// Enables Audio + subtitles patches for King's Quest 6, when "Text and Speech: Both" is selected
+				if (g_sci->isCD()) {
+					// Enables Dual mode patches (audio + subtitles at the same time) for King's Quest 6
 					enablePatch(signatureTable, "CD: audio + text support");
 				}
 				break;
 			case GID_LAURABOW2:
-				if (g_sci->speechAndSubtitlesEnabled()) {
-					// Enables Audio + subtitles patches for Laura Bow 2, when "Text and Speech: Both" is selected
+				if (g_sci->isCD()) {
+					// Enables Dual mode patches (audio + subtitles at the same time) for Laura Bow 2
 					enablePatch(signatureTable, "CD: audio + text support");
 				}
 				break;
diff --git a/engines/sci/sci.cpp b/engines/sci/sci.cpp
index ff804af..f32e0e1 100644
--- a/engines/sci/sci.cpp
+++ b/engines/sci/sci.cpp
@@ -913,12 +913,10 @@ void SciEngine::syncIngameAudioOptions() {
 			case GID_FREDDYPHARKAS:
 			case GID_ECOQUEST:
 			case GID_LSL6:
-				_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 3);	// speech + subtitles
-				break;
 			case GID_LAURABOW2:
 			case GID_KQ6:
-				// Laura Bow 2 + King's Quest 6 get patched when speech and subtitles are enabled
-				//  When the user has "speech" selected, the game will then do both That's why we select speech here
+				_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 3);	// speech + subtitles
+				break;
 			default:
 				// Game does not support speech and subtitles, set it to speech
 				_gamestate->variables[VAR_GLOBAL][90] = make_reg(0, 2);	// speech
@@ -932,8 +930,6 @@ void SciEngine::updateScummVMAudioOptions() {
 	// depending on the in-game settings
 	if (isCD() && getSciVersion() == SCI_VERSION_1_1) {
 		uint16 ingameSetting = _gamestate->variables[VAR_GLOBAL][90].getOffset();
-		bool subtitlesOn = ConfMan.getBool("subtitles");
-		bool speechOn = !ConfMan.getBool("speech_mute");
 		
 		switch (ingameSetting) {
 		case 1:
@@ -943,17 +939,6 @@ void SciEngine::updateScummVMAudioOptions() {
 			break;
 		case 2:
 			// speech
-			switch (_gameId) {
-			case GID_LAURABOW2:
-			case GID_KQ6:
-				// We don't sync "speech" for Laura Bow 2 in case the user choose "both" in the setting
-				//  Because "speech" (2) within SCI means "speech + subtitles" for Laura Bow 2
-				if (subtitlesOn && speechOn)
-					return;
-				break;
-			default:
-				break;
-			}
 			ConfMan.setBool("subtitles", false);
 			ConfMan.setBool("speech_mute", false);
 			break;






More information about the Scummvm-git-logs mailing list