[Scummvm-git-logs] scummvm master -> b3882595c6a2c1672a960bf1cc3592e3f7e3cd11

AndywinXp noreply at scummvm.org
Sat Jun 29 20:44:11 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:
b3882595c6 SCUMM: HE100: Fix unimplemented chore redirect frames


Commit: b3882595c6a2c1672a960bf1cc3592e3f7e3cd11
    https://github.com/scummvm/scummvm/commit/b3882595c6a2c1672a960bf1cc3592e3f7e3cd11
Author: AndywinXp (andywinxp at gmail.com)
Date: 2024-06-29T22:43:08+02:00

Commit Message:
SCUMM: HE100: Fix unimplemented chore redirect frames

This fixes disappearing actors in Backyard Football 2002.

Changed paths:
    engines/scumm/actor.cpp
    engines/scumm/actor.h
    engines/scumm/actor_he.h


diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index c51210afa99..c176047840c 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -2620,24 +2620,46 @@ bool Actor::actorHitTest(int x, int y) {
 #endif
 
 void Actor::startAnimActor(int f) {
-	switch (f) {
-	case 0x38:
-		f = _initFrame;
-		break;
-	case 0x39:
-		f = _walkFrame;
-		break;
-	case 0x3A:
-		f = _standFrame;
-		break;
-	case 0x3B:
-		f = _talkStartFrame;
-		break;
-	case 0x3C:
-		f = _talkStopFrame;
-		break;
-	default:
-		break;
+	if (_vm->_game.heversion > 99) {
+		switch (f) {
+		case HE100_CHORE_REDIRECT_INIT:
+			f = _initFrame;
+			break;
+		case HE100_CHORE_REDIRECT_WALK:
+			f = _walkFrame;
+			break;
+		case HE100_CHORE_REDIRECT_STAND:
+			f = _standFrame;
+			break;
+		case HE100_CHORE_REDIRECT_START_TALK:
+			f = _talkStartFrame;
+			break;
+		case HE100_CHORE_REDIRECT_STOP_TALK:
+			f = _talkStopFrame;
+			break;
+		default:
+			break;
+		}
+	} else {
+		switch (f) {
+		case CHORE_REDIRECT_INIT:
+			f = _initFrame;
+			break;
+		case CHORE_REDIRECT_WALK:
+			f = _walkFrame;
+			break;
+		case CHORE_REDIRECT_STAND:
+			f = _standFrame;
+			break;
+		case CHORE_REDIRECT_START_TALK:
+			f = _talkStartFrame;
+			break;
+		case CHORE_REDIRECT_STOP_TALK:
+			f = _talkStopFrame;
+			break;
+		default:
+			break;
+		}
 	}
 
 	assert(f != 0x3E);
diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h
index b77dc154ebc..d91f710271d 100644
--- a/engines/scumm/actor.h
+++ b/engines/scumm/actor.h
@@ -29,6 +29,12 @@
 
 namespace Scumm {
 
+#define CHORE_REDIRECT_INIT        56
+#define CHORE_REDIRECT_WALK        57
+#define CHORE_REDIRECT_STAND       58
+#define CHORE_REDIRECT_START_TALK  59
+#define CHORE_REDIRECT_STOP_TALK   60
+
 enum {
 	V12_X_MULTIPLIER = 8,
 	V12_Y_MULTIPLIER = 2,
diff --git a/engines/scumm/actor_he.h b/engines/scumm/actor_he.h
index 262ad46aa3c..5aa23faf0e8 100644
--- a/engines/scumm/actor_he.h
+++ b/engines/scumm/actor_he.h
@@ -29,6 +29,12 @@ namespace Scumm {
 
 #define ACTOR_GENERAL_FLAG_IGNORE_ERASE 0x00000001
 
+#define HE100_CHORE_REDIRECT_INIT        1024
+#define HE100_CHORE_REDIRECT_WALK        1025
+#define HE100_CHORE_REDIRECT_STAND       1026
+#define HE100_CHORE_REDIRECT_START_TALK  1027
+#define HE100_CHORE_REDIRECT_STOP_TALK   1028
+
  struct HEEraseAuxEntry {
 	int actor;
 	int32 x1, y1, x2, y2;




More information about the Scummvm-git-logs mailing list