[Scummvm-git-logs] scummvm master -> 2d21a7dfdec1dc9eac855244bccc800f3af5d773

dreammaster noreply at scummvm.org
Tue Apr 26 05:20:18 UTC 2022


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

Summary:
07e74fdd72 AGS: Typecast warning fixes in data serialization
250190e997 AGS: Fixing various type-cast warnings
0be3602b44 AGS: In ScriptAudioClip changed index fields from char to unsigned
f2399dc15c AGS: Fixing various "unused variable/arg" warnings
7b13f47d04 AGS: Fixing unimplemented cases in switches
5b291a5ef0 AGS: Typecast warning fixes in data serialization
a633e9d72f AGS: Fixing various type-cast warnings
d0e8eba2c4 AGS: In DialogOptions changed index fields from char to int
a6f42ad1ab AGS: Fixing various "unused va/arg" warnings + removed empty funcs
357679d2a8 AGS: Fixing unimplemented cases in switches
85684cbae6 AGS: Fixed couple of "unreachable code" warnings
741405aa3f AGS: Fixed potential use of uninitialized vars
e60335a58a AGS: In log config fixed missing group letter id for "script"
194dc7bafa AGS: Fixed game events not cleared inside blocking action
22bcba88f5 AGS: Fixed RoomObject animation loosing parameters
1ab42991d1 AGS: Added more event constants, clarified couple event calls
2d21a7dfde AGS: Removed couple of unused constants


Commit: 07e74fdd726ddf21201815b38593fbf210f2fdb4
    https://github.com/scummvm/scummvm/commit/07e74fdd726ddf21201815b38593fbf210f2fdb4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T18:47:08-07:00

Commit Message:
AGS: Typecast warning fixes in data serialization

>From upstream efed621fda5adabac8937b8d0ca64e537fabdfeb

Changed paths:
    engines/ags/engine/game/savegame_v321.cpp
    engines/ags/shared/ac/mouse_cursor.cpp
    engines/ags/shared/ac/view.cpp
    engines/ags/shared/ac/view.h
    engines/ags/shared/game/main_game_file.cpp
    engines/ags/shared/game/room_file.cpp
    engines/ags/shared/script/cc_script.cpp
    engines/ags/shared/util/data_ext.cpp
    engines/ags/shared/util/multi_file_lib.cpp


diff --git a/engines/ags/engine/game/savegame_v321.cpp b/engines/ags/engine/game/savegame_v321.cpp
index 816a6412da9..672d2697f38 100644
--- a/engines/ags/engine/game/savegame_v321.cpp
+++ b/engines/ags/engine/game/savegame_v321.cpp
@@ -96,7 +96,7 @@ static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, Re
 	r_data.GlobalScript.Data.reset(new char[gdatasize]);
 	in->Read(r_data.GlobalScript.Data.get(), gdatasize);
 
-	if (in->ReadInt32() != (int32_t) _G(numScriptModules)) {
+	if (in->ReadInt32() != (int32_t)_G(numScriptModules)) {
 		return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of script modules.");
 	}
 	r_data.ScriptModules.resize(_G(numScriptModules));
diff --git a/engines/ags/shared/ac/mouse_cursor.cpp b/engines/ags/shared/ac/mouse_cursor.cpp
index 2dff2e01dc5..24ee06e6fe8 100644
--- a/engines/ags/shared/ac/mouse_cursor.cpp
+++ b/engines/ags/shared/ac/mouse_cursor.cpp
@@ -55,10 +55,10 @@ void MouseCursor::WriteToFile(Stream *out) {
 
 void MouseCursor::ReadFromSavegame(Stream *in, int cmp_ver) {
 	pic = in->ReadInt32();
-	hotx = in->ReadInt32();
-	hoty = in->ReadInt32();
-	view = in->ReadInt32();
-	flags = in->ReadInt32();
+	hotx = static_cast<int16_t>(in->ReadInt32());
+	hoty = static_cast<int16_t>(in->ReadInt32());
+	view = static_cast<int16_t>(in->ReadInt32());
+	flags = static_cast<int8_t>(in->ReadInt32());
 	if (cmp_ver > 0)
 		animdelay = in->ReadInt32();
 }
diff --git a/engines/ags/shared/ac/view.cpp b/engines/ags/shared/ac/view.cpp
index ef362f5f1e9..fc390e489cc 100644
--- a/engines/ags/shared/ac/view.cpp
+++ b/engines/ags/shared/ac/view.cpp
@@ -83,7 +83,7 @@ void ViewLoopNew::Dispose() {
 }
 
 void ViewLoopNew::WriteToFile_v321(Stream *out) {
-	out->WriteInt16(numFrames);
+	out->WriteInt16(static_cast<uint16_t>(numFrames));
 	out->WriteInt32(flags);
 	WriteFrames_Aligned(out);
 }
@@ -97,7 +97,7 @@ void ViewLoopNew::WriteFrames_Aligned(Stream *out) {
 }
 
 void ViewLoopNew::ReadFromFile_v321(Stream *in) {
-	Initialize(in->ReadInt16());
+	Initialize(static_cast<uint16_t>(in->ReadInt16()));
 	flags = in->ReadInt32();
 	ReadFrames_Aligned(in);
 }
@@ -125,14 +125,14 @@ void ViewStruct::Dispose() {
 }
 
 void ViewStruct::WriteToFile(Stream *out) {
-	out->WriteInt16(numLoops);
+	out->WriteInt16(static_cast<uint16_t>(numLoops));
 	for (int i = 0; i < numLoops; i++) {
 		loops[i].WriteToFile_v321(out);
 	}
 }
 
 void ViewStruct::ReadFromFile(Stream *in) {
-	Initialize(in->ReadInt16());
+	Initialize(static_cast<uint16_t>(in->ReadInt16()));
 
 	for (int i = 0; i < numLoops; i++) {
 		loops[i].ReadFromFile_v321(in);
diff --git a/engines/ags/shared/ac/view.h b/engines/ags/shared/ac/view.h
index 906c9da00a0..cafcf04af63 100644
--- a/engines/ags/shared/ac/view.h
+++ b/engines/ags/shared/ac/view.h
@@ -56,7 +56,7 @@ struct ViewFrame {
 #define LOOPFLAG_RUNNEXTLOOP 1
 
 struct ViewLoopNew {
-	short numFrames;
+	int numFrames;
 	int   flags;
 	std::vector<ViewFrame> frames;
 	// NOTE: we still need numFrames for backward compatibility:
@@ -74,7 +74,7 @@ struct ViewLoopNew {
 };
 
 struct ViewStruct {
-	short numLoops;
+	int numLoops;
 	std::vector<ViewLoopNew> loops;
 
 	ViewStruct();
diff --git a/engines/ags/shared/game/main_game_file.cpp b/engines/ags/shared/game/main_game_file.cpp
index f93c0aa1ff4..3fe02db78f9 100644
--- a/engines/ags/shared/game/main_game_file.cpp
+++ b/engines/ags/shared/game/main_game_file.cpp
@@ -350,8 +350,8 @@ void ReadDialogs(DialogTopic *&dialog,
 	} else {
 		// Encrypted text on > 2.60
 		while (1) {
-			size_t newlen = in->ReadInt32();
-			if (static_cast<uint32_t>(newlen) == 0xCAFEBEEF) { // GUI magic
+			size_t newlen = static_cast<uint32_t>(in->ReadInt32());
+			if (newlen == 0xCAFEBEEF) { // GUI magic
 				in->Seek(-4);
 				break;
 			}
diff --git a/engines/ags/shared/game/room_file.cpp b/engines/ags/shared/game/room_file.cpp
index 16e92e71a12..1802cf0577d 100644
--- a/engines/ags/shared/game/room_file.cpp
+++ b/engines/ags/shared/game/room_file.cpp
@@ -338,10 +338,10 @@ HError ReadCompSc3Block(RoomStruct *room, Stream *in, RoomFileVersion data_ver)
 
 // Room object names
 HError ReadObjNamesBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
-	size_t name_count = in->ReadByte();
+	size_t name_count = static_cast<uint8_t>(in->ReadInt8());
 	if (name_count != room->ObjectCount)
 		return new RoomFileError(kRoomFileErr_InconsistentData,
-			String::FromFormat("In the object names block, expected name count: %d, got %d", room->ObjectCount, name_count));
+			String::FromFormat("In the object names block, expected name count: %zu, got %zu", room->ObjectCount, name_count));
 
 	for (size_t i = 0; i < room->ObjectCount; ++i) {
 		if (data_ver >= kRoomVersion_3415)
@@ -354,10 +354,10 @@ HError ReadObjNamesBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver)
 
 // Room object script names
 HError ReadObjScNamesBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
-	size_t name_count = in->ReadByte();
+	size_t name_count = static_cast<uint8_t>(in->ReadInt8());
 	if (name_count != room->ObjectCount)
 		return new RoomFileError(kRoomFileErr_InconsistentData,
-			String::FromFormat("In the object script names block, expected name count: %d, got %d", room->ObjectCount, name_count));
+			String::FromFormat("In the object script names block, expected name count: %zu, got %zu", room->ObjectCount, name_count));
 
 	for (size_t i = 0; i < room->ObjectCount; ++i) {
 		if (data_ver >= kRoomVersion_3415)
diff --git a/engines/ags/shared/script/cc_script.cpp b/engines/ags/shared/script/cc_script.cpp
index 9b1972632a1..07673348930 100644
--- a/engines/ags/shared/script/cc_script.cpp
+++ b/engines/ags/shared/script/cc_script.cpp
@@ -281,7 +281,7 @@ bool ccScript::Read(Stream *in) {
 		sectionOffsets = nullptr;
 	}
 
-	if ((uint32)in->ReadInt32() != ENDFILESIG) {
+	if (static_cast<uint32_t>(in->ReadInt32()) != ENDFILESIG) {
 		cc_error("internal error rebuilding script");
 		return false;
 	}
diff --git a/engines/ags/shared/util/data_ext.cpp b/engines/ags/shared/util/data_ext.cpp
index 866ae2873b1..261aedec70a 100644
--- a/engines/ags/shared/util/data_ext.cpp
+++ b/engines/ags/shared/util/data_ext.cpp
@@ -126,7 +126,7 @@ void WriteExtBlock(int block, const String &ext_id, PfnWriteExtBlock writer, int
 	// Write block's header
 	(flags & kDataExt_NumID32) != 0 ?
 		out->WriteInt32(block) :
-		out->WriteInt8(block);
+		out->WriteInt8(static_cast<int8_t>(block));
 	if (block == 0) // new-style string id
 		ext_id.WriteCount(out, 16);
 	soff_t sz_at = out->GetPosition();
diff --git a/engines/ags/shared/util/multi_file_lib.cpp b/engines/ags/shared/util/multi_file_lib.cpp
index 5e47eaafff1..563ebbd4c12 100644
--- a/engines/ags/shared/util/multi_file_lib.cpp
+++ b/engines/ags/shared/util/multi_file_lib.cpp
@@ -146,7 +146,7 @@ MFLUtil::MFLError MFLUtil::ReadSigsAndVersion(Stream *in, MFLVersion *p_lib_vers
 	// if we've reached this point we must be right behind the header signature
 
 	// read library header
-	MFLVersion lib_version = (MFLVersion)in->ReadByte();
+	MFLVersion lib_version = static_cast<MFLVersion>(in->ReadInt8());
 	if ((lib_version != kMFLVersion_SingleLib) && (lib_version != kMFLVersion_MultiV10) &&
 	        (lib_version != kMFLVersion_MultiV11) && (lib_version != kMFLVersion_MultiV15) &&
 	        (lib_version != kMFLVersion_MultiV20) && (lib_version != kMFLVersion_MultiV21) &&
@@ -161,7 +161,7 @@ MFLUtil::MFLError MFLUtil::ReadSigsAndVersion(Stream *in, MFLVersion *p_lib_vers
 }
 
 MFLUtil::MFLError MFLUtil::ReadSingleFileLib(AssetLibInfo &lib, Stream *in, MFLVersion lib_version) {
-	int passwmodifier = in->ReadByte();
+	char passwmodifier = in->ReadInt8();
 	in->ReadInt8(); // unused byte
 	lib.LibFileNames.resize(1); // only one library part
 	size_t asset_count = (uint16)in->ReadInt16();
@@ -330,8 +330,8 @@ MFLUtil::MFLError MFLUtil::ReadV30(AssetLibInfo &lib, Stream *in, MFLVersion /*
 
 void MFLUtil::WriteHeader(const AssetLibInfo &lib, MFLVersion lib_version, int lib_index, Stream *out) {
 	out->Write(HeadSig, strlen(HeadSig));
-	out->WriteByte(lib_version);
-	out->WriteByte(lib_index);   // file number
+	out->WriteInt8(static_cast<uint8_t>(lib_version));
+	out->WriteInt8(static_cast<uint8_t>(lib_index));   // file number
 
 	// First datafile in chain: write the table of contents
 	if (lib_index == 0) {
@@ -351,7 +351,7 @@ void MFLUtil::WriteV30(const AssetLibInfo &lib, MFLVersion lib_version, Stream *
 	out->WriteInt32(lib.AssetInfos.size());
 	for (const auto &asset : lib.AssetInfos) {
 		StrUtil::WriteCStr(asset.FileName, out);
-		out->WriteInt8(asset.LibUid);
+		out->WriteInt8(static_cast<uint8_t>(asset.LibUid));
 		out->WriteInt64(asset.Offset);
 		out->WriteInt64(asset.Size);
 	}
@@ -390,12 +390,12 @@ void MFLUtil::ReadEncArray(void *data, size_t size, size_t count, Stream *in, in
 	uint8_t *ch = (uint8_t *)data;
 	const size_t len = size * count;
 	for (size_t i = 0; i < len; ++i) {
-		ch[i] -= GetNextPseudoRand(rand_val);
+		ch[i] = static_cast<uint8_t>(ch[i] - GetNextPseudoRand(rand_val));
 	}
 }
 
 int8_t MFLUtil::ReadEncInt8(Stream *in, int &rand_val) {
-	return in->ReadByte() - GetNextPseudoRand(rand_val);
+	return static_cast<int8_t>(in->ReadInt8() - GetNextPseudoRand(rand_val));
 }
 
 int32_t MFLUtil::ReadEncInt32(Stream *in, int &rand_val) {
@@ -410,7 +410,7 @@ int32_t MFLUtil::ReadEncInt32(Stream *in, int &rand_val) {
 void MFLUtil::ReadEncString(char *buffer, size_t max_len, Stream *in, int &rand_val) {
 	size_t i = 0;
 	while ((i == 0) || (buffer[i - 1] != 0)) {
-		buffer[i] = in->ReadByte() - GetNextPseudoRand(rand_val);
+		buffer[i] = static_cast<int8_t>(in->ReadInt8() - GetNextPseudoRand(rand_val));
 		if (i < max_len - 1)
 			i++;
 		else


Commit: 250190e997d1e8d84e89b7336775e35f194ddd14
    https://github.com/scummvm/scummvm/commit/250190e997d1e8d84e89b7336775e35f194ddd14
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T18:47:12-07:00

Commit Message:
AGS: Fixing various type-cast warnings

>From upstream 82e89d3c3dccfa0aba0b18c1aa544130ac7e6902

Changed paths:
    engines/ags/shared/ac/sprite_file.cpp
    engines/ags/shared/debugging/out.h
    engines/ags/shared/game/interactions.h
    engines/ags/shared/game/room_file.cpp
    engines/ags/shared/game/tra_file.cpp
    engines/ags/shared/game/tra_file.h
    engines/ags/shared/gfx/bitmap.cpp
    engines/ags/shared/gui/gui_main.cpp
    engines/ags/shared/util/directory.cpp
    engines/ags/shared/util/directory.h
    engines/ags/shared/util/math.h
    engines/ags/shared/util/memory_stream.cpp
    engines/ags/shared/util/memory_stream.h
    engines/ags/shared/util/string_compat.cpp
    engines/ags/shared/util/text_stream_reader.cpp


diff --git a/engines/ags/shared/ac/sprite_file.cpp b/engines/ags/shared/ac/sprite_file.cpp
index 39363fcb9a8..2520a905d3c 100644
--- a/engines/ags/shared/ac/sprite_file.cpp
+++ b/engines/ags/shared/ac/sprite_file.cpp
@@ -54,11 +54,11 @@ typedef ImBufferPtrT<uint8_t *> ImBufferPtr;
 typedef ImBufferPtrT<const uint8_t *> ImBufferCPtr;
 
 
-// Finds the given color's index in the palette, or returns -1 if such color is not there
+// Finds the given color's index in the palette, or returns SIZE_MAX if such color is not there
 static size_t lookup_palette(uint32_t col, uint32_t palette[256], uint32_t ncols) {
 	for (size_t i = 0; i < ncols; ++i)
 		if (palette[i] == col) return i;
-	return (size_t)-1;
+	return SIZE_MAX;
 }
 
 // Converts a 16/32-bit image into the indexed 8-bit pixel data with palette;
@@ -90,7 +90,7 @@ static bool CreateIndexedBitmap(const Bitmap *image, std::vector<uint8_t> &dst_d
 		default: assert(0); return false;
 		}
 
-		if ((int)pal_n == -1) {
+		if (pal_n == SIZE_MAX) {
 			if (pal_count == 256) return false;
 			pal_n = pal_count;
 			palette[pal_count++] = col;
diff --git a/engines/ags/shared/debugging/out.h b/engines/ags/shared/debugging/out.h
index 54479e9563b..86589fb51ab 100644
--- a/engines/ags/shared/debugging/out.h
+++ b/engines/ags/shared/debugging/out.h
@@ -112,8 +112,8 @@ enum MessageType {
 
 // This enumeration is a list of common hard-coded groups, but more could
 // be added via debugging configuration interface (see 'debug/debug.h').
-enum CommonDebugGroup {
-	kDbgGroup_None = -1,
+enum CommonDebugGroup : uint32 {
+	kDbgGroup_None = SIZE_MAX,
 	// Main debug group is for reporting general engine status and issues
 	kDbgGroup_Main = 0,
 	// Game group is for logging game logic state and issues
diff --git a/engines/ags/shared/game/interactions.h b/engines/ags/shared/game/interactions.h
index 41650de94b9..9bbe8e867aa 100644
--- a/engines/ags/shared/game/interactions.h
+++ b/engines/ags/shared/game/interactions.h
@@ -62,7 +62,7 @@ namespace AGS3 {
 namespace AGS {
 namespace Shared {
 
-enum InterValType {
+enum InterValType : int8_t {
 	kInterValInvalid = 0,
 	kInterValLiteralInt = 1,
 	kInterValVariable = 2,
diff --git a/engines/ags/shared/game/room_file.cpp b/engines/ags/shared/game/room_file.cpp
index 1802cf0577d..299b68b67cb 100644
--- a/engines/ags/shared/game/room_file.cpp
+++ b/engines/ags/shared/game/room_file.cpp
@@ -611,7 +611,8 @@ HRoomFileError UpdateRoomData(RoomStruct *room, RoomFileVersion data_ver, bool g
 	// Older format room messages had flags appended to the message string
 	// TODO: find out which data versions had these; is it safe to assume this was before kRoomVersion_pre114_3?
 	for (size_t i = 0; i < room->MessageCount; ++i) {
-		if (!room->Messages[i].IsEmpty() && room->Messages[i].GetLast() == (char)ROOM_MESSAGE_FLAG_DISPLAYNEXT) {
+		if (!room->Messages[i].IsEmpty() &&
+				static_cast<uint8_t>(room->Messages[i].GetLast()) == ROOM_MESSAGE_FLAG_DISPLAYNEXT) {
 			room->Messages[i].ClipRight(1);
 			room->MessageInfos[i].Flags |= MSG_DISPLAYNEXT;
 		}
diff --git a/engines/ags/shared/game/tra_file.cpp b/engines/ags/shared/game/tra_file.cpp
index f2786d34eff..7229b85dc1c 100644
--- a/engines/ags/shared/game/tra_file.cpp
+++ b/engines/ags/shared/game/tra_file.cpp
@@ -101,7 +101,7 @@ HError ReadTraBlock(Translation &tra, Stream *in, TraFileBlock block, const Stri
 		tra.SpeechFont = in->ReadInt32();
 		tra.RightToLeft = in->ReadInt32();
 		return HError::None();
-	case kTraFblk_ExtStrID:
+	case kTraFblk_None:
 		// continue reading extensions with string ID
 		break;
 	default:
diff --git a/engines/ags/shared/game/tra_file.h b/engines/ags/shared/game/tra_file.h
index f37a4974707..145b55f34da 100644
--- a/engines/ags/shared/game/tra_file.h
+++ b/engines/ags/shared/game/tra_file.h
@@ -47,7 +47,7 @@ enum TraFileErrorType {
 };
 
 enum TraFileBlock {
-	kTraFblk_ExtStrID = 0,
+	kTraFblk_None = 0,
 	kTraFblk_Dict = 1,
 	kTraFblk_GameID = 2,
 	kTraFblk_TextOpts = 3,
diff --git a/engines/ags/shared/gfx/bitmap.cpp b/engines/ags/shared/gfx/bitmap.cpp
index 59c4226cf0a..cde33b2c5a7 100644
--- a/engines/ags/shared/gfx/bitmap.cpp
+++ b/engines/ags/shared/gfx/bitmap.cpp
@@ -105,14 +105,14 @@ Bitmap *AdjustBitmapSize(Bitmap *src, int width, int height) {
 template <class TPx, size_t BPP_>
 struct PixelTransCpy {
 	static const size_t BPP = BPP_;
-	inline void operator()(uint8_t *dst, const uint8_t *src, color_t mask_color, bool use_alpha) const {
+	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
 		if (*(const TPx *)src == mask_color)
 			*(TPx *)dst = mask_color;
 	}
 };
 
 struct PixelNoSkip {
-	inline bool operator()(uint8_t *data, color_t mask_color, bool use_alpha) const {
+	inline bool operator ()(uint8_t *data, uint32_t mask_color, bool use_alpha) const {
 		return false;
 	}
 };
@@ -122,7 +122,7 @@ typedef PixelTransCpy<uint16_t, 2> PixelTransCpy16;
 
 struct PixelTransCpy24 {
 	static const size_t BPP = 3;
-	inline void operator()(uint8_t *dst, const uint8_t *src, color_t mask_color, bool use_alpha) const {
+	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
 		const uint8_t *mcol_ptr = (const uint8_t *)&mask_color;
 		if (src[0] == mcol_ptr[0] && src[1] == mcol_ptr[1] && src[2] == mcol_ptr[2]) {
 			dst[0] = mcol_ptr[0];
@@ -134,8 +134,8 @@ struct PixelTransCpy24 {
 
 struct PixelTransCpy32 {
 	static const size_t BPP = 4;
-	inline void operator()(uint8_t *dst, const uint8_t *src, color_t mask_color, bool use_alpha) const {
-		if (*(const uint32_t *)src == (uint32_t)mask_color)
+	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
+		if (*(const uint32_t *)src == mask_color)
 			*(uint32_t *)dst = mask_color;
 		else if (use_alpha)
 			dst[3] = src[3]; // copy alpha channel
@@ -151,7 +151,8 @@ struct PixelTransSkip32 {
 };
 
 template <class FnPxProc, class FnSkip>
-void ApplyMask(uint8_t *dst, const uint8_t *src, size_t pitch, size_t height, FnPxProc proc, FnSkip skip, color_t mask_color, bool dst_has_alpha, bool mask_has_alpha) {
+void ApplyMask(uint8_t *dst, const uint8_t *src, size_t pitch, size_t height, FnPxProc proc,
+		FnSkip skip, uint32_t mask_color, bool dst_has_alpha, bool mask_has_alpha) {
 	for (size_t y = 0; y < height; ++y) {
 		for (size_t x = 0; x < pitch; x += FnPxProc::BPP, src += FnPxProc::BPP, dst += FnPxProc::BPP) {
 			if (!skip(dst, mask_color, dst_has_alpha))
diff --git a/engines/ags/shared/gui/gui_main.cpp b/engines/ags/shared/gui/gui_main.cpp
index 3a45fdd9c86..c05a9345c2c 100644
--- a/engines/ags/shared/gui/gui_main.cpp
+++ b/engines/ags/shared/gui/gui_main.cpp
@@ -712,8 +712,7 @@ GUILabelMacro FindLabelMacros(const String &text) {
 				// Test which macro it is (if any)
 				macro_at++;
 				const size_t macro_len = ptr - macro_at;
-				if (macro_len == (size_t)-1 || macro_len > 20); // skip zero-length or too long substrings
-				else if (ags_strnicmp(macro_at, "gamename", macro_len) == 0)
+				if (ags_strnicmp(macro_at, "gamename", macro_len) == 0)
 					macro_flags |= kLabelMacro_Gamename;
 				else if (ags_strnicmp(macro_at, "overhotspot", macro_len) == 0)
 					macro_flags |= kLabelMacro_Overhotspot;
diff --git a/engines/ags/shared/util/directory.cpp b/engines/ags/shared/util/directory.cpp
index 0d455885e45..2938eb2e0e4 100644
--- a/engines/ags/shared/util/directory.cpp
+++ b/engines/ags/shared/util/directory.cpp
@@ -193,7 +193,7 @@ bool FindFileRecursive::Next() {
 }
 
 bool FindFileRecursive::PushDir(const String &sub) {
-	if (_maxLevel != -1 && (int)_fdirs.size() == _maxLevel)
+	if (_maxLevel != SIZE_MAX && (int)_fdirs.size() == _maxLevel)
 		return false; // no more nesting allowed
 
 	String path = Path::ConcatPaths(_fullDir, sub);
diff --git a/engines/ags/shared/util/directory.h b/engines/ags/shared/util/directory.h
index 68b23f4715c..d714a02ca9a 100644
--- a/engines/ags/shared/util/directory.h
+++ b/engines/ags/shared/util/directory.h
@@ -112,7 +112,7 @@ private:
 	Common::Stack<FindFile> _fdirs;
 	FindFile _fdir; // current find dir iterator
 	FindFile _ffile; // current find file iterator
-	int _maxLevel = -1; // max nesting level, -1 for unrestricted
+	uint32_t _maxLevel = SIZE_MAX;
 	String _fullDir; // full directory path
 	String _curDir; // current dir path, relative to the base path
 	String _curFile; // current file path with parent dirs
diff --git a/engines/ags/shared/util/math.h b/engines/ags/shared/util/math.h
index dcb521e8e71..68ce2e5e492 100644
--- a/engines/ags/shared/util/math.h
+++ b/engines/ags/shared/util/math.h
@@ -80,7 +80,8 @@ inline T Surplus(const T &larger, const T &smaller) {
 // returns same value converted if it's in range, or provided replacement if it's not.
 template <typename T, typename TBig>
 inline T InRangeOrDef(const TBig &val, const T &def) {
-	return (val >= std::numeric_limits<T>::min() && val <= std::numeric_limits<T>::max()) ? val : def;
+	return (val >= std::numeric_limits<T>::min() && val <= std::numeric_limits<T>::max()) ?
+		static_cast<T>(val) : def;
 }
 
 inline float RadiansToDegrees(float rads) {
diff --git a/engines/ags/shared/util/memory_stream.cpp b/engines/ags/shared/util/memory_stream.cpp
index 59fa27720b4..62fc4c764e6 100644
--- a/engines/ags/shared/util/memory_stream.cpp
+++ b/engines/ags/shared/util/memory_stream.cpp
@@ -49,7 +49,9 @@ MemoryStream::MemoryStream(uint8_t *buf, size_t buf_sz, StreamWorkMode mode, Dat
 void MemoryStream::Close() {
 	_cbuf = nullptr;
 	_buf = nullptr;
-	_pos = -1;
+	_buf_sz = 0;
+	_len = 0;
+	_pos = 0;
 }
 
 bool MemoryStream::Flush() {
@@ -88,9 +90,9 @@ size_t MemoryStream::Read(void *buffer, size_t size) {
 	if (EOS()) {
 		return 0;
 	}
-	soff_t remain = _len - _pos;
-	assert(remain > 0);
-	size_t read_sz = std::min((size_t)remain, size);
+	assert(_len > _pos);
+	size_t remain = _len - _pos;
+	size_t read_sz = std::min(remain, size);
 	memcpy(buffer, _cbuf + _pos, read_sz);
 	_pos += read_sz;
 	return read_sz;
@@ -100,28 +102,31 @@ int32_t MemoryStream::ReadByte() {
 	if (EOS()) {
 		return -1;
 	}
-	return _cbuf[(size_t)(_pos++)];
+	return _cbuf[_pos++];
 }
 
 bool MemoryStream::Seek(soff_t offset, StreamSeek origin) {
 	if (!CanSeek()) {
 		return false;
 	}
+	soff_t pos = 0;
 	switch (origin) {
-	case kSeekBegin:    _pos = 0 + offset; break;
-	case kSeekCurrent:  _pos = _pos + offset; break;
-	case kSeekEnd:      _pos = _len + offset; break;
+	case kSeekBegin:    pos = 0 + offset; break;
+	case kSeekCurrent:  pos = _pos + offset; break;
+	case kSeekEnd:      pos = _len + offset; break;
 	default:
 		return false;
 	}
-	_pos = std::max<soff_t>(0, _pos);
-	_pos = std::min<soff_t>(_len, _pos); // clamp to EOS
+	_pos = static_cast<size_t>(std::max<soff_t>(0, pos));
+	_pos = static_cast<size_t>(std::min<soff_t>(_len, pos)); // clamp to EOS
 	return true;
 }
 
 size_t MemoryStream::Write(const void *buffer, size_t size) {
-	if (_pos >= (soff_t)_buf_sz) { return 0; }
-	size = std::min(size, _buf_sz - (size_t)_pos);
+	if (_pos >= _buf_sz) {
+		return 0;
+	}
+	size = std::min(size, _buf_sz - _pos);
 	memcpy(_buf + _pos, buffer, size);
 	_pos += size;
 	_len += size;
diff --git a/engines/ags/shared/util/memory_stream.h b/engines/ags/shared/util/memory_stream.h
index d50526a38fb..5cba412d206 100644
--- a/engines/ags/shared/util/memory_stream.h
+++ b/engines/ags/shared/util/memory_stream.h
@@ -82,7 +82,7 @@ protected:
 	size_t                   _buf_sz; // hard buffer limit
 	size_t                   _len; // calculated length of stream
 	const StreamWorkMode     _mode;
-	soff_t                   _pos; // current stream pos
+	size_t                   _pos; // current stream pos
 
 private:
 	uint8_t *_buf;
diff --git a/engines/ags/shared/util/string_compat.cpp b/engines/ags/shared/util/string_compat.cpp
index 3afb03f3231..55a466fd1cf 100644
--- a/engines/ags/shared/util/string_compat.cpp
+++ b/engines/ags/shared/util/string_compat.cpp
@@ -28,14 +28,14 @@ namespace AGS3 {
 char *ags_strlwr(char *s) {
 	char *p = s;
 	for (; *p; p++)
-		*p = tolower(*p);
+		*p = (char)tolower(*p);
 	return s;
 }
 
 char *ags_strupr(char *s) {
 	char *p = s;
 	for (; *p; p++)
-		*p = toupper(*p);
+		*p = (char)toupper(*p);
 	return s;
 }
 
diff --git a/engines/ags/shared/util/text_stream_reader.cpp b/engines/ags/shared/util/text_stream_reader.cpp
index eb5b2f20d7b..fb1dfc2c9a7 100644
--- a/engines/ags/shared/util/text_stream_reader.cpp
+++ b/engines/ags/shared/util/text_stream_reader.cpp
@@ -110,8 +110,8 @@ String TextStreamReader::ReadLine() {
 }
 
 String TextStreamReader::ReadAll() {
-	soff_t len = _stream->GetLength() - _stream->GetPosition();
-	return ReadString(len > SIZE_MAX ? SIZE_MAX : (size_t)len);
+	size_t len = Math::InRangeOrDef<size_t>(_stream->GetLength() - _stream->GetPosition(), SIZE_MAX);
+	return ReadString(len);
 }
 
 } // namespace Shared


Commit: 0be3602b44dd701a29db80c73bdbb6d881b1c009
    https://github.com/scummvm/scummvm/commit/0be3602b44dd701a29db80c73bdbb6d881b1c009
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T18:47:12-07:00

Commit Message:
AGS: In ScriptAudioClip changed index fields from char to unsigned

>From upstream 012853058ecd3eb06abf51ad76f150d727dbad5e

Changed paths:
    engines/ags/shared/ac/dynobj/script_audio_clip.cpp
    engines/ags/shared/ac/dynobj/script_audio_clip.h


diff --git a/engines/ags/shared/ac/dynobj/script_audio_clip.cpp b/engines/ags/shared/ac/dynobj/script_audio_clip.cpp
index 4599b1155e9..1428dd0b05d 100644
--- a/engines/ags/shared/ac/dynobj/script_audio_clip.cpp
+++ b/engines/ags/shared/ac/dynobj/script_audio_clip.cpp
@@ -30,9 +30,9 @@ void ScriptAudioClip::ReadFromFile(Stream *in) {
 	id = in->ReadInt32();
 	scriptName.ReadCount(in, SCRIPTAUDIOCLIP_SCRIPTNAMELENGTH);
 	fileName.ReadCount(in, SCRIPTAUDIOCLIP_FILENAMELENGTH);
-	bundlingType = in->ReadInt8();
-	type = in->ReadInt8();
-	fileType = in->ReadInt8();
+	bundlingType = static_cast<uint8_t>(in->ReadInt8());
+	type = static_cast<uint8_t>(in->ReadInt8());
+	fileType = static_cast<AudioFileType>(in->ReadInt8());
 	defaultRepeat = in->ReadInt8();
 	defaultPriority = in->ReadInt16();
 	defaultVolume = in->ReadInt16();
diff --git a/engines/ags/shared/ac/dynobj/script_audio_clip.h b/engines/ags/shared/ac/dynobj/script_audio_clip.h
index 58ef8cdd091..28777ef5b61 100644
--- a/engines/ags/shared/ac/dynobj/script_audio_clip.h
+++ b/engines/ags/shared/ac/dynobj/script_audio_clip.h
@@ -53,9 +53,9 @@ struct ScriptAudioClip {
 	int id = 0;
 	Shared::String scriptName;
 	Shared::String fileName;
-	int8 bundlingType = AUCL_BUNDLE_EXE;
-	int8 type = 0;
-	int8 fileType = eAudioFileOGG;
+	uint8_t bundlingType = AUCL_BUNDLE_EXE;
+	uint8_t type = 0;
+	AudioFileType fileType = eAudioFileOGG;
 	int8 defaultRepeat = 0;
 	short defaultPriority = 50;
 	short defaultVolume = 100;


Commit: f2399dc15ca5fa84560356d78d210075983de712
    https://github.com/scummvm/scummvm/commit/f2399dc15ca5fa84560356d78d210075983de712
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T19:17:26-07:00

Commit Message:
AGS: Fixing various "unused variable/arg" warnings

>From upstream 4b3c27c1a2b39d6c6b089adee111c6889d19ad0e

Changed paths:
    engines/ags/shared/ac/game_setup_struct.cpp
    engines/ags/shared/ac/game_setup_struct.h
    engines/ags/shared/ac/sprite_file.cpp
    engines/ags/shared/ac/sprite_file.h
    engines/ags/shared/font/ttf_font_renderer.cpp
    engines/ags/shared/font/ttf_font_renderer.h
    engines/ags/shared/font/wfn_font_renderer.h
    engines/ags/shared/game/main_game_file.cpp
    engines/ags/shared/game/room_file.cpp
    engines/ags/shared/game/tra_file.cpp
    engines/ags/shared/gfx/allegro_bitmap.cpp
    engines/ags/shared/gfx/allegro_bitmap.h
    engines/ags/shared/gfx/bitmap.cpp
    engines/ags/shared/gui/gui_object.h
    engines/ags/shared/util/aligned_stream.cpp
    engines/ags/shared/util/compress.cpp
    engines/ags/shared/util/data_ext.h
    engines/ags/shared/util/multi_file_lib.cpp


diff --git a/engines/ags/shared/ac/game_setup_struct.cpp b/engines/ags/shared/ac/game_setup_struct.cpp
index 615eccd2267..a34414c47f5 100644
--- a/engines/ags/shared/ac/game_setup_struct.cpp
+++ b/engines/ags/shared/ac/game_setup_struct.cpp
@@ -152,7 +152,7 @@ void GameSetupStruct::WriteInvInfo_Aligned(Stream *out) {
 	}
 }
 
-HGameFileError GameSetupStruct::read_cursors(Shared::Stream *in, GameDataVersion data_ver) {
+HGameFileError GameSetupStruct::read_cursors(Shared::Stream *in) {
 	ReadMouseCursors_Aligned(in);
 	return HGameFileError::None();
 }
@@ -208,8 +208,8 @@ void GameSetupStruct::WriteMouseCursors_Aligned(Stream *out) {
 //-----------------------------------------------------------------------------
 // Reading Part 2
 
-void GameSetupStruct::read_characters(Shared::Stream *in, GameDataVersion data_ver) {
-	chars = new CharacterInfo[numcharacters + 5]; // TODO: why +5, is this really needed?
+void GameSetupStruct::read_characters(Shared::Stream *in) {
+	chars = new CharacterInfo[numcharacters];
 
 	ReadCharacters_Aligned(in);
 }
diff --git a/engines/ags/shared/ac/game_setup_struct.h b/engines/ags/shared/ac/game_setup_struct.h
index 3d48ec212d3..e28b95dbefb 100644
--- a/engines/ags/shared/ac/game_setup_struct.h
+++ b/engines/ags/shared/ac/game_setup_struct.h
@@ -132,7 +132,7 @@ struct GameSetupStruct : public GameSetupStructBase {
 	// Part 1
 	void read_savegame_info(Shared::Stream *in, GameDataVersion data_ver);
 	void read_font_infos(Shared::Stream *in, GameDataVersion data_ver);
-	HGameFileError read_cursors(Shared::Stream *in, GameDataVersion data_ver);
+	HGameFileError read_cursors(Shared::Stream *in);
 	void read_interaction_scripts(Shared::Stream *in, GameDataVersion data_ver);
 	void read_words_dictionary(Shared::Stream *in);
 
@@ -142,7 +142,7 @@ struct GameSetupStruct : public GameSetupStructBase {
 	void WriteMouseCursors_Aligned(Shared::Stream *out);
 	//------------------------------
 	// Part 2
-	void read_characters(Shared::Stream *in, GameDataVersion data_ver);
+	void read_characters(Shared::Stream *in);
 	void read_lipsync(Shared::Stream *in, GameDataVersion data_ver);
 	void read_messages(Shared::Stream *in, GameDataVersion data_ver);
 
diff --git a/engines/ags/shared/ac/sprite_file.cpp b/engines/ags/shared/ac/sprite_file.cpp
index 2520a905d3c..4f74aa70bdd 100644
--- a/engines/ags/shared/ac/sprite_file.cpp
+++ b/engines/ags/shared/ac/sprite_file.cpp
@@ -216,7 +216,7 @@ HError SpriteFile::OpenFile(const String &filename, const String &sprindex_filen
 	}
 
 	// Failed, index file is invalid; index sprites manually
-	return RebuildSpriteIndex(_stream.get(), topmost, _version, metrics);
+	return RebuildSpriteIndex(_stream.get(), topmost, metrics);
 }
 
 void SpriteFile::Close() {
@@ -326,7 +326,7 @@ static inline void ReadSprHeader(SpriteDatHeader &hdr, Stream *in,
 }
 
 HError SpriteFile::RebuildSpriteIndex(Stream *in, sprkey_t topmost,
-	SpriteFileVersion vers, std::vector<Size> &metrics) {
+		std::vector<Size> &metrics) {
 	topmost = std::min(topmost, (sprkey_t)_spriteData.size() - 1);
 	for (sprkey_t i = 0; !in->EOS() && (i <= topmost); ++i) {
 		_spriteData[i].Offset = in->GetPosition();
diff --git a/engines/ags/shared/ac/sprite_file.h b/engines/ags/shared/ac/sprite_file.h
index 749ad873465..3f036aad94e 100644
--- a/engines/ags/shared/ac/sprite_file.h
+++ b/engines/ags/shared/ac/sprite_file.h
@@ -146,7 +146,7 @@ public:
 	bool        LoadSpriteIndexFile(const String &filename, int expectedFileID,
 		soff_t spr_initial_offs, sprkey_t topmost, std::vector<Size> &metrics);
 	// Rebuilds sprite index from the main sprite file
-	HError      RebuildSpriteIndex(Stream *in, sprkey_t topmost, SpriteFileVersion vers,
+	HError      RebuildSpriteIndex(Stream *in, sprkey_t topmost,
 		std::vector<Size> &metrics);
 
 	// Loads an image data and creates a ready bitmap
diff --git a/engines/ags/shared/font/ttf_font_renderer.cpp b/engines/ags/shared/font/ttf_font_renderer.cpp
index dd5373a4973..4cdb29cb00e 100644
--- a/engines/ags/shared/font/ttf_font_renderer.cpp
+++ b/engines/ags/shared/font/ttf_font_renderer.cpp
@@ -38,7 +38,7 @@ extern bool ShouldAntiAliasText();
 
 
 // ***** TTF RENDERER *****
-void TTFFontRenderer::AdjustYCoordinateForFont(int *ycoord, int fontNumber) {
+void TTFFontRenderer::AdjustYCoordinateForFont(int *ycoord, int /*fontNumber*/) {
 	// TTF fonts already have space at the top, so try to remove the gap
 	// TODO: adding -1 was here before (check the comment above),
 	// but how universal is this "space at the top"?
@@ -47,7 +47,7 @@ void TTFFontRenderer::AdjustYCoordinateForFont(int *ycoord, int fontNumber) {
 	ycoord[0]--;
 }
 
-void TTFFontRenderer::EnsureTextValidForFont(char *text, int fontNumber) {
+void TTFFontRenderer::EnsureTextValidForFont(char */*text*/, int /*fontNumber*/) {
 	// do nothing, TTF can handle all characters
 }
 
@@ -55,7 +55,7 @@ int TTFFontRenderer::GetTextWidth(const char *text, int fontNumber) {
 	return alfont_text_length(_fontData[fontNumber].AlFont, text);
 }
 
-int TTFFontRenderer::GetTextHeight(const char *text, int fontNumber) {
+int TTFFontRenderer::GetTextHeight(const char */*text*/, int fontNumber) {
 	return alfont_get_font_real_height(_fontData[fontNumber].AlFont);
 }
 
@@ -134,7 +134,7 @@ const char *TTFFontRenderer::GetName(int fontNumber) {
 	return alfont_get_name(_fontData[fontNumber].AlFont);
 }
 
-void TTFFontRenderer::AdjustFontForAntiAlias(int fontNumber, bool aa_mode) {
+void TTFFontRenderer::AdjustFontForAntiAlias(int fontNumber, bool /*aa_mode*/) {
 	if (_G(loaded_game_file_version) < kGameVersion_341) {
 		ALFONT_FONT *alfptr = _fontData[fontNumber].AlFont;
 		const FontRenderParams &params = _fontData[fontNumber].Params;
diff --git a/engines/ags/shared/font/ttf_font_renderer.h b/engines/ags/shared/font/ttf_font_renderer.h
index 592effeff80..6e76189a91f 100644
--- a/engines/ags/shared/font/ttf_font_renderer.h
+++ b/engines/ags/shared/font/ttf_font_renderer.h
@@ -37,7 +37,7 @@ public:
 	// IAGSFontRenderer implementation
 	bool LoadFromDisk(int fontNumber, int fontSize) override;
 	void FreeMemory(int fontNumber) override;
-	bool SupportsExtendedCharacters(int fontNumber) override {
+	bool SupportsExtendedCharacters(int /*fontNumber*/) override {
 		return true;
 	}
 	int GetTextWidth(const char *text, int fontNumber) override;
diff --git a/engines/ags/shared/font/wfn_font_renderer.h b/engines/ags/shared/font/wfn_font_renderer.h
index de01ce2ead1..aabbf302a28 100644
--- a/engines/ags/shared/font/wfn_font_renderer.h
+++ b/engines/ags/shared/font/wfn_font_renderer.h
@@ -47,8 +47,8 @@ public:
 	bool IsBitmapFont() override;
 	bool LoadFromDiskEx(int fontNumber, int fontSize,
 		const FontRenderParams *params, FontMetrics *metrics) override;
-	const char *GetName(int fontNumber) override { return ""; }
-	void AdjustFontForAntiAlias(int fontNumber, bool aa_mode) override { /* do nothing */ }
+	const char *GetName(int /*fontNumber*/) override { return ""; }
+	void AdjustFontForAntiAlias(int /*fontNumber*/, bool /*aa_mode*/) override { /* do nothing */ }
 
 private:
 	struct FontData {
diff --git a/engines/ags/shared/game/main_game_file.cpp b/engines/ags/shared/game/main_game_file.cpp
index 3fe02db78f9..9604a2c5363 100644
--- a/engines/ags/shared/game/main_game_file.cpp
+++ b/engines/ags/shared/game/main_game_file.cpp
@@ -712,9 +712,10 @@ protected:
 	GameDataVersion _dataVer;
 };
 
-HError GameDataExtReader::ReadBlock(int block_id, const String &ext_id,
-		soff_t block_len, bool &read_next) {
-    // Add extensions here checking ext_id, which is an up to 16-chars name, for example:
+HError GameDataExtReader::ReadBlock(int /*block_id*/, const String &ext_id,
+		soff_t /*block_len*/, bool &read_next) {
+	read_next = true;
+	// Add extensions here checking ext_id, which is an up to 16-chars name, for example:
     // if (ext_id.CompareNoCase("GUI_NEWPROPS") == 0)
     // {
     //     // read new gui properties
@@ -768,7 +769,7 @@ HGameFileError ReadGameData(LoadedGameEntities &ents, Stream *in, GameDataVersio
 	if (!err)
 		return err;
 	game.ReadInvInfo_Aligned(in);
-	err = game.read_cursors(in, data_ver);
+	err = game.read_cursors(in);
 	if (!err)
 		return err;
 	game.read_interaction_scripts(in, data_ver);
@@ -794,7 +795,7 @@ HGameFileError ReadGameData(LoadedGameEntities &ents, Stream *in, GameDataVersio
 		in->Seek(count * 0x204);
 	}
 
-	game.read_characters(in, data_ver);
+	game.read_characters(in);
 	game.read_lipsync(in, data_ver);
 	game.read_messages(in, data_ver);
 
diff --git a/engines/ags/shared/game/room_file.cpp b/engines/ags/shared/game/room_file.cpp
index 299b68b67cb..5569bd0dfd5 100644
--- a/engines/ags/shared/game/room_file.cpp
+++ b/engines/ags/shared/game/room_file.cpp
@@ -318,7 +318,7 @@ HError ReadMainBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
 }
 
 // Room script sources (original text)
-HError ReadScriptBlock(char *&buf, Stream *in, RoomFileVersion data_ver) {
+HError ReadScriptBlock(char *&buf, Stream *in, RoomFileVersion /*data_ver*/) {
 	size_t len = in->ReadInt32();
 	buf = new char[len + 1];
 	in->Read(buf, len);
@@ -329,7 +329,7 @@ HError ReadScriptBlock(char *&buf, Stream *in, RoomFileVersion data_ver) {
 }
 
 // Compiled room script
-HError ReadCompSc3Block(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
+HError ReadCompSc3Block(RoomStruct *room, Stream *in, RoomFileVersion /*data_ver*/) {
 	room->CompiledScript.reset(ccScript::CreateFromStream(in));
 	if (room->CompiledScript == nullptr)
 		return new RoomFileError(kRoomFileErr_ScriptLoadFailed, _G(ccErrorString));
@@ -389,7 +389,7 @@ HError ReadAnimBgBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
 }
 
 // Read custom properties
-HError ReadPropertiesBlock(RoomStruct *room, Stream *in, RoomFileVersion data_ver) {
+HError ReadPropertiesBlock(RoomStruct *room, Stream *in, RoomFileVersion /*data_ver*/) {
 	int prop_ver = in->ReadInt32();
 	if (prop_ver != 1)
 		return new RoomFileError(kRoomFileErr_PropertiesBlockFormat, String::FromFormat("Expected version %d, got %d", 1, prop_ver));
@@ -476,7 +476,8 @@ private:
 	}
 
 	HError ReadBlock(int block_id, const String &ext_id,
-		soff_t block_len, bool &read_next) override {
+			soff_t block_len, bool &read_next) override {
+		read_next = true;
 		return ReadRoomBlock(_room, _in, (RoomFileBlock)block_id, ext_id, block_len, _dataVer);
 	}
 
diff --git a/engines/ags/shared/game/tra_file.cpp b/engines/ags/shared/game/tra_file.cpp
index 7229b85dc1c..bc588d0dae2 100644
--- a/engines/ags/shared/game/tra_file.cpp
+++ b/engines/ags/shared/game/tra_file.cpp
@@ -72,7 +72,7 @@ HError OpenTraFile(Stream *in) {
 	return HError::None();
 }
 
-HError ReadTraBlock(Translation &tra, Stream *in, TraFileBlock block, const String &ext_id, soff_t block_len) {
+HError ReadTraBlock(Translation &tra, Stream *in, TraFileBlock block, const String &ext_id, soff_t /*block_len*/) {
 	switch (block) {
 	case kTraFblk_Dict:
 	{
@@ -146,7 +146,8 @@ private:
 	}
 
 	HError ReadBlock(int block_id, const String &ext_id,
-		soff_t block_len, bool &read_next) override {
+			soff_t block_len, bool &read_next) override {
+		read_next = true;
 		return ReadTraBlock(_tra, _in, (TraFileBlock)block_id, ext_id, block_len);
 	}
 
diff --git a/engines/ags/shared/gfx/allegro_bitmap.cpp b/engines/ags/shared/gfx/allegro_bitmap.cpp
index 7dae6eaad4a..f8119bd7665 100644
--- a/engines/ags/shared/gfx/allegro_bitmap.cpp
+++ b/engines/ags/shared/gfx/allegro_bitmap.cpp
@@ -168,10 +168,6 @@ bool Bitmap::SaveToFile(const char *filename, const void *palette) {
 	return result;
 }
 
-void Bitmap::SetMaskColor(color_t color) {
-	// not supported? CHECKME
-}
-
 color_t Bitmap::GetCompatibleColor(color_t color) {
 	color_t compat_color = 0;
 	__my_setcolor(&compat_color, color, bitmap_color_depth(_alBitmap));
diff --git a/engines/ags/shared/gfx/allegro_bitmap.h b/engines/ags/shared/gfx/allegro_bitmap.h
index bc39b54049b..829143ab904 100644
--- a/engines/ags/shared/gfx/allegro_bitmap.h
+++ b/engines/ags/shared/gfx/allegro_bitmap.h
@@ -155,7 +155,7 @@ public:
 		return (index >= 0 && index < GetHeight()) ? (unsigned char *)_alBitmap->getBasePtr(0, index) : nullptr;
 	}
 
-	void    SetMaskColor(color_t color);
+	// Get bitmap's mask color (transparent color)
 	inline color_t GetMaskColor() const {
 		return bitmap_mask_color(_alBitmap);
 	}
diff --git a/engines/ags/shared/gfx/bitmap.cpp b/engines/ags/shared/gfx/bitmap.cpp
index cde33b2c5a7..b9daa1fd732 100644
--- a/engines/ags/shared/gfx/bitmap.cpp
+++ b/engines/ags/shared/gfx/bitmap.cpp
@@ -102,17 +102,19 @@ Bitmap *AdjustBitmapSize(Bitmap *src, int width, int height) {
 	return bmp;
 }
 
+// Functor that copies the "mask color" pixels from source to dest
 template <class TPx, size_t BPP_>
 struct PixelTransCpy {
 	static const size_t BPP = BPP_;
-	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
+	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool /*use_alpha*/) const {
 		if (*(const TPx *)src == mask_color)
 			*(TPx *)dst = mask_color;
 	}
 };
 
+// Functor that tells to never skip a pixel in the mask
 struct PixelNoSkip {
-	inline bool operator ()(uint8_t *data, uint32_t mask_color, bool use_alpha) const {
+	inline bool operator ()(uint8_t * /*data*/, uint32_t /*mask_color*/, bool /*use_alpha*/) const {
 		return false;
 	}
 };
@@ -120,9 +122,10 @@ struct PixelNoSkip {
 typedef PixelTransCpy<uint8_t, 1> PixelTransCpy8;
 typedef PixelTransCpy<uint16_t, 2> PixelTransCpy16;
 
+// Functor that copies the "mask color" pixels from source to dest, 24-bit depth
 struct PixelTransCpy24 {
 	static const size_t BPP = 3;
-	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
+	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool /*use_alpha*/) const {
 		const uint8_t *mcol_ptr = (const uint8_t *)&mask_color;
 		if (src[0] == mcol_ptr[0] && src[1] == mcol_ptr[1] && src[2] == mcol_ptr[2]) {
 			dst[0] = mcol_ptr[0];
@@ -132,6 +135,7 @@ struct PixelTransCpy24 {
 	}
 };
 
+// Functor that copies the "mask color" pixels from source to dest, 32-bit depth, with alpha
 struct PixelTransCpy32 {
 	static const size_t BPP = 4;
 	inline void operator ()(uint8_t *dst, const uint8_t *src, uint32_t mask_color, bool use_alpha) const {
@@ -144,15 +148,19 @@ struct PixelTransCpy32 {
 	}
 };
 
+// Functor that tells to skip pixels if they match the mask color or have alpha = 0
 struct PixelTransSkip32 {
-	inline bool operator()(uint8_t *data, color_t mask_color, bool use_alpha) const {
-		return *(color_t *)data == (color_t)mask_color || (use_alpha && data[3] == 0);
+	inline bool operator ()(uint8_t *data, uint32_t mask_color, bool use_alpha) const {
+		return *(uint32_t *)data == mask_color || (use_alpha && data[3] == 0);
 	}
 };
 
+// Applies bitmap mask, using 2 functors:
+// - one that tells whether to skip current pixel;
+// - another that copies the color from src to dest
 template <class FnPxProc, class FnSkip>
-void ApplyMask(uint8_t *dst, const uint8_t *src, size_t pitch, size_t height, FnPxProc proc,
-		FnSkip skip, uint32_t mask_color, bool dst_has_alpha, bool mask_has_alpha) {
+void ApplyMask(uint8_t *dst, const uint8_t *src, size_t pitch, size_t height,
+	FnPxProc proc, FnSkip skip, uint32_t mask_color, bool dst_has_alpha, bool mask_has_alpha) {
 	for (size_t y = 0; y < height; ++y) {
 		for (size_t x = 0; x < pitch; x += FnPxProc::BPP, src += FnPxProc::BPP, dst += FnPxProc::BPP) {
 			if (!skip(dst, mask_color, dst_has_alpha))
diff --git a/engines/ags/shared/gui/gui_object.h b/engines/ags/shared/gui/gui_object.h
index 5031bba5c6b..e68378c7eaf 100644
--- a/engines/ags/shared/gui/gui_object.h
+++ b/engines/ags/shared/gui/gui_object.h
@@ -64,7 +64,7 @@ public:
     virtual bool    IsContentClipped() const { return true; }
 
 	// Operations
-	virtual void    Draw(Bitmap *ds) {
+	virtual void    Draw(Bitmap *) {
 	}
 	void            SetClickable(bool on);
 	void            SetEnabled(bool on);
@@ -73,7 +73,7 @@ public:
 
 	// Events
 	// Key pressed for control
-	virtual void    OnKeyPress(const KeyInput &ki) {}
+	virtual void    OnKeyPress(const KeyInput &) {}
 	// Mouse button down - return 'True' to lock focus
 	virtual bool    OnMouseDown() {
 		return false;
@@ -85,7 +85,7 @@ public:
 	virtual void    OnMouseLeave() {
 	}
 	// Mouse moves over control - x,y relative to gui
-	virtual void    OnMouseMove(int x, int y) {
+	virtual void    OnMouseMove(int /*x*/, int /*y*/) {
 	}
 	// Mouse button up
 	virtual void    OnMouseUp() {
diff --git a/engines/ags/shared/util/aligned_stream.cpp b/engines/ags/shared/util/aligned_stream.cpp
index a868cbbf329..2fb7ef25494 100644
--- a/engines/ags/shared/util/aligned_stream.cpp
+++ b/engines/ags/shared/util/aligned_stream.cpp
@@ -187,7 +187,7 @@ size_t AlignedStream::WriteArrayOfInt64(const int64_t *buffer, size_t count) {
 	return count;
 }
 
-bool AlignedStream::Seek(soff_t offset, StreamSeek origin) {
+bool AlignedStream::Seek(soff_t /*offset*/, StreamSeek /*origin*/) {
 	// TODO: split out Seekable Stream interface
 	return false;
 }
diff --git a/engines/ags/shared/util/compress.cpp b/engines/ags/shared/util/compress.cpp
index 13f3394c343..0c4867dc273 100644
--- a/engines/ags/shared/util/compress.cpp
+++ b/engines/ags/shared/util/compress.cpp
@@ -315,7 +315,7 @@ Shared::Bitmap *load_rle_bitmap8(Stream *in, RGB(*pal)[256]) {
 	return bmp;
 }
 
-void skip_rle_bitmap8(Shared::Stream *in) {
+void skip_rle_bitmap8(Stream *in) {
 	int w = in->ReadInt16();
 	int h = in->ReadInt16();
 	// Skip 8-bit pixel data + RGB palette
@@ -326,7 +326,7 @@ void skip_rle_bitmap8(Shared::Stream *in) {
 // LZW
 //-----------------------------------------------------------------------------
 
-void lzw_compress(const uint8_t *data, size_t data_sz, int image_bpp, Shared::Stream *out) {
+void lzw_compress(const uint8_t *data, size_t data_sz, int /*image_bpp*/, Shared::Stream *out) {
 	// LZW algorithm that we use fails on sequence less than 16 bytes.
 	if (data_sz < 16) {
 		out->Write(data, data_sz);
@@ -336,7 +336,7 @@ void lzw_compress(const uint8_t *data, size_t data_sz, int image_bpp, Shared::St
 	lzwcompress(&mem_in, out);
 }
 
-void lzw_decompress(uint8_t *data, size_t data_sz, int image_bpp, Shared::Stream *in) {
+void lzw_decompress(uint8_t *data, size_t data_sz, int /*image_bpp*/, Shared::Stream *in) {
 	// LZW algorithm that we use fails on sequence less than 16 bytes.
 	if (data_sz < 16) {
 		in->Read(data, data_sz);
diff --git a/engines/ags/shared/util/data_ext.h b/engines/ags/shared/util/data_ext.h
index 34554efaaa7..060c53930bc 100644
--- a/engines/ags/shared/util/data_ext.h
+++ b/engines/ags/shared/util/data_ext.h
@@ -100,7 +100,7 @@ public:
 
 	// Provides a leeway for over-reading (reading past the reported block length):
 	// the parser will not error if the mistake is in this range of bytes
-	virtual soff_t GetOverLeeway(int block_id) const {
+	virtual soff_t GetOverLeeway(int /*block_id*/) const {
 		return 0;
 	}
 
diff --git a/engines/ags/shared/util/multi_file_lib.cpp b/engines/ags/shared/util/multi_file_lib.cpp
index 563ebbd4c12..b4bc0f977f4 100644
--- a/engines/ags/shared/util/multi_file_lib.cpp
+++ b/engines/ags/shared/util/multi_file_lib.cpp
@@ -43,14 +43,14 @@ static const int EncryptionRandSeed = 9338638;
 static const char *EncryptionString = "My\x1\xde\x4Jibzle";
 
 MFLError ReadSigsAndVersion(Stream *in, MFLVersion *p_lib_version, soff_t *p_abs_offset);
-MFLError ReadSingleFileLib(AssetLibInfo &lib, Stream *in, MFLVersion lib_version);
+MFLError ReadSingleFileLib(AssetLibInfo &lib, Stream *in);
 MFLError ReadMultiFileLib(AssetLibInfo &lib, Stream *in, MFLVersion lib_version);
 MFLError ReadV10(AssetLibInfo &lib, Stream *in, MFLVersion lib_version);
 MFLError ReadV20(AssetLibInfo &lib, Stream *in);
 MFLError ReadV21(AssetLibInfo &lib, Stream *in);
 MFLError ReadV30(AssetLibInfo &lib, Stream *in, MFLVersion lib_version);
 
-void     WriteV30(const AssetLibInfo &lib, MFLVersion lib_version, Stream *out);
+void     WriteV30(const AssetLibInfo &lib, Stream *out);
 
 // Encryption / decryption
 int      GetNextPseudoRand(int &rand_val);
@@ -87,7 +87,7 @@ MFLUtil::MFLError MFLUtil::ReadHeader(AssetLibInfo &lib, Stream *in) {
 		err = ReadMultiFileLib(lib, in, lib_version);
 	} else {
 		// read older clib versions (versions 1 to 9)
-		err = ReadSingleFileLib(lib, in, lib_version);
+		err = ReadSingleFileLib(lib, in);
 	}
 
 	// apply absolute offset for the assets contained in base data file
@@ -160,7 +160,7 @@ MFLUtil::MFLError MFLUtil::ReadSigsAndVersion(Stream *in, MFLVersion *p_lib_vers
 	return kMFLNoError;
 }
 
-MFLUtil::MFLError MFLUtil::ReadSingleFileLib(AssetLibInfo &lib, Stream *in, MFLVersion lib_version) {
+MFLUtil::MFLError MFLUtil::ReadSingleFileLib(AssetLibInfo &lib, Stream *in) {
 	char passwmodifier = in->ReadInt8();
 	in->ReadInt8(); // unused byte
 	lib.LibFileNames.resize(1); // only one library part
@@ -335,11 +335,11 @@ void MFLUtil::WriteHeader(const AssetLibInfo &lib, MFLVersion lib_version, int l
 
 	// First datafile in chain: write the table of contents
 	if (lib_index == 0) {
-		WriteV30(lib, lib_version, out);
+		WriteV30(lib, out);
 	}
 }
 
-void MFLUtil::WriteV30(const AssetLibInfo &lib, MFLVersion lib_version, Stream *out) {
+void MFLUtil::WriteV30(const AssetLibInfo &lib, Stream *out) {
 	out->WriteInt32(0); // reserved options
 	// filenames for all library parts
 	out->WriteInt32(lib.LibFileNames.size());


Commit: 7b13f47d046e8cc0c84da713b8972a3a40c4491b
    https://github.com/scummvm/scummvm/commit/7b13f47d046e8cc0c84da713b8972a3a40c4491b
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T19:37:00-07:00

Commit Message:
AGS: Fixing unimplemented cases in switches

>From upstream 55345ca2b19598aeac2362d726fcaf15adf698fd

Changed paths:
    engines/ags/shared/ac/game_setup_struct_base.cpp
    engines/ags/shared/ac/sprite_file.cpp
    engines/ags/shared/game/room_file_base.cpp
    engines/ags/shared/game/room_struct.cpp
    engines/ags/shared/game/tra_file.cpp
    engines/ags/shared/util/data_ext.cpp


diff --git a/engines/ags/shared/ac/game_setup_struct_base.cpp b/engines/ags/shared/ac/game_setup_struct_base.cpp
index 98d99b54509..b9c1569723c 100644
--- a/engines/ags/shared/ac/game_setup_struct_base.cpp
+++ b/engines/ags/shared/ac/game_setup_struct_base.cpp
@@ -249,9 +249,8 @@ Size ResolutionTypeToSize(GameResolutionType resolution, bool letterbox) {
 	case kGameResolution_1280x720:
 		return Size(1280, 720);
 	default:
-		break;
+		return Size();
 	}
-	return Size();
 }
 
 const char *GetScriptAPIName(ScriptAPIVersion v) {
@@ -266,9 +265,8 @@ const char *GetScriptAPIName(ScriptAPIVersion v) {
 	case kScriptAPI_v3507: return "v3.5.0-final";
 	case kScriptAPI_v351: return "v3.5.1";
 	case kScriptAPI_v360: return "v3.6.0";
-	case kScriptAPI_Undefined: return "undefined";
-	}
-	return "unknown";
+	default: return "unknown";
+	}	
 }
 
 } // namespace AGS3
diff --git a/engines/ags/shared/ac/sprite_file.cpp b/engines/ags/shared/ac/sprite_file.cpp
index 4f74aa70bdd..3aaf8ea607a 100644
--- a/engines/ags/shared/ac/sprite_file.cpp
+++ b/engines/ags/shared/ac/sprite_file.cpp
@@ -127,8 +127,8 @@ static inline SpriteFormat PaletteFormatForBPP(int bpp) {
 	case 1: return kSprFmt_PaletteRgb888;
 	case 2: return kSprFmt_PaletteRgb565;
 	case 4: return kSprFmt_PaletteArgb8888;
-	}
-	return kSprFmt_Undefined;
+	default: return kSprFmt_Undefined;
+	}	
 }
 
 static inline uint8_t GetPaletteBPP(SpriteFormat fmt) {
@@ -136,12 +136,10 @@ static inline uint8_t GetPaletteBPP(SpriteFormat fmt) {
 	case kSprFmt_PaletteRgb888: return 3;
 	case kSprFmt_PaletteArgb8888: return 4;
 	case kSprFmt_PaletteRgb565: return 2;
-	case kSprFmt_Undefined: return 0;
-	}
-	return 0; // means no palette
+	default: return 0; // means no palette
+	}	
 }
 
-
 SpriteFile::SpriteFile() {
 	_curPos = -2;
 }
diff --git a/engines/ags/shared/game/room_file_base.cpp b/engines/ags/shared/game/room_file_base.cpp
index 610f2181f9c..bc05f264929 100644
--- a/engines/ags/shared/game/room_file_base.cpp
+++ b/engines/ags/shared/game/room_file_base.cpp
@@ -62,9 +62,8 @@ String GetRoomFileErrorText(RoomFileErrorType err) {
 	case kRoomFileErr_BlockNotFound:
 		return "Required block was not found.";
 	default:
-		break;
+		return "Unknown error.";
 	}
-	return "Unknown error.";
 }
 
 HRoomFileError OpenRoomFile(const String &filename, RoomDataSource &src) {
@@ -100,10 +99,8 @@ String GetRoomBlockName(RoomFileBlock id) {
 	case kRoomFblk_Properties: return "Properties";
 	case kRoomFblk_ObjectScNames: return "ObjScNames";
 	case kRoomFile_EOF: return "EOF";
-	default:
-		break;
-	}
-	return "unknown";
+	default: return "unknown";
+	}	
 }
 
 
diff --git a/engines/ags/shared/game/room_struct.cpp b/engines/ags/shared/game/room_struct.cpp
index 377fc669477..a2f76d3f8c5 100644
--- a/engines/ags/shared/game/room_struct.cpp
+++ b/engines/ags/shared/game/room_struct.cpp
@@ -188,25 +188,24 @@ void RoomStruct::SetResolution(RoomResolutionType type) {
 
 Bitmap *RoomStruct::GetMask(RoomAreaMask mask) const {
 	switch (mask) {
-	case kRoomAreaNone: break;
 	case kRoomAreaHotspot: return HotspotMask.get();
 	case kRoomAreaWalkBehind: return WalkBehindMask.get();
 	case kRoomAreaWalkable: return WalkAreaMask.get();
 	case kRoomAreaRegion: return RegionMask.get();
+	default: return nullptr;
 	}
-	return nullptr;
 }
 
 float RoomStruct::GetMaskScale(RoomAreaMask mask) const {
 	switch (mask) {
-	case kRoomAreaNone: break;
 	case kRoomAreaWalkBehind: return 1.f; // walk-behinds always 1:1 with room size
 	case kRoomAreaHotspot:
 	case kRoomAreaWalkable:
 	case kRoomAreaRegion:
 		return 1.f / MaskResolution;
+	default:
+		return 0.f;
 	}
-	return 0.f;
 }
 
 bool RoomStruct::HasRegionLightLevel(int id) const {
diff --git a/engines/ags/shared/game/tra_file.cpp b/engines/ags/shared/game/tra_file.cpp
index bc588d0dae2..aac43647dbd 100644
--- a/engines/ags/shared/game/tra_file.cpp
+++ b/engines/ags/shared/game/tra_file.cpp
@@ -49,8 +49,9 @@ String GetTraFileErrorText(TraFileErrorType err) {
 		return "Unknown block type.";
 	case kTraFileErr_BlockDataOverlapping:
 		return "Block data overlapping.";
+	default:
+		return "Unknown error.";
 	}
-	return "Unknown error.";
 }
 
 String GetTraBlockName(TraFileBlock id) {
@@ -58,9 +59,8 @@ String GetTraBlockName(TraFileBlock id) {
 	case kTraFblk_Dict: return "Dictionary";
 	case kTraFblk_GameID: return "GameID";
 	case kTraFblk_TextOpts: return "TextOpts";
-	default: break;
+	default: return "unknown";
 	}
-	return "unknown";
 }
 
 HError OpenTraFile(Stream *in) {
diff --git a/engines/ags/shared/util/data_ext.cpp b/engines/ags/shared/util/data_ext.cpp
index 261aedec70a..4e56b2898f0 100644
--- a/engines/ags/shared/util/data_ext.cpp
+++ b/engines/ags/shared/util/data_ext.cpp
@@ -37,8 +37,8 @@ String GetDataExtErrorText(DataExtErrorType err) {
 		return "Block data overlapping.";
 	case kDataExtErr_BlockNotFound:
 		return "Block not found.";
+	default: return "Unknown error.";
 	}
-	return "Unknown error.";
 }
 
 HError DataExtParser::OpenBlock() {


Commit: 5b291a5ef02dacbd31e0cd93b63807d3521b2c87
    https://github.com/scummvm/scummvm/commit/5b291a5ef02dacbd31e0cd93b63807d3521b2c87
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T19:47:02-07:00

Commit Message:
AGS: Typecast warning fixes in data serialization

>From upstream f781cb76a806f9ffcd9d29c51441eaab0136e598

Changed paths:
    engines/ags/engine/game/savegame_internal.h
    engines/ags/engine/game/savegame_v321.cpp


diff --git a/engines/ags/engine/game/savegame_internal.h b/engines/ags/engine/game/savegame_internal.h
index c17714cc362..56e76ae973e 100644
--- a/engines/ags/engine/game/savegame_internal.h
+++ b/engines/ags/engine/game/savegame_internal.h
@@ -46,8 +46,8 @@ struct PreservedParams {
 	bool SpeechVOX;
 	bool MusicVOX;
 	// Script global data sizes
-	int GlScDataSize;
-	std::vector<int> ScMdDataSize;
+	size_t GlScDataSize;
+	std::vector<size_t> ScMdDataSize;
 
 	PreservedParams();
 };
diff --git a/engines/ags/engine/game/savegame_v321.cpp b/engines/ags/engine/game/savegame_v321.cpp
index 672d2697f38..da16c0def1d 100644
--- a/engines/ags/engine/game/savegame_v321.cpp
+++ b/engines/ags/engine/game/savegame_v321.cpp
@@ -61,7 +61,7 @@ namespace AGS3 {
 using namespace AGS::Shared;
 using namespace AGS::Engine;
 
-static const int32_t MAGICNUMBER = 0xbeefcafe;
+static const uint32_t MAGICNUMBER = 0xbeefcafe;
 
 static HSaveError restore_game_head_dynamic_values(Stream *in, RestoredData &r_data) {
 	r_data.FPS = in->ReadInt32();
@@ -88,7 +88,7 @@ static void restore_game_spriteset(Stream *in) {
 
 static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, RestoredData &r_data) {
 	// read the global script data segment
-	int gdatasize = in->ReadInt32();
+	size_t gdatasize = (uint32_t)in->ReadInt32();
 	if (pp.GlScDataSize != gdatasize) {
 		return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching size of global script data.");
 	}
@@ -96,12 +96,12 @@ static HSaveError restore_game_scripts(Stream *in, const PreservedParams &pp, Re
 	r_data.GlobalScript.Data.reset(new char[gdatasize]);
 	in->Read(r_data.GlobalScript.Data.get(), gdatasize);
 
-	if (in->ReadInt32() != (int32_t)_G(numScriptModules)) {
+	if ((uint32_t)in->ReadInt32() != _G(numScriptModules)) {
 		return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of script modules.");
 	}
 	r_data.ScriptModules.resize(_G(numScriptModules));
 	for (size_t i = 0; i < _G(numScriptModules); ++i) {
-		int module_size = in->ReadInt32();
+		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));
 		}
@@ -239,7 +239,7 @@ static HSaveError restore_game_gui(Stream *in, int numGuisWas) {
 }
 
 static HSaveError restore_game_audiocliptypes(Stream *in) {
-	if (in->ReadInt32() != (int)_GP(game).audioClipTypes.size()) {
+	if ((uint32_t)in->ReadInt32() != _GP(game).audioClipTypes.size()) {
 		return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of Audio Clip Types.");
 	}
 
@@ -359,7 +359,7 @@ static HSaveError restore_game_views(Stream *in) {
 }
 
 static HSaveError restore_game_audioclips_and_crossfade(Stream *in, RestoredData &r_data) {
-	if (in->ReadInt32() != (int)_GP(game).audioClips.size()) {
+	if ((uint32_t)in->ReadInt32() != _GP(game).audioClips.size()) {
 		return new SavegameError(kSvgErr_GameContentAssertion, "Mismatching number of Audio Clips.");
 	}
 
@@ -476,7 +476,7 @@ HSaveError restore_game_data(Stream *in, SavegameVersion svg_version, const Pres
 	if (!err)
 		return err;
 
-	if ((uint32)in->ReadInt32() != (uint32)(MAGICNUMBER + 1)) {
+	if (static_cast<uint32_t>(in->ReadInt32()) != (MAGICNUMBER + 1)) {
 		return new SavegameError(kSvgErr_InconsistentFormat, "MAGICNUMBER not found before Audio Clips.");
 	}
 
@@ -488,7 +488,7 @@ HSaveError restore_game_data(Stream *in, SavegameVersion svg_version, const Pres
 	pl_set_file_handle(pluginFileHandle, in);
 	pl_run_plugin_hooks(AGSE_RESTOREGAME, pluginFileHandle);
 	pl_clear_file_handle();
-	if ((uint32)in->ReadInt32() != (uint32)MAGICNUMBER)
+	if (static_cast<uint32_t>(in->ReadInt32()) != MAGICNUMBER)
 		return new SavegameError(kSvgErr_InconsistentPlugin);
 
 	// save the new room music vol for later use


Commit: a633e9d72ff3ad66a513d605d1a8d6065a5ae084
    https://github.com/scummvm/scummvm/commit/a633e9d72ff3ad66a513d605d1a8d6065a5ae084
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T20:06:19-07:00

Commit Message:
AGS: Fixing various type-cast warnings

>From upstream 6c42c7331e96386721f28c92ec3cb4cd039e10cd

Changed paths:
    engines/ags/engine/ac/drawing_surface.cpp
    engines/ags/engine/ac/game_state.cpp
    engines/ags/engine/ac/global_string.cpp
    engines/ags/engine/ac/room.cpp
    engines/ags/engine/game/savegame.cpp
    engines/ags/engine/main/config.cpp
    engines/ags/engine/script/cc_instance.cpp
    engines/ags/engine/script/runtime_script_value.cpp


diff --git a/engines/ags/engine/ac/drawing_surface.cpp b/engines/ags/engine/ac/drawing_surface.cpp
index 2ba4883f5a8..a5c2a4efce4 100644
--- a/engines/ags/engine/ac/drawing_surface.cpp
+++ b/engines/ags/engine/ac/drawing_surface.cpp
@@ -398,8 +398,8 @@ void DrawingSurface_DrawPixel(ScriptDrawingSurface *sds, int x, int y) {
 int DrawingSurface_GetPixel(ScriptDrawingSurface *sds, int x, int y) {
 	sds->PointToGameResolution(&x, &y);
 	Bitmap *ds = sds->StartDrawing();
-	unsigned int rawPixel = ds->GetPixel(x, y);
-	unsigned int maskColor = ds->GetMaskColor();
+	int rawPixel = ds->GetPixel(x, y);
+	int maskColor = ds->GetMaskColor();
 	int colDepth = ds->GetColorDepth();
 
 	if (rawPixel == maskColor) {
diff --git a/engines/ags/engine/ac/game_state.cpp b/engines/ags/engine/ac/game_state.cpp
index d934512398d..25481f57330 100644
--- a/engines/ags/engine/ac/game_state.cpp
+++ b/engines/ags/engine/ac/game_state.cpp
@@ -142,7 +142,7 @@ void GameState::UpdateViewports() {
 		}
 		_roomViewportZOrderChanged = false;
 	}
-	size_t vp_changed = (size_t)-1;
+	size_t vp_changed = SIZE_MAX;
 	for (size_t i = _roomViewportsSorted.size(); i-- > 0;) {
 		auto vp = _roomViewportsSorted[i];
 		if (vp->HasChangedSize() || vp->HasChangedPosition() || vp->HasChangedVisible()) {
@@ -151,7 +151,7 @@ void GameState::UpdateViewports() {
 			vp->ClearChangedFlags();
 		}
 	}
-	if (vp_changed != (size_t)-1)
+	if (vp_changed != SIZE_MAX)
 		detect_roomviewport_overlaps(vp_changed);
 	for (auto cam : _roomCameras) {
 		if (cam->HasChangedSize() || cam->HasChangedPosition()) {
diff --git a/engines/ags/engine/ac/global_string.cpp b/engines/ags/engine/ac/global_string.cpp
index cc26dceec43..e79fa41e4c5 100644
--- a/engines/ags/engine/ac/global_string.cpp
+++ b/engines/ags/engine/ac/global_string.cpp
@@ -30,18 +30,19 @@
 namespace AGS3 {
 
 int StrGetCharAt(const char *strin, int posn) {
-	if ((posn < 0) || (posn >= (int)strlen(strin)))
+	if ((posn < 0) || (static_cast<size_t>(posn) >= strlen(strin)))
 		return 0;
 	return strin[posn];
 }
 
 void StrSetCharAt(char *strin, int posn, int nchar) {
-	if ((posn < 0) || (posn > (int)strlen(strin)) || (posn >= MAX_MAXSTRLEN))
+	size_t len = strlen(strin);
+	if ((posn < 0) || (static_cast<size_t>(posn) > len) || (posn >= MAX_MAXSTRLEN))
 		quit("!StrSetCharAt: tried to write past end of string");
 
-	if (posn == (int)strlen(strin))
+	strin[posn] = static_cast<char>(nchar);
+	if (static_cast<size_t>(posn) == len)
 		strin[posn + 1] = 0;
-	strin[posn] = nchar;
 }
 
 void _sc_strcat(char *s1, const char *s2) {
diff --git a/engines/ags/engine/ac/room.cpp b/engines/ags/engine/ac/room.cpp
index d97542b11bd..ce4fc5ca269 100644
--- a/engines/ags/engine/ac/room.cpp
+++ b/engines/ags/engine/ac/room.cpp
@@ -472,7 +472,7 @@ void load_new_room(int newnum, CharacterInfo *forchar) {
 	_GP(play).bg_anim_delay = _GP(play).anim_background_speed;
 
 	// Fixup the frame index, in case the new room does not have enough background frames
-	if (_GP(play).bg_frame < 0 || _GP(play).bg_frame >= (int)_GP(thisroom).BgFrameCount)
+	if (_GP(play).bg_frame < 0 || static_cast<size_t>(_GP(play).bg_frame) >= _GP(thisroom).BgFrameCount)
 		_GP(play).bg_frame = 0;
 
 	// do the palette
diff --git a/engines/ags/engine/game/savegame.cpp b/engines/ags/engine/game/savegame.cpp
index 8f2fade20ad..d2ee5ef9645 100644
--- a/engines/ags/engine/game/savegame.cpp
+++ b/engines/ags/engine/game/savegame.cpp
@@ -514,7 +514,7 @@ HSaveError DoAfterRestore(const PreservedParams &pp, const RestoredData &r_data)
 
 	if (_G(displayed_room) >= 0) {
 		// Fixup the frame index, in case the restored room does not have enough background frames
-		if (_GP(play).bg_frame < 0 || _GP(play).bg_frame >= (int)_GP(thisroom).BgFrameCount)
+		if (_GP(play).bg_frame < 0 || static_cast<size_t>(_GP(play).bg_frame) >= (int)_GP(thisroom).BgFrameCount)
 			_GP(play).bg_frame = 0;
 
 		for (int i = 0; i < MAX_ROOM_BGFRAMES; ++i) {
@@ -598,7 +598,7 @@ HSaveError DoAfterRestore(const PreservedParams &pp, const RestoredData &r_data)
 	}
 	update_directional_sound_vol();
 
-	adjust_fonts_for_render_mode(_GP(game).options[OPT_ANTIALIASFONTS]);
+	adjust_fonts_for_render_mode(_GP(game).options[OPT_ANTIALIASFONTS] != 0);
 
 	recreate_overlay_ddbs();
 
diff --git a/engines/ags/engine/main/config.cpp b/engines/ags/engine/main/config.cpp
index 64337db734b..cbe16cfcdc8 100644
--- a/engines/ags/engine/main/config.cpp
+++ b/engines/ags/engine/main/config.cpp
@@ -371,7 +371,7 @@ void override_config_ext(ConfigTree &cfg) {
 
 void apply_config(const ConfigTree &cfg) {
 	{
-		_GP(usetup).audio_enabled = INIreadint(cfg, "sound", "enabled", _GP(usetup).audio_enabled);
+		_GP(usetup).audio_enabled = INIreadint(cfg, "sound", "enabled", _GP(usetup).audio_enabled) != 0;
 		_GP(usetup).audio_driver = INIreadstring(cfg, "sound", "driver");
 
 		// Legacy graphics settings has to be translated into new options;
@@ -415,7 +415,7 @@ void apply_config(const ConfigTree &cfg) {
 		// This option is backwards (usevox is 0 if no_speech_pack)
 		_GP(usetup).no_speech_pack = INIreadint(cfg, "sound", "usespeech", 1) == 0;
 
-		_GP(usetup).clear_cache_on_room_change = INIreadint(cfg, "misc", "clear_cache_on_room_change", _GP(usetup).clear_cache_on_room_change);
+		_GP(usetup).clear_cache_on_room_change = INIreadint(cfg, "misc", "clear_cache_on_room_change", _GP(usetup).clear_cache_on_room_change) != 0;
 		_GP(usetup).user_data_dir = INIreadstring(cfg, "misc", "user_data_dir");
 		_GP(usetup).shared_data_dir = INIreadstring(cfg, "misc", "shared_data_dir");
 
diff --git a/engines/ags/engine/script/cc_instance.cpp b/engines/ags/engine/script/cc_instance.cpp
index 2283e12c2a1..4cce579e337 100644
--- a/engines/ags/engine/script/cc_instance.cpp
+++ b/engines/ags/engine/script/cc_instance.cpp
@@ -1501,7 +1501,7 @@ bool ccInstance::ResolveScriptImports(const ccScript *scri) {
 	}
 
 	resolved_imports = new uint32_t[numimports];
-	int errors = 0, last_err_idx = 0;
+	size_t errors = 0, last_err_idx = 0;
 	for (int import_idx = 0; import_idx < scri->numimports; ++import_idx) {
 		if (scri->imports[import_idx] == nullptr) {
 			resolved_imports[import_idx] = UINT32_MAX;
@@ -1626,7 +1626,7 @@ static void cc_error_fixups(const ccScript *scri, size_t pc, const char *fmt, ..
 	String displbuf = String::FromFormatV(fmt, ap);
 	va_end(ap);
 	const char *scname = scri->numSections > 0 ? scri->sectionNames[0] : "?";
-	if (pc == (size_t) -1) {
+	if (pc == SIZE_MAX) {
 		cc_error("in script %s: %s", scname, displbuf.GetCStr());
 	} else {
 		int line = DetermineScriptLine(scri->code, scri->codesize, pc);
diff --git a/engines/ags/engine/script/runtime_script_value.cpp b/engines/ags/engine/script/runtime_script_value.cpp
index 98e800672c2..dd83770d6be 100644
--- a/engines/ags/engine/script/runtime_script_value.cpp
+++ b/engines/ags/engine/script/runtime_script_value.cpp
@@ -45,7 +45,7 @@ uint8_t RuntimeScriptValue::ReadByte() const {
 		if (RValue->Type == kScValData) {
 			return *(uint8_t *)(RValue->GetPtrWithOffset() + this->IValue);
 		} else {
-			return RValue->IValue; // get RValue as int
+			return static_cast<uint8_t>(RValue->IValue);
 		}
 	} else if (this->Type == kScValStaticObject || this->Type == kScValStaticArray) {
 		return this->StcMgr->ReadInt8(this->Ptr, this->IValue);
@@ -60,13 +60,13 @@ int16_t RuntimeScriptValue::ReadInt16() const {
 		if (RValue->Type == kScValData) {
 			return *(int16_t *)(RValue->GetPtrWithOffset() + this->IValue);
 		} else {
-			return RValue->IValue; // get RValue as int
+			return static_cast<uint16_t>(RValue->IValue);
 		}
 	} else if (this->Type == kScValGlobalVar) {
 		if (RValue->Type == kScValData) {
 			return Memory::ReadInt16LE(RValue->GetPtrWithOffset() + this->IValue);
 		} else {
-			return RValue->IValue; // get RValue as int
+			return static_cast<uint16_t>(RValue->IValue);
 		}
 	} else if (this->Type == kScValStaticObject || this->Type == kScValStaticArray) {
 		return this->StcMgr->ReadInt16(this->Ptr, this->IValue);


Commit: d0e8eba2c4c9fec8707c9f6bce46f3b565ce22ba
    https://github.com/scummvm/scummvm/commit/d0e8eba2c4c9fec8707c9f6bce46f3b565ce22ba
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T20:08:44-07:00

Commit Message:
AGS: In DialogOptions changed index fields from char to int

>From upstream 0db875df33a293797e176a0cbeefd60beeb92b14

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


diff --git a/engines/ags/engine/ac/dialog.cpp b/engines/ags/engine/ac/dialog.cpp
index 11f68acb45f..0c56a31c041 100644
--- a/engines/ags/engine/ac/dialog.cpp
+++ b/engines/ags/engine/ac/dialog.cpp
@@ -309,8 +309,8 @@ int run_dialog_script(int dialogID, int offse, int optionIndex) {
 }
 
 int write_dialog_options(Bitmap *ds, bool ds_has_alpha, int dlgxp, int curyp, int numdisp, int mouseison, int areawid,
-                         int bullet_wid, int usingfont, DialogTopic *dtop, int8 *disporder, short *dispyp,
-                         int linespacing, int utextcol, int padding) {
+		int bullet_wid, int usingfont, DialogTopic *dtop, int *disporder, short *dispyp,
+		int linespacing, int utextcol, int padding) {
 	int ww;
 
 	color_t text_color;
@@ -412,10 +412,13 @@ struct DialogOptions {
 	GUITextBox *parserInput;
 	DialogTopic *dtop;
 
-	int8 disporder[MAXTOPICOPTIONS];
+	// display order of options
+	int disporder[MAXTOPICOPTIONS];
+	// display Y coordinate of options
 	short dispyp[MAXTOPICOPTIONS];
-
+	// number of displayed options
 	int numdisp;
+	// currently chosen option
 	int chose;
 
 	Bitmap *tempScrn;


Commit: a6f42ad1ab4c0e448c2bf7ca1b0a5a97887b0439
    https://github.com/scummvm/scummvm/commit/a6f42ad1ab4c0e448c2bf7ca1b0a5a97887b0439
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T21:44:40-07:00

Commit Message:
AGS: Fixing various "unused va/arg" warnings + removed empty funcs

>From upstream 61771ecd638338806c40d0da2bf1addea06cac90

Changed paths:
    engines/ags/engine/ac/drawing_surface.cpp
    engines/ags/engine/ac/dynobj/managed_object_pool.cpp
    engines/ags/engine/ac/dynobj/script_dict.h
    engines/ags/engine/ac/dynobj/script_set.h
    engines/ags/engine/ac/file.cpp
    engines/ags/engine/ac/global_audio.cpp
    engines/ags/engine/ac/global_character.cpp
    engines/ags/engine/ac/global_hotspot.cpp
    engines/ags/engine/ac/global_object.cpp
    engines/ags/engine/ac/global_string.cpp
    engines/ags/engine/ac/route_finder_impl_legacy.cpp
    engines/ags/engine/ac/sprite.cpp
    engines/ags/engine/debugging/debug.cpp
    engines/ags/engine/game/savegame.cpp
    engines/ags/engine/game/savegame_components.cpp
    engines/ags/engine/game/savegame_v321.cpp
    engines/ags/engine/gfx/ali_3d_scummvm.cpp
    engines/ags/engine/gfx/ali_3d_scummvm.h
    engines/ags/engine/gfx/gfx_driver_base.cpp
    engines/ags/engine/gfx/gfxfilter_scaling.cpp
    engines/ags/engine/gui/gui_dialog_defines.h
    engines/ags/engine/gui/gui_engine.cpp
    engines/ags/engine/gui/my_push_button.cpp
    engines/ags/engine/main/engine_setup.cpp
    engines/ags/engine/main/game_file.cpp
    engines/ags/engine/main/graphics_mode.cpp
    engines/ags/engine/media/audio/audio.cpp
    engines/ags/engine/media/audio/audio.h
    engines/ags/engine/platform/base/ags_platform_driver.cpp
    engines/ags/engine/platform/base/ags_platform_driver.h
    engines/ags/engine/platform/base/sys_main.cpp
    engines/ags/engine/script/script.cpp
    engines/ags/engine/script/script.h


diff --git a/engines/ags/engine/ac/drawing_surface.cpp b/engines/ags/engine/ac/drawing_surface.cpp
index a5c2a4efce4..7aa64c0c2ca 100644
--- a/engines/ags/engine/ac/drawing_surface.cpp
+++ b/engines/ags/engine/ac/drawing_surface.cpp
@@ -408,12 +408,10 @@ int DrawingSurface_GetPixel(ScriptDrawingSurface *sds, int x, int y) {
 		int r = getr_depth(colDepth, rawPixel);
 		int g = getg_depth(colDepth, rawPixel);
 		int b = getb_depth(colDepth, rawPixel);
-
 		rawPixel = Game_GetColorFromRGB(r, g, b);
 	}
 
 	sds->FinishedDrawingReadOnly();
-
 	return rawPixel;
 }
 
diff --git a/engines/ags/engine/ac/dynobj/managed_object_pool.cpp b/engines/ags/engine/ac/dynobj/managed_object_pool.cpp
index b58035c1617..94909fa9523 100644
--- a/engines/ags/engine/ac/dynobj/managed_object_pool.cpp
+++ b/engines/ags/engine/ac/dynobj/managed_object_pool.cpp
@@ -48,14 +48,10 @@ int ManagedObjectPool::Remove(ManagedObject &o, bool force) {
 		return 0;
 	}
 
-	//auto handle = o.handle;
 	available_ids.push(o.handle);
-
 	handleByAddress.erase(o.addr);
+	ManagedObjectLog("Line %d Disposed managed object handle=%d", currentline, o.handle);
 	o = ManagedObject();
-
-	ManagedObjectLog("Line %d Disposed managed object handle=%d", _G(currentline), handle);
-
 	return 1;
 }
 
diff --git a/engines/ags/engine/ac/dynobj/script_dict.h b/engines/ags/engine/ac/dynobj/script_dict.h
index c82df3da3fb..054ce37a4b2 100644
--- a/engines/ags/engine/ac/dynobj/script_dict.h
+++ b/engines/ags/engine/ac/dynobj/script_dict.h
@@ -140,8 +140,7 @@ private:
 		_dic[key] = value;
 		return true;
 	}
-	void DeleteItem(ConstIterator it) { /* do nothing */
-	}
+	void DeleteItem(ConstIterator /*it*/) { /* do nothing */ }
 
 	size_t CalcSerializeSize() override {
 		// 2 class properties + item count
diff --git a/engines/ags/engine/ac/dynobj/script_set.h b/engines/ags/engine/ac/dynobj/script_set.h
index f7aed2a006e..bc8611158f5 100644
--- a/engines/ags/engine/ac/dynobj/script_set.h
+++ b/engines/ags/engine/ac/dynobj/script_set.h
@@ -117,7 +117,7 @@ private:
 	bool TryAddItem(const String &s) {
 		return _set.insert(s)._value;
 	}
-	void DeleteItem(ConstIterator it) { /* do nothing */ }
+	void DeleteItem(ConstIterator /*it*/) { /* do nothing */ }
 
 	size_t CalcSerializeSize() override {
 		// 2 class properties + item count
diff --git a/engines/ags/engine/ac/file.cpp b/engines/ags/engine/ac/file.cpp
index 1367f6dda27..96c328b39e2 100644
--- a/engines/ags/engine/ac/file.cpp
+++ b/engines/ags/engine/ac/file.cpp
@@ -459,7 +459,7 @@ static int ags_pf_getc(void *userdata) {
 	return -1;
 }
 
-static int ags_pf_ungetc(int c, void *userdata) {
+static int ags_pf_ungetc(int /*c*/, void * /*userdata*/) {
 	return -1; // we do not want to support this
 }
 
@@ -473,15 +473,15 @@ static long ags_pf_fread(void *p, long n, void *userdata) {
 	return -1;
 }
 
-static int ags_pf_putc(int c, void *userdata) {
+static int ags_pf_putc(int /*c*/, void * /*userdata*/) {
 	return -1;  // don't support write
 }
 
-static long ags_pf_fwrite(AL_CONST void *p, long n, void *userdata) {
+static long ags_pf_fwrite(AL_CONST void * /*p*/, long /*n*/, void * /*userdata*/) {
 	return -1; // don't support write
 }
 
-static int ags_pf_fseek(void *userdata, int offset) {
+static int ags_pf_fseek(void */*userdata*/, int /*offset*/) {
 	return -1; // don't support seek
 }
 
diff --git a/engines/ags/engine/ac/global_audio.cpp b/engines/ags/engine/ac/global_audio.cpp
index e1f1a18d661..ade07b0a3d1 100644
--- a/engines/ags/engine/ac/global_audio.cpp
+++ b/engines/ags/engine/ac/global_audio.cpp
@@ -407,7 +407,7 @@ void PlayMP3File(const char *filename) {
 		debug_script_warn("PlayMP3File: file '%s' not found or cannot play", filename);
 	}
 
-	post_new_music_check(useChan);
+	post_new_music_check();
 
 	update_music_volume();
 }
diff --git a/engines/ags/engine/ac/global_character.cpp b/engines/ags/engine/ac/global_character.cpp
index fa0ec42e34c..0b415ab50c9 100644
--- a/engines/ags/engine/ac/global_character.cpp
+++ b/engines/ags/engine/ac/global_character.cpp
@@ -401,7 +401,7 @@ void RunCharacterInteraction(int cc, int mood) {
 	_G(evblocknum) = cc;
 	if (_G(loaded_game_file_version) > kGameVersion_272) {
 		if (passon >= 0)
-			run_interaction_script(_GP(game).charScripts[cc].get(), passon, 4, (passon == 3));
+			run_interaction_script(_GP(game).charScripts[cc].get(), passon, 4);
 		run_interaction_script(_GP(game).charScripts[cc].get(), 4);  // any click on char
 	} else {
 		if (passon >= 0)
diff --git a/engines/ags/engine/ac/global_hotspot.cpp b/engines/ags/engine/ac/global_hotspot.cpp
index eaedca8d8d6..5a291fefaed 100644
--- a/engines/ags/engine/ac/global_hotspot.cpp
+++ b/engines/ags/engine/ac/global_hotspot.cpp
@@ -120,7 +120,7 @@ void RunHotspotInteraction(int hotspothere, int mood) {
 
 	if (_GP(thisroom).Hotspots[hotspothere].EventHandlers != nullptr) {
 		if (passon >= 0)
-			run_interaction_script(_GP(thisroom).Hotspots[hotspothere].EventHandlers.get(), passon, 5, (passon == 3));
+			run_interaction_script(_GP(thisroom).Hotspots[hotspothere].EventHandlers.get(), passon, 5);
 		run_interaction_script(_GP(thisroom).Hotspots[hotspothere].EventHandlers.get(), 5);  // any click on hotspot
 	} else {
 		if (passon >= 0) {
diff --git a/engines/ags/engine/ac/global_object.cpp b/engines/ags/engine/ac/global_object.cpp
index 163155bc423..05ec64bc1a5 100644
--- a/engines/ags/engine/ac/global_object.cpp
+++ b/engines/ags/engine/ac/global_object.cpp
@@ -435,7 +435,7 @@ void RunObjectInteraction(int aa, int mood) {
 
 	if (_GP(thisroom).Objects[aa].EventHandlers != nullptr) {
 		if (passon >= 0) {
-			if (run_interaction_script(_GP(thisroom).Objects[aa].EventHandlers.get(), passon, 4, (passon == 3)))
+			if (run_interaction_script(_GP(thisroom).Objects[aa].EventHandlers.get(), passon, 4))
 				return;
 		}
 		run_interaction_script(_GP(thisroom).Objects[aa].EventHandlers.get(), 4);  // any click on obj
diff --git a/engines/ags/engine/ac/global_string.cpp b/engines/ags/engine/ac/global_string.cpp
index e79fa41e4c5..d0b928e7cf9 100644
--- a/engines/ags/engine/ac/global_string.cpp
+++ b/engines/ags/engine/ac/global_string.cpp
@@ -50,7 +50,6 @@ void _sc_strcat(char *s1, const char *s2) {
 	VALIDATE_STRING(s2);
 	check_strlen(s1);
 	int mosttocopy = (_G(MAXSTRLEN) - strlen(s1)) - 1;
-	//  int numbf=_GP(game).iface[4].numbuttons;
 	my_strncpy(&s1[strlen(s1)], s2, mosttocopy);
 }
 
@@ -66,14 +65,6 @@ void _sc_strupper(char *desbuf) {
 	ags_strupr(desbuf);
 }
 
-/*int _sc_strcmp (char *s1, char *s2) {
-return strcmp (get_translation (s1), get_translation(s2));
-}
-
-int _sc_stricmp (char *s1, char *s2) {
-return ags_stricmp (get_translation (s1), get_translation(s2));
-}*/
-
 void _sc_strcpy(char *destt, const char *text) {
 	VALIDATE_STRING(destt);
 	check_strlen(destt);
diff --git a/engines/ags/engine/ac/route_finder_impl_legacy.cpp b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
index bda7ad44350..b1eddc7f71f 100644
--- a/engines/ags/engine/ac/route_finder_impl_legacy.cpp
+++ b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
@@ -72,7 +72,7 @@ void set_wallscreen(Bitmap *wallscreen_) {
 }
 
 // TODO: find a way to reimpl this with Bitmap
-static void line_callback(BITMAP *bmpp, int x, int y, int d) {
+static void line_callback(BITMAP *bmpp, int x, int y, int /*d*/) {
 	/*  if ((x>=320) | (y>=200) | (x<0) | (y<0)) line_failed=1;
 	  else */ if (getpixel(bmpp, x, y) < 1)
 		line_failed = 1;
@@ -789,8 +789,6 @@ int find_route(short srcx, short srcy, short xx, short yy, Bitmap *onscreen, int
 		numstages++;
 		nearestindx = -1;
 
-		int lastpbs = pathbackstage;
-
 stage_again:
 		nearestpos = 0;
 		aaa = 1;
@@ -823,7 +821,7 @@ stage_again:
 #ifdef DEBUG_PATHFINDER
 			AGS::Shared::Debug::Printf("Added: %d, %d pbs:%d", srcx, srcy, pathbackstage);
 #endif
-			lastpbs = pathbackstage;
+
 			pathbackstage = nearestindx;
 			goto stage_again;
 		}
@@ -866,7 +864,6 @@ stage_again:
 #ifdef DEBUG_PATHFINDER
 		// getch();
 #endif
-		(void)lastpbs;
 
 		return mlist;
 	} else {
diff --git a/engines/ags/engine/ac/sprite.cpp b/engines/ags/engine/ac/sprite.cpp
index 555f0656a99..af201585a94 100644
--- a/engines/ags/engine/ac/sprite.cpp
+++ b/engines/ags/engine/ac/sprite.cpp
@@ -109,7 +109,7 @@ Bitmap *remove_alpha_channel(Bitmap *from) {
 	return to;
 }
 
-void pre_save_sprite(Bitmap *image) {
+void pre_save_sprite(Bitmap * /*image*/) {
 	// not used, we don't save
 }
 
diff --git a/engines/ags/engine/debugging/debug.cpp b/engines/ags/engine/debugging/debug.cpp
index 9f5a43fb45b..4ea92b2eadb 100644
--- a/engines/ags/engine/debugging/debug.cpp
+++ b/engines/ags/engine/debugging/debug.cpp
@@ -73,7 +73,7 @@ IAGSEditorDebugger *GetEditorDebugger(const char *instanceToken) {
 
 #else   // AGS_PLATFORM_OS_WINDOWS
 
-IAGSEditorDebugger *GetEditorDebugger(const char *instanceToken) {
+IAGSEditorDebugger *GetEditorDebugger(const char * /*instanceToken*/) {
 	return nullptr;
 }
 
diff --git a/engines/ags/engine/game/savegame.cpp b/engines/ags/engine/game/savegame.cpp
index d2ee5ef9645..e1c97b19284 100644
--- a/engines/ags/engine/game/savegame.cpp
+++ b/engines/ags/engine/game/savegame.cpp
@@ -72,7 +72,7 @@ using namespace Shared;
 using namespace Engine;
 
 // function is currently implemented in savegame_v321.cpp
-HSaveError restore_game_data(Stream *in, SavegameVersion svg_version, const PreservedParams &pp, RestoredData &r_data);
+HSaveError restore_save_data_v321(Stream *in, const PreservedParams &pp, RestoredData &r_data);
 
 namespace AGS {
 namespace Engine {
@@ -643,7 +643,7 @@ HSaveError RestoreGameState(Stream *in, SavegameVersion svg_version) {
 	if (svg_version >= kSvgVersion_Components)
 		err = SavegameComponents::ReadAll(in, svg_version, pp, r_data);
 	else
-		err = restore_game_data(in, svg_version, pp, r_data);
+		err = restore_save_data_v321(in, pp, r_data);
 	if (!err)
 		return err;
 	return DoAfterRestore(pp, r_data);
diff --git a/engines/ags/engine/game/savegame_components.cpp b/engines/ags/engine/game/savegame_components.cpp
index c4180323ce5..0348c8bb4a1 100644
--- a/engines/ags/engine/game/savegame_components.cpp
+++ b/engines/ags/engine/game/savegame_components.cpp
@@ -230,7 +230,7 @@ HSaveError WriteGameState(Stream *out) {
 	return HSaveError::None();
 }
 
-void ReadLegacyCameraState(Stream *in, RestoredData &r_data) {
+void ReadLegacyCameraState(Stream *in, RestoredData & r_data) {
 	// Precreate viewport and camera and save data in temp structs
 	int camx = in->ReadInt32();
 	int camy = in->ReadInt32();
@@ -277,7 +277,7 @@ void ReadViewportState(RestoredData &r_data, Stream *in) {
 	r_data.Viewports.push_back(view);
 }
 
-HSaveError ReadGameState(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadGameState(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData &r_data) {
 	HSaveError err;
 	GameStateSvgVersion svg_ver = (GameStateSvgVersion)cmp_ver;
 	// Game base
@@ -379,7 +379,7 @@ HSaveError WriteAudio(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadAudio(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadAudio(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData &r_data) {
 	HSaveError err;
 	// Game content assertion
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).audioClipTypes.size(), "Audio Clip Types"))
@@ -493,7 +493,7 @@ HSaveError WriteCharacters(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadCharacters(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadCharacters(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).numcharacters, "Characters"))
 		return err;
@@ -519,7 +519,7 @@ HSaveError WriteDialogs(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadDialogs(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadDialogs(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).numdialog, "Dialogs"))
 		return err;
@@ -575,7 +575,7 @@ HSaveError WriteGUI(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadGUI(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadGUI(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	const GuiSvgVersion svg_ver = (GuiSvgVersion)cmp_ver;
 	// GUI state
@@ -652,7 +652,7 @@ HSaveError WriteInventory(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadInventory(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadInventory(Stream *in, int32_t /*cmp_ver*/, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).numinvitems, "Inventory Items"))
 		return err;
@@ -673,7 +673,7 @@ HSaveError WriteMouseCursors(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadMouseCursors(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadMouseCursors(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).numcursors, "Mouse Cursors"))
 		return err;
@@ -698,7 +698,7 @@ HSaveError WriteViews(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadViews(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadViews(Stream *in, int32_t /*cmp_ver*/, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	if (!AssertGameContent(err, in->ReadInt32(), _GP(game).numviews, "Views"))
 		return err;
@@ -742,7 +742,7 @@ HSaveError WriteDynamicSprites(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadDynamicSprites(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadDynamicSprites(Stream *in, int32_t /*cmp_ver*/, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	const int spr_count = in->ReadInt32();
 	// ensure the sprite set is at least large enough
@@ -767,7 +767,7 @@ HSaveError WriteOverlays(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadOverlays(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadOverlays(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	size_t over_count = in->ReadInt32();
 	for (size_t i = 0; i < over_count; ++i) {
 		ScreenOverlay over;
@@ -792,7 +792,7 @@ HSaveError WriteDynamicSurfaces(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadDynamicSurfaces(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadDynamicSurfaces(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData &r_data) {
 	HSaveError err;
 	if (!AssertCompatLimit(err, in->ReadInt32(), MAX_DYNAMIC_SURFACES, "Dynamic Surfaces"))
 		return err;
@@ -867,7 +867,7 @@ HSaveError WriteRoomStates(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadRoomStates(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadRoomStates(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	HSaveError err;
 	int roomstat_count = in->ReadInt32();
 	for (; roomstat_count > 0; --roomstat_count) {
@@ -930,7 +930,7 @@ HSaveError WriteThisRoom(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadThisRoom(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadThisRoom(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData &r_data) {
 	HSaveError err;
 	_G(displayed_room) = in->ReadInt32();
 	if (_G(displayed_room) < 0)
@@ -982,7 +982,7 @@ HSaveError WriteManagedPool(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadManagedPool(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadManagedPool(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	if (ccUnserializeAllObjects(in, &_GP(ccUnserializer))) {
 		return new SavegameError(kSvgErr_GameObjectInitFailed,
 		                         String::FromFormat("Managed pool deserialization failed: %s", _G(ccErrorString).GetCStr()));
@@ -998,7 +998,7 @@ HSaveError WritePluginData(Stream *out) {
 	return HSaveError::None();
 }
 
-HSaveError ReadPluginData(Stream *in, int32_t cmp_ver, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError ReadPluginData(Stream *in, int32_t cmp_ver, const PreservedParams & /*pp*/, RestoredData & /*r_data*/) {
 	auto pluginFileHandle = AGSE_RESTOREGAME;
 	pl_set_file_handle(pluginFileHandle, in);
 	pl_run_plugin_hooks(AGSE_RESTOREGAME, pluginFileHandle);
diff --git a/engines/ags/engine/game/savegame_v321.cpp b/engines/ags/engine/game/savegame_v321.cpp
index da16c0def1d..223223c2757 100644
--- a/engines/ags/engine/game/savegame_v321.cpp
+++ b/engines/ags/engine/game/savegame_v321.cpp
@@ -393,7 +393,7 @@ static HSaveError restore_game_audioclips_and_crossfade(Stream *in, RestoredData
 	return HSaveError::None();
 }
 
-HSaveError restore_game_data(Stream *in, SavegameVersion svg_version, const PreservedParams &pp, RestoredData &r_data) {
+HSaveError restore_save_data_v321(Stream *in, const PreservedParams &pp, RestoredData &r_data) {
 	int vv;
 
 	HSaveError err = restore_game_head_dynamic_values(in, r_data);
diff --git a/engines/ags/engine/gfx/ali_3d_scummvm.cpp b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
index 95ffe3364ba..dc13c9f6ff4 100644
--- a/engines/ags/engine/gfx/ali_3d_scummvm.cpp
+++ b/engines/ags/engine/gfx/ali_3d_scummvm.cpp
@@ -79,7 +79,7 @@ int ScummVMRendererGraphicsDriver::GetDisplayDepthForNativeDepth(int native_colo
 	return native_color_depth;
 }
 
-IGfxModeList *ScummVMRendererGraphicsDriver::GetSupportedModeList(int color_depth) {
+IGfxModeList *ScummVMRendererGraphicsDriver::GetSupportedModeList(int /*color_depth*/) {
 	std::vector<DisplayMode> modes;
 	sys_get_desktop_modes(modes);
 	return new ScummVMRendererGfxModeList(modes);
@@ -99,7 +99,7 @@ void ScummVMRendererGraphicsDriver::SetGraphicsFilter(PSDLRenderFilter filter) {
 	// SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");  // make the scaled rendering look smoother.
 }
 
-void ScummVMRendererGraphicsDriver::SetTintMethod(TintMethod method) {
+void ScummVMRendererGraphicsDriver::SetTintMethod(TintMethod /*method*/) {
 	// TODO: support new D3D-style tint method
 }
 
@@ -172,7 +172,7 @@ bool ScummVMRendererGraphicsDriver::SetRenderFrame(const Rect &dst_rect) {
 	return !_dstRect.IsEmpty();
 }
 
-void ScummVMRendererGraphicsDriver::ClearRectangle(int x1, int y1, int x2, int y2, RGB *colorToUse) {
+void ScummVMRendererGraphicsDriver::ClearRectangle(int /*x1*/, int /*y1*/, int /*x2*/, int /*y2*/, RGB * /*colorToUse*/) {
 	// TODO: but maybe is not necessary, as we use SDL_Renderer with accelerated gfx here?
 	// See SDL_RenderDrawRect
 }
@@ -279,7 +279,7 @@ void ScummVMRendererGraphicsDriver::DrawSprite(int x, int y, IDriverDependantBit
 	_spriteBatches[_actSpriteBatch].List.push_back(ALDrawListEntry((ALSoftwareBitmap *)bitmap, x, y));
 }
 
-void ScummVMRendererGraphicsDriver::SetScreenFade(int red, int green, int blue) {
+void ScummVMRendererGraphicsDriver::SetScreenFade(int /*red*/, int /*green*/, int /*blue*/) {
 	// TODO: was not necessary atm
 	// TODO: checkme later
 }
@@ -550,7 +550,8 @@ bool ScummVMRendererGraphicsDriver::GetCopyOfScreenIntoBitmap(Bitmap *destinatio
 
     Author: Matthew Leverton
 **/
-void ScummVMRendererGraphicsDriver::highcolor_fade_in(Bitmap *vs, void(*draw_callback)(), int offx, int offy, int speed, int targetColourRed, int targetColourGreen, int targetColourBlue) {
+void ScummVMRendererGraphicsDriver::highcolor_fade_in(Bitmap *vs, void(*draw_callback)(),
+		int /*offx*/, int /*offy*/, int speed, int targetColourRed, int targetColourGreen, int targetColourBlue) {
 	Bitmap *bmp_orig = vs;
 	const int col_depth = bmp_orig->GetColorDepth();
 	const int clearColor = makecol_depth(col_depth, targetColourRed, targetColourGreen, targetColourBlue);
@@ -583,7 +584,8 @@ void ScummVMRendererGraphicsDriver::highcolor_fade_in(Bitmap *vs, void(*draw_cal
 	Present();
 }
 
-void ScummVMRendererGraphicsDriver::highcolor_fade_out(Bitmap *vs, void(*draw_callback)(), int offx, int offy, int speed, int targetColourRed, int targetColourGreen, int targetColourBlue) {
+void ScummVMRendererGraphicsDriver::highcolor_fade_out(Bitmap *vs, void(*draw_callback)(),
+		int /*offx*/, int /*offy*/, int speed, int targetColourRed, int targetColourGreen, int targetColourBlue) {
 	Bitmap *bmp_orig = vs;
 	const int col_depth = vs->GetColorDepth();
 	const int clearColor = makecol_depth(col_depth, targetColourRed, targetColourGreen, targetColourBlue);
diff --git a/engines/ags/engine/gfx/ali_3d_scummvm.h b/engines/ags/engine/gfx/ali_3d_scummvm.h
index 7bcbde0b230..7023f4ca1e6 100644
--- a/engines/ags/engine/gfx/ali_3d_scummvm.h
+++ b/engines/ags/engine/gfx/ali_3d_scummvm.h
@@ -70,14 +70,12 @@ public:
 	void SetFlippedLeftRight(bool isFlipped) override {
 		_flipped = isFlipped;
 	}
-	void SetStretch(int width, int height, bool useResampler = true) override {
+	void SetStretch(int width, int height, bool /*useResampler*/) override {
 		_stretchToWidth = width;
 		_stretchToHeight = height;
 	}
-	void SetLightLevel(int lightLevel) override {
-	}
-	void SetTint(int red, int green, int blue, int tintSaturation) override {
-	}
+	void SetLightLevel(int /*lightLevel*/) override {}
+	void SetTint(int /*red*/, int /*green*/, int /*blue*/, int /*tintSaturation*/) override {}
 
 	Bitmap *_bmp = nullptr;
 	bool _flipped = false;
@@ -168,7 +166,7 @@ public:
 	const char *GetDriverID() override {
 		return "Software";
 	}
-	void SetTintMethod(TintMethod method) override;
+	void SetTintMethod(TintMethod /*method*/) override;
 	bool SetDisplayMode(const DisplayMode &mode) override;
 	void UpdateDeviceScreen(const Size &screen_sz) override;
 	bool SetNativeResolution(const GraphicResolution &native_res) override;
@@ -199,13 +197,10 @@ public:
 	void BoxOutEffect(bool blackingOut, int speed, int delay) override;
 	bool SupportsGammaControl() override;
 	void SetGamma(int newGamma) override;
-	void UseSmoothScaling(bool enabled) override {
-	}
-	void EnableVsyncBeforeRender(bool enabled) override {
-	}
+	void UseSmoothScaling(bool /*enabled*/) override {}
+	void EnableVsyncBeforeRender(bool /*enabled*/) override {}
 	void Vsync() override;
-	void RenderSpritesAtScreenResolution(bool enabled, int supersampling) override {
-	}
+	void RenderSpritesAtScreenResolution(bool /*enabled*/, int /*supersampling*/) override {}
 	bool RequiresFullRedrawEachFrame() override {
 		return false;
 	}
@@ -218,7 +213,7 @@ public:
 	Bitmap *GetMemoryBackBuffer() override;
 	void SetMemoryBackBuffer(Bitmap *backBuffer) override;
 	Bitmap *GetStageBackBuffer(bool mark_dirty) override;
-	bool GetStageMatrixes(RenderMatrixes &rm) override {
+	bool GetStageMatrixes(RenderMatrixes & /*rm*/) override {
 		return false; /* not supported */
 	}
 
diff --git a/engines/ags/engine/gfx/gfx_driver_base.cpp b/engines/ags/engine/gfx/gfx_driver_base.cpp
index 9f73ca50c41..874467d8d20 100644
--- a/engines/ags/engine/gfx/gfx_driver_base.cpp
+++ b/engines/ags/engine/gfx/gfx_driver_base.cpp
@@ -148,7 +148,8 @@ Bitmap *VideoMemoryGraphicsDriver::GetMemoryBackBuffer() {
 	return nullptr;
 }
 
-void VideoMemoryGraphicsDriver::SetMemoryBackBuffer(Bitmap *backBuffer) { // do nothing, video-memory drivers don't use main back buffer, only stage bitmaps they pass to plugins
+void VideoMemoryGraphicsDriver::SetMemoryBackBuffer(Bitmap * /*backBuffer*/) {
+	// do nothing, video-memory drivers don't use main back buffer, only stage bitmaps they pass to plugins
 }
 
 Bitmap *VideoMemoryGraphicsDriver::GetStageBackBuffer(bool mark_dirty) {
diff --git a/engines/ags/engine/gfx/gfxfilter_scaling.cpp b/engines/ags/engine/gfx/gfxfilter_scaling.cpp
index dafbd695099..7443eee8611 100644
--- a/engines/ags/engine/gfx/gfxfilter_scaling.cpp
+++ b/engines/ags/engine/gfx/gfxfilter_scaling.cpp
@@ -25,7 +25,7 @@ namespace AGS3 {
 namespace AGS {
 namespace Engine {
 
-bool ScalingGfxFilter::Initialize(const int color_depth, String &err_str) {
+bool ScalingGfxFilter::Initialize(const int /*color_depth*/, String & /*err_str*/) {
 	// succeed by default
 	return true;
 }
diff --git a/engines/ags/engine/gui/gui_dialog_defines.h b/engines/ags/engine/gui/gui_dialog_defines.h
index c044d232114..4dbc26b502c 100644
--- a/engines/ags/engine/gui/gui_dialog_defines.h
+++ b/engines/ags/engine/gui/gui_dialog_defines.h
@@ -94,12 +94,14 @@ class Bitmap;
 using namespace AGS; // FIXME later
 
 //  =========  STRUCTS  ========
+#ifdef OBSOLETE
 struct DisplayProperties {
 	int width;
 	int height;
 	int colors;
 	int textheight;
 };
+#endif // OBSOLETE
 
 struct CSCIMessage {
 	int code;
diff --git a/engines/ags/engine/gui/gui_engine.cpp b/engines/ags/engine/gui/gui_engine.cpp
index 97bbb4fbaff..0c84265c0ae 100644
--- a/engines/ags/engine/gui/gui_engine.cpp
+++ b/engines/ags/engine/gui/gui_engine.cpp
@@ -50,10 +50,6 @@ using namespace AGS::Shared;
 // For engine these are defined in ac.cpp
 extern void replace_macro_tokens(const char *, String &);
 
-// For engine these are defined in acfonts.cpp
-extern void ensure_text_valid_for_font(char *, int);
-//
-
 // in ac_runningame
 
 
diff --git a/engines/ags/engine/gui/my_push_button.cpp b/engines/ags/engine/gui/my_push_button.cpp
index e27b1c94fe1..4f3f8a03e37 100644
--- a/engines/ags/engine/gui/my_push_button.cpp
+++ b/engines/ags/engine/gui/my_push_button.cpp
@@ -98,7 +98,7 @@ int MyPushButton::pressedon(int mx, int my) {
 	return wasstat;
 }
 
-int MyPushButton::processmessage(int mcode, int wParam, NumberPtr lParam) {
+int MyPushButton::processmessage(int /*mcode*/, int /*wParam*/, NumberPtr /*lParam*/) {
 	return -1;                  // doesn't support messages
 }
 
diff --git a/engines/ags/engine/main/engine_setup.cpp b/engines/ags/engine/main/engine_setup.cpp
index 8f5847872e6..eb65db27329 100644
--- a/engines/ags/engine/main/engine_setup.cpp
+++ b/engines/ags/engine/main/engine_setup.cpp
@@ -169,22 +169,6 @@ void engine_pre_gfxmode_driver_cleanup() {
 	_G(gfxDriver)->SetMemoryBackBuffer(nullptr);
 }
 
-// Setup virtual screen
-void engine_post_gfxmode_screen_setup(const DisplayMode &dm, bool recreate_bitmaps) {
-	if (recreate_bitmaps) {
-		// TODO: find out if
-		// - we need to support this case at all;
-		// - if yes then which bitmaps need to be recreated (probably only video bitmaps and textures?)
-	}
-}
-
-void engine_pre_gfxmode_screen_cleanup() {
-}
-
-// Release virtual screen
-void engine_pre_gfxsystem_screen_destroy() {
-}
-
 // Setup color conversion parameters
 void engine_setup_color_conversions(int coldepth) {
 	// default shifts for how we store the sprite data
@@ -235,7 +219,7 @@ void engine_pre_gfxmode_draw_cleanup() {
 }
 
 // Setup mouse control mode and graphic area
-void engine_post_gfxmode_mouse_setup(const DisplayMode &dm, const Size &init_desktop) {
+void engine_post_gfxmode_mouse_setup(const Size &init_desktop) {
 	// Assign mouse control parameters.
 	//
 	// NOTE that we setup speed and other related properties regardless of
@@ -284,8 +268,7 @@ void engine_post_gfxmode_setup(const Size &init_desktop) {
 	if (has_driver_changed) {
 		engine_post_gfxmode_draw_setup(dm);
 	}
-	engine_post_gfxmode_screen_setup(dm, has_driver_changed);
-	engine_post_gfxmode_mouse_setup(dm, init_desktop);
+	engine_post_gfxmode_mouse_setup(init_desktop);
 
 	invalidate_screen();
 }
@@ -293,13 +276,11 @@ void engine_post_gfxmode_setup(const Size &init_desktop) {
 void engine_pre_gfxmode_release() {
 	engine_pre_gfxmode_mouse_cleanup();
 	engine_pre_gfxmode_driver_cleanup();
-	engine_pre_gfxmode_screen_cleanup();
 }
 
 void engine_pre_gfxsystem_shutdown() {
 	engine_pre_gfxmode_release();
 	engine_pre_gfxmode_draw_cleanup();
-	engine_pre_gfxsystem_screen_destroy();
 }
 
 void on_coordinates_scaling_changed() {
diff --git a/engines/ags/engine/main/game_file.cpp b/engines/ags/engine/main/game_file.cpp
index 3fe3ceedf8c..ef2e6d12a18 100644
--- a/engines/ags/engine/main/game_file.cpp
+++ b/engines/ags/engine/main/game_file.cpp
@@ -126,7 +126,7 @@ static inline HError MakeScriptLoadError(const char *name) {
 // These are optional, so no error is raised if some of these are not found.
 // For those that do exist, reads them and replaces any scripts of same kind
 // in the already loaded game data.
-HError LoadGameScripts(LoadedGameEntities &ents, GameDataVersion data_ver) {
+HError LoadGameScripts(LoadedGameEntities &ents) {
 	// Global script 
 	std::unique_ptr<Stream> in(_GP(AssetMgr)->OpenAsset("GlobalScript.o"));
 	if (in) {
@@ -192,7 +192,7 @@ HError load_game_file() {
 
 	if (!err)
 		return err;
-	err = LoadGameScripts(ents, src.DataVersion);
+	err = LoadGameScripts(ents);
 	if (!err)
 		return err;
 	err = (HError)InitGameState(ents, src.DataVersion);
diff --git a/engines/ags/engine/main/graphics_mode.cpp b/engines/ags/engine/main/graphics_mode.cpp
index d63a25c22c1..eb321188348 100644
--- a/engines/ags/engine/main/graphics_mode.cpp
+++ b/engines/ags/engine/main/graphics_mode.cpp
@@ -410,12 +410,12 @@ bool graphics_mode_init_any(const GraphicResolution &game_res, const DisplayMode
 
 	// Try to create renderer and init gfx mode, choosing one factory at a time
 	bool result = false;
-	for (StringV::const_iterator it2 = ids.begin(); it2 != ids.end(); ++it2) {
+	for (const auto &id : ids) {
 		result =
 #ifdef USE_SIMPLE_GFX_INIT
-			simple_create_gfx_driver_and_init_mode(*it2, game_res, setup, color_depth);
+			simple_create_gfx_driver_and_init_mode(id, game_res, setup, color_depth);
 #else
-			create_gfx_driver_and_init_mode_any(*it2, game_res, setup, color_depth);
+			create_gfx_driver_and_init_mode_any(id, game_res, setup, color_depth);
 #endif
 
 		if (result)
diff --git a/engines/ags/engine/media/audio/audio.cpp b/engines/ags/engine/media/audio/audio.cpp
index ebaae24baa1..569e817ad2b 100644
--- a/engines/ags/engine/media/audio/audio.cpp
+++ b/engines/ags/engine/media/audio/audio.cpp
@@ -189,7 +189,8 @@ static int find_free_audio_channel(ScriptAudioClip *clip, int priority, bool int
 	return channelToUse;
 }
 
-bool is_audiotype_allowed_to_play(AudioFileType type) {
+bool is_audiotype_allowed_to_play(AudioFileType /*type*/) {
+	// TODO: this is a remnant of an old audio logic, think this function over
 	return _GP(usetup).audio_enabled;
 }
 
@@ -892,9 +893,9 @@ void update_music_volume() {
 	}
 }
 
-// Ensures crossfader is stable after loading (or failing to load)
-// new music
-void post_new_music_check(int newchannel) {
+// Ensures crossfader is stable after loading (or failing to load) new music
+// NOTE: part of the legacy audio logic
+void post_new_music_check() {
 	if ((_G(crossFading) > 0) && (AudioChans::GetChannel(_G(crossFading)) == nullptr)) {
 		_G(crossFading) = 0;
 		// Was fading out but then they played invalid music, continue to fade out
@@ -1016,7 +1017,7 @@ static void play_new_music(int mnum, SOUNDCLIP *music) {
 			_G(current_music_type) = ch->get_sound_type();
 	}
 
-	post_new_music_check(useChannel);
+	post_new_music_check();
 	update_music_volume();
 }
 
diff --git a/engines/ags/engine/media/audio/audio.h b/engines/ags/engine/media/audio/audio.h
index 8ea7a902c69..2dda2bde08b 100644
--- a/engines/ags/engine/media/audio/audio.h
+++ b/engines/ags/engine/media/audio/audio.h
@@ -105,7 +105,7 @@ void        apply_volume_drop_modifier(bool applyModifier);
 void        update_audio_system_on_game_loop();
 void        stopmusic();
 void        update_music_volume();
-void        post_new_music_check(int newchannel);
+void        post_new_music_check();
 // Sets up the crossfading for playing the new music track,
 // and returns the channel number to use; the channel is guaranteed to be free
 int         prepare_for_new_music();
diff --git a/engines/ags/engine/platform/base/ags_platform_driver.cpp b/engines/ags/engine/platform/base/ags_platform_driver.cpp
index 32958e91188..e6b88be6b1c 100644
--- a/engines/ags/engine/platform/base/ags_platform_driver.cpp
+++ b/engines/ags/engine/platform/base/ags_platform_driver.cpp
@@ -98,6 +98,9 @@ void AGSPlatformDriver::RegisterGameWithGameExplorer() {
 void AGSPlatformDriver::UnRegisterGameWithGameExplorer() {
 }
 
+void AGSPlatformDriver::ValidateWindowSize(int & /*x*/, int & /*y*/, bool /*borderless*/) const {
+}
+
 void AGSPlatformDriver::PlayVideo(const char *name, int skip, int flags) {
 }
 
@@ -160,7 +163,7 @@ void AGSPlatformDriver::FinishedUsingGraphicsMode() {
 	// don't need to do anything on any OS except DOS
 }
 
-SetupReturnValue AGSPlatformDriver::RunSetup(const ConfigTree &cfg_in, ConfigTree &cfg_out) {
+SetupReturnValue AGSPlatformDriver::RunSetup(const ConfigTree & /*cfg_in*/, ConfigTree & /*cfg_out*/) {
 	return kSetup_Cancel;
 }
 
diff --git a/engines/ags/engine/platform/base/ags_platform_driver.h b/engines/ags/engine/platform/base/ags_platform_driver.h
index 415486b48fb..6e7d135a420 100644
--- a/engines/ags/engine/platform/base/ags_platform_driver.h
+++ b/engines/ags/engine/platform/base/ags_platform_driver.h
@@ -168,8 +168,7 @@ struct AGSPlatformDriver
 	virtual void UnRegisterGameWithGameExplorer();
 	virtual int  ConvertKeycodeToScanCode(int keyCode);
 	// Adjust window size to ensure it is in the supported limits
-	virtual void ValidateWindowSize(int &x, int &y, bool borderless) const {
-	}
+	virtual void ValidateWindowSize(int &x, int &y, bool /*borderless*/) const;
 
 	virtual int  InitializeCDPlayer() = 0;  // return 0 on success
 	virtual int  CDPlayerCommand(int cmdd, int datt) = 0;
diff --git a/engines/ags/engine/platform/base/sys_main.cpp b/engines/ags/engine/platform/base/sys_main.cpp
index 71d22db0b2d..6f8e0a72247 100644
--- a/engines/ags/engine/platform/base/sys_main.cpp
+++ b/engines/ags/engine/platform/base/sys_main.cpp
@@ -40,7 +40,7 @@ void sys_main_shutdown() {
 	sys_window_destroy();
 }
 
-void sys_set_background_mode(bool on) {
+void sys_set_background_mode(bool /*on*/) {
 	// TODO: consider if we want any implementation here, and what...
 }
 
diff --git a/engines/ags/engine/script/script.cpp b/engines/ags/engine/script/script.cpp
index fc6c700e85f..cda695e5312 100644
--- a/engines/ags/engine/script/script.cpp
+++ b/engines/ags/engine/script/script.cpp
@@ -158,7 +158,7 @@ int run_interaction_event(Interaction *nint, int evnt, int chkAny, int isInv) {
 // Returns 0 normally, or -1 to indicate that the NewInteraction has
 // become invalid and don't run another interaction on it
 // (eg. a room change occurred)
-int run_interaction_script(InteractionScripts *nint, int evnt, int chkAny, int isInv) {
+int run_interaction_script(InteractionScripts *nint, int evnt, int chkAny) {
 
 	if ((nint->ScriptFuncNames[evnt] == nullptr) || (nint->ScriptFuncNames[evnt][0u] == 0)) {
 		// no response defined for this event
@@ -690,11 +690,10 @@ int run_interaction_commandlist(InteractionCommandList *nicl, int *timesrun, int
 			PlayFlic(IPARAM1, IPARAM2);
 			break;
 		case 9: { // Run Dialog
-			int roomWas = _GP(play).room_changes;
 			RunDialog(IPARAM1);
 			// if they changed room within the dialog script,
 			// the interaction command list is no longer valid
-			if (roomWas != _GP(play).room_changes)
+			if (room_was != _GP(play).room_changes)
 				return -1;
 		}
 		break;
diff --git a/engines/ags/engine/script/script.h b/engines/ags/engine/script/script.h
index e0b0f3af4eb..d7b2f64dd96 100644
--- a/engines/ags/engine/script/script.h
+++ b/engines/ags/engine/script/script.h
@@ -46,7 +46,7 @@ using AGS::Shared::InteractionVariable;
 int     run_dialog_request(int parmtr);
 void    run_function_on_non_blocking_thread(NonBlockingScriptFunction *funcToRun);
 int     run_interaction_event(Interaction *nint, int evnt, int chkAny = -1, int isInv = 0);
-int     run_interaction_script(InteractionScripts *nint, int evnt, int chkAny = -1, int isInv = 0);
+int     run_interaction_script(InteractionScripts *nint, int evnt, int chkAny = -1);
 int     create_global_script();
 void    cancel_all_scripts();
 


Commit: 357679d2a847e8a22dccccf7b501975f274d064d
    https://github.com/scummvm/scummvm/commit/357679d2a847e8a22dccccf7b501975f274d064d
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T21:50:33-07:00

Commit Message:
AGS: Fixing unimplemented cases in switches

>From upstream f2bb0d055344197b6e4ed537c3107fe0c9784e50

Changed paths:
    engines/ags/engine/game/savegame.cpp
    engines/ags/engine/main/graphics_mode.cpp
    engines/ags/engine/media/audio/sound_clip.cpp


diff --git a/engines/ags/engine/game/savegame.cpp b/engines/ags/engine/game/savegame.cpp
index e1c97b19284..3096e2bf75c 100644
--- a/engines/ags/engine/game/savegame.cpp
+++ b/engines/ags/engine/game/savegame.cpp
@@ -157,9 +157,8 @@ String GetSavegameErrorText(SavegameErrorType err) {
 	case kSvgErr_GameObjectInitFailed:
 		return "Game object initialization failed after save restoration.";
 	default:
-		break;
+		return "Unknown error.";
 	}
-	return "Unknown error.";
 }
 
 Bitmap *RestoreSaveImage(Stream *in) {
diff --git a/engines/ags/engine/main/graphics_mode.cpp b/engines/ags/engine/main/graphics_mode.cpp
index eb321188348..31d636f97d0 100644
--- a/engines/ags/engine/main/graphics_mode.cpp
+++ b/engines/ags/engine/main/graphics_mode.cpp
@@ -182,9 +182,8 @@ Size get_game_frame_from_screen_size(const Size &game_size, const Size screen_si
 		return frame_size;
 	}
 	default:
-		break;
+		return Size();
 	}
-	return Size();
 }
 
 static Size precalc_screen_size(const Size &game_size, const WindowSetup &ws, const FrameScaleDef frame) {
diff --git a/engines/ags/engine/media/audio/sound_clip.cpp b/engines/ags/engine/media/audio/sound_clip.cpp
index cab57c7ee64..2ad80703d2e 100644
--- a/engines/ags/engine/media/audio/sound_clip.cpp
+++ b/engines/ags/engine/media/audio/sound_clip.cpp
@@ -108,6 +108,8 @@ bool SOUNDCLIP::update() {
 	case PlaybackState::PlayStatePlaying:
 		state = audio_core_slot_play(slot_);
 		break;
+	default:
+		break;
 	}
 */
 	return is_ready();


Commit: 85684cbae6bcb81d25d7f5d3a3e2917d8b78e3de
    https://github.com/scummvm/scummvm/commit/85684cbae6bcb81d25d7f5d3a3e2917d8b78e3de
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T21:53:56-07:00

Commit Message:
AGS: Fixed couple of "unreachable code" warnings

>From upstream bb63e9c58c74f0bbcb78e208d33c5e365b743525

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


diff --git a/engines/ags/engine/ac/global_button.cpp b/engines/ags/engine/ac/global_button.cpp
index da9857fdbbb..e4a0c1b18d1 100644
--- a/engines/ags/engine/ac/global_button.cpp
+++ b/engines/ags/engine/ac/global_button.cpp
@@ -80,8 +80,6 @@ int GetButtonPic(int guin, int objn, int ptype) {
 	} else { // pushed pic
 		return guil->PushedImage;
 	}
-
-	quit("internal error in getbuttonpic");
 }
 
 void SetButtonPic(int guin, int objn, int ptype, int slotn) {


Commit: 741405aa3f90efc2bae5bb76cbeb2284657fb138
    https://github.com/scummvm/scummvm/commit/741405aa3f90efc2bae5bb76cbeb2284657fb138
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T21:57:01-07:00

Commit Message:
AGS: Fixed potential use of uninitialized vars

>From upstream 17235c31bad1df1cc23f46c7617023ab62e52e21

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


diff --git a/engines/ags/engine/ac/draw_software.cpp b/engines/ags/engine/ac/draw_software.cpp
index 13787a4daad..4e2465c738f 100644
--- a/engines/ags/engine/ac/draw_software.cpp
+++ b/engines/ags/engine/ac/draw_software.cpp
@@ -231,23 +231,23 @@ void invalidate_rect_on_surf(int x1, int y1, int x2, int y2, DirtyRects &rects)
 			dirtyRow[a].numSpans++;
 		} else {
 			// didn't fit in an existing span, and there are none spare
-			int nearestDist = 99999, nearestWas = -1, extendLeft = false;
-			int tleft, tright;
+			int nearestDist = 99999, nearestWas = -1, extendLeft = 0;
 			// find the nearest span, and enlarge that to include this rect
 			for (s = 0; s < dirtyRow[a].numSpans; s++) {
-				tleft = dirtyRow[a].span[s].x1 - x2;
+				int tleft = dirtyRow[a].span[s].x1 - x2;
 				if ((tleft > 0) && (tleft < nearestDist)) {
 					nearestDist = tleft;
 					nearestWas = s;
 					extendLeft = 1;
 				}
-				tright = x1 - dirtyRow[a].span[s].x2;
+				int tright = x1 - dirtyRow[a].span[s].x2;
 				if ((tright > 0) && (tright < nearestDist)) {
 					nearestDist = tright;
 					nearestWas = s;
 					extendLeft = 0;
 				}
 			}
+			assert(nearestWas >= 0);
 			if (extendLeft)
 				dirtyRow[a].span[nearestWas].x1 = x1;
 			else
diff --git a/engines/ags/engine/ac/route_finder_impl_legacy.cpp b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
index b1eddc7f71f..11adc664fc1 100644
--- a/engines/ags/engine/ac/route_finder_impl_legacy.cpp
+++ b/engines/ags/engine/ac/route_finder_impl_legacy.cpp
@@ -110,19 +110,18 @@ void get_lastcpos(int &lastcx_, int &lastcy_) {
 
 int find_nearest_walkable_area(Bitmap *tempw, int fromX, int fromY, int toX, int toY, int destX, int destY, int granularity) {
 	assert(tempw != nullptr);
-
-	int ex, ey, nearest = 99999, thisis, nearx = 0, neary = 0;
 	if (fromX < 0) fromX = 0;
 	if (fromY < 0) fromY = 0;
 	if (toX >= tempw->GetWidth()) toX = tempw->GetWidth() - 1;
 	if (toY >= tempw->GetHeight()) toY = tempw->GetHeight() - 1;
 
-	for (ex = fromX; ex < toX; ex += granularity) {
-		for (ey = fromY; ey < toY; ey += granularity) {
+	int nearest = 99999, nearx = -1, neary = -1;
+	for (int ex = fromX; ex < toX; ex += granularity) {
+		for (int ey = fromY; ey < toY; ey += granularity) {
 			if (tempw->GetScanLine(ey)[ex] != 232)
 				continue;
 
-			thisis = (int)::sqrt((double)((ex - destX) * (ex - destX) + (ey - destY) * (ey - destY)));
+			int thisis = (int)::sqrt((double)((ex - destX) * (ex - destX) + (ey - destY) * (ey - destY)));
 			if (thisis < nearest) {
 				nearest = thisis;
 				nearx = ex;


Commit: e60335a58a904a888e7b7a9d91fdbfe28af5ff95
    https://github.com/scummvm/scummvm/commit/e60335a58a904a888e7b7a9d91fdbfe28af5ff95
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T21:58:49-07:00

Commit Message:
AGS: In log config fixed missing group letter id for "script"

>From upstream 8d5bb8ad1cc6ef79e0c6b8c60ba0d48751bd659e

Changed paths:
    engines/ags/engine/debugging/debug.cpp


diff --git a/engines/ags/engine/debugging/debug.cpp b/engines/ags/engine/debugging/debug.cpp
index 4ea92b2eadb..2d65dc600f1 100644
--- a/engines/ags/engine/debugging/debug.cpp
+++ b/engines/ags/engine/debugging/debug.cpp
@@ -119,6 +119,9 @@ std::vector<String> parse_log_multigroup(const String &group_str) {
 		case 'g':
 			grplist.push_back("game");
 			break;
+		case 's':
+			grplist.push_back("script");
+			break;
 		case 'c':
 			grplist.push_back("sprcache");
 			break;


Commit: 194dc7bafa41733f95982cf877023659005e4637
    https://github.com/scummvm/scummvm/commit/194dc7bafa41733f95982cf877023659005e4637
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T22:00:14-07:00

Commit Message:
AGS: Fixed game events not cleared inside blocking action

>From upstream 6a71d858819787001ad50516acae7164537bb02f

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


diff --git a/engines/ags/engine/ac/event.cpp b/engines/ags/engine/ac/event.cpp
index 8cf12552866..14102121ffb 100644
--- a/engines/ags/engine/ac/event.cpp
+++ b/engines/ags/engine/ac/event.cpp
@@ -344,8 +344,10 @@ void runevent_now(int evtyp, int ev1, int ev2, int ev3) {
 }
 
 void processallevents() {
-	if (_G(inside_processevent))
+	if (_G(inside_processevent)) {
+		_GP(events).clear(); // flush queued events
 		return;
+	}
 
 	// Take ownership of the pending events
 	// Note: upstream AGS used std::move, which I haven't been able


Commit: 22bcba88f58fcfec1e11aa14842cb1c868939992
    https://github.com/scummvm/scummvm/commit/22bcba88f58fcfec1e11aa14842cb1c868939992
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T22:02:05-07:00

Commit Message:
AGS: Fixed RoomObject animation loosing parameters

>From upstream a46cef76f8b268c26011965ee6ffcd5b97b7c8ab

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


diff --git a/engines/ags/engine/ac/room_object.cpp b/engines/ags/engine/ac/room_object.cpp
index e4785288ce4..907e3411bf1 100644
--- a/engines/ags/engine/ac/room_object.cpp
+++ b/engines/ags/engine/ac/room_object.cpp
@@ -83,7 +83,8 @@ void RoomObject::UpdateCyclingView(int ref_id) {
 		wait--; return;
 	}
 
-	cycling = CycleViewAnim(view, loop, frame, cycling < ANIM_BACKWARDS, cycling % ANIM_BACKWARDS);
+	if (!CycleViewAnim(view, loop, frame, cycling < ANIM_BACKWARDS, cycling % ANIM_BACKWARDS))
+		cycling = 0; // finished animating
 
 	ViewFrame *vfptr = &_GP(views)[view].loops[loop].frames[frame];
 	if (vfptr->pic > UINT16_MAX)


Commit: 1ab42991d19e91c2a503e5b7436f7299e5f0f036
    https://github.com/scummvm/scummvm/commit/1ab42991d19e91c2a503e5b7436f7299e5f0f036
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T22:11:42-07:00

Commit Message:
AGS: Added more event constants, clarified couple event calls

>From upstream ae6862f7917832ebc5f2314561938c01725ac8a2

Changed paths:
    engines/ags/engine/ac/event.cpp
    engines/ags/engine/ac/event.h
    engines/ags/engine/ac/room.cpp
    engines/ags/engine/main/game_run.cpp


diff --git a/engines/ags/engine/ac/event.cpp b/engines/ags/engine/ac/event.cpp
index 14102121ffb..413d4545ba0 100644
--- a/engines/ags/engine/ac/event.cpp
+++ b/engines/ags/engine/ac/event.cpp
@@ -167,10 +167,9 @@ void process_event(const EventHappened *evp) {
 				evpt = &_G(croom)->intrRoom;
 
 			_G(evblockbasename) = "room";
-			if (evp->data3 == 5) {
+			if (evp->data3 == EVROM_BEFOREFADEIN) {
 				_G(in_enters_screen)++;
 				run_on_event(GE_ENTER_ROOM, RuntimeScriptValue().SetInt32(_G(displayed_room)));
-
 			}
 			//Debug::Printf("Running room interaction, event %d", evp->data3);
 		}
@@ -188,7 +187,7 @@ void process_event(const EventHappened *evp) {
 		_G(evblockbasename) = oldbasename;
 		_G(evblocknum) = oldblocknum;
 
-		if ((evp->data3 == 5) && (evp->data1 == EVB_ROOM))
+		if ((evp->data1 == EVB_ROOM) && (evp->data3 == EVROM_BEFOREFADEIN))
 			_G(in_enters_screen)--;
 	} else if (evp->type == EV_FADEIN) {
 		// if they change the transition type before the fadein, make
diff --git a/engines/ags/engine/ac/event.h b/engines/ags/engine/ac/event.h
index 7187fb42e9c..7ca68941ded 100644
--- a/engines/ags/engine/ac/event.h
+++ b/engines/ags/engine/ac/event.h
@@ -38,18 +38,52 @@ namespace AGS3 {
 #define GE_LOSE_INV      8
 #define GE_RESTORE_GAME  9
 
+// Game event types:
+// common script callback
 #define EV_TEXTSCRIPT 1
+// room event
 #define EV_RUNEVBLOCK 2
+// fade-in event
 #define EV_FADEIN     3
+// gui click
 #define EV_IFACECLICK 4
+// new room event
 #define EV_NEWROOM    5
+// Text script callback types:
+// repeatedly execute
 #define TS_REPEAT     1
+// on key press
 #define TS_KEYPRESS   2
+// mouse click
 #define TS_MCLICK     3
+// on text input
 #define TS_TEXTINPUT  4
+// script callback types number
 #define TS_NUM        5
+// Room event types:
+// hotspot event
 #define EVB_HOTSPOT   1
+// room own event
 #define EVB_ROOM      2
+// Room event sub-types:
+// room edge crossing
+#define EVROM_EDGELEFT     0
+#define EVROM_EDGERIGHT    1
+#define EVROM_EDGEBOTTOM   2
+#define EVROM_EDGETOP      3
+// first time enters room
+#define EVROM_FIRSTENTER   4
+// load room; aka before fade-in
+#define EVROM_BEFOREFADEIN 5
+// room's rep-exec
+#define EVROM_REPEXEC      6
+// after fade-in
+#define EVROM_AFTERFADEIN  7
+// Hotspot event types:
+// player stands on hotspot
+#define EVHOT_STANDSON  0
+// cursor is over hotspot
+#define EVHOT_MOUSEOVER 6
 
 struct EventHappened {
 	int type = 0;
diff --git a/engines/ags/engine/ac/room.cpp b/engines/ags/engine/ac/room.cpp
index ce4fc5ca269..9854d5f22eb 100644
--- a/engines/ags/engine/ac/room.cpp
+++ b/engines/ags/engine/ac/room.cpp
@@ -976,7 +976,7 @@ void check_new_room() {
 		evh.type = EV_RUNEVBLOCK;
 		evh.data1 = EVB_ROOM;
 		evh.data2 = 0;
-		evh.data3 = 5;
+		evh.data3 = EVROM_BEFOREFADEIN;
 		evh.player = _GP(game).playercharacter;
 		// make sure that any script calls don't re-call enters screen
 		int newroom_was = _G(in_new_room);
diff --git a/engines/ags/engine/main/game_run.cpp b/engines/ags/engine/main/game_run.cpp
index ab6f976417f..6263c17d18c 100644
--- a/engines/ags/engine/main/game_run.cpp
+++ b/engines/ags/engine/main/game_run.cpp
@@ -102,19 +102,18 @@ static void game_loop_check_problems_at_start() {
 		quit("!A blocking function was called from within a non-blocking event such as " REP_EXEC_ALWAYS_NAME);
 }
 
-static void game_loop_check_new_room() {
+// Runs rep-exec
+static void game_loop_do_early_script_update() {
 	if (_G(in_new_room) == 0) {
 		// Run the room and game script repeatedly_execute
 		run_function_on_non_blocking_thread(&_GP(repExecAlways));
 		setevent(EV_TEXTSCRIPT, TS_REPEAT);
-		setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, 6);
+		setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, EVROM_REPEXEC);
 	}
-	// run this immediately to make sure it gets done before fade-in
-	// (player enters screen)
-	check_new_room();
 }
 
-static void game_loop_do_late_update() {
+// Runs late-rep-exec
+static void game_loop_do_late_script_update() {
 	if (_G(in_new_room) == 0) {
 		// Run the room and game script late_repeatedly_execute
 		run_function_on_non_blocking_thread(&_GP(lateRepExecAlways));
@@ -126,7 +125,7 @@ static int game_loop_check_ground_level_interactions() {
 		// check if he's standing on a hotspot
 		int hotspotThere = get_hotspot_at(_G(playerchar)->x, _G(playerchar)->y);
 		// run Stands on Hotspot event
-		setevent(EV_RUNEVBLOCK, EVB_HOTSPOT, hotspotThere, 0);
+		setevent(EV_RUNEVBLOCK, EVB_HOTSPOT, hotspotThere, EVHOT_STANDSON);
 
 		// check current region
 		int onRegion = GetRegionIDAtRoom(_G(playerchar)->x, _G(playerchar)->y);
@@ -629,7 +628,7 @@ static void game_loop_do_render_and_check_mouse(IDriverDependantBitmap *extraBit
 				if (__GetLocationType(game_to_data_coord(_G(mousex)), game_to_data_coord(_G(mousey)), 1) == LOCTYPE_HOTSPOT) {
 					int onhs = _G(getloctype_index);
 
-					setevent(EV_RUNEVBLOCK, EVB_HOTSPOT, onhs, 6);
+					setevent(EV_RUNEVBLOCK, EVB_HOTSPOT, onhs, EVHOT_MOUSEOVER);
 				}
 			}
 
@@ -650,9 +649,9 @@ static void game_loop_update_events() {
 		// then queue the Enters Screen scripts
 		// run these next time round, when it's faded in
 		if (_G(new_room_was) == 2)  // first time enters screen
-			setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, 4);
+			setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, EVROM_FIRSTENTER);
 		if (_G(new_room_was) != 3)   // enters screen after fadein
-			setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, 7);
+			setevent(EV_RUNEVBLOCK, EVB_ROOM, 0, EVROM_AFTERFADEIN);
 	}
 }
 
@@ -738,7 +737,11 @@ void UpdateGameOnce(bool checkControls, IDriverDependantBitmap *extraBitmap, int
 
 	_G(our_eip) = 1004;
 
-	game_loop_check_new_room();
+	game_loop_do_early_script_update();
+	// run this immediately to make sure it gets done before fade-in
+	// (player enters screen)
+	check_new_room();
+
 	if (_G(abort_engine))
 		return;
 
@@ -764,7 +767,7 @@ void UpdateGameOnce(bool checkControls, IDriverDependantBitmap *extraBitmap, int
 
 	game_loop_update_animated_buttons();
 
-	game_loop_do_late_update();
+	game_loop_do_late_script_update();
 
 	update_audio_system_on_game_loop();
 


Commit: 2d21a7dfdec1dc9eac855244bccc800f3af5d773
    https://github.com/scummvm/scummvm/commit/2d21a7dfdec1dc9eac855244bccc800f3af5d773
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2022-04-25T22:18:21-07:00

Commit Message:
AGS: Removed couple of unused constants

>From upstream 223fdb3d4ccfc0a6d0c437ac9fbb25a6095d3d42

Changed paths:
    engines/ags/shared/ac/common.cpp
    engines/ags/shared/ac/common.h


diff --git a/engines/ags/shared/ac/common.cpp b/engines/ags/shared/ac/common.cpp
index a8d754c75e2..4159e0ba965 100644
--- a/engines/ags/shared/ac/common.cpp
+++ b/engines/ags/shared/ac/common.cpp
@@ -26,8 +26,6 @@ namespace AGS3 {
 
 using namespace AGS::Shared;
 
-const char *game_file_sig = "Adventure Creator Game File v2";
-
 void quit(const String &str) {
 	quit(str.GetCStr());
 }
diff --git a/engines/ags/shared/ac/common.h b/engines/ags/shared/ac/common.h
index 4bb5446760a..bf419bae029 100644
--- a/engines/ags/shared/ac/common.h
+++ b/engines/ags/shared/ac/common.h
@@ -36,9 +36,6 @@ int  get_our_eip();
 
 extern const char *game_file_sig;
 
-// archive attributes to search for - al_findfirst breaks with 0
-#define FA_SEARCH -1
-
 } // namespace AGS3
 
 #endif




More information about the Scummvm-git-logs mailing list