[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