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

wjp wjp at usecode.org
Fri Nov 18 22:36:45 CET 2011


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:
f4be01b1c1 DREAMWEB: Add some sprite-related comments and names


Commit: f4be01b1c184466774c1dddc81dd8219a1298a2c
    https://github.com/scummvm/scummvm/commit/f4be01b1c184466774c1dddc81dd8219a1298a2c
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-11-18T13:34:46-08:00

Commit Message:
DREAMWEB: Add some sprite-related comments and names

Changed paths:
    engines/dreamweb/backdrop.cpp
    engines/dreamweb/sprite.cpp
    engines/dreamweb/structs.h
    engines/dreamweb/stubs.cpp



diff --git a/engines/dreamweb/backdrop.cpp b/engines/dreamweb/backdrop.cpp
index ffcad5b..63aec2d 100644
--- a/engines/dreamweb/backdrop.cpp
+++ b/engines/dreamweb/backdrop.cpp
@@ -153,14 +153,14 @@ void DreamGenContext::showallobs() {
 		SetObject *setEntry = setEntries + i;
 		if (getmapad(setEntry->mapad) == 0)
 			continue;
-		uint8 currentFrame = setEntry->b18[0];
+		uint8 currentFrame = setEntry->frames[0];
 		data.word(kCurrentframe) = currentFrame;
 		if (currentFrame == 0xff)
 			continue;
 		calcfrframe();
 		uint16 x, y;
 		finalframe(&x, &y);
-		setEntry->index = setEntry->b18[0];
+		setEntry->index = setEntry->frames[0];
 		if ((setEntry->type == 0) && (setEntry->priority != 5) && (setEntry->priority != 6)) {
 			x += data.word(kMapadx);
 			y += data.word(kMapady);
diff --git a/engines/dreamweb/sprite.cpp b/engines/dreamweb/sprite.cpp
index c7288ed..26ef947 100644
--- a/engines/dreamweb/sprite.cpp
+++ b/engines/dreamweb/sprite.cpp
@@ -60,11 +60,11 @@ void DreamGenContext::printasprite(const Sprite *sprite) {
 	}
 	
 	uint8 c;
-	if (sprite->b29 != 0)
+	if (sprite->walkFrame != 0)
 		c = 8;
 	else
 		c = 0;
-	showframe((const Frame *)segRef(sprite->frameData()).ptr(0, 0), x, y, sprite->b15, c);
+	showframe((const Frame *)segRef(sprite->frameData()).ptr(0, 0), x, y, sprite->frameNumber, c);
 }
 
 void DreamGenContext::clearsprites() {
@@ -73,7 +73,7 @@ void DreamGenContext::clearsprites() {
 
 Sprite *DreamGenContext::makesprite(uint8 x, uint8 y, uint16 updateCallback, uint16 frameData, uint16 somethingInDi) {
 	Sprite *sprite = spritetable();
-	while (sprite->b15 != 0xff) { // NB: No boundchecking in the original code either
+	while (sprite->frameNumber != 0xff) { // NB: No boundchecking in the original code either
 		++sprite;
 	}
 
@@ -83,7 +83,7 @@ Sprite *DreamGenContext::makesprite(uint8 x, uint8 y, uint16 updateCallback, uin
 	sprite->setFrameData(frameData);
 	WRITE_LE_UINT16(&sprite->w8, somethingInDi);
 	sprite->w2 = 0xffff;
-	sprite->b15 = 0;
+	sprite->frameNumber = 0;
 	sprite->delay = 0;
 	return sprite;
 }
@@ -114,8 +114,8 @@ void DreamGenContext::spriteupdate() {
 void DreamGenContext::initman() {
 	Sprite *sprite = makesprite(data.byte(kRyanx), data.byte(kRyany), addr_mainman, data.word(kMainsprites), 0);
 	sprite->priority = 4;
-	sprite->b22 = 0;
-	sprite->b29 = 0;
+	sprite->speed = 0;
+	sprite->walkFrame = 0;
 }
 
 void DreamGenContext::mainman() {
@@ -137,15 +137,15 @@ void DreamGenContext::mainman(Sprite *sprite) {
 		data.byte(kResetmanxy) = 0;
 		sprite->x = data.byte(kRyanx);
 		sprite->y = data.byte(kRyany);
-		sprite->b29 = 0;
+		sprite->walkFrame = 0;
 	}
-	--sprite->b22;
-	if (sprite->b22 != 0xff) {
+	--sprite->speed;
+	if (sprite->speed != 0xff) {
 		ds = pop();
 		es = pop();
 		return;
 	}
-	sprite->b22 = 0;
+	sprite->speed = 0;
 	if (data.byte(kTurntoface) != data.byte(kFacing)) {
 		aboutturn(sprite);
 	} else {
@@ -156,16 +156,16 @@ void DreamGenContext::mainman(Sprite *sprite) {
 		}
 		data.byte(kTurndirection) = 0;
 		if (data.byte(kLinepointer) == 254) {
-			sprite->b29 = 0;
+			sprite->walkFrame = 0;
 		} else {
-			++sprite->b29;
-			if (sprite->b29 == 11)
-				sprite->b29 = 1;
+			++sprite->walkFrame;
+			if (sprite->walkFrame == 11)
+				sprite->walkFrame = 1;
 			walking(sprite);
 			if (data.byte(kLinepointer) != 254) {
 				if ((data.byte(kFacing) & 1) == 0)
 					walking(sprite);
-				else if ((sprite->b29 != 2) && (sprite->b29 != 7))
+				else if ((sprite->walkFrame != 2) && (sprite->walkframe != 7))
 					walking(sprite);
 			}
 			if (data.byte(kLinepointer) == 254) {
@@ -178,7 +178,7 @@ void DreamGenContext::mainman(Sprite *sprite) {
 		}
 	}
 	static const uint8 facelist[] = { 0,60,33,71,11,82,22,93 };
-	sprite->b15 = sprite->b29 + facelist[data.byte(kFacing)];
+	sprite->frameNumber = sprite->walkFrame + facelist[data.byte(kFacing)];
 	data.byte(kRyanx) = sprite->x;
 	data.byte(kRyany) = sprite->y;
 
@@ -241,11 +241,11 @@ void DreamGenContext::aboutturn(Sprite *sprite) {
 	if (incdir) {
 		data.byte(kTurndirection) = 1;
 		data.byte(kFacing) = (data.byte(kFacing) + 1) & 7;
-		sprite->b29 = 0;
+		sprite->walkFrame = 0;
 	} else {
 		data.byte(kTurndirection) = (uint8)-1;
 		data.byte(kFacing) = (data.byte(kFacing) - 1) & 7;
-		sprite->b29 = 0;
+		sprite->walkFrame = 0;
 	}
 }
 
@@ -279,19 +279,19 @@ void DreamGenContext::backobject(Sprite *sprite) {
 }
 
 void DreamGenContext::constant(Sprite *sprite, SetObject *objData) {
-	++sprite->frame;
-	if (objData->b18[sprite->frame] == 255) {
-		sprite->frame = 0;
+	++sprite->animFrame;
+	if (objData->frames[sprite->animFrame] == 255) {
+		sprite->animFrame = 0;
 	}
-	uint8 b18 = objData->b18[sprite->frame];
-	objData->index = b18;
-	sprite->b15 = b18;
+	uint8 frame = objData->frames[sprite->animFrame];
+	objData->index = frame;
+	sprite->frameNumber = frame;
 }
 
 void DreamGenContext::random(Sprite *sprite, SetObject *objData) {
 	randomnum1();
 	uint16 r = ax;
-	sprite->b15 = objData->b18[r&7];
+	sprite->frameNumber = objData->frames[r&7];
 }
 
 void DreamGenContext::doorway(Sprite *sprite, SetObject *objData) {
@@ -316,46 +316,46 @@ void DreamGenContext::dodoor(Sprite *sprite, SetObject *objData, Common::Rect ch
 
 	if (openDoor) {
 
-		if ((data.byte(kThroughdoor) == 1) && (sprite->frame == 0))
-			sprite->frame = 6;
+		if ((data.byte(kThroughdoor) == 1) && (sprite->animFrame == 0))
+			sprite->animFrame = 6;
 
-		++sprite->frame;
-		if (sprite->frame == 1) { // doorsound2
+		++sprite->animFrame;
+		if (sprite->animFrame == 1) { // doorsound2
 			if (data.byte(kReallocation) == 5) // hoteldoor2
 				al = 13;
 			else
 				al = 0;
 			playchannel1();
 		}
-		if (objData->b18[sprite->frame] == 255)
-			--sprite->frame;
+		if (objData->frames[sprite->animFrame] == 255)
+			--sprite->animFrame;
 
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 		data.byte(kThroughdoor) = 1;
 
 	} else {
 		// shut door
 
-		if (sprite->frame == 5) { // doorsound1;
+		if (sprite->animFrame == 5) { // doorsound1;
 			if (data.byte(kReallocation) == 5) // hoteldoor1
 				al = 13;
 			else
 				al = 1;
 			playchannel1();
 		}
-		if (sprite->frame != 0)
-			--sprite->frame;
+		if (sprite->animFrame != 0)
+			--sprite->animFrame;
 
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
-		if (sprite->frame == 5) // nearly
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
+		if (sprite->animFrame == 5) // nearly
 			data.byte(kThroughdoor) = 0;
 	}
 }
 
 void DreamGenContext::steady(Sprite *sprite, SetObject *objData) {
-	uint8 b18 = objData->b18[0];
-	objData->index = b18;
-	sprite->b15 = b18;
+	uint8 frame = objData->frames[0];
+	objData->index = frame;
+	sprite->frameNumber = frame;
 }
 
 void DreamGenContext::lockeddoorway(Sprite *sprite, SetObject *objData) {
@@ -372,40 +372,40 @@ void DreamGenContext::lockeddoorway(Sprite *sprite, SetObject *objData) {
 
 	if (openDoor) {
 
-		if (sprite->frame == 1) {
+		if (sprite->animFrame == 1) {
 			al = 0;
 			playchannel1();
 		}
 
-		if (sprite->frame == 6)
+		if (sprite->animFrame == 6)
 			turnpathon(data.byte(kDoorpath));
 
-		if (data.byte(kThroughdoor) == 1 && sprite->frame == 0)
-			sprite->frame = 6;
+		if (data.byte(kThroughdoor) == 1 && sprite->animFrame == 0)
+			sprite->animFrame = 6;
 
-		++sprite->frame;
-		if (objData->b18[sprite->frame] == 255)
-			--sprite->frame;
+		++sprite->animFrame;
+		if (objData->frames[sprite->animFrame] == 255)
+			--sprite->animFrame;
 
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
-		if (sprite->frame == 5)
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
+		if (sprite->animFrame == 5)
 			data.byte(kThroughdoor) = 1;
 
 	} else {
 		// shut door
 
-		if (sprite->frame == 5) {
+		if (sprite->animFrame == 5) {
 			al = 1;
 			playchannel1();
 		}
 
-		if (sprite->frame != 0)
-			--sprite->frame;
+		if (sprite->animFrame != 0)
+			--sprite->animFrame;
 	
 		data.byte(kThroughdoor) = 0;
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 
-		if (sprite->frame == 0) {
+		if (sprite->animFrame == 0) {
 			turnpathoff(data.byte(kDoorpath));
 			data.byte(kLockstatus) = 1;
 		}
@@ -422,8 +422,8 @@ void DreamGenContext::liftsprite(Sprite *sprite, SetObject *objData) {
 			if (data.byte(kCounttoopen) == 0)
 				data.byte(kLiftflag) = 3;
 		}
-		sprite->frame = 0;
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->animFrame = 0;
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 	}
 	else if (liftFlag == 1) {  //liftopen
 		turnpathon(data.byte(kLiftpath));
@@ -433,32 +433,32 @@ void DreamGenContext::liftsprite(Sprite *sprite, SetObject *objData) {
 			if (data.byte(kCounttoclose) == 0)
 				data.byte(kLiftflag) = 2;
 		}
-		sprite->frame = 12;
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->animFrame = 12;
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 	}	
 	else if (liftFlag == 3) { //openlift
-		if (sprite->frame == 12) {
+		if (sprite->animFrame == 12) {
 			data.byte(kLiftflag) = 1;
 			return;
 		}
-		++sprite->frame;
-		if (sprite->frame == 1) {
+		++sprite->animFrame;
+		if (sprite->animFrame == 1) {
 			al = 2;
 			liftnoise();
 		}
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 	} else { //closeLift
 		assert(liftFlag == 2);
-		if (sprite->frame == 0) {
+		if (sprite->animFrame == 0) {
 			data.byte(kLiftflag) = 0;
 			return;
 		}
-		--sprite->frame;
-		if (sprite->frame == 11) {
+		--sprite->animFrame;
+		if (sprite->animFrame == 11) {
 			al = 3;
 			liftnoise();
 		}
-		sprite->b15 = objData->index = objData->b18[sprite->frame];
+		sprite->frameNumber = objData->index = objData->frames[sprite->animFrame];
 	}
 }
 
@@ -469,6 +469,10 @@ void DreamGenContext::facerightway() {
 	data.byte(kLeavedirection) = dir;
 }
 
+// Locate the reel segment (reel1, reel2, reel3) this frame is stored in.
+// The return value is a pointer to the start of the segment.
+// data.word(kCurrentframe) - data.word(kTakeoff) is the number of the frame
+// inside that segment
 Frame *DreamGenContext::findsource() {
 	uint16 currentFrame = data.word(kCurrentframe);
 	if (currentFrame < 160) {
@@ -525,8 +529,8 @@ void DreamGenContext::showrain() {
 		return;
 
 	ds = data.word(kMainsprites);
-	si = 6*58;
-	ax = ds.word(si+2);
+	si = 6*58; // Frame 58
+	ax = ds.word(si+2); // Frame::ptr
 	si = ax + 2080;
 
 	for (; rain->x != 255; ++rain) {
@@ -541,7 +545,7 @@ void DreamGenContext::showrain() {
 			uint8 v = src[i];
 			if (v != 0)
 				*dst = v;
-			dst += 320-1;
+			dst += 320-1; // advance diagonally
 		}
 	}
 
@@ -551,9 +555,10 @@ void DreamGenContext::showrain() {
 		return;
 	if (data.byte(kReallocation) == 55)
 		return;
-	randomnum1();
-	if (al >= 1)
+
+	if (engine->randomNumber() >= 1) // play thunder with 1 in 256 chance
 		return;
+
 	if (data.byte(kCh0playing) != 6)
 		al = 4;
 	else
diff --git a/engines/dreamweb/structs.h b/engines/dreamweb/structs.h
index c0adbe6..beab862 100644
--- a/engines/dreamweb/structs.h
+++ b/engines/dreamweb/structs.h
@@ -37,20 +37,20 @@ struct Sprite {
 	uint8  y;
 	uint16 w12;
 	uint8  b14;
-	uint8  b15;
+	uint8  frameNumber;
 	uint8  b16;
 	uint8  b17;
 	uint8  delay;
-	uint8  frame;
+	uint8  animFrame; // index into SetObject::frames
 	uint16 _objData;
 	uint16 objData() const { return READ_LE_UINT16(&_objData); }
 	void setObjData(uint16 v) { WRITE_LE_UINT16(&_objData, v); }
-	uint8  b22;
+	uint8  speed;
 	uint8  priority;
 	uint16 w24;
 	uint16 w26;
 	uint8  b28;
-	uint8  b29;
+	uint8  walkFrame;
 	uint8  type;
 	uint8  hidden;
 };
@@ -83,7 +83,8 @@ struct SetObject {
 	uint8 name[4];
 	uint8 b16;
 	uint8 index;
-	uint8 b18[13]; // NB: Don't know the size yet
+	uint8 frames[13]; // Table mapping animFrame to sprite frame number
+	                  // NB: Don't know the size yet
 	uint8 b31;
 	uint8 b32;
 	uint8 b33;
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index 0daba39..1288cc4 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -804,7 +804,7 @@ void DreamGenContext::makebackob(SetObject *objData) {
 	sprite->type = type;
 	sprite->b16 = 0;
 	sprite->delay = 0;
-	sprite->frame = 0;
+	sprite->animFrame = 0;
 }
 
 void DreamGenContext::getroomdata() {






More information about the Scummvm-git-logs mailing list