[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