diff options
author | Fabio Battaglia | 2009-05-25 11:01:33 +0000 |
---|---|---|
committer | Fabio Battaglia | 2009-05-25 11:01:33 +0000 |
commit | ffcf4173f3d0e079f458f140fdb241b347a93af6 (patch) | |
tree | cecf61a78d460414f87a1dbbf708454978f1e152 | |
parent | 409c5e0a7eaf8cbca35ca4516e744ab17f237522 (diff) | |
download | scummvm-rg350-ffcf4173f3d0e079f458f140fdb241b347a93af6.tar.gz scummvm-rg350-ffcf4173f3d0e079f458f140fdb241b347a93af6.tar.bz2 scummvm-rg350-ffcf4173f3d0e079f458f140fdb241b347a93af6.zip |
tinsel: add PSX specific code to workaround the thief bug in past ankh-morpork, i still have to give a better look at this though
svn-id: r40882
-rw-r--r-- | engines/tinsel/play.cpp | 10 | ||||
-rw-r--r-- | engines/tinsel/tinlib.cpp | 6 |
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); |