Fix k053247 sprite flipping. (Fixes sprites at end of Xexex)

Fix line scrolling in k056832 (optimizations were a bit too optimistic :( )
This commit is contained in:
iq_132 2014-09-29 01:36:27 +00:00
parent 6b2d9996c0
commit 44ddd1deae
2 changed files with 4 additions and 36 deletions

View File

@ -477,23 +477,23 @@ void K053247SpritesRender()
if (shadow || wtable == stable) {
if (mirrory && h == 1)
konami_render_zoom_shadow_tile(gfxbase, c, nBpp, color, sx, sy, flipx, !flipy, 16, 16, zw << 12, zh << 12, primask, highlight);
konami_render_zoom_shadow_tile(gfxbase, c, nBpp, color, sx, sy, fx, !fy, 16, 16, zw << 12, zh << 12, primask, highlight);
konami_render_zoom_shadow_tile(gfxbase, c, nBpp, color, sx, sy, flipx, flipy, 16, 16, zw << 12, zh << 12, primask, highlight);
konami_render_zoom_shadow_tile(gfxbase, c, nBpp, color, sx, sy, fx, fy, 16, 16, zw << 12, zh << 12, primask, highlight);
continue;
}
if (mirrory && h == 1)
{
if (nozoom) {
konami_draw_16x16_prio_tile(gfxbase, c, nBpp, color, sx, sy, flipx, !flipy, primask);
konami_draw_16x16_prio_tile(gfxbase, c, nBpp, color, sx, sy, fx, !fy, primask);
} else {
konami_draw_16x16_priozoom_tile(gfxbase, c, nBpp, color, 0, sx, sy, fx, !fy, 16, 16, zw<<12, zh<<12, primask);
}
}
if (nozoom) {
konami_draw_16x16_prio_tile(gfxbase, c, nBpp, color, sx, sy, flipx, flipy, primask);
konami_draw_16x16_prio_tile(gfxbase, c, nBpp, color, sx, sy, fx, fy, primask);
} else {
konami_draw_16x16_priozoom_tile(gfxbase, c, nBpp, color, 0, sx, sy, fx, fy, 16, 16, zw<<12, zh<<12, primask);
}

View File

@ -516,38 +516,6 @@ static void draw_layer_internal(INT32 layer, INT32 pageIndex, INT32 *clip, INT32
UINT8 *pri = konami_priority_bitmap + ((sy - CLIP_MINY) * nScreenWidth) - CLIP_MINX;
UINT32 *dst = konami_bitmap32 + ((sy - CLIP_MINY) * nScreenWidth) - CLIP_MINX;
// not clipped
if (sy >= CLIP_MINY && sy < ((nScreenHeight - 7) + CLIP_MINY) && sx >= CLIP_MINX && sx < ((nScreenWidth - 7) + CLIP_MINX))
{
if (alpha_enable) {
for (INT32 iy = 0; iy < 8; iy++, dst += nScreenWidth, pri += nScreenWidth) {
for (INT32 ix = 0; ix < 8; ix++) {
INT32 xx = sx+ix;
INT32 pxl = rom[((iy*8)+ix)^flip_tile];
if (pxl || opaque) {
dst[xx] = alpha_blend(dst[xx], pal[pxl], alpha);
pri[xx] = priority;
}
}
}
} else {
for (INT32 iy = 0; iy < 8; iy++, dst += nScreenWidth, pri += nScreenWidth) {
for (INT32 ix = 0; ix < 8; ix++) {
INT32 xx = sx+ix;
INT32 pxl = rom[((iy*8)+ix)^flip_tile];
if (pxl || opaque) {
dst[xx] = pal[pxl];
pri[xx] = priority;
}
}
}
}
}
else // clipped
{
if (alpha_enable) {
for (INT32 iy = 0; iy < 8; iy++, dst += nScreenWidth, pri += nScreenWidth) {