aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/engine
diff options
context:
space:
mode:
authorWalter van Niftrik2009-05-19 02:10:58 +0000
committerWalter van Niftrik2009-05-19 02:10:58 +0000
commitdf3357159c2262ddeb70bea241364df5bf929418 (patch)
tree166d5368ff85448b1c191c219df6b4fef42472da /engines/sci/engine
parent789cb98492a46494690414ceac38c3bf62f47326 (diff)
downloadscummvm-rg350-df3357159c2262ddeb70bea241364df5bf929418.tar.gz
scummvm-rg350-df3357159c2262ddeb70bea241364df5bf929418.tar.bz2
scummvm-rg350-df3357159c2262ddeb70bea241364df5bf929418.zip
SCI: Added some stubs for LSL6CD (lores).
svn-id: r40719
Diffstat (limited to 'engines/sci/engine')
-rw-r--r--engines/sci/engine/kernel.cpp6
-rw-r--r--engines/sci/engine/kernel.h2
-rw-r--r--engines/sci/engine/kscripts.cpp23
-rw-r--r--engines/sci/engine/kstring.cpp6
4 files changed, 35 insertions, 2 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index 53be31b2a3..2d6c63d413 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -203,6 +203,8 @@ SciKernelFunction kfunct_mappers[] = {
DEFUN("Message", kMessage, ".*"),
DEFUN("DoAudio", kDoAudio, ".*"),
DEFUN("DoSync", kDoSync, ".*"),
+ DEFUN("ResCheck", kResCheck, "iii*"),
+ DEFUN("SetQuitStr", kSetQuitStr, "r"),
// Special and NOP stuff
{KF_NEW, NULL, k_Unknown, NULL},
@@ -763,12 +765,12 @@ static void *_kernel_dereference_pointer(EngineState *s, reg_t pointer, int entr
void *retval = s->seg_manager->dereference(pointer, &maxsize);
if (pointer.offset & (align - 1)) {
- error("Unaligned pointer read: "PREG" expected with %d alignment!\n", PRINT_REG(pointer), align);
+ warning("Unaligned pointer read: "PREG" expected with %d alignment", PRINT_REG(pointer), align);
return NULL;
}
if (entries > maxsize) {
- error("Trying to dereference pointer "PREG" beyond end of segment!\n", PRINT_REG(pointer));
+ warning("Trying to dereference pointer "PREG" beyond end of segment", PRINT_REG(pointer));
return NULL;
}
return retval;
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index cb5fa36be1..65d79a5da4 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -446,6 +446,8 @@ reg_t kIsItSkip(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kDoAudio(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t kDoSync(EngineState *s, int funct_nr, int argc, reg_t *argv);
+reg_t kResCheck(EngineState *s, int funct_nr, int argc, reg_t *argv);
+reg_t kSetQuitStr(EngineState *s, int funct_nr, int argc, reg_t *argv);
reg_t k_Unknown(EngineState *s, int funct_nr, int argc, reg_t *argv);
// The Unknown/Unnamed kernel function
diff --git a/engines/sci/engine/kscripts.cpp b/engines/sci/engine/kscripts.cpp
index f0de8e6a5f..1c8e5ccdac 100644
--- a/engines/sci/engine/kscripts.cpp
+++ b/engines/sci/engine/kscripts.cpp
@@ -154,6 +154,29 @@ reg_t kUnLoad(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return s->r_acc;
}
+reg_t kResCheck(EngineState *s, int funct_nr, int argc, reg_t *argv) {
+ ResourceType restype = (ResourceType)(UKPV(0) & 0x7f);
+
+ switch (restype) {
+ case kResourceTypeAudio36:
+ case kResourceTypeSync36: {
+ assert(argc >= 6);
+
+ uint module = UKPV(1);
+ uint noun = UKPV(2);
+ uint verb = UKPV(3);
+ uint cond = UKPV(4);
+ uint seq = UKPV(5);
+ warning("ResCheck: checking for currently unsupported %s resource: module %i; tuple (%i, %i, %i, %i)",
+ getResourceTypeName(restype), module, noun, verb, cond, seq);
+ return NULL_REG;
+ }
+ default:
+ Resource *res = s->resmgr->testResource(restype, UKPV(1));
+ return make_reg(0, res != NULL);
+ }
+}
+
reg_t kClone(EngineState *s, int funct_nr, int argc, reg_t *argv) {
reg_t parent_addr = argv[0];
Object *parent_obj = obj_get(s, parent_addr);
diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp
index b2e9ebf893..a4fdbc4652 100644
--- a/engines/sci/engine/kstring.cpp
+++ b/engines/sci/engine/kstring.cpp
@@ -803,4 +803,10 @@ reg_t kMessage(EngineState *s, int funct_nr, int argc, reg_t *argv) {
return NULL_REG;
}
+reg_t kSetQuitStr(EngineState *s, int funct_nr, int argc, reg_t *argv) {
+ char *quitStr = kernel_dereference_char_pointer(s, argv[0], 0);
+ debug("Setting quit string to '%s'", quitStr);
+ return s->r_acc;
+}
+
} // End of namespace Sci