diff options
Diffstat (limited to 'src/mame')
-rw-r--r-- | src/mame/video/stvvdp2.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/mame/video/stvvdp2.c b/src/mame/video/stvvdp2.c index 099953926b0..4e27cbac89f 100644 --- a/src/mame/video/stvvdp2.c +++ b/src/mame/video/stvvdp2.c @@ -3133,6 +3133,7 @@ void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip int scrolly = stv2_current_tilemap.scrolly; int r,g,b; UINT16 dot_data; + int xf, yf; xsize = (stv2_current_tilemap.bitmap_size & 2) ? 1024 : 512; ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256; @@ -3147,8 +3148,13 @@ void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &clip if(stv_vdp2_window_process(xdst,ydst)) continue; - xsrc = (xdst + scrollx) & (xsize_mask-1); - ysrc = (ydst + scrolly) & (ysize_mask-1); + xf = stv2_current_tilemap.incx * xdst; + xf>>=16; + yf = stv2_current_tilemap.incy * ydst; + yf>>=16; + + xsrc = (xf + scrollx) & (xsize_mask-1); + ysrc = (yf + scrolly) & (ysize_mask-1); src_offs = (xsrc + (ysrc*xsize)); src_offs *= 2; src_offs += map_offset; @@ -3269,7 +3275,7 @@ void saturn_state::stv_vdp2_draw_basic_bitmap(bitmap_rgb32 &bitmap, const rectan { // case 0: draw_4bpp_bitmap(bitmap,cliprect); return; case 1: draw_8bpp_bitmap(bitmap,cliprect); return; - // case 3: draw_rgb15_bitmap(bitmap,cliprect); return; + case 3: draw_rgb15_bitmap(bitmap,cliprect); return; // case 4: draw_rgb32_bitmap(bitmap,cliprect); return; } |