SCI: Added some stubs for LSL6CD (lores).
svn-id: r40719
This commit is contained in:
parent
789cb98492
commit
df3357159c
7 changed files with 55 additions and 8 deletions
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -70,19 +70,20 @@ const char *sci_error_types[] = {
|
|||
"SCI version is unsupported"
|
||||
};
|
||||
|
||||
// These are the 18 resource types supported by SCI1
|
||||
// These are the 20 resource types supported by SCI1.1
|
||||
const char *resourceTypeNames[] = {
|
||||
"view", "pic", "script", "text", "sound",
|
||||
"memory", "vocab", "font", "cursor",
|
||||
"patch", "bitmap", "palette", "cdaudio",
|
||||
"audio", "sync", "message", "map", "heap"
|
||||
"audio", "sync", "message", "map", "heap",
|
||||
"audio36", "sync36"
|
||||
};
|
||||
|
||||
const char *resourceTypeSuffixes[] = {
|
||||
"v56", "p56", "scr", "tex", "snd",
|
||||
" ", "voc", "fon", "cur", "pat",
|
||||
"bit", "pal", "cda", "aud", "syn",
|
||||
"msg", "map", "hep"
|
||||
"msg", "map", "hep", "aud", "syn"
|
||||
};
|
||||
|
||||
const char *getResourceTypeName(ResourceType restype) {
|
||||
|
|
|
@ -111,6 +111,8 @@ enum ResourceType {
|
|||
kResourceTypeMessage,
|
||||
kResourceTypeMap,
|
||||
kResourceTypeHeap,
|
||||
kResourceTypeAudio36,
|
||||
kResourceTypeSync36,
|
||||
kResourceTypeInvalid
|
||||
};
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace Sci {
|
|||
// Default kernel name table
|
||||
#define SCI0_KNAMES_WELL_DEFINED 0x6e
|
||||
#define SCI0_KNAMES_DEFAULT_ENTRIES_NR 0x72
|
||||
#define SCI1_KNAMES_DEFAULT_ENTRIES_NR 0x7E
|
||||
#define SCI1_KNAMES_DEFAULT_ENTRIES_NR 0x89
|
||||
|
||||
static const char *sci0_default_knames[SCI0_KNAMES_DEFAULT_ENTRIES_NR] = {
|
||||
/*0x00*/ "Load",
|
||||
|
@ -233,7 +233,7 @@ static const char *sci1_default_knames[SCI1_KNAMES_DEFAULT_ENTRIES_NR] = {
|
|||
/*0x4e*/ "OnControl",
|
||||
/*0x4f*/ "InitBresen",
|
||||
/*0x50*/ "DoBresen",
|
||||
/*0x51*/ SCRIPT_UNKNOWN_FUNCTION_STRING, // DoAvoider is not implemented in SCI1
|
||||
/*0x51*/ "Platform",
|
||||
/*0x52*/ "SetJump",
|
||||
/*0x53*/ "SetDebug",
|
||||
/*0x54*/ "InspectObj",
|
||||
|
@ -277,7 +277,18 @@ static const char *sci1_default_knames[SCI1_KNAMES_DEFAULT_ENTRIES_NR] = {
|
|||
/*0x7a*/ "Lock",
|
||||
/*0x7b*/ "StrSplit",
|
||||
/*0x7c*/ "Message",
|
||||
/*0x7d*/ "IsItSkip"
|
||||
/*0x7d*/ "IsItSkip",
|
||||
/*0x7e*/ "MergePoly",
|
||||
/*0x7f*/ "ResCheck",
|
||||
/*0x80*/ "AssertPalette",
|
||||
/*0x81*/ "TextColors",
|
||||
/*0x82*/ "TextFonts",
|
||||
/*0x83*/ "Record",
|
||||
/*0x84*/ "PlayBack",
|
||||
/*0x85*/ SCRIPT_UNKNOWN_FUNCTION_STRING,
|
||||
/*0x86*/ "SetVideoMode",
|
||||
/*0x87*/ "SetQuitStr",
|
||||
/*0x88*/ "DbugStr"
|
||||
};
|
||||
|
||||
#if 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue