[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