aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorColin Snover2017-01-12 19:19:57 -0600
committerColin Snover2017-01-16 12:16:12 -0600
commitd49526782928a39bea63c5871700190ea13a6170 (patch)
tree6c487f2f660382ee71578f399939a4aff3098a4b
parent0e77471467c35f1c1522e16d169a4f927aaa307b (diff)
downloadscummvm-rg350-d49526782928a39bea63c5871700190ea13a6170.tar.gz
scummvm-rg350-d49526782928a39bea63c5871700190ea13a6170.tar.bz2
scummvm-rg350-d49526782928a39bea63c5871700190ea13a6170.zip
SCI32: Fix loading save games in KQ7 1.51
-rw-r--r--engines/sci/engine/kernel_tables.h4
-rw-r--r--engines/sci/engine/kfile.cpp5
2 files changed, 5 insertions, 4 deletions
diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h
index 741f46e02c..589a1f68a3 100644
--- a/engines/sci/engine/kernel_tables.h
+++ b/engines/sci/engine/kernel_tables.h
@@ -930,6 +930,8 @@ static SciKernelMapEntry s_kernelMap[] = {
{ MAP_DUMMY(PointSize), SIG_EVERYWHERE, "(.*)", NULL, NULL },
// SCI2.1 Kernel Functions
+ { "CheckCDisc", kCheckCD, SIG_SCI21EARLY, SIGFOR_ALL, "(i)", NULL, NULL },
+ { "GetSaveCDisc", kGetSavedCD, SIG_SCI21EARLY, SIGFOR_ALL, "", NULL, NULL },
{ MAP_CALL(CD), SIG_SINCE_SCI21MID, SIGFOR_ALL, "(.*)", kCD_subops, NULL },
{ MAP_CALL(IsOnMe), SIG_EVERYWHERE, "iioi", NULL, NULL },
{ MAP_CALL(List), SIG_SINCE_SCI21, SIGFOR_ALL, "(.*)", kList_subops, NULL },
@@ -993,8 +995,6 @@ static SciKernelMapEntry s_kernelMap[] = {
// Unused / debug functions in the in-between SCI2.1 interpreters
{ MAP_DUMMY(PreloadResource), SIG_EVERYWHERE, "(.*)", NULL, NULL },
- { MAP_DUMMY(CheckCDisc), SIG_EVERYWHERE, "(.*)", NULL, NULL },
- { MAP_DUMMY(GetSaveCDisc), SIG_EVERYWHERE, "(.*)", NULL, NULL },
{ MAP_DUMMY(TestPoly), SIG_EVERYWHERE, "(.*)", NULL, NULL },
// Used by Phantasmagoria 1, script 64981 (used in the chase scene)
diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 7bc3c2d212..49ad4caedb 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -220,8 +220,9 @@ reg_t kCheckCD(EngineState *s, int argc, reg_t *argv) {
}
reg_t kGetSavedCD(EngineState *s, int argc, reg_t *argv) {
- // TODO: This is wrong, CD number needs to be available prior to
- // the save game being loaded
+ // Normally this code would read the CD number from the currently loaded
+ // save game file, but since we don't have one of those, just return the
+ // disc number from the resource manager
return make_reg(0, g_sci->getResMan()->getCurrentDiscNo());
}