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
493493 for (k = 0; k < 8; k++) {
494494 j = i + param1;
495495 l = k + param1;
496− p = (j + k) / 2;
497− j = (j + p) / 2;
498− m = l / 2;
499− n = (i + param1);
500− o = (k + param1);
501−
502− *dst++ = p; *dst++ = p; *dst++ = j; *dst++ = n;
503− *dst++ = p; *dst++ = p; *dst++ = j; *dst++ = i;
496+ p = (j + l) >> 1;
497+ n = (j + p) >> 1;
498+ m = (p + l) >> 1;
499+
500+ *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = j;
501+ *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = j;
504502 *dst++ = m; *dst++ = m; *dst++ = p; *dst++ = j;
505503 *dst++ = l; *dst++ = l; *dst++ = m; *dst++ = p;
506504 }
@@ -510,8 +508,8 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 3 unmodified lines
510508 for (k = 0; k < 8; k++) {
511509 j = i + param1;
512510 l = k + param1;
513− n = ((j + l) / 2);
514− m = ((l + n) / 2);
511+ n = (j + l) >> 1;
512+ m = (l + n) >> 1;
515513
516514 *dst++ = j; *dst++ = j; *dst++ = j; *dst++ = j;
517515 *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
524522 for (k = 0; k < 8; k++) {
525523 j = i + param1;
526524 l = k + param1;
527− m = (j + l) / 2;
528− n = (j + m) / 2;
529− o = m / 2;
530− p = j & 0xff;
525+ m = (j + l) >> 1;
526+ n = (j + m) >> 1;
527+ o = (l + m) >> 1;
531528
532− *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = m;
533− *dst++ = p; *dst++ = p; *dst++ = n; *dst++ = m;
529+ *dst++ = j; *dst++ = j; *dst++ = n; *dst++ = m;
530+ *dst++ = j; *dst++ = j; *dst++ = n; *dst++ = m;
534531 *dst++ = n; *dst++ = n; *dst++ = m; *dst++ = o;
535532 *dst++ = m; *dst++ = m; *dst++ = o; *dst++ = l;
536533 }
@@ -540,8 +537,8 @@ static void codec33_gen_tiles(SANMVideoContext *ctx, int8_t param1) · 3 unmodified lines
540537 for (k = 0; k < 8; k++) {
541538 j = i + param1;
542539 l = k + param1;
543− m = (j + l) / 2;
544− n = m / 2;
540+ m = (j + l) >> 1;
541+ n = (l + m) >> 1;
545542
546543 *dst++ = j; *dst++ = m; *dst++ = n; *dst++ = l;
547544 *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