[Scummvm-cvs-logs] CVS: scummvm/scumm scumm.h,1.17,1.18 string.cpp,1.12,1.13

Max Horn fingolfin at users.sourceforge.net
Mon Sep 16 16:49:03 CEST 2002


Update of /cvsroot/scummvm/scummvm/scumm
In directory usw-pr-cvs1:/tmp/cvs-serv18607/scumm

Modified Files:
	scumm.h string.cpp 
Log Message:
patch #609859: Some general patches for string.cpp

Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- scumm.h	16 Sep 2002 10:42:12 -0000	1.17
+++ scumm.h	16 Sep 2002 23:48:42 -0000	1.18
@@ -918,10 +918,10 @@
 	void description();
 	byte *_msgPtrToAdd;
 	byte *addMessageToStack(byte *msg);
-	void unkAddMsgToStack2(int var);
-	void unkAddMsgToStack3(int var);
-	void unkAddMsgToStack4(int var);
-	void unkAddMsgToStack5(int var);
+	void addIntToStack(int var);
+	void addVerbToStack(int var);
+	void addNameToStack(int var);
+	void addStringToStack(int var);
 	void unkMessage1();
 	void unkMessage2();
 	void clearMsgQueue();

Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- string.cpp	16 Sep 2002 08:22:05 -0000	1.12
+++ string.cpp	16 Sep 2002 23:48:42 -0000	1.13
@@ -391,22 +391,24 @@
 		}
 
 		c = *buffer++;
-		if (c == 3) {
-			if (_haveMsg != 0xFE)
-				_haveMsg = 0xFF;
-			_keepText = false;
-			break;
-		} else if (c == 1) {
+		switch(c) {
+		case 1:
 			goto newLine;
-		} else if (c == 2) {
+		case 2:
 			_haveMsg = 0;
 			_keepText = true;
 			break;
-		} else if (c == 9) {
+		case 3:		
+			if (_haveMsg != 0xFE)
+				_haveMsg = 0xFF;
+			_keepText = false;
+			break;		
+		case 9:
 			frme = *buffer++;
 			frme |= *buffer++ << 8;
 			has_anim = true;
-		} else if (c == 10) {
+			break;
+		case 10:
 			talk_sound_a = buffer[0] | (buffer[1] << 8) | (buffer[4] << 16) | (buffer[5] << 24);
 			talk_sound_b = buffer[8] | (buffer[9] << 8) | (buffer[12] << 16) | (buffer[13] << 24);
 			has_talk_sound = true;
@@ -415,7 +417,20 @@
 			// Set flag that speech variant exist of this msg
 			if (_haveMsg == 0xFF)
 				_haveMsg = 0xFE;
-		} else if (c == 14) {
+			break;		
+		case 12:
+			int color;
+			color = *buffer++;
+			color |= *buffer++ << 8;
+			if (color == 0xFF)
+				charset._color = _charsetColor;
+			else
+				charset._color = color;
+			break;
+		case 13:
+			buffer += 2;
+			break;
+		case 14: {
 			int oldy = getResourceAddress(rtCharset, charset._curId)[30];
 
 			charset._curId = *buffer++;
@@ -426,19 +441,14 @@
 				else
 					charset._colorMap[i] = _charsetData[charset._curId][i];
 			charset._ypos2 -= getResourceAddress(rtCharset, charset._curId)[30] - oldy;
-		} else if (c == 12) {
-			int color;
-			color = *buffer++;
-			color |= *buffer++ << 8;
-			if (color == 0xFF)
-				charset._color = _charsetColor;
-			else
-				charset._color = color;
-		} else if (c == 13) {
-			buffer += 2;
-		} else {
+			break;
+			}
+		default:
 			warning("CHARSET_1: invalid code %d", c);
 		}
+		if (c == 3 || c == 2)
+			break;
+
 	} while (1);
 
 	// Even if talkSound() is called, we may still have to call
@@ -640,22 +650,19 @@
 		return NULL;
 	}
 
-	while ((chr = *msg++) != 0) {
-		if (num > 500)
+while ((ptr[num++] = chr = *msg++) != 0) {
+		if (num >= 500)
 			error("Message stack overflow");
 
-		ptr[num++] = chr;
-
-		if (chr == 255) {
-			ptr[num++] = chr = *msg++;
+		if (chr == 0xff) {	// 0xff is an escape character			
+			ptr[num++] = chr = *msg++;	// followed by a "command" code 
 
 			if (chr != 1 && chr != 2 && chr != 3 && chr != 8) {
-				ptr[num++] = chr = *msg++;
-				ptr[num++] = chr = *msg++;
+				ptr[num++] = *msg++;	// and some commands are followed by parameters to the functions below
+				ptr[num++] = *msg++;	// these are numbers of names, strings, verbs, variables, etc
 			}
 		}
 	}
-	ptr[num++] = 0;
 
 	_numInMsgStack = num;
 	num = numorg;
@@ -669,19 +676,19 @@
 			chr = ptr[num++];
 			switch (chr) {
 			case 4:
-				unkAddMsgToStack2(READ_LE_UINT16(ptr + num));
+				addIntToStack(READ_LE_UINT16(ptr + num));
 				num += 2;
 				break;
 			case 5:
-				unkAddMsgToStack3(READ_LE_UINT16(ptr + num));
+				addVerbToStack(READ_LE_UINT16(ptr + num));
 				num += 2;
 				break;
 			case 6:
-				unkAddMsgToStack4(READ_LE_UINT16(ptr + num));
+				addNameToStack(READ_LE_UINT16(ptr + num));
 				num += 2;
 				break;
 			case 7:
-				unkAddMsgToStack5(READ_LE_UINT16(ptr + num));
+				addStringToStack(READ_LE_UINT16(ptr + num));
 				num += 2;
 				break;
 			case 9:
@@ -712,7 +719,7 @@
 	return msg;
 }
 
-void Scumm::unkAddMsgToStack2(int var)
+void Scumm::addIntToStack(int var)
 {
 	int num, max;
 	byte flag;
@@ -737,7 +744,7 @@
 	} while (max);
 }
 
-void Scumm::unkAddMsgToStack3(int var)
+void Scumm::addVerbToStack(int var)
 {
 	int num, i;
 
@@ -754,7 +761,7 @@
 	}
 }
 
-void Scumm::unkAddMsgToStack4(int var)
+void Scumm::addNameToStack(int var)
 {
 	int num;
 
@@ -766,7 +773,7 @@
 	}
 }
 
-void Scumm::unkAddMsgToStack5(int var)
+void Scumm::addStringToStack(int var)
 {
 	byte *ptr;
 





More information about the Scummvm-git-logs mailing list