diff options
author | Max Horn | 2011-12-09 18:41:45 +0100 |
---|---|---|
committer | Willem Jan Palenstijn | 2011-12-12 11:45:35 +0100 |
commit | ef2096736d9b14c842094b94bff1b772de311e72 (patch) | |
tree | 0971db4a59a43de8f82064bb780732d81f98ec59 /engines/dreamweb/vgafades.cpp | |
parent | 9a420d232fe55f85ef7c418b3e0c0a26ffacf69e (diff) | |
download | scummvm-rg350-ef2096736d9b14c842094b94bff1b772de311e72.tar.gz scummvm-rg350-ef2096736d9b14c842094b94bff1b772de311e72.tar.bz2 scummvm-rg350-ef2096736d9b14c842094b94bff1b772de311e72.zip |
DREAMWEB: Convert greyscaleSum, allPalette, dumpCurrent
Diffstat (limited to 'engines/dreamweb/vgafades.cpp')
-rw-r--r-- | engines/dreamweb/vgafades.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/engines/dreamweb/vgafades.cpp b/engines/dreamweb/vgafades.cpp index ceb4178b59..6f5af573c4 100644 --- a/engines/dreamweb/vgafades.cpp +++ b/engines/dreamweb/vgafades.cpp @@ -190,4 +190,62 @@ void DreamGenContext::clearPalette() { dumpCurrent(); } +// Converts palette to grey scale, summed using formula +// .20xred + .59xGreen + .11xBlue +void DreamBase::greyscaleSum() { + byte *src = mainPalette(); + byte *dst = endPalette(); + + for (int i = 0; i < 256; ++i) { + const unsigned int r = 20 * *src++; + const unsigned int g = 59 * *src++; + const unsigned int b = 11 * *src++; + const byte grey = (r + b + g) / 100; + byte tmp; + + tmp = grey; + //if (tmp != 0) // FIXME: The assembler code has this check commented out. Bug or feature? + tmp += data.byte(kAddtored); + *dst++ = tmp; + + tmp = grey; + if (tmp != 0) + tmp += data.byte(kAddtogreen); + *dst++ = tmp; + + tmp = grey; + if (tmp != 0) + tmp += data.byte(kAddtoblue); + *dst++ = tmp; + } +} + +void DreamBase::allPalette() { + memcpy(startPalette(), mainPalette(), 3 * 256); + dumpCurrent(); +} + +void DreamBase::dumpCurrent() { + uint8 *pal = startPalette(); + + engine->waitForVSync(); + engine->processEvents(); + engine->setPalette(pal, 0, 128); + + pal += 128 * 3; + + engine->waitForVSync(); + engine->processEvents(); + engine->setPalette(pal, 128, 128); +} + +void DreamGenContext::showGroup() { + engine->processEvents(); + unsigned n = (uint16)cx; + uint8 *src = ds.ptr(si, n * 3); + engine->setPalette(src, al, n); + si += n * 3; + cx = 0; +} + } // End of namespace DreamGen |