[Scummvm-cvs-logs] SF.net SVN: scummvm:[50262] scummvm/trunk/engines/sci/engine/vm.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Fri Jun 25 14:15:38 CEST 2010


Revision: 50262
          http://scummvm.svn.sourceforge.net/scummvm/?rev=50262&view=rev
Author:   thebluegr
Date:     2010-06-25 12:15:36 +0000 (Fri, 25 Jun 2010)

Log Message:
-----------
Added workarounds for two issues which appear when throwing the water at Orat in SQ1, room 28

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/vm.cpp

Modified: scummvm/trunk/engines/sci/engine/vm.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-25 10:04:31 UTC (rev 50261)
+++ scummvm/trunk/engines/sci/engine/vm.cpp	2010-06-25 12:15:36 UTC (rev 50262)
@@ -931,6 +931,14 @@
 
 		case op_add: // 0x01 (01)
 			r_temp = POP32();
+
+			// Happens in SQ1, room 28, when throwing the water at Orat
+			if (s->r_acc.segment == 0xFFFF) {
+				// WORKAROUND: init uninitialized variable to 0
+				warning("op_add: attempt to write to uninitialized variable");
+				s->r_acc = NULL_REG;
+			}
+
 			if (r_temp.segment || s->r_acc.segment) {
 				reg_t r_ptr = NULL_REG;
 				int offset;
@@ -1051,6 +1059,11 @@
 				if (r_temp.segment != s->r_acc.segment)
 					warning("[VM] Comparing pointers in different segments (%04x:%04x vs. %04x:%04x)", PRINT_REG(r_temp), PRINT_REG(s->r_acc));
 				s->r_acc = make_reg(0, (r_temp.segment == s->r_acc.segment) && r_temp.offset > s->r_acc.offset);
+			} else if (r_temp.segment && !s->r_acc.segment) {
+				// Happens in SQ1, room 28, when throwing the water at Orat
+				// WORKAROUND: return false
+				warning("[VM] op_gt_: comparison between a pointer and a number");
+				s->r_acc = NULL_REG;
 			} else
 				s->r_acc = ACC_ARITHMETIC_L(signed_validate_arithmetic(r_temp) > (int16)/*acc*/);
 			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