[Scummvm-git-logs] scummvm master -> 919a84afe9e46cc2741b4f33d8dbd18610431241

tag2015 noreply at scummvm.org
Wed Apr 3 00:14:12 UTC 2024


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

Summary:
c3a0553e25 AGS: Use lower granularity in pathfinder for old games
cc6bbd1083 AGS: Engine: hotfix potential exception if cc_error is called during quit()
c46b2feaca AGS: Engine: removed redundant quit_shutdown_scripts()
f8ddba8488 AGS: Updated build version (3.6.0.58)
919a84afe9 AGS: Updated Technobabylon (win) + add new games


Commit: c3a0553e25983651f4f823503e9c56ba8bcd3432
    https://github.com/scummvm/scummvm/commit/c3a0553e25983651f4f823503e9c56ba8bcd3432
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2024-04-02T22:42:44+02:00

Commit Message:
AGS: Use lower granularity in pathfinder for old games

This is a fix for the staircase bug in old Maniac Mansion Mania games.

Changed paths:
    engines/ags/engine/ac/route_finder_impl_legacy.cpp


diff --git a/engines/ags/engine/ac/route_finder_impl_legacy.cpp b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
index c45be220664..53d969bb769 100644
--- a/engines/ags/engine/ac/route_finder_impl_legacy.cpp
+++ b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
@@ -231,7 +231,11 @@ static int is_route_possible(int fromx, int fromy, int tox, int toy, Bitmap *wss
 		int tryFirstX = tox - 50, tryToX = tox + 50;
 		int tryFirstY = toy - 50, tryToY = toy + 50;
 
-		if (!find_nearest_walkable_area(tempw, tryFirstX, tryFirstY, tryToX, tryToY, tox, toy, 3)) {
+		// This is a fix for the Treppenbug in old (pre-3.0) Maniac Mansion Mania games.
+		// Using a higher granularity the find_nearest_walkable_area sets a wrong coordinate that prevents
+		// the staircase in Bernard's home from working.
+		int sweep_granularity = _G(loaded_game_file_version) > kGameVersion_272 ? 3 : 1;
+		if (!find_nearest_walkable_area(tempw, tryFirstX, tryFirstY, tryToX, tryToY, tox, toy, sweep_granularity)) {
 			// Nothing found, sweep the whole room at 5 pixel granularity
 			find_nearest_walkable_area(tempw, 0, 0, tempw->GetWidth(), tempw->GetHeight(), tox, toy, 5);
 		}


Commit: cc6bbd1083136314e72ab19ad8d575309bea4cac
    https://github.com/scummvm/scummvm/commit/cc6bbd1083136314e72ab19ad8d575309bea4cac
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2024-04-02T23:09:17+02:00

Commit Message:
AGS: Engine: hotfix potential exception if cc_error is called during quit()

>From upstream a64e3424f70677f9393e4f8c506f03ed628aee47

Changed paths:
    engines/ags/engine/ac/game.cpp
    engines/ags/engine/script/cc_instance.cpp
    engines/ags/engine/script/cc_instance.h


diff --git a/engines/ags/engine/ac/game.cpp b/engines/ags/engine/ac/game.cpp
index ed316da0be2..54e96de45e3 100644
--- a/engines/ags/engine/ac/game.cpp
+++ b/engines/ags/engine/ac/game.cpp
@@ -378,6 +378,7 @@ void unload_game_file() {
 	pl_stop_plugins();
 
 	// Free all script instances and script modules
+	ccInstance::FreeInstanceStack();
 	delete _G(gameinstFork);
 	delete _G(gameinst);
 	_G(gameinstFork) = nullptr;
diff --git a/engines/ags/engine/script/cc_instance.cpp b/engines/ags/engine/script/cc_instance.cpp
index 42cb7163223..fb2f41c4b88 100644
--- a/engines/ags/engine/script/cc_instance.cpp
+++ b/engines/ags/engine/script/cc_instance.cpp
@@ -211,6 +211,10 @@ ccInstance *ccInstance::GetCurrentInstance() {
 	return _GP(InstThreads).size() > 0 ? _GP(InstThreads).back() : nullptr;
 }
 
+void ccInstance::FreeInstanceStack() {
+	_GP(InstThreads).clear();
+}
+
 ccInstance *ccInstance::CreateFromScript(PScript scri) {
 	return CreateEx(scri, nullptr);
 }
diff --git a/engines/ags/engine/script/cc_instance.h b/engines/ags/engine/script/cc_instance.h
index a8c3f5ab889..03748780d7f 100644
--- a/engines/ags/engine/script/cc_instance.h
+++ b/engines/ags/engine/script/cc_instance.h
@@ -142,6 +142,10 @@ public:
 
 	// returns the currently executing instance, or NULL if none
 	static ccInstance *GetCurrentInstance(void);
+	// clears recorded stack of current instances
+	// FIXME: reimplement this in a safer way, this must be done automatically
+	// when destroying all script instances, e.g. on game quit.
+	static void FreeInstanceStack();
 	// create a runnable instance of the supplied script
 	static ccInstance *CreateFromScript(PScript script);
 	static ccInstance *CreateEx(PScript scri, ccInstance *joined);
@@ -177,7 +181,7 @@ public:
 	bool    ResolveScriptImports(const ccScript *scri);
 
 	// Using resolved_imports[], resolve the IMPORT fixups
-	// Also change CALLEXT op-codes to CALLAS when they pertain to a script instance 
+	// Also change CALLEXT op-codes to CALLAS when they pertain to a script instance
 	bool    ResolveImportFixups(const ccScript *scri);
 
 private:


Commit: c46b2feaca519835d0b55b99d9294a7528793115
    https://github.com/scummvm/scummvm/commit/c46b2feaca519835d0b55b99d9294a7528793115
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2024-04-02T23:18:14+02:00

Commit Message:
AGS: Engine: removed redundant quit_shutdown_scripts()

Scripts are shut down in unload_game().
It did not do what the function name implied anyway...
>From upstream 67c0bdc9e854c558282d290ef5952ac211cc4133

Changed paths:
    engines/ags/engine/ac/game.cpp
    engines/ags/engine/ac/game.h
    engines/ags/engine/ac/global_game.cpp
    engines/ags/engine/main/quit.cpp


diff --git a/engines/ags/engine/ac/game.cpp b/engines/ags/engine/ac/game.cpp
index 54e96de45e3..a3ed944e92c 100644
--- a/engines/ags/engine/ac/game.cpp
+++ b/engines/ags/engine/ac/game.cpp
@@ -366,13 +366,15 @@ void free_do_once_tokens() {
 
 
 // Free all the memory associated with the game
-void unload_game_file() {
+void unload_game() {
 	dispose_game_drawdata();
 	// NOTE: fonts should be freed prior to stopping plugins,
 	// as plugins may provide font renderer interface.
 	free_all_fonts();
 	close_translation();
 
+	// NOTE: script objects must be freed prior to stopping plugins,
+	// in case there are managed objects provided by plugins.
 	ccRemoveAllSymbols();
 	ccUnregisterAllObjects();
 	pl_stop_plugins();
diff --git a/engines/ags/engine/ac/game.h b/engines/ags/engine/ac/game.h
index 5240b5ac8a7..491a426d15b 100644
--- a/engines/ags/engine/ac/game.h
+++ b/engines/ags/engine/ac/game.h
@@ -163,7 +163,7 @@ void save_game_dialog();
 bool do_save_game_dialog();
 void free_do_once_tokens();
 // Free all the memory associated with the game
-void unload_game_file();
+void unload_game();
 void save_game(int slotn, const char *descript);
 bool read_savedgame_description(const Shared::String &savedgame, Shared::String &description);
 bool read_savedgame_screenshot(const Shared::String &savedgame, int &want_shot);
diff --git a/engines/ags/engine/ac/global_game.cpp b/engines/ags/engine/ac/global_game.cpp
index bc4e91f981f..f8ff4c30f7d 100644
--- a/engines/ags/engine/ac/global_game.cpp
+++ b/engines/ags/engine/ac/global_game.cpp
@@ -269,7 +269,7 @@ int RunAGSGame(const String &newgame, unsigned int mode, int data) {
 #if defined (AGS_AUTO_WRITE_USER_CONFIG)
 	save_config_file(); // save current user config in case engine fails to run new game
 #endif // AGS_AUTO_WRITE_USER_CONFIG
-	unload_game_file();
+	unload_game();
 
 	// Adjust config (NOTE: normally, RunAGSGame would need a redesign to allow separate config etc per each game)
 	_GP(usetup).translation = ""; // reset to default, prevent from trying translation file of game A in game B
diff --git a/engines/ags/engine/main/quit.cpp b/engines/ags/engine/main/quit.cpp
index 765d91f1371..1bbaf0b8ed8 100644
--- a/engines/ags/engine/main/quit.cpp
+++ b/engines/ags/engine/main/quit.cpp
@@ -72,10 +72,6 @@ void quit_stop_cd() {
 		cd_manager(3, 0);
 }
 
-void quit_shutdown_scripts() {
-	ccUnregisterAllObjects();
-}
-
 void quit_check_dynamic_sprites(QuitReason qreason) {
 	if ((qreason & kQuitKind_NormalExit) && (_G(check_dynamic_sprites_at_exit)) &&
 	        (_GP(game).options[OPT_DEBUGMODE] != 0)) {
@@ -142,10 +138,6 @@ QuitReason quit_check_for_error_state(const char *qmsg, String &errmsg, String &
 	}
 }
 
-void quit_release_data() {
-	unload_game_file();
-}
-
 void quit_delete_temp_files() {
 #ifdef TODO
 	al_ffblk    dfb;
@@ -199,8 +191,6 @@ void quit_free() {
 
 	_G(our_eip) = 9020;
 
-	quit_shutdown_scripts();
-
 	// Be sure to unlock mouse on exit, or users will hate us
 	sys_window_lock_mouse(false);
 
@@ -223,7 +213,7 @@ void quit_free() {
 
 	shutdown_pathfinder();
 
-	quit_release_data();
+	unload_game();
 
 	engine_shutdown_gfxmode();
 


Commit: f8ddba848873e9cd53ffdbfcc3b8878ae23acf43
    https://github.com/scummvm/scummvm/commit/f8ddba848873e9cd53ffdbfcc3b8878ae23acf43
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2024-04-02T23:21:11+02:00

Commit Message:
AGS: Updated build version (3.6.0.58)

Partially from upstream 3a1fc8d8f3f768506e3b56f840563b6d4211c567

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 78ddfe82d41..ae20ef6411e 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.57"
+#define ACI_VERSION_STR      "3.6.0.58"
 #if defined (RC_INVOKED) // for MSVC resource compiler
-#define ACI_VERSION_MSRC_DEF  3.6.0.57
+#define ACI_VERSION_MSRC_DEF  3.6.0.58
 #endif
 
 #define SPECIAL_VERSION ""


Commit: 919a84afe9e46cc2741b4f33d8dbd18610431241
    https://github.com/scummvm/scummvm/commit/919a84afe9e46cc2741b4f33d8dbd18610431241
Author: Walter Agazzi (walter.agazzi at protonmail.com)
Date: 2024-04-03T01:56:58+02:00

Commit Message:
AGS: Updated Technobabylon (win) + add new games

Changed paths:
    engines/ags/detection_tables.h


diff --git a/engines/ags/detection_tables.h b/engines/ags/detection_tables.h
index 2a60693f558..ed24a24da67 100644
--- a/engines/ags/detection_tables.h
+++ b/engines/ags/detection_tables.h
@@ -286,6 +286,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "blackwell5", "The Blackwell Epiphany" },
 	{ "captaindisaster", "Captain Disaster in: Death Has A Million Stomping Boots" },
 	{ "captaindisasterriskara", "Captain Disaster and The Two Worlds of Riskara" },
+	{ "carnivalags", "Carnival" },
 	{ "castleagony", "Castle Agony" },
 	{ "castledornstein", "Castle Dornstein" },
 	{ "charnelhousetrilogy", "The Charnel House Trilogy" },
@@ -1079,6 +1080,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "deadsilence", "Dead Silence" },
 	{ "deadstar", "Dead Star" },
 	{ "deadtoilet", "Deadman Toilet" },
+	{ "dearrgh", "DeARRGH!-dre & Shaqushia" },
 	{ "deathandtransfiguration", "Death and Transfiguration" },
 	{ "deathasitis", "Death as it Is" },
 	{ "deathep1", "Death - Episode One: The scythe of unlimited power" },
@@ -1178,6 +1180,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "dreadmacfarlanev2ep1", "Dread Mac Farlane V2 (Remake) - Episode 1" },
 	{ "dreadmacfarlanev2ep2", "Dread Mac Farlane V2 (Remake) - Episode 2" },
 	{ "dreadmacfarlanev2ep3", "Dread Mac Farlane V2 (Remake) - Episode 3" },
+	{ "dreadmacfarlanev2ep4", "Dread Mac Farlane V2 (Remake) - Episode 4" },
 	{ "dreamagine", "Dreamagine" },
 	{ "dreamcatadv", "Dreamcat Adventure: Jenseits von Traum und Zeit" },  // Beyond Dream and Time
 	{ "dreamdiary", "Dream Diary Quest" },
@@ -2225,6 +2228,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "morganale1", "Morgan Ale, Case 1: Professor D" },
 	{ "morningshift", "Morning Shift" },
 	{ "morphine", "Morphine" },
+	{ "mort", "MORT: Manageably OK Response Team" },
 	{ "mortifer", "Nous, les Mortifer" },
 	{ "motlpaa", "MOTLPAA" },
 	{ "mourirenmer", "Mourir en Mer" },
@@ -3531,6 +3535,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "brianeggswoods", "Brian Eggs Is Lost In The Woods" },
 	{ "dreadmacfarlaneisep1", "Dread Mac Farlane Interactive Story - Episode 1" },
 	{ "dreadmacfarlaneisep2", "Dread Mac Farlane Interactive Story - Episode 2" },
+	{ "flowproblem", "Flow Problem" },
 	{ "gloriouswolfcomicsep1", "Glorious Wolf - Interactive Musical Comics Ep. 1" },
 	{ "gloriouswolfcomicsep2", "Glorious Wolf - Interactive Musical Comics Ep. 2" },
 	{ "lonelyspaces", "Lonely Spaces" },
@@ -4012,6 +4017,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	// AGS 3.6.1 games
 	UNSUPPORTED_GAME_ENTRY("apfelman", "Apfelmaennchen.ags", "fd215dc93055c1123a4cb9cd7cfb3661", 1277361),
 	UNSUPPORTED_GAME_ENTRY("brianeggswoods", "Brian Eggs Woods.ags", "8b23975e2fdf0a5f1124230ca3219016", 11428377),
+	UNSUPPORTED_GAME_ENTRY("flowproblem", "Flow Problem.ags", "4e82d48102ea7ca1d72d675db69ddec3", 177517),  // v1.01
 	UNSUPPORTED_GAME_ENTRY("lonelyspaces", "LonelySpaces.ags", "0639cde13b999293a1b90d99e17ca49e", 17823673),  // v1
 	UNSUPPORTED_GAME_ENTRY("strangerutopia", "StrangerInUtopia.exe", "5c3a31d27beb519dfe291ea27ead1371", 61286148), // Win
 	UNSUPPORTED_GAME_ENTRY("strangerutopia", "StrangerInUtopia.exe", "5c3a31d27beb519dfe291ea27ead1371", 61904777),
@@ -4615,6 +4621,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420107350, nullptr),  // Win v3.0
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420114105, nullptr),  // Win v3.0.1
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420114113, nullptr),  // Win v3.0.1 updated
+	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420115055, nullptr),  // Win v3.0.5
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.ags", "9d48667020cf3e3612a753934b16cc04", 416922690, nullptr),  // Linux v3.0
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "technobabylon.ags", "9d48667020cf3e3612a753934b16cc04", 416929445, nullptr),  // Linux v3.0.1
 	GAME_ENTRY_PLUGIN_STEAM_EN_NOAUTOSAVE("technobabylon", "ac2game.dat", "570e69be27d3fa94b50f2779100e3fed", 445700420, nullptr),  // Mac
@@ -4624,6 +4631,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "83cd1ad574bcfffe1b11504a32402b1e", 448836736, nullptr), // Win v2.5a
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420107616, nullptr), // Win v3.0
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "f2332e54784086e5a2f249c1867897df", 420097475, nullptr), // Win v3.0.1
+	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "technobabylon.exe", "6475b8eb253b8d992a052869de4632cb", 420115313, nullptr), // Win v3.0.5
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "ac2game.dat", "570e69be27d3fa94b50f2779100e3fed", 445671616, nullptr), // Mac v2.2a
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "ac2game.dat", "570e69be27d3fa94b50f2779100e3fed", 445711980, nullptr), // Mac v2.5a
 	GAME_ENTRY_PLUGIN_GOG_EN_NOAUTOSAVE("technobabylon", "ac2game.dat", "9d48667020cf3e3612a753934b16cc04", 416922956, nullptr), // Mac v3.0
@@ -4806,6 +4814,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	DEMO_ENTRY_LANG("calvin", "Calvin.exe", "7a3096ac0237cb6aa8e1718e28caf039", 85557724, Common::FR_FRA),
 	DEMO_ENTRY_EN("captaindisaster", "cd-dhamsb-demo-1-3-0.exe", "9d991dd1f9e7fee653d3a9bb2546f968", 153646768),
 	DEMO_ENTRY_EN("captaindisasterriskara", "Captain Disaster and The Two Worlds of Riskara.exe", "6689ccca6f9b2c8398352e9b772ff411", 157630000),
+	DEMO_ENTRY_EN("carnivalags", "Carnival.ags", "0a0ce51f708cd532d3f2f6fdfded8f32", 39307700),  // itch.io 1.0.0
 	DEMO_ENTRY("captainhook", "CaptainHookAndTheLostGirl - DEMO.exe", "776a62db4387dc68be92ef9933399fd5", 8731139),  // Windows En-Fr
 	DEMO_ENTRY("captainhook", "CaptainHookAndTheLostGirl - DEMO.ags", "c0ce7476116c0a81e1d8f01ccf87d79a", 5624815),  // Linux En-Fr
 	DEMO_ENTRY_EN("castledornstein", "Castle Dornstein Demo.exe", "4141c41c06c91ec8ab9fffafbc26df67", 53098143),
@@ -4993,8 +5002,10 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	DEMO_ENTRY_EN("legendofhand", "legend of hand.exe", "fc478dd7564c908615c9366398d995c8", 75795600),
 	DEMO_ENTRY("legendofskye", "LegendSkye.exe", "8d1ff95c16500befbdc72260d461d73f", 71949528),  // Win Eng-Esp
 	DEMO_ENTRY("legendofskye", "LegendSkye.exe", "8d1ff95c16500befbdc72260d461d73f", 72090450),  // Win En-Fr-De-Es
+	DEMO_ENTRY("legendofskye", "LegendSkye.exe", "8d1ff95c16500befbdc72260d461d73f", 72090942),  // Win En-Fr-De-Es
 	DEMO_ENTRY("legendofskye", "LegendSkye.ags", "df2ca0c97d229119edbde64322629cdb", 68840644),  // Linux Eng-Esp
 	DEMO_ENTRY("legendofskye", "LegendSkye.ags", "65ab826c0660ae17f28f9e7d024f8f2f", 68981566),  // Linux En-Fr-De-Es
+	DEMO_ENTRY("legendofskye", "LegendSkye.ags", "6bdda57dcf7c322663a5aaf99128191c", 68982058),  // Linux En-Fr-De-Es
 	DEMO_ENTRY_EN("leisuresuitlarrylil", "LSL.exe", "34cf71d28e1e9c55934f624969011c7e", 18440862),
 	DEMO_ENTRY_EN("littlesimulatedpeople", "LSP.exe", "9444eb2427a9fc090dde9ab8330a149f", 2622652),
 	DEMO_ENTRY_EN("longevitygene", "Longevity.exe", "3d40063da244931d67726a2d9600f1e8", 63748082),
@@ -6082,6 +6093,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY_EN("deadsilence", "Game.exe", "5c5d4680def6954c0cd22e82dc07d4d4", 3370359),
 	GAME_ENTRY_EN("deadstar", "DeadStar.exe", "0500aacb6c176d47ac0f8158f055db83", 1974362),
 	GAME_ENTRY_EN("deadtoilet", "HourDead.exe", "88cf59aad15ca331ab0f854e16c84df3", 1319168),
+	GAME_ENTRY_EN("dearrgh", "DeARRGH!-dre & Shaqushia.exe", "7f8068849f77f2d7e7da162be7dbc67d", 3254681),
 	GAME_ENTRY_EN("deathandtransfiguration", "death.exe", "e88fd6a23a5e498d7b0d50e3bb914085", 11103314),
 	GAME_ENTRY_EN("deathasitis", "death.exe", "a524cbb1c51589903c4043b98917f1d9", 4001615),
 	GAME_ENTRY_EN("deathep1", "Death.exe", "4ffc2285a82023294aee3d41181e7177", 120667199),
@@ -6202,6 +6214,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("dreadmacfarlanev2ep1", "Dread Mac Farlane - episode 1.ags", "a088db68f7aadfa02149a91680dee1c5", 123567066),  // Eng-Fra
 	GAME_ENTRY("dreadmacfarlanev2ep2", "Dread Mac Farlane - episode 2.ags", "e992d5daaf77f9a8a234a9ba44a9a163", 131631424),  // Eng-Fra
 	GAME_ENTRY("dreadmacfarlanev2ep3", "Dread Mac Farlane - episode 3.ags", "16565ca9277d9e8eafc3eef11d1ffb74", 181377632),  // Eng-Fra
+	GAME_ENTRY("dreadmacfarlanev2ep4", "Dread Mac Farlane - episode 4.ags", "47ef94e21a74a9e684f0e2b3026f2596", 253532506),  // Eng-Fra
 	GAME_ENTRY_EN("dreamychristmas", "Your dreamy Christmas.exe", "a4e6ec808b347f4456eae7c808e90727", 84727913),  // Windows
 	GAME_ENTRY_EN("dreamychristmas", "Your dreamy Christmas.ags", "f61d34a8a5c9501962c7161fe127aba2", 81696341),  // Linux
 	GAME_ENTRY_EN("dreamagine", "Game.exe", "256752c9a97b4780fc5e6f3239c8cdf1", 11122818),
@@ -7451,6 +7464,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY_EN("morganale1", "Professor D.exe", "6f9a7b413f14514c8314fe56fda90179", 4009582),
 	GAME_ENTRY_EN("morningshift", "Ludum Dare 48.ags", "bd508b7787384ae2ad5b487692d3b807", 3793136),  // Linux
 	GAME_ENTRY_EN("morningshift", "Ludum Dare 48.exe", "7c6e063343fc2ec2bfffc93a1bbd6cfe", 6280960),  // Windows
+	GAME_ENTRY_EN("mort", "MORT.ags", "bf38464d610f68f57d375008cd32afe5", 1245969),
 	GAME_ENTRY_LANG("mortifer", "Nous les Mortifer.exe", "7ddb9e776648faed5a51170d087074e9", 187358960, Common::FR_FRA),
 	GAME_ENTRY_EN("motlpaa", "MOTLPAA.exe", "0710e2ec71042617f565c01824f0cf3c", 1575258),
 	GAME_ENTRY_EN("motlpaa", "MOTLPAA.ags", "0710e2ec71042617f565c01824f0cf3c", 1575258),




More information about the Scummvm-git-logs mailing list