[Scummvm-git-logs] scummvm master -> 3801d1369a49734bf20708fcf6c2d77e44499e7d
AndywinXp
noreply at scummvm.org
Thu Jul 3 20:49:49 UTC 2025
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
3801d1369a SCUMM: HE70/FBEAR: Workaround for rare actor erase glitch
Commit: 3801d1369a49734bf20708fcf6c2d77e44499e7d
https://github.com/scummvm/scummvm/commit/3801d1369a49734bf20708fcf6c2d77e44499e7d
Author: AndywinXp (andywinxp at gmail.com)
Date: 2025-07-03T22:49:43+02:00
Commit Message:
SCUMM: HE70/FBEAR: Workaround for rare actor erase glitch
After spending some hours of research on this class of glitches I figured I would
have to rewrite the walk code to make it work correctly.
And given how different our code is compared to the orig. HE code... no thanks. :P
At least now we have no visible glitches for this one and only game/version using
the walk code.
Changed paths:
engines/scumm/actor.cpp
engines/scumm/actor.h
diff --git a/engines/scumm/actor.cpp b/engines/scumm/actor.cpp
index cce39fa7463..3895cada77b 100644
--- a/engines/scumm/actor.cpp
+++ b/engines/scumm/actor.cpp
@@ -2733,7 +2733,7 @@ void Actor::startAnimActor(int f) {
}
}
- assert(f != 0x3E);
+ assert(f != CHORE_FACE_DIR);
if (isInCurrentRoom() && _costume != 0) {
_animProgress = 0;
@@ -3102,6 +3102,20 @@ void ScummEngine::resetActorBgs() {
}
void ScummEngine_v70he::resetActorBgs() {
+ // FIXME: This function represent the exact behavior any HE70+ game should have.
+ // This also needs the walk code to be in a certain way. The walk code is
+ // basically used only on Fatty Bear, all other games ditched "normal" walking
+ // in favour of special walking animations.
+ //
+ // In order to have a walk without a couple of rare erase glitches in Fatty Bear,
+ // we temporarily use the old function. That is, until I rewrite the walk code,
+ // which could potentially never happen since it's used only for this game and this
+ // exact version...
+ if (_game.id == GID_FBEAR && _game.heversion == 70) {
+ ScummEngine::resetActorBgs();
+ return;
+ }
+
for (int i = 0; i < _gdi->_numStrips; i++) {
int strip = _screenStartStrip + i;
clearGfxUsageBit(strip, USAGE_BIT_DIRTY);
diff --git a/engines/scumm/actor.h b/engines/scumm/actor.h
index 01c3e82c6b9..bf53cc0c4c7 100644
--- a/engines/scumm/actor.h
+++ b/engines/scumm/actor.h
@@ -34,6 +34,9 @@ namespace Scumm {
#define CHORE_REDIRECT_STAND 58
#define CHORE_REDIRECT_START_TALK 59
#define CHORE_REDIRECT_STOP_TALK 60
+#define CHORE_TURN_DIR 61
+#define CHORE_FACE_DIR 62
+#define CHORE_STOP 63
enum {
V12_X_MULTIPLIER = 8,
More information about the Scummvm-git-logs
mailing list