trunk/src/mame/video/stvvdp2.c
| r20869 | r20870 | |
| 3001 | 3001 | |
| 3002 | 3002 | void saturn_state::draw_4bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 3003 | 3003 | { |
| 3004 | | int xsize, ysize, xsize_mask; |
| 3004 | int xsize, ysize, xsize_mask, ysize_mask; |
| 3005 | 3005 | int xsrc,ysrc,xdst,ydst; |
| 3006 | 3006 | int src_offs; |
| 3007 | 3007 | UINT8* vram = m_vdp2.gfx_decode; |
| r20869 | r20870 | |
| 3016 | 3016 | ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256; |
| 3017 | 3017 | |
| 3018 | 3018 | xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize; |
| 3019 | ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize; |
| 3019 | 3020 | |
| 3020 | 3021 | pal_bank = stv2_current_tilemap.bitmap_palette_number; |
| 3021 | 3022 | pal_bank+= stv2_current_tilemap.colour_ram_address_offset; |
| r20869 | r20870 | |
| 3032 | 3033 | continue; |
| 3033 | 3034 | |
| 3034 | 3035 | xsrc = (xdst + scrollx) & (xsize_mask-1); |
| 3035 | | ysrc = (ydst + scrolly) & (ysize-1); |
| 3036 | ysrc = (ydst + scrolly) & (ysize_mask-1); |
| 3036 | 3037 | src_offs = (xsrc + (ysrc*xsize)); |
| 3037 | 3038 | src_offs/= 2; |
| 3038 | 3039 | src_offs += map_offset; |
| r20869 | r20870 | |
| 3057 | 3058 | |
| 3058 | 3059 | void saturn_state::draw_8bpp_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 3059 | 3060 | { |
| 3060 | | int xsize, ysize, xsize_mask; |
| 3061 | int xsize, ysize, xsize_mask, ysize_mask; |
| 3061 | 3062 | int xsrc,ysrc,xdst,ydst; |
| 3062 | 3063 | int src_offs; |
| 3063 | 3064 | UINT8* vram = m_vdp2.gfx_decode; |
| r20869 | r20870 | |
| 3072 | 3073 | ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256; |
| 3073 | 3074 | |
| 3074 | 3075 | xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize; |
| 3076 | ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize; |
| 3075 | 3077 | |
| 3076 | 3078 | pal_bank = stv2_current_tilemap.bitmap_palette_number; |
| 3077 | 3079 | pal_bank+= stv2_current_tilemap.colour_ram_address_offset; |
| r20869 | r20870 | |
| 3088 | 3090 | continue; |
| 3089 | 3091 | |
| 3090 | 3092 | xsrc = (xdst + scrollx) & (xsize_mask-1); |
| 3091 | | ysrc = (ydst + scrolly) & (ysize-1); |
| 3093 | ysrc = (ydst + scrolly) & (ysize_mask-1); |
| 3092 | 3094 | src_offs = (xsrc + (ysrc*xsize)); |
| 3093 | 3095 | src_offs += map_offset; |
| 3094 | 3096 | src_offs &= 0x7ffff; |
| r20869 | r20870 | |
| 3110 | 3112 | |
| 3111 | 3113 | void saturn_state::draw_rgb15_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 3112 | 3114 | { |
| 3113 | | int xsize, ysize, xsize_mask; |
| 3115 | int xsize, ysize, xsize_mask, ysize_mask; |
| 3114 | 3116 | int xsrc,ysrc,xdst,ydst; |
| 3115 | 3117 | int src_offs; |
| 3116 | 3118 | UINT8* vram = m_vdp2.gfx_decode; |
| r20869 | r20870 | |
| 3125 | 3127 | ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256; |
| 3126 | 3128 | |
| 3127 | 3129 | xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize; |
| 3130 | ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize; |
| 3128 | 3131 | |
| 3129 | 3132 | for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++) |
| 3130 | 3133 | { |
| r20869 | r20870 | |
| 3134 | 3137 | continue; |
| 3135 | 3138 | |
| 3136 | 3139 | xsrc = (xdst + scrollx) & (xsize_mask-1); |
| 3137 | | ysrc = (ydst + scrolly) & (ysize-1); |
| 3140 | ysrc = (ydst + scrolly) & (ysize_mask-1); |
| 3138 | 3141 | src_offs = (xsrc + (ysrc*xsize)); |
| 3139 | 3142 | src_offs *= 2; |
| 3140 | 3143 | src_offs += map_offset; |
| r20869 | r20870 | |
| 3162 | 3165 | |
| 3163 | 3166 | void saturn_state::draw_rgb32_bitmap(bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 3164 | 3167 | { |
| 3165 | | int xsize, ysize, xsize_mask; |
| 3168 | int xsize, ysize, xsize_mask, ysize_mask; |
| 3166 | 3169 | int xsrc,ysrc,xdst,ydst; |
| 3167 | 3170 | int src_offs; |
| 3168 | 3171 | UINT8* vram = m_vdp2.gfx_decode; |
| r20869 | r20870 | |
| 3177 | 3180 | ysize = (stv2_current_tilemap.bitmap_size & 1) ? 512 : 256; |
| 3178 | 3181 | |
| 3179 | 3182 | xsize_mask = (stv2_current_tilemap.linescroll_enable) ? 1024 : xsize; |
| 3183 | ysize_mask = (stv2_current_tilemap.vertical_linescroll_enable) ? 512 : ysize; |
| 3180 | 3184 | |
| 3181 | 3185 | for(ydst=cliprect.min_y;ydst<=cliprect.max_y;ydst++) |
| 3182 | 3186 | { |
| r20869 | r20870 | |
| 3186 | 3190 | continue; |
| 3187 | 3191 | |
| 3188 | 3192 | xsrc = (xdst + scrollx) & (xsize_mask-1); |
| 3189 | | ysrc = (ydst + scrolly) & (ysize-1); |
| 3193 | ysrc = (ydst + scrolly) & (ysize_mask-1); |
| 3190 | 3194 | src_offs = (xsrc + (ysrc*xsize)); |
| 3191 | 3195 | src_offs *= 4; |
| 3192 | 3196 | src_offs += map_offset; |
| r20869 | r20870 | |
| 3251 | 3255 | } |
| 3252 | 3256 | else |
| 3253 | 3257 | { |
| 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 | |
| 3254 | 3266 | /* intentional fall-through*/ |
| 3255 | 3267 | popmessage("%d %s %s %s %s",stv2_current_tilemap.colour_depth, |
| 3256 | 3268 | stv2_current_tilemap.transparency == STV_TRANSPARENCY_NONE ? "no trans" : "trans", |