aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorFilippos Karapetis2011-01-07 00:12:18 +0000
committerFilippos Karapetis2011-01-07 00:12:18 +0000
commit1796e7afdd5f276757e847f17ca3611d1f4be23e (patch)
treea612838904845875ee7ab89e6d0a9ee2380b6db1 /engines
parent49f965a547ddb4b71c2abc29d50592dabdb21447 (diff)
downloadscummvm-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')
-rw-r--r--engines/sci/engine/kernel.h2
-rw-r--r--engines/sci/engine/kernel_tables.h81
-rw-r--r--engines/sci/engine/kmisc.cpp12
-rw-r--r--engines/sci/engine/kstring.cpp14
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