SCI/newgui: changing undithering logic again, palette now uses decoded color-combinations, fixup happens during dithering run on undithered mode
svn-id: r44845
This commit is contained in:
parent
5801dd2064
commit
23887e9735
2 changed files with 36 additions and 17 deletions
|
@ -143,7 +143,7 @@ bool SciGuiPalette::setAmiga() {
|
||||||
|
|
||||||
void SciGuiPalette::setEGA() {
|
void SciGuiPalette::setEGA() {
|
||||||
int i;
|
int i;
|
||||||
byte color, color1, color2;
|
byte color1, color2;
|
||||||
_sysPalette.colors[1].r = 0x000; _sysPalette.colors[1].g = 0x000; _sysPalette.colors[1].b = 0x0AA;
|
_sysPalette.colors[1].r = 0x000; _sysPalette.colors[1].g = 0x000; _sysPalette.colors[1].b = 0x0AA;
|
||||||
_sysPalette.colors[2].r = 0x000; _sysPalette.colors[2].g = 0x0AA; _sysPalette.colors[2].b = 0x000;
|
_sysPalette.colors[2].r = 0x000; _sysPalette.colors[2].g = 0x0AA; _sysPalette.colors[2].b = 0x000;
|
||||||
_sysPalette.colors[3].r = 0x000; _sysPalette.colors[3].g = 0x0AA; _sysPalette.colors[3].b = 0x0AA;
|
_sysPalette.colors[3].r = 0x000; _sysPalette.colors[3].g = 0x0AA; _sysPalette.colors[3].b = 0x0AA;
|
||||||
|
@ -165,13 +165,11 @@ void SciGuiPalette::setEGA() {
|
||||||
// Now setting colors 16-254 to the correct mix colors that occur when not doing a dithering run on
|
// Now setting colors 16-254 to the correct mix colors that occur when not doing a dithering run on
|
||||||
// finished pictures
|
// finished pictures
|
||||||
for (i = 0x10; i <= 0xFE; i++) {
|
for (i = 0x10; i <= 0xFE; i++) {
|
||||||
color = i;
|
_sysPalette.colors[i].used = 1;
|
||||||
_sysPalette.colors[color].used = 1;
|
|
||||||
color ^= color << 4;
|
|
||||||
color1 = i & 0x0F; color2 = i >> 4;
|
color1 = i & 0x0F; color2 = i >> 4;
|
||||||
_sysPalette.colors[color].r = (_sysPalette.colors[color1].r >> 1) + (_sysPalette.colors[color2].r >> 1);
|
_sysPalette.colors[i].r = (_sysPalette.colors[color1].r >> 1) + (_sysPalette.colors[color2].r >> 1);
|
||||||
_sysPalette.colors[color].g = (_sysPalette.colors[color1].g >> 1) + (_sysPalette.colors[color2].g >> 1);
|
_sysPalette.colors[i].g = (_sysPalette.colors[color1].g >> 1) + (_sysPalette.colors[color2].g >> 1);
|
||||||
_sysPalette.colors[color].b = (_sysPalette.colors[color1].b >> 1) + (_sysPalette.colors[color2].b >> 1);
|
_sysPalette.colors[i].b = (_sysPalette.colors[color1].b >> 1) + (_sysPalette.colors[color2].b >> 1);
|
||||||
}
|
}
|
||||||
setOnScreen();
|
setOnScreen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,17 +222,38 @@ void SciGuiScreen::dither() {
|
||||||
byte *screenPtr = _visualScreen;
|
byte *screenPtr = _visualScreen;
|
||||||
byte *displayPtr = _displayScreen;
|
byte *displayPtr = _displayScreen;
|
||||||
|
|
||||||
for (y = 0; y < _height; y++) {
|
if (!_unditherState) {
|
||||||
for (x = 0; x < _width; x++) {
|
// Do dithering on visual and display-screen
|
||||||
color = *screenPtr;
|
for (y = 0; y < _height; y++) {
|
||||||
if (color & 0xF0) {
|
for (x = 0; x < _width; x++) {
|
||||||
color ^= color << 4;
|
color = *screenPtr;
|
||||||
color = ((x^y) & 1) ? color >> 4 : color & 0x0F;
|
if (color & 0xF0) {
|
||||||
*screenPtr = color;
|
color ^= color << 4;
|
||||||
if (!_unditherState)
|
color = ((x^y) & 1) ? color >> 4 : color & 0x0F;
|
||||||
*displayPtr = color;
|
*screenPtr = color; *displayPtr = color;
|
||||||
|
}
|
||||||
|
screenPtr++; displayPtr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Do dithering on visual screen and put decoded but undithered byte onto display-screen
|
||||||
|
for (y = 0; y < _height; y++) {
|
||||||
|
for (x = 0; x < _width; x++) {
|
||||||
|
color = *screenPtr;
|
||||||
|
if (color & 0xF0) {
|
||||||
|
color ^= color << 4;
|
||||||
|
// if decoded color wants do dither with black on left side, we turn it around
|
||||||
|
// otherwise the normal ega color would get used for display
|
||||||
|
if (color & 0xF0) {
|
||||||
|
*displayPtr = color;
|
||||||
|
} else {
|
||||||
|
*displayPtr = color << 4;
|
||||||
|
}
|
||||||
|
color = ((x^y) & 1) ? color >> 4 : color & 0x0F;
|
||||||
|
*screenPtr = color;
|
||||||
|
}
|
||||||
|
screenPtr++; displayPtr++;
|
||||||
}
|
}
|
||||||
screenPtr++; displayPtr++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue