[Scummvm-git-logs] scummvm master -> 9ba4d8c29bcd4c2db5c09e8380de06927f296c2e

mgerhardy martin.gerhardy at gmail.com
Mon Jan 4 07:11:25 UTC 2021


This automated email contains information about 8 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
76d5663ed3 TWINE: cleanup in processGridMask
3ff9ce0463 TWINE: small step to unify the grid mask creation with brick parsing
8fe0277ba7 TWINE: small step to unify the grid mask creation with brick parsing
380c56c46a TWINE: renamed variable in grid mask processing
5fbbe7f0df TWINE: replaced magic numbers
99c9cb6c4b TWINE: unify bitmask parsing for grid mask
6d58e77952 TWINE: use member var for size
9ba4d8c29b TWINE: raw buffer 'members' identified


Commit: 76d5663ed33a0ccc96bcdce2220445b16f6edb7d
    https://github.com/scummvm/scummvm/commit/76d5663ed33a0ccc96bcdce2220445b16f6edb7d
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: cleanup in processGridMask

Changed paths:
    engines/twine/scene/grid.cpp
    engines/twine/scene/grid.h


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 9a24176813..d2f9a22e99 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -184,14 +184,15 @@ void Grid::drawOverSpriteActor(int32 x, int32 y, int32 z) {
 	}
 }
 
-int Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
-	const uint8 *ptrSave = ptr;
-	int32 ebx = READ_UINT32(buffer); // brick flag
-	buffer += 4;
-	WRITE_LE_UINT32(ptr, (uint32)ebx);
-	ptr += 4;
-
-	uint8 bh = (ebx & 0x0000FF00) >> 8;
+void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
+	const uint8 width = *buffer++;
+	uint8 height = *buffer++;
+	const uint8 offsetX = *buffer++;
+	const uint8 offsetY = *buffer++;
+	*ptr++ = width;
+	*ptr++ = height;
+	*ptr++ = offsetX;
+	*ptr++ = offsetY;
 
 	const uint8 *esi = (const uint8 *)buffer;
 	uint8 *edi = (uint8 *)ptr;
@@ -243,9 +244,7 @@ int Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 		}
 
 		*ptr2 = numOfBlock;
-	} while (--bh > 0);
-
-	return (int)(edi - ptrSave);
+	} while (--height > 0);
 }
 
 void Grid::createGridMask() {
diff --git a/engines/twine/scene/grid.h b/engines/twine/scene/grid.h
index c5d2b66d5d..308b0e486c 100644
--- a/engines/twine/scene/grid.h
+++ b/engines/twine/scene/grid.h
@@ -137,7 +137,7 @@ private:
 	 * @param buffer brick pointer buffer
 	 * @param ptr brick mask pointer buffer
 	 */
-	int processGridMask(const uint8 *buffer, uint8 *ptr);
+	void processGridMask(const uint8 *buffer, uint8 *ptr);
 	/**
 	 * Copy grid mask to allow actors to display over the bricks
 	 * @param index current brick index


Commit: 3ff9ce04636595d984bf5679139b44284402e01d
    https://github.com/scummvm/scummvm/commit/3ff9ce04636595d984bf5679139b44284402e01d
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: small step to unify the grid mask creation with brick parsing

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index d2f9a22e99..040bb07368 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -189,6 +189,8 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 	uint8 height = *buffer++;
 	const uint8 offsetX = *buffer++;
 	const uint8 offsetY = *buffer++;
+	const int32 maxY = offsetY + height;
+
 	*ptr++ = width;
 	*ptr++ = height;
 	*ptr++ = offsetX;
@@ -199,7 +201,7 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 
 	uint8 iteration = 0;
 
-	do {
+	for (int32 y = offsetY; y < maxY; ++y) {
 		uint8 numOfBlock = 0;
 		uint8 ah = 0;
 		uint8 *ptr2 = edi;
@@ -219,13 +221,13 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 			iteration &= 0x3F;
 			iteration++;
 
-			if (al & 0x80) {
+			if (al & 0x80) { // 2
 				ah += iteration;
 				esi++;
-			} else if (al & 0x40) {
+			} else if (al & 0x40) { // 1
 				ah += iteration;
 				esi += iteration;
-			} else { // skip
+			} else { // skip 3
 				if (ah) {
 					*edi++ = ah; // write down the number of pixel passed so far
 					numOfBlock++;
@@ -244,7 +246,7 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 		}
 
 		*ptr2 = numOfBlock;
-	} while (--height > 0);
+	}
 }
 
 void Grid::createGridMask() {


Commit: 8fe0277ba7e1d2132ddb7b4066a2221731b3435b
    https://github.com/scummvm/scummvm/commit/8fe0277ba7e1d2132ddb7b4066a2221731b3435b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: small step to unify the grid mask creation with brick parsing

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 040bb07368..ffbab5b699 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -196,56 +196,49 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 	*ptr++ = offsetX;
 	*ptr++ = offsetY;
 
-	const uint8 *esi = (const uint8 *)buffer;
-	uint8 *edi = (uint8 *)ptr;
-
-	uint8 iteration = 0;
+	uint8 *targetPtrPos = ptr;
 
 	for (int32 y = offsetY; y < maxY; ++y) {
 		uint8 numOfBlock = 0;
 		uint8 ah = 0;
-		uint8 *ptr2 = edi;
-
-		edi++;
+		uint8 *numOfBlockTargetPtr = targetPtrPos;
 
-		uint8 bl = *(esi++);
+		targetPtrPos++;
 
-		if (*esi & 0xC0) { // the first time isn't skip. the skip size is 0 in that case
-			*edi++ = 0;
+		const uint8 numRuns = *buffer++;
+		if (*buffer & 0xC0) { // the first time isn't skip. the skip size is 0 in that case
+			*targetPtrPos++ = 0;
 			numOfBlock++;
 		}
-
-		do {
-			uint8 al = *esi++;
-			iteration = al;
-			iteration &= 0x3F;
-			iteration++;
-
-			if (al & 0x80) { // 2
-				ah += iteration;
-				esi++;
-			} else if (al & 0x40) { // 1
-				ah += iteration;
-				esi += iteration;
-			} else { // skip 3
+		for (uint8 run = 0; run < numRuns; ++run) {
+			const uint8 runSpec = *buffer++;
+			const uint8 runLength = bits(runSpec, 0, 6) + 1;
+			const uint8 type = bits(runSpec, 6, 2);
+			if (type == 2) {
+				ah += runLength;
+				buffer++;
+			} else if (type == 1) {
+				ah += runLength;
+				buffer += runLength;
+			} else { // skip (type 3)
 				if (ah) {
-					*edi++ = ah; // write down the number of pixel passed so far
+					*targetPtrPos++ = ah; // write down the number of pixel passed so far
 					numOfBlock++;
 					ah = 0;
 				}
-				*(edi++) = iteration; //write skip
+				*targetPtrPos++ = runLength; //write skip
 				numOfBlock++;
 			}
-		} while (--bl > 0);
+		}
 
 		if (ah) {
-			*edi++ = ah;
+			*targetPtrPos++ = ah;
 			numOfBlock++;
 
 			ah = 0;
 		}
 
-		*ptr2 = numOfBlock;
+		*numOfBlockTargetPtr = numOfBlock;
 	}
 }
 


Commit: 380c56c46a738f70f9cbad341dbf92d5052d592b
    https://github.com/scummvm/scummvm/commit/380c56c46a738f70f9cbad341dbf92d5052d592b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: renamed variable in grid mask processing

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index ffbab5b699..26e12fc1fd 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -200,7 +200,7 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 
 	for (int32 y = offsetY; y < maxY; ++y) {
 		uint8 numOfBlock = 0;
-		uint8 ah = 0;
+		uint8 opaquePixels = 0;
 		uint8 *numOfBlockTargetPtr = targetPtrPos;
 
 		targetPtrPos++;
@@ -215,27 +215,27 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 			const uint8 runLength = bits(runSpec, 0, 6) + 1;
 			const uint8 type = bits(runSpec, 6, 2);
 			if (type == 2) {
-				ah += runLength;
+				opaquePixels += runLength;
 				buffer++;
 			} else if (type == 1) {
-				ah += runLength;
+				opaquePixels += runLength;
 				buffer += runLength;
 			} else { // skip (type 3)
-				if (ah) {
-					*targetPtrPos++ = ah; // write down the number of pixel passed so far
+				if (opaquePixels) {
+					*targetPtrPos++ = opaquePixels; // write down the number of pixel passed so far
 					numOfBlock++;
-					ah = 0;
+					opaquePixels = 0;
 				}
 				*targetPtrPos++ = runLength; //write skip
 				numOfBlock++;
 			}
 		}
 
-		if (ah) {
-			*targetPtrPos++ = ah;
+		if (opaquePixels) {
+			*targetPtrPos++ = opaquePixels;
 			numOfBlock++;
 
-			ah = 0;
+			opaquePixels = 0;
 		}
 
 		*numOfBlockTargetPtr = numOfBlock;


Commit: 5fbbe7f0dfae5b5ae03baf9dcf9f654442a7d2dd
    https://github.com/scummvm/scummvm/commit/5fbbe7f0dfae5b5ae03baf9dcf9f654442a7d2dd
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: replaced magic numbers

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 26e12fc1fd..889f0d9bc1 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -270,7 +270,7 @@ void Grid::loadGridBricks(int32 gridSize) {
 	memset(brickSizeTable, 0, sizeof(brickSizeTable));
 	memset(brickUsageTable, 0, sizeof(brickUsageTable));
 
-	// get block librarie usage bits
+	// get block libraries usage bits
 	const uint8 *ptrToBllBits = currentGrid + (gridSize - 32);
 
 	// for all bits under the 32bytes (256bits)
@@ -392,9 +392,9 @@ void Grid::createGridMap() {
 		for (int32 x = 0; x < GRID_SIZE_X; x++) {
 			const int32 gridOffset = READ_LE_UINT16(currentGrid + 2 * (x + gridIdx));
 			createGridColumn(currentGrid + gridOffset, currentGridSize - gridOffset, blockBuffer + blockOffset, blockBufferSize - blockOffset);
-			blockOffset += 50;
+			blockOffset += 2 * GRID_SIZE_Y;
 		}
-		currOffset += GRID_SIZE_X * 50;
+		currOffset += GRID_SIZE_X * (2 * GRID_SIZE_Y);
 	}
 }
 
@@ -410,10 +410,10 @@ void Grid::createCellingGridMap(const uint8 *gridPtr, int32 gridPtrSize) {
 			const int gridOffset = READ_LE_UINT16(tempGridPtr);
 			tempGridPtr += 2;
 			createCellingGridColumn(gridPtr + gridOffset, gridPtrSize - gridOffset, blockBuffer + blockOffset, blockBufferSize - blockOffset);
-			blockOffset += 50;
+			blockOffset += 2 * GRID_SIZE_Y;
 		}
-		currGridOffset += 128;
-		currOffset += GRID_SIZE_X * 50;
+		currGridOffset += GRID_SIZE_X+ GRID_SIZE_Z;
+		currOffset += GRID_SIZE_X * (2 * GRID_SIZE_Y);
 	}
 }
 


Commit: 99c9cb6c4bf31fb8d16be567708acb7418976b8f
    https://github.com/scummvm/scummvm/commit/99c9cb6c4bf31fb8d16be567708acb7418976b8f
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: unify bitmask parsing for grid mask

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 889f0d9bc1..1f377e37ea 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -206,10 +206,13 @@ void Grid::processGridMask(const uint8 *buffer, uint8 *ptr) {
 		targetPtrPos++;
 
 		const uint8 numRuns = *buffer++;
-		if (*buffer & 0xC0) { // the first time isn't skip. the skip size is 0 in that case
+
+		// the first time isn't skip. the skip size is 0 in that case
+		if (bits(*buffer, 6, 2) != 0) {
 			*targetPtrPos++ = 0;
 			numOfBlock++;
 		}
+
 		for (uint8 run = 0; run < numRuns; ++run) {
 			const uint8 runSpec = *buffer++;
 			const uint8 runLength = bits(runSpec, 0, 6) + 1;


Commit: 6d58e779524edc246130fb8db92b013c20b96f3b
    https://github.com/scummvm/scummvm/commit/6d58e779524edc246130fb8db92b013c20b96f3b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: use member var for size

... we are already using the member var for the buffer pointer

Changed paths:
    engines/twine/scene/grid.cpp
    engines/twine/scene/grid.h


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 1f377e37ea..86241b39b0 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -265,7 +265,7 @@ void Grid::getSpriteSize(int32 offset, int32 *width, int32 *height, const uint8
 	*height = *(spritePtr + 1);
 }
 
-void Grid::loadGridBricks(int32 gridSize) {
+void Grid::loadGridBricks() {
 	uint32 firstBrick = 60000;
 	uint32 lastBrick = 0;
 	uint32 currentBllEntryIdx = 0;
@@ -274,7 +274,7 @@ void Grid::loadGridBricks(int32 gridSize) {
 	memset(brickUsageTable, 0, sizeof(brickUsageTable));
 
 	// get block libraries usage bits
-	const uint8 *ptrToBllBits = currentGrid + (gridSize - 32);
+	const uint8 *ptrToBllBits = currentGrid + (currentGridSize - 32);
 
 	// for all bits under the 32bytes (256bits)
 	for (uint32 i = 1; i < 256; i++) {
@@ -434,7 +434,7 @@ bool Grid::initGrid(int32 index) {
 		return false;
 	}
 
-	loadGridBricks(currentGridSize);
+	loadGridBricks();
 
 	createGridMask();
 
diff --git a/engines/twine/scene/grid.h b/engines/twine/scene/grid.h
index 308b0e486c..3b44890943 100644
--- a/engines/twine/scene/grid.h
+++ b/engines/twine/scene/grid.h
@@ -126,10 +126,8 @@ private:
 	void createGridColumn(const uint8 *gridEntry, uint32 gridEntrySize, uint8 *dest, uint32 destSize);
 	/**
 	 * Load grid bricks according with block librarie usage
-	 * @param gridSize size of the current grid
-	 * @return true if everything went ok
 	 */
-	void loadGridBricks(int32 gridSize);
+	void loadGridBricks();
 	/** Create grid masks to allow display actors over the bricks */
 	void createGridMask();
 	/**


Commit: 9ba4d8c29bcd4c2db5c09e8380de06927f296c2e
    https://github.com/scummvm/scummvm/commit/9ba4d8c29bcd4c2db5c09e8380de06927f296c2e
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-04T08:11:04+01:00

Commit Message:
TWINE: raw buffer 'members' identified

Changed paths:
    engines/twine/scene/grid.cpp


diff --git a/engines/twine/scene/grid.cpp b/engines/twine/scene/grid.cpp
index 86241b39b0..bcf611aa1d 100644
--- a/engines/twine/scene/grid.cpp
+++ b/engines/twine/scene/grid.cpp
@@ -285,16 +285,17 @@ void Grid::loadGridBricks() {
 			uint32 currentBllOffset = READ_LE_UINT32(currentBll + currentBllEntryIdx);
 			const uint8 *currentBllPtr = currentBll + currentBllOffset;
 
-			uint32 bllSizeX = currentBllPtr[0];
-			uint32 bllSizeY = currentBllPtr[1];
-			uint32 bllSizeZ = currentBllPtr[2];
+			uint32 bllSizeX = *currentBllPtr++;
+			uint32 bllSizeY = *currentBllPtr++;
+			uint32 bllSizeZ = *currentBllPtr++;
 
 			uint32 bllSize = bllSizeX * bllSizeY * bllSizeZ;
 
-			const uint8 *bllDataPtr = currentBllPtr + 5;
-
 			for (uint32 j = 0; j < bllSize; j++) {
-				uint32 brickIdx = READ_LE_INT16(bllDataPtr);
+				/* const uint8 type = * */currentBllPtr++;
+				/* const uint8 shape = * */currentBllPtr++;
+				uint32 brickIdx = READ_LE_INT16(currentBllPtr);
+				currentBllPtr += 2;
 
 				if (brickIdx) {
 					brickIdx--;
@@ -309,7 +310,6 @@ void Grid::loadGridBricks() {
 
 					brickUsageTable[brickIdx] = 1;
 				}
-				bllDataPtr += 4;
 			}
 		}
 		currentBllEntryIdx += 4;




More information about the Scummvm-git-logs mailing list