aboutsummaryrefslogtreecommitdiff
path: root/engines/tinsel/tinsel.cpp
diff options
context:
space:
mode:
authorFabio Battaglia2009-05-31 14:41:54 +0000
committerFabio Battaglia2009-05-31 14:41:54 +0000
commitbe224386484793c519840cff0b752e9fd2a430b1 (patch)
tree4960393156b45f737be4525e5c6b8dc492e35b57 /engines/tinsel/tinsel.cpp
parent11a5875aa8da7868fe3d83b6be0c023550fd3628 (diff)
downloadscummvm-rg350-be224386484793c519840cff0b752e9fd2a430b1.tar.gz
scummvm-rg350-be224386484793c519840cff0b752e9fd2a430b1.tar.bz2
scummvm-rg350-be224386484793c519840cff0b752e9fd2a430b1.zip
tinsel: workaround for "missing red dragon in Act IV" bug in Discworld PSX
svn-id: r41068
Diffstat (limited to 'engines/tinsel/tinsel.cpp')
-rw-r--r--engines/tinsel/tinsel.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/engines/tinsel/tinsel.cpp b/engines/tinsel/tinsel.cpp
index cdd6f1ffb7..47602b5862 100644
--- a/engines/tinsel/tinsel.cpp
+++ b/engines/tinsel/tinsel.cpp
@@ -521,6 +521,19 @@ void SetNewScene(SCNHANDLE scene, int entrance, int transition) {
HookScene.scene = 0;
}
+
+ // Workaround for "Missing Red Dragon in square" bug in Discworld 1 PSX, act IV.
+ // This happens with the original interpreter on PSX too: the red dragon in Act IV
+ // doesn't show up inside the square at the right time. Original game required the
+ // player to go in and out the square until the dragon appears (wasting hours).
+ // I'm forcing the load of the right scene by checking that the player has (or has not) the
+ // right items: player must have Mambo the swamp dragon, and mustn't have fireworks (used on
+ // the swamp dragon previously to "load it up").
+ if (TinselV1PSX && NextScene.scene == 0x1800000 && NextScene.entry == 2) {
+ if ((IsInInventory(261, INV_1) || IsInInventory(261, INV_2)) &&
+ (!IsInInventory(232, INV_1) && !IsInInventory(232, INV_2)))
+ NextScene.entry = 1;
+ }
}
/**
@@ -672,7 +685,7 @@ bool ChangeScene(bool bReset) {
} else if (--CountOut == 0) {
if (!TinselV2)
ClearScreen();
-
+
StartNewScene(NextScene.scene, NextScene.entry);
NextScene.scene = 0;