[Scummvm-git-logs] scummvm master -> 731565e5eb57dc09579571839a736b9d8824c5e3

whoozle noreply at scummvm.org
Mon Jul 20 23:06:14 UTC 2026


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

Summary:
62a367012b PHOENIXVR: Center video frames
c418c7bfce PHOENIXVR: Add JUMP chunk handling (V2 restart frame)
2142024a00 PHOENIXVR: Log warnings from V2 stubs
6baa926e51 PHOENIXVR: Implement V2 commands which map to V1
3d45e25fa2 PHOENIXVR: Use gnomonic projection to compute 2D region rectangles
731565e5eb PHOENIXVR: Factor saveThumbnail out


Commit: 62a367012bec29d655d34b5edafc26e41ede01d8
    https://github.com/scummvm/scummvm/commit/62a367012bec29d655d34b5edafc26e41ede01d8
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T21:19:22+01:00

Commit Message:
PHOENIXVR: Center video frames

Pharaon Curse videos are 640x368, that is roughly 16:9.

Changed paths:
    engines/phoenixvr/phoenixvr.cpp


diff --git a/engines/phoenixvr/phoenixvr.cpp b/engines/phoenixvr/phoenixvr.cpp
index ab344c66ffb..9e15ea39cea 100644
--- a/engines/phoenixvr/phoenixvr.cpp
+++ b/engines/phoenixvr/phoenixvr.cpp
@@ -1042,8 +1042,10 @@ void PhoenixVREngine::playMovie(const Common::String &movie) {
 				palette.reset(new Graphics::Palette(dec->getPalette(), 256));
 			}
 			if (s) {
-				if (!s->format.isCLUT8() || palette)
-					_screen->simpleBlitFrom(*s, Graphics::FLIP_NONE, false, 0xff, palette.get());
+				if (!s->format.isCLUT8() || palette) {
+					Common::Point dstPos((g_system->getWidth() - s->w) / 2, (g_system->getHeight() - s->h) / 2);
+					_screen->simpleBlitFrom(*s, dstPos, Graphics::FLIP_NONE, false, 0xff, palette.get());
+				}
 			}
 		}
 


Commit: c418c7bfce2cdace7721e1d71d80386f847548c3
    https://github.com/scummvm/scummvm/commit/c418c7bfce2cdace7721e1d71d80386f847548c3
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T21:27:35+01:00

Commit Message:
PHOENIXVR: Add JUMP chunk handling (V2 restart frame)

Changed paths:
    engines/phoenixvr/vr.cpp


diff --git a/engines/phoenixvr/vr.cpp b/engines/phoenixvr/vr.cpp
index 517fe30744b..bfbfe4ae47c 100644
--- a/engines/phoenixvr/vr.cpp
+++ b/engines/phoenixvr/vr.cpp
@@ -54,7 +54,8 @@ namespace PhoenixVR {
 #define V2_CHUNK_ANIMATION (0x50574e41)
 /* FRAM */
 #define V2_CHUNK_ANIMATION_BLOCK (0x4d415246)
-#define V2_CHUNK_ANIMATION_RESTART (0xa0b1c221)
+/* JUMP */
+#define V2_CHUNK_ANIMATION_RESTART (0x504d554a)
 
 namespace {
 


Commit: 2142024a00bf829b53706a651ae9f60b14e02429
    https://github.com/scummvm/scummvm/commit/2142024a00bf829b53706a651ae9f60b14e02429
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T21:31:50+01:00

Commit Message:
PHOENIXVR: Log warnings from V2 stubs

Changed paths:
    engines/phoenixvr/commands_v2.cpp


diff --git a/engines/phoenixvr/commands_v2.cpp b/engines/phoenixvr/commands_v2.cpp
index 0cab6d24967..0f1174fbd47 100644
--- a/engines/phoenixvr/commands_v2.cpp
+++ b/engines/phoenixvr/commands_v2.cpp
@@ -54,7 +54,7 @@ struct Sub : public Command {
 struct Go_Back : public Command {
 	Go_Back(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("go back");
+		warning("go back");
 	}
 };
 
@@ -70,14 +70,14 @@ struct Goto_Level : public Command {
 struct Enter_Level : public Command {
 	Enter_Level(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("enter level");
+		warning("enter level");
 	}
 };
 
 struct Leave_Save : public Command {
 	Leave_Save(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("leave save");
+		warning("leave save");
 	}
 };
 
@@ -86,7 +86,7 @@ struct Save_Slot : public Command {
 	Common::String name;
 	Save_Slot(const Common::Array<Common::String> &args) : index(atoi(args[0].c_str())), name(args[1]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("save slot %d: %s", index, name.c_str());
+		warning("save slot %d: %s", index, name.c_str());
 	}
 };
 
@@ -226,7 +226,7 @@ struct Store_State : public Command {
 	Store_State(const Common::Array<Common::String> &args) : index(args[0]), var(args[1]) {}
 
 	void exec(ExecutionContext &ctx) const override {
-		debug("store state stub %s %s -> %d", index.c_str(), var.c_str(), valueOf(var));
+		warning("store state stub %s %s -> %d", index.c_str(), var.c_str(), valueOf(var));
 	}
 };
 
@@ -258,7 +258,7 @@ struct Sprite_Load : public Command {
 	Common::String unk;
 	Sprite_Load(const Common::Array<Common::String> &args) : name(args[0]), path(args[1]), unk(args[2]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("sprite load %s %s %s", name.c_str(), path.c_str(), unk.c_str());
+		warning("sprite load %s %s %s", name.c_str(), path.c_str(), unk.c_str());
 	}
 };
 
@@ -276,7 +276,7 @@ struct Sprite_Screen : public Command {
 			y = args[3];
 	}
 	void exec(ExecutionContext &ctx) const override {
-		debug("sprite screen %d %s %s %s", index, name.c_str(), x.c_str(), y.c_str());
+		warning("sprite screen %d %s %s %s", index, name.c_str(), x.c_str(), y.c_str());
 	}
 };
 
@@ -286,14 +286,14 @@ struct Set_Lens : public Command {
 	Common::String unk;
 	Set_Lens(const Common::Array<Common::String> &args) : index(args[0]), name(args[1]), unk(args[2]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("set lens %s %s %s", index.c_str(), name.c_str(), unk.c_str());
+		warning("set lens %s %s %s", index.c_str(), name.c_str(), unk.c_str());
 	}
 };
 
 struct Set_Lensflare : public Command {
 	Set_Lensflare(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("set lensflare");
+		warning("set lensflare");
 	}
 };
 
@@ -301,14 +301,14 @@ struct Start_Light : public Command {
 	Common::String fx;
 	Start_Light(const Common::Array<Common::String> &args) : fx(args[0]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("start light %s", fx.c_str());
+		warning("start light %s", fx.c_str());
 	}
 };
 
 struct Stop_Light : public Command {
 	Stop_Light(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("stop light");
+		warning("stop light");
 	}
 };
 
@@ -317,7 +317,7 @@ struct Set_Jump_Key : public Command {
 	Common::String warp;
 	Set_Jump_Key(const Common::Array<Common::String> &args) : key(args[0]), warp(args.size() > 1 ? args[1] : Common::String{}) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("set jump key %s %s", key.c_str(), warp.c_str());
+		warning("set jump key %s %s", key.c_str(), warp.c_str());
 	}
 };
 
@@ -356,7 +356,7 @@ struct Start_Timer : public Command {
 	Common::String warp;
 	Start_Timer(const Common::Array<Common::String> &args) : seconds(atof(args[0].c_str())), warp(args[1].c_str()) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("start timer %g %s", seconds, warp.c_str());
+		warning("start timer %g %s", seconds, warp.c_str());
 	}
 };
 
@@ -371,7 +371,7 @@ struct Limit_View : public Command {
 	Common::String angle1, angle2;
 	Limit_View(const Common::Array<Common::String> &args) : angle1(args[0]), angle2(args[1]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("limit view %d %d", valueOf(angle1), valueOf(angle2));
+		warning("limit view %d %d", valueOf(angle1), valueOf(angle2));
 	}
 };
 
@@ -379,7 +379,7 @@ struct Set_View_Angle : public Command {
 	Common::String angle1, angle2;
 	Set_View_Angle(const Common::Array<Common::String> &args) : angle1(args[0]), angle2(args[1]) {}
 	void exec(ExecutionContext &ctx) const override {
-		debug("set view angle %d %d", valueOf(angle1), valueOf(angle2));
+		warning("set view angle %d %d", valueOf(angle1), valueOf(angle2));
 	}
 };
 


Commit: 6baa926e5125bb8a283fd065aa027791752ac6e5
    https://github.com/scummvm/scummvm/commit/6baa926e5125bb8a283fd065aa027791752ac6e5
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T23:34:10+01:00

Commit Message:
PHOENIXVR: Implement V2 commands which map to V1

Implement Set_Jump_Key and Go_Back, Exit_Game and Quit_URL

Changed paths:
    engines/phoenixvr/commands_v2.cpp


diff --git a/engines/phoenixvr/commands_v2.cpp b/engines/phoenixvr/commands_v2.cpp
index 0f1174fbd47..b04f2b6bada 100644
--- a/engines/phoenixvr/commands_v2.cpp
+++ b/engines/phoenixvr/commands_v2.cpp
@@ -54,7 +54,7 @@ struct Sub : public Command {
 struct Go_Back : public Command {
 	Go_Back(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
-		warning("go back");
+		g_engine->returnToWarp();
 	}
 };
 
@@ -313,11 +313,19 @@ struct Stop_Light : public Command {
 };
 
 struct Set_Jump_Key : public Command {
-	Common::String key;
+	int key;
 	Common::String warp;
-	Set_Jump_Key(const Common::Array<Common::String> &args) : key(args[0]), warp(args.size() > 1 ? args[1] : Common::String{}) {}
+	Set_Jump_Key(const Common::Array<Common::String> &args) : warp(args.size() > 1 ? args[1] : Common::String{}) {
+		auto &keyName = args[0];
+		if (keyName == "_KEY_ESCAPE")
+			key = 0;
+		else if (keyName == "_KEY_RIGHT_CLIC")
+			key = 12;
+		else
+			error("unhandled key name: %s", keyName.c_str());
+	}
 	void exec(ExecutionContext &ctx) const override {
-		warning("set jump key %s %s", key.c_str(), warp.c_str());
+		g_engine->lockKey(key, warp);
 	}
 };
 
@@ -383,6 +391,22 @@ struct Set_View_Angle : public Command {
 	}
 };
 
+struct Exit_Game : public Command {
+	Exit_Game(const Common::Array<Common::String> &args) {}
+	void exec(ExecutionContext &ctx) const override {
+		debug("exit game");
+		g_engine->quitGame();
+	}
+};
+
+struct Quit_URL : public Command {
+	Common::String name;
+	Quit_URL(const Common::Array<Common::String> &args) : name(args[0]) {}
+	void exec(ExecutionContext &ctx) const override {
+		debug("quit url: %s", name.c_str());
+	}
+};
+
 } // namespace
 
 #define COMMAND_LIST(E) \
@@ -391,6 +415,7 @@ struct Set_View_Angle : public Command {
 	E(Cursor_Set)       \
 	E(Delay_Sound)      \
 	E(Enter_Level)      \
+	E(Exit_Game)        \
 	E(Fade)             \
 	E(Go_Back)          \
 	E(Goto_Level)       \
@@ -403,6 +428,7 @@ struct Set_View_Angle : public Command {
 	E(Play_AnimBloc)    \
 	E(Play_Movie)       \
 	E(Play_Sound)       \
+	E(Quit_URL)         \
 	E(Retrieve_State)   \
 	E(Save_Slot)        \
 	E(Set_Jump_Key)     \


Commit: 3d45e25fa296b4c492a612da0e0b48292cb7c119
    https://github.com/scummvm/scummvm/commit/3d45e25fa296b4c492a612da0e0b48292cb7c119
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T23:50:08+01:00

Commit Message:
PHOENIXVR: Use gnomonic projection to compute 2D region rectangles

Changed paths:
    engines/phoenixvr/region_set.cpp


diff --git a/engines/phoenixvr/region_set.cpp b/engines/phoenixvr/region_set.cpp
index 8b231e785cb..b659d9c881f 100644
--- a/engines/phoenixvr/region_set.cpp
+++ b/engines/phoenixvr/region_set.cpp
@@ -44,10 +44,16 @@ RegionSet::RegionSet(Common::SeekableReadStream &s, bool vr) {
 			auto c = s.readFloatLE();
 			auto d = s.readFloatLE();
 			if (!vr) {
-				a = (a + 0.89f) * 360;
-				b = (b + 0.89f) * 360;
-				c = (2.25f - c) * 360;
-				d = (2.25f - d) * 360;
+				auto cx = g_system->getWidth() / 2, cy = g_system->getHeight() / 2;
+				static constexpr float kFocal = 350.0f;
+				auto left = cx + static_cast<int>(tan(a) * kFocal);
+				auto right = cx + static_cast<int>(tan(b) * kFocal);
+				auto top = cy + static_cast<int>(kFocal / tan(c) / cos(a));
+				auto bottom = cy + static_cast<int>(kFocal / tan(d) / cos(b));
+				a = left;
+				b = right;
+				c = top;
+				d = bottom;
 			}
 			_regions.push_back(Region{MIN(a, b), MAX(a, b), MIN(c, d), MAX(c, d)});
 			debug("region %s", _regions.back().toString().c_str());


Commit: 731565e5eb57dc09579571839a736b9d8824c5e3
    https://github.com/scummvm/scummvm/commit/731565e5eb57dc09579571839a736b9d8824c5e3
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-21T00:03:46+01:00

Commit Message:
PHOENIXVR: Factor saveThumbnail out

Changed paths:
    engines/phoenixvr/phoenixvr.cpp
    engines/phoenixvr/phoenixvr.h


diff --git a/engines/phoenixvr/phoenixvr.cpp b/engines/phoenixvr/phoenixvr.cpp
index 9e15ea39cea..dff2f0513c4 100644
--- a/engines/phoenixvr/phoenixvr.cpp
+++ b/engines/phoenixvr/phoenixvr.cpp
@@ -754,6 +754,12 @@ void PhoenixVREngine::restart() {
 	_loaded = false;
 }
 
+void PhoenixVREngine::saveThumbnail() {
+	// saving thumbnail
+	Common::ScopedPtr<Graphics::ManagedSurface> screenshot(_screen->scale(_thumbnail.w, _thumbnail.h, true, Graphics::FLIP_V));
+	_thumbnail.simpleBlitFrom(*screenshot);
+}
+
 bool PhoenixVREngine::goToWarp(const Common::String &warp, bool savePrev) {
 	debug("gotowarp %s, save prev: %d", warp.c_str(), savePrev);
 	if (_warp && _warp->vrFile == warp) {
@@ -772,9 +778,7 @@ bool PhoenixVREngine::goToWarp(const Common::String &warp, bool savePrev) {
 	if (savePrev) {
 		assert(_warpIdx >= 0);
 		_prevWarp = _warpIdx;
-		// saving thumbnail
-		Common::ScopedPtr<Graphics::ManagedSurface> screenshot(_screen->scale(_thumbnail.w, _thumbnail.h, true, Graphics::FLIP_V));
-		_thumbnail.simpleBlitFrom(*screenshot);
+		saveThumbnail();
 	}
 	return true;
 }
diff --git a/engines/phoenixvr/phoenixvr.h b/engines/phoenixvr/phoenixvr.h
index b6f34d681bf..1e048ce925e 100644
--- a/engines/phoenixvr/phoenixvr.h
+++ b/engines/phoenixvr/phoenixvr.h
@@ -283,6 +283,7 @@ private:
 	void pauseEngineIntern(bool pause) override;
 	Common::String getLevelLabel(const Common::String &script) const;
 	Common::String getLevelScript(const Level &level) const;
+	void saveThumbnail();
 
 private:
 	bool _hasFocus = true;




More information about the Scummvm-git-logs mailing list