[Scummvm-cvs-logs] CVS: scummvm/scumm string.cpp,1.193.2.8,1.193.2.9 script.cpp,1.149.2.4,1.149.2.5

Max Horn fingolfin at users.sourceforge.net
Fri Aug 13 02:09:01 CEST 2004


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16846

Modified Files:
      Tag: branch-0-6-0
	string.cpp script.cpp 
Log Message:
Backported Indy3&COMI workarounds, as well as one speech fix

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.193.2.8
retrieving revision 1.193.2.9
diff -u -d -r1.193.2.8 -r1.193.2.9
--- string.cpp	13 Aug 2004 02:43:05 -0000	1.193.2.8
+++ string.cpp	13 Aug 2004 09:08:26 -0000	1.193.2.9
@@ -216,6 +216,14 @@
 			_keepText = false;
 			break;
 		}
+		
+		// FIXME: This is a workaround for bug #864030: In COMI, some text
+		// contains ASCII character 11 = 0xB. It's not quite clear what it is
+		// good for; so for now we just ignore it, which seems to match the
+		// original engine (BTW, traditionally, this is a 'vertical tab').
+		if (c == 0x0B)
+			continue;
+
 		if (c == 13) {
 		newLine:;
 			_charset->_nextLeft = _string[0].xpos;
@@ -424,10 +432,7 @@
 				// A better name for _blitAlso might be _imprintOnBackground
 
 				if (_string[a].no_talk_anim == false) {
-					// Sam and Max seems to blitAlso 32 a lot, which does
-					// nothing anyway. So just hide that one for brevity.
-					if (c != 32) 
-						debug(1, "Would have set _charset->_blitAlso = true (wanted to print '%c' = %d)", c, c);
+					//warning("Would have set _charset->_blitAlso = true (wanted to print '%c' = %d)", c, c);
 					_charset->_blitAlso = true;
 				}
 			}
@@ -445,7 +450,6 @@
 		_charset->_nextTop = _charset->_top;
 	}
 
-
 	_string[a].xpos = _charset->_str.right + 8;	// Indy3: Fixes Grail Diary text positioning
 
 	if (_version >= 7) {
@@ -485,6 +489,15 @@
 			break;
 		if (chr == 0xFF) {
 			chr = src[num++];
+
+			// WORKAROUND for bug #985948, a script bug in Indy3. Apparently,
+			// a german 'sz' was encoded incorrectly as 0xFF2E. We replace
+			// this by the correct encoding here. See also ScummEngine::resStrLen().
+			if (_gameId == GID_INDY3 && chr == 0x2E) {
+				*dst++ = 0xE1;
+				continue;
+			}
+
 			if (chr == 1 || chr == 2 || chr == 3 || chr == 8) {
 				// Simply copy these special codes
 				*dst++ = 0xFF;
@@ -844,6 +857,7 @@
 			strcat(pointer, ".IMX");
 
 			_sound->stopTalkSound();
+			_imuseDigital->stopSound(kTalkSoundID);
 			_imuseDigital->startVoice(kTalkSoundID, pointer);
 			_sound->talkSound(0, 0, 2, -1);
 		}

Index: script.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script.cpp,v
retrieving revision 1.149.2.4
retrieving revision 1.149.2.5
diff -u -d -r1.149.2.4 -r1.149.2.5
--- script.cpp	3 Aug 2004 10:36:12 -0000	1.149.2.4
+++ script.cpp	13 Aug 2004 09:08:26 -0000	1.149.2.5
@@ -1017,6 +1017,12 @@
 			chr = *src++;
 			num++;
 
+			// WORKAROUND for bug #985948, a script bug in Indy3. See also
+			// the corresponding code in ScummEngine::addMessageToStack().
+			if (_gameId == GID_INDY3 && chr == 0x2E) {
+				continue;
+			}
+
 			if (chr != 1 && chr != 2 && chr != 3 && chr != 8) {
 				if (_version == 8) {
 					src += 4;
@@ -1113,7 +1119,7 @@
 	fetchScriptByte();
 	fetchScriptWord();
 	
-	// FIXME: why is this here? it doesn't seem to belong here?
+	// This is based on disassembly
 	VAR(VAR_OVERRIDE) = 0;
 }
 





More information about the Scummvm-git-logs mailing list