[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