diff options
| author | Filippos Karapetis | 2010-09-15 15:21:59 +0000 | 
|---|---|---|
| committer | Filippos Karapetis | 2010-09-15 15:21:59 +0000 | 
| commit | 6cf1a4d537c5329778b0ad2234ba985e82e32ce8 (patch) | |
| tree | 737b21e36819df9aef8c5deea33c91db5c2c79c6 | |
| parent | c74c206f053f4ad0d076bad9e94c559af262dda2 (diff) | |
| download | scummvm-rg350-6cf1a4d537c5329778b0ad2234ba985e82e32ce8.tar.gz scummvm-rg350-6cf1a4d537c5329778b0ad2234ba985e82e32ce8.tar.bz2 scummvm-rg350-6cf1a4d537c5329778b0ad2234ba985e82e32ce8.zip  | |
SCI: Some very early work on kRemapColors (just comments/observations for now)
svn-id: r52733
| -rw-r--r-- | engines/sci/engine/kernel.h | 2 | ||||
| -rw-r--r-- | engines/sci/engine/kernel_tables.h | 1 | ||||
| -rw-r--r-- | engines/sci/engine/kgraphics.cpp | 51 | 
3 files changed, 53 insertions, 1 deletions
diff --git a/engines/sci/engine/kernel.h b/engines/sci/engine/kernel.h index 90b0ae2bee..c42214dd01 100644 --- a/engines/sci/engine/kernel.h +++ b/engines/sci/engine/kernel.h @@ -278,7 +278,6 @@ private:  /******************** 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 kPlatform(EngineState *s, int argc, reg_t *argv);  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); diff --git a/engines/sci/engine/kernel_tables.h b/engines/sci/engine/kernel_tables.h index ce28611e50..b190335f56 100644 --- a/engines/sci/engine/kernel_tables.h +++ b/engines/sci/engine/kernel_tables.h @@ -405,6 +405,7 @@ static SciKernelMapEntry s_kernelMap[] = {      { 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 }, diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 673cf0199c..5bf9bc20c9 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -1196,6 +1196,57 @@ reg_t kShow(EngineState *s, int argc, reg_t *argv) {  	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) {  | 
