[Scummvm-git-logs] scummvm master -> 8d0a8d9df4496caefb5b79fc82b578a9ce5ee8ea

AndywinXp noreply at scummvm.org
Sun Jun 23 08:20:39 UTC 2024


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:
8d0a8d9df4 SCUMM: HE: Fix shadow being overdrawn on some games


Commit: 8d0a8d9df4496caefb5b79fc82b578a9ce5ee8ea
    https://github.com/scummvm/scummvm/commit/8d0a8d9df4496caefb5b79fc82b578a9ce5ee8ea
Author: AndywinXp (andywinxp at gmail.com)
Date: 2024-06-23T10:20:33+02:00

Commit Message:
SCUMM: HE: Fix shadow being overdrawn on some games

Closes ticket #15211:
"SCUMM: BASEBALL (97/2001/2003): Overdrawn shadows glitch"

Changed paths:
    engines/scumm/actor.cpp
    engines/scumm/he/script_v72he.cpp


diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index a3549c9e699..6163a4f3d18 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -2923,10 +2923,12 @@ void ScummEngine_v70he::setActorRedrawFlags() {
 		return;
 	}
 
-	if (_game.heversion >= 95) {
+	if (_game.heversion >= 90) {
 		for (int j = 1; j < _numActors; j++) {
-			if (_actors[j]->_costume && _actors[j]->_heShadow)
+			if (_actors[j]->_costume && _actors[j]->_heShadow) {
 				_actors[j]->_needRedraw = true;
+				_actors[j]->_needBgReset = true;
+			}
 		}
 	}
 
@@ -3099,8 +3101,8 @@ void ScummEngine_v95he::resetActorBgs() {
 			// apparently breaks a bunch of other stuff though,
 			// and doesn't help us in any way...
 			//
-			//if (!(testGfxOtherUsageBits(strip, act))
-			//	continue;
+			// if (!(testGfxOtherUsageBits(strip, act)))
+			// 	continue;
 
 			if (!(_actors[act]->_needBgReset))
 				continue;
diff --git a/engines/scumm/he/script_v72he.cpp b/engines/scumm/he/script_v72he.cpp
index e7e9cb70d95..59ef476d085 100644
--- a/engines/scumm/he/script_v72he.cpp
+++ b/engines/scumm/he/script_v72he.cpp
@@ -956,6 +956,14 @@ void ScummEngine_v72he::o72_actorOps() {
 		break;
 	case SO_SHADOW:
 		a->_heShadow = pop();
+
+		if (_game.heversion >= 80 && a->_heShadow) {
+			if (!_wiz->getColorMixBlockPtrForWiz(a->_heShadow)) {
+				debug(4, "o72_actorOps(): SO_SHADOW: Image %d missing shadow table", a->_heShadow);
+				a->_heShadow = 0;
+			}
+		}
+
 		a->_needRedraw = true;
 		a->_needBgReset = true;
 




More information about the Scummvm-git-logs mailing list