[Scummvm-cvs-logs] SF.net SVN: scummvm:[45079] scummvm/trunk/engines/sci/gui

m_kiewitz at users.sourceforge.net m_kiewitz at users.sourceforge.net
Wed Oct 14 15:58:37 CEST 2009


Revision: 45079
          http://scummvm.svn.sourceforge.net/scummvm/?rev=45079&view=rev
Author:   m_kiewitz
Date:     2009-10-14 13:58:37 +0000 (Wed, 14 Oct 2009)

Log Message:
-----------
SCI/newgui: SciGuiTransitions now supports block-pixelation as well (EGA and VGA), e.g. qfg1/ega

Modified Paths:
--------------
    scummvm/trunk/engines/sci/gui/gui_transitions.cpp
    scummvm/trunk/engines/sci/gui/gui_transitions.h

Modified: scummvm/trunk/engines/sci/gui/gui_transitions.cpp
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_transitions.cpp	2009-10-14 13:28:36 UTC (rev 45078)
+++ scummvm/trunk/engines/sci/gui/gui_transitions.cpp	2009-10-14 13:58:37 UTC (rev 45079)
@@ -61,6 +61,11 @@
 		case SCI_TRANSITIONS_VGA_PIXELATION:
 			setNewPalette(); pixelation();
 			break;
+
+		case SCI_TRANSITIONS_VGA_BLOCKS:
+			setNewPalette(); blocks();
+			break;
+
 		case SCI_TRANSITIONS_VGA_FADEPALETTE:
 			fadeOut(); setNewScreen(); fadeIn();
 			break;
@@ -72,13 +77,21 @@
 	} else {
 		// === EGA transitions
 		switch (_number) {
+		case SCI_TRANSITIONS_EGA_PIXELATION:
+			pixelation();
+			break;
+
+		case SCI_TRANSITIONS_EGA_BLOCKS:
+			blocks();
+			break;
+
 		case SCI_TRANSITIONS_EGA_FADEPALETTE:
 			fadeOut(); setNewScreen(); fadeIn();
 			break;
 
 		default:
 			warning("SciGuiTransitions: EGA-%d not implemented", _number);
-			setNewPalette(); setNewScreen();
+			setNewScreen();
 		}
 	}
 	_screen->_picNotValid = 0;
@@ -149,4 +162,24 @@
 	} while (mask != 0x40);
 }
 
+// like pixelation but uses 8x8 blocks
+void SciGuiTransitions::blocks() {
+	uint16 mask = 0x40, stepNr = 0;
+	Common::Rect blockRect;
+
+	do {
+		mask = (mask & 1) ? (mask >> 1) ^ 0x240 : mask >> 1;
+		if (mask >= 40 * 25)
+			continue;
+		blockRect.left = (mask % 40) << 3; blockRect.right = blockRect.left + 8;
+		blockRect.top = (mask / 40) << 3; blockRect.bottom = blockRect.top + 8;
+		_screen->copyRectToScreen(blockRect);
+		if ((stepNr & 7) == 0) {
+			g_system->updateScreen();
+			g_system->delayMillis(4);
+		}
+		stepNr++;
+	} while (mask != 0x40);
+}
+
 } // End of namespace Sci

Modified: scummvm/trunk/engines/sci/gui/gui_transitions.h
===================================================================
--- scummvm/trunk/engines/sci/gui/gui_transitions.h	2009-10-14 13:28:36 UTC (rev 45078)
+++ scummvm/trunk/engines/sci/gui/gui_transitions.h	2009-10-14 13:58:37 UTC (rev 45079)
@@ -31,10 +31,13 @@
 namespace Sci {
 
 enum {
+	SCI_TRANSITIONS_EGA_BLOCKS			= 8,
+	SCI_TRANSITIONS_EGA_PIXELATION		= 18,
 	SCI_TRANSITIONS_EGA_FADEPALETTE		= 30
 };
 
 enum {
+	SCI_TRANSITIONS_VGA_BLOCKS			= 8,
 	SCI_TRANSITIONS_VGA_PIXELATION		= 9,
 	SCI_TRANSITIONS_VGA_FADEPALETTE		= 10
 };
@@ -55,6 +58,7 @@
 	void fadeOut();
 	void fadeIn();
 	void pixelation();
+	void blocks();
 
 	SciGui *_gui;
 	SciGuiScreen *_screen;


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list