aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Apers2004-09-12 10:49:29 +0000
committerChris Apers2004-09-12 10:49:29 +0000
commit0a44ef3d3c2d6d957581e1d451b430e70a4a8a6a (patch)
tree3c6da3725bc381ecf950f11f9d71702a5dea90fb
parentb8520692f4c462e10262a72381d324962a9f36be (diff)
downloadscummvm-rg350-0a44ef3d3c2d6d957581e1d451b430e70a4a8a6a.tar.gz
scummvm-rg350-0a44ef3d3c2d6d957581e1d451b430e70a4a8a6a.tar.bz2
scummvm-rg350-0a44ef3d3c2d6d957581e1d451b430e70a4a8a6a.zip
PalmOS : ARM optimized DrawSTripToScreen function + disable dissolve(1,1)
svn-id: r15024
-rw-r--r--scumm/gfx.cpp27
1 files changed, 27 insertions, 0 deletions
diff --git a/scumm/gfx.cpp b/scumm/gfx.cpp
index ab3bbfed73..bcbc26c2f7 100644
--- a/scumm/gfx.cpp
+++ b/scumm/gfx.cpp
@@ -26,6 +26,11 @@
#include "scumm/resource.h"
#include "scumm/usage_bits.h"
+#if defined(__PALM_OS__)
+#include "arm/native.h"
+#include "arm/macros.h"
+#endif
+
namespace Scumm {
static void blit(byte *dst, int dstPitch, const byte *src, int srcPitch, int w, int h);
@@ -447,6 +452,19 @@ void Gdi::drawStripToScreen(VirtScreen *vs, int x, int width, int top, int botto
byte *dst = _compositeBuf + x + y * _vm->_screenWidth;
const byte *text = (byte *)_textSurface.pixels + x + y * _textSurface.pitch;
+#ifdef __PALM_OS__
+ ARM_START(DrawStripType)
+ ARM_ADDM(width)
+ ARM_ADDM(height)
+ ARM_ADDM(src)
+ ARM_ADDM(dst)
+ ARM_ADDM(text)
+ ARM_ADDV(_vm_screenWidth, _vm->_screenWidth)
+ ARM_ADDV(vs_pitch, vs->pitch)
+ ARM_ADDV(_textSurface_pitch, _textSurface.pitch)
+ PCE_CALL(PNO_DRAWSTRIP, ARM_DATA())
+ ARM_CONTINUE()
+#endif
// Compose the text over the game graphics
for (int h = 0; h < height; ++h) {
for (int w = 0; w < width; ++w) {
@@ -2744,6 +2762,15 @@ void ScummEngine::transitionEffect(int a) {
* dissolveEffect(virtsrc[0].width, 1) produces a line-by-line dissolve
*/
void ScummEngine::dissolveEffect(int width, int height) {
+#ifdef __PALM_OS__
+ // Remove this dissolve effect for now on PalmOS since it is a bit
+ // too slow using 68k emulation
+ if (width == 1 && height == 1) {
+ waitForTimer(30);
+ return;
+ }
+#endif
+
VirtScreen *vs = &virtscr[0];
int *offsets;
int blits_before_refresh, blits;