aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/tinsel/play.cpp10
-rw-r--r--engines/tinsel/tinlib.cpp6
2 files changed, 16 insertions, 0 deletions
diff --git a/engines/tinsel/play.cpp b/engines/tinsel/play.cpp
index 90709f6d31..f87ed9c334 100644
--- a/engines/tinsel/play.cpp
+++ b/engines/tinsel/play.cpp
@@ -978,6 +978,16 @@ void PlayFilm(CORO_PARAM, SCNHANDLE hFilm, int x, int y, int actorid, bool splay
CORO_BEGIN_CODE(_ctx);
+ // FIXME: (PSX_THIEF_BUG) this fixes a (script?) bug in Discworld PSX:
+ // If the player follows immediately the thief that steals the evocation book
+ // from the "past" unseen university, the stack seems to get loaded with wrong
+ // values and the game crashes when going into past-ankh map, if instead the
+ // player interacts with other objects or goes back to L-space, the past-ankh
+ // map works perfectly.
+ // This is just a workaround.
+ if (TinselV1PSX && hFilm == 4 && actorid == 77)
+ return;
+
pFilm = (const FILM *)LockMem(hFilm);
PPINIT ppi;
diff --git a/engines/tinsel/tinlib.cpp b/engines/tinsel/tinlib.cpp
index 54d678c198..3f65bc6d41 100644
--- a/engines/tinsel/tinlib.cpp
+++ b/engines/tinsel/tinlib.cpp
@@ -3833,6 +3833,12 @@ void Walk(CORO_PARAM, int actor, int x, int y, SCNHANDLE hFilm, int hold, bool i
bool bQuick = hold != 0;
PMOVER pMover = GetMover(actor);
+
+ // FIXME: This is part of the workaround for PSX_THIEF_BUG,
+ // See the other code and description in PlayFilm() (play.cpp)
+ if (TinselV1PSX && actor == 77 && hFilm == 0)
+ return;
+
assert(pMover); // Can't walk a non-moving actor
CORO_BEGIN_CODE(_ctx);