[Scummvm-git-logs] scummvm master -> 6c7f84df70c75bc5eac178b09d47248a4a740153
mgerhardy
martin.gerhardy at gmail.com
Sun Jan 24 15:26:00 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:
6c7f84df70 TWINE: cleanup in holomap code
Commit: 6c7f84df70c75bc5eac178b09d47248a4a740153
https://github.com/scummvm/scummvm/commit/6c7f84df70c75bc5eac178b09d47248a4a740153
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-01-24T16:24:39+01:00
Commit Message:
TWINE: cleanup in 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 51275c0184..dbf8ce6f34 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -100,7 +100,7 @@ void Holomap::loadHolomapGFX() {
paletteHolomap[i + 2] = _engine->_screens->palette[j + 2];
}
- needToLoadHolomapGFX = 0;
+ holomapPaletteIndex = 0;
}
static int sortHolomapSurfaceCoordsByDepth(const void *a1, const void *a2) {
@@ -210,19 +210,12 @@ void Holomap::drawHolomapText(int32 centerx, int32 top, const char *title) {
_engine->_text->drawText(x, y, title);
}
-void Holomap::renderHolomapModel(byte *mdl_1, int32 x_2, int32 y_3, int32 zPos) {
- _engine->_renderer->setBaseRotation(x_2, y_3, 0);
+void Holomap::renderHolomapModel(const uint8 *bodyPtr, int32 x, int32 y, int32 zPos) {
+ _engine->_renderer->setBaseRotation(x, y, 0);
_engine->_renderer->getBaseRotationPosition(0, 0, zPos + 1000);
- const int32 iVar1 = _engine->_renderer->destZ;
- const int32 y_2 = _engine->_renderer->destY;
- const int32 x_1 = _engine->_renderer->destX;
- int32 trajRotPosX = 0; // TODO DAT_0043f706 4th short value of the trajectory data TrajectoryData::x
- int32 trajRotPosY = 0; // TODO DAT_0043f710 5th short value of the trajectory data TrajectoryData::y
- int32 trajRotPosZ = 0; // TODO _DAT_0043f7f8 6th short value of the trajectory data TrajectoryData::z
- _engine->_renderer->setCameraAngle(0, 0, 0, trajRotPosX, trajRotPosY, trajRotPosZ, 5300);
- _engine->_renderer->getBaseRotationPosition(x_1, y_2, iVar1);
+ _engine->_renderer->getBaseRotationPosition(_engine->_renderer->destX, _engine->_renderer->destY, _engine->_renderer->destZ);
_engine->_interface->resetClip();
- _engine->_renderer->renderIsoModel(x_1, y_2, iVar1, x_2, y_3, 0, mdl_1);
+ _engine->_renderer->renderIsoModel(_engine->_renderer->destX, _engine->_renderer->destY, _engine->_renderer->destZ, x, y, 0, bodyPtr);
}
Holomap::TrajectoryData Holomap::loadTrajectoryData(int32 trajectoryIdx) {
@@ -250,15 +243,22 @@ Holomap::TrajectoryData Holomap::loadTrajectoryData(int32 trajectoryIdx) {
void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
debug("Draw trajectory index %i", trajectoryIndex);
+
+ _engine->_interface->resetClip();
+ _engine->_screens->clearScreen();
+ _engine->setPalette(_engine->_screens->paletteRGBA);
+
+ loadHolomapGFX();
+
const Holomap::TrajectoryData &data = loadTrajectoryData(trajectoryIndex);
ScopedEngineFreeze timeFreeze(_engine);
ScopedKeyMap holomapKeymap(_engine, holomapKeyMapId);
_engine->_renderer->setCameraPosition(400, 240, 128, 1024, 1024);
- loadHolomapGFX();
renderHolomapSurfacePolygons();
const Location &loc = _locations[data.locationIdx];
+ _engine->_renderer->setCameraAngle(0, 0, 0, data.x, data.y, data.z, 5300);
renderHolomapModel(_engine->_resources->holomapPointModelPtr, loc.x, loc.y, 0);
_engine->flip();
@@ -268,9 +268,13 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
HQR::getAllocEntry(&animPtr, Resources::HQR_RESS_FILE, data.getAnimation());
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;
+
+ int32 local18 = 0;
+ bool fadeInPalette = true;
for (;;) {
ScopedFPS scopedFps;
_engine->readKeys();
@@ -278,19 +282,16 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
break;
}
-#if 0
- // TODO
- if (!v28) {
- setPalette2(576 / 3, 96 / 3, (int)&paletteHolomap[3 * needToLoadHolomapGFX++]);
- if (needToLoadHolomapGFX == 96 / 3) {
- needToLoadHolomapGFX = 0;
+ if (!fadeInPalette && local18 < _engine->lbaTime) {
+ // TODO: setPalette2(576 / 3, 96 / 3, (int)&paletteHolomap[3 * holomapPaletteIndex++]);
+ if (holomapPaletteIndex == 96 / 3) {
+ holomapPaletteIndex = 0;
}
+ local18 = _engine->lbaTime + 3;
}
-#endif
const int16 newAngle = move.getRealAngle(_engine->lbaTime);
if (move.numOfStep == 0) {
- const int startAngle = ANGLE_0;
- _engine->_movements->setActorAngleSafe(startAngle, startAngle - ANGLE_90, 500, &move);
+ _engine->_movements->setActorAngleSafe(ANGLE_0, -ANGLE_90, 500, &move);
}
if (_engine->_animations->setModelAnimation(frameNumber, animPtr, modelPtr, &animData)) {
@@ -300,40 +301,36 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
}
}
_engine->_renderer->setCameraPosition(100, 400, 128, 900, 900);
- _engine->_renderer->setCameraAngle(0, 0, 0, 0x3c, 0x80, 0, 30000);
- _engine->_renderer->setLightVector(0xffffffc4, 0x80, 0);
- _engine->_interface->drawSplittedBox(Common::Rect(0, 200, 199, 0x1df), 0);
+ _engine->_renderer->setCameraAngle(0, 0, 0, 60, 128, 0, 30000);
+ _engine->_renderer->setLightVector(0xffffffc4, 128, 0);
+ const Common::Rect rect(0, 200, 199, 479);
+ _engine->_interface->drawSplittedBox(rect, 0);
_engine->_renderer->renderIsoModel(0, 0, 0, 0, newAngle, 0, modelPtr);
- _engine->copyBlockPhys(0, 200, 199, 0x1df);
+ _engine->copyBlockPhys(rect);
_engine->_renderer->setCameraPosition(400, 240, 128, 1024, 1024);
- const int32 trajRotPosX = data.x; // DAT_0043f706
- const int32 trajRotPosY = data.y; // DAT_0043f710
- const int32 trajRotPosZ = data.z; // _DAT_0043f7f8
- _engine->_renderer->setCameraAngle(0, 0, 0, trajRotPosX, trajRotPosY, trajRotPosZ, 0x14b4);
- _engine->_renderer->setLightVector(trajRotPosX, trajRotPosY, 0);
+ _engine->_renderer->setCameraAngle(0, 0, 0, data.x, data.y, data.z, 5300);
+ _engine->_renderer->setLightVector(data.x, data.y, 0);
if (frameTime + 40 <= _engine->lbaTime) {
frameTime = _engine->lbaTime;
- int model_x;
- int model_y;
+ int32 modelX;
+ int32 modelY;
if (trajAnimFrameIdx < data.numAnimFrames) {
- model_x = data.positions[trajAnimFrameIdx].x;
- model_y = data.positions[trajAnimFrameIdx].y;
+ modelX = data.positions[trajAnimFrameIdx].x;
+ modelY = data.positions[trajAnimFrameIdx].y;
} else {
if (data.numAnimFrames < trajAnimFrameIdx) {
break;
}
- model_x = _locations[data.trajLocationIdx].x;
- model_y = _locations[data.trajLocationIdx].y;
+ modelX = _locations[data.trajLocationIdx].x;
+ modelY = _locations[data.trajLocationIdx].y;
}
- renderHolomapModel(_engine->_resources->holomapPointModelPtr, model_x, model_y, 0);
+ renderHolomapModel(_engine->_resources->holomapPointModelPtr, modelX, modelY, 0);
trajAnimFrameIdx = trajAnimFrameIdx + 1;
}
-#if 0
- if (v28) {
- v28 = 0;
- _engine->_screens->fadeToPal((int)palette);
+ if (fadeInPalette) {
+ fadeInPalette = false;
+ _engine->_screens->fadeToPal(_engine->_screens->paletteRGBA);
}
-#endif
}
_engine->_screens->fadeToBlack(_engine->_screens->paletteRGBA);
// TODO: flip()?
diff --git a/engines/twine/holomap.h b/engines/twine/holomap.h
index 830b9bef84..6224992a22 100644
--- a/engines/twine/holomap.h
+++ b/engines/twine/holomap.h
@@ -103,7 +103,7 @@ private:
int32 _numLocations = 0;
Location _locations[NUM_LOCATIONS];
- int32 needToLoadHolomapGFX = 0;
+ int32 holomapPaletteIndex = 0;
uint8 paletteHolomap[NUMOFCOLORS * 3]{0};
void drawHolomapText(int32 centerx, int32 top, const char *title);
@@ -113,7 +113,7 @@ private:
void renderLocations(int xRot, int yRot, int zRot, bool lower);
TrajectoryData loadTrajectoryData(int32 trajectoryIdx);
- void renderHolomapModel(byte *mdl_1, int32 x_2, int32 y_3, int32 zPos);
+ void renderHolomapModel(const uint8 *bodyPtr, int32 x, int32 y, int32 zPos);
void prepareHolomapSurface();
void renderHolomapSurfacePolygons();
More information about the Scummvm-git-logs
mailing list