[Scummvm-cvs-logs] scummvm master -> 654155bbe0db06ff23adbba748bc1c749c4f7e4c

dreammaster dreammaster at scummvm.org
Tue Oct 6 04:48:09 CEST 2015


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:
654155bbe0 SHERLOCK: SS: Fix garbage text in German version conversation


Commit: 654155bbe0db06ff23adbba748bc1c749c4f7e4c
    https://github.com/scummvm/scummvm/commit/654155bbe0db06ff23adbba748bc1c749c4f7e4c
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2015-10-05T22:47:14-04:00

Commit Message:
SHERLOCK: SS: Fix garbage text in German version conversation

Talking to Watson in the Alleyway scene can result in the text
"Change Speaker to Sherlock Holmes" appearing mid-conversation,
even in DosBox. This workaround fixes this by skipping the text.

Changed paths:
    engines/sherlock/journal.cpp
    engines/sherlock/scalpel/scalpel_journal.cpp
    engines/sherlock/scalpel/scalpel_journal.h
    engines/sherlock/scalpel/scalpel_talk.cpp



diff --git a/engines/sherlock/journal.cpp b/engines/sherlock/journal.cpp
index 44b966f..d5d0295 100644
--- a/engines/sherlock/journal.cpp
+++ b/engines/sherlock/journal.cpp
@@ -525,6 +525,9 @@ void Journal::loadJournalFile(bool alreadyLoaded) {
 			else
 				journalString += people._characters[c]._name;
 
+			if (IS_SERRATED_SCALPEL && _vm->getLanguage() == Common::DE_DEU)
+				Scalpel::ScalpelJournal::skipBadText(replyP);
+
 			const byte *strP = replyP;
 			byte v;
 			do {
diff --git a/engines/sherlock/scalpel/scalpel_journal.cpp b/engines/sherlock/scalpel/scalpel_journal.cpp
index 787d899..e068e3b 100644
--- a/engines/sherlock/scalpel/scalpel_journal.cpp
+++ b/engines/sherlock/scalpel/scalpel_journal.cpp
@@ -631,6 +631,14 @@ void ScalpelJournal::record(int converseNum, int statementNum, bool replyOnly) {
 		Journal::record(converseNum, statementNum, replyOnly);
 }
 
+void ScalpelJournal::skipBadText(const byte *&msgP) {
+	// WORKAROUND: Skip over bad text in the original game
+	const char *BAD_PHRASE1 = "Change Speaker to Sherlock Holmes ";
+	
+	if (!strncmp((const char *)msgP, BAD_PHRASE1, strlen(BAD_PHRASE1)))
+		msgP += strlen(BAD_PHRASE1);
+}
+
 } // End of namespace Scalpel
 
 } // End of namespace Sherlock
diff --git a/engines/sherlock/scalpel/scalpel_journal.h b/engines/sherlock/scalpel/scalpel_journal.h
index c8e9c01..2f64141 100644
--- a/engines/sherlock/scalpel/scalpel_journal.h
+++ b/engines/sherlock/scalpel/scalpel_journal.h
@@ -71,6 +71,11 @@ public:
 	void drawInterface();
 
 	/**
+	 * Handles skipping over bad text in conversations
+	 */
+	static void skipBadText(const byte *&msgP);
+
+	/**
 	 * Handle events whilst the journal is being displayed
 	 */
 	bool handleEvents(int key);
diff --git a/engines/sherlock/scalpel/scalpel_talk.cpp b/engines/sherlock/scalpel/scalpel_talk.cpp
index 88a718e..0458c30 100644
--- a/engines/sherlock/scalpel/scalpel_talk.cpp
+++ b/engines/sherlock/scalpel/scalpel_talk.cpp
@@ -22,6 +22,7 @@
 
 #include "sherlock/scalpel/scalpel_talk.h"
 #include "sherlock/scalpel/scalpel_fixed_text.h"
+#include "sherlock/scalpel/scalpel_journal.h"
 #include "sherlock/scalpel/scalpel_map.h"
 #include "sherlock/scalpel/scalpel_people.h"
 #include "sherlock/scalpel/scalpel_scene.h"
@@ -189,6 +190,9 @@ void ScalpelTalk::talkInterface(const byte *&str) {
 	ScalpelScreen &screen = *(ScalpelScreen *)_vm->_screen;
 	UserInterface &ui = *_vm->_ui;
 
+	if (_vm->getLanguage() == Common::DE_DEU)
+		ScalpelJournal::skipBadText(str);
+
 	// If the window isn't yet open, draw the window before printing starts
 	if (!ui._windowOpen && _noTextYet) {
 		_noTextYet = false;






More information about the Scummvm-git-logs mailing list