[Scummvm-cvs-logs] SF.net SVN: scummvm:[43093] scummvm/trunk/engines/tinsel/pcode.cpp
dreammaster at users.sourceforge.net
dreammaster at users.sourceforge.net
Fri Aug 7 11:25:07 CEST 2009
Revision: 43093
http://scummvm.svn.sourceforge.net/scummvm/?rev=43093&view=rev
Author: dreammaster
Date: 2009-08-07 09:25:06 +0000 (Fri, 07 Aug 2009)
Log Message:
-----------
Bugfix for #2831159 - Palace guards saying !!HIGH STRING!!
Modified Paths:
--------------
scummvm/trunk/engines/tinsel/pcode.cpp
Modified: scummvm/trunk/engines/tinsel/pcode.cpp
===================================================================
--- scummvm/trunk/engines/tinsel/pcode.cpp 2009-08-07 06:43:12 UTC (rev 43092)
+++ scummvm/trunk/engines/tinsel/pcode.cpp 2009-08-07 09:25:06 UTC (rev 43093)
@@ -120,6 +120,12 @@
const int fragment2_size = 2;
const byte fragment3[] = {OP_ZERO, OP_GSTORE | OPSIZE16, 490 % 256, 490 / 256};
const int fragment3_size = 4;
+const byte fragment4[] = {OP_IMM | OPSIZE16, 900 % 256, 900 / 256, OP_JUMP, 466 % 256, 466 / 256};
+const int fragment4_size = 6;
+const byte fragment5[] = {OP_IMM | OPSIZE16, 901 % 256, 901 / 256, OP_JUMP, 488 % 256, 488 / 256};
+const int fragment5_size = 6;
+const byte fragment6[] = {OP_IMM | OPSIZE16, 903 % 256, 903 / 256, OP_JUMP, 516 % 256, 516 / 256};
+const int fragment6_size = 6;
const WorkaroundEntry workaroundList[] = {
// DW1-SCN: Global 206 is whether Rincewind is trying to take the book back to the present.
@@ -135,6 +141,12 @@
// Present Outside Inn
{TINSEL_V1, false, 352600876, 0, fragment2_size, fragment2},
+ // DW1-GRA: Talking to palace guards in Act 2 gives !!!HIGH STRING||| - this happens if you initiate dialog
+ // with one of the guards, but not the other. So this fix routes the talk parameters of the broken one
+ {TINSEL_V1, false, 310506872, 463, fragment4_size, fragment4},
+ {TINSEL_V1, false, 310506872, 485, fragment5_size, fragment5},
+ {TINSEL_V1, false, 310506872, 513, fragment6_size, fragment6},
+
// DW2: In the garden, global #490 is set when the bees begin their 'out of hive' animation, and reset when done.
// But if the game is saved/restored during it, the animation sequence is reset without the global being cleared.
// This causes bugs in several actions which try to disable the bees animation, since they wait indefinitely for
@@ -636,6 +648,7 @@
case OP_JUMP: // unconditional jump
ip = Fetch(opcode, ic->code, wkEntry, ip);
+ wkEntry = NULL; // In case a jump occurs from a workaround
break;
case OP_JMPFALSE: // conditional jump
@@ -644,6 +657,7 @@
if (ic->stack[ic->sp--] == 0) {
// condition satisfied - do the jump
ip = tmp;
+ wkEntry = NULL; // In case a jump occurs from a workaround
}
break;
@@ -653,6 +667,7 @@
if (ic->stack[ic->sp--] != 0) {
// condition satisfied - do the jump
ip = tmp;
+ wkEntry = NULL; // In case a jump occurs from a workaround
}
break;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list