diff options
| author | Filippos Karapetis | 2009-12-24 13:50:50 +0000 | 
|---|---|---|
| committer | Filippos Karapetis | 2009-12-24 13:50:50 +0000 | 
| commit | 69fa167902be5cdd28cd6d1620be7f0c9628c944 (patch) | |
| tree | 6cc4d8b0d55ed7019941a9a589d76d9ca88f7ac7 | |
| parent | f5d8bb1d5e0c9e3d559d263bf7f02ca5a447e978 (diff) | |
| download | scummvm-rg350-69fa167902be5cdd28cd6d1620be7f0c9628c944.tar.gz scummvm-rg350-69fa167902be5cdd28cd6d1620be7f0c9628c944.tar.bz2 scummvm-rg350-69fa167902be5cdd28cd6d1620be7f0c9628c944.zip | |
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
svn-id: r46527
| -rw-r--r-- | engines/sci/engine/kernel.cpp | 5 | ||||
| -rw-r--r-- | engines/sci/engine/kernel.h | 3 | ||||
| -rw-r--r-- | engines/sci/engine/kernel32.cpp | 40 | ||||
| -rw-r--r-- | engines/sci/engine/kgraphics.cpp | 4 | 
4 files changed, 51 insertions, 1 deletions
| diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp index cc15268a59..831f54cd6c 100644 --- a/engines/sci/engine/kernel.cpp +++ b/engines/sci/engine/kernel.cpp @@ -342,7 +342,10 @@ SciKernelFunction kfunct_mappers[] = {  	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 diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 5c78bc7b00..3119df4c62 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -395,6 +395,9 @@ reg_t kTextFonts(EngineState *s, int argc, reg_t *argv);  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); diff --git a/engines/sci/engine/kernel32.cpp b/engines/sci/engine/kernel32.cpp index 5b4f9ccc2d..1a74f1a931 100644 --- a/engines/sci/engine/kernel32.cpp +++ b/engines/sci/engine/kernel32.cpp @@ -589,6 +589,46 @@ reg_t kSave(EngineState *s, int argc, reg_t *argv) {  	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 diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index e5ca2d8fb4..3ed5b405ad 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -403,6 +403,8 @@ reg_t kIsItSkip(EngineState *s, int argc, reg_t *argv) {  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 kCelHigh(EngineState *s, int argc, reg_t *argv) {  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; | 
