From 25a937e1566974a0c920be8ab411c488201b8e53 Mon Sep 17 00:00:00 2001 From: Vladimir Menshakov Date: Fri, 10 Jun 2011 02:18:57 +0400 Subject: [PATCH] DREAMWEB: added fadedos --- engines/dreamweb/dreamweb.cpp | 20 +++++++++++++++++++- engines/dreamweb/dreamweb.h | 1 + 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/engines/dreamweb/dreamweb.cpp b/engines/dreamweb/dreamweb.cpp index 65cd2a0c434..fe27f4f97c7 100644 --- a/engines/dreamweb/dreamweb.cpp +++ b/engines/dreamweb/dreamweb.cpp @@ -202,6 +202,23 @@ void DreamWebEngine::setGraphicsMode() { initGraphics(320, 200, false); } +void DreamWebEngine::fadeDos() { + static const int startpal = 0+(228*13)+32+60+(32*32)+(11*10*3); //fixme: add equ to enum too + + PaletteManager *palette = _system->getPaletteManager(); + _context.ds = _context.es = _context.data.word(dreamgen::kBuffers); + uint8 *dst = _context.es.ptr(startpal, 768); + palette->grabPalette(dst, 0, 64); + for(int fade = 0; fade < 64; ++fade) { + for(int c = 0; c < 768; ++c) { //original sources decrement 768 values -> 256 colors + if (dst[c]) { + --dst[c]; + } + } + palette->setPalette(dst, 0, 64); + waitForVSync(); + } +} } // End of namespace DreamWeb @@ -485,7 +502,8 @@ void showgroup(Context &context) { } void fadedos(Context &context) { - warning("fadedos: STUB"); + vsync(context); + engine()->fadeDos(); } void doshake(Context &context) { diff --git a/engines/dreamweb/dreamweb.h b/engines/dreamweb/dreamweb.h index d2fc447fee1..ed4359f6456 100644 --- a/engines/dreamweb/dreamweb.h +++ b/engines/dreamweb/dreamweb.h @@ -85,6 +85,7 @@ public: void mouseCall(); //fill mouse pos and button state void processEvents(); void setGraphicsMode(); + void fadeDos(); private: const DreamWebGameDescription *_gameDescription;