Previous 199869 Revisions Next

r20870 Saturday 9th February, 2013 at 14:54:33 UTC by Angelo Salese
Fixed vertical linescroll mask too
[src/mame/video]stvvdp2.c

trunk/src/mame/video/stvvdp2.c
r20869r20870
30013001
30023002void saturn_state::draw_4bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
30033003{
3004   int xsize, ysize, xsize_mask;
3004   int xsize, ysize, xsize_mask, ysize_mask;
30053005   int xsrc,ysrc,xdst,ydst;
30063006   int src_offs;
30073007   UINT8* vram = m_vdp2.gfx_decode;
r20869r20870
30163016   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
30173017
30183018   xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize;
3019   ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize;
30193020
30203021   pal_bank = stv2_current_tilemap.bitmap_palette_number;
30213022   pal_bank+= stv2_current_tilemap.colour_ram_address_offset;
r20869r20870
30323033            continue;
30333034
30343035         xsrc = (xdst + scrollx) & (xsize_mask-1);
3035         ysrc = (ydst + scrolly) & (ysize-1);
3036         ysrc = (ydst + scrolly) & (ysize_mask-1);
30363037         src_offs = (xsrc + (ysrc*xsize));
30373038         src_offs/= 2;
30383039         src_offs += map_offset;
r20869r20870
30573058
30583059void saturn_state::draw_8bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
30593060{
3060   int xsize, ysize, xsize_mask;
3061   int xsize, ysize, xsize_mask, ysize_mask;
30613062   int xsrc,ysrc,xdst,ydst;
30623063   int src_offs;
30633064   UINT8* vram = m_vdp2.gfx_decode;
r20869r20870
30723073   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
30733074
30743075   xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize;
3076   ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize;
30753077
30763078   pal_bank = stv2_current_tilemap.bitmap_palette_number;
30773079   pal_bank+= stv2_current_tilemap.colour_ram_address_offset;
r20869r20870
30883090            continue;
30893091
30903092         xsrc = (xdst + scrollx) & (xsize_mask-1);
3091         ysrc = (ydst + scrolly) & (ysize-1);
3093         ysrc = (ydst + scrolly) & (ysize_mask-1);
30923094         src_offs = (xsrc + (ysrc*xsize));
30933095         src_offs += map_offset;
30943096         src_offs &= 0x7ffff;
r20869r20870
31103112
31113113void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
31123114{
3113   int xsize, ysize, xsize_mask;
3115   int xsize, ysize, xsize_mask, ysize_mask;
31143116   int xsrc,ysrc,xdst,ydst;
31153117   int src_offs;
31163118   UINT8* vram = m_vdp2.gfx_decode;
r20869r20870
31253127   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
31263128
31273129   xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize;
3130   ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize;
31283131
31293132   for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++)
31303133   {
r20869r20870
31343137            continue;
31353138
31363139         xsrc = (xdst + scrollx) & (xsize_mask-1);
3137         ysrc = (ydst + scrolly) & (ysize-1);
3140         ysrc = (ydst + scrolly) & (ysize_mask-1);
31383141         src_offs = (xsrc + (ysrc*xsize));
31393142         src_offs *= 2;
31403143         src_offs += map_offset;
r20869r20870
31623165
31633166void saturn_state::draw_rgb32_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
31643167{
3165   int xsize, ysize, xsize_mask;
3168   int xsize, ysize, xsize_mask, ysize_mask;
31663169   int xsrc,ysrc,xdst,ydst;
31673170   int src_offs;
31683171   UINT8* vram = m_vdp2.gfx_decode;
r20869r20870
31773180   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
31783181
31793182   xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize;
3183   ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize;
31803184
31813185   for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++)
31823186   {
r20869r20870
31863190            continue;
31873191
31883192         xsrc = (xdst + scrollx) & (xsize_mask-1);
3189         ysrc = (ydst + scrolly) & (ysize-1);
3193         ysrc = (ydst + scrolly) & (ysize_mask-1);
31903194         src_offs = (xsrc + (ysrc*xsize));
31913195         src_offs *= 4;
31923196         src_offs += map_offset;
r20869r20870
32513255   }
32523256   else
32533257   {
3258      switch(stv2_current_tilemap.colour_depth)
3259      {
3260      //   case 0: draw_4bpp_bitmap(bitmap,cliprect); return;
3261      //   case 1: draw_8bpp_bitmap(bitmap,cliprect); return;
3262      //   case 3: draw_rgb15_bitmap(bitmap,cliprect); return;
3263      //   case 4: draw_rgb32_bitmap(bitmap,cliprect); return;
3264      }
3265
32543266      /* intentional fall-through*/
32553267      popmessage("%d %s %s %s %s",stv2_current_tilemap.colour_depth,
32563268                               stv2_current_tilemap.transparency == STV_TRANSPARENCY_NONE ? "no trans" : "trans",

Previous 199869 Revisions Next


© 1997-2024 The MAME Team