History

avcodec/sanm: fix codec33/34 tile generator

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.

Manuel Lauss committed 1 year ago

Commit b7662dd1 parent c0643901 file · +15 −18Browse files

Unified · Split

libavcodec/sanm.c+15−18
@@ -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;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t