[Scummvm-cvs-logs] CVS: scummvm/saga actor.cpp,1.166,1.167

Andrew Kurushin h00ligan at users.sourceforge.net
Sun Aug 7 23:49:06 CEST 2005


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

Modified Files:
	actor.cpp 
Log Message:
check IHNM skiped data (loadActorList&loadObjList)

Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/saga/actor.cpp,v
retrieving revision 1.166
retrieving revision 1.167
diff -u -d -r1.166 -r1.167
--- actor.cpp	7 Aug 2005 11:20:43 -0000	1.166
+++ actor.cpp	8 Aug 2005 06:47:56 -0000	1.167
@@ -377,10 +377,16 @@
 }
 
 void Actor::loadActorList(int protagonistIdx, int actorCount, int actorsResourceID, int protagStatesCount, int protagStatesResourceID) {
-	int i;
+	int i, j;
 	ActorData *actor;
 	byte* actorListData;
 	size_t actorListLength;
+	byte walk[128];
+	byte acv[6];
+	int movementSpeed;
+	int walkStepIndex;
+	int walkStepCount;
+
 	freeActorList();
 	
 	_vm->_resource->loadResource(_actorContext, actorsResourceID, actorListData, actorListLength);
@@ -428,17 +434,40 @@
 		actor->frameNumber = actorS.readUint16LE();
 		actor->finalTarget.fromStream(actorS);
 		actor->partialTarget.fromStream(actorS);
-		actorS.readUint16LE(); //movement speed
-		actorS.seek(128, SEEK_CUR);
-		actorS.readByte();//walkStepIndex
-		actorS.readByte();//walkStepCount
+		movementSpeed = actorS.readUint16LE(); //movement speed
+		if (movementSpeed) {
+			error("Actor::loadActorList movementSpeed != 0");
+		}
+		actorS.read(walk, 128);
+		for (j = 0; j < 128; j++) {
+			if (walk[j]) {
+				error("Actor::loadActorList walk[128] != 0");
+			}
+		}
+		//actorS.seek(128, SEEK_CUR);
+		walkStepIndex = actorS.readByte();//walkStepIndex
+		if (walkStepIndex) {
+			error("Actor::loadActorList walkStepIndex != 0");
+		}
+		walkStepCount = actorS.readByte();//walkStepCount
+		if (walkStepCount) {
+			error("Actor::loadActorList walkStepCount != 0");
+		}
+		//no need to check pointers
 		actorS.readUint32LE(); //sprites
 		actorS.readUint32LE(); //frames
 		actorS.readUint32LE(); //last zone
 		actor->targetObject = actorS.readUint16LE();
 		actor->actorFlags = actorS.readUint16LE();
+		//no need to check pointers
 		actorS.readUint32LE(); //next in scene
-		actorS.seek(6, SEEK_CUR); //action vars
+		actorS.read(acv, 6);
+		for (j = 0; j < 6; j++) {
+			if (walk[j]) {
+				error("Actor::loadActorList acv[6] != 0");
+			}
+		}
+//		actorS.seek(6, SEEK_CUR); //action vars
 	}
 	free(actorListData);
 
@@ -499,6 +528,7 @@
 
 void Actor::loadObjList(int objectCount, int objectsResourceID) {
 	int i;
+	int frameListResourceId;
 	ObjectData *object;
 	byte* objectListData;
 	size_t objectListLength;
@@ -526,7 +556,10 @@
 		object->screenPosition.y = objectS.readUint16LE();
 		object->screenScale = objectS.readUint16LE();
 		object->screenDepth = objectS.readUint16LE();
-		objectS.readUint32LE(); // object->frameListResourceId
+		frameListResourceId = objectS.readUint32LE(); // object->frameListResourceId
+		if (frameListResourceId) {
+			error("Actor::loadObjList frameListResourceId != 0");
+		}
 		object->spriteListResourceId = objectS.readUint32LE();
 		object->scriptEntrypointNumber = objectS.readUint32LE();
 		objectS.readByte();





More information about the Scummvm-git-logs mailing list