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)]; |