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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Jun 16 23:56:39 CEST 2010


Revision: 49909
          http://scummvm.svn.sourceforge.net/scummvm/?rev=49909&view=rev
Author:   thebluegr
Date:     2010-06-16 21:56:39 +0000 (Wed, 16 Jun 2010)

Log Message:
-----------
Implemented the SCI2.1 kMulDiv kernel function. Walking in Torin's Passage is done correctly now, without leaving trails

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kernel.cpp
    scummvm/trunk/engines/sci/engine/kernel.h
    scummvm/trunk/engines/sci/engine/kernel32.cpp

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2010-06-16 21:44:33 UTC (rev 49908)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2010-06-16 21:56:39 UTC (rev 49909)
@@ -387,6 +387,7 @@
 	{ "List", kList, ".*" },
 	{ "Robot", kRobot, ".*" },
 	{ "IsOnMe", kIsOnMe, "iio.*" },
+	{ "MulDiv", kMulDiv, "iii" },
 
 #endif
 

Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h	2010-06-16 21:44:33 UTC (rev 49908)
+++ scummvm/trunk/engines/sci/engine/kernel.h	2010-06-16 21:56:39 UTC (rev 49909)
@@ -413,6 +413,7 @@
 reg_t kArray(EngineState *s, int argc, reg_t *argv);
 reg_t kListAt(EngineState *s, int argc, reg_t *argv);
 reg_t kString(EngineState *s, int argc, reg_t *argv);
+reg_t kMulDiv(EngineState *s, int argc, reg_t *argv);
 // "Screen items" in SCI32 are views
 reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv);
 reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv);

Modified: scummvm/trunk/engines/sci/engine/kernel32.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel32.cpp	2010-06-16 21:44:33 UTC (rev 49908)
+++ scummvm/trunk/engines/sci/engine/kernel32.cpp	2010-06-16 21:56:39 UTC (rev 49909)
@@ -879,6 +879,14 @@
 	return NULL_REG;
 }
 
+reg_t kMulDiv(EngineState *s, int argc, reg_t *argv) {
+	int16 multiplicant = argv[0].toSint16();
+	int16 multiplier = argv[1].toSint16();
+	int16 denominator = argv[2].toSint16();
+
+	return make_reg(0, multiplicant * multiplier / denominator);
+}
+
 } // End of namespace Sci
 
 #endif	// ENABLE_SCI32


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