Previous 199869 Revisions Next

r20772 Wednesday 6th February, 2013 at 16:54:14 UTC by Angelo Salese
Support fade in/out for rgb555 zooming tiles
[src/mame/video]stvvdp2.c

trunk/src/mame/video/stvvdp2.c
r20771r20772
24382438   );
24392439}
24402440
2441
2442static void stv_vdp2_compute_color_offset( running_machine &machine,int *r, int *g, int *b, int cor )
2443{
2444   saturn_state *state = machine.driver_data<saturn_state>();
2445   if ( cor == 0 )
2446   {
2447      *r = (STV_VDP2_COAR & 0x100) ? (*r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + *r);
2448      *g = (STV_VDP2_COAG & 0x100) ? (*g - (0x100 - (STV_VDP2_COAG & 0xff))) : ((STV_VDP2_COAG & 0xff) + *g);
2449      *b = (STV_VDP2_COAB & 0x100) ? (*b - (0x100 - (STV_VDP2_COAB & 0xff))) : ((STV_VDP2_COAB & 0xff) + *b);
2450   }
2451   else
2452   {
2453      *r = (STV_VDP2_COBR & 0x100) ? (*r - (0xff - (STV_VDP2_COBR & 0xff))) : ((STV_VDP2_COBR & 0xff) + *r);
2454      *g = (STV_VDP2_COBG & 0x100) ? (*g - (0xff - (STV_VDP2_COBG & 0xff))) : ((STV_VDP2_COBG & 0xff) + *g);
2455      *b = (STV_VDP2_COBB & 0x100) ? (*b - (0xff - (STV_VDP2_COBB & 0xff))) : ((STV_VDP2_COBB & 0xff) + *b);
2456   }
2457   if(*r < 0)      { *r = 0; }
2458   if(*r > 0xff)   { *r = 0xff; }
2459   if(*g < 0)      { *g = 0; }
2460   if(*g > 0xff)   { *g = 0xff; }
2461   if(*b < 0)      { *b = 0; }
2462   if(*b > 0xff)   { *b = 0xff; }
2463}
2464
2465static void stv_vdp2_compute_color_offset_UINT32(running_machine &machine,UINT32 *rgb, int cor)
2466{
2467   saturn_state *state = machine.driver_data<saturn_state>();
2468   int _r = RGB_RED(*rgb);
2469   int _g = RGB_GREEN(*rgb);
2470   int _b = RGB_BLUE(*rgb);
2471   if ( cor == 0 )
2472   {
2473      _r = (STV_VDP2_COAR & 0x100) ? (_r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + _r);
2474      _g = (STV_VDP2_COAG & 0x100) ? (_g - (0x100 - (STV_VDP2_COAG & 0xff))) : ((STV_VDP2_COAG & 0xff) + _g);
2475      _b = (STV_VDP2_COAB & 0x100) ? (_b - (0x100 - (STV_VDP2_COAB & 0xff))) : ((STV_VDP2_COAB & 0xff) + _b);
2476   }
2477   else
2478   {
2479      _r = (STV_VDP2_COBR & 0x100) ? (_r - (0xff - (STV_VDP2_COBR & 0xff))) : ((STV_VDP2_COBR & 0xff) + _r);
2480      _g = (STV_VDP2_COBG & 0x100) ? (_g - (0xff - (STV_VDP2_COBG & 0xff))) : ((STV_VDP2_COBG & 0xff) + _g);
2481      _b = (STV_VDP2_COBB & 0x100) ? (_b - (0xff - (STV_VDP2_COBB & 0xff))) : ((STV_VDP2_COBB & 0xff) + _b);
2482   }
2483   if(_r < 0)      { _r = 0; }
2484   if(_r > 0xff)   { _r = 0xff; }
2485   if(_g < 0)      { _g = 0; }
2486   if(_g > 0xff)   { _g = 0xff; }
2487   if(_b < 0)      { _b = 0; }
2488   if(_b > 0xff)   { _b = 0xff; }
2489
2490   *rgb = MAKE_RGB(_r, _g, _b);
2491}
2492
24412493static void stv_vdp2_drawgfxzoom_rgb555(
24422494      bitmap_rgb32 &dest_bmp,const rectangle &clip,running_machine &machine,
24432495      UINT32 code,UINT32 color,int flipx,int flipy,int sx,int sy,
r20771r20772
25652617                     b = pal5bit((data & 0x7c00) >> 10);
25662618                     g = pal5bit((data & 0x03e0) >> 5);
25672619                     r = pal5bit( data & 0x001f);
2620                     if(stv2_current_tilemap.fade_control & 1)
2621                        stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
2622
25682623                     dest[x] = MAKE_RGB(r, g, b);
25692624                     x_index += dx;
25702625                  }
r20771r20772
25892644                     b = pal5bit((data & 0x7c00) >> 10);
25902645                     g = pal5bit((data & 0x03e0) >> 5);
25912646                     r = pal5bit( data & 0x001f);
2647                     if(stv2_current_tilemap.fade_control & 1)
2648                        stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
2649
25922650                     if( data ) dest[x] = MAKE_RGB(r, g, b);
25932651                     x_index += dx;
25942652                  }
r20771r20772
26132671                     b = pal5bit((data & 0x7c00) >> 10);
26142672                     g = pal5bit((data & 0x03e0) >> 5);
26152673                     r = pal5bit( data & 0x001f);
2674                     if(stv2_current_tilemap.fade_control & 1)
2675                        stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
2676
26162677                     if( data ) dest[x] = alpha_blend_r32(dest[x], MAKE_RGB(r, g, b), alpha);
26172678                     x_index += dx;
26182679                  }
r20771r20772
26372698                     b = pal5bit((data & 0x7c00) >> 10);
26382699                     g = pal5bit((data & 0x03e0) >> 5);
26392700                     r = pal5bit( data & 0x001f);
2701                     if(stv2_current_tilemap.fade_control & 1)
2702                        stv_vdp2_compute_color_offset(machine,&r,&g,&b,stv2_current_tilemap.fade_control & 2);
2703
26402704                     if( data ) dest[x] = stv_add_blend(dest[x], MAKE_RGB(r, g, b));
26412705                     x_index += dx;
26422706                  }
r20771r20772
28422906
28432907}
28442908
2845static void stv_vdp2_compute_color_offset( running_machine &machine,int *r, int *g, int *b, int cor )
2846{
2847   saturn_state *state = machine.driver_data<saturn_state>();
2848   if ( cor == 0 )
2849   {
2850      *r = (STV_VDP2_COAR & 0x100) ? (*r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + *r);
2851      *g = (STV_VDP2_COAG & 0x100) ? (*g - (0x100 - (STV_VDP2_COAG & 0xff))) : ((STV_VDP2_COAG & 0xff) + *g);
2852      *b = (STV_VDP2_COAB & 0x100) ? (*b - (0x100 - (STV_VDP2_COAB & 0xff))) : ((STV_VDP2_COAB & 0xff) + *b);
2853   }
2854   else
2855   {
2856      *r = (STV_VDP2_COBR & 0x100) ? (*r - (0xff - (STV_VDP2_COBR & 0xff))) : ((STV_VDP2_COBR & 0xff) + *r);
2857      *g = (STV_VDP2_COBG & 0x100) ? (*g - (0xff - (STV_VDP2_COBG & 0xff))) : ((STV_VDP2_COBG & 0xff) + *g);
2858      *b = (STV_VDP2_COBB & 0x100) ? (*b - (0xff - (STV_VDP2_COBB & 0xff))) : ((STV_VDP2_COBB & 0xff) + *b);
2859   }
2860   if(*r < 0)      { *r = 0; }
2861   if(*r > 0xff)   { *r = 0xff; }
2862   if(*g < 0)      { *g = 0; }
2863   if(*g > 0xff)   { *g = 0xff; }
2864   if(*b < 0)      { *b = 0; }
2865   if(*b > 0xff)   { *b = 0xff; }
2866}
28672909
2868static void stv_vdp2_compute_color_offset_UINT32(running_machine &machine,UINT32 *rgb, int cor)
2869{
2870   saturn_state *state = machine.driver_data<saturn_state>();
2871   int _r = RGB_RED(*rgb);
2872   int _g = RGB_GREEN(*rgb);
2873   int _b = RGB_BLUE(*rgb);
2874   if ( cor == 0 )
2875   {
2876      _r = (STV_VDP2_COAR & 0x100) ? (_r - (0x100 - (STV_VDP2_COAR & 0xff))) : ((STV_VDP2_COAR & 0xff) + _r);
2877      _g = (STV_VDP2_COAG & 0x100) ? (_g - (0x100 - (STV_VDP2_COAG & 0xff))) : ((STV_VDP2_COAG & 0xff) + _g);
2878      _b = (STV_VDP2_COAB & 0x100) ? (_b - (0x100 - (STV_VDP2_COAB & 0xff))) : ((STV_VDP2_COAB & 0xff) + _b);
2879   }
2880   else
2881   {
2882      _r = (STV_VDP2_COBR & 0x100) ? (_r - (0xff - (STV_VDP2_COBR & 0xff))) : ((STV_VDP2_COBR & 0xff) + _r);
2883      _g = (STV_VDP2_COBG & 0x100) ? (_g - (0xff - (STV_VDP2_COBG & 0xff))) : ((STV_VDP2_COBG & 0xff) + _g);
2884      _b = (STV_VDP2_COBB & 0x100) ? (_b - (0xff - (STV_VDP2_COBB & 0xff))) : ((STV_VDP2_COBB & 0xff) + _b);
2885   }
2886   if(_r < 0)      { _r = 0; }
2887   if(_r > 0xff)   { _r = 0xff; }
2888   if(_g < 0)      { _g = 0; }
2889   if(_g > 0xff)   { _g = 0xff; }
2890   if(_b < 0)      { _b = 0; }
2891   if(_b > 0xff)   { _b = 0xff; }
2892
2893   *rgb = MAKE_RGB(_r, _g, _b);
2894}
2895
28962910static void stv_vdp2_drawgfx_rgb555( bitmap_rgb32 &dest_bmp, const rectangle &clip, running_machine &machine, UINT32 code, int flipx, int flipy,
28972911                              int sx, int sy, int transparency, int alpha)
28982912{

Previous 199869 Revisions Next


© 1997-2024 The MAME Team