[Scummvm-git-logs] scummvm master -> 04e7afea1af4f7e8675b4f5c5fce97318f3a1d2a

mgerhardy noreply at scummvm.org
Fri Dec 31 10:54:26 UTC 2021


This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
66c444d340 TWINE: fixed missing dynamic flag for AnimFrameReached
f05612a0ed TWINE: same result but different define
2c90f1e37d TWINE: debug logging for script execution
41bb954435 TWINE: renamed member for palette fade handling
593b7d068d TWINE: added debug commands to toggle the dark palette mode
04e7afea1a TWINE: replaced magic numbers


Commit: 66c444d340023b3205e123b676585b3e985a4847
    https://github.com/scummvm/scummvm/commit/66c444d340023b3205e123b676585b3e985a4847
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:48:31+01:00

Commit Message:
TWINE: fixed missing dynamic flag for AnimFrameReached

Changed paths:
    engines/twine/scene/animations.cpp


diff --git a/engines/twine/scene/animations.cpp b/engines/twine/scene/animations.cpp
index 453472f00e2..c9d16f24b0b 100644
--- a/engines/twine/scene/animations.cpp
+++ b/engines/twine/scene/animations.cpp
@@ -589,6 +589,7 @@ void Animations::processActorAnimations(int32 actorIdx) {
 
 			if (keyFramePassed) {
 				actor->_animPosition++;
+				actor->_dynamicFlags.bAnimFrameReached = 1;
 
 				// if actor have animation actions to process
 				processAnimActions(actorIdx);


Commit: f05612a0ed76cf6bc1b00e73bd33ca18d89cf887
    https://github.com/scummvm/scummvm/commit/f05612a0ed76cf6bc1b00e73bd33ca18d89cf887
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:48:31+01:00

Commit Message:
TWINE: same result but different define

Changed paths:
    engines/twine/scene/scene.cpp


diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 00b5f885686..d0b19e47016 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -753,7 +753,7 @@ void Scene::processActorZones(int32 actorIdx) {
 					destPos.z += _engine->_movements->_processActor.z;
 
 					if (destPos.x >= 0 && destPos.z >= 0 && destPos.x <= SCENE_SIZE_MAX && destPos.z <= SCENE_SIZE_MAX) {
-						if (_engine->_grid->getBrickShape(destPos.x, actor->_pos.y + ANGLE_90, destPos.z) != ShapeType::kNone) {
+						if (_engine->_grid->getBrickShape(destPos.x, actor->_pos.y + BRICK_HEIGHT, destPos.z) != ShapeType::kNone) {
 							_currentActorInZone = true;
 							if (actor->_pos.y >= ABS(zone->mins.y + zone->maxs.y) / 2) {
 								_engine->_animations->initAnim(AnimationTypes::kTopLadder, AnimType::kAnimationAllThen, AnimationTypes::kStanding, actorIdx); // reached end of ladder


Commit: 2c90f1e37db6509914f3f0cb0f3d96702e483051
    https://github.com/scummvm/scummvm/commit/2c90f1e37db6509914f3f0cb0f3d96702e483051
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:48:31+01:00

Commit Message:
TWINE: debug logging for script execution

Changed paths:
    engines/twine/script/script_life_v1.cpp
    engines/twine/script/script_move_v1.cpp


diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index af9f66a705b..e1b6638b5a5 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -683,8 +683,7 @@ static int32 lSET_DIRMODE(TwinEEngine *engine, LifeScriptContext &ctx) {
 	const int32 controlMode = ctx.stream.readByte();
 
 	ctx.actor->_controlMode = (ControlMode)controlMode;
-	// TODO: should ControlMode::kSameXZ be taken into account, too - see processSameXZAction
-	if (ctx.actor->_controlMode == ControlMode::kFollow || ctx.actor->_controlMode == ControlMode::kFollow2) {
+	if (ctx.actor->_controlMode == ControlMode::kFollow) {
 		ctx.actor->_followedActor = ctx.stream.readByte();
 	}
 
@@ -1865,6 +1864,7 @@ void ScriptLife::processLifeScript(int32 actorIdx) {
 		const byte scriptOpcode = ctx.stream.readByte();
 		if (scriptOpcode < ARRAYSIZE(function_map)) {
 			end = function_map[scriptOpcode].function(_engine, ctx);
+			debug(3, "life script %s for actor %i (%i)", function_map[scriptOpcode].name, actorIdx, end);
 		} else {
 			error("Actor %d with wrong offset/opcode - Offset: %d/%d (opcode: %i)", actorIdx, (int)ctx.stream.pos() - 1, (int)ctx.stream.size(), scriptOpcode);
 		}
diff --git a/engines/twine/script/script_move_v1.cpp b/engines/twine/script/script_move_v1.cpp
index 6285aac90ee..3fdeca543c6 100644
--- a/engines/twine/script/script_move_v1.cpp
+++ b/engines/twine/script/script_move_v1.cpp
@@ -700,6 +700,7 @@ void ScriptMove::processMoveScript(int32 actorIdx) {
 		const byte scriptOpcode = ctx.stream.readByte();
 		if (scriptOpcode < ARRAYSIZE(function_map)) {
 			end = function_map[scriptOpcode].function(_engine, ctx);
+			debug(3, "move script %s for actor %i (%i)", function_map[scriptOpcode].name, actorIdx, end);
 		} else {
 			error("Actor %d with wrong offset/opcode - Offset: %d/%d (opcode: %u)", actorIdx, (int)ctx.stream.pos() - 1, (int)ctx.stream.size(), scriptOpcode);
 		}


Commit: 41bb9544350307fdbe9cd2d77de9a17c98dbd078
    https://github.com/scummvm/scummvm/commit/41bb9544350307fdbe9cd2d77de9a17c98dbd078
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:48:32+01:00

Commit Message:
TWINE: renamed member for palette fade handling

Changed paths:
    engines/twine/renderer/redraw.cpp
    engines/twine/renderer/screens.h
    engines/twine/scene/scene.cpp
    engines/twine/script/script_life_v1.cpp
    engines/twine/twine.cpp


diff --git a/engines/twine/renderer/redraw.cpp b/engines/twine/renderer/redraw.cpp
index ac1a33ba56d..930a146d3d9 100644
--- a/engines/twine/renderer/redraw.cpp
+++ b/engines/twine/renderer/redraw.cpp
@@ -698,13 +698,13 @@ void Redraw::redrawEngineActions(bool bgRedraw) {
 		flipRedrawAreas();
 	}
 
-	if (_engine->_screens->_lockPalette) {
+	if (_engine->_screens->_fadePalette) {
 		if (_engine->_screens->_useAlternatePalette) {
 			_engine->_screens->fadeToPal(_engine->_screens->_paletteRGBA);
 		} else {
 			_engine->_screens->fadeToPal(_engine->_screens->_mainPaletteRGBA);
 		}
-		_engine->_screens->_lockPalette = false;
+		_engine->_screens->_fadePalette = false;
 	}
 
 	if (_inSceneryView) {
diff --git a/engines/twine/renderer/screens.h b/engines/twine/renderer/screens.h
index 8dac28441cd..ae8516397dc 100644
--- a/engines/twine/renderer/screens.h
+++ b/engines/twine/renderer/screens.h
@@ -60,7 +60,7 @@ public:
 	bool _palResetted = false;
 
 	/** flag to check if the main flag is locked */
-	bool _lockPalette = false;
+	bool _fadePalette = false;
 
 	/** flag to check if we are using a different palette than the main one */
 	bool _useAlternatePalette = false;
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index d0b19e47016..a78771b2219 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -570,7 +570,7 @@ void Scene::changeScene() {
 	_engine->_movements->_lastJoyFlag = true;
 	_engine->_grid->_useCellingGrid = -1;
 	_engine->_grid->_cellingGridIdx = -1;
-	_engine->_screens->_lockPalette = false;
+	_engine->_screens->_fadePalette = false;
 
 	_needChangeScene = SCENE_CEILING_GRID_FADE_1;
 	_enableGridTileRendering = true;
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index e1b6638b5a5..2ec33bd986e 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1097,12 +1097,12 @@ static int32 lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
 		engine->_screens->fadeToBlack(engine->_screens->_mainPaletteRGBA);
 		engine->initSceneryView();
 		engine->_screens->setBackPal();
-		engine->_screens->_lockPalette = true;
+		engine->_screens->_fadePalette = true;
 	} else if (!zoomScreen && engine->_redraw->_inSceneryView) {
 		engine->_screens->fadeToBlack(engine->_screens->_mainPaletteRGBA);
 		engine->exitSceneryView();
 		engine->_screens->setBackPal();
-		engine->_screens->_lockPalette = true;
+		engine->_screens->_fadePalette = true;
 		engine->_redraw->_reqBgRedraw = true;
 	}
 
@@ -1542,15 +1542,15 @@ static int32 lASK_CHOICE_OBJ(TwinEEngine *engine, LifeScriptContext &ctx) {
 }
 
 /**
- * Set a dark palette.
+ * Set a dark palette (in the museum).
  * @note Opcode @c 0x5C
  */
 static int32 lSET_DARK_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
 	ScopedEngineFreeze scoped(engine);
-	// TODO: allocation in the game frame... cache it in Resource class
 	HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_DARKPAL);
-	if (!engine->_screens->_lockPalette) {
-		engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
+	engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
+	if (!engine->_screens->_fadePalette) {
+		// set the palette hard if it should not get faded
 		engine->setPalette(engine->_screens->_paletteRGBA);
 	}
 	engine->_screens->_useAlternatePalette = true;
@@ -1563,7 +1563,8 @@ static int32 lSET_DARK_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
  */
 static int32 lSET_NORMAL_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
 	engine->_screens->_useAlternatePalette = false;
-	if (!engine->_screens->_lockPalette) {
+	if (!engine->_screens->_fadePalette) {
+		// reset the palette hard if it should not get faded
 		engine->setPalette(engine->_screens->_mainPaletteRGBA);
 	}
 	return 0;
diff --git a/engines/twine/twine.cpp b/engines/twine/twine.cpp
index 1ee158fa704..98d6112e90e 100644
--- a/engines/twine/twine.cpp
+++ b/engines/twine/twine.cpp
@@ -595,8 +595,9 @@ void TwinEEngine::processBookOfBu() {
 	_text->initSceneTextBank();
 	_screens->fadeToBlack(_screens->_paletteRGBACustom);
 	_screens->clearScreen();
+	// TODO: the palette handling here looks wrong
 	setPalette(_screens->_paletteRGBA);
-	_screens->_lockPalette = true;
+	_screens->_fadePalette = true;
 }
 
 void TwinEEngine::processBonusList() {
@@ -619,7 +620,7 @@ void TwinEEngine::processInventoryAction() {
 	switch (_loopInventoryItem) {
 	case kiHolomap:
 		_holomap->processHolomap();
-		_screens->_lockPalette = true;
+		_screens->_fadePalette = true;
 		break;
 	case kiMagicBall:
 		if (_gameState->_usingSabre) {
@@ -826,7 +827,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 		// Draw holomap
 		if (_input->toggleActionIfActive(TwinEActionType::OpenHolomap) && _gameState->hasItem(InventoryItems::kiHolomap) && !_gameState->inventoryDisabled()) {
 			_holomap->processHolomap();
-			_screens->_lockPalette = true;
+			_screens->_fadePalette = true;
 			_redraw->redrawEngineActions(true);
 		}
 
@@ -964,7 +965,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 
 						_scene->_sceneHero->setLife(kActorMaxLife);
 						_redraw->_reqBgRedraw = true;
-						_screens->_lockPalette = true;
+						_screens->_fadePalette = true;
 						_gameState->addLeafs(-1);
 						_actor->_cropBottomScreen = 0;
 					} else { // game over
@@ -1021,7 +1022,7 @@ int32 TwinEEngine::runGameEngine() { // mainLoopInteration
 
 bool TwinEEngine::gameEngineLoop() {
 	_redraw->_reqBgRedraw = true;
-	_screens->_lockPalette = true;
+	_screens->_fadePalette = true;
 	_movements->setActorAngle(ANGLE_0, -ANGLE_90, ANGLE_1, &_loopMovePtr);
 
 	while (_quitGame == -1) {


Commit: 593b7d068dfa96ef4fd11ea634e5487e286225cd
    https://github.com/scummvm/scummvm/commit/593b7d068dfa96ef4fd11ea634e5487e286225cd
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:48:32+01:00

Commit Message:
TWINE: added debug commands to toggle the dark palette mode

Changed paths:
    engines/twine/debugger/console.cpp
    engines/twine/debugger/console.h
    engines/twine/renderer/screens.cpp
    engines/twine/renderer/screens.h
    engines/twine/script/script_life_v1.cpp


diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index 732b8d64d9b..faf34a52e69 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -29,6 +29,7 @@
 #include "twine/resources/hqr.h"
 #include "twine/scene/gamestate.h"
 #include "twine/scene/scene.h"
+#include "twine/renderer/screens.h"
 #include "twine/text.h"
 #include "twine/twine.h"
 #include "twine/audio/music.h"
@@ -50,6 +51,7 @@ TwinEConsole::TwinEConsole(TwinEEngine *engine) : _engine(engine), GUI::Debugger
 	registerCmd("dumpfile", WRAP_METHOD(TwinEConsole, doDumpFile));
 	registerCmd("list_menutext", WRAP_METHOD(TwinEConsole, doListMenuText));
 	registerCmd("toggle_debug", WRAP_METHOD(TwinEConsole, doToggleDebug));
+	registerCmd("toggle_darkpal", WRAP_METHOD(TwinEConsole, doToggleDarkPal));
 	registerCmd("toggle_zones", WRAP_METHOD(TwinEConsole, doToggleZoneRendering));
 	registerCmd("toggle_tracks", WRAP_METHOD(TwinEConsole, doToggleTrackRendering));
 	registerCmd("toggle_godmode", WRAP_METHOD(TwinEConsole, doToggleGodMode));
@@ -303,6 +305,17 @@ bool TwinEConsole::doGiveKashes(int argc, const char **argv) {
 	return true;
 }
 
+bool TwinEConsole::doToggleDarkPal(int argc, const char **argv) {
+	if (_engine->_screens->_useAlternatePalette) {
+		debugPrintf("Disabling dark palette\n");
+		_engine->_screens->setNormalPal();
+	} else {
+		debugPrintf("Enabling dark palette\n");
+		_engine->_screens->setDarkPal();
+	}
+	return true;
+}
+
 bool TwinEConsole::doToggleDebug(int argc, const char **argv) {
 	if (_engine->_cfgfile.Debug) {
 		debugPrintf("Disabling debug mode\n");
diff --git a/engines/twine/debugger/console.h b/engines/twine/debugger/console.h
index 4697bf1d97d..708aa700d9e 100644
--- a/engines/twine/debugger/console.h
+++ b/engines/twine/debugger/console.h
@@ -47,6 +47,7 @@ private:
 	bool doChangeScene(int argc, const char **argv);
 	bool doListMenuText(int argc, const char **argv);
 	bool doToggleDebug(int argc, const char **argv);
+	bool doToggleDarkPal(int argc, const char **argv);
 	bool doToggleAutoAggressive(int argc, const char **argv);
 	bool doGiveKey(int argc, const char **argv);
 	bool doGiveGas(int argc, const char **argv);
diff --git a/engines/twine/renderer/screens.cpp b/engines/twine/renderer/screens.cpp
index 0c7b42cd859..afccddaf3e8 100644
--- a/engines/twine/renderer/screens.cpp
+++ b/engines/twine/renderer/screens.cpp
@@ -217,6 +217,25 @@ void Screens::blackToWhite() {
 	}
 }
 
+void Screens::setDarkPal() {
+	ScopedEngineFreeze scoped(_engine);
+	HQR::getEntry(_palette, Resources::HQR_RESS_FILE, RESSHQR_DARKPAL);
+	convertPalToRGBA(_palette, _paletteRGBA);
+	if (!_fadePalette) {
+		// set the palette hard if it should not get faded
+		_engine->setPalette(_paletteRGBA);
+	}
+	_useAlternatePalette = true;
+}
+
+void Screens::setNormalPal() {
+	_useAlternatePalette = false;
+	if (!_fadePalette) {
+		// reset the palette hard if it should not get faded
+		_engine->setPalette(_mainPaletteRGBA);
+	}
+}
+
 void Screens::setBackPal() {
 	memset(_palette, 0, sizeof(_palette));
 	memset(_paletteRGBA, 0, sizeof(_paletteRGBA));
diff --git a/engines/twine/renderer/screens.h b/engines/twine/renderer/screens.h
index ae8516397dc..c2da3cc7f95 100644
--- a/engines/twine/renderer/screens.h
+++ b/engines/twine/renderer/screens.h
@@ -73,6 +73,16 @@ public:
 
 	void convertPalToRGBA(const uint8 *in, uint32 *out);
 
+	/**
+	 * @sa setNormalPal
+	 */
+	void setDarkPal();
+	/**
+	 * @sa setDarkPal()
+	 * Reset the palette to the main palette after the script changed it via @c setDarkPal()
+	 */
+	void setNormalPal();
+
 	/**
 	 * Load a custom palette
 	 * @param index \a RESS.HQR entry index (starting from 0)
diff --git a/engines/twine/script/script_life_v1.cpp b/engines/twine/script/script_life_v1.cpp
index 2ec33bd986e..57b9caca3ad 100644
--- a/engines/twine/script/script_life_v1.cpp
+++ b/engines/twine/script/script_life_v1.cpp
@@ -1546,14 +1546,7 @@ static int32 lASK_CHOICE_OBJ(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x5C
  */
 static int32 lSET_DARK_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
-	ScopedEngineFreeze scoped(engine);
-	HQR::getEntry(engine->_screens->_palette, Resources::HQR_RESS_FILE, RESSHQR_DARKPAL);
-	engine->_screens->convertPalToRGBA(engine->_screens->_palette, engine->_screens->_paletteRGBA);
-	if (!engine->_screens->_fadePalette) {
-		// set the palette hard if it should not get faded
-		engine->setPalette(engine->_screens->_paletteRGBA);
-	}
-	engine->_screens->_useAlternatePalette = true;
+	engine->_screens->setDarkPal();
 	return 0;
 }
 
@@ -1562,11 +1555,7 @@ static int32 lSET_DARK_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
  * @note Opcode @c 0x5D
  */
 static int32 lSET_NORMAL_PAL(TwinEEngine *engine, LifeScriptContext &ctx) {
-	engine->_screens->_useAlternatePalette = false;
-	if (!engine->_screens->_fadePalette) {
-		// reset the palette hard if it should not get faded
-		engine->setPalette(engine->_screens->_mainPaletteRGBA);
-	}
+	engine->_screens->setNormalPal();
 	return 0;
 }
 


Commit: 04e7afea1af4f7e8675b4f5c5fce97318f3a1d2a
    https://github.com/scummvm/scummvm/commit/04e7afea1af4f7e8675b4f5c5fce97318f3a1d2a
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2021-12-31T11:49:01+01:00

Commit Message:
TWINE: replaced magic numbers

Changed paths:
    engines/twine/scene/animations.cpp


diff --git a/engines/twine/scene/animations.cpp b/engines/twine/scene/animations.cpp
index c9d16f24b0b..2c9951477f8 100644
--- a/engines/twine/scene/animations.cpp
+++ b/engines/twine/scene/animations.cpp
@@ -499,16 +499,17 @@ void Animations::processActorAnimations(int32 actorIdx) {
 
 				_engine->_movements->setActorAngle(ANGLE_0, actor->_speed, ANGLE_17, &actor->_move);
 
+				// AUTO_STOP_DOOR
 				if (actor->_dynamicFlags.bIsSpriteMoving) {
 					if (actor->_doorStatus) { // open door
 						if (getDistance2D(processActor.x, processActor.z, actor->_lastPos.x, actor->_lastPos.z) >= actor->_doorStatus) {
-							if (actor->_angle == ANGLE_0) {
+							if (actor->_angle == ANGLE_0) { // down
 								processActor.z = actor->_lastPos.z + actor->_doorStatus;
-							} else if (actor->_angle == ANGLE_90) {
+							} else if (actor->_angle == ANGLE_90) { // right
 								processActor.x = actor->_lastPos.x + actor->_doorStatus;
-							} else if (actor->_angle == ANGLE_180) {
+							} else if (actor->_angle == ANGLE_180) { // up
 								processActor.z = actor->_lastPos.z - actor->_doorStatus;
-							} else if (actor->_angle == ANGLE_270) {
+							} else if (actor->_angle == ANGLE_270) { // left
 								processActor.x = actor->_lastPos.x - actor->_doorStatus;
 							}
 
@@ -518,19 +519,19 @@ void Animations::processActorAnimations(int32 actorIdx) {
 					} else { // close door
 						bool updatePos = false;
 
-						if (actor->_angle == ANGLE_0) {
+						if (actor->_angle == ANGLE_0) { // down
 							if (processActor.z <= actor->_lastPos.z) {
 								updatePos = true;
 							}
-						} else if (actor->_angle == ANGLE_90) {
+						} else if (actor->_angle == ANGLE_90) { // right
 							if (processActor.x <= actor->_lastPos.x) {
 								updatePos = true;
 							}
-						} else if (actor->_angle == ANGLE_180) {
+						} else if (actor->_angle == ANGLE_180) { // up
 							if (processActor.z >= actor->_lastPos.z) {
 								updatePos = true;
 							}
-						} else if (actor->_angle == ANGLE_270) {
+						} else if (actor->_angle == ANGLE_270) { // left
 							if (processActor.x >= actor->_lastPos.x) {
 								updatePos = true;
 							}
@@ -550,8 +551,8 @@ void Animations::processActorAnimations(int32 actorIdx) {
 				processActor += actor->_lastPos;
 
 				if (actor->_staticFlags.bUseMiniZv) {
-					processActor.x = ((processActor.x / 128) * 128);
-					processActor.z = ((processActor.z / 128) * 128);
+					processActor.x = ((processActor.x / (BRICK_SIZE / 4)) * (BRICK_SIZE / 4));
+					processActor.z = ((processActor.z / (BRICK_SIZE / 4)) * (BRICK_SIZE / 4));
 				}
 
 				actor->_lastPos = IVec3();




More information about the Scummvm-git-logs mailing list