[Scummvm-cvs-logs] scummvm master -> 37b209dac14bea6b8f08c3ee3f66e3d5772652bb

bluegr md5 at scummvm.org
Tue Jul 24 21:57:21 CEST 2012


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
fe3fb1873c SCI: Cleanup of the palette remapping code
37b209dac1 SCI: Refresh remapping by percent whenever the screen palette changes


Commit: fe3fb1873c60e7ed21c573e09030bd6d0a5018cb
    https://github.com/scummvm/scummvm/commit/fe3fb1873c60e7ed21c573e09030bd6d0a5018cb
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-07-24T12:54:37-07:00

Commit Message:
SCI: Cleanup of the palette remapping code

Changed paths:
    engines/sci/engine/kgraphics.cpp
    engines/sci/engine/kgraphics32.cpp
    engines/sci/graphics/palette.cpp
    engines/sci/graphics/palette.h



diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp
index 55c0202..da37731 100644
--- a/engines/sci/engine/kgraphics.cpp
+++ b/engines/sci/engine/kgraphics.cpp
@@ -1228,7 +1228,6 @@ reg_t kRemapColors(EngineState *s, int argc, reg_t *argv) {
 	switch (operation) {
 	case 0: { // remap by percent
 		uint16 percent = argv[1].toUint16();
-		g_sci->_gfxPalette->toggleRemapping(true);
 		g_sci->_gfxPalette->resetRemapping();
 		g_sci->_gfxPalette->setRemappingPercent(254, percent);
 		}
@@ -1237,7 +1236,6 @@ reg_t kRemapColors(EngineState *s, int argc, reg_t *argv) {
 		uint16 from = argv[1].toUint16();
 		uint16 to = argv[2].toUint16();
 		uint16 base = argv[3].toUint16();
-		g_sci->_gfxPalette->toggleRemapping(true);
 		g_sci->_gfxPalette->resetRemapping();
 		g_sci->_gfxPalette->setRemappingRange(254, from, to, base);
 		}
diff --git a/engines/sci/engine/kgraphics32.cpp b/engines/sci/engine/kgraphics32.cpp
index 7240308..3d2c2af 100644
--- a/engines/sci/engine/kgraphics32.cpp
+++ b/engines/sci/engine/kgraphics32.cpp
@@ -741,7 +741,6 @@ reg_t kRemapColors32(EngineState *s, int argc, reg_t *argv) {
 		int16 base = (argc >= 2) ? argv[1].toSint16() : 0;
 		if (base > 0)
 			warning("kRemapColors(0) called with base %d", base);
-		g_sci->_gfxPalette->toggleRemapping(false);
 		g_sci->_gfxPalette->resetRemapping();
 		}
 		break;
@@ -753,7 +752,6 @@ reg_t kRemapColors32(EngineState *s, int argc, reg_t *argv) {
 		uint16 unk5 = (argc >= 6) ? argv[5].toUint16() : 0;
 		if (unk5 > 0)
 			warning("kRemapColors(1) called with 6 parameters, unknown parameter is %d", unk5);
-		g_sci->_gfxPalette->toggleRemapping(true);
 		g_sci->_gfxPalette->setRemappingRange(color, from, to, base);
 		}
 		break;
@@ -762,7 +760,6 @@ reg_t kRemapColors32(EngineState *s, int argc, reg_t *argv) {
 		uint16 percent = argv[2].toUint16(); // 0 - 100
 		if (argc >= 4)
 			warning("RemapByPercent called with 4 parameters, unknown parameter is %d", argv[3].toUint16());
-		g_sci->_gfxPalette->toggleRemapping(true);
 		g_sci->_gfxPalette->setRemappingPercent(color, percent);
 		}
 		break;
diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index b5154ef..5a551ba 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -337,6 +337,7 @@ bool GfxPalette::isRemapMask(byte color) {
 }
 
 void GfxPalette::resetRemapping() {
+	_remapOn = false;
 	_remappingMaskFrom = 0;
 	_remappingMaskTo = 0;
 	_remappingPercentToSet = 0;
@@ -347,6 +348,8 @@ void GfxPalette::resetRemapping() {
 }
 
 void GfxPalette::setRemappingPercent(byte color, byte percent) {
+	_remapOn = true;
+
 	// We need to defer the setup of the remapping table until something is
 	// shown on screen, otherwise kernelFindColor() won't find correct
 	// colors. The actual setup of the remapping table will be performed in
@@ -360,6 +363,8 @@ void GfxPalette::setRemappingPercent(byte color, byte percent) {
 }
 
 void GfxPalette::setRemappingRange(byte color, byte from, byte to, byte base) {
+	_remapOn = true;
+
 	for (int i = from; i <= to; i++) {
 		_remappingTable[i] = i + base;
 	}
diff --git a/engines/sci/graphics/palette.h b/engines/sci/graphics/palette.h
index 372f3c7..134ade5 100644
--- a/engines/sci/graphics/palette.h
+++ b/engines/sci/graphics/palette.h
@@ -53,7 +53,6 @@ public:
 	void getSys(Palette *pal);
 	uint16 getTotalColorCount() const { return _totalScreenColors; }
 
-	void toggleRemapping(bool remap) { _remapOn = remap; }
 	void resetRemapping();
 	void setRemappingPercent(byte color, byte percent);
 	void setRemappingRange(byte color, byte from, byte to, byte base);


Commit: 37b209dac14bea6b8f08c3ee3f66e3d5772652bb
    https://github.com/scummvm/scummvm/commit/37b209dac14bea6b8f08c3ee3f66e3d5772652bb
Author: Filippos Karapetis (md5 at scummvm.org)
Date: 2012-07-24T12:55:34-07:00

Commit Message:
SCI: Refresh remapping by percent whenever the screen palette changes

Changed paths:
    engines/sci/graphics/palette.cpp



diff --git a/engines/sci/graphics/palette.cpp b/engines/sci/graphics/palette.cpp
index 5a551ba..cb5c0fe 100644
--- a/engines/sci/graphics/palette.cpp
+++ b/engines/sci/graphics/palette.cpp
@@ -350,10 +350,10 @@ void GfxPalette::resetRemapping() {
 void GfxPalette::setRemappingPercent(byte color, byte percent) {
 	_remapOn = true;
 
-	// We need to defer the setup of the remapping table until something is
-	// shown on screen, otherwise kernelFindColor() won't find correct
+	// We need to defer the setup of the remapping table every time the screen
+	// palette is changed, so that kernelFindColor() can find the correct
 	// colors. The actual setup of the remapping table will be performed in
-	// remapColor().
+	// copySysPaletteToScreen().
 	_remappingPercentToSet = percent;
 
 	if (_remappingMaskFrom > color || _remappingMaskFrom == 0)
@@ -377,21 +377,6 @@ void GfxPalette::setRemappingRange(byte color, byte from, byte to, byte base) {
 
 byte GfxPalette::remapColor(byte color) {
 	assert(_remapOn);
-
-	// Check if we need to set remapping by percent. This can only be
-	// performed when something is shown on screen, so that the screen
-	// palette is set up and kernelFindColor() can work correctly.
-	if (_remappingPercentToSet) {
-		for (int i = 0; i < 256; i++) {
-			byte r = _sysPalette.colors[i].r * _remappingPercentToSet / 100;
-			byte g = _sysPalette.colors[i].g * _remappingPercentToSet / 100;
-			byte b = _sysPalette.colors[i].b * _remappingPercentToSet / 100;
-			_remappingTable[i] = kernelFindColor(r, g, b);
-		}
-
-		_remappingPercentToSet = 0;
-	}
-
 	return _remappingTable[color];
 }
 
@@ -557,6 +542,16 @@ void GfxPalette::copySysPaletteToScreen() {
 		}
 	}
 
+	// Check if we need to reset remapping by percent with the new colors.
+	if (_remappingPercentToSet) {
+		for (int i = 0; i < 256; i++) {
+			byte r = _sysPalette.colors[i].r * _remappingPercentToSet / 100;
+			byte g = _sysPalette.colors[i].g * _remappingPercentToSet / 100;
+			byte b = _sysPalette.colors[i].b * _remappingPercentToSet / 100;
+			_remappingTable[i] = kernelFindColor(r, g, b);
+		}
+	}
+
 	g_system->getPaletteManager()->setPalette(bpal, 0, 256);
 }
 






More information about the Scummvm-git-logs mailing list