[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