diff --git a/src/burn/drv/dataeast/deco16ic.cpp b/src/burn/drv/dataeast/deco16ic.cpp index cbfc0ce04..8fb72574f 100644 --- a/src/burn/drv/dataeast/deco16ic.cpp +++ b/src/burn/drv/dataeast/deco16ic.cpp @@ -85,19 +85,22 @@ void deco16_draw_prio_sprite(UINT16 *dest, UINT8 *gfx, INT32 code, INT32 color, if (!pxl) continue; - INT32 bpriority = deco16_prio_map[(sy * 512) + sx]; - - if (spri == -1) { - if ((pri & (1 << (bpriority & 0x1f))) || (bpriority & 0x80)) continue; - deco16_prio_map[sy * 512 + sx] |= 0x80; // right? - } else { - if (pri <= bpriority || spri <= deco16_sprite_prio_map[sy * 512 + sx]) continue; - deco16_sprite_prio_map[sy * 512 + sx] = spri; - deco16_prio_map[sy * 512 + sx] = pri; // right? + if (pri != -1) { + INT32 bpriority = deco16_prio_map[(sy * 512) + sx]; + + if (spri == -1) { + if ((pri & (1 << (bpriority & 0x1f))) || (bpriority & 0x80)) continue; + deco16_prio_map[sy * 512 + sx] |= 0x80; // right? + } else { + if (pri <= bpriority || spri <= deco16_sprite_prio_map[sy * 512 + sx]) continue; + deco16_sprite_prio_map[sy * 512 + sx] = spri; + deco16_prio_map[sy * 512 + sx] = pri; // right? + } } - dest[sy * nScreenWidth + sx] = pxl | color; + + deco16_prio_map[sy * 512 + sx] |= 0x80; // right? } sx -= 16;