diff options
| author | Walter van Niftrik | 2009-05-19 02:10:58 +0000 |
|---|---|---|
| committer | Walter van Niftrik | 2009-05-19 02:10:58 +0000 |
| commit | df3357159c2262ddeb70bea241364df5bf929418 (patch) | |
| tree | 166d5368ff85448b1c191c219df6b4fef42472da /engines/sci/engine | |
| parent | 789cb98492a46494690414ceac38c3bf62f47326 (diff) | |
| download | scummvm-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.cpp | 6 | ||||
| -rw-r--r-- | engines/sci/engine/kernel.h | 2 | ||||
| -rw-r--r-- | engines/sci/engine/kscripts.cpp | 23 | ||||
| -rw-r--r-- | engines/sci/engine/kstring.cpp | 6 |
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 |
