diff --git a/src/burn/drv/pre90s/d_megasys1.cpp b/src/burn/drv/pre90s/d_megasys1.cpp index d30b04c86..7d42ff922 100644 --- a/src/burn/drv/pre90s/d_megasys1.cpp +++ b/src/burn/drv/pre90s/d_megasys1.cpp @@ -2899,7 +2899,8 @@ static inline void draw_16x16_priority_sprite(INT32 code, INT32 color, INT32 sx, UINT8 *gfx = DrvGfxROM[3] + (code * 0x100); - INT32 flip = (flipy ? 0xf0 : 0) | (flipx ? 0x0f : 0); + flipy = (flipy) ? 0x0f : 0; + flipx = (flipx) ? 0x0f : 0; color = (color * 16) + layer_color_config[3]; @@ -2912,9 +2913,8 @@ static inline void draw_16x16_priority_sprite(INT32 code, INT32 color, INT32 sx, { if (sx < 0 || sy < 0 || sx >= nScreenWidth || sy >= nScreenHeight) continue; - INT32 pxl = gfx[((y*16)+x)^flip]; - if (mosaic) // ignore the warnings :) -dink - pxl = gfx[((y*16+y^mosaic*16)+(mosaic&x)+(x^mosaic&mosaic))^flip]; + INT32 pxl = gfx[(((y ^ flipy) & ~mosaic)*16) + ((x ^ flipx) & ~mosaic)]; + if (pxl != 0x0f) { if ((priority & (1 << (prio[x] & 0x1f))) == 0 && prio[x] < 0x80) { dest[x] = pxl + color; @@ -2957,6 +2957,7 @@ static void System1A_draw_sprites() INT32 flipy = attr & 0x80; INT32 pri = (attr & 0x08) ? 0x0c : 0x0a; INT32 mosaic = (attr & 0x0f00)>>8; + //INT32 mossol = (attr & 0x1000)>>8; //not yet code = (code & 0xfff) + ((sprite_bank & 1) << 12); if (DrvTransTab[3][code]) continue;