[Scummvm-git-logs] scummvm master -> b25d81ca1dbd128a337d38ec8f598aa281155a3b

mgerhardy martin.gerhardy at gmail.com
Sun Nov 8 12:45:06 UTC 2020


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

Summary:
010941083e TWINE: moved members to local var
0842ffa071 TWINE: moved members to local vars and reduced visibility
03654bdd3e TWINE: there is no other return value as 1
78a909c16c TWINE: converted members to local var
137aa787ce TWINE: extract to local var
b25d81ca1d TWINE: replaced magic numbers and use local vars


Commit: 010941083e3eb88769ce0911f69dafcd4c91d673
    https://github.com/scummvm/scummvm/commit/010941083e3eb88769ce0911f69dafcd4c91d673
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: moved members to local var

Changed paths:
    engines/twine/renderer.cpp
    engines/twine/renderer.h


diff --git a/engines/twine/renderer.cpp b/engines/twine/renderer.cpp
index 37379fdd39..fb44c233e6 100644
--- a/engines/twine/renderer.cpp
+++ b/engines/twine/renderer.cpp
@@ -433,14 +433,15 @@ int32 Renderer::computePolygons(int16 polyRenderType) {
 		}
 	}
 
-	vertexParam1 = vertexParam2 = vertices[numOfVertex - 1].param;
+	uint8 vertexParam1 = vertices[numOfVertex - 1].param;
+	uint8 vertexParam2 = vertexParam1;
 	int16 currentVertexX = vertices[numOfVertex - 1].x;
 	int16 currentVertexY = vertices[numOfVertex - 1].y;
 
 	for (int32 nVertex = 0; nVertex < numOfVertex; nVertex++) {
 		int16 oldVertexY = currentVertexY;
 		int16 oldVertexX = currentVertexX;
-		oldVertexParam = vertexParam1;
+		uint8 oldVertexParam = vertexParam1;
 
 		vertexParam1 = vertexParam2 = vertices[nVertex].param;
 		currentVertexX = vertices[nVertex].x;
@@ -1025,6 +1026,8 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 	int16 temp = *((const int16 *)pointer); // we read the number of polygons
 	pointer += 2;
 
+	uint8 *renderV19 = nullptr; // RECHECK THIS
+
 	if (temp) {
 		int16 primitiveCounter = temp; // the number of primitives = the number of polygons
 
diff --git a/engines/twine/renderer.h b/engines/twine/renderer.h
index 2218c8b19a..282eb87fbe 100644
--- a/engines/twine/renderer.h
+++ b/engines/twine/renderer.h
@@ -176,17 +176,11 @@ private:
 	renderTabEntry renderTabSorted[1000];
 	uint8 renderTab7[10000] {0};
 
-	uint8 *renderV19 = nullptr; // RECHECK THIS
-
 	int16 vleft = 0;
 	int16 vtop = 0;
 	int16 vright = 0;
 	int16 vbottom = 0;
 
-	uint8 oldVertexParam = 0;
-	uint8 vertexParam1 = 0;
-	uint8 vertexParam2 = 0;
-
 	int16 polyTab[960] {0};
 	int16 polyTab2[960] {0};
 	// end render polygon vars


Commit: 0842ffa0711d8437d0b24c3d27034b882bb7b275
    https://github.com/scummvm/scummvm/commit/0842ffa0711d8437d0b24c3d27034b882bb7b275
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: moved members to local vars and reduced visibility

Changed paths:
    engines/twine/renderer.cpp
    engines/twine/renderer.h
    engines/twine/text.cpp


diff --git a/engines/twine/renderer.cpp b/engines/twine/renderer.cpp
index fb44c233e6..56b51aceb6 100644
--- a/engines/twine/renderer.cpp
+++ b/engines/twine/renderer.cpp
@@ -406,7 +406,7 @@ FORCEINLINE int16 clamp(int16 x, int16 a, int16 b) {
 	return x < a ? a : (x > b ? b : x);
 }
 
-int32 Renderer::computePolygons(int16 polyRenderType) {
+int32 Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom) {
 	vertexData *vertices = (vertexData *)vertexCoordinates;
 
 	vleft = vtop = 32767;
@@ -508,7 +508,7 @@ int32 Renderer::computePolygons(int16 polyRenderType) {
 	return 1;
 }
 
-void Renderer::renderPolygons(int32 renderType, int32 color) {
+void Renderer::renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom) {
 	uint8 *out2;
 	int32 currentLine;
 
@@ -987,6 +987,16 @@ void Renderer::renderPolygons(int32 renderType, int32 color) {
 	};
 }
 
+void Renderer::renderPolygons(int32 polyRenderType, int32 color) {
+	int vleft = 0;
+	int vright = 0;
+	int vtop = 0;
+	int vbottom = 0;
+	if (computePolygons(polyRenderType, vleft, vright, vtop, vbottom) != ERROR_OUT_OF_SCREEN) {
+		renderPolygons(polyRenderType, color, vleft, vright, vtop, vbottom);
+	}
+}
+
 void Renderer::circleFill(int32 x, int32 y, int32 radius, int8 color) {
 	radius += 1;
 
@@ -1327,9 +1337,7 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 				pointer += 2;
 			}
 
-			if (computePolygons(polyRenderType) != ERROR_OUT_OF_SCREEN) {
-				renderPolygons(polyRenderType, color);
-			}
+			renderPolygons(polyRenderType, color);
 
 			break;
 		}
diff --git a/engines/twine/renderer.h b/engines/twine/renderer.h
index 282eb87fbe..c585d3b218 100644
--- a/engines/twine/renderer.h
+++ b/engines/twine/renderer.h
@@ -176,17 +176,15 @@ private:
 	renderTabEntry renderTabSorted[1000];
 	uint8 renderTab7[10000] {0};
 
-	int16 vleft = 0;
-	int16 vtop = 0;
-	int16 vright = 0;
-	int16 vbottom = 0;
-
 	int16 polyTab[960] {0};
 	int16 polyTab2[960] {0};
 	// end render polygon vars
 
 	bool isUsingOrhoProjection = false;
 
+	int32 computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom);
+	void renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom);
+
 public:
 	Renderer(TwinEEngine *engine) : _engine(engine) {}
 
@@ -212,10 +210,8 @@ public:
 
 	void setLightVector(int32 angleX, int32 angleY, int32 angleZ);
 
-	int32 computePolygons(int16 polyRenderType);
-	void renderPolygons(int32 ecx, int32 edi);
-
 	void prepareIsoModel(uint8 *bodyPtr); // loadGfxSub
+	void renderPolygons(int32 polyRenderType, int32 color);
 
 	int32 projectPositionOnScreen(int32 cX, int32 cY, int32 cZ);
 	void setCameraPosition(int32 x, int32 y, int32 cX, int32 cY, int32 cZ);
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index 7a042a1aff..d7a15ce869 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -465,9 +465,7 @@ void Text::printText10Sub() {
 	_engine->_renderer->numOfVertex = 3;
 
 	int32 polyRenderType = 0; // POLYGONTYPE_FLAT
-	if (_engine->_renderer->computePolygons(polyRenderType)) {
-		_engine->_renderer->renderPolygons(polyRenderType, dialTextStopColor);
-	}
+	_engine->_renderer->renderPolygons(polyRenderType, dialTextStopColor);
 
 	_engine->copyBlockPhys(dialTextBoxRight - 24, dialTextBoxBottom - 24, dialTextBoxRight - 3, dialTextBoxBottom - 3);
 }


Commit: 03654bdd3e92d197566b87a7feab26865e8fca5e
    https://github.com/scummvm/scummvm/commit/03654bdd3e92d197566b87a7feab26865e8fca5e
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: there is no other return value as 1

Changed paths:
    engines/twine/renderer.cpp
    engines/twine/renderer.h


diff --git a/engines/twine/renderer.cpp b/engines/twine/renderer.cpp
index 56b51aceb6..9cbcf94d62 100644
--- a/engines/twine/renderer.cpp
+++ b/engines/twine/renderer.cpp
@@ -46,8 +46,6 @@ namespace TwinE {
 #define POLYGONTYPE_GOURAUD 7
 #define POLYGONTYPE_DITHER 8
 
-#define ERROR_OUT_OF_SCREEN 2
-
 int32 Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) {
 	if (!isUsingOrhoProjection) {
 		cX -= baseRotPosX;
@@ -406,7 +404,7 @@ FORCEINLINE int16 clamp(int16 x, int16 a, int16 b) {
 	return x < a ? a : (x > b ? b : x);
 }
 
-int32 Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom) {
+void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom) {
 	vertexData *vertices = (vertexData *)vertexCoordinates;
 
 	vleft = vtop = 32767;
@@ -504,8 +502,6 @@ int32 Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, i
 			}
 		}
 	}
-
-	return 1;
 }
 
 void Renderer::renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom) {
@@ -992,9 +988,8 @@ void Renderer::renderPolygons(int32 polyRenderType, int32 color) {
 	int vright = 0;
 	int vtop = 0;
 	int vbottom = 0;
-	if (computePolygons(polyRenderType, vleft, vright, vtop, vbottom) != ERROR_OUT_OF_SCREEN) {
-		renderPolygons(polyRenderType, color, vleft, vright, vtop, vbottom);
-	}
+	computePolygons(polyRenderType, vleft, vright, vtop, vbottom);
+	renderPolygons(polyRenderType, color, vleft, vright, vtop, vbottom);
 }
 
 void Renderer::circleFill(int32 x, int32 y, int32 radius, int8 color) {
diff --git a/engines/twine/renderer.h b/engines/twine/renderer.h
index c585d3b218..e5ef39dd77 100644
--- a/engines/twine/renderer.h
+++ b/engines/twine/renderer.h
@@ -182,7 +182,7 @@ private:
 
 	bool isUsingOrhoProjection = false;
 
-	int32 computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom);
+	void computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom);
 	void renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom);
 
 public:


Commit: 78a909c16ca4b62d61e7b86a777c40f9b176ed95
    https://github.com/scummvm/scummvm/commit/78a909c16ca4b62d61e7b86a777c40f9b176ed95
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: converted members to local var

Changed paths:
    engines/twine/renderer.cpp
    engines/twine/renderer.h


diff --git a/engines/twine/renderer.cpp b/engines/twine/renderer.cpp
index 9cbcf94d62..8b7bce4618 100644
--- a/engines/twine/renderer.cpp
+++ b/engines/twine/renderer.cpp
@@ -1014,7 +1014,7 @@ void Renderer::circleFill(int32 x, int32 y, int32 radius, int8 color) {
 	}
 }
 
-int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
+int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer, renderTabEntry **renderTabEntryPtr) {
 	int16 counter;
 	int16 type;
 
@@ -1189,10 +1189,10 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 			} else {
 				numOfPrimitives++;
 
-				renderTabEntryPtr->depth = render25;
-				renderTabEntryPtr->renderType = 1;
-				renderTabEntryPtr->dataPtr = render23;
-				renderTabEntryPtr++;
+				(*renderTabEntryPtr)->depth = render25;
+				(*renderTabEntryPtr)->renderType = 1;
+				(*renderTabEntryPtr)->dataPtr = render23;
+				(*renderTabEntryPtr)++;
 
 				edi = render24;
 			}
@@ -1228,10 +1228,10 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 				bestDepth = depth;
 			}
 
-			renderTabEntryPtr->depth = bestDepth;
-			renderTabEntryPtr->renderType = 0;
-			renderTabEntryPtr->dataPtr = edi;
-			renderTabEntryPtr++;
+			(*renderTabEntryPtr)->depth = bestDepth;
+			(*renderTabEntryPtr)->renderType = 0;
+			(*renderTabEntryPtr)->dataPtr = edi;
+			(*renderTabEntryPtr)++;
 
 			pointer += 8;
 			edi += 12;
@@ -1254,10 +1254,10 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 			*((int16 *)(edi + 3)) = flattenPoints[center / 6].y;
 			*((int16 *)(edi + 5)) = size;
 
-			renderTabEntryPtr->depth = flattenPoints[center / 6].z;
-			renderTabEntryPtr->renderType = 2;
-			renderTabEntryPtr->dataPtr = edi;
-			renderTabEntryPtr++;
+			(*renderTabEntryPtr)->depth = flattenPoints[center / 6].z;
+			(*renderTabEntryPtr)->renderType = 2;
+			(*renderTabEntryPtr)->dataPtr = edi;
+			(*renderTabEntryPtr)++;
 
 			pointer += 8;
 			edi += 7;
@@ -1266,7 +1266,7 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 
 	const renderTabEntry *renderTabEntryPtr2 = renderTab;
 
-	renderTabSortedPtr = renderTabSorted;
+	renderTabEntry *renderTabSortedPtr = renderTabSorted;
 	for (int32 i = 0; i < numOfPrimitives; i++) { // then we sort the polygones | WARNING: very slow | TODO: improve this
 		renderTabEntryPtr2 = renderTab;
 		int16 bestZ = -0x7FFF;
@@ -1381,7 +1381,7 @@ int32 Renderer::renderModelElements(int32 numOfPrimitives, uint8 *pointer) {
 	return 0;
 }
 
-int32 Renderer::renderAnimatedModel(uint8 *bodyPtr) {
+int32 Renderer::renderAnimatedModel(uint8 *bodyPtr, renderTabEntry *renderTabEntryPtr) {
 	//	int32 *tmpLightMatrix;
 	int32 numOfPoints = *((const uint16 *)bodyPtr);
 	bodyPtr += 2;
@@ -1583,7 +1583,7 @@ int32 Renderer::renderAnimatedModel(uint8 *bodyPtr) {
 		} while (--numOfPrimitives);
 	}
 
-	return renderModelElements(numOfPrimitives, (uint8 *)shadePtr);
+	return renderModelElements(numOfPrimitives, (uint8 *)shadePtr, &renderTabEntryPtr);
 }
 
 void Renderer::prepareIsoModel(uint8 *bodyPtr) { // loadGfxSub
@@ -1644,9 +1644,6 @@ int32 Renderer::renderIsoModel(int32 x, int32 y, int32 z, int32 angleX, int32 an
 		renderZ = destZ - baseRotPosZ;
 	}
 
-	// restart at the beginning of the renderTable
-	renderTabEntryPtr = renderTab;
-
 	int16 bodyHeader = *((const uint16 *)bodyPtr);
 
 	// jump after the header
@@ -1654,7 +1651,8 @@ int32 Renderer::renderIsoModel(int32 x, int32 y, int32 z, int32 angleX, int32 an
 
 	if (bodyHeader & 2) { // if animated
 		// the mostly used renderer code
-		return renderAnimatedModel(ptr);
+		// restart at the beginning of the renderTable
+		return renderAnimatedModel(ptr, renderTab);
 	}
 	error("Unsupported unanimated model render!");
 	return 0;
diff --git a/engines/twine/renderer.h b/engines/twine/renderer.h
index e5ef39dd77..d122831556 100644
--- a/engines/twine/renderer.h
+++ b/engines/twine/renderer.h
@@ -118,9 +118,9 @@ private:
 		uint16 temp = 0;
 	};
 
-	int32 renderAnimatedModel(uint8 *bodyPtr);
+	int32 renderAnimatedModel(uint8 *bodyPtr, renderTabEntry *renderTabEntryPtr);
 	void circleFill(int32 x, int32 y, int32 radius, int8 color);
-	int32 renderModelElements(int32 numOfPrimitives, uint8 *pointer);
+	int32 renderModelElements(int32 numOfPrimitives, uint8 *pointer, renderTabEntry** renderTabEntryPtr);
 	void getBaseRotationPosition(int32 x, int32 y, int32 z);
 	void getCameraAnglePositions(int32 x, int32 y, int32 z);
 	void applyRotation(int32 *targetMatrix, const int32 *currentMatrix);
@@ -169,9 +169,6 @@ private:
 	pointTab flattenPoints[800];  // _flattenPointTable
 	int16 shadeTable[500] {0};
 
-	renderTabEntry *renderTabEntryPtr = nullptr;
-	renderTabEntry *renderTabSortedPtr = nullptr;
-
 	renderTabEntry renderTab[1000];
 	renderTabEntry renderTabSorted[1000];
 	uint8 renderTab7[10000] {0};


Commit: 137aa787ce203651d75ce7258fbc06083b11b3c8
    https://github.com/scummvm/scummvm/commit/137aa787ce203651d75ce7258fbc06083b11b3c8
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: extract to local var

Changed paths:
    engines/twine/text.cpp


diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index d7a15ce869..a4fee63719 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -452,12 +452,19 @@ void Text::processTextLine() {
 }
 
 void Text::printText10Sub() {
+	const int32 right = dialTextBoxRight - 3;
+	const int32 left = dialTextBoxRight - 24;
+	const int32 top = dialTextBoxBottom - 24;
+	const int32 bottom = dialTextBoxBottom - 3;
+
 	_engine->_renderer->vertexCoordinates[0] = dialTextStopColor;
-	_engine->_renderer->vertexCoordinates[1] = dialTextBoxRight - 3;
-	_engine->_renderer->vertexCoordinates[2] = dialTextBoxBottom - 24;
+	_engine->_renderer->vertexCoordinates[1] = right;
+	_engine->_renderer->vertexCoordinates[2] = top;
+
 	_engine->_renderer->vertexCoordinates[3] = dialTextStopColor;
-	_engine->_renderer->vertexCoordinates[4] = dialTextBoxRight - 24;
-	_engine->_renderer->vertexCoordinates[5] = dialTextBoxBottom - 3;
+	_engine->_renderer->vertexCoordinates[4] = left;
+	_engine->_renderer->vertexCoordinates[5] = bottom;
+
 	_engine->_renderer->vertexCoordinates[6] = dialTextStartColor;
 	_engine->_renderer->vertexCoordinates[7] = _engine->_renderer->vertexCoordinates[1];
 	_engine->_renderer->vertexCoordinates[8] = _engine->_renderer->vertexCoordinates[5];
@@ -467,7 +474,7 @@ void Text::printText10Sub() {
 	int32 polyRenderType = 0; // POLYGONTYPE_FLAT
 	_engine->_renderer->renderPolygons(polyRenderType, dialTextStopColor);
 
-	_engine->copyBlockPhys(dialTextBoxRight - 24, dialTextBoxBottom - 24, dialTextBoxRight - 3, dialTextBoxBottom - 3);
+	_engine->copyBlockPhys(left, top, right, bottom);
 }
 
 void Text::printText10Sub2() {


Commit: b25d81ca1dbd128a337d38ec8f598aa281155a3b
    https://github.com/scummvm/scummvm/commit/b25d81ca1dbd128a337d38ec8f598aa281155a3b
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2020-11-08T13:44:49+01:00

Commit Message:
TWINE: replaced magic numbers and use local vars

Changed paths:
    engines/twine/renderer.cpp
    engines/twine/renderer.h
    engines/twine/text.cpp


diff --git a/engines/twine/renderer.cpp b/engines/twine/renderer.cpp
index 8b7bce4618..6b7b5e6da3 100644
--- a/engines/twine/renderer.cpp
+++ b/engines/twine/renderer.cpp
@@ -36,16 +36,6 @@ namespace TwinE {
 #define RENDERTYPE_DRAWPOLYGON 1
 #define RENDERTYPE_DRAWSPHERE 2
 
-#define POLYGONTYPE_FLAT 0
-#define POLYGONTYPE_COPPER 1
-#define POLYGONTYPE_BOPPER 2
-#define POLYGONTYPE_MARBLE 3
-#define POLYGONTYPE_TELE 4
-#define POLYGONTYPE_TRAS 5
-#define POLYGONTYPE_TRAME 6
-#define POLYGONTYPE_GOURAUD 7
-#define POLYGONTYPE_DITHER 8
-
 int32 Renderer::projectPositionOnScreen(int32 cX, int32 cY, int32 cZ) {
 	if (!isUsingOrhoProjection) {
 		cX -= baseRotPosX;
@@ -404,13 +394,11 @@ FORCEINLINE int16 clamp(int16 x, int16 a, int16 b) {
 	return x < a ? a : (x > b ? b : x);
 }
 
-void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom) {
-	vertexData *vertices = (vertexData *)vertexCoordinates;
-
+void Renderer::computePolygons(int16 polyRenderType, vertexData *vertices, int32 numVertices, int &vleft, int &vright, int &vtop, int &vbottom) {
 	vleft = vtop = 32767;
 	vright = vbottom = -32768;
 
-	for (int32 i = 0; i < numOfVertex; i++) {
+	for (int32 i = 0; i < numVertices; i++) {
 		vertices[i].x = clamp(vertices[i].x, 0, SCREEN_WIDTH - 1);
 		int16 vertexX = vertices[i].x;
 
@@ -431,12 +419,12 @@ void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, in
 		}
 	}
 
-	uint8 vertexParam1 = vertices[numOfVertex - 1].param;
+	uint8 vertexParam1 = vertices[numVertices - 1].param;
 	uint8 vertexParam2 = vertexParam1;
-	int16 currentVertexX = vertices[numOfVertex - 1].x;
-	int16 currentVertexY = vertices[numOfVertex - 1].y;
+	int16 currentVertexX = vertices[numVertices - 1].x;
+	int16 currentVertexY = vertices[numVertices - 1].y;
 
-	for (int32 nVertex = 0; nVertex < numOfVertex; nVertex++) {
+	for (int32 nVertex = 0; nVertex < numVertices; nVertex++) {
 		int16 oldVertexY = currentVertexY;
 		int16 oldVertexX = currentVertexX;
 		uint8 oldVertexParam = vertexParam1;
@@ -479,7 +467,7 @@ void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, in
 		slope = up ? -slope : slope;
 
 		for (int32  i = 0; i < vsize + 2; i++) {
-			if (outPtr - polyTab < 960) {
+			if (outPtr - polyTab < ARRAYSIZE(polyTab)) {
 				if (outPtr - polyTab > 0) {
 					*outPtr = xpos;
 				}
@@ -488,11 +476,11 @@ void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, in
 			xpos += slope;
 		}
 
-		if (polyRenderType >= 7) { // we must compute the color progression
+		if (polyRenderType >= POLYGONTYPE_GOURAUD) { // we must compute the color progression
 			int16 *outPtr2 = &polyTab2[ypos + (up ? SCREEN_HEIGHT : 0)];
 
 			for (int32 i = 0; i < vsize + 2; i++) {
-				if (outPtr2 - polyTab2 < 960) {
+				if (outPtr2 - polyTab2 < ARRAYSIZE(polyTab2)) {
 					if (outPtr2 - polyTab2 > 0) {
 						*outPtr2 = cvalue;
 					}
@@ -504,11 +492,11 @@ void Renderer::computePolygons(int16 polyRenderType, int &vleft, int &vright, in
 	}
 }
 
-void Renderer::renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom) {
+void Renderer::renderPolygons(int32 renderType, vertexData *vertices, int32 /*numVertices*/, int32 color, int vleft, int vright, int vtop, int vbottom) {
 	uint8 *out2;
 	int32 currentLine;
 
-	uint8 *out = (uint8*)_engine->frontVideoBuffer.getPixels() + SCREEN_WIDTH * vtop;
+	uint8 *out = (uint8*)_engine->frontVideoBuffer.getBasePtr(0, vtop);
 
 	int16 *ptr1 = &polyTab[vtop];
 	int16 *ptr2 = &polyTab2[vtop];
@@ -988,8 +976,9 @@ void Renderer::renderPolygons(int32 polyRenderType, int32 color) {
 	int vright = 0;
 	int vtop = 0;
 	int vbottom = 0;
-	computePolygons(polyRenderType, vleft, vright, vtop, vbottom);
-	renderPolygons(polyRenderType, color, vleft, vright, vtop, vbottom);
+	vertexData *vertices = (vertexData *)vertexCoordinates;
+	computePolygons(polyRenderType, vertices, numOfVertex, vleft, vright, vtop, vbottom);
+	renderPolygons(polyRenderType, vertices, numOfVertex, color, vleft, vright, vtop, vbottom);
 }
 
 void Renderer::circleFill(int32 x, int32 y, int32 radius, int8 color) {
diff --git a/engines/twine/renderer.h b/engines/twine/renderer.h
index d122831556..1c841b70dc 100644
--- a/engines/twine/renderer.h
+++ b/engines/twine/renderer.h
@@ -25,6 +25,16 @@
 
 #include "common/scummsys.h"
 
+#define POLYGONTYPE_FLAT 0
+#define POLYGONTYPE_COPPER 1
+#define POLYGONTYPE_BOPPER 2
+#define POLYGONTYPE_MARBLE 3
+#define POLYGONTYPE_TELE 4
+#define POLYGONTYPE_TRAS 5
+#define POLYGONTYPE_TRAME 6
+#define POLYGONTYPE_GOURAUD 7
+#define POLYGONTYPE_DITHER 8
+
 namespace TwinE {
 class TwinEEngine;
 class Renderer {
@@ -179,8 +189,8 @@ private:
 
 	bool isUsingOrhoProjection = false;
 
-	void computePolygons(int16 polyRenderType, int &vleft, int &vright, int &vtop, int &vbottom);
-	void renderPolygons(int32 renderType, int32 color, int vleft, int vright, int vtop, int vbottom);
+	void computePolygons(int16 polyRenderType, vertexData *vertices, int32 numVertices, int &vleft, int &vright, int &vtop, int &vbottom);
+	void renderPolygons(int32 renderType, vertexData *vertices, int32 numVertices, int32 color, int vleft, int vright, int vtop, int vbottom);
 
 public:
 	Renderer(TwinEEngine *engine) : _engine(engine) {}
diff --git a/engines/twine/text.cpp b/engines/twine/text.cpp
index a4fee63719..68e3a04e06 100644
--- a/engines/twine/text.cpp
+++ b/engines/twine/text.cpp
@@ -471,8 +471,7 @@ void Text::printText10Sub() {
 
 	_engine->_renderer->numOfVertex = 3;
 
-	int32 polyRenderType = 0; // POLYGONTYPE_FLAT
-	_engine->_renderer->renderPolygons(polyRenderType, dialTextStopColor);
+	_engine->_renderer->renderPolygons(POLYGONTYPE_FLAT, dialTextStopColor);
 
 	_engine->copyBlockPhys(left, top, right, bottom);
 }




More information about the Scummvm-git-logs mailing list