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

bluegr bluegr at gmail.com
Sun Jun 30 13:47:08 CEST 2019


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

Summary:
2fd416b0ac SCI32: Extend scaler sanity checks to all SCI32 versions


Commit: 2fd416b0ac9750916e388e95429700275f98113a
    https://github.com/scummvm/scummvm/commit/2fd416b0ac9750916e388e95429700275f98113a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2019-06-30T14:46:37+03:00

Commit Message:
SCI32: Extend scaler sanity checks to all SCI32 versions

Fixes QFG4 bug #10765. It's preferable to have sanity checks in the
code, rather than crashing due to invalid draw rectangles from buggy
game scripts. It's no use checking which specific interpreter versions
had sanity checks and trust the game scripts of the other interpreters.
Thus, it's easier and safer to always enable these sanity checks.

Changed paths:
    engines/sci/engine/features.h
    engines/sci/graphics/celobj32.cpp


diff --git a/engines/sci/engine/features.h b/engines/sci/engine/features.h
index d776495..42d710f 100644
--- a/engines/sci/engine/features.h
+++ b/engines/sci/engine/features.h
@@ -164,19 +164,6 @@ public:
 	inline bool usesAlternateSelectors() const {
 		return g_sci->getGameId() == GID_PHANTASMAGORIA2;
 	}
-
-	inline bool hasEmptyScaleDrawHack() const {
-		// Yes: KQ7 (all), PQ4CD, QFG4CD, SQ6, Phant1
-		// No: All SCI2, all SCI3, GK2, LSL6hires, PQ:SWAT, Torin
-		// Unknown: Hoyle5, MGDX, Shivers
-		const SciGameId &gid = g_sci->getGameId();
-		return getSciVersion() > SCI_VERSION_2 &&
-			getSciVersion() < SCI_VERSION_2_1_LATE &&
-			gid != GID_LSL6HIRES &&
-			gid != GID_GK2 &&
-			gid != GID_PQSWAT &&
-			gid != GID_TORIN;
-	}
 #endif
 
 	/**
diff --git a/engines/sci/graphics/celobj32.cpp b/engines/sci/graphics/celobj32.cpp
index 1b93aee..f62712d 100644
--- a/engines/sci/graphics/celobj32.cpp
+++ b/engines/sci/graphics/celobj32.cpp
@@ -857,9 +857,8 @@ void CelObj::drawUncompHzFlipNoMDNoSkip(Buffer &target, const Common::Rect &targ
 void CelObj::scaleDrawNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	// In SSCI the checks are > because their rects are BR-inclusive; our checks
 	// are >= because our rects are BR-exclusive
-	if (g_sci->_features->hasEmptyScaleDrawHack() &&
-		(targetRect.left >= targetRect.right ||
-		 targetRect.top >= targetRect.bottom)) {
+	if (targetRect.left >= targetRect.right ||
+		 targetRect.top >= targetRect.bottom) {
 		return;
 	}
 
@@ -872,9 +871,8 @@ void CelObj::scaleDrawNoMD(Buffer &target, const Ratio &scaleX, const Ratio &sca
 void CelObj::scaleDrawUncompNoMD(Buffer &target, const Ratio &scaleX, const Ratio &scaleY, const Common::Rect &targetRect, const Common::Point &scaledPosition) const {
 	// In SSCI the checks are > because their rects are BR-inclusive; our checks
 	// are >= because our rects are BR-exclusive
-	if (g_sci->_features->hasEmptyScaleDrawHack() &&
-		(targetRect.left >= targetRect.right ||
-		 targetRect.top >= targetRect.bottom)) {
+	if (targetRect.left >= targetRect.right ||
+		 targetRect.top >= targetRect.bottom) {
 		return;
 	}
 





More information about the Scummvm-git-logs mailing list