diff options
| -rw-r--r-- | sword1/animation.cpp | 18 | ||||
| -rw-r--r-- | sword1/animation.h | 2 | ||||
| -rw-r--r-- | sword1/screen.cpp | 2 | ||||
| -rw-r--r-- | sword2/driver/animation.cpp | 18 | ||||
| -rw-r--r-- | sword2/driver/animation.h | 2 | ||||
| -rw-r--r-- | sword2/driver/render.cpp | 2 | 
6 files changed, 22 insertions, 22 deletions
diff --git a/sword1/animation.cpp b/sword1/animation.cpp index f3bb1c61c6..a1cfccf725 100644 --- a/sword1/animation.cpp +++ b/sword1/animation.cpp @@ -169,16 +169,16 @@ void AnimationState::buildLookup(int p, int lines) {  		pos = 0;  	} -	if (cr >= BITDEPTH) +	if (cr > BITDEPTH)  		return;  	for (ii = 0; ii < lines; ii++) {  		r = (-16 * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256; -		for (cb = 0; cb < BITDEPTH; cb++) { +		for (cb = 0; cb <= BITDEPTH; cb++) {  			g = (-16 * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256;  			b = (-16 * 256 + (int) (2.018 * 256) * ((cb << SHIFT) - 128)) / 256; -			for (y = 0; y < BITDEPTH; y++) { +			for (y = 0; y <= BITDEPTH; y++) {  				int idx, bst = 0;  				int dis = 2 * SQR(r - palettes[p].pal[0]) + 4 * SQR(g - palettes[p].pal[1]) + SQR(b - palettes[p].pal[2]); @@ -195,10 +195,10 @@ void AnimationState::buildLookup(int p, int lines) {  				g += (1 << SHIFT);  				b += (1 << SHIFT);  			} -			r -= 256; +			r -= (BITDEPTH+1)*(1 << SHIFT);  		}  		cr++; -		if (cr >= BITDEPTH) +		if (cr > BITDEPTH)  			return;  	}  } @@ -226,14 +226,14 @@ void AnimationState::buildLookup() {  	if (lookup)  		return; -	lookup = (OverlayColor *)calloc(BITDEPTH * BITDEPTH * 256, sizeof(OverlayColor)); +	lookup = (OverlayColor *)calloc((BITDEPTH+1) * (BITDEPTH+1) * 256, sizeof(OverlayColor));  	int y, cb, cr;  	int r, g, b;  	int pos = 0; -	for (cr = 0; cr < BITDEPTH; cr++) { -		for (cb = 0; cb < BITDEPTH; cb++) { +	for (cr = 0; cr <= BITDEPTH; cr++) { +		for (cb = 0; cb <= BITDEPTH; cb++) {  			for (y = 0; y < 256; y++) {  				r = ((y - 16) * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256;  				g = ((y - 16) * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256; @@ -264,7 +264,7 @@ void AnimationState::plotYUV(OverlayColor *lut, int width, int height, byte *con  	for (y = 0; y < height; y += 2) {  		for (x = 0; x < width; x += 2) { -			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * BITDEPTH) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * 256; +			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * (BITDEPTH+1)) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * 256;  			cpos++;  			ptr[linepos               ] = lut[i + dat[0][        ypos  ]]; diff --git a/sword1/animation.h b/sword1/animation.h index 0e0bea0694..29f4f41bce 100644 --- a/sword1/animation.h +++ b/sword1/animation.h @@ -96,7 +96,7 @@ private:  	int palnum;  	int maxPalnum; -	byte lookup[2][BITDEPTH * BITDEPTH * BITDEPTH]; +	byte lookup[2][(BITDEPTH+1) * (BITDEPTH+1) * (BITDEPTH+1)];  	byte *lut;  	byte *lut2;  	int lutcalcnum; diff --git a/sword1/screen.cpp b/sword1/screen.cpp index faac076d3d..c037b1ae72 100644 --- a/sword1/screen.cpp +++ b/sword1/screen.cpp @@ -943,7 +943,7 @@ void Screen::plotYUV(byte *lut, int width, int height, byte *const *dat) {  	for (y = 0; y < height; y += 2) {  		for (x = 0; x < width; x += 2) { -			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * BITDEPTH) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * BITDEPTH; +			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * (BITDEPTH+1)) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * (BITDEPTH+1);  			cpos++;  			buf[linepos          ] = lut[i + ((dat[0][        ypos  ] + ROUNDADD) >> SHIFT)]; diff --git a/sword2/driver/animation.cpp b/sword2/driver/animation.cpp index dcdc74069c..14accf6604 100644 --- a/sword2/driver/animation.cpp +++ b/sword2/driver/animation.cpp @@ -178,16 +178,16 @@ void AnimationState::buildLookup(int p, int lines) {  		pos = 0;  	} -	if (cr >= BITDEPTH) +	if (cr > BITDEPTH)  		return;  	for (ii = 0; ii < lines; ii++) {  		r = (-16 * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256; -		for (cb = 0; cb < BITDEPTH; cb++) { +		for (cb = 0; cb <= BITDEPTH; cb++) {  			g = (-16 * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256;  			b = (-16 * 256 + (int) (2.018 * 256) * ((cb << SHIFT) - 128)) / 256; -			for (y = 0; y < BITDEPTH; y++) { +			for (y = 0; y <= BITDEPTH; y++) {  				int idx, bst = 0;  				int dis = 2 * SQR(r - palettes[p].pal[0]) + 4 * SQR(g - palettes[p].pal[1]) + SQR(b - palettes[p].pal[2]); @@ -204,10 +204,10 @@ void AnimationState::buildLookup(int p, int lines) {  				g += (1 << SHIFT);  				b += (1 << SHIFT);  			} -			r -= 256; +			r -= (BITDEPTH+1)*(1 << SHIFT);  		}  		cr++; -		if (cr >= BITDEPTH) +		if (cr > BITDEPTH)  			return;  	}  } @@ -235,14 +235,14 @@ void AnimationState::buildLookup() {  	if (lookup)  		return; -	lookup = (OverlayColor *)calloc(BITDEPTH * BITDEPTH * 256, sizeof(OverlayColor)); +	lookup = (OverlayColor *)calloc((BITDEPTH+1) * (BITDEPTH+1) * 256, sizeof(OverlayColor));  	int y, cb, cr;  	int r, g, b;  	int pos = 0; -	for (cr = 0; cr < BITDEPTH; cr++) { -		for (cb = 0; cb < BITDEPTH; cb++) { +	for (cr = 0; cr <= BITDEPTH; cr++) { +		for (cb = 0; cb <= BITDEPTH; cb++) {  			for (y = 0; y < 256; y++) {  				r = ((y - 16) * 256 + (int) (256 * 1.596) * ((cr << SHIFT) - 128)) / 256;  				g = ((y - 16) * 256 - (int) (0.813 * 256) * ((cr << SHIFT) - 128) - (int) (0.391 * 256) * ((cb << SHIFT) - 128)) / 256; @@ -274,7 +274,7 @@ void AnimationState::plotYUV(OverlayColor *lut, int width, int height, byte *con  	for (y = 0; y < height; y += 2) {  		for (x = 0; x < width; x += 2) { -			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * BITDEPTH) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * 256; +			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * (BITDEPTH+1)) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * 256;  			cpos++;  			ptr[linepos               ] = lut[i + dat[0][        ypos  ]]; diff --git a/sword2/driver/animation.h b/sword2/driver/animation.h index 117aadd094..28399d06d4 100644 --- a/sword2/driver/animation.h +++ b/sword2/driver/animation.h @@ -90,7 +90,7 @@ private:  	int palnum;  	int maxPalnum; -	byte lookup[2][BITDEPTH * BITDEPTH * BITDEPTH]; +	byte lookup[2][(BITDEPTH+1) * (BITDEPTH+1) * (BITDEPTH+1)];  	byte *lut;  	byte *lut2;  	int lutcalcnum; diff --git a/sword2/driver/render.cpp b/sword2/driver/render.cpp index ce73ed49bd..0ffd82218f 100644 --- a/sword2/driver/render.cpp +++ b/sword2/driver/render.cpp @@ -841,7 +841,7 @@ void Graphics::plotYUV(byte *lut, int width, int height, byte *const *dat) {  	for (y = 0; y < height; y += 2) {  		for (x = 0; x < width; x += 2) { -			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * BITDEPTH) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * BITDEPTH; +			int i = ((((dat[2][cpos] + ROUNDADD) >> SHIFT) * (BITDEPTH+1)) + ((dat[1][cpos] + ROUNDADD)>>SHIFT)) * (BITDEPTH+1);  			cpos++;  			buf[linepos               ] = lut[i + ((dat[0][        ypos  ] + ROUNDADD) >> SHIFT)];  | 
