[Scummvm-cvs-logs] SF.net SVN: scummvm:[51383] scummvm/trunk/engines/sci/engine

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Tue Jul 27 20:45:33 CEST 2010


Revision: 51383
          http://scummvm.svn.sourceforge.net/scummvm/?rev=51383&view=rev
Author:   m_kiewitz
Date:     2010-07-27 18:45:32 +0000 (Tue, 27 Jul 2010)

Log Message:
-----------
SCI: kCheckFreeSpace support for sci1.1

and possible sci32

Modified Paths:
--------------
    scummvm/trunk/engines/sci/engine/kernel_tables.h
    scummvm/trunk/engines/sci/engine/kfile.cpp

Modified: scummvm/trunk/engines/sci/engine/kernel_tables.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel_tables.h	2010-07-27 18:17:47 UTC (rev 51382)
+++ scummvm/trunk/engines/sci/engine/kernel_tables.h	2010-07-27 18:45:32 UTC (rev 51383)
@@ -312,6 +312,7 @@
     { MAP_CALL(CelHigh),           SIG_EVERYWHERE,           "ii(i)",                 NULL,            NULL },
     { MAP_CALL(CelWide),           SIG_EVERYWHERE,           "ii(i)",                 NULL,            NULL },
     { MAP_CALL(CheckFreeSpace),    SIG_SCI32, SIGFOR_ALL,    "r.*",                   NULL,            NULL },
+    { MAP_CALL(CheckFreeSpace),    SIG_SCI11, SIGFOR_ALL,    "ri",                    NULL,            NULL },
     { MAP_CALL(CheckFreeSpace),    SIG_EVERYWHERE,           "r",                     NULL,            NULL },
     { MAP_CALL(CheckSaveGame),     SIG_EVERYWHERE,           ".*",                    NULL,            NULL },
     { MAP_CALL(Clone),             SIG_EVERYWHERE,           "o",                     NULL,            NULL },

Modified: scummvm/trunk/engines/sci/engine/kfile.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kfile.cpp	2010-07-27 18:17:47 UTC (rev 51382)
+++ scummvm/trunk/engines/sci/engine/kfile.cpp	2010-07-27 18:45:32 UTC (rev 51383)
@@ -365,12 +365,26 @@
 }
 
 reg_t kCheckFreeSpace(EngineState *s, int argc, reg_t *argv) {
-#ifdef ENABLE_SCI32
-	// TODO: SCI32 uses a parameter here.
-	if (argc > 1)
-		warning("kCheckFreeSpace called with %d parameter(s): %04x:%04x", argc, PRINT_REG(argv[1]));
-#endif
+	if (argc > 1) {
+		// SCI1.1/SCI32
+		// TODO: don't know if those are right for SCI32 as well
+		// Please note that sierra sci supported both calls either w/ or w/o opcode in SCI1.1
+		switch (argv[1].toUint16()) {
+		case 0: // return saved game size
+			return make_reg(0, 0); // we return 0
 
+		case 1: // return free harddisc space (shifted right somehow)
+			return make_reg(0, 0x7fff); // we return maximum
+
+		case 2: // same as call w/o opcode
+			break;
+			return make_reg(0, 1);
+
+		default:
+			error("kCheckFreeSpace: called with unknown sub-op %d", argv[1].toUint16());
+		}
+	}
+
 	Common::String path = s->_segMan->getString(argv[0]);
 
 	debug(3, "kCheckFreeSpace(%s)", path.c_str());


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list