[Scummvm-cvs-logs] CVS: scummvm/queen display.cpp,1.69,1.70

Chris Apers chrilith at users.sourceforge.net
Wed Oct 6 03:40:14 CEST 2004


Update of /cvsroot/scummvm/scummvm/queen
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6736

Modified Files:
	display.cpp 
Log Message:
PalmOS : ARM optimization

Index: display.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/queen/display.cpp,v
retrieving revision 1.69
retrieving revision 1.70
diff -u -d -r1.69 -r1.70
--- display.cpp	3 Oct 2004 20:14:54 -0000	1.69
+++ display.cpp	6 Oct 2004 09:55:38 -0000	1.70
@@ -27,6 +27,11 @@
 #include "queen/queen.h"
 #include "queen/resource.h"
 
+#if defined(__PALM_OS__)
+#include "arm/native.h"
+#include "arm/macros.h"
+#endif
+
 namespace Queen {
 
 #ifdef __PALM_OS__
@@ -582,6 +587,19 @@
 	}
 	uint8 *dst = _screenBuf;
 	const uint8 *src = _backdropBuf + _horizontalScroll;
+
+#ifdef __PALM_OS__
+	ARM_START(CopyRectangleType)
+		ARM_ADDM(dst)
+		ARM_ADDV(buf, src)
+		ARM_ADDV(pitch, BACKDROP_W)
+		ARM_ADDV(_offScreenPitch, SCREEN_W)
+		ARM_ADDV(w, SCREEN_W)
+		ARM_ADDM(h)
+		PNO_CALL(PNO_COPYRECT, ARM_DATA())
+	ARM_END()
+#endif
+
 	while (h--) {
 		memcpy(dst, src, SCREEN_W);
 		dst += SCREEN_W;
@@ -689,6 +707,23 @@
 void Display::blit(uint8 *dstBuf, uint16 dstPitch, uint16 x, uint16 y, const uint8 *srcBuf, uint16 srcPitch, uint16 w, uint16 h, bool xflip, bool masked) {
 	assert(w <= dstPitch);
 	dstBuf += dstPitch * y + x;
+
+#ifdef __PALM_OS__
+	ARM_CHECK_EXEC(w > 8 && h > 8)
+		ARM_START(BlitType)
+			ARM_ADDM(dstBuf)
+			ARM_ADDM(dstPitch)
+			ARM_ADDM(srcBuf)
+			ARM_ADDM(srcPitch)
+			ARM_ADDM(w)
+			ARM_ADDM(h)
+			ARM_ADDM(xflip)
+			ARM_ADDM(masked)
+			PNO_CALL(PNO_BLIT, ARM_DATA())
+		ARM_END()
+	ARM_CHECK_END()
+#endif
+
 	if (!masked) { // Unmasked always unflipped
 		while (h--) {
 			memcpy(dstBuf, srcBuf, w);
@@ -916,6 +951,7 @@
 	setDirtyBlock(xs - 1, y - 1, x - xs + 2, 8 + 2);
 }
 
+
 void Display::drawBox(int16 x1, int16 y1, int16 x2, int16 y2, uint8 col) {
 	uint8 *p = _screenBuf;
 	int i;
@@ -995,7 +1031,7 @@
 			p += SCREEN_W;
 		}
 		_system->copyRectToScreen(buf, SCREEN_W, x, y, 2, 2);
-		_system->updateScreen();
+			_system->updateScreen();
 		_vm->input()->delay(10);
 	}
 }
@@ -1024,7 +1060,7 @@
 			++i;
 			_system->copyRectToScreen(buf, SCREEN_W, x, y, 2, 2);
 		}
-		_system->updateScreen();
+			_system->updateScreen();
 		_vm->input()->delay(10);
 	}
 }





More information about the Scummvm-git-logs mailing list