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

mgerhardy martin.gerhardy at gmail.com
Sat Jan 30 18:39:19 UTC 2021


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

Summary:
26fba9df1f TWINE: color constant
e7e489ac5d TWINE: transpose the basematrix for the holomap position lookup


Commit: 26fba9df1fd6fde9ac7f36924940251a2b499892
    https://github.com/scummvm/scummvm/commit/26fba9df1fd6fde9ac7f36924940251a2b499892
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-30T19:38:52+01:00

Commit Message:
TWINE: color constant

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


diff --git a/engines/twine/resources/resources.cpp b/engines/twine/resources/resources.cpp
index 975d17708e..d0a9cf7254 100644
--- a/engines/twine/resources/resources.cpp
+++ b/engines/twine/resources/resources.cpp
@@ -138,7 +138,7 @@ void Resources::initResources() {
 	}
 
 	_engine->_text->setFontParameters(2, 8);
-	_engine->_text->setFontColor(14);
+	_engine->_text->setFontColor(COLOR_14);
 	_engine->_text->setTextCrossColor(136, 143, 2);
 
 	spriteShadowSize = HQR::getAllocEntry(&spriteShadowPtr, Resources::HQR_RESS_FILE, RESSHQR_SPRITESHADOW);
diff --git a/engines/twine/text.h b/engines/twine/text.h
index fe3da4072b..bf35887da4 100644
--- a/engines/twine/text.h
+++ b/engines/twine/text.h
@@ -110,6 +110,7 @@ enum _TextId {
 #define COLOR_BLACK 0
 #define COLOR_BRIGHT_BLUE 4
 #define COLOR_9 9
+#define COLOR_14 14
 #define COLOR_RED 68
 #define COLOR_73 73
 #define COLOR_75 75


Commit: e7e489ac5d11e957bd26eb65bffbe75cbf323835
    https://github.com/scummvm/scummvm/commit/e7e489ac5d11e957bd26eb65bffbe75cbf323835
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-30T19:38:52+01:00

Commit Message:
TWINE: transpose the basematrix for the holomap position lookup

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


diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index d1ba8126e4..5cbcb7cbb6 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -205,8 +205,6 @@ void Holomap::drawHolomapText(int32 centerx, int32 top, const char *title) {
 	const int32 x = centerx - size / 2;
 	const int32 y = top;
 	_engine->_text->setFontColor(COLOR_WHITE);
-	// TODO: handle @ newline
-	// TODO: faded in? - looks like it - printText10 was used
 	_engine->_text->drawText(x, y, title);
 }
 
@@ -365,37 +363,37 @@ void Holomap::renderLocations(int xRot, int yRot, int zRot, bool lower) {
 			const Location &loc = _locations[locationIdx];
 			_engine->_renderer->setBaseRotation(loc.x, loc.y, 0);
 			_engine->_renderer->getBaseRotationPosition(0, 0, loc.z + 1000);
-			int32 v20 = _engine->_renderer->destX;
-			int32 v18 = _engine->_renderer->destY;
-			int32 v19 = _engine->_renderer->destZ;
+			int32 xpos1 = _engine->_renderer->destX;
+			int32 ypos1 = _engine->_renderer->destY;
+			int32 zpos1 = _engine->_renderer->destZ;
 			_engine->_renderer->getBaseRotationPosition(0, 0, 1500);
-			int32 v22 = _engine->_renderer->destX;
-			int32 v23 = _engine->_renderer->destY;
-			int32 v24 = _engine->_renderer->destZ;
-			_engine->_renderer->setBaseRotation(xRot, yRot, zRot);
+			int32 xpos2 = _engine->_renderer->destX;
+			int32 ypos2 = _engine->_renderer->destY;
+			int32 zpos2 = _engine->_renderer->destZ;
+			_engine->_renderer->setBaseRotation(xRot, yRot, zRot, true);
 			_engine->_renderer->baseRotPosX = 0;
 			_engine->_renderer->baseRotPosY = 0;
 			_engine->_renderer->baseRotPosZ = 9500;
-			_engine->_renderer->getBaseRotationPosition(v20, v18, v19);
-			int v21 = _engine->_renderer->destZ;
-			_engine->_renderer->getBaseRotationPosition(v22, v23, v24);
+			_engine->_renderer->getBaseRotationPosition(xpos1, ypos1, zpos1);
+			int zpos1_copy = _engine->_renderer->destZ;
+			_engine->_renderer->getBaseRotationPosition(xpos2, ypos2, zpos2);
 			if (lower) {
-				if (v21 > _engine->_renderer->destY) {
+				if (zpos1_copy > _engine->_renderer->destY) {
 					continue;
 				}
 			} else {
-				if (v21 < _engine->_renderer->destY) {
+				if (zpos1_copy < _engine->_renderer->destY) {
 					continue;
 				}
 			}
 
 			DrawListStruct &drawList = _engine->_redraw->drawList[n];
-			drawList.posValue = v21;
+			drawList.posValue = zpos1_copy;
 			drawList.actorIdx = locationIdx;
 			drawList.type = 0;
-			drawList.x = v20;
-			drawList.y = v18;
-			drawList.z = v21;
+			drawList.x = xpos1;
+			drawList.y = ypos1;
+			drawList.z = zpos1_copy;
 			drawList.offset = n;
 			drawList.field_C = flags;
 			drawList.field_E = 0;
@@ -404,8 +402,8 @@ void Holomap::renderLocations(int xRot, int yRot, int zRot, bool lower) {
 		}
 	}
 	_engine->_redraw->sortDrawingList(_engine->_redraw->drawList, n);
-	for (int v13 = 0; v13 < n; ++v13) {
-		const DrawListStruct &drawList = _engine->_redraw->drawList[v13];
+	for (int i = 0; i < n; ++i) {
+		const DrawListStruct &drawList = _engine->_redraw->drawList[i];
 		const uint16 flags = drawList.field_C;
 		const uint8 *bodyPtr = nullptr;
 		if (flags == 1u) {
diff --git a/engines/twine/renderer/renderer.cpp b/engines/twine/renderer/renderer.cpp
index 138083fc03..e9a3fe4951 100644
--- a/engines/twine/renderer/renderer.cpp
+++ b/engines/twine/renderer/renderer.cpp
@@ -110,7 +110,20 @@ void Renderer::setOrthoProjection(int32 x, int32 y, int32 z) {
 	isUsingOrthoProjection = true;
 }
 
-void Renderer::setBaseRotation(int32 x, int32 y, int32 z) {
+void Renderer::baseMatrixTranspose() {
+	const Matrix tmpMatrix = baseMatrix;
+	baseMatrix.row1[0] = tmpMatrix.row1[0];
+	baseMatrix.row1[1] = tmpMatrix.row2[0];
+	baseMatrix.row1[2] = tmpMatrix.row3[0];
+	baseMatrix.row2[0] = tmpMatrix.row1[1];
+	baseMatrix.row2[1] = tmpMatrix.row2[1];
+	baseMatrix.row2[2] = tmpMatrix.row3[1];
+	baseMatrix.row3[0] = tmpMatrix.row1[2];
+	baseMatrix.row3[1] = tmpMatrix.row2[2];
+	baseMatrix.row3[2] = tmpMatrix.row3[2];
+}
+
+void Renderer::setBaseRotation(int32 x, int32 y, int32 z, bool transpose) {
 	const double Xradians = (double)((ANGLE_90 - x) % ANGLE_360) * 2 * M_PI / ANGLE_360;
 	const double Yradians = (double)((ANGLE_90 - y) % ANGLE_360) * 2 * M_PI / ANGLE_360;
 	const double Zradians = (double)((ANGLE_90 - z) % ANGLE_360) * 2 * M_PI / ANGLE_360;
@@ -133,6 +146,9 @@ void Renderer::setBaseRotation(int32 x, int32 y, int32 z) {
 	baseMatrix.row3[0] = (int32)(sin(Yradians) * matrixElem - SCENE_SIZE_HALFF * sin(Xradians) * cos(Yradians));
 	baseMatrix.row3[2] = (int32)(cos(Yradians) * matrixElem + SCENE_SIZE_HALFF * sin(Xradians) * sin(Yradians));
 
+	if (transpose) {
+		baseMatrixTranspose();
+	}
 	getBaseRotationPosition(baseTransPosX, baseTransPosY, baseTransPosZ);
 
 	baseRotPosX = destX;
diff --git a/engines/twine/renderer/renderer.h b/engines/twine/renderer/renderer.h
index 4114707d6b..64a7feb9da 100644
--- a/engines/twine/renderer/renderer.h
+++ b/engines/twine/renderer/renderer.h
@@ -382,6 +382,8 @@ private:
 	uint8 *prepareSpheres(Common::MemoryReadStream &stream, int32 &numOfPrimitives, RenderCommand **renderCmds, uint8 *renderBufferPtr, ModelData *modelData);
 	uint8 *prepareLines(Common::MemoryReadStream &stream, int32 &numOfPrimitives, RenderCommand **renderCmds, uint8 *renderBufferPtr, ModelData *modelData);
 
+	void baseMatrixTranspose();
+
 public:
 	Renderer(TwinEEngine *engine);
 	~Renderer();
@@ -419,7 +421,7 @@ public:
 	void setCameraPosition(int32 x, int32 y, int32 depthOffset, int32 scaleY, int32 scaleZ);
 	void setCameraAngle(int32 transPosX, int32 transPosY, int32 transPosZ, int32 rotPosX, int32 rotPosY, int32 rotPosZ, int32 param6);
 	void setBaseTranslation(int32 x, int32 y, int32 z);
-	void setBaseRotation(int32 x, int32 y, int32 z);
+	void setBaseRotation(int32 x, int32 y, int32 z, bool transpose = false);
 	void setOrthoProjection(int32 x, int32 y, int32 z);
 
 	bool renderIsoModel(int32 x, int32 y, int32 z, int32 angleX, int32 angleY, int32 angleZ, const uint8 *bodyPtr);




More information about the Scummvm-git-logs mailing list