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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Thu Dec 24 14:50:51 CET 2009


Revision: 46527
          http://scummvm.svn.sourceforge.net/scummvm/?rev=46527&view=rev
Author:   thebluegr
Date:     2009-12-24 13:50:50 +0000 (Thu, 24 Dec 2009)

Log Message:
-----------
SCI32: The view related functions pass a view object as parameter, and the engine should deduce the parameters it needs from that object. Added stub view functions based on that fact. Also, added a sanity check in kCelHigh and kCelWide

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

Modified: scummvm/trunk/engines/sci/engine/kernel.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.cpp	2009-12-24 13:20:23 UTC (rev 46526)
+++ scummvm/trunk/engines/sci/engine/kernel.cpp	2009-12-24 13:50:50 UTC (rev 46527)
@@ -342,7 +342,10 @@
 	DEFUN("IsHiRes", kIsHiRes, ""),
 	DEFUN("Array", kArray, ".*"),
 	DEFUN("String", kString, ".*"),
-	
+	DEFUN("AddScreenItem", kAddScreenItem, "o"),
+	DEFUN("UpdateScreenItem", kUpdateScreenItem, "o"),
+	DEFUN("DeleteScreenItem", kDeleteScreenItem, "o"),
+
 	// SCI2.1 Kernel Functions
 	DEFUN("Save", kSave, ".*"),
 #endif

Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h	2009-12-24 13:20:23 UTC (rev 46526)
+++ scummvm/trunk/engines/sci/engine/kernel.h	2009-12-24 13:50:50 UTC (rev 46527)
@@ -395,6 +395,9 @@
 reg_t kIsHiRes(EngineState *s, int argc, reg_t *argv);
 reg_t kArray(EngineState *s, int argc, reg_t *argv);
 reg_t kString(EngineState *s, int argc, reg_t *argv);
+reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv);
+reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv);
+reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv);
 
 // SCI2.1 Kernel Functions
 reg_t kSave(EngineState *s, int argc, reg_t *argv);

Modified: scummvm/trunk/engines/sci/engine/kernel32.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel32.cpp	2009-12-24 13:20:23 UTC (rev 46526)
+++ scummvm/trunk/engines/sci/engine/kernel32.cpp	2009-12-24 13:50:50 UTC (rev 46527)
@@ -589,6 +589,46 @@
 	return NULL_REG;
 }
 
+reg_t kAddScreenItem(EngineState *s, int argc, reg_t *argv) {
+	reg_t viewObj = argv[0];
+	int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
+	int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
+	int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
+	//int16 leftPos = 0;
+	//int16 topPos = 0;
+	int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
+	//int16 control = 0;
+	warning("kAddScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
+	//s->_gui->addToPicView(viewId, loopNo, celNo, leftPos, topPos, priority, control);
+	return NULL_REG;
+}
+
+reg_t kUpdateScreenItem(EngineState *s, int argc, reg_t *argv) {
+	reg_t viewObj = argv[0];
+	int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
+	int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
+	int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
+	//int16 leftPos = 0;
+	//int16 topPos = 0;
+	int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
+	//int16 control = 0;
+	warning("kUpdateScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
+	return NULL_REG;
+}
+
+reg_t kDeleteScreenItem(EngineState *s, int argc, reg_t *argv) {
+	reg_t viewObj = argv[0];
+	int16 viewId = GET_SEL32V(s->_segMan, viewObj, view);
+	int16 loopNo = GET_SEL32V(s->_segMan, viewObj, loop);
+	int16 celNo = GET_SEL32V(s->_segMan, viewObj, cel);
+	//int16 leftPos = 0;
+	//int16 topPos = 0;
+	int16 priority = GET_SEL32V(s->_segMan, viewObj, priority);
+	//int16 control = 0;
+	warning("kDeleteScreenItem, view %d, loop %d, cel %d, pri %d", viewId, loopNo, celNo, priority);
+	return NULL_REG;
+}
+
 } // End of namespace Sci
 
 #endif	// ENABLE_SCI32

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-12-24 13:20:23 UTC (rev 46526)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2009-12-24 13:50:50 UTC (rev 46527)
@@ -403,6 +403,8 @@
 
 reg_t kCelHigh(EngineState *s, int argc, reg_t *argv) {
 	GuiResourceId viewId = argv[0].toSint16();
+	if (viewId == -1)	// Happens in SCI32
+		return NULL_REG;
 	int16 loopNo = argv[1].toSint16();
 	int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
 
@@ -411,6 +413,8 @@
 
 reg_t kCelWide(EngineState *s, int argc, reg_t *argv) {
 	GuiResourceId viewId = argv[0].toSint16();
+	if (viewId == -1)	// Happens in SCI32
+		return NULL_REG;
 	int16 loopNo = argv[1].toSint16();
 	int16 celNo = (argc >= 3) ? argv[2].toSint16() : 0;
 


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