[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