[Scummvm-git-logs] scummvm master -> 4d2d8b45d4d3b751cad5099fd820dda2e7ba6e65

criezy noreply at scummvm.org
Sat Jun 18 17:32:54 UTC 2022


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

Summary:
ed8526f30a AGS: Updated Script API version for recent changes in wait skip values
84910e9a10 AGS: Updated build version (3.6.0.26)
fa3c524d13 AGS: GetWaitSkipResult: clear SKIP_AUTOTIMER flag (return 0)
15563b5a7c AGS: Changed SpriteCache::FreeMem to comply with sound cache
a477deb74c AGS: Fixed rendering scaled up WFN fonts
4d2d8b45d4 AGS: Fixed trying to erase background speech overlays twice


Commit: ed8526f30a5d45d78b6da1e03f40121a2388bc9a
    https://github.com/scummvm/scummvm/commit/ed8526f30a5d45d78b6da1e03f40121a2388bc9a
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:11:57+01:00

Commit Message:
AGS: Updated Script API version for recent changes in wait skip values

This is to allow to distinguish implementations in case there were games
using older variants (although it's not clear if any had yet).

>From upstream 11315b3487d22ce4830d60fad36ae7124aa45e55

Changed paths:
    engines/ags/engine/ac/global_game.cpp
    engines/ags/shared/ac/game_setup_struct_base.cpp
    engines/ags/shared/ac/game_struct_defines.h


diff --git a/engines/ags/engine/ac/global_game.cpp b/engines/ags/engine/ac/global_game.cpp
index a36fcec7785..828954c4076 100644
--- a/engines/ags/engine/ac/global_game.cpp
+++ b/engines/ags/engine/ac/global_game.cpp
@@ -787,7 +787,7 @@ int WaitImpl(int skip_type, int nloops) {
 		// < 3.6.0 return 1 is skipped by user input, otherwise 0
 		return ((_GP(play).wait_skipped_by & (SKIP_KEYPRESS | SKIP_MOUSECLICK)) != 0) ? 1 : 0;
 	}
-	// >= 3.6.0 return positive keycode, negative mouse button code, or 0 as time-out
+	// >= 3.6.0 return skip (input) type flags with keycode
 	return _GP(play).GetWaitSkipResult();
 }
 
diff --git a/engines/ags/shared/ac/game_setup_struct_base.cpp b/engines/ags/shared/ac/game_setup_struct_base.cpp
index b9c1569723c..6cad84bd69a 100644
--- a/engines/ags/shared/ac/game_setup_struct_base.cpp
+++ b/engines/ags/shared/ac/game_setup_struct_base.cpp
@@ -264,7 +264,8 @@ const char *GetScriptAPIName(ScriptAPIVersion v) {
 	case kScriptAPI_v350: return "v3.5.0-alpha";
 	case kScriptAPI_v3507: return "v3.5.0-final";
 	case kScriptAPI_v351: return "v3.5.1";
-	case kScriptAPI_v360: return "v3.6.0";
+	case kScriptAPI_v360: return "v3.6.0-alpha";
+	case kScriptAPI_v36026: return "v3.6.0-final";
 	default: return "unknown";
 	}	
 }
diff --git a/engines/ags/shared/ac/game_struct_defines.h b/engines/ags/shared/ac/game_struct_defines.h
index fdf37ddb78c..22f8fe4dc99 100644
--- a/engines/ags/shared/ac/game_struct_defines.h
+++ b/engines/ags/shared/ac/game_struct_defines.h
@@ -179,7 +179,8 @@ enum ScriptAPIVersion {
 	kScriptAPI_v3507 = 7,
 	kScriptAPI_v351 = 8,
 	kScriptAPI_v360 = 3060000,
-	kScriptAPI_Current = kScriptAPI_v360
+	kScriptAPI_v36026 = 3060026,
+	kScriptAPI_Current = kScriptAPI_v36026
 };
 
 extern const char *GetScriptAPIName(ScriptAPIVersion v);


Commit: 84910e9a10419c145d6517f5d51b31a55b6959c3
    https://github.com/scummvm/scummvm/commit/84910e9a10419c145d6517f5d51b31a55b6959c3
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:14:01+01:00

Commit Message:
AGS: Updated build version (3.6.0.26)

>From upstream 2632528dd5805e4b0585c414fecfb8bed6e4f584

Changed paths:
    engines/ags/shared/core/def_version.h


diff --git a/engines/ags/shared/core/def_version.h b/engines/ags/shared/core/def_version.h
index bfdda2ca64c..904e9d293f5 100644
--- a/engines/ags/shared/core/def_version.h
+++ b/engines/ags/shared/core/def_version.h
@@ -22,9 +22,9 @@
 #ifndef AGS_SHARED_CORE_DEFVERSION_H
 #define AGS_SHARED_CORE_DEFVERSION_H
 
-#define ACI_VERSION_STR      "3.6.0.25"
+#define ACI_VERSION_STR      "3.6.0.26"
 #if defined (RC_INVOKED) // for MSVC resource compiler
-#define ACI_VERSION_MSRC_DEF  3.6.0.25
+#define ACI_VERSION_MSRC_DEF  3.6.0.26
 #endif
 
 #define SPECIAL_VERSION ""


Commit: fa3c524d1320ea7da40351685f09f157497a36e3
    https://github.com/scummvm/scummvm/commit/fa3c524d1320ea7da40351685f09f157497a36e3
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:15:51+01:00

Commit Message:
AGS: GetWaitSkipResult: clear SKIP_AUTOTIMER flag (return 0)

>From upstream f5159c707a0c8616b0cca39f138c2d7e53058bf5

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


diff --git a/engines/ags/engine/ac/game_state.cpp b/engines/ags/engine/ac/game_state.cpp
index 812f8973ab8..783dad88f79 100644
--- a/engines/ags/engine/ac/game_state.cpp
+++ b/engines/ags/engine/ac/game_state.cpp
@@ -376,7 +376,9 @@ void GameState::SetWaitSkipResult(int how, int data) {
 }
 
 int GameState::GetWaitSkipResult() const {
-	return wait_skipped_by << 16 | (wait_skipped_by_data & 0x0000FFFF);
+	// NOTE: we remove timer flag to make timeout reason = 0
+	return ((wait_skipped_by & ~SKIP_AUTOTIMER) << 16)
+		| (wait_skipped_by_data & 0x0000FFFF);
 }
 
 bool GameState::IsBlockingVoiceSpeech() const {


Commit: 15563b5a7cf594dbee51c2b09bf2ccb5ccf03e4e
    https://github.com/scummvm/scummvm/commit/15563b5a7cf594dbee51c2b09bf2ccb5ccf03e4e
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:21:35+01:00

Commit Message:
AGS: Changed SpriteCache::FreeMem to comply with sound cache

>From upstream 94a462d52d5533f4ebb4cef1bbddd280b4f876a2

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


diff --git a/engines/ags/shared/ac/sprite_cache.cpp b/engines/ags/shared/ac/sprite_cache.cpp
index 101f0455ff1..c05c7ed7025 100644
--- a/engines/ags/shared/ac/sprite_cache.cpp
+++ b/engines/ags/shared/ac/sprite_cache.cpp
@@ -215,8 +215,8 @@ Bitmap *SpriteCache::operator [] (sprkey_t index) {
 	return _spriteData[index].Image;
 }
 
-void SpriteCache::FreeMem(size_t threshold) {
-	for (int tries = 0; (_mru.size() > 0) && (_cacheSize >= threshold); ++tries) {
+void SpriteCache::FreeMem(size_t space) {
+	for (int tries = 0; (_mru.size() > 0) && (_cacheSize >= (_maxCacheSize - space)); ++tries) {
 		DisposeOldest();
 		if (tries > 1000) { // ???
 			Debug::Printf(kDbgGroup_SprCache, kDbgMsg_Error, "RUNTIME CACHE ERROR: STUCK IN FREE_UP_MEM; RESETTING CACHE");
@@ -299,8 +299,6 @@ size_t SpriteCache::LoadSprite(sprkey_t index) {
 	if (index < 0 || (size_t)index >= _spriteData.size())
 		return 0;
 
-	FreeMem(_maxCacheSize);
-
 	sprkey_t load_index = GetDataIndex(index);
 	Bitmap *image;
 	HError err = _file.LoadSprite(load_index, image);
@@ -330,10 +328,10 @@ size_t SpriteCache::LoadSprite(sprkey_t index) {
 	if (index != 0)  // leave sprite 0 locked
 		_spriteData[index].Flags &= ~SPRCACHEFLAG_LOCKED;
 
-	// we need to store this because the main program might
-	// alter spritewidth/height if it resizes stuff
-	size_t size = _sprInfos[index].Width * _sprInfos[index].Height *
+	const size_t size = _sprInfos[index].Width * _sprInfos[index].Height *
 		_spriteData[index].Image->GetBPP();
+	// Clear up space before adding to cache
+	FreeMem(size);
 	_spriteData[index].Size = size;
 	_cacheSize += size;
 
diff --git a/engines/ags/shared/ac/sprite_cache.h b/engines/ags/shared/ac/sprite_cache.h
index 552f7a7eb3b..d1715407c67 100644
--- a/engines/ags/shared/ac/sprite_cache.h
+++ b/engines/ags/shared/ac/sprite_cache.h
@@ -154,8 +154,8 @@ private:
 	sprkey_t    GetDataIndex(sprkey_t index);
 	// Delete the oldest (least recently used) image in cache
 	void        DisposeOldest();
-	// Keep disposing oldest elements until cache size is reduced to the given threshold
-	void        FreeMem(size_t threshold);
+	// Keep disposing oldest elements until cache has at least the given free space
+	void        FreeMem(size_t space);
 
 	// Information required for the sprite streaming
 	struct SpriteData {


Commit: a477deb74cf9ef166121bac1eb6d90d2f4af06f2
    https://github.com/scummvm/scummvm/commit/a477deb74cf9ef166121bac1eb6d90d2f4af06f2
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:23:38+01:00

Commit Message:
AGS: Fixed rendering scaled up WFN fonts

>From upstream adc9121f30c028a071783ffb6645bb72aee482ea

Changed paths:
    engines/ags/shared/font/wfn_font_renderer.cpp


diff --git a/engines/ags/shared/font/wfn_font_renderer.cpp b/engines/ags/shared/font/wfn_font_renderer.cpp
index e5eb6d6d140..1cca2fc4763 100644
--- a/engines/ags/shared/font/wfn_font_renderer.cpp
+++ b/engines/ags/shared/font/wfn_font_renderer.cpp
@@ -111,7 +111,7 @@ static int RenderChar(Bitmap *ds, const int at_x, const int at_y, Rect clip,
 		for (int w = sw, x = sx; w < width && x < ex; ++w, x += scale) {
 			if (((actdata[h * bytewid + (w / 8)] & (0x80 >> (w % 8))) != 0)) {
 				if (scale > 1) {
-					ds->FillRect(RectWH(x, y, scale - 1, scale - 1), text_color);
+					ds->FillRect(RectWH(x, y, scale, scale), text_color);
 				} else {
 					ds->PutPixel(x, y, text_color);
 				}


Commit: 4d2d8b45d4d3b751cad5099fd820dda2e7ba6e65
    https://github.com/scummvm/scummvm/commit/4d2d8b45d4d3b751cad5099fd820dda2e7ba6e65
Author: Thierry Crozat (criezy at scummvm.org)
Date: 2022-06-18T18:32:09+01:00

Commit Message:
AGS: Fixed trying to erase background speech overlays twice

>From upstream 5f137874738c86852b5ef7da2933fab7e78ae89b

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


diff --git a/engines/ags/engine/ac/overlay.cpp b/engines/ags/engine/ac/overlay.cpp
index 7716fc504c4..6c98bbddaa4 100644
--- a/engines/ags/engine/ac/overlay.cpp
+++ b/engines/ags/engine/ac/overlay.cpp
@@ -291,7 +291,11 @@ static void invalidate_and_subref(ScreenOverlay &over, ScriptOverlay **scover) {
 	if (scover && (*scover)) {
 		(*scover)->overlayId = -1;
 		*scover = nullptr;
+	} else if (over.associatedOverlayHandle > 0) {
+		ScriptOverlay *scoverlay = const_cast<ScriptOverlay*>((const ScriptOverlay* )ccGetObjectAddressFromHandle(over.associatedOverlayHandle));
+		if (scoverlay) scoverlay->overlayId = -1;
 	}
+
 	if (over.associatedOverlayHandle > 0) {
 		ccReleaseObjectReference(over.associatedOverlayHandle);
 		over.associatedOverlayHandle = 0;
@@ -313,6 +317,9 @@ static void dispose_overlay(ScreenOverlay &over) {
 }
 
 void remove_screen_overlay_index(size_t over_idx) {
+	assert(over_idx < _GP(screenover).size());
+	if (over_idx >= _GP(screenover).size())
+		return; // something is wrong
 	ScreenOverlay &over = _GP(screenover)[over_idx];
 	// TODO: move these custom settings outside of this function
 	if (over.type == _GP(play).complete_overlay_on) {
@@ -323,7 +330,7 @@ void remove_screen_overlay_index(size_t over_idx) {
 	} else if (over.type == OVER_PICTURE) { // release internal ref for speech face
 		invalidate_and_subref(over, &_GP(play).speech_face_scover);
 		_G(face_talking) = -1;
-	} else if (over.bgSpeechForChar > 0) { // release internal ref for bg speech
+	} else if (over.bgSpeechForChar >= 0) { // release internal ref for bg speech
 		invalidate_and_subref(over, nullptr);
 	}
 	dispose_overlay(over);




More information about the Scummvm-git-logs mailing list