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

m-kiewitz m_kiewitz at users.sourceforge.net
Tue Oct 6 00:17:20 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:
f70159b9a2 SHERLOCK: SS: show inv. exclam. mark in dialog


Commit: f70159b9a2407e61a53c6f441fff8fb307575992
    https://github.com/scummvm/scummvm/commit/f70159b9a2407e61a53c6f441fff8fb307575992
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2015-10-06T00:18:06+02:00

Commit Message:
SHERLOCK: SS: show inv. exclam. mark in dialog

remove the possible opcode check, that was added to fix the Spanish
version crash during the alley room. We now have support for the
inverted exclamation mark and we want to show that character.

This also shows the inverted question mark. See bug #6931

If there are any more invalid characters, this commit may cause
assert()s in fonts.cpp again.

Changed paths:
    engines/sherlock/talk.cpp



diff --git a/engines/sherlock/talk.cpp b/engines/sherlock/talk.cpp
index 4150835..60e7dc4 100644
--- a/engines/sherlock/talk.cpp
+++ b/engines/sherlock/talk.cpp
@@ -750,17 +750,32 @@ void Talk::doScript(const Common::String &script) {
 			// Start of comment, so skip over it
 			while (*str++ != '}')
 				;
-		} else if (isPossibleOpcode(c)) {
-			if (isOpcode(c)) {
-				// Handle control code
-				switch ((this->*_opcodeTable[c - _opcodes[0]])(str)) {
-				case RET_EXIT:
-					return;
-				case RET_CONTINUE:
-					continue;
-				default:
-					break;
-				}
+		} else if (isOpcode(c)) {
+			// the original interpreter checked for c being >= 0x80
+			// and if that is the case, it tried to process it as opcode, BUT ALSO ALWAYS skipped over it
+			// This was done inside the Spanish + German interpreters of Serrated Scalpel, not the original
+			// English interpreter (reverse engineered from the binaries).
+			//
+			// This resulted in special characters not getting shown in case they occurred at the start
+			// of sentences like for example the inverted exclamation mark and the inverted question mark.
+			// For further study see fonts.cpp
+			//
+			// We create an inverted exclamation mark for the Spanish version and we show it.
+			//
+			// Us not skipping over those characters may result in an assert() happening inside fonts.cpp
+			// in case more invalid characters exist.
+			// More information see bug #6931
+			//
+			//} else if (isPossibleOpcode(c)) {
+
+			// Handle control code
+			switch ((this->*_opcodeTable[c - _opcodes[0]])(str)) {
+			case RET_EXIT:
+				return;
+			case RET_CONTINUE:
+				continue;
+			default:
+				break;
 			}
 
 			++str;






More information about the Scummvm-git-logs mailing list