aboutsummaryrefslogtreecommitdiff
path: root/insane.cpp
diff options
context:
space:
mode:
authorJames Brown2002-04-30 07:40:56 +0000
committerJames Brown2002-04-30 07:40:56 +0000
commit4924ecd7da546f1c6b7108edb705391ca0d36243 (patch)
tree2b1e205d334adab00cf1e8d8a291c990fe76a4df /insane.cpp
parent2d51c864b0963cbdb5d15f6e461e5c3bb2b81f59 (diff)
downloadscummvm-rg350-4924ecd7da546f1c6b7108edb705391ca0d36243.tar.gz
scummvm-rg350-4924ecd7da546f1c6b7108edb705391ca0d36243.tar.bz2
scummvm-rg350-4924ecd7da546f1c6b7108edb705391ca0d36243.zip
Added missing Dig smush codecs. Dig movies are now perfect, graphically.
Thanks Aquadran. svn-id: r4139
Diffstat (limited to 'insane.cpp')
-rw-r--r--insane.cpp21
1 files changed, 19 insertions, 2 deletions
diff --git a/insane.cpp b/insane.cpp
index 7e590bd4a2..523fc876cd 100644
--- a/insane.cpp
+++ b/insane.cpp
@@ -224,6 +224,7 @@ void codec37_proc5(byte *dst, byte *src, int next_offs, int bw, int bh,
{
byte code, *tmp;
int i;
+ uint32 t;
if (pitch != 320) {
warning("invalid pitch");
@@ -235,11 +236,27 @@ void codec37_proc5(byte *dst, byte *src, int next_offs, int bw, int bh,
do {
code = *src++;
if (code == 0xFD) {
- // FIXME: Not implemented yet
+ t = src[0];
+ t += (t << 8) + (t << 16) + (t << 24);
+ *(uint32 *)(dst + 0) = t;
+ *(uint32 *)(dst + 320) = t;
+ *(uint32 *)(dst + 320 * 2) = t;
+ *(uint32 *)(dst + 320 * 3) = t;
src += 1;
dst += 4;
} else if (code == 0xFE) {
- // FIXME: Not implemented yet
+ t = src[0];
+ t += (t << 8) + (t << 16) + (t << 24);
+ *(uint32 *)(dst + 0) = t;
+ t = src[1];
+ t += (t << 8) + (t << 16) + (t << 24);
+ *(uint32 *)(dst + 320) = t;
+ t = src[2];
+ t += (t << 8) + (t << 16) + (t << 24);
+ *(uint32 *)(dst + 320 * 2) = t;
+ t = src[3];
+ t += (t << 8) + (t << 16) + (t << 24);
+ *(uint32 *)(dst + 320 * 3) = t;
src += 4;
dst += 4;
} else if (code == 0xFF) {