aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/vgafades.cpp
diff options
context:
space:
mode:
authorMax Horn2011-12-09 18:41:45 +0100
committerWillem Jan Palenstijn2011-12-12 11:45:35 +0100
commitef2096736d9b14c842094b94bff1b772de311e72 (patch)
tree0971db4a59a43de8f82064bb780732d81f98ec59 /engines/dreamweb/vgafades.cpp
parent9a420d232fe55f85ef7c418b3e0c0a26ffacf69e (diff)
downloadscummvm-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.cpp58
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