Some of the calculated values were wrong and/or assigned to the wrong pixel of the 4x4 block. Found during testing with Rebel Assault Sega-CD release.
Unified · Split
| @@ -493,14 +493,12 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 492 unmodified lines | |||
| 493 | for (k = 0; k < 8; k++) { | 493 | for (k = 0; k < 8; k++) { |
| 494 | j = i + param1; | 494 | j = i + param1; |
| 495 | l = k + param1; | 495 | l = k + param1; |
| 496 | p = (j + k) / 2; | 496 | p = (j + l) >> 1; |
| 497 | j = (j + p) / 2; | 497 | n = (j + p) >> 1; |
| 498 | m = l / 2; | 498 | m = (p + l) >> 1; |
| 499 | n = (i + param1); | 499 | |
| 500 | o = (k + param1); | 500 | *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = j; |
| 501 | 501 | *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = j; | |
| 502 | *dst++ = p; *dst++ = p; *dst++ = j; *dst++ = n; | ||
| 503 | *dst++ = p; *dst++ = p; *dst++ = j; *dst++ = i; | ||
| 504 | *dst++ = m; *dst++ = m; *dst++ = p; *dst++ = j; | 502 | *dst++ = m; *dst++ = m; *dst++ = p; *dst++ = j; |
| 505 | *dst++ = l; *dst++ = l; *dst++ = m; *dst++ = p; | 503 | *dst++ = l; *dst++ = l; *dst++ = m; *dst++ = p; |
| 506 | } | 504 | } |
| @@ -510,8 +508,8 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 3 unmodified lines | |||
| 510 | for (k = 0; k < 8; k++) { | 508 | for (k = 0; k < 8; k++) { |
| 511 | j = i + param1; | 509 | j = i + param1; |
| 512 | l = k + param1; | 510 | l = k + param1; |
| 513 | n = ((j + l) / 2); | 511 | n = (j + l) >> 1; |
| 514 | m = ((l + n) / 2); | 512 | m = (l + n) >> 1; |
| 515 | 513 | ||
| 516 | *dst++ = j; *dst++ = j; *dst++ = j; *dst++ = j; | 514 | *dst++ = j; *dst++ = j; *dst++ = j; *dst++ = j; |
| 517 | *dst++ = n; *dst++ = n; *dst++ = n; *dst++ = n; | 515 | *dst++ = n; *dst++ = n; *dst++ = n; *dst++ = n; |
| @@ -524,13 +522,12 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 6 unmodified lines | |||
| 524 | for (k = 0; k < 8; k++) { | 522 | for (k = 0; k < 8; k++) { |
| 525 | j = i + param1; | 523 | j = i + param1; |
| 526 | l = k + param1; | 524 | l = k + param1; |
| 527 | m = (j + l) / 2; | 525 | m = (j + l) >> 1; |
| 528 | n = (j + m) / 2; | 526 | n = (j + m) >> 1; |
| 529 | o = m / 2; | 527 | o = (l + m) >> 1; |
| 530 | p = j & 0xff; | ||
| 531 | 528 | ||
| 532 | *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = m; | 529 | *dst++ = j; *dst++ = j; *dst++ = n; *dst++ = m; |
| 533 | *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = m; | 530 | *dst++ = j; *dst++ = j; *dst++ = n; *dst++ = m; |
| 534 | *dst++ = n; *dst++ = n; *dst++ = m; *dst++ = o; | 531 | *dst++ = n; *dst++ = n; *dst++ = m; *dst++ = o; |
| 535 | *dst++ = m; *dst++ = m; *dst++ = o; *dst++ = l; | 532 | *dst++ = m; *dst++ = m; *dst++ = o; *dst++ = l; |
| 536 | } | 533 | } |
| @@ -540,8 +537,8 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 3 unmodified lines | |||
| 540 | for (k = 0; k < 8; k++) { | 537 | for (k = 0; k < 8; k++) { |
| 541 | j = i + param1; | 538 | j = i + param1; |
| 542 | l = k + param1; | 539 | l = k + param1; |
| 543 | m = (j + l) / 2; | 540 | m = (j + l) >> 1; |
| 544 | n = m / 2; | 541 | n = (l + m) >> 1; |
| 545 | 542 | ||
| 546 | *dst++ = j; *dst++ = m; *dst++ = n; *dst++ = l; | 543 | *dst++ = j; *dst++ = m; *dst++ = n; *dst++ = l; |
| 547 | *dst++ = j; *dst++ = m; *dst++ = n; *dst++ = l; | 544 | *dst++ = j; *dst++ = m; *dst++ = n; *dst++ = l; |