[Scummvm-git-logs] scummvm master -> 6751410b9176592d25ff19ddc78de8b0b59b90fb
mgerhardy
martin.gerhardy at gmail.com
Sun Feb 21 10:34:41 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:
6751410b91 TWINE: missing holomap partial palette update
Commit: 6751410b9176592d25ff19ddc78de8b0b59b90fb
https://github.com/scummvm/scummvm/commit/6751410b9176592d25ff19ddc78de8b0b59b90fb
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-02-21T11:30:15+01:00
Commit Message:
TWINE: missing holomap partial palette update
Changed paths:
engines/twine/holomap.cpp
engines/twine/twine.cpp
engines/twine/twine.h
diff --git a/engines/twine/holomap.cpp b/engines/twine/holomap.cpp
index e89b7d2533..735ae1bda2 100644
--- a/engines/twine/holomap.cpp
+++ b/engines/twine/holomap.cpp
@@ -101,10 +101,9 @@ void Holomap::loadHolomapGFX() {
paletteHolomap[i + 2] = _engine->_screens->palette[j + 2];
}
- holomapPaletteIndex = 0;
-
prepareHolomapProjectedPositions();
prepareHolomapSurface();
+ holomapPaletteIndex = 0;
}
static int sortHolomapSurfaceCoordsByDepth(const void *a1, const void *a2) {
@@ -351,8 +350,8 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
int32 frameTime = _engine->lbaTime;
int16 trajAnimFrameIdx = 0;
- int32 local18 = 0;
- bool fadeInPalette = true;
+ //int32 local18 = 0;
+ //bool fadeInPalette = true;
_engine->_input->enableKeyMap(holomapKeyMapId);
for (;;) {
ScopedFPS scopedFps;
@@ -361,13 +360,20 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
break;
}
+#if 0
if (!fadeInPalette && local18 < _engine->lbaTime) {
- // TODO: setPalette2(576 / 3, 96 / 3, (int)&paletteHolomap[3 * holomapPaletteIndex++]);
- if (holomapPaletteIndex == 96 / 3) {
+ const Common::Rect rect(170, 50, 470, 330);
+ _engine->_interface->setClip(rect);
+ _engine->setPalette(192, 32, &paletteHolomap[3 * holomapPaletteIndex++]);
+ _engine->copyBlockPhys(rect);
+ _engine->_interface->resetClip();
+ if (holomapPaletteIndex == 32) {
holomapPaletteIndex = 0;
}
local18 = _engine->lbaTime + 3;
}
+#endif
+
const int16 newAngle = move.getRealAngle(_engine->lbaTime);
if (move.numOfStep == 0) {
_engine->_movements->setActorAngleSafe(ANGLE_0, -ANGLE_90, 500, &move);
@@ -406,14 +412,15 @@ void Holomap::drawHolomapTrajectory(int32 trajectoryIndex) {
renderHolomapModel(_engine->_resources->holomapPointModelPtr, modelX, modelY, 0);
trajAnimFrameIdx = trajAnimFrameIdx + 1;
}
+#if 0
if (fadeInPalette) {
fadeInPalette = false;
_engine->_screens->fadeToPal(_engine->_screens->paletteRGBA);
}
+#endif
}
_engine->_screens->fadeToBlack(_engine->_screens->paletteRGBA);
_engine->_screens->fadeIn(_engine->_screens->paletteRGBA);
- //_engine->setPalette(_engine->_screens->paletteRGBA);
_engine->_gameState->initEngineProjections();
_engine->_interface->loadClip();
@@ -538,6 +545,8 @@ void Holomap::processHolomap() {
int32 yRot = ClampAngle(_locations[currentLocation].y);
bool rotate = false;
bool redraw = true;
+ // int local18 = 0;
+ // bool fadeInPalette = true;
_engine->_input->enableKeyMap(holomapKeyMapId);
for (;;) {
FrameMarker frame;
@@ -592,6 +601,20 @@ void Holomap::processHolomap() {
redraw = true;
}
+#if 0
+ if (!fadeInPalette && local18 < _engine->lbaTime) {
+ const Common::Rect rect(170, 50, 470, 330);
+ _engine->_interface->setClip(rect);
+ _engine->setPalette(192, 32, &paletteHolomap[3 * holomapPaletteIndex++]);
+ _engine->copyBlockPhys(rect);
+ _engine->_interface->resetClip();
+ if (holomapPaletteIndex == 32) {
+ holomapPaletteIndex = 0;
+ }
+ local18 = _engine->lbaTime + 3;
+ }
+#endif
+
if (redraw) {
redraw = false;
const Common::Rect rect(170, 0, 470, 330);
@@ -623,10 +646,17 @@ void Holomap::processHolomap() {
//_engine->_screens->copyScreen(_engine->workVideoBuffer, _engine->frontVideoBuffer);
//_engine->flip();
+#if 0
+ if (fadeInPalette) {
+ fadeInPalette = false;
+ _engine->_screens->fadeToPal(_engine->_screens->paletteRGBA);
+ }
+#endif
}
_engine->_text->drawTextBoxBackground = true;
_engine->_screens->fadeToBlack(_engine->_screens->paletteRGBA);
+ _engine->_screens->fadeIn(_engine->_screens->paletteRGBA);
_engine->_scene->alphaLight = alphaLightTmp;
_engine->_scene->betaLight = betaLightTmp;
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 022e90b881..7e0be17bf3 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -1087,6 +1087,11 @@ void TwinEEngine::setPalette(const uint32 *palette) {
flip();
}
+void TwinEEngine::setPalette(uint8 startColor, uint8 numColors, const byte *palette) {
+ g_system->getPaletteManager()->setPalette(palette, startColor, numColors);
+ flip();
+}
+
void TwinEEngine::flip() {
g_system->copyRectToScreen(frontVideoBuffer.getPixels(), frontVideoBuffer.pitch, 0, 0, frontVideoBuffer.w, frontVideoBuffer.h);
g_system->updateScreen();
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index e375fdbca7..81b35f01c2 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -317,9 +317,17 @@ public:
/**
* Set a new palette in the SDL screen buffer
- * @param palette palette to set
+ * @param palette palette to set in RGBA
*/
void setPalette(const uint32 *palette);
+ /**
+ * @brief Set the Palette object
+ *
+ * @param startColor the first palette entry to be updated
+ * @param numColors the number of palette entries to be updated
+ * @param palette palette to set in RGB
+ */
+ void setPalette(uint8 startColor, uint8 numColors, const byte *palette);
/** Blit surface in the screen */
void flip();
More information about the Scummvm-git-logs
mailing list