aboutsummaryrefslogtreecommitdiff
path: root/engines/tinsel
diff options
context:
space:
mode:
authorMax Horn2010-04-16 11:00:13 +0000
committerMax Horn2010-04-16 11:00:13 +0000
commitae3962ce36cf558bf3fa5147fb4ec18f24686811 (patch)
treee4a0f50088abafc01490d5e0488cdd8b74d5945a /engines/tinsel
parent418bcdad7d8ca5d15a20e206e1c2c0195c9071a1 (diff)
downloadscummvm-rg350-ae3962ce36cf558bf3fa5147fb4ec18f24686811.tar.gz
scummvm-rg350-ae3962ce36cf558bf3fa5147fb4ec18f24686811.tar.bz2
scummvm-rg350-ae3962ce36cf558bf3fa5147fb4ec18f24686811.zip
Fix for bug #2987895: "DW2: graphical errors in video on Windows"
svn-id: r48665
Diffstat (limited to 'engines/tinsel')
-rw-r--r--engines/tinsel/bmv.cpp36
1 files changed, 2 insertions, 34 deletions
diff --git a/engines/tinsel/bmv.cpp b/engines/tinsel/bmv.cpp
index f6e44cea1c..938507c3f9 100644
--- a/engines/tinsel/bmv.cpp
+++ b/engines/tinsel/bmv.cpp
@@ -232,17 +232,8 @@ static void PrepBMV(byte *ScreenBeg, const byte *sourceData, int length, short d
}
switch (loopCtr) {
- case 1:
+ case 1: {
// @_rDelta:
-#if 1
- if (forwardDirection) {
- memcpy(dst, dst + ebx, byteLen);
- dst += byteLen;
- } else {
- dst -= byteLen;
- memcpy(dst + 1, dst + ebx + 1, byteLen);
- }
-#else
const byte *saved_src = src; // Save the source pointer
src = dst + ebx; // Point it to existing data
@@ -254,45 +245,23 @@ static void PrepBMV(byte *ScreenBeg, const byte *sourceData, int length, short d
}
src = saved_src;
-#endif
break;
+ }
case 2:
// @_rRaw
// Copy data from source to dest
-#if 1
- if (forwardDirection) {
- memcpy(dst, src, byteLen);
- dst += byteLen;
- src += byteLen;
- } else {
- dst -= byteLen;
- src -= byteLen;
- memcpy(dst + 1, src + 1, byteLen);
- }
-#else
while (byteLen > 0) {
*dst = *src;
NEXT_BYTE(src);
NEXT_BYTE(dst);
--byteLen;
}
-#endif
break;
case 3:
// @_rRun
// Repeating run of data
-#if 1
- if (forwardDirection) {
- memset(dst, *(dst - 1), byteLen);
- dst += byteLen;
- } else {
- eax = *(dst + 1);
- dst -= byteLen;
- memset(dst + 1, eax, byteLen);
- }
-#else
eax = forwardDirection ? *(dst - 1) : *(dst + 1);
while (byteLen > 0) {
@@ -300,7 +269,6 @@ static void PrepBMV(byte *ScreenBeg, const byte *sourceData, int length, short d
NEXT_BYTE(dst);
--byteLen;
}
-#endif
break;
default:
break;