INT32 x;
INT32 lim = l->Limit[q];
- INT16* d = t->Delta + 0x100;
+ INT16* d = t->Delta;
memset(t->Delta, 0, sizeof(t->Delta));
+ t->Limit = lim;
+
for (x = 0; x < lim; x++) {
INT32 i = lim + x;
- INT32 v = lim - x;
- if (-i >= -0x100) {
- d[-i] = -v;
+ if (127 - i >= 0) {
+ d[127 - i] = x - lim;
}
- d[-x] = -x;
- d[ x] = x;
+ d[127 - x] = -x;
+ d[127 + x] = x;
- if (i < 0x200) {
- d[i] = v;
+ if (127 + i < 256) {
+ d[127 + i] = lim - x;
}
}
#if 0
printf("FL: %d\n", lim);
- for (x = 0; x < 256*2; x++) {
+ for (x = 0; x < 256; x++) {
printf("%d", t->Delta[x]);
if ((x % 16) == 15) {
printf("\n");
UINT8* b,
INT32 s)
{
- const INT16* d = t->Delta + 0x100 / 2 + 1;
+ const INT16* d = t->Delta + 127;
INT32 p0[2];
INT32 p1[2];
q1[1] = 255;
for (; p < end; p += s) {
- INT32 v = d[((p[-2] - p[1]) - 3 * (p[0] - p[-1]) + 4) >> 3];
+ INT32 x = (p[-2] - p[1]) + 3 * (p[0] - p[-1]);
+ INT32 v = d[(x + 4) >> 3];
p0[0] = p[-1] + v;
p1[0] = p[ 0] - v;
UINT8* b,
INT32 s)
{
- const INT16* d = t->Delta + 0x100 / 2 + 1;
+ const INT16* d = t->Delta + 127;
INT32 p0[2];
INT32 p1[2];
q1[1] = 255;
for (; p < end; p++) {
- INT32 v = d[((p[-2 * s] - p[1 * s]) - 3 * (p[0] - p[-1 * s]) + 4) >> 3];
+ INT32 x = (p[-2 * s] - p[1 * s]) + 3 * (p[0] - p[-1 * s]);
+ INT32 v = d[(x + 4) >> 3];
p0[0] = p[-s] + v;
p1[0] = p[ 0] - v;