[Scummvm-git-logs] scummvm master -> bf9c6a813640879b5656d8fbf8c6626c72f6df33

mgerhardy noreply at scummvm.org
Tue Feb 11 16:55:19 UTC 2025


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

Summary:
ba7069292b TWINE: fixed invalid lastJoyFlag triggers in processBehaviourExecution
43a41ed429 TWINE: LBA1: flag the preview version
d8ec24f831 TWINE: use constants
736b5b385f TWINE: use enhancementEnabled from Engine class
bf9c6a8136 TWINE: only enable the engine fixes for lba1


Commit: ba7069292b60b01f23d8b8426a5658b9d269b3af
    https://github.com/scummvm/scummvm/commit/ba7069292b60b01f23d8b8426a5658b9d269b3af
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00

Commit Message:
TWINE: fixed invalid lastJoyFlag triggers in processBehaviourExecution

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


diff --git a/engines/twine/scene/actor.cpp b/engines/twine/scene/actor.cpp
index 8c92373bc2c..2c1598dc3d3 100644
--- a/engines/twine/scene/actor.cpp
+++ b/engines/twine/scene/actor.cpp
@@ -401,11 +401,13 @@ void Actor::hitObj(int32 actorIdx, int32 actorIdxAttacked, int32 hitforce, int32
 
 		_engine->_extra->initSpecial(actor->_posObj.x, actor->_posObj.y + 1000, actor->_posObj.z, ExtraSpecialType::kHitStars);
 
-		if (!actorIdxAttacked) {
+		if (IS_HERO(actorIdxAttacked)) {
 			_engine->_movements->_lastJoyFlag = true;
 		}
-
+		// TODO: in the original sources this in an else block - dotemu release doesn't have this (so we are going after dotmeu here)
+		// else {
 		actor->_lifePoint -= hitforce;
+		// }
 		if (actor->_lifePoint < 0) {
 			actor->_lifePoint = 0;
 		}
diff --git a/engines/twine/scene/movements.cpp b/engines/twine/scene/movements.cpp
index cfb8412e397..da117bb440a 100644
--- a/engines/twine/scene/movements.cpp
+++ b/engines/twine/scene/movements.cpp
@@ -273,13 +273,10 @@ void Movements::processBehaviourExecution(int actorIdx) {
 		} else {
 			if (_engine->_input->isActionActive(TwinEActionType::TurnLeft)) {
 				_engine->_animations->initAnim(AnimationTypes::kLeftPunch, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
-				_lastJoyFlag = true;
 			} else if (_engine->_input->isActionActive(TwinEActionType::TurnRight)) {
 				_engine->_animations->initAnim(AnimationTypes::kRightPunch, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
-				_lastJoyFlag = true;
 			} else if (_engine->_input->isActionActive(TwinEActionType::MoveForward)) {
 				_engine->_animations->initAnim(AnimationTypes::kKick, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
-				_lastJoyFlag = true;
 			}
 		}
 		break;


Commit: 43a41ed429b9c35eedcef606dc9c3e600c788afe
    https://github.com/scummvm/scummvm/commit/43a41ed429b9c35eedcef606dc9c3e600c788afe
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00

Commit Message:
TWINE: LBA1: flag the preview version

Changed paths:
    engines/twine/detection.cpp
    engines/twine/detection.h
    engines/twine/resources/hqr.cpp
    engines/twine/resources/resources.cpp
    engines/twine/twine.h


diff --git a/engines/twine/detection.cpp b/engines/twine/detection.cpp
index 37e0f80db60..45b47fa9c5e 100644
--- a/engines/twine/detection.cpp
+++ b/engines/twine/detection.cpp
@@ -105,7 +105,7 @@ static const ADGameDescription twineGameDescriptions[] = {
 		AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 294025),
 		Common::EN_ANY,
 		Common::kPlatformDOS,
-		ADGF_NO_FLAGS,
+		ADGF_NO_FLAGS | TwinE::TF_PREVIEW,
 		GUIO1(GUIO_NONE)
 	},
 	{
@@ -114,7 +114,7 @@ static const ADGameDescription twineGameDescriptions[] = {
 		AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 294025),
 		Common::FR_FRA,
 		Common::kPlatformDOS,
-		ADGF_NO_FLAGS,
+		ADGF_NO_FLAGS | TwinE::TF_PREVIEW,
 		GUIO1(GUIO_NONE)
 	},
 
@@ -127,7 +127,7 @@ static const ADGameDescription twineGameDescriptions[] = {
 		AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 298697),
 		Common::EN_ANY,
 		Common::kPlatformDOS,
-		ADGF_UNSTABLE,
+		ADGF_UNSTABLE | TwinE::TF_PREVIEW,
 		GUIO1(GUIO_NONE)
 	},
 	{
@@ -136,7 +136,7 @@ static const ADGameDescription twineGameDescriptions[] = {
 		AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 298697),
 		Common::FR_FRA,
 		Common::kPlatformDOS,
-		ADGF_UNSTABLE,
+		ADGF_UNSTABLE | TwinE::TF_PREVIEW,
 		GUIO1(GUIO_NONE)
 	},
 
diff --git a/engines/twine/detection.h b/engines/twine/detection.h
index d9388f9e938..4c37c27af3f 100644
--- a/engines/twine/detection.h
+++ b/engines/twine/detection.h
@@ -38,7 +38,8 @@ enum TwineFeatureFlags {
 	TF_USE_GIF = (1 << 3),
 	TF_DOTEMU_ENHANCED = (1 << 4),
 	TF_LBA1_CLASSIC = (1 << 5),
-	TF_MOD = (1 << 6)
+	TF_MOD = (1 << 6),
+	TF_PREVIEW = (1 << 7)
 };
 
 #define GAMEOPTION_WALL_COLLISION GUIO_GAMEOPTIONS1
diff --git a/engines/twine/resources/hqr.cpp b/engines/twine/resources/hqr.cpp
index 538062732cd..7314ebc4f03 100644
--- a/engines/twine/resources/hqr.cpp
+++ b/engines/twine/resources/hqr.cpp
@@ -202,6 +202,7 @@ Common::SeekableReadStream *makeReadStream(const char *filename, int index) {
 	Common::File *file = new Common::File();
 	if (!file->open(filename)) {
 		delete file;
+		warning("HQR: Could not open %s", filename);
 		return nullptr;
 	}
 
diff --git a/engines/twine/resources/resources.cpp b/engines/twine/resources/resources.cpp
index 0c6659089a0..545fa757b0e 100644
--- a/engines/twine/resources/resources.cpp
+++ b/engines/twine/resources/resources.cpp
@@ -155,9 +155,17 @@ void Resources::preloadInventoryItems() {
 		// lba2 has this data in code
 		return;
 	}
-	const int32 numEntries = HQR::numEntries(Resources::HQR_INVOBJ_FILE);
-	if (numEntries > NUM_INVENTORY_ITEMS) {
-		error("Max allowed inventory items exceeded: %i/%i", numEntries, NUM_INVENTORY_ITEMS);
+	int32 numEntries = HQR::numEntries(Resources::HQR_INVOBJ_FILE);
+	if (_engine->isPreview()) {
+		if (numEntries != 32) {
+			error("Unexpected inventory items for lba1 preview version: %i/32", numEntries);
+		}
+		// TODO: this is obviously a hack
+		numEntries = NUM_INVENTORY_ITEMS;
+	} else {
+		if (numEntries > NUM_INVENTORY_ITEMS) {
+			error("Max allowed inventory items exceeded: %i/%i", numEntries, NUM_INVENTORY_ITEMS);
+		}
 	}
 	debugC(1, TwinE::kDebugResources, "preload %i inventory items", numEntries);
 	for (int32 i = 0; i < numEntries; i++) {
@@ -200,7 +208,9 @@ void Resources::initResources() {
 		}
 
 		if (!_holomapPointModelPtr.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOPOINTMDL), _engine->isLBA1())) {
-			error("Failed to load holomap point model");
+			if (!_engine->isPreview()) {
+				error("Failed to load holomap point model");
+			}
 		}
 
 		if (!_holomapArrowPtr.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOARROWMDL), _engine->isLBA1())) {
@@ -212,7 +222,9 @@ void Resources::initResources() {
 		}
 
 		if (!_trajectories.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOPOINTANIM), _engine->isLBA1())) {
-			error("Failed to parse trajectory data");
+			if (!_engine->isPreview()) {
+				error("Failed to parse trajectory data");
+			}
 		}
 		debugC(1, TwinE::kDebugResources, "preload %i trajectories", (int)_trajectories.getTrajectories().size());
 	} else if (_engine->isLBA2()) {
@@ -226,13 +238,16 @@ void Resources::initResources() {
 
 	loadMovieInfo();
 
-	const int32 textEntryCount = _engine->isLBA1() ? 28 : 30;
-	for (int32 i = 0; i < textEntryCount / 2; ++i) {
-		if (!_textData.loadFromHQR(Resources::HQR_TEXT_FILE, (TextBankId)i, _engine->_cfgfile._languageId, _engine->isLBA1(), textEntryCount)) {
-			error("HQR ERROR: Parsing textbank %i failed", i);
+	if (!_engine->isPreview()) {
+		// TODO: where is the text in the preview version?
+		const int32 textEntryCount = _engine->isLBA1() ? 28 : 30;
+		for (int32 i = 0; i < textEntryCount / 2; ++i) {
+			if (!_textData.loadFromHQR(Resources::HQR_TEXT_FILE, (TextBankId)i, _engine->_cfgfile._languageId, _engine->isLBA1(), textEntryCount)) {
+				error("HQR ERROR: Parsing textbank %i failed for language %i (%i entries)", i, _engine->_cfgfile._languageId, textEntryCount);
+			}
 		}
+		debugC(1, TwinE::kDebugResources, "Loaded %i text banks", textEntryCount / 2);
 	}
-	debugC(1, TwinE::kDebugResources, "Loaded %i text banks", textEntryCount / 2);
 }
 
 const TextEntry *Resources::getText(TextBankId textBankId, TextId index) const {
@@ -254,7 +269,11 @@ void Resources::loadMovieInfo() {
 	uint8 *content = nullptr;
 	int32 size;
 	if (_engine->isLBA1()) {
-		size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, RESSHQR_FLAINFO);
+		if (_engine->isPreview()) {
+			size = 0;
+		} else {
+			size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, RESSHQR_FLAINFO);
+		}
 	} else {
 		size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, 48);
 	}
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 46133777824..f7fc088a182 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -261,6 +261,7 @@ public:
 	bool isLBA1() const { return _gameType == TwineGameType::GType_LBA; }
 	bool isLBA2() const { return _gameType == TwineGameType::GType_LBA2; }
 	bool isLBASlideShow() const { return _gameType == TwineGameType::GType_LBASHOW; }
+	bool isPreview() const { return (_gameFlags & TwinE::TF_PREVIEW) != 0; }
 	bool isMod() const { return (_gameFlags & TwinE::TF_MOD) != 0; }
 	bool isDotEmuEnhanced() const { return (_gameFlags & TwinE::TF_DOTEMU_ENHANCED) != 0; }
 	bool isLba1Classic() const { return (_gameFlags & TwinE::TF_LBA1_CLASSIC) != 0; }


Commit: d8ec24f831632862d294bbd31aed425b1d227782
    https://github.com/scummvm/scummvm/commit/d8ec24f831632862d294bbd31aed425b1d227782
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00

Commit Message:
TWINE: use constants

Changed paths:
    engines/twine/parser/body.cpp


diff --git a/engines/twine/parser/body.cpp b/engines/twine/parser/body.cpp
index c4d54dc3a66..cee214d5558 100644
--- a/engines/twine/parser/body.cpp
+++ b/engines/twine/parser/body.cpp
@@ -23,6 +23,9 @@
 #include "twine/renderer/renderer.h"
 #include "common/memstream.h"
 
+#define	INFO_TRI	1
+#define	INFO_ANIM	2
+
 namespace TwinE {
 
 void BodyData::reset() {
@@ -181,7 +184,7 @@ bool BodyData::loadFromStream(Common::SeekableReadStream &stream, bool lba1) {
 	reset();
 	if (lba1) {
 		const uint16 flags = stream.readUint16LE();
-		animated = (flags & 2) != 0;
+		animated = (flags & INFO_ANIM) != 0;
 		bbox.mins.x = stream.readSint16LE();
 		bbox.maxs.x = stream.readSint16LE();
 		bbox.mins.y = stream.readSint16LE();
@@ -203,7 +206,7 @@ bool BodyData::loadFromStream(Common::SeekableReadStream &stream, bool lba1) {
 	} else {
 		// T_BODY_HEADER (lba2)
 		const uint32 flags = stream.readUint32LE();
-		animated = (flags & 2) != 0;
+		animated = (flags & INFO_ANIM) != 0;
 		stream.skip(4); // int16 size of header and int16 dummy
 		bbox.mins.x = stream.readSint32LE();
 		bbox.maxs.x = stream.readSint32LE();


Commit: 736b5b385f6b473b8d602621a2d14b20b23a0769
    https://github.com/scummvm/scummvm/commit/736b5b385f6b473b8d602621a2d14b20b23a0769
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00

Commit Message:
TWINE: use enhancementEnabled from Engine class

also activate the funfrock door fix by default

see ticket https://bugs.scummvm.org/ticket/13818

Changed paths:
    engines/twine/debugger/console.cpp
    engines/twine/debugger/console.h
    engines/twine/debugger/debugtools.cpp
    engines/twine/scene/scene.cpp
    engines/twine/scene/scene.h
    engines/twine/script/script_life.cpp


diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index 43db25a809c..59368d27e2a 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -68,7 +68,6 @@ TwinEConsole::TwinEConsole(TwinEEngine *engine) : _engine(engine), GUI::Debugger
 	registerCmd("set_holomap_flag", WRAP_METHOD(TwinEConsole, doSetHolomapFlag));
 	registerCmd("set_holomap_trajectory", WRAP_METHOD(TwinEConsole, doSetHolomapTrajectory));
 	registerCmd("show_holomap_flag", WRAP_METHOD(TwinEConsole, doPrintHolomapFlag));
-	registerCmd("toggle_enhancements", WRAP_METHOD(TwinEConsole, doToggleEnhancements));
 }
 
 TwinEConsole::~TwinEConsole() {
@@ -113,11 +112,6 @@ bool TwinEConsole::doToggleGodMode(int argc, const char **argv) {
 	return true;
 }
 
-bool TwinEConsole::doToggleEnhancements(int argc, const char **argv) {
-	TOGGLE_DEBUG(_engine->_scene->_enableEnhancements, "enable enhancements\n")
-	return true;
-}
-
 bool TwinEConsole::doToggleClipRendering(int argc, const char **argv) {
 	TOGGLE_DEBUG(_engine->_debugState->_showingClips, "clip rendering\n")
 	return true;
diff --git a/engines/twine/debugger/console.h b/engines/twine/debugger/console.h
index bdbffdab621..4b32d34bea0 100644
--- a/engines/twine/debugger/console.h
+++ b/engines/twine/debugger/console.h
@@ -55,7 +55,6 @@ private:
 	bool doToggleActorRendering(int argc, const char **argv);
 	bool doToggleTrackRendering(int argc, const char **argv);
 	bool doToggleGodMode(int argc, const char **argv);
-	bool doToggleEnhancements(int argc, const char **argv);
 	bool doToggleFreeCamera(int argc, const char **argv);
 	bool doToggleSceneRendering(int argc, const char **argv);
 	bool doSetTrackObject(int argc, const char **argv);
diff --git a/engines/twine/debugger/debugtools.cpp b/engines/twine/debugger/debugtools.cpp
index e9098222a54..3db98a5108d 100644
--- a/engines/twine/debugger/debugtools.cpp
+++ b/engines/twine/debugger/debugtools.cpp
@@ -467,7 +467,6 @@ static void sceneDetailsWindows(TwinEEngine *engine) {
 
 		ImGuiEx::InputInt("Currently followed actor", &scene->_numObjFollow);
 
-		ImGui::Checkbox("Enable enhancements", &scene->_enableEnhancements);
 		ImGui::Checkbox("Render grid tiles", &scene->_flagRenderGrid);
 		ImGuiEx::InputInt("Current script value", &scene->_currentScriptValue);
 		ImGuiEx::InputInt("Talking actor", &scene->_talkingActor);
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 018888eccc9..bfe9deeacf1 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -24,6 +24,7 @@
 #include "common/file.h"
 #include "common/memstream.h"
 #include "common/util.h"
+#include "engines/enhancements.h"
 #include "twine/audio/music.h"
 #include "twine/audio/sound.h"
 #include "twine/debugger/debug_state.h"
@@ -440,14 +441,22 @@ bool Scene::loadSceneLBA1() {
 		point->z = stream.readSint16LE();
 	}
 
-	if (_enableEnhancements) {
-		switch (_numCube) {
-		case LBA1SceneId::Hamalayi_Mountains_landing_place:
+	if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
+		if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
 			// move the mine a little bit, as it's too close to the change cube zone
 			_sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
 			_sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
-			break;
-		case LBA1SceneId::Principal_Island_outside_the_fortress:
+		}
+#if 0
+		else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
+			_sceneZones[6].maxs.z = 3616;
+		} else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
+			_sceneZones[11].type = (ZoneType)50;
+		}
+#endif
+	}
+	if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
+		if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
 			// https://bugs.scummvm.org/ticket/13818
 			_sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
 
@@ -471,13 +480,6 @@ bool Scene::loadSceneLBA1() {
 			_sceneZones[22].maxs.x = 8865;
 			_sceneZones[22].maxs.z = 6881;
 #endif
-			break;
-		case LBA1SceneId::Tippet_Island_Secret_passage_scene_1:
-			_sceneZones[6].maxs.z = 3616;
-			break;
-		case LBA1SceneId::Principal_Island_inside_the_fortress:
-			_sceneZones[11].type = (ZoneType)50;
-			break;
 		}
 	}
 
@@ -544,7 +546,7 @@ void Scene::dumpSceneScripts() const {
 
 void Scene::changeCube() {
 	if (_engine->isLBA1()) {
-		if (_enableEnhancements) {
+		if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
 			if (_numCube == LBA1SceneId::Citadel_Island_Harbor && _newCube == LBA1SceneId::Principal_Island_Harbor) {
 				if (_sceneNumZones >= 15 && _sceneNumTracks >= 8) {
 					const ZoneStruct *zone = &_sceneZones[15];
diff --git a/engines/twine/scene/scene.h b/engines/twine/scene/scene.h
index 13bddf574a0..401b450557a 100644
--- a/engines/twine/scene/scene.h
+++ b/engines/twine/scene/scene.h
@@ -199,7 +199,6 @@ public:
 	int16 _numObjFollow = OWN_ACTOR_SCENE_INDEX;
 	/** Current actor in zone - climbing a ladder */
 	bool _flagClimbing = false;
-	bool _enableEnhancements = false;
 	/** Current actor manipulated in scripts */
 	int16 _currentScriptValue = 0;
 
diff --git a/engines/twine/script/script_life.cpp b/engines/twine/script/script_life.cpp
index d07d2a49ee3..d52bcd89958 100644
--- a/engines/twine/script/script_life.cpp
+++ b/engines/twine/script/script_life.cpp
@@ -21,6 +21,7 @@
 
 #include "twine/script/script_life.h"
 #include "common/memstream.h"
+#include "engines/enhancements.h"
 #include "twine/audio/music.h"
 #include "twine/audio/sound.h"
 #include "twine/debugger/debug_state.h"
@@ -1425,7 +1426,7 @@ int32 ScriptLife::lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
 int32 ScriptLife::lPOS_POINT(TwinEEngine *engine, LifeScriptContext &ctx) {
 	const int32 trackIdx = ctx.stream.readByte();
 	debugC(3, kDebugLevels::kDebugScriptsLife, "LIFE::POS_POINT(%i)", (int)trackIdx);
-	if (engine->_scene->_enableEnhancements) {
+	if (engine->enhancementEnabled(kEnhMinorBugFixes)) {
 		if (IS_HERO(ctx.actorIdx) && engine->_scene->_numCube == LBA1SceneId::Citadel_Island_Harbor && trackIdx == 8) {
 			ctx.stream.rewind(2);
 			ctx.stream.writeByte(0x34); // CHANGE_CUBE


Commit: bf9c6a813640879b5656d8fbf8c6626c72f6df33
    https://github.com/scummvm/scummvm/commit/bf9c6a813640879b5656d8fbf8c6626c72f6df33
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00

Commit Message:
TWINE: only enable the engine fixes for lba1

added a few comments

Changed paths:
    engines/twine/scene/buggy.cpp
    engines/twine/scene/scene.cpp
    engines/twine/shared.h


diff --git a/engines/twine/scene/buggy.cpp b/engines/twine/scene/buggy.cpp
index 74d24519618..d12262fcc41 100644
--- a/engines/twine/scene/buggy.cpp
+++ b/engines/twine/scene/buggy.cpp
@@ -531,7 +531,7 @@ void Buggy::moveBuggy(ActorStruct *ptrobj) {
 			_engine->_actor->initBody(BodyType::btMageTir, OWN_ACTOR_SCENE_INDEX);
 		}
 
-		_engine->_animations->initAnim(GEN_ANIM_LANCE, AnimType::kAnimationTypeRepeat, OWN_ACTOR_SCENE_INDEX);
+		_engine->_animations->initAnim(AnimationTypes::kThrowBall, AnimType::kAnimationTypeRepeat, OWN_ACTOR_SCENE_INDEX);
 
 		/* control direction pendant Aiming */
 		if (!ptrobj->_workFlags.bIsRotationByAnim) {
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index bfe9deeacf1..98e3d0f5ee7 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -441,46 +441,29 @@ bool Scene::loadSceneLBA1() {
 		point->z = stream.readSint16LE();
 	}
 
-	if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
-		if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
-			// move the mine a little bit, as it's too close to the change cube zone
-			_sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
-			_sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
-		}
-#if 0
-		else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
-			_sceneZones[6].maxs.z = 3616;
-		} else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
-			_sceneZones[11].type = (ZoneType)50;
-		}
-#endif
-	}
-	if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
-		if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
-			// https://bugs.scummvm.org/ticket/13818
-			_sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
-
+	if (_engine->isLBA1()) {
+		if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
+			if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
+				// move the mine a little bit, as it's too close to the change cube zone
+				_sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
+				_sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
+			}
 #if 0
-			// increase the zones for opening the doors
-			// red card door
-			_sceneZones[15].mins.x = 1104;
-			_sceneZones[15].mins.z = 8448;
-			_sceneZones[15].maxs.x = 4336;
-			_sceneZones[15].maxs.z = 11488;
-
-			// red card door
-			_sceneZones[16].mins.x = 21104;
-			_sceneZones[16].mins.z = 4608;
-			_sceneZones[16].maxs.x = 23824;
-			_sceneZones[16].maxs.z = 8080;
-
-			// blue card door
-			_sceneZones[22].mins.x = 6144;
-			_sceneZones[22].mins.z = 6144;
-			_sceneZones[22].maxs.x = 8865;
-			_sceneZones[22].maxs.z = 6881;
+			else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
+				_sceneZones[6].maxs.z = 3616;
+			}
 #endif
 		}
+		if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
+			if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
+				// https://bugs.scummvm.org/ticket/13818
+				_sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
+			} else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
+				// Set this zone to something invalid to fix a getting-stuck-bug
+				// the original value was ZoneType::kGrid (3)
+				_sceneZones[11].type = (ZoneType)50;
+			}
+		}
 	}
 
 	return true;
diff --git a/engines/twine/shared.h b/engines/twine/shared.h
index ce4b5e7cf77..a1636c8f89e 100644
--- a/engines/twine/shared.h
+++ b/engines/twine/shared.h
@@ -38,16 +38,16 @@
 /**
  * This gameflag indicates that the inventory items are taken from Twinson because he went to jail
  */
-#define GAMEFLAG_INVENTORY_DISABLED 70
+#define GAMEFLAG_INVENTORY_DISABLED 70 // Any prison FLAG_CONSIGNE
 // Hit
 #define GAMEFLAG_VIDEO_BAFFE 200
 // Hit, band-aid
 #define GAMEFLAG_VIDEO_BAFFE2 201
 // Hit, black eye
 #define GAMEFLAG_VIDEO_BAFFE3 202
-// Ferry #1
+// Ferry #1 Citadel Island <-> Principal Island
 #define GAMEFLAG_VIDEO_BATEAU 203
-// Temple of Bu
+// White Leaf Desert, Temple of Bu
 #define GAMEFLAG_VIDEO_TEMPLE 204
 // White Leaf Desert, flute
 #define GAMEFLAG_VIDEO_FLUTE2 205
@@ -57,7 +57,7 @@
 #define GAMEFLAG_VIDEO_NEIGE2 207
 // Hamalayi Mountains, ski lift
 #define GAMEFLAG_VIDEO_SURF 208
-// Ferry #2
+// Ferry #2 Citadel Island <-> Principal Island
 #define GAMEFLAG_VIDEO_BATEAU2 209
 // Fortress, Zoe Clone
 #define GAMEFLAG_VIDEO_CAPTURE 210




More information about the Scummvm-git-logs mailing list