File e-uae-AGA_HAM6.patch of Package uae-test
*** src/drawing.c.orig 2007-03-28 03:27:18.000000000 +0200
--- src/drawing.c 2019-05-02 23:31:55.149215227 +0200
***************
*** 541,551 ****
} else if (bplplanecnt == 6) { /* AGA mode HAM6 */
while (unpainted_amiga-- > 0) {
int pv = pixdata.apixels[ham_decode_pixel++];
switch (pv & 0x30) {
case 0x00: ham_lastcolor = colors_for_drawing.color_regs_aga[pv]; break;
! case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= (pv & 0xF) << 4; break;
! case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= (pv & 0xF) << 20; break;
! case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= (pv & 0xF) << 12; break;
}
}
}
--- 541,552 ----
} else if (bplplanecnt == 6) { /* AGA mode HAM6 */
while (unpainted_amiga-- > 0) {
int pv = pixdata.apixels[ham_decode_pixel++];
+ int pv2 = ((pv & 0xf) << 4) | (pv & 0xf);
switch (pv & 0x30) {
case 0x00: ham_lastcolor = colors_for_drawing.color_regs_aga[pv]; break;
! case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= pv2; break;
! case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= pv2 << 16; break;
! case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= pv2 << 8; break;
}
}
}
***************
*** 597,607 ****
} else if (bplplanecnt == 6) { /* AGA mode HAM6 */
while (todraw_amiga-- > 0) {
int pv = pixdata.apixels[ham_decode_pixel];
switch (pv & 0x30) {
case 0x00: ham_lastcolor = colors_for_drawing.color_regs_aga[pv]; break;
! case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= (pv & 0xF) << 4; break;
! case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= (pv & 0xF) << 20; break;
! case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= (pv & 0xF) << 12; break;
}
ham_linebuf[ham_decode_pixel++] = ham_lastcolor;
}
--- 598,609 ----
} else if (bplplanecnt == 6) { /* AGA mode HAM6 */
while (todraw_amiga-- > 0) {
int pv = pixdata.apixels[ham_decode_pixel];
+ int pv2 = ((pv & 0xf) << 4) | (pv & 0xf);
switch (pv & 0x30) {
case 0x00: ham_lastcolor = colors_for_drawing.color_regs_aga[pv]; break;
! case 0x10: ham_lastcolor &= 0xFFFF00; ham_lastcolor |= pv2; break;
! case 0x20: ham_lastcolor &= 0x00FFFF; ham_lastcolor |= pv2 << 16; break;
! case 0x30: ham_lastcolor &= 0xFF00FF; ham_lastcolor |= pv2 << 8; break;
}
ham_linebuf[ham_decode_pixel++] = ham_lastcolor;
}