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

whoozle noreply at scummvm.org
Mon Jul 20 20:16:03 UTC 2026


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

Summary:
4fce6109cf PHOENIXVR: add V2 command stubs for pharaon curse level 1
c0e26d83c3 PHOENIXVR: Fix V2 VR face order


Commit: 4fce6109cf5f39fa838a0df4ba47ec1ead789bb5
    https://github.com/scummvm/scummvm/commit/4fce6109cf5f39fa838a0df4ba47ec1ead789bb5
Author: Vladimir Menshakov (vladimir.menshakov at gmail.com)
Date: 2026-07-20T19:43:49+01:00

Commit Message:
PHOENIXVR: add V2 command stubs for pharaon curse level 1

Changed paths:
    engines/phoenixvr/commands_v2.cpp


diff --git a/engines/phoenixvr/commands_v2.cpp b/engines/phoenixvr/commands_v2.cpp
index 65a3df66756..0cab6d24967 100644
--- a/engines/phoenixvr/commands_v2.cpp
+++ b/engines/phoenixvr/commands_v2.cpp
@@ -67,6 +67,29 @@ 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");
+	}
+};
+
+struct Leave_Save : public Command {
+	Leave_Save(const Common::Array<Common::String> &args) {}
+	void exec(ExecutionContext &ctx) const override {
+		debug("leave save");
+	}
+};
+
+struct Save_Slot : public Command {
+	int index;
+	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());
+	}
+};
+
 struct Goto_Warp : public Command {
 	Common::String name;
 	Goto_Warp(const Common::Array<Common::String> &args) : name(args[0]) {}
@@ -88,6 +111,41 @@ struct Play_AnimBloc : public Command {
 	}
 };
 
+struct Play_Amb : public Command {
+	Common::String path;
+	int volume;
+	int loops;
+	Play_Amb(const Common::Array<Common::String> &args) : path(args[0]), volume(atoi(args[1].c_str())), loops(atoi(args[2].c_str())) {}
+	void exec(ExecutionContext &ctx) const override {
+		g_engine->playSound(path, Audio::Mixer::kMusicSoundType, 100, loops);
+	}
+};
+
+struct Delay_Sound : public Command {
+	Common::String path;
+	int delay;
+	int volume;
+	int loops;
+	Delay_Sound(const Common::Array<Common::String> &args) : path(args[0]), delay(atoi(args[1].c_str())), volume(atoi(args[2].c_str())), loops(atoi(args[3].c_str())) {}
+	void exec(ExecutionContext &ctx) const override {
+		g_engine->playSound(path, Audio::Mixer::kMusicSoundType, 100, loops);
+	}
+};
+
+struct Play_3DSound : public Command {
+	Common::String path;
+	int angle1;
+	int angle2;
+	int volume;
+	int loops;
+	Play_3DSound(const Common::Array<Common::String> &args) : path(args[0]),
+															  angle1(atoi(args[1].c_str())), angle2(atoi(args[2].c_str())),
+															  volume(atoi(args[3].c_str())), loops(atoi(args[4].c_str())) {}
+	void exec(ExecutionContext &ctx) const override {
+		g_engine->playSound(path, Audio::Mixer::kMusicSoundType, 100, loops, true, angle1);
+	}
+};
+
 struct Play_Sound : public Command {
 	Common::String sound;
 	int volume;
@@ -239,6 +297,21 @@ struct Set_Lensflare : public Command {
 	}
 };
 
+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());
+	}
+};
+
+struct Stop_Light : public Command {
+	Stop_Light(const Common::Array<Common::String> &args) {}
+	void exec(ExecutionContext &ctx) const override {
+		debug("stop light");
+	}
+};
+
 struct Set_Jump_Key : public Command {
 	Common::String key;
 	Common::String warp;
@@ -278,6 +351,15 @@ struct Load_Slot : public Command {
 	}
 };
 
+struct Start_Timer : public Command {
+	float seconds;
+	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());
+	}
+};
+
 struct Stop_Timer : public Command {
 	Stop_Timer(const Common::Array<Common::String> &args) {}
 	void exec(ExecutionContext &ctx) const override {
@@ -285,27 +367,54 @@ struct Stop_Timer : public Command {
 	}
 };
 
+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));
+	}
+};
+
+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));
+	}
+};
+
 } // namespace
 
 #define COMMAND_LIST(E) \
 	E(Add)              \
 	E(Cursor_Load)      \
 	E(Cursor_Set)       \
+	E(Delay_Sound)      \
+	E(Enter_Level)      \
 	E(Fade)             \
 	E(Go_Back)          \
 	E(Goto_Level)       \
 	E(Goto_Warp)        \
+	E(Leave_Save)       \
+	E(Limit_View)       \
 	E(Load_Slot)        \
+	E(Play_3DSound)     \
+	E(Play_Amb)         \
+	E(Play_AnimBloc)    \
 	E(Play_Movie)       \
 	E(Play_Sound)       \
-	E(Play_AnimBloc)    \
 	E(Retrieve_State)   \
+	E(Save_Slot)        \
+	E(Set_Jump_Key)     \
 	E(Set_Lens)         \
 	E(Set_Lensflare)    \
-	E(Set_Jump_Key)     \
+	E(Set_View_Angle)   \
 	E(Sprite_Load)      \
 	E(Sprite_Screen)    \
+	E(Start_Light)      \
+	E(Start_Timer)      \
 	E(Stop_All_Sounds)  \
+	E(Stop_Light)       \
 	E(Stop_Sound)       \
 	E(Stop_Timer)       \
 	E(Store_State)      \


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

Commit Message:
PHOENIXVR: Fix V2 VR face order

Changed paths:
    engines/phoenixvr/vr.cpp


diff --git a/engines/phoenixvr/vr.cpp b/engines/phoenixvr/vr.cpp
index 96eae5e43bd..517fe30744b 100644
--- a/engines/phoenixvr/vr.cpp
+++ b/engines/phoenixvr/vr.cpp
@@ -462,7 +462,7 @@ struct Cube {
 	int faceIdx;
 };
 
-Cube toCube(float x, float y, float z) {
+Cube toCube(float x, float y, float z, bool v2) {
 	Cube cube = {};
 
 	float absX = ABS(x);
@@ -479,37 +479,37 @@ Cube toCube(float x, float y, float z) {
 		maxAxis = absX;
 		cx = y;
 		cy = z;
-		cube.faceIdx = 4;
+		cube.faceIdx = v2 ? 0 : 4;
 	}
 	if (!isXPositive && absX >= absY && absX >= absZ) {
 		maxAxis = absX;
 		cx = -y;
 		cy = z;
-		cube.faceIdx = 5;
+		cube.faceIdx = v2 ? 3 : 5;
 	}
 	if (isYPositive && absY >= absX && absY >= absZ) {
 		maxAxis = absY;
 		cx = -x;
 		cy = z;
-		cube.faceIdx = 3;
+		cube.faceIdx = v2 ? 1 : 3;
 	}
 	if (!isYPositive && absY >= absX && absY >= absZ) {
 		maxAxis = absY;
 		cx = x;
 		cy = z;
-		cube.faceIdx = 1;
+		cube.faceIdx = v2 ? 2 : 1;
 	}
 	if (isZPositive && absZ >= absX && absZ >= absY) {
 		maxAxis = absZ;
 		cx = y;
 		cy = -x;
-		cube.faceIdx = 0;
+		cube.faceIdx = v2 ? 5 : 0;
 	}
 	if (!isZPositive && absZ >= absX && absZ >= absY) {
 		maxAxis = absZ;
 		cx = y;
 		cy = x;
-		cube.faceIdx = 2;
+		cube.faceIdx = v2 ? 4 : 2;
 	}
 
 	// Convert range from −1 to 1 to 0 to 1
@@ -665,7 +665,7 @@ void VR::renderVR(Graphics::Screen *screen, float ax, float ay, float fov, float
 		Vector3d ray = line;
 
 		for (int dstX = 0; dstX != w; ++dstX, ray += incrementX, ++dst) {
-			auto cube = toCube(ray.x(), ray.y(), ray.z());
+			auto cube = toCube(ray.x(), ray.y(), ray.z(), _v2);
 			int srcX = static_cast<int>(faceSize * cube.x);
 			int srcY = static_cast<int>(kVRFaceSize * cube.y);
 			int tileId = cube.faceIdx << 2;




More information about the Scummvm-git-logs mailing list