summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2026-04-03 01:49:18 +0900
committer GitHub <noreply@github.com>2026-04-03 03:49:18 +1100
commit3793fb6a56942de886ab594d649f5e817ab866c5 (patch)
treefc01cfb4c3b75018df87c85e20d78ce7a2f083f7
parentef2d23e2a03c16d880a46044b835c19cddb11a98 (diff)
namco/namco_c123tmap.cpp, namco/namco_c169roz.cpp, shared/namco_c355spr.cpp: Use device_delegate for callbacks. (#15170)
-rw-r--r--src/mame/dataeast/deco32.cpp2
-rw-r--r--src/mame/namco/gal3.cpp2
-rw-r--r--src/mame/namco/namco_c123tmap.cpp5
-rw-r--r--src/mame/namco/namco_c123tmap.h10
-rw-r--r--src/mame/namco/namco_c169roz.cpp3
-rw-r--r--src/mame/namco/namco_c169roz.h5
-rw-r--r--src/mame/namco/namcofl.cpp6
-rw-r--r--src/mame/namco/namconb1.cpp16
-rw-r--r--src/mame/namco/namcos1.cpp2
-rw-r--r--src/mame/namco/namcos2.cpp11
-rw-r--r--src/mame/namco/namcos21_c67.cpp1
-rw-r--r--src/mame/namco/namcos21_de.cpp1
-rw-r--r--src/mame/shared/namco_c355spr.cpp2
-rw-r--r--src/mame/shared/namco_c355spr.h26
14 files changed, 47 insertions, 45 deletions
diff --git a/src/mame/dataeast/deco32.cpp b/src/mame/dataeast/deco32.cpp
index acd38f0c590..c42fadfe8a6 100644
--- a/src/mame/dataeast/deco32.cpp
+++ b/src/mame/dataeast/deco32.cpp
@@ -2194,7 +2194,7 @@ void dragngun_state::lockloadu(machine_config &config)
void dragngun_state::namco_sprites(machine_config &config)
{
NAMCO_C355SPR(config, m_sprgenzoom, 0);
- m_sprgenzoom->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&dragngun_state::sprite_bank_callback, this));
+ m_sprgenzoom->set_tile_callback(FUNC(dragngun_state::sprite_bank_callback));
m_sprgenzoom->set_palette(m_palette);
m_sprgenzoom->set_transparent_pen(15);
m_sprgenzoom->set_colors(32);
diff --git a/src/mame/namco/gal3.cpp b/src/mame/namco/gal3.cpp
index 45076aea016..ce4480c6f30 100644
--- a/src/mame/namco/gal3.cpp
+++ b/src/mame/namco/gal3.cpp
@@ -667,7 +667,6 @@ void gal3_state::gal3(machine_config &config)
m_c355spr[0]->set_screen("lscreen");
m_c355spr[0]->set_palette(m_palette[0]);
m_c355spr[0]->set_scroll_offsets(0x26, 0x19);
- m_c355spr[0]->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr[0]->set_mix_callback(FUNC(gal3_state::sprite_mix_callback));
m_c355spr[0]->set_color_base(0x1000); // TODO : verify palette offset
m_c355spr[0]->set_external_prifill(true);
@@ -697,7 +696,6 @@ void gal3_state::gal3(machine_config &config)
m_c355spr[1]->set_screen("rscreen");
m_c355spr[1]->set_palette(m_palette[1]);
m_c355spr[1]->set_scroll_offsets(0x26, 0x19);
- m_c355spr[1]->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr[1]->set_mix_callback(FUNC(gal3_state::sprite_mix_callback));
m_c355spr[1]->set_color_base(0x1000); // TODO : verify palette offset
m_c355spr[1]->set_external_prifill(true);
diff --git a/src/mame/namco/namco_c123tmap.cpp b/src/mame/namco/namco_c123tmap.cpp
index 6da3424d755..bbf21a27d74 100644
--- a/src/mame/namco/namco_c123tmap.cpp
+++ b/src/mame/namco/namco_c123tmap.cpp
@@ -22,6 +22,7 @@ DEFINE_DEVICE_TYPE(NAMCO_C123TMAP, namco_c123tmap_device, "namco_c123tmap", "Nam
namco_c123tmap_device::namco_c123tmap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCO_C123TMAP, tag, owner, clock),
device_gfx_interface(mconfig, *this, gfxinfo),
+ m_tilemapinfo(*this),
m_color_base(0),
m_xoffs(0),
m_yoffs(0),
@@ -33,6 +34,8 @@ namco_c123tmap_device::namco_c123tmap_device(const machine_config &mconfig, cons
void namco_c123tmap_device::device_start()
{
+ m_tilemapinfo.cb.resolve_safe();
+
const int size = m_tmap3_half_height ? 0x8000 : 0x10000;
m_tilemapinfo.videoram = std::make_unique<uint16_t[]>(size);
@@ -93,7 +96,7 @@ template<int Offset>
TILE_GET_INFO_MEMBER(namco_c123tmap_device::get_tile_info)
{
const uint16_t *vram = &m_tilemapinfo.videoram[Offset];
- int tile, mask;
+ int tile = 0, mask = 0;
m_tilemapinfo.cb(vram[tile_index], tile, mask);
tileinfo.mask_data = m_mask + mask * 8;
tileinfo.set(0, tile, 0, 0);
diff --git a/src/mame/namco/namco_c123tmap.h b/src/mame/namco/namco_c123tmap.h
index 560f48d7d87..20615046e95 100644
--- a/src/mame/namco/namco_c123tmap.h
+++ b/src/mame/namco/namco_c123tmap.h
@@ -12,6 +12,8 @@
class namco_c123tmap_device : public device_t, public device_gfx_interface
{
public:
+ using c123_tilemap_delegate = device_delegate<void(uint16_t, int&, int&)>;
+
// construction/destruction
namco_c123tmap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
@@ -23,8 +25,7 @@ public:
}
void set_tmap3_half_height() { m_tmap3_half_height = true; }
- typedef delegate<void(uint16_t, int&, int&)> c123_tilemap_delegate;
- void set_tile_callback(c123_tilemap_delegate tilemap_cb) { m_tilemapinfo.cb = tilemap_cb; }
+ template <typename... T> void set_tile_callback(T &&... args) { m_tilemapinfo.cb.set(std::forward<T>(args)...); }
// 16 bit handlers
void videoram16_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
@@ -52,6 +53,11 @@ private:
struct info
{
+ info(namco_c123tmap_device &owner)
+ : cb(owner)
+ {
+ }
+
uint16_t control[0x40 / 2];
/**
* [0x1] 0x02/2 tilemap#0.scrollx
diff --git a/src/mame/namco/namco_c169roz.cpp b/src/mame/namco/namco_c169roz.cpp
index 759ee73276d..4fad7aac255 100644
--- a/src/mame/namco/namco_c169roz.cpp
+++ b/src/mame/namco/namco_c169roz.cpp
@@ -28,6 +28,7 @@ DEFINE_DEVICE_TYPE(NAMCO_C169ROZ, namco_c169roz_device, "namco_c169roz", "Namco
namco_c169roz_device::namco_c169roz_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
device_t(mconfig, NAMCO_C169ROZ, tag, owner, clock),
device_gfx_interface(mconfig, *this, gfxinfo),
+ m_c169_cb(*this),
m_color_base(0),
m_is_namcofl(false),
m_mask(*this, "mask")
@@ -36,6 +37,8 @@ namco_c169roz_device::namco_c169roz_device(const machine_config &mconfig, const
void namco_c169roz_device::device_start()
{
+ m_c169_cb.resolve_safe();
+
m_videoram.resize(m_ramsize);
std::fill(std::begin(m_videoram), std::end(m_videoram), 0x0000);
diff --git a/src/mame/namco/namco_c169roz.h b/src/mame/namco/namco_c169roz.h
index cd748506443..bf2a487fc1a 100644
--- a/src/mame/namco/namco_c169roz.h
+++ b/src/mame/namco/namco_c169roz.h
@@ -13,6 +13,8 @@
class namco_c169roz_device : public device_t, public device_gfx_interface
{
public:
+ using c169_tilemap_delegate = device_delegate<void (uint16_t, int&, int&, int)>;
+
// construction/destruction
namco_c169roz_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
@@ -25,8 +27,7 @@ public:
uint16_t videoram_r(offs_t offset);
void videoram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- typedef delegate<void (uint16_t, int&, int&, int)> c169_tilemap_delegate;
- void set_tile_callback(c169_tilemap_delegate tilemap_cb) { m_c169_cb = tilemap_cb; }
+ template <typename... T> void set_tile_callback(T &&... args) { m_c169_cb.set(std::forward<T>(args)...); }
void draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri, uint8_t prival = 0, uint8_t primask = uint8_t(~0));
void mark_all_dirty();
diff --git a/src/mame/namco/namcofl.cpp b/src/mame/namco/namcofl.cpp
index 8d9a3da29d8..20862b4776a 100644
--- a/src/mame/namco/namcofl.cpp
+++ b/src/mame/namco/namcofl.cpp
@@ -719,21 +719,21 @@ void namcofl_state::namcofl(machine_config &config)
m_c169roz->set_palette(m_c116);
m_c169roz->set_is_namcofl(true);
m_c169roz->set_ram_words(0x20000 / 2);
- m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namcofl_state::roz_cb, this));
+ m_c169roz->set_tile_callback(FUNC(namcofl_state::roz_cb));
m_c169roz->set_color_base(0x1800);
NAMCO_C355SPR(config, m_c355spr, 0);
m_c355spr->set_screen(m_screen);
m_c355spr->set_palette(m_c116);
m_c355spr->set_scroll_offsets(0, 0);
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namcofl_state::objcode2tile, this));
+ m_c355spr->set_tile_callback(FUNC(namcofl_state::objcode2tile));
m_c355spr->set_mix_callback(FUNC(namcofl_state::sprite_mix_callback));
m_c355spr->set_color_base(0);
m_c355spr->set_buffer(1);
NAMCO_C123TMAP(config, m_c123tmap, 0);
m_c123tmap->set_palette(m_c116);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcofl_state::tilemap_cb, this));
+ m_c123tmap->set_tile_callback(FUNC(namcofl_state::tilemap_cb));
m_c123tmap->set_color_base(0x1000);
NAMCO_C116(config, m_c116, 0);
diff --git a/src/mame/namco/namconb1.cpp b/src/mame/namco/namconb1.cpp
index b86c6e17a7f..1c3235b47d3 100644
--- a/src/mame/namco/namconb1.cpp
+++ b/src/mame/namco/namconb1.cpp
@@ -998,7 +998,7 @@ void namconb1_state::namconb1(machine_config &config)
m_c355spr->set_screen(m_screen);
m_c355spr->set_palette(m_c116);
m_c355spr->set_scroll_offsets(0x26, 0x19);
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb1_state::NB1objcode2tile, this));
+ m_c355spr->set_tile_callback(FUNC(namconb1_state::NB1objcode2tile));
m_c355spr->set_mix_callback(FUNC(namconb1_state::sprite_mix_callback));
m_c355spr->set_buffer(2); // triple buffered
m_c355spr->set_color_base(0);
@@ -1006,7 +1006,7 @@ void namconb1_state::namconb1(machine_config &config)
NAMCO_C123TMAP(config, m_c123tmap);
m_c123tmap->set_palette(m_c116);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb1_state::NB1TilemapCB, this));
+ m_c123tmap->set_tile_callback(FUNC(namconb1_state::NB1TilemapCB));
m_c123tmap->set_color_base(0x1000);
NAMCO_C116(config, m_c116);
@@ -1046,22 +1046,22 @@ void namconb2_state::machbrkr(machine_config &config)
{
namconb2(config);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb2_state::NB2TilemapCB_machbrkr, this));
+ m_c123tmap->set_tile_callback(FUNC(namconb2_state::NB2TilemapCB_machbrkr));
- m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namconb2_state::NB2RozCB_machbrkr, this));
+ m_c169roz->set_tile_callback(FUNC(namconb2_state::NB2RozCB_machbrkr));
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb2_state::NB2objcode2tile_machbrkr, this));
+ m_c355spr->set_tile_callback(FUNC(namconb2_state::NB2objcode2tile_machbrkr));
}
void namconb2_state::outfxies(machine_config &config)
{
namconb2(config);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namconb2_state::NB2TilemapCB_outfxies, this));
+ m_c123tmap->set_tile_callback(FUNC(namconb2_state::NB2TilemapCB_outfxies));
- m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&namconb2_state::NB2RozCB_outfxies, this));
+ m_c169roz->set_tile_callback(FUNC(namconb2_state::NB2RozCB_outfxies));
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate(&namconb2_state::NB2objcode2tile_outfxies, this));
+ m_c355spr->set_tile_callback(FUNC(namconb2_state::NB2objcode2tile_outfxies));
}
diff --git a/src/mame/namco/namcos1.cpp b/src/mame/namco/namcos1.cpp
index 0fad0683f62..f9696fc2ce3 100644
--- a/src/mame/namco/namcos1.cpp
+++ b/src/mame/namco/namcos1.cpp
@@ -1056,7 +1056,7 @@ void namcos1_state::ns1(machine_config &config)
NAMCO_C123TMAP(config, m_c123tmap, 0);
m_c123tmap->set_palette(m_c116);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos1_state::TilemapCB, this));
+ m_c123tmap->set_tile_callback(FUNC(namcos1_state::TilemapCB));
m_c123tmap->set_color_base(0x0800);
m_c123tmap->set_offset(73, 16);
m_c123tmap->set_tmap3_half_height();
diff --git a/src/mame/namco/namcos2.cpp b/src/mame/namco/namcos2.cpp
index 109bbcc0f5f..1b155c7d120 100644
--- a/src/mame/namco/namcos2.cpp
+++ b/src/mame/namco/namcos2.cpp
@@ -1754,7 +1754,7 @@ void namcos2_base_state::configure_c123tmap_standard(machine_config &config)
{
NAMCO_C123TMAP(config, m_c123tmap);
m_c123tmap->set_palette(m_c116);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&namcos2_base_state::TilemapCB, this));
+ m_c123tmap->set_tile_callback(FUNC(namcos2_base_state::TilemapCB));
m_c123tmap->set_color_base(16*256);
}
@@ -1773,7 +1773,6 @@ void sgunner_state::configure_c355spr_standard(machine_config &config)
m_c355spr->set_screen(m_screen);
m_c355spr->set_palette(m_c116);
m_c355spr->set_scroll_offsets(0x26, 0x19);
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_mix_callback(FUNC(sgunner_state::sprite_mix_callback_c355));
m_c355spr->set_color_base(0);
}
@@ -1925,14 +1924,14 @@ void finallap_state::finalap2(machine_config &config)
{
base_fl(config);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&finallap_state::TilemapCB_finalap2, this));
+ m_c123tmap->set_tile_callback(FUNC(finallap_state::TilemapCB_finalap2));
}
void finallap_state::finalap3(machine_config &config)
{
finallap_c68(config);
- m_c123tmap->set_tile_callback(namco_c123tmap_device::c123_tilemap_delegate(&finallap_state::TilemapCB_finalap2, this));
+ m_c123tmap->set_tile_callback(FUNC(finallap_state::TilemapCB_finalap2));
}
@@ -2030,7 +2029,7 @@ void sgunner_state::luckywld(machine_config &config)
m_slave->set_addrmap(AS_PROGRAM, &sgunner_state::slave_luckywld_am);
configure_c169roz_standard(config);
- m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&sgunner_state::RozCB_luckywld, this));
+ m_c169roz->set_tile_callback(FUNC(sgunner_state::RozCB_luckywld));
}
void metlhawk_state::metlhawk(machine_config &config)
@@ -2059,7 +2058,7 @@ void metlhawk_state::metlhawk(machine_config &config)
configure_c123tmap_standard(config);
configure_c169roz_standard(config);
- m_c169roz->set_tile_callback(namco_c169roz_device::c169_tilemap_delegate(&metlhawk_state::RozCB_metlhawk, this));
+ m_c169roz->set_tile_callback(FUNC(metlhawk_state::RozCB_metlhawk));
m_c140->add_route(0, "speaker", 1.0, 0);
m_c140->add_route(1, "speaker", 1.0, 1);
diff --git a/src/mame/namco/namcos21_c67.cpp b/src/mame/namco/namcos21_c67.cpp
index 08cb640595a..2efbf3d0e26 100644
--- a/src/mame/namco/namcos21_c67.cpp
+++ b/src/mame/namco/namcos21_c67.cpp
@@ -859,7 +859,6 @@ void namcos21_c67_state::namcos21(machine_config &config)
m_c355spr->set_screen(m_screen);
m_c355spr->set_palette(m_palette);
m_c355spr->set_scroll_offsets(0x26, 0x19);
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_mix_callback(FUNC(namcos21_c67_state::sprite_mix_callback));
m_c355spr->set_color_base(0x1000);
m_c355spr->set_external_prifill(true);
diff --git a/src/mame/namco/namcos21_de.cpp b/src/mame/namco/namcos21_de.cpp
index 0f38e2777c9..23252f0ed1a 100644
--- a/src/mame/namco/namcos21_de.cpp
+++ b/src/mame/namco/namcos21_de.cpp
@@ -200,7 +200,6 @@ void namco_de_pcbstack_device::device_add_mconfig(machine_config &config)
m_c355spr->set_screen(m_screen);
m_c355spr->set_palette(m_palette);
m_c355spr->set_scroll_offsets(0x26, 0x19);
- m_c355spr->set_tile_callback(namco_c355spr_device::c355_obj_code2tile_delegate());
m_c355spr->set_mix_callback(FUNC(namco_de_pcbstack_device::sprite_mix_callback));
m_c355spr->set_color_base(0x1000);
m_c355spr->set_external_prifill(true);
diff --git a/src/mame/shared/namco_c355spr.cpp b/src/mame/shared/namco_c355spr.cpp
index efff32943ff..40ce7215e89 100644
--- a/src/mame/shared/namco_c355spr.cpp
+++ b/src/mame/shared/namco_c355spr.cpp
@@ -71,6 +71,7 @@ namco_c355spr_device::namco_c355spr_device(const machine_config &mconfig, device
device_t(mconfig, type, tag, owner, clock),
device_gfx_interface(mconfig, *this),
device_video_interface(mconfig, *this),
+ m_code2tile(*this, DEVICE_SELF, FUNC(namco_c355spr_device::default_code2tile)),
m_pri_cb(*this, DEVICE_SELF, FUNC(namco_c355spr_device::default_priority)),
m_mix_cb(*this, DEVICE_SELF, FUNC(namco_c355spr_device::default_mix)),
m_read_spritetile(*this, DEVICE_SELF, FUNC(namco_c355spr_device::read_spritetile)),
@@ -257,6 +258,7 @@ void namco_c355spr_device::device_start()
gfx(0)->set_colorbase(m_colbase);
gfx(0)->set_granularity(m_granularity);
+ m_code2tile.resolve();
m_pri_cb.resolve();
screen().register_screen_bitmap(m_renderbitmap);
diff --git a/src/mame/shared/namco_c355spr.h b/src/mame/shared/namco_c355spr.h
index 18f7744c2ae..c1f03c8c7fb 100644
--- a/src/mame/shared/namco_c355spr.h
+++ b/src/mame/shared/namco_c355spr.h
@@ -11,6 +11,14 @@
class namco_c355spr_device : public device_t, public device_gfx_interface, public device_video_interface
{
public:
+ using c355_obj_code2tile_delegate = device_delegate<int (int)>;
+ using c355_obj_entry_attr_delegate = device_delegate<u16(int, u8)>;
+ using c355_obj_entry_attr_which_delegate = device_delegate<u16(int, u8, int)>;
+ using c355_obj_entry_delegate = device_delegate<u16(int)>;
+ using c355_obj_entry_which_delegate = device_delegate<u16(int, int)>;
+ using c355_priority_delegate = device_delegate<int(int)>;
+ using c355_mix_delegate = device_delegate<bool (u16 &dest, u8 &destpri, u16 colbase, u16 src, int srcpri, int pri)>;
+
// construction/destruction
namco_c355spr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0);
@@ -28,6 +36,7 @@ public:
// the Namco code currently requires us to allocate memory in the device, the Data East hookup uses access callbacks
void set_device_allocates_spriteram(bool allocate_memory) { m_device_allocates_spriteram = allocate_memory; }
+ template <typename... T> void set_tile_callback(T &&... args) { m_code2tile.set(std::forward<T>(args)...); }
template <typename... T> void set_priority_callback(T &&... args) { m_pri_cb.set(std::forward<T>(args)...); }
template <typename... T> void set_mix_callback(T &&... args) { m_mix_cb.set(std::forward<T>(args)...); }
template <typename... T> void set_read_spritetile(T &&... args) { m_read_spritetile.set(std::forward<T>(args)...); }
@@ -42,23 +51,6 @@ public:
void position_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void vblank(int state);
- typedef delegate<int (int)> c355_obj_code2tile_delegate;
- typedef device_delegate<u16(int, u8)> c355_obj_entry_attr_delegate;
- typedef device_delegate<u16(int, u8, int)> c355_obj_entry_attr_which_delegate;
- typedef device_delegate<u16(int)> c355_obj_entry_delegate;
- typedef device_delegate<u16(int, int)> c355_obj_entry_which_delegate;
- typedef device_delegate<int(int)> c355_priority_delegate;
- typedef device_delegate<bool (u16 &dest, u8 &destpri, u16 colbase, u16 src, int srcpri, int pri)> c355_mix_delegate;
-
- void set_tile_callback(c355_obj_code2tile_delegate cb)
- {
- if (!cb.isnull())
- m_code2tile = cb;
- else
- m_code2tile = c355_obj_code2tile_delegate(&namco_c355spr_device::default_code2tile, this);
- }
-
-
void draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int pri = 0);
void draw(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect, int pri = 0);