[Scummvm-git-logs] scummvm master -> 11ded31a83e061ef50468cc3816f0c918bfdfa1a

dreammaster dreammaster at scummvm.org
Wed Mar 3 02:57:40 UTC 2021


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

Summary:
8b158629c1 GLOBALS: Move audio.cpp globals to Globals
1686b7e4d9 AGS: Adding virtual destructors
11ded31a83 AGS: Added detection entries


Commit: 8b158629c14a78ef8009a08aab5c17581f53cc6d
    https://github.com/scummvm/scummvm/commit/8b158629c14a78ef8009a08aab5c17581f53cc6d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-02T18:53:52-08:00

Commit Message:
GLOBALS: Move audio.cpp globals to Globals

Changed paths:
    engines/ags/engine/ac/game.cpp
    engines/ags/engine/ac/global_audio.cpp
    engines/ags/engine/ac/global_video.cpp
    engines/ags/engine/game/savegame.cpp
    engines/ags/engine/game/savegame_components.cpp
    engines/ags/engine/media/audio/audio.cpp
    engines/ags/engine/media/audio/audio.h
    engines/ags/globals.cpp
    engines/ags/globals.h


diff --git a/engines/ags/engine/ac/game.cpp b/engines/ags/engine/ac/game.cpp
index eb8a0733c4..27cf30baa8 100644
--- a/engines/ags/engine/ac/game.cpp
+++ b/engines/ags/engine/ac/game.cpp
@@ -1240,15 +1240,15 @@ void restore_game_thisroom(Stream *in, RestoredData &r_data) {
 
 void restore_game_ambientsounds(Stream *in, RestoredData &r_data) {
 	for (int i = 0; i < MAX_SOUND_CHANNELS; ++i) {
-		ambient[i].ReadFromFile(in);
+		_GP(ambient)[i].ReadFromFile(in);
 	}
 
 	for (int bb = 1; bb < MAX_SOUND_CHANNELS; bb++) {
-		if (ambient[bb].channel == 0)
+		if (_GP(ambient)[bb].channel == 0)
 			r_data.DoAmbient[bb] = 0;
 		else {
-			r_data.DoAmbient[bb] = ambient[bb].num;
-			ambient[bb].channel = 0;
+			r_data.DoAmbient[bb] = _GP(ambient)[bb].num;
+			_GP(ambient)[bb].channel = 0;
 		}
 	}
 }
diff --git a/engines/ags/engine/ac/global_audio.cpp b/engines/ags/engine/ac/global_audio.cpp
index 48fd8dd9df..40cfe0a7b1 100644
--- a/engines/ags/engine/ac/global_audio.cpp
+++ b/engines/ags/engine/ac/global_audio.cpp
@@ -52,11 +52,11 @@ void StopAmbientSound(int channel) {
 	if ((channel < 0) || (channel >= MAX_SOUND_CHANNELS))
 		quit("!StopAmbientSound: invalid channel");
 
-	if (ambient[channel].channel == 0)
+	if (_GP(ambient)[channel].channel == 0)
 		return;
 
 	stop_and_destroy_channel(channel);
-	ambient[channel].channel = 0;
+	_GP(ambient)[channel].channel = 0;
 }
 
 void PlayAmbientSound(int channel, int sndnum, int vol, int x, int y) {
@@ -71,8 +71,8 @@ void PlayAmbientSound(int channel, int sndnum, int vol, int x, int y) {
 		return;
 
 	// only play the sound if it's not already playing
-	if ((ambient[channel].channel < 1) || (!channel_is_playing(ambient[channel].channel)) ||
-		(ambient[channel].num != sndnum)) {
+	if ((_GP(ambient)[channel].channel < 1) || (!channel_is_playing(_GP(ambient)[channel].channel)) ||
+		(_GP(ambient)[channel].num != sndnum)) {
 
 		StopAmbientSound(channel);
 		// in case a normal non-ambient sound was playing, stop it too
@@ -86,17 +86,17 @@ void PlayAmbientSound(int channel, int sndnum, int vol, int x, int y) {
 		}
 
 		debug_script_log("Playing ambient sound %d on channel %d", sndnum, channel);
-		ambient[channel].channel = channel;
+		_GP(ambient)[channel].channel = channel;
 		asound->_priority = 15;  // ambient sound higher priority than normal sfx
 		set_clip_to_channel(channel, asound);
 	}
 	// calculate the maximum distance away the player can be, using X
 	// only (since X centred is still more-or-less total Y)
-	ambient[channel].maxdist = ((x > _GP(thisroom).Width / 2) ? x : (_GP(thisroom).Width - x)) - AMBIENCE_FULL_DIST;
-	ambient[channel].num = sndnum;
-	ambient[channel].x = x;
-	ambient[channel].y = y;
-	ambient[channel].vol = vol;
+	_GP(ambient)[channel].maxdist = ((x > _GP(thisroom).Width / 2) ? x : (_GP(thisroom).Width - x)) - AMBIENCE_FULL_DIST;
+	_GP(ambient)[channel].num = sndnum;
+	_GP(ambient)[channel].x = x;
+	_GP(ambient)[channel].y = y;
+	_GP(ambient)[channel].vol = vol;
 	update_ambient_sound_vol();
 }
 
@@ -354,8 +354,8 @@ void SetChannelVolume(int chan, int newvol) {
 	auto *ch = lock.GetChannelIfPlaying(chan);
 
 	if (ch) {
-		if (chan == ambient[chan].channel) {
-			ambient[chan].vol = newvol;
+		if (chan == _GP(ambient)[chan].channel) {
+			_GP(ambient)[chan].vol = newvol;
 			update_ambient_sound_vol();
 		} else
 			ch->set_volume(newvol);
diff --git a/engines/ags/engine/ac/global_video.cpp b/engines/ags/engine/ac/global_video.cpp
index 2217f104cd..2f5dc91f21 100644
--- a/engines/ags/engine/ac/global_video.cpp
+++ b/engines/ags/engine/ac/global_video.cpp
@@ -58,7 +58,7 @@ void pause_sound_if_necessary_and_play_video(const char *name, int skip, int fla
 	int musplaying = _GP(play).cur_music_number, i;
 	int ambientWas[MAX_SOUND_CHANNELS];
 	for (i = 1; i < MAX_SOUND_CHANNELS; i++)
-		ambientWas[i] = ambient[i].channel;
+		ambientWas[i] = _GP(ambient)[i].channel;
 
 	if ((strlen(name) > 3) && (ags_stricmp(&name[strlen(name) - 3], "ogv") == 0)) {
 		play_theora_video(name, skip, flags, true);
@@ -81,7 +81,7 @@ void pause_sound_if_necessary_and_play_video(const char *name, int skip, int fla
 			newmusic(musplaying);
 		for (i = 1; i < MAX_SOUND_CHANNELS; i++) {
 			if (ambientWas[i] > 0)
-				PlayAmbientSound(ambientWas[i], ambient[i].num, ambient[i].vol, ambient[i].x, ambient[i].y);
+				PlayAmbientSound(ambientWas[i], _GP(ambient)[i].num, _GP(ambient)[i].vol, _GP(ambient)[i].x, _GP(ambient)[i].y);
 		}
 	}
 }
diff --git a/engines/ags/engine/game/savegame.cpp b/engines/ags/engine/game/savegame.cpp
index 9155f2f469..86a98c75b9 100644
--- a/engines/ags/engine/game/savegame.cpp
+++ b/engines/ags/engine/game/savegame.cpp
@@ -598,7 +598,7 @@ HSaveError DoAfterRestore(const PreservedParams &pp, const RestoredData &r_data)
 	// TODO: investigate loop range
 	for (int i = 1; i < MAX_SOUND_CHANNELS; ++i) {
 		if (r_data.DoAmbient[i])
-			PlayAmbientSound(i, r_data.DoAmbient[i], ambient[i].vol, ambient[i].x, ambient[i].y);
+			PlayAmbientSound(i, r_data.DoAmbient[i], _GP(ambient)[i].vol, _GP(ambient)[i].x, _GP(ambient)[i].y);
 	}
 	update_directional_sound_vol();
 
diff --git a/engines/ags/engine/game/savegame_components.cpp b/engines/ags/engine/game/savegame_components.cpp
index e78300b3d2..c2d3f1ffb1 100644
--- a/engines/ags/engine/game/savegame_components.cpp
+++ b/engines/ags/engine/game/savegame_components.cpp
@@ -383,7 +383,7 @@ HSaveError WriteAudio(PStream out) {
 
 	// Ambient sound
 	for (int i = 0; i < MAX_SOUND_CHANNELS; ++i)
-		ambient[i].WriteToFile(out.get());
+		_GP(ambient)[i].WriteToFile(out.get());
 
 	return HSaveError::None();
 }
@@ -436,14 +436,14 @@ HSaveError ReadAudio(PStream in, int32_t cmp_ver, const PreservedParams &pp, Res
 
 	// Ambient sound
 	for (int i = 0; i < MAX_SOUND_CHANNELS; ++i)
-		ambient[i].ReadFromFile(in.get());
+		_GP(ambient)[i].ReadFromFile(in.get());
 
 	for (int i = 1; i < MAX_SOUND_CHANNELS; ++i) {
-		if (ambient[i].channel == 0) {
+		if (_GP(ambient)[i].channel == 0) {
 			r_data.DoAmbient[i] = 0;
 		} else {
-			r_data.DoAmbient[i] = ambient[i].num;
-			ambient[i].channel = 0;
+			r_data.DoAmbient[i] = _GP(ambient)[i].num;
+			_GP(ambient)[i].channel = 0;
 		}
 	}
 	return err;
diff --git a/engines/ags/engine/media/audio/audio.cpp b/engines/ags/engine/media/audio/audio.cpp
index 5f1523c6e9..45fedaecc9 100644
--- a/engines/ags/engine/media/audio/audio.cpp
+++ b/engines/ags/engine/media/audio/audio.cpp
@@ -53,33 +53,31 @@ using namespace AGS::Engine;
 //-----------------------
 //sound channel management; all access goes through here, which can't be done without a lock
 
-static std::array<SOUNDCLIP *> _channels(MAX_SOUND_CHANNELS + 1);
-
 AudioChannelsLock::AudioChannelsLock() : MutexLock(::AGS::g_vm->_sMutex) {
 }
 
 SOUNDCLIP *AudioChannelsLock::GetChannel(int index) {
-	return _channels[index];
+	return _GP(audioChannels)[index];
 }
 
 SOUNDCLIP *AudioChannelsLock::GetChannelIfPlaying(int index) {
-	auto *ch = _channels[index];
+	auto *ch = _GP(audioChannels)[index];
 	return (ch != nullptr && ch->is_playing()) ? ch : nullptr;
 }
 
 SOUNDCLIP *AudioChannelsLock::SetChannel(int index, SOUNDCLIP *ch) {
 	// TODO: store clips in smart pointers
-	if (_channels[index] == ch)
+	if (_GP(audioChannels)[index] == ch)
 		Debug::Printf(kDbgMsg_Warn, "WARNING: channel %d - same clip assigned", index);
-	else if (_channels[index] != nullptr && ch != nullptr)
+	else if (_GP(audioChannels)[index] != nullptr && ch != nullptr)
 		Debug::Printf(kDbgMsg_Warn, "WARNING: channel %d - clip overwritten", index);
-	_channels[index] = ch;
+	_GP(audioChannels)[index] = ch;
 	return ch;
 }
 
 SOUNDCLIP *AudioChannelsLock::MoveChannel(int to, int from) {
-	auto from_ch = _channels[from];
-	_channels[from] = nullptr;
+	auto from_ch = _GP(audioChannels)[from];
+	_GP(audioChannels)[from] = nullptr;
 	return SetChannel(to, from_ch);
 }
 
@@ -470,8 +468,8 @@ void stop_and_destroy_channel_ex(int chid, bool resetLegacyMusicSettings) {
 	// don't update 'crossFading' here as it is updated in all the cross-fading functions.
 
 	// destroyed an ambient sound channel
-	if (ambient[chid].channel > 0)
-		ambient[chid].channel = 0;
+	if (_GP(ambient)[chid].channel > 0)
+		_GP(ambient)[chid].channel = 0;
 
 	if ((chid == SCHAN_MUSIC) && (resetLegacyMusicSettings)) {
 		_GP(play).cur_music_number = -1;
@@ -524,9 +522,6 @@ SOUNDCLIP *load_sound_clip_from_old_style_number(bool isMusic, int indexNumber,
 
 //=============================================================================
 
-// TODO: double check that ambient sounds array actually needs +1
-std::array<AmbientSound> ambient(MAX_SOUND_CHANNELS + 1);
-
 int get_volume_adjusted_for_distance(int volume, int sndX, int sndY, int sndMaxDist) {
 	int distx = playerchar->x - sndX;
 	int disty = playerchar->y - sndY;
@@ -567,7 +562,7 @@ void update_ambient_sound_vol() {
 
 	for (int chan = 1; chan < MAX_SOUND_CHANNELS; chan++) {
 
-		AmbientSound *thisSound = &ambient[chan];
+		AmbientSound *thisSound = &_GP(ambient)[chan];
 
 		if (thisSound->channel == 0)
 			continue;
diff --git a/engines/ags/engine/media/audio/audio.h b/engines/ags/engine/media/audio/audio.h
index abdcdd4ff9..56b84dfbec 100644
--- a/engines/ags/engine/media/audio/audio.h
+++ b/engines/ags/engine/media/audio/audio.h
@@ -143,9 +143,6 @@ extern int crossFadeVolumeAtStart;
 
 extern SOUNDCLIP *cachedQueuedMusic;
 
-// TODO: double check that ambient sounds array actually needs +1
-extern std::array<AmbientSound> ambient;
-
 } // namespace AGS3
 
 #endif
diff --git a/engines/ags/globals.cpp b/engines/ags/globals.cpp
index baa516a870..86f8b78030 100644
--- a/engines/ags/globals.cpp
+++ b/engines/ags/globals.cpp
@@ -50,6 +50,8 @@
 #include "ags/engine/ac/dynobj/scriptobject.h"
 #include "ags/engine/ac/dynobj/scriptregion.h"
 #include "ags/engine/ac/dynobj/scriptstring.h"
+#include "ags/engine/media/audio/ambientsound.h"
+#include "ags/engine/media/audio/audiodefines.h"
 #include "ags/engine/script/executingscript.h"
 #include "ags/engine/script/nonblockingscriptfunction.h"
 #include "ags/engine/script/script.h"
@@ -63,6 +65,11 @@ Globals::Globals() {
 
 	Common::fill(&_mousecurs[0], &_mousecurs[MAXCURSORS], nullptr);
 
+	// audio.cpp
+	_audioChannels = new std::array<SOUNDCLIP *>(MAX_SOUND_CHANNELS + 1);
+	// TODO: double check that ambient sounds array actually needs +1
+	_ambient = new std::array<AmbientSound>(MAX_SOUND_CHANNELS + 1);
+
 	// debugmanager.cpp globals
 	_DbgMgr = new AGS::Shared::DebugManager();
 
@@ -129,7 +136,11 @@ Globals::Globals() {
 Globals::~Globals() {
 	g_globals = nullptr;
 
-	// debug.cpp
+	// audio.cpp
+	delete _audioChannels;
+	delete _ambient;
+
+	// debugmanager.cpp
 	delete _DbgMgr;
 
 	// fonts.cpp
diff --git a/engines/ags/globals.h b/engines/ags/globals.h
index d7f237bbaa..5207d12050 100644
--- a/engines/ags/globals.h
+++ b/engines/ags/globals.h
@@ -27,6 +27,7 @@
 #include "ags/shared/util/version.h"
 #include "ags/shared/gui/guimain.h"
 #include "ags/shared/script/cc_script.h"
+#include "ags/lib/std/array.h"
 #include "ags/lib/std/set.h"
 
 namespace AGS3 {
@@ -51,6 +52,7 @@ class SplitLines;
 class TTFFontRenderer;
 class WFNFontRenderer;
 
+struct AmbientSound;
 struct CCAudioChannel;
 struct CCAudioClip;
 struct CCCharacter;
@@ -82,6 +84,7 @@ struct ScriptObject;
 struct ScriptRegion;
 struct ScriptString;
 struct ScriptSystem;
+struct SOUNDCLIP;
 struct SpriteListEntry;
 struct ViewStruct;
 
@@ -100,6 +103,16 @@ public:
 
 	/**@}*/
 
+	/**
+	 * \defgroup audio globals
+	 * @{
+	 */
+
+	std::array<SOUNDCLIP *> *_audioChannels;
+	std::array<AmbientSound> *_ambient;
+
+	/**@}*/
+
 	/**
 	 * \defgroup debug globals
 	 * @{


Commit: 1686b7e4d96fe51be8875eca4979b3e4e449f2a8
    https://github.com/scummvm/scummvm/commit/1686b7e4d96fe51be8875eca4979b3e4e449f2a8
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-02T18:53:52-08:00

Commit Message:
AGS: Adding virtual destructors

Changed paths:
    engines/ags/engine/ac/dynobj/cc_dynamicarray.h
    engines/ags/engine/ac/dynobj/cc_dynamicobject.h
    engines/ags/engine/ac/dynobj/scriptfile.h


diff --git a/engines/ags/engine/ac/dynobj/cc_dynamicarray.h b/engines/ags/engine/ac/dynobj/cc_dynamicarray.h
index d68244e64c..8df26233b8 100644
--- a/engines/ags/engine/ac/dynobj/cc_dynamicarray.h
+++ b/engines/ags/engine/ac/dynobj/cc_dynamicarray.h
@@ -32,6 +32,8 @@ namespace AGS3 {
 #define ARRAY_MANAGED_TYPE_FLAG    0x80000000
 
 struct CCDynamicArray final : ICCDynamicObject {
+	virtual ~CCDynamicArray() {}
+
 	// return the type name of the object
 	const char *GetType() override;
 	int Dispose(const char *address, bool force) override;
diff --git a/engines/ags/engine/ac/dynobj/cc_dynamicobject.h b/engines/ags/engine/ac/dynobj/cc_dynamicobject.h
index dc1a3ce503..4eaa249dd5 100644
--- a/engines/ags/engine/ac/dynobj/cc_dynamicobject.h
+++ b/engines/ags/engine/ac/dynobj/cc_dynamicobject.h
@@ -92,7 +92,7 @@ struct ICCDynamicObject {
 
 protected:
 	ICCDynamicObject() {}
-	~ICCDynamicObject() {}
+	virtual ~ICCDynamicObject() {}
 };
 
 struct ICCObjectReader {
diff --git a/engines/ags/engine/ac/dynobj/scriptfile.h b/engines/ags/engine/ac/dynobj/scriptfile.h
index b5085c2e5a..990223d0e6 100644
--- a/engines/ags/engine/ac/dynobj/scriptfile.h
+++ b/engines/ags/engine/ac/dynobj/scriptfile.h
@@ -50,6 +50,7 @@ struct sc_File final : ICCDynamicObject {
 	void Close();
 
 	sc_File();
+	virtual ~sc_File() {}
 
 	// Legacy support for reading and writing object values by their relative offset
 	const char *GetFieldPtr(const char *address, intptr_t offset) override;


Commit: 11ded31a83e061ef50468cc3816f0c918bfdfa1a
    https://github.com/scummvm/scummvm/commit/11ded31a83e061ef50468cc3816f0c918bfdfa1a
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2021-03-02T18:53:52-08:00

Commit Message:
AGS: Added detection entries

Changed paths:
    engines/ags/detection_tables.h


diff --git a/engines/ags/detection_tables.h b/engines/ags/detection_tables.h
index b01da73040..2af4d3f321 100644
--- a/engines/ags/detection_tables.h
+++ b/engines/ags/detection_tables.h
@@ -353,6 +353,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "bigbadwolf3lilpiggies", "Big Bad Wolf & 3 Lil' Piggies" },
 	{ "bigglesonmars", "Biggles On Mars" },
 	{ "billyboysimportantwinelottery", "Billy Boy's Important Wine Lottery" },
+	{ "billymasterswasright", "Billy Masters Was Right" },
 	{ "birdy", "Birdy" },
 	{ "bj7thecardinalsins", "BJ7: The Cardinal Sins" },
 	{ "bjcase2", "BJ Case 2" },
@@ -437,6 +438,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "colourwise", "ColourWise" },
 	{ "colourwiseleveleditor", "ColourWise - Level Editor" },
 	{ "columbuslander", "Columbus Lander" },
+	{ "comedyquest", "Comedy Quest" },
 	{ "comradecitizenpart1", "Comrade Citizen (part 1)" },
 	{ "confessionsofacatburglar", "Confessions Of A Cat Burglar" },
 	{ "conspiracybelowzero", "Conspiracy: Below-Zero" },
@@ -816,8 +818,8 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "magssep2007", "MAGS Sep 2007" },
 	{ "manboy", "Man Boy" },
 	{ "maniacmansiondeluxe", "Maniac Mansion Deluxe" },
-	{ "maniacmansionmania", "Maniac Mansion Mania" },
-	{ "maniacmansionmania02", "Maniac Mansion Mania 02" },
+	{ "maniacmansionmania1", "Maniac Mansion Mania" },
+	{ "maniacmansionmania2", "Maniac Mansion Mania 02" },
 	{ "mardsrevengebytk", "Mard's Revenge by TK" },
 	{ "martyausdemall", "Marty aus dem All" },
 	{ "mash", "M*A*S*H*: The Point n' Click Adventure" },
@@ -1187,7 +1189,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "sword", "Sword" },
 	{ "sydneyfindsemployment", "Sydney Finds Employment" },
 	{ "sydneytreadsthecatwalk", "Sydney Treads the Catwalk" },
-	{ "symplokelaleyendadegustavobuenocapitulo1", "Symploke. La Leyenda de Gustavo Bueno. Capitulo 1" },
+	{ "symploke1", "Symploke. La Leyenda de Gustavo Bueno. Capitulo 1" },
 	{ "talesofchickenry", "Tales of Chickenry" },
 	{ "tao", "Tao" },
 	{ "tarthenia", "Tarthenia" },
@@ -1332,6 +1334,7 @@ const PlainGameDescriptor GAME_NAMES[] = {
 	{ "unintelligentdesign", "Unintelligent Design" },
 	{ "unprofe", "Un Profe" },
 	{ "updatequest", "Update Quest" },
+	{ "urbanwitchstory", "Urban Witch Story" },
 	{ "utopiaoftyrant", "Utopia of Tyrant" },
 	{ "vacationquestthing", "Vacation Quest... Thing" },
 	{ "valhallaextinction", "Valhalla Extinction" },
@@ -1595,6 +1598,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("atotkdeluxe", "atotk.exe", "68d4f3488a9dcec74584651c0e29e439", 5078719), // Steam
 	GAME_ENTRY("apotheosis", "the apotheosis project.exe", "0cab252e992e5da65bdbf3648c2b70df", 1144087889), // 1.0
 	GAME_ENTRY("apotheosis", "the apotheosis project.exe", "0115a64ddec9396108f32da31d761ecb", 1144677502), //Steam
+	GAME_ENTRY("apotheosis", "The Apotheosis Project.ags", "0d9ae5a4ffd3e3e968c6addb5d524954", 1142362222), // Steam Linux
 	GAME_ENTRY("beer", "beer!.exe", "6f201fd7a19869c85f49c7c471d0479a", 5055091), // Steam
 	GAME_ENTRY("blackwell1", "blackwell1.exe", "605e124cb7e0b56841c471e2d641c224", 18822697), // GOG
 	GAME_ENTRY_PLUGIN("blackwell1", "blackwell1.exe", "605e124cb7e0b56841c471e2d641c224", 18824597, AGSTEAM_BLACKWELL), // Steam
@@ -1697,6 +1701,8 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("qfi", "qfi.exe", "32b36aebe0729c9360bc10dcddc0653c", 538562096), // GOG
 	GAME_ENTRY("qfi", "qfi.exe", "32b36aebe0729c9360bc10dcddc0653c", 538681872), // Steam
 	GAME_ENTRY("qfi", "agsgame.dat", "9efb669ada4b685f9a5a91ce161424a7", 532694795), // Linux Groupees
+	GAME_ENTRY("qfi", "agsgame.dat", "2a0ba29e479ca5aa8c6b4233f030e78f", 536391599),
+	GAME_ENTRY("qfi", "agsgame.dat", "2a0ba29e479ca5aa8c6b4233f030e78f", 536513114), // Steam Linux
 	GAME_ENTRY("resonance", "resonance.exe", "2e635c22bcbf0ed3d46f1bcde71812d4", 849404957), // GOG
 	GAME_ENTRY("resonance", "resonance.exe", "2e635c22bcbf0ed3d46f1bcde71812d4", 849410915), // Steam
 	GAME_ENTRY("richardandalice", "richardandalice.exe", "1023d348f67ba958f78ed62d029565c7", 109164768), // Steam
@@ -1705,6 +1711,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("roguestate", "roguestate.exe", "981a1c4d5a64b8ebe300f9769acf0fe5", 895486573), // Steam
 	GAME_ENTRY("samaritan", "samaritan.exe", "79dd677433bbb10d4970367eb68b243c", 78070237), // Groupees, v1.1
 	GAME_ENTRY("samaritan", "samaritan.exe", "5fb404a4a7c9cd1449dfdd3d23fa0250", 78753952), // Steam
+	GAME_ENTRY("samaritan", "samaritan.exe", "6a3b669b7d34ec9356a665afe0c2c003", 78438375), // Steam
 	GAME_ENTRY("shardlight", "shardlight.exe", "ee801fba52d252249677a9170bd2db96", 642157876), // Steam
 	GAME_ENTRY("shardlight", "shardlight.exe", "ee801fba52d252249677a9170bd2db96", 642151325),
 	GAME_ENTRY("shivah", "shivah.exe", "6cddccb3744ec5c6af7c398fb7b3b11c", 19542815), // Official website
@@ -1964,6 +1971,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("bigbadwolf3lilpiggies", "big bad wolf.exe", "06a03fe35791b0578068ab1873455463", 5812024),
 	GAME_ENTRY("bigglesonmars", "biggles on mars.exe", "089fab88e6e1075a2f5b271f6f5b3c57", 29048931),
 	GAME_ENTRY("billyboysimportantwinelottery", "billyboy.exe", "5881d6b88386317dc9d67524a14b11d4", 4872317),
+	GAME_ENTRY("billymasterswasright", "Billy Masters Was Right.exe", "6fe5526eb7dc5b8fe82fb447a4701af7", 44901409),
 	GAME_ENTRY("birdy", "birdy.exe", "06a03fe35791b0578068ab1873455463", 4250415),
 	GAME_ENTRY("bj7thecardinalsins", "bj7.exe", "18b284c22010850f79bc5c20054a70c4", 13714066),
 	GAME_ENTRY("bjcase2", "bj2.exe", "465f972675db2da6040518221af5b0ba", 6318491),
@@ -2048,6 +2056,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("colourwise", "colourwise.exe", "473f0e2fd72b747cef62d91090ab74c7", 24461117),
 	GAME_ENTRY("colourwiseleveleditor", "colourwise - Level Editor.exe", "3e09048ec0763a90ffa4eaeeb8f96df5", 3365519),
 	GAME_ENTRY("columbuslander", "columbus lander.exe", "779421cd8ad5268e2efdb26e04608db7", 48744943),
+	GAME_ENTRY("comedyquest", "Comedy Quest.exe", "7a0123d8f6575e9954a18125456515f4", 22381783), // Steam
 	GAME_ENTRY("comradecitizenpart1", "citizen.exe", "06a03fe35791b0578068ab1873455463", 2174301),
 	GAME_ENTRY("confessionsofacatburglar", "cat.exe", "0500aacb6c176d47ac0f8158f055db83", 1328541),
 	GAME_ENTRY("conspiracybelowzero", "conspiracy.exe", "338fa79960d40689063af31c671b8729", 395111008),
@@ -2421,8 +2430,9 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("magssep2007", "MAGS Sep 2007.exe", "f120690b506dd63cd7d1112ea6af2f77", 6007305),
 	GAME_ENTRY("manboy", "Man Boy.exe", "1275885401b7d2ece491e704535707d9", 3038532),
 	GAME_ENTRY("maniacmansiondeluxe", "Maniac.exe", "465f972675db2da6040518221af5b0ba", 10409172),
-	GAME_ENTRY("maniacmansionmania", "MMM.exe", "465f972675db2da6040518221af5b0ba", 5476481),
-	GAME_ENTRY("maniacmansionmania02", "MMM02.exe", "3b7cceb3e4bdb031dc5d8f290936e94b", 5830457),
+	GAME_ENTRY("maniacmansionmania1", "MMM.exe", "465f972675db2da6040518221af5b0ba", 5476481),
+	GAME_ENTRY("maniacmansionmania1", "MMM.exe", "137a2bc940f033beab257b2fa88526ba", 10917227),
+	GAME_ENTRY("maniacmansionmania2", "MMM02.exe", "3b7cceb3e4bdb031dc5d8f290936e94b", 5830457),
 	GAME_ENTRY("mardsrevengebytk", "MPLR.exe", "f3a13b2d6c2e0fe04c6f466062920e23", 1771793),
 	GAME_ENTRY("martyausdemall", "test3.exe", "0710e2ec71042617f565c01824f0cf3c", 4352013),
 	GAME_ENTRY("mash", "MASH.ags", "8fe67d5a066d4ab203db0cce102ed86c", 12536184),
@@ -2799,7 +2809,8 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("sword", "Sword.exe", "0500aacb6c176d47ac0f8158f055db83", 1847692),
 	GAME_ENTRY("sydneyfindsemployment", "sydney.exe", "06a03fe35791b0578068ab1873455463", 17351738),
 	GAME_ENTRY("sydneytreadsthecatwalk", "sydney two.exe", "615e806856b7730afadf1fea9a756b70", 31480339),
-	GAME_ENTRY("symplokelaleyendadegustavobuenocapitulo1", "Symploke.exe", "ff20c8c9dda8379607db87e7726909c6", 29996616),
+	GAME_ENTRY("symploke1", "Symploke.exe", "ff20c8c9dda8379607db87e7726909c6", 29996616),
+	GAME_ENTRY("symploke1", "symploke1.exe", "ff20c8c9dda8379607db87e7726909c6", 57363019),
 	GAME_ENTRY("talesofchickenry", "Chickenry.exe", "aabdafae8b57dfc48fdf158a72326c23", 50338519),
 	GAME_ENTRY("tao", "Tao through space and time AGS.exe", "7a3096ac0237cb6aa8e1718e28caf039", 35930047),
 	GAME_ENTRY("tarthenia", "Tarthenia.exe", "a524cbb1c51589903c4043b98917f1d9", 1047988125),
@@ -2956,6 +2967,7 @@ const AGSGameDescription GAME_DESCRIPTIONS[] = {
 	GAME_ENTRY("unintelligentdesign", "UD.exe", "5ca1bc01c5a45388bd5c84ef36077361", 6019596),
 	GAME_ENTRY("unprofe", "Un Profe.exe", "e88fd6a23a5e498d7b0d50e3bb914085", 3465541),
 	GAME_ENTRY("updatequest", "U-Quest.exe", "06a03fe35791b0578068ab1873455463", 1776804),
+	GAME_ENTRY("urbanwitchstory", "Urban Witch Story.exe", "636950f50c877767bca7e2b1250632f7", 441430956),
 	GAME_ENTRY("utopiaoftyrant", "Utopia_of_a_Tyrant.exe", "f8a42e09e40a7ab1cd2a21f74a5e0980", 80966652),
 	GAME_ENTRY("vacationquestthing", "MGA.exe", "95b7dd55f6e15c8a2118856ed9fe8ff9", 943647),
 	GAME_ENTRY("valhallaextinction", "MAGSjuly2016.exe", "95864ae16f51c512985007dca83c1370", 4464850),




More information about the Scummvm-git-logs mailing list