emupal/tilemap refactoring: configure_tilemap_groups is now a tilemap_t method rather than a palette_device method (nw)

This commit is contained in:
Alex W. Jackson 2014-06-22 09:46:37 +00:00
parent ad915921be
commit 5e412b19e8
22 changed files with 42 additions and 41 deletions

View File

@ -167,23 +167,6 @@ UINT32 palette_device::transpen_mask(gfx_element &gfx, int color, int transcolor
}
//-------------------------------------------------
// configure_tilemap_groups - configure groups
// within a tilemap to match the indirect masks
//-------------------------------------------------
void palette_device::configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor)
{
int color;
assert(gfx.colors() <= TILEMAP_NUM_GROUPS);
// iterate over all colors in the tilemap
for (color = 0; color < gfx.colors(); color++)
tmap.set_transmask(color, transpen_mask(gfx, color, transcolor), 0);
}
//**************************************************************************
// SHADOW TABLE CONFIGURATION

View File

@ -367,7 +367,6 @@ public:
void set_indirect_color(int index, rgb_t rgb);
void set_pen_indirect(pen_t pen, UINT16 index);
UINT32 transpen_mask(gfx_element &gfx, int color, int transcolor);
void configure_tilemap_groups(tilemap_t &tmap, gfx_element &gfx, int transcolor);
// shadow config
void set_shadow_factor(double factor) { assert(m_shadow_group != 0); m_palette->group_set_contrast(m_shadow_group, factor); }

View File

@ -525,6 +525,24 @@ void tilemap_t::set_transmask(int group, UINT32 fgmask, UINT32 bgmask)
}
//-------------------------------------------------
// configure_groups - configure groups so that
// when group == color, pens whose indirect value
// matches the given transcolor are transparent
//-------------------------------------------------
void tilemap_t::configure_groups(gfx_element &gfx, int transcolor)
{
int color;
assert(gfx.colors() <= TILEMAP_NUM_GROUPS);
// iterate over all colors in the tilemap
for (color = 0; color < gfx.colors(); color++)
set_transmask(color, m_palette->transpen_mask(gfx, color, transcolor), 0);
}
//**************************************************************************
// COMMON LOGICAL-TO-MEMORY MAPPERS

View File

@ -533,6 +533,7 @@ public:
void map_pen_to_layer(int group, pen_t pen, UINT8 layermask) { map_pens_to_layer(group, pen, ~0, layermask); }
void set_transparent_pen(pen_t pen);
void set_transmask(int group, UINT32 fgmask, UINT32 bgmask);
void configure_groups(gfx_element &gfx, int transcolor);
// drawing
void draw(screen_device &screen, bitmap_ind16 &dest, const rectangle &cliprect, UINT32 flags, UINT8 priority = 0, UINT8 priority_mask = 0xff);

View File

@ -242,7 +242,7 @@ void panicr_state::video_start()
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 );
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 );
m_palette->configure_tilemap_groups(*m_txttilemap, *m_gfxdecode->gfx(0), 0);
m_txttilemap->configure_groups(*m_gfxdecode->gfx(0), 0);
}
void panicr_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect )

View File

@ -200,7 +200,7 @@ void _1943_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x0f);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x0f);
m_fg_tilemap->set_transparent_pen(0);
save_item(NAME(m_char_on));

View File

@ -149,8 +149,8 @@ void bankp_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0);
save_item(NAME(m_scroll_x));
save_item(NAME(m_priority));

View File

@ -124,8 +124,8 @@ VIDEO_START_MEMBER(bosco_state,bosco)
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);
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f);
m_bg_tilemap->set_scrolldx(3,3);

View File

@ -217,7 +217,7 @@ VIDEO_START_MEMBER(clshroad_state,firebatl)
m_tilemap_0b->set_scrolldx(-0x30, -0xb5);
m_tilemap_0b->set_transparent_pen(0 );
m_palette->configure_tilemap_groups(*m_tilemap_1, *m_gfxdecode->gfx(2), 0x0f);
m_tilemap_1->configure_groups(*m_gfxdecode->gfx(2), 0x0f);
}
VIDEO_START_MEMBER(clshroad_state,clshroad)

View File

@ -132,7 +132,7 @@ VIDEO_START_MEMBER(equites_state,splndrbt)
m_fg_tilemap->set_scrolldx(8, -8);
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(1), 0x10);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x10);
}

View File

@ -168,7 +168,7 @@ void exedexes_state::video_start()
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);
m_fg_tilemap->set_transparent_pen(0);
m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf);
}
void exedexes_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority )

View File

@ -429,7 +429,7 @@ TILE_GET_INFO_MEMBER(galaga_state::get_tile_info)
VIDEO_START_MEMBER(galaga_state,galaga)
{
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);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x1f);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f);
m_galaga_gfxbank = 0;

View File

@ -178,7 +178,7 @@ void gaplus_state::video_start()
{
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0xff);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xff);
starfield_init();
}

View File

@ -118,7 +118,7 @@ TILE_GET_INFO_MEMBER(gberet_state::get_bg_tile_info)
VIDEO_START_MEMBER(gberet_state,gberet)
{
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 0x10);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x10);
m_bg_tilemap->set_scroll_rows(32);
}

View File

@ -127,7 +127,7 @@ void gunsmoke_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0x4f);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f);
}
void gunsmoke_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect )

View File

@ -311,14 +311,14 @@ VIDEO_START_MEMBER(mappy_state,superpac)
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);
m_screen->register_screen_bitmap(m_sprite_bitmap);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31);
}
VIDEO_START_MEMBER(mappy_state,phozon)
{
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 15);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 15);
save_item(NAME(m_scroll));
}
@ -327,7 +327,7 @@ VIDEO_START_MEMBER(mappy_state,mappy)
{
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);
m_palette->configure_tilemap_groups(*m_bg_tilemap, *m_gfxdecode->gfx(0), 31);
m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31);
m_bg_tilemap->set_scroll_cols(36);
}

View File

@ -190,7 +190,7 @@ VIDEO_START_MEMBER(polepos_state,polepos)
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);
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);
m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0x2f);
m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x2f);
}

View File

@ -102,7 +102,7 @@ void retofinv_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 0);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0);
}

View File

@ -127,7 +127,7 @@ void sprcros2_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_fgtilemap, *m_gfxdecode->gfx(2), 0);
m_fgtilemap->configure_groups(*m_gfxdecode->gfx(2), 0);
}
void sprcros2_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect)

View File

@ -156,7 +156,7 @@ VIDEO_START_MEMBER(stfight_state,stfight)
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);
m_fg_tilemap->set_transparent_pen(0x0f);
m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf);
}
VIDEO_START_MEMBER(stfight_state,cshooter)
@ -166,7 +166,7 @@ VIDEO_START_MEMBER(stfight_state,cshooter)
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);
m_fg_tilemap->set_transparent_pen(0x0f);
m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 0xcf);
m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf);
}

View File

@ -386,7 +386,7 @@ void tceptor_state::video_start()
m_tx_tilemap->set_scrollx(0, -2*8);
m_tx_tilemap->set_scrolly(0, 0);
m_palette->configure_tilemap_groups(*m_tx_tilemap, *m_gfxdecode->gfx(0), 7);
m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 7);
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);
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);

View File

@ -112,7 +112,7 @@ void vulgus_state::video_start()
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);
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);
m_palette->configure_tilemap_groups(*m_fg_tilemap, *m_gfxdecode->gfx(0), 47);
m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47);
}