[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