From 5e412b19e8f4edea8b26c6c9832cc507983e0640 Mon Sep 17 00:00:00 2001 From: "Alex W. Jackson" Date: Sun, 22 Jun 2014 09:46:37 +0000 Subject: [PATCH] emupal/tilemap refactoring: configure_tilemap_groups is now a tilemap_t method rather than a palette_device method (nw) --- src/emu/emupal.c | 17 ----------------- src/emu/emupal.h | 1 - src/emu/tilemap.c | 18 ++++++++++++++++++ src/emu/tilemap.h | 1 + src/mame/drivers/panicr.c | 2 +- src/mame/video/1943.c | 2 +- src/mame/video/bankp.c | 4 ++-- src/mame/video/bosco.c | 4 ++-- src/mame/video/clshroad.c | 2 +- src/mame/video/equites.c | 2 +- src/mame/video/exedexes.c | 2 +- src/mame/video/galaga.c | 2 +- src/mame/video/gaplus.c | 2 +- src/mame/video/gberet.c | 2 +- src/mame/video/gunsmoke.c | 2 +- src/mame/video/mappy.c | 6 +++--- src/mame/video/polepos.c | 2 +- src/mame/video/retofinv.c | 2 +- src/mame/video/sprcros2.c | 2 +- src/mame/video/stfight.c | 4 ++-- src/mame/video/tceptor.c | 2 +- src/mame/video/vulgus.c | 2 +- 22 files changed, 42 insertions(+), 41 deletions(-) diff --git a/src/emu/emupal.c b/src/emu/emupal.c index c09550851f0..c81f5772f51 100644 --- a/src/emu/emupal.c +++ b/src/emu/emupal.c @@ -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 diff --git a/src/emu/emupal.h b/src/emu/emupal.h index 39fd4d04cc5..e8e0ebaf3a5 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -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); } diff --git a/src/emu/tilemap.c b/src/emu/tilemap.c index 93520155723..c08ed1e8446 100644 --- a/src/emu/tilemap.c +++ b/src/emu/tilemap.c @@ -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 diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h index fef5698efb9..7804d71f68b 100644 --- a/src/emu/tilemap.h +++ b/src/emu/tilemap.h @@ -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); diff --git a/src/mame/drivers/panicr.c b/src/mame/drivers/panicr.c index 3d207b79883..8b9216e8233 100644 --- a/src/mame/drivers/panicr.c +++ b/src/mame/drivers/panicr.c @@ -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 ) diff --git a/src/mame/video/1943.c b/src/mame/video/1943.c index da900cfd5cb..c72d9d9a262 100644 --- a/src/mame/video/1943.c +++ b/src/mame/video/1943.c @@ -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)); diff --git a/src/mame/video/bankp.c b/src/mame/video/bankp.c index 368099fa917..b59ef03a15b 100644 --- a/src/mame/video/bankp.c +++ b/src/mame/video/bankp.c @@ -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)); diff --git a/src/mame/video/bosco.c b/src/mame/video/bosco.c index 0dff21f8b6f..e187a668a0d 100644 --- a/src/mame/video/bosco.c +++ b/src/mame/video/bosco.c @@ -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); diff --git a/src/mame/video/clshroad.c b/src/mame/video/clshroad.c index 205574b7054..842aee11b34 100644 --- a/src/mame/video/clshroad.c +++ b/src/mame/video/clshroad.c @@ -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) diff --git a/src/mame/video/equites.c b/src/mame/video/equites.c index 7d704e38efe..f15a3972dc6 100644 --- a/src/mame/video/equites.c +++ b/src/mame/video/equites.c @@ -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); } diff --git a/src/mame/video/exedexes.c b/src/mame/video/exedexes.c index 8bad5ea91d1..15f4a6378dd 100644 --- a/src/mame/video/exedexes.c +++ b/src/mame/video/exedexes.c @@ -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 ) diff --git a/src/mame/video/galaga.c b/src/mame/video/galaga.c index 24faaf847ef..9cb5e22b7e5 100644 --- a/src/mame/video/galaga.c +++ b/src/mame/video/galaga.c @@ -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; diff --git a/src/mame/video/gaplus.c b/src/mame/video/gaplus.c index bc83b1dfa95..924c71ab25f 100644 --- a/src/mame/video/gaplus.c +++ b/src/mame/video/gaplus.c @@ -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(); } diff --git a/src/mame/video/gberet.c b/src/mame/video/gberet.c index a3fc70b8374..c10b7c9a952 100644 --- a/src/mame/video/gberet.c +++ b/src/mame/video/gberet.c @@ -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); } diff --git a/src/mame/video/gunsmoke.c b/src/mame/video/gunsmoke.c index 81c8dc5040e..d9d1ac2d897 100644 --- a/src/mame/video/gunsmoke.c +++ b/src/mame/video/gunsmoke.c @@ -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 ) diff --git a/src/mame/video/mappy.c b/src/mame/video/mappy.c index eaa974d54ca..b5e7dbbd6cd 100644 --- a/src/mame/video/mappy.c +++ b/src/mame/video/mappy.c @@ -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); } diff --git a/src/mame/video/polepos.c b/src/mame/video/polepos.c index 186f659dfc4..29cfa02a60b 100644 --- a/src/mame/video/polepos.c +++ b/src/mame/video/polepos.c @@ -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); } diff --git a/src/mame/video/retofinv.c b/src/mame/video/retofinv.c index d16b8f0d220..ab0dc69c808 100644 --- a/src/mame/video/retofinv.c +++ b/src/mame/video/retofinv.c @@ -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); } diff --git a/src/mame/video/sprcros2.c b/src/mame/video/sprcros2.c index e592f00e6a8..bfc346809b8 100644 --- a/src/mame/video/sprcros2.c +++ b/src/mame/video/sprcros2.c @@ -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) diff --git a/src/mame/video/stfight.c b/src/mame/video/stfight.c index a3741de5309..b51a427152b 100644 --- a/src/mame/video/stfight.c +++ b/src/mame/video/stfight.c @@ -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); } diff --git a/src/mame/video/tceptor.c b/src/mame/video/tceptor.c index 9353f4ce519..d7d7a46f2f6 100644 --- a/src/mame/video/tceptor.c +++ b/src/mame/video/tceptor.c @@ -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); diff --git a/src/mame/video/vulgus.c b/src/mame/video/vulgus.c index fc67fecaed1..5f44adf6414 100644 --- a/src/mame/video/vulgus.c +++ b/src/mame/video/vulgus.c @@ -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); }