mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
emupal/tilemap refactoring: configure_tilemap_groups is now a tilemap_t method rather than a palette_device method (nw)
This commit is contained in:
parent
ad915921be
commit
5e412b19e8
@ -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
|
||||
|
@ -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); }
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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 )
|
||||
|
@ -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));
|
||||
|
@ -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));
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user