diff options
author | James Brown | 2002-04-30 07:40:56 +0000 |
---|---|---|
committer | James Brown | 2002-04-30 07:40:56 +0000 |
commit | 4924ecd7da546f1c6b7108edb705391ca0d36243 (patch) | |
tree | 2b1e205d334adab00cf1e8d8a291c990fe76a4df /insane.cpp | |
parent | 2d51c864b0963cbdb5d15f6e461e5c3bb2b81f59 (diff) | |
download | scummvm-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.cpp | 21 |
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) { |