diff options
author | Filippos Karapetis | 2011-01-07 00:12:18 +0000 |
---|---|---|
committer | Filippos Karapetis | 2011-01-07 00:12:18 +0000 |
commit | 1796e7afdd5f276757e847f17ca3611d1f4be23e (patch) | |
tree | a612838904845875ee7ab89e6d0a9ee2380b6db1 /engines/sci/engine | |
parent | 49f965a547ddb4b71c2abc29d50592dabdb21447 (diff) | |
download | scummvm-rg350-1796e7afdd5f276757e847f17ca3611d1f4be23e.tar.gz scummvm-rg350-1796e7afdd5f276757e847f17ca3611d1f4be23e.tar.bz2 scummvm-rg350-1796e7afdd5f276757e847f17ca3611d1f4be23e.zip |
SCI2.1: Kernel function changes (after looking through all of the SCI2.1 games)
- Replaced the stub kWinDLL (unused), as well as the not fully implemented kPrintDebug
functions with empty function calls
- Marked several unused or debug kernel functions as stub
- Added some games where the rest of the unimplemented SCI2.1 kernel functions are used
svn-id: r55138
Diffstat (limited to 'engines/sci/engine')
-rw-r--r-- | engines/sci/engine/kernel.h | 2 | ||||
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 81 | ||||
-rw-r--r-- | engines/sci/engine/kmisc.cpp | 12 | ||||
-rw-r--r-- | engines/sci/engine/kstring.cpp | 14 |
4 files changed, 43 insertions, 66 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 58a6181082..67b98cce9e 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -468,8 +468,6 @@ reg_t kMoveToFront(EngineState *s, int argc, reg_t *argv); reg_t kMoveToEnd(EngineState *s, int argc, reg_t *argv); reg_t kGetWindowsOption(EngineState *s, int argc, reg_t *argv); reg_t kWinHelp(EngineState *s, int argc, reg_t *argv); -reg_t kWinDLL(EngineState *s, int argc, reg_t *argv); -reg_t kPrintDebug(EngineState *s, int argc, reg_t *argv); reg_t kGetConfig(EngineState *s, int argc, reg_t *argv); #endif diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 99c1e079df..2760d08be8 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -510,7 +510,7 @@ static SciKernelMapEntry s_kernelMap[] = { // memory") are available. We have our own memory manager and garbage collector, thus we ignore this call. { MAP_EMPTY(Purge), SIG_EVERYWHERE, "i", NULL, NULL }, - // Unused SCI2 unused functions, always mapped to kDummy + // Unused / debug SCI2 unused functions, always mapped to kDummy { MAP_DUMMY(InspectObject), SIG_EVERYWHERE, "(.*)", NULL, NULL }, // Profiler (same as SCI0-SCI1.1) // Record (same as SCI0-SCI1.1) @@ -541,50 +541,55 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(AddPicAt), SIG_EVERYWHERE, "oiii", NULL, NULL }, { MAP_CALL(GetWindowsOption), SIG_EVERYWHERE, "i", NULL, NULL }, { MAP_CALL(WinHelp), SIG_EVERYWHERE, "(.*)", NULL, NULL }, - { MAP_CALL(WinDLL), SIG_EVERYWHERE, "(.*)", NULL, NULL }, { MAP_CALL(GetConfig), SIG_EVERYWHERE, "ro", NULL, NULL }, -// Commented out because it needs to be implemented in full generality in Shivers/Full. -// Since it is not essential to game play, removing it also works. -// -// { MAP_CALL(PrintDebug), SIG_EVERYWHERE, "ri", NULL, NULL }, - // SCI2.1 unmapped functions - TODO! - // SetLanguage - // FindSelector - // FindClass - // CelRect - // BaseLineSpan - // CelInfo - // Bitmap - // CelLink - // MovePlaneItems - // Font - // ScrollWindow - // AddLine - // DeleteLine - // UpdateLine - // AddPolygon - // DeletePolygon - // UpdatePolygon - // GetConfig - // Table - // LoadChunk - // SetPalStyleRange - // NewRoom - // Priority - // MorphOn - // SetHotRectangles - // DeletePic + // SCI2.1 Empty Functions - // SCI2.1 empty functions + // Debug function, used in of Shivers (demo and full). It's marked as a + // stub in the original interpreters, but it gets called by the game scripts. + // Usually, it gets called with a string (which is the output format) and a + // variable number of parameters + { MAP_EMPTY(PrintDebug), SIG_EVERYWHERE, "(.*)", NULL, NULL }, // SetWindowsOption is used to set Windows specific options, like for example the title bar visibility of // the game window in Phantasmagoria 2. We ignore these settings completely. { MAP_EMPTY(SetWindowsOption), SIG_EVERYWHERE, "ii", NULL, NULL }, - // Unused SCI2.1 unused functions, always mapped to kDummy - { MAP_DUMMY(GetSierraProfileInt), SIG_EVERYWHERE, "(.*)", NULL, NULL }, - { MAP_DUMMY(GetSierraProfileString), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + // Unused / debug SCI2.1 unused functions, always mapped to kDummy + // The debug functions are called from the inbuilt debugger or polygon + // editor in SCI2.1 games. Related objects are: PEditor, EditablePolygon, + // aeDisplayClass and scalerCode + { MAP_DUMMY(FindSelector), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(FindClass), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(CelRect), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(BaseLineSpan), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(CelLink), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(UpdateLine), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(AddPolygon), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(DeletePolygon), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(UpdatePolygon), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(Table), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(LoadChunk), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(Priority), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(WinDLL), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(DeletePic), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(GetSierraProfileInt), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { MAP_DUMMY(GetSierraProfileString), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + + // SCI2.1 unmapped functions - TODO! + // SetLanguage - used by MUMG Deluxe from the main menu to switch languages + // CelInfo - used by Shivers 1 + // Bitmap + // MovePlaneItems - used by SQ6 + // Font + // ScrollWindow - used by Phantasmagoria 1 and SQ6 + // AddLine - used by Torin's Passage to highlight the chapter buttons + // DeleteLine - used by Torin's Passage to delete the highlight from the chapter buttons + // GetConfig - used by Phantasmagoria 1 + // SetPalStyleRange + // NewRoom + // MorphOn - used by SQ6 + // SetHotRectangles - used by Phantasmagoria 1 #endif { NULL, NULL, SIG_EVERYWHERE, NULL, NULL, NULL } @@ -1037,7 +1042,7 @@ static const char *sci21_default_knames[] = { /*0x80*/ "Dummy", /*0x81*/ "Dummy", /*0x82*/ "Dummy", - /*0x83*/ "PrintDebug", // used by Shivers 2 (demo and full) + /*0x83*/ "PrintDebug", // debug function, used by Shivers 2 (demo and full) /*0x84*/ "Dummy", /*0x85*/ "Dummy", /*0x86*/ "Dummy", diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp index 609b80bce8..60a2fea481 100644 --- a/engines/sci/engine/kmisc.cpp +++ b/engines/sci/engine/kmisc.cpp @@ -420,18 +420,6 @@ reg_t kPlatform(EngineState *s, int argc, reg_t *argv) { return NULL_REG; } -#ifdef ENABLE_SCI32 -reg_t kWinDLL(EngineState *s, int argc, reg_t *argv) { - kStub(s, argc, argv); - - // TODO: This seems to be loading and calling Windows DLLs. We'll probably - // need to either ignore calls made here, or wire each call for each game - // that requests it by hand - - error("kWinDLL called"); -} -#endif - reg_t kEmpty(EngineState *s, int argc, reg_t *argv) { // Placeholder for empty kernel functions which are still called from the // engine scripts (like the empty kSetSynonyms function in SCI1.1). This diff --git a/engines/sci/engine/kstring.cpp b/engines/sci/engine/kstring.cpp index 6a2c273d51..5c6ef06910 100644 --- a/engines/sci/engine/kstring.cpp +++ b/engines/sci/engine/kstring.cpp @@ -804,20 +804,6 @@ reg_t kString(EngineState *s, int argc, reg_t *argv) { return NULL_REG; } -/** - * Debug function, used in the demo of Shivers. It's marked as a stub - * in the original interpreter, but it gets called by the game scripts. - */ -reg_t kPrintDebug(EngineState *s, int argc, reg_t *argv) { - Common::String debugTemplate = s->_segMan->getString(argv[0]); - char debugString[500]; - - sprintf(debugString, debugTemplate.c_str(), argv[1].toUint16()); - debugC(kDebugLevelScripts, "kPrintDebug: \"%s\"\n", debugString); - - return s->r_acc; -} - #endif } // End of namespace Sci |