[Scummvm-git-logs] scummvm master -> bb64c9abeea45255b3c69dda0a04fa7ca1af390c
mgerhardy
martin.gerhardy at gmail.com
Sun Feb 14 21:52:50 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
bb64c9abee TWINE: activate parts of the holomap code
Commit: bb64c9abeea45255b3c69dda0a04fa7ca1af390c
https://github.com/scummvm/scummvm/commit/bb64c9abeea45255b3c69dda0a04fa7ca1af390c
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-14T22:52:45+01:00
Commit Message:
TWINE: activate parts of the holomap code
Changed paths:
engines/twine/holomap.cpp
engines/twine/holomap.h
diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index 38d7a8d318..68b053e513 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -60,7 +60,7 @@ bool Holomap::loadLocations() {
return false;
}
- for (int i = 0; i < _numLocations; i++) {
+ for (int32 i = 0; i < _numLocations; i++) {
_locations[i].x = ClampAngle(stream.readSint16LE());
_locations[i].y = ClampAngle(stream.readSint16LE());
_locations[i].z = ClampAngle(stream.readSint16LE());
@@ -168,7 +168,7 @@ void Holomap::prepareHolomapProjectedPositions() {
void Holomap::prepareHolomapPolygons() {
Common::MemoryReadStream stream(_engine->_resources->holomapSurfacePtr, _engine->_resources->holomapSurfaceSize);
int holomapSortArrayIdx = 0;
- int projectedIndex = 0;
+ uint16 projectedIndex = 0;
_engine->_renderer->setBaseRotation(0, 0, 0);
for (int32 angle = -ANGLE_90; angle <= ANGLE_90; angle += ANGLE_11_25) {
int rotation = 0;
@@ -199,212 +199,206 @@ void Holomap::prepareHolomapPolygons() {
qsort(_holomapSurface, ARRAYSIZE(_holomapSurface), sizeof(HolomapSurface), sortHolomapSurfaceCoordsByDepth);
}
-#if 0
bool Holomap::vertices_FUN_00423ebb(const Vertex *vertices) const {
- const int iVar3 = (int)(vertices[0].y - vertices[2].y) * (int)(vertices[1].x - vertices->x);
- const short sVar5 = (short)((uint)iVar3 >> 0x10);
- const int iVar4 = (int)(vertices[0].x - vertices[2].x) * (int)(vertices[1].y - vertices->y);
- const short sVar6 = (short)((uint)iVar4 >> 0x10);
- const ushort uVar1 = (ushort)((ushort)iVar4 < (ushort)iVar3);
- const short sVar2 = sVar6 - sVar5;
- if ((SBORROW2(sVar6, sVar5) != SBORROW2(sVar2, uVar1)) != (short)(sVar2 - uVar1) < 0) {
+ const int32 iVar3 = (int32)(vertices[0].y - vertices[2].y) * (int32)(vertices[1].x - vertices->x);
+ const int16 sVar5 = (int16)((uint32)iVar3 >> 0x10);
+ const int32 iVar4 = (int32)(vertices[0].x - vertices[2].x) * (int32)(vertices[1].y - vertices->y);
+ const int16 sVar6 = (int16)((uint32)iVar4 >> 0x10);
+ const uint16 uVar1 = (uint16)((uint16)iVar4 < (uint16)iVar3);
+ const int16 sVar2 = sVar6 - sVar5;
+ const bool bVal7 = sVar6 < sVar5;
+ const bool bVal8 = sVar2 < uVar1;
+ if ((bVal7 != bVal8) != (int16)(sVar2 - uVar1) < 0) {
return true;
}
return false;
}
-void Holomap::vertices_FUN_00420fad(int y1, int x1, int y2, int x2) {
- uint uVar1;
- uint uVar2;
- uint uVar3;
- int unaff_EDI;
- short *puVar4;
- bool bVar5;
-
- int minY = y2;
- int minX = x1;
+void Holomap::vertices_FUN_00420fad(int32 y1, int32 x1, int32 y2, int32 x2, int16 *vertexCoordinatePtr) {
+#if 0
+ int32 minY = y2;
+ int32 minX = x1;
if (y1 < y2) {
minY = y1;
y1 = y2;
minX = x2;
x2 = x1;
}
- uint deltaY = y1 - minY;
- puVar4 = (short *)(unaff_EDI + minY * 2);
+ uint32 deltaY = y1 - minY;
+ int16 *lVertexCoordPointer = (int16 *)(vertexCoordinatePtr + minY * 2);
if (x2 <= minX) {
- uVar2 = (uint)(ushort)((short)minX - (short)x2) << 0x10;
- uVar3 = uVar2 / deltaY;
+ uint32 deltaX = (uint32)(uint16)((int16)minX - (int16)x2) << 0x10;
+ uint32 deltaRatio = deltaX / deltaY;
minY = deltaY + 1;
- uVar3 = uVar3 << 0x10 | uVar3 >> 0x10;
- bVar5 = false;
- deltaY = x2 & 0xffffU |
- (uint)(ushort)(((ushort)(uVar2 % deltaY >> 1) & 0x7fff) + 0x7fff) << 0x10;
+ deltaRatio = deltaRatio << 0x10 | deltaRatio >> 0x10;
+ bool bVar5 = false;
+ deltaY = (x2 & 0xffffU) |
+ (uint32)(uint16)(((uint16)(deltaX % deltaY >> 1) & 0x7fff) + 0x7fff) << 0x10;
do {
- *puVar4 = (short)deltaY;
- uVar2 = (uint)bVar5;
- uVar1 = deltaY + uVar3;
- bVar5 = CARRY4(deltaY, uVar3) || CARRY4(uVar1, uVar2);
- deltaY = uVar1 + uVar2;
+ *lVertexCoordPointer = (int16)deltaY;
+ deltaX = (uint32)bVar5;
+ uint32 uVar1 = deltaY + deltaRatio;
+ // CARRY4: Return true if there is an arithmetic overflow when adding 'x' and 'y' as unsigned integers.
+ bVar5 = CARRY4(deltaY, deltaRatio) || CARRY4(uVar1, deltaX);
+ deltaY = uVar1 + deltaX;
minY = minY + -1;
- puVar4 = puVar4 + 1;
+ lVertexCoordPointer = lVertexCoordPointer + 1;
+ } while (minY != 0);
+ } else {
+ uint32 deltaX = (uint32)(uint16)((int16)x2 - (int16)minX) << 0x10;
+ uint32 deltaRatio = deltaX / deltaY;
+ minY = deltaY + 1;
+ deltaRatio = deltaRatio << 0x10 | deltaRatio >> 0x10;
+ bool bVar5 = false;
+ deltaY = (x2 & 0xffffU) | (uint32)(uint16)(((uint16)(deltaX % deltaY >> 1) & 0x7fff) + 0x7fff) << 0x10;
+ do {
+ *lVertexCoordPointer = (int16)deltaY;
+ deltaX = (uint32)bVar5;
+ uint32 uVar1 = deltaY - deltaRatio;
+ bVar5 = deltaY < deltaRatio || uVar1 < deltaX;
+ deltaY = uVar1 - deltaX;
+ minY = minY + -1;
+ lVertexCoordPointer = lVertexCoordPointer + 1;
} while (minY != 0);
- return;
}
- uVar2 = (uint)(ushort)((short)x2 - (short)minX) << 0x10;
- uVar3 = uVar2 / deltaY;
- minY = deltaY + 1;
- uVar3 = uVar3 << 0x10 | uVar3 >> 0x10;
- bVar5 = false;
- deltaY = x2 & 0xffffU | (uint)(ushort)(((ushort)(uVar2 % deltaY >> 1) & 0x7fff) + 0x7fff) << 0x10;
- do {
- *puVar4 = (short)deltaY;
- uVar2 = (uint)bVar5;
- uVar1 = deltaY - uVar3;
- bVar5 = deltaY < uVar3 || uVar1 < uVar2;
- deltaY = uVar1 - uVar2;
- minY = minY + -1;
- puVar4 = puVar4 + 1;
- } while (minY != 0);
+#endif
}
void Holomap::vertices_FUN_00421010(Vertex *vertexCoordinates) {
clip_or_depth_DAT_00433444 = 32000;
y_DAT_00433448 = 0xffff8300;
- uint y_uVar1 = (uint)(ushort)vertexCoordinates[0].y;
- uint y_uVar2 = (uint)(ushort)vertexCoordinates[1].y;
+ uint32 y_uVar1 = (uint32)(uint16)vertexCoordinates[0].y;
+ uint32 y_uVar2 = (uint32)(uint16)vertexCoordinates[1].y;
if (y_uVar1 < y_uVar2) {
if (y_uVar1 <= 32000) {
clip_or_depth_DAT_00433444 = y_uVar1;
}
- if (-32001 < (int)y_uVar2) {
+ if (-32001 < (int32)y_uVar2) {
y_DAT_00433448 = y_uVar2;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[1].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[0].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433370,
- (uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336a);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433372,
- (uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336c);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[1].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[0].x, nullptr /*(int16 *)&DAT_004314ce*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433370,
+ (uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336a, nullptr /*(int16 *)&DAT_00431c4e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433372,
+ (uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336c, nullptr /*(int16 *)&polyTab2*/);
}
- y_uVar1 = (uint)(ushort)vertexCoordinates[0].y;
- y_uVar2 = (uint)(ushort)vertexCoordinates[1].y;
+ y_uVar1 = (uint32)(uint16)vertexCoordinates[0].y;
+ y_uVar2 = (uint32)(uint16)vertexCoordinates[1].y;
if (y_uVar2 < y_uVar1) {
- if ((int)y_uVar2 <= (int)clip_or_depth_DAT_00433444) {
+ if ((int32)y_uVar2 <= (int32)clip_or_depth_DAT_00433444) {
clip_or_depth_DAT_00433444 = y_uVar2;
}
- if ((int)y_DAT_00433448 <= (int)y_uVar1) {
+ if ((int32)y_DAT_00433448 <= (int32)y_uVar1) {
y_DAT_00433448 = y_uVar1;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[1].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[0].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433370,
- (uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336a);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433372,
- (uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336c);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[1].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[0].x, nullptr /*(int16 *)&DAT_0043188e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433370,
+ (uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336a, nullptr /*polyTab2 + 0x1e0*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433372,
+ (uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336c, nullptr /*(int16 *)&DAT_0043278e*/);
}
- y_uVar1 = (uint)(ushort)vertexCoordinates[1].y;
- y_uVar2 = (uint)(ushort)vertexCoordinates[2].y;
+ y_uVar1 = (uint32)(uint16)vertexCoordinates[1].y;
+ y_uVar2 = (uint32)(uint16)vertexCoordinates[2].y;
if (y_uVar1 < y_uVar2) {
- if ((int)y_uVar1 <= (int)clip_or_depth_DAT_00433444) {
+ if ((int32)y_uVar1 <= (int32)clip_or_depth_DAT_00433444) {
clip_or_depth_DAT_00433444 = y_uVar1;
}
- if ((int)y_DAT_00433448 <= (int)y_uVar2) {
+ if ((int32)y_DAT_00433448 <= (int32)y_uVar2) {
y_DAT_00433448 = y_uVar2;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[2].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[1].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433376,
- (uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433370);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433378,
- (uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433372);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[2].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[1].x, nullptr /*(int16 *)&DAT_004314ce*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433376,
+ (uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433370, nullptr /*(int16 *)&DAT_00431c4e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433378,
+ (uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433372, nullptr /*polyTab2*/);
}
- y_uVar1 = (uint)(ushort)vertexCoordinates[1].y;
- y_uVar2 = (uint)(ushort)vertexCoordinates[2].y;
+ y_uVar1 = (uint32)(uint16)vertexCoordinates[1].y;
+ y_uVar2 = (uint32)(uint16)vertexCoordinates[2].y;
if (y_uVar2 < y_uVar1) {
- if ((int)y_uVar2 <= (int)clip_or_depth_DAT_00433444) {
+ if ((int32)y_uVar2 <= (int32)clip_or_depth_DAT_00433444) {
clip_or_depth_DAT_00433444 = y_uVar2;
}
- if ((int)y_DAT_00433448 <= (int)y_uVar1) {
+ if ((int32)y_DAT_00433448 <= (int32)y_uVar1) {
y_DAT_00433448 = y_uVar1;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[2].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[1].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433376,
- (uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433370);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433378,
- (uint)(ushort)vertexCoordinates[1].y, (uint)tex_coords_maybe_DAT_00433372);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[2].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[1].x, nullptr /*(int16 *)&DAT_0043188e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433376,
+ (uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433370, nullptr /*polyTab2 + 0x1e0*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433378,
+ (uint32)(uint16)vertexCoordinates[1].y, (uint32)tex_coords_maybe_DAT_00433372, nullptr /*(int16 *)&DAT_0043278e*/);
}
- y_uVar1 = (uint)(ushort)vertexCoordinates[2].y;
- y_uVar2 = (uint)(ushort)vertexCoordinates[0].y;
+ y_uVar1 = (uint32)(uint16)vertexCoordinates[2].y;
+ y_uVar2 = (uint32)(uint16)vertexCoordinates[0].y;
if (y_uVar1 < y_uVar2) {
- if ((int)y_uVar1 <= (int)clip_or_depth_DAT_00433444) {
+ if ((int32)y_uVar1 <= (int32)clip_or_depth_DAT_00433444) {
clip_or_depth_DAT_00433444 = y_uVar1;
}
- if ((int)y_DAT_00433448 <= (int)y_uVar2) {
+ if ((int32)y_DAT_00433448 <= (int32)y_uVar2) {
y_DAT_00433448 = y_uVar2;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[0].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[2].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336a,
- (uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433376);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336c,
- (uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433378);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[0].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[2].x, nullptr /*(int16 *)&DAT_004314ce*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336a,
+ (uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433376, nullptr /*(int16 *)&DAT_00431c4e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336c,
+ (uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433378, nullptr /*polyTab2*/);
}
- y_uVar1 = (uint)(ushort)vertexCoordinates[2].y;
- y_uVar2 = (uint)(ushort)vertexCoordinates[0].y;
+ y_uVar1 = (uint32)(uint16)vertexCoordinates[2].y;
+ y_uVar2 = (uint32)(uint16)vertexCoordinates[0].y;
if (y_uVar2 < y_uVar1) {
- if ((int)y_uVar2 <= (int)clip_or_depth_DAT_00433444) {
+ if ((int32)y_uVar2 <= (int32)clip_or_depth_DAT_00433444) {
clip_or_depth_DAT_00433444 = y_uVar2;
}
- if ((int)y_DAT_00433448 <= (int)y_uVar1) {
+ if ((int32)y_DAT_00433448 <= (int32)y_uVar1) {
y_DAT_00433448 = y_uVar1;
}
- vertices_FUN_00420fad(y_uVar2, (uint)(ushort)vertexCoordinates[0].x, y_uVar1,
- (uint)(ushort)vertexCoordinates[2].x);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336a,
- (uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433376);
- vertices_FUN_00420fad((uint)(ushort)vertexCoordinates[0].y, (uint)tex_coords_maybe_DAT_0043336c,
- (uint)(ushort)vertexCoordinates[2].y, (uint)tex_coords_maybe_DAT_00433378);
+ vertices_FUN_00420fad(y_uVar2, (uint32)(uint16)vertexCoordinates[0].x, y_uVar1,
+ (uint32)(uint16)vertexCoordinates[2].x, nullptr /*(int16 *)&DAT_0043188e*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336a,
+ (uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433376, nullptr /*polyTab2 + 0x1e0*/);
+ vertices_FUN_00420fad((uint32)(uint16)vertexCoordinates[0].y, (uint32)tex_coords_maybe_DAT_0043336c,
+ (uint32)(uint16)vertexCoordinates[2].y, (uint32)tex_coords_maybe_DAT_00433378, nullptr /*(int16 *)&DAT_0043278e*/);
}
- return;
}
-void Holomap::holomap_surface_load_FUN_0042194d(Vertex *vertexCoordinates, int y_1, short param_2, uint8* holomapSurfaceImgOutPtr) {
+void Holomap::holomap_surface_load_FUN_0042194d(Vertex *vertexCoordinates, int32 y_1, int16 param_2, uint8* holomapSurfaceImgOutPtr) {
uint8* holomapsurfaceBufferOffsetPosX = (uint8*)_engine->frontVideoBuffer.getBasePtr(0, y_1);
uint8* holomapSurfaceOutPtr = holomapSurfaceImgOutPtr;
- short height = (short)(param_2 - (short)y_1) + 1;
+ int16 height = (int16)(param_2 - (int16)y_1) + 1;
byte* holomap_offset_X_DAT_00433440 = (byte*)&vertexCoordinates[64].x + y_1;
- for (short y = 0; y < height; ++y) {
+ for (int16 y = 0; y < height; ++y) {
uint8* holomapSurfaceOutPos = holomapSurfaceOutPtr;
- int iVar1 = (int)*holomap_offset_X_DAT_00433440;
+ int32 iVar1 = (int32)*holomap_offset_X_DAT_00433440;
uint8 *puVar6 = (uint8 *)(holomapsurfaceBufferOffsetPosX + iVar1);
- int iVar3 = holomap_offset_X_DAT_00433440[480] - iVar1;
+ int32 iVar3 = holomap_offset_X_DAT_00433440[480] - iVar1;
if (iVar3 != 0 && iVar1 <= holomap_offset_X_DAT_00433440[480]) {
- iVar1 = (int)(1 - ((uint)(ushort)holomap_offset_X_DAT_00433440[1440] -
- (uint)(ushort)holomap_offset_X_DAT_00433440[2400])) /
+ iVar1 = (int32)(1 - ((uint32)(uint16)holomap_offset_X_DAT_00433440[1440] -
+ (uint32)(uint16)holomap_offset_X_DAT_00433440[2400])) /
iVar3;
- uint uVar5 = (uint)(ushort)holomap_offset_X_DAT_00433440[960];
- int iVar2 = (int)(((ushort)holomap_offset_X_DAT_00433440[1920] - uVar5) + 1) / iVar3;
- ushort uVar4 = holomap_offset_X_DAT_00433440[1440];
- // short holomap_maybe_DAT_00433430 = iVar2;
- // short holomap_maybe_DAT_00433434 = iVar1;
- for (int i = 0; i < iVar3; ++i) {
- *puVar6 = *(uint8 *)((uVar4 & 0xffffff00 | uVar5 >> 8) + holomapSurfaceOutPos);
+ uint32 uVar5 = (uint32)(uint16)holomap_offset_X_DAT_00433440[960];
+ int32 iVar2 = (int32)(((uint16)holomap_offset_X_DAT_00433440[1920] - uVar5) + 1) / iVar3;
+ uint16 uVar4 = holomap_offset_X_DAT_00433440[1440];
+ // int16 holomap_maybe_DAT_00433430 = iVar2;
+ // int16 holomap_maybe_DAT_00433434 = iVar1;
+ for (int32 i = 0; i < iVar3; ++i) {
+ *puVar6 = *(uint8 *)(((uVar4 & 0xffffff00) | uVar5 >> 8) + holomapSurfaceOutPos);
puVar6 = puVar6 + 1;
- uVar5 = (uint)(ushort)((short)uVar5 + (short)iVar2);
- uVar4 = ((ushort)(uVar4 & 0xffffff00) | uVar4 & 0xff) + (short)iVar1;
+ uVar5 = (uint32)(uint16)((int16)uVar5 + (int16)iVar2);
+ uVar4 = ((uint16)(uVar4 & 0xffffff00) | (uVar4 & 0xff)) + (int16)iVar1;
}
}
holomapsurfaceBufferOffsetPosX += _engine->frontVideoBuffer.w;
holomap_offset_X_DAT_00433440 = holomap_offset_X_DAT_00433440 + 1;
}
}
-#endif
void Holomap::renderHolomapSurfacePolygons() {
prepareHolomapPolygons();
for (int32 i = 0; i < ARRAYSIZE(_holomapSort); ++i) {
-#if 0
const HolomapProjectedPos &pos1 = _projectedSurfacePositions[_holomapSort[i].projectedPosIdx + 0];
const HolomapProjectedPos &pos2 = _projectedSurfacePositions[_holomapSort[i].projectedPosIdx + 33];
const HolomapProjectedPos &pos3 = _projectedSurfacePositions[_holomapSort[i].projectedPosIdx + 1];
@@ -424,7 +418,7 @@ void Holomap::renderHolomapSurfacePolygons() {
tex_coords_maybe_DAT_00433376 = pos3.unk1;
tex_coords_maybe_DAT_00433378 = pos3.unk2;
vertices_FUN_00421010(vertexCoordinates);
- holomap_surface_load_FUN_0042194d(vertexCoordinates, clip_or_depth_DAT_00433444,(short)y_DAT_00433448,_engine->_resources->holomapImagePtr);
+ holomap_surface_load_FUN_0042194d(vertexCoordinates, clip_or_depth_DAT_00433444,(int16)y_DAT_00433448,_engine->_resources->holomapImagePtr);
}
const HolomapProjectedPos &pos4 = _projectedSurfacePositions[_holomapSort[i].projectedPosIdx + 33];
const HolomapProjectedPos &pos5 = _projectedSurfacePositions[_holomapSort[i].projectedPosIdx + 34];
@@ -444,9 +438,8 @@ void Holomap::renderHolomapSurfacePolygons() {
tex_coords_maybe_DAT_00433376 = pos6.unk1;
tex_coords_maybe_DAT_00433378 = pos6.unk2;
vertices_FUN_00421010(vertexCoordinates);
- holomap_surface_load_FUN_0042194d(vertexCoordinates, clip_or_depth_DAT_00433444,(short)y_DAT_00433448,_engine->_resources->holomapImagePtr);
+ holomap_surface_load_FUN_0042194d(vertexCoordinates, clip_or_depth_DAT_00433444,(int16)y_DAT_00433448,_engine->_resources->holomapImagePtr);
}
-#endif
}
}
@@ -518,9 +511,9 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
uint8 *modelPtr = nullptr;
HQR::getAllocEntry(&modelPtr, Resources::HQR_RESS_FILE, data.getModel());
Renderer::prepareIsoModel(modelPtr);
- int frameNumber = 0;
- int frameTime = _engine->lbaTime;
- int trajAnimFrameIdx = 0;
+ int16 frameNumber = 0;
+ int32 frameTime = _engine->lbaTime;
+ int16 trajAnimFrameIdx = 0;
int32 local18 = 0;
bool fadeInPalette = true;
@@ -634,7 +627,7 @@ void Holomap::renderLocations(int xRot, int yRot, int zRot, bool lower) {
_engine->_renderer->baseRotPosY = 0;
_engine->_renderer->baseRotPosZ = 9500;
_engine->_renderer->getBaseRotationPosition(xpos1, ypos1, zpos1);
- int zpos1_copy2 = _engine->_renderer->destZ;
+ int32 zpos1_copy2 = _engine->_renderer->destZ;
_engine->_renderer->getBaseRotationPosition(xpos2, ypos2, zpos2);
if (lower) {
if (zpos1_copy2 <= _engine->_renderer->destZ) {
@@ -700,7 +693,7 @@ void Holomap::processHolomap() {
_engine->_text->setFontCrossColor(COLOR_9);
_engine->_renderer->setCameraPosition(_engine->width() / 2, 190, 128, 1024, 1024);
- int currentLocation = _engine->_scene->currentSceneIdx;
+ int32 currentLocation = _engine->_scene->currentSceneIdx;
_engine->_text->drawHolomapLocation(_locations[currentLocation].textIndex);
_engine->flip();
diff --git a/engines/twine/holomap.h b/engines/twine/holomap.h
index 5ca58b2020..730547d503 100644
--- a/engines/twine/holomap.h
+++ b/engines/twine/holomap.h
@@ -51,10 +51,10 @@ private:
uint16 tex_coords_maybe_DAT_00433376 = 0;
uint16 tex_coords_maybe_DAT_00433378 = 0;
- void holomap_surface_load_FUN_0042194d(Vertex *vertexCoordinates, int y_1, short param_2, uint8* holomapSurfaceImgOutPtr);
+ void holomap_surface_load_FUN_0042194d(Vertex *vertexCoordinates, int32 y_1, int16 param_2, uint8* holomapSurfaceImgOutPtr);
bool vertices_FUN_00423ebb(const Vertex *vertices) const;
void vertices_FUN_00421010(Vertex *vertexCoordinates);
- void vertices_FUN_00420fad(int y1, int x1, int y2, int x2);
+ void vertices_FUN_00420fad(int32 y1, int32 x1, int32 y2, int32 x2, int16 *vertexCoordinatePtr);
struct Location {
uint16 x = 0;
More information about the Scummvm-git-logs
mailing list