aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2017-01-03 20:19:45 -0600
committerColin Snover2017-03-30 19:46:27 -0500
commit3b34f17fb3f8d4f325fd8f7b10dc3a9325d72b29 (patch)
tree656fae37844c56fea3efad7a787277ab07a854d7
parent766d46153a285794d573d84d237aac3821431a01 (diff)
downloadscummvm-rg350-3b34f17fb3f8d4f325fd8f7b10dc3a9325d72b29.tar.gz
scummvm-rg350-3b34f17fb3f8d4f325fd8f7b10dc3a9325d72b29.tar.bz2
scummvm-rg350-3b34f17fb3f8d4f325fd8f7b10dc3a9325d72b29.zip
SCI32: Add kWebConnect and kWinExec
Used by Phant2.
-rw-r--r--engines/sci/engine/kernel.cpp2
-rw-r--r--engines/sci/engine/kernel.h2
-rw-r--r--engines/sci/engine/kernel_tables.h5
-rw-r--r--engines/sci/engine/kmisc.cpp10
4 files changed, 17 insertions, 2 deletions
diff --git a/engines/sci/engine/kernel.cpp b/engines/sci/engine/kernel.cpp
index d029923d96..60d4ccbf22 100644
--- a/engines/sci/engine/kernel.cpp
+++ b/engines/sci/engine/kernel.cpp
@@ -806,7 +806,7 @@ enum {
kKernelEntriesSci2 = 0x8b,
kKernelEntriesGk2Demo = 0xa0,
kKernelEntriesSci21 = 0x9d,
- kKernelEntriesSci3 = 0xa1
+ kKernelEntriesSci3 = 0xa2
};
#endif
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h
index ebd7d33655..3d337017af 100644
--- a/engines/sci/engine/kernel.h
+++ b/engines/sci/engine/kernel.h
@@ -662,6 +662,8 @@ reg_t kPlayDuckSetFrameOut(EngineState *s, int argc, reg_t *argv);
reg_t kPlayDuckOpen(EngineState *s, int argc, reg_t *argv);
reg_t kPlayDuckClose(EngineState *s, int argc, reg_t *argv);
reg_t kPlayDuckSetVolume(EngineState *s, int argc, reg_t *argv);
+reg_t kWebConnect(EngineState *s, int argc, reg_t *argv);
+reg_t kWinExec(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 95f3197896..46132d3794 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -1018,6 +1018,8 @@ static SciKernelMapEntry s_kernelMap[] = {
// SCI3 Kernel Functions
{ MAP_CALL(PlayDuck), SIG_SCI3, SIGFOR_ALL, "(.*)", kPlayDuck_subops,NULL },
+ { MAP_CALL(WebConnect), SIG_SCI3, SIGFOR_ALL, "(r)", NULL, NULL },
+ { MAP_CALL(WinExec), SIG_SCI3, SIGFOR_ALL, "r", NULL, NULL },
#endif
{ NULL, NULL, SIG_EVERYWHERE, NULL, NULL, NULL }
@@ -1499,7 +1501,8 @@ static const char *const sci21_default_knames[] = {
/*0x9d*/ "Dummy",
/*0x9e*/ "WebConnect",
/*0x9f*/ "Dummy",
- /*0xa0*/ "PlayDuck"
+ /*0xa0*/ "PlayDuck",
+ /*0xa1*/ "WinExec"
};
#endif
diff --git a/engines/sci/engine/kmisc.cpp b/engines/sci/engine/kmisc.cpp
index 9aa03a4760..f0090cf9fb 100644
--- a/engines/sci/engine/kmisc.cpp
+++ b/engines/sci/engine/kmisc.cpp
@@ -643,6 +643,16 @@ reg_t kPlatform32(EngineState *s, int argc, reg_t *argv) {
return make_reg(0, 0);
}
}
+
+reg_t kWebConnect(EngineState *s, int argc, reg_t *argv) {
+ const Common::String baseUrl = "https://web.archive.org/web/1996/";
+ const Common::String gameUrl = argc > 0 ? s->_segMan->getString(argv[0]) : "http://www.sierra.com";
+ return make_reg(0, !g_system->openUrl(baseUrl + gameUrl));
+}
+
+reg_t kWinExec(EngineState *s, int argc, reg_t *argv) {
+ return NULL_REG;
+}
#endif
reg_t kEmpty(EngineState *s, int argc, reg_t *argv) {