[Scummvm-cvs-logs] CVS: scummvm/scumm/smush codec47.cpp,1.46,1.47
Max Horn
fingolfin at users.sourceforge.net
Sat Apr 26 04:03:14 CEST 2003
Update of /cvsroot/scummvm/scummvm/scumm/smush
In directory sc8-pr-cvs1:/tmp/cvs-serv24599
Modified Files:
codec47.cpp
Log Message:
fixed endian regression (introduced by the alignment changes)
Index: codec47.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/smush/codec47.cpp,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -d -r1.46 -r1.47
--- codec47.cpp 5 Apr 2003 23:41:21 -0000 1.46
+++ codec47.cpp 26 Apr 2003 11:02:49 -0000 1.47
@@ -28,19 +28,18 @@
#define COPY_4X1_LINE(dst, src) \
do { \
- int j; \
- for(j=0; j<4; j++) \
- (dst)[j] = (src)[j]; \
+ (dst)[0] = (src)[0]; \
+ (dst)[1] = (src)[1]; \
+ (dst)[2] = (src)[2]; \
+ (dst)[3] = (src)[3]; \
} while(0)
#define COPY_2X1_LINE(dst, src) \
do { \
- int j; \
- for(j=0; j<2; j++) \
- (dst)[j] = (src)[j]; \
+ (dst)[0] = (src)[0]; \
+ (dst)[1] = (src)[1]; \
} while(0)
-
#else /* SCUMM_NEED_ALIGNMENT */
#define COPY_4X1_LINE(dst, src) \
@@ -51,6 +50,20 @@
#endif
+#define FILL_4X1_LINE(dst, val) \
+ do { \
+ (dst)[0] = val; \
+ (dst)[1] = val; \
+ (dst)[2] = val; \
+ (dst)[3] = val; \
+ } while(0)
+
+#define FILL_2X1_LINE(dst, val) \
+ do { \
+ (dst)[0] = val; \
+ (dst)[1] = val; \
+ } while(0)
+
static int32 codec37_table[] = {
0, 1, 2, 3, 3, 3,
3, 2, 1, 0, 0, 0,
@@ -488,18 +501,16 @@
_d_src += 4;
} else if (code == 0xFE) {
byte t = *_d_src++;
- tmp = t | t << 8;
- COPY_2X1_LINE(d_dst, (unsigned char*)&tmp);
- COPY_2X1_LINE(d_dst + _d_pitch, (unsigned char*)&tmp);
+ FILL_2X1_LINE(d_dst, t);
+ FILL_2X1_LINE(d_dst + _d_pitch, t);
} else if (code == 0xFC) {
tmp = _offset2;
COPY_2X1_LINE(d_dst, d_dst + tmp);
COPY_2X1_LINE(d_dst + _d_pitch, d_dst + _d_pitch + tmp);
} else {
byte t = _paramPtr[code];
- tmp = t | t << 8;
- COPY_2X1_LINE(d_dst, (unsigned char*)&tmp);
- COPY_2X1_LINE(d_dst + _d_pitch, (unsigned char*)&tmp);
+ FILL_2X1_LINE(d_dst, t);
+ FILL_2X1_LINE(d_dst + _d_pitch, t);
}
}
@@ -526,9 +537,8 @@
d_dst = tmp_dst;
} else if (code == 0xFE) {
byte t = *_d_src++;
- uint32 val = t << 24 | t << 16 | t << 8 | t;
for (i = 0; i < 4; i++) {
- COPY_4X1_LINE(d_dst, (unsigned char*)&val);
+ FILL_4X1_LINE(d_dst, t);
d_dst += _d_pitch;
}
} else if (code == 0xFD) {
@@ -555,9 +565,8 @@
}
} else {
byte t = _paramPtr[code];
- uint32 val = t << 24 | t << 16 | t << 8 | t;
for (i = 0; i < 4; i++) {
- COPY_4X1_LINE(d_dst, (unsigned char*)&val);
+ FILL_4X1_LINE(d_dst, t);
d_dst += _d_pitch;
}
}
@@ -587,10 +596,9 @@
d_dst = tmp_dst;
} else if (code == 0xFE) {
byte t = *_d_src++;
- int32 val = t << 24 | t << 16 | t << 8 | t;
for (i = 0; i < 8; i++) {
- COPY_4X1_LINE(d_dst, (unsigned char*)&val);
- COPY_4X1_LINE(d_dst + 4, (unsigned char*)&val);
+ FILL_4X1_LINE(d_dst, t);
+ FILL_4X1_LINE(d_dst + 4, t);
d_dst += _d_pitch;
}
} else if (code == 0xFD) {
@@ -619,10 +627,9 @@
}
} else {
byte t = _paramPtr[code];
- int32 val = t << 24 | t << 16 | t << 8 | t;
for (i = 0; i < 8; i++) {
- COPY_4X1_LINE(d_dst, (unsigned char*)&val);
- COPY_4X1_LINE(d_dst + 4, (unsigned char*)&val);
+ FILL_4X1_LINE(d_dst, t);
+ FILL_4X1_LINE(d_dst + 4, t);
d_dst += _d_pitch;
}
}
More information about the Scummvm-git-logs
mailing list