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

mduggan noreply at scummvm.org
Mon May 8 10:22:42 UTC 2023


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

Summary:
8e3e77cd70 TETRAEDGE: Fix copy-paste error. PVS-Studio V656
b0d33ce707 TETRAEDGE: Fix computer puzzle display
cdd6805f00 TETRAEDGE: Add more search paths used by Amerzone
f2f2e68786 TETRAEDGE: Clean up and add more checks in TeWarp loading
d047b3aa25 TETRAEDGE: Fix typo in error message. PVS-Studio V524
5d3f19a06e TETRAEDGE: Add load/save support to documents browser
0fd0e0199e TETRAEDGE: Correctly render blank characters
c620fc7542 TETRAEDGE: Don't lose callbacks on failed srpite load
c8ed379a09 TETRAEDGE: Fix small coverity-identified bugs
49a1f045bd TETRAEDGE: Add search paths from iPhone Amerzone
421b735fd7 TETRAEDGE: Ensure video anim is stopped on unload
a3ac8f99aa TETRAEDGE: Fix amerzone puzzle coordinates
89fb1c802a TETRAEDGE: Add video path workarounds for Amerzone
e10bf501d5 TETRAEDGE: Allow closing game dialogs with escape


Commit: 8e3e77cd7042806134b60c8b04e0e2946256c625
    https://github.com/scummvm/scummvm/commit/8e3e77cd7042806134b60c8b04e0e2946256c625
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Fix copy-paste error. PVS-Studio V656

Changed paths:
    engines/tetraedge/game/lua_binds.cpp


diff --git a/engines/tetraedge/game/lua_binds.cpp b/engines/tetraedge/game/lua_binds.cpp
index eb3a7d4cb74..9fbacffcb9a 100644
--- a/engines/tetraedge/game/lua_binds.cpp
+++ b/engines/tetraedge/game/lua_binds.cpp
@@ -120,7 +120,7 @@ static int tolua_ExportedFunctions_PlayMovie00(lua_State *L) {
 		// iOS version.. sometimes has "video" as 3rd param?
 		Common::String s1(tolua_tostring(L, 1, nullptr));
 		Common::String s2(tolua_tostring(L, 2, nullptr));
-		Common::String s3(tolua_tostring(L, 2, nullptr));
+		Common::String s3(tolua_tostring(L, 3, nullptr));
 		PlayMovie(s1, s2);
 		return 0;
 	}


Commit: b0d33ce707a296b0220a7e7319f3c6ab2bdee142
    https://github.com/scummvm/scummvm/commit/b0d33ce707a296b0220a7e7319f3c6ab2bdee142
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Fix computer puzzle display

Changed paths:
    engines/tetraedge/game/puzzle_computer_hydra.cpp


diff --git a/engines/tetraedge/game/puzzle_computer_hydra.cpp b/engines/tetraedge/game/puzzle_computer_hydra.cpp
index 6d8623c7eea..777fd9356c5 100644
--- a/engines/tetraedge/game/puzzle_computer_hydra.cpp
+++ b/engines/tetraedge/game/puzzle_computer_hydra.cpp
@@ -130,7 +130,7 @@ bool PuzzleComputerHydra::exitChecklistScreen() {
 bool PuzzleComputerHydra::exitCoordinatesScreen() {
 	_transitionTimer.alarmSignal().remove(this, &PuzzleComputerHydra::enterChecklistScreen);
 	_gui.spriteLayoutChecked("title")->setVisible(true);
-	_gui.spriteLayoutChecked("infos")->setVisible(false);
+	_gui.spriteLayoutChecked("coordinates")->setVisible(false);
 	_gui.buttonLayoutChecked("button0")->setEnable(false);
 	_gui.buttonLayoutChecked("button1")->setEnable(false);
 	_gui.buttonLayoutChecked("button2")->setEnable(false);


Commit: cdd6805f00d7e717f6193f0c8eb741dcd70c26c6
    https://github.com/scummvm/scummvm/commit/cdd6805f00d7e717f6193f0c8eb741dcd70c26c6
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Add more search paths used by Amerzone

Changed paths:
    engines/tetraedge/te/te_core.cpp


diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 971aa0589cf..9583576e26d 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -199,8 +199,12 @@ Common::FSNode TeCore::findFile(const Common::Path &path) const {
 		"iPhone-iPad/DefaultDistributor",		// iOS Syb 1 paid
 		"Android-iPhone-iPad/iPhone-iPad",		// iOS Syb 2
 		"PC-MacOSX-Android-iPhone-iPad",		// iOS Syb 2
+		"Part2-Full",							// Amerzone
+		"Part3-Full",							// Amerzone
 		"Full/HD",								// Amerzone
 		"Part1-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+		"Part2-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+		"Part3-Full/PC-MacOSX/DefaultDistributor", // Amerzone
 		"Part1-Part2-Part3-Full/HD",			// Amerzone
 		"Part1-Part2-Part3-Full",				// Amerzone
 		"Part1-Full/HD",						// Amerzone


Commit: f2f2e68786bcb218515b7c46f93095d8faf1b2b4
    https://github.com/scummvm/scummvm/commit/f2f2e68786bcb218515b7c46f93095d8faf1b2b4
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Clean up and add more checks in TeWarp loading

Changed paths:
    engines/tetraedge/te/te_warp.cpp
    engines/tetraedge/te/te_warp.h


diff --git a/engines/tetraedge/te/te_warp.cpp b/engines/tetraedge/te/te_warp.cpp
index 0717676a583..9c6b66e6595 100644
--- a/engines/tetraedge/te/te_warp.cpp
+++ b/engines/tetraedge/te/te_warp.cpp
@@ -272,13 +272,16 @@ void TeWarp::load(const Common::String &path, bool flag) {
 	_warpBlocs.resize(_xCount * _yCount * 6);
 	for (uint i = 0; i < _xCount * _yCount * 6; i++) {
 		TeWarpBloc::CubeFace face = static_cast<TeWarpBloc::CubeFace>(_file.readByte());
+		// TODO: This is strange, surely we only need to set the offset and create the bloc
+		// once but the code seems to do it xCount * yCount times..
 		for (uint j = 0; j < _xCount * _yCount; j++) {
-			unsigned short offx = _file.readUint16LE();
-			unsigned short offy = _file.readUint16LE();
-			unsigned int blocTexOffset = _file.readUint32LE();
+			uint xoff = _file.readUint16LE();
+			uint yoff = _file.readUint16LE();
+			if (xoff > 1000 || yoff > 1000)
+				error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
+			uint32 blocTexOffset = _file.readUint32LE();
 			_warpBlocs[i].setTextureFileOffset(globalTexDataOffset + blocTexOffset);
-			TeVector2s32 offset(offx, offy);
-			_warpBlocs[i].create(face, _xCount, _yCount, offset);
+			_warpBlocs[i].create(face, _xCount, _yCount, TeVector2s32(xoff, yoff));
 		}
 	}
 	_loadedAnimData.resize(numAnims);
@@ -289,21 +292,26 @@ void TeWarp::load(const Common::String &path, bool flag) {
 		aname[4] = '\0';
 		_loadedAnimData[i]._name = aname;
 		uint numFrames = _file.readUint32LE();
+		if (numFrames > 1000)
+			error("TeWarp::load: Improbable frame count %d", numFrames);
 		byte numSomething = _file.readByte();
 		_loadedAnimData[i]._frameDatas.resize(numFrames);
 		for (uint j = 0; j < numFrames; j++) {
 			FrameData &frameData = _loadedAnimData[i]._frameDatas[j];
 			frameData._loadedTexCount = 0;
-			frameData._numWarpBlocs = 0;
 			Common::Array<TeWarpBloc> warpBlocs;
 			for (uint k = 0; k < numSomething; k++) {
 				uint blocCount = _file.readUint32LE();
+				if (blocCount > 1000)
+					error("TeWarp::load: Improbable bloc count %d", blocCount);
 				if (blocCount) {
 					TeWarpBloc::CubeFace face = static_cast<TeWarpBloc::CubeFace>(_file.readByte());
-					warpBlocs.resize(frameData._numWarpBlocs + blocCount);
+					warpBlocs.resize(blocCount);
 					for (auto &warpBloc : warpBlocs) {
 						uint xoff = _file.readUint16LE();
 						uint yoff = _file.readUint16LE();
+						if (xoff > 10000 || yoff > 10000)
+							error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
 						uint32 texDataOff = _file.readUint32LE();
 						warpBloc.setTextureFileOffset(globalTexDataOffset + texDataOff);
 						warpBloc.create(face, _someXVal, _someYVal, TeVector2s32(xoff, yoff));
@@ -311,12 +319,16 @@ void TeWarp::load(const Common::String &path, bool flag) {
 							warpBloc.color(TeColor(255, 0, 0, 255));
 					}
 					uint meshSize = _file.readUint32LE();
+					if (meshSize > 1000)
+						error("TeWarp::load: Improbable meshSize %d", meshSize);
 					TePickMesh tmpMesh;
 					tmpMesh.setName(aname);
 					tmpMesh.nbTriangles(meshSize * 2);
 					for (uint m = 0; m < meshSize; m++) {
 						uint xoff = _file.readUint16LE();
 						uint yoff = _file.readUint16LE();
+						if (xoff > 10000 || yoff > 10000)
+							error("TeWarp::load: Improbable offsets %d, %d", xoff, yoff);
 						addQuadToPickMesh(tmpMesh, m * 2, face, TeVector2s32(xoff, yoff), _someMeshX, _someMeshY);
 					}
 					tmpMesh.setEnabled(true);
diff --git a/engines/tetraedge/te/te_warp.h b/engines/tetraedge/te/te_warp.h
index 83bac58d5ce..4dd55f77b53 100644
--- a/engines/tetraedge/te/te_warp.h
+++ b/engines/tetraedge/te/te_warp.h
@@ -38,7 +38,6 @@ namespace Tetraedge {
 class TeWarp : public Te3DObject2 {
 public:
 	struct FrameData {
-		int _numWarpBlocs;
 		Common::Array<TeWarpBloc> _warpBlocs;
 		TePickMesh _pickMesh;
 		int _loadedTexCount;


Commit: d047b3aa25e724497ff817d7afd552fdce6475ce
    https://github.com/scummvm/scummvm/commit/d047b3aa25e724497ff817d7afd552fdce6475ce
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Fix typo in error message. PVS-Studio V524

Changed paths:
    engines/tetraedge/te/te_scummvm_codec.cpp


diff --git a/engines/tetraedge/te/te_scummvm_codec.cpp b/engines/tetraedge/te/te_scummvm_codec.cpp
index d3b72822e22..bf08fcce79b 100644
--- a/engines/tetraedge/te/te_scummvm_codec.cpp
+++ b/engines/tetraedge/te/te_scummvm_codec.cpp
@@ -89,7 +89,7 @@ void TeScummvmCodec::setLeftBorderSize(uint val) {
 }
 
 void TeScummvmCodec::setRightBorderSize(uint val) {
-	error("left border not supported.");
+	error("right border not supported.");
 }
 
 void TeScummvmCodec::setBottomBorderSize(uint val) {


Commit: 5d3f19a06eea38692d52744bac13fd65b362d91b
    https://github.com/scummvm/scummvm/commit/5d3f19a06eea38692d52744bac13fd65b362d91b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Add load/save support to documents browser

Changed paths:
    engines/tetraedge/game/documents_browser.cpp
    engines/tetraedge/game/documents_browser.h


diff --git a/engines/tetraedge/game/documents_browser.cpp b/engines/tetraedge/game/documents_browser.cpp
index cc58fb6eab3..d33218a01e3 100644
--- a/engines/tetraedge/game/documents_browser.cpp
+++ b/engines/tetraedge/game/documents_browser.cpp
@@ -410,4 +410,23 @@ void DocumentsBrowser::unload() {
 	_gui.unload();
 }
 
+Common::Error DocumentsBrowser::syncState(Common::Serializer &s) {
+	uint32 count = _documentData.size();
+	s.syncAsUint32LE(count);
+	if (s.isLoading()) {
+		for (unsigned int i = 0; i < count; i++) {
+			Common::String name;
+			s.syncString(name);
+			addDocument(name);
+		}
+	} else {
+		for (auto &doc : _documentData) {
+			Common::String key = doc._key;
+			s.syncString(key);
+		}
+	}
+	return Common::kNoError;
+}
+
+
 } // end namespace Tetraedge
diff --git a/engines/tetraedge/game/documents_browser.h b/engines/tetraedge/game/documents_browser.h
index 6e53d38bc51..1d0594e78e1 100644
--- a/engines/tetraedge/game/documents_browser.h
+++ b/engines/tetraedge/game/documents_browser.h
@@ -60,10 +60,13 @@ public:
 	void showDocument(const Common::String &str, int startPage);
 	void unload();
 
+	Common::Error syncState(Common::Serializer &s);
+
 	TeLayout &zoomedLayout() { return _zoomedLayout; }
 
 	TeLuaGUI &gui() { return _gui; }
 
+
 private:
 	void loadXMLFile(const Common::String &path);
 


Commit: 0fd0e0199e81654640f688a8883ca58cf8503a2c
    https://github.com/scummvm/scummvm/commit/0fd0e0199e81654640f688a8883ca58cf8503a2c
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Correctly render blank characters

Changed paths:
    engines/tetraedge/te/te_font2.cpp


diff --git a/engines/tetraedge/te/te_font2.cpp b/engines/tetraedge/te/te_font2.cpp
index 6650fed25e0..c48fecf0c04 100644
--- a/engines/tetraedge/te/te_font2.cpp
+++ b/engines/tetraedge/te/te_font2.cpp
@@ -154,6 +154,9 @@ void TeFont2::drawChar(Graphics::Surface *dst, uint32 chr, int x, int y, uint32
 		error("Call to TeFont2::drawChar but no texture loaded");
 	const GlyphData2 g = _glyphs[chr];
 
+	if (!g._xSz || !g._ySz)
+		return;
+
 	Common::Rect srcRect;
 	srcRect.left = (int)g._vec.x();
 	srcRect.top = _texture.h - (int)g._vec.y() - g._ySz;


Commit: c620fc7542a09b1f8f23052cce4a7cf7d51b254e
    https://github.com/scummvm/scummvm/commit/c620fc7542a09b1f8f23052cce4a7cf7d51b254e
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Don't lose callbacks on failed srpite load

Changed paths:
    engines/tetraedge/te/te_sprite_layout.cpp


diff --git a/engines/tetraedge/te/te_sprite_layout.cpp b/engines/tetraedge/te/te_sprite_layout.cpp
index e794a4a6fbf..54cc455453d 100644
--- a/engines/tetraedge/te/te_sprite_layout.cpp
+++ b/engines/tetraedge/te/te_sprite_layout.cpp
@@ -75,7 +75,7 @@ bool TeSpriteLayout::onParentWorldColorChanged() {
 
 bool TeSpriteLayout::load(const Common::String &path) {
 	if (path.empty()) {
-		_tiledSurfacePtr = new TeTiledSurface();
+		_tiledSurfacePtr->unload();
 		return true;
 	}
 
@@ -88,7 +88,7 @@ bool TeSpriteLayout::load(const Common::String &path) {
 
 bool TeSpriteLayout::load(const Common::FSNode &node, const Common::String *forcePath) {
 	if (!node.exists()) {
-		_tiledSurfacePtr = new TeTiledSurface();
+		_tiledSurfacePtr->unload();
 		return false;
 	}
 


Commit: c8ed379a095fc067326174c19eabeeba49e88bcc
    https://github.com/scummvm/scummvm/commit/c8ed379a095fc067326174c19eabeeba49e88bcc
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Fix small coverity-identified bugs

Changed paths:
    engines/tetraedge/game/splash_screens.cpp
    engines/tetraedge/te/te_button_layout.cpp
    engines/tetraedge/te/te_scene_warp.cpp


diff --git a/engines/tetraedge/game/splash_screens.cpp b/engines/tetraedge/game/splash_screens.cpp
index 270acf3e626..d7512307231 100644
--- a/engines/tetraedge/game/splash_screens.cpp
+++ b/engines/tetraedge/game/splash_screens.cpp
@@ -47,6 +47,7 @@ void SplashScreens::enter()	{
 			TeLayout *splash = layoutChecked("splash");
 
 			TeLayout *splashImg = dynamic_cast<TeLayout *>(splash->child(0));
+			assert(splashImg);
 			splashImg->setRatioMode(TeILayout::RATIO_MODE_NONE);
 			splashImg->updateSize();
 
@@ -81,6 +82,7 @@ bool SplashScreens::onAlarm() {
 		splash->onMouseClickValidated().add(this, &SplashScreens::onQuitSplash);
 
 		TeLayout *splashImg = dynamic_cast<TeLayout *>(splash->child(0));
+		assert(splashImg);
 		splashImg->setRatioMode(TeILayout::RATIO_MODE_NONE);
 		splashImg->updateSize();
 
diff --git a/engines/tetraedge/te/te_button_layout.cpp b/engines/tetraedge/te/te_button_layout.cpp
index a12e7c1f02a..c1f422e83a9 100644
--- a/engines/tetraedge/te/te_button_layout.cpp
+++ b/engines/tetraedge/te/te_button_layout.cpp
@@ -119,7 +119,7 @@ void TeButtonLayout::load(const Common::String &upImg, const Common::String &dow
 	TeSpriteLayout *downSprite = nullptr;
 	if (downImg.size()) {
 		downSprite = new TeSpriteLayout();
-		if (!downSprite->load(upImg))
+		if (!downSprite->load(downImg))
 			warning("Failed to load button down img %s", downImg.c_str());
 	}
 	setDownLayout(downSprite);
diff --git a/engines/tetraedge/te/te_scene_warp.cpp b/engines/tetraedge/te/te_scene_warp.cpp
index 04c5890e1fd..d949117fb97 100644
--- a/engines/tetraedge/te/te_scene_warp.cpp
+++ b/engines/tetraedge/te/te_scene_warp.cpp
@@ -78,8 +78,10 @@ bool TeSceneWarp::load(const Common::String &name, TeWarp *warp, bool flag) {
 	TeSceneWarpXmlParser parser(this, flag);
 	TeCore *core = g_engine->getCore();
 	Common::FSNode node = core->findFile(name);
-	parser.loadFile(node);
-	parser.parse();
+	if (!parser.loadFile(node))
+		error("TeSceneWarp::load: failed to load data from %s", name.c_str());
+	if (!parser.parse())
+		error("TeSceneWarp::load: failed to parse data from %s", name.c_str());
 
 	if (flag) {
 		// Line 357 ~ 426, plus other fixups


Commit: 49a1f045bdb1c7179ac821120481f94df9bf07cf
    https://github.com/scummvm/scummvm/commit/49a1f045bdb1c7179ac821120481f94df9bf07cf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Add search paths from iPhone Amerzone

Changed paths:
    engines/tetraedge/te/te_core.cpp


diff --git a/engines/tetraedge/te/te_core.cpp b/engines/tetraedge/te/te_core.cpp
index 9583576e26d..12229816519 100644
--- a/engines/tetraedge/te/te_core.cpp
+++ b/engines/tetraedge/te/te_core.cpp
@@ -205,6 +205,9 @@ Common::FSNode TeCore::findFile(const Common::Path &path) const {
 		"Part1-Full/PC-MacOSX/DefaultDistributor", // Amerzone
 		"Part2-Full/PC-MacOSX/DefaultDistributor", // Amerzone
 		"Part3-Full/PC-MacOSX/DefaultDistributor", // Amerzone
+		"Part1-Full/iPhone-iPad-Android", // Amerzone
+		"Part2-Full/iPhone-iPad-Android", // Amerzone
+		"Part3-Full/iPhone-iPad-Android", // Amerzone
 		"Part1-Part2-Part3-Full/HD",			// Amerzone
 		"Part1-Part2-Part3-Full",				// Amerzone
 		"Part1-Full/HD",						// Amerzone


Commit: 421b735fd79dfb0a248a568ed518a471c0c11361
    https://github.com/scummvm/scummvm/commit/421b735fd79dfb0a248a568ed518a471c0c11361
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Ensure video anim is stopped on unload

Changed paths:
    engines/tetraedge/te/te_tiled_surface.cpp


diff --git a/engines/tetraedge/te/te_tiled_surface.cpp b/engines/tetraedge/te/te_tiled_surface.cpp
index 414a5e169f1..de8dbd8f701 100644
--- a/engines/tetraedge/te/te_tiled_surface.cpp
+++ b/engines/tetraedge/te/te_tiled_surface.cpp
@@ -227,6 +227,9 @@ void TeTiledSurface::stop() {
 }
 
 void TeTiledSurface::unload() {
+	// Force stop
+	_frameAnim.reset();
+
 	if (_codec) {
 		delete _codec;
 		_codec = nullptr;


Commit: a3ac8f99aa34c7775b8f1c174b42ce5ee591d8e5
    https://github.com/scummvm/scummvm/commit/a3ac8f99aa34c7775b8f1c174b42ce5ee591d8e5
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Fix amerzone puzzle coordinates

Changed paths:
    engines/tetraedge/game/amerzone_game.cpp


diff --git a/engines/tetraedge/game/amerzone_game.cpp b/engines/tetraedge/game/amerzone_game.cpp
index aa83bc4c29b..5af4b0cdeae 100644
--- a/engines/tetraedge/game/amerzone_game.cpp
+++ b/engines/tetraedge/game/amerzone_game.cpp
@@ -374,7 +374,7 @@ bool AmerzoneGame::onPuzzleEnterAnimLoadTime() {
 	case 2:
 		_puzzleComputerHydra.setScale(TeVector3f32(1, 1, 0.0001f));
 		_puzzleComputerHydra.setPosition(TeVector3f32(0, 0, zoff));
-		_puzzleComputerHydra.setTargetCoordinates(2, 7, 2);
+		_puzzleComputerHydra.setTargetCoordinates(2, 2, 7);
 		_puzzleComputerHydra.enter();
 		break;
 	case 3:
@@ -557,6 +557,7 @@ void AmerzoneGame::update() {
 			_warpY->setMouseLeftUpForMakers();
 	}
 
+	// Note: _orientation*Y* is rotation around *X* axis, and vice-versa.
 	const TeQuaternion rot = TeQuaternion::fromEulerDegrees(TeVector3f32(_orientationY, _orientationX, 0));
 
 	if (_warpX)
@@ -580,6 +581,8 @@ bool AmerzoneGame::onVideoFinished() {
 	TeSpriteLayout *video = _inGameGui.spriteLayoutChecked("video");
 	Common::String vidPath = video->_tiledSurfacePtr->loadedPath();
 	video->setVisible(false);
+	video->_tiledSurfacePtr->unload();
+	video->_tiledSurfacePtr->setLoadedPath("");
 	Application *app = g_engine->getApplication();
 	_videoMusic.stop();
 	if (app->musicOn())


Commit: 89fb1c802a9a28759e24362f199552a04043a2bf
    https://github.com/scummvm/scummvm/commit/89fb1c802a9a28759e24362f199552a04043a2bf
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:26+09:00

Commit Message:
TETRAEDGE: Add video path workarounds for Amerzone

Changed paths:
    engines/tetraedge/game/lua_binds.cpp


diff --git a/engines/tetraedge/game/lua_binds.cpp b/engines/tetraedge/game/lua_binds.cpp
index 9fbacffcb9a..31664f8286d 100644
--- a/engines/tetraedge/game/lua_binds.cpp
+++ b/engines/tetraedge/game/lua_binds.cpp
@@ -79,10 +79,20 @@ static int tolua_ExportedFunctions_LoadObjectMaterials01(lua_State *L) {
 	return tolua_ExportedFunctions_LoadObjectMaterials00(L);
 }
 
-static void PlayMovie(const Common::String &vidpath, const Common::String &musicpath) {
+static void PlayMovie(Common::String vidpath, Common::String musicpath) {
 	Application *app = g_engine->getApplication();
 	app->mouseCursorLayout().load(app->defaultCursor());
 	Game *game = g_engine->getGame();
+
+	// WORKAROUND: Fix some broken paths in Amerzone
+	if (musicpath == "Videos/sc19.ogg")
+		musicpath = "Videos/019.ogg";
+	if (vidpath == "Videos/sc18.ogv") {
+		// Need the correct path for callback, call this first.
+		game->playMovie(vidpath, musicpath);
+		vidpath = "Videos/I_018_P2_001.ogv";
+	}
+
 	game->playMovie(vidpath, musicpath);
 }
 


Commit: e10bf501d5f3b06888d3c19eae8cdf536dbfd91f
    https://github.com/scummvm/scummvm/commit/e10bf501d5f3b06888d3c19eae8cdf536dbfd91f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-05-08T19:20:27+09:00

Commit Message:
TETRAEDGE: Allow closing game dialogs with escape

This is not ideal behavior but can help work around game bugs.

Changed paths:
    engines/tetraedge/game/game.cpp
    engines/tetraedge/game/game.h
    engines/tetraedge/tetraedge.cpp
    engines/tetraedge/tetraedge.h


diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index 32c7aab85df..fbf633d052f 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -81,6 +81,12 @@ void Game::addNoScale2Child(TeLayout *layout) {
 	}
 }
 
+void Game::closeDialogs() {
+	_documentsBrowser.hideDocument();
+	_documentsBrowser.leave();
+	_inventory.leave();
+}
+
 /*static*/
 TeI3DObject2 *Game::findLayoutByName(TeLayout *parent, const Common::String &name) {
 	// Seems like this is never used?
@@ -169,7 +175,6 @@ bool Game::onAnswered(const Common::String &val) {
 	return false;
 }
 
-
 bool Game::onInventoryButtonValidated() {
 	_inventoryMenu.enter();
 	return false;
@@ -335,6 +340,9 @@ bool Game::playMovie(const Common::String &vidPath, const Common::String &musicP
 		return true;
 	} else {
 		warning("Failed to load movie %s", vidPath.c_str());
+		// Ensure the correct finished event gets called anyway.
+		videoSpriteLayout->_tiledSurfacePtr->setLoadedPath(vidPath);
+		onVideoFinished();
 		return false;
 	}
 }
@@ -472,7 +480,12 @@ Common::Error Game::syncGame(Common::Serializer &s) {
 	// the inventory item count.  We use a large version number which would never
 	// be the inventory count.
 	//
-	if (!s.syncVersion(1000))
+	// Version history:
+	//  1000 - original sybeira 1/2 data
+	//  1001 - added document browser information for Amerzone, currently unused
+	//         in syberia but synced anyway for simplicity.
+	//
+	if (!s.syncVersion(1001))
 		error("Save game version too new: %d", s.getVersion());
 
 	if (s.getVersion() < 1000) {
@@ -482,6 +495,9 @@ Common::Error Game::syncGame(Common::Serializer &s) {
 		inventory().syncState(s);
 	}
 
+	if (s.getVersion() > 1000)
+		documentsBrowser().syncState(s);
+
 	if (!g_engine->gameIsAmerzone())
 		inventory().cellphone()->syncState(s);
 
diff --git a/engines/tetraedge/game/game.h b/engines/tetraedge/game/game.h
index 24c94cad39b..4aff95024f0 100644
--- a/engines/tetraedge/game/game.h
+++ b/engines/tetraedge/game/game.h
@@ -61,6 +61,8 @@ public:
 
 	virtual bool changeWarp(const Common::String &zone, const Common::String &scene, bool fadeFlag) = 0;
 
+	void closeDialogs();
+
 	virtual void draw() = 0;
 	virtual void enter() = 0; // will load game if _loadName is set.
 	// Note: game uses ILayouts here..
diff --git a/engines/tetraedge/tetraedge.cpp b/engines/tetraedge/tetraedge.cpp
index 5762e13c6c3..f2942a55d41 100644
--- a/engines/tetraedge/tetraedge.cpp
+++ b/engines/tetraedge/tetraedge.cpp
@@ -200,6 +200,12 @@ Common::Error TetraedgeEngine::loadGameStream(Common::SeekableReadStream *stream
 	return retval;
 }
 
+void TetraedgeEngine::closeGameDialogs() {
+	if (!_game)
+		return;
+	_game->closeDialogs();
+}
+
 void TetraedgeEngine::configureSearchPaths() {
 	const Common::FSNode gameDataDir(ConfMan.get("path"));
 	if (_gameDescription->platform != Common::kPlatformIOS)
@@ -215,11 +221,19 @@ int TetraedgeEngine::getDefaultScreenHeight() const {
 }
 
 bool TetraedgeEngine::onKeyUp(const Common::KeyState &state) {
-	if (state.keycode == Common::KEYCODE_l) {
+	switch (state.keycode) {
+	case Common::KEYCODE_l:
 		if (loadGameDialog())
 			_game->initLoadedBackupData();
-	} else if (state.keycode == Common::KEYCODE_s) {
+		break;
+	case Common::KEYCODE_s:
 		saveGameDialog();
+		break;
+	case Common::KEYCODE_ESCAPE:
+		closeGameDialogs();
+		break;
+	default:
+		break;
 	}
 
 	return false;
diff --git a/engines/tetraedge/tetraedge.h b/engines/tetraedge/tetraedge.h
index fa85516957f..012982d9497 100644
--- a/engines/tetraedge/tetraedge.h
+++ b/engines/tetraedge/tetraedge.h
@@ -81,6 +81,8 @@ public:
 
 	uint32 getFeatures() const;
 
+	void closeGameDialogs();
+
 	/**
 	 * Returns the game Id
 	 */




More information about the Scummvm-git-logs mailing list