From d49526782928a39bea63c5871700190ea13a6170 Mon Sep 17 00:00:00 2001 From: Colin Snover Date: Thu, 12 Jan 2017 19:19:57 -0600 Subject: SCI32: Fix loading save games in KQ7 1.51 --- engines/sci/engine/kernel_tables.h | 4 ++-- engines/sci/engine/kfile.cpp | 5 +++-- 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()); } -- cgit v1.2.3