[Scummvm-cvs-logs] CVS: scummvm/scumm intern.h,2.358,2.359 script_v100he.cpp,2.58,2.59 script_v90he.cpp,2.151,2.152 sprite_he.cpp,1.33,1.34 sprite_he.h,1.9,1.10

kirben kirben at users.sourceforge.net
Wed Feb 23 03:17:03 CET 2005


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

Modified Files:
	intern.h script_v100he.cpp script_v90he.cpp sprite_he.cpp 
	sprite_he.h 
Log Message:

Update HE100


Index: intern.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/intern.h,v
retrieving revision 2.358
retrieving revision 2.359
diff -u -d -r2.358 -r2.359
--- intern.h	23 Feb 2005 09:55:34 -0000	2.358
+++ intern.h	23 Feb 2005 11:15:41 -0000	2.359
@@ -937,7 +937,8 @@
 	void spriteInfoSet_flags23_26(int spriteId, int value);
 	void spriteInfoSet_flag31(int spriteId, int value);
 	void spriteInfoSet_field_78_64(int spriteId, int value);
-	void spriteInfoSet_setClassFlags(int spriteId, int value1, int value2);
+	void spriteInfoSet_setClassFlags(int spriteId, int value);
+	void spriteInfoSet_setClassFlag(int spriteId, int classId, int toggle);
 	void spriteInfoSet_resetClassFlags(int spriteId);
 	void spriteInfoSet_field_88(int spriteId, int type, int value);
 

Index: script_v100he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v100he.cpp,v
retrieving revision 2.58
retrieving revision 2.59
diff -u -d -r2.58 -r2.59
--- script_v100he.cpp	23 Feb 2005 04:35:19 -0000	2.58
+++ script_v100he.cpp	23 Feb 2005 11:15:41 -0000	2.59
@@ -1582,7 +1582,7 @@
 
 void ScummEngine_v100he::o100_setSpriteInfo() {
 	int args[16];
-	int spriteId, tmp[2];
+	int spriteId, n, tmp[2];
 	static int storedFields[2];
 	byte string[80];
 
@@ -1654,7 +1654,27 @@
 			spriteInfoSet_field_7C(spriteId, args[0]);
 		break;
 	case 16:
-		getStackList(args, ARRAYSIZE(args));
+		n = getStackList(args, ARRAYSIZE(args));
+		if (_curSpriteId != 0 && _curMaxSpriteId != 0 && n != 0) {
+			int *p = &args[n - 1];
+			do {
+				int code = *p;
+				if (code == 0) {
+					for (int i = _curSpriteId; i <= _curMaxSpriteId; ++i) {
+						spriteInfoSet_resetClassFlags(i);					
+					}
+				} else if (code & 0x80) {
+					for (int i = _curSpriteId; i <= _curMaxSpriteId; ++i) {
+						spriteInfoSet_setClassFlag(i, code & 0x7F, 1);
+					}
+				} else {
+					for (int i = _curSpriteId; i <= _curMaxSpriteId; ++i) {
+						spriteInfoSet_setClassFlag(i, code & 0x7F, 0);
+					}
+				}
+				--p;
+			} while (--n);
+		}
 		break;
 	case 32:
 		args[0] = pop();
@@ -1726,6 +1746,7 @@
 			spriteInfoSet_resetSprite(spriteId);
 		break;
 	case 54:
+		// TODO
 		pop();
 		pop();
 		break;
@@ -1881,9 +1902,25 @@
 			spriteInfoSet_field_44(spriteId, args[0], args[1]);
 		break;
 	case 88:
-		pop();
+		args[0] = pop();
+		if (_curSpriteId > _curMaxSpriteId)
+			break;
+		spriteId = _curSpriteId;
+		if (!spriteId)
+			spriteId++;
+
+		for (; spriteId <= _curMaxSpriteId; spriteId++)
+			spriteInfoSet_setClassFlags(spriteId, args[0]);
 		break;
 	case 89:
+		if (_curSpriteId > _curMaxSpriteId)
+			break;
+		spriteId = _curSpriteId;
+		if (!spriteId)
+			spriteId++;
+
+		for (; spriteId <= _curMaxSpriteId; spriteId++)
+			spriteInfoSet_resetClassFlags(spriteId);
 		break;
 	default:
 		error("o100_setSpriteInfo: Unknown case %d", subOp);
@@ -2421,6 +2458,7 @@
 			push(0);
 		break;
 	case 54:
+		// TODO
 		pop();
 		pop();
 		push(0);
@@ -2506,6 +2544,7 @@
 		}
 		break;
 	case 82:
+		// TODO
 		pop();
 		push(0);
 		break;

Index: script_v90he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v90he.cpp,v
retrieving revision 2.151
retrieving revision 2.152
diff -u -d -r2.151 -r2.152
--- script_v90he.cpp	23 Feb 2005 10:00:12 -0000	2.151
+++ script_v90he.cpp	23 Feb 2005 11:15:41 -0000	2.152
@@ -1225,11 +1225,11 @@
 					}
 				} else if (code & 0x80) {
 					for (int i = _curSpriteId; i <= _curMaxSpriteId; ++i) {
-						spriteInfoSet_setClassFlags(i, code & 0x7F, 1);
+						spriteInfoSet_setClassFlag(i, code & 0x7F, 1);
 					}
 				} else {
 					for (int i = _curSpriteId; i <= _curMaxSpriteId; ++i) {
-						spriteInfoSet_setClassFlags(i, code & 0x7F, 0);
+						spriteInfoSet_setClassFlag(i, code & 0x7F, 0);
 					}
 				}
 				--p;

Index: sprite_he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.cpp,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- sprite_he.cpp	23 Feb 2005 10:14:52 -0000	1.33
+++ sprite_he.cpp	23 Feb 2005 11:15:41 -0000	1.34
@@ -517,7 +517,13 @@
 	_spriteTable[spriteId].field_64 = value;
 }
 
-void ScummEngine_v90he::spriteInfoSet_setClassFlags(int spriteId, int classId, int toggle) {
+void ScummEngine_v90he::spriteInfoSet_setClassFlags(int spriteId, int value) {
+	checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
+	
+	_spriteTable[spriteId].class_flags = value;
+}
+
+void ScummEngine_v90he::spriteInfoSet_setClassFlag(int spriteId, int classId, int toggle) {
 	checkRange(_varNumSprites, 1, spriteId, "Invalid sprite %d");
 	checkRange(32, 1, classId, "class %d out of range in statement");
 	

Index: sprite_he.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/sprite_he.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- sprite_he.h	23 Feb 2005 09:23:54 -0000	1.9
+++ sprite_he.h	23 Feb 2005 11:15:41 -0000	1.10
@@ -101,6 +101,8 @@
 	int field_80;
 	int class_flags;
 	int field_88;
+	int field_8C;
+	int field_90;
 };
 
 struct SpriteGroup {





More information about the Scummvm-git-logs mailing list