Previous 199869 Revisions Next

r20832 Friday 8th February, 2013 at 14:19:05 UTC by Angelo Salese
Check-point, Burning Rangers now shows half-right FMV
[src/mame/includes]stv.h
[src/mame/video]stvvdp2.c

trunk/src/mame/includes/stv.h
r20831r20832
387387
388388   void stv_vdp2_draw_basic_tilemap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
389389   void stv_vdp2_draw_basic_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
390//   void draw_rgb16_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
390   void draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
391391   void draw_rgb32_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect);
392392
393393   void stv_vdp2_drawgfxzoom(bitmap_rgb32 &dest_bmp,const rectangle &clip,gfx_element *gfx, UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,int transparency,int transparent_color,int scalex, int scaley,int sprite_screen_width, int sprite_screen_height, int alpha);
trunk/src/mame/video/stvvdp2.c
r20831r20832
29992999
30003000}
30013001
3002#define BITMAP_RGB32 4
30033002
3003void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
3004{
3005   int xsize, ysize;
3006   int xsrc,ysrc,xdst,ydst;
3007   int src_offs;
3008   UINT8* vram = m_vdp2.gfx_decode;
3009   UINT32 map_offset = stv2_current_tilemap.bitmap_map * 0x20000;
3010   int scrollx = stv2_current_tilemap.scrollx;
3011   int scrolly = stv2_current_tilemap.scrolly;
3012   int r,g,b;
3013   UINT16 dot_data;
30043014
3005#if 0
3006void saturn_state::draw_rgb16_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
3007{
3008   // ...
3015   /* TODO: clean this up. */
3016   xsize = (stv2_current_tilemap.bitmap_size & 2) ? 1024 : 512;
3017   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
3018
3019   for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++)
3020   {
3021      for(xdst=cliprect.min_x;xdst<=cliprect.max_x;xdst++)
3022      {
3023         if(stv_vdp2_window_process(xdst,ydst))
3024            continue;
3025
3026         xsrc = (xdst + scrollx) & (xsize-1);
3027         ysrc = (ydst + scrolly) & (ysize-1);
3028         src_offs = (xsrc + (ysrc*xsize));
3029         src_offs *= 2;
3030         src_offs += map_offset;
3031         src_offs &= 0x7ffff;
3032
3033         dot_data =(vram[src_offs]<<8)|(vram[src_offs+1]<<0);
3034
3035         if ((dot_data & 0x8000) || (stv2_current_tilemap.transparency == STV_TRANSPARENCY_NONE))
3036         {
3037            b = pal5bit((dot_data & 0x7c00) >> 10);
3038            g = pal5bit((dot_data & 0x03e0) >> 5);
3039            r = pal5bit((dot_data & 0x001f) >> 0);
3040
3041            if(stv2_current_tilemap.fade_control & 1)
3042               stv_vdp2_compute_color_offset(&r,&g,&b,stv2_current_tilemap.fade_control & 2);
3043
3044            if ( stv2_current_tilemap.colour_calculation_enabled == 0 )
3045               bitmap.pix32(ydst, xdst) = MAKE_RGB(r, g, b);
3046            else
3047               bitmap.pix32(ydst, xdst) = alpha_blend_r32( bitmap.pix32(ydst, xdst), MAKE_RGB(r, g, b), stv2_current_tilemap.alpha );
3048         }
3049      }
3050   }
30093051}
3010#endif
30113052
30123053void saturn_state::draw_rgb32_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect)
30133054{
r20831r20832
30253066   xsize = (stv2_current_tilemap.bitmap_size & 2) ? 1024 : 512;
30263067   ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256;
30273068
3028   for(ydst=cliprect.min_y;ydst<cliprect.max_y;ydst++)
3069   for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++)
30293070   {
3030      for(xdst=cliprect.min_x;xdst<cliprect.max_x;xdst++)
3071      for(xdst=cliprect.min_x;xdst<=cliprect.max_x;xdst++)
30313072      {
30323073         if(stv_vdp2_window_process(xdst,ydst))
30333074            continue;
30343075
30353076         xsrc = (xdst + scrollx) & (xsize-1);
30363077         ysrc = (ydst + scrolly) & (ysize-1);
3037         src_offs = ((xsrc + (ysrc*xsize)) + map_offset) & 0x1ffff;
3078         src_offs = (xsrc + (ysrc*xsize));
3079         src_offs *= 4;
3080         src_offs += map_offset;
3081         src_offs &= 0x7ffff;
30383082
3039         dot_data = (vram[4*src_offs+0]<<24)|(vram[4*src_offs+1]<<16)|(vram[4*src_offs+2]<<8)|(vram[4*src_offs+3]<<0);
3083         dot_data = (vram[src_offs+0]<<24)|(vram[src_offs+1]<<16)|(vram[src_offs+2]<<8)|(vram[src_offs+3]<<0);
30403084
30413085         if ((dot_data & 0x80000000) || (stv2_current_tilemap.transparency == STV_TRANSPARENCY_NONE))
30423086         {
r20831r20832
30803124   {
30813125      switch(stv2_current_tilemap.colour_depth)
30823126      {
3083         case BITMAP_RGB32: draw_rgb32_bitmap(bitmap,cliprect); return;
3127         case 3: draw_rgb15_bitmap(bitmap,cliprect); return;
3128         case 4: draw_rgb32_bitmap(bitmap,cliprect); return;
30843129      }
30853130
30863131      /* intentional fall-through*/

Previous 199869 Revisions Next


© 1997-2024 The MAME Team