diff options
| -rw-r--r-- | scumm/bundle.cpp | 148 | 
1 files changed, 74 insertions, 74 deletions
| diff --git a/scumm/bundle.cpp b/scumm/bundle.cpp index 9b2bb39660..7adf5b9784 100644 --- a/scumm/bundle.cpp +++ b/scumm/bundle.cpp @@ -506,24 +506,24 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  			s = 0;  			j = 0;  			do { -				ptr = src + length + (k / 2); +				ptr = src + length + (k >> 1);  				if (k & 1) { -					r = c / 8; -					*(t_table + r + 2) = ((*(src + j) & 0x0f) << 4) | ((*(ptr + 1) & 0xf0) >> 4); -					*(t_table + r + 1) = (*(src + j) & 0xf0) | (*(t_table + r + 1)); +					r = c >> 3; +					t_table[r + 2] = ((src[j] & 0x0f) << 4) | (ptr[1] >> 4); +					t_table[r + 1] = (src[j] & 0xf0) | (t_table[r + 1]);  				} else { -					r = s / 8; -					*(t_table + r + 0) = ((*(src + j) & 0x0f) << 4) | (*ptr & 0x0f); -					*(t_table + r + 1) = (*(src + j) & 0xf0) >> 4; +					r = s >> 3; +					t_table[r + 0] = ((src[j] & 0x0f) << 4) | (ptr[0] & 0x0f); +					t_table[r + 1] = src[j] >> 4;  				}  				s += 12; +				c += 12;  				k++;  				j++; -				c += 12;  			} while (k < length);  		}  		offset1 = ((length - 1) * 3) / 2; -		*(t_table + offset1 + 1) = (*(t_table + offset1 + 1)) | *(src + length - 1) & 0xf0; +		t_table[offset1 + 1] = (t_table[offset1 + 1]) | (src[length - 1] & 0xf0);  		memcpy(src, t_table, output_size);  		free(t_table);  		break; @@ -544,25 +544,25 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  		k = 1;  		c = 0;  		s = 12; -		*t_table = (*(src + length)) >> 4; +		t_table[0] = src[length] / 16;  		t = length + k;  		j = 1;  		if (t > k) {  			do { -				ptr = src + length + (k / 2); +				ptr = src + length + (k >> 1);  				if (k & 1) { -					r = c / 8; -					*(t_table + r + 0) = (*(src + j - 1) & 0xf0) | (*(t_table + r)); -					*(t_table + r + 1) = ((*(src + j - 1) & 0x0f) << 4) | (*ptr & 0x0f); +					r = c >> 3; +					t_table[r + 0] = (src[j - 1] & 0xf0) | t_table[r]; +					t_table[r + 1] = ((src[j - 1] & 0x0f) << 4) | (ptr[0] & 0x0f);  				} else { -					r = s / 8; -					*(t_table + r + 0) = (*(src + j - 1) & 0xf0) >> 4; -					*(t_table + r - 1) = ((*(src + j - 1) & 0x0f) << 4) | ((*ptr & 0xf0) >> 4); +					r = s >> 3; +					t_table[r + 0] = src[j - 1] >> 4; +					t_table[r - 1] = ((src[j - 1] & 0x0f) << 4) | (ptr[0] >> 4);  				}  				s += 12; +				c += 12;  				k++;  				j++; -				c += 12;  			} while (k < t);  		}  		memcpy(src, t_table, output_size); @@ -586,25 +586,25 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  		c = 0;  		j = 0;  		s = -12; -		*t_table = *(output_size + src - 1); -		*(t_table + output_size - 1) = *(src + length - 1); +		t_table[0] = src[output_size - 1]; +		t_table[output_size - 1] = src[length - 1];  		t = length - 1;  		if (t > 0) {  			do { -				ptr = src + length + (k / 2); +				ptr = src + length + (k >> 1);  				if (k & 1) { -					r = s / 8; -					*(t_table + r + 2) = (*(src + j) & 0xf0) | *(t_table + r + 2); -					*(t_table + r + 3) = ((*(src + j) & 0x0f) << 4) | ((*ptr & 0xf0) >> 4); +					r = s >> 3; +					t_table[r + 2] = (src[j] & 0xf0) | *(t_table + r + 2); +					t_table[r + 3] = ((src[j] & 0x0f) << 4) | (ptr[0] >> 4);  				} else { -					r = c / 8; -					*(t_table + r + 2) = (*(src + j) & 0xf0) >> 4; -					*(t_table + r + 1) = ((*(src + j) & 0x0f) << 4) | (*ptr & 0x0f); +					r = c >> 3; +					t_table[r + 2] = src[j] >> 4; +					t_table[r + 1] = ((src[j] & 0x0f) << 4) | (ptr[0] & 0x0f);  				}  				s += 12; +				c += 12;  				k++;  				j++; -				c += 12;  			} while (k < t);  		}  		memcpy(src, t_table, output_size); @@ -632,8 +632,8 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  			offset1--;  			offset2 -= 2;  			offset3--; -			*(t_table + offset2 + 0) = *(src + offset1); -			*(t_table + offset2 + 1) = *(src + offset3); +			t_table[offset2 + 0] = src[offset1]; +			t_table[offset2 + 1] = src[offset3];  		} while (1);  		src = comp_output; @@ -643,27 +643,27 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  			c = -12;  			s = 0;  			do { -				j = length + (k / 2); +				j = length + (k >> 1);  				if (k & 1) { -					r = c / 8; -					t_tmp1 = *(t_table + k); -					t_tmp2 = *(t_table + j + 1); -					*(src + r + 2) = ((t_tmp1 & 0x0f) << 4) | ((t_tmp2 & 0xf0) >> 4); -					*(src + r + 1) = (*(src + r + 1)) | (t_tmp1 & 0xf0); +					r = c >> 3; +					t_tmp1 = t_table[k]; +					t_tmp2 = t_table[j + 1]; +					src[r + 2] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 >> 4); +					src[r + 1] = (src[r + 1]) | (t_tmp1 & 0xf0);  				} else { -					r = s / 8; -					t_tmp1 = *(t_table + k); -					t_tmp2 = *(t_table + j); -					*(src + r + 0) = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f); -					*(src + r + 1) = ((t_tmp1 & 0xf0) >> 4); +					r = s >> 3; +					t_tmp1 = t_table[k]; +					t_tmp2 = t_table[j]; +					src[r + 0] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f); +					src[r + 1] = t_tmp1 >> 4;  				}  				s += 12; -				k++;  				c += 12; +				k++;  			} while (k < length);  		}  		offset1 = ((length - 1) * 3) / 2; -		*(src + offset1 + 1) = (*(t_table + length) & 0xf0) | *(src + offset1 + 1); +		src[offset1 + 1] = (t_table[length] & 0xf0) | src[offset1 + 1];  		free(t_table);  		break; @@ -688,8 +688,8 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  			offset1--;  			offset2 -= 2;  			offset3--; -			*(t_table + offset2 + 0) = *(src + offset1); -			*(t_table + offset2 + 1) = *(src + offset3); +			t_table[offset2 + 0] = src[offset1]; +			t_table[offset2 + 1] = src[offset3];  		} while (1);  		src = comp_output; @@ -697,28 +697,28 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  		k = 1;  		c = 0;  		s = 12; -		t_tmp1 = (*(t_table + length)) >> 4; -		*(src) = t_tmp1; +		t_tmp1 = t_table[length] / 16; +		src[0] = t_tmp1;  		t = length + k;  		if (t > k) {  			do {  				j = length + (k / 2);  				if (k & 1) { -					r = c / 8; -					t_tmp1 = *(t_table + k - 1); -					t_tmp2 = *(t_table + j); -					*(src + r + 0) = (*(src + r)) | (t_tmp1 & 0xf0); -					*(src + r + 1) = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f); +					r = c >> 3; +					t_tmp1 = t_table[k - 1]; +					t_tmp2 = t_table[j]; +					src[r + 0] = (src[r]) | (t_tmp1 & 0xf0); +					src[r + 1] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f);  				} else { -					r = s / 8; -					t_tmp1 = *(t_table + k - 1); -					t_tmp2 = *(t_table + j); -					*(src + r + 0) = (t_tmp1 & 0xf0) >> 4; -					*(src + r - 1) = ((t_tmp1 & 0x0f) << 4) | ((t_tmp2 & 0xf0) >> 4); +					r = s >> 3; +					t_tmp1 = t_table[k - 1]; +					t_tmp2 = t_table[j]; +					src[r + 0] = t_tmp1 >> 4; +					src[r - 1] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 >> 4);  				}  				s += 12; -				k++;  				c += 12; +				k++;  			} while (k < t);  		}  		free(t_table); @@ -745,8 +745,8 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  			offset1--;  			offset2 -= 2;  			offset3--; -			*(t_table + offset2 + 0) = *(src + offset1); -			*(t_table + offset2 + 1) = *(src + offset3); +			t_table[offset2 + 0] = src[offset1]; +			t_table[offset2 + 1] = src[offset3];  		} while (1);  		src = comp_output; @@ -754,28 +754,28 @@ int32 Bundle::decompressCodec(int32 codec, byte *comp_input, byte *comp_output,  		k = 0;  		c = 0;  		s = -12; -		*(src) = *(output_size + t_table - 1); -		*(src + output_size - 1) = *(t_table + length - 1); +		src[0] = t_table[output_size - 1]; +		src[output_size - 1] = t_table[length - 1];  		t = length - 1;  		if (t > 0) {  			do { -				j = length + (k / 2); +				j = length + (k >> 1);  				if (k & 1) { -					r = s / 8; -					t_tmp1 = *(t_table + k); -					t_tmp2 = *(t_table + j); -					*(src + r + 2) = (*(src + r + 2)) | (t_tmp1 & 0xf0); -					*(src + r + 3) = ((t_tmp1 & 0x0f) << 4) | ((t_tmp2 & 0xf0) >> 4); +					r = s >> 3; +					t_tmp1 = t_table[k]; +					t_tmp2 = t_table[j]; +					src[r + 2] = (src[r + 2]) | (t_tmp1 & 0xf0); +					src[r + 3] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 >> 4);  				} else { -					r = c / 8; -					t_tmp1 = *(t_table + k); -					t_tmp2 = *(t_table + j); -					*(src + r + 2) = (t_tmp1 & 0xf0) >> 4; -					*(src + r + 1) = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f); +					r = c >> 3; +					t_tmp1 = t_table[k]; +					t_tmp2 = t_table[j]; +					src[r + 2] = t_tmp1 >> 4; +					src[r + 1] = ((t_tmp1 & 0x0f) << 4) | (t_tmp2 & 0x0f);  				}  				s += 12; -				k++;  				c += 12; +				k++;  			} while (k < t);  		}  		free(t_table); | 
