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

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Wed Sep 15 17:21:59 CEST 2010


Revision: 52733
          http://scummvm.svn.sourceforge.net/scummvm/?rev=52733&view=rev
Author:   thebluegr
Date:     2010-09-15 15:21:59 +0000 (Wed, 15 Sep 2010)

Log Message:
-----------
SCI: Some very early work on kRemapColors (just comments/observations for now)

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

Modified: scummvm/trunk/engines/sci/engine/kernel.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel.h	2010-09-15 12:14:34 UTC (rev 52732)
+++ scummvm/trunk/engines/sci/engine/kernel.h	2010-09-15 15:21:59 UTC (rev 52733)
@@ -278,7 +278,6 @@
 
 /******************** Kernel functions ********************/
 
-// New kernel functions
 reg_t kStrLen(EngineState *s, int argc, reg_t *argv);
 reg_t kGetFarText(EngineState *s, int argc, reg_t *argv);
 reg_t kReadNumber(EngineState *s, int argc, reg_t *argv);
@@ -420,6 +419,7 @@
 reg_t kTextColors(EngineState *s, int argc, reg_t *argv);
 reg_t kTextFonts(EngineState *s, int argc, reg_t *argv);
 reg_t kShow(EngineState *s, int argc, reg_t *argv);
+reg_t kRemapColors(EngineState *s, int argc, reg_t *argv);
 reg_t kDummy(EngineState *s, int argc, reg_t *argv);
 reg_t kEmpty(EngineState *s, int argc, reg_t *argv);
 reg_t kStub(EngineState *s, int argc, reg_t *argv);

Modified: scummvm/trunk/engines/sci/engine/kernel_tables.h
===================================================================
--- scummvm/trunk/engines/sci/engine/kernel_tables.h	2010-09-15 12:14:34 UTC (rev 52732)
+++ scummvm/trunk/engines/sci/engine/kernel_tables.h	2010-09-15 15:21:59 UTC (rev 52733)
@@ -405,6 +405,7 @@
     { MAP_CALL(PriCoord),          SIG_EVERYWHERE,           "i",                     NULL,            NULL },
     { MAP_CALL(Random),            SIG_EVERYWHERE,           "i(i)(i)",               NULL,            NULL },
     { MAP_CALL(ReadNumber),        SIG_EVERYWHERE,           "r",                     NULL,            NULL },
+	{ MAP_CALL(RemapColors),       SIG_EVERYWHERE,           "i(i)(i)(i)(i)(i)",      NULL,            NULL },
     { MAP_CALL(ResCheck),          SIG_EVERYWHERE,           "ii(iiii)",              NULL,            NULL },
     { MAP_CALL(RespondsTo),        SIG_EVERYWHERE,           ".i",                    NULL,            NULL },
     { MAP_CALL(RestartGame),       SIG_EVERYWHERE,           "",                      NULL,            NULL },

Modified: scummvm/trunk/engines/sci/engine/kgraphics.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-09-15 12:14:34 UTC (rev 52732)
+++ scummvm/trunk/engines/sci/engine/kgraphics.cpp	2010-09-15 15:21:59 UTC (rev 52733)
@@ -1196,6 +1196,57 @@
 	return s->r_acc;
 }
 
+reg_t kRemapColors(EngineState *s, int argc, reg_t *argv) {
+	// TODO: This is all a stub/skeleton, thus we're invoking kStub() for now
+	kStub(s, argc, argv);
+
+	uint16 operation = argv[0].toUint16();
+
+	switch (operation) {
+	case 0:	{ // Initialize remapping to base. 0 turns remapping off.
+		//int16 unk1 = (argc >= 2) ? argv[1].toSint16() : 0;
+		}
+		break;
+	case 1:	{ // unknown
+		// The demo of QFG4 calls this with 1+3 parameters, thus there are differences here
+		//int16 unk1 = argv[1].toSint16();
+		//int16 unk2 = argv[2].toSint16();
+		//int16 unk3 = argv[3].toSint16();
+		//uint16 unk4 = argv[4].toUint16();
+		//uint16 unk5 = (argc >= 6) ? argv[5].toUint16() : 0;
+		}
+		break;
+	case 2:	{ // remap by percent
+		//int16 unk1 = argv[1].toSint16();
+		//uint16 percent = argv[2].toUint16();
+		//uint16 unk3 = (argc >= 4) ? argv[3].toUint16() : 0;
+		}
+		break;
+	case 3:	{ // remap to gray
+		//int16 unk1 = argv[1].toSint16();
+		//int16 percent = argv[2].toSint16();	// 0 - 100
+		//uint16 unk3 = (argc >= 4) ? argv[3].toUint16() : 0;
+		}
+		break;
+	case 4:	{ // unknown
+		//int16 unk1 = argv[1].toSint16();
+		//uint16 unk2 = argv[2].toUint16();
+		//uint16 unk3 = argv[3].toUint16();
+		//uint16 unk4 = (argc >= 5) ? argv[4].toUint16() : 0;
+		}
+		break;
+	case 5:	{ // increment color
+		//int16 unk1 = argv[1].toSint16();
+		//uint16 unk2 = argv[2].toUint16();
+		}
+		break;
+	default:
+		break;
+	}
+
+	return s->r_acc;
+}
+
 #ifdef ENABLE_SCI32
 
 reg_t kIsHiRes(EngineState *s, int argc, reg_t *argv) {


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