aboutsummaryrefslogtreecommitdiff
path: root/scumm/smush
diff options
context:
space:
mode:
authorPaweł Kołodziejski2003-01-10 16:02:47 +0000
committerPaweł Kołodziejski2003-01-10 16:02:47 +0000
commitc6e7c8fdba64733d41114b9e6dca9d4434460173 (patch)
tree1f42418b22fc012a63f1369cb24ffcf0aa1abd59 /scumm/smush
parent19cb69424f1d98c5f131f76acb9d98af14fc6b18 (diff)
downloadscummvm-rg350-c6e7c8fdba64733d41114b9e6dca9d4434460173.tar.gz
scummvm-rg350-c6e7c8fdba64733d41114b9e6dca9d4434460173.tar.bz2
scummvm-rg350-c6e7c8fdba64733d41114b9e6dca9d4434460173.zip
changed table types
svn-id: r6384
Diffstat (limited to 'scumm/smush')
-rw-r--r--scumm/smush/codec47.cpp388
1 files changed, 200 insertions, 188 deletions
diff --git a/scumm/smush/codec47.cpp b/scumm/smush/codec47.cpp
index 33db060e36..93d77d77f1 100644
--- a/scumm/smush/codec47.cpp
+++ b/scumm/smush/codec47.cpp
@@ -26,139 +26,150 @@
#include "chunk.h"
#include "blitter.h"
-static const int16 codec37_table[] = {
- 0, 0, 1, 0, 2, 0, 3, 0, 3, 0, 3, 0, 3,
- 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 2, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 2, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 2, 0, 1, 0, 1, 0, 1, 0, 2, 0, 2, 0, 0,
- 0, 2, 0, 5, 0, 7, 0, 7, 0, 7, 0, 7, 0,
- 7, 0, 7, 0, 5, 0, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 0, 3, 0, 4, 0, 6, 0, 7, 0, 7, 0, 7,
- 0, 7, 0, 6, 0, 4, 0, 3, 0, 1, 0, -1, -1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 2, 0, 3, 0, 5, 0, 8, 0, 13, 0, 21, 0,
- -1, 0, -2, 0, -3, 0, -5, 0, -8, 0,-13, 0,-17,
- 0,-21, 0, 0, 1, 1, 1, 2, 1, 3, 1, 5, 1,
- 8, 1, 13, 1, 21, 1, -1, 1, -2, 1, -3, 1, -5,
- 1, -8, 1,-13, 1,-17, 1,-21, 1, 0, 2, 1, 2,
- 2, 2, 3, 2, 5, 2, 8, 2, 13, 2, 21, 2, -1,
- 2, -2, 2, -3, 2, -5, 2, -8, 2,-13, 2,-17, 2,
- -21, 2, 0, 3, 1, 3, 2, 3, 3, 3, 5, 3, 8,
- 3, 13, 3, 21, 3, -1, 3, -2, 3, -3, 3, -5, 3,
- -8, 3,-13, 3,-17, 3,-21, 3, 0, 5, 1, 5, 2,
- 5, 3, 5, 5, 5, 8, 5, 13, 5, 21, 5, -1, 5,
- -2, 5, -3, 5, -5, 5, -8, 5,-13, 5,-17, 5,-21,
- 5, 0, 8, 1, 8, 2, 8, 3, 8, 5, 8, 8, 8,
- 13, 8, 21, 8, -1, 8, -2, 8, -3, 8, -5, 8, -8,
- 8,-13, 8,-17, 8,-21, 8, 0, 13, 1, 13, 2, 13,
- 3, 13, 5, 13, 8, 13, 13, 13, 21, 13, -1, 13, -2,
- 13, -3, 13, -5, 13, -8, 13,-13, 13,-17, 13,-21, 13,
- 0, 21, 1, 21, 2, 21, 3, 21, 5, 21, 8, 21, 13,
- 21, 21, 21, -1, 21, -2, 21, -3, 21, -5, 21, -8, 21,
- -13, 21,-17, 21,-21, 21, 0, -1, 1, -1, 2, -1, 3,
- -1, 5, -1, 8, -1, 13, -1, 21, -1, -1, -1, -2, -1,
- -3, -1, -5, -1, -8, -1,-13, -1,-17, -1,-21, -1, 0,
- -2, 1, -2, 2, -2, 3, -2, 5, -2, 8, -2, 13, -2,
- 21, -2, -1, -2, -2, -2, -3, -2, -5, -2, -8, -2,-13,
- -2,-17, -2,-21, -2, 0, -3, 1, -3, 2, -3, 3, -3,
- 5, -3, 8, -3, 13, -3, 21, -3, -1, -3, -2, -3, -3,
- -3, -5, -3, -8, -3,-13, -3,-17, -3,-21, -3, 0, -5,
- 1, -5, 2, -5, 3, -5, 5, -5, 8, -5, 13, -5, 21,
- -5, -1, -5, -2, -5, -3, -5, -5, -5, -8, -5,-13, -5,
- -17, -5,-21, -5, 0, -8, 1, -8, 2, -8, 3, -8, 5,
- -8, 8, -8, 13, -8, 21, -8, -1, -8, -2, -8, -3, -8,
- -5, -8, -8, -8,-13, -8,-17, -8,-21, -8, 0,-13, 1,
- -13, 2,-13, 3,-13, 5,-13, 8,-13, 13,-13, 21,-13,
- -1,-13, -2,-13, -3,-13, -5,-13, -8,-13,-13,-13,-17,
- -13,-21,-13, 0,-17, 1,-17, 2,-17, 3,-17, 5,-17,
- 8,-17, 13,-17, 21,-17, -1,-17, -2,-17, -3,-17, -5,
- -17, -8,-17,-13,-17,-17,-17,-21,-17, 0,-21, 1,-21,
- 2,-21, 3,-21, 5,-21, 8,-21, 13,-21, 21,-21, -1,
- -21, -2,-21, -3,-21, -5,-21, -8,-21,-13,-21,-17,-21,
- 0, 0, -8,-29, 8,-29,-18,-25, 17,-25, 0,-23, -6,
- -22, 6,-22,-13,-19, 12,-19, 0,-18, 25,-18,-25,-17,
- -5,-17, 5,-17,-10,-15, 10,-15, 0,-14, -4,-13, 4,
- -13, 19,-13,-19,-12, -8,-11, -2,-11, 0,-11, 2,-11,
- 8,-11,-15,-10, -4,-10, 4,-10, 15,-10, -6, -9, -1,
- -9, 1, -9, 6, -9,-29, -8,-11, -8, -8, -8, -3, -8,
- 3, -8, 8, -8, 11, -8, 29, -8, -5, -7, -2, -7, 0,
- -7, 2, -7, 5, -7,-22, -6, -9, -6, -6, -6, -3, -6,
- -1, -6, 1, -6, 3, -6, 6, -6, 9, -6, 22, -6,-17,
- -5, -7, -5, -4, -5, -2, -5, 0, -5, 2, -5, 4, -5,
- 7, -5, 17, -5,-13, -4,-10, -4, -5, -4, -3, -4, -1,
- -4, 0, -4, 1, -4, 3, -4, 5, -4, 10, -4, 13, -4,
- -8, -3, -6, -3, -4, -3, -3, -3, -2, -3, -1, -3, 0,
- -3, 1, -3, 2, -3, 4, -3, 6, -3, 8, -3,-11, -2,
- -7, -2, -5, -2, -3, -2, -2, -2, -1, -2, 0, -2, 1,
- -2, 2, -2, 3, -2, 5, -2, 7, -2, 11, -2, -9, -1,
- -6, -1, -4, -1, -3, -1, -2, -1, -1, -1, 0, -1, 1,
- -1, 2, -1, 3, -1, 4, -1, 6, -1, 9, -1,-31, 0,
- -23, 0,-18, 0,-14, 0,-11, 0, -7, 0, -5, 0, -4,
- 0, -3, 0, -2, 0, -1, 0, 0,-31, 1, 0, 2, 0,
- 3, 0, 4, 0, 5, 0, 7, 0, 11, 0, 14, 0, 18,
- 0, 23, 0, 31, 0, -9, 1, -6, 1, -4, 1, -3, 1,
- -2, 1, -1, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4,
- 1, 6, 1, 9, 1,-11, 2, -7, 2, -5, 2, -3, 2,
- -2, 2, -1, 2, 0, 2, 1, 2, 2, 2, 3, 2, 5,
- 2, 7, 2, 11, 2, -8, 3, -6, 3, -4, 3, -2, 3,
- -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 6,
- 3, 8, 3,-13, 4,-10, 4, -5, 4, -3, 4, -1, 4,
- 0, 4, 1, 4, 3, 4, 5, 4, 10, 4, 13, 4,-17,
- 5, -7, 5, -4, 5, -2, 5, 0, 5, 2, 5, 4, 5,
- 7, 5, 17, 5,-22, 6, -9, 6, -6, 6, -3, 6, -1,
- 6, 1, 6, 3, 6, 6, 6, 9, 6, 22, 6, -5, 7,
- -2, 7, 0, 7, 2, 7, 5, 7,-29, 8,-11, 8, -8,
- 8, -3, 8, 3, 8, 8, 8, 11, 8, 29, 8, -6, 9,
- -1, 9, 1, 9, 6, 9,-15, 10, -4, 10, 4, 10, 15,
- 10, -8, 11, -2, 11, 0, 11, 2, 11, 8, 11, 19, 12,
- -19, 13, -4, 13, 4, 13, 0, 14,-10, 15, 10, 15, -5,
- 17, 5, 17, 25, 17,-25, 18, 0, 18,-12, 19, 13, 19,
- -6, 22, 6, 22, 0, 23,-17, 25, 18, 25, -8, 29, 8,
- 29, 0, 31, 0, 0, -6,-22, 6,-22,-13,-19, 12,-19,
- 0,-18, -5,-17, 5,-17,-10,-15, 10,-15, 0,-14, -4,
- -13, 4,-13, 19,-13,-19,-12, -8,-11, -2,-11, 0,-11,
- 2,-11, 8,-11,-15,-10, -4,-10, 4,-10, 15,-10, -6,
- -9, -1, -9, 1, -9, 6, -9,-11, -8, -8, -8, -3, -8,
- 0, -8, 3, -8, 8, -8, 11, -8, -5, -7, -2, -7, 0,
- -7, 2, -7, 5, -7,-22, -6, -9, -6, -6, -6, -3, -6,
- -1, -6, 1, -6, 3, -6, 6, -6, 9, -6, 22, -6,-17,
- -5, -7, -5, -4, -5, -2, -5, -1, -5, 0, -5, 1, -5,
- 2, -5, 4, -5, 7, -5, 17, -5,-13, -4,-10, -4, -5,
- -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 2, -4,
- 3, -4, 5, -4, 10, -4, 13, -4, -8, -3, -6, -3, -4,
- -3, -3, -3, -2, -3, -1, -3, 0, -3, 1, -3, 2, -3,
- 3, -3, 4, -3, 6, -3, 8, -3,-11, -2, -7, -2, -5,
- -2, -4, -2, -3, -2, -2, -2, -1, -2, 0, -2, 1, -2,
- 2, -2, 3, -2, 4, -2, 5, -2, 7, -2, 11, -2, -9,
- -1, -6, -1, -5, -1, -4, -1, -3, -1, -2, -1, -1, -1,
- 0, -1, 1, -1, 2, -1, 3, -1, 4, -1, 5, -1, 6,
- -1, 9, -1,-23, 0,-18, 0,-14, 0,-11, 0, -7, 0,
- -5, 0, -4, 0, -3, 0, -2, 0, -1, 0, 0,-23, 1,
- 0, 2, 0, 3, 0, 4, 0, 5, 0, 7, 0, 11, 0,
- 14, 0, 18, 0, 23, 0, -9, 1, -6, 1, -5, 1, -4,
- 1, -3, 1, -2, 1, -1, 1, 0, 1, 1, 1, 2, 1,
- 3, 1, 4, 1, 5, 1, 6, 1, 9, 1,-11, 2, -7,
- 2, -5, 2, -4, 2, -3, 2, -2, 2, -1, 2, 0, 2,
- 1, 2, 2, 2, 3, 2, 4, 2, 5, 2, 7, 2, 11,
- 2, -8, 3, -6, 3, -4, 3, -3, 3, -2, 3, -1, 3,
- 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 6, 3, 8,
- 3,-13, 4,-10, 4, -5, 4, -3, 4, -2, 4, -1, 4,
- 0, 4, 1, 4, 2, 4, 3, 4, 5, 4, 10, 4, 13,
- 4,-17, 5, -7, 5, -4, 5, -2, 5, -1, 5, 0, 5,
- 1, 5, 2, 5, 4, 5, 7, 5, 17, 5,-22, 6, -9,
- 6, -6, 6, -3, 6, -1, 6, 1, 6, 3, 6, 6, 6,
- 9, 6, 22, 6, -5, 7, -2, 7, 0, 7, 2, 7, 5,
- 7,-11, 8, -8, 8, -3, 8, 0, 8, 3, 8, 8, 8,
- 11, 8, -6, 9, -1, 9, 1, 9, 6, 9,-15, 10, -4,
- 10, 4, 10, 15, 10, -8, 11, -2, 11, 0, 11, 2, 11,
- 8, 11, 19, 12,-19, 13, -4, 13, 4, 13, 0, 14,-10,
- 15, 10, 15, -5, 17, 5, 17, 0, 18,-12, 19, 13, 19,
- -6, 22, 6, 22, 0, 23
+static int32 codec37_table[] = {
+ 0, 1, 2, 3, 3, 3,
+ 3, 2, 1, 0, 0, 0,
+ 1, 2, 2, 1, 0, 0,
+ 0, 0, 1, 2, 3, 3,
+ 3, 3, 2, 1, 1, 1,
+ 2, 2, 0, 2, 5, 7,
+ 7, 7, 7, 7, 7, 5,
+ 2, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1, 3,
+ 4, 6, 7, 7, 7, 7,
+ 6, 4, 3, 1, -1, 0,
+ 0, 0, 0, 0, 0, 1,
+ 2, 3, 5, 8, 13, 21,
+ 65535, 65534, 65533, 65531, 65528, 65523,
+ 65519, 65515, 65536, 65537, 65538, 65539,
+ 65541, 65544, 65549, 65557, 131071, 131070,
+ 131069, 131067, 131064, 131059, 131055, 131051,
+ 131072, 131073, 131074, 131075, 131077, 131080,
+ 131085, 131093, 196607, 196606, 196605, 196603,
+ 196600, 196595, 196591, 196587, 196608, 196609,
+ 196610, 196611, 196613, 196616, 196621, 196629,
+ 262143, 262142, 262141, 262139, 262136, 262131,
+ 262127, 262123, 327680, 327681, 327682, 327683,
+ 327685, 327688, 327693, 327701, 393215, 393214,
+ 393213, 393211, 393208, 393203, 393199, 393195,
+ 524288, 524289, 524290, 524291, 524293, 524296,
+ 524301, 524309, 589823, 589822, 589821, 589819,
+ 589816, 589811, 589807, 589803, 851968, 851969,
+ 851970, 851971, 851973, 851976, 851981, 851989,
+ 917503, 917502, 917501, 917499, 917496, 917491,
+ 917487, 917483, 1376256, 1376257, 1376258, 1376259,
+ 1376261, 1376264, 1376269, 1376277, 1441791, 1441790,
+ 1441789, 1441787, 1441784, 1441779, 1441775, 1441771,
+ -65536, -65535, -65534, -65533, -65531, -65528,
+ -65523, -65515, -1, -2, -3, -5,
+ -8, -13, -17, -21, -131072, -131071,
+ -131070, -131069, -131067, -131064, -131059, -131051,
+ -65537, -65538, -65539, -65541, -65544, -65549,
+ -65553, -65557, -196608, -196607, -196606, -196605,
+ -196603, -196600, -196595, -196587, -131073, -131074,
+ -131075, -131077, -131080, -131085, -131089, -131093,
+ -327680, -327679, -327678, -327677, -327675, -327672,
+ -327667, -327659, -262145, -262146, -262147, -262149,
+ -262152, -262157, -262161, -262165, -524288, -524287,
+ -524286, -524285, -524283, -524280, -524275, -524267,
+ -458753, -458754, -458755, -458757, -458760, -458765,
+ -458769, -458773, -851968, -851967, -851966, -851965,
+ -851963, -851960, -851955, -851947, -786433, -786434,
+ -786435, -786437, -786440, -786445, -786449, -786453,
+-1114112,-1114111,-1114110,-1114109,-1114107,-1114104,
+-1114099,-1114091,-1048577,-1048578,-1048579,-1048581,
+-1048584,-1048589,-1048593,-1048597,-1376256,-1376255,
+-1376254,-1376253,-1376251,-1376248,-1376243,-1376235,
+-1310721,-1310722,-1310723,-1310725,-1310728,-1310733,
+-1310737, 0,-1835016,-1900536,-1572882,-1638383,
+-1507328,-1376262,-1441786,-1179661,-1245172,-1179648,
+-1179623,-1048601,-1048581,-1114107, -917514, -983030,
+ -917504, -786436, -851964, -851949, -720915, -655368,
+ -655362, -720896, -720894, -720888, -589839, -589828,
+ -655356, -655345, -524294, -524289, -589823, -589818,
+ -458781, -458763, -458760, -458755, -524285, -524280,
+ -524277, -524259, -393221, -393218, -458752, -458750,
+ -458747, -327702, -327689, -327686, -327683, -327681,
+ -393215, -393213, -393210, -393207, -393194, -262161,
+ -262151, -262148, -262146, -327680, -327678, -327676,
+ -327673, -327663, -196621, -196618, -196613, -196611,
+ -196609, -262144, -262143, -262141, -262139, -262134,
+ -262131, -131080, -131078, -131076, -131075, -131074,
+ -131073, -196608, -196607, -196606, -196604, -196602,
+ -196600, -65547, -65543, -65541, -65539, -65538,
+ -65537, -131072, -131071, -131070, -131069, -131067,
+ -131065, -131061, -9, -6, -4, -3,
+ -2, -1, -65536, -65535, -65534, -65533,
+ -65532, -65530, -65527, 65505, 65513, 65518,
+ 65522, 65525, 65529, 65531, 65532, 65533,
+ 65534, 65535,-2031616, 1, 2, 3,
+ 4, 5, 7, 11, 14, 18,
+ 23, 31, 131063, 131066, 131068, 131069,
+ 131070, 131071, 65536, 65537, 65538, 65539,
+ 65540, 65542, 65545, 196597, 196601, 196603,
+ 196605, 196606, 196607, 131072, 131073, 131074,
+ 131075, 131077, 131079, 131083, 262136, 262138,
+ 262140, 262142, 262143, 196608, 196609, 196610,
+ 196611, 196612, 196614, 196616, 327667, 327670,
+ 327675, 327677, 327679, 262144, 262145, 262147,
+ 262149, 262154, 262157, 393199, 393209, 393212,
+ 393214, 327680, 327682, 327684, 327687, 327697,
+ 458730, 458743, 458746, 458749, 458751, 393217,
+ 393219, 393222, 393225, 393238, 524283, 524286,
+ 458752, 458754, 458757, 589795, 589813, 589816,
+ 589821, 524291, 524296, 524299, 524317, 655354,
+ 655359, 589825, 589830, 720881, 720892, 655364,
+ 655375, 786424, 786430, 720896, 720898, 720904,
+ 786451, 917485, 917500, 851972, 917504, 1048566,
+ 983050, 1179643, 1114117, 1114137, 1245159, 1179648,
+ 1310708, 1245197, 1507322, 1441798, 1507328, 1703919,
+ 1638418, 1966072, 1900552, 2031616, 0,-1376262,
+-1441786,-1179661,-1245172,-1179648,-1048581,-1114107,
+ -917514, -983030, -917504, -786436, -851964, -851949,
+ -720915, -655368, -655362, -720896, -720894, -720888,
+ -589839, -589828, -655356, -655345, -524294, -524289,
+ -589823, -589818, -458763, -458760, -458755, -524288,
+ -524285, -524280, -524277, -393221, -393218, -458752,
+ -458750, -458747, -327702, -327689, -327686, -327683,
+ -327681, -393215, -393213, -393210, -393207, -393194,
+ -262161, -262151, -262148, -262146, -262145, -327680,
+ -327679, -327678, -327676, -327673, -327663, -196621,
+ -196618, -196613, -196611, -196610, -196609, -262144,
+ -262143, -262142, -262141, -262139, -262134, -262131,
+ -131080, -131078, -131076, -131075, -131074, -131073,
+ -196608, -196607, -196606, -196605, -196604, -196602,
+ -196600, -65547, -65543, -65541, -65540, -65539,
+ -65538, -65537, -131072, -131071, -131070, -131069,
+ -131068, -131067, -131065, -131061, -9, -6,
+ -5, -4, -3, -2, -1, -65536,
+ -65535, -65534, -65533, -65532, -65531, -65530,
+ -65527, 65513, 65518, 65522, 65525, 65529,
+ 65531, 65532, 65533, 65534, 65535,-1507328,
+ 1, 2, 3, 4, 5, 7,
+ 11, 14, 18, 23, 131063, 131066,
+ 131067, 131068, 131069, 131070, 131071, 65536,
+ 65537, 65538, 65539, 65540, 65541, 65542,
+ 65545, 196597, 196601, 196603, 196604, 196605,
+ 196606, 196607, 131072, 131073, 131074, 131075,
+ 131076, 131077, 131079, 131083, 262136, 262138,
+ 262140, 262141, 262142, 262143, 196608, 196609,
+ 196610, 196611, 196612, 196614, 196616, 327667,
+ 327670, 327675, 327677, 327678, 327679, 262144,
+ 262145, 262146, 262147, 262149, 262154, 262157,
+ 393199, 393209, 393212, 393214, 393215, 327680,
+ 327681, 327682, 327684, 327687, 327697, 458730,
+ 458743, 458746, 458749, 458751, 393217, 393219,
+ 393222, 393225, 393238, 524283, 524286, 458752,
+ 458754, 458757, 589813, 589816, 589821, 524288,
+ 524291, 524296, 524299, 655354, 655359, 589825,
+ 589830, 720881, 720892, 655364, 655375, 786424,
+ 786430, 720896, 720898, 720904, 786451, 917485,
+ 917500, 851972, 917504, 1048566, 983050, 1179643,
+ 1114117, 1179648, 1310708, 1245197, 1507322, 1441798,
+ 1507328
};
-static const int16 codec47_table[] = {
+static int16 codec47_table[] = {
0, 0, -1, -43, 6, -43, -9, -42, 13, -41,
-16, -40, 19, -39, -23, -36, 26, -34, -2, -33,
4, -33, -29, -32, -9, -32, 11, -31, -16, -29,
@@ -269,12 +280,9 @@ static const uint32 codec47_delta[] = {
static int32 last_table_width;
-static int16 smush_buf_big[49664];
-//static byte smush_mktable1[99072];
-static int16 smush_buf_small[16384];
-//static byte smush_mktable2[32768];
+static byte smush_buf_big[99328];
+static byte smush_buf_small[32768];
static byte smush_buffer[65536];
-
static int16 codec47_temp_table[256];
void mk_tables(int32 param) {
@@ -287,14 +295,14 @@ void mk_tables(int32 param) {
byte * ptr;
if (param == 8) {
- table37_1 = (int32*)&codec37_table[64];
- table37_2 = (int32*)&codec37_table[96];
- ptr = (byte*)&smush_buf_big + 384;
+ table37_1 = &codec37_table[32];
+ table37_2 = &codec37_table[48];
+ ptr = smush_buf_big + 384;
for (l = 0; l < 256; l++) {
*ptr = 0;
ptr += 388;
}
- ptr = (byte*)&smush_buf_big + 385;
+ ptr = smush_buf_big + 385;
for (l = 0; l < 256; l++) {
*ptr = 0;
ptr += 388;
@@ -302,14 +310,14 @@ void mk_tables(int32 param) {
}
if (param == 4) {
- table37_1 = (int32*)&codec37_table[0];
- table37_2 = (int32*)&codec37_table[32];
- ptr = (byte*)&smush_buf_small + 96;
+ table37_1 = &codec37_table[0];
+ table37_2 = &codec37_table[16];
+ ptr = smush_buf_small + 96;
for (l = 0; l < 256; l++) {
*ptr = 0;
ptr += 128;
}
- ptr = (byte*)&smush_buf_small + 97;
+ ptr = smush_buf_small + 97;
for (l = 0; l < 256; l++) {
*ptr = 0;
ptr += 128;
@@ -327,7 +335,7 @@ void mk_tables(int32 param) {
tmp_table37_2_2 = table37_2;
count_2 = 16;
do {
- tmp = *(int32*)(tmp_table37_2_1);
+ tmp = *(tmp_table37_2_1);
tmp_value1 = tmp;
if (tmp == 0) {
b1 = 0;
@@ -338,7 +346,7 @@ void mk_tables(int32 param) {
goto label3;
}
b1 = 2;
- tmp = *(int32*)(tmp_table37_1_1);
+ tmp = *(tmp_table37_1_1);
if (tmp != 0) {
b1 = 0;
tmp -= param;
@@ -348,7 +356,7 @@ void mk_tables(int32 param) {
b1 = 4;
}
label3:
- tmp = *(int32*)(tmp_table37_2_2);
+ tmp = *(tmp_table37_2_2);
tmp_value2 = tmp;
if (tmp == 0) {
b2 = 0;
@@ -358,7 +366,7 @@ label3:
b2 = 1;
goto label4;
}
- tmp = *(int32*)(tmp_table37_1_2);
+ tmp = *(tmp_table37_1_2);
if (tmp == 0) {
b2 = 2;
goto label4;
@@ -376,8 +384,8 @@ label4:
table[d] = 0;
} while (d-- != 0);
}
- value_table37_1_1 = *(int32*)(tmp_table37_1_1);
- value_table37_1_2 = *(int32*)(tmp_table37_1_2);
+ value_table37_1_1 = *(tmp_table37_1_1);
+ value_table37_1_2 = *(tmp_table37_1_2);
tmp_c = abs(tmp_value2 - tmp_value1);
tmp_a = abs(value_table37_1_2 - value_table37_1_1);
if (tmp_c <= tmp_a) {
@@ -425,7 +433,7 @@ label4:
tmp_c *= tmp_a;
tmp_c += tmp_d;
tmp_table = &table[tmp_c];
- *(int32*)(tmp_table) = 1;
+ *(tmp_table) = 1;
if (b1 != 2)
goto label8;
if (b2 == 3)
@@ -451,7 +459,7 @@ label11:
tmp_c = param;
tmp_c <<= 2;
do {
- *(int32*)(tmp_table) = 1;
+ *(tmp_table) = 1;
tmp_table -= tmp_c / 4;
} while (--tmp_a >= 0);
goto label26;
@@ -474,7 +482,7 @@ label15:
tmp_d = param;
tmp_d -= tmp_a;
do {
- *(int32*)(tmp_table) = 1;
+ *(tmp_table) = 1;
tmp_table += tmp_c / 4;
} while (--tmp_d != 0);
goto label26;
@@ -506,7 +514,7 @@ label21:
tmp_c -= variable4;
d = tmp_c;
do {
- *(uint32*)(tmp_table++) = 1;
+ *(tmp_table++) = 1;
} while (--d != 0);
goto label26;
label22:
@@ -525,7 +533,7 @@ label25:
tmp_c = variable4 + 1;
d = tmp_c;
do {
- *(uint32*)(tmp_table--) = 1;
+ *(tmp_table--) = 1;
} while (--d != 0);
}
label26:;
@@ -536,11 +544,11 @@ label27:
tmp_c = tmp_param_tmp;
do {
if (table[tmp_c] != 0) {
- *((byte*)&smush_buf_big + 256 + s + *((byte*)&smush_buf_big + 384 + s)) = (byte)tmp_c;
- *((byte*)&smush_buf_big + 384 + s) = *((byte*)&smush_buf_big + 384 + s) + 1;
+ smush_buf_big[256 + s + smush_buf_big[384 + s]] = (byte)tmp_c;
+ smush_buf_big[384 + s]++;
} else {
- *((byte*)&smush_buf_big + 320 + s + *((byte*)&smush_buf_big + 385 + s)) = (byte)tmp_c;
- *((byte*)&smush_buf_big + 385 + s) = *((byte*)&smush_buf_big + 385 + s) + 1;
+ smush_buf_big[320 + s + smush_buf_big[385 + s]] = (byte)tmp_c;
+ smush_buf_big[385 + s]++;
}
} while (tmp_c-- != 0);
}
@@ -548,11 +556,11 @@ label27:
tmp_c = tmp_param_tmp;
do {
if (table[tmp_c] != 0) {
- *((byte*)&smush_buf_small + 64 + p + *((byte*)&smush_buf_small + 96 + p)) = (byte)tmp_c;
- *((byte*)&smush_buf_small + 96 + p) = *((byte*)&smush_buf_small + 96 + p) + 1;
+ smush_buf_small[64 + p + smush_buf_small[96 + p]] = (byte)tmp_c;
+ smush_buf_small[96 + p]++;
} else {
- *((byte*)&smush_buf_small + 80 + p + *((byte*)&smush_buf_small + 97 + p)) = (byte)tmp_c;
- *((byte*)&smush_buf_small + 97 + p) = *((byte*)&smush_buf_small + 97 + p) + 1;
+ smush_buf_small[80 + p + smush_buf_small[97 + p]] = (byte)tmp_c;
+ smush_buf_small[97 + p]++;
}
} while (tmp_c-- != 0);
}
@@ -575,15 +583,15 @@ void make_tables(int32 width) {
int32 a, c, d, s, tmp_value, tmp_offset;
int16 tmp, tmp2;
- int16 * tmp_ptr = (int16*)&codec47_temp_table;
- int16 * ptr_table = (int16*)&codec47_table[1];
+ int16 * tmp_ptr = codec47_temp_table;
+ int16 * ptr_table = &codec47_table[1];
do {
- int16 tmp_word = *(int16*)(ptr_table);
+ int16 tmp_word = *(ptr_table);
ptr_table += 2;
tmp_word *= (int16)width;
- tmp_word += *(int16*)(ptr_table - 3);
+ tmp_word += *(ptr_table - 3);
tmp_ptr++;
- *(int16*)(tmp_ptr - 1) = tmp_word;
+ *(tmp_ptr - 1) = tmp_word;
} while (tmp_ptr < &codec47_temp_table[255]);
a = 0;
c = 0;
@@ -591,42 +599,44 @@ void make_tables(int32 width) {
tmp_value = 0;
do {
d = 0;
- tmp = *((byte*)&smush_buf_small + 96 + c);
+ tmp = smush_buf_small[96 + c];
if (tmp != 0) {
do {
- tmp = *((byte*)&smush_buf_small + 64 + c + d);
+ tmp = smush_buf_small[64 + c + d];
tmp2 = tmp;
tmp2 >>= 2;
tmp &= 3;
tmp2 &= 0xFFFF00FF;
tmp2 *= (int16)width;
tmp2 += tmp;
- smush_buf_small[s + d] = tmp2;
+ smush_buf_small[(s + d) * 2] = (byte)tmp2;
+ smush_buf_small[(s + d) * 2 + 1] = tmp2 >> 8;
d++;
- tmp = *((byte*)&smush_buf_small + 96 + c);
+ tmp = smush_buf_small[96 + c];
} while (tmp > d);
}
d = 0;
tmp = *((byte*)&smush_buf_small + 97 + c);
if (tmp != 0) {
do {
- tmp = *((byte*)&smush_buf_small + 80 + c + d);
+ tmp = smush_buf_small[80 + c + d];
tmp2 = tmp;
tmp2 >>= 2;
tmp &= 3;
tmp2 &= 0xFFFF00FF;
tmp2 *= (int16)width;
tmp2 += tmp;
- smush_buf_small[16 + s + d] = tmp2;
+ smush_buf_small[32 + (s + d) * 2] = (byte)tmp2;
+ smush_buf_small[32 + (s + d) * 2 + 1] = tmp2 >> 8;
d++;
- tmp = *((byte*)&smush_buf_small + 97 + c);
+ tmp = smush_buf_small[97 + c];
} while (tmp > d);
}
d = 0;
tmp = *((byte*)&smush_buf_big + 384 + a);
if (tmp != 0) {
do {
- tmp = *((byte*)&smush_buf_big + 256 + a + d);
+ tmp = smush_buf_big[256 + a + d];
tmp2 = tmp >> 3;
tmp = tmp & 7;
tmp2 &= 0xFFFF00FF;
@@ -635,15 +645,16 @@ void make_tables(int32 width) {
tmp_offset = tmp_value;
tmp_offset += d;
d++;
- smush_buf_big[tmp_offset] = tmp2;
- tmp = *((byte*)&smush_buf_big + 384 + a);
+ smush_buf_big[tmp_offset * 2] = (byte)tmp2;
+ smush_buf_big[tmp_offset * 2 + 1] = tmp2 >> 8;
+ tmp = smush_buf_big[384 + a];
} while (tmp > d);
}
d = 0;
- tmp = *((byte*)&smush_buf_big + 385 + a);
+ tmp = smush_buf_big[385 + a];
if (tmp != 0) {
do {
- tmp = *((byte*)&smush_buf_big + 320 + a + d);
+ tmp = smush_buf_big[320 + a + d];
tmp2 = tmp >> 3;
tmp = tmp & 7;
tmp2 &= 0xFFFF00FF;
@@ -652,8 +663,9 @@ void make_tables(int32 width) {
tmp_offset = tmp_value;
tmp_offset += d;
d++;
- smush_buf_big[64 + tmp_offset] = tmp2;
- tmp = *((byte*)&smush_buf_big + 385 + a);
+ smush_buf_big[128 + (tmp_offset * 2)] = (byte)tmp2;
+ smush_buf_big[128 + (tmp_offset * 2) + 1] = tmp2 >> 8;
+ tmp = smush_buf_big[385 + a];
} while (tmp > d);
}
@@ -690,8 +702,8 @@ static int32 codec47_decode2_offset2;
static int16 * codec47_decode2_table;
static int32 d_pitch;
static byte * codec47_decode2_param_ptr;
-static int16 * codec47_decode2_buf_small;
-static int16 * codec47_decode2_buf_big;
+static byte * codec47_decode2_buf_small;
+static byte * codec47_decode2_buf_big;
static int32 codec47_subgfx_width_blocks;
static int32 codec47_subgfx_height_blocks;
static int32 codec47_subgfx_width_pixels;
@@ -772,7 +784,7 @@ static void codec47_subgfx_lev3() {
return;
}
if (code == 0xFD) {
- byte * tmp_ptr = (*(d_src + 1) << 7) + (byte*)codec47_decode2_buf_small;
+ byte * tmp_ptr = (*(d_src + 1) << 7) + codec47_decode2_buf_small;
int32 l = *(tmp_ptr + 96);
byte val = *(d_src + 2);
int16 * tmp_ptr2 = (int16*)tmp_ptr;
@@ -874,7 +886,7 @@ static void codec47_subgfx_lev2() {
tmp2 = tmp * 4;
tmp <<= 7;
int32 tmp3 = tmp2 + tmp * 2;
- byte * tmp_ptr = tmp + tmp3 + (byte*)codec47_decode2_buf_big;
+ byte * tmp_ptr = tmp + tmp3 + codec47_decode2_buf_big;
byte l = *(tmp_ptr + 384);
byte val = *(d_src + 2);
int16 * tmp_ptr2 = (int16*)tmp_ptr;
@@ -948,7 +960,7 @@ static void disp() {
static void decode2(byte * dst, byte * src, int32 offset1, int32 offset2, int32 pitch,
int16 * tmp_table, byte * param_ptr, int32 height, int32,
- int16 * buf_small, int16 * buf_big) {
+ byte * buf_small, byte * buf_big) {
d_dst = dst;
d_src = src;
codec47_decode2_offset1 = offset1;
@@ -1017,7 +1029,7 @@ Codec47Decoder::~Codec47Decoder() {
}
bool Codec47Decoder::decode(Blitter & dst, Chunk & src) {
- g_out = dst.getPtr();
+ g_out = _curBuf;
int32 width = getRect().width();
int32 height = getRect().height();
int32 offset1 = _deltaBufs[1] - _curBuf;