diff options
-rw-r--r-- | engines/sci/engine/kernel.h | 1 | ||||
-rw-r--r-- | engines/sci/engine/kernel_tables.h | 39 | ||||
-rw-r--r-- | engines/sci/engine/ksound.cpp | 17 |
3 files changed, 40 insertions, 17 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 2006585c41..8510e68bc2 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -470,6 +470,7 @@ reg_t kGetWindowsOption(EngineState *s, int argc, reg_t *argv); reg_t kWinHelp(EngineState *s, int argc, reg_t *argv); reg_t kGetConfig(EngineState *s, int argc, reg_t *argv); reg_t kCelInfo(EngineState *s, int argc, reg_t *argv); +reg_t kSetLanguage(EngineState *s, int argc, reg_t *argv); #endif reg_t kDoSoundInit(EngineState *s, int argc, reg_t *argv); diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index 97a376afa0..d22c7349d5 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -545,6 +545,7 @@ static SciKernelMapEntry s_kernelMap[] = { { MAP_CALL(WinHelp), SIG_EVERYWHERE, "(.*)", NULL, NULL }, { MAP_CALL(GetConfig), SIG_EVERYWHERE, "ro", NULL, NULL }, { MAP_CALL(CelInfo), SIG_EVERYWHERE, "iiiiii", NULL, NULL }, + { MAP_CALL(SetLanguage), SIG_EVERYWHERE, "r", NULL, NULL }, // SCI2.1 Empty Functions @@ -556,29 +557,34 @@ static SciKernelMapEntry s_kernelMap[] = { // 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 }, + { MAP_EMPTY(SetWindowsOption), SIG_EVERYWHERE, "ii", NULL, NULL }, + + // Used by the Windows version of Phantasmagoria 1 to get the video speed setting. This is called after + // kGetConfig and overrides the setting obtained by it. It is a dummy function in the DOS Version. We can + // just use GetConfig and mark this one as empty, like the DOS version does. + { MAP_EMPTY(GetSierraProfileInt), 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(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(GetSierraProfileString), SIG_EVERYWHERE, "(.*)", NULL, NULL }, + { 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(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(GetSierraProfileString), SIG_EVERYWHERE, "(.*)", NULL, NULL }, // SCI2.1 unmapped functions - TODO! - // SetLanguage - used by MUMG Deluxe from the main menu to switch languages // Bitmap // MovePlaneItems - used by SQ6 // Font @@ -591,7 +597,6 @@ static SciKernelMapEntry s_kernelMap[] = { // NewRoom // MorphOn - used by SQ6 // SetHotRectangles - used by Phantasmagoria 1 - // GetSierraProfileInt - used by Phantasmagoria 1 #endif { NULL, NULL, SIG_EVERYWHERE, NULL, NULL, NULL } diff --git a/engines/sci/engine/ksound.cpp b/engines/sci/engine/ksound.cpp index 32fe89a487..f6ec60acb6 100644 --- a/engines/sci/engine/ksound.cpp +++ b/engines/sci/engine/ksound.cpp @@ -277,4 +277,21 @@ reg_t kDoSync(EngineState *s, int argc, reg_t *argv) { return s->r_acc; } +#ifdef ENABLE_SCI32 + +reg_t kSetLanguage(EngineState *s, int argc, reg_t *argv) { + // This is used by script 90 of MUMG Deluxe from the main menu to toggle + // the audio language between English and Spanish. + // Basically, it instructs the interpreter to switch the audio resources + // (resource.aud and associated map files) and load them from the "Spanish" + // subdirectory instead. Therefore, this is only needed for the Spanish + // version, and it needs support at the resource manager level. + Common::String languageFolder = s->_segMan->getString(argv[0]); + warning("SetLanguage: set audio resource folder to '%s'", languageFolder.c_str()); + + return s->r_acc; +} + +#endif + } // End of namespace Sci |