trunk/src/emu/emupal.c
| r31072 | r31073 | |
| 167 | 167 | } |
| 168 | 168 | |
| 169 | 169 | |
| 170 | | //------------------------------------------------- |
| 171 | | // configure_tilemap_groups - configure groups |
| 172 | | // within a tilemap to match the indirect masks |
| 173 | | //------------------------------------------------- |
| 174 | 170 | |
| 175 | | void palette_device::configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor) |
| 176 | | { |
| 177 | | int color; |
| 178 | | |
| 179 | | assert(gfx.colors() <= TILEMAP_NUM_GROUPS); |
| 180 | | |
| 181 | | // iterate over all colors in the tilemap |
| 182 | | for (color = 0; color < gfx.colors(); color++) |
| 183 | | tmap.set_transmask(color, transpen_mask(gfx, color, transcolor), 0); |
| 184 | | } |
| 185 | | |
| 186 | | |
| 187 | | |
| 188 | 171 | //************************************************************************** |
| 189 | 172 | // SHADOW TABLE CONFIGURATION |
| 190 | 173 | //************************************************************************** |
trunk/src/emu/emupal.h
| r31072 | r31073 | |
| 367 | 367 | void set_indirect_color(int index, rgb_t rgb); |
| 368 | 368 | void set_pen_indirect(pen_t pen, UINT16 index); |
| 369 | 369 | UINT32 transpen_mask(gfx_element &gfx, int color, int transcolor); |
| 370 | | void configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor); |
| 371 | 370 | |
| 372 | 371 | // shadow config |
| 373 | 372 | void set_shadow_factor(double factor) { assert(m_shadow_group != 0); m_palette->group_set_contrast(m_shadow_group, factor); } |
trunk/src/emu/tilemap.c
| r31072 | r31073 | |
| 525 | 525 | } |
| 526 | 526 | |
| 527 | 527 | |
| 528 | //------------------------------------------------- |
| 529 | // configure_groups - configure groups so that |
| 530 | // when group == color, pens whose indirect value |
| 531 | // matches the given transcolor are transparent |
| 532 | //------------------------------------------------- |
| 528 | 533 | |
| 534 | void tilemap_t::configure_groups(gfx_element &gfx, int transcolor) |
| 535 | { |
| 536 | int color; |
| 537 | |
| 538 | assert(gfx.colors() <= TILEMAP_NUM_GROUPS); |
| 539 | |
| 540 | // iterate over all colors in the tilemap |
| 541 | for (color = 0; color < gfx.colors(); color++) |
| 542 | set_transmask(color, m_palette->transpen_mask(gfx, color, transcolor), 0); |
| 543 | } |
| 544 | |
| 545 | |
| 546 | |
| 529 | 547 | //************************************************************************** |
| 530 | 548 | // COMMON LOGICAL-TO-MEMORY MAPPERS |
| 531 | 549 | //************************************************************************** |
trunk/src/emu/tilemap.h
| r31072 | r31073 | |
| 533 | 533 | void map_pen_to_layer(int group, pen_t pen, UINT8 layermask) { map_pens_to_layer(group, pen, ~0, layermask); } |
| 534 | 534 | void set_transparent_pen(pen_t pen); |
| 535 | 535 | void set_transmask(int group, UINT32 fgmask, UINT32 bgmask); |
| 536 | void configure_groups(gfx_element &gfx, int transcolor); |
| 536 | 537 | |
| 537 | 538 | // drawing |
| 538 | 539 | void draw(screen_device &screen, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority = 0, UINT8 priority_mask = 0xff); |
trunk/src/mame/video/bosco.c
| r31072 | r31073 | |
| 124 | 124 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bosco_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); |
| 125 | 125 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bosco_state::fg_get_tile_info),this),tilemap_mapper_delegate(FUNC(bosco_state::fg_tilemap_scan),this), 8,8, 8,32); |
| 126 | 126 | |
| 127 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x1f); |
| 128 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f); |
| 127 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); |
| 128 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); |
| 129 | 129 | |
| 130 | 130 | m_bg_tilemap->set_scrolldx(3,3); |
| 131 | 131 | |
trunk/src/mame/video/galaga.c
| r31072 | r31073 | |
| 429 | 429 | VIDEO_START_MEMBER(galaga_state,galaga) |
| 430 | 430 | { |
| 431 | 431 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(galaga_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(galaga_state::tilemap_scan),this),8,8,36,28); |
| 432 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f); |
| 432 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); |
| 433 | 433 | |
| 434 | 434 | m_galaga_gfxbank = 0; |
| 435 | 435 | |
trunk/src/mame/video/sprcros2.c
| r31072 | r31073 | |
| 127 | 127 | m_bgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sprcros2_state::get_sprcros2_bgtile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 128 | 128 | m_fgtilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(sprcros2_state::get_sprcros2_fgtile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 129 | 129 | |
| 130 | | m_palette->configure_tilemap_groups(*m_fgtilemap, *m_gfxdecode->gfx(2), 0); |
| 130 | m_fgtilemap->configure_groups(*m_gfxdecode->gfx(2), 0); |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | 133 | void sprcros2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) |
trunk/src/mame/video/equites.c
| r31072 | r31073 | |
| 132 | 132 | m_fg_tilemap->set_scrolldx(8, -8); |
| 133 | 133 | |
| 134 | 134 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(equites_state::splndrbt_bg_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); |
| 135 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x10); |
| 135 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x10); |
| 136 | 136 | } |
| 137 | 137 | |
| 138 | 138 | |
trunk/src/mame/video/stfight.c
| r31072 | r31073 | |
| 156 | 156 | m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); |
| 157 | 157 | |
| 158 | 158 | m_fg_tilemap->set_transparent_pen(0x0f); |
| 159 | | m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf); |
| 159 | m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); |
| 160 | 160 | } |
| 161 | 161 | |
| 162 | 162 | VIDEO_START_MEMBER(stfight_state,cshooter) |
| r31072 | r31073 | |
| 166 | 166 | m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_state::get_cshooter_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); |
| 167 | 167 | |
| 168 | 168 | m_fg_tilemap->set_transparent_pen(0x0f); |
| 169 | | m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf); |
| 169 | m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); |
| 170 | 170 | } |
| 171 | 171 | |
| 172 | 172 | |
trunk/src/mame/video/1943.c
| r31072 | r31073 | |
| 200 | 200 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(_1943_state::c1943_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); |
| 201 | 201 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(_1943_state::c1943_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 202 | 202 | |
| 203 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x0f); |
| 203 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x0f); |
| 204 | 204 | m_fg_tilemap->set_transparent_pen(0); |
| 205 | 205 | |
| 206 | 206 | save_item(NAME(m_char_on)); |
trunk/src/mame/video/gberet.c
| r31072 | r31073 | |
| 118 | 118 | VIDEO_START_MEMBER(gberet_state,gberet) |
| 119 | 119 | { |
| 120 | 120 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gberet_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 121 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x10); |
| 121 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x10); |
| 122 | 122 | m_bg_tilemap->set_scroll_rows(32); |
| 123 | 123 | } |
| 124 | 124 | |
trunk/src/mame/video/mappy.c
| r31072 | r31073 | |
| 311 | 311 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(mappy_state::superpac_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::superpac_tilemap_scan),this),8,8,36,28); |
| 312 | 312 | m_screen->register_screen_bitmap(m_sprite_bitmap); |
| 313 | 313 | |
| 314 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31); |
| 314 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31); |
| 315 | 315 | } |
| 316 | 316 | |
| 317 | 317 | VIDEO_START_MEMBER(mappy_state,phozon) |
| 318 | 318 | { |
| 319 | 319 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(mappy_state::phozon_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::superpac_tilemap_scan),this),8,8,36,28); |
| 320 | 320 | |
| 321 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 15); |
| 321 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 15); |
| 322 | 322 | |
| 323 | 323 | save_item(NAME(m_scroll)); |
| 324 | 324 | } |
| r31072 | r31073 | |
| 327 | 327 | { |
| 328 | 328 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(mappy_state::mappy_get_tile_info),this),tilemap_mapper_delegate(FUNC(mappy_state::mappy_tilemap_scan),this),8,8,36,60); |
| 329 | 329 | |
| 330 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31); |
| 330 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31); |
| 331 | 331 | m_bg_tilemap->set_scroll_cols(36); |
| 332 | 332 | } |
| 333 | 333 | |
trunk/src/mame/video/vulgus.c
| r31072 | r31073 | |
| 112 | 112 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(vulgus_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); |
| 113 | 113 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(vulgus_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); |
| 114 | 114 | |
| 115 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 47); |
| 115 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47); |
| 116 | 116 | } |
| 117 | 117 | |
| 118 | 118 | |
trunk/src/mame/video/exedexes.c
| r31072 | r31073 | |
| 168 | 168 | m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(exedexes_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 169 | 169 | |
| 170 | 170 | m_fg_tilemap->set_transparent_pen(0); |
| 171 | | m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf); |
| 171 | m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); |
| 172 | 172 | } |
| 173 | 173 | |
| 174 | 174 | void exedexes_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ) |
trunk/src/mame/video/gaplus.c
| r31072 | r31073 | |
| 178 | 178 | { |
| 179 | 179 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gaplus_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(gaplus_state::tilemap_scan),this),8,8,36,28); |
| 180 | 180 | |
| 181 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0xff); |
| 181 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xff); |
| 182 | 182 | |
| 183 | 183 | starfield_init(); |
| 184 | 184 | } |
trunk/src/mame/video/polepos.c
| r31072 | r31073 | |
| 190 | 190 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(polepos_state::bg_get_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,16); |
| 191 | 191 | m_tx_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(polepos_state::tx_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); |
| 192 | 192 | |
| 193 | | m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0x2f); |
| 193 | m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x2f); |
| 194 | 194 | } |
| 195 | 195 | |
| 196 | 196 | |
trunk/src/mame/video/gunsmoke.c
| r31072 | r31073 | |
| 127 | 127 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gunsmoke_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); |
| 128 | 128 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(gunsmoke_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 129 | 129 | |
| 130 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x4f); |
| 130 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f); |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | 133 | void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) |
trunk/src/mame/video/tceptor.c
| r31072 | r31073 | |
| 386 | 386 | |
| 387 | 387 | m_tx_tilemap->set_scrollx(0, -2*8); |
| 388 | 388 | m_tx_tilemap->set_scrolly(0, 0); |
| 389 | | m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 7); |
| 389 | m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 7); |
| 390 | 390 | |
| 391 | 391 | m_bg1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
| 392 | 392 | m_bg2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); |
trunk/src/mame/video/bankp.c
| r31072 | r31073 | |
| 149 | 149 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bankp_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 150 | 150 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(bankp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); |
| 151 | 151 | |
| 152 | | m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0); |
| 153 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0); |
| 152 | m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0); |
| 153 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0); |
| 154 | 154 | |
| 155 | 155 | save_item(NAME(m_scroll_x)); |
| 156 | 156 | save_item(NAME(m_priority)); |
trunk/src/mame/video/retofinv.c
| r31072 | r31073 | |
| 102 | 102 | m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(retofinv_state::bg_get_tile_info),this),tilemap_mapper_delegate(FUNC(retofinv_state::tilemap_scan),this),8,8,36,28); |
| 103 | 103 | m_fg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(retofinv_state::fg_get_tile_info),this),tilemap_mapper_delegate(FUNC(retofinv_state::tilemap_scan),this),8,8,36,28); |
| 104 | 104 | |
| 105 | | m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0); |
| 105 | m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0); |
| 106 | 106 | } |
| 107 | 107 | |
| 108 | 108 | |
trunk/src/mame/drivers/panicr.c
| r31072 | r31073 | |
| 242 | 242 | m_infotilemap_2 = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(panicr_state::get_infotile_info_2),this),TILEMAP_SCAN_ROWS,16,16,1024,16 ); |
| 243 | 243 | |
| 244 | 244 | m_txttilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(panicr_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); |
| 245 | | m_palette->configure_tilemap_groups(*m_txttilemap, *m_gfxdecode->gfx(0), 0); |
| 245 | m_txttilemap->configure_groups(*m_gfxdecode->gfx(0), 0); |
| 246 | 246 | } |
| 247 | 247 | |
| 248 | 248 | void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect ) |