[Scummvm-git-logs] scummvm master -> c00574afaaa312b19f75570b85fcb2c1cdd7ccb0
tag2015
noreply at scummvm.org
Thu Nov 2 19:06:57 UTC 2023
This automated email contains information about 15 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
3cc56da41c Revert "AGS: Engine: don't Poll non-clickable GUIs"
fa71aeadf8 AGS: Clear dest rect before calling transBlit in play_video
23debc2ea5 AGS: Clear screen after video playback
006da655f0 AGS: Engine: a better error message for missing Audio sig in legacy saves
f6c9925e1b AGS: Engine: small improvement to legacy saves error messages
531a915261 AGS: Engine: hotfix config failing at cs filter names in "disabled"
a2b10cdac7 AGS: Engine: also removed filter name "none" from help, as non-working
c688b1d586 AGS: Engine: log warnings when Display or Say is called during fade-out
64edc1cdc2 AGS: Engine: restored faster String.Chars and Length variants for ASCII mode
5d885dc53a AGS: Updated build version (3.6.0.53)
604f0e8bb9 AGS: Fix fullscreen setting not being updated. PVS-Studio V523
9fa5bb64fb AGS: Silence redundant mouse warning
c75b84f7a3 AGS: Silence a couple audio related warnings
14c2624787 AGS: Add detection entries for some old games + minor renames
c00574afaa AGS: Add some new games/updates (steam / itch.io)
Commit: 3cc56da41ce4a45204e264e9be3d1a29ed038743
https://github.com/scummvm/scummvm/commit/3cc56da41ce4a45204e264e9be3d1a29ed038743
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:26+01:00
Commit Message:
Revert "AGS: Engine: don't Poll non-clickable GUIs"
This reverts commit c3589db5695eeeec8a2c4da35ef5607ca0b6ae3e,
which breaks GUI functions in Kathy Rain
Changed paths:
engines/ags/engine/main/game_run.cpp
engines/ags/shared/gui/gui_main.cpp
diff --git a/engines/ags/engine/main/game_run.cpp b/engines/ags/engine/main/game_run.cpp
index 7844ab4e854..d1d64425fc8 100644
--- a/engines/ags/engine/main/game_run.cpp
+++ b/engines/ags/engine/main/game_run.cpp
@@ -626,8 +626,6 @@ static void update_cursor_over_gui() {
for (auto &gui : _GP(guis)) {
if (!gui.IsDisplayed())
continue; // not on screen
- if (!gui.IsClickable())
- continue; // don't update non-clickable
// Don't touch GUI if "GUIs Turn Off When Disabled"
if ((_GP(game).options[OPT_DISABLEOFF] == kGuiDis_Off) &&
(_G(all_buttons_disabled) >= 0) &&
diff --git a/engines/ags/shared/gui/gui_main.cpp b/engines/ags/shared/gui/gui_main.cpp
index a95c7388670..44217c0cc44 100644
--- a/engines/ags/shared/gui/gui_main.cpp
+++ b/engines/ags/shared/gui/gui_main.cpp
@@ -416,9 +416,6 @@ void GUIMain::SetClickable(bool on) {
_flags |= kGUIMain_Clickable;
else
_flags &= ~kGUIMain_Clickable;
-
- if (!on)
- ResetOverControl();
}
void GUIMain::SetConceal(bool on) {
Commit: fa71aeadf8d614bb72250e1449db45b124c646af
https://github.com/scummvm/scummvm/commit/fa71aeadf8d614bb72250e1449db45b124c646af
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:26+01:00
Commit Message:
AGS: Clear dest rect before calling transBlit in play_video
When playing a stretched video, clear the destination rect to avoid the
frames being drawn on top of each other.
Fixes intro video in Pleurghburg Dark Ages
Changed paths:
engines/ags/engine/media/video/video.cpp
diff --git a/engines/ags/engine/media/video/video.cpp b/engines/ags/engine/media/video/video.cpp
index befd6f1c5ca..d2f1e6f5a74 100644
--- a/engines/ags/engine/media/video/video.cpp
+++ b/engines/ags/engine/media/video/video.cpp
@@ -98,9 +98,10 @@ static bool play_video(Video::VideoDecoder *decoder, const char *name, int flags
stretchVideo = false;
if (stretchVideo) {
+ scr.fillRect(Common::Rect(dstRect.Left, dstRect.Top, dstRect.Right + 1, dstRect.Bottom + 1), 0);
scr.transBlitFrom(*frame, Common::Rect(0, 0, frame->w, frame->h),
- Common::Rect(dstRect.Left, dstRect.Top, dstRect.Right + 1, dstRect.Bottom + 1),
- decoder->getPalette());
+ Common::Rect(dstRect.Left, dstRect.Top, dstRect.Right + 1, dstRect.Bottom + 1),
+ decoder->getPalette());
} else {
scr.blitFrom(*frame, Common::Point(dstRect.Left, dstRect.Top), decoder->getPalette());
}
Commit: 23debc2ea53c788f32a8d2581ed0fc4eb2988f31
https://github.com/scummvm/scummvm/commit/23debc2ea53c788f32a8d2581ed0fc4eb2988f31
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:26+01:00
Commit Message:
AGS: Clear screen after video playback
Upstream already does this and is required to avoid glitches in some games
Changed paths:
engines/ags/engine/media/video/video.cpp
diff --git a/engines/ags/engine/media/video/video.cpp b/engines/ags/engine/media/video/video.cpp
index d2f1e6f5a74..912a0c2f3c6 100644
--- a/engines/ags/engine/media/video/video.cpp
+++ b/engines/ags/engine/media/video/video.cpp
@@ -135,6 +135,11 @@ static bool play_video(Video::VideoDecoder *decoder, const char *name, int flags
}
}
+ // Clear the screen after playback
+ if (_G(gfxDriver)->UsesMemoryBackBuffer())
+ _G(gfxDriver)->GetMemoryBackBuffer()->Clear();
+ render_to_screen();
+
invalidate_screen();
return true;
Commit: 006da655f04b1ed4b3f6a18021a0995043259016
https://github.com/scummvm/scummvm/commit/006da655f04b1ed4b3f6a18021a0995043259016
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:26+01:00
Commit Message:
AGS: Engine: a better error message for missing Audio sig in legacy saves
Also removed audioclips number check, as that's not necessary for saves.
>From upstream bc355721b7b06c5b7b2d3da6a422be2f59c651a1 and
96724015d86094c08e926105438db216d58d8532
Changed paths:
engines/ags/engine/game/savegame_v321.cpp
diff --git a/engines/ags/engine/game/savegame_v321.cpp b/engines/ags/engine/game/savegame_v321.cpp
index 9dc3bca0ebb..3b14f9bd8c6 100644
--- a/engines/ags/engine/game/savegame_v321.cpp
+++ b/engines/ags/engine/game/savegame_v321.cpp
@@ -410,10 +410,8 @@ static HSaveError restore_game_views(Stream *in) {
return HSaveError::None();
}
-static HSaveError restore_game_audioclips_and_crossfade(Stream *in, GameDataVersion data_ver, RestoredData &r_data) {
- if ((uint32_t)in->ReadInt32() != _GP(game).audioClips.size()) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of Audio Clips.");
- }
+static HSaveError restore_game_audio_and_crossfade(Stream *in, GameDataVersion data_ver, RestoredData &r_data) {
+ in->ReadInt32(); // audio clips count, ignore
for (int i = 0; i < TOTAL_AUDIO_CHANNELS_v320; ++i) {
RestoredData::ChannelInfo &chan_info = r_data.AudioChans[i];
@@ -516,10 +514,10 @@ HSaveError restore_save_data_v321(Stream *in, GameDataVersion data_ver, const Pr
return err;
if (static_cast<uint32_t>(in->ReadInt32()) != (MAGICNUMBER + 1)) {
- return new SavegameError(kSvgErr_InconsistentFormat, "MAGICNUMBER not found before Audio Clips.");
+ return new SavegameError(kSvgErr_InconsistentFormat, "Audio section header expected but not found.");
}
- err = restore_game_audioclips_and_crossfade(in, data_ver, r_data);
+ err = restore_game_audio_and_crossfade(in, data_ver, r_data);
if (!err)
return err;
Commit: f6c9925e1b338b609763f3921e6c57e04334b041
https://github.com/scummvm/scummvm/commit/f6c9925e1b338b609763f3921e6c57e04334b041
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Engine: small improvement to legacy saves error messages
>From upstream 1be6c5816b4da09a7289465d83b34b34d2107e3d
Changed paths:
engines/ags/engine/game/savegame_v321.cpp
diff --git a/engines/ags/engine/game/savegame_v321.cpp b/engines/ags/engine/game/savegame_v321.cpp
index 3b14f9bd8c6..7e193b777ae 100644
--- a/engines/ags/engine/game/savegame_v321.cpp
+++ b/engines/ags/engine/game/savegame_v321.cpp
@@ -71,6 +71,31 @@ using namespace AGS::Engine;
static const uint32_t MAGICNUMBER = 0xbeefcafe;
+inline bool AssertGameContent(HSaveError &err, int game_val, int sav_val, const char *content_name, bool warn_only = false) {
+ if (game_val != sav_val) {
+ String msg = String::FromFormat("Mismatching number of %s (game: %d, save: %d).", content_name, game_val, sav_val);
+ if (warn_only)
+ Debug::Printf(kDbgMsg_Warn, "WARNING: restored save may be incompatible: %s", msg.GetCStr());
+ else
+ err = new SavegameError(kSvgErr_GameContentAssertion, msg);
+ }
+ return warn_only || (game_val == sav_val);
+}
+
+template<typename TObject>
+inline bool AssertAndCopyGameContent(const std::vector<TObject> &old_list, std::vector<TObject> &new_list,
+ HSaveError &err, const char *content_name, bool warn_only = false) {
+ if (!AssertGameContent(err, old_list.size(), new_list.size(), content_name, warn_only))
+ return false;
+
+ if (new_list.size() < old_list.size()) {
+ size_t copy_at = new_list.size();
+ new_list.resize(old_list.size());
+ Common::copy(old_list.begin() + copy_at, old_list.end(), new_list.begin() + copy_at);
+ }
+ return true;
+}
+
static HSaveError restore_game_head_dynamic_values(Stream *in, RestoredData &r_data) {
r_data.FPS = in->ReadInt32();
r_data.CursorMode = in->ReadInt32();
@@ -95,24 +120,24 @@ static void restore_game_spriteset(Stream *in) {
}
static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, RestoredData &r_data) {
+ HSaveError err;
// read the global script data segment
size_t gdatasize = (uint32_t)in->ReadInt32();
- if (pp.GlScDataSize != gdatasize) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching size of global script data.");
- }
+ if (!AssertGameContent(err, pp.GlScDataSize, gdatasize, "global script data"))
+ return err;
r_data.GlobalScript.Len = gdatasize;
r_data.GlobalScript.Data.resize(gdatasize);
if (gdatasize > 0)
in->Read(&r_data.GlobalScript.Data.front(), gdatasize);
- if ((uint32_t)in->ReadInt32() != _G(numScriptModules)) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of script modules.");
- }
+ uint32_t num_modules = (uint32_t)in->ReadInt32();
+ if (!AssertGameContent(err, _G(numScriptModules), num_modules, "Script Modules"))
+ return err;
r_data.ScriptModules.resize(_G(numScriptModules));
for (size_t i = 0; i < _G(numScriptModules); ++i) {
size_t module_size = (uint32_t)in->ReadInt32();
if (pp.ScMdDataSize[i] != module_size) {
- return new SavegameError(kSvgErr_GameContentAssertion, String::FromFormat("Mismatching size of script module data, module %d.", i));
+ return new SavegameError(kSvgErr_GameContentAssertion, String::FromFormat("Mismatching size of script module data, module %zu.", i));
}
r_data.ScriptModules[i].Len = module_size;
r_data.ScriptModules[i].Data.resize(module_size);
@@ -224,31 +249,6 @@ void ReadAnimatedButtons_Aligned(Stream *in, int num_abuts) {
}
}
-inline bool AssertGameContent(HSaveError &err, int game_val, int sav_val, const char *content_name, bool warn_only = false) {
- if (game_val != sav_val) {
- String msg = String::FromFormat("Mismatching number of %s (game: %d, save: %d).", content_name, game_val, sav_val);
- if (warn_only)
- Debug::Printf(kDbgMsg_Warn, "WARNING: restored save may be incompatible: %s", msg.GetCStr());
- else
- err = new SavegameError(kSvgErr_GameContentAssertion, msg);
- }
- return warn_only || (game_val == sav_val);
-}
-
-template<typename TObject>
-inline bool AssertAndCopyGameContent(const std::vector<TObject> &old_list, std::vector<TObject> &new_list,
- HSaveError &err, const char *content_name, bool warn_only = false) {
- if (!AssertGameContent(err, old_list.size(), new_list.size(), content_name, warn_only))
- return false;
-
- if (new_list.size() < old_list.size()) {
- size_t copy_at = new_list.size();
- new_list.resize(old_list.size());
- Common::copy(old_list.begin() + copy_at, old_list.end(), new_list.begin() + copy_at);
- }
- return true;
-}
-
static HSaveError restore_game_gui(Stream *in) {
// Legacy saves allowed to resize gui lists, and stored full gui data
// (could be unintentional side effect). Here we emulate this for
@@ -287,9 +287,9 @@ static HSaveError restore_game_gui(Stream *in) {
}
static HSaveError restore_game_audiocliptypes(Stream *in) {
- if ((uint32_t)in->ReadInt32() != _GP(game).audioClipTypes.size()) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of Audio Clip Types.");
- }
+ HSaveError err;
+ if (!AssertGameContent(err, _GP(game).audioClipTypes.size(), (uint32_t)in->ReadInt32(), "Audio Clip Types"))
+ return err;
for (size_t i = 0; i < _GP(game).audioClipTypes.size(); ++i) {
_GP(game).audioClipTypes[i].ReadFromFile(in);
@@ -384,9 +384,9 @@ static void restore_game_displayed_room_status(Stream *in, GameDataVersion data_
}
static HSaveError restore_game_globalvars(Stream *in) {
- if (in->ReadInt32() != _G(numGlobalVars)) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Restore game error: mismatching number of Global Variables.");
- }
+ HSaveError err;
+ if (!AssertGameContent(err, _G(numGlobalVars), in->ReadInt32(), "Global Variables"))
+ return err;
for (int i = 0; i < _G(numGlobalVars); ++i) {
_G(globalvars)[i].Read(in);
@@ -395,9 +395,9 @@ static HSaveError restore_game_globalvars(Stream *in) {
}
static HSaveError restore_game_views(Stream *in) {
- if (in->ReadInt32() != _GP(game).numviews) {
- return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of Views.");
- }
+ HSaveError err;
+ if (!AssertGameContent(err, _GP(game).numviews, in->ReadInt32(), "Views"))
+ return err;
for (int bb = 0; bb < _GP(game).numviews; bb++) {
for (int cc = 0; cc < _GP(views)[bb].numLoops; cc++) {
@@ -419,7 +419,9 @@ static HSaveError restore_game_audio_and_crossfade(Stream *in, GameDataVersion d
chan_info.ClipID = in->ReadInt32();
if (chan_info.ClipID >= 0) {
if ((size_t)chan_info.ClipID >= _GP(game).audioClips.size()) {
- return new SavegameError(kSvgErr_GameObjectInitFailed, "Invalid audio clip index.");
+ return new SavegameError(kSvgErr_GameObjectInitFailed,
+ String::FromFormat("Invalid audio clip index %zu (valid range is 0..%zu)",
+ (size_t)chan_info.ClipID, _GP(game).audioClips.size() - 1));
}
chan_info.Pos = in->ReadInt32();
Commit: 531a91526170458fcb8534b551695d02b881103d
https://github.com/scummvm/scummvm/commit/531a91526170458fcb8534b551695d02b881103d
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Engine: hotfix config failing at cs filter names in "disabled"
>From upstream 79847cc5e59236cfd93d6d98218c01d5f3cfa03f
Changed paths:
engines/ags/shared/util/ini_util.cpp
engines/ags/shared/util/ini_util.h
diff --git a/engines/ags/shared/util/ini_util.cpp b/engines/ags/shared/util/ini_util.cpp
index 7584f2649e1..d954dec448f 100644
--- a/engines/ags/shared/util/ini_util.cpp
+++ b/engines/ags/shared/util/ini_util.cpp
@@ -82,6 +82,23 @@ String CfgReadString(const ConfigTree &cfg, const String §n, const String &i
return str;
}
+String CfgFindKey(const ConfigTree &cfg, const String §n, const String &item, bool nocase) {
+ const auto sec_it = cfg.find(sectn);
+ if (sec_it == cfg.end())
+ return "";
+ if (nocase) {
+ for (auto item_it : sec_it->_value) {
+ if (item_it._key.CompareNoCase(item) == 0)
+ return item_it._key;
+ }
+ } else {
+ const auto item_it = sec_it->_value.find(item);
+ if (item_it != sec_it->_value.end())
+ return item_it->_key;
+ }
+ return "";
+}
+
//-----------------------------------------------------------------------------
// ConfigWriter
//-----------------------------------------------------------------------------
diff --git a/engines/ags/shared/util/ini_util.h b/engines/ags/shared/util/ini_util.h
index 6e4ca6b71f0..6a09af4e3ba 100644
--- a/engines/ags/shared/util/ini_util.h
+++ b/engines/ags/shared/util/ini_util.h
@@ -50,6 +50,11 @@ inline bool CfgReadBoolInt(const ConfigTree &cfg, const String §n, const Str
float CfgReadFloat(const ConfigTree &cfg, const String §n, const String &item, float def = 0.f);
float CfgReadFloat(const ConfigTree &cfg, const String §n, const String &item, float min, float max, float def = 0.f);
String CfgReadString(const ConfigTree &cfg, const String §n, const String &item, const String &def = "");
+// Looks up for a item key in a given section, returns actual key if one exists, or empty string otherwise,
+// optionally compares item name in case-insensitive way.
+// NOTE: this is a compatibility hack, in case we cannot enforce key case-sensitivity in some case.
+String CfgFindKey(const ConfigTree &cfg, const String §n, const String &item, bool nocase = false);
+
//
// Helper functions for writing values into a ConfigTree
void CfgWriteInt(ConfigTree &cfg, const String §n, const String &item, int value);
Commit: a2b10cdac78376dc716110ef2203774b13d878f1
https://github.com/scummvm/scummvm/commit/a2b10cdac78376dc716110ef2203774b13d878f1
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Engine: also removed filter name "none" from help, as non-working
>From upstream c6d9d1b10cf1863ceaa8538d41b8df66216b2787
Changed paths:
engines/ags/engine/main/main.cpp
diff --git a/engines/ags/engine/main/main.cpp b/engines/ags/engine/main/main.cpp
index f5f8dc1f762..be5312f294f 100644
--- a/engines/ags/engine/main/main.cpp
+++ b/engines/ags/engine/main/main.cpp
@@ -97,7 +97,7 @@ void main_print_help() {
#endif
" --gfxfilter FILTER [SCALING]\n"
" Request graphics filter. Available options:\n"
- " none, linear, stdscale\n"
+ " stdscale, linear\n"
" (support may differ between graphic drivers);\n"
" Scaling is specified as:\n"
" proportional, round, stretch,\n"
Commit: c688b1d586e4561601ef2b8010337723d6f09568
https://github.com/scummvm/scummvm/commit/c688b1d586e4561601ef2b8010337723d6f09568
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Engine: log warnings when Display or Say is called during fade-out
>From upstream d7235fcef3c3ff042f9a4f9eed6ac0a250296927
Changed paths:
engines/ags/engine/ac/character.cpp
engines/ags/engine/ac/global_display.cpp
engines/ags/engine/main/game_run.cpp
diff --git a/engines/ags/engine/ac/character.cpp b/engines/ags/engine/ac/character.cpp
index 40df5f69017..3b153387a10 100644
--- a/engines/ags/engine/ac/character.cpp
+++ b/engines/ags/engine/ac/character.cpp
@@ -2290,6 +2290,8 @@ void _displayspeech(const char *texx, int aschar, int xx, int yy, int widd, int
if ((speakingChar->view < 0) || (speakingChar->view >= _GP(game).numviews))
quit("!DisplaySpeech: character has invalid view");
+ if (_GP(play).screen_is_faded_out > 0)
+ debug_script_warn("Warning: blocking Say call during fade-out.");
if (_GP(play).text_overlay_on > 0) {
debug_script_warn("DisplaySpeech: speech was already displayed (nested DisplaySpeech, perhaps room script and global script conflict?)");
return;
diff --git a/engines/ags/engine/ac/global_display.cpp b/engines/ags/engine/ac/global_display.cpp
index 20ff4dfa14c..543e44f5cfa 100644
--- a/engines/ags/engine/ac/global_display.cpp
+++ b/engines/ags/engine/ac/global_display.cpp
@@ -141,6 +141,9 @@ void DisplayMessage(int msnum) {
}
void DisplayAt(int xxp, int yyp, int widd, const char *text) {
+ if (_GP(play).screen_is_faded_out > 0)
+ debug_script_warn("Warning: blocking Display call during fade-out.");
+
data_to_game_coords(&xxp, &yyp);
widd = data_to_game_coord(widd);
@@ -153,6 +156,8 @@ void DisplayAtY(int ypos, const char *texx) {
const Rect &ui_view = _GP(play).GetUIViewport();
if ((ypos < -1) || (ypos >= ui_view.GetHeight()))
quitprintf("!DisplayAtY: invalid Y co-ordinate supplied (used: %d; valid: 0..%d)", ypos, ui_view.GetHeight());
+ if (_GP(play).screen_is_faded_out > 0)
+ debug_script_warn("Warning: blocking Display call during fade-out.");
// Display("") ... a bit of a stupid thing to do, so ignore it
if (texx[0] == 0)
diff --git a/engines/ags/engine/main/game_run.cpp b/engines/ags/engine/main/game_run.cpp
index d1d64425fc8..dfde76d5996 100644
--- a/engines/ags/engine/main/game_run.cpp
+++ b/engines/ags/engine/main/game_run.cpp
@@ -94,8 +94,7 @@ static void ProperExit() {
static void game_loop_check_problems_at_start() {
if ((_G(in_enters_screen) != 0) & (_G(displayed_room) == _G(starting_room)))
- quit("!A text script run in the Player Enters Screen event caused the\n"
- "screen to be updated. If you need to use Wait(), do so in After Fadein");
+ quit("!A text script run in the Player Enters Screen event caused the screen to be updated. If you need to use Wait(), do so in After Fadein");
if ((_G(in_enters_screen) != 0) && (_G(done_es_error) == 0)) {
debug_script_warn("Wait() was used in Player Enters Screen - use Enters Screen After Fadein instead");
_G(done_es_error) = 1;
Commit: 64edc1cdc238aa97bcef16a3fa0f932f197f3406
https://github.com/scummvm/scummvm/commit/64edc1cdc238aa97bcef16a3fa0f932f197f3406
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Engine: restored faster String.Chars and Length variants for ASCII mode
The purpose is to at least keep string iteration relatively fast in ASCII
game mode, for backwards compatibility.
Also fixed String.Length for plugins in Unicode mode.
>From upstream 052def762633796b5565fd0e79295392e5e43b52
Changed paths:
engines/ags/engine/ac/string.cpp
engines/ags/plugins/core/string.cpp
engines/ags/plugins/core/string.h
diff --git a/engines/ags/engine/ac/string.cpp b/engines/ags/engine/ac/string.cpp
index 1ac538c2271..d758acc2419 100644
--- a/engines/ags/engine/ac/string.cpp
+++ b/engines/ags/engine/ac/string.cpp
@@ -208,10 +208,21 @@ const char *String_UpperCase(const char *thisString) {
}
int String_GetChars(const char *texx, int index) {
- if ((index < 0) || (index >= ustrlen(texx)))
- return 0;
- return ugetat(texx, index);
+ if (get_uformat() == U_UTF8) {
+ if ((index < 0) || (index >= ustrlen(texx)))
+ return 0;
+ return ugetat(texx, index);
+ } else {
+ if ((index < 0) || (index >= (int)strlen(texx)))
+ return 0;
+ return texx[index];
+ }
}
+
+int String_GetLength(const char *texx) {
+ return (get_uformat() == U_UTF8) ? ustrlen(texx) : strlen(texx);
+}
+
int StringToInt(const char *stino) {
return atoi(stino);
}
@@ -427,9 +438,8 @@ RuntimeScriptValue Sc_String_GetChars(void *self, const RuntimeScriptValue *para
API_OBJCALL_INT_PINT(const char, String_GetChars);
}
-RuntimeScriptValue Sc_strlen(void *self, const RuntimeScriptValue *params, int32_t param_count) {
- ASSERT_SELF(strlen);
- return RuntimeScriptValue().SetInt32(strlen((const char *)self));
+RuntimeScriptValue Sc_String_GetLength(void *self, const RuntimeScriptValue *params, int32_t param_count) {
+ API_OBJCALL_INT(const char, String_GetLength);
}
//=============================================================================
@@ -458,7 +468,7 @@ void RegisterStringAPI() {
ccAddExternalObjectFunction("String::get_AsFloat", Sc_StringToFloat);
ccAddExternalObjectFunction("String::get_AsInt", Sc_StringToInt);
ccAddExternalObjectFunction("String::geti_Chars", Sc_String_GetChars);
- ccAddExternalObjectFunction("String::get_Length", Sc_strlen);
+ ccAddExternalObjectFunction("String::get_Length", Sc_String_GetLength);
}
} // namespace AGS3
diff --git a/engines/ags/plugins/core/string.cpp b/engines/ags/plugins/core/string.cpp
index 03849a063a2..8a52e37c274 100644
--- a/engines/ags/plugins/core/string.cpp
+++ b/engines/ags/plugins/core/string.cpp
@@ -49,7 +49,7 @@ void String::AGS_EngineStartup(IAGSEngine *engine) {
SCRIPT_METHOD(String::get_AsFloat, String::StringToFloat);
SCRIPT_METHOD(String::get_AsInt, String::StringToInt);
SCRIPT_METHOD(String::geti_Chars, String::GetChars);
- SCRIPT_METHOD(String::get_Length, String::strlen);
+ SCRIPT_METHOD(String::get_Length, String::GetLength);
}
void String::IsNullOrEmpty(ScriptMethodParams ¶ms) {
@@ -142,7 +142,7 @@ void String::GetChars(ScriptMethodParams ¶ms) {
params._result = AGS3::String_GetChars(texx, index);
}
-void String::strlen(ScriptMethodParams ¶ms) {
+void String::GetLength(ScriptMethodParams ¶ms) {
PARAMS1(const char *, s);
params._result = ::strlen(s);
}
diff --git a/engines/ags/plugins/core/string.h b/engines/ags/plugins/core/string.h
index ed012356fe9..a568f910dc1 100644
--- a/engines/ags/plugins/core/string.h
+++ b/engines/ags/plugins/core/string.h
@@ -52,7 +52,7 @@ public:
void StringToFloat(ScriptMethodParams ¶ms);
void StringToInt(ScriptMethodParams ¶ms);
void GetChars(ScriptMethodParams ¶ms);
- void strlen(ScriptMethodParams ¶ms);
+ void GetLength(ScriptMethodParams ¶ms);
};
} // namespace Core
Commit: 5d885dc53ac93a6c5c181777d97e3750f6f5a954
https://github.com/scummvm/scummvm/commit/5d885dc53ac93a6c5c181777d97e3750f6f5a954
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:27+01:00
Commit Message:
AGS: Updated build version (3.6.0.53)
Partially from upstream 8a66ece938ca73d8bcd49d86424f5e061673a660
Changed paths:
engines/ags/shared/core/def_version.h
diff --git a/engines/ags/shared/core/def_version.h b/engines/ags/shared/core/def_version.h
index 6f1cc0a1f96..f331ea5b5b5 100644
--- a/engines/ags/shared/core/def_version.h
+++ b/engines/ags/shared/core/def_version.h
@@ -22,9 +22,9 @@
#ifndef AGS_SHARED_CORE_DEFVERSION_H
#define AGS_SHARED_CORE_DEFVERSION_H
-#define ACI_VERSION_STR "3.6.0.52"
+#define ACI_VERSION_STR "3.6.0.53"
#if defined (RC_INVOKED) // for MSVC resource compiler
-#define ACI_VERSION_MSRC_DEF 3.6.0.52
+#define ACI_VERSION_MSRC_DEF 3.6.0.53
#endif
#define SPECIAL_VERSION ""
Commit: 604f0e8bb975957d631c46891b1367bd81f0c0c0
https://github.com/scummvm/scummvm/commit/604f0e8bb975957d631c46891b1367bd81f0c0c0
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:28+01:00
Commit Message:
AGS: Fix fullscreen setting not being updated. PVS-Studio V523
Changed paths:
engines/ags/engine/main/graphics_mode.cpp
diff --git a/engines/ags/engine/main/graphics_mode.cpp b/engines/ags/engine/main/graphics_mode.cpp
index 94d03c42ce7..3c95e533ef7 100644
--- a/engines/ags/engine/main/graphics_mode.cpp
+++ b/engines/ags/engine/main/graphics_mode.cpp
@@ -524,7 +524,7 @@ bool graphics_mode_set_render_frame(const FrameScaleDef &frame) {
if (_G(gfxDriver)->GetDisplayMode().IsWindowed())
_GP(SavedWindowedSetting).Frame = frame;
else
- _GP(SavedWindowedSetting).Frame = frame;
+ _GP(SavedFullscreenSetting).Frame = frame;
graphics_mode_update_render_frame();
return true;
}
Commit: 9fa5bb64fb6c522c4e1d7e3a21c816f8f3d84a28
https://github.com/scummvm/scummvm/commit/9fa5bb64fb6c522c4e1d7e3a21c816f8f3d84a28
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:28+01:00
Commit Message:
AGS: Silence redundant mouse warning
Mouse movement control is not supported, but the warning should only be
displayed when requesting the functionality
Changed paths:
engines/ags/engine/device/mouse_w32.cpp
diff --git a/engines/ags/engine/device/mouse_w32.cpp b/engines/ags/engine/device/mouse_w32.cpp
index e681a187bd8..97a7147d80e 100644
--- a/engines/ags/engine/device/mouse_w32.cpp
+++ b/engines/ags/engine/device/mouse_w32.cpp
@@ -156,7 +156,8 @@ void Mouse::UpdateGraphicArea() {
void Mouse::SetMovementControl(bool flag) {
ControlEnabled = false;
- warning("movement control not supported, mouse control can't be enabled");
+ if (flag)
+ warning("movement control not supported, mouse control can't be enabled");
ags_clear_mouse_movement();
}
Commit: c75b84f7a3fc4d0dd91c5ab4f4b907140eddeb4e
https://github.com/scummvm/scummvm/commit/c75b84f7a3fc4d0dd91c5ab4f4b907140eddeb4e
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:28+01:00
Commit Message:
AGS: Silence a couple audio related warnings
* Don't display the "same clip assigned" warning if both clips are null
* Don't show the set_speed warning when setting the default value on start
or load
Changed paths:
engines/ags/engine/media/audio/audio.cpp
engines/ags/engine/media/audio/clip_my_midi.cpp
engines/ags/engine/media/audio/sound_clip.cpp
diff --git a/engines/ags/engine/media/audio/audio.cpp b/engines/ags/engine/media/audio/audio.cpp
index c54c6715fef..54756291dfc 100644
--- a/engines/ags/engine/media/audio/audio.cpp
+++ b/engines/ags/engine/media/audio/audio.cpp
@@ -79,7 +79,7 @@ SOUNDCLIP *AudioChans::SetChannel(int index, SOUNDCLIP *ch) {
}
// TODO: store clips in smart pointers
- if (_GP(audioChannels)[index] == ch)
+ if (_GP(audioChannels)[index] != nullptr && _GP(audioChannels)[index] == ch)
Debug::Printf(kDbgMsg_Warn, "WARNING: channel %d - same clip assigned", index);
else if (_GP(audioChannels)[index] != nullptr && ch != nullptr)
Debug::Printf(kDbgMsg_Warn, "WARNING: channel %d - clip overwritten", index);
diff --git a/engines/ags/engine/media/audio/clip_my_midi.cpp b/engines/ags/engine/media/audio/clip_my_midi.cpp
index 22504f4d557..a1b24134971 100644
--- a/engines/ags/engine/media/audio/clip_my_midi.cpp
+++ b/engines/ags/engine/media/audio/clip_my_midi.cpp
@@ -112,7 +112,8 @@ void MYMIDI::set_panning(int newPanning) {
}
void MYMIDI::set_speed(int new_speed) {
- warning("TODO: MYMIDI::set_speed");
+ if (new_speed != 1000) // default
+ warning("TODO: MYMIDI::set_speed=%d", new_speed);
_speed = new_speed;
}
diff --git a/engines/ags/engine/media/audio/sound_clip.cpp b/engines/ags/engine/media/audio/sound_clip.cpp
index 9b72896ce47..4cba59bccd6 100644
--- a/engines/ags/engine/media/audio/sound_clip.cpp
+++ b/engines/ags/engine/media/audio/sound_clip.cpp
@@ -259,7 +259,8 @@ void SoundClipWaveBase::set_panning(int newPanning) {
}
void SoundClipWaveBase::set_speed(int new_speed) {
- warning("TODO: SoundClipWaveBase::set_speed");
+ if (new_speed != 1000) // default
+ warning("TODO: SoundClipWaveBase::set_speed=%d", new_speed);
_speed = new_speed;
}
Commit: 14c2624787736f802a8b252729fc43ecbc8e895e
https://github.com/scummvm/scummvm/commit/14c2624787736f802a8b252729fc43ecbc8e895e
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:28+01:00
Commit Message:
AGS: Add detection entries for some old games + minor renames
>From itch.io
Changed paths:
engines/ags/detection_tables.h
diff --git a/engines/ags/detection_tables.h b/engines/ags/detection_tables.h
index 92162a44396..a977fb88337 100644
--- a/engines/ags/detection_tables.h
+++ b/engines/ags/detection_tables.h
@@ -905,6 +905,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "chickenvsroad", "Chicken vs. Road" },
{ "chinesecheckers", "Chinese Checkers" },
{ "chlorinde", "White Bear Beauty Chlorinde and the Paranormal Parrot" },
+ { "chmelnica", "Chmelnica" },
{ "chocofrogs", "ChocoFrogs" },
{ "chongoadv", "Chongo's China Adventure" },
{ "chriscolumbus", "Christopher Columbus is an Idiot" },
@@ -1055,6 +1056,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "deathworeendlessfeathersdisk1", "Death Wore Endless Feathers Disk 1" },
{ "deckhex", "DeckHex" },
{ "deephope", "Deep Hope" },
+ { "deeplakemall", "Deep Lake Mall" },
{ "deepspacemission", "Deep Space Mission: Are we alone?" },
{ "deflus", "Deflus" },
{ "dehaunt", "Dehaunt" },
@@ -1128,6 +1130,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "dragonsfang", "Dragon's Fang" },
{ "dragonslayers", "The Dragon Slayers" },
{ "dragontales", "Dragon Tales" },
+ { "drawnflame", "Drawn to the Flame" },
{ "drchuckles", "Dr. Chuckles' Miniature World Of Madness" },
{ "dreadmacfarlane", "Dread Mac Farlane" },
{ "dreadmacfarlane2", "Dread Mac Farlane - Part 2" },
@@ -2679,6 +2682,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "seed", "Seed" },
{ "seekye", "Seek, and ye shall find" },
{ "self", "Self" },
+ { "senpaigetaway", "Senpai Getaway" },
{ "sepulchre", "Sepulchre" },
{ "serina", "Serina's Transylvanian Trip" },
{ "serum", "Serum" },
@@ -2807,6 +2811,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "spacewarep2", "Space War - Episode 2: Curien Strikes Back" },
{ "speedbuggy", "Speed Buggy: Manifold Destiny" },
{ "spellbound", "Spellbound: A Clive Mandrake Adventure" },
+ { "spia", "Spia" },
{ "spidertrek", "Spider Trek" },
{ "spilakassinn", "Spilakassinn - The Slot Machine" },
{ "spiritboard", "Midnight Spirit Board" },
@@ -3159,6 +3164,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "throwme", "Throw Me in the River" },
{ "thrymly", "Thrymly Disguised" },
{ "tigerhawk", "Tiger Hawk Squadron" },
+ { "tijdtripper", "TijdTripper" },
{ "tilepuzzle", "Tile Puzzle" },
{ "tillcows", "'Til Cows Tear us Apart" },
{ "tiltor", "TiLTOR" },
@@ -5128,7 +5134,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("alluminum", "mags_october.exe", "f120690b506dd63cd7d1112ea6af2f77", 1772481),
GAME_ENTRY("almostblue", "Almost Blue.exe", "2cb5f4d0914d1b1f0638c65da6689050", 231366019), // Eng-Ita
GAME_ENTRY_EN("aloneinthenight", "alone.exe", "0710e2ec71042617f565c01824f0cf3c", 9501343),
- GAME_ENTRY_EN_PLATFORM("alphabeta", "Alphabeta.exe", "5992f37daae6ea70654e9544e62ebb97", 2601798, "unfinished"),
+ GAME_ENTRY_EN_PLATFORM("alphabeta", "Alphabeta.exe", "5992f37daae6ea70654e9544e62ebb97", 2601798, "Unfinished"),
GAME_ENTRY("alphablock", "AlphaBlock.exe", "962449147c1646ee07d4022c79c6cd8b", 14360875), // Windows Eng-Swe
GAME_ENTRY("alphablock", "AlphaBlock.ags", "7eb3b39b6fb6a5dfcaa058ab371a22f2", 11327255), // Linux Eng-Swe
GAME_ENTRY_EN("alphadog", "alpha_dog.exe", "a01a9639ce30bdcd5bf82e528b51fa06", 3329253),
@@ -5568,6 +5574,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("chickenvsroad", "chicken.exe", "f120690b506dd63cd7d1112ea6af2f77", 30627567), //v2.71
GAME_ENTRY_EN("chinesecheckers", "chinesecheckers.exe", "06a03fe35791b0578068ab1873455463", 3391826),
GAME_ENTRY_EN("chlorinde", "ChlorindeMAGS.exe", "3c5bd1713959ff469cb46ebe5542cfcf", 10118602),
+ GAME_ENTRY("chmelnica", "CHMELNICA.exe", "0b7529a76f38283d6e850b8d56526fc1", 15145197), // Eng-Deu-Svk
GAME_ENTRY_LANG("chocofrogs", "Chocofrogs.exe", "615e73fc1874e92d60a1996c2330ea36", 6612789, Common::FR_FRA),
GAME_ENTRY_EN("chongoadv", "ChinaGame.exe", "23a67b6de10ec35e9f5a4dfc7d928222", 31148695),
GAME_ENTRY_EN("christmas42", "christmas_42.exe", "97f74f77ff127215fc44f35958fd2d55", 1546010),
@@ -5754,6 +5761,8 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("deckhex", "DeckHex.ags", "f83dddc650f81536028f6fd9fd81180b", 17562316), // Linux
GAME_ENTRY_EN("deckhex", "DeckHex.exe", "dbe9bab672130b9a84925cb6da64a3db", 20670688), // Windows
GAME_ENTRY_EN("deephope", "DeepHope.exe", "615e73fc1874e92d60a1996c2330ea36", 5039793),
+ GAME_ENTRY_EN("deeplakemall", "mallcop.exe", "c95ed40591a20cd5879d933e629b0ee3", 12976694), // Windows
+ GAME_ENTRY_EN("deeplakemall", "mallcop.ags", "ef42e6de3128eb41dfed09cc63084c83", 10488358), // Linux
GAME_ENTRY_EN("deepspacemission", "DSM.exe", "173f00e582eebd082d66f1291702b373", 340115162),
GAME_ENTRY_EN("dehaunt", "dehaunt.exe", "06a03fe35791b0578068ab1873455463", 3166435),
GAME_ENTRY_EN("deity", "Deity.exe", "371425d66b0d5dceedf1039fbde2656a", 3799508),
@@ -5811,8 +5820,8 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("doctormuttonchop", "muttonchop.exe", "57e261dd3bb45761af4a002775e45710", 5781714),
GAME_ENTRY_EN("doctormuttonchop", "muttonchop.exe", "57e261dd3bb45761af4a002775e45710", 5847364),
GAME_ENTRY_EN("doctorzoo", "drzoo.exe", "06a03fe35791b0578068ab1873455463", 2592578),
- GAME_ENTRY_EN_PLATFORM("dogescape", "dog.exe", "0710e2ec71042617f565c01824f0cf3c", 1508802, "unfinished"),
- GAME_ENTRY_EN_PLATFORM("dogescape", "mags_aug.exe", "0710e2ec71042617f565c01824f0cf3c", 1508802, "unfinished"),
+ GAME_ENTRY_EN_PLATFORM("dogescape", "dog.exe", "0710e2ec71042617f565c01824f0cf3c", 1508802, "Unfinished"),
+ GAME_ENTRY_EN_PLATFORM("dogescape", "mags_aug.exe", "0710e2ec71042617f565c01824f0cf3c", 1508802, "Unfinished"),
GAME_ENTRY_EN("dollshouse", "DOLLS house.exe", "0241777c2537fc5d077c05cde10bfa9f", 37582183),
GAME_ENTRY_EN("dollshouseinsanity", "dollshouse insanity.exe", "0241777c2537fc5d077c05cde10bfa9f", 52632190),
GAME_ENTRY_LANG("dommep1", "DOMM.exe", "06a03fe35791b0578068ab1873455463", 6026756, Common::FR_FRA),
@@ -5843,10 +5852,12 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("dragonscale", "DS.exe", "64fcaf7da0b257ea831f89c54be0ad72", 1366698),
GAME_ENTRY_EN("dragonslayers", "Slayers.exe", "3128b9f90e2f954ba704414ae854d10b", 6914586),
GAME_ENTRY_EN("dragontales", "dragont.exe", "465f972675db2da6040518221af5b0ba", 9240132),
+ GAME_ENTRY_EN("drawnflame", "Drawn to the Flame.exe", "7971a7c02d414dc8cb33b6ec36080b91", 51616597), // Windows
+ GAME_ENTRY_EN("drawnflame", "Drawn to the Flame.ags", "11ef599203105c5094f587c805871fb4", 49119557), // Linux
GAME_ENTRY_EN("drchuckles", "Dr Chuckles.exe", "07b30f9606f5dfde84cb66e926f7cc74", 615657195),
GAME_ENTRY("dreadmacfarlane", "Dread.exe", "615e806856b7730afadf1fea9a756b70", 11157310), // Eng-Fra
GAME_ENTRY_LANG("dreadmacfarlane", "Dread.exe", "615e806856b7730afadf1fea9a756b70", 11158073, Common::FR_FRA),
- GAME_ENTRY_PLATFORM("dreadmacfarlane2", "Dread2.exe", "fb787304e66798ba9d0172665a34f4cf", 5332574, "unfinished"),
+ GAME_ENTRY_PLATFORM("dreadmacfarlane2", "Dread2.exe", "fb787304e66798ba9d0172665a34f4cf", 5332574, "Unfinished"),
GAME_ENTRY_LANG("dreadmacfarlaneapprentie", "Dread Mac Farlane, apprentie pirate.exe", "01d0e6bd812abaa307bcb10fc2193416", 41950548, Common::FR_FRA),
GAME_ENTRY_EN("dreamychristmas", "Your dreamy Christmas.exe", "a4e6ec808b347f4456eae7c808e90727", 84727913), // Windows
GAME_ENTRY_EN("dreamychristmas", "Your dreamy Christmas.ags", "f61d34a8a5c9501962c7161fe127aba2", 81696341), // Linux
@@ -7670,6 +7681,10 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("seekye", "GGJ21.exe", "0564de07d3fd5c16e6947a647061913c", 5997590), // GameJam
GAME_ENTRY_EN("seekye", "GGJ21.exe", "0564de07d3fd5c16e6947a647061913c", 6448377), // itch.io
GAME_ENTRY("self", "Self.exe", "559b801e76fa37dc3b1fdd8844e7733a", 27802879), // Eng-Tur
+ GAME_ENTRY_LANG("senpaigetaway", "Senpai Getaway.exe", "c445aec957326f5873492d4bc79e08c6", 23708509, Common::SK_SVK), // Win 1.0
+ GAME_ENTRY_LANG("senpaigetaway", "Senpai Getaway.ags", "63fed98e48296f9216f5bdc571871352", 20591945, Common::SK_SVK),
+ GAME_ENTRY_LANG("senpaigetaway", "Senpai Getaway.exe", "c445aec957326f5873492d4bc79e08c6", 23708479, Common::SK_SVK), // Win 1.1
+ GAME_ENTRY_LANG("senpaigetaway", "Senpai Getaway.ags", "5835dc024e61cee34bb53092cbbb40db", 20591915, Common::SK_SVK),
GAME_ENTRY_EN("sepulchre", "sepulchre.exe", "38dce17f7f7b96badf3a88e11e7a9797", 28412866),
GAME_ENTRY_EN("serina", "Serinas Transylvanian Trip.exe", "8fd84e9331691d9fd1c393a383807b64", 11447796),
GAME_ENTRY_EN("serum", "Infected.exe", "06a03fe35791b0578068ab1873455463", 2226020),
@@ -7829,6 +7844,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("spacewarep2", "Space.exe", "3b7cceb3e4bdb031dc5d8f290936e94b", 4084181),
GAME_ENTRY_EN("speedbuggy", "Speed Buggy Manifold Destiny.exe", "5ce6a602a8393537d433330d81be0983", 54982833),
GAME_ENTRY_EN("spellbound", "Spellbound.exe", "588e5b40901f9c85df35ac60b9417eac", 8809110),
+ GAME_ENTRY_PLATFORM("spia", "Spia.exe", "2ac709a4ea3108235333846181c55603", 4471257, "Unfinished"),
GAME_ENTRY_EN("spidertrek", "Spider Trek.exe", "ba539d8020d4dcb134693e357e37e8ff", 4181363), // Windows
GAME_ENTRY_EN("spidertrek", "Spider Trek.ags", "6ef42c5f6cd0a61f400f0f465a9f8717", 1073503), // Linux
GAME_ENTRY_EN("spilakassinn", "Splakassinn.exe", "06a03fe35791b0578068ab1873455463", 2658189),
@@ -8272,6 +8288,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("throwme", "throwmeinriver.exe", "23a67b6de10ec35e9f5a4dfc7d928222", 101323436),
GAME_ENTRY_EN("thrymly", "Thrymly Disguised.exe", "5d3eaccd432b93d4387fd6c20838c18b", 15301211),
GAME_ENTRY_EN("tigerhawk", "Tiger Hawk Fighter.exe", "afe40dc1416dd51e896ee0444d799f07", 36051983),
+ GAME_ENTRY_PLATFORM("tijdtripper", "HUA_playthrough_v3.exe", "a524cbb1c51589903c4043b98917f1d9", 36053213, "Prototype"), // Eng-Hun
GAME_ENTRY_EN("tilepuzzle", "Puzzle01.exe", "615e73fc1874e92d60a1996c2330ea36", 2819964),
GAME_ENTRY_EN("tillcows", "Till Cows Tear Us Apart.exe", "2ee7b3c494b8f33b6967525ef07de69a", 53504480),
GAME_ENTRY_EN("tiltor", "Tiltor.exe", "f120690b506dd63cd7d1112ea6af2f77", 17561878),
Commit: c00574afaaa312b19f75570b85fcb2c1cdd7ccb0
https://github.com/scummvm/scummvm/commit/c00574afaaa312b19f75570b85fcb2c1cdd7ccb0
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2023-11-02T20:06:28+01:00
Commit Message:
AGS: Add some new games/updates (steam / itch.io)
Changed paths:
engines/ags/detection_tables.h
diff --git a/engines/ags/detection_tables.h b/engines/ags/detection_tables.h
index a977fb88337..157b0f6d69a 100644
--- a/engines/ags/detection_tables.h
+++ b/engines/ags/detection_tables.h
@@ -1914,6 +1914,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "meteorheadns3", "Meteorhead - The New Series - Episode III: Die unverträgliche Dreistigkeit des Schweins" },
{ "meteorheadns4", "Meteorhead - The New Series - Episode IV: Die Qual des Wals" },
{ "meteortale", "Meteor: A Tale About Earth's End" },
+ { "metrocity", "METRO CITY: Night Shift" },
{ "mi", "Mi" },
{ "mi0daementia", "Monkey Island 0 - Daementia" },
{ "mi0navidad", "Monkey Island 0 - Navidad" },
@@ -3239,6 +3240,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
{ "ultimalatinvii", "Ultima Latin VII" },
{ "unbound", "Unbound" },
{ "uncontrollable", "UNCONTROLLABLE" },
+ { "underthebed", "The Weird Thing Under The Bed" },
{ "underwateradv", "Underwater Adventures" },
{ "underworld", "The Underworld" },
{ "undyep1", "Hey Der, Undy! Episode I: De King of Pong" },
@@ -4556,6 +4558,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
DEMO_ENTRY_EN("crimsondiamond", "The Crimson Diamond Demo.exe", "69414fa4aa2cc5414a38cc166d44338b", 129741340),
DEMO_ENTRY_EN("crimsondiamond", "The Crimson Diamond DEMO v17.exe", "6f4d5442c166d215017764b119af9ffa", 235426199), // Win v17
DEMO_ENTRY_EN("crimsondiamond", "The Crimson Diamond Demo v18.exe", "38a49a28c0af599633006c09fe6c2f72", 131455545), // Win v18
+ DEMO_ENTRY_EN("crimsondiamond", "The Crimson Diamond Demo v19.exe", "38a49a28c0af599633006c09fe6c2f72", 131456250), // Win v19
DEMO_ENTRY_EN("crimsondiamond", "ac2game.dat", "69414fa4aa2cc5414a38cc166d44338b", 60147146), // macOS
DEMO_ENTRY_EN("crimsondiamond", "ac2game.dat", "69414fa4aa2cc5414a38cc166d44338b", 78610191), // macOS
DEMO_ENTRY_EN("crimsondiamond", "ac2game.dat", "69414fa4aa2cc5414a38cc166d44338b", 129741431), // macOS
@@ -6270,6 +6273,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_STEAM("heroinesquest", "heroine's quest.exe", "35b93e905a5aeba8fafd0e5b0f4cb9b6", 7014402), // v1.2.6 Multilang
GAME_ENTRY_STEAM("heroinesquest", "heroine's quest.exe", "fa5b449d9d93a9055e0ab6caf0aee77c", 7020827), // v1.2.7-8
GAME_ENTRY_STEAM("heroinesquest", "heroine's quest.ags", "5a61e3d27494f480ba0e8af34cd872ac", 77680620), // v1.2.9 Win/Linux
+ GAME_ENTRY_STEAM("heroinesquest", "heroine's quest.ags", "dc29cf98484fe8fc532a175e758a1930", 77788201), // v1.2.9 patched Win/Linux
GAME_ENTRY("heroinesquest", "heroine's quest.exe", "0b19953a0a879b5027c98b0cdd8142f1", 6825340),
GAME_ENTRY("heroinesquest", "heroine's quest.exe", "35b93e905a5aeba8fafd0e5b0f4cb9b6", 6952250),
GAME_ENTRY_LANG("heroquestbeuk", "HeroQuestbeuk.exe", "06a03fe35791b0578068ab1873455463", 45021220, Common::FR_FRA),
@@ -6811,6 +6815,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_LANG("meteorhead14", "thebrandnewmeteorhead14.exe", "8f2d3fbc7f428bea31f1021cb8c2ff5a", 20634898, Common::DE_DEU),
GAME_ENTRY_LANG("meteorheadns3", "newseriesIII.exe", "3c888514e33c5c1862ab7aba121b9dd4", 22787731, Common::DE_DEU),
GAME_ENTRY_LANG("meteorheadns4", "Meteorhead Last Chapter.exe", "f18f785cade71cf3969b4c6f229454a2", 29499534, Common::DE_DEU),
+ GAME_ENTRY_EN("metrocity", "Metro City Night Shift.exe", "e89db844661ed4f434e94795c62f871c", 789734564),
GAME_ENTRY_EN("mi", "Mi.exe", "615e73fc1874e92d60a1996c2330ea36", 6988459),
GAME_ENTRY("micarnivalofthedamned", "MI-COD.exe", "90413e9ae57e222f8913b09d2bc847bc", 5114086), // Eng-Esp
GAME_ENTRY("mickeymauserpart1", "MM.exe", "3b7cceb3e4bdb031dc5d8f290936e94b", 12076323), // En-It
@@ -8381,6 +8386,8 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
GAME_ENTRY_EN("ulitsadimitrova", "ulitsa.exe", "a01a9639ce30bdcd5bf82e528b51fa06", 291828379),
GAME_ENTRY_EN("unbound", "Unbound.exe", "900b277d7e1601c65b42868cd7fae662", 10448702),
GAME_ENTRY_EN("uncontrollable", "OROW2015.exe", "615e73fc1874e92d60a1996c2330ea36", 3012777),
+ GAME_ENTRY_EN("underthebed", "The Weird Thing Under The Bed.exe", "9982a80801abee56c9c8977d5e7424d7", 43104879),
+ GAME_ENTRY_EN("underthebed", "The Weird Thing Under The Bed.ags", "630e945a0e4b88bafd5e20761d724c0f", 39995995),
GAME_ENTRY_EN("underwateradv", "fishres.exe", "3128b9f90e2f954ba704414ae854d10b", 3970713),
GAME_ENTRY_EN("underworld", "Underworld.exe", "6cddccb3744ec5c6af7c398fb7b3b11c", 5147661),
GAME_ENTRY_EN("undyep1", "heyderundy.exe", "39fe9b76597c2d8c14922b8369a4a4db", 9842962), // v1.2
More information about the Scummvm-git-logs
mailing list