diff options
Diffstat (limited to 'src')
1750 files changed, 9034 insertions, 9667 deletions
diff --git a/src/devices/bus/a1bus/a1cassette.cpp b/src/devices/bus/a1bus/a1cassette.cpp index 13140382f48..fc470ef7f94 100644 --- a/src/devices/bus/a1bus/a1cassette.cpp +++ b/src/devices/bus/a1bus/a1cassette.cpp @@ -72,7 +72,7 @@ a1bus_cassette_device::a1bus_cassette_device(const machine_config &mconfig, devi void a1bus_cassette_device::device_start() { - install_device(0xc000, 0xc0ff, read8_delegate(FUNC(a1bus_cassette_device::cassette_r), this), write8_delegate(FUNC(a1bus_cassette_device::cassette_w), this)); + install_device(0xc000, 0xc0ff, read8_delegate(*this, FUNC(a1bus_cassette_device::cassette_r)), write8_delegate(*this, FUNC(a1bus_cassette_device::cassette_w))); install_bank(0xc100, 0xc1ff, "bank_a1cas", &m_rom[0]); save_item(NAME(m_cassette_output_flipflop)); diff --git a/src/devices/bus/a1bus/a1cffa.cpp b/src/devices/bus/a1bus/a1cffa.cpp index 105abba1eff..8c68e818531 100644 --- a/src/devices/bus/a1bus/a1cffa.cpp +++ b/src/devices/bus/a1bus/a1cffa.cpp @@ -68,7 +68,7 @@ a1bus_cffa_device::a1bus_cffa_device(const machine_config &mconfig, device_type void a1bus_cffa_device::device_start() { - install_device(0xafe0, 0xafff, read8_delegate(FUNC(a1bus_cffa_device::cffa_r), this), write8_delegate(FUNC(a1bus_cffa_device::cffa_w), this)); + install_device(0xafe0, 0xafff, read8_delegate(*this, FUNC(a1bus_cffa_device::cffa_r)), write8_delegate(*this, FUNC(a1bus_cffa_device::cffa_w))); install_bank(0x9000, 0xafdf, "bank_cffa1", &m_rom[0]); save_item(NAME(m_lastdata)); diff --git a/src/devices/bus/a2bus/a2ultraterm.cpp b/src/devices/bus/a2bus/a2ultraterm.cpp index fd8fb2a895a..7b6caa40624 100644 --- a/src/devices/bus/a2bus/a2ultraterm.cpp +++ b/src/devices/bus/a2bus/a2ultraterm.cpp @@ -114,7 +114,7 @@ void a2bus_videx160_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(ULTRATERM_SCREEN_NAME); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(a2bus_videx160_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(a2bus_videx160_device::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(a2bus_videx160_device::vsync_changed)); } diff --git a/src/devices/bus/a2bus/a2videoterm.cpp b/src/devices/bus/a2bus/a2videoterm.cpp index 64d614bc60c..b0fda659783 100644 --- a/src/devices/bus/a2bus/a2videoterm.cpp +++ b/src/devices/bus/a2bus/a2videoterm.cpp @@ -120,7 +120,7 @@ void a2bus_videx80_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(VIDEOTERM_SCREEN_NAME); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(a2bus_videx80_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(a2bus_videx80_device::crtc_update_row)); } void a2bus_ap16_device::device_add_mconfig(machine_config &config) diff --git a/src/devices/bus/acorn/atom/discpack.cpp b/src/devices/bus/acorn/atom/discpack.cpp index fd33ec293a6..dd8d3021301 100644 --- a/src/devices/bus/acorn/atom/discpack.cpp +++ b/src/devices/bus/acorn/atom/discpack.cpp @@ -84,7 +84,7 @@ void atom_discpack_device::device_start() address_space &space = m_bus->memspace(); space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map); - space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8smo_delegate(FUNC(i8271_device::data_w), m_fdc.target())); + space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(*m_fdc, FUNC(i8271_device::data_r)), write8smo_delegate(*m_fdc, FUNC(i8271_device::data_w))); space.install_ram(0x2000, 0x23ff); space.install_ram(0x2400, 0x27ff); space.install_ram(0x3c00, 0x3fff); diff --git a/src/devices/bus/acorn/atom/econet.cpp b/src/devices/bus/acorn/atom/econet.cpp index 5051fd0e8e7..f615313bdad 100644 --- a/src/devices/bus/acorn/atom/econet.cpp +++ b/src/devices/bus/acorn/atom/econet.cpp @@ -63,8 +63,8 @@ void atom_econet_device::device_start() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0xb400, 0xb403, read8sm_delegate(FUNC(mc6854_device::read), m_adlc.target()), write8sm_delegate(FUNC(mc6854_device::write), m_adlc.target())); - space.install_read_handler(0xb404, 0xb404, read8_delegate(FUNC(atom_econet_device::statid_r), this)); + space.install_readwrite_handler(0xb400, 0xb403, read8sm_delegate(*m_adlc, FUNC(mc6854_device::read)), write8sm_delegate(*m_adlc, FUNC(mc6854_device::write))); + space.install_read_handler(0xb404, 0xb404, read8_delegate(*this, FUNC(atom_econet_device::statid_r))); } //************************************************************************** diff --git a/src/devices/bus/acorn/atom/sid.cpp b/src/devices/bus/acorn/atom/sid.cpp index 8b5cd738cfe..4b0e1f7ff4d 100644 --- a/src/devices/bus/acorn/atom/sid.cpp +++ b/src/devices/bus/acorn/atom/sid.cpp @@ -55,5 +55,5 @@ void atom_sid_device::device_start() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0xbdc0, 0xbddf, read8sm_delegate(FUNC(mos6581_device::read), m_sid.target()), write8sm_delegate(FUNC(mos6581_device::write), m_sid.target())); + space.install_readwrite_handler(0xbdc0, 0xbddf, read8sm_delegate(*m_sid, FUNC(mos6581_device::read)), write8sm_delegate(*m_sid, FUNC(mos6581_device::write))); } diff --git a/src/devices/bus/acorn/cms/4080term.cpp b/src/devices/bus/acorn/cms/4080term.cpp index 629b4915fdd..f5ae26633e5 100644 --- a/src/devices/bus/acorn/cms/4080term.cpp +++ b/src/devices/bus/acorn/cms/4080term.cpp @@ -147,9 +147,9 @@ void cms_4080term_device::device_start() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0xfd20, 0xfd2f, read8sm_delegate(FUNC(ef9345_device::data_r), m_ef9345.target()), write8sm_delegate(FUNC(ef9345_device::data_w), m_ef9345.target())); + space.install_readwrite_handler(0xfd20, 0xfd2f, read8sm_delegate(*m_ef9345, FUNC(ef9345_device::data_r)), write8sm_delegate(*m_ef9345, FUNC(ef9345_device::data_w))); space.install_device(0xfd30, 0xfd3f, *m_via, &via6522_device::map); - space.install_readwrite_handler(0xfd40, 0xfd4f, read8sm_delegate(FUNC(mos6551_device::read), m_acia.target()), write8sm_delegate(FUNC(mos6551_device::write), m_acia.target())); + space.install_readwrite_handler(0xfd40, 0xfd4f, read8sm_delegate(*m_acia, FUNC(mos6551_device::read)), write8sm_delegate(*m_acia, FUNC(mos6551_device::write))); uint8_t *FNT = memregion("ef9345")->base(); uint16_t dest = 0x2000; diff --git a/src/devices/bus/acorn/cms/fdc.cpp b/src/devices/bus/acorn/cms/fdc.cpp index 833fa2b09a4..1d2c81dabf5 100644 --- a/src/devices/bus/acorn/cms/fdc.cpp +++ b/src/devices/bus/acorn/cms/fdc.cpp @@ -75,8 +75,8 @@ void cms_fdc_device::device_start() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0xfc50, 0xfc5f, read8_delegate(FUNC(cms_fdc_device::wd1770_state_r), this), write8_delegate(FUNC(cms_fdc_device::wd1770_control_w), this)); - space.install_readwrite_handler(0xfc40, 0xfc4f, read8sm_delegate(FUNC(wd1770_device::read), m_fdc.target()), write8sm_delegate(FUNC(wd1770_device::write), m_fdc.target())); + space.install_readwrite_handler(0xfc50, 0xfc5f, read8_delegate(*this, FUNC(cms_fdc_device::wd1770_state_r)), write8_delegate(*this, FUNC(cms_fdc_device::wd1770_control_w))); + space.install_readwrite_handler(0xfc40, 0xfc4f, read8sm_delegate(*m_fdc, FUNC(wd1770_device::read)), write8sm_delegate(*m_fdc, FUNC(wd1770_device::write))); } diff --git a/src/devices/bus/acorn/cms/hires.cpp b/src/devices/bus/acorn/cms/hires.cpp index 9e6e169737b..f0c23ef39b8 100644 --- a/src/devices/bus/acorn/cms/hires.cpp +++ b/src/devices/bus/acorn/cms/hires.cpp @@ -71,8 +71,8 @@ void cms_hires_device::device_start() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0xfc10, 0xfc1f, read8sm_delegate(FUNC(ef9365_device::data_r), m_gdp.target()), write8sm_delegate(FUNC(ef9365_device::data_w), m_gdp.target())); - space.install_write_handler(0xfc20, 0xfc2f, write8_delegate(FUNC(cms_hires_device::colour_reg_w), this)); + space.install_readwrite_handler(0xfc10, 0xfc1f, read8sm_delegate(*m_gdp, FUNC(ef9365_device::data_r)), write8sm_delegate(*m_gdp, FUNC(ef9365_device::data_w))); + space.install_write_handler(0xfc20, 0xfc2f, write8_delegate(*this, FUNC(cms_hires_device::colour_reg_w))); save_item(NAME(m_flash_state)); } diff --git a/src/devices/bus/acorn/system/8k.cpp b/src/devices/bus/acorn/system/8k.cpp index b8635920aab..97939b7362f 100644 --- a/src/devices/bus/acorn/system/8k.cpp +++ b/src/devices/bus/acorn/system/8k.cpp @@ -70,8 +70,8 @@ ioport_constructor acorn_8k_device::device_input_ports() const void acorn_8k_device::device_add_mconfig(machine_config &config) { /* rom sockets */ - GENERIC_SOCKET(config, "rom0", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom0_load), this); // IC17 - GENERIC_SOCKET(config, "rom1", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom1_load), this); // IC18 + GENERIC_SOCKET(config, "rom0", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom0_load)); // IC17 + GENERIC_SOCKET(config, "rom1", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom1_load)); // IC18 } diff --git a/src/devices/bus/acorn/system/econet.cpp b/src/devices/bus/acorn/system/econet.cpp index 261fb4261a1..f617d0266ae 100644 --- a/src/devices/bus/acorn/system/econet.cpp +++ b/src/devices/bus/acorn/system/econet.cpp @@ -70,8 +70,8 @@ void acorn_econet_device::device_reset() { address_space &space = m_bus->memspace(); - space.install_readwrite_handler(0x1940, 0x1943, read8sm_delegate(FUNC(mc6854_device::read), m_adlc.target()), write8sm_delegate(FUNC(mc6854_device::write), m_adlc.target())); - space.install_read_handler(0x1944, 0x1944, read8_delegate(FUNC(acorn_econet_device::statid_r), this)); + space.install_readwrite_handler(0x1940, 0x1943, read8sm_delegate(*m_adlc, FUNC(mc6854_device::read)), write8sm_delegate(*m_adlc, FUNC(mc6854_device::write))); + space.install_read_handler(0x1944, 0x1944, read8_delegate(*this, FUNC(acorn_econet_device::statid_r))); } //************************************************************************** diff --git a/src/devices/bus/acorn/system/fdc.cpp b/src/devices/bus/acorn/system/fdc.cpp index 179b914d3cf..185a10da7d7 100644 --- a/src/devices/bus/acorn/system/fdc.cpp +++ b/src/devices/bus/acorn/system/fdc.cpp @@ -85,7 +85,7 @@ void acorn_fdc_device::device_reset() address_space &space = m_bus->memspace(); space.install_device(0x0a00, 0x0a03, *m_fdc, &i8271_device::map); - space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(FUNC(i8271_device::data_r), m_fdc.target()), write8smo_delegate(FUNC(i8271_device::data_w), m_fdc.target())); + space.install_readwrite_handler(0x0a04, 0x0a04, 0, 0x1f8, 0, read8smo_delegate(*m_fdc, FUNC(i8271_device::data_r)), write8smo_delegate(*m_fdc, FUNC(i8271_device::data_w))); } diff --git a/src/devices/bus/acorn/system/vdu40.cpp b/src/devices/bus/acorn/system/vdu40.cpp index 916d7309dc3..dcee8cd9b53 100644 --- a/src/devices/bus/acorn/system/vdu40.cpp +++ b/src/devices/bus/acorn/system/vdu40.cpp @@ -38,7 +38,7 @@ void acorn_vdu40_device::device_add_mconfig(machine_config &config) m_crtc->set_show_border_area(false); m_crtc->set_char_width(12); m_crtc->out_vsync_callback().set(FUNC(acorn_vdu40_device::vsync_changed)); - m_crtc->set_update_row_callback(FUNC(acorn_vdu40_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(acorn_vdu40_device::crtc_update_row)); SAA5050(config, m_trom, 12_MHz_XTAL / 2); m_trom->set_screen_size(40, 25, 40); @@ -82,8 +82,8 @@ void acorn_vdu40_device::device_reset() address_space &space = m_bus->memspace(); space.install_ram(0x0400, 0x07ff, m_videoram.get()); - space.install_readwrite_handler(0x0800, 0x0800, read8smo_delegate(FUNC(mc6845_device::status_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::address_w), m_crtc.target())); - space.install_readwrite_handler(0x0801, 0x0801, read8smo_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::register_w), m_crtc.target())); + space.install_readwrite_handler(0x0800, 0x0800, read8smo_delegate(*m_crtc, FUNC(mc6845_device::status_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + space.install_readwrite_handler(0x0801, 0x0801, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); } diff --git a/src/devices/bus/acorn/system/vdu80.cpp b/src/devices/bus/acorn/system/vdu80.cpp index 702041c3cf1..5cf995d8d3c 100644 --- a/src/devices/bus/acorn/system/vdu80.cpp +++ b/src/devices/bus/acorn/system/vdu80.cpp @@ -101,7 +101,7 @@ void acorn_vdu80_device::device_add_mconfig(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(6); - m_crtc->set_update_row_callback(FUNC(acorn_vdu80_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(acorn_vdu80_device::crtc_update_row)); } @@ -152,15 +152,15 @@ void acorn_vdu80_device::device_reset() { space.install_ram(0xf000, 0x0f7ff, m_videoram.get()); - space.install_readwrite_handler(0xe840, 0xe840, 0, 0x3f, 0, read8smo_delegate(FUNC(mc6845_device::status_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::address_w), m_crtc.target())); - space.install_readwrite_handler(0xe841, 0xe841, 0, 0x3e, 0, read8smo_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::register_w), m_crtc.target())); + space.install_readwrite_handler(0xe840, 0xe840, 0, 0x3f, 0, read8smo_delegate(*m_crtc, FUNC(mc6845_device::status_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + space.install_readwrite_handler(0xe841, 0xe841, 0, 0x3e, 0, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); } else { space.install_ram(0x1000, 0x017ff, m_videoram.get()); - space.install_readwrite_handler(0x1840, 0x1840, 0, 0x3f, 0, read8smo_delegate(FUNC(mc6845_device::status_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::address_w), m_crtc.target())); - space.install_readwrite_handler(0x1841, 0x1841, 0, 0x3e, 0, read8smo_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::register_w), m_crtc.target())); + space.install_readwrite_handler(0x1840, 0x1840, 0, 0x3f, 0, read8smo_delegate(*m_crtc, FUNC(mc6845_device::status_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + space.install_readwrite_handler(0x1841, 0x1841, 0, 0x3e, 0, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); } } diff --git a/src/devices/bus/acorn/system/vib.cpp b/src/devices/bus/acorn/system/vib.cpp index a204cbb038c..e4ca10e6146 100644 --- a/src/devices/bus/acorn/system/vib.cpp +++ b/src/devices/bus/acorn/system/vib.cpp @@ -113,8 +113,8 @@ void acorn_vib_device::device_reset() space.install_device(0x0c00, 0x0c0f, *m_via6522, &via6522_device::map); space.install_device(0x0c10, 0x0c1f, *m_via6522, &via6522_device::map); - space.install_readwrite_handler(0x0c20, 0x0c21, 0, 0x1e, 0, read8sm_delegate(FUNC(acia6850_device::read), m_acia.target()), write8sm_delegate(FUNC(acia6850_device::write), m_acia.target())); - space.install_readwrite_handler(0x0c40, 0x0c43, 0, 0x1c, 0, read8sm_delegate(FUNC(i8255_device::read), m_ppi8255.target()), write8sm_delegate(FUNC(i8255_device::write), m_ppi8255.target())); + space.install_readwrite_handler(0x0c20, 0x0c21, 0, 0x1e, 0, read8sm_delegate(*m_acia, FUNC(acia6850_device::read)), write8sm_delegate(*m_acia, FUNC(acia6850_device::write))); + space.install_readwrite_handler(0x0c40, 0x0c43, 0, 0x1c, 0, read8sm_delegate(*m_ppi8255, FUNC(i8255_device::read)), write8sm_delegate(*m_ppi8255, FUNC(i8255_device::write))); m_mc14411->timer_disable_all(); m_mc14411->timer_enable(mc14411_device::timer_id(m_txc->read()), true); diff --git a/src/devices/bus/amiga/zorro/a2052.cpp b/src/devices/bus/amiga/zorro/a2052.cpp index 515c568c019..4aa54e52bbc 100644 --- a/src/devices/bus/amiga/zorro/a2052.cpp +++ b/src/devices/bus/amiga/zorro/a2052.cpp @@ -129,7 +129,7 @@ WRITE_LINE_MEMBER( a2052_device::cfgin_w ) // install autoconfig handler m_slot->space().install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/bus/amiga/zorro/a2058.cpp b/src/devices/bus/amiga/zorro/a2058.cpp index e8d6e8c28fb..d0ecee24526 100644 --- a/src/devices/bus/amiga/zorro/a2058.cpp +++ b/src/devices/bus/amiga/zorro/a2058.cpp @@ -141,7 +141,7 @@ WRITE_LINE_MEMBER( a2058_device::cfgin_w ) // install autoconfig handler m_slot->space().install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/bus/amiga/zorro/a2065.cpp b/src/devices/bus/amiga/zorro/a2065.cpp index b1b747594cc..392601e1421 100644 --- a/src/devices/bus/amiga/zorro/a2065.cpp +++ b/src/devices/bus/amiga/zorro/a2065.cpp @@ -85,18 +85,18 @@ void a2065_device::autoconfig_base_address(offs_t address) // install autoconfig handler to new location m_slot->space().install_readwrite_handler(address, address + 0x7f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); // install access to lance registers m_slot->space().install_readwrite_handler(address + 0x4000, address + 0x4003, - read16_delegate(FUNC(am7990_device::regs_r), &(*m_lance)), - write16_delegate(FUNC(am7990_device::regs_w), &(*m_lance)), 0xffff); + read16_delegate(*m_lance, FUNC(am7990_device::regs_r)), + write16_delegate(*m_lance, FUNC(am7990_device::regs_w)), 0xffff); // install access to onboard ram (32k) m_slot->space().install_readwrite_handler(address + 0x8000, address + 0x8000 + 0x7fff, - read16_delegate(FUNC(a2065_device::host_ram_r), this), - write16_delegate(FUNC(a2065_device::host_ram_w), this), 0xffff); + read16_delegate(*this, FUNC(a2065_device::host_ram_r)), + write16_delegate(*this, FUNC(a2065_device::host_ram_w)), 0xffff); // we're done m_slot->cfgout_w(0); @@ -124,8 +124,8 @@ WRITE_LINE_MEMBER( a2065_device::cfgin_w ) // install autoconfig handler m_slot->space().install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/bus/amiga/zorro/a2232.cpp b/src/devices/bus/amiga/zorro/a2232.cpp index 24020d7a25d..8afa7e245f3 100644 --- a/src/devices/bus/amiga/zorro/a2232.cpp +++ b/src/devices/bus/amiga/zorro/a2232.cpp @@ -191,24 +191,24 @@ void a2232_device::autoconfig_base_address(offs_t address) m_slot->space().unmap_readwrite(0xe80000, 0xe8007f); m_slot->space().install_readwrite_handler(address, address + 0x3fff, - read16_delegate(FUNC(a2232_device::shared_ram_r), this), - write16_delegate(FUNC(a2232_device::shared_ram_w), this), 0xffff); + read16_delegate(*this, FUNC(a2232_device::shared_ram_r)), + write16_delegate(*this, FUNC(a2232_device::shared_ram_w)), 0xffff); m_slot->space().install_readwrite_handler(address + 0x4000, address + 0x4001, - read16_delegate(FUNC(a2232_device::irq_ack_r), this), - write16_delegate(FUNC(a2232_device::irq_ack_w), this), 0xffff); + read16_delegate(*this, FUNC(a2232_device::irq_ack_r)), + write16_delegate(*this, FUNC(a2232_device::irq_ack_w)), 0xffff); m_slot->space().install_readwrite_handler(address + 0x8000, address + 0x8001, - read16_delegate(FUNC(a2232_device::reset_low_r), this), - write16_delegate(FUNC(a2232_device::reset_low_w), this), 0xffff); + read16_delegate(*this, FUNC(a2232_device::reset_low_r)), + write16_delegate(*this, FUNC(a2232_device::reset_low_w)), 0xffff); m_slot->space().install_readwrite_handler(address + 0xa000, address + 0xa001, - read16_delegate(FUNC(a2232_device::irq_r), this), - write16_delegate(FUNC(a2232_device::irq_w), this), 0xffff); + read16_delegate(*this, FUNC(a2232_device::irq_r)), + write16_delegate(*this, FUNC(a2232_device::irq_w)), 0xffff); m_slot->space().install_readwrite_handler(address + 0xc000, address + 0xc001, - read16_delegate(FUNC(a2232_device::reset_high_r), this), - write16_delegate(FUNC(a2232_device::reset_high_w), this), 0xffff); + read16_delegate(*this, FUNC(a2232_device::reset_high_r)), + write16_delegate(*this, FUNC(a2232_device::reset_high_w)), 0xffff); // we're done m_slot->cfgout_w(0); @@ -237,8 +237,8 @@ WRITE_LINE_MEMBER( a2232_device::cfgin_w ) // install autoconfig handler m_slot->space().install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/bus/amiga/zorro/buddha.cpp b/src/devices/bus/amiga/zorro/buddha.cpp index 376e2824660..ddb3ba3344c 100644 --- a/src/devices/bus/amiga/zorro/buddha.cpp +++ b/src/devices/bus/amiga/zorro/buddha.cpp @@ -150,8 +150,8 @@ void buddha_device::autoconfig_base_address(offs_t address) // install autoconfig handler to new location m_slot->space().install_readwrite_handler(address, address + 0x7f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); // install access to the rom space m_slot->space().install_rom(address + 0x1000, address + 0xffff, memregion("bootrom")->base() + 0x1000); @@ -182,8 +182,8 @@ WRITE_LINE_MEMBER( buddha_device::cfgin_w ) // install autoconfig handler m_slot->space().install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/bus/bbc/exp/mertec.cpp b/src/devices/bus/bbc/exp/mertec.cpp index ab9dc3c2f6e..11b3c9dccb9 100644 --- a/src/devices/bus/bbc/exp/mertec.cpp +++ b/src/devices/bus/bbc/exp/mertec.cpp @@ -53,8 +53,8 @@ void bbc_mertec_device::device_add_mconfig(machine_config &config) /* adc */ UPD7002(config, m_upd7002, DERIVED_CLOCK(1, 8)); - m_upd7002->set_get_analogue_callback(FUNC(bbc_mertec_device::get_analogue_input), this); - m_upd7002->set_eoc_callback(FUNC(bbc_mertec_device::upd7002_eoc), this); + m_upd7002->set_get_analogue_callback(FUNC(bbc_mertec_device::get_analogue_input)); + m_upd7002->set_eoc_callback(FUNC(bbc_mertec_device::upd7002_eoc)); /* analogue port */ BBC_ANALOGUE_SLOT(config, m_analog, bbc_analogue_devices, nullptr); diff --git a/src/devices/bus/bbc/tube/tube_80286.cpp b/src/devices/bus/bbc/tube/tube_80286.cpp index e8ff167d0fb..de26a61ab48 100644 --- a/src/devices/bus/bbc/tube/tube_80286.cpp +++ b/src/devices/bus/bbc/tube/tube_80286.cpp @@ -62,7 +62,7 @@ void bbc_tube_80286_device::device_add_mconfig(machine_config &config) I80286(config, m_i80286, 12_MHz_XTAL / 2); m_i80286->set_addrmap(AS_PROGRAM, &bbc_tube_80286_device::tube_80286_mem); m_i80286->set_addrmap(AS_IO, &bbc_tube_80286_device::tube_80286_io); - m_i80286->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bbc_tube_80286_device::irq_callback), this)); + m_i80286->set_irq_acknowledge_callback(FUNC(bbc_tube_80286_device::irq_callback)); TUBE(config, m_ula); m_ula->pnmi_handler().set_inputline(m_i80286, INPUT_LINE_NMI); diff --git a/src/devices/bus/bbc/tube/tube_z80.cpp b/src/devices/bus/bbc/tube/tube_z80.cpp index 06e6931c7a3..8704a1ee771 100644 --- a/src/devices/bus/bbc/tube/tube_z80.cpp +++ b/src/devices/bus/bbc/tube/tube_z80.cpp @@ -67,7 +67,7 @@ void bbc_tube_z80_device::device_add_mconfig(machine_config &config) m_z80->set_addrmap(AS_PROGRAM, &bbc_tube_z80_device::tube_z80_mem); m_z80->set_addrmap(AS_OPCODES, &bbc_tube_z80_device::tube_z80_fetch); m_z80->set_addrmap(AS_IO, &bbc_tube_z80_device::tube_z80_io); - m_z80->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bbc_tube_z80_device::irq_callback), this)); + m_z80->set_irq_acknowledge_callback(FUNC(bbc_tube_z80_device::irq_callback)); TUBE(config, m_ula); m_ula->hirq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_tube_slot_device::irq_w)); diff --git a/src/devices/bus/bml3/bml3kanji.cpp b/src/devices/bus/bml3/bml3kanji.cpp index 375dcd7becf..ff1b3a9fae7 100644 --- a/src/devices/bus/bml3/bml3kanji.cpp +++ b/src/devices/bus/bml3/bml3kanji.cpp @@ -79,7 +79,7 @@ void bml3bus_kanji_device::device_start() // install into memory address_space &space_prg = m_bml3bus->space(); - space_prg.install_readwrite_handler(0xff75, 0xff76, read8_delegate( FUNC(bml3bus_kanji_device::bml3_kanji_r), this), write8_delegate(FUNC(bml3bus_kanji_device::bml3_kanji_w), this) ); + space_prg.install_readwrite_handler(0xff75, 0xff76, read8_delegate(*this, FUNC(bml3bus_kanji_device::bml3_kanji_r)), write8_delegate(*this, FUNC(bml3bus_kanji_device::bml3_kanji_w))); } void bml3bus_kanji_device::device_reset() diff --git a/src/devices/bus/bml3/bml3mp1802.cpp b/src/devices/bus/bml3/bml3mp1802.cpp index 18fd6702871..76c96a43040 100644 --- a/src/devices/bus/bml3/bml3mp1802.cpp +++ b/src/devices/bus/bml3/bml3mp1802.cpp @@ -132,8 +132,8 @@ void bml3bus_mp1802_device::device_start() // install into memory address_space &space_prg = m_bml3bus->space(); - space_prg.install_readwrite_handler(0xff00, 0xff03, read8sm_delegate(FUNC(mb8866_device::read), m_fdc.target()), write8sm_delegate(FUNC(mb8866_device::write), m_fdc.target())); - space_prg.install_readwrite_handler(0xff04, 0xff04, read8_delegate(FUNC(bml3bus_mp1802_device::bml3_mp1802_r), this), write8_delegate(FUNC(bml3bus_mp1802_device::bml3_mp1802_w), this)); + space_prg.install_readwrite_handler(0xff00, 0xff03, read8sm_delegate(*m_fdc, FUNC(mb8866_device::read)), write8sm_delegate(*m_fdc, FUNC(mb8866_device::write))); + space_prg.install_readwrite_handler(0xff04, 0xff04, read8_delegate(*this, FUNC(bml3bus_mp1802_device::bml3_mp1802_r)), write8_delegate(*this, FUNC(bml3bus_mp1802_device::bml3_mp1802_w))); // overwriting the main ROM (rather than using e.g. install_rom) should mean that bank switches for RAM expansion still work... uint8_t *mainrom = device().machine().root_device().memregion("maincpu")->base(); memcpy(mainrom + 0xf800, m_rom + 0xf800, 0x800); diff --git a/src/devices/bus/bml3/bml3mp1805.cpp b/src/devices/bus/bml3/bml3mp1805.cpp index 4ac4dc66df6..1b3bfb1d6b1 100644 --- a/src/devices/bus/bml3/bml3mp1805.cpp +++ b/src/devices/bus/bml3/bml3mp1805.cpp @@ -156,8 +156,8 @@ void bml3bus_mp1805_device::device_start() // install into memory address_space &space_prg = m_bml3bus->space(); - space_prg.install_readwrite_handler(0xff18, 0xff1f, read8_delegate( FUNC(mc6843_device::read), (mc6843_device*)m_mc6843), write8_delegate(FUNC(mc6843_device::write), (mc6843_device*)m_mc6843) ); - space_prg.install_readwrite_handler(0xff20, 0xff20, read8_delegate( FUNC(bml3bus_mp1805_device::bml3_mp1805_r), this), write8_delegate(FUNC(bml3bus_mp1805_device::bml3_mp1805_w), this) ); + space_prg.install_readwrite_handler(0xff18, 0xff1f, read8_delegate(*m_mc6843, FUNC(mc6843_device::read)), write8_delegate(*m_mc6843, FUNC(mc6843_device::write))); + space_prg.install_readwrite_handler(0xff20, 0xff20, read8_delegate(*this, FUNC(bml3bus_mp1805_device::bml3_mp1805_r)), write8_delegate(*this, FUNC(bml3bus_mp1805_device::bml3_mp1805_w))); // overwriting the main ROM (rather than using e.g. install_rom) should mean that bank switches for RAM expansion still work... uint8_t *mainrom = device().machine().root_device().memregion("maincpu")->base(); memcpy(mainrom + 0xf800, m_rom + 0xf800, 0x800); diff --git a/src/devices/bus/c64/xl80.cpp b/src/devices/bus/c64/xl80.cpp index 19a2f768a2c..8f0f35b523f 100644 --- a/src/devices/bus/c64/xl80.cpp +++ b/src/devices/bus/c64/xl80.cpp @@ -138,7 +138,7 @@ void c64_xl80_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(MC6845_SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(c64_xl80_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(c64_xl80_device::crtc_update_row)); } diff --git a/src/devices/bus/cbus/pc9801_118.cpp b/src/devices/bus/cbus/pc9801_118.cpp index a9271ecb0bf..2a2ec411a18 100644 --- a/src/devices/bus/cbus/pc9801_118.cpp +++ b/src/devices/bus/cbus/pc9801_118.cpp @@ -114,7 +114,7 @@ void pc9801_118_device::device_validity_check(validity_checker &valid) const void pc9801_118_device::device_start() { - m_bus->install_io(0xa460, 0xa463, read8_delegate(FUNC(pc9801_118_device::id_r), this), write8_delegate(FUNC(pc9801_118_device::ext_w), this) ); + m_bus->install_io(0xa460, 0xa463, read8_delegate(*this, FUNC(pc9801_118_device::id_r)), write8_delegate(*this, FUNC(pc9801_118_device::ext_w))); save_item(NAME(m_ext_reg)); } @@ -128,7 +128,7 @@ void pc9801_118_device::device_reset() { uint16_t port_base = (ioport("OPN3_DSW")->read() & 1) << 8; m_bus->io_space().unmap_readwrite(0x0088, 0x008b, 0x100); - m_bus->install_io(port_base + 0x0088, port_base + 0x008f, read8_delegate(FUNC(pc9801_118_device::opn3_r), this), write8_delegate(FUNC(pc9801_118_device::opn3_w), this) ); + m_bus->install_io(port_base + 0x0088, port_base + 0x008f, read8_delegate(*this, FUNC(pc9801_118_device::opn3_r)), write8_delegate(*this, FUNC(pc9801_118_device::opn3_w))); m_ext_reg = 1; // TODO: enabled or disabled? } diff --git a/src/devices/bus/cbus/pc9801_26.cpp b/src/devices/bus/cbus/pc9801_26.cpp index 603ea4a80b3..3d70d603665 100644 --- a/src/devices/bus/cbus/pc9801_26.cpp +++ b/src/devices/bus/cbus/pc9801_26.cpp @@ -133,7 +133,7 @@ void pc9801_26_device::device_reset() uint16_t port_base = (ioport("OPN_DSW")->read() & 1) << 8; m_bus->io_space().unmap_readwrite(0x0088, 0x008b, 0x100); - m_bus->install_io(port_base + 0x0088, port_base + 0x008b, read8_delegate(FUNC(pc9801_26_device::opn_r), this), write8_delegate(FUNC(pc9801_26_device::opn_w), this) ); + m_bus->install_io(port_base + 0x0088, port_base + 0x008b, read8_delegate(*this, FUNC(pc9801_26_device::opn_r)), write8_delegate(*this, FUNC(pc9801_26_device::opn_w))); } @@ -150,7 +150,7 @@ READ8_MEMBER(pc9801_26_device::opn_r) } else // odd { - printf("Read to undefined port [%02x]\n",offset+0x188); + logerror("Read to undefined port [%02x]\n", offset+0x188); return 0xff; } } @@ -161,5 +161,5 @@ WRITE8_MEMBER(pc9801_26_device::opn_w) if((offset & 5) == 0) m_opn->write(offset >> 1, data); else // odd - printf("PC9801-26: Write to undefined port [%02x] %02x\n",offset+0x188,data); + logerror("PC9801-26: Write to undefined port [%02x] %02x\n", offset+0x188, data); } diff --git a/src/devices/bus/cbus/pc9801_86.cpp b/src/devices/bus/cbus/pc9801_86.cpp index d9d6150a9fa..73f95aafc24 100644 --- a/src/devices/bus/cbus/pc9801_86.cpp +++ b/src/devices/bus/cbus/pc9801_86.cpp @@ -160,10 +160,10 @@ void pc9801_86_device::device_validity_check(validity_checker &valid) const void pc9801_86_device::device_start() { m_bus->program_space().install_rom(0xcc000,0xcffff,memregion(this->subtag("sound_bios").c_str())->base()); - m_bus->install_io(0xa460, 0xa463, read8_delegate(FUNC(pc9801_86_device::id_r), this), write8_delegate(FUNC(pc9801_86_device::mask_w), this)); - m_bus->install_io(0xa464, 0xa46f, read8_delegate(FUNC(pc9801_86_device::pcm_r), this), write8_delegate(FUNC(pc9801_86_device::pcm_w), this)); - m_bus->install_io(0xa66c, 0xa66f, read8_delegate([this](address_space &s, offs_t o, u8 mm){ return o == 2 ? m_pcm_mute : 0xff; }, "pc9801_86_mute_r"), - write8_delegate([this](address_space &s, offs_t o, u8 d, u8 mm){ if(o == 2) m_pcm_mute = d; }, "pc9801_86_mute_w")); + m_bus->install_io(0xa460, 0xa463, read8_delegate(*this, FUNC(pc9801_86_device::id_r)), write8_delegate(*this, FUNC(pc9801_86_device::mask_w))); + m_bus->install_io(0xa464, 0xa46f, read8_delegate(*this, FUNC(pc9801_86_device::pcm_r)), write8_delegate(*this, FUNC(pc9801_86_device::pcm_w))); + m_bus->install_io(0xa66c, 0xa66f, read8_delegate(*this, [this](address_space &s, offs_t o, u8 mm){ return o == 2 ? m_pcm_mute : 0xff; }, "pc9801_86_mute_r"), + write8_delegate(*this, [this](address_space &s, offs_t o, u8 d, u8 mm){ if(o == 2) m_pcm_mute = d; }, "pc9801_86_mute_w")); m_dac_timer = timer_alloc(); save_item(NAME(m_count)); @@ -180,7 +180,7 @@ void pc9801_86_device::device_reset() { uint16_t port_base = (ioport("OPNA_DSW")->read() & 1) << 8; m_bus->io_space().unmap_readwrite(0x0088, 0x008f, 0x100); - m_bus->install_io(port_base + 0x0088, port_base + 0x008f, read8_delegate(FUNC(pc9801_86_device::opna_r), this), write8_delegate(FUNC(pc9801_86_device::opna_w), this) ); + m_bus->install_io(port_base + 0x0088, port_base + 0x008f, read8_delegate(*this, FUNC(pc9801_86_device::opna_r)), write8_delegate(*this, FUNC(pc9801_86_device::opna_w))); m_mask = 0; m_head = m_tail = m_count = 0; @@ -412,7 +412,7 @@ void pc9801_speakboard_device::device_start() { pc9801_86_device::device_start(); - m_bus->install_io(0x0588, 0x058f, read8_delegate(FUNC(pc9801_speakboard_device::opna_slave_r), this), write8_delegate(FUNC(pc9801_speakboard_device::opna_slave_w), this) ); + m_bus->install_io(0x0588, 0x058f, read8_delegate(*this, FUNC(pc9801_speakboard_device::opna_slave_r)), write8_delegate(*this, FUNC(pc9801_speakboard_device::opna_slave_w))); } void pc9801_speakboard_device::device_reset() diff --git a/src/devices/bus/cbus/pc9801_amd98.cpp b/src/devices/bus/cbus/pc9801_amd98.cpp index ca7b32e7b4e..684dc8978df 100644 --- a/src/devices/bus/cbus/pc9801_amd98.cpp +++ b/src/devices/bus/cbus/pc9801_amd98.cpp @@ -134,9 +134,9 @@ void pc9801_amd98_device::device_start() void pc9801_amd98_device::device_reset() { - m_bus->install_io(0x00d8, 0x00df, read8_delegate(FUNC(pc9801_amd98_device::read), this), write8_delegate(FUNC(pc9801_amd98_device::write), this) ); + m_bus->install_io(0x00d8, 0x00df, read8_delegate(*this, FUNC(pc9801_amd98_device::read)), write8_delegate(*this, FUNC(pc9801_amd98_device::write))); // Thexder access with following - m_bus->install_io(0x38d8, 0x38df, read8_delegate(FUNC(pc9801_amd98_device::read), this), write8_delegate(FUNC(pc9801_amd98_device::write), this) ); + m_bus->install_io(0x38d8, 0x38df, read8_delegate(*this, FUNC(pc9801_amd98_device::read)), write8_delegate(*this, FUNC(pc9801_amd98_device::write))); } @@ -154,7 +154,7 @@ READ8_MEMBER(pc9801_amd98_device::read) return m_ay2->data_r(); } - printf("%02x\n",offset); + logerror("%02x\n",offset); return 0xff; } @@ -176,7 +176,7 @@ WRITE8_MEMBER(pc9801_amd98_device::write) m_ay2->data_w(data); break; default: - printf("%02x %02x\n",offset,data); + logerror("%02x %02x\n",offset,data); } } @@ -191,11 +191,11 @@ WRITE8_MEMBER(pc9801_amd98_device::ay3_data_latch_w) switch(data) { case 0x47: - //printf("%02x addr\n",m_ay3_latch); + //logerror("%02x addr\n",m_ay3_latch); m_ay3->address_w(m_ay3_latch); break; case 0x43: - //printf("%02x data\n",m_ay3_latch); + //logerror("%02x data\n",m_ay3_latch); m_ay3->data_w(m_ay3_latch); break; } diff --git a/src/devices/bus/cgenie/expansion/floppy.cpp b/src/devices/bus/cgenie/expansion/floppy.cpp index a25e49c7019..6238aaa936f 100644 --- a/src/devices/bus/cgenie/expansion/floppy.cpp +++ b/src/devices/bus/cgenie/expansion/floppy.cpp @@ -97,7 +97,7 @@ void cgenie_fdc_device::device_add_mconfig(machine_config &config) // SOFTWARE_LIST(config, "floppy_list").set_original("cgenie_flop"); - GENERIC_SOCKET(config, "socket", generic_plain_slot, "cgenie_flop_rom", "bin,rom").set_device_load(FUNC(cgenie_fdc_device::socket_load), this); + GENERIC_SOCKET(config, "socket", generic_plain_slot, "cgenie_flop_rom", "bin,rom").set_device_load(FUNC(cgenie_fdc_device::socket_load)); SOFTWARE_LIST(config, "rom_list").set_original("cgenie_flop_rom"); } @@ -147,9 +147,7 @@ void cgenie_fdc_device::device_reset() // map extra socket if (m_socket->exists()) - { - m_slot->m_program->install_read_handler(0xe000, 0xefff, read8sm_delegate(FUNC(generic_slot_device::read_rom), (generic_slot_device *) m_socket)); - } + m_slot->m_program->install_read_handler(0xe000, 0xefff, read8sm_delegate(*m_socket, FUNC(generic_slot_device::read_rom))); } diff --git a/src/devices/bus/coco/coco_dcmodem.cpp b/src/devices/bus/coco/coco_dcmodem.cpp index ab6ba20a622..4344314604b 100644 --- a/src/devices/bus/coco/coco_dcmodem.cpp +++ b/src/devices/bus/coco/coco_dcmodem.cpp @@ -59,8 +59,8 @@ namespace virtual void device_start() override { install_readwrite_handler(0xFF6C, 0xFF6F, - read8sm_delegate(FUNC(mos6551_device::read), (mos6551_device *)m_uart), - write8sm_delegate(FUNC(mos6551_device::write), (mos6551_device *)m_uart)); + read8sm_delegate(*m_uart, FUNC(mos6551_device::read)), + write8sm_delegate(*m_uart, FUNC(mos6551_device::write))); } virtual const tiny_rom_entry *device_rom_region() const override; diff --git a/src/devices/bus/coco/coco_multi.cpp b/src/devices/bus/coco/coco_multi.cpp index d6c5627ca11..a6705a7b751 100644 --- a/src/devices/bus/coco/coco_multi.cpp +++ b/src/devices/bus/coco/coco_multi.cpp @@ -252,7 +252,7 @@ coco_multipak_device::coco_multipak_device(const machine_config &mconfig, const void coco_multipak_device::device_start() { // install $FF7F handler - install_readwrite_handler(0xFF7F, 0xFF7F, read8_delegate(FUNC(coco_multipak_device::ff7f_read), this),write8_delegate(FUNC(coco_multipak_device::ff7f_write), this)); + install_readwrite_handler(0xFF7F, 0xFF7F, read8_delegate(*this, FUNC(coco_multipak_device::ff7f_read)), write8_delegate(*this, FUNC(coco_multipak_device::ff7f_write))); // initial state m_select = 0xFF; diff --git a/src/devices/bus/coco/coco_orch90.cpp b/src/devices/bus/coco/coco_orch90.cpp index e7506be7c2b..384dd2b76d9 100644 --- a/src/devices/bus/coco/coco_orch90.cpp +++ b/src/devices/bus/coco/coco_orch90.cpp @@ -75,8 +75,8 @@ namespace virtual void device_start() override { // install handlers - install_write_handler(0xFF7A, 0xFF7A, write8_delegate(FUNC(coco_orch90_device::write_left), this)); - install_write_handler(0xFF7B, 0xFF7B, write8_delegate(FUNC(coco_orch90_device::write_right), this)); + install_write_handler(0xFF7A, 0xFF7A, write8_delegate(*this, FUNC(coco_orch90_device::write_left))); + install_write_handler(0xFF7B, 0xFF7B, write8_delegate(*this, FUNC(coco_orch90_device::write_right))); // Orch-90 ties CART to Q set_line_value(line::CART, line_value::Q); diff --git a/src/devices/bus/coco/coco_rs232.cpp b/src/devices/bus/coco/coco_rs232.cpp index 5668034b80d..31da94f3e4f 100644 --- a/src/devices/bus/coco/coco_rs232.cpp +++ b/src/devices/bus/coco/coco_rs232.cpp @@ -57,8 +57,8 @@ namespace virtual void device_start() override { install_readwrite_handler(0xFF68, 0xFF6B, - read8sm_delegate(FUNC(mos6551_device::read), (mos6551_device *)m_uart), - write8sm_delegate(FUNC(mos6551_device::write), (mos6551_device *)m_uart)); + read8sm_delegate(*m_uart, FUNC(mos6551_device::read)), + write8sm_delegate(*m_uart, FUNC(mos6551_device::write))); } virtual const tiny_rom_entry *device_rom_region() const override; diff --git a/src/devices/bus/coco/coco_ssc.cpp b/src/devices/bus/coco/coco_ssc.cpp index 6dcd34a8f03..cc50f7cf6ad 100644 --- a/src/devices/bus/coco/coco_ssc.cpp +++ b/src/devices/bus/coco/coco_ssc.cpp @@ -211,9 +211,9 @@ coco_ssc_device::coco_ssc_device(const machine_config &mconfig, const char *tag, void coco_ssc_device::device_start() { // install $FF7D-E handler - write8_delegate wh = write8_delegate(FUNC(coco_ssc_device::ff7d_write), this); - read8_delegate rh = read8_delegate(FUNC(coco_ssc_device::ff7d_read), this); - install_readwrite_handler(0xFF7D, 0xFF7E, rh, wh); + install_readwrite_handler(0xFF7D, 0xFF7E, + read8_delegate(*this, FUNC(coco_ssc_device::ff7d_read)), + write8_delegate(*this, FUNC(coco_ssc_device::ff7d_write))); save_item(NAME(m_reset_line)); save_item(NAME(m_tms7000_busy)); diff --git a/src/devices/bus/comx35/clm.cpp b/src/devices/bus/comx35/clm.cpp index 745606875f0..ebf7e1f271e 100644 --- a/src/devices/bus/comx35/clm.cpp +++ b/src/devices/bus/comx35/clm.cpp @@ -153,7 +153,7 @@ void comx_clm_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(MC6845_SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(comx_clm_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(comx_clm_device::crtc_update_row)); } diff --git a/src/devices/bus/cpc/amdrum.cpp b/src/devices/bus/cpc/amdrum.cpp index 587577edf52..a9c612b4870 100644 --- a/src/devices/bus/cpc/amdrum.cpp +++ b/src/devices/bus/cpc/amdrum.cpp @@ -51,7 +51,7 @@ void cpc_amdrum_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_write_handler(0xff00,0xffff,write8_delegate(FUNC(cpc_amdrum_device::dac_w),this)); + space.install_write_handler(0xff00,0xffff, write8_delegate(*this, FUNC(cpc_amdrum_device::dac_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/brunword4.cpp b/src/devices/bus/cpc/brunword4.cpp index db5e8e1b57d..914ada94f15 100644 --- a/src/devices/bus/cpc/brunword4.cpp +++ b/src/devices/bus/cpc/brunword4.cpp @@ -74,7 +74,7 @@ void cpc_brunword4_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_write_handler(0xdf00,0xdfff,write8_delegate(FUNC(cpc_brunword4_device::rombank_w),this)); + space.install_write_handler(0xdf00,0xdfff, write8_delegate(*this, FUNC(cpc_brunword4_device::rombank_w))); } void cpc_brunword4_device::device_reset() diff --git a/src/devices/bus/cpc/cpc_pds.cpp b/src/devices/bus/cpc/cpc_pds.cpp index 0509ab866dc..43f1fc2cd05 100644 --- a/src/devices/bus/cpc/cpc_pds.cpp +++ b/src/devices/bus/cpc/cpc_pds.cpp @@ -33,7 +33,7 @@ cpc_pds_device::cpc_pds_device(const machine_config &mconfig, const char *tag, d device_t(mconfig, CPC_PDS, tag, owner, clock), device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), - m_pio(*this,"pio") + m_pio(*this, "pio") { } @@ -46,7 +46,7 @@ void cpc_pds_device::device_start() m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_readwrite_handler(0xfbec,0xfbef,read8_delegate(FUNC(cpc_pds_device::pio_r),this),write8_delegate(FUNC(cpc_pds_device::pio_w),this)); + space.install_readwrite_handler(0xfbec,0xfbef, read8_delegate(*this, FUNC(cpc_pds_device::pio_r)), write8_delegate(*this, FUNC(cpc_pds_device::pio_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/cpc_rs232.cpp b/src/devices/bus/cpc/cpc_rs232.cpp index 40fc0853539..d360175cba4 100644 --- a/src/devices/bus/cpc/cpc_rs232.cpp +++ b/src/devices/bus/cpc/cpc_rs232.cpp @@ -106,8 +106,8 @@ void cpc_rs232_device::device_start() m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_readwrite_handler(0xfadc,0xfadf,read8_delegate(FUNC(cpc_rs232_device::dart_r),this),write8_delegate(FUNC(cpc_rs232_device::dart_w),this)); - space.install_readwrite_handler(0xfbdc,0xfbdf,read8_delegate(FUNC(cpc_rs232_device::pit_r),this),write8_delegate(FUNC(cpc_rs232_device::pit_w),this)); + space.install_readwrite_handler(0xfadc,0xfadf, read8_delegate(*this, FUNC(cpc_rs232_device::dart_r)), write8_delegate(*this, FUNC(cpc_rs232_device::dart_w))); + space.install_readwrite_handler(0xfbdc,0xfbdf, read8_delegate(*this, FUNC(cpc_rs232_device::pit_r)), write8_delegate(*this, FUNC(cpc_rs232_device::pit_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/cpc_ssa1.cpp b/src/devices/bus/cpc/cpc_ssa1.cpp index bdfedce16ed..c009cc5a4e6 100644 --- a/src/devices/bus/cpc/cpc_ssa1.cpp +++ b/src/devices/bus/cpc/cpc_ssa1.cpp @@ -177,8 +177,8 @@ void cpc_ssa1_device::device_start() m_rom = memregion("sp0256")->base(); - space.install_readwrite_handler(0xfaee,0xfaee,read8_delegate(FUNC(cpc_ssa1_device::ssa1_r),this),write8_delegate(FUNC(cpc_ssa1_device::ssa1_w),this)); - space.install_readwrite_handler(0xfbee,0xfbee,read8_delegate(FUNC(cpc_ssa1_device::ssa1_r),this),write8_delegate(FUNC(cpc_ssa1_device::ssa1_w),this)); + space.install_readwrite_handler(0xfaee,0xfaee, read8_delegate(*this, FUNC(cpc_ssa1_device::ssa1_r)), write8_delegate(*this, FUNC(cpc_ssa1_device::ssa1_w))); + space.install_readwrite_handler(0xfbee,0xfbee, read8_delegate(*this, FUNC(cpc_ssa1_device::ssa1_r)), write8_delegate(*this, FUNC(cpc_ssa1_device::ssa1_w))); } void cpc_dkspeech_device::device_start() @@ -188,7 +188,7 @@ void cpc_dkspeech_device::device_start() m_rom = memregion("sp0256")->base(); - space.install_readwrite_handler(0xfbfe,0xfbfe,read8_delegate(FUNC(cpc_dkspeech_device::dkspeech_r),this),write8_delegate(FUNC(cpc_dkspeech_device::dkspeech_w),this)); + space.install_readwrite_handler(0xfbfe,0xfbfe, read8_delegate(*this, FUNC(cpc_dkspeech_device::dkspeech_r)), write8_delegate(*this, FUNC(cpc_dkspeech_device::dkspeech_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/ddi1.cpp b/src/devices/bus/cpc/ddi1.cpp index 76e09d36f34..c835a8e547f 100644 --- a/src/devices/bus/cpc/ddi1.cpp +++ b/src/devices/bus/cpc/ddi1.cpp @@ -75,9 +75,9 @@ void cpc_ddi1_device::device_start() m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_write_handler(0xfa7e,0xfa7f,write8_delegate(FUNC(cpc_ddi1_device::motor_w),this)); - space.install_readwrite_handler(0xfb7e,0xfb7f,read8_delegate(FUNC(cpc_ddi1_device::fdc_r),this),write8_delegate(FUNC(cpc_ddi1_device::fdc_w),this)); - space.install_write_handler(0xdf00,0xdfff,write8_delegate(FUNC(cpc_ddi1_device::rombank_w),this)); + space.install_write_handler(0xfa7e,0xfa7f, write8_delegate(*this, FUNC(cpc_ddi1_device::motor_w))); + space.install_readwrite_handler(0xfb7e,0xfb7f, read8_delegate(*this, FUNC(cpc_ddi1_device::fdc_r)), write8_delegate(*this, FUNC(cpc_ddi1_device::fdc_w))); + space.install_write_handler(0xdf00,0xdfff, write8_delegate(*this, FUNC(cpc_ddi1_device::rombank_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/doubler.cpp b/src/devices/bus/cpc/doubler.cpp index e9ed2e5b5f4..ff2d9988f31 100644 --- a/src/devices/bus/cpc/doubler.cpp +++ b/src/devices/bus/cpc/doubler.cpp @@ -46,7 +46,7 @@ void cpc_doubler_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_read_handler(0xf0e0,0xf0e0,read8_delegate(FUNC(cpc_doubler_device::ext_tape_r),this)); + space.install_read_handler(0xf0e0,0xf0e0, read8_delegate(*this, FUNC(cpc_doubler_device::ext_tape_r))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/hd20.cpp b/src/devices/bus/cpc/hd20.cpp index c13ffca6b4b..582a61df262 100644 --- a/src/devices/bus/cpc/hd20.cpp +++ b/src/devices/bus/cpc/hd20.cpp @@ -46,7 +46,7 @@ const tiny_rom_entry *cpc_hd20_device::device_rom_region() const cpc_hd20_device::cpc_hd20_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CPC_HD20, tag, owner, clock), device_cpc_expansion_card_interface(mconfig, *this), m_slot(nullptr), - m_hdc(*this,"hdc") + m_hdc(*this, "hdc") { } @@ -58,8 +58,8 @@ void cpc_hd20_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_write_handler(0xfbe0,0xfbe4,write8_delegate(FUNC(cpc_hd20_device::hdc_w),this)); - space.install_read_handler(0xfbe0,0xfbe4,read8_delegate(FUNC(cpc_hd20_device::hdc_r),this)); + space.install_write_handler(0xfbe0,0xfbe4, write8_delegate(*this, FUNC(cpc_hd20_device::hdc_w))); + space.install_read_handler(0xfbe0,0xfbe4, read8_delegate(*this, FUNC(cpc_hd20_device::hdc_r))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/magicsound.cpp b/src/devices/bus/cpc/magicsound.cpp index 1a85915dca1..a9c06b3f123 100644 --- a/src/devices/bus/cpc/magicsound.cpp +++ b/src/devices/bus/cpc/magicsound.cpp @@ -89,10 +89,10 @@ void al_magicsound_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_readwrite_handler(0xf8d0,0xf8df,read8_delegate(FUNC(al_magicsound_device::dmac_r),this),write8_delegate(FUNC(al_magicsound_device::dmac_w),this)); - space.install_write_handler(0xf9d0,0xf9df,write8_delegate(FUNC(al_magicsound_device::timer_w),this)); - space.install_write_handler(0xfad0,0xfadf,write8_delegate(FUNC(al_magicsound_device::volume_w),this)); - space.install_write_handler(0xfbd0,0xfbdf,write8_delegate(FUNC(al_magicsound_device::mapper_w),this)); + space.install_readwrite_handler(0xf8d0,0xf8df, read8_delegate(*this, FUNC(al_magicsound_device::dmac_r)), write8_delegate(*this, FUNC(al_magicsound_device::dmac_w))); + space.install_write_handler(0xf9d0,0xf9df, write8_delegate(*this, FUNC(al_magicsound_device::timer_w))); + space.install_write_handler(0xfad0,0xfadf, write8_delegate(*this, FUNC(al_magicsound_device::volume_w))); + space.install_write_handler(0xfbd0,0xfbdf, write8_delegate(*this, FUNC(al_magicsound_device::mapper_w))); m_ramptr = machine().device<ram_device>(":" RAM_TAG); diff --git a/src/devices/bus/cpc/musicmachine.cpp b/src/devices/bus/cpc/musicmachine.cpp index 4d43f20c1fe..90361578851 100644 --- a/src/devices/bus/cpc/musicmachine.cpp +++ b/src/devices/bus/cpc/musicmachine.cpp @@ -61,9 +61,9 @@ void cpc_musicmachine_device::device_start() m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_write_handler(0xf8e8,0xf8e8,write8_delegate(FUNC(cpc_musicmachine_device::irqsel_w),this)); - space.install_readwrite_handler(0xf8ec,0xf8ef,read8_delegate(FUNC(cpc_musicmachine_device::acia_r), this),write8_delegate(FUNC(cpc_musicmachine_device::acia_w),this)); - space.install_write_handler(0xf8f0,0xf8f0,write8_delegate(FUNC(cpc_musicmachine_device::dac_w),this)); + space.install_write_handler(0xf8e8,0xf8e8, write8_delegate(*this, FUNC(cpc_musicmachine_device::irqsel_w))); + space.install_readwrite_handler(0xf8ec,0xf8ef, read8_delegate(*this, FUNC(cpc_musicmachine_device::acia_r)), write8_delegate(*this, FUNC(cpc_musicmachine_device::acia_w))); + space.install_write_handler(0xf8f0,0xf8f0, write8_delegate(*this, FUNC(cpc_musicmachine_device::dac_w))); // 0xf8f4 - ADC read8_delegate // 0xf8f8 - ADC start } diff --git a/src/devices/bus/cpc/playcity.cpp b/src/devices/bus/cpc/playcity.cpp index 7d444abb03b..4a11189aacb 100644 --- a/src/devices/bus/cpc/playcity.cpp +++ b/src/devices/bus/cpc/playcity.cpp @@ -69,11 +69,11 @@ void cpc_playcity_device::device_start() m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_readwrite_handler(0xf880,0xf883,read8_delegate(FUNC(cpc_playcity_device::ctc_r),this),write8_delegate(FUNC(cpc_playcity_device::ctc_w),this)); - space.install_readwrite_handler(0xf884,0xf884,read8_delegate(FUNC(cpc_playcity_device::ymz1_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz1_data_w),this)); - space.install_readwrite_handler(0xf888,0xf888,read8_delegate(FUNC(cpc_playcity_device::ymz2_data_r),this),write8_delegate(FUNC(cpc_playcity_device::ymz2_data_w),this)); - space.install_write_handler(0xf984,0xf984,write8_delegate(FUNC(cpc_playcity_device::ymz1_address_w),this)); - space.install_write_handler(0xf988,0xf988,write8_delegate(FUNC(cpc_playcity_device::ymz2_address_w),this)); + space.install_readwrite_handler(0xf880,0xf883, read8_delegate(*this, FUNC(cpc_playcity_device::ctc_r)), write8_delegate(*this, FUNC(cpc_playcity_device::ctc_w))); + space.install_readwrite_handler(0xf884,0xf884, read8_delegate(*this, FUNC(cpc_playcity_device::ymz1_data_r)), write8_delegate(*this, FUNC(cpc_playcity_device::ymz1_data_w))); + space.install_readwrite_handler(0xf888,0xf888, read8_delegate(*this, FUNC(cpc_playcity_device::ymz2_data_r)), write8_delegate(*this, FUNC(cpc_playcity_device::ymz2_data_w))); + space.install_write_handler(0xf984,0xf984, write8_delegate(*this, FUNC(cpc_playcity_device::ymz1_address_w))); + space.install_write_handler(0xf988,0xf988, write8_delegate(*this, FUNC(cpc_playcity_device::ymz2_address_w))); } //------------------------------------------------- diff --git a/src/devices/bus/cpc/smartwatch.cpp b/src/devices/bus/cpc/smartwatch.cpp index 272b7ca953e..5b4e63df728 100644 --- a/src/devices/bus/cpc/smartwatch.cpp +++ b/src/devices/bus/cpc/smartwatch.cpp @@ -63,8 +63,8 @@ void cpc_smartwatch_device::device_start() void cpc_smartwatch_device::device_reset() { address_space &space = m_slot->cpu().space(AS_PROGRAM); - space.install_read_handler(0xc000,0xc001,read8_delegate(FUNC(cpc_smartwatch_device::rtc_w),this)); - space.install_read_handler(0xc004,0xc004,read8_delegate(FUNC(cpc_smartwatch_device::rtc_r),this)); + space.install_read_handler(0xc000,0xc001, read8_delegate(*this, FUNC(cpc_smartwatch_device::rtc_w))); + space.install_read_handler(0xc004,0xc004, read8_delegate(*this, FUNC(cpc_smartwatch_device::rtc_r))); m_bank = membank(":bank7"); } diff --git a/src/devices/bus/cpc/symbfac2.cpp b/src/devices/bus/cpc/symbfac2.cpp index a59a73bf72e..8710717de6c 100644 --- a/src/devices/bus/cpc/symbfac2.cpp +++ b/src/devices/bus/cpc/symbfac2.cpp @@ -90,11 +90,11 @@ void cpc_symbiface2_device::device_start() { m_slot = dynamic_cast<cpc_expansion_slot_device *>(owner()); address_space &space = m_slot->cpu().space(AS_IO); - space.install_readwrite_handler(0xfd00,0xfd07,read8_delegate(FUNC(cpc_symbiface2_device::ide_cs1_r),this),write8_delegate(FUNC(cpc_symbiface2_device::ide_cs1_w),this)); - space.install_readwrite_handler(0xfd08,0xfd0f,read8_delegate(FUNC(cpc_symbiface2_device::ide_cs0_r),this),write8_delegate(FUNC(cpc_symbiface2_device::ide_cs0_w),this)); - space.install_read_handler(0xfd10,0xfd10,read8_delegate(FUNC(cpc_symbiface2_device::mouse_r),this)); - space.install_readwrite_handler(0xfd14,0xfd15,read8_delegate(FUNC(cpc_symbiface2_device::rtc_r),this),write8_delegate(FUNC(cpc_symbiface2_device::rtc_w),this)); - space.install_readwrite_handler(0xfd17,0xfd17,read8_delegate(FUNC(cpc_symbiface2_device::rom_rewrite_r),this),write8_delegate(FUNC(cpc_symbiface2_device::rom_rewrite_w),this)); + space.install_readwrite_handler(0xfd00,0xfd07, read8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs1_w))); + space.install_readwrite_handler(0xfd08,0xfd0f, read8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::ide_cs0_w))); + space.install_read_handler(0xfd10,0xfd10, read8_delegate(*this, FUNC(cpc_symbiface2_device::mouse_r))); + space.install_readwrite_handler(0xfd14,0xfd15, read8_delegate(*this, FUNC(cpc_symbiface2_device::rtc_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::rtc_w))); + space.install_readwrite_handler(0xfd17,0xfd17, read8_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_r)), write8_delegate(*this, FUNC(cpc_symbiface2_device::rom_rewrite_w))); // set up ROM space (these can be writable, when mapped to &4000, or completely disabled, allowing the built-in ROMs to be visible) // 32 banks of 16kB (512kB) diff --git a/src/devices/bus/cpc/transtape.cpp b/src/devices/bus/cpc/transtape.cpp index 78ec1f15c72..3b3d29e53c0 100644 --- a/src/devices/bus/cpc/transtape.cpp +++ b/src/devices/bus/cpc/transtape.cpp @@ -63,8 +63,8 @@ void cpc_transtape_device::device_start() m_ram = make_unique_clear<uint8_t[]>(0x2000); - m_space->install_write_handler(0xfbf0,0xfbf0,write8_delegate(FUNC(cpc_transtape_device::output_w),this)); - m_space->install_read_handler(0xfbff,0xfbff,read8_delegate(FUNC(cpc_transtape_device::input_r),this)); + m_space->install_write_handler(0xfbf0,0xfbf0, write8_delegate(*this, FUNC(cpc_transtape_device::output_w))); + m_space->install_read_handler(0xfbff,0xfbff, read8_delegate(*this, FUNC(cpc_transtape_device::input_r))); } //------------------------------------------------- diff --git a/src/devices/bus/dmv/k220.cpp b/src/devices/bus/dmv/k220.cpp index 4ba32c77950..9251d453e57 100644 --- a/src/devices/bus/dmv/k220.cpp +++ b/src/devices/bus/dmv/k220.cpp @@ -140,8 +140,8 @@ dmv_k220_device::dmv_k220_device(const machine_config &mconfig, const char *tag, void dmv_k220_device::device_start() { address_space &space = *m_bus->m_iospace; - space.install_readwrite_handler(0x08, 0x0b, read8sm_delegate(FUNC(pit8253_device::read), &(*m_pit)), write8sm_delegate(FUNC(pit8253_device::write), &(*m_pit)), 0); - space.install_readwrite_handler(0x0c, 0x0f, read8sm_delegate(FUNC(i8255_device::read), &(*m_ppi)), write8sm_delegate(FUNC(i8255_device::write), &(*m_ppi)), 0); + space.install_readwrite_handler(0x08, 0x0b, read8sm_delegate(*m_pit, FUNC(pit8253_device::read)), write8sm_delegate(*m_pit, FUNC(pit8253_device::write)), 0); + space.install_readwrite_handler(0x0c, 0x0f, read8sm_delegate(*m_ppi, FUNC(i8255_device::read)), write8sm_delegate(*m_ppi, FUNC(i8255_device::write)), 0); m_digits.resolve(); diff --git a/src/devices/bus/dmv/k230.cpp b/src/devices/bus/dmv/k230.cpp index a58ced0492a..8c1d6e43ac3 100644 --- a/src/devices/bus/dmv/k230.cpp +++ b/src/devices/bus/dmv/k230.cpp @@ -148,7 +148,7 @@ void dmv_k230_device::device_start() void dmv_k234_device::device_start() { dmv_k230_device::device_start(); - m_bus->m_iospace->install_readwrite_handler(0xd8, 0xdf, read8_delegate(FUNC(dmv_k234_device::snr_r), this), write8_delegate(FUNC(dmv_k234_device::snr_w), this), 0); + m_bus->m_iospace->install_readwrite_handler(0xd8, 0xdf, read8_delegate(*this, FUNC(dmv_k234_device::snr_r)), write8_delegate(*this, FUNC(dmv_k234_device::snr_w)), 0); // register for state saving save_item(NAME(m_snr)); diff --git a/src/devices/bus/dmv/k806.cpp b/src/devices/bus/dmv/k806.cpp index 7daa744b3ff..87a0002c091 100644 --- a/src/devices/bus/dmv/k806.cpp +++ b/src/devices/bus/dmv/k806.cpp @@ -119,7 +119,7 @@ void dmv_k806_device::device_add_mconfig(machine_config &config) m_mcu->p2_out_cb().set(FUNC(dmv_k806_device::port2_w)); m_mcu->t1_in_cb().set(FUNC(dmv_k806_device::portt1_r)); - TIMER(config, "mouse_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(dmv_k806_device::mouse_timer), this), attotime::from_hz(1000)); + TIMER(config, "mouse_timer", 0).configure_periodic(FUNC(dmv_k806_device::mouse_timer), attotime::from_hz(1000)); } //------------------------------------------------- diff --git a/src/devices/bus/ecbbus/grip.cpp b/src/devices/bus/ecbbus/grip.cpp index f7abc75aac5..1fcedf58ccc 100644 --- a/src/devices/bus/ecbbus/grip.cpp +++ b/src/devices/bus/ecbbus/grip.cpp @@ -435,7 +435,7 @@ void ecb_grip21_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(ecb_grip21_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(ecb_grip21_device::crtc_update_row)); m_crtc->out_de_callback().set(m_sti, FUNC(z80sti_device::i1_w)); m_crtc->out_cur_callback().set(m_sti, FUNC(z80sti_device::i1_w)); diff --git a/src/devices/bus/einstein/pipe/silicon_disc.cpp b/src/devices/bus/einstein/pipe/silicon_disc.cpp index b9017cd6e56..ff4ac92a910 100644 --- a/src/devices/bus/einstein/pipe/silicon_disc.cpp +++ b/src/devices/bus/einstein/pipe/silicon_disc.cpp @@ -87,8 +87,8 @@ void einstein_silicon_disc_device::device_reset() // install i/o ports io_space().install_device(0xf0, 0xff, *this, &einstein_silicon_disc_device::map); io_space().install_readwrite_handler(0xfa, 0xfa, 0, 0, 0xff00, - read8_delegate(FUNC(einstein_silicon_disc_device::ram_r), this), - write8_delegate(FUNC(einstein_silicon_disc_device::ram_w), this)); + read8_delegate(*this, FUNC(einstein_silicon_disc_device::ram_r)), + write8_delegate(*this, FUNC(einstein_silicon_disc_device::ram_w))); } diff --git a/src/devices/bus/einstein/pipe/speculator.cpp b/src/devices/bus/einstein/pipe/speculator.cpp index ed35973ab12..c4afaa4ac2d 100644 --- a/src/devices/bus/einstein/pipe/speculator.cpp +++ b/src/devices/bus/einstein/pipe/speculator.cpp @@ -97,18 +97,18 @@ void einstein_speculator_device::device_reset() { // ram: range 0x1f, 0x3f, 0x5f, 0x7f, 0x9f, 0xbf, 0xdf, 0xff io_space().install_readwrite_handler(0x1f, 0x1f, 0, 0, 0xffe0, - read8_delegate(FUNC(einstein_speculator_device::ram_r), this), - write8_delegate(FUNC(einstein_speculator_device::ram_w), this)); + read8_delegate(*this, FUNC(einstein_speculator_device::ram_r)), + write8_delegate(*this, FUNC(einstein_speculator_device::ram_w))); // ram: range 0x60 - 0xff io_space().install_readwrite_handler(0x60, 0x60, 0, 0, 0xff9f, - read8_delegate(FUNC(einstein_speculator_device::ram_r), this), - write8_delegate(FUNC(einstein_speculator_device::ram_w), this)); + read8_delegate(*this, FUNC(einstein_speculator_device::ram_r)), + write8_delegate(*this, FUNC(einstein_speculator_device::ram_w))); // tape read/nmi write register: range 0xff io_space().install_readwrite_handler(0xff, 0xff, 0, 0, 0xff00, - read8_delegate(FUNC(einstein_speculator_device::tape_r), this), - write8_delegate(FUNC(einstein_speculator_device::nmi_w), this)); + read8_delegate(*this, FUNC(einstein_speculator_device::tape_r)), + write8_delegate(*this, FUNC(einstein_speculator_device::nmi_w))); } diff --git a/src/devices/bus/einstein/pipe/tk02.cpp b/src/devices/bus/einstein/pipe/tk02.cpp index 0564a5eaaad..5f0a38ed27b 100644 --- a/src/devices/bus/einstein/pipe/tk02.cpp +++ b/src/devices/bus/einstein/pipe/tk02.cpp @@ -111,7 +111,7 @@ void tk02_device::device_add_mconfig(machine_config &config) m_crtc->set_screen("mono"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(tk02_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(tk02_device::crtc_update_row)); m_crtc->out_de_callback().set(FUNC(tk02_device::de_w)); TATUNG_PIPE(config, m_pipe, DERIVED_CLOCK(1, 1), tatung_pipe_cards, nullptr); @@ -160,7 +160,7 @@ void tk02_device::device_start() void tk02_device::device_reset() { io_space().install_device(0x40, 0x4f, *this, &tk02_device::map); - io_space().install_readwrite_handler(0x40, 0x47, 0, 0, 0xff00, read8_delegate(FUNC(tk02_device::ram_r), this), write8_delegate(FUNC(tk02_device::ram_w), this)); + io_space().install_readwrite_handler(0x40, 0x47, 0, 0, 0xff00, read8_delegate(*this, FUNC(tk02_device::ram_r)), write8_delegate(*this, FUNC(tk02_device::ram_w))); } diff --git a/src/devices/bus/electron/cart/ap5.cpp b/src/devices/bus/electron/cart/ap5.cpp index e72e9ac4e25..2929374cd48 100644 --- a/src/devices/bus/electron/cart/ap5.cpp +++ b/src/devices/bus/electron/cart/ap5.cpp @@ -26,9 +26,9 @@ void electron_ap5_device::device_add_mconfig(machine_config &config) { /* rom sockets */ GENERIC_SOCKET(config, m_romslot[0], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 14 - m_romslot[0]->set_device_load(FUNC(electron_ap5_device::rom1_load), this); + m_romslot[0]->set_device_load(FUNC(electron_ap5_device::rom1_load)); GENERIC_SOCKET(config, m_romslot[1], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 15 - m_romslot[1]->set_device_load(FUNC(electron_ap5_device::rom2_load), this); + m_romslot[1]->set_device_load(FUNC(electron_ap5_device::rom2_load)); /* via */ VIA6522(config, m_via, DERIVED_CLOCK(1, 16)); diff --git a/src/devices/bus/electron/cart/romp144.cpp b/src/devices/bus/electron/cart/romp144.cpp index 14853d86949..de947454fd8 100644 --- a/src/devices/bus/electron/cart/romp144.cpp +++ b/src/devices/bus/electron/cart/romp144.cpp @@ -26,19 +26,19 @@ void electron_romp144_device::device_add_mconfig(machine_config &config) { /* rom sockets */ GENERIC_SOCKET(config, m_romslot[0], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[0]->set_device_load(FUNC(electron_romp144_device::rom0), this); + m_romslot[0]->set_device_load(FUNC(electron_romp144_device::rom0)); GENERIC_SOCKET(config, m_romslot[1], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[1]->set_device_load(FUNC(electron_romp144_device::rom1), this); + m_romslot[1]->set_device_load(FUNC(electron_romp144_device::rom1)); GENERIC_SOCKET(config, m_romslot[2], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[2]->set_device_load(FUNC(electron_romp144_device::rom2), this); + m_romslot[2]->set_device_load(FUNC(electron_romp144_device::rom2)); GENERIC_SOCKET(config, m_romslot[3], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[3]->set_device_load(FUNC(electron_romp144_device::rom3), this); + m_romslot[3]->set_device_load(FUNC(electron_romp144_device::rom3)); GENERIC_SOCKET(config, m_romslot[4], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[4]->set_device_load(FUNC(electron_romp144_device::rom4), this); + m_romslot[4]->set_device_load(FUNC(electron_romp144_device::rom4)); GENERIC_SOCKET(config, m_romslot[5], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[5]->set_device_load(FUNC(electron_romp144_device::rom5), this); + m_romslot[5]->set_device_load(FUNC(electron_romp144_device::rom5)); GENERIC_SOCKET(config, m_romslot[6], generic_plain_slot, "electron_rom", "bin,rom"); - m_romslot[6]->set_device_load(FUNC(electron_romp144_device::rom6), this); + m_romslot[6]->set_device_load(FUNC(electron_romp144_device::rom6)); } //************************************************************************** diff --git a/src/devices/bus/electron/plus2.cpp b/src/devices/bus/electron/plus2.cpp index dd8be6e09eb..bb7d1342ebc 100644 --- a/src/devices/bus/electron/plus2.cpp +++ b/src/devices/bus/electron/plus2.cpp @@ -33,11 +33,11 @@ void electron_plus2_device::device_add_mconfig(machine_config &config) { /* rom sockets */ GENERIC_SOCKET(config, m_rom[0], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 13 - m_rom[0]->set_device_load(FUNC(electron_plus2_device::rom1_load), this); + m_rom[0]->set_device_load(FUNC(electron_plus2_device::rom1_load)); GENERIC_SOCKET(config, m_rom[1], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 14 - m_rom[1]->set_device_load(FUNC(electron_plus2_device::rom2_load), this); + m_rom[1]->set_device_load(FUNC(electron_plus2_device::rom2_load)); GENERIC_SOCKET(config, m_rom[2], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 15 - m_rom[2]->set_device_load(FUNC(electron_plus2_device::rom3_load), this); + m_rom[2]->set_device_load(FUNC(electron_plus2_device::rom3_load)); /* cartridges */ ELECTRON_CARTSLOT(config, m_cart[0], DERIVED_CLOCK(1, 1), electron_cart, nullptr); diff --git a/src/devices/bus/electron/rombox.cpp b/src/devices/bus/electron/rombox.cpp index 05d0a7c9092..920419c2d66 100644 --- a/src/devices/bus/electron/rombox.cpp +++ b/src/devices/bus/electron/rombox.cpp @@ -55,21 +55,21 @@ void electron_rombox_device::device_add_mconfig(machine_config &config) { /* rom sockets */ GENERIC_SOCKET(config, m_rom[0], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[0]->set_device_load(FUNC(electron_rombox_device::rom1_load), this); + m_rom[0]->set_device_load(FUNC(electron_rombox_device::rom1_load)); GENERIC_SOCKET(config, m_rom[1], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[1]->set_device_load(FUNC(electron_rombox_device::rom2_load), this); + m_rom[1]->set_device_load(FUNC(electron_rombox_device::rom2_load)); GENERIC_SOCKET(config, m_rom[2], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[2]->set_device_load(FUNC(electron_rombox_device::rom3_load), this); + m_rom[2]->set_device_load(FUNC(electron_rombox_device::rom3_load)); GENERIC_SOCKET(config, m_rom[3], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[3]->set_device_load(FUNC(electron_rombox_device::rom4_load), this); + m_rom[3]->set_device_load(FUNC(electron_rombox_device::rom4_load)); GENERIC_SOCKET(config, m_rom[4], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[4]->set_device_load(FUNC(electron_rombox_device::rom5_load), this); + m_rom[4]->set_device_load(FUNC(electron_rombox_device::rom5_load)); GENERIC_SOCKET(config, m_rom[5], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[5]->set_device_load(FUNC(electron_rombox_device::rom6_load), this); + m_rom[5]->set_device_load(FUNC(electron_rombox_device::rom6_load)); GENERIC_SOCKET(config, m_rom[6], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[6]->set_device_load(FUNC(electron_rombox_device::rom7_load), this); + m_rom[6]->set_device_load(FUNC(electron_rombox_device::rom7_load)); GENERIC_SOCKET(config, m_rom[7], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[7]->set_device_load(FUNC(electron_rombox_device::rom8_load), this); + m_rom[7]->set_device_load(FUNC(electron_rombox_device::rom8_load)); /* pass-through */ ELECTRON_EXPANSION_SLOT(config, m_exp, DERIVED_CLOCK(1, 1), electron_expansion_devices, nullptr); diff --git a/src/devices/bus/electron/romboxp.cpp b/src/devices/bus/electron/romboxp.cpp index 7581cf5b2e1..cb8fb77e81d 100644 --- a/src/devices/bus/electron/romboxp.cpp +++ b/src/devices/bus/electron/romboxp.cpp @@ -94,13 +94,13 @@ void electron_romboxp_device::device_add_mconfig(machine_config &config) /* rom sockets */ GENERIC_SOCKET(config, m_rom[0], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 4/12 - m_rom[0]->set_device_load(FUNC(electron_romboxp_device::rom1_load), this); + m_rom[0]->set_device_load(FUNC(electron_romboxp_device::rom1_load)); GENERIC_SOCKET(config, m_rom[1], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 5/13 - m_rom[1]->set_device_load(FUNC(electron_romboxp_device::rom2_load), this); + m_rom[1]->set_device_load(FUNC(electron_romboxp_device::rom2_load)); GENERIC_SOCKET(config, m_rom[2], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 6/14 also ROM/RAM - m_rom[2]->set_device_load(FUNC(electron_romboxp_device::rom3_load), this); + m_rom[2]->set_device_load(FUNC(electron_romboxp_device::rom3_load)); GENERIC_SOCKET(config, m_rom[3], generic_plain_slot, "electron_rom", "bin,rom"); // ROM SLOT 7/15 - m_rom[3]->set_device_load(FUNC(electron_romboxp_device::rom4_load), this); + m_rom[3]->set_device_load(FUNC(electron_romboxp_device::rom4_load)); /* cartridges */ ELECTRON_CARTSLOT(config, m_cart[0], DERIVED_CLOCK(1, 1), electron_cart, nullptr); // ROM SLOT 0/1 diff --git a/src/devices/bus/ep64/exdos.cpp b/src/devices/bus/ep64/exdos.cpp index a4487db6ba4..f443bb60693 100644 --- a/src/devices/bus/ep64/exdos.cpp +++ b/src/devices/bus/ep64/exdos.cpp @@ -144,8 +144,8 @@ void ep64_exdos_device::device_start() { m_slot->program().install_rom(0x080000, 0x087fff, m_rom->base()); - m_slot->io().install_readwrite_handler(0x10, 0x13, 0, 0x04, 0, read8sm_delegate(FUNC(wd_fdc_device_base::read), m_fdc.target()), write8sm_delegate(FUNC(wd_fdc_device_base::write), m_fdc.target())); - m_slot->io().install_readwrite_handler(0x18, 0x18, 0, 0x04, 0, READ8_DELEGATE(ep64_exdos_device, read), WRITE8_DELEGATE(ep64_exdos_device, write)); + m_slot->io().install_readwrite_handler(0x10, 0x13, 0, 0x04, 0, read8sm_delegate(*m_fdc, FUNC(wd_fdc_device_base::read)), write8sm_delegate(*m_fdc, FUNC(wd_fdc_device_base::write))); + m_slot->io().install_readwrite_handler(0x18, 0x18, 0, 0x04, 0, read8_delegate(*this, FUNC(ep64_exdos_device::read)), write8_delegate(*this, FUNC(ep64_exdos_device::write))); } diff --git a/src/devices/bus/generic/slot.cpp b/src/devices/bus/generic/slot.cpp index 557e1d8dcef..9d2f6294ab2 100644 --- a/src/devices/bus/generic/slot.cpp +++ b/src/devices/bus/generic/slot.cpp @@ -36,11 +36,11 @@ DEFINE_DEVICE_TYPE(GENERIC_CARTSLOT, generic_cartslot_device, "generic_cartslot" // device_generic_cart_interface - constructor //------------------------------------------------- -device_generic_cart_interface::device_generic_cart_interface(const machine_config &mconfig, device_t &device) - : device_slot_card_interface(mconfig, device), - m_rom(nullptr), - m_rom_size(0), - m_region(*this, DEVICE_SELF) +device_generic_cart_interface::device_generic_cart_interface(const machine_config &mconfig, device_t &device) : + device_slot_card_interface(mconfig, device), + m_rom(nullptr), + m_rom_size(0), + m_region(*this, DEVICE_SELF) { } @@ -95,17 +95,19 @@ generic_slot_device::generic_slot_device(const machine_config &mconfig, device_t m_must_be_loaded(false), m_width(GENERIC_ROM8_WIDTH), m_endianness(ENDIANNESS_LITTLE), - m_cart(nullptr) + m_cart(nullptr), + m_device_image_load(*this), + m_device_image_unload(*this) { } -generic_socket_device::generic_socket_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : generic_slot_device(mconfig, GENERIC_SOCKET, tag, owner, clock) +generic_socket_device::generic_socket_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + generic_slot_device(mconfig, GENERIC_SOCKET, tag, owner, clock) { } -generic_cartslot_device::generic_cartslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : generic_slot_device(mconfig, GENERIC_CARTSLOT, tag, owner, clock) +generic_cartslot_device::generic_cartslot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + generic_slot_device(mconfig, GENERIC_CARTSLOT, tag, owner, clock) { } @@ -124,6 +126,8 @@ generic_slot_device::~generic_slot_device() void generic_slot_device::device_start() { m_cart = dynamic_cast<device_generic_cart_interface *>(get_card_device()); + m_device_image_load.resolve(); + m_device_image_unload.resolve(); } diff --git a/src/devices/bus/generic/slot.h b/src/devices/bus/generic/slot.h index a67fd25b9e5..9df3bf44a76 100644 --- a/src/devices/bus/generic/slot.h +++ b/src/devices/bus/generic/slot.h @@ -78,8 +78,8 @@ public: generic_slot_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); virtual ~generic_slot_device(); - template <typename... T> void set_device_load(T &&... args) { m_device_image_load = load_delegate(std::forward<T>(args)...); } - template <typename... T> void set_device_unload(T &&... args) { m_device_image_unload = unload_delegate(std::forward<T>(args)...); } + template <typename... T> void set_device_load(T &&... args) { m_device_image_load.set(std::forward<T>(args)...); } + template <typename... T> void set_device_unload(T &&... args) { m_device_image_unload.set(std::forward<T>(args)...); } void set_interface(const char * interface) { m_interface = interface; } void set_default_card(const char * def) { m_default_card = def; } diff --git a/src/devices/bus/gio64/gio64.cpp b/src/devices/bus/gio64/gio64.cpp index 20caf53124b..ba35bb38c9d 100644 --- a/src/devices/bus/gio64/gio64.cpp +++ b/src/devices/bus/gio64/gio64.cpp @@ -93,9 +93,9 @@ void gio64_device::device_start() std::fill(std::begin(m_device_list), std::end(m_device_list), nullptr); m_space = &space(0); - m_space->install_readwrite_handler(0x00000000, 0x003fffff, read64_delegate(FUNC(gio64_device::no_gfx_r), this), write64_delegate(FUNC(gio64_device::no_gfx_w), this)); - m_space->install_readwrite_handler(0x00400000, 0x005fffff, read64_delegate(FUNC(gio64_device::no_exp0_r), this), write64_delegate(FUNC(gio64_device::no_exp0_w), this)); - m_space->install_readwrite_handler(0x00600000, 0x009fffff, read64_delegate(FUNC(gio64_device::no_exp1_r), this), write64_delegate(FUNC(gio64_device::no_exp1_w), this)); + m_space->install_readwrite_handler(0x00000000, 0x003fffff, read64_delegate(*this, FUNC(gio64_device::no_gfx_r)), write64_delegate(*this, FUNC(gio64_device::no_gfx_w))); + m_space->install_readwrite_handler(0x00400000, 0x005fffff, read64_delegate(*this, FUNC(gio64_device::no_exp0_r)), write64_delegate(*this, FUNC(gio64_device::no_exp0_w))); + m_space->install_readwrite_handler(0x00600000, 0x009fffff, read64_delegate(*this, FUNC(gio64_device::no_exp1_r)), write64_delegate(*this, FUNC(gio64_device::no_exp1_w))); } READ64_MEMBER(gio64_device::no_gfx_r) { return ~0ULL; } diff --git a/src/devices/bus/hp80_io/82937.cpp b/src/devices/bus/hp80_io/82937.cpp index 171d4a62204..c150b6d36fa 100644 --- a/src/devices/bus/hp80_io/82937.cpp +++ b/src/devices/bus/hp80_io/82937.cpp @@ -70,7 +70,7 @@ hp82937_io_card_device::~hp82937_io_card_device() void hp82937_io_card_device::install_read_write_handlers(address_space& space , uint16_t base_addr) { - space.install_readwrite_handler(base_addr , base_addr + 1 , READ8_DEVICE_DELEGATE(m_translator , hp_1mb5_device , cpu_r) , WRITE8_DEVICE_DELEGATE(m_translator , hp_1mb5_device , cpu_w)); + space.install_readwrite_handler(base_addr, base_addr + 1, read8_delegate(*m_translator, FUNC(hp_1mb5_device::cpu_r)), write8_delegate(*m_translator, FUNC(hp_1mb5_device::cpu_w))); } void hp82937_io_card_device::inten() diff --git a/src/devices/bus/hp9845_io/hp9845_io.cpp b/src/devices/bus/hp9845_io/hp9845_io.cpp index 663c8fd9977..a8e1d43c8bc 100644 --- a/src/devices/bus/hp9845_io/hp9845_io.cpp +++ b/src/devices/bus/hp9845_io/hp9845_io.cpp @@ -101,9 +101,9 @@ int hp9845_io_slot_device::get_rw_handlers(read16_delegate& rhandler , write16_d { hp9845_io_card_device *card = dynamic_cast<hp9845_io_card_device*>(get_card_device()); - if (card != nullptr) { - rhandler = read16_delegate(FUNC(hp9845_io_card_device::reg_r) , card); - whandler = write16_delegate(FUNC(hp9845_io_card_device::reg_w) , card); + if (card) { + rhandler = read16_delegate(*card, FUNC(hp9845_io_card_device::reg_r)); + whandler = write16_delegate(*card, FUNC(hp9845_io_card_device::reg_w)); return card->get_sc(); } else { return -1; @@ -114,7 +114,7 @@ bool hp9845_io_slot_device::has_dual_sc() const { hp9845_io_card_device *card = dynamic_cast<hp9845_io_card_device*>(get_card_device()); - if (card != nullptr) { + if (card) { return card->has_dual_sc(); } else { return false; @@ -129,7 +129,7 @@ void hp9845_io_card_device::set_slot_device(hp9845_io_slot_device* dev) m_slot_dev = dev; } -uint8_t hp9845_io_card_device::get_sc(void) +uint8_t hp9845_io_card_device::get_sc() { return m_select_code_port->read() + HP9845_IO_FIRST_SC; } diff --git a/src/devices/bus/hp9845_io/hp9845_io.h b/src/devices/bus/hp9845_io/hp9845_io.h index c62c8625563..b3018f7edf8 100644 --- a/src/devices/bus/hp9845_io/hp9845_io.h +++ b/src/devices/bus/hp9845_io/hp9845_io.h @@ -86,7 +86,7 @@ public: virtual DECLARE_WRITE16_MEMBER(reg_w) = 0; // SC getter - uint8_t get_sc(void); + uint8_t get_sc(); virtual bool has_dual_sc() const; diff --git a/src/devices/bus/hp_dio/hp98265a.cpp b/src/devices/bus/hp_dio/hp98265a.cpp index 623f2d00be1..436fbc1c910 100644 --- a/src/devices/bus/hp_dio/hp98265a.cpp +++ b/src/devices/bus/hp_dio/hp98265a.cpp @@ -164,8 +164,8 @@ void dio16_98265a_device::device_reset() program_space().install_readwrite_handler( 0x600000 + (code * 0x10000), 0x6007ff + (code * 0x10000), - read16_delegate(FUNC(dio16_98265a_device::io_r), this), - write16_delegate(FUNC(dio16_98265a_device::io_w), this)); + read16_delegate(*this, FUNC(dio16_98265a_device::io_r)), + write16_delegate(*this, FUNC(dio16_98265a_device::io_w))); program_space().install_device(0x6e0020, 0x6e003f, *m_spc, &mb87030_device::map, 0x00ff00ff); m_installed_io = true; } diff --git a/src/devices/bus/hp_dio/hp98543.cpp b/src/devices/bus/hp_dio/hp98543.cpp index 31251039ea6..280597f3a22 100644 --- a/src/devices/bus/hp_dio/hp98543.cpp +++ b/src/devices/bus/hp_dio/hp98543.cpp @@ -102,21 +102,21 @@ void dio16_98543_device::device_start() dio().install_memory( 0x200000, 0x27ffff, - read16_delegate(FUNC(dio16_98543_device::vram_r), this), - write16_delegate(FUNC(dio16_98543_device::vram_w), this)); + read16_delegate(*this, FUNC(dio16_98543_device::vram_r)), + write16_delegate(*this, FUNC(dio16_98543_device::vram_w))); dio().install_memory( 0x560000, 0x563fff, - read16_delegate(FUNC(dio16_98543_device::rom_r), this), - write16_delegate(FUNC(dio16_98543_device::rom_w), this)); + read16_delegate(*this, FUNC(dio16_98543_device::rom_r)), + write16_delegate(*this, FUNC(dio16_98543_device::rom_w))); dio().install_memory( 0x564000, 0x565fff, - read16_delegate(FUNC(dio16_98543_device::ctrl_r), this), - write16_delegate(FUNC(dio16_98543_device::ctrl_w), this)); + read16_delegate(*this, FUNC(dio16_98543_device::ctrl_r)), + write16_delegate(*this, FUNC(dio16_98543_device::ctrl_w))); dio().install_memory( 0x566000, 0x567fff, - read16_delegate(FUNC(nereid_device::ctrl_r), static_cast<nereid_device*>(m_nereid)), - write16_delegate(FUNC(nereid_device::ctrl_w), static_cast<nereid_device*>(m_nereid))); + read16_delegate(*m_nereid, FUNC(nereid_device::ctrl_r)), + write16_delegate(*m_nereid, FUNC(nereid_device::ctrl_w))); } void dio16_98543_device::device_reset() diff --git a/src/devices/bus/hp_dio/hp98544.cpp b/src/devices/bus/hp_dio/hp98544.cpp index 9565d4632d2..83cd9f25fe7 100644 --- a/src/devices/bus/hp_dio/hp98544.cpp +++ b/src/devices/bus/hp_dio/hp98544.cpp @@ -101,16 +101,16 @@ void dio16_98544_device::device_start() save_item(NAME(m_intreg)); dio().install_memory( 0x200000, 0x2fffff, - read16_delegate(FUNC(topcat_device::vram_r), static_cast<topcat_device*>(m_topcat)), - write16_delegate(FUNC(topcat_device::vram_w), static_cast<topcat_device*>(m_topcat))); + read16_delegate(*m_topcat, FUNC(topcat_device::vram_r)), + write16_delegate(*m_topcat, FUNC(topcat_device::vram_w))); dio().install_memory( 0x560000, 0x563fff, - read16_delegate(FUNC(dio16_98544_device::rom_r), this), - write16_delegate(FUNC(dio16_98544_device::rom_w), this)); + read16_delegate(*this, FUNC(dio16_98544_device::rom_r)), + write16_delegate(*this, FUNC(dio16_98544_device::rom_w))); dio().install_memory( 0x564000, 0x567fff, - read16_delegate(FUNC(topcat_device::ctrl_r), static_cast<topcat_device*>(m_topcat)), - write16_delegate(FUNC(topcat_device::ctrl_w), static_cast<topcat_device*>(m_topcat))); + read16_delegate(*m_topcat, FUNC(topcat_device::ctrl_r)), + write16_delegate(*m_topcat, FUNC(topcat_device::ctrl_w))); } //------------------------------------------------- diff --git a/src/devices/bus/hp_dio/hp98550.cpp b/src/devices/bus/hp_dio/hp98550.cpp index 28d87d5a52f..ed91b99ca3f 100644 --- a/src/devices/bus/hp_dio/hp98550.cpp +++ b/src/devices/bus/hp_dio/hp98550.cpp @@ -87,23 +87,23 @@ void dio32_98550_device::device_start() dio().install_memory( 0x200000, 0x3fffff, - read16_delegate(FUNC(dio32_98550_device::vram_r), this), - write16_delegate(FUNC(dio32_98550_device::vram_w), this)); + read16_delegate(*this, FUNC(dio32_98550_device::vram_r)), + write16_delegate(*this, FUNC(dio32_98550_device::vram_w))); dio().install_memory( 0x560000, 0x56ffff, - read16_delegate(FUNC(dio32_98550_device::rom_r), this), - write16_delegate(FUNC(dio32_98550_device::rom_w), this)); + read16_delegate(*this, FUNC(dio32_98550_device::rom_r)), + write16_delegate(*this, FUNC(dio32_98550_device::rom_w))); dio().install_memory( 0x564000, 0x5648ff, - read16_delegate(FUNC(dio32_98550_device::catseye_r), this), - write16_delegate(FUNC(dio32_98550_device::catseye_w), this)); + read16_delegate(*this, FUNC(dio32_98550_device::catseye_r)), + write16_delegate(*this, FUNC(dio32_98550_device::catseye_w))); dio().install_memory( 0x566000, 0x5660ff, - read16_delegate(FUNC(nereid_device::ctrl_r), &(*m_nereid)), - write16_delegate(FUNC(nereid_device::ctrl_w), &(*m_nereid))); + read16_delegate(*m_nereid, FUNC(nereid_device::ctrl_r)), + write16_delegate(*m_nereid, FUNC(nereid_device::ctrl_w))); } void dio32_98550_device::device_reset() diff --git a/src/devices/bus/hp_dio/hp98603a.cpp b/src/devices/bus/hp_dio/hp98603a.cpp index ac04f7479bd..9295fc1606d 100644 --- a/src/devices/bus/hp_dio/hp98603a.cpp +++ b/src/devices/bus/hp_dio/hp98603a.cpp @@ -67,8 +67,8 @@ void dio16_98603a_device::device_reset() { m_rom = device().machine().root_device().memregion(this->subtag(HP98603A_ROM_REGION).c_str())->base(); dio().install_memory(0x80000, 0xfffff, - read16_delegate(FUNC(dio16_98603a_device::rom_r), this), - write16_delegate(FUNC(dio16_98603a_device::rom_w), this)); + read16_delegate(*this, FUNC(dio16_98603a_device::rom_r)), + write16_delegate(*this, FUNC(dio16_98603a_device::rom_w))); } READ16_MEMBER(dio16_98603a_device::rom_r) diff --git a/src/devices/bus/hp_dio/hp98603b.cpp b/src/devices/bus/hp_dio/hp98603b.cpp index 6c8cff6b95a..638f5fba6e7 100644 --- a/src/devices/bus/hp_dio/hp98603b.cpp +++ b/src/devices/bus/hp_dio/hp98603b.cpp @@ -61,8 +61,9 @@ void dio16_98603b_device::device_start() void dio16_98603b_device::device_reset() { m_rom = device().machine().root_device().memregion(this->subtag(HP98603B_ROM_REGION).c_str())->base(); - dio().install_memory(0x100000, 0x1fffff, read16_delegate(FUNC(dio16_98603b_device::rom_r), this), - write16_delegate(FUNC(dio16_98603b_device::rom_w), this)); + dio().install_memory(0x100000, 0x1fffff, + read16_delegate(*this, FUNC(dio16_98603b_device::rom_r)), + write16_delegate(*this, FUNC(dio16_98603b_device::rom_w))); } READ16_MEMBER(dio16_98603b_device::rom_r) diff --git a/src/devices/bus/hp_dio/hp98620.cpp b/src/devices/bus/hp_dio/hp98620.cpp index fcd0e9d95aa..8988ef56266 100644 --- a/src/devices/bus/hp_dio/hp98620.cpp +++ b/src/devices/bus/hp_dio/hp98620.cpp @@ -75,8 +75,8 @@ void dio16_98620_device::device_reset() if (!m_installed_io) { program_space().install_readwrite_handler(0x500000, 0x50020f, - read16_delegate(FUNC(dio16_98620_device::dma_r), this), - write16_delegate(FUNC(dio16_98620_device::dma_w), this)); + read16_delegate(*this, FUNC(dio16_98620_device::dma_r)), + write16_delegate(*this, FUNC(dio16_98620_device::dma_w))); m_installed_io = true; } m_control = 0; diff --git a/src/devices/bus/hp_dio/hp98643.cpp b/src/devices/bus/hp_dio/hp98643.cpp index 57bc4d1a283..ae468d3d490 100644 --- a/src/devices/bus/hp_dio/hp98643.cpp +++ b/src/devices/bus/hp_dio/hp98643.cpp @@ -194,19 +194,19 @@ void dio16_98643_device::addrmap(address_map &map) { map(0x0000, 0x0001).rw(FUNC(dio16_98643_device::id_r), FUNC(dio16_98643_device::id_w)); map(0x0002, 0x0003).rw(FUNC(dio16_98643_device::sc_r), FUNC(dio16_98643_device::sc_w)); - map(0x4000, 0x4003).lrw16("lance", - [this](address_space &space, offs_t offset, u16 mem_mask) -> u16 { - m_sc |= REG_STATUS_ACK; - return m_lance->regs_r(space, offset, mem_mask); - }, - [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { - m_sc |= REG_STATUS_ACK; - return m_lance->regs_w(space, offset, data, mem_mask); - }); - - map(0x8000, 0xbfff).lrw16("lanceram", - [this](offs_t offset) -> u16 { return m_ram[offset]; }, - [this](offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_ram[offset]); }); + map(0x4000, 0x4003).lrw16( + [this] (address_space &space, offs_t offset, u16 mem_mask) -> u16 { + m_sc |= REG_STATUS_ACK; + return m_lance->regs_r(space, offset, mem_mask); + }, "lance_r", + [this] (address_space &space, offs_t offset, u16 data, u16 mem_mask) { + m_sc |= REG_STATUS_ACK; + return m_lance->regs_w(space, offset, data, mem_mask); + }, "lance_w"); + + map(0x8000, 0xbfff).lrw16( + NAME([this] (offs_t offset) -> u16 { return m_ram[offset]; }), + NAME([this] (offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_ram[offset]); })); map(0xc000, 0xffff).rw(FUNC(dio16_98643_device::novram_r), FUNC(dio16_98643_device::novram_w)); } diff --git a/src/devices/bus/hp_dio/hp98644.cpp b/src/devices/bus/hp_dio/hp98644.cpp index d3c347b6d31..8545220b074 100644 --- a/src/devices/bus/hp_dio/hp98644.cpp +++ b/src/devices/bus/hp_dio/hp98644.cpp @@ -161,8 +161,8 @@ void dio16_98644_device::device_reset() dio().install_memory( 0x600000 + (code * 0x10000), 0x6007ff + (code * 0x10000), - read16_delegate(FUNC(dio16_98644_device::io_r), this), - write16_delegate(FUNC(dio16_98644_device::io_w), this)); + read16_delegate(*this, FUNC(dio16_98644_device::io_r)), + write16_delegate(*this, FUNC(dio16_98644_device::io_w))); m_installed_io = true; } } diff --git a/src/devices/bus/hp_dio/human_interface.cpp b/src/devices/bus/hp_dio/human_interface.cpp index 509a2151a3b..3bf1823ffae 100644 --- a/src/devices/bus/hp_dio/human_interface.cpp +++ b/src/devices/bus/hp_dio/human_interface.cpp @@ -115,12 +115,12 @@ human_interface_device::human_interface_device(const machine_config &mconfig, de void human_interface_device::device_start() { program_space().install_readwrite_handler(0x420000, 0x420003, 0x0003, 0xfffc, 0, - read8_delegate(FUNC(upi41_cpu_device::upi41_master_r), &(*m_iocpu)), - write8_delegate(FUNC(upi41_cpu_device::upi41_master_w), &(*m_iocpu)), 0x00ff00ff); + read8_delegate(*m_iocpu, FUNC(upi41_cpu_device::upi41_master_r)), + write8_delegate(*m_iocpu, FUNC(upi41_cpu_device::upi41_master_w)), 0x00ff00ff); program_space().install_readwrite_handler(0x470000, 0x47001f, 0x1f, 0xffe0, 0, - read8_delegate(FUNC(human_interface_device::gpib_r), this), - write8_delegate(FUNC(human_interface_device::gpib_w), this), 0x00ff00ff); + read8_delegate(*this, FUNC(human_interface_device::gpib_r)), + write8_delegate(*this, FUNC(human_interface_device::gpib_w)), 0x00ff00ff); save_item(NAME(m_hil_read)); save_item(NAME(m_kbd_nmi)); diff --git a/src/devices/bus/intellec4/insdatastor.cpp b/src/devices/bus/intellec4/insdatastor.cpp index f271ef4b91f..9f4e3c53072 100644 --- a/src/devices/bus/intellec4/insdatastor.cpp +++ b/src/devices/bus/intellec4/insdatastor.cpp @@ -155,7 +155,7 @@ void imm4_22_device::map_ram_io() { memory_space().install_ram(start << 8, (start << 8) | 0x00ffU, m_memory); status_space().install_ram(start << 6, (start << 6) | 0x003fU, m_status); - ram_ports_space().install_write_handler(start << 2, (start << 2) | 0x03U, write8_delegate(FUNC(imm4_22_device::ram_out), this)); + ram_ports_space().install_write_handler(start << 2, (start << 2) | 0x03U, write8_delegate(*this, FUNC(imm4_22_device::ram_out))); } offs_t const rom_ports_start(offs_t(m_rom_page) << 6); @@ -163,7 +163,7 @@ void imm4_22_device::map_ram_io() offs_t const rom_ports_mirror(m_rom_mirror ? 0x1f00U : 0x0700U); rom_ports_space().install_readwrite_handler( rom_ports_start, rom_ports_end, 0U, rom_ports_mirror, 0U, - read8_delegate(FUNC(imm4_22_device::rom_in), this), write8_delegate(FUNC(imm4_22_device::rom_out), this)); + read8_delegate(*this, FUNC(imm4_22_device::rom_in)), write8_delegate(*this, FUNC(imm4_22_device::rom_out))); if (is_loaded()) map_prom(); diff --git a/src/devices/bus/intellec4/tapereader.cpp b/src/devices/bus/intellec4/tapereader.cpp index dad9c62f494..581735b39f0 100644 --- a/src/devices/bus/intellec4/tapereader.cpp +++ b/src/devices/bus/intellec4/tapereader.cpp @@ -50,10 +50,10 @@ void imm4_90_device::device_start() save_item(NAME(m_advance)); save_item(NAME(m_stepping)); - rom_ports_space().install_read_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom4_in), this)); - rom_ports_space().install_read_handler(0x0060U, 0x006fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom6_in), this)); - rom_ports_space().install_read_handler(0x0070U, 0x007fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(FUNC(imm4_90_device::rom7_in), this)); - rom_ports_space().install_write_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, write8_delegate(FUNC(imm4_90_device::rom4_out), this)); + rom_ports_space().install_read_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(*this, FUNC(imm4_90_device::rom4_in))); + rom_ports_space().install_read_handler(0x0060U, 0x006fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(*this, FUNC(imm4_90_device::rom6_in))); + rom_ports_space().install_read_handler(0x0070U, 0x007fU, 0x0000U, 0x1f00U, 0x0000, read8_delegate(*this, FUNC(imm4_90_device::rom7_in))); + rom_ports_space().install_write_handler(0x0040U, 0x004fU, 0x0000U, 0x1f00U, 0x0000, write8_delegate(*this, FUNC(imm4_90_device::rom4_out))); } diff --git a/src/devices/bus/interpro/keyboard/lle.cpp b/src/devices/bus/interpro/keyboard/lle.cpp index 595130b4c74..8edfb8c1ab6 100644 --- a/src/devices/bus/interpro/keyboard/lle.cpp +++ b/src/devices/bus/interpro/keyboard/lle.cpp @@ -480,11 +480,11 @@ void lle_device_base::ext_map(address_map &map) // not clear what these addresses correspond to, possibly // used in manufacturer testing? if (VERBOSE & LOG_GENERAL) - map(0x7fe, 0x7ff).lw8("write", - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) - { - LOG("write offset 0x%03f data 0x%02x (%s)\n", offset, data, machine().describe_context()); - }); + map(0x7fe, 0x7ff).lw8( + [this] (offs_t offset, u8 data, u8 mem_mask) + { + LOG("write offset 0x%03f data 0x%02x (%s)\n", offset, data, machine().describe_context()); + }, "write"); } READ_LINE_MEMBER(lle_device_base::t0_r) diff --git a/src/devices/bus/interpro/sr/edge.cpp b/src/devices/bus/interpro/sr/edge.cpp index 4c6453a5341..b8927438efc 100644 --- a/src/devices/bus/interpro/sr/edge.cpp +++ b/src/devices/bus/interpro/sr/edge.cpp @@ -301,14 +301,14 @@ void edge1_device_base::map(address_map &map) void edge1_device_base::map_dynamic(address_map &map) { // TODO: map using lambdas until mixed-size submaps work - map(0x00000000, 0x0001ffff).lrw8("sram", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }, - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); }); + map(0x00000000, 0x0001ffff).lrw8( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }), + NAME([this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); })); - map(0x01000000, 0x013fffff).lrw8("vram", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_vram->read((offset >> 2) | (offset & 0x3)); }, - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_vram->write((offset >> 2) | (offset & 0x3), data); }); + map(0x01000000, 0x013fffff).lrw8( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_vram->read((offset >> 2) | (offset & 0x3)); }), + NAME([this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_vram->write((offset >> 2) | (offset & 0x3), data); })); //map(0x02028200, 0x0202827f).lr32("idprom", // [this](address_space &space, offs_t offset, u8 mem_mask) { return memregion("idprom")->as_u32(offset); }); @@ -350,8 +350,8 @@ void edge2plus_processor_device_base::map(address_map &map) { map(0x000, 0x003).rw(FUNC(edge2plus_processor_device_base::reg0_r), FUNC(edge2plus_processor_device_base::reg0_w)); - map(0x008, 0x008).lr8("mouse_x", []() { return 0; }); - map(0x00c, 0x00c).lr8("mouse_y", []() { return 0; }); + map(0x008, 0x008).lr8([]() { return 0; }, "mouse_x"); + map(0x00c, 0x00c).lr8([]() { return 0; }, "mouse_y"); map(0x010, 0x01f).rw("scc", FUNC(z80scc_device::dc_ab_r), FUNC(z80scc_device::dc_ab_w)).umask32(0x000000ff); @@ -377,18 +377,18 @@ void edge2plus_framebuffer_device_base::map_dynamic(address_map &map) { // TODO: map using lambdas until mixed-size submaps work - map(0x00000000, 0x0003ffff).lrw8("sram", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }, - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); }); + map(0x00000000, 0x0003ffff).lrw8( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }), + NAME([this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); })); - map(0x01000000, 0x01ffffff).lrw8("vram", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_vram->read(offset); }, - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_vram->write(offset, data); }); + map(0x01000000, 0x01ffffff).lrw8( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_vram->read(offset); }), + NAME([this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_vram->write(offset, data); })); map(0x02028088, 0x0202808b).w(FUNC(edge2plus_framebuffer_device_base::select_w)); - map(0x02028200, 0x0202827f).lr32("idprom", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_select == 0 ? memregion("idprom")->as_u32(offset) : space.unmap(); }); + map(0x02028200, 0x0202827f).lr32( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_select == 0 ? memregion("idprom")->as_u32(offset) : space.unmap(); })); map(0x02028290, 0x02028293).w(FUNC(edge2plus_framebuffer_device_base::lut_select_w)); map(0x02028300, 0x02028303).w(FUNC(edge2plus_framebuffer_device_base::unk_300_w)); @@ -832,12 +832,12 @@ WRITE_LINE_MEMBER(edge2plus_processor_device_base::holda) void edge2plus_processor_device_base::dsp1_map(address_map &map) { - map(0x00000, 0x3ffff).lrw8("sram", - [this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }, - [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); }); + map(0x00000, 0x3ffff).lrw8( + NAME([this](address_space &space, offs_t offset, u8 mem_mask) { return m_sram->read(offset); }), + NAME([this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_sram->write(offset, data); })); - map(0x40000, 0x7ffff).lr32("prg1", - [this](address_space &space, offs_t offset, u32 mem_mask) { return memregion("prg1")->as_u32(offset); }); + map(0x40000, 0x7ffff).lr32( + NAME([this](address_space &space, offs_t offset, u32 mem_mask) { return memregion("prg1")->as_u32(offset); })); } diff --git a/src/devices/bus/interpro/sr/sr.h b/src/devices/bus/interpro/sr/sr.h index 858590f5075..feb8724547e 100644 --- a/src/devices/bus/interpro/sr/sr.h +++ b/src/devices/bus/interpro/sr/sr.h @@ -75,7 +75,7 @@ public: offs_t end = start + (CBUS_SIZE - 1); // install the idprom region - read32_delegate idprom_r([idprom](address_space &space, offs_t offset, u32 mem_mask) { return idprom->as_u32(offset); }, idprom->name()); + read32_delegate idprom_r(*this, [idprom] (address_space &space, offs_t offset, u32 mem_mask) { return idprom->as_u32(offset); }, idprom->name()); m_main_space->install_read_handler(start, start | 0x7f, idprom_r); m_io_space->install_read_handler(start, start | 0x7f, idprom_r); @@ -171,7 +171,7 @@ public: offs_t end = start + (SRX_SIZE - 1); // install the idprom region - read32_delegate idprom_r([idprom](address_space &space, offs_t offset, u32 mem_mask) { return idprom->as_u32(offset); }, idprom->name()); + read32_delegate idprom_r(*this, [idprom] (address_space &space, offs_t offset, u32 mem_mask) { return idprom->as_u32(offset); }, idprom->name()); m_main_space->install_read_handler(start | 0x7f80, start | 0x7fff, idprom_r); m_io_space->install_read_handler(start | 0x7f80, start | 0x7fff, idprom_r); diff --git a/src/devices/bus/isa/3c503.cpp b/src/devices/bus/isa/3c503.cpp index 34202e2246d..44955657475 100644 --- a/src/devices/bus/isa/3c503.cpp +++ b/src/devices/bus/isa/3c503.cpp @@ -32,8 +32,8 @@ void el2_3c503_device::device_start() { memset(m_rom, 0, 8*1024); // empty m_dp8390->set_mac(mac); set_isa_device(); - m_isa->install_device(0x0300, 0x030f, read8_delegate(FUNC(el2_3c503_device::el2_3c503_loport_r), this), write8_delegate(FUNC(el2_3c503_device::el2_3c503_loport_w), this)); - m_isa->install_device(0x0700, 0x070f, read8_delegate(FUNC(el2_3c503_device::el2_3c503_hiport_r), this), write8_delegate(FUNC(el2_3c503_device::el2_3c503_hiport_w), this)); + m_isa->install_device(0x0300, 0x030f, read8_delegate(*this, FUNC(el2_3c503_device::el2_3c503_loport_r)), write8_delegate(*this, FUNC(el2_3c503_device::el2_3c503_loport_w))); + m_isa->install_device(0x0700, 0x070f, read8_delegate(*this, FUNC(el2_3c503_device::el2_3c503_hiport_r)), write8_delegate(*this, FUNC(el2_3c503_device::el2_3c503_hiport_w))); // TODO: This is wrong, fix if anything actually uses it // DMA can change in runtime diff --git a/src/devices/bus/isa/3c505.cpp b/src/devices/bus/isa/3c505.cpp index 6dd695165c2..8efc0471ff4 100644 --- a/src/devices/bus/isa/3c505.cpp +++ b/src/devices/bus/isa/3c505.cpp @@ -327,19 +327,19 @@ void isa16_3c505_device::map_io(address_map &map) * A read or write to I/O location 00H will cause an active transition on * the CA input. */ - map(0x0000, 0x0000).lrw8("ca", - [this]() - { - m_net->ca(1); - m_net->ca(0); - - return 0; - }, - [this](u8 data) - { - m_net->ca(1); - m_net->ca(0); - }); + map(0x0000, 0x0000).lrw8( + NAME([this]() + { + m_net->ca(1); + m_net->ca(0); + + return 0; + }), + NAME([this](u8 data) + { + m_net->ca(1); + m_net->ca(0); + })); /* * A read or write to I/O location 80H will produce a CAS before RAS cycle diff --git a/src/devices/bus/isa/adlib.cpp b/src/devices/bus/isa/adlib.cpp index 6a900b0e09d..192f6091ad5 100644 --- a/src/devices/bus/isa/adlib.cpp +++ b/src/devices/bus/isa/adlib.cpp @@ -72,7 +72,7 @@ isa8_adlib_device::isa8_adlib_device(const machine_config &mconfig, const char * void isa8_adlib_device::device_start() { set_isa_device(); - m_isa->install_device(0x0388, 0x0389, read8_delegate( FUNC(isa8_adlib_device::ym3812_16_r), this ), write8_delegate( FUNC(isa8_adlib_device::ym3812_16_w), this ) ); + m_isa->install_device(0x0388, 0x0389, read8_delegate(*this, FUNC(isa8_adlib_device::ym3812_16_r)), write8_delegate(*this, FUNC(isa8_adlib_device::ym3812_16_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp index 0e974bf5f41..78e87d54213 100644 --- a/src/devices/bus/isa/aga.cpp +++ b/src/devices/bus/isa/aga.cpp @@ -103,9 +103,9 @@ void isa8_aga_device::device_start() m_videoram = std::make_unique<uint8_t[]>(0x10000); set_isa_device(); - m_isa->install_memory(0xb0000, 0xbffff, read8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_r),this), write8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_w),this)); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_aga_device::pc_aga_mda_r), this), write8_delegate(FUNC(isa8_aga_device::pc_aga_mda_w), this)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(isa8_aga_device::pc_aga_cga_r), this), write8_delegate(FUNC(isa8_aga_device::pc_aga_cga_w), this)); + m_isa->install_memory(0xb0000, 0xbffff, read8_delegate(*this, FUNC(isa8_aga_device::pc_aga_videoram_r)), write8_delegate(*this, FUNC(isa8_aga_device::pc_aga_videoram_w))); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_aga_device::pc_aga_mda_r)), write8_delegate(*this, FUNC(isa8_aga_device::pc_aga_mda_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_aga_device::pc_aga_cga_r)), write8_delegate(*this, FUNC(isa8_aga_device::pc_aga_cga_w))); /* Initialise the cga palette */ @@ -181,9 +181,9 @@ void isa8_aga_pc200_device::device_start() m_videoram = std::make_unique<uint8_t[]>(0x10000); set_isa_device(); - m_isa->install_memory(0xb0000, 0xbffff, read8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_r),this), write8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_w),this)); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_aga_pc200_device::pc_aga_mda_r), this), write8_delegate(FUNC(isa8_aga_pc200_device::pc_aga_mda_w), this)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(isa8_aga_pc200_device::pc200_cga_r), this), write8_delegate(FUNC(isa8_aga_pc200_device::pc200_cga_w), this)); + m_isa->install_memory(0xb0000, 0xbffff, read8_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_videoram_r)), write8_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_videoram_w))); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_aga_pc200_device::pc_aga_mda_r)), write8_delegate(*this, FUNC(isa8_aga_pc200_device::pc_aga_mda_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_cga_r)), write8_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_cga_w))); /* Initialise the cga palette */ @@ -271,7 +271,7 @@ void isa8_aga_device::device_add_mconfig(machine_config &config) m_mc6845->set_screen(AGA_SCREEN_NAME); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row), this); + m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row)); m_mc6845->out_hsync_callback().set(FUNC(isa8_aga_device::hsync_changed)); m_mc6845->out_vsync_callback().set(FUNC(isa8_aga_device::vsync_changed)); } diff --git a/src/devices/bus/isa/aha1542c.cpp b/src/devices/bus/isa/aha1542c.cpp index d5c35166b1f..d0bb112728c 100644 --- a/src/devices/bus/isa/aha1542c.cpp +++ b/src/devices/bus/isa/aha1542c.cpp @@ -228,7 +228,7 @@ void aha1542c_device::z84c0010_mem(address_map &map) map(0xa000, 0xa000).portr("SWITCHES"); map(0xb000, 0xb000).w(FUNC(aha1542c_device::local_latch_w)); map(0xe000, 0xe0ff).ram(); // probably PC<->Z80 communication area - map(0xe003, 0xe003).lr8("e003_r", []() { return 0x20; }); + map(0xe003, 0xe003).lr8(NAME([] () { return 0x20; })); } u8 aha1542cp_device::eeprom_r() @@ -377,8 +377,9 @@ void aha1542c_device::device_start() { set_isa_device(); m_isa->install_rom(this, 0xdc000, 0xdffff, "aha1542", "aha1542"); - m_isa->install_device(0x330, 0x333, read8_delegate(FUNC( aha1542cf_device::aha1542_r ), this), - write8_delegate(FUNC( aha1542cf_device::aha1542_w ), this) ); + m_isa->install_device(0x330, 0x333, + read8_delegate(*this, FUNC(aha1542cf_device::aha1542_r)), + write8_delegate(*this, FUNC(aha1542cf_device::aha1542_w))); } diff --git a/src/devices/bus/isa/asc88.cpp b/src/devices/bus/isa/asc88.cpp index c04570725f8..8843aad29a1 100644 --- a/src/devices/bus/isa/asc88.cpp +++ b/src/devices/bus/isa/asc88.cpp @@ -53,11 +53,11 @@ void asc88_device::device_reset() m_isa->install_rom(this, baseaddr, baseaddr | 0x37ff, "asc88", "bios"); m_isa->install_bank(baseaddr | 0x3800, baseaddr | 0x3fef, "ascram", m_ram.get()); m_isa->install_memory(baseaddr | 0x3ff0, baseaddr | 0x3ff7, - read8sm_delegate(FUNC(ncr5380n_device::read), &*m_scsic), - write8sm_delegate(FUNC(ncr5380n_device::write), &*m_scsic)); + read8sm_delegate(*m_scsic, FUNC(ncr5380n_device::read)), + write8sm_delegate(*m_scsic, FUNC(ncr5380n_device::write))); m_isa->install_memory(baseaddr | 0x3ff8, baseaddr | 0x3ff8, - read8smo_delegate(FUNC(asc88_device::eeprom_r), this), - write8smo_delegate(FUNC(asc88_device::control_w), this)); + read8smo_delegate(*this, FUNC(asc88_device::eeprom_r)), + write8smo_delegate(*this, FUNC(asc88_device::control_w))); control_w(0); } diff --git a/src/devices/bus/isa/cga.cpp b/src/devices/bus/isa/cga.cpp index 78c35957884..5b825bac73f 100644 --- a/src/devices/bus/isa/cga.cpp +++ b/src/devices/bus/isa/cga.cpp @@ -273,10 +273,10 @@ void isa8_cga_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(nullptr); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(isa8_cga_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(isa8_cga_device::crtc_update_row)); m_crtc->out_hsync_callback().set(FUNC(isa8_cga_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_cga_device::vsync_changed)); - m_crtc->set_reconfigure_callback(FUNC(isa8_cga_device::reconfigure), this); + m_crtc->set_reconfigure_callback(FUNC(isa8_cga_device::reconfigure)); } ioport_constructor isa8_cga_device::device_input_ports() const @@ -331,7 +331,7 @@ void isa8_cga_device::device_start() set_isa_device(); m_vram.resize(m_vram_size); - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_cga_device::io_read), this ), write8_delegate( FUNC(isa8_cga_device::io_write), this ) ); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_cga_device::io_read)), write8_delegate(*this, FUNC(isa8_cga_device::io_write))); m_isa->install_bank(0xb8000, 0xb8000 + (std::min<size_t>)(0x8000, m_vram_size) - 1, "bank_cga", &m_vram[0]); if(m_vram_size == 0x4000) m_isa->install_bank(0xbc000, 0xbffff, "bank_cga", &m_vram[0]); @@ -1346,13 +1346,13 @@ void isa8_cga_pc1512_device::device_start() { isa8_cga_device::device_start(); - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_cga_pc1512_device::io_read), this ), write8_delegate( FUNC(isa8_cga_pc1512_device::io_write), this ) ); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_cga_pc1512_device::io_read)), write8_delegate(*this, FUNC(isa8_cga_pc1512_device::io_write))); m_isa->install_bank(0xb8000, 0xbbfff, "bank1", &m_vram[0]); address_space &space = m_isa->memspace(); - space.install_write_handler( 0xb8000, 0xbbfff, write8_delegate( FUNC(isa8_cga_pc1512_device::vram_w), this ) ); - space.install_write_handler( 0xbc000, 0xbffff, write8_delegate( FUNC(isa8_cga_pc1512_device::vram_w), this ) ); + space.install_write_handler(0xb8000, 0xbbfff, write8_delegate(*this, FUNC(isa8_cga_pc1512_device::vram_w))); + space.install_write_handler(0xbc000, 0xbffff, write8_delegate(*this, FUNC(isa8_cga_pc1512_device::vram_w))); } void isa8_cga_pc1512_device::device_reset() @@ -1485,7 +1485,7 @@ void isa8_wyse700_device::device_start() { isa8_cga_device::device_start(); - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_wyse700_device::io_read), this ), write8_delegate( FUNC(isa8_wyse700_device::io_write), this ) ); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_wyse700_device::io_read)), write8_delegate(*this, FUNC(isa8_wyse700_device::io_write))); m_isa->install_bank(0xa0000, 0xaffff, "bank_wy1", &m_vram[0x00000]); m_isa->install_bank(0xb0000, 0xbffff, "bank_cga", &m_vram[0x10000]); } @@ -1547,7 +1547,7 @@ void isa8_ec1841_0002_device::device_start() { isa8_cga_device::device_start(); - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_ec1841_0002_device::io_read), this ), write8_delegate( FUNC(isa8_ec1841_0002_device::io_write), this ) ); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_ec1841_0002_device::io_read)), write8_delegate(*this, FUNC(isa8_ec1841_0002_device::io_write))); } void isa8_ec1841_0002_device::device_reset() @@ -1580,12 +1580,12 @@ WRITE8_MEMBER( isa8_ec1841_0002_device::io_write ) m_p3df = data; if (data & 1) { m_isa->install_memory(0xb8000, 0xb9fff, - read8_delegate( FUNC(isa8_ec1841_0002_device::char_ram_read), this), - write8_delegate(FUNC(isa8_ec1841_0002_device::char_ram_write), this) ); + read8_delegate( *this, FUNC(isa8_ec1841_0002_device::char_ram_read)), + write8_delegate(*this, FUNC(isa8_ec1841_0002_device::char_ram_write))); if(m_vram_size == 0x4000) m_isa->install_memory(0xbc000, 0xbdfff, - read8_delegate( FUNC(isa8_ec1841_0002_device::char_ram_read), this), - write8_delegate(FUNC(isa8_ec1841_0002_device::char_ram_write), this) ); + read8_delegate( *this, FUNC(isa8_ec1841_0002_device::char_ram_read)), + write8_delegate(*this, FUNC(isa8_ec1841_0002_device::char_ram_write))); } else { m_isa->install_bank(0xb8000, 0xb8000 + (std::min<size_t>)(0x8000, m_vram_size) - 1, "bank_cga", &m_vram[0]); if(m_vram_size == 0x4000) @@ -1699,7 +1699,7 @@ void isa8_cga_m24_device::device_add_mconfig(machine_config &config) isa8_cga_device::device_add_mconfig(config); subdevice<screen_device>(CGA_SCREEN_NAME)->set_raw(XTAL(14'318'181), 912, 0, 640, 462, 0, 400); - m_crtc->set_reconfigure_callback(FUNC(isa8_cga_m24_device::reconfigure), this); + m_crtc->set_reconfigure_callback(FUNC(isa8_cga_m24_device::reconfigure)); } isa8_cga_m24_device::isa8_cga_m24_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : @@ -1912,8 +1912,8 @@ const tiny_rom_entry *isa8_cga_cportiii_device::device_rom_region() const void isa8_cga_cportiii_device::device_reset() { isa8_cga_m24_device::device_reset(); - m_isa->install_device(0x13c6, 0x13c7, read8_delegate(FUNC(isa8_cga_cportiii_device::port_13c6_r), this), write8_delegate(FUNC(isa8_cga_cportiii_device::port_13c6_w), this)); - m_isa->install_device(0x23c6, 0x23c7, read8_delegate(FUNC(isa8_cga_cportiii_device::port_23c6_r), this), write8_delegate(FUNC(isa8_cga_cportiii_device::port_23c6_w), this)); + m_isa->install_device(0x13c6, 0x13c7, read8_delegate(*this, FUNC(isa8_cga_cportiii_device::port_13c6_r)), write8_delegate(*this, FUNC(isa8_cga_cportiii_device::port_13c6_w))); + m_isa->install_device(0x23c6, 0x23c7, read8_delegate(*this, FUNC(isa8_cga_cportiii_device::port_23c6_r)), write8_delegate(*this, FUNC(isa8_cga_cportiii_device::port_23c6_w))); m_palette->set_pen_color(0, 100, 25, 0); m_chr_gen_offset[0] = m_chr_gen_offset[2] = 0x0000; m_chr_gen_offset[1] = m_chr_gen_offset[3] = 0x1000; @@ -1947,7 +1947,7 @@ WRITE8_MEMBER(isa8_cga_cportiii_device::port_23c6_w) { m_mode2 = data & 1; if(BIT(data, 3)) - m_isa->install_memory(0xb8000, 0xb9fff, read8_delegate(FUNC(isa8_cga_cportiii_device::char_ram_read), this), write8_delegate(FUNC(isa8_cga_cportiii_device::char_ram_write), this)); + m_isa->install_memory(0xb8000, 0xb9fff, read8_delegate(*this, FUNC(isa8_cga_cportiii_device::char_ram_read)), write8_delegate(*this, FUNC(isa8_cga_cportiii_device::char_ram_write))); else m_isa->install_bank(0xb8000, 0xb8000 + 0x8000 - 1, "bank_cga", &m_vram[0]); } diff --git a/src/devices/bus/isa/chessmdr.cpp b/src/devices/bus/isa/chessmdr.cpp index 00182d9e5ff..8af46575421 100644 --- a/src/devices/bus/isa/chessmdr.cpp +++ b/src/devices/bus/isa/chessmdr.cpp @@ -49,7 +49,7 @@ void isa8_chessmdr_device::device_reset() { // MAME doesn't allow reading ioport at device_start u16 port = ioport("DSW")->read() * 0x40 + 0x10; - m_isa->install_device(port, port+1, read8_delegate(FUNC(isa8_chessmdr_device::chessmdr_r), this), write8_delegate(FUNC(isa8_chessmdr_device::chessmdr_w), this)); + m_isa->install_device(port, port+1, read8_delegate(*this, FUNC(isa8_chessmdr_device::chessmdr_r)), write8_delegate(*this, FUNC(isa8_chessmdr_device::chessmdr_w))); m_installed = true; } diff --git a/src/devices/bus/isa/chessmsr.cpp b/src/devices/bus/isa/chessmsr.cpp index bd878b18a67..fb1485045dc 100644 --- a/src/devices/bus/isa/chessmsr.cpp +++ b/src/devices/bus/isa/chessmsr.cpp @@ -60,7 +60,7 @@ void isa8_chessmsr_device::device_reset() { // MAME doesn't allow reading ioport at device_start u16 port = ioport("DSW")->read() * 0x40 + 0x10; - m_isa->install_device(port, port+1, read8_delegate(FUNC(isa8_chessmsr_device::chessmsr_r), this), write8_delegate(FUNC(isa8_chessmsr_device::chessmsr_w), this)); + m_isa->install_device(port, port+1, read8_delegate(*this, FUNC(isa8_chessmsr_device::chessmsr_r)), write8_delegate(*this, FUNC(isa8_chessmsr_device::chessmsr_w))); m_maincpu->set_unscaled_clock(ioport("CPU")->read() ? (32_MHz_XTAL) : (30_MHz_XTAL/2)); diff --git a/src/devices/bus/isa/com.cpp b/src/devices/bus/isa/com.cpp index 6ab3c393ccd..4a1cc1ebd00 100644 --- a/src/devices/bus/isa/com.cpp +++ b/src/devices/bus/isa/com.cpp @@ -118,10 +118,10 @@ isa8_com_device::isa8_com_device(const machine_config &mconfig, device_type type void isa8_com_device::device_start() { set_isa_device(); - m_isa->install_device(0x03f8, 0x03ff, read8sm_delegate(FUNC(ins8250_device::ins8250_r), subdevice<ins8250_uart_device>("uart_0")), write8sm_delegate(FUNC(ins8250_device::ins8250_w), subdevice<ins8250_uart_device>("uart_0")) ); - m_isa->install_device(0x02f8, 0x02ff, read8sm_delegate(FUNC(ins8250_device::ins8250_r), subdevice<ins8250_uart_device>("uart_1")), write8sm_delegate(FUNC(ins8250_device::ins8250_w), subdevice<ins8250_uart_device>("uart_1")) ); -// m_isa->install_device(0x03e8, 0x03ef, read8sm_delegate(FUNC(ins8250_device::ins8250_r), subdevice<ins8250_uart_device>("uart_2")), write8sm_delegate(FUNC(ins8250_device::ins8250_w), subdevice<ins8250_uart_device>("uart_2")) ); -// m_isa->install_device(0x02e8, 0x02ef, read8sm_delegate(FUNC(ins8250_device::ins8250_r), subdevice<ins8250_uart_device>("uart_3")), write8sm_delegate(FUNC(ins8250_device::ins8250_w), subdevice<ins8250_uart_device>("uart_3")) ); + m_isa->install_device(0x03f8, 0x03ff, read8sm_delegate(*subdevice<ins8250_uart_device>("uart_0"), FUNC(ins8250_device::ins8250_r)), write8sm_delegate(*subdevice<ins8250_uart_device>("uart_0"), FUNC(ins8250_device::ins8250_w))); + m_isa->install_device(0x02f8, 0x02ff, read8sm_delegate(*subdevice<ins8250_uart_device>("uart_1"), FUNC(ins8250_device::ins8250_r)), write8sm_delegate(*subdevice<ins8250_uart_device>("uart_1"), FUNC(ins8250_device::ins8250_w))); +// m_isa->install_device(0x03e8, 0x03ef, read8sm_delegate(*subdevice<ins8250_uart_device>("uart_2"), FUNC(ins8250_device::ins8250_r)), write8sm_delegate(*subdevice<ins8250_uart_device>("uart_2"), FUNC(ins8250_device::ins8250_w))); +// m_isa->install_device(0x02e8, 0x02ef, read8sm_delegate(*subdevice<ins8250_uart_device>("uart_3"), FUNC(ins8250_device::ins8250_r)), write8sm_delegate(*subdevice<ins8250_uart_device>("uart_3"), FUNC(ins8250_device::ins8250_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/dectalk.cpp b/src/devices/bus/isa/dectalk.cpp index da45a2ec18b..07aa5181a9d 100644 --- a/src/devices/bus/isa/dectalk.cpp +++ b/src/devices/bus/isa/dectalk.cpp @@ -224,7 +224,7 @@ READ8_MEMBER(dectalk_isa_device::read) void dectalk_isa_device::device_start() { set_isa_device(); - m_isa->install_device(0x0250, 0x0257, read8_delegate(FUNC(dectalk_isa_device::read), this), write8_delegate(FUNC(dectalk_isa_device::write), this)); + m_isa->install_device(0x0250, 0x0257, read8_delegate(*this, FUNC(dectalk_isa_device::read)), write8_delegate(*this, FUNC(dectalk_isa_device::write))); } void dectalk_isa_device::device_reset() diff --git a/src/devices/bus/isa/ega.cpp b/src/devices/bus/isa/ega.cpp index 32175304f20..abca884e810 100644 --- a/src/devices/bus/isa/ega.cpp +++ b/src/devices/bus/isa/ega.cpp @@ -549,7 +549,7 @@ void isa8_ega_device::device_add_mconfig(machine_config &config) CRTC_EGA(config, m_crtc_ega, 16.257_MHz_XTAL/8); m_crtc_ega->set_screen(EGA_SCREEN_NAME); m_crtc_ega->config_set_hpixels_per_column(8); - m_crtc_ega->set_row_update_callback(FUNC(isa8_ega_device::ega_update_row), this); + m_crtc_ega->set_row_update_callback(FUNC(isa8_ega_device::ega_update_row)); m_crtc_ega->res_out_de_callback().set(FUNC(isa8_ega_device::de_changed)); m_crtc_ega->res_out_hsync_callback().set(FUNC(isa8_ega_device::hsync_changed)); m_crtc_ega->res_out_vsync_callback().set(FUNC(isa8_ega_device::vsync_changed)); @@ -637,9 +637,9 @@ void isa8_ega_device::device_start() m_plane[3] = m_videoram + 0x30000; m_isa->install_rom(this, 0xc0000, 0xc3fff, "ega", "user2"); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_w), this)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_w), this)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3d0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3d0_w), this)); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3b0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3c0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3d0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3d0_w))); } //------------------------------------------------- @@ -693,7 +693,7 @@ void isa8_ega_device::install_banks() case 0x00: /* 0xA0000, 128KB */ if ( m_misc_output & 0x02 ) { - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(isa8_ega_device::read), this), write8_delegate(FUNC(isa8_ega_device::write), this)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*this, FUNC(isa8_ega_device::read)), write8_delegate(*this, FUNC(isa8_ega_device::write))); } else { @@ -705,7 +705,7 @@ void isa8_ega_device::install_banks() case 0x04: /* 0xA0000, 64KB */ if ( m_misc_output & 0x02 ) { - m_isa->install_memory(0xa0000, 0xaffff, read8_delegate(FUNC(isa8_ega_device::read), this), write8_delegate(FUNC(isa8_ega_device::write), this)); + m_isa->install_memory(0xa0000, 0xaffff, read8_delegate(*this, FUNC(isa8_ega_device::read)), write8_delegate(*this, FUNC(isa8_ega_device::write))); } else { @@ -718,7 +718,7 @@ void isa8_ega_device::install_banks() case 0x08: /* 0xB0000, 32KB */ if ( m_misc_output & 0x02 ) { - m_isa->install_memory(0xb0000, 0xb7fff, read8_delegate(FUNC(isa8_ega_device::read), this), write8_delegate(FUNC(isa8_ega_device::write), this)); + m_isa->install_memory(0xb0000, 0xb7fff, read8_delegate(*this, FUNC(isa8_ega_device::read)), write8_delegate(*this, FUNC(isa8_ega_device::write))); } else { @@ -731,7 +731,7 @@ void isa8_ega_device::install_banks() case 0x0c: /* 0xB8000, 32KB */ if ( m_misc_output & 0x02 ) { - m_isa->install_memory(0xb8000, 0xbffff, read8_delegate(FUNC(isa8_ega_device::read), this), write8_delegate(FUNC(isa8_ega_device::write), this)); + m_isa->install_memory(0xb8000, 0xbffff, read8_delegate(*this, FUNC(isa8_ega_device::read)), write8_delegate(*this, FUNC(isa8_ega_device::write))); } else { diff --git a/src/devices/bus/isa/eis_sad8852.cpp b/src/devices/bus/isa/eis_sad8852.cpp index f4d634d1033..6e22a5f6d76 100644 --- a/src/devices/bus/isa/eis_sad8852.cpp +++ b/src/devices/bus/isa/eis_sad8852.cpp @@ -236,8 +236,8 @@ void isa16_sad8852_device::device_reset() { m_isa->install_device( 0x378, 0x378, // Wrong, need to find real i/o addresses - read8_delegate(FUNC( isa16_sad8852_device::sad8852_r ), this), - write8_delegate(FUNC( isa16_sad8852_device::sad8852_w ), this)); + read8_delegate(*this, FUNC(isa16_sad8852_device::sad8852_r)), + write8_delegate(*this, FUNC(isa16_sad8852_device::sad8852_w))); m_irq = m_isairq->read(); m_installed = true; } diff --git a/src/devices/bus/isa/finalchs.cpp b/src/devices/bus/isa/finalchs.cpp index 84b81220c42..da3cd23ec1b 100644 --- a/src/devices/bus/isa/finalchs.cpp +++ b/src/devices/bus/isa/finalchs.cpp @@ -58,7 +58,7 @@ void isa8_finalchs_device::device_reset() { // MAME doesn't allow reading ioport at device_start u16 port = ioport("DSW")->read() * 0x10 + 0x100; - m_isa->install_device(port, port+1, read8_delegate(FUNC(isa8_finalchs_device::finalchs_r), this), write8_delegate(FUNC(isa8_finalchs_device::finalchs_w), this)); + m_isa->install_device(port, port+1, read8_delegate(*this, FUNC(isa8_finalchs_device::finalchs_r)), write8_delegate(*this, FUNC(isa8_finalchs_device::finalchs_w))); m_installed = true; } diff --git a/src/devices/bus/isa/gblaster.cpp b/src/devices/bus/isa/gblaster.cpp index e579070fbf6..d3035091580 100644 --- a/src/devices/bus/isa/gblaster.cpp +++ b/src/devices/bus/isa/gblaster.cpp @@ -104,9 +104,9 @@ isa8_gblaster_device::isa8_gblaster_device(const machine_config &mconfig, const void isa8_gblaster_device::device_start() { set_isa_device(); - m_isa->install_device(0x0220, 0x0221, read8_delegate( FUNC(isa8_gblaster_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_gblaster_device::saa1099_1_16_w), this ) ); - m_isa->install_device(0x0222, 0x0223, read8_delegate( FUNC(isa8_gblaster_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_gblaster_device::saa1099_2_16_w), this ) ); - m_isa->install_device(0x0224, 0x022F, read8_delegate( FUNC(isa8_gblaster_device::detect_r), this ), write8_delegate( FUNC(isa8_gblaster_device::detect_w), this ) ); + m_isa->install_device(0x0220, 0x0221, read8_delegate(*this, FUNC(isa8_gblaster_device::saa1099_16_r)), write8_delegate(*this, FUNC(isa8_gblaster_device::saa1099_1_16_w))); + m_isa->install_device(0x0222, 0x0223, read8_delegate(*this, FUNC(isa8_gblaster_device::saa1099_16_r)), write8_delegate(*this, FUNC(isa8_gblaster_device::saa1099_2_16_w))); + m_isa->install_device(0x0224, 0x022F, read8_delegate(*this, FUNC(isa8_gblaster_device::detect_r)), write8_delegate(*this, FUNC(isa8_gblaster_device::detect_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/gus.cpp b/src/devices/bus/isa/gus.cpp index 423c1e3629f..bb0d6e30b26 100644 --- a/src/devices/bus/isa/gus.cpp +++ b/src/devices/bus/isa/gus.cpp @@ -1296,10 +1296,10 @@ isa16_gus_device::isa16_gus_device(const machine_config &mconfig, const char *ta void isa16_gus_device::device_start() { set_isa_device(); - m_isa->install_device(0x0200, 0x0201, read8_delegate(FUNC(isa16_gus_device::joy_r),this), write8_delegate(FUNC(isa16_gus_device::joy_w),this) ); - m_isa->install_device(0x0220, 0x022f, read8_delegate(FUNC(isa16_gus_device::board_r),this), write8_delegate(FUNC(isa16_gus_device::board_w),this) ); - m_isa->install_device(0x0320, 0x0327, read8_delegate(FUNC(isa16_gus_device::synth_r),this), write8_delegate(FUNC(isa16_gus_device::synth_w),this) ); - m_isa->install_device(0x0388, 0x0389, read8_delegate(FUNC(isa16_gus_device::adlib_r),this), write8_delegate(FUNC(isa16_gus_device::adlib_w),this) ); + m_isa->install_device(0x0200, 0x0201, read8_delegate(*this, FUNC(isa16_gus_device::joy_r)), write8_delegate(*this, FUNC(isa16_gus_device::joy_w))); + m_isa->install_device(0x0220, 0x022f, read8_delegate(*this, FUNC(isa16_gus_device::board_r)), write8_delegate(*this, FUNC(isa16_gus_device::board_w))); + m_isa->install_device(0x0320, 0x0327, read8_delegate(*this, FUNC(isa16_gus_device::synth_r)), write8_delegate(*this, FUNC(isa16_gus_device::synth_w))); + m_isa->install_device(0x0388, 0x0389, read8_delegate(*this, FUNC(isa16_gus_device::adlib_r)), write8_delegate(*this, FUNC(isa16_gus_device::adlib_w))); } void isa16_gus_device::device_reset() diff --git a/src/devices/bus/isa/hdc.cpp b/src/devices/bus/isa/hdc.cpp index 2492d0eaa89..8d5d84bfe1e 100644 --- a/src/devices/bus/isa/hdc.cpp +++ b/src/devices/bus/isa/hdc.cpp @@ -987,7 +987,7 @@ isa8_hdc_ec1841_device::isa8_hdc_ec1841_device(const machine_config &mconfig, co void isa8_hdc_device::device_start() { set_isa_device(); - m_isa->install_device(0x0320, 0x0323, read8_delegate( FUNC(isa8_hdc_device::pc_hdc_r), this ), write8_delegate( FUNC(isa8_hdc_device::pc_hdc_w), this ) ); + m_isa->install_device(0x0320, 0x0323, read8_delegate(*this, FUNC(isa8_hdc_device::pc_hdc_r)), write8_delegate(*this, FUNC(isa8_hdc_device::pc_hdc_w))); m_isa->set_dma_channel(3, this, false); } diff --git a/src/devices/bus/isa/ibm_mfc.cpp b/src/devices/bus/isa/ibm_mfc.cpp index 40ce54ff6fc..b7f5d8e70b5 100644 --- a/src/devices/bus/isa/ibm_mfc.cpp +++ b/src/devices/bus/isa/ibm_mfc.cpp @@ -463,7 +463,7 @@ isa8_ibm_mfc_device::isa8_ibm_mfc_device(const machine_config &mconfig, const ch void isa8_ibm_mfc_device::device_start() { set_isa_device(); - m_isa->install_device(0x2a20, 0x2a20 + 15, read8_delegate(FUNC(isa8_ibm_mfc_device::ibm_mfc_r), this), write8_delegate(FUNC(isa8_ibm_mfc_device::ibm_mfc_w), this)); + m_isa->install_device(0x2a20, 0x2a20 + 15, read8_delegate(*this, FUNC(isa8_ibm_mfc_device::ibm_mfc_r)), write8_delegate(*this, FUNC(isa8_ibm_mfc_device::ibm_mfc_w))); } diff --git a/src/devices/bus/isa/lpt.cpp b/src/devices/bus/isa/lpt.cpp index e47404a498d..5c4baf5aaeb 100644 --- a/src/devices/bus/isa/lpt.cpp +++ b/src/devices/bus/isa/lpt.cpp @@ -45,14 +45,11 @@ void isa8_lpt_device::device_start() void isa8_lpt_device::device_reset() { m_is_primary = (ioport("DSW")->read() & 1) ? false : true; + pc_lpt_device &lpt(*subdevice<pc_lpt_device>("lpt")); if (m_is_primary) - { - m_isa->install_device(0x0378, 0x037b, read8_delegate(FUNC(pc_lpt_device::read), subdevice<pc_lpt_device>("lpt")), write8_delegate(FUNC(pc_lpt_device::write), subdevice<pc_lpt_device>("lpt"))); - } + m_isa->install_device(0x0378, 0x037b, read8_delegate(lpt, FUNC(pc_lpt_device::read)), write8_delegate(lpt, FUNC(pc_lpt_device::write))); else - { - m_isa->install_device(0x0278, 0x027b, read8_delegate(FUNC(pc_lpt_device::read), subdevice<pc_lpt_device>("lpt")), write8_delegate(FUNC(pc_lpt_device::write), subdevice<pc_lpt_device>("lpt"))); - } + m_isa->install_device(0x0278, 0x027b, read8_delegate(lpt, FUNC(pc_lpt_device::read)), write8_delegate(lpt, FUNC(pc_lpt_device::write))); } WRITE_LINE_MEMBER(isa8_lpt_device::pc_cpu_line) diff --git a/src/devices/bus/isa/mc1502_fdc.cpp b/src/devices/bus/isa/mc1502_fdc.cpp index 3f85534a72b..1760f602115 100644 --- a/src/devices/bus/isa/mc1502_fdc.cpp +++ b/src/devices/bus/isa/mc1502_fdc.cpp @@ -205,16 +205,12 @@ void mc1502_fdc_device::device_start() set_isa_device(); // BIOS 5.0-5.2x - m_isa->install_device(0x010c, 0x010f, - read8sm_delegate(FUNC(fd1793_device::read), m_fdc.target()), - write8sm_delegate(FUNC(fd1793_device::write), m_fdc.target())); - m_isa->install_device(0x0100, 0x010b, read8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_r), this ), write8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_w), this ) ); + m_isa->install_device(0x010c, 0x010f, read8sm_delegate(*m_fdc, FUNC(fd1793_device::read)), write8sm_delegate(*m_fdc, FUNC(fd1793_device::write))); + m_isa->install_device(0x0100, 0x010b, read8_delegate(*this, FUNC(mc1502_fdc_device::mc1502_fdc_r)), write8_delegate(*this, FUNC(mc1502_fdc_device::mc1502_fdc_w))); // BIOS 5.3x - m_isa->install_device(0x0048, 0x004b, - read8sm_delegate(FUNC(fd1793_device::read), m_fdc.target()), - write8sm_delegate(FUNC(fd1793_device::write), m_fdc.target())); - m_isa->install_device(0x004c, 0x004f, read8_delegate( FUNC(mc1502_fdc_device::mc1502_fdcv2_r), this ), write8_delegate( FUNC(mc1502_fdc_device::mc1502_fdc_w), this ) ); + m_isa->install_device(0x0048, 0x004b, read8sm_delegate(*m_fdc, FUNC(fd1793_device::read)), write8sm_delegate(*m_fdc, FUNC(fd1793_device::write))); + m_isa->install_device(0x004c, 0x004f, read8_delegate(*this, FUNC(mc1502_fdc_device::mc1502_fdcv2_r)), write8_delegate(*this, FUNC(mc1502_fdc_device::mc1502_fdc_w))); motor_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(mc1502_fdc_device::motor_callback),this)); motor_on = 0; diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp index eca9cbaa5a6..a620c891580 100644 --- a/src/devices/bus/isa/mda.cpp +++ b/src/devices/bus/isa/mda.cpp @@ -131,7 +131,7 @@ void isa8_mda_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(MDA_SCREEN_NAME); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row)); m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); @@ -182,7 +182,7 @@ void isa8_mda_device::device_start() set_isa_device(); m_videoram.resize(0x1000); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate( FUNC(isa8_mda_device::io_read), this ), write8_delegate( FUNC(isa8_mda_device::io_write), this ) ); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_mda_device::io_read)), write8_delegate(*this, FUNC(isa8_mda_device::io_write))); m_isa->install_bank(0xb0000, 0xb0fff, "bank_mda", &m_videoram[0]); m_isa->install_bank(0xb1000, 0xb1fff, "bank_mda", &m_videoram[0]); m_isa->install_bank(0xb2000, 0xb2fff, "bank_mda", &m_videoram[0]); @@ -558,7 +558,7 @@ void isa8_hercules_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(HERCULES_SCREEN_NAME); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(isa8_hercules_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(isa8_hercules_device::crtc_update_row)); m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); @@ -601,7 +601,7 @@ void isa8_hercules_device::device_start() m_videoram.resize(0x10000); set_isa_device(); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate( FUNC(isa8_hercules_device::io_read), this ), write8_delegate( FUNC(isa8_hercules_device::io_write), this ) ); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_hercules_device::io_read)), write8_delegate(*this, FUNC(isa8_hercules_device::io_write))); m_isa->install_bank(0xb0000, 0xbffff, "bank_hercules", &m_videoram[0]); /* Initialise the mda palette */ @@ -772,7 +772,7 @@ void isa8_ec1840_0002_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(MDA_SCREEN_NAME); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(isa8_mda_device::crtc_update_row)); m_crtc->out_hsync_callback().set(FUNC(isa8_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_mda_device::vsync_changed)); } @@ -1094,7 +1094,7 @@ void isa8_epc_mda_device::device_add_mconfig(machine_config &config) m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(isa8_epc_mda_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(isa8_epc_mda_device::crtc_update_row)); m_crtc->out_hsync_callback().set(FUNC(isa8_epc_mda_device::hsync_changed)); m_crtc->out_vsync_callback().set(FUNC(isa8_epc_mda_device::vsync_changed)); @@ -1175,13 +1175,13 @@ void isa8_epc_mda_device::device_reset() if (m_installed == false) { - m_isa->install_device(0x3b0, 0x3bf, read8_delegate( FUNC(isa8_epc_mda_device::io_read), this ), write8_delegate( FUNC(isa8_epc_mda_device::io_write), this ) ); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_epc_mda_device::io_read)), write8_delegate(*this, FUNC(isa8_epc_mda_device::io_write))); m_isa->install_bank(0xb0000, 0xb7fff, "bank_epc", &m_videoram[0]); // Monochrome emulation mode VRAM address // This check allows a color monitor adapter to be installed at this address range if color emulation is disabled if (m_color_mode & 1) { - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_epc_mda_device::io_read), this ), write8_delegate( FUNC(isa8_epc_mda_device::io_write), this ) ); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_epc_mda_device::io_read)), write8_delegate(*this, FUNC(isa8_epc_mda_device::io_write))); m_isa->install_bank(0xb8000, 0xbffff, "bank_epc", &m_videoram[0]); // Color emulation mode VRAM address, but same 32KB areas as there are only this amount on the board } m_installed = true; diff --git a/src/devices/bus/isa/mpu401.cpp b/src/devices/bus/isa/mpu401.cpp index 2ce9e1feae2..b7a49506094 100644 --- a/src/devices/bus/isa/mpu401.cpp +++ b/src/devices/bus/isa/mpu401.cpp @@ -77,7 +77,7 @@ void isa8_mpu401_device::device_start() { set_isa_device(); - m_isa->install_device(0x330, 0x0331, READ8_DEVICE_DELEGATE(m_mpu401, mpu401_device, mpu_r), WRITE8_DEVICE_DELEGATE(m_mpu401, mpu401_device, mpu_w)); + m_isa->install_device(0x330, 0x0331, read8_delegate(*m_mpu401, FUNC(mpu401_device::mpu_r)), write8_delegate(*m_mpu401, FUNC(mpu401_device::mpu_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/myb3k_com.cpp b/src/devices/bus/isa/myb3k_com.cpp index 88987e87e41..e2d6facff40 100644 --- a/src/devices/bus/isa/myb3k_com.cpp +++ b/src/devices/bus/isa/myb3k_com.cpp @@ -103,16 +103,16 @@ void isa8_myb3k_com_device::device_reset() // IO base factory setting is 0x540 uint32_t base = m_iobase->read(); m_isa->install_device(base, base + 1, - read8sm_delegate(FUNC(i8251_device::read), m_usart.target()), - write8sm_delegate(FUNC(i8251_device::write), m_usart.target()) ); + read8sm_delegate(*m_usart, FUNC(i8251_device::read)), + write8sm_delegate(*m_usart, FUNC(i8251_device::write))); m_isa->install_device(base + 2, base + 2, - read8_delegate(FUNC(isa8_myb3k_com_device::dce_status), this), - write8_delegate(FUNC(isa8_myb3k_com_device::dce_control), this) ); + read8_delegate(*this, FUNC(isa8_myb3k_com_device::dce_status)), + write8_delegate(*this, FUNC(isa8_myb3k_com_device::dce_control))); m_isa->install_device(base + 4, base + 7, - read8sm_delegate(FUNC(pit8253_device::read), subdevice<pit8253_device>("pit")), - write8sm_delegate(FUNC(pit8253_device::write), subdevice<pit8253_device>("pit")) ); + read8sm_delegate(*subdevice<pit8253_device>("pit"), FUNC(pit8253_device::read)), + write8sm_delegate(*subdevice<pit8253_device>("pit"), FUNC(pit8253_device::write))); m_irq = m_isairq->read(); m_installed = true; diff --git a/src/devices/bus/isa/ne1000.cpp b/src/devices/bus/isa/ne1000.cpp index 1eaef942105..0be12869dca 100644 --- a/src/devices/bus/isa/ne1000.cpp +++ b/src/devices/bus/isa/ne1000.cpp @@ -31,7 +31,7 @@ void ne1000_device::device_start() { memcpy(m_prom, mac, 6); m_dp8390->set_mac(mac); set_isa_device(); - m_isa->install_device(0x0300, 0x031f, read8_delegate(FUNC(ne1000_device::ne1000_port_r), this), write8_delegate(FUNC(ne1000_device::ne1000_port_w), this)); + m_isa->install_device(0x0300, 0x031f, read8_delegate(*this, FUNC(ne1000_device::ne1000_port_r)), write8_delegate(*this, FUNC(ne1000_device::ne1000_port_w))); } void ne1000_device::device_reset() { diff --git a/src/devices/bus/isa/ne2000.cpp b/src/devices/bus/isa/ne2000.cpp index 3ad2cc592ef..246447836ba 100644 --- a/src/devices/bus/isa/ne2000.cpp +++ b/src/devices/bus/isa/ne2000.cpp @@ -31,7 +31,7 @@ void ne2000_device::device_start() { memcpy(m_prom, mac, 6); m_dp8390->set_mac(mac); set_isa_device(); - m_isa->install16_device(0x0300, 0x031f, read16_delegate(FUNC(ne2000_device::ne2000_port_r), this), write16_delegate(FUNC(ne2000_device::ne2000_port_w), this)); + m_isa->install16_device(0x0300, 0x031f, read16_delegate(*this, FUNC(ne2000_device::ne2000_port_r)), write16_delegate(*this, FUNC(ne2000_device::ne2000_port_w))); } void ne2000_device::device_reset() { diff --git a/src/devices/bus/isa/num9rev.cpp b/src/devices/bus/isa/num9rev.cpp index ebe44a379f4..00e22a31101 100644 --- a/src/devices/bus/isa/num9rev.cpp +++ b/src/devices/bus/isa/num9rev.cpp @@ -94,13 +94,13 @@ void isa8_number_9_rev_device::device_start() { set_isa_device(); - m_isa->install_memory(0xc0000, 0xc0001, read8sm_delegate(FUNC(upd7220_device::read), (upd7220_device *)m_upd7220), write8sm_delegate(FUNC(upd7220_device::write), (upd7220_device *)m_upd7220)); - m_isa->install_memory(0xc0100, 0xc03ff, read8_delegate(FUNC(isa8_number_9_rev_device::pal8_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal8_w), this)); - m_isa->install_memory(0xc0400, 0xc0401, read8_delegate(FUNC(isa8_number_9_rev_device::bank_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::bank_w), this)); - m_isa->install_memory(0xc0500, 0xc06ff, read8_delegate(FUNC(isa8_number_9_rev_device::overlay_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::overlay_w), this)); - m_isa->install_memory(0xc0700, 0xc070f, read8_delegate(FUNC(isa8_number_9_rev_device::ctrl_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::ctrl_w), this)); - m_isa->install_memory(0xc1000, 0xc3fff, read8_delegate(FUNC(isa8_number_9_rev_device::pal12_r), this), write8_delegate(FUNC(isa8_number_9_rev_device::pal12_w), this)); - m_isa->install_memory(0xa0000, 0xaffff, read8_delegate(FUNC(isa8_number_9_rev_device::read8), this), write8_delegate(FUNC(isa8_number_9_rev_device::write8), this)); + m_isa->install_memory(0xc0000, 0xc0001, read8sm_delegate(*m_upd7220, FUNC(upd7220_device::read)), write8sm_delegate(*m_upd7220, FUNC(upd7220_device::write))); + m_isa->install_memory(0xc0100, 0xc03ff, read8_delegate(*this, FUNC(isa8_number_9_rev_device::pal8_r)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::pal8_w))); + m_isa->install_memory(0xc0400, 0xc0401, read8_delegate(*this, FUNC(isa8_number_9_rev_device::bank_r)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::bank_w))); + m_isa->install_memory(0xc0500, 0xc06ff, read8_delegate(*this, FUNC(isa8_number_9_rev_device::overlay_r)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::overlay_w))); + m_isa->install_memory(0xc0700, 0xc070f, read8_delegate(*this, FUNC(isa8_number_9_rev_device::ctrl_r)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::ctrl_w))); + m_isa->install_memory(0xc1000, 0xc3fff, read8_delegate(*this, FUNC(isa8_number_9_rev_device::pal12_r)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::pal12_w))); + m_isa->install_memory(0xa0000, 0xaffff, read8_delegate(*this, FUNC(isa8_number_9_rev_device::read8)), write8_delegate(*this, FUNC(isa8_number_9_rev_device::write8))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/omti8621.cpp b/src/devices/bus/isa/omti8621.cpp index bea87f420ee..38560f26df6 100644 --- a/src/devices/bus/isa/omti8621.cpp +++ b/src/devices/bus/isa/omti8621.cpp @@ -309,7 +309,7 @@ void omti8621_device::device_reset() int esdi_base = io_bases[m_iobase->read() & 7]; // install the ESDI ports - m_isa->install16_device(esdi_base, esdi_base + 7, read16_delegate(FUNC(omti8621_device::read), this), write16_delegate(FUNC(omti8621_device::write), this)); + m_isa->install16_device(esdi_base, esdi_base + 7, read16_delegate(*this, FUNC(omti8621_device::read)), write16_delegate(*this, FUNC(omti8621_device::write))); // and the onboard AT FDC ports if (m_iobase->read() & 8) diff --git a/src/devices/bus/isa/p1_fdc.cpp b/src/devices/bus/isa/p1_fdc.cpp index 9b62451e65a..5d3b25b3d5a 100644 --- a/src/devices/bus/isa/p1_fdc.cpp +++ b/src/devices/bus/isa/p1_fdc.cpp @@ -174,10 +174,8 @@ void p1_fdc_device::device_start() { set_isa_device(); m_isa->install_rom(this, 0xe0000, 0xe07ff, "XXX", "p1_fdc"); - m_isa->install_device(0x00c0, 0x00c3, - read8sm_delegate(FUNC(fd1793_device::read), m_fdc.target()), - write8sm_delegate(FUNC(fd1793_device::write), m_fdc.target())); - m_isa->install_device(0x00c4, 0x00c7, read8_delegate( FUNC(p1_fdc_device::p1_fdc_r), this ), write8_delegate( FUNC(p1_fdc_device::p1_fdc_w), this ) ); + m_isa->install_device(0x00c0, 0x00c3, read8sm_delegate(*m_fdc, FUNC(fd1793_device::read)), write8sm_delegate(*m_fdc, FUNC(fd1793_device::write))); + m_isa->install_device(0x00c4, 0x00c7, read8_delegate(*this, FUNC(p1_fdc_device::p1_fdc_r)), write8_delegate(*this, FUNC(p1_fdc_device::p1_fdc_w))); } diff --git a/src/devices/bus/isa/p1_hdc.cpp b/src/devices/bus/isa/p1_hdc.cpp index 129c7a6ce37..36f93811694 100644 --- a/src/devices/bus/isa/p1_hdc.cpp +++ b/src/devices/bus/isa/p1_hdc.cpp @@ -127,9 +127,7 @@ void p1_hdc_device::device_start() { set_isa_device(); m_isa->install_rom(this, 0xe2000, 0xe27ff, "XXX", "p1_hdc"); - m_isa->install_memory(0xd0000, 0xd0fff, - READ8_DELEGATE(p1_hdc_device, p1_HDC_r), - WRITE8_DELEGATE(p1_hdc_device, p1_HDC_w) ); + m_isa->install_memory(0xd0000, 0xd0fff, read8_delegate(*this, FUNC(p1_hdc_device::p1_HDC_r)), write8_delegate(*this, FUNC(p1_hdc_device::p1_HDC_w))); } diff --git a/src/devices/bus/isa/p1_sound.cpp b/src/devices/bus/isa/p1_sound.cpp index b8e37a57368..0311264fb44 100644 --- a/src/devices/bus/isa/p1_sound.cpp +++ b/src/devices/bus/isa/p1_sound.cpp @@ -161,28 +161,28 @@ void p1_sound_device::device_start() // EFC00 -- ADC output m_isa->install_memory(0xea000, 0xea01f, - read8_delegate(FUNC(p1_sound_device::adc_r), this), // XXX not really - write8_delegate(FUNC(p1_sound_device::dac_w), this)); + read8_delegate(*this, FUNC(p1_sound_device::adc_r)), // XXX not really + write8_delegate(*this, FUNC(p1_sound_device::dac_w))); m_isa->install_memory(0xee000, 0xee000, - read8smo_delegate(FUNC(i8251_device::data_r), m_midi.target()), - write8smo_delegate(FUNC(i8251_device::data_w), m_midi.target())); + read8smo_delegate(*m_midi, FUNC(i8251_device::data_r)), + write8smo_delegate(*m_midi, FUNC(i8251_device::data_w))); m_isa->install_memory(0xee002, 0xee002, - read8smo_delegate(FUNC(i8251_device::status_r), m_midi.target()), - write8smo_delegate(FUNC(i8251_device::control_w), m_midi.target())); + read8smo_delegate(*m_midi, FUNC(i8251_device::status_r)), + write8smo_delegate(*m_midi, FUNC(i8251_device::control_w))); // sync generator m_isa->install_memory(0xef000, 0xef007, - read8_delegate(FUNC(p1_sound_device::d14_r), this), - write8_delegate(FUNC(p1_sound_device::d14_w), this)); + read8_delegate(*this, FUNC(p1_sound_device::d14_r)), + write8_delegate(*this, FUNC(p1_sound_device::d14_w))); // 6 music channels m_isa->install_memory(0xef400, 0xef407, - read8_delegate(FUNC(p1_sound_device::d16_r), this), - write8_delegate(FUNC(p1_sound_device::d16_w), this)); + read8_delegate(*this, FUNC(p1_sound_device::d16_r)), + write8_delegate(*this, FUNC(p1_sound_device::d16_w))); m_isa->install_memory(0xef800, 0xef807, - read8_delegate(FUNC(p1_sound_device::d17_r), this), - write8_delegate(FUNC(p1_sound_device::d17_w), this)); + read8_delegate(*this, FUNC(p1_sound_device::d17_r)), + write8_delegate(*this, FUNC(p1_sound_device::d17_w))); } diff --git a/src/devices/bus/isa/pc1640_iga.cpp b/src/devices/bus/isa/pc1640_iga.cpp index dfab59f2e76..7b7b5a89354 100644 --- a/src/devices/bus/isa/pc1640_iga.cpp +++ b/src/devices/bus/isa/pc1640_iga.cpp @@ -102,7 +102,7 @@ void isa8_pc1640_iga_device::device_start() m_plane[3] = m_videoram + 0x30000; m_isa->install_rom(this, 0xc0000, 0xc7fff, "ega", "iga"); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3b0_w), this)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3c0_w), this)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(isa8_ega_device::pc_ega8_3d0_r), this), write8_delegate(FUNC(isa8_ega_device::pc_ega8_3d0_w), this)); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3b0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3c0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3d0_r)), write8_delegate(*this, FUNC(isa8_ega_device::pc_ega8_3d0_w))); } diff --git a/src/devices/bus/isa/pcmidi.cpp b/src/devices/bus/isa/pcmidi.cpp index 94e52ae8f51..45cc41ff4f4 100644 --- a/src/devices/bus/isa/pcmidi.cpp +++ b/src/devices/bus/isa/pcmidi.cpp @@ -100,8 +100,8 @@ void isa8_pcmidi_device::device_reset() { offs_t ioaddr = BIT(m_config->read(), 0) ? 0x300 : 0x330; m_isa->install_device(ioaddr, ioaddr + 1, - read8sm_delegate(FUNC(isa8_pcmidi_device::host_r), this), - write8sm_delegate(FUNC(isa8_pcmidi_device::host_w), this)); + read8sm_delegate(*this, FUNC(isa8_pcmidi_device::host_r)), + write8sm_delegate(*this, FUNC(isa8_pcmidi_device::host_w))); set_host_irq(false); } diff --git a/src/devices/bus/isa/pds.cpp b/src/devices/bus/isa/pds.cpp index 65a35db2b14..dab0f498b63 100644 --- a/src/devices/bus/isa/pds.cpp +++ b/src/devices/bus/isa/pds.cpp @@ -6,7 +6,7 @@ * Used to connect up to two 8-bit systems to the PC, allowing the download of assembled code directly to the * target 8-bit system (Spectrum, CPC, MSX, C64 and maybe the BBC?) * - * The editor software require the ISA card to be present. + * The editor software requires the ISA card to be present. * * The PC end hardware consists of an 8-bit ISA card containing an 8255 PPI hooked up to the two connectors on the * back of the card. @@ -45,7 +45,7 @@ WRITE8_MEMBER(isa8_pds_device::ppi_w) void isa8_pds_device::device_start() { set_isa_device(); - m_isa->install_device(0x0300, 0x0307, read8_delegate(FUNC(isa8_pds_device::ppi_r),this), write8_delegate(FUNC(isa8_pds_device::ppi_w),this) ); + m_isa->install_device(0x0300, 0x0307, read8_delegate(*this, FUNC(isa8_pds_device::ppi_r)), write8_delegate(*this, FUNC(isa8_pds_device::ppi_w))); } void isa8_pds_device::device_reset() diff --git a/src/devices/bus/isa/pgc.cpp b/src/devices/bus/isa/pgc.cpp index 9e65cd819d0..4d7de335616 100644 --- a/src/devices/bus/isa/pgc.cpp +++ b/src/devices/bus/isa/pgc.cpp @@ -389,8 +389,7 @@ READ8_MEMBER(isa8_pgc_device::init_r) membank("eram")->set_base(m_eram.get()); LOG("INIT: mapping LUT\n"); - space.install_write_handler(0xf8400, 0xf85ff, - write8_delegate(FUNC(isa8_pgc_device::lut_w), this)); + space.install_write_handler(0xf8400, 0xf85ff, write8_delegate(*this, FUNC(isa8_pgc_device::lut_w))); return 0; // XXX ignored } diff --git a/src/devices/bus/isa/s3virge.cpp b/src/devices/bus/isa/s3virge.cpp index 5dae6c8afa2..959e9a2e79f 100644 --- a/src/devices/bus/isa/s3virge.cpp +++ b/src/devices/bus/isa/s3virge.cpp @@ -73,7 +73,7 @@ void s3virge_vga_device::device_start() vga.crtc.maximum_scan_line = 1; // copy over interfaces - vga.read_dipswitch = read8_delegate(); //read_dipswitch; + vga.read_dipswitch.set(nullptr); //read_dipswitch; vga.svga_intf.seq_regcount = 0x1c; vga.svga_intf.crtc_regcount = 0x19; vga.svga_intf.vram_size = 0x400000; diff --git a/src/devices/bus/isa/sb16.cpp b/src/devices/bus/isa/sb16.cpp index f48cda320da..0f2123409f9 100644 --- a/src/devices/bus/isa/sb16.cpp +++ b/src/devices/bus/isa/sb16.cpp @@ -702,18 +702,18 @@ void sb16_lle_device::device_start() rom[i] = rom[i] ^ xor_table[i & 0x3f]; - ymf262_device *ymf262 = subdevice<ymf262_device>("ymf262"); + ymf262_device &ymf262 = *subdevice<ymf262_device>("ymf262"); set_isa_device(); - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0226, 0x0227, read8_delegate(FUNC(sb16_lle_device::invalid_r), this), write8_delegate(FUNC(sb16_lle_device::dsp_reset_w), this)); - m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(sb16_lle_device::host_data_r), this), write8_delegate(FUNC(sb16_lle_device::invalid_w), this) ); - m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(sb16_lle_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(sb16_lle_device::host_cmd_w), this) ); - m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb16_lle_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb16_lle_device::invalid_w), this) ); - m_isa->install_device(0x0330, 0x0331, read8_delegate(FUNC(sb16_lle_device::mpu401_r), this), write8_delegate(FUNC(sb16_lle_device::mpu401_w), this)); - m_isa->install_device(0x0388, 0x0389, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0200, 0x0207, read8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0226, 0x0227, read8_delegate(*this, FUNC(sb16_lle_device::invalid_r)), write8_delegate(*this, FUNC(sb16_lle_device::dsp_reset_w))); + m_isa->install_device(0x022a, 0x022b, read8_delegate(*this, FUNC(sb16_lle_device::host_data_r)), write8_delegate(*this, FUNC(sb16_lle_device::invalid_w)) ); + m_isa->install_device(0x022c, 0x022d, read8_delegate(*this, FUNC(sb16_lle_device::dsp_wbuf_status_r)), write8_delegate(*this, FUNC(sb16_lle_device::host_cmd_w)) ); + m_isa->install_device(0x022e, 0x022f, read8_delegate(*this, FUNC(sb16_lle_device::dsp_rbuf_status_r)), write8_delegate(*this, FUNC(sb16_lle_device::invalid_w)) ); + m_isa->install_device(0x0330, 0x0331, read8_delegate(*this, FUNC(sb16_lle_device::mpu401_r)), write8_delegate(*this, FUNC(sb16_lle_device::mpu401_w))); + m_isa->install_device(0x0388, 0x0389, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0220, 0x0223, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0228, 0x0229, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); m_isa->set_dma_channel(1, this, false); m_isa->set_dma_channel(5, this, false); m_timer = timer_alloc(); diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp index 73e98a297f8..3e4ba9beca1 100644 --- a/src/devices/bus/isa/sblaster.cpp +++ b/src/devices/bus/isa/sblaster.cpp @@ -1251,23 +1251,23 @@ isa16_sblaster16_device::isa16_sblaster16_device(const machine_config &mconfig, void sb8_device::device_start() { - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0226, 0x0227, read8_delegate(FUNC(sb_device::dsp_reset_r), this), write8_delegate(FUNC(sb_device::dsp_reset_w), this)); - m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(sb_device::dsp_data_r), this), write8_delegate(FUNC(sb_device::dsp_data_w), this) ); - m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(sb_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_cmd_w), this) ); - m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_rbuf_status_w), this) ); + m_isa->install_device(0x0200, 0x0207, read8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0226, 0x0227, read8_delegate(*this, FUNC(sb_device::dsp_reset_r)), write8_delegate(*this, FUNC(sb_device::dsp_reset_w))); + m_isa->install_device(0x022a, 0x022b, read8_delegate(*this, FUNC(sb_device::dsp_data_r)), write8_delegate(*this, FUNC(sb_device::dsp_data_w))); + m_isa->install_device(0x022c, 0x022d, read8_delegate(*this, FUNC(sb_device::dsp_wbuf_status_r)), write8_delegate(*this, FUNC(sb_device::dsp_cmd_w))); + m_isa->install_device(0x022e, 0x022f, read8_delegate(*this, FUNC(sb_device::dsp_rbuf_status_r)), write8_delegate(*this, FUNC(sb_device::dsp_rbuf_status_w))); if(m_dsp.version >= 0x0301) { - ymf262_device *ymf262 = subdevice<ymf262_device>("ymf262"); + ymf262_device &ymf262 = *subdevice<ymf262_device>("ymf262"); - m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + m_isa->install_device(0x0388, 0x038b, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0220, 0x0223, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0228, 0x0229, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); } else { - m_isa->install_device(0x0388, 0x0389, read8_delegate( FUNC(sb8_device::ym3812_16_r), this ), write8_delegate( FUNC(sb8_device::ym3812_16_w), this ) ); - m_isa->install_device(0x0228, 0x0229, read8_delegate( FUNC(sb8_device::ym3812_16_r), this ), write8_delegate( FUNC(sb8_device::ym3812_16_w), this ) ); + m_isa->install_device(0x0388, 0x0389, read8_delegate(*this, FUNC(sb8_device::ym3812_16_r)), write8_delegate(*this, FUNC(sb8_device::ym3812_16_w))); + m_isa->install_device(0x0228, 0x0229, read8_delegate(*this, FUNC(sb8_device::ym3812_16_r)), write8_delegate(*this, FUNC(sb8_device::ym3812_16_w))); } sb_device::device_start(); @@ -1277,8 +1277,8 @@ void isa8_sblaster1_0_device::device_start() { set_isa_device(); // 1.0 always has the SAA1099s for CMS back-compatibility - m_isa->install_device(0x0220, 0x0221, read8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_1_16_w), this ) ); - m_isa->install_device(0x0222, 0x0223, read8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_16_r), this ), write8_delegate( FUNC(isa8_sblaster1_0_device::saa1099_2_16_w), this ) ); + m_isa->install_device(0x0220, 0x0221, read8_delegate(*this, FUNC(isa8_sblaster1_0_device::saa1099_16_r)), write8_delegate(*this, FUNC(isa8_sblaster1_0_device::saa1099_1_16_w))); + m_isa->install_device(0x0222, 0x0223, read8_delegate(*this, FUNC(isa8_sblaster1_0_device::saa1099_16_r)), write8_delegate(*this, FUNC(isa8_sblaster1_0_device::saa1099_2_16_w))); m_isa->set_dma_channel(1, this, false); m_dsp.version = 0x0105; sb8_device::device_start(); @@ -1295,17 +1295,17 @@ void isa8_sblaster1_5_device::device_start() void sb16_device::device_start() { - ymf262_device *ymf262 = subdevice<ymf262_device>("ymf262"); - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0226, 0x0227, read8_delegate(FUNC(sb_device::dsp_reset_r), this), write8_delegate(FUNC(sb_device::dsp_reset_w), this)); - m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(sb_device::dsp_data_r), this), write8_delegate(FUNC(sb_device::dsp_data_w), this) ); - m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(sb_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_cmd_w), this) ); - m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(sb_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(sb_device::dsp_rbuf_status_w), this) ); - m_isa->install_device(0x0224, 0x0225, read8_delegate(FUNC(sb16_device::mixer_r), this), write8_delegate(FUNC(sb16_device::mixer_w), this)); - m_isa->install_device(0x0330, 0x0331, read8_delegate(FUNC(sb16_device::mpu401_r), this), write8_delegate(FUNC(sb16_device::mpu401_w), this)); - m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0220, 0x0223, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ymf262_device::read), ymf262), write8sm_delegate(FUNC(ymf262_device::write), ymf262)); + ymf262_device &ymf262 = *subdevice<ymf262_device>("ymf262"); + m_isa->install_device(0x0200, 0x0207, read8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0226, 0x0227, read8_delegate(*this, FUNC(sb_device::dsp_reset_r)), write8_delegate(*this, FUNC(sb_device::dsp_reset_w))); + m_isa->install_device(0x022a, 0x022b, read8_delegate(*this, FUNC(sb_device::dsp_data_r)), write8_delegate(*this, FUNC(sb_device::dsp_data_w))); + m_isa->install_device(0x022c, 0x022d, read8_delegate(*this, FUNC(sb_device::dsp_wbuf_status_r)), write8_delegate(*this, FUNC(sb_device::dsp_cmd_w))); + m_isa->install_device(0x022e, 0x022f, read8_delegate(*this, FUNC(sb_device::dsp_rbuf_status_r)), write8_delegate(*this, FUNC(sb_device::dsp_rbuf_status_w))); + m_isa->install_device(0x0224, 0x0225, read8_delegate(*this, FUNC(sb16_device::mixer_r)), write8_delegate(*this, FUNC(sb16_device::mixer_w))); + m_isa->install_device(0x0330, 0x0331, read8_delegate(*this, FUNC(sb16_device::mpu401_r)), write8_delegate(*this, FUNC(sb16_device::mpu401_w))); + m_isa->install_device(0x0388, 0x038b, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0220, 0x0223, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); + m_isa->install_device(0x0228, 0x0229, read8sm_delegate(ymf262, FUNC(ymf262_device::read)), write8sm_delegate(ymf262, FUNC(ymf262_device::write))); save_item(NAME(m_mixer.data)); save_item(NAME(m_mixer.status)); diff --git a/src/devices/bus/isa/sc499.cpp b/src/devices/bus/isa/sc499.cpp index 92f049f0402..eaa3d7ba2c4 100644 --- a/src/devices/bus/isa/sc499.cpp +++ b/src/devices/bus/isa/sc499.cpp @@ -389,7 +389,7 @@ void sc499_device::device_reset() m_irq = m_irqdrq->read() & 7; m_drq = m_irqdrq->read()>>4; - m_isa->install_device(base, base+7, read8_delegate(FUNC(sc499_device::read), this), write8_delegate(FUNC(sc499_device::write), this)); + m_isa->install_device(base, base+7, read8_delegate(*this, FUNC(sc499_device::read)), write8_delegate(*this, FUNC(sc499_device::write))); m_isa->set_dma_channel(m_drq, this, true); m_installed = true; diff --git a/src/devices/bus/isa/side116.cpp b/src/devices/bus/isa/side116.cpp index 19c806ec8be..e11b8588d60 100644 --- a/src/devices/bus/isa/side116.cpp +++ b/src/devices/bus/isa/side116.cpp @@ -121,7 +121,7 @@ void side116_device::device_reset() // install io access if ((m_config->read() & 0x20) == 0x20) - m_isa->install_device(0x360, 0x36f, read8_delegate(FUNC(side116_device::read), this), write8_delegate(FUNC(side116_device::write), this)); + m_isa->install_device(0x360, 0x36f, read8_delegate(*this, FUNC(side116_device::read)), write8_delegate(*this, FUNC(side116_device::write))); } diff --git a/src/devices/bus/isa/ssi2001.cpp b/src/devices/bus/isa/ssi2001.cpp index 2c433321847..bff7a4c7d92 100644 --- a/src/devices/bus/isa/ssi2001.cpp +++ b/src/devices/bus/isa/ssi2001.cpp @@ -29,11 +29,10 @@ ssi2001_device::ssi2001_device(const machine_config &mconfig, const char *tag, d void ssi2001_device::device_start() { set_isa_device(); - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0280, 0x029F, read8sm_delegate(FUNC(mos6581_device::read), subdevice<mos6581_device>("sid6581")), write8sm_delegate(FUNC(mos6581_device::write), subdevice<mos6581_device>("sid6581"))); + m_isa->install_device(0x0200, 0x0207, read8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0280, 0x029F, read8sm_delegate(*subdevice<mos6581_device>("sid6581"), FUNC(mos6581_device::read)), write8sm_delegate(*subdevice<mos6581_device>("sid6581"), FUNC(mos6581_device::write))); } - void ssi2001_device::device_reset() { } diff --git a/src/devices/bus/isa/stereo_fx.cpp b/src/devices/bus/isa/stereo_fx.cpp index 71ea8dfbe25..9a12302d7c0 100644 --- a/src/devices/bus/isa/stereo_fx.cpp +++ b/src/devices/bus/isa/stereo_fx.cpp @@ -207,16 +207,16 @@ stereo_fx_device::stereo_fx_device(const machine_config &mconfig, const char *ta void stereo_fx_device::device_start() { - ym3812_device *ym3812 = subdevice<ym3812_device>("ym3812"); + ym3812_device &ym3812 = *subdevice<ym3812_device>("ym3812"); set_isa_device(); - m_isa->install_device(0x0200, 0x0207, read8_delegate(FUNC(pc_joy_device::joy_port_r), subdevice<pc_joy_device>("pc_joy")), write8_delegate(FUNC(pc_joy_device::joy_port_w), subdevice<pc_joy_device>("pc_joy"))); - m_isa->install_device(0x0226, 0x0227, read8_delegate(FUNC(stereo_fx_device::invalid_r), this), write8_delegate(FUNC(stereo_fx_device::dsp_reset_w), this)); - m_isa->install_device(0x022a, 0x022b, read8_delegate(FUNC(stereo_fx_device::dsp_data_r), this), write8_delegate(FUNC(stereo_fx_device::invalid_w), this) ); - m_isa->install_device(0x022c, 0x022d, read8_delegate(FUNC(stereo_fx_device::dsp_wbuf_status_r), this), write8_delegate(FUNC(stereo_fx_device::dsp_cmd_w), this) ); - m_isa->install_device(0x022e, 0x022f, read8_delegate(FUNC(stereo_fx_device::dsp_rbuf_status_r), this), write8_delegate(FUNC(stereo_fx_device::invalid_w), this) ); - m_isa->install_device(0x0388, 0x0389, read8sm_delegate(FUNC(ym3812_device::read), ym3812), write8sm_delegate(FUNC(ym3812_device::write), ym3812)); - m_isa->install_device(0x0228, 0x0229, read8sm_delegate(FUNC(ym3812_device::read), ym3812), write8sm_delegate(FUNC(ym3812_device::write), ym3812)); + m_isa->install_device(0x0200, 0x0207, read8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_r)), write8_delegate(*subdevice<pc_joy_device>("pc_joy"), FUNC(pc_joy_device::joy_port_w))); + m_isa->install_device(0x0226, 0x0227, read8_delegate(*this, FUNC(stereo_fx_device::invalid_r)), write8_delegate(*this, FUNC(stereo_fx_device::dsp_reset_w))); + m_isa->install_device(0x022a, 0x022b, read8_delegate(*this, FUNC(stereo_fx_device::dsp_data_r)), write8_delegate(*this, FUNC(stereo_fx_device::invalid_w))); + m_isa->install_device(0x022c, 0x022d, read8_delegate(*this, FUNC(stereo_fx_device::dsp_wbuf_status_r)), write8_delegate(*this, FUNC(stereo_fx_device::dsp_cmd_w))); + m_isa->install_device(0x022e, 0x022f, read8_delegate(*this, FUNC(stereo_fx_device::dsp_rbuf_status_r)), write8_delegate(*this, FUNC(stereo_fx_device::invalid_w))); + m_isa->install_device(0x0388, 0x0389, read8sm_delegate(ym3812, FUNC(ym3812_device::read)), write8sm_delegate(ym3812, FUNC(ym3812_device::write))); + m_isa->install_device(0x0228, 0x0229, read8sm_delegate(ym3812, FUNC(ym3812_device::read)), write8sm_delegate(ym3812, FUNC(ym3812_device::write))); m_timer = timer_alloc(); m_timer->adjust(attotime::from_hz(2000000), 0, attotime::from_hz(2000000)); m_isa->set_dma_channel(1, this, false); diff --git a/src/devices/bus/isa/svga_cirrus.cpp b/src/devices/bus/isa/svga_cirrus.cpp index 7ee541184d2..74b3c581a39 100644 --- a/src/devices/bus/isa/svga_cirrus.cpp +++ b/src/devices/bus/isa/svga_cirrus.cpp @@ -36,7 +36,7 @@ void isa16_svga_cirrus_device::device_add_mconfig(machine_config &config) screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); screen.set_screen_update("vga", FUNC(cirrus_gd5430_device::screen_update)); - CIRRUS_GD5430(config, "vga", 0).set_screen("screen"); + CIRRUS_GD5430(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -59,7 +59,7 @@ const tiny_rom_entry *isa16_svga_cirrus_device::device_rom_region() const isa16_svga_cirrus_device::isa16_svga_cirrus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_CIRRUS, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -72,15 +72,13 @@ void isa16_svga_cirrus_device::device_start() { set_isa_device(); - m_vga = subdevice<cirrus_gd5430_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "dm_clgd5430"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(cirrus_gd5430_device::port_03b0_r),m_vga), write8_delegate(FUNC(cirrus_gd5430_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(cirrus_gd5430_device::port_03c0_r),m_vga), write8_delegate(FUNC(cirrus_gd5430_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(cirrus_gd5430_device::port_03d0_r),m_vga), write8_delegate(FUNC(cirrus_gd5430_device::port_03d0_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5430_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(cirrus_gd5430_device::mem_r),m_vga), write8_delegate(FUNC(cirrus_gd5430_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(cirrus_gd5430_device::mem_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5430_device::mem_w))); } //------------------------------------------------- @@ -116,7 +114,7 @@ void isa16_svga_cirrus_gd542x_device::device_add_mconfig(machine_config &config) screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); screen.set_screen_update("vga", FUNC(cirrus_gd5428_device::screen_update)); - CIRRUS_GD5428(config, "vga", 0).set_screen("screen"); + CIRRUS_GD5428(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -139,7 +137,7 @@ const tiny_rom_entry *isa16_svga_cirrus_gd542x_device::device_rom_region() const isa16_svga_cirrus_gd542x_device::isa16_svga_cirrus_gd542x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_CIRRUS_GD542X, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -152,15 +150,13 @@ void isa16_svga_cirrus_gd542x_device::device_start() { set_isa_device(); - m_vga = subdevice<cirrus_gd5428_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "clgd542x"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(cirrus_gd5428_device::port_03b0_r),m_vga), write8_delegate(FUNC(cirrus_gd5428_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(cirrus_gd5428_device::port_03c0_r),m_vga), write8_delegate(FUNC(cirrus_gd5428_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(cirrus_gd5428_device::port_03d0_r),m_vga), write8_delegate(FUNC(cirrus_gd5428_device::port_03d0_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5428_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(cirrus_gd5428_device::mem_r),m_vga), write8_delegate(FUNC(cirrus_gd5428_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(cirrus_gd5428_device::mem_r)), write8_delegate(*m_vga, FUNC(cirrus_gd5428_device::mem_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/svga_cirrus.h b/src/devices/bus/isa/svga_cirrus.h index 46b0cfcfc04..c1a97a5730b 100644 --- a/src/devices/bus/isa/svga_cirrus.h +++ b/src/devices/bus/isa/svga_cirrus.h @@ -32,7 +32,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - cirrus_gd5430_device *m_vga; + required_device<cirrus_gd5430_device> m_vga; }; class isa16_svga_cirrus_gd542x_device : @@ -55,7 +55,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - cirrus_gd5428_device *m_vga; + required_device<cirrus_gd5428_device> m_vga; }; diff --git a/src/devices/bus/isa/svga_s3.cpp b/src/devices/bus/isa/svga_s3.cpp index 0734a286998..ddac8fc77c1 100644 --- a/src/devices/bus/isa/svga_s3.cpp +++ b/src/devices/bus/isa/svga_s3.cpp @@ -44,9 +44,9 @@ void isa16_svga_s3_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(s3_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(s3_vga_device::screen_update)); - S3_VGA(config, "vga", 0).set_screen("screen"); + S3_VGA(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -69,7 +69,7 @@ const tiny_rom_entry *isa16_svga_s3_device::device_rom_region() const isa16_svga_s3_device::isa16_svga_s3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_S3, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr), m_8514(nullptr) + m_vga(*this, "vga"), m_8514(*this, "vga:8514a") { } @@ -82,32 +82,29 @@ void isa16_svga_s3_device::device_start() { set_isa_device(); - m_vga = subdevice<s3_vga_device>("vga"); - m_8514 = subdevice<ibm8514a_device>("vga:8514a"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "s3_764"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(s3_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(s3_vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(s3_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(s3_vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(s3_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(s3_vga_device::port_03d0_w),m_vga)); - m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_currenty_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_currenty_w),m_8514)); - m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_currentx_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_currentx_w),m_8514)); - m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_desty_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_desty_w),m_8514)); - m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_destx_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_destx_w),m_8514)); - m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_line_error_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_line_error_w),m_8514)); - m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_width_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_width_w),m_8514)); - m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_gpstatus_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_cmd_w),m_8514)); - m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_ssv_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_ssv_w),m_8514)); - m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_bgcolour_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_bgcolour_w),m_8514)); - m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_fgcolour_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_fgcolour_w),m_8514)); - m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_write_mask_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_write_mask_w),m_8514)); - m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_read_mask_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_read_mask_w),m_8514)); - m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_backmix_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_backmix_w),m_8514)); - m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_foremix_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_foremix_w),m_8514)); - m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_multifunc_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_multifunc_w),m_8514)); - m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(FUNC(ibm8514a_device::ibm8514_pixel_xfer_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_pixel_xfer_w),m_8514)); - - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(s3_vga_device::mem_r),m_vga), write8_delegate(FUNC(s3_vga_device::mem_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(s3_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(s3_vga_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(s3_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(s3_vga_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(s3_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(s3_vga_device::port_03d0_w))); + m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_currenty_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_currenty_w))); + m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_currentx_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_currentx_w))); + m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_desty_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_desty_w))); + m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_destx_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_destx_w))); + m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_line_error_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_line_error_w))); + m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_width_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_width_w))); + m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_gpstatus_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_cmd_w))); + m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_ssv_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_ssv_w))); + m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_bgcolour_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_bgcolour_w))); + m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_fgcolour_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_fgcolour_w))); + m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_write_mask_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_write_mask_w))); + m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_read_mask_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_read_mask_w))); + m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_backmix_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_backmix_w))); + m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_foremix_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_foremix_w))); + m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_multifunc_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_multifunc_w))); + m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_pixel_xfer_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_pixel_xfer_w))); + + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(s3_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(s3_vga_device::mem_w))); } //------------------------------------------------- @@ -150,9 +147,9 @@ void isa16_s3virge_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(s3virge_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(s3virge_vga_device::screen_update)); - S3VIRGE(config, "vga", 0).set_screen("screen"); + S3VIRGE(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -175,7 +172,7 @@ const tiny_rom_entry *isa16_s3virge_device::device_rom_region() const isa16_s3virge_device::isa16_s3virge_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_S3VIRGE, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -188,15 +185,13 @@ void isa16_s3virge_device::device_start() { set_isa_device(); - m_vga = subdevice<s3virge_vga_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "s3virge"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(s3virge_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(s3virge_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(s3virge_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03d0_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(s3virge_vga_device::mem_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_w))); } //------------------------------------------------- @@ -231,9 +226,9 @@ void isa16_s3virgedx_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(s3virgedx_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(s3virgedx_vga_device::screen_update)); - S3VIRGEDX(config, "vga", 0).set_screen("screen"); + S3VIRGEDX(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -256,7 +251,7 @@ const tiny_rom_entry *isa16_s3virgedx_device::device_rom_region() const isa16_s3virgedx_device::isa16_s3virgedx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_S3VIRGEDX, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -269,15 +264,13 @@ void isa16_s3virgedx_device::device_start() { set_isa_device(); - m_vga = subdevice<s3virgedx_vga_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "s3virgedx"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(s3virge_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(s3virge_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(s3virge_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03d0_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(s3virge_vga_device::mem_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_w))); } //------------------------------------------------- @@ -313,9 +306,9 @@ void isa16_stealth3d2kpro_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(s3virgedx_rev1_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(s3virgedx_rev1_vga_device::screen_update)); - S3VIRGEDX1(config, "vga", 0).set_screen("screen"); + S3VIRGEDX1(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -338,7 +331,7 @@ const tiny_rom_entry *isa16_stealth3d2kpro_device::device_rom_region() const isa16_stealth3d2kpro_device::isa16_stealth3d2kpro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_DMS3D2KPRO, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -351,15 +344,13 @@ void isa16_stealth3d2kpro_device::device_start() { set_isa_device(); - m_vga = subdevice<s3virgedx_vga_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "svga", "stealth3d"); - m_isa->install_device(0x03b0, 0x03bf, read8_delegate(FUNC(s3virge_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x03c0, 0x03cf, read8_delegate(FUNC(s3virge_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x03d0, 0x03df, read8_delegate(FUNC(s3virge_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::port_03d0_w),m_vga)); + m_isa->install_device(0x03b0, 0x03bf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03b0_w))); + m_isa->install_device(0x03c0, 0x03cf, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03c0_w))); + m_isa->install_device(0x03d0, 0x03df, read8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(s3virge_vga_device::mem_r),m_vga), write8_delegate(FUNC(s3virge_vga_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(s3virge_vga_device::mem_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/svga_s3.h b/src/devices/bus/isa/svga_s3.h index f60141518de..3889a2ed8e8 100644 --- a/src/devices/bus/isa/svga_s3.h +++ b/src/devices/bus/isa/svga_s3.h @@ -35,8 +35,8 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - s3_vga_device *m_vga; - ibm8514a_device *m_8514; + required_device<s3_vga_device> m_vga; + required_device<ibm8514a_device> m_8514; }; class isa16_s3virge_device : @@ -59,7 +59,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - s3virge_vga_device *m_vga; + required_device<s3virge_vga_device> m_vga; }; class isa16_s3virgedx_device : @@ -82,7 +82,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - s3virgedx_vga_device *m_vga; + required_device<s3virgedx_vga_device> m_vga; }; class isa16_stealth3d2kpro_device : @@ -105,7 +105,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - s3virgedx_vga_device *m_vga; + required_device<s3virgedx_vga_device> m_vga; }; diff --git a/src/devices/bus/isa/svga_trident.cpp b/src/devices/bus/isa/svga_trident.cpp index 31f2120f548..bc07c57a425 100644 --- a/src/devices/bus/isa/svga_trident.cpp +++ b/src/devices/bus/isa/svga_trident.cpp @@ -34,9 +34,9 @@ void isa16_svga_tgui9680_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(trident_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(trident_vga_device::screen_update)); - TRIDENT_VGA(config, "vga", 0).set_screen("screen"); + TRIDENT_VGA(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -59,7 +59,7 @@ const tiny_rom_entry *isa16_svga_tgui9680_device::device_rom_region() const isa16_svga_tgui9680_device::isa16_svga_tgui9680_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_TGUI9680, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -72,26 +72,24 @@ void isa16_svga_tgui9680_device::device_start() { set_isa_device(); - m_vga = subdevice<trident_vga_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "tgui9680", "tgui9680"); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(trident_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(trident_vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(trident_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(trident_vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(trident_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(trident_vga_device::port_03d0_w),m_vga)); - m_isa->install_device(0x43c4, 0x43cb, read8_delegate(FUNC(trident_vga_device::port_43c6_r),m_vga), write8_delegate(FUNC(trident_vga_device::port_43c6_w),m_vga)); - m_isa->install_device(0x83c4, 0x83cb, read8_delegate(FUNC(trident_vga_device::port_83c6_r),m_vga), write8_delegate(FUNC(trident_vga_device::port_83c6_w),m_vga)); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(trident_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(trident_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(trident_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::port_03d0_w))); + m_isa->install_device(0x43c4, 0x43cb, read8_delegate(*m_vga, FUNC(trident_vga_device::port_43c6_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::port_43c6_w))); + m_isa->install_device(0x83c4, 0x83cb, read8_delegate(*m_vga, FUNC(trident_vga_device::port_83c6_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::port_83c6_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(trident_vga_device::mem_r),m_vga), write8_delegate(FUNC(trident_vga_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(trident_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::mem_w))); // uncomment to test Windows 3.1 TGUI9440AGi driver -// m_isa->install_memory(0x4400000, 0x45fffff, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga)); +// m_isa->install_memory(0x4400000, 0x45fffff, read8_delegate(*m_vga, FUNC(trident_vga_device::vram_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::vram_w))); // win95 drivers -// m_isa->install_memory(0x4000000, 0x41fffff, read8_delegate(FUNC(trident_vga_device::vram_r),m_vga), write8_delegate(FUNC(trident_vga_device::vram_w),m_vga)); +// m_isa->install_memory(0x4000000, 0x41fffff, read8_delegate(*m_vga, FUNC(trident_vga_device::vram_r)), write8_delegate(FUNC(*m_vga, trident_vga_device::vram_w))); // acceleration ports - m_isa->install_device(0x2120, 0x21ff, read8_delegate(FUNC(trident_vga_device::accel_r),m_vga), write8_delegate(FUNC(trident_vga_device::accel_w),m_vga)); + m_isa->install_device(0x2120, 0x21ff, read8_delegate(*m_vga, FUNC(trident_vga_device::accel_r)), write8_delegate(*m_vga, FUNC(trident_vga_device::accel_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/svga_trident.h b/src/devices/bus/isa/svga_trident.h index d8be1458591..47019e6b16e 100644 --- a/src/devices/bus/isa/svga_trident.h +++ b/src/devices/bus/isa/svga_trident.h @@ -39,7 +39,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - trident_vga_device *m_vga; + required_device<trident_vga_device> m_vga; }; diff --git a/src/devices/bus/isa/svga_tseng.cpp b/src/devices/bus/isa/svga_tseng.cpp index 354643fd96d..53dc3d72a5d 100644 --- a/src/devices/bus/isa/svga_tseng.cpp +++ b/src/devices/bus/isa/svga_tseng.cpp @@ -33,9 +33,9 @@ void isa8_svga_et4k_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(tseng_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(tseng_vga_device::screen_update)); - TSENG_VGA(config, "vga", 0).set_screen("screen"); + TSENG_VGA(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -58,7 +58,7 @@ const tiny_rom_entry *isa8_svga_et4k_device::device_rom_region() const isa8_svga_et4k_device::isa8_svga_et4k_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA8_SVGA_ET4K, tag, owner, clock), device_isa8_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -71,8 +71,6 @@ void isa8_svga_et4k_device::device_start() { set_isa_device(); - m_vga = subdevice<tseng_vga_device>("vga"); - map_io(); map_ram(); map_rom(); @@ -104,14 +102,14 @@ void isa8_svga_et4k_device::remap(int space_id, offs_t start, offs_t end) void isa8_svga_et4k_device::map_io() { - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(tseng_vga_device::port_03b0_r), m_vga), write8_delegate(FUNC(tseng_vga_device::port_03b0_w), m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(tseng_vga_device::port_03c0_r), m_vga), write8_delegate(FUNC(tseng_vga_device::port_03c0_w), m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(tseng_vga_device::port_03d0_r), m_vga), write8_delegate(FUNC(tseng_vga_device::port_03d0_w), m_vga)); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(tseng_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(tseng_vga_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(tseng_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(tseng_vga_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(tseng_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(tseng_vga_device::port_03d0_w))); } void isa8_svga_et4k_device::map_ram() { - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(tseng_vga_device::mem_r), m_vga), write8_delegate(FUNC(tseng_vga_device::mem_w), m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(tseng_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(tseng_vga_device::mem_w))); } void isa8_svga_et4k_device::map_rom() diff --git a/src/devices/bus/isa/svga_tseng.h b/src/devices/bus/isa/svga_tseng.h index f83460e86ff..f267aad2634 100644 --- a/src/devices/bus/isa/svga_tseng.h +++ b/src/devices/bus/isa/svga_tseng.h @@ -39,7 +39,7 @@ private: void map_io(); void map_ram(); void map_rom(); - tseng_vga_device *m_vga; + required_device<tseng_vga_device> m_vga; }; diff --git a/src/devices/bus/isa/trident.cpp b/src/devices/bus/isa/trident.cpp index a3cd123305b..9110c2205ef 100644 --- a/src/devices/bus/isa/trident.cpp +++ b/src/devices/bus/isa/trident.cpp @@ -169,7 +169,7 @@ void trident_vga_device::device_start() // copy over interfaces - vga.read_dipswitch = read8_delegate(); //read_dipswitch; + vga.read_dipswitch.set(nullptr); //read_dipswitch; vga.svga_intf.vram_size = 0x200000; vga.memory.resize(vga.svga_intf.vram_size); diff --git a/src/devices/bus/isa/vga.cpp b/src/devices/bus/isa/vga.cpp index 121f689d711..3fafec340b0 100644 --- a/src/devices/bus/isa/vga.cpp +++ b/src/devices/bus/isa/vga.cpp @@ -31,9 +31,9 @@ void isa8_vga_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(vga_device::screen_update)); - VGA(config, "vga", 0).set_screen("screen"); + VGA(config, m_vga, 0).set_screen("screen"); } //------------------------------------------------- @@ -55,7 +55,8 @@ const tiny_rom_entry *isa8_vga_device::device_rom_region() const isa8_vga_device::isa8_vga_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA8_VGA, tag, owner, clock), - device_isa8_card_interface(mconfig, *this), m_vga(nullptr) + device_isa8_card_interface(mconfig, *this), + m_vga(*this, "vga") { } @@ -68,15 +69,13 @@ void isa8_vga_device::device_start() { set_isa_device(); - m_vga = subdevice<vga_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "ibm_vga", "ibm_vga"); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(vga_device::port_03d0_w),m_vga)); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03d0_w))); - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(vga_device::mem_r),m_vga), write8_delegate(FUNC(vga_device::mem_w),m_vga)); + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(vga_device::mem_r)), write8_delegate(*m_vga, FUNC(vga_device::mem_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/vga.h b/src/devices/bus/isa/vga.h index 856016ecc5a..4f18d8ff053 100644 --- a/src/devices/bus/isa/vga.h +++ b/src/devices/bus/isa/vga.h @@ -34,7 +34,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - vga_device *m_vga; + required_device<vga_device> m_vga; }; diff --git a/src/devices/bus/isa/vga_ati.cpp b/src/devices/bus/isa/vga_ati.cpp index 63f9a1ec987..37617ae62d4 100644 --- a/src/devices/bus/isa/vga_ati.cpp +++ b/src/devices/bus/isa/vga_ati.cpp @@ -80,27 +80,27 @@ void isa16_vga_gfxultra_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(ati_vga_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(ati_vga_device::screen_update)); - ATI_VGA(config, "vga", 0).set_screen("screen"); + ATI_VGA(config, m_vga, 0).set_screen("screen"); } void isa16_vga_gfxultrapro_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(mach32_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(mach32_device::screen_update)); - ATIMACH32(config, "vga", 0).set_screen("screen"); + ATIMACH32(config, m_vga, 0).set_screen("screen"); } void isa16_vga_mach64_device::device_add_mconfig(machine_config &config) { screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(25.175_MHz_XTAL, 800, 0, 640, 524, 0, 480); - screen.set_screen_update("vga", FUNC(mach64_device::screen_update)); + screen.set_screen_update(m_vga, FUNC(mach64_device::screen_update)); - ATIMACH64(config, "vga", 0).set_screen("screen"); + ATIMACH64(config, m_vga, 0).set_screen("screen"); } @@ -134,21 +134,21 @@ const tiny_rom_entry *isa16_vga_mach64_device::device_rom_region() const isa16_vga_gfxultra_device::isa16_vga_gfxultra_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_VGA_GFXULTRA, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr), m_8514(nullptr) + m_vga(*this, "vga"), m_8514(*this, "vga:8514a") { } isa16_vga_gfxultrapro_device::isa16_vga_gfxultrapro_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_GFXULTRAPRO, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } isa16_vga_mach64_device::isa16_vga_mach64_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, ISA16_SVGA_MACH64, tag, owner, clock), device_isa16_card_interface(mconfig, *this), - m_vga(nullptr) + m_vga(*this, "vga") { } @@ -163,199 +163,192 @@ void isa16_vga_gfxultra_device::device_start() { set_isa_device(); - m_vga = subdevice<ati_vga_device>("vga"); - m_8514 = subdevice<mach8_device>("vga:8514a"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga", "gfxultra"); - m_isa->install_device(0x1ce, 0x1cf, read8_delegate(FUNC(ati_vga_device::ati_port_ext_r),m_vga), write8_delegate(FUNC(ati_vga_device::ati_port_ext_w),m_vga)); - m_isa->install_device(0x2e8, 0x2ef, read8_delegate(FUNC(mach8_device::ibm8514_status_r),m_8514), write8_delegate(FUNC(mach8_device::ibm8514_htotal_w),m_8514)); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(ati_vga_device::port_03b0_r),m_vga), write8_delegate(FUNC(vga_device::port_03b0_w),m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(ati_vga_device::port_03c0_r),m_vga), write8_delegate(FUNC(vga_device::port_03c0_w),m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(ati_vga_device::port_03d0_r),m_vga), write8_delegate(FUNC(vga_device::port_03d0_w),m_vga)); - m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(FUNC(mach8_device::ibm8514_vtotal_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_vtotal_w),m_8514)); - m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(FUNC(mach8_device::mach8_config1_r),m_8514), write16_delegate()); - m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(FUNC(mach8_device::ibm8514_vdisp_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_vdisp_w),m_8514)); - m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(FUNC(mach8_device::mach8_config2_r),m_8514), write16_delegate()); - m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(FUNC(mach8_device::ibm8514_vsync_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_vsync_w),m_8514)); - m_isa->install16_device(0x22e8, 0x22eb, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514),write16_delegate(FUNC(mach8_device::ibm8514_display_ctrl_w),m_8514)); - m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(FUNC(mach8_device::ibm8514_htotal_r),m_8514),write16_delegate()); - m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514),write16_delegate(FUNC(mach8_device::mach8_crt_pitch_w),m_8514)); - m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(FUNC(mach8_device::ibm8514_subcontrol_r),m_8514),write16_delegate()); - m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(FUNC(mach8_device::ibm8514_substatus_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_subcontrol_w),m_8514)); - m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_advfunc_w),m_8514)); - m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(FUNC(mach8_device::mach8_clksel_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_clksel_w),m_8514)); - m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(FUNC(mach8_device::mach8_ec0_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ec0_w),m_8514)); - m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(FUNC(mach8_device::mach8_scratch0_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_scratch0_w),m_8514)); - m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(FUNC(mach8_device::mach8_ec1_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ec1_w),m_8514)); - m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(FUNC(mach8_device::mach8_scratch0_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_scratch0_w),m_8514)); - m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(FUNC(mach8_device::mach8_ec2_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ec2_w),m_8514)); - m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(FUNC(mach8_device::mach8_ec3_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ec3_w),m_8514)); - m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ge_offset_l_w),m_8514)); - m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ge_offset_h_w),m_8514)); - m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ge_pitch_w),m_8514)); - m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ge_ext_config_w),m_8514)); - m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(FUNC(mach8_device::ibm8514_currenty_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_currenty_w),m_8514)); - m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(FUNC(mach8_device::ibm8514_currentx_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_currentx_w),m_8514)); - m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(FUNC(mach8_device::ibm8514_desty_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_desty_w),m_8514)); - m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(FUNC(mach8_device::ibm8514_destx_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_destx_w),m_8514)); - m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(FUNC(mach8_device::mach8_ge_ext_config_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_patt_data_w),m_8514)); - m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(FUNC(mach8_device::ibm8514_line_error_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_line_error_w),m_8514)); - m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(FUNC(mach8_device::ibm8514_width_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_width_w),m_8514)); - m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(FUNC(mach8_device::mach8_bresenham_count_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_bresenham_count_w),m_8514)); - m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(FUNC(mach8_device::ibm8514_gpstatus_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_cmd_w),m_8514)); - m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(FUNC(mach8_device::mach8_ext_fifo_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_linedraw_index_w),m_8514)); - m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(FUNC(mach8_device::ibm8514_ssv_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_ssv_w),m_8514)); - m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(FUNC(mach8_device::ibm8514_bgcolour_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_bgcolour_w),m_8514)); - m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(FUNC(mach8_device::ibm8514_fgcolour_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_fgcolour_w),m_8514)); - m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_write_mask_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_write_mask_w),m_8514)); - m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(FUNC(ibm8514a_device::ibm8514_read_mask_r),m_8514), write16_delegate(FUNC(ibm8514a_device::ibm8514_read_mask_w),m_8514)); - m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(FUNC(mach8_device::ibm8514_backmix_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_backmix_w),m_8514)); - m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(FUNC(mach8_device::ibm8514_foremix_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_foremix_w),m_8514)); - m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(FUNC(mach8_device::ibm8514_multifunc_r),m_8514), write16_delegate(FUNC(mach8_device::ibm8514_multifunc_w),m_8514)); - m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_scan_x_w),m_8514)); - m_isa->install16_device(0xceec, 0xceef, read16_delegate(FUNC(mach8_device::mach8_readonly_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_dp_config_w),m_8514)); - m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(FUNC(mach8_device::ibm8514_pixel_xfer_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_pixel_xfer_w),m_8514)); - m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(FUNC(mach8_device::mach8_sourcex_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ext_leftscissor_w),m_8514)); - m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(FUNC(mach8_device::mach8_sourcey_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_ext_topscissor_w),m_8514)); - m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(FUNC(mach8_device::mach8_linedraw_r),m_8514), write16_delegate(FUNC(mach8_device::mach8_linedraw_w),m_8514)); - - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(ati_vga_device::mem_r),m_vga), write8_delegate(FUNC(ati_vga_device::mem_w),m_vga)); + m_isa->install_device(0x1ce, 0x1cf, read8_delegate(*m_vga, FUNC(ati_vga_device::ati_port_ext_r)), write8_delegate(*m_vga, FUNC(ati_vga_device::ati_port_ext_w))); + m_isa->install_device(0x2e8, 0x2ef, read8_delegate(*m_8514, FUNC(mach8_device::ibm8514_status_r)), write8_delegate(*m_8514, FUNC(mach8_device::ibm8514_htotal_w))); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(ati_vga_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(ati_vga_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(ati_vga_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(vga_device::port_03d0_w))); + m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vtotal_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vtotal_w))); + m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_config1_r)), write16_delegate(*this)); + m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vdisp_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vdisp_w))); + m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_config2_r)), write16_delegate(*this)); + m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vsync_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_vsync_w))); + m_isa->install16_device(0x22e8, 0x22eb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_display_ctrl_w))); + m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_htotal_r)), write16_delegate(*this)); + m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_crt_pitch_w))); + m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_subcontrol_r)), write16_delegate(*this)); + m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_substatus_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_subcontrol_w))); + m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_advfunc_w))); + m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_clksel_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_clksel_w))); + m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ec0_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ec0_w))); + m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_scratch0_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_scratch0_w))); + m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ec1_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ec1_w))); + m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_scratch0_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_scratch0_w))); + m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ec2_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ec2_w))); + m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ec3_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ec3_w))); + m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ge_offset_l_w))); + m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ge_offset_h_w))); + m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ge_pitch_w))); + m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ge_ext_config_w))); + m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_currenty_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_currenty_w))); + m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_currentx_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_currentx_w))); + m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_desty_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_desty_w))); + m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_destx_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_destx_w))); + m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ge_ext_config_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_patt_data_w))); + m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_line_error_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_line_error_w))); + m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_width_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_width_w))); + m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_bresenham_count_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_bresenham_count_w))); + m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_gpstatus_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_cmd_w))); + m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_ext_fifo_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_linedraw_index_w))); + m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_ssv_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_ssv_w))); + m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_bgcolour_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_bgcolour_w))); + m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_fgcolour_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_fgcolour_w))); + m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_write_mask_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_write_mask_w))); + m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_read_mask_r)), write16_delegate(*m_8514, FUNC(ibm8514a_device::ibm8514_read_mask_w))); + m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_backmix_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_backmix_w))); + m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_foremix_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_foremix_w))); + m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_multifunc_r)), write16_delegate(*m_8514, FUNC(mach8_device::ibm8514_multifunc_w))); + m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_scan_x_w))); + m_isa->install16_device(0xceec, 0xceef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_readonly_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_dp_config_w))); + m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(*m_8514, FUNC(mach8_device::ibm8514_pixel_xfer_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_pixel_xfer_w))); + m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_sourcex_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ext_leftscissor_w))); + m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_sourcey_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_ext_topscissor_w))); + m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(*m_8514, FUNC(mach8_device::mach8_linedraw_r)), write16_delegate(*m_8514, FUNC(mach8_device::mach8_linedraw_w))); + + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(ati_vga_device::mem_r)), write8_delegate(*m_vga, FUNC(ati_vga_device::mem_w))); } void isa16_vga_gfxultrapro_device::device_start() { set_isa_device(); - m_vga = subdevice<mach32_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga", "gfxultrapro"); - m_isa->install_device(0x1ce, 0x1cf, read8_delegate(FUNC(mach32_device::ati_port_ext_r),m_vga), write8_delegate(FUNC(mach32_device::ati_port_ext_w),m_vga)); - m_isa->install_device(0x2e8, 0x2ef, read8_delegate(FUNC(mach32_device::mach32_status_r),m_vga), write8_delegate(FUNC(mach32_device::ibm8514_htotal_w),m_vga)); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(mach32_device::port_03b0_r),m_vga), write8_delegate(FUNC(mach32_device::port_03b0_w),m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(mach32_device::port_03c0_r),m_vga), write8_delegate(FUNC(mach32_device::port_03c0_w),m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(mach32_device::port_03d0_r),m_vga), write8_delegate(FUNC(mach32_device::port_03d0_w),m_vga)); - m_isa->install16_device(0xaec, 0xaef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_l_w),m_vga)); - m_isa->install16_device(0xeec, 0xeef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_h_w),m_vga)); - m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(FUNC(mach32_device::ibm8514_vtotal_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_vtotal_w),m_vga)); - m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(FUNC(mach32_device::mach32_config1_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_pos_h),m_vga)); - m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(FUNC(mach32_device::ibm8514_vdisp_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_vdisp_w),m_vga)); - m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(FUNC(mach32_device::mach8_config2_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_pos_v),m_vga)); - m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(FUNC(mach32_device::ibm8514_vsync_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_vsync_w),m_vga)); - m_isa->install16_device(0x1aec, 0x1aef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_colour_b_w),m_vga)); - m_isa->install16_device(0x1eec, 0x1eef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_offset_w),m_vga)); - m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(FUNC(mach32_device::ibm8514_htotal_r),m_vga),write16_delegate()); - m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga),write16_delegate(FUNC(mach32_device::mach8_crt_pitch_w),m_vga)); - m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(FUNC(mach32_device::ibm8514_subcontrol_r),m_vga),write16_delegate()); - m_isa->install16_device(0x3aec, 0x3aef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_colour_0_w),m_vga)); - m_isa->install16_device(0x3eec, 0x3eef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_cursor_colour_0_w),m_vga)); - m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(FUNC(mach32_device::ibm8514_substatus_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_subcontrol_w),m_vga)); - m_isa->install16_device(0x42ec, 0x42ef, read16_delegate(FUNC(mach32_device::mach32_mem_boundary_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_mem_boundary_w),m_vga)); - m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_advfunc_w),m_vga)); - m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(FUNC(mach32_device::mach8_clksel_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_clksel_w),m_vga)); - m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(FUNC(mach32_device::mach8_ec0_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ec0_w),m_vga)); - m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(FUNC(mach32_device::mach8_scratch0_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_scratch0_w),m_vga)); - m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(FUNC(mach32_device::mach8_ec1_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ec1_w),m_vga)); - m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(FUNC(mach32_device::mach8_scratch0_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_scratch0_w),m_vga)); - m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(FUNC(mach32_device::mach8_ec2_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ec2_w),m_vga)); - m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(FUNC(mach32_device::mach8_ec3_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ec3_w),m_vga)); - m_isa->install16_device(0x62ec, 0x62ef, read16_delegate(FUNC(mach32_device::mach32_ext_ge_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_horz_overscan_w),m_vga)); - m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ge_offset_l_w),m_vga)); - m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ge_offset_h_w),m_vga)); - m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ge_pitch_w),m_vga)); - m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach32_ge_ext_config_w),m_vga)); - m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(FUNC(mach32_device::ibm8514_currenty_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_currenty_w),m_vga)); - m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(FUNC(mach32_device::ibm8514_currentx_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_currentx_w),m_vga)); - m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(FUNC(mach32_device::ibm8514_desty_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_desty_w),m_vga)); - m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(FUNC(mach32_device::ibm8514_destx_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_destx_w),m_vga)); - m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(FUNC(mach32_device::mach8_ge_ext_config_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_patt_data_w),m_vga)); - m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(FUNC(mach32_device::ibm8514_line_error_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_line_error_w),m_vga)); - m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(FUNC(mach32_device::ibm8514_width_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_width_w),m_vga)); - m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(FUNC(mach32_device::mach8_bresenham_count_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_bresenham_count_w),m_vga)); - m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(FUNC(mach32_device::ibm8514_gpstatus_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_cmd_w),m_vga)); - m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(FUNC(mach32_device::mach8_ext_fifo_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_linedraw_index_w),m_vga)); - m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(FUNC(mach32_device::ibm8514_ssv_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_ssv_w),m_vga)); - m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(FUNC(mach32_device::ibm8514_bgcolour_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_bgcolour_w),m_vga)); - m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(FUNC(mach32_device::ibm8514_fgcolour_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_fgcolour_w),m_vga)); - m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(FUNC(mach32_device::ibm8514_write_mask_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_write_mask_w),m_vga)); - m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(FUNC(mach32_device::ibm8514_read_mask_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_read_mask_w),m_vga)); - m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(FUNC(mach32_device::ibm8514_backmix_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_backmix_w),m_vga)); - m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(FUNC(mach32_device::ibm8514_foremix_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_foremix_w),m_vga)); - m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(FUNC(mach32_device::ibm8514_multifunc_r),m_vga), write16_delegate(FUNC(mach32_device::ibm8514_multifunc_w),m_vga)); - m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_scan_x_w),m_vga)); - m_isa->install16_device(0xceec, 0xceef, read16_delegate(FUNC(mach32_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_dp_config_w),m_vga)); - m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(FUNC(mach32_device::ibm8514_pixel_xfer_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_pixel_xfer_w),m_vga)); - m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(FUNC(mach32_device::mach8_sourcex_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ext_leftscissor_w),m_vga)); - m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(FUNC(mach32_device::mach8_sourcey_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_ext_topscissor_w),m_vga)); - m_isa->install16_device(0xfaec, 0xfaef, read16_delegate(FUNC(mach32_device::mach32_chipid_r),m_vga), write16_delegate()); - m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(FUNC(mach32_device::mach8_linedraw_r),m_vga), write16_delegate(FUNC(mach32_device::mach8_linedraw_w),m_vga)); - - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(mach32_device::mem_r),m_vga), write8_delegate(FUNC(mach32_device::mem_w),m_vga)); + m_isa->install_device(0x1ce, 0x1cf, read8_delegate(*m_vga, FUNC(mach32_device::ati_port_ext_r)), write8_delegate(*m_vga, FUNC(mach32_device::ati_port_ext_w))); + m_isa->install_device(0x2e8, 0x2ef, read8_delegate(*m_vga, FUNC(mach32_device::mach32_status_r)), write8_delegate(*m_vga, FUNC(mach32_device::ibm8514_htotal_w))); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(mach32_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(mach32_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(mach32_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(mach32_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(mach32_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(mach32_device::port_03d0_w))); + m_isa->install16_device(0xaec, 0xaef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_l_w))); + m_isa->install16_device(0xeec, 0xeef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_h_w))); + m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vtotal_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vtotal_w))); + m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_config1_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_pos_h))); + m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vdisp_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vdisp_w))); + m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_config2_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_pos_v))); + m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vsync_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_vsync_w))); + m_isa->install16_device(0x1aec, 0x1aef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_colour_b_w))); + m_isa->install16_device(0x1eec, 0x1eef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_offset_w))); + m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_htotal_r)), write16_delegate(*this)); + m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_crt_pitch_w))); + m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_subcontrol_r)), write16_delegate(*this)); + m_isa->install16_device(0x3aec, 0x3aef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_colour_0_w))); + m_isa->install16_device(0x3eec, 0x3eef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_cursor_colour_0_w))); + m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_substatus_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_subcontrol_w))); + m_isa->install16_device(0x42ec, 0x42ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_mem_boundary_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_mem_boundary_w))); + m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_advfunc_w))); + m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_clksel_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_clksel_w))); + m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ec0_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ec0_w))); + m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_scratch0_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_scratch0_w))); + m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ec1_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ec1_w))); + m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_scratch0_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_scratch0_w))); + m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ec2_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ec2_w))); + m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ec3_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ec3_w))); + m_isa->install16_device(0x62ec, 0x62ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_ext_ge_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_horz_overscan_w))); + m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ge_offset_l_w))); + m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ge_offset_h_w))); + m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ge_pitch_w))); + m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach32_ge_ext_config_w))); + m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_currenty_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_currenty_w))); + m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_currentx_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_currentx_w))); + m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_desty_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_desty_w))); + m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_destx_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_destx_w))); + m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ge_ext_config_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_patt_data_w))); + m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_line_error_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_line_error_w))); + m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_width_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_width_w))); + m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_bresenham_count_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_bresenham_count_w))); + m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_gpstatus_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_cmd_w))); + m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_ext_fifo_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_linedraw_index_w))); + m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_ssv_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_ssv_w))); + m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_bgcolour_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_bgcolour_w))); + m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_fgcolour_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_fgcolour_w))); + m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_write_mask_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_write_mask_w))); + m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_read_mask_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_read_mask_w))); + m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_backmix_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_backmix_w))); + m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_foremix_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_foremix_w))); + m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_multifunc_r)), write16_delegate(*m_vga, FUNC(mach32_device::ibm8514_multifunc_w))); + m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_scan_x_w))); + m_isa->install16_device(0xceec, 0xceef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_dp_config_w))); + m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(*m_vga, FUNC(mach32_device::ibm8514_pixel_xfer_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_pixel_xfer_w))); + m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_sourcex_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ext_leftscissor_w))); + m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_sourcey_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_ext_topscissor_w))); + m_isa->install16_device(0xfaec, 0xfaef, read16_delegate(*m_vga, FUNC(mach32_device::mach32_chipid_r)), write16_delegate(*this)); + m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(*m_vga, FUNC(mach32_device::mach8_linedraw_r)), write16_delegate(*m_vga, FUNC(mach32_device::mach8_linedraw_w))); + + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(mach32_device::mem_r)), write8_delegate(*m_vga, FUNC(mach32_device::mem_w))); } void isa16_vga_mach64_device::device_start() { set_isa_device(); - m_vga = subdevice<mach64_device>("vga"); - m_isa->install_rom(this, 0xc0000, 0xc7fff, "vga", "mach64"); - m_isa->install_device(0x1ce, 0x1cf, read8_delegate(FUNC(mach64_device::ati_port_ext_r),m_vga), write8_delegate(FUNC(mach64_device::ati_port_ext_w),m_vga)); - m_isa->install_device(0x2e8, 0x2ef, read8_delegate(FUNC(mach64_device::mach32_status_r),m_vga), write8_delegate(FUNC(mach64_device::ibm8514_htotal_w),m_vga)); - m_isa->install_device(0x3b0, 0x3bf, read8_delegate(FUNC(mach64_device::port_03b0_r),m_vga), write8_delegate(FUNC(mach64_device::port_03b0_w),m_vga)); - m_isa->install_device(0x3c0, 0x3cf, read8_delegate(FUNC(mach64_device::port_03c0_r),m_vga), write8_delegate(FUNC(mach64_device::port_03c0_w),m_vga)); - m_isa->install_device(0x3d0, 0x3df, read8_delegate(FUNC(mach64_device::port_03d0_r),m_vga), write8_delegate(FUNC(mach64_device::port_03d0_w),m_vga)); - m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(FUNC(mach64_device::ibm8514_vtotal_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_vtotal_w),m_vga)); - m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(FUNC(mach64_device::mach32_config1_r),m_vga), write16_delegate(FUNC(mach64_device::mach64_config1_w),m_vga)); - m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(FUNC(mach64_device::ibm8514_vdisp_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_vdisp_w),m_vga)); - m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(FUNC(mach64_device::mach8_config2_r),m_vga), write16_delegate(FUNC(mach64_device::mach64_config2_w),m_vga)); - m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(FUNC(mach64_device::ibm8514_vsync_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_vsync_w),m_vga)); - m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(FUNC(mach64_device::ibm8514_htotal_r),m_vga),write16_delegate()); - m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga),write16_delegate(FUNC(mach64_device::mach8_crt_pitch_w),m_vga)); - m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(FUNC(mach64_device::ibm8514_subcontrol_r),m_vga),write16_delegate()); - m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(FUNC(mach64_device::ibm8514_substatus_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_subcontrol_w),m_vga)); - m_isa->install16_device(0x42ec, 0x42ef, read16_delegate(FUNC(mach64_device::mach32_mem_boundary_r),m_vga), write16_delegate(FUNC(mach64_device::mach32_mem_boundary_w),m_vga)); - m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_advfunc_w),m_vga)); - m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(FUNC(mach64_device::mach8_clksel_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_clksel_w),m_vga)); - m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(FUNC(mach64_device::mach8_ec0_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ec0_w),m_vga)); - m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(FUNC(mach64_device::mach8_scratch0_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_scratch0_w),m_vga)); - m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(FUNC(mach64_device::mach8_ec1_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ec1_w),m_vga)); - m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(FUNC(mach64_device::mach8_scratch0_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_scratch0_w),m_vga)); - m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(FUNC(mach64_device::mach8_ec2_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ec2_w),m_vga)); - m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(FUNC(mach64_device::mach8_ec3_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ec3_w),m_vga)); - m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ge_offset_l_w),m_vga)); - m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ge_offset_h_w),m_vga)); - m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ge_pitch_w),m_vga)); - m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach32_ge_ext_config_w),m_vga)); - m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(FUNC(mach64_device::ibm8514_currenty_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_currenty_w),m_vga)); - m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(FUNC(mach64_device::ibm8514_currentx_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_currentx_w),m_vga)); - m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(FUNC(mach64_device::ibm8514_desty_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_desty_w),m_vga)); - m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(FUNC(mach64_device::ibm8514_destx_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_destx_w),m_vga)); - m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(FUNC(mach64_device::mach8_ge_ext_config_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_patt_data_w),m_vga)); - m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(FUNC(mach64_device::ibm8514_line_error_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_line_error_w),m_vga)); - m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(FUNC(mach64_device::ibm8514_width_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_width_w),m_vga)); - m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(FUNC(mach64_device::mach8_bresenham_count_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_bresenham_count_w),m_vga)); - m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(FUNC(mach64_device::ibm8514_gpstatus_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_cmd_w),m_vga)); - m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(FUNC(mach64_device::mach8_ext_fifo_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_linedraw_index_w),m_vga)); - m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(FUNC(mach64_device::ibm8514_ssv_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_ssv_w),m_vga)); - m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(FUNC(mach64_device::ibm8514_bgcolour_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_bgcolour_w),m_vga)); - m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(FUNC(mach64_device::ibm8514_fgcolour_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_fgcolour_w),m_vga)); - m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(FUNC(mach64_device::ibm8514_write_mask_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_write_mask_w),m_vga)); - m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(FUNC(mach64_device::ibm8514_read_mask_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_read_mask_w),m_vga)); - m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(FUNC(mach64_device::ibm8514_backmix_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_backmix_w),m_vga)); - m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(FUNC(mach64_device::ibm8514_foremix_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_foremix_w),m_vga)); - m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(FUNC(mach64_device::ibm8514_multifunc_r),m_vga), write16_delegate(FUNC(mach64_device::ibm8514_multifunc_w),m_vga)); - m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_scan_x_w),m_vga)); - m_isa->install16_device(0xceec, 0xceef, read16_delegate(FUNC(mach64_device::mach32_readonly_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_dp_config_w),m_vga)); - m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(FUNC(mach64_device::ibm8514_pixel_xfer_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_pixel_xfer_w),m_vga)); - m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(FUNC(mach64_device::mach8_sourcex_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ext_leftscissor_w),m_vga)); - m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(FUNC(mach64_device::mach8_sourcey_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_ext_topscissor_w),m_vga)); - m_isa->install16_device(0xfaec, 0xfaef, read16_delegate(FUNC(mach64_device::mach32_chipid_r),m_vga), write16_delegate()); - m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(FUNC(mach64_device::mach8_linedraw_r),m_vga), write16_delegate(FUNC(mach64_device::mach8_linedraw_w),m_vga)); - - m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(FUNC(mach64_device::mem_r),m_vga), write8_delegate(FUNC(mach64_device::mem_w),m_vga)); + m_isa->install_device(0x1ce, 0x1cf, read8_delegate(*m_vga, FUNC(mach64_device::ati_port_ext_r)), write8_delegate(*m_vga, FUNC(mach64_device::ati_port_ext_w))); + m_isa->install_device(0x2e8, 0x2ef, read8_delegate(*m_vga, FUNC(mach64_device::mach32_status_r)), write8_delegate(*m_vga, FUNC(mach64_device::ibm8514_htotal_w))); + m_isa->install_device(0x3b0, 0x3bf, read8_delegate(*m_vga, FUNC(mach64_device::port_03b0_r)), write8_delegate(*m_vga, FUNC(mach64_device::port_03b0_w))); + m_isa->install_device(0x3c0, 0x3cf, read8_delegate(*m_vga, FUNC(mach64_device::port_03c0_r)), write8_delegate(*m_vga, FUNC(mach64_device::port_03c0_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*m_vga, FUNC(mach64_device::port_03d0_r)), write8_delegate(*m_vga, FUNC(mach64_device::port_03d0_w))); + m_isa->install16_device(0x12e8, 0x12eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vtotal_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vtotal_w))); + m_isa->install16_device(0x12ec, 0x12ef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_config1_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach64_config1_w))); + m_isa->install16_device(0x16e8, 0x16eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vdisp_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vdisp_w))); + m_isa->install16_device(0x16ec, 0x16ef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_config2_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach64_config2_w))); + m_isa->install16_device(0x1ae8, 0x1aeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vsync_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_vsync_w))); + m_isa->install16_device(0x26e8, 0x26eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_htotal_r)), write16_delegate(*this)); + m_isa->install16_device(0x26ec, 0x26ef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_crt_pitch_w))); + m_isa->install16_device(0x2ee8, 0x2eeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_subcontrol_r)),write16_delegate(*this)); + m_isa->install16_device(0x42e8, 0x42eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_substatus_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_subcontrol_w))); + m_isa->install16_device(0x42ec, 0x42ef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_mem_boundary_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach32_mem_boundary_w))); + m_isa->install16_device(0x4ae8, 0x4aeb, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_advfunc_w))); + m_isa->install16_device(0x4aec, 0x4aef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_clksel_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_clksel_w))); + m_isa->install16_device(0x52e8, 0x52eb, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ec0_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ec0_w))); + m_isa->install16_device(0x52ec, 0x52ef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_scratch0_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_scratch0_w))); + m_isa->install16_device(0x56e8, 0x56eb, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ec1_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ec1_w))); + m_isa->install16_device(0x56ec, 0x56ef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_scratch0_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_scratch0_w))); + m_isa->install16_device(0x5ae8, 0x5aeb, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ec2_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ec2_w))); + m_isa->install16_device(0x5ee8, 0x5eeb, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ec3_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ec3_w))); + m_isa->install16_device(0x6eec, 0x6eef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ge_offset_l_w))); + m_isa->install16_device(0x72ec, 0x72ef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ge_offset_h_w))); + m_isa->install16_device(0x76ec, 0x76ef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ge_pitch_w))); + m_isa->install16_device(0x7aec, 0x7aef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach32_ge_ext_config_w))); + m_isa->install16_device(0x82e8, 0x82eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_currenty_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_currenty_w))); + m_isa->install16_device(0x86e8, 0x86eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_currentx_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_currentx_w))); + m_isa->install16_device(0x8ae8, 0x8aeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_desty_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_desty_w))); + m_isa->install16_device(0x8ee8, 0x8eeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_destx_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_destx_w))); + m_isa->install16_device(0x8eec, 0x8eef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ge_ext_config_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_patt_data_w))); + m_isa->install16_device(0x92e8, 0x92eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_line_error_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_line_error_w))); + m_isa->install16_device(0x96e8, 0x96eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_width_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_width_w))); + m_isa->install16_device(0x96ec, 0x96ef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_bresenham_count_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_bresenham_count_w))); + m_isa->install16_device(0x9ae8, 0x9aeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_gpstatus_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_cmd_w))); + m_isa->install16_device(0x9aec, 0x9aef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_ext_fifo_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_linedraw_index_w))); + m_isa->install16_device(0x9ee8, 0x9eeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_ssv_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_ssv_w))); + m_isa->install16_device(0xa2e8, 0xa2eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_bgcolour_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_bgcolour_w))); + m_isa->install16_device(0xa6e8, 0xa6eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_fgcolour_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_fgcolour_w))); + m_isa->install16_device(0xaae8, 0xaaeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_write_mask_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_write_mask_w))); + m_isa->install16_device(0xaee8, 0xaeeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_read_mask_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_read_mask_w))); + m_isa->install16_device(0xb6e8, 0xb6eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_backmix_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_backmix_w))); + m_isa->install16_device(0xbae8, 0xbaeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_foremix_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_foremix_w))); + m_isa->install16_device(0xbee8, 0xbeeb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_multifunc_r)), write16_delegate(*m_vga, FUNC(mach64_device::ibm8514_multifunc_w))); + m_isa->install16_device(0xcaec, 0xcaef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_scan_x_w))); + m_isa->install16_device(0xceec, 0xceef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_readonly_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_dp_config_w))); + m_isa->install16_device(0xe2e8, 0xe2eb, read16_delegate(*m_vga, FUNC(mach64_device::ibm8514_pixel_xfer_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_pixel_xfer_w))); + m_isa->install16_device(0xdaec, 0xdaef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_sourcex_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ext_leftscissor_w))); + m_isa->install16_device(0xdeec, 0xdeef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_sourcey_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_ext_topscissor_w))); + m_isa->install16_device(0xfaec, 0xfaef, read16_delegate(*m_vga, FUNC(mach64_device::mach32_chipid_r)), write16_delegate(*this)); + m_isa->install16_device(0xfeec, 0xfeef, read16_delegate(*m_vga, FUNC(mach64_device::mach8_linedraw_r)), write16_delegate(*m_vga, FUNC(mach64_device::mach8_linedraw_w))); + + m_isa->install_memory(0xa0000, 0xbffff, read8_delegate(*m_vga, FUNC(mach64_device::mem_r)), write8_delegate(*m_vga, FUNC(mach64_device::mem_w))); } //------------------------------------------------- diff --git a/src/devices/bus/isa/vga_ati.h b/src/devices/bus/isa/vga_ati.h index e626f8a45ab..f05b2fdae2d 100644 --- a/src/devices/bus/isa/vga_ati.h +++ b/src/devices/bus/isa/vga_ati.h @@ -42,8 +42,8 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - ati_vga_device *m_vga; - mach8_device *m_8514; + required_device<ati_vga_device> m_vga; + required_device<mach8_device> m_8514; }; class isa16_vga_gfxultrapro_device : @@ -65,8 +65,8 @@ protected: virtual void device_add_mconfig(machine_config &config) override; virtual const tiny_rom_entry *device_rom_region() const override; - private: - mach32_device *m_vga; +private: + required_device<mach32_device> m_vga; }; class isa16_vga_mach64_device : @@ -89,7 +89,7 @@ protected: virtual const tiny_rom_entry *device_rom_region() const override; private: - mach64_device *m_vga; + required_device<mach64_device> m_vga; }; diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp index 57dec00af89..8670610ea40 100644 --- a/src/devices/bus/isa/wdxt_gen.cpp +++ b/src/devices/bus/isa/wdxt_gen.cpp @@ -200,7 +200,7 @@ void wdxt_gen_device::device_start() { set_isa_device(); m_isa->install_rom(this, 0xc8000, 0xc9fff, "hdc", "hdc"); - m_isa->install_device(0x0320, 0x0323, READ8_DEVICE_DELEGATE(m_host, wd11c00_17_device, io_r), WRITE8_DEVICE_DELEGATE(m_host, wd11c00_17_device, io_w)); + m_isa->install_device(0x0320, 0x0323, read8_delegate(*m_host, FUNC(wd11c00_17_device::io_r)), write8_delegate(*m_host, FUNC(wd11c00_17_device::io_w))); m_isa->set_dma_channel(3, this, false); } diff --git a/src/devices/bus/isa/xtide.cpp b/src/devices/bus/isa/xtide.cpp index 1388a7d174b..2a7898fc903 100644 --- a/src/devices/bus/isa/xtide.cpp +++ b/src/devices/bus/isa/xtide.cpp @@ -323,8 +323,8 @@ void xtide_device::device_reset() int io_address = ((ioport("IO_ADDRESS")->read() & 0x0F) * 0x20) + 0x200; m_irq_number = (ioport("IRQ")->read() & 0x07); - m_isa->install_memory(base_address, base_address + 0x1fff, read8_delegate(FUNC(eeprom_parallel_28xx_device::read), &(*m_eeprom)), write8_delegate(FUNC(eeprom_parallel_28xx_device::write), &(*m_eeprom))); - m_isa->install_device(io_address, io_address + 0xf, read8_delegate(FUNC(xtide_device::read), this), write8_delegate(FUNC(xtide_device::write), this)); + m_isa->install_memory(base_address, base_address + 0x1fff, read8_delegate(*m_eeprom, FUNC(eeprom_parallel_28xx_device::read)), write8_delegate(*m_eeprom, FUNC(eeprom_parallel_28xx_device::write))); + m_isa->install_device(io_address, io_address + 0xf, read8_delegate(*this, FUNC(xtide_device::read)), write8_delegate(*this, FUNC(xtide_device::write))); //logerror("xtide_device::device_reset(), bios_base=0x%5X to 0x%5X, I/O=0x%3X, IRQ=%d\n",base_address,base_address + (16*1024) -1 ,io_address,irq); } diff --git a/src/devices/bus/lpci/i82371sb.cpp b/src/devices/bus/lpci/i82371sb.cpp index 738c725f530..5e2160088ff 100644 --- a/src/devices/bus/lpci/i82371sb.cpp +++ b/src/devices/bus/lpci/i82371sb.cpp @@ -163,8 +163,8 @@ void i82371sb_device::map_busmaster_dma() { if (m_base != 0) { - spaceio->install_readwrite_handler(m_base, m_base + 0x7, read32_delegate(FUNC(bus_master_ide_controller_device::bmdma_r), &(*m_ide)), write32_delegate(FUNC(bus_master_ide_controller_device::bmdma_w), &(*m_ide)), 0xffffffff); - spaceio->install_readwrite_handler(m_base + 0x8, m_base + 0xf, read32_delegate(FUNC(bus_master_ide_controller_device::bmdma_r), &(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::bmdma_w), &(*m_ide2)), 0xffffffff); + spaceio->install_readwrite_handler(m_base, m_base + 0x7, read32_delegate(*m_ide, FUNC(bus_master_ide_controller_device::bmdma_r)), write32_delegate(*m_ide, FUNC(bus_master_ide_controller_device::bmdma_w)), 0xffffffff); + spaceio->install_readwrite_handler(m_base + 0x8, m_base + 0xf, read32_delegate(*m_ide2, FUNC(bus_master_ide_controller_device::bmdma_r)), write32_delegate(*m_ide2, FUNC(bus_master_ide_controller_device::bmdma_w)), 0xffffffff); } } @@ -253,7 +253,7 @@ void i82371sb_device::device_start() southbridge_device::device_start(); m_ide_io_ports_enabled = false; - spaceio.install_readwrite_handler(0x00b0, 0x00b3, read8_delegate(FUNC(i82371sb_device::read_apmcapms), this), write8_delegate(FUNC(i82371sb_device::write_apmcapms), this), 0xffff0000); + spaceio.install_readwrite_handler(0x00b0, 0x00b3, read8_delegate(*this, FUNC(i82371sb_device::read_apmcapms)), write8_delegate(*this, FUNC(i82371sb_device::write_apmcapms)), 0xffff0000); m_smi_callback.resolve_safe(); m_boot_state_hook.resolve_safe(); // setup save states diff --git a/src/devices/bus/lpci/southbridge.cpp b/src/devices/bus/lpci/southbridge.cpp index c4ce2257ed1..5813fed47b5 100644 --- a/src/devices/bus/lpci/southbridge.cpp +++ b/src/devices/bus/lpci/southbridge.cpp @@ -219,18 +219,18 @@ void southbridge_device::device_start() { spaceio = &m_maincpu->space(AS_IO); - spaceio->install_readwrite_handler(0x0000, 0x001f, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma8237_1)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma8237_1)), 0xffffffff); - spaceio->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic8259_master)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic8259_master)), 0xffffffff); - spaceio->install_readwrite_handler(0x0040, 0x005f, read8sm_delegate(FUNC(pit8254_device::read), &(*m_pit8254)), write8sm_delegate(FUNC(pit8254_device::write), &(*m_pit8254)), 0xffffffff); - spaceio->install_readwrite_handler(0x0060, 0x0063, read8_delegate(FUNC(southbridge_device::at_portb_r), this), write8_delegate(FUNC(southbridge_device::at_portb_w), this), 0x0000ff00); - spaceio->install_readwrite_handler(0x0080, 0x009f, read8_delegate(FUNC(southbridge_device::at_page8_r), this), write8_delegate(FUNC(southbridge_device::at_page8_w), this), 0xffffffff); - spaceio->install_readwrite_handler(0x00a0, 0x00bf, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic8259_slave)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic8259_slave)), 0xffffffff); - spaceio->install_readwrite_handler(0x00c0, 0x00df, read8_delegate(FUNC(southbridge_device::at_dma8237_2_r), this), write8_delegate(FUNC(southbridge_device::at_dma8237_2_w), this), 0xffffffff); - spaceio->install_readwrite_handler(0x0170, 0x0177, read32_delegate(FUNC(southbridge_device::ide2_read32_cs0_r), this), write32_delegate(FUNC(southbridge_device::ide2_write32_cs0_w), this), 0xffffffff); - spaceio->install_readwrite_handler(0x01f0, 0x01f7, read32_delegate(FUNC(southbridge_device::ide1_read32_cs0_r), this), write32_delegate(FUNC(southbridge_device::ide1_write32_cs0_w), this), 0xffffffff); - spaceio->install_readwrite_handler(0x0374, 0x0377, read8_delegate(FUNC(southbridge_device::ide2_read_cs1_r), this), write8_delegate(FUNC(southbridge_device::ide2_write_cs1_w), this), 0xff0000); - spaceio->install_readwrite_handler(0x03f4, 0x03f7, read8_delegate(FUNC(southbridge_device::ide1_read_cs1_r), this), write8_delegate(FUNC(southbridge_device::ide1_write_cs1_w), this), 0xff0000); - spaceio->install_readwrite_handler(0x04d0, 0x04d3, read8_delegate(FUNC(southbridge_device::eisa_irq_read), this), write8_delegate(FUNC(southbridge_device::eisa_irq_write), this), 0x0000ffff); + spaceio->install_readwrite_handler(0x0000, 0x001f, read8sm_delegate(*m_dma8237_1, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma8237_1, FUNC(am9517a_device::write)), 0xffffffff); + spaceio->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(*m_pic8259_master, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic8259_master, FUNC(pic8259_device::write)), 0xffffffff); + spaceio->install_readwrite_handler(0x0040, 0x005f, read8sm_delegate(*m_pit8254, FUNC(pit8254_device::read)), write8sm_delegate(*m_pit8254, FUNC(pit8254_device::write)), 0xffffffff); + spaceio->install_readwrite_handler(0x0060, 0x0063, read8_delegate(*this, FUNC(southbridge_device::at_portb_r)), write8_delegate(*this, FUNC(southbridge_device::at_portb_w)), 0x0000ff00); + spaceio->install_readwrite_handler(0x0080, 0x009f, read8_delegate(*this, FUNC(southbridge_device::at_page8_r)), write8_delegate(*this, FUNC(southbridge_device::at_page8_w)), 0xffffffff); + spaceio->install_readwrite_handler(0x00a0, 0x00bf, read8sm_delegate(*m_pic8259_slave, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic8259_slave, FUNC(pic8259_device::write)), 0xffffffff); + spaceio->install_readwrite_handler(0x00c0, 0x00df, read8_delegate(*this, FUNC(southbridge_device::at_dma8237_2_r)), write8_delegate(*this, FUNC(southbridge_device::at_dma8237_2_w)), 0xffffffff); + spaceio->install_readwrite_handler(0x0170, 0x0177, read32_delegate(*this, FUNC(southbridge_device::ide2_read32_cs0_r)), write32_delegate(*this, FUNC(southbridge_device::ide2_write32_cs0_w)), 0xffffffff); + spaceio->install_readwrite_handler(0x01f0, 0x01f7, read32_delegate(*this, FUNC(southbridge_device::ide1_read32_cs0_r)), write32_delegate(*this, FUNC(southbridge_device::ide1_write32_cs0_w)), 0xffffffff); + spaceio->install_readwrite_handler(0x0374, 0x0377, read8_delegate(*this, FUNC(southbridge_device::ide2_read_cs1_r)), write8_delegate(*this, FUNC(southbridge_device::ide2_write_cs1_w)), 0xff0000); + spaceio->install_readwrite_handler(0x03f4, 0x03f7, read8_delegate(*this, FUNC(southbridge_device::ide1_read_cs1_r)), write8_delegate(*this, FUNC(southbridge_device::ide1_write_cs1_w)), 0xff0000); + spaceio->install_readwrite_handler(0x04d0, 0x04d3, read8_delegate(*this, FUNC(southbridge_device::eisa_irq_read)), write8_delegate(*this, FUNC(southbridge_device::eisa_irq_write)), 0x0000ffff); spaceio->nop_readwrite(0x00e0, 0x00ef); } @@ -560,9 +560,9 @@ void southbridge_extended_device::device_start() southbridge_device::device_start(); - spaceio.install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(FUNC(at_keyboard_controller_device::data_r), &(*m_keybc)), write8smo_delegate(FUNC(at_keyboard_controller_device::data_w), &(*m_keybc)), 0x000000ff); - spaceio.install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(FUNC(at_keyboard_controller_device::status_r), &(*m_keybc)), write8smo_delegate(FUNC(at_keyboard_controller_device::command_w), &(*m_keybc)), 0xffffffff); - spaceio.install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(FUNC(ds12885_device::read), &(*m_ds12885)), write8sm_delegate(FUNC(ds12885_device::write), &(*m_ds12885)), 0xffffffff); + spaceio.install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(*m_keybc, FUNC(at_keyboard_controller_device::data_r)), write8smo_delegate(*m_keybc, FUNC(at_keyboard_controller_device::data_w)), 0x000000ff); + spaceio.install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(*m_keybc, FUNC(at_keyboard_controller_device::status_r)), write8smo_delegate(*m_keybc, FUNC(at_keyboard_controller_device::command_w)), 0xffffffff); + spaceio.install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(*m_ds12885, FUNC(ds12885_device::read)), write8sm_delegate(*m_ds12885, FUNC(ds12885_device::write)), 0xffffffff); } //------------------------------------------------- diff --git a/src/devices/bus/macpds/hyperdrive.cpp b/src/devices/bus/macpds/hyperdrive.cpp index 0c64d077765..d880ed9ec17 100644 --- a/src/devices/bus/macpds/hyperdrive.cpp +++ b/src/devices/bus/macpds/hyperdrive.cpp @@ -159,7 +159,7 @@ void macpds_hyperdrive_device::device_start() install_rom(this, HYPERDRIVE_ROM_REGION, 0xf80000); // WD200x registers - m_macpds->install_device(0xfc0000, 0xfc000f, read16_delegate(FUNC(macpds_hyperdrive_device::hyperdrive_r), this), write16_delegate(FUNC(macpds_hyperdrive_device::hyperdrive_w), this)); + m_macpds->install_device(0xfc0000, 0xfc000f, read16_delegate(*this, FUNC(macpds_hyperdrive_device::hyperdrive_r)), write16_delegate(*this, FUNC(macpds_hyperdrive_device::hyperdrive_w))); } //------------------------------------------------- diff --git a/src/devices/bus/macpds/pds_tpdfpd.cpp b/src/devices/bus/macpds/pds_tpdfpd.cpp index 1a3f2671e5c..a6d6a0216f0 100644 --- a/src/devices/bus/macpds/pds_tpdfpd.cpp +++ b/src/devices/bus/macpds/pds_tpdfpd.cpp @@ -112,8 +112,8 @@ void macpds_sedisplay_device::device_start() static const char bankname[] = { "radpds_ram" }; m_macpds->install_bank(0xc40000, 0xc40000+VRAM_SIZE-1, bankname, m_vram.get()); - m_macpds->install_device(0x770000, 0x77000f, read16_delegate(FUNC(macpds_sedisplay_device::ramdac_r), this), write16_delegate(FUNC(macpds_sedisplay_device::ramdac_w), this)); - m_macpds->install_device(0xc10000, 0xc2ffff, read16_delegate(FUNC(macpds_sedisplay_device::sedisplay_r), this), write16_delegate(FUNC(macpds_sedisplay_device::sedisplay_w), this)); + m_macpds->install_device(0x770000, 0x77000f, read16_delegate(*this, FUNC(macpds_sedisplay_device::ramdac_r)), write16_delegate(*this, FUNC(macpds_sedisplay_device::ramdac_w))); + m_macpds->install_device(0xc10000, 0xc2ffff, read16_delegate(*this, FUNC(macpds_sedisplay_device::sedisplay_r)), write16_delegate(*this, FUNC(macpds_sedisplay_device::sedisplay_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(879, 0), 0); diff --git a/src/devices/bus/msx_cart/arc.cpp b/src/devices/bus/msx_cart/arc.cpp index 406ec8f4de3..6f5af572bd1 100644 --- a/src/devices/bus/msx_cart/arc.cpp +++ b/src/devices/bus/msx_cart/arc.cpp @@ -18,8 +18,8 @@ msx_cart_arc_device::msx_cart_arc_device(const machine_config &mconfig, const ch void msx_cart_arc_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0x7f, 0x7f, write8smo_delegate(FUNC(msx_cart_arc_device::io_7f_w), this)); - io_space().install_read_handler(0x7f, 0x7f, read8smo_delegate(FUNC(msx_cart_arc_device::io_7f_r), this)); + io_space().install_write_handler(0x7f, 0x7f, write8smo_delegate(*this, FUNC(msx_cart_arc_device::io_7f_w))); + io_space().install_read_handler(0x7f, 0x7f, read8smo_delegate(*this, FUNC(msx_cart_arc_device::io_7f_r))); } diff --git a/src/devices/bus/msx_cart/bm_012.cpp b/src/devices/bus/msx_cart/bm_012.cpp index 158de522e4d..020348dd843 100644 --- a/src/devices/bus/msx_cart/bm_012.cpp +++ b/src/devices/bus/msx_cart/bm_012.cpp @@ -94,8 +94,8 @@ const tiny_rom_entry *msx_cart_bm_012_device::device_rom_region() const void msx_cart_bm_012_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0x70, 0x73, write8sm_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target())); - io_space().install_read_handler(0x70, 0x73, read8sm_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target())); + io_space().install_write_handler(0x70, 0x73, write8sm_delegate(*m_bm012_pio, FUNC(z80pio_device::write_alt))); + io_space().install_read_handler(0x70, 0x73, read8sm_delegate(*m_bm012_pio, FUNC(z80pio_device::read_alt))); } diff --git a/src/devices/bus/msx_cart/fmpac.cpp b/src/devices/bus/msx_cart/fmpac.cpp index a5229a6c61e..75af22353dc 100644 --- a/src/devices/bus/msx_cart/fmpac.cpp +++ b/src/devices/bus/msx_cart/fmpac.cpp @@ -47,7 +47,7 @@ void msx_cart_fmpac_device::device_start() save_item(NAME(m_7ff6)); // Install IO read/write handlers - io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(FUNC(msx_cart_fmpac_device::write_ym2413), this)); + io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(*this, FUNC(msx_cart_fmpac_device::write_ym2413))); } diff --git a/src/devices/bus/msx_cart/konami.cpp b/src/devices/bus/msx_cart/konami.cpp index f5ac42be362..f2caa5f6940 100644 --- a/src/devices/bus/msx_cart/konami.cpp +++ b/src/devices/bus/msx_cart/konami.cpp @@ -903,9 +903,9 @@ void msx_cart_keyboard_master_device::device_add_mconfig(machine_config &config) void msx_cart_keyboard_master_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0x00, 0x00, write8smo_delegate(FUNC(vlm5030_device::data_w), m_vlm5030.target())); - io_space().install_write_handler(0x20, 0x20, write8smo_delegate(FUNC(msx_cart_keyboard_master_device::io_20_w), this)); - io_space().install_read_handler(0x00, 0x00, read8smo_delegate(FUNC(msx_cart_keyboard_master_device::io_00_r), this)); + io_space().install_write_handler(0x00, 0x00, write8smo_delegate(*m_vlm5030, FUNC(vlm5030_device::data_w))); + io_space().install_write_handler(0x20, 0x20, write8smo_delegate(*this, FUNC(msx_cart_keyboard_master_device::io_20_w))); + io_space().install_read_handler(0x00, 0x00, read8smo_delegate(*this, FUNC(msx_cart_keyboard_master_device::io_00_r))); } diff --git a/src/devices/bus/msx_cart/korean.cpp b/src/devices/bus/msx_cart/korean.cpp index 1906a5eb51b..e12f15bd43d 100644 --- a/src/devices/bus/msx_cart/korean.cpp +++ b/src/devices/bus/msx_cart/korean.cpp @@ -117,7 +117,7 @@ void msx_cart_korean_90in1_device::device_start() save_item(NAME(m_selected_bank)); // Install IO read/write handlers - io_space().install_write_handler(0x77, 0x77, write8smo_delegate(FUNC(msx_cart_korean_90in1_device::banking), this)); + io_space().install_write_handler(0x77, 0x77, write8smo_delegate(*this, FUNC(msx_cart_korean_90in1_device::banking))); } diff --git a/src/devices/bus/msx_cart/moonsound.cpp b/src/devices/bus/msx_cart/moonsound.cpp index afdb3c039eb..74e13d4af90 100644 --- a/src/devices/bus/msx_cart/moonsound.cpp +++ b/src/devices/bus/msx_cart/moonsound.cpp @@ -71,9 +71,9 @@ const tiny_rom_entry *msx_cart_moonsound_device::device_rom_region() const void msx_cart_moonsound_device::device_start() { // Install IO read/write handlers - io_space().install_readwrite_handler(0x7e, 0x7f, read8sm_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_pcm), this), write8sm_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_pcm), this)); - io_space().install_readwrite_handler(0xc4, 0xc7, read8sm_delegate(FUNC(msx_cart_moonsound_device::read_ymf278b_fm), this), write8sm_delegate(FUNC(msx_cart_moonsound_device::write_ymf278b_fm), this)); - io_space().install_read_handler(0xc0, 0xc0, read8smo_delegate(FUNC(msx_cart_moonsound_device::read_c0), this)); + io_space().install_readwrite_handler(0x7e, 0x7f, read8sm_delegate(*this, FUNC(msx_cart_moonsound_device::read_ymf278b_pcm)), write8sm_delegate(*this, FUNC(msx_cart_moonsound_device::write_ymf278b_pcm))); + io_space().install_readwrite_handler(0xc4, 0xc7, read8sm_delegate(*this, FUNC(msx_cart_moonsound_device::read_ymf278b_fm)), write8sm_delegate(*this, FUNC(msx_cart_moonsound_device::write_ymf278b_fm))); + io_space().install_read_handler(0xc0, 0xc0, read8smo_delegate(*this, FUNC(msx_cart_moonsound_device::read_c0))); } diff --git a/src/devices/bus/msx_cart/msx_audio.cpp b/src/devices/bus/msx_cart/msx_audio.cpp index 679c035b014..924ae60e40a 100644 --- a/src/devices/bus/msx_cart/msx_audio.cpp +++ b/src/devices/bus/msx_cart/msx_audio.cpp @@ -96,8 +96,8 @@ void msx_cart_msx_audio_hxmu900_device::device_add_mconfig(machine_config &confi void msx_cart_msx_audio_hxmu900_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target())); - io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target())); + io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(*m_y8950, FUNC(y8950_device::write))); + io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(*m_y8950, FUNC(y8950_device::read))); } @@ -200,10 +200,10 @@ WRITE_LINE_MEMBER(msx_cart_msx_audio_nms1205_device::midi_in) void msx_cart_msx_audio_nms1205_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(FUNC(y8950_device::write), m_y8950.target())); - io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(FUNC(y8950_device::read), m_y8950.target())); - io_space().install_write_handler(0x00, 0x01, write8sm_delegate(FUNC(acia6850_device::write), m_acia6850.target())); - io_space().install_read_handler(0x04, 0x05, read8sm_delegate(FUNC(acia6850_device::read), m_acia6850.target())); + io_space().install_write_handler(0xc0, 0xc1, write8sm_delegate(*m_y8950, FUNC(y8950_device::write))); + io_space().install_read_handler(0xc0, 0xc1, read8sm_delegate(*m_y8950, FUNC(y8950_device::read))); + io_space().install_write_handler(0x00, 0x01, write8sm_delegate(*m_acia6850, FUNC(acia6850_device::write))); + io_space().install_read_handler(0x04, 0x05, read8sm_delegate(*m_acia6850, FUNC(acia6850_device::read))); } @@ -287,8 +287,8 @@ const tiny_rom_entry *msx_cart_msx_audio_fsca1_device::device_rom_region() const void msx_cart_msx_audio_fsca1_device::device_start() { // Install IO read/write handlers - io_space().install_write_handler(0xc0, 0xc3, write8sm_delegate(FUNC(msx_cart_msx_audio_fsca1_device::write_y8950), this)); - io_space().install_read_handler(0xc0, 0xc3, read8sm_delegate(FUNC(msx_cart_msx_audio_fsca1_device::read_y8950), this)); + io_space().install_write_handler(0xc0, 0xc3, write8sm_delegate(*this, FUNC(msx_cart_msx_audio_fsca1_device::write_y8950))); + io_space().install_read_handler(0xc0, 0xc3, read8sm_delegate(*this, FUNC(msx_cart_msx_audio_fsca1_device::read_y8950))); } diff --git a/src/devices/bus/msx_cart/superloderunner.cpp b/src/devices/bus/msx_cart/superloderunner.cpp index b846a935953..168f9187f8d 100644 --- a/src/devices/bus/msx_cart/superloderunner.cpp +++ b/src/devices/bus/msx_cart/superloderunner.cpp @@ -20,7 +20,7 @@ void msx_cart_superloderunner_device::device_start() save_item(NAME(m_selected_bank)); // Install evil memory write handler - memory_space().install_write_handler(0x0000, 0x0000, write8smo_delegate(FUNC(msx_cart_superloderunner_device::banking), this)); + memory_space().install_write_handler(0x0000, 0x0000, write8smo_delegate(*this, FUNC(msx_cart_superloderunner_device::banking))); } diff --git a/src/devices/bus/msx_cart/yamaha.cpp b/src/devices/bus/msx_cart/yamaha.cpp index c7a33a7e4c7..472b8680b12 100644 --- a/src/devices/bus/msx_cart/yamaha.cpp +++ b/src/devices/bus/msx_cart/yamaha.cpp @@ -106,7 +106,7 @@ void msx_cart_sfg_device::device_start() // This should probably moved up in the bus/slot hierarchy for the msx driver cpu_device *maincpu = machine().device<cpu_device>("maincpu"); - maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(msx_cart_sfg_device::irq_callback),this)); + maincpu->set_irq_acknowledge_callback(FUNC(msx_cart_sfg_device::irq_callback)); } diff --git a/src/devices/bus/msx_slot/disk.cpp b/src/devices/bus/msx_slot/disk.cpp index 309b7f2d80f..78a15b7d841 100644 --- a/src/devices/bus/msx_slot/disk.cpp +++ b/src/devices/bus/msx_slot/disk.cpp @@ -533,8 +533,8 @@ void msx_slot_disk5_device::device_start() save_item(NAME(m_control)); // Install IO read/write handlers - io_space().install_write_handler(0xd0, 0xd4, write8sm_delegate(FUNC(msx_slot_disk5_device::io_write), this)); - io_space().install_read_handler(0xd0, 0xd4, read8sm_delegate(FUNC(msx_slot_disk5_device::io_read), this)); + io_space().install_write_handler(0xd0, 0xd4, write8sm_delegate(*this, FUNC(msx_slot_disk5_device::io_write))); + io_space().install_read_handler(0xd0, 0xd4, read8sm_delegate(*this, FUNC(msx_slot_disk5_device::io_read))); } diff --git a/src/devices/bus/msx_slot/music.cpp b/src/devices/bus/msx_slot/music.cpp index 0e3ae00b0f3..1c5daf86b67 100644 --- a/src/devices/bus/msx_slot/music.cpp +++ b/src/devices/bus/msx_slot/music.cpp @@ -32,7 +32,7 @@ void msx_slot_music_device::device_start() } // Install IO read/write handlers - io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(FUNC(msx_slot_music_device::write_ym2413), this)); + io_space().install_write_handler(0x7c, 0x7d, write8sm_delegate(*this, FUNC(msx_slot_music_device::write_ym2413))); } diff --git a/src/devices/bus/msx_slot/ram_mm.cpp b/src/devices/bus/msx_slot/ram_mm.cpp index ade67f6eb66..84498f9afe1 100644 --- a/src/devices/bus/msx_slot/ram_mm.cpp +++ b/src/devices/bus/msx_slot/ram_mm.cpp @@ -41,8 +41,8 @@ void msx_slot_ram_mm_device::device_start() save_item(NAME(m_bank_selected)); // Install IO read/write handlers - io_space().install_read_handler(0xFC, 0xFF, read8sm_delegate(FUNC(msx_slot_ram_mm_device::read_mapper_bank), this)); - io_space().install_write_handler(0xFC, 0xFF, write8sm_delegate(FUNC(msx_slot_ram_mm_device::write_mapper_bank), this)); + io_space().install_read_handler(0xFC, 0xFF, read8sm_delegate(*this, FUNC(msx_slot_ram_mm_device::read_mapper_bank))); + io_space().install_write_handler(0xFC, 0xFF, write8sm_delegate(*this, FUNC(msx_slot_ram_mm_device::write_mapper_bank))); } void msx_slot_ram_mm_device::device_post_load() diff --git a/src/devices/bus/mtx/sdx.cpp b/src/devices/bus/mtx/sdx.cpp index d34e73e7605..6f3a9d33417 100644 --- a/src/devices/bus/mtx/sdx.cpp +++ b/src/devices/bus/mtx/sdx.cpp @@ -163,7 +163,7 @@ void mtx_sdxcpm_device::device_add_mconfig(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mtx_sdxcpm_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(mtx_sdxcpm_device::crtc_update_row)); } @@ -239,8 +239,8 @@ void mtx_sdxbas_device::device_reset() machine().root_device().membank("rommap_bank1")->configure_entry(3, m_sdx_rom->base()); /* SDX FDC */ - io_space().install_readwrite_handler(0x10, 0x13, read8sm_delegate(FUNC(mb8877_device::read), m_fdc.target()), write8sm_delegate(FUNC(mb8877_device::write), m_fdc.target())); - io_space().install_readwrite_handler(0x14, 0x14, read8_delegate(FUNC(mtx_sdx_device::sdx_status_r), this), write8_delegate(FUNC(mtx_sdx_device::sdx_control_w), this)); + io_space().install_readwrite_handler(0x10, 0x13, read8sm_delegate(*m_fdc, FUNC(mb8877_device::read)), write8sm_delegate(*m_fdc, FUNC(mb8877_device::write))); + io_space().install_readwrite_handler(0x14, 0x14, read8_delegate(*this, FUNC(mtx_sdx_device::sdx_status_r)), write8_delegate(*this, FUNC(mtx_sdx_device::sdx_control_w))); } void mtx_sdxcpm_device::device_reset() @@ -248,13 +248,13 @@ void mtx_sdxcpm_device::device_reset() machine().root_device().membank("rommap_bank1")->configure_entry(3, m_sdx_rom->base()); /* SDX FDC */ - io_space().install_readwrite_handler(0x10, 0x13, read8sm_delegate(FUNC(mb8877_device::read), m_fdc.target()), write8sm_delegate(FUNC(mb8877_device::write), m_fdc.target())); - io_space().install_readwrite_handler(0x14, 0x14, read8_delegate(FUNC(mtx_sdx_device::sdx_status_r), this), write8_delegate(FUNC(mtx_sdx_device::sdx_control_w), this)); + io_space().install_readwrite_handler(0x10, 0x13, read8sm_delegate(*m_fdc, FUNC(mb8877_device::read)), write8sm_delegate(*m_fdc, FUNC(mb8877_device::write))); + io_space().install_readwrite_handler(0x14, 0x14, read8_delegate(*this, FUNC(mtx_sdx_device::sdx_status_r)), write8_delegate(*this, FUNC(mtx_sdx_device::sdx_control_w))); /* 80 column */ - io_space().install_readwrite_handler(0x30, 0x33, read8_delegate(FUNC(mtx_sdxcpm_device::mtx_80col_r), this), write8_delegate(FUNC(mtx_sdxcpm_device::mtx_80col_w), this)); - io_space().install_readwrite_handler(0x38, 0x38, read8smo_delegate(FUNC(mc6845_device::status_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::address_w), m_crtc.target())); - io_space().install_readwrite_handler(0x39, 0x39, read8smo_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::register_w), m_crtc.target())); + io_space().install_readwrite_handler(0x30, 0x33, read8_delegate(*this, FUNC(mtx_sdxcpm_device::mtx_80col_r)), write8_delegate(*this, FUNC(mtx_sdxcpm_device::mtx_80col_w))); + io_space().install_readwrite_handler(0x38, 0x38, read8smo_delegate(*m_crtc, FUNC(mc6845_device::status_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + io_space().install_readwrite_handler(0x39, 0x39, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); memset(m_80col_char_ram, 0, sizeof(m_80col_char_ram)); memset(m_80col_attr_ram, 0, sizeof(m_80col_attr_ram)); diff --git a/src/devices/bus/nasbus/avc.cpp b/src/devices/bus/nasbus/avc.cpp index 4aacc354567..e25e6164f75 100644 --- a/src/devices/bus/nasbus/avc.cpp +++ b/src/devices/bus/nasbus/avc.cpp @@ -34,7 +34,7 @@ void nascom_avc_device::device_add_mconfig(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(6); - m_crtc->set_update_row_callback(FUNC(nascom_avc_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(nascom_avc_device::crtc_update_row)); } @@ -78,9 +78,9 @@ void nascom_avc_device::device_start() void nascom_avc_device::device_reset() { - io_space().install_write_handler(0xb0, 0xb0, write8smo_delegate(FUNC(mc6845_device::address_w), m_crtc.target())); - io_space().install_readwrite_handler(0xb1, 0xb1, read8smo_delegate(FUNC(mc6845_device::register_r), m_crtc.target()), write8smo_delegate(FUNC(mc6845_device::register_w), m_crtc.target())); - io_space().install_write_handler(0xb2, 0xb2, write8_delegate(FUNC(nascom_avc_device::control_w), this)); + io_space().install_write_handler(0xb0, 0xb0, write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + io_space().install_readwrite_handler(0xb1, 0xb1, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); + io_space().install_write_handler(0xb2, 0xb2, write8_delegate(*this, FUNC(nascom_avc_device::control_w))); } @@ -132,7 +132,7 @@ WRITE8_MEMBER( nascom_avc_device::control_w ) if (((m_control & 0x07) == 0) && (data & 0x07)) { m_nasbus->ram_disable_w(0); - program_space().install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(nascom_avc_device::vram_r), this), write8_delegate(FUNC(nascom_avc_device::vram_w), this)); + program_space().install_readwrite_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(nascom_avc_device::vram_r)), write8_delegate(*this, FUNC(nascom_avc_device::vram_w))); } else if ((data & 0x07) == 0) { diff --git a/src/devices/bus/nasbus/floppy.cpp b/src/devices/bus/nasbus/floppy.cpp index 0f19c846bd0..4b57d7ee0aa 100644 --- a/src/devices/bus/nasbus/floppy.cpp +++ b/src/devices/bus/nasbus/floppy.cpp @@ -89,9 +89,9 @@ void nascom_fdc_device::device_start() void nascom_fdc_device::device_reset() { - io_space().install_readwrite_handler(0xe0, 0xe3, read8sm_delegate(FUNC(fd1793_device::read), m_fdc.target()), write8sm_delegate(FUNC(fd1793_device::write), m_fdc.target())); - io_space().install_readwrite_handler(0xe4, 0xe4, read8_delegate(FUNC(nascom_fdc_device::select_r), this), write8_delegate(FUNC(nascom_fdc_device::select_w), this)); - io_space().install_read_handler(0xe5, 0xe5, read8_delegate(FUNC(nascom_fdc_device::status_r), this)); + io_space().install_readwrite_handler(0xe0, 0xe3, read8sm_delegate(*m_fdc, FUNC(fd1793_device::read)), write8sm_delegate(*m_fdc, FUNC(fd1793_device::write))); + io_space().install_readwrite_handler(0xe4, 0xe4, read8_delegate(*this, FUNC(nascom_fdc_device::select_r)), write8_delegate(*this, FUNC(nascom_fdc_device::select_w))); + io_space().install_read_handler(0xe5, 0xe5, read8_delegate(*this, FUNC(nascom_fdc_device::status_r))); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/bootbug.cpp b/src/devices/bus/nubus/bootbug.cpp index 24763b64dc2..427d35b33b5 100644 --- a/src/devices/bus/nubus/bootbug.cpp +++ b/src/devices/bus/nubus/bootbug.cpp @@ -102,7 +102,7 @@ void nubus_bootbug_device::device_start() slotspace = get_slotspace(); - nubus().install_device(slotspace, slotspace+0xff, read32_delegate(FUNC(nubus_bootbug_device::dev_r), this), write32_delegate(FUNC(nubus_bootbug_device::dev_w), this)); + nubus().install_device(slotspace, slotspace+0xff, read32_delegate(*this, FUNC(nubus_bootbug_device::dev_r)), write32_delegate(*this, FUNC(nubus_bootbug_device::dev_w))); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_48gc.cpp b/src/devices/bus/nubus/nubus_48gc.cpp index 86f4fca21ec..f54c98ff3f1 100644 --- a/src/devices/bus/nubus/nubus_48gc.cpp +++ b/src/devices/bus/nubus/nubus_48gc.cpp @@ -109,7 +109,7 @@ void jmfb_device::device_start() m_vram.resize(VRAM_SIZE); install_bank(slotspace, slotspace+VRAM_SIZE-1, "bank_48gc", &m_vram[0]); - nubus().install_device(slotspace+0x200000, slotspace+0x2003ff, read32_delegate(FUNC(jmfb_device::mac_48gc_r), this), write32_delegate(FUNC(jmfb_device::mac_48gc_w), this)); + nubus().install_device(slotspace+0x200000, slotspace+0x2003ff, read32_delegate(*this, FUNC(jmfb_device::mac_48gc_r)), write32_delegate(*this, FUNC(jmfb_device::mac_48gc_w))); m_timer = timer_alloc(0, nullptr); m_screen = nullptr; // can we look this up now? diff --git a/src/devices/bus/nubus/nubus_asntmc3b.cpp b/src/devices/bus/nubus/nubus_asntmc3b.cpp index f6c0135af5f..2da81f791db 100644 --- a/src/devices/bus/nubus/nubus_asntmc3b.cpp +++ b/src/devices/bus/nubus/nubus_asntmc3b.cpp @@ -111,10 +111,10 @@ void nubus_mac8390_device::device_start() // TODO: move 24-bit mirroring down into nubus.c uint32_t ofs_24bit = slotno()<<20; - nubus().install_device(slotspace+0xd0000, slotspace+0xdffff, read8_delegate(FUNC(nubus_mac8390_device::asntm3b_ram_r), this), write8_delegate(FUNC(nubus_mac8390_device::asntm3b_ram_w), this)); - nubus().install_device(slotspace+0xe0000, slotspace+0xe003f, read32_delegate(FUNC(nubus_mac8390_device::en_r), this), write32_delegate(FUNC(nubus_mac8390_device::en_w), this)); - nubus().install_device(slotspace+0xd0000+ofs_24bit, slotspace+0xdffff+ofs_24bit, read8_delegate(FUNC(nubus_mac8390_device::asntm3b_ram_r), this), write8_delegate(FUNC(nubus_mac8390_device::asntm3b_ram_w), this)); - nubus().install_device(slotspace+0xe0000+ofs_24bit, slotspace+0xe003f+ofs_24bit, read32_delegate(FUNC(nubus_mac8390_device::en_r), this), write32_delegate(FUNC(nubus_mac8390_device::en_w), this)); + nubus().install_device(slotspace+0xd0000, slotspace+0xdffff, read8_delegate(*this, FUNC(nubus_mac8390_device::asntm3b_ram_r)), write8_delegate(*this, FUNC(nubus_mac8390_device::asntm3b_ram_w))); + nubus().install_device(slotspace+0xe0000, slotspace+0xe003f, read32_delegate(*this, FUNC(nubus_mac8390_device::en_r)), write32_delegate(*this, FUNC(nubus_mac8390_device::en_w))); + nubus().install_device(slotspace+0xd0000+ofs_24bit, slotspace+0xdffff+ofs_24bit, read8_delegate(*this, FUNC(nubus_mac8390_device::asntm3b_ram_r)), write8_delegate(*this, FUNC(nubus_mac8390_device::asntm3b_ram_w))); + nubus().install_device(slotspace+0xe0000+ofs_24bit, slotspace+0xe003f+ofs_24bit, read32_delegate(*this, FUNC(nubus_mac8390_device::en_r)), write32_delegate(*this, FUNC(nubus_mac8390_device::en_w))); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_cb264.cpp b/src/devices/bus/nubus/nubus_cb264.cpp index 01bff0877da..99d67081ecd 100644 --- a/src/devices/bus/nubus/nubus_cb264.cpp +++ b/src/devices/bus/nubus/nubus_cb264.cpp @@ -95,8 +95,8 @@ void nubus_cb264_device::device_start() m_vram.resize(VRAM_SIZE); install_bank(slotspace, slotspace+VRAM_SIZE-1, "bank_cb264", &m_vram[0]); - nubus().install_device(slotspace+0xff6000, slotspace+0xff60ff, read32_delegate(FUNC(nubus_cb264_device::cb264_r), this), write32_delegate(FUNC(nubus_cb264_device::cb264_w), this)); - nubus().install_device(slotspace+0xff7000, slotspace+0xff70ff, read32_delegate(FUNC(nubus_cb264_device::cb264_ramdac_r), this), write32_delegate(FUNC(nubus_cb264_device::cb264_ramdac_w), this)); + nubus().install_device(slotspace+0xff6000, slotspace+0xff60ff, read32_delegate(*this, FUNC(nubus_cb264_device::cb264_r)), write32_delegate(*this, FUNC(nubus_cb264_device::cb264_w))); + nubus().install_device(slotspace+0xff7000, slotspace+0xff70ff, read32_delegate(*this, FUNC(nubus_cb264_device::cb264_ramdac_r)), write32_delegate(*this, FUNC(nubus_cb264_device::cb264_ramdac_w))); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_image.cpp b/src/devices/bus/nubus/nubus_image.cpp index 36f40eb3184..1dd6bc2ab56 100644 --- a/src/devices/bus/nubus/nubus_image.cpp +++ b/src/devices/bus/nubus/nubus_image.cpp @@ -180,13 +180,13 @@ void nubus_image_device::device_start() // printf("[image %p] slotspace = %x, super = %x\n", this, slotspace, superslotspace); - nubus().install_device(slotspace, slotspace+3, read32_delegate(FUNC(nubus_image_device::image_r), this), write32_delegate(FUNC(nubus_image_device::image_w), this)); - nubus().install_device(slotspace+4, slotspace+7, read32_delegate(FUNC(nubus_image_device::image_status_r), this), write32_delegate(FUNC(nubus_image_device::image_status_w), this)); - nubus().install_device(slotspace+8, slotspace+11, read32_delegate(FUNC(nubus_image_device::file_cmd_r), this), write32_delegate(FUNC(nubus_image_device::file_cmd_w), this)); - nubus().install_device(slotspace+12, slotspace+15, read32_delegate(FUNC(nubus_image_device::file_data_r), this), write32_delegate(FUNC(nubus_image_device::file_data_w), this)); - nubus().install_device(slotspace+16, slotspace+19, read32_delegate(FUNC(nubus_image_device::file_len_r), this), write32_delegate(FUNC(nubus_image_device::file_len_w), this)); - nubus().install_device(slotspace+20, slotspace+147, read32_delegate(FUNC(nubus_image_device::file_name_r), this), write32_delegate(FUNC(nubus_image_device::file_name_w), this)); - nubus().install_device(superslotspace, superslotspace+((256*1024*1024)-1), read32_delegate(FUNC(nubus_image_device::image_super_r), this), write32_delegate(FUNC(nubus_image_device::image_super_w), this)); + nubus().install_device(slotspace, slotspace+3, read32_delegate(*this, FUNC(nubus_image_device::image_r)), write32_delegate(*this, FUNC(nubus_image_device::image_w))); + nubus().install_device(slotspace+4, slotspace+7, read32_delegate(*this, FUNC(nubus_image_device::image_status_r)), write32_delegate(*this, FUNC(nubus_image_device::image_status_w))); + nubus().install_device(slotspace+8, slotspace+11, read32_delegate(*this, FUNC(nubus_image_device::file_cmd_r)), write32_delegate(*this, FUNC(nubus_image_device::file_cmd_w))); + nubus().install_device(slotspace+12, slotspace+15, read32_delegate(*this, FUNC(nubus_image_device::file_data_r)), write32_delegate(*this, FUNC(nubus_image_device::file_data_w))); + nubus().install_device(slotspace+16, slotspace+19, read32_delegate(*this, FUNC(nubus_image_device::file_len_r)), write32_delegate(*this, FUNC(nubus_image_device::file_len_w))); + nubus().install_device(slotspace+20, slotspace+147, read32_delegate(*this, FUNC(nubus_image_device::file_name_r)), write32_delegate(*this, FUNC(nubus_image_device::file_name_w))); + nubus().install_device(superslotspace, superslotspace+((256*1024*1024)-1), read32_delegate(*this, FUNC(nubus_image_device::image_super_r)), write32_delegate(*this, FUNC(nubus_image_device::image_super_w))); m_image = subdevice<messimg_disk_image_device>(IMAGE_DISK0_TAG); diff --git a/src/devices/bus/nubus/nubus_m2hires.cpp b/src/devices/bus/nubus/nubus_m2hires.cpp index c575f7d94b1..7ba4efe9b30 100644 --- a/src/devices/bus/nubus/nubus_m2hires.cpp +++ b/src/devices/bus/nubus/nubus_m2hires.cpp @@ -93,9 +93,9 @@ void nubus_m2hires_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_m2hires_device::vram_r), this), write32_delegate(FUNC(nubus_m2hires_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_m2hires_device::vram_r), this), write32_delegate(FUNC(nubus_m2hires_device::vram_w), this)); - nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(FUNC(nubus_m2hires_device::m2hires_r), this), write32_delegate(FUNC(nubus_m2hires_device::m2hires_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_m2hires_device::vram_r)), write32_delegate(*this, FUNC(nubus_m2hires_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_m2hires_device::vram_r)), write32_delegate(*this, FUNC(nubus_m2hires_device::vram_w))); + nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(*this, FUNC(nubus_m2hires_device::m2hires_r)), write32_delegate(*this, FUNC(nubus_m2hires_device::m2hires_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/nubus_m2video.cpp b/src/devices/bus/nubus/nubus_m2video.cpp index b16391b640d..ea515895cb3 100644 --- a/src/devices/bus/nubus/nubus_m2video.cpp +++ b/src/devices/bus/nubus/nubus_m2video.cpp @@ -95,9 +95,9 @@ void nubus_m2video_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_m2video_device::vram_r), this), write32_delegate(FUNC(nubus_m2video_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_m2video_device::vram_r), this), write32_delegate(FUNC(nubus_m2video_device::vram_w), this)); - nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(FUNC(nubus_m2video_device::m2video_r), this), write32_delegate(FUNC(nubus_m2video_device::m2video_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_m2video_device::vram_r)), write32_delegate(*this, FUNC(nubus_m2video_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_m2video_device::vram_r)), write32_delegate(*this, FUNC(nubus_m2video_device::vram_w))); + nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(*this, FUNC(nubus_m2video_device::m2video_r)), write32_delegate(*this, FUNC(nubus_m2video_device::m2video_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/nubus_radiustpd.cpp b/src/devices/bus/nubus/nubus_radiustpd.cpp index 1ee2e0cb7fb..3f1ccfc9146 100644 --- a/src/devices/bus/nubus/nubus_radiustpd.cpp +++ b/src/devices/bus/nubus/nubus_radiustpd.cpp @@ -94,10 +94,10 @@ void nubus_radiustpd_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_radiustpd_device::vram_r), this), write32_delegate(FUNC(nubus_radiustpd_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_radiustpd_device::vram_r), this), write32_delegate(FUNC(nubus_radiustpd_device::vram_w), this)); - nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(FUNC(nubus_radiustpd_device::radiustpd_r), this), write32_delegate(FUNC(nubus_radiustpd_device::radiustpd_w), this)); - nubus().install_device(slotspace+0x980000, slotspace+0x9effff, read32_delegate(FUNC(nubus_radiustpd_device::radiustpd_r), this), write32_delegate(FUNC(nubus_radiustpd_device::radiustpd_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_radiustpd_device::vram_r)), write32_delegate(*this, FUNC(nubus_radiustpd_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_radiustpd_device::vram_r)), write32_delegate(*this, FUNC(nubus_radiustpd_device::vram_w))); + nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(*this, FUNC(nubus_radiustpd_device::radiustpd_r)), write32_delegate(*this, FUNC(nubus_radiustpd_device::radiustpd_w))); + nubus().install_device(slotspace+0x980000, slotspace+0x9effff, read32_delegate(*this, FUNC(nubus_radiustpd_device::radiustpd_r)), write32_delegate(*this, FUNC(nubus_radiustpd_device::radiustpd_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/nubus_spec8.cpp b/src/devices/bus/nubus/nubus_spec8.cpp index 1353d3b9a9d..00f5481aee8 100644 --- a/src/devices/bus/nubus/nubus_spec8.cpp +++ b/src/devices/bus/nubus/nubus_spec8.cpp @@ -97,9 +97,9 @@ void nubus_spec8s3_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_spec8s3_device::vram_r), this), write32_delegate(FUNC(nubus_spec8s3_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_spec8s3_device::vram_r), this), write32_delegate(FUNC(nubus_spec8s3_device::vram_w), this)); - nubus().install_device(slotspace+0xd0000, slotspace+0xfffff, read32_delegate(FUNC(nubus_spec8s3_device::spec8s3_r), this), write32_delegate(FUNC(nubus_spec8s3_device::spec8s3_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_spec8s3_device::vram_r)), write32_delegate(*this, FUNC(nubus_spec8s3_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_spec8s3_device::vram_r)), write32_delegate(*this, FUNC(nubus_spec8s3_device::vram_w))); + nubus().install_device(slotspace+0xd0000, slotspace+0xfffff, read32_delegate(*this, FUNC(nubus_spec8s3_device::spec8s3_r)), write32_delegate(*this, FUNC(nubus_spec8s3_device::spec8s3_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(767, 0), 0); diff --git a/src/devices/bus/nubus/nubus_specpdq.cpp b/src/devices/bus/nubus/nubus_specpdq.cpp index 2e09a258bd2..b3d85466ee5 100644 --- a/src/devices/bus/nubus/nubus_specpdq.cpp +++ b/src/devices/bus/nubus/nubus_specpdq.cpp @@ -114,8 +114,8 @@ void nubus_specpdq_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_specpdq_device::vram_r), this), write32_delegate(FUNC(nubus_specpdq_device::vram_w), this)); - nubus().install_device(slotspace+0x400000, slotspace+0xfbffff, read32_delegate(FUNC(nubus_specpdq_device::specpdq_r), this), write32_delegate(FUNC(nubus_specpdq_device::specpdq_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_specpdq_device::vram_r)), write32_delegate(*this, FUNC(nubus_specpdq_device::vram_w))); + nubus().install_device(slotspace+0x400000, slotspace+0xfbffff, read32_delegate(*this, FUNC(nubus_specpdq_device::specpdq_r)), write32_delegate(*this, FUNC(nubus_specpdq_device::specpdq_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(843, 0), 0); diff --git a/src/devices/bus/nubus/nubus_vikbw.cpp b/src/devices/bus/nubus/nubus_vikbw.cpp index ab3af18fe72..875ddf676f4 100644 --- a/src/devices/bus/nubus/nubus_vikbw.cpp +++ b/src/devices/bus/nubus/nubus_vikbw.cpp @@ -92,8 +92,8 @@ void nubus_vikbw_device::device_start() install_bank(slotspace+0x40000, slotspace+0x40000+VRAM_SIZE-1, "bank_vikbw", &m_vram[0]); install_bank(slotspace+0x940000, slotspace+0x940000+VRAM_SIZE-1, "bank_vikbw2", &m_vram[0]); - nubus().install_device(slotspace, slotspace+3, read32_delegate(FUNC(nubus_vikbw_device::viking_enable_r), this), write32_delegate(FUNC(nubus_vikbw_device::viking_disable_w), this)); - nubus().install_device(slotspace+0x80000, slotspace+0x80000+3, read32_delegate(FUNC(nubus_vikbw_device::viking_ack_r), this), write32_delegate(FUNC(nubus_vikbw_device::viking_ack_w), this)); + nubus().install_device(slotspace, slotspace+3, read32_delegate(*this, FUNC(nubus_vikbw_device::viking_enable_r)), write32_delegate(*this, FUNC(nubus_vikbw_device::viking_disable_w))); + nubus().install_device(slotspace+0x80000, slotspace+0x80000+3, read32_delegate(*this, FUNC(nubus_vikbw_device::viking_ack_r)), write32_delegate(*this, FUNC(nubus_vikbw_device::viking_ack_w))); } //------------------------------------------------- diff --git a/src/devices/bus/nubus/nubus_wsportrait.cpp b/src/devices/bus/nubus/nubus_wsportrait.cpp index 12702c052a6..fd85e99b99b 100644 --- a/src/devices/bus/nubus/nubus_wsportrait.cpp +++ b/src/devices/bus/nubus/nubus_wsportrait.cpp @@ -96,9 +96,9 @@ void nubus_wsportrait_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_wsportrait_device::vram_r), this), write32_delegate(FUNC(nubus_wsportrait_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+0x900000+VRAM_SIZE-1, read32_delegate(FUNC(nubus_wsportrait_device::vram_r), this), write32_delegate(FUNC(nubus_wsportrait_device::vram_w), this)); - nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(FUNC(nubus_wsportrait_device::wsportrait_r), this), write32_delegate(FUNC(nubus_wsportrait_device::wsportrait_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_wsportrait_device::vram_r)), write32_delegate(*this, FUNC(nubus_wsportrait_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+0x900000+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_wsportrait_device::vram_r)), write32_delegate(*this, FUNC(nubus_wsportrait_device::vram_w))); + nubus().install_device(slotspace+0x80000, slotspace+0xeffff, read32_delegate(*this, FUNC(nubus_wsportrait_device::wsportrait_r)), write32_delegate(*this, FUNC(nubus_wsportrait_device::wsportrait_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(869, 0), 0); diff --git a/src/devices/bus/nubus/pds30_30hr.cpp b/src/devices/bus/nubus/pds30_30hr.cpp index 190872708f6..dbd0018cecd 100644 --- a/src/devices/bus/nubus/pds30_30hr.cpp +++ b/src/devices/bus/nubus/pds30_30hr.cpp @@ -96,8 +96,8 @@ void nubus_xceed30hr_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_xceed30hr_device::vram_r), this), write32_delegate(FUNC(nubus_xceed30hr_device::vram_w), this)); - nubus().install_device(slotspace+0x800000, slotspace+0xefffff, read32_delegate(FUNC(nubus_xceed30hr_device::xceed30hr_r), this), write32_delegate(FUNC(nubus_xceed30hr_device::xceed30hr_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_xceed30hr_device::vram_r)), write32_delegate(*this, FUNC(nubus_xceed30hr_device::vram_w))); + nubus().install_device(slotspace+0x800000, slotspace+0xefffff, read32_delegate(*this, FUNC(nubus_xceed30hr_device::xceed30hr_r)), write32_delegate(*this, FUNC(nubus_xceed30hr_device::xceed30hr_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/pds30_cb264.cpp b/src/devices/bus/nubus/pds30_cb264.cpp index 4d153596fe0..f7111b2a8e6 100644 --- a/src/devices/bus/nubus/pds30_cb264.cpp +++ b/src/devices/bus/nubus/pds30_cb264.cpp @@ -90,8 +90,8 @@ void nubus_cb264se30_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_cb264se30_device::vram_r), this), write32_delegate(FUNC(nubus_cb264se30_device::vram_w), this)); - nubus().install_device(slotspace+0xf00000, slotspace+0xfeffff, read32_delegate(FUNC(nubus_cb264se30_device::cb264se30_r), this), write32_delegate(FUNC(nubus_cb264se30_device::cb264se30_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_cb264se30_device::vram_r)), write32_delegate(*this, FUNC(nubus_cb264se30_device::vram_w))); + nubus().install_device(slotspace+0xf00000, slotspace+0xfeffff, read32_delegate(*this, FUNC(nubus_cb264se30_device::cb264se30_r)), write32_delegate(*this, FUNC(nubus_cb264se30_device::cb264se30_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/pds30_mc30.cpp b/src/devices/bus/nubus/pds30_mc30.cpp index 6770b517deb..068ce736156 100644 --- a/src/devices/bus/nubus/pds30_mc30.cpp +++ b/src/devices/bus/nubus/pds30_mc30.cpp @@ -92,8 +92,8 @@ void nubus_xceedmc30_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_xceedmc30_device::vram_r), this), write32_delegate(FUNC(nubus_xceedmc30_device::vram_w), this)); - nubus().install_device(slotspace+0x800000, slotspace+0xefffff, read32_delegate(FUNC(nubus_xceedmc30_device::xceedmc30_r), this), write32_delegate(FUNC(nubus_xceedmc30_device::xceedmc30_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_xceedmc30_device::vram_r)), write32_delegate(*this, FUNC(nubus_xceedmc30_device::vram_w))); + nubus().install_device(slotspace+0x800000, slotspace+0xefffff, read32_delegate(*this, FUNC(nubus_xceedmc30_device::xceedmc30_r)), write32_delegate(*this, FUNC(nubus_xceedmc30_device::xceedmc30_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/pds30_procolor816.cpp b/src/devices/bus/nubus/pds30_procolor816.cpp index 440ba6c86d7..0399378216f 100644 --- a/src/devices/bus/nubus/pds30_procolor816.cpp +++ b/src/devices/bus/nubus/pds30_procolor816.cpp @@ -95,9 +95,9 @@ void nubus_procolor816_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_procolor816_device::vram_r), this), write32_delegate(FUNC(nubus_procolor816_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_procolor816_device::vram_r), this), write32_delegate(FUNC(nubus_procolor816_device::vram_w), this)); - nubus().install_device(slotspace+0xf00000, slotspace+0xff7fff, read32_delegate(FUNC(nubus_procolor816_device::procolor816_r), this), write32_delegate(FUNC(nubus_procolor816_device::procolor816_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_procolor816_device::vram_r)), write32_delegate(*this, FUNC(nubus_procolor816_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_procolor816_device::vram_r)), write32_delegate(*this, FUNC(nubus_procolor816_device::vram_w))); + nubus().install_device(slotspace+0xf00000, slotspace+0xff7fff, read32_delegate(*this, FUNC(nubus_procolor816_device::procolor816_r)), write32_delegate(*this, FUNC(nubus_procolor816_device::procolor816_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(479, 0), 0); diff --git a/src/devices/bus/nubus/pds30_sigmalview.cpp b/src/devices/bus/nubus/pds30_sigmalview.cpp index 51f27a03713..84e5fee67c0 100644 --- a/src/devices/bus/nubus/pds30_sigmalview.cpp +++ b/src/devices/bus/nubus/pds30_sigmalview.cpp @@ -90,9 +90,9 @@ void nubus_lview_device::device_start() m_vram.resize(VRAM_SIZE); m_vram32 = (uint32_t *)&m_vram[0]; - nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(FUNC(nubus_lview_device::vram_r), this), write32_delegate(FUNC(nubus_lview_device::vram_w), this)); - nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(FUNC(nubus_lview_device::vram_r), this), write32_delegate(FUNC(nubus_lview_device::vram_w), this)); - nubus().install_device(slotspace+0xb0000, slotspace+0xbffff, read32_delegate(FUNC(nubus_lview_device::lview_r), this), write32_delegate(FUNC(nubus_lview_device::lview_w), this)); + nubus().install_device(slotspace, slotspace+VRAM_SIZE-1, read32_delegate(*this, FUNC(nubus_lview_device::vram_r)), write32_delegate(*this, FUNC(nubus_lview_device::vram_w))); + nubus().install_device(slotspace+0x900000, slotspace+VRAM_SIZE-1+0x900000, read32_delegate(*this, FUNC(nubus_lview_device::vram_r)), write32_delegate(*this, FUNC(nubus_lview_device::vram_w))); + nubus().install_device(slotspace+0xb0000, slotspace+0xbffff, read32_delegate(*this, FUNC(nubus_lview_device::lview_r)), write32_delegate(*this, FUNC(nubus_lview_device::lview_w))); m_timer = timer_alloc(0, nullptr); m_timer->adjust(screen().time_until_pos(599, 0), 0); diff --git a/src/devices/bus/nubus/quadralink.cpp b/src/devices/bus/nubus/quadralink.cpp index 9ba40a99748..84855baebc3 100644 --- a/src/devices/bus/nubus/quadralink.cpp +++ b/src/devices/bus/nubus/quadralink.cpp @@ -110,7 +110,7 @@ void nubus_quadralink_device::device_start() slotspace = get_slotspace(); - nubus().install_device(slotspace, slotspace+0xefffff, read32_delegate(FUNC(nubus_quadralink_device::dev_r), this), write32_delegate(FUNC(nubus_quadralink_device::dev_w), this)); + nubus().install_device(slotspace, slotspace+0xefffff, read32_delegate(*this, FUNC(nubus_quadralink_device::dev_r)), write32_delegate(*this, FUNC(nubus_quadralink_device::dev_w))); } //------------------------------------------------- diff --git a/src/devices/bus/sbus/sbus.cpp b/src/devices/bus/sbus/sbus.cpp index 3fa46c124a0..8409d8a2598 100644 --- a/src/devices/bus/sbus/sbus.cpp +++ b/src/devices/bus/sbus/sbus.cpp @@ -111,9 +111,9 @@ void sbus_device::device_start() std::fill(std::begin(m_device_list), std::end(m_device_list), nullptr); m_space = &space(0); - m_space->install_readwrite_handler(0x00000000, 0x01ffffff, read32_delegate(FUNC(sbus_device::slot_timeout_r<0>), this), write32_delegate(FUNC(sbus_device::slot_timeout_w<0>), this)); - m_space->install_readwrite_handler(0x02000000, 0x03ffffff, read32_delegate(FUNC(sbus_device::slot_timeout_r<1>), this), write32_delegate(FUNC(sbus_device::slot_timeout_w<1>), this)); - m_space->install_readwrite_handler(0x04000000, 0x05ffffff, read32_delegate(FUNC(sbus_device::slot_timeout_r<2>), this), write32_delegate(FUNC(sbus_device::slot_timeout_w<2>), this)); + m_space->install_readwrite_handler(0x00000000, 0x01ffffff, read32_delegate(*this, FUNC(sbus_device::slot_timeout_r<0>)), write32_delegate(*this, FUNC(sbus_device::slot_timeout_w<0>))); + m_space->install_readwrite_handler(0x02000000, 0x03ffffff, read32_delegate(*this, FUNC(sbus_device::slot_timeout_r<1>)), write32_delegate(*this, FUNC(sbus_device::slot_timeout_w<1>))); + m_space->install_readwrite_handler(0x04000000, 0x05ffffff, read32_delegate(*this, FUNC(sbus_device::slot_timeout_r<2>)), write32_delegate(*this, FUNC(sbus_device::slot_timeout_w<2>))); } template <unsigned Slot> READ32_MEMBER(sbus_device::slot_timeout_r) diff --git a/src/devices/bus/snes_ctrl/ctrl.cpp b/src/devices/bus/snes_ctrl/ctrl.cpp index 09079bd9c91..c628a049b8c 100644 --- a/src/devices/bus/snes_ctrl/ctrl.cpp +++ b/src/devices/bus/snes_ctrl/ctrl.cpp @@ -61,7 +61,10 @@ device_snes_control_port_interface::~device_snes_control_port_interface() snes_control_port_device::snes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SNES_CONTROL_PORT, tag, owner, clock), - device_slot_interface(mconfig, *this), m_device(nullptr) + device_slot_interface(mconfig, *this), + m_onscreen_cb(*this), + m_gunlatch_cb(*this), + m_device(nullptr) { } @@ -82,8 +85,8 @@ snes_control_port_device::~snes_control_port_device() void snes_control_port_device::device_start() { m_device = dynamic_cast<device_snes_control_port_interface *>(get_card_device()); - m_onscreen_cb.bind_relative_to(*owner()); - m_gunlatch_cb.bind_relative_to(*owner()); + m_onscreen_cb.resolve(); + m_gunlatch_cb.resolve(); } diff --git a/src/devices/bus/snes_ctrl/ctrl.h b/src/devices/bus/snes_ctrl/ctrl.h index 37db69537cc..cfcc8f03de9 100644 --- a/src/devices/bus/snes_ctrl/ctrl.h +++ b/src/devices/bus/snes_ctrl/ctrl.h @@ -37,10 +37,8 @@ protected: snes_control_port_device *m_port; }; -typedef device_delegate<bool (int16_t x, int16_t y)> snesctrl_onscreen_delegate; #define SNESCTRL_ONSCREEN_CB(name) bool name(int16_t x, int16_t y) -typedef device_delegate<void (int16_t x, int16_t y)> snesctrl_gunlatch_delegate; #define SNESCTRL_GUNLATCH_CB(name) void name(int16_t x, int16_t y) // ======================> snes_control_port_device @@ -48,6 +46,9 @@ typedef device_delegate<void (int16_t x, int16_t y)> snesctrl_gunlatch_delegate; class snes_control_port_device : public device_t, public device_slot_interface { public: + typedef device_delegate<bool (int16_t x, int16_t y)> onscreen_delegate; + typedef device_delegate<void (int16_t x, int16_t y)> gunlatch_delegate; + // construction/destruction template <typename T> snes_control_port_device(machine_config const &mconfig, char const *tag, device_t *owner, T &&opts, char const *dflt) @@ -61,8 +62,8 @@ public: snes_control_port_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual ~snes_control_port_device(); - template <typename... T> void set_onscreen_callback(T &&... args) { m_onscreen_cb = snesctrl_onscreen_delegate(std::forward<T>(args)...); } - template <typename... T> void set_gunlatch_callback(T &&... args) { m_gunlatch_cb = snesctrl_gunlatch_delegate(std::forward<T>(args)...); } + template <typename... T> void set_onscreen_callback(T &&... args) { m_onscreen_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_gunlatch_callback(T &&... args) { m_gunlatch_cb.set(std::forward<T>(args)...); } uint8_t read_pin4(); uint8_t read_pin5(); @@ -77,8 +78,8 @@ protected: // device-level overrides virtual void device_start() override; - snesctrl_onscreen_delegate m_onscreen_cb; - snesctrl_gunlatch_delegate m_gunlatch_cb; + onscreen_delegate m_onscreen_cb; + gunlatch_delegate m_gunlatch_cb; device_snes_control_port_interface *m_device; }; diff --git a/src/devices/bus/spectrum/intf2.cpp b/src/devices/bus/spectrum/intf2.cpp index ab9caf68f8c..7442dfe49a9 100644 --- a/src/devices/bus/spectrum/intf2.cpp +++ b/src/devices/bus/spectrum/intf2.cpp @@ -58,7 +58,7 @@ void spectrum_intf2_device::device_add_mconfig(machine_config &config) { /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "spectrum_cart", "bin,rom"); - m_cart->set_device_load(FUNC(spectrum_intf2_device::cart_load), this); + m_cart->set_device_load(FUNC(spectrum_intf2_device::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("spectrum_cart"); } diff --git a/src/devices/bus/svi3x8/slot/sv806.cpp b/src/devices/bus/svi3x8/slot/sv806.cpp index e2319516781..bc4dafbd415 100644 --- a/src/devices/bus/svi3x8/slot/sv806.cpp +++ b/src/devices/bus/svi3x8/slot/sv806.cpp @@ -52,7 +52,7 @@ void sv806_device::device_add_mconfig(machine_config &config) m_crtc->set_screen("80col"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(sv806_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(sv806_device::crtc_update_row)); } diff --git a/src/devices/bus/tanbus/mpvdu.cpp b/src/devices/bus/tanbus/mpvdu.cpp index 8463d90b6c5..d172c93cae0 100644 --- a/src/devices/bus/tanbus/mpvdu.cpp +++ b/src/devices/bus/tanbus/mpvdu.cpp @@ -42,7 +42,7 @@ void tanbus_mpvdu_device::device_add_mconfig(machine_config &config) m_crtc->set_show_border_area(false); m_crtc->set_char_width(12); m_crtc->out_vsync_callback().set(FUNC(tanbus_mpvdu_device::vsync_changed)); - m_crtc->set_update_row_callback(FUNC(tanbus_mpvdu_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(tanbus_mpvdu_device::crtc_update_row)); SAA5050(config, m_trom, DERIVED_CLOCK(1, 1)); m_trom->d_cb().set(FUNC(tanbus_mpvdu_device::videoram_r)); diff --git a/src/devices/bus/tanbus/ravdu.cpp b/src/devices/bus/tanbus/ravdu.cpp index a68a609c18e..2a53497d079 100644 --- a/src/devices/bus/tanbus/ravdu.cpp +++ b/src/devices/bus/tanbus/ravdu.cpp @@ -43,7 +43,7 @@ void tanbus_ravdu_device::device_add_mconfig(machine_config &config) m_crtc->set_show_border_area(false); m_crtc->set_char_width(12); m_crtc->out_vsync_callback().set(FUNC(tanbus_ravdu_device::vsync_changed)); - m_crtc->set_update_row_callback(FUNC(tanbus_ravdu_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(tanbus_ravdu_device::crtc_update_row)); SAA5055(config, m_trom, DERIVED_CLOCK(1, 1)); m_trom->d_cb().set(FUNC(tanbus_ravdu_device::videoram_r)); diff --git a/src/devices/bus/ti99x/990_hd.cpp b/src/devices/bus/ti99x/990_hd.cpp index 8e9c08648a5..a6ae9e63136 100644 --- a/src/devices/bus/ti99x/990_hd.cpp +++ b/src/devices/bus/ti99x/990_hd.cpp @@ -1007,18 +1007,18 @@ void ti990_hdc_device::device_start() void ti990_hdc_device::device_add_mconfig(machine_config &config) { harddisk_image_device &harddisk1(HARDDISK(config, "harddisk1")); - harddisk1.set_device_load(FUNC(ti990_hdc_device::load_hd), this); - harddisk1.set_device_unload(FUNC(ti990_hdc_device::unload_hd), this); + harddisk1.set_device_load(FUNC(ti990_hdc_device::load_hd)); + harddisk1.set_device_unload(FUNC(ti990_hdc_device::unload_hd)); harddisk_image_device &harddisk2(HARDDISK(config, "harddisk2")); - harddisk2.set_device_load(FUNC(ti990_hdc_device::load_hd), this); - harddisk2.set_device_unload(FUNC(ti990_hdc_device::unload_hd), this); + harddisk2.set_device_load(FUNC(ti990_hdc_device::load_hd)); + harddisk2.set_device_unload(FUNC(ti990_hdc_device::unload_hd)); harddisk_image_device &harddisk3(HARDDISK(config, "harddisk3")); - harddisk3.set_device_load(FUNC(ti990_hdc_device::load_hd), this); - harddisk3.set_device_unload(FUNC(ti990_hdc_device::unload_hd), this); + harddisk3.set_device_load(FUNC(ti990_hdc_device::load_hd)); + harddisk3.set_device_unload(FUNC(ti990_hdc_device::unload_hd)); harddisk_image_device &harddisk4(HARDDISK(config, "harddisk4")); - harddisk4.set_device_load(FUNC(ti990_hdc_device::load_hd), this); - harddisk4.set_device_unload(FUNC(ti990_hdc_device::unload_hd), this); + harddisk4.set_device_load(FUNC(ti990_hdc_device::load_hd)); + harddisk4.set_device_unload(FUNC(ti990_hdc_device::unload_hd)); } diff --git a/src/devices/bus/vic20/videopak.cpp b/src/devices/bus/vic20/videopak.cpp index 98a6c054d22..187224721be 100644 --- a/src/devices/bus/vic20/videopak.cpp +++ b/src/devices/bus/vic20/videopak.cpp @@ -112,7 +112,7 @@ void vic20_video_pak_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(MC6845_SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(vic20_video_pak_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(vic20_video_pak_device::crtc_update_row)); } diff --git a/src/devices/bus/vme/vme_fccpu20.cpp b/src/devices/bus/vme/vme_fccpu20.cpp index d9096ca13e2..1866a3c128e 100644 --- a/src/devices/bus/vme/vme_fccpu20.cpp +++ b/src/devices/bus/vme/vme_fccpu20.cpp @@ -254,7 +254,7 @@ DEVICE_INPUT_DEFAULTS_END void vme_fccpu20_device::cpu_space_map(address_map &map) { - map(0xfffffff2, 0xffffffff).lr16("bim irq", [this](offs_t offset) -> u16 { return m_bim->iack(offset+1); }); + map(0xfffffff2, 0xffffffff).lr16(NAME([this](offs_t offset) -> u16 { return m_bim->iack(offset+1); })); } void vme_fccpu20_device::device_add_mconfig(machine_config &config) @@ -459,9 +459,9 @@ void vme_fccpu20_device::device_start() #if 0 // TODO: Setup VME access handlers for shared memory area uint32_t base = 0xFFFF5000; m_vme->install_device(base + 0, base + 1, // Channel B - Data - read8_delegate(FUNC(z80sio_device::db_r), subdevice<z80sio_device>("pit")), write8_delegate(FUNC(z80sio_device::db_w), subdevice<z80sio_device>("pit")), 0x00ff); + read8_delegate(*subdevice<z80sio_device>("pit"), FUNC(z80sio_device::db_r)), write8_delegate(*subdevice<z80sio_device>("pit"), FUNC(z80sio_device::db_w)), 0x00ff); m_vme->install_device(base + 2, base + 3, // Channel B - Control - read8_delegate(FUNC(z80sio_device::cb_r), subdevice<z80sio_device>("pit")), write8_delegate(FUNC(z80sio_device::cb_w), subdevice<z80sio_device>("pit")), 0x00ff); + read8_delegate(*subdevice<z80sio_device>("pit"), FUNC(z80sio_device::cb_r)), write8_delegate(*subdevice<z80sio_device>("pit"), FUNC(z80sio_device::cb_w)), 0x00ff); #endif } diff --git a/src/devices/bus/vme/vme_mzr8300.cpp b/src/devices/bus/vme/vme_mzr8300.cpp index 133c17e9f49..a318ced143f 100644 --- a/src/devices/bus/vme/vme_mzr8300.cpp +++ b/src/devices/bus/vme/vme_mzr8300.cpp @@ -175,20 +175,20 @@ void vme_mzr8300_card_device::device_start() // m_vme->static_set_custom_spaces(*this); m_vme->install_device(vme_device::A16_SC, base + 0, base + 1, // Channel B - Data - read8smo_delegate(FUNC(z80sio_device::db_r), subdevice<z80sio_device>("sio0")), - write8smo_delegate(FUNC(z80sio_device::db_w), subdevice<z80sio_device>("sio0")), 0x00ff); + read8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::db_r)), + write8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::db_w)), 0x00ff); m_vme->install_device(vme_device::A16_SC, base + 2, base + 3, // Channel B - Control - read8smo_delegate(FUNC(z80sio_device::cb_r), subdevice<z80sio_device>("sio0")), - write8smo_delegate(FUNC(z80sio_device::cb_w), subdevice<z80sio_device>("sio0")), 0x00ff); + read8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::cb_r)), + write8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::cb_w)), 0x00ff); m_vme->install_device(vme_device::A16_SC, base + 4, base + 5, // Channel A - Data - read8smo_delegate(FUNC(z80sio_device::da_r), subdevice<z80sio_device>("sio0")), - write8smo_delegate(FUNC(z80sio_device::da_w), subdevice<z80sio_device>("sio0")), 0x00ff); + read8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::da_r)), + write8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::da_w)), 0x00ff); m_vme->install_device(vme_device::A16_SC, base + 6, base + 7, // Channel A - Control - read8smo_delegate(FUNC(z80sio_device::ca_r), subdevice<z80sio_device>("sio0")), - write8smo_delegate(FUNC(z80sio_device::ca_w), subdevice<z80sio_device>("sio0")), 0x00ff); + read8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::ca_r)), + write8smo_delegate(*subdevice<z80sio_device>("sio0"), FUNC(z80sio_device::ca_w)), 0x00ff); m_vme->install_device(vme_device::A16_SC, base + 0x10, base + 0x13, // Am9513 - read8sm_delegate(FUNC(am9513_device::read8), subdevice<am9513_device>("stc")), - write8sm_delegate(FUNC(am9513_device::write8), subdevice<am9513_device>("stc")), 0x00ff); + read8sm_delegate(*subdevice<am9513_device>("stc"), FUNC(am9513_device::read8)), + write8sm_delegate(*subdevice<am9513_device>("stc"), FUNC(am9513_device::write8)), 0x00ff); } void vme_mzr8300_card_device::device_reset() diff --git a/src/devices/bus/vtech/ioexp/joystick.cpp b/src/devices/bus/vtech/ioexp/joystick.cpp index 7570deca3b5..f8521538195 100644 --- a/src/devices/bus/vtech/ioexp/joystick.cpp +++ b/src/devices/bus/vtech/ioexp/joystick.cpp @@ -89,7 +89,7 @@ void vtech_joystick_interface_device::device_start() void vtech_joystick_interface_device::device_reset() { - io_space().install_read_handler(0x20, 0x2f, read8_delegate(FUNC(vtech_joystick_interface_device::joystick_r), this)); + io_space().install_read_handler(0x20, 0x2f, read8_delegate(*this, FUNC(vtech_joystick_interface_device::joystick_r))); } diff --git a/src/devices/bus/vtech/ioexp/printer.cpp b/src/devices/bus/vtech/ioexp/printer.cpp index b927f41d3c4..17e9ab7f139 100644 --- a/src/devices/bus/vtech/ioexp/printer.cpp +++ b/src/devices/bus/vtech/ioexp/printer.cpp @@ -64,9 +64,9 @@ void vtech_printer_interface_device::device_start() void vtech_printer_interface_device::device_reset() { - io_space().install_read_handler(0x00, 0x00, read8_delegate(FUNC(vtech_printer_interface_device::busy_r), this)); - io_space().install_write_handler(0x0d, 0x0d, write8_delegate(FUNC(vtech_printer_interface_device::strobe_w), this)); - io_space().install_write_handler(0x0e, 0x0e, write8_delegate(FUNC(output_latch_device::bus_w), m_latch.target())); + io_space().install_read_handler(0x00, 0x00, read8_delegate(*this, FUNC(vtech_printer_interface_device::busy_r))); + io_space().install_write_handler(0x0d, 0x0d, write8_delegate(*this, FUNC(vtech_printer_interface_device::strobe_w))); + io_space().install_write_handler(0x0e, 0x0e, write8_delegate(*m_latch, FUNC(output_latch_device::bus_w))); } diff --git a/src/devices/bus/vtech/memexp/memory.cpp b/src/devices/bus/vtech/memexp/memory.cpp index 15ccbeb949e..19330332bed 100644 --- a/src/devices/bus/vtech/memexp/memory.cpp +++ b/src/devices/bus/vtech/memexp/memory.cpp @@ -158,7 +158,7 @@ void vtech_laser_64k_device::device_reset() membank(tag())->set_entry(1); // bank switch - io_space().install_write_handler(0x70, 0x7f, write8_delegate(FUNC(vtech_laser_64k_device::bankswitch_w), this)); + io_space().install_write_handler(0x70, 0x7f, write8_delegate(*this, FUNC(vtech_laser_64k_device::bankswitch_w))); } WRITE8_MEMBER( vtech_laser_64k_device::bankswitch_w ) diff --git a/src/devices/bus/vtech/memexp/rs232.cpp b/src/devices/bus/vtech/memexp/rs232.cpp index cf21b7ee006..959ef7d1adc 100644 --- a/src/devices/bus/vtech/memexp/rs232.cpp +++ b/src/devices/bus/vtech/memexp/rs232.cpp @@ -75,8 +75,8 @@ void vtech_rs232_interface_device::device_reset() program_space().install_rom(0x4000, 0x47ff, 0x800, memregion("software")->base()); // data - program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(vtech_rs232_interface_device::receive_data_r), this)); - program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(vtech_rs232_interface_device::transmit_data_w), this)); + program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(*this, FUNC(vtech_rs232_interface_device::receive_data_r))); + program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(*this, FUNC(vtech_rs232_interface_device::transmit_data_w))); } diff --git a/src/devices/bus/vtech/memexp/rtty.cpp b/src/devices/bus/vtech/memexp/rtty.cpp index 96e394bfb4d..02b3aba005b 100644 --- a/src/devices/bus/vtech/memexp/rtty.cpp +++ b/src/devices/bus/vtech/memexp/rtty.cpp @@ -63,9 +63,9 @@ void vtech_rtty_interface_device::device_reset() program_space().install_rom(0x4000, 0x4fff, 0x1000, memregion("software")->base()); // data - program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(FUNC(vtech_rtty_interface_device::receive_data_r), this)); - program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(FUNC(vtech_rtty_interface_device::transmit_data_w), this)); - program_space().install_write_handler(0x6000, 0x67ff, write8_delegate(FUNC(vtech_rtty_interface_device::relay_w), this)); + program_space().install_read_handler(0x5000, 0x57ff, read8_delegate(*this, FUNC(vtech_rtty_interface_device::receive_data_r))); + program_space().install_write_handler(0x5800, 0x5fff, write8_delegate(*this, FUNC(vtech_rtty_interface_device::transmit_data_w))); + program_space().install_write_handler(0x6000, 0x67ff, write8_delegate(*this, FUNC(vtech_rtty_interface_device::relay_w))); } diff --git a/src/devices/bus/wangpc/lvc.cpp b/src/devices/bus/wangpc/lvc.cpp index 9f6a8d59626..4d31a7b9367 100644 --- a/src/devices/bus/wangpc/lvc.cpp +++ b/src/devices/bus/wangpc/lvc.cpp @@ -129,7 +129,7 @@ void wangpc_lvc_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(wangpc_lvc_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(wangpc_lvc_device::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(wangpc_lvc_device::vsync_w)); } diff --git a/src/devices/bus/wangpc/mvc.cpp b/src/devices/bus/wangpc/mvc.cpp index af78d16cc29..562e277f982 100644 --- a/src/devices/bus/wangpc/mvc.cpp +++ b/src/devices/bus/wangpc/mvc.cpp @@ -149,7 +149,7 @@ void wangpc_mvc_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(10); - m_crtc->set_update_row_callback(FUNC(wangpc_mvc_device::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(wangpc_mvc_device::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(wangpc_mvc_device::vsync_w)); } diff --git a/src/devices/bus/x68k/x68k_midi.cpp b/src/devices/bus/x68k/x68k_midi.cpp index 011fe5f734f..e4e639fff04 100644 --- a/src/devices/bus/x68k/x68k_midi.cpp +++ b/src/devices/bus/x68k/x68k_midi.cpp @@ -40,7 +40,7 @@ x68k_midi_device::x68k_midi_device(const machine_config &mconfig, const char *ta void x68k_midi_device::device_start() { m_slot = dynamic_cast<x68k_expansion_slot_device *>(owner()); - m_slot->space().install_readwrite_handler(0xeafa00,0xeafa0f,read8_delegate(FUNC(x68k_midi_device::x68k_midi_reg_r),this),write8_delegate(FUNC(x68k_midi_device::x68k_midi_reg_w),this),0x00ff00ff); + m_slot->space().install_readwrite_handler(0xeafa00,0xeafa0f, read8_delegate(*this, FUNC(x68k_midi_device::x68k_midi_reg_r)), write8_delegate(*this, FUNC(x68k_midi_device::x68k_midi_reg_w)), 0x00ff00ff); } void x68k_midi_device::device_reset() diff --git a/src/devices/bus/x68k/x68k_neptunex.cpp b/src/devices/bus/x68k/x68k_neptunex.cpp index 2bf97fa474d..9cc8c022d23 100644 --- a/src/devices/bus/x68k/x68k_neptunex.cpp +++ b/src/devices/bus/x68k/x68k_neptunex.cpp @@ -47,7 +47,7 @@ void x68k_neptune_device::device_start() mac[0] = 0; mac[1] = 0; // avoid gcc warning memcpy(m_prom, mac, 6); m_dp8390->set_mac(mac); - m_slot->space().install_readwrite_handler(0xece000,0xece3ff,read16_delegate(FUNC(x68k_neptune_device::x68k_neptune_port_r),this),write16_delegate(FUNC(x68k_neptune_device::x68k_neptune_port_w),this),0xffffffff); + m_slot->space().install_readwrite_handler(0xece000,0xece3ff, read16_delegate(*this, FUNC(x68k_neptune_device::x68k_neptune_port_r)), write16_delegate(*this, FUNC(x68k_neptune_device::x68k_neptune_port_w)), 0xffffffff); } void x68k_neptune_device::device_reset() { diff --git a/src/devices/bus/x68k/x68k_scsiext.cpp b/src/devices/bus/x68k/x68k_scsiext.cpp index b4233875f1e..67dffd2e33e 100644 --- a/src/devices/bus/x68k/x68k_scsiext.cpp +++ b/src/devices/bus/x68k/x68k_scsiext.cpp @@ -72,7 +72,7 @@ void x68k_scsiext_device::device_start() uint8_t *ROM = machine().root_device().memregion(subtag("scsiexrom").c_str())->base(); machine().root_device().membank("scsi_ext")->set_base(ROM); -m_slot->space().install_readwrite_handler(0xea0000,0xea001f,read8_delegate(FUNC(x68k_scsiext_device::register_r),this),write8_delegate(FUNC(x68k_scsiext_device::register_w),this),0x00ff00ff); + m_slot->space().install_readwrite_handler(0xea0000,0xea001f, read8_delegate(*this, FUNC(x68k_scsiext_device::register_r)), write8_delegate(*this, FUNC(x68k_scsiext_device::register_w)), 0x00ff00ff); } void x68k_scsiext_device::device_reset() diff --git a/src/devices/cpu/ccpu/ccpu.cpp b/src/devices/cpu/ccpu/ccpu.cpp index 740c803ad44..6afb97916b2 100644 --- a/src/devices/cpu/ccpu/ccpu.cpp +++ b/src/devices/cpu/ccpu/ccpu.cpp @@ -69,6 +69,7 @@ ccpu_cpu_device::ccpu_cpu_device(const machine_config &mconfig, const char *tag, , m_data_config("data", ENDIANNESS_BIG, 16, 32, -1) , m_io_config("io", ENDIANNESS_BIG, 8, 5, 0) , m_external_input(*this) + , m_vector_callback(*this) , m_flags(0) { } @@ -103,7 +104,7 @@ void ccpu_cpu_device::device_start() { /* copy input params */ m_external_input.resolve_safe(0); - m_vector_callback.bind_relative_to(*owner()); + m_vector_callback.resolve(); assert(!m_vector_callback.isnull()); m_program = &space(AS_PROGRAM); diff --git a/src/devices/cpu/ccpu/ccpu.h b/src/devices/cpu/ccpu/ccpu.h index c42687aaa0c..359bac3e4ce 100644 --- a/src/devices/cpu/ccpu/ccpu.h +++ b/src/devices/cpu/ccpu/ccpu.h @@ -47,17 +47,7 @@ public: // configuration helpers auto external_func() { return m_external_input.bind(); } - template <typename Object> void set_vector_func(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } - void set_vector_func(vector_delegate callback) { m_vector_callback = callback; } - template <class FunctionClass> void set_vector_func(const char *devname, - void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name) - { - set_vector_func(vector_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_vector_func(void (FunctionClass::*callback)(int16_t, int16_t, int16_t, int16_t, uint8_t), const char *name) - { - set_vector_func(vector_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_vector_func(T &&... args) { m_vector_callback.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER( read_jmi ); void wdt_timer_trigger(); diff --git a/src/devices/cpu/dsp16/dsp16.cpp b/src/devices/cpu/dsp16/dsp16.cpp index 5fbc4c2ad10..a8536761a24 100644 --- a/src/devices/cpu/dsp16/dsp16.cpp +++ b/src/devices/cpu/dsp16/dsp16.cpp @@ -2092,7 +2092,7 @@ void dsp16_device::external_memory_enable(address_space &space, bool enable) // this assumes internal ROM is mirrored above 2KiB, but actual hardware behaviour is unknown space.unmap_read(0x0000, 0xffff); if (enable) - space.install_read_handler(0x0000, 0xffff, read16_delegate(FUNC(dsp16_device::external_memory_r<0x0000>), this)); + space.install_read_handler(0x0000, 0xffff, read16_delegate(*this, FUNC(dsp16_device::external_memory_r<0x0000>))); else space.install_rom(0x0000, 0x07ff, 0xf800, &m_rom[0]); } @@ -2123,12 +2123,12 @@ void dsp16a_device::external_memory_enable(address_space &space, bool enable) space.unmap_read(0x0000, 0xffff); if (enable) { - space.install_read_handler(0x0000, 0xffff, read16_delegate(FUNC(dsp16a_device::external_memory_r<0x0000>), this)); + space.install_read_handler(0x0000, 0xffff, read16_delegate(*this, FUNC(dsp16a_device::external_memory_r<0x0000>))); } else { space.install_rom(0x0000, 0x0fff, &m_rom[0]); - space.install_read_handler(0x1000, 0xffff, read16_delegate(FUNC(dsp16a_device::external_memory_r<0x1000>), this)); + space.install_read_handler(0x1000, 0xffff, read16_delegate(*this, FUNC(dsp16a_device::external_memory_r<0x1000>))); } } diff --git a/src/devices/cpu/e0c6200/e0c6s46.cpp b/src/devices/cpu/e0c6200/e0c6s46.cpp index ce0687b5088..f6788aae67f 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.cpp +++ b/src/devices/cpu/e0c6200/e0c6s46.cpp @@ -51,7 +51,9 @@ void e0c6s46_device::e0c6s46_data(address_map &map) e0c6s46_device::e0c6s46_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : e0c6200_cpu_device(mconfig, E0C6S46, tag, owner, clock, address_map_constructor(FUNC(e0c6s46_device::e0c6s46_program), this), address_map_constructor(FUNC(e0c6s46_device::e0c6s46_data), this)) , m_vram1(*this, "vram1") - , m_vram2(*this, "vram2"), m_osc(0), m_svd(0), m_lcd_control(0), m_lcd_contrast(0) + , m_vram2(*this, "vram2") + , m_osc(0), m_svd(0), m_lcd_control(0), m_lcd_contrast(0) + , m_pixel_update_cb(*this) , m_write_r{{*this}, {*this}, {*this}, {*this}, {*this}} , m_read_p{{*this}, {*this}, {*this}, {*this}} , m_write_p{{*this}, {*this}, {*this}, {*this}} @@ -83,7 +85,7 @@ void e0c6s46_device::device_start() m_write_p[i].resolve_safe(); } - m_pixel_update_cb.bind_relative_to(*owner()); + m_pixel_update_cb.resolve(); // create timers m_core_256_handle = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(e0c6s46_device::core_256_cb), this)); diff --git a/src/devices/cpu/e0c6200/e0c6s46.h b/src/devices/cpu/e0c6200/e0c6s46.h index e0b9e247d8c..2448654d948 100644 --- a/src/devices/cpu/e0c6200/e0c6s46.h +++ b/src/devices/cpu/e0c6200/e0c6s46.h @@ -60,17 +60,7 @@ public: template <std::size_t Port> auto read_p() { return m_read_p[Port].bind(); } template <std::size_t Port> auto write_p() { return m_write_p[Port].bind(); } - void set_pixel_update_cb(pixel_update_delegate callback) { m_pixel_update_cb = callback; } - template <class FunctionClass> void set_pixel_update_cb(const char *devname, - void (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, int, int, int, int), const char *name) - { - set_pixel_update_cb(pixel_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_pixel_update_cb(void (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, int, int, int, int), - const char *name) - { - set_pixel_update_cb(pixel_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER(io_r); DECLARE_WRITE8_MEMBER(io_w); diff --git a/src/devices/cpu/esrip/esrip.cpp b/src/devices/cpu/esrip/esrip.cpp index d3b8b54e225..023d3038670 100644 --- a/src/devices/cpu/esrip/esrip.cpp +++ b/src/devices/cpu/esrip/esrip.cpp @@ -187,7 +187,7 @@ void esrip_device::device_start() m_fdt_w.resolve_safe(); m_lbrm = (uint8_t*)machine().root_device().memregion(m_lbrm_prom)->base(); m_status_in.resolve_safe(0); - m_draw.bind_relative_to(*owner()); + m_draw.resolve(); /* Allocate image pointer table RAM */ m_ipt_ram.resize(IPT_RAM_SIZE/2); @@ -1674,6 +1674,7 @@ esrip_device::esrip_device(const machine_config &mconfig, const char *tag, devic , m_fdt_r(*this) , m_fdt_w(*this) , m_status_in(*this) + , m_draw(*this) , m_screen(*this, finder_base::DUMMY_TAG) , m_lbrm_prom(nullptr) { diff --git a/src/devices/cpu/esrip/esrip.h b/src/devices/cpu/esrip/esrip.h index 2508b11976a..878a9836265 100644 --- a/src/devices/cpu/esrip/esrip.h +++ b/src/devices/cpu/esrip/esrip.h @@ -37,23 +37,13 @@ public: // inline configuration helpers void set_lbrm_prom_region(const char *name) { m_lbrm_prom = name; } template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); } - void set_draw_callback(draw_delegate callback) { m_draw = callback; } - template <class FunctionClass> void set_draw_callback(const char *devname, int (FunctionClass::*callback)(int, int, int, int, int, int, int, int), - const char *name) - { - set_draw_callback(draw_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_draw_callback(int (FunctionClass::*callback)(int, int, int, int, int, int, int, int), const char *name) - { - set_draw_callback(draw_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_draw_callback(T &&... args) { m_draw.set(std::forward<T>(args)...); } // devcb3 accessors auto fdt_r() { return m_fdt_r.bind(); } auto fdt_w() { return m_fdt_w.bind(); } auto status_in() { return m_status_in.bind(); } - // public interfaces uint8_t get_rip_status(); diff --git a/src/devices/cpu/g65816/g65816.cpp b/src/devices/cpu/g65816/g65816.cpp index eb46c11242d..f5a4bc4c9ca 100644 --- a/src/devices/cpu/g65816/g65816.cpp +++ b/src/devices/cpu/g65816/g65816.cpp @@ -1155,21 +1155,16 @@ READ8_MEMBER( _5a22_device::rdmpyh_r ) void _5a22_device::set_5a22_map() { - space(AS_PROGRAM).install_write_handler(0x4202, 0x4202, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::wrmpya_w),this)); - space(AS_PROGRAM).install_write_handler(0x4203, 0x4203, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::wrmpyb_w),this)); - space(AS_PROGRAM).install_write_handler(0x4204, 0x4204, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::wrdivl_w),this)); - space(AS_PROGRAM).install_write_handler(0x4205, 0x4205, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::wrdivh_w),this)); - space(AS_PROGRAM).install_write_handler(0x4206, 0x4206, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::wrdvdd_w),this)); + space(AS_PROGRAM).install_write_handler(0x4202, 0x4202, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::wrmpya_w))); + space(AS_PROGRAM).install_write_handler(0x4203, 0x4203, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::wrmpyb_w))); + space(AS_PROGRAM).install_write_handler(0x4204, 0x4204, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::wrdivl_w))); + space(AS_PROGRAM).install_write_handler(0x4205, 0x4205, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::wrdivh_w))); + space(AS_PROGRAM).install_write_handler(0x4206, 0x4206, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::wrdvdd_w))); - space(AS_PROGRAM).install_write_handler(0x420d, 0x420d, 0, 0xbf0000, 0, write8_delegate(FUNC(_5a22_device::memsel_w),this)); + space(AS_PROGRAM).install_write_handler(0x420d, 0x420d, 0, 0xbf0000, 0, write8_delegate(*this, FUNC(_5a22_device::memsel_w))); - space(AS_PROGRAM).install_read_handler(0x4214, 0x4214, 0, 0xbf0000, 0, read8_delegate(FUNC(_5a22_device::rddivl_r),this)); - space(AS_PROGRAM).install_read_handler(0x4215, 0x4215, 0, 0xbf0000, 0, read8_delegate(FUNC(_5a22_device::rddivh_r),this)); - space(AS_PROGRAM).install_read_handler(0x4216, 0x4216, 0, 0xbf0000, 0, read8_delegate(FUNC(_5a22_device::rdmpyl_r),this)); - space(AS_PROGRAM).install_read_handler(0x4217, 0x4217, 0, 0xbf0000, 0, read8_delegate(FUNC(_5a22_device::rdmpyh_r),this)); + space(AS_PROGRAM).install_read_handler(0x4214, 0x4214, 0, 0xbf0000, 0, read8_delegate(*this, FUNC(_5a22_device::rddivl_r))); + space(AS_PROGRAM).install_read_handler(0x4215, 0x4215, 0, 0xbf0000, 0, read8_delegate(*this, FUNC(_5a22_device::rddivh_r))); + space(AS_PROGRAM).install_read_handler(0x4216, 0x4216, 0, 0xbf0000, 0, read8_delegate(*this, FUNC(_5a22_device::rdmpyl_r))); + space(AS_PROGRAM).install_read_handler(0x4217, 0x4217, 0, 0xbf0000, 0, read8_delegate(*this, FUNC(_5a22_device::rdmpyh_r))); } - - -/* ======================================================================== */ -/* ============================== END OF FILE ============================= */ -/* ======================================================================== */ diff --git a/src/devices/cpu/i386/athlon.cpp b/src/devices/cpu/i386/athlon.cpp index 9448bfdd2f1..a391a476e96 100644 --- a/src/devices/cpu/i386/athlon.cpp +++ b/src/devices/cpu/i386/athlon.cpp @@ -31,7 +31,7 @@ void athlonxp_device::device_start() m_data = &space(AS_DATA); m_opcodes = &space(AS_OPCODES); mmacache32 = m_data->cache<2, 0, ENDIANNESS_LITTLE>(); - m_opcodes->install_read_handler(0, 0xffffffff, read32_delegate(FUNC(athlonxp_device::debug_read_memory), this)); + m_opcodes->install_read_handler(0, 0xffffffff, read32_delegate(*this, FUNC(athlonxp_device::debug_read_memory))); build_x87_opcode_table(); build_opcode_table(OP_I386 | OP_FPU | OP_I486 | OP_PENTIUM | OP_PPRO | OP_MMX | OP_SSE); diff --git a/src/devices/cpu/i8085/i8085.cpp b/src/devices/cpu/i8085/i8085.cpp index 0e2bfeaecd1..a0f58190824 100644 --- a/src/devices/cpu/i8085/i8085.cpp +++ b/src/devices/cpu/i8085/i8085.cpp @@ -216,6 +216,7 @@ i8085a_cpu_device::i8085a_cpu_device(const machine_config &mconfig, device_type , m_out_inte_func(*this) , m_in_sid_func(*this) , m_out_sod_func(*this) + , m_clk_out_func(*this) , m_cputype(cputype) { } @@ -245,7 +246,7 @@ device_memory_interface::space_config_vector i8085a_cpu_device::memory_space_con void i8085a_cpu_device::device_config_complete() { - m_clk_out_func.bind_relative_to(*owner()); + m_clk_out_func.resolve(); if (!m_clk_out_func.isnull()) m_clk_out_func(clock() / 2); } diff --git a/src/devices/cpu/i8085/i8085.h b/src/devices/cpu/i8085/i8085.h index fd8628961d7..5dac2de7f75 100644 --- a/src/devices/cpu/i8085/i8085.h +++ b/src/devices/cpu/i8085/i8085.h @@ -43,15 +43,7 @@ public: i8085a_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // CLK rate callback (8085A only) - void set_clk_out(clock_update_delegate callback) { m_clk_out_func = callback; } - template <class FunctionClass> void set_clk_out(const char *devname, void (FunctionClass::*callback)(uint32_t), const char *name) - { - set_clk_out(clock_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_clk_out(void (FunctionClass::*callback)(uint32_t), const char *name) - { - set_clk_out(clock_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_clk_out(T &&... args) { m_clk_out_func.set(std::forward<T>(args)...); } // STATUS changed callback auto out_status_func() { return m_out_status_func.bind(); } diff --git a/src/devices/cpu/i86/i186.cpp b/src/devices/cpu/i86/i186.cpp index 4145ceb06b4..3a700aded9d 100644 --- a/src/devices/cpu/i86/i186.cpp +++ b/src/devices/cpu/i86/i186.cpp @@ -125,14 +125,14 @@ i80188_cpu_device::i80188_cpu_device(const machine_config &mconfig, const char * : i80186_cpu_device(mconfig, I80188, tag, owner, clock, 8) { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(*this, FUNC(i80186_cpu_device::int_callback)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : i80186_cpu_device(mconfig, I80186, tag, owner, clock, 16) { memcpy(m_timing, m_i80186_timing, sizeof(m_i80186_timing)); - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i80186_cpu_device::int_callback), this)); + set_irq_acknowledge_callback(*this, FUNC(i80186_cpu_device::int_callback)); } i80186_cpu_device::i80186_cpu_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, int data_bus_size) diff --git a/src/devices/cpu/lc8670/lc8670.cpp b/src/devices/cpu/lc8670/lc8670.cpp index 325c93eadff..b35a25329bd 100644 --- a/src/devices/cpu/lc8670/lc8670.cpp +++ b/src/devices/cpu/lc8670/lc8670.cpp @@ -180,6 +180,7 @@ lc8670_cpu_device::lc8670_cpu_device(const machine_config &mconfig, const char * , m_pc(0) , m_ppc(0) , m_bankswitch_func(*this) + , m_lcd_update_func(*this) { memset(m_sfr, 0x00, sizeof(m_sfr)); memset(m_timer0, 0x00, sizeof(m_timer0)); @@ -202,8 +203,8 @@ void lc8670_cpu_device::device_start() set_icountptr(m_icount); // resolve callbacks - m_lcd_update_func.bind_relative_to(*owner()); m_bankswitch_func.resolve(); + m_lcd_update_func.resolve(); // setup timers m_basetimer = timer_alloc(BASE_TIMER); diff --git a/src/devices/cpu/lc8670/lc8670.h b/src/devices/cpu/lc8670/lc8670.h index 82b78fee058..f4845bf0cf9 100644 --- a/src/devices/cpu/lc8670/lc8670.h +++ b/src/devices/cpu/lc8670/lc8670.h @@ -80,18 +80,7 @@ public: auto bank_cb() { return m_bankswitch_func.bind(); } - template <typename Object> void set_lcd_update_cb(Object &&cb) { m_lcd_update_func = std::forward<Object>(cb); } - void set_lcd_update_cb(lcd_update_delegate callback) { m_lcd_update_func = callback; } - template <class FunctionClass> void set_lcd_update_cb(const char *devname, - uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t*, bool, uint8_t), const char *name) - { - set_lcd_update_cb(lcd_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_lcd_update_cb( - uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t*, bool, uint8_t), const char *name) - { - set_lcd_update_cb(lcd_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_lcd_update_cb(T &&... args) { m_lcd_update_func.set(std::forward<T>(args)...); } void lc8670_internal_map(address_map &map); protected: diff --git a/src/devices/cpu/m6502/xavix.cpp b/src/devices/cpu/m6502/xavix.cpp index 522d9374b5f..de7726d7239 100644 --- a/src/devices/cpu/m6502/xavix.cpp +++ b/src/devices/cpu/m6502/xavix.cpp @@ -34,28 +34,16 @@ DEFINE_DEVICE_TYPE(XAVIX, xavix_device, "xavix", "XaviX (SSD 97 / SSD 98)") xavix_device::xavix_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - m6502_device(mconfig, XAVIX, tag, owner, clock), - XPC(0), - m_lowbus_config("lowbus", ENDIANNESS_LITTLE, 8, 15), - m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24) + xavix_device(mconfig, XAVIX, tag, owner, clock) { - program_config.m_addr_width = 24; - program_config.m_logaddr_width = 24; - sprogram_config.m_addr_width = 24; - sprogram_config.m_logaddr_width = 24; - // XaviX specific spaces - m_lowbus_config.m_addr_width = 15; - m_lowbus_config.m_logaddr_width = 15; - m_extbus_config.m_addr_width = 24; - m_extbus_config.m_logaddr_width = 24; - } xavix_device::xavix_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : m6502_device(mconfig, type, tag, owner, clock), XPC(0), m_lowbus_config("lowbus", ENDIANNESS_LITTLE, 8, 15), - m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24) + m_extbus_config("extbus", ENDIANNESS_LITTLE, 8, 24), + m_vector_callback(*this) { program_config.m_addr_width = 24; program_config.m_logaddr_width = 24; @@ -89,7 +77,7 @@ void xavix_device::device_start() mintf = std::make_unique<mi_xavix_normal>(this); // bind delegates - m_vector_callback.bind_relative_to(*owner()); + m_vector_callback.resolve(); init(); diff --git a/src/devices/cpu/m6502/xavix.h b/src/devices/cpu/m6502/xavix.h index 89f97f574bd..240730f46f3 100644 --- a/src/devices/cpu/m6502/xavix.h +++ b/src/devices/cpu/m6502/xavix.h @@ -135,22 +135,11 @@ public: - typedef device_delegate<int16_t (int which, int half)> xavix_interrupt_vector_delegate; - - template <typename Object> void set_vector_callback(Object &&cb) { m_vector_callback = std::forward<Object>(cb); } - void set_vector_callback(xavix_interrupt_vector_delegate callback) { m_vector_callback = callback; } - template <class FunctionClass> void set_vector_callback(const char *devname, int16_t (FunctionClass::*callback)(int, int), const char *name) - { - set_vector_callback(xavix_interrupt_vector_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_vector_callback(int16_t (FunctionClass::*callback)(int, int), const char *name) - { - set_vector_callback(xavix_interrupt_vector_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - - #undef O + typedef device_delegate<int16_t (int which, int half)> xavix_interrupt_vector_delegate; + + template <typename... T> void set_vector_callback(T &&... args) { m_vector_callback.set(std::forward<T>(args)...); } uint8_t read_full_data(uint8_t databank, uint16_t addr); uint8_t read_full_data(uint32_t addr); diff --git a/src/devices/cpu/m68000/m68000.h b/src/devices/cpu/m68000/m68000.h index ed730d93b24..13db7934454 100644 --- a/src/devices/cpu/m68000/m68000.h +++ b/src/devices/cpu/m68000/m68000.h @@ -159,10 +159,10 @@ protected: void define_state(void); public: - void set_reset_callback(write_line_delegate callback); - void set_cmpild_callback(write32_delegate callback); - void set_rte_callback(write_line_delegate callback); - void set_tas_write_callback(write8_delegate callback); + template <typename... T> void set_reset_callback(T &&... args) { m_reset_instr_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_cmpild_callback(T &&... args) { m_cmpild_instr_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_rte_callback(T &&... args) { m_rte_instr_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_tas_write_callback(T &&... args) { m_tas_write_callback.set(std::forward<T>(args)...); } u16 get_fc(); void set_hmmu_enable(int enable); int get_pmmu_enable() {return m_pmmu_enabled;}; diff --git a/src/devices/cpu/m68000/m68kcpu.cpp b/src/devices/cpu/m68000/m68kcpu.cpp index 896a046cd77..f4a4583e604 100644 --- a/src/devices/cpu/m68000/m68kcpu.cpp +++ b/src/devices/cpu/m68000/m68kcpu.cpp @@ -1652,11 +1652,6 @@ void m68000_base_device::init32hmmu(address_space &space, address_space &ospace) }; } -void m68000_base_device::set_reset_callback(write_line_delegate callback) -{ - m_reset_instr_callback = callback; -} - // fault_addr = address to indicate fault at // rw = 1 for read, 0 for write // fc = 3-bit function code of access (usually you'd just put what m68k_get_fc() returns here) @@ -1668,21 +1663,6 @@ void m68000_base_device::set_buserror_details(u32 fault_addr, u8 rw, u8 fc) m_mmu_tmp_buserror_address = fault_addr; // Hack for x68030 } -void m68000_base_device::set_cmpild_callback(write32_delegate callback) -{ - m_cmpild_instr_callback = callback; -} - -void m68000_base_device::set_rte_callback(write_line_delegate callback) -{ - m_rte_instr_callback = callback; -} - -void m68000_base_device::set_tas_write_callback(write8_delegate callback) -{ - m_tas_write_callback = callback; -} - u16 m68000_base_device::get_fc() { return m_mmu_tmp_fc; @@ -2342,7 +2322,11 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, internal_map), m_cpu_space_config("cpu space", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, address_map_constructor(FUNC(m68000_base_device::default_autovectors_map), this)), m_interrupt_mixer(true), - m_cpu_space_id(AS_CPU_SPACE) + m_cpu_space_id(AS_CPU_SPACE), + m_reset_instr_callback(*this), + m_cmpild_instr_callback(*this), + m_rte_instr_callback(*this), + m_tas_write_callback(*this) { clear_all(); } @@ -2355,7 +2339,11 @@ m68000_base_device::m68000_base_device(const machine_config &mconfig, const char m_oprogram_config("decrypted_opcodes", ENDIANNESS_BIG, prg_data_width, prg_address_bits), m_cpu_space_config("cpu space", ENDIANNESS_BIG, prg_data_width, prg_address_bits, 0, address_map_constructor(FUNC(m68000_base_device::default_autovectors_map), this)), m_interrupt_mixer(true), - m_cpu_space_id(AS_CPU_SPACE) + m_cpu_space_id(AS_CPU_SPACE), + m_reset_instr_callback(*this), + m_cmpild_instr_callback(*this), + m_rte_instr_callback(*this), + m_tas_write_callback(*this) { clear_all(); } @@ -2480,13 +2468,13 @@ void m68000_base_device::autovectors_map(address_map &map) { // Eventually add the sync to E due to vpa // 8-bit handlers are used here to be compatible with all bus widths - map(0x3, 0x3).lr8("avec1", []() -> u8 { return autovector(1); }); - map(0x5, 0x5).lr8("avec2", []() -> u8 { return autovector(2); }); - map(0x7, 0x7).lr8("avec3", []() -> u8 { return autovector(3); }); - map(0x9, 0x9).lr8("avec4", []() -> u8 { return autovector(4); }); - map(0xb, 0xb).lr8("avec5", []() -> u8 { return autovector(5); }); - map(0xd, 0xd).lr8("avec6", []() -> u8 { return autovector(6); }); - map(0xf, 0xf).lr8("avec7", []() -> u8 { return autovector(7); }); + map(0x3, 0x3).lr8(NAME([] () -> u8 { return autovector(1); })); + map(0x5, 0x5).lr8(NAME([] () -> u8 { return autovector(2); })); + map(0x7, 0x7).lr8(NAME([] () -> u8 { return autovector(3); })); + map(0x9, 0x9).lr8(NAME([] () -> u8 { return autovector(4); })); + map(0xb, 0xb).lr8(NAME([] () -> u8 { return autovector(5); })); + map(0xd, 0xd).lr8(NAME([] () -> u8 { return autovector(6); })); + map(0xf, 0xf).lr8(NAME([] () -> u8 { return autovector(7); })); } void m68000_base_device::default_autovectors_map(address_map &map) @@ -2499,6 +2487,10 @@ void m68000_base_device::default_autovectors_map(address_map &map) void m68000_base_device::device_start() { + m_reset_instr_callback.resolve(); + m_cmpild_instr_callback.resolve(); + m_rte_instr_callback.resolve(); + m_tas_write_callback.resolve(); } void m68000_base_device::device_stop() diff --git a/src/devices/cpu/m6805/m68705.cpp b/src/devices/cpu/m6805/m68705.cpp index 450c7583c63..84b24978430 100644 --- a/src/devices/cpu/m6805/m68705.cpp +++ b/src/devices/cpu/m6805/m68705.cpp @@ -836,8 +836,8 @@ void m6805_hmos_device::internal_map(address_map &map) map(0x0005, 0x0005).w(FUNC(m6805_hmos_device::port_ddr_w<1>)); map(0x0006, 0x0006).w(FUNC(m6805_hmos_device::port_ddr_w<2>)); - map(0x0008, 0x0008).lrw8("tdr", [this]() { return m_timer.tdr_r(); }, [this](u8 data) { m_timer.tdr_w(data); }); - map(0x0009, 0x0009).lrw8("tcr", [this]() { return m_timer.tcr_r(); }, [this](u8 data) { m_timer.tcr_w(data); }); + map(0x0008, 0x0008).lrw8(NAME([this]() { return m_timer.tdr_r(); }), NAME([this](u8 data) { m_timer.tdr_w(data); })); + map(0x0009, 0x0009).lrw8(NAME([this]() { return m_timer.tcr_r(); }), NAME([this](u8 data) { m_timer.tcr_w(data); })); // M68?05Px devices don't have Port D or the Miscellaneous register if (m_port_mask[3] != 0xff) diff --git a/src/devices/cpu/mcs40/mcs40.cpp b/src/devices/cpu/mcs40/mcs40.cpp index fa70e9d389e..25d99c89835 100644 --- a/src/devices/cpu/mcs40/mcs40.cpp +++ b/src/devices/cpu/mcs40/mcs40.cpp @@ -103,7 +103,7 @@ mcs40_cpu_device_base::mcs40_cpu_device_base( { "program", ENDIANNESS_LITTLE, 8, u8(rom_width - 3), 0 }, } , m_spaces{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr } , m_cache(nullptr) - , m_bus_cycle_cb() + , m_bus_cycle_cb(*this) , m_sync_cb(*this) , m_cm_rom_cb{ { *this }, { *this } } , m_cm_ram_cb{ { *this }, { *this }, { *this }, { *this }, } @@ -144,7 +144,7 @@ void mcs40_cpu_device_base::device_start() m_spaces[AS_PROGRAM_MEMORY] = &space(AS_PROGRAM_MEMORY); m_cache = m_spaces[AS_ROM]->cache<0, 0, ENDIANNESS_LITTLE>(); - m_bus_cycle_cb.bind_relative_to(*owner()); + m_bus_cycle_cb.resolve(); m_sync_cb.resolve_safe(); m_cm_rom_cb[0].resolve_safe(); m_cm_rom_cb[1].resolve_safe(); diff --git a/src/devices/cpu/mcs40/mcs40.h b/src/devices/cpu/mcs40/mcs40.h index d8ca4059631..3dd82db95bc 100644 --- a/src/devices/cpu/mcs40/mcs40.h +++ b/src/devices/cpu/mcs40/mcs40.h @@ -51,7 +51,7 @@ public: template <typename... T> void set_ram_status_map(T &&... args) { set_addrmap(AS_RAM_STATUS, std::forward<T>(args)...); } template <typename... T> void set_ram_ports_map(T &&... args) { set_addrmap(AS_RAM_PORTS, std::forward<T>(args)...); } template <typename... T> void set_program_memory_map(T &&... args) { set_addrmap(AS_PROGRAM_MEMORY, std::forward<T>(args)...); } - template <typename... T> void set_bus_cycle_cb(T &&... args) { m_bus_cycle_cb = bus_cycle_delegate(std::forward<T>(args)...); } + template <typename... T> void set_bus_cycle_cb(T &&... args) { m_bus_cycle_cb.set(std::forward<T>(args)...); } auto i4289_pm_cb() { return m_4289_pm_cb.bind(); } auto i4289_f_l_cb() { return m_4289_f_l_cb.bind(); } diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index afc71fbf651..3c41c8af987 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -223,7 +223,7 @@ mcs48_cpu_device::mcs48_cpu_device(const machine_config &mconfig, device_type ty , m_bus_in_cb(*this) , m_bus_out_cb(*this) , m_test_in_cb{{*this}, {*this}} - , m_t0_clk_func() + , m_t0_clk_func(*this) , m_prog_out_cb(*this) , m_psw(0) , m_dataptr(*this, "data") @@ -1085,7 +1085,7 @@ const mcs48_cpu_device::mcs48_ophandler mcs48_cpu_device::s_i8022_opcodes[256] = void mcs48_cpu_device::device_config_complete() { - m_t0_clk_func.bind_relative_to(*owner()); + m_t0_clk_func.resolve(); if (!m_t0_clk_func.isnull()) m_t0_clk_func(clock() / 3); } diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index dc3749f99b0..3fc45cbfac3 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -137,15 +137,8 @@ public: void program_11bit(address_map &map); void program_12bit(address_map &map); - void set_t0_clk_cb(clock_update_delegate callback) { m_t0_clk_func = callback; } - template <class FunctionClass> void set_t0_clk_cb(const char *devname, void (FunctionClass::*callback)(uint32_t), const char *name) - { - set_t0_clk_cb(clock_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_t0_clk_cb(void (FunctionClass::*callback)(uint32_t), const char *name) - { - set_t0_clk_cb(clock_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_t0_clk_cb(T &&... args) { m_t0_clk_func.set(std::forward<T>(args)...); } + protected: typedef int (mcs48_cpu_device::*mcs48_ophandler)(); diff --git a/src/devices/cpu/mcs96/i8x9x.cpp b/src/devices/cpu/mcs96/i8x9x.cpp index b550c422642..a0b53ac7272 100644 --- a/src/devices/cpu/mcs96/i8x9x.cpp +++ b/src/devices/cpu/mcs96/i8x9x.cpp @@ -170,7 +170,7 @@ void i8x9x_device::serial_send_done() void i8x9x_device::internal_regs(address_map &map) { - map(0x00, 0x01).lr16("r0", []() -> u16 { return 0; }).nopw(); + map(0x00, 0x01).lr16([] () -> u16 { return 0; }, "r0").nopw(); map(0x02, 0x03).r(FUNC(i8x9x_device::ad_result_r)); // 8-bit access map(0x02, 0x02).w(FUNC(i8x9x_device::ad_command_w)); map(0x03, 0x03).w(FUNC(i8x9x_device::hsi_mode_w)); diff --git a/src/devices/cpu/mcs96/i8xc196.cpp b/src/devices/cpu/mcs96/i8xc196.cpp index 3a9e657baa2..dd10d5a6b60 100644 --- a/src/devices/cpu/mcs96/i8xc196.cpp +++ b/src/devices/cpu/mcs96/i8xc196.cpp @@ -24,7 +24,7 @@ std::unique_ptr<util::disasm_interface> i8xc196_device::create_disassembler() void i8xc196_device::internal_regs(address_map &map) { - map(0x00, 0x01).lr16("r0", []() -> u16 { return 0; }).nopw(); + map(0x00, 0x01).lr16([] () -> u16 { return 0; }, "r0").nopw(); map(0x08, 0x08).rw(FUNC(i8xc196_device::int_mask_r), FUNC(i8xc196_device::int_mask_w)); map(0x09, 0x09).rw(FUNC(i8xc196_device::int_pending_r), FUNC(i8xc196_device::int_pending_w)); map(0x18, 0xff).ram().share("register_file"); diff --git a/src/devices/cpu/nec/v5x.cpp b/src/devices/cpu/nec/v5x.cpp index 2a4414e3710..cf119d7b87a 100644 --- a/src/devices/cpu/nec/v5x.cpp +++ b/src/devices/cpu/nec/v5x.cpp @@ -194,7 +194,7 @@ void v50_base_device::device_start() { nec_common_device::device_start(); - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(v5x_icu_device::inta_cb), m_icu.target())); + set_irq_acknowledge_callback(*m_icu, FUNC(v5x_icu_device::inta_cb)); save_item(NAME(m_OPCN)); } @@ -209,8 +209,8 @@ void v40_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_DULA) & 0xfff0; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x0f, - read8sm_delegate(FUNC(v5x_dmau_device::read), m_dmau.target()), - write8sm_delegate(FUNC(v5x_dmau_device::write), m_dmau.target())); + read8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::read)), + write8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::write))); } if (m_OPSEL & OPSEL_IS) @@ -218,8 +218,8 @@ void v40_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_IULA) & 0xfff0; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x01, - read8sm_delegate(FUNC(v5x_icu_device::read), m_icu.target()), - write8sm_delegate(FUNC(v5x_icu_device::write), m_icu.target())); + read8sm_delegate(*m_icu, FUNC(v5x_icu_device::read)), + write8sm_delegate(*m_icu, FUNC(v5x_icu_device::write))); } if (m_OPSEL & OPSEL_TS) @@ -227,8 +227,8 @@ void v40_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_TULA) & 0xfff0; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(pit8253_device::read), m_tcu.target()), - write8sm_delegate(FUNC(pit8253_device::write), m_tcu.target())); + read8sm_delegate(*m_tcu, FUNC(pit8253_device::read)), + write8sm_delegate(*m_tcu, FUNC(pit8253_device::write))); } if (m_OPSEL & OPSEL_SS) @@ -236,8 +236,8 @@ void v40_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_SULA) & 0xfff0; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(v5x_scu_device::read), m_scu.target()), - write8sm_delegate(FUNC(v5x_scu_device::write), m_scu.target())); + read8sm_delegate(*m_scu, FUNC(v5x_scu_device::read)), + write8sm_delegate(*m_scu, FUNC(v5x_scu_device::write))); } } @@ -251,8 +251,8 @@ void v50_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_DULA) & 0xfffe; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x0f, - read8sm_delegate(FUNC(v5x_dmau_device::read), m_dmau.target()), - write8sm_delegate(FUNC(v5x_dmau_device::write), m_dmau.target()), 0xffff); + read8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::read)), + write8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::write)), 0xffff); } if (m_OPSEL & OPSEL_IS) @@ -260,8 +260,8 @@ void v50_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_IULA) & 0xfffe; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(v5x_icu_device::read), m_icu.target()), - write8sm_delegate(FUNC(v5x_icu_device::write), m_icu.target()), 0x00ff); + read8sm_delegate(*m_icu, FUNC(v5x_icu_device::read)), + write8sm_delegate(*m_icu, FUNC(v5x_icu_device::write)), 0x00ff); } if (m_OPSEL & OPSEL_TS) @@ -269,8 +269,8 @@ void v50_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_TULA) & 0xfffe; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x07, - read8sm_delegate(FUNC(pit8253_device::read), m_tcu.target()), - write8sm_delegate(FUNC(pit8253_device::write), m_tcu.target()), 0x00ff); + read8sm_delegate(*m_tcu, FUNC(pit8253_device::read)), + write8sm_delegate(*m_tcu, FUNC(pit8253_device::write)), 0x00ff); } if (m_OPSEL & OPSEL_SS) @@ -278,8 +278,8 @@ void v50_device::install_peripheral_io() u16 const base = ((m_OPHA << 8) | m_SULA) & 0xfffe; space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x07, - read8sm_delegate(FUNC(v5x_scu_device::read), m_scu.target()), - write8sm_delegate(FUNC(v5x_scu_device::write), m_scu.target()), 0x00ff); + read8sm_delegate(*m_scu, FUNC(v5x_scu_device::read)), + write8sm_delegate(*m_scu, FUNC(v5x_scu_device::write)), 0x00ff); } } @@ -359,7 +359,7 @@ void v53_device::device_start() { v33_base_device::device_start(); - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(v5x_icu_device::inta_cb), m_icu.target())); + set_irq_acknowledge_callback(*m_icu, FUNC(v5x_icu_device::inta_cb)); save_item(NAME(m_SCTL)); } @@ -390,8 +390,8 @@ void v53_device::install_peripheral_io() } else // uPD71071 mode space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x0f, - read8sm_delegate(FUNC(v5x_dmau_device::read), m_dmau.target()), - write8sm_delegate(FUNC(v5x_dmau_device::write), m_dmau.target()), 0xffff); + read8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::read)), + write8sm_delegate(*m_dmau, FUNC(v5x_dmau_device::write)), 0xffff); } if (m_OPSEL & OPSEL_IS) @@ -400,12 +400,12 @@ void v53_device::install_peripheral_io() if (IOAG) // 8-bit space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x01, - read8sm_delegate(FUNC(v5x_icu_device::read), m_icu.target()), - write8sm_delegate(FUNC(v5x_icu_device::write), m_icu.target()), 0xffff); + read8sm_delegate(*m_icu, FUNC(v5x_icu_device::read)), + write8sm_delegate(*m_icu, FUNC(v5x_icu_device::write)), 0xffff); else space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(v5x_icu_device::read), m_icu.target()), - write8sm_delegate(FUNC(v5x_icu_device::write), m_icu.target()), 0x00ff); + read8sm_delegate(*m_icu, FUNC(v5x_icu_device::read)), + write8sm_delegate(*m_icu, FUNC(v5x_icu_device::write)), 0x00ff); } if (m_OPSEL & OPSEL_TS) @@ -414,12 +414,12 @@ void v53_device::install_peripheral_io() if (IOAG) // 8-bit space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(pit8253_device::read), m_tcu.target()), - write8sm_delegate(FUNC(pit8253_device::write), m_tcu.target()), 0xffff); + read8sm_delegate(*m_tcu, FUNC(pit8253_device::read)), + write8sm_delegate(*m_tcu, FUNC(pit8253_device::write)), 0xffff); else space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x07, - read8sm_delegate(FUNC(pit8253_device::read), m_tcu.target()), - write8sm_delegate(FUNC(pit8253_device::write), m_tcu.target()), 0x00ff); + read8sm_delegate(*m_tcu, FUNC(pit8253_device::read)), + write8sm_delegate(*m_tcu, FUNC(pit8253_device::write)), 0x00ff); } if (m_OPSEL & OPSEL_SS) @@ -428,12 +428,12 @@ void v53_device::install_peripheral_io() if (IOAG) // 8-bit space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x03, - read8sm_delegate(FUNC(v5x_scu_device::read), m_scu.target()), - write8sm_delegate(FUNC(v5x_scu_device::write), m_scu.target()), 0xffff); + read8sm_delegate(*m_scu, FUNC(v5x_scu_device::read)), + write8sm_delegate(*m_scu, FUNC(v5x_scu_device::write)), 0xffff); else space(AS_IO).install_readwrite_handler(base + 0x00, base + 0x07, - read8sm_delegate(FUNC(v5x_scu_device::read), m_scu.target()), - write8sm_delegate(FUNC(v5x_scu_device::write), m_scu.target()), 0x00ff); + read8sm_delegate(*m_scu, FUNC(v5x_scu_device::read)), + write8sm_delegate(*m_scu, FUNC(v5x_scu_device::write)), 0x00ff); } } diff --git a/src/devices/cpu/powerpc/ppc.h b/src/devices/cpu/powerpc/ppc.h index 4e4e1e144e2..4c11de761d3 100644 --- a/src/devices/cpu/powerpc/ppc.h +++ b/src/devices/cpu/powerpc/ppc.h @@ -469,6 +469,8 @@ protected: /* PowerPC 4XX-specific serial port state */ struct ppc4xx_spu_state { + ppc4xx_spu_state(device_t &owner) : tx_cb(owner) { } + uint8_t regs[9]; uint8_t txbuf; uint8_t rxbuf; @@ -502,8 +504,8 @@ protected: write32_delegate m_dcstore_cb; - read32_delegate m_ext_dma_read_cb[4]; - write32_delegate m_ext_dma_write_cb[4]; + read32_delegate::array<4> m_ext_dma_read_cb; + write32_delegate::array<4> m_ext_dma_write_cb; /* PowerPC function pointers for memory accesses/exceptions */ #ifdef PPC_H_INCLUDED_FROM_PPC_C diff --git a/src/devices/cpu/powerpc/ppccom.cpp b/src/devices/cpu/powerpc/ppccom.cpp index e0944cb0952..10133d73a01 100644 --- a/src/devices/cpu/powerpc/ppccom.cpp +++ b/src/devices/cpu/powerpc/ppccom.cpp @@ -217,6 +217,12 @@ ppc_device::ppc_device(const machine_config &mconfig, device_type type, const ch , m_flavor(flavor) , m_cap(cap) , m_tb_divisor(tb_divisor) + , m_spu(*this) + , m_dcr_read_func(*this) + , m_dcr_write_func(*this) + , m_dcstore_cb(*this) + , m_ext_dma_read_cb(*this) + , m_ext_dma_write_cb(*this) , m_cache(CACHE_SIZE + sizeof(internal_ppc_state)) , m_drcuml(nullptr) , m_drcfe(nullptr) @@ -740,8 +746,8 @@ void ppc_device::device_start() }; } m_system_clock = c_bus_frequency != 0 ? c_bus_frequency : clock(); - m_dcr_read_func = read32_delegate(); - m_dcr_write_func = write32_delegate(); + m_dcr_read_func.set(nullptr); + m_dcr_write_func.set(nullptr); m_tb_divisor = (m_tb_divisor * clock() + m_system_clock / 2 - 1) / m_system_clock; diff --git a/src/devices/cpu/psx/psx.cpp b/src/devices/cpu/psx/psx.cpp index 171ff14a5bb..741b96934e4 100644 --- a/src/devices/cpu/psx/psx.cpp +++ b/src/devices/cpu/psx/psx.cpp @@ -1338,11 +1338,11 @@ void psxcpu_device::update_scratchpad() { if( ( m_biu & BIU_RAM ) == 0 ) { - m_program->install_readwrite_handler( 0x1f800000, 0x1f8003ff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); + m_program->install_readwrite_handler( 0x1f800000, 0x1f8003ff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); } else if( ( m_biu & BIU_DS ) == 0 ) { - m_program->install_read_handler( 0x1f800000, 0x1f8003ff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ) ); + m_program->install_read_handler( 0x1f800000, 0x1f8003ff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)) ); m_program->nop_write( 0x1f800000, 0x1f8003ff ); } else @@ -1397,9 +1397,9 @@ void psxcpu_device::update_ram_config() } } - m_program->install_readwrite_handler( 0x00000000 + window_size, 0x1effffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); - m_program->install_readwrite_handler( 0x80000000 + window_size, 0x9effffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); - m_program->install_readwrite_handler( 0xa0000000 + window_size, 0xbeffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); + m_program->install_readwrite_handler( 0x00000000 + window_size, 0x1effffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); + m_program->install_readwrite_handler( 0x80000000 + window_size, 0x9effffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); + m_program->install_readwrite_handler( 0xa0000000 + window_size, 0xbeffffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); } void psxcpu_device::update_rom_config() @@ -1434,9 +1434,9 @@ void psxcpu_device::update_rom_config() if( window_size < max_window_size && !m_disable_rom_berr) { - m_program->install_readwrite_handler( 0x1fc00000 + window_size, 0x1fffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); - m_program->install_readwrite_handler( 0x9fc00000 + window_size, 0x9fffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); - m_program->install_readwrite_handler( 0xbfc00000 + window_size, 0xbfffffff, read32_delegate( FUNC( psxcpu_device::berr_r ), this ), write32_delegate( FUNC( psxcpu_device::berr_w ), this ) ); + m_program->install_readwrite_handler( 0x1fc00000 + window_size, 0x1fffffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); + m_program->install_readwrite_handler( 0x9fc00000 + window_size, 0x9fffffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); + m_program->install_readwrite_handler( 0xbfc00000 + window_size, 0xbfffffff, read32_delegate(*this, FUNC(psxcpu_device::berr_r)), write32_delegate(*this, FUNC(psxcpu_device::berr_w)) ); } } diff --git a/src/devices/cpu/sh/sh2.cpp b/src/devices/cpu/sh/sh2.cpp index 8feb977bbec..b9be01f3c7e 100644 --- a/src/devices/cpu/sh/sh2.cpp +++ b/src/devices/cpu/sh/sh2.cpp @@ -255,6 +255,9 @@ sh2_device::sh2_device(const machine_config &mconfig, device_type type, const ch , m_program_config("program", ENDIANNESS_BIG, 32, addrlines, 0, internal_map) , m_decrypted_program_config("decrypted_opcodes", ENDIANNESS_BIG, 32, addrlines, 0) , m_is_slave(0) + , m_dma_kludge_cb(*this) + , m_dma_fifo_data_available_cb(*this) + , m_ftcsr_read_cb(*this) , m_drcfe(nullptr) , m_debugger_temp(0) { @@ -520,9 +523,9 @@ void sh2_device::device_start() m_dma_current_active_timer[1]->adjust(attotime::never); /* resolve callbacks */ - m_dma_kludge_cb.bind_relative_to(*owner()); - m_dma_fifo_data_available_cb.bind_relative_to(*owner()); - m_ftcsr_read_cb.bind_relative_to(*owner()); + m_dma_kludge_cb.resolve(); + m_dma_fifo_data_available_cb.resolve(); + m_ftcsr_read_cb.resolve(); m_decrypted_program = has_space(AS_OPCODES) ? &space(AS_OPCODES) : &space(AS_PROGRAM); auto cache = m_decrypted_program->cache<2, 0, ENDIANNESS_BIG>(); diff --git a/src/devices/cpu/sh/sh2.h b/src/devices/cpu/sh/sh2.h index 0226c346407..fd4e9c01bcd 100644 --- a/src/devices/cpu/sh/sh2.h +++ b/src/devices/cpu/sh/sh2.h @@ -60,26 +60,11 @@ public: void set_is_slave(int slave) { m_is_slave = slave; } - template <typename Object> void set_dma_kludge_callback(Object &&cb) { m_dma_kludge_cb = std::forward<Object>(cb); } - template <class FunctionClass> void set_dma_kludge_callback( - int (FunctionClass::*callback)(uint32_t, uint32_t, uint32_t, int), const char *name) - { - set_dma_kludge_callback(dma_kludge_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_dma_kludge_callback(T &&... args) { m_dma_kludge_cb.set(std::forward<T>(args)...); } - template <typename Object> void set_dma_fifo_data_available_callback(Object &&cb) { m_dma_fifo_data_available_cb = std::forward<Object>(cb); } - template <class FunctionClass> void set_dma_fifo_data_available_callback( - int (FunctionClass::*callback)(uint32_t, uint32_t, uint32_t, int), const char *name) - { - set_dma_fifo_data_available_callback(dma_fifo_data_available_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - - template <typename Object> void set_ftcsr_read_callback(Object &&cb) { m_ftcsr_read_cb = std::forward<Object>(cb); } - template <class FunctionClass> void set_ftcsr_read_callback(void (FunctionClass::*callback)(uint32_t), const char *name) - { - set_ftcsr_read_callback(ftcsr_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_dma_fifo_data_available_callback(T &&... args) { m_dma_fifo_data_available_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_ftcsr_read_callback(T &&... args) { m_ftcsr_read_cb.set(std::forward<T>(args)...); } DECLARE_READ32_MEMBER(sh2_internal_a5); diff --git a/src/devices/cpu/tms32082/tms32082.cpp b/src/devices/cpu/tms32082/tms32082.cpp index 3ccebccd923..a14bf89c346 100644 --- a/src/devices/cpu/tms32082/tms32082.cpp +++ b/src/devices/cpu/tms32082/tms32082.cpp @@ -47,6 +47,7 @@ const uint32_t tms32082_mp_device::SHIFT_MASK[] = tms32082_mp_device::tms32082_mp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : cpu_device(mconfig, TMS32082_MP, tag, owner, clock) , m_program_config("program", ENDIANNESS_BIG, 32, 32, 0, address_map_constructor(FUNC(tms32082_mp_device::mp_internal_map), this)) + , m_cmd_callback(*this) { } @@ -70,11 +71,6 @@ std::unique_ptr<util::disasm_interface> tms32082_mp_device::create_disassembler( return std::make_unique<tms32082_mp_disassembler>(); } -void tms32082_mp_device::set_command_callback(write32_delegate callback) -{ - m_cmd_callback = callback; -} - READ32_MEMBER(tms32082_mp_device::mp_param_r) { @@ -156,6 +152,7 @@ WRITE32_MEMBER(tms32082_mp_device::mp_param_w) void tms32082_mp_device::device_start() { m_program = &space(AS_PROGRAM); + m_cmd_callback.resolve(); save_item(NAME(m_pc)); save_item(NAME(m_fetchpc)); diff --git a/src/devices/cpu/tms32082/tms32082.h b/src/devices/cpu/tms32082/tms32082.h index d281ac0eb78..b2f537f1536 100644 --- a/src/devices/cpu/tms32082/tms32082.h +++ b/src/devices/cpu/tms32082/tms32082.h @@ -71,8 +71,7 @@ public: DECLARE_READ32_MEMBER(mp_param_r); DECLARE_WRITE32_MEMBER(mp_param_w); - void set_command_callback(write32_delegate callback); - + template <typename... T> void set_command_callback(T &&... args) { m_cmd_callback.set(std::forward<T>(args)...); } void mp_internal_map(address_map &map); protected: diff --git a/src/devices/cpu/tms34010/tms34010.cpp b/src/devices/cpu/tms34010/tms34010.cpp index 7b2bc7d30ba..bd039d7e706 100644 --- a/src/devices/cpu/tms34010/tms34010.cpp +++ b/src/devices/cpu/tms34010/tms34010.cpp @@ -88,8 +88,12 @@ tms340x0_device::tms340x0_device(const machine_config &mconfig, device_type type , m_pixperclock(0) , m_scantimer(nullptr) , m_icount(0) + , m_scanline_ind16_cb(*this) + , m_scanline_rgb32_cb(*this) , m_output_int_cb(*this) , m_ioreg_pre_write_cb(*this) + , m_to_shiftreg_cb(*this) + , m_from_shiftreg_cb(*this) { } @@ -629,12 +633,12 @@ void tms340x0_device::check_interrupt() void tms340x0_device::device_start() { - m_scanline_ind16_cb.bind_relative_to(*owner()); - m_scanline_rgb32_cb.bind_relative_to(*owner()); + m_scanline_ind16_cb.resolve(); + m_scanline_rgb32_cb.resolve(); m_output_int_cb.resolve(); m_ioreg_pre_write_cb.resolve(); - m_to_shiftreg_cb.bind_relative_to(*owner()); - m_from_shiftreg_cb.bind_relative_to(*owner()); + m_to_shiftreg_cb.resolve(); + m_from_shiftreg_cb.resolve(); m_external_host_access = false; diff --git a/src/devices/cpu/tms34010/tms34010.h b/src/devices/cpu/tms34010/tms34010.h index 313f94d3503..e4488f3ca72 100644 --- a/src/devices/cpu/tms34010/tms34010.h +++ b/src/devices/cpu/tms34010/tms34010.h @@ -137,72 +137,32 @@ public: auto output_int() { return m_output_int_cb.bind(); } auto ioreg_pre_write() { return m_ioreg_pre_write_cb.bind(); } - // Setters for ind16 scanline callback - template <class FunctionClass> - void set_scanline_ind16_callback(void (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, int, const display_params *), - const char *name) + // Setter for ind16 scanline callback + template <typename... T> + void set_scanline_ind16_callback(T &&... args) { - set_scanline_ind16_callback(scanline_ind16_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_scanline_ind16_callback(const char *devname, void (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, int, const display_params *), - const char *name) - { - set_scanline_ind16_callback(scanline_ind16_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_scanline_ind16_callback(scanline_ind16_cb_delegate callback) - { - m_scanline_ind16_cb = callback; + m_scanline_ind16_cb.set(std::forward<T>(args)...); } - // Setters for rgb32 scanline callback - template <class FunctionClass> - void set_scanline_rgb32_callback(void (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, int, const display_params *), - const char *name) - { - set_scanline_rgb32_callback(scanline_rgb32_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_scanline_rgb32_callback(const char *devname, void (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, int, const display_params *), - const char *name) - { - set_scanline_rgb32_callback(scanline_rgb32_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_scanline_rgb32_callback(scanline_rgb32_cb_delegate callback) + // Setter for rgb32 scanline callback + template <typename... T> + void set_scanline_rgb32_callback(T &&... args) { - m_scanline_rgb32_cb = callback; + m_scanline_rgb32_cb.set(std::forward<T>(args)...); } - // Setters for shift register input callback - template <class FunctionClass> - void set_shiftreg_in_callback(void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) + // Setter for shift register input callback + template <typename... T> + void set_shiftreg_in_callback(T &&... args) { - set_shiftreg_in_callback(shiftreg_in_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_shiftreg_in_callback(const char *devname, void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_in_callback(shiftreg_in_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_shiftreg_in_callback(shiftreg_in_cb_delegate callback) - { - m_to_shiftreg_cb = callback; + m_to_shiftreg_cb.set(std::forward<T>(args)...); } // Setters for shift register output callback - template <class FunctionClass> - void set_shiftreg_out_callback(void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_out_callback(shiftreg_out_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_shiftreg_out_callback(const char *devname, void (FunctionClass::*callback)(address_space &, offs_t, uint16_t *), const char *name) - { - set_shiftreg_out_callback(shiftreg_out_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_shiftreg_out_callback(shiftreg_out_cb_delegate callback) + template <typename... T> + void set_shiftreg_out_callback(T &&... args) { - m_from_shiftreg_cb = callback; + m_from_shiftreg_cb.set(std::forward<T>(args)...); } void get_display_params(display_params *params); diff --git a/src/devices/imagedev/diablo.cpp b/src/devices/imagedev/diablo.cpp index f7da6fa26cb..58a34a664f6 100644 --- a/src/devices/imagedev/diablo.cpp +++ b/src/devices/imagedev/diablo.cpp @@ -36,8 +36,8 @@ diablo_image_device::diablo_image_device(const machine_config &mconfig, const ch device_image_interface(mconfig, *this), m_chd(nullptr), m_hard_disk_handle(nullptr), - m_device_image_load(load_delegate()), - m_device_image_unload(unload_delegate()), + m_device_image_load(*this), + m_device_image_unload(*this), m_interface(nullptr) { } @@ -72,6 +72,9 @@ const util::option_guide &diablo_image_device::create_option_guide() const void diablo_image_device::device_start() { + m_device_image_load.resolve(); + m_device_image_unload.resolve(); + m_chd = nullptr; // try to locate the CHD from a DISK_REGION diff --git a/src/devices/imagedev/harddriv.cpp b/src/devices/imagedev/harddriv.cpp index cdb4f72e098..e6e0c56f896 100644 --- a/src/devices/imagedev/harddriv.cpp +++ b/src/devices/imagedev/harddriv.cpp @@ -53,8 +53,8 @@ harddisk_image_device::harddisk_image_device(const machine_config &mconfig, devi device_image_interface(mconfig, *this), m_chd(nullptr), m_hard_disk_handle(nullptr), - m_device_image_load(load_delegate()), - m_device_image_unload(unload_delegate()), + m_device_image_load(*this), + m_device_image_unload(*this), m_interface(nullptr) { } @@ -89,6 +89,9 @@ const util::option_guide &harddisk_image_device::create_option_guide() const void harddisk_image_device::device_start() { + m_device_image_load.resolve(); + m_device_image_unload.resolve(); + m_chd = nullptr; // try to locate the CHD from a DISK_REGION diff --git a/src/devices/imagedev/harddriv.h b/src/devices/imagedev/harddriv.h index 65a13df10d3..a6a9e721bc5 100644 --- a/src/devices/imagedev/harddriv.h +++ b/src/devices/imagedev/harddriv.h @@ -33,8 +33,8 @@ public: harddisk_image_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual ~harddisk_image_device(); - template <typename... T> void set_device_load(T &&... args) { m_device_image_load = load_delegate(std::forward<T>(args)...); } - template <typename... T> void set_device_unload(T &&... args) { m_device_image_unload = unload_delegate(std::forward<T>(args)...); } + template <typename... T> void set_device_load(T &&... args) { m_device_image_load.set(std::forward<T>(args)...); } + template <typename... T> void set_device_unload(T &&... args) { m_device_image_unload.set(std::forward<T>(args)...); } void set_interface(const char *interface) { m_interface = interface; } // image-level overrides diff --git a/src/devices/imagedev/snapquik.cpp b/src/devices/imagedev/snapquik.cpp index 811910c1422..4cc0e8b6491 100644 --- a/src/devices/imagedev/snapquik.cpp +++ b/src/devices/imagedev/snapquik.cpp @@ -26,6 +26,7 @@ snapshot_image_device::snapshot_image_device(const machine_config &mconfig, cons snapshot_image_device::snapshot_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_image_interface(mconfig, *this) + , m_load(*this) , m_file_extensions(nullptr) , m_interface(nullptr) , m_delay(attotime::zero) @@ -56,6 +57,8 @@ TIMER_CALLBACK_MEMBER(snapshot_image_device::process_snapshot_or_quickload) void snapshot_image_device::device_start() { + m_load.resolve(); + /* allocate a timer */ m_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(snapshot_image_device::process_snapshot_or_quickload),this)); } diff --git a/src/devices/imagedev/snapquik.h b/src/devices/imagedev/snapquik.h index bb3d9f1f1c3..7ad476a0a3b 100644 --- a/src/devices/imagedev/snapquik.h +++ b/src/devices/imagedev/snapquik.h @@ -49,7 +49,7 @@ public: void set_extensions(const char *ext) { m_file_extensions = ext; } void set_delay(attotime delay) { m_delay = delay; } - template <typename... T> void set_load_callback(T &&... args) { m_load = load_delegate(std::forward<T>(args)...); } + template <typename... T> void set_load_callback(T &&... args) { m_load.set(std::forward<T>(args)...); } protected: snapshot_image_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); diff --git a/src/devices/machine/53c810.cpp b/src/devices/machine/53c810.cpp index b97999f5ad4..30fd7b08f33 100644 --- a/src/devices/machine/53c810.cpp +++ b/src/devices/machine/53c810.cpp @@ -623,6 +623,9 @@ void lsi53c810_device::add_opcode(uint8_t op, uint8_t mask, opcode_handler_deleg lsi53c810_device::lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : legacy_scsi_host_adapter(mconfig, LSI53C810, tag, owner, clock) + , m_irq_cb(*this) + , m_dma_cb(*this) + , m_fetch_cb(*this) { } @@ -630,9 +633,9 @@ void lsi53c810_device::device_start() { legacy_scsi_host_adapter::device_start(); - m_irq_cb.bind_relative_to(*owner()); - m_dma_cb.bind_relative_to(*owner()); - m_fetch_cb.bind_relative_to(*owner()); + m_irq_cb.resolve(); + m_dma_cb.resolve(); + m_fetch_cb.resolve(); for (auto & elem : dma_opcode) { diff --git a/src/devices/machine/53c810.h b/src/devices/machine/53c810.h index b80c0aa2c4a..b6ecd035072 100644 --- a/src/devices/machine/53c810.h +++ b/src/devices/machine/53c810.h @@ -17,19 +17,19 @@ public: // construction/destruction lsi53c810_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template <class FunctionClass> void set_irq_callback(void (FunctionClass::*callback)(int), const char *name) + template <typename... T> void set_irq_callback(T &&... args) { - m_irq_cb = irq_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)); + m_irq_cb.set(std::forward<T>(args)...); } - template <class FunctionClass> void set_dma_callback(void (FunctionClass::*callback)(uint32_t, uint32_t, int, int), const char *name) + template <typename... T> void set_dma_callback(T &&... args) { - m_dma_cb = dma_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)); + m_dma_cb.set(std::forward<T>(args)...); } - template <class FunctionClass> void set_fetch_callback(uint32_t (FunctionClass::*callback)(uint32_t), const char *name) + template <typename... T> void set_fetch_callback(T &&... args) { - m_fetch_cb = fetch_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)); + m_fetch_cb.set(std::forward<T>(args)...); } uint8_t reg_r(int offset); @@ -40,7 +40,7 @@ protected: virtual void device_start() override; private: - typedef delegate<void (void)> opcode_handler_delegate; + typedef delegate<void ()> opcode_handler_delegate; opcode_handler_delegate dma_opcode[256]; irq_delegate m_irq_cb; diff --git a/src/devices/machine/68307.cpp b/src/devices/machine/68307.cpp index ca98bbfa85b..70992f45b07 100644 --- a/src/devices/machine/68307.cpp +++ b/src/devices/machine/68307.cpp @@ -56,13 +56,17 @@ void m68307_cpu_device::device_add_mconfig(machine_config &config) } -m68307_cpu_device::m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : m68000_device(mconfig, tag, owner, clock, M68307, 16, 24, address_map_constructor(FUNC(m68307_cpu_device::internal_map), this)), +m68307_cpu_device::m68307_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + m68000_device(mconfig, tag, owner, clock, M68307, 16, 24, address_map_constructor(FUNC(m68307_cpu_device::internal_map), this)), m_write_irq(*this), m_write_a_tx(*this), m_write_b_tx(*this), m_read_inport(*this), m_write_outport(*this), + m_porta_r(*this), + m_porta_w(*this), + m_portb_r(*this), + m_portb_w(*this), m_duart(*this, "internal68681") { m_m68307SIM = nullptr; @@ -266,7 +270,10 @@ void m68307_cpu_device::device_start() m_read_inport.resolve(); m_write_outport.resolve_safe(); - set_port_callbacks(porta_read_delegate(), porta_write_delegate(), portb_read_delegate(), portb_write_delegate()); + m_porta_r.set(nullptr); + m_porta_w.set(nullptr); + m_portb_r.set(nullptr); + m_portb_w.set(nullptr); } @@ -312,10 +319,10 @@ WRITE16_MEMBER( m68307_cpu_device::m68307_internal_base_w ) base = (m_m68307_base & 0x0fff) << 12; //mask = (m_m68307_base & 0xe000) >> 13; //if ( m_m68307_base & 0x1000 ) mask |= 7; - m_internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_sim_w),this)); - m_internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_serial_w),this), 0xffff); - m_internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_r),this), write16_delegate(FUNC(m68307_cpu_device::m68307_internal_timer_w),this)); - m_internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_r),this), write8_delegate(FUNC(m68307_cpu_device::m68307_internal_mbus_w),this), 0xffff); + m_internal->install_readwrite_handler(base + 0x000, base + 0x04f, read16_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_sim_r)), write16_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_sim_w))); + m_internal->install_readwrite_handler(base + 0x100, base + 0x11f, read8_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_serial_r)), write8_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_serial_w)), 0xffff); + m_internal->install_readwrite_handler(base + 0x120, base + 0x13f, read16_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_timer_r)), write16_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_timer_w))); + m_internal->install_readwrite_handler(base + 0x140, base + 0x149, read8_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_mbus_r)), write8_delegate(*this, FUNC(m68307_cpu_device::m68307_internal_mbus_w)), 0xffff); break; diff --git a/src/devices/machine/68340.cpp b/src/devices/machine/68340.cpp index 312aabed99b..c5a9c7637f5 100644 --- a/src/devices/machine/68340.cpp +++ b/src/devices/machine/68340.cpp @@ -157,42 +157,37 @@ WRITE32_MEMBER( m68340_cpu_device::m68340_internal_base_w ) LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %08x (%08x) (m_m68340_base write)\n", pc(), offset*4,data,mem_mask); // map new modules - if (m_m68340_base&1) + if (m_m68340_base & 1) { int base = m_m68340_base & 0xfffff000; m_internal->install_readwrite_handler(base + 0x000, base + 0x03f, - read16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_r),this), - write16_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_w),this),0xffffffff); + read16_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_r)), + write16_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_w)),0xffffffff); m_internal->install_readwrite_handler(base + 0x010, base + 0x01f, // Intentionally punches a hole in previous address mapping - read8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_r),this), - write8_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_ports_w),this),0xffffffff); + read8_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_ports_r)), + write8_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_ports_w)),0xffffffff); m_internal->install_readwrite_handler(base + 0x040, base + 0x05f, - read32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_r),this), - write32_delegate(FUNC(m68340_cpu_device::m68340_internal_sim_cs_w),this)); + read32_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_r)), + write32_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_sim_cs_w))); m_internal->install_readwrite_handler(base + 0x600, base + 0x63f, - READ16_DEVICE_DELEGATE(m_timer[0], mc68340_timer_module_device, read), - WRITE16_DEVICE_DELEGATE(m_timer[0], mc68340_timer_module_device, write),0xffffffff); + read16_delegate(*m_timer[0], FUNC(mc68340_timer_module_device::read)), + write16_delegate(*m_timer[0], FUNC(mc68340_timer_module_device::write)),0xffffffff); m_internal->install_readwrite_handler(base + 0x640, base + 0x67f, - READ16_DEVICE_DELEGATE(m_timer[1], mc68340_timer_module_device, read), - WRITE16_DEVICE_DELEGATE(m_timer[1], mc68340_timer_module_device, write),0xffffffff); + read16_delegate(*m_timer[1], FUNC(mc68340_timer_module_device::read)), + write16_delegate(*m_timer[1], FUNC(mc68340_timer_module_device::write)),0xffffffff); m_internal->install_readwrite_handler(base + 0x700, base + 0x723, - read8sm_delegate(FUNC(mc68340_serial_module_device::read), &*m_serial), - write8sm_delegate(FUNC(mc68340_serial_module_device::write), &*m_serial),0xffffffff); + read8sm_delegate(*m_serial, FUNC(mc68340_serial_module_device::read)), + write8sm_delegate(*m_serial, FUNC(mc68340_serial_module_device::write)),0xffffffff); m_internal->install_readwrite_handler(base + 0x780, base + 0x7bf, - read32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_r),this), - write32_delegate(FUNC(m68340_cpu_device::m68340_internal_dma_w),this)); - + read32_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_r)), + write32_delegate(*this, FUNC(m68340_cpu_device::m68340_internal_dma_w))); } - } else { LOGMASKED(LOG_BASE, "%08x m68340_internal_base_w %08x, %04x (%04x) (should fall through?)\n", pc(), offset*4,data,mem_mask); } - - - } void m68340_cpu_device::m68340_internal_map(address_map &map) diff --git a/src/devices/machine/acorn_vidc.cpp b/src/devices/machine/acorn_vidc.cpp index 1bc5f9fc1e4..358b49dff4c 100644 --- a/src/devices/machine/acorn_vidc.cpp +++ b/src/devices/machine/acorn_vidc.cpp @@ -128,7 +128,7 @@ void acorn_vidc10_device::device_config_complete() screen().set_raw(clock() * 2 / 3, 1024,0,735, 624/2,0,292); // RiscOS 3 default screen settings if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(acorn_vidc10_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(acorn_vidc10_device::screen_update)); } //------------------------------------------------- diff --git a/src/devices/machine/adc083x.cpp b/src/devices/machine/adc083x.cpp index 26323a1d146..1e0fd2dd7e7 100644 --- a/src/devices/machine/adc083x.cpp +++ b/src/devices/machine/adc083x.cpp @@ -51,8 +51,8 @@ DEFINE_DEVICE_TYPE(ADC0832, adc0832_device, "adc0832", "ADC0832 A/D Converter") DEFINE_DEVICE_TYPE(ADC0834, adc0834_device, "adc0834", "ADC0834 A/D Converter") DEFINE_DEVICE_TYPE(ADC0838, adc0838_device, "adc0838", "ADC0838 A/D Converter") -adc083x_device::adc083x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t mux_bits) - : device_t(mconfig, type, tag, owner, clock), +adc083x_device::adc083x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, uint32_t mux_bits) : + device_t(mconfig, type, tag, owner, clock), m_mux_bits(mux_bits), m_cs(0), m_clk(0), @@ -65,7 +65,8 @@ adc083x_device::adc083x_device(const machine_config &mconfig, device_type type, m_sel0(0), m_state(STATE_IDLE), m_bit(0), - m_output(0) + m_output(0), + m_input_callback(*this) { } @@ -97,10 +98,10 @@ void adc083x_device::device_start() { clear_sars(); - /* resolve callbacks */ - m_input_callback.bind_relative_to(*owner()); + // resolve callbacks + m_input_callback.resolve(); - /* register for state saving */ + // register for state saving save_item( NAME(m_cs) ); save_item( NAME(m_clk) ); save_item( NAME(m_di) ); diff --git a/src/devices/machine/adc083x.h b/src/devices/machine/adc083x.h index 202c0ba94f5..babde2515b1 100644 --- a/src/devices/machine/adc083x.h +++ b/src/devices/machine/adc083x.h @@ -40,15 +40,7 @@ public: typedef device_delegate<double (uint8_t input)> input_delegate; // configuration helpers - void set_input_callback(input_delegate callback) { m_input_callback = callback; } - template <class FunctionClass> void set_input_callback(const char *devname, double (FunctionClass::*callback)(uint8_t), const char *name) - { - set_input_callback(input_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_input_callback(double (FunctionClass::*callback)(uint8_t), const char *name) - { - set_input_callback(input_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_input_callback(T &&... args) { m_input_callback.set(std::forward<T>(args)...); } DECLARE_WRITE_LINE_MEMBER( cs_write ); DECLARE_WRITE_LINE_MEMBER( clk_write ); diff --git a/src/devices/machine/adc1038.cpp b/src/devices/machine/adc1038.cpp index afdf9a2185d..3baac1fd1be 100644 --- a/src/devices/machine/adc1038.cpp +++ b/src/devices/machine/adc1038.cpp @@ -25,6 +25,7 @@ adc1038_device::adc1038_device(const machine_config &mconfig, const char *tag, d , m_adc_data(0) , m_sars(0) , m_gticlub_hack(false) + , m_input_cb(*this) { } @@ -34,7 +35,7 @@ adc1038_device::adc1038_device(const machine_config &mconfig, const char *tag, d void adc1038_device::device_start() { - m_input_cb.bind_relative_to(*owner()); + m_input_cb.resolve(); save_item(NAME(m_cycle)); save_item(NAME(m_clk)); diff --git a/src/devices/machine/adc1038.h b/src/devices/machine/adc1038.h index 0149c79a20e..d4ee5362fd0 100644 --- a/src/devices/machine/adc1038.h +++ b/src/devices/machine/adc1038.h @@ -8,7 +8,6 @@ Track/hold Function ***************************************************************************/ - #ifndef MAME_MACHINE_ADC1038_H #define MAME_MACHINE_ADC1038_H @@ -32,15 +31,7 @@ public: adc1038_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename Object> void set_input_callback(Object &&cb) { m_input_cb = std::forward<Object>(cb); } - template <class FunctionClass> void set_input_callback(const char *devname, int (FunctionClass::*callback)(int), const char *name) - { - set_input_callback(input_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_input_callback(int (FunctionClass::*callback)(int), const char *name) - { - set_input_callback(input_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_input_callback(T &&... args) { m_input_cb.set(std::forward<T>(args)...); } void set_gti_club_hack(bool hack) { m_gticlub_hack = hack; } diff --git a/src/devices/machine/adc1213x.cpp b/src/devices/machine/adc1213x.cpp index 1931498f58c..2f73575909c 100644 --- a/src/devices/machine/adc1213x.cpp +++ b/src/devices/machine/adc1213x.cpp @@ -57,6 +57,7 @@ adc12138_device::adc12138_device(const machine_config &mconfig, const char *tag, } adc12138_device::adc12138_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) + , m_ipt_read_cb(*this) { } @@ -76,7 +77,7 @@ void adc12138_device::device_start() m_end_conv = 0; /* resolve callbacks */ - m_ipt_read_cb.bind_relative_to(*owner()); + m_ipt_read_cb.resolve(); /* register for state saving */ save_item(NAME(m_cycle)); diff --git a/src/devices/machine/adc1213x.h b/src/devices/machine/adc1213x.h index 985659be2e3..7d3f69caccd 100644 --- a/src/devices/machine/adc1213x.h +++ b/src/devices/machine/adc1213x.h @@ -26,15 +26,7 @@ public: adc12138_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void set_ipt_convert_callback(ipt_convert_delegate callback) { m_ipt_read_cb = callback; } - template <class FunctionClass> void set_ipt_convert_callback(const char *devname, double (FunctionClass::*callback)(uint8_t), const char *name) - { - set_ipt_convert_callback(ipt_convert_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_ipt_convert_callback(double (FunctionClass::*callback)(uint8_t), const char *name) - { - set_ipt_convert_callback(ipt_convert_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_ipt_convert_callback(T &&... args) { m_ipt_read_cb.set(std::forward<T>(args)...); } void di_w(u8 data); void cs_w(u8 data); diff --git a/src/devices/machine/cs4031.cpp b/src/devices/machine/cs4031.cpp index 13ec9b90a6d..4cc990b43df 100644 --- a/src/devices/machine/cs4031.cpp +++ b/src/devices/machine/cs4031.cpp @@ -263,19 +263,19 @@ void cs4031_device::device_start() m_space->install_rom(0xffff0000, 0xffffffff, m_bios + 0xf0000); // install i/o accesses - m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma1)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma1)), 0xffffffff); - m_space_io->install_readwrite_handler(0x0020, 0x0023, read8sm_delegate(FUNC(pic8259_device::read), &(*m_intc1)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_intc1)), 0x0000ffff); - m_space_io->install_write_handler(0x0020, 0x0023, write8smo_delegate(FUNC(cs4031_device::config_address_w), this), 0x00ff0000); - m_space_io->install_readwrite_handler(0x0020, 0x0023, read8smo_delegate(FUNC(cs4031_device::config_data_r), this), write8smo_delegate(FUNC(cs4031_device::config_data_w), this), 0xff000000); - m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(FUNC(pit8254_device::read), &(*m_ctc)), write8sm_delegate(FUNC(pit8254_device::write), &(*m_ctc)), 0xffffffff); - m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(FUNC(cs4031_device::keyb_data_r), this), write8smo_delegate(FUNC(cs4031_device::keyb_data_w), this), 0x000000ff); - m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(FUNC(cs4031_device::portb_r), this), write8smo_delegate(FUNC(cs4031_device::portb_w), this), 0x0000ff00); - m_space_io->install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(FUNC(cs4031_device::keyb_status_r), this), write8smo_delegate(FUNC(cs4031_device::keyb_command_w), this), 0x000000ff); - m_space_io->install_readwrite_handler(0x0070, 0x0073, read8sm_delegate(FUNC(mc146818_device::read), &(*m_rtc)), write8sm_delegate(FUNC(cs4031_device::rtc_w), this), 0x0000ffff); - m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(FUNC(cs4031_device::dma_page_r), this), write8sm_delegate(FUNC(cs4031_device::dma_page_w), this), 0xffffffff); - m_space_io->install_readwrite_handler(0x0090, 0x0093, read8smo_delegate(FUNC(cs4031_device::sysctrl_r), this), write8smo_delegate(FUNC(cs4031_device::sysctrl_w), this), 0x00ff0000); - m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(FUNC(pic8259_device::read), &(*m_intc2)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_intc2)), 0x0000ffff); - m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(FUNC(cs4031_device::dma2_r),this), write8sm_delegate(FUNC(cs4031_device::dma2_w),this), 0xffffffff); + m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(*m_dma1, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma1, FUNC(am9517a_device::write)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0020, 0x0023, read8sm_delegate(*m_intc1, FUNC(pic8259_device::read)), write8sm_delegate(*m_intc1, FUNC(pic8259_device::write)), 0x0000ffff); + m_space_io->install_write_handler(0x0020, 0x0023, write8smo_delegate(*this, FUNC(cs4031_device::config_address_w)), 0x00ff0000); + m_space_io->install_readwrite_handler(0x0020, 0x0023, read8smo_delegate(*this, FUNC(cs4031_device::config_data_r)), write8smo_delegate(*this, FUNC(cs4031_device::config_data_w)), 0xff000000); + m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(*m_ctc, FUNC(pit8254_device::read)), write8sm_delegate(*m_ctc, FUNC(pit8254_device::write)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(*this, FUNC(cs4031_device::keyb_data_r)), write8smo_delegate(*this, FUNC(cs4031_device::keyb_data_w)), 0x000000ff); + m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(*this, FUNC(cs4031_device::portb_r)), write8smo_delegate(*this, FUNC(cs4031_device::portb_w)), 0x0000ff00); + m_space_io->install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(*this, FUNC(cs4031_device::keyb_status_r)), write8smo_delegate(*this, FUNC(cs4031_device::keyb_command_w)), 0x000000ff); + m_space_io->install_readwrite_handler(0x0070, 0x0073, read8sm_delegate(*m_rtc, FUNC(mc146818_device::read)), write8sm_delegate(*this, FUNC(cs4031_device::rtc_w)), 0x0000ffff); + m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(*this, FUNC(cs4031_device::dma_page_r)), write8sm_delegate(*this, FUNC(cs4031_device::dma_page_w)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0090, 0x0093, read8smo_delegate(*this, FUNC(cs4031_device::sysctrl_r)), write8smo_delegate(*this, FUNC(cs4031_device::sysctrl_w)), 0x00ff0000); + m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(*m_intc2, FUNC(pic8259_device::read)), write8sm_delegate(*m_intc2, FUNC(pic8259_device::write)), 0x0000ffff); + m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(*this, FUNC(cs4031_device::dma2_r)), write8sm_delegate(*this, FUNC(cs4031_device::dma2_w)), 0xffffffff); } //------------------------------------------------- diff --git a/src/devices/machine/dmac.cpp b/src/devices/machine/dmac.cpp index 88762d95237..811b660d0a5 100644 --- a/src/devices/machine/dmac.cpp +++ b/src/devices/machine/dmac.cpp @@ -113,8 +113,8 @@ void amiga_dmac_device::autoconfig_base_address(offs_t address) // internal dmac registers m_space->install_readwrite_handler(address, address + 0xff, - read16_delegate(FUNC(amiga_dmac_device::register_read), this), - write16_delegate(FUNC(amiga_dmac_device::register_write), this), 0xffff); + read16_delegate(*this, FUNC(amiga_dmac_device::register_read)), + write16_delegate(*this, FUNC(amiga_dmac_device::register_write)), 0xffff); // install access to the rom space if (m_rom) @@ -381,8 +381,8 @@ WRITE_LINE_MEMBER( amiga_dmac_device::configin_w ) // install autoconfig handler m_space->install_readwrite_handler(0xe80000, 0xe8007f, - read16_delegate(FUNC(amiga_autoconfig::autoconfig_read), static_cast<amiga_autoconfig *>(this)), - write16_delegate(FUNC(amiga_autoconfig::autoconfig_write), static_cast<amiga_autoconfig *>(this)), 0xffff); + read16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_read)), + write16_delegate(*this, FUNC(amiga_autoconfig::autoconfig_write)), 0xffff); } } diff --git a/src/devices/machine/f3853.cpp b/src/devices/machine/f3853.cpp index 7a23f5a04d0..7657a97bf36 100644 --- a/src/devices/machine/f3853.cpp +++ b/src/devices/machine/f3853.cpp @@ -47,6 +47,7 @@ f3853_device::f3853_device(const machine_config &mconfig, device_type type, cons device_t(mconfig, type, tag, owner, clock), m_int_req_callback(*this), m_pri_out_callback(*this), + m_int_daisy_chain_callback(*this), m_int_vector(0), m_prescaler(31), m_priority_line(false), @@ -89,7 +90,7 @@ void f3853_device::device_resolve_objects() { m_int_req_callback.resolve_safe(); m_pri_out_callback.resolve_safe(); // TODO: not implemented - m_int_daisy_chain_callback.bind_relative_to(*owner()); + m_int_daisy_chain_callback.resolve(); } void f3851_device::device_resolve_objects() diff --git a/src/devices/machine/f3853.h b/src/devices/machine/f3853.h index 48d0543dfec..5ebfbf450ca 100644 --- a/src/devices/machine/f3853.h +++ b/src/devices/machine/f3853.h @@ -71,7 +71,7 @@ public: auto int_req_callback() { return m_int_req_callback.bind(); } auto pri_out_callback() { return m_pri_out_callback.bind(); } - template<typename Object> void set_int_daisy_chain_callback(Object &&cb) { m_int_daisy_chain_callback = std::forward<Object>(cb); } + template <typename... T> void set_int_daisy_chain_callback(T &&... args) { m_int_daisy_chain_callback.set(std::forward<T>(args)...); } virtual DECLARE_READ8_MEMBER(read); virtual DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/machine/fdc37c93x.cpp b/src/devices/machine/fdc37c93x.cpp index 0d5b80f2d7d..48991186a70 100644 --- a/src/devices/machine/fdc37c93x.cpp +++ b/src/devices/machine/fdc37c93x.cpp @@ -722,9 +722,9 @@ void fdc37c93x_device::remap(int space_id, offs_t start, offs_t end) if (space_id == AS_IO) { if (sysopt_pin == 0) - m_isa->install_device(0x03f0, 0x03f3, read8_delegate(FUNC(fdc37c93x_device::read_fdc37c93x), this), write8_delegate(FUNC(fdc37c93x_device::write_fdc37c93x), this)); + m_isa->install_device(0x03f0, 0x03f3, read8_delegate(*this, FUNC(fdc37c93x_device::read_fdc37c93x)), write8_delegate(*this, FUNC(fdc37c93x_device::write_fdc37c93x))); else - m_isa->install_device(0x0370, 0x0373, read8_delegate(FUNC(fdc37c93x_device::read_fdc37c93x), this), write8_delegate(FUNC(fdc37c93x_device::write_fdc37c93x), this)); + m_isa->install_device(0x0370, 0x0373, read8_delegate(*this, FUNC(fdc37c93x_device::read_fdc37c93x)), write8_delegate(*this, FUNC(fdc37c93x_device::write_fdc37c93x))); if (enabled_logical[LogicalDevice::FDC] == true) map_fdc_addresses(); if (enabled_logical[LogicalDevice::Parallel] == true) diff --git a/src/devices/machine/gt64xxx.cpp b/src/devices/machine/gt64xxx.cpp index fdde2d52c66..21ebec2ce6c 100644 --- a/src/devices/machine/gt64xxx.cpp +++ b/src/devices/machine/gt64xxx.cpp @@ -367,22 +367,22 @@ void gt64xxx_device::map_cpu_space() // PCI IO Window winStart = m_reg[GREG_PCI_IO_LO]<<21; winEnd = (m_reg[GREG_PCI_IO_LO]<<21) | (m_reg[GREG_PCI_IO_HI]<<21) | 0x1fffff; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_io_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_io_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::master_io_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::master_io_w))); logerror("map_cpu_space pci_io start: %08X end: %08X\n", winStart, winEnd); // PCI MEM0 Window winStart = m_reg[GREG_PCI_MEM0_LO]<<21; winEnd = (m_reg[GREG_PCI_MEM0_LO]<<21) | (m_reg[GREG_PCI_MEM0_HI]<<21) | 0x1fffff; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_mem0_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_mem0_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::master_mem0_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::master_mem0_w))); logerror("map_cpu_space pci_mem0 start: %08X end: %08X\n", winStart, winEnd); // PCI MEM1 Window winStart = m_reg[GREG_PCI_MEM1_LO]<<21; winEnd = (m_reg[GREG_PCI_MEM1_LO]<<21) | (m_reg[GREG_PCI_MEM1_HI]<<21) | 0x1fffff; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::master_mem1_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::master_mem1_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::master_mem1_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::master_mem1_w))); logerror("map_cpu_space pci_mem1 start: %08X end: %08X\n", winStart, winEnd); // Setup the address mapping table for DMA lookups @@ -424,8 +424,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_0_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_0_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::ras_0_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::ras_0_w))); LOGGALILEO("map_extra RAS0 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize); // RAS1 @@ -433,8 +433,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_1_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_1_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::ras_1_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::ras_1_w))); LOGGALILEO("map_extra RAS1 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize); // RAS2 @@ -442,8 +442,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_2_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_2_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::ras_2_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::ras_2_w))); LOGGALILEO("map_extra RAS2 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize); // RAS3 @@ -451,8 +451,8 @@ void gt64xxx_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_LO + 0x8 / 4 * ramIndex] << 20); winEnd = (m_reg[GREG_R1_0_LO + 0x10 / 4 * (ramIndex / 2)] << 21) | (m_reg[GREG_RAS0_HI + 0x8 / 4 * ramIndex] << 20) | 0xfffff; winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(gt64xxx_device::ras_3_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(gt64xxx_device::ras_3_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(gt64xxx_device::ras_3_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(gt64xxx_device::ras_3_w))); LOGGALILEO("map_extra RAS3 start=%08X end=%08X size=%08X\n", winStart, winEnd, winSize); } diff --git a/src/devices/machine/i82357.cpp b/src/devices/machine/i82357.cpp index c1ff793ab87..6c6c75e838d 100644 --- a/src/devices/machine/i82357.cpp +++ b/src/devices/machine/i82357.cpp @@ -122,15 +122,15 @@ void i82357_device::map(address_map &map) map(0x061, 0x061).rw(FUNC(i82357_device::nmi_reg_r), FUNC(i82357_device::nmi_reg_w)); // NMI Enable Register (0x70, 72, 74, 76) - map(0x070, 0x077).lw8("nmi_rtc", - [this](offs_t offset, u8 data) - { - m_nmi_enabled = !BIT(data, 7); + map(0x070, 0x077).lw8( + [this] (offs_t offset, u8 data) + { + m_nmi_enabled = !BIT(data, 7); - m_out_rtc(0, data & 0x7f); + m_out_rtc(0, data & 0x7f); - m_nmi_check->adjust(attotime::zero); - }).umask64(0xff); + m_nmi_check->adjust(attotime::zero); + }, "nmi_rtc").umask64(0xff); map(0x081, 0x081).rw(m_dma[0], FUNC(eisa_dma_device::get_address_page<2>), FUNC(eisa_dma_device::set_address_page<2>)); map(0x082, 0x082).rw(m_dma[0], FUNC(eisa_dma_device::get_address_page<3>), FUNC(eisa_dma_device::set_address_page<3>)); @@ -158,16 +158,16 @@ void i82357_device::map(address_map &map) //map(0x40f, 0x40f); // ISP Test Register map(0x461, 0x461).rw(FUNC(i82357_device::nmi_ext_r), FUNC(i82357_device::nmi_ext_w)); - map(0x462, 0x462).lw8("nmi_ioport", - [this](u8 data) - { - if (m_nmi_ext & NMI_EXT_EN_IOPORT) + map(0x462, 0x462).lw8( + [this] (u8 data) { - m_nmi_ext |= NMI_EXT_IOPORT; + if (m_nmi_ext & NMI_EXT_EN_IOPORT) + { + m_nmi_ext |= NMI_EXT_IOPORT; - m_nmi_check->adjust(attotime::zero); - } - }); + m_nmi_check->adjust(attotime::zero); + } + }, "nmi_ioport"); //map(0x464, 0x464); // Last 32-bit bus master granted (L) map(0x481, 0x481).rw(m_dma[0], FUNC(eisa_dma_device::get_address_page_high<2>), FUNC(eisa_dma_device::set_address_page_high<2>)); @@ -183,9 +183,9 @@ void i82357_device::map(address_map &map) map(0x4c6, 0x4c6).rw(m_dma[1], FUNC(eisa_dma_device::get_count_high<1>), FUNC(eisa_dma_device::set_count_high<1>)); map(0x4ca, 0x4ca).rw(m_dma[1], FUNC(eisa_dma_device::get_count_high<2>), FUNC(eisa_dma_device::set_count_high<2>)); map(0x4ce, 0x4ce).rw(m_dma[1], FUNC(eisa_dma_device::get_count_high<3>), FUNC(eisa_dma_device::set_count_high<3>)); - map(0x4d0, 0x4d1).lrw8("elcr", - [this](offs_t offset) { return m_elcr[offset]; }, - [this](offs_t offset, u8 data) { m_elcr[offset] = data; }); + map(0x4d0, 0x4d1).lrw8( + NAME([this] (offs_t offset) { return m_elcr[offset]; }), + NAME([this] (offs_t offset, u8 data) { m_elcr[offset] = data; })); //map(0x4d4, 0x4d4); // DMA2 Set Chaining Mode //map(0x4d6, 0x4d6); // DMA2 Ext Write Mode Register diff --git a/src/devices/machine/i82371sb.cpp b/src/devices/machine/i82371sb.cpp index b149d98a48f..8a83514ed82 100644 --- a/src/devices/machine/i82371sb.cpp +++ b/src/devices/machine/i82371sb.cpp @@ -961,8 +961,8 @@ void i82371sb_ide_device::map_extra(uint64_t memory_window_start, uint64_t memor { offs_t m_base = bmiba & 0xfff0; - io_space->install_readwrite_handler(m_base, m_base + 0x7, read32_delegate(FUNC(bus_master_ide_controller_device::bmdma_r), &(*m_ide1)), write32_delegate(FUNC(bus_master_ide_controller_device::bmdma_w), &(*m_ide1)), 0xffffffff); - io_space->install_readwrite_handler(m_base + 0x8, m_base + 0xf, read32_delegate(FUNC(bus_master_ide_controller_device::bmdma_r), &(*m_ide2)), write32_delegate(FUNC(bus_master_ide_controller_device::bmdma_w), &(*m_ide2)), 0xffffffff); + io_space->install_readwrite_handler(m_base, m_base + 0x7, read32_delegate(*m_ide1, FUNC(bus_master_ide_controller_device::bmdma_r)), write32_delegate(*m_ide1, FUNC(bus_master_ide_controller_device::bmdma_w)), 0xffffffff); + io_space->install_readwrite_handler(m_base + 0x8, m_base + 0xf, read32_delegate(*m_ide2, FUNC(bus_master_ide_controller_device::bmdma_r)), write32_delegate(*m_ide2, FUNC(bus_master_ide_controller_device::bmdma_w)), 0xffffffff); } } diff --git a/src/devices/machine/keyboard.cpp b/src/devices/machine/keyboard.cpp index 52502597227..182751b46cc 100644 --- a/src/devices/machine/keyboard.cpp +++ b/src/devices/machine/keyboard.cpp @@ -253,7 +253,7 @@ generic_keyboard_device::generic_keyboard_device( , m_config(*this, "GENKBD_CFG") , m_modifiers(*this, "GENKBD_MOD") , m_last_modifiers(0U) - , m_keyboard_cb() + , m_keyboard_cb(*this) { } @@ -272,7 +272,7 @@ ioport_constructor generic_keyboard_device::device_input_ports() const void generic_keyboard_device::device_start() { - m_keyboard_cb.bind_relative_to(*owner()); + m_keyboard_cb.resolve(); save_item(NAME(m_last_modifiers)); } diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h index 4788d51f33b..2b4f32e856f 100644 --- a/src/devices/machine/keyboard.h +++ b/src/devices/machine/keyboard.h @@ -79,18 +79,11 @@ public: device_t *owner, u32 clock); - template <class FunctionClass> - void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name) - { - set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - // FIXME: this should be aware of current device for resolving the tag - template <class FunctionClass> - void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name) + template <typename... T> + void set_keyboard_callback(T &&... args) { - set_keyboard_callback(output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + m_keyboard_cb.set(std::forward<T>(args)...); } - void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; } virtual ioport_constructor device_input_ports() const override; diff --git a/src/devices/machine/laserdsc.cpp b/src/devices/machine/laserdsc.cpp index 436a238fe88..8176ac14f29 100644 --- a/src/devices/machine/laserdsc.cpp +++ b/src/devices/machine/laserdsc.cpp @@ -62,9 +62,12 @@ laserdisc_device::laserdisc_device(const machine_config &mconfig, device_type ty : device_t(mconfig, type, tag, owner, clock), device_sound_interface(mconfig, *this), device_video_interface(mconfig, *this), + m_getdisc_callback(*this), + m_audio_callback(*this), m_overwidth(0), m_overheight(0), m_overclip(0, -1, 0, -1), + m_overupdate_rgb32(*this), m_disc(nullptr), m_width(0), m_height(0), @@ -629,6 +632,8 @@ int32_t laserdisc_device::generic_update(const vbi_metadata &vbi, int fieldnum, void laserdisc_device::init_disc() { + m_getdisc_callback.resolve(); + // get a handle to the disc to play if (!m_getdisc_callback.isnull()) m_disc = m_getdisc_callback(); @@ -730,7 +735,7 @@ void laserdisc_device::init_video() if (m_overenable) { // bind our handlers - m_overupdate_rgb32.bind_relative_to(*owner()); + m_overupdate_rgb32.resolve(); // allocate overlay bitmaps for (auto & elem : m_overbitmap) @@ -754,6 +759,8 @@ void laserdisc_device::init_video() void laserdisc_device::init_audio() { + m_audio_callback.resolve(); + // allocate a stream m_stream = stream_alloc(0, 2, 48000); diff --git a/src/devices/machine/laserdsc.h b/src/devices/machine/laserdsc.h index 78f4ad2702a..e2877a4a216 100644 --- a/src/devices/machine/laserdsc.h +++ b/src/devices/machine/laserdsc.h @@ -18,6 +18,9 @@ #include "vbiparse.h" #include "avhuff.h" +#include <type_traits> +#include <utility> + //************************************************************************** // CONSTANTS @@ -122,25 +125,15 @@ public: void set_overlay_config(const laserdisc_overlay_config &config) { static_cast<laserdisc_overlay_config &>(*this) = config; } // configuration helpers - template <typename... T> void set_get_disc(T &&... args) { m_getdisc_callback = get_disc_delegate(std::forward<T>(args)...); } - template <typename... T> void set_audio(T &&... args) { m_audio_callback = audio_delegate(std::forward<T>(args)...); } - // FIXME: these should be aware of current device for resolving the tag - template <class FunctionClass> - void set_overlay(uint32_t width, uint32_t height, u32 (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, const rectangle &), const char *name) - { - set_overlay(width, height, screen_update_rgb32_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_overlay(uint32_t width, uint32_t height, const char *devname, u32 (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, const rectangle &), const char *name) - { - set_overlay(width, height, screen_update_rgb32_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_overlay(uint32_t width, uint32_t height, screen_update_rgb32_delegate &&update) + template <typename... T> void set_get_disc(T &&... args) { m_getdisc_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_audio(T &&... args) { m_audio_callback.set(std::forward<T>(args)...); } + template <typename... T> + void set_overlay(uint32_t width, uint32_t height, T &&... args) { m_overwidth = width; m_overheight = height; m_overclip.set(0, width - 1, 0, height - 1); - m_overupdate_rgb32 = std::move(update); + m_overupdate_rgb32.set(std::forward<T>(args)...); } void set_overlay_clip(int32_t minx, int32_t maxx, int32_t miny, int32_t maxy) { m_overclip.set(minx, maxx, miny, maxy); } void set_overlay_position(float posx, float posy) diff --git a/src/devices/machine/lpci.cpp b/src/devices/machine/lpci.cpp index fdbdc218b31..134fd1924c3 100644 --- a/src/devices/machine/lpci.cpp +++ b/src/devices/machine/lpci.cpp @@ -93,9 +93,13 @@ DEFINE_DEVICE_TYPE(PCI_BUS_LEGACY, pci_bus_legacy_device, "pci_bus_legacy", "PCI //------------------------------------------------- pci_bus_legacy_device::pci_bus_legacy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, PCI_BUS_LEGACY, tag, owner, clock), - m_father(nullptr) + m_read_callback(*this), + m_write_callback(*this), + m_father(nullptr), + m_siblings_count(0) { - m_siblings_count = 0; + std::fill(std::begin(m_siblings), std::end(m_siblings), nullptr); + std::fill(std::begin(m_siblings_busnum), std::end(m_siblings_busnum), 0); } /*************************************************************************** @@ -255,12 +259,10 @@ void pci_bus_legacy_device::device_start() m_devicenum = -1; /* find all our device callbacks */ - for (auto &cb : m_read_callback) - cb.bind_relative_to(*owner()); - for (auto &cb : m_write_callback) - cb.bind_relative_to(*owner()); + m_read_callback.resolve_all(); + m_write_callback.resolve_all(); - if (m_father != nullptr) { + if (m_father) { pci_bus_legacy_device *father = machine().device<pci_bus_legacy_device>(m_father); if (father) father->add_sibling(this, m_busnum); diff --git a/src/devices/machine/lpci.h b/src/devices/machine/lpci.h index 46aeb83aa5d..a95b31c3170 100644 --- a/src/devices/machine/lpci.h +++ b/src/devices/machine/lpci.h @@ -42,8 +42,19 @@ public: void set_busnum(int busnum) { m_busnum = busnum; } void set_father(const char *father) { m_father = father; } - template <typename... T> void set_device_read(int num, T &&... args) { m_read_callback[num] = pci_bus_legacy_read_delegate(std::forward<T>(args)...); } - template <typename... T> void set_device_write(int num, T &&... args) { m_write_callback[num] = pci_bus_legacy_write_delegate(std::forward<T>(args)...); } + template <typename F, typename G> + void set_device(int num, F &&read, const char *rname, G &&write, const char *wname) + { + m_read_callback[num].set(std::forward<F>(read), rname); + m_write_callback[num].set(std::forward<G>(write), wname); + } + + template <typename T, typename F, typename G> + void set_device(int num, T &&target, F &&read, const char *rname, G &&write, const char *wname) + { + m_read_callback[num].set(target, std::forward<F>(read), rname); + m_write_callback[num].set(target, std::forward<G>(write), wname); + } pci_bus_legacy_device *pci_search_bustree(int busnum, int devicenum, pci_bus_legacy_device *pcibus); void add_sibling(pci_bus_legacy_device *sibling, int busnum); @@ -56,8 +67,8 @@ protected: private: uint8_t m_busnum; - pci_bus_legacy_read_delegate m_read_callback[32]; - pci_bus_legacy_write_delegate m_write_callback[32]; + pci_bus_legacy_read_delegate::array<32> m_read_callback; + pci_bus_legacy_write_delegate::array<32> m_write_callback; const char * m_father; pci_bus_legacy_device * m_siblings[8]; uint8_t m_siblings_busnum[8]; @@ -72,5 +83,4 @@ private: // device type definition DECLARE_DEVICE_TYPE(PCI_BUS_LEGACY, pci_bus_legacy_device) - #endif // MAME_MACHINE_LPCI_H diff --git a/src/devices/machine/mc6854.cpp b/src/devices/machine/mc6854.cpp index acaa74b0cf9..2cb16191140 100644 --- a/src/devices/machine/mc6854.cpp +++ b/src/devices/machine/mc6854.cpp @@ -166,10 +166,11 @@ static const int word_length[4] = { 5, 6, 7, 8 }; DEFINE_DEVICE_TYPE(MC6854, mc6854_device, "mc6854", "Motorola MC6854 ADLC") -mc6854_device::mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MC6854, tag, owner, clock), +mc6854_device::mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, MC6854, tag, owner, clock), m_out_irq_cb(*this), m_out_txd_cb(*this), + m_out_frame_cb(*this), m_out_rts_cb(*this), m_out_dtr_cb(*this), m_cr1(0), @@ -210,7 +211,7 @@ void mc6854_device::device_start() { m_out_irq_cb.resolve_safe(); m_out_txd_cb.resolve(); - m_out_frame_cb.bind_relative_to(*owner()); + m_out_frame_cb.resolve(); m_out_rts_cb.resolve_safe(); m_out_dtr_cb.resolve_safe(); diff --git a/src/devices/machine/mc6854.h b/src/devices/machine/mc6854.h index 0f90544336b..defd3aa76c1 100644 --- a/src/devices/machine/mc6854.h +++ b/src/devices/machine/mc6854.h @@ -28,16 +28,7 @@ public: auto out_rts_cb() { return m_out_rts_cb.bind(); } auto out_dtr_cb() { return m_out_dtr_cb.bind(); } - template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); } - void set_out_frame_callback(out_frame_delegate callback) { m_out_frame_cb = callback; } - template <class FunctionClass> void set_out_frame_callback(const char *devname, void (FunctionClass::*callback)(uint8_t *, int), const char *name) - { - set_out_frame_callback(out_frame_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_out_frame_callback(void (FunctionClass::*callback)(uint8_t *, int), const char *name) - { - set_out_frame_callback(out_frame_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_out_frame_callback(T &&... args) { m_out_frame_cb.set(std::forward<T>(args)...); } /* interface to CPU via address/data bus*/ uint8_t read(offs_t offset); @@ -71,7 +62,7 @@ private: /* low-level, bit-based interface */ devcb_write_line m_out_txd_cb; /* transmit bit */ - /* high-level, frame-based interface */ + /* high-level, frame-based interface */ out_frame_delegate m_out_frame_cb; /* control lines */ diff --git a/src/devices/machine/microtch.cpp b/src/devices/machine/microtch.cpp index 368f943d2bf..6d4ae2c246f 100644 --- a/src/devices/machine/microtch.cpp +++ b/src/devices/machine/microtch.cpp @@ -25,6 +25,7 @@ microtouch_device::microtouch_device(const machine_config &mconfig, const char * device_serial_interface(mconfig, *this), m_rx_buffer_ptr(0), m_tx_buffer_num(0), m_tx_buffer_ptr(0), m_reset_done(0), m_format(0), m_mode(0), m_last_touch_state(0), m_last_x(0), m_last_y(0), + m_out_touch_cb(*this), m_out_stx_func(*this), m_touch(*this, "TOUCH"), m_touchx(*this, "TOUCH_X"), @@ -203,6 +204,7 @@ void microtouch_device::device_start() set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1); //8N1? set_tra_rate(clock()); set_rcv_rate(clock()); + m_out_touch_cb.resolve(); m_out_stx_func.resolve_safe(); m_output_valid = false; diff --git a/src/devices/machine/microtch.h b/src/devices/machine/microtch.h index 0cb486aa3f1..ed56310baca 100644 --- a/src/devices/machine/microtch.h +++ b/src/devices/machine/microtch.h @@ -12,19 +12,23 @@ class microtouch_device : public device_serial_interface { public: + typedef device_delegate<int (int *, int *)> touch_cb; + microtouch_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); auto stx() { return m_out_stx_func.bind(); } - virtual ioport_constructor device_input_ports() const override; DECLARE_WRITE_LINE_MEMBER(rx) { device_serial_interface::rx_w(state); } DECLARE_INPUT_CHANGED_MEMBER(touch); - typedef device_delegate<int (int *, int *)> touch_cb; - template <typename... T> void set_touch_callback(T &&... args) { m_out_touch_cb = touch_cb(std::forward<T>(args)...); } + template <typename... T> void set_touch_callback(T &&... args) { m_out_touch_cb.set(std::forward<T>(args)...); } protected: + // device_t implementation + virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; + + // device_serial_interface implementation virtual void tra_callback() override; virtual void tra_complete() override; virtual void rcv_complete() override; diff --git a/src/devices/machine/msm6253.cpp b/src/devices/machine/msm6253.cpp index 96722247d08..6653156c826 100644 --- a/src/devices/machine/msm6253.cpp +++ b/src/devices/machine/msm6253.cpp @@ -26,12 +26,13 @@ DEFINE_DEVICE_TYPE(MSM6253, msm6253_device, "msm6253", "OKI MSM6253 A/D Converte msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, MSM6253, tag, owner, clock) , m_analog_ports(*this, {finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG, finder_base::DUMMY_TAG}) + , m_analog_input_cb(*this) , m_shift_register(0) { - m_analog_input_cb[0] = port_read_delegate(FUNC(msm6253_device::port_read<0>), this); - m_analog_input_cb[1] = port_read_delegate(FUNC(msm6253_device::port_read<1>), this); - m_analog_input_cb[2] = port_read_delegate(FUNC(msm6253_device::port_read<2>), this); - m_analog_input_cb[3] = port_read_delegate(FUNC(msm6253_device::port_read<3>), this); + m_analog_input_cb[0].set(*this, FUNC(msm6253_device::port_read<0>)); + m_analog_input_cb[1].set(*this, FUNC(msm6253_device::port_read<1>)); + m_analog_input_cb[2].set(*this, FUNC(msm6253_device::port_read<2>)); + m_analog_input_cb[3].set(*this, FUNC(msm6253_device::port_read<3>)); } //------------------------------------------------- @@ -40,11 +41,11 @@ msm6253_device::msm6253_device(const machine_config &mconfig, const char *tag, d void msm6253_device::device_start() { + // resolve each callback + m_analog_input_cb.resolve_all(); + for (int port = 0; port < 4; port++) { - // resolve each callback - m_analog_input_cb[port].bind_relative_to(*owner()); - // ensure that any configured ports truly are analog if (m_analog_ports[port].found()) { diff --git a/src/devices/machine/msm6253.h b/src/devices/machine/msm6253.h index bfb5920ef16..8830c7dc969 100644 --- a/src/devices/machine/msm6253.h +++ b/src/devices/machine/msm6253.h @@ -39,15 +39,7 @@ public: // configuration template <unsigned P> void set_input_tag(const char *tag) { m_analog_ports[P].set_tag(tag); } - template <unsigned P> void set_input_cb(port_read_delegate callback) { m_analog_input_cb[P] = callback; } - template <unsigned P, class FunctionClass> void set_input_cb(const char *devname, ioport_value (FunctionClass::*callback)(), const char *name) - { - set_input_cb<P>(port_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <unsigned P, class FunctionClass> void set_input_cb(ioport_value (FunctionClass::*callback)(), const char *name) - { - set_input_cb<P>(port_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <unsigned P, typename... T> void set_input_cb(T &&... args) { m_analog_input_cb[P].set(std::forward<T>(args)...); } // write handlers WRITE8_MEMBER(address_w); @@ -68,7 +60,7 @@ private: // input configuration optional_ioport_array<4> m_analog_ports; - port_read_delegate m_analog_input_cb[4]; + port_read_delegate::array<4> m_analog_input_cb; // private data u8 m_shift_register; diff --git a/src/devices/machine/myb3k_kbd.cpp b/src/devices/machine/myb3k_kbd.cpp index b1a1c626cd7..9b4519cccb1 100644 --- a/src/devices/machine/myb3k_kbd.cpp +++ b/src/devices/machine/myb3k_kbd.cpp @@ -336,7 +336,7 @@ myb3k_keyboard_device::myb3k_keyboard_device( device_t *owner, u32 clock) : device_t(mconfig, type, tag, owner, clock) - , m_keyboard_cb() + , m_keyboard_cb(*this) , m_io_kbd_t(*this, "MYB3K_T%X", 0U) { } @@ -353,8 +353,7 @@ ioport_constructor myb3k_keyboard_device::device_input_ports() const void myb3k_keyboard_device::device_start() { - m_keyboard_cb.bind_relative_to(*owner()); - device_reset(); + m_keyboard_cb.resolve(); } void myb3k_keyboard_device::device_reset() diff --git a/src/devices/machine/myb3k_kbd.h b/src/devices/machine/myb3k_kbd.h index 34c2c5cc414..384d837bf20 100644 --- a/src/devices/machine/myb3k_kbd.h +++ b/src/devices/machine/myb3k_kbd.h @@ -43,18 +43,11 @@ public: TIMER_ID_SECOND_BYTE }; - template <class FunctionClass> - void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name) + template <typename... T> + void set_keyboard_callback(T &&... args) { - set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_keyboard_cb.set(std::forward<T>(args)...); } - // FIXME: this should be aware of current device for resolving the tag - template <class FunctionClass> - void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name) - { - set_keyboard_callback(output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; } protected: myb3k_keyboard_device( diff --git a/src/devices/machine/netlist.cpp b/src/devices/machine/netlist.cpp index 2d0ba8244b4..08d1e59a889 100644 --- a/src/devices/machine/netlist.cpp +++ b/src/devices/machine/netlist.cpp @@ -184,7 +184,7 @@ public: ATTR_COLD void register_callback(netlist_mame_analog_output_device::output_delegate &&callback) { - m_callback = std::move(callback); + m_callback.reset(new netlist_mame_analog_output_device::output_delegate(std::move(callback))); } NETLIB_UPDATEI() @@ -196,7 +196,7 @@ public: if (std::fabs(cur - m_last) > 1e-6) { m_cpu_device->update_icount(exec().time()); - m_callback(cur, m_cpu_device->local_time()); + (*m_callback)(cur, m_cpu_device->local_time()); m_cpu_device->check_mame_abort_slice(); m_last = cur; } @@ -204,7 +204,7 @@ public: private: netlist::analog_input_t m_in; - netlist_mame_analog_output_device::output_delegate m_callback; + std::unique_ptr<netlist_mame_analog_output_device::output_delegate> m_callback; // TODO: change to std::optional for C++17 netlist_mame_cpu_device *m_cpu_device; netlist::state_var<nl_double> m_last; }; @@ -234,7 +234,7 @@ public: ATTR_COLD void register_callback(netlist_mame_logic_output_device::output_delegate &&callback) { - m_callback = std::move(callback); + m_callback.reset(new netlist_mame_logic_output_device::output_delegate(std::move(callback))); } NETLIB_UPDATEI() @@ -246,7 +246,7 @@ public: if (cur != m_last) { m_cpu_device->update_icount(exec().time()); - m_callback(cur, m_cpu_device->local_time()); + (*m_callback)(cur, m_cpu_device->local_time()); m_cpu_device->check_mame_abort_slice(); m_last = cur; } @@ -254,7 +254,7 @@ public: private: netlist::logic_input_t m_in; - netlist_mame_logic_output_device::output_delegate m_callback; + std::unique_ptr<netlist_mame_logic_output_device::output_delegate> m_callback; // TODO: change to std::optional for C++17 netlist_mame_cpu_device *m_cpu_device; netlist::state_var<netlist::netlist_sig_t> m_last; }; @@ -719,6 +719,7 @@ netlist_mame_analog_output_device::netlist_mame_analog_output_device(const machi : device_t(mconfig, NETLIST_ANALOG_OUTPUT, tag, owner, clock) , netlist_mame_sub_interface(*owner) , m_in("") + , m_delegate(*this) { } @@ -730,7 +731,7 @@ void netlist_mame_analog_output_device::custom_netlist_additions(netlist::netlis /* ignore if no running machine -> called within device_validity_check context */ if (owner()->has_running_machine()) - m_delegate.bind_relative_to(owner()->machine().root_device()); + m_delegate.resolve(); auto dev = netlist::pool().make_unique<NETLIB_NAME(analog_callback)>(nlstate, dfqn); //static_cast<NETLIB_NAME(analog_callback) *>(dev.get())->register_callback(std::move(m_delegate)); @@ -753,15 +754,10 @@ netlist_mame_logic_output_device::netlist_mame_logic_output_device(const machine : device_t(mconfig, NETLIST_LOGIC_OUTPUT, tag, owner, clock) , netlist_mame_sub_interface(*owner) , m_in("") + , m_delegate(*this) { } -void netlist_mame_logic_output_device::set_params(const char *in_name, output_delegate &&adelegate) -{ - m_in = in_name; - m_delegate = std::move(adelegate); -} - void netlist_mame_logic_output_device::custom_netlist_additions(netlist::netlist_state_t &nlstate) { pstring pin(m_in); @@ -770,7 +766,7 @@ void netlist_mame_logic_output_device::custom_netlist_additions(netlist::netlist /* ignore if no running machine -> called within device_validity_check context */ if (owner()->has_running_machine()) - m_delegate.bind_relative_to(owner()->machine().root_device()); + m_delegate.resolve(); auto dev = netlist::pool().make_unique<NETLIB_NAME(logic_callback)>(nlstate, dfqn); dev->register_callback(std::move(m_delegate)); diff --git a/src/devices/machine/netlist.h b/src/devices/machine/netlist.h index 52d7602248a..85116ec8f34 100644 --- a/src/devices/machine/netlist.h +++ b/src/devices/machine/netlist.h @@ -337,12 +337,10 @@ public: // construction/destruction netlist_mame_analog_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template <class FC> - void set_params(const char *in_name, void (FC::*callback)(const double, const attotime &), - const char *name, const char *tag) + template <typename... T> void set_params(const char *in_name, T &&... args) { m_in = in_name; - m_delegate = std::move(output_delegate(callback, name, tag, (FC *)nullptr)); + m_delegate.set(std::forward<T>(args)...); } @@ -368,14 +366,10 @@ public: // construction/destruction netlist_mame_logic_output_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - void set_params(const char *in_name, output_delegate &&adelegate); - template <class FunctionClass> void set_params(const char *in_name, void (FunctionClass::*callback)(const int, const attotime &), const char *name) + template <typename... T> void set_params(const char *in_name, T &&... args) { - set_params(in_name, output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_params(const char *in_name, const char *devname, void (FunctionClass::*callback)(const int, const attotime &), const char *name) - { - set_params(in_name, output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + m_in = in_name; + m_delegate.set(std::forward<T>(args)...); } protected: diff --git a/src/devices/machine/nvram.cpp b/src/devices/machine/nvram.cpp index 6d7c2302ae8..e00d10447a8 100644 --- a/src/devices/machine/nvram.cpp +++ b/src/devices/machine/nvram.cpp @@ -27,6 +27,7 @@ nvram_device::nvram_device(const machine_config &mconfig, const char *tag, devic device_nvram_interface(mconfig, *this), m_region(*this, DEVICE_SELF), m_default_value(DEFAULT_ALL_1), + m_custom_handler(*this), m_base(nullptr), m_length(0) { @@ -40,7 +41,7 @@ nvram_device::nvram_device(const machine_config &mconfig, const char *tag, devic void nvram_device::device_start() { // bind our handler - m_custom_handler.bind_relative_to(*owner()); + m_custom_handler.resolve(); } diff --git a/src/devices/machine/nvram.h b/src/devices/machine/nvram.h index 45c01bad0c1..a25cc665988 100644 --- a/src/devices/machine/nvram.h +++ b/src/devices/machine/nvram.h @@ -40,18 +40,10 @@ public: // inline configuration helpers void set_default_value(default_value value) { m_default_value = value; } - template <typename Object> void set_custom_handler(Object &&cb) + template <typename... T> void set_custom_handler(T &&... args) { m_default_value = DEFAULT_CUSTOM; - m_custom_handler = std::forward<Object>(cb); - } - template <class FunctionClass> void set_custom_handler(const char *devname, void (FunctionClass::*callback)(nvram_device &, void *, size_t), const char *name) - { - set_custom_handler(init_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_custom_handler(void (FunctionClass::*callback)(nvram_device &, void *, size_t), const char *name) - { - set_custom_handler(init_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_custom_handler.set(std::forward<T>(args)...); } // controls diff --git a/src/devices/machine/pci.cpp b/src/devices/machine/pci.cpp index 7148c37ee81..804fcbe6c1f 100644 --- a/src/devices/machine/pci.cpp +++ b/src/devices/machine/pci.cpp @@ -328,12 +328,12 @@ void pci_device::map_device(uint64_t memory_window_start, uint64_t memory_window } uint64_t end = start + bi.size-1; switch(i) { - case 0: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped0_r), this), write32_delegate(FUNC(pci_device::unmapped0_w), this)); break; - case 1: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped1_r), this), write32_delegate(FUNC(pci_device::unmapped1_w), this)); break; - case 2: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped2_r), this), write32_delegate(FUNC(pci_device::unmapped2_w), this)); break; - case 3: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped3_r), this), write32_delegate(FUNC(pci_device::unmapped3_w), this)); break; - case 4: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped4_r), this), write32_delegate(FUNC(pci_device::unmapped4_w), this)); break; - case 5: space->install_readwrite_handler(start, end, read32_delegate(FUNC(pci_device::unmapped5_r), this), write32_delegate(FUNC(pci_device::unmapped5_w), this)); break; + case 0: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped0_r)), write32_delegate(*this, FUNC(pci_device::unmapped0_w))); break; + case 1: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped1_r)), write32_delegate(*this, FUNC(pci_device::unmapped1_w))); break; + case 2: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped2_r)), write32_delegate(*this, FUNC(pci_device::unmapped2_w))); break; + case 3: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped3_r)), write32_delegate(*this, FUNC(pci_device::unmapped3_w))); break; + case 4: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped4_r)), write32_delegate(*this, FUNC(pci_device::unmapped4_w))); break; + case 5: space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(pci_device::unmapped5_r)), write32_delegate(*this, FUNC(pci_device::unmapped5_w))); break; } space->install_device_delegate(start, end, *bi.device, bi.map); diff --git a/src/devices/machine/s3c2400.cpp b/src/devices/machine/s3c2400.cpp index 0484eb74e93..3a4201f976d 100644 --- a/src/devices/machine/s3c2400.cpp +++ b/src/devices/machine/s3c2400.cpp @@ -225,29 +225,29 @@ void s3c2400_device::device_start() { s3c24xx_device_start(); - address_space &space = m_cpu->memory().space( AS_PROGRAM); - space.install_readwrite_handler(0x14000000, 0x1400003b, read32_delegate(FUNC(s3c2400_device::s3c24xx_memcon_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_memcon_w), this)); - space.install_readwrite_handler(0x14200000, 0x1420005b, read32_delegate(FUNC(s3c2400_device::s3c24xx_usb_host_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_usb_host_w), this)); - space.install_readwrite_handler(0x14400000, 0x14400017, read32_delegate(FUNC(s3c2400_device::s3c24xx_irq_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_irq_w), this)); - space.install_readwrite_handler(0x14600000, 0x1460001b, read32_delegate(FUNC(s3c2400_device::s3c24xx_dma_0_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_dma_0_w), this)); - space.install_readwrite_handler(0x14600020, 0x1460003b, read32_delegate(FUNC(s3c2400_device::s3c24xx_dma_1_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_dma_1_w), this)); - space.install_readwrite_handler(0x14600040, 0x1460005b, read32_delegate(FUNC(s3c2400_device::s3c24xx_dma_2_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_dma_2_w), this)); - space.install_readwrite_handler(0x14600060, 0x1460007b, read32_delegate(FUNC(s3c2400_device::s3c24xx_dma_3_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_dma_3_w), this)); - space.install_readwrite_handler(0x14800000, 0x14800017, read32_delegate(FUNC(s3c2400_device::s3c24xx_clkpow_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_clkpow_w), this)); - space.install_readwrite_handler(0x14a00000, 0x14a003ff, read32_delegate(FUNC(s3c2400_device::s3c24xx_lcd_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_lcd_w), this)); - space.install_readwrite_handler(0x14a00400, 0x14a007ff, read32_delegate(FUNC(s3c2400_device::s3c24xx_lcd_palette_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_lcd_palette_w), this)); - space.install_readwrite_handler(0x15000000, 0x1500002b, read32_delegate(FUNC(s3c2400_device::s3c24xx_uart_0_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_uart_0_w), this)); - space.install_readwrite_handler(0x15004000, 0x1500402b, read32_delegate(FUNC(s3c2400_device::s3c24xx_uart_1_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_uart_1_w), this)); - space.install_readwrite_handler(0x15100000, 0x15100043, read32_delegate(FUNC(s3c2400_device::s3c24xx_pwm_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_pwm_w), this)); - space.install_readwrite_handler(0x15200140, 0x152001fb, read32_delegate(FUNC(s3c2400_device::s3c24xx_usb_device_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_usb_device_w), this)); - space.install_readwrite_handler(0x15300000, 0x1530000b, read32_delegate(FUNC(s3c2400_device::s3c24xx_wdt_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_wdt_w), this)); - space.install_readwrite_handler(0x15400000, 0x1540000f, read32_delegate(FUNC(s3c2400_device::s3c24xx_iic_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_iic_w), this)); - space.install_readwrite_handler(0x15508000, 0x15508013, read32_delegate(FUNC(s3c2400_device::s3c24xx_iis_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_iis_w), this)); - space.install_readwrite_handler(0x15600000, 0x1560005b, read32_delegate(FUNC(s3c2400_device::s3c24xx_gpio_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_gpio_w), this)); - space.install_readwrite_handler(0x15700040, 0x1570008b, read32_delegate(FUNC(s3c2400_device::s3c24xx_rtc_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_rtc_w), this)); - space.install_readwrite_handler(0x15800000, 0x15800007, read32_delegate(FUNC(s3c2400_device::s3c24xx_adc_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_adc_w), this)); - space.install_readwrite_handler(0x15900000, 0x15900017, read32_delegate(FUNC(s3c2400_device::s3c24xx_spi_0_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_spi_0_w), this)); - space.install_readwrite_handler(0x15a00000, 0x15a0003f, read32_delegate(FUNC(s3c2400_device::s3c24xx_mmc_r), this), write32_delegate(FUNC(s3c2400_device::s3c24xx_mmc_w), this)); + address_space &space = m_cpu->memory().space(AS_PROGRAM); + space.install_readwrite_handler(0x14000000, 0x1400003b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_memcon_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_memcon_w))); + space.install_readwrite_handler(0x14200000, 0x1420005b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_usb_host_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_usb_host_w))); + space.install_readwrite_handler(0x14400000, 0x14400017, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_irq_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_irq_w))); + space.install_readwrite_handler(0x14600000, 0x1460001b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_0_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_0_w))); + space.install_readwrite_handler(0x14600020, 0x1460003b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_1_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_1_w))); + space.install_readwrite_handler(0x14600040, 0x1460005b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_2_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_2_w))); + space.install_readwrite_handler(0x14600060, 0x1460007b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_3_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_dma_3_w))); + space.install_readwrite_handler(0x14800000, 0x14800017, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_clkpow_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_clkpow_w))); + space.install_readwrite_handler(0x14a00000, 0x14a003ff, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_lcd_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_lcd_w))); + space.install_readwrite_handler(0x14a00400, 0x14a007ff, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_lcd_palette_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_lcd_palette_w))); + space.install_readwrite_handler(0x15000000, 0x1500002b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_uart_0_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_uart_0_w))); + space.install_readwrite_handler(0x15004000, 0x1500402b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_uart_1_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_uart_1_w))); + space.install_readwrite_handler(0x15100000, 0x15100043, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_pwm_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_pwm_w))); + space.install_readwrite_handler(0x15200140, 0x152001fb, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_usb_device_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_usb_device_w))); + space.install_readwrite_handler(0x15300000, 0x1530000b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_wdt_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_wdt_w))); + space.install_readwrite_handler(0x15400000, 0x1540000f, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_iic_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_iic_w))); + space.install_readwrite_handler(0x15508000, 0x15508013, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_iis_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_iis_w))); + space.install_readwrite_handler(0x15600000, 0x1560005b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_gpio_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_gpio_w))); + space.install_readwrite_handler(0x15700040, 0x1570008b, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_rtc_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_rtc_w))); + space.install_readwrite_handler(0x15800000, 0x15800007, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_adc_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_adc_w))); + space.install_readwrite_handler(0x15900000, 0x15900017, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_spi_0_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_spi_0_w))); + space.install_readwrite_handler(0x15a00000, 0x15a0003f, read32_delegate(*this, FUNC(s3c2400_device::s3c24xx_mmc_r)), write32_delegate(*this, FUNC(s3c2400_device::s3c24xx_mmc_w))); s3c24xx_video_start(); } diff --git a/src/devices/machine/s3c2410.cpp b/src/devices/machine/s3c2410.cpp index a44c9151f6b..52f4243120e 100644 --- a/src/devices/machine/s3c2410.cpp +++ b/src/devices/machine/s3c2410.cpp @@ -288,31 +288,31 @@ void s3c2410_device::device_start() s3c24xx_device_start(); address_space &space = m_cpu->memory().space( AS_PROGRAM); - space.install_readwrite_handler( 0x48000000, 0x4800003b, read32_delegate(FUNC(s3c2410_device::s3c24xx_memcon_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_memcon_w), this)); - space.install_readwrite_handler( 0x49000000, 0x4900005b, read32_delegate(FUNC(s3c2410_device::s3c24xx_usb_host_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_usb_host_w), this)); - space.install_readwrite_handler( 0x4a000000, 0x4a00001f, read32_delegate(FUNC(s3c2410_device::s3c24xx_irq_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_irq_w), this)); - space.install_readwrite_handler( 0x4b000000, 0x4b000023, read32_delegate(FUNC(s3c2410_device::s3c24xx_dma_0_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_dma_0_w), this)); - space.install_readwrite_handler( 0x4b000040, 0x4b000063, read32_delegate(FUNC(s3c2410_device::s3c24xx_dma_1_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_dma_1_w), this)); - space.install_readwrite_handler( 0x4b000080, 0x4b0000a3, read32_delegate(FUNC(s3c2410_device::s3c24xx_dma_2_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_dma_2_w), this)); - space.install_readwrite_handler( 0x4b0000c0, 0x4b0000e3, read32_delegate(FUNC(s3c2410_device::s3c24xx_dma_3_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_dma_3_w), this)); - space.install_readwrite_handler( 0x4c000000, 0x4c000017, read32_delegate(FUNC(s3c2410_device::s3c24xx_clkpow_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_clkpow_w), this)); - space.install_readwrite_handler( 0x4d000000, 0x4d000063, read32_delegate(FUNC(s3c2410_device::s3c24xx_lcd_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_lcd_w), this)); - space.install_readwrite_handler( 0x4d000400, 0x4d0007ff, read32_delegate(FUNC(s3c2410_device::s3c24xx_lcd_palette_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_lcd_palette_w), this)); - space.install_readwrite_handler( 0x4e000000, 0x4e000017, read32_delegate(FUNC(s3c2410_device::s3c24xx_nand_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_nand_w), this)); - space.install_readwrite_handler( 0x50000000, 0x5000002b, read32_delegate(FUNC(s3c2410_device::s3c24xx_uart_0_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_uart_0_w), this)); - space.install_readwrite_handler( 0x50004000, 0x5000402b, read32_delegate(FUNC(s3c2410_device::s3c24xx_uart_1_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_uart_1_w), this)); - space.install_readwrite_handler( 0x50008000, 0x5000802b, read32_delegate(FUNC(s3c2410_device::s3c24xx_uart_2_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_uart_2_w), this)); - space.install_readwrite_handler( 0x51000000, 0x51000043, read32_delegate(FUNC(s3c2410_device::s3c24xx_pwm_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_pwm_w), this)); - space.install_readwrite_handler( 0x52000140, 0x5200026f, read32_delegate(FUNC(s3c2410_device::s3c24xx_usb_device_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_usb_device_w), this)); - space.install_readwrite_handler( 0x53000000, 0x5300000b, read32_delegate(FUNC(s3c2410_device::s3c24xx_wdt_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_wdt_w), this)); - space.install_readwrite_handler( 0x54000000, 0x5400000f, read32_delegate(FUNC(s3c2410_device::s3c24xx_iic_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_iic_w), this)); - space.install_readwrite_handler( 0x55000000, 0x55000013, read32_delegate(FUNC(s3c2410_device::s3c24xx_iis_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_iis_w), this)); - space.install_readwrite_handler( 0x56000000, 0x560000bf, read32_delegate(FUNC(s3c2410_device::s3c24xx_gpio_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_gpio_w), this)); - space.install_readwrite_handler( 0x57000040, 0x5700008b, read32_delegate(FUNC(s3c2410_device::s3c24xx_rtc_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_rtc_w), this)); - space.install_readwrite_handler( 0x58000000, 0x58000013, read32_delegate(FUNC(s3c2410_device::s3c24xx_adc_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_adc_w), this)); - space.install_readwrite_handler( 0x59000000, 0x59000017, read32_delegate(FUNC(s3c2410_device::s3c24xx_spi_0_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_spi_0_w), this)); - space.install_readwrite_handler( 0x59000020, 0x59000037, read32_delegate(FUNC(s3c2410_device::s3c24xx_spi_1_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_spi_1_w), this)); - space.install_readwrite_handler( 0x5a000000, 0x5a000043, read32_delegate(FUNC(s3c2410_device::s3c24xx_sdi_r), this), write32_delegate(FUNC(s3c2410_device::s3c24xx_sdi_w), this)); + space.install_readwrite_handler( 0x48000000, 0x4800003b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_memcon_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_memcon_w))); + space.install_readwrite_handler( 0x49000000, 0x4900005b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_usb_host_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_usb_host_w))); + space.install_readwrite_handler( 0x4a000000, 0x4a00001f, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_irq_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_irq_w))); + space.install_readwrite_handler( 0x4b000000, 0x4b000023, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_0_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_0_w))); + space.install_readwrite_handler( 0x4b000040, 0x4b000063, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_1_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_1_w))); + space.install_readwrite_handler( 0x4b000080, 0x4b0000a3, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_2_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_2_w))); + space.install_readwrite_handler( 0x4b0000c0, 0x4b0000e3, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_3_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_dma_3_w))); + space.install_readwrite_handler( 0x4c000000, 0x4c000017, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_clkpow_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_clkpow_w))); + space.install_readwrite_handler( 0x4d000000, 0x4d000063, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_lcd_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_lcd_w))); + space.install_readwrite_handler( 0x4d000400, 0x4d0007ff, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_lcd_palette_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_lcd_palette_w))); + space.install_readwrite_handler( 0x4e000000, 0x4e000017, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_nand_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_nand_w))); + space.install_readwrite_handler( 0x50000000, 0x5000002b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_0_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_0_w))); + space.install_readwrite_handler( 0x50004000, 0x5000402b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_1_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_1_w))); + space.install_readwrite_handler( 0x50008000, 0x5000802b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_2_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_uart_2_w))); + space.install_readwrite_handler( 0x51000000, 0x51000043, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_pwm_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_pwm_w))); + space.install_readwrite_handler( 0x52000140, 0x5200026f, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_usb_device_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_usb_device_w))); + space.install_readwrite_handler( 0x53000000, 0x5300000b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_wdt_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_wdt_w))); + space.install_readwrite_handler( 0x54000000, 0x5400000f, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_iic_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_iic_w))); + space.install_readwrite_handler( 0x55000000, 0x55000013, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_iis_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_iis_w))); + space.install_readwrite_handler( 0x56000000, 0x560000bf, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_gpio_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_gpio_w))); + space.install_readwrite_handler( 0x57000040, 0x5700008b, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_rtc_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_rtc_w))); + space.install_readwrite_handler( 0x58000000, 0x58000013, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_adc_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_adc_w))); + space.install_readwrite_handler( 0x59000000, 0x59000017, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_spi_0_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_spi_0_w))); + space.install_readwrite_handler( 0x59000020, 0x59000037, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_spi_1_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_spi_1_w))); + space.install_readwrite_handler( 0x5a000000, 0x5a000043, read32_delegate(*this, FUNC(s3c2410_device::s3c24xx_sdi_r)), write32_delegate(*this, FUNC(s3c2410_device::s3c24xx_sdi_w))); s3c24xx_video_start(); } diff --git a/src/devices/machine/s3c2440.cpp b/src/devices/machine/s3c2440.cpp index d11a1b0c88f..c00026f23ff 100644 --- a/src/devices/machine/s3c2440.cpp +++ b/src/devices/machine/s3c2440.cpp @@ -303,33 +303,33 @@ s3c2440_device::~s3c2440_device() void s3c2440_device::device_start() { address_space &space = m_cpu->memory().space( AS_PROGRAM); - space.install_readwrite_handler(0x48000000, 0x4800003b, read32_delegate(FUNC(s3c2440_device::s3c24xx_memcon_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_memcon_w), this)); - space.install_readwrite_handler(0x49000000, 0x4900005b, read32_delegate(FUNC(s3c2440_device::s3c24xx_usb_host_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_usb_host_w), this)); - space.install_readwrite_handler(0x4a000000, 0x4a00001f, read32_delegate(FUNC(s3c2440_device::s3c24xx_irq_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_irq_w), this)); - space.install_readwrite_handler(0x4b000000, 0x4b000023, read32_delegate(FUNC(s3c2440_device::s3c24xx_dma_0_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_dma_0_w), this)); - space.install_readwrite_handler(0x4b000040, 0x4b000063, read32_delegate(FUNC(s3c2440_device::s3c24xx_dma_1_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_dma_1_w), this)); - space.install_readwrite_handler(0x4b000080, 0x4b0000a3, read32_delegate(FUNC(s3c2440_device::s3c24xx_dma_2_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_dma_2_w), this)); - space.install_readwrite_handler(0x4b0000c0, 0x4b0000e3, read32_delegate(FUNC(s3c2440_device::s3c24xx_dma_3_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_dma_3_w), this)); - space.install_readwrite_handler(0x4c000000, 0x4c00001b, read32_delegate(FUNC(s3c2440_device::s3c24xx_clkpow_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_clkpow_w), this)); - space.install_readwrite_handler(0x4d000000, 0x4d000063, read32_delegate(FUNC(s3c2440_device::s3c24xx_lcd_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_lcd_w), this)); - space.install_readwrite_handler(0x4d000400, 0x4d0007ff, read32_delegate(FUNC(s3c2440_device::s3c24xx_lcd_palette_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_lcd_palette_w), this)); - space.install_readwrite_handler(0x4e000000, 0x4e00003f, read32_delegate(FUNC(s3c2440_device::s3c24xx_nand_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_nand_w), this)); - space.install_readwrite_handler(0x4f000000, 0x4f0000a3, read32_delegate(FUNC(s3c2440_device::s3c24xx_cam_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_cam_w), this)); - space.install_readwrite_handler(0x50000000, 0x5000002b, read32_delegate(FUNC(s3c2440_device::s3c24xx_uart_0_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_uart_0_w), this)); - space.install_readwrite_handler(0x50004000, 0x5000402b, read32_delegate(FUNC(s3c2440_device::s3c24xx_uart_1_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_uart_1_w), this)); - space.install_readwrite_handler(0x50008000, 0x5000802b, read32_delegate(FUNC(s3c2440_device::s3c24xx_uart_2_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_uart_2_w), this)); - space.install_readwrite_handler(0x51000000, 0x51000043, read32_delegate(FUNC(s3c2440_device::s3c24xx_pwm_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_pwm_w), this)); - space.install_readwrite_handler(0x52000140, 0x5200026f, read32_delegate(FUNC(s3c2440_device::s3c24xx_usb_device_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_usb_device_w), this)); - space.install_readwrite_handler(0x53000000, 0x5300000b, read32_delegate(FUNC(s3c2440_device::s3c24xx_wdt_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_wdt_w), this)); - space.install_readwrite_handler(0x54000000, 0x54000013, read32_delegate(FUNC(s3c2440_device::s3c24xx_iic_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_iic_w), this)); - space.install_readwrite_handler(0x55000000, 0x55000013, read32_delegate(FUNC(s3c2440_device::s3c24xx_iis_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_iis_w), this)); - space.install_readwrite_handler(0x56000000, 0x560000df, read32_delegate(FUNC(s3c2440_device::s3c24xx_gpio_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_gpio_w), this)); - space.install_readwrite_handler(0x57000040, 0x5700008b, read32_delegate(FUNC(s3c2440_device::s3c24xx_rtc_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_rtc_w), this)); - space.install_readwrite_handler(0x58000000, 0x58000017, read32_delegate(FUNC(s3c2440_device::s3c24xx_adc_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_adc_w), this)); - space.install_readwrite_handler(0x59000000, 0x59000017, read32_delegate(FUNC(s3c2440_device::s3c24xx_spi_0_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_spi_0_w), this)); - space.install_readwrite_handler(0x59000020, 0x59000037, read32_delegate(FUNC(s3c2440_device::s3c24xx_spi_1_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_spi_1_w), this)); - space.install_readwrite_handler(0x5a000000, 0x5a000043, read32_delegate(FUNC(s3c2440_device::s3c24xx_sdi_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_sdi_w), this)); - space.install_readwrite_handler(0x5b000000, 0x5b00001f, read32_delegate(FUNC(s3c2440_device::s3c24xx_ac97_r), this), write32_delegate(FUNC(s3c2440_device::s3c24xx_ac97_w), this)); + space.install_readwrite_handler(0x48000000, 0x4800003b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_memcon_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_memcon_w))); + space.install_readwrite_handler(0x49000000, 0x4900005b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_usb_host_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_usb_host_w))); + space.install_readwrite_handler(0x4a000000, 0x4a00001f, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_irq_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_irq_w))); + space.install_readwrite_handler(0x4b000000, 0x4b000023, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_0_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_0_w))); + space.install_readwrite_handler(0x4b000040, 0x4b000063, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_1_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_1_w))); + space.install_readwrite_handler(0x4b000080, 0x4b0000a3, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_2_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_2_w))); + space.install_readwrite_handler(0x4b0000c0, 0x4b0000e3, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_3_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_dma_3_w))); + space.install_readwrite_handler(0x4c000000, 0x4c00001b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_clkpow_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_clkpow_w))); + space.install_readwrite_handler(0x4d000000, 0x4d000063, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_lcd_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_lcd_w))); + space.install_readwrite_handler(0x4d000400, 0x4d0007ff, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_lcd_palette_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_lcd_palette_w))); + space.install_readwrite_handler(0x4e000000, 0x4e00003f, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_nand_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_nand_w))); + space.install_readwrite_handler(0x4f000000, 0x4f0000a3, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_cam_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_cam_w))); + space.install_readwrite_handler(0x50000000, 0x5000002b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_0_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_0_w))); + space.install_readwrite_handler(0x50004000, 0x5000402b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_1_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_1_w))); + space.install_readwrite_handler(0x50008000, 0x5000802b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_2_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_uart_2_w))); + space.install_readwrite_handler(0x51000000, 0x51000043, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_pwm_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_pwm_w))); + space.install_readwrite_handler(0x52000140, 0x5200026f, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_usb_device_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_usb_device_w))); + space.install_readwrite_handler(0x53000000, 0x5300000b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_wdt_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_wdt_w))); + space.install_readwrite_handler(0x54000000, 0x54000013, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_iic_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_iic_w))); + space.install_readwrite_handler(0x55000000, 0x55000013, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_iis_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_iis_w))); + space.install_readwrite_handler(0x56000000, 0x560000df, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_gpio_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_gpio_w))); + space.install_readwrite_handler(0x57000040, 0x5700008b, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_rtc_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_rtc_w))); + space.install_readwrite_handler(0x58000000, 0x58000017, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_adc_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_adc_w))); + space.install_readwrite_handler(0x59000000, 0x59000017, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_spi_0_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_spi_0_w))); + space.install_readwrite_handler(0x59000020, 0x59000037, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_spi_1_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_spi_1_w))); + space.install_readwrite_handler(0x5a000000, 0x5a000043, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_sdi_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_sdi_w))); + space.install_readwrite_handler(0x5b000000, 0x5b00001f, read32_delegate(*this, FUNC(s3c2440_device::s3c24xx_ac97_r)), write32_delegate(*this, FUNC(s3c2440_device::s3c24xx_ac97_w))); s3c24xx_device_start(); diff --git a/src/devices/machine/tc009xlvc.cpp b/src/devices/machine/tc009xlvc.cpp index a0a474996ef..e48e04fc501 100644 --- a/src/devices/machine/tc009xlvc.cpp +++ b/src/devices/machine/tc009xlvc.cpp @@ -92,7 +92,7 @@ void tc0091lvc_device::cpu_map(address_map &map) { // 0x0000-0x7fff ROM (0x0000-0x5fff Fixed, 0x6000-0x7fff Bankswitched) map(0x0000, 0x5fff).r(FUNC(tc0091lvc_device::rom_r)); - map(0x6000, 0x7fff).lr8("banked_rom_r", [this](offs_t offset) { return rom_r((m_rom_bank << 13) | (offset & 0x1fff)); }); + map(0x6000, 0x7fff).lr8(NAME([this] (offs_t offset) { return rom_r((m_rom_bank << 13) | (offset & 0x1fff)); })); // 0x8000-0xbfff External mappable area @@ -110,7 +110,7 @@ void tc0091lvc_device::banked_map(address_map &map) map(0x010000, 0x01ffff).readonly().share("vram"); // note, the way tiles are addressed suggests that 0x0000-0x3fff of this might be usable, // but we don't map it anywhere, so the first tiles are always blank at the moment. - map(0x014000, 0x01ffff).lw8("vram_w", [this](offs_t offset, u8 data) { vram_w(offset + 0x4000, data); }); + map(0x014000, 0x01ffff).lw8(NAME([this] (offs_t offset, u8 data) { vram_w(offset + 0x4000, data); })); map(0x040000, 0x05ffff).ram().share("bitmap_ram"); map(0x080000, 0x0801ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); } @@ -183,9 +183,9 @@ void tc0091lvc_device::device_start() m_vregs = make_unique_clear<u8[]>(0x100); m_sprram_buffer = make_unique_clear<u8[]>(0x400); - tx_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0091lvc_device::get_tx_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - bg_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0091lvc_device::get_tile_info<0x8000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - bg_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0091lvc_device::get_tile_info<0x9000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + tx_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0091lvc_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + bg_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0091lvc_device::get_tile_info<0x8000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + bg_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0091lvc_device::get_tile_info<0x9000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); tx_tilemap->set_transparent_pen(0); bg_tilemap[0]->set_transparent_pen(0); diff --git a/src/devices/machine/terminal.cpp b/src/devices/machine/terminal.cpp index c2e5c5be205..fd07c5bff35 100644 --- a/src/devices/machine/terminal.cpp +++ b/src/devices/machine/terminal.cpp @@ -154,7 +154,7 @@ generic_terminal_device::generic_terminal_device(const machine_config &mconfig, , m_y_pos(0) , m_bell_timer(nullptr) , m_beeper(*this, "beeper") - , m_keyboard_cb() + , m_keyboard_cb(*this) { } @@ -347,7 +347,7 @@ void generic_terminal_device::device_start() { m_buffer = std::make_unique<uint8_t []>(m_width * m_height); m_bell_timer = timer_alloc(BELL_TIMER_ID); - m_keyboard_cb.bind_relative_to(*owner()); + m_keyboard_cb.resolve(); save_pointer(NAME(m_buffer), m_width * m_height); save_item(NAME(m_x_pos)); save_item(NAME(m_framecnt)); diff --git a/src/devices/machine/terminal.h b/src/devices/machine/terminal.h index dab8bd40578..aa98c91dc62 100644 --- a/src/devices/machine/terminal.h +++ b/src/devices/machine/terminal.h @@ -23,18 +23,11 @@ class generic_terminal_device : public device_t public: generic_terminal_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <class FunctionClass> - void set_keyboard_callback(void (FunctionClass::*callback)(u8 character), const char *name) + template <typename... T> + void set_keyboard_callback(T &&... args) { - set_keyboard_callback(generic_keyboard_device::output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_keyboard_cb.set(std::forward<T>(args)...); } - // FIXME: this should be aware of current device for resolving the tag - template <class FunctionClass> - void set_keyboard_callback(const char *devname, void (FunctionClass::*callback)(u8 character), const char *name) - { - set_keyboard_callback(generic_keyboard_device::output_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_keyboard_callback(generic_keyboard_device::output_delegate callback) { m_keyboard_cb = callback; } void write(u8 data) { term_write(data); } diff --git a/src/devices/machine/timer.cpp b/src/devices/machine/timer.cpp index b30471279f0..2461fb4da30 100644 --- a/src/devices/machine/timer.cpp +++ b/src/devices/machine/timer.cpp @@ -10,7 +10,6 @@ #include "emu.h" #include "machine/timer.h" -#include "screen.h" /*************************************************************************** @@ -37,13 +36,12 @@ DEFINE_DEVICE_TYPE(TIMER, timer_device, "timer", "Timer") timer_device::timer_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, TIMER, tag, owner, clock), m_type(TIMER_TYPE_GENERIC), - m_callback(), + m_callback(*this), m_ptr(nullptr), m_start_delay(attotime::zero), m_period(attotime::zero), m_param(0), - m_screen_tag(nullptr), - m_screen(nullptr), + m_screen(*this, finder_base::DUMMY_TAG), m_first_vpos(0), m_increment(0), m_timer(nullptr), @@ -63,14 +61,14 @@ void timer_device::device_validity_check(validity_checker &valid) const switch (m_type) { case TIMER_TYPE_GENERIC: - if (m_screen_tag != nullptr || m_first_vpos != 0 || m_start_delay != attotime::zero) + if (m_screen.finder_tag() != finder_base::DUMMY_TAG || m_first_vpos != 0 || m_start_delay != attotime::zero) osd_printf_warning("Generic timer specified parameters for a scanline timer\n"); if (m_period != attotime::zero || m_start_delay != attotime::zero) osd_printf_warning("Generic timer specified parameters for a periodic timer\n"); break; case TIMER_TYPE_PERIODIC: - if (m_screen_tag != nullptr || m_first_vpos != 0) + if (m_screen.finder_tag() != finder_base::DUMMY_TAG || m_first_vpos != 0) osd_printf_warning("Periodic timer specified parameters for a scanline timer\n"); if (m_period <= attotime::zero) osd_printf_error("Periodic timer specified invalid period\n"); @@ -81,10 +79,10 @@ void timer_device::device_validity_check(validity_checker &valid) const osd_printf_warning("Scanline timer specified parameters for a periodic timer\n"); if (m_param != 0) osd_printf_warning("Scanline timer specified parameter which is ignored\n"); - if (m_screen_tag == nullptr) + if (m_screen.finder_tag() == finder_base::DUMMY_TAG) osd_printf_error("Scanline timer has no screen specified\n"); - else if (dynamic_cast<screen_device *>(siblingdevice(m_screen_tag)) == nullptr) - osd_printf_error("Scanline timer specifies nonexistent screen %s\n", m_screen_tag); + else if (!m_screen) + osd_printf_error("Scanline timer specifies nonexistent screen %s\n", m_screen.finder_tag()); // if (m_first_vpos < 0) // osd_printf_error("Scanline timer specified invalid initial position\n"); // if (m_increment < 0) @@ -105,14 +103,10 @@ void timer_device::device_validity_check(validity_checker &valid) const void timer_device::device_start() { - // fetch the screen - if (m_screen_tag != nullptr) - m_screen = siblingdevice<screen_device>(m_screen_tag); - // allocate the timer m_timer = timer_alloc(); - m_callback.bind_relative_to(*owner()); + m_callback.resolve(); // register for save states save_item(NAME(m_first_time)); @@ -149,8 +143,8 @@ void timer_device::device_reset() } case TIMER_TYPE_SCANLINE: - if (m_screen == nullptr) - fatalerror("timer '%s': unable to find screen '%s'\n", tag(), m_screen_tag); + if (!m_screen) + fatalerror("timer '%s': unable to find screen '%s'\n", tag(), m_screen.finder_tag()); // set the timer to fire immediately m_first_time = true; diff --git a/src/devices/machine/timer.h b/src/devices/machine/timer.h index 944db93c1e5..64dc66f38c5 100644 --- a/src/devices/machine/timer.h +++ b/src/devices/machine/timer.h @@ -7,12 +7,12 @@ Timer devices. ***************************************************************************/ - -#pragma once - #ifndef MAME_MACHINE_TIMER_H #define MAME_MACHINE_TIMER_H +#pragma once + +#include "screen.h" //************************************************************************** @@ -38,63 +38,43 @@ public: timer_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock = 0); // inline configuration helpers - template <typename Object> void configure_generic(Object &&cb) + template <typename... T> void configure_generic(T &&... args) { m_type = TIMER_TYPE_GENERIC; - m_callback = std::forward<Object>(cb); - } - template <class FunctionClass> void configure_generic(void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name) - { - configure_generic(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_callback.set(std::forward<T>(args)...); } - template <class FunctionClass> void configure_generic(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name) - { - configure_generic(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - - template <typename Object> void configure_periodic(Object &&cb, const attotime &period) + template <typename F> void configure_periodic(F &&callback, const char *name, const attotime &period) { m_type = TIMER_TYPE_PERIODIC; - m_callback = std::forward<Object>(cb); + m_callback.set(std::forward<F>(callback), name); m_period = period; } - template <class FunctionClass> void configure_periodic(void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name, - const attotime &period) - { - configure_periodic(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), period); - } - - template <class FunctionClass> void configure_periodic(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32), - const char *name, const attotime &period) + template <typename T, typename F> void configure_periodic(T &&target, F &&callback, const char *name, const attotime &period) { - configure_periodic(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), period); + m_type = TIMER_TYPE_PERIODIC; + m_callback.set(std::forward<T>(target), std::forward<F>(callback), name); + m_period = period; } - template <typename Object> void configure_scanline(Object &&cb, const char *screen, int first_vpos, int increment) + template <typename F, typename U> void configure_scanline(F &&callback, const char *name, U &&screen, int first_vpos, int increment) { m_type = TIMER_TYPE_SCANLINE; - m_callback = std::forward<Object>(cb); - m_screen_tag = screen; + m_callback.set(std::forward<F>(callback), name); + m_screen.set_tag(std::forward<U>(screen)); m_first_vpos = first_vpos; m_increment = increment; } - template <class FunctionClass> void configure_scanline(void (FunctionClass::*callback)(timer_device &, void *, s32), - const char *name, const char *screen, int first_vpos, int increment) - { - configure_scanline(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), screen, first_vpos, increment); - } - template <class FunctionClass> void configure_scanline(const char *devname, void (FunctionClass::*callback)(timer_device &, void *, s32), - const char *name, const char *screen, int first_vpos, int increment) + template <typename T, typename F, typename U> void configure_scanline(T &&target, F &&callback, const char *name, U &&screen, int first_vpos, int increment) { - configure_scanline(expired_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), screen, first_vpos, increment); + m_type = TIMER_TYPE_SCANLINE; + m_callback.set(std::forward<T>(target), std::forward<F>(callback), name); + m_screen.set_tag(std::forward<U>(screen)); + m_first_vpos = first_vpos; + m_increment = increment; } - template <typename Object> void set_callback(Object &&cb) { m_callback = std::forward<Object>(cb); } - template <class FunctionClass> void set_callback(void (FunctionClass::*callback)(timer_device &, void *, s32), const char *name) - { - set_callback(expired_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_callback(T &&... args) { m_callback.set(std::forward<T>(args)...); } void set_start_delay(const attotime &delay) { m_start_delay = delay; } void config_param(int param) { m_param = param; } @@ -150,8 +130,7 @@ private: s32 m_param; // the integer parameter passed to the timer callback // scanline timers only - const char * m_screen_tag; // the tag of the screen this timer tracks - screen_device * m_screen; // pointer to the screen device + optional_device<screen_device> m_screen; // pointer to the screen device u32 m_first_vpos; // the first vertical scanline position the timer fires on u32 m_increment; // the number of scanlines between firings diff --git a/src/devices/machine/upd7002.cpp b/src/devices/machine/upd7002.cpp index 7dd57725147..2d4d2ad4bc6 100644 --- a/src/devices/machine/upd7002.cpp +++ b/src/devices/machine/upd7002.cpp @@ -19,7 +19,14 @@ DEFINE_DEVICE_TYPE(UPD7002, upd7002_device, "upd7002", "uPD7002 ADC") upd7002_device::upd7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD7002, tag, owner, clock), m_status(0), m_data1(0), m_data0(0), m_digitalvalue(0), m_conversion_counter(0) + : device_t(mconfig, UPD7002, tag, owner, clock) + , m_status(0) + , m_data1(0) + , m_data0(0) + , m_digitalvalue(0) + , m_conversion_counter(0) + , m_get_analogue_cb(*this) + , m_eoc_cb(*this) { } @@ -29,8 +36,8 @@ upd7002_device::upd7002_device(const machine_config &mconfig, const char *tag, d void upd7002_device::device_start() { - m_get_analogue_cb.bind_relative_to(*owner()); - m_eoc_cb.bind_relative_to(*owner()); + m_get_analogue_cb.resolve(); + m_eoc_cb.resolve(); // register for state saving save_item(NAME(m_status)); diff --git a/src/devices/machine/upd7002.h b/src/devices/machine/upd7002.h index 2a68774d435..5f9e88928c7 100644 --- a/src/devices/machine/upd7002.h +++ b/src/devices/machine/upd7002.h @@ -27,8 +27,8 @@ public: upd7002_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_get_analogue_callback(T &&... args) { m_get_analogue_cb = get_analogue_delegate(std::forward<T>(args)...); } - template <typename... T> void set_eoc_callback(T &&... args) { m_eoc_cb = eoc_delegate(std::forward<T>(args)...); } + template <typename... T> void set_get_analogue_callback(T &&... args) { m_get_analogue_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_eoc_callback(T &&... args) { m_eoc_cb.set(std::forward<T>(args)...); } DECLARE_READ_LINE_MEMBER(eoc_r); uint8_t read(offs_t offset); diff --git a/src/devices/machine/vrc4373.cpp b/src/devices/machine/vrc4373.cpp index 1ed8e0508c9..992bfc355ef 100644 --- a/src/devices/machine/vrc4373.cpp +++ b/src/devices/machine/vrc4373.cpp @@ -235,8 +235,8 @@ void vrc4373_device::map_cpu_space() winStart = m_cpu_regs[NREG_PCIMW1]&0xff000000; winEnd = winStart | (~(0x80000000 | (((m_cpu_regs[NREG_PCIMW1]>>13)&0x7f)<<24))); winSize = winEnd - winStart + 1; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master1_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master1_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc4373_device::master1_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc4373_device::master1_w))); LOGNILE("map_cpu_space Master Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_pci1_laddr); } // PCI Master Window 2 @@ -244,8 +244,8 @@ void vrc4373_device::map_cpu_space() winStart = m_cpu_regs[NREG_PCIMW2]&0xff000000; winEnd = winStart | (~(0x80000000 | (((m_cpu_regs[NREG_PCIMW2]>>13)&0x7f)<<24))); winSize = winEnd - winStart + 1; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master2_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master2_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc4373_device::master2_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc4373_device::master2_w))); LOGNILE("map_cpu_space Master Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_pci2_laddr); } // PCI IO Window @@ -253,8 +253,8 @@ void vrc4373_device::map_cpu_space() winStart = m_cpu_regs[NREG_PCIMIOW]&0xff000000; winEnd = winStart | (~(0x80000000 | (((m_cpu_regs[NREG_PCIMIOW]>>13)&0x7f)<<24))); winSize = winEnd - winStart + 1; - m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::master_io_r), this)); - m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::master_io_w), this)); + m_cpu_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc4373_device::master_io_r))); + m_cpu_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc4373_device::master_io_w))); LOGNILE("map_cpu_space IO Window start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_pci_io_laddr); } } @@ -269,8 +269,8 @@ void vrc4373_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = m_cpu_regs[NREG_PCITW1]&0xffe00000; winEnd = winStart | (~(0xf0000000 | (((m_cpu_regs[NREG_PCITW1]>>13)&0x7f)<<21))); winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::target1_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::target1_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc4373_device::target1_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc4373_device::target1_w))); LOGNILE("map_extra Target Window 1 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_target1_laddr); } // PCI Target Window 2 @@ -278,8 +278,8 @@ void vrc4373_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = m_cpu_regs[NREG_PCITW2]&0xffe00000; winEnd = winStart | (~(0xf0000000 | (((m_cpu_regs[NREG_PCITW2]>>13)&0x7f)<<21))); winSize = winEnd - winStart + 1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc4373_device::target2_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc4373_device::target2_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc4373_device::target2_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc4373_device::target2_w))); LOGNILE("map_extra Target Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", winStart, winEnd, winSize, m_target2_laddr); } } diff --git a/src/devices/machine/vrc5074.cpp b/src/devices/machine/vrc5074.cpp index 0aeef7ebfdc..30fcbc3fe1b 100644 --- a/src/devices/machine/vrc5074.cpp +++ b/src/devices/machine/vrc5074.cpp @@ -333,12 +333,12 @@ void vrc5074_device::map_cpu_space() winStart = regConfig & 0xffe00000; if (winSize > 0) { if (index == 0) { - m_cpu_space->install_read_handler(winStart, winStart + winSize - 1, read32_delegate(FUNC(vrc5074_device::pci0_r), this)); - m_cpu_space->install_write_handler(winStart, winStart + winSize - 1, write32_delegate(FUNC(vrc5074_device::pci0_w), this)); + m_cpu_space->install_read_handler(winStart, winStart + winSize - 1, read32_delegate(*this, FUNC(vrc5074_device::pci0_r))); + m_cpu_space->install_write_handler(winStart, winStart + winSize - 1, write32_delegate(*this, FUNC(vrc5074_device::pci0_w))); } else { - m_cpu_space->install_read_handler(winStart, winStart + winSize - 1, read32_delegate(FUNC(vrc5074_device::pci1_r), this)); - m_cpu_space->install_write_handler(winStart, winStart + winSize - 1, write32_delegate(FUNC(vrc5074_device::pci1_w), this)); + m_cpu_space->install_read_handler(winStart, winStart + winSize - 1, read32_delegate(*this, FUNC(vrc5074_device::pci1_r))); + m_cpu_space->install_write_handler(winStart, winStart + winSize - 1, write32_delegate(*this, FUNC(vrc5074_device::pci1_w))); } } if (LOG_NILE | LOG_MAP) @@ -362,8 +362,8 @@ void vrc5074_device::map_extra(uint64_t memory_window_start, uint64_t memory_win winStart = 0x0; winEnd = winStart + winSize -1; - memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc5074_device::target1_r), this)); - memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc5074_device::target1_w), this)); + memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc5074_device::target1_r))); + memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc5074_device::target1_w))); if (LOG_NILE | LOG_MAP) logerror("%s: map_extra Target Window 1 start=%08X end=%08X size=%08X\n", tag(), winStart, winEnd, winSize); } @@ -372,8 +372,8 @@ void vrc5074_device::map_extra(uint64_t memory_window_start, uint64_t memory_win // winStart = m_cpu_regs[NREG_PCITW2]&0xffe00000; // winEnd = winStart | (~(0xf0000000 | (((m_cpu_regs[NREG_PCITW2]>>13)&0x7f)<<21))); // winSize = winEnd - winStart + 1; - // memory_space->install_read_handler(winStart, winEnd, read32_delegate(FUNC(vrc5074_device::target2_r), this)); - // memory_space->install_write_handler(winStart, winEnd, write32_delegate(FUNC(vrc5074_device::target2_w), this)); + // memory_space->install_read_handler(winStart, winEnd, read32_delegate(*this, FUNC(vrc5074_device::target2_r))); + // memory_space->install_write_handler(winStart, winEnd, write32_delegate(*this, FUNC(vrc5074_device::target2_w))); // if (LOG_NILE) // logerror("%s: map_extra Target Window 2 start=%08X end=%08X size=%08X laddr=%08X\n", tag(), winStart, winEnd, winSize, m_target2_laddr); //} diff --git a/src/devices/machine/wd7600.cpp b/src/devices/machine/wd7600.cpp index 373c371cb5f..e1f81e0282b 100644 --- a/src/devices/machine/wd7600.cpp +++ b/src/devices/machine/wd7600.cpp @@ -159,46 +159,46 @@ void wd7600_device::device_start() if (m_space_io->data_width() == 16) { // FIXME: are all these address ranges correct? - m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma1)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma1)), 0xffff); - m_space_io->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic1)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic1)), 0xffff); - m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(FUNC(pit8254_device::read), &(*m_ctc)), write8sm_delegate(FUNC(pit8254_device::write), &(*m_ctc)), 0xffff); - m_space_io->install_readwrite_handler(0x0060, 0x0061, read8smo_delegate(FUNC(wd7600_device::keyb_data_r), this), write8smo_delegate(FUNC(wd7600_device::keyb_data_w), this), 0x00ff); - m_space_io->install_readwrite_handler(0x0060, 0x0061, read8smo_delegate(FUNC(wd7600_device::portb_r), this), write8smo_delegate(FUNC(wd7600_device::portb_w), this), 0xff00); - m_space_io->install_readwrite_handler(0x0064, 0x0065, read8smo_delegate(FUNC(wd7600_device::keyb_status_r), this), write8smo_delegate(FUNC(wd7600_device::keyb_cmd_w), this), 0x00ff); - m_space_io->install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(FUNC(mc146818_device::read), &(*m_rtc)), write8sm_delegate(FUNC(wd7600_device::rtc_w), this), 0xffff); - m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(FUNC(wd7600_device::dma_page_r), this), write8sm_delegate(FUNC(wd7600_device::dma_page_w), this), 0xffff); - m_space_io->install_readwrite_handler(0x0092, 0x0093, read8smo_delegate(FUNC(wd7600_device::a20_reset_r), this), write8smo_delegate(FUNC(wd7600_device::a20_reset_w), this), 0x00ff); - m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic2)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic2)), 0xffff); - m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma2)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma2)), 0x00ff); - m_space_io->install_readwrite_handler(0x2072, 0x2073, read16smo_delegate(FUNC(wd7600_device::refresh_r), this), write16smo_delegate(FUNC(wd7600_device::refresh_w), this)); - m_space_io->install_readwrite_handler(0x2872, 0x2873, read16smo_delegate(FUNC(wd7600_device::chipsel_r), this), write16smo_delegate(FUNC(wd7600_device::chipsel_w), this)); - m_space_io->install_readwrite_handler(0x3872, 0x3873, read16smo_delegate(FUNC(wd7600_device::mem_ctrl_r), this), write16smo_delegate(FUNC(wd7600_device::mem_ctrl_w), this)); - m_space_io->install_readwrite_handler(0x4872, 0x4873, read16s_delegate(FUNC(wd7600_device::bank_01_start_r), this), write16s_delegate(FUNC(wd7600_device::bank_01_start_w), this)); - m_space_io->install_readwrite_handler(0x5072, 0x5073, read16s_delegate(FUNC(wd7600_device::bank_23_start_r), this), write16s_delegate(FUNC(wd7600_device::bank_23_start_w), this)); - m_space_io->install_readwrite_handler(0x5872, 0x5873, read16smo_delegate(FUNC(wd7600_device::split_addr_r), this), write16smo_delegate(FUNC(wd7600_device::split_addr_w), this)); - m_space_io->install_readwrite_handler(0x9872, 0x9873, read16smo_delegate(FUNC(wd7600_device::diag_r), this), write16smo_delegate(FUNC(wd7600_device::diag_w), this)); + m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(*m_dma1, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma1, FUNC(am9517a_device::write)), 0xffff); + m_space_io->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(*m_pic1, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic1, FUNC(pic8259_device::write)), 0xffff); + m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(*m_ctc, FUNC(pit8254_device::read)), write8sm_delegate(*m_ctc, FUNC(pit8254_device::write)), 0xffff); + m_space_io->install_readwrite_handler(0x0060, 0x0061, read8smo_delegate(*this, FUNC(wd7600_device::keyb_data_r)), write8smo_delegate(*this, FUNC(wd7600_device::keyb_data_w)), 0x00ff); + m_space_io->install_readwrite_handler(0x0060, 0x0061, read8smo_delegate(*this, FUNC(wd7600_device::portb_r)), write8smo_delegate(*this, FUNC(wd7600_device::portb_w)), 0xff00); + m_space_io->install_readwrite_handler(0x0064, 0x0065, read8smo_delegate(*this, FUNC(wd7600_device::keyb_status_r)), write8smo_delegate(*this, FUNC(wd7600_device::keyb_cmd_w)), 0x00ff); + m_space_io->install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(*m_rtc, FUNC(mc146818_device::read)), write8sm_delegate(*this, FUNC(wd7600_device::rtc_w)), 0xffff); + m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(*this, FUNC(wd7600_device::dma_page_r)), write8sm_delegate(*this, FUNC(wd7600_device::dma_page_w)), 0xffff); + m_space_io->install_readwrite_handler(0x0092, 0x0093, read8smo_delegate(*this, FUNC(wd7600_device::a20_reset_r)), write8smo_delegate(*this, FUNC(wd7600_device::a20_reset_w)), 0x00ff); + m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(*m_pic2, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic2, FUNC(pic8259_device::write)), 0xffff); + m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(*m_dma2, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma2, FUNC(am9517a_device::write)), 0x00ff); + m_space_io->install_readwrite_handler(0x2072, 0x2073, read16smo_delegate(*this, FUNC(wd7600_device::refresh_r)), write16smo_delegate(*this, FUNC(wd7600_device::refresh_w))); + m_space_io->install_readwrite_handler(0x2872, 0x2873, read16smo_delegate(*this, FUNC(wd7600_device::chipsel_r)), write16smo_delegate(*this, FUNC(wd7600_device::chipsel_w))); + m_space_io->install_readwrite_handler(0x3872, 0x3873, read16smo_delegate(*this, FUNC(wd7600_device::mem_ctrl_r)), write16smo_delegate(*this, FUNC(wd7600_device::mem_ctrl_w))); + m_space_io->install_readwrite_handler(0x4872, 0x4873, read16s_delegate(*this, FUNC(wd7600_device::bank_01_start_r)), write16s_delegate(*this, FUNC(wd7600_device::bank_01_start_w))); + m_space_io->install_readwrite_handler(0x5072, 0x5073, read16s_delegate(*this, FUNC(wd7600_device::bank_23_start_r)), write16s_delegate(*this, FUNC(wd7600_device::bank_23_start_w))); + m_space_io->install_readwrite_handler(0x5872, 0x5873, read16smo_delegate(*this, FUNC(wd7600_device::split_addr_r)), write16smo_delegate(*this, FUNC(wd7600_device::split_addr_w))); + m_space_io->install_readwrite_handler(0x9872, 0x9873, read16smo_delegate(*this, FUNC(wd7600_device::diag_r)), write16smo_delegate(*this, FUNC(wd7600_device::diag_w))); } else { assert(m_space_io->data_width() == 32); - m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma1)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma1)), 0xffffffff); - m_space_io->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic1)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic1)), 0x0000ffff); - m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(FUNC(pit8254_device::read), &(*m_ctc)), write8sm_delegate(FUNC(pit8254_device::write), &(*m_ctc)), 0xffffffff); - m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(FUNC(wd7600_device::keyb_data_r), this), write8smo_delegate(FUNC(wd7600_device::keyb_data_w), this), 0x000000ff); - m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(FUNC(wd7600_device::portb_r), this), write8smo_delegate(FUNC(wd7600_device::portb_w), this), 0x0000ff00); - m_space_io->install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(FUNC(wd7600_device::keyb_status_r), this), write8smo_delegate(FUNC(wd7600_device::keyb_cmd_w), this), 0x000000ff); - m_space_io->install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(FUNC(mc146818_device::read), &(*m_rtc)), write8sm_delegate(FUNC(wd7600_device::rtc_w), this), 0x0000ffff); - m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(FUNC(wd7600_device::dma_page_r), this), write8sm_delegate(FUNC(wd7600_device::dma_page_w), this), 0xffffffff); - m_space_io->install_readwrite_handler(0x0090, 0x0093, read8smo_delegate(FUNC(wd7600_device::a20_reset_r), this), write8smo_delegate(FUNC(wd7600_device::a20_reset_w), this), 0x00ff0000); - m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(FUNC(pic8259_device::read), &(*m_pic2)), write8sm_delegate(FUNC(pic8259_device::write), &(*m_pic2)), 0x0000ffff); - m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(FUNC(am9517a_device::read), &(*m_dma2)), write8sm_delegate(FUNC(am9517a_device::write), &(*m_dma2)), 0x00ff00ff); - m_space_io->install_readwrite_handler(0x2070, 0x2073, read16smo_delegate(FUNC(wd7600_device::refresh_r), this), write16smo_delegate(FUNC(wd7600_device::refresh_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x2870, 0x2873, read16smo_delegate(FUNC(wd7600_device::chipsel_r), this), write16smo_delegate(FUNC(wd7600_device::chipsel_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x3870, 0x3873, read16smo_delegate(FUNC(wd7600_device::mem_ctrl_r), this), write16smo_delegate(FUNC(wd7600_device::mem_ctrl_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x4870, 0x4873, read16s_delegate(FUNC(wd7600_device::bank_01_start_r), this), write16s_delegate(FUNC(wd7600_device::bank_01_start_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x5070, 0x5073, read16s_delegate(FUNC(wd7600_device::bank_23_start_r), this), write16s_delegate(FUNC(wd7600_device::bank_23_start_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x5870, 0x5873, read16smo_delegate(FUNC(wd7600_device::split_addr_r), this), write16smo_delegate(FUNC(wd7600_device::split_addr_w), this), 0xffff0000); - m_space_io->install_readwrite_handler(0x9870, 0x9873, read16smo_delegate(FUNC(wd7600_device::diag_r), this), write16smo_delegate(FUNC(wd7600_device::diag_w), this), 0xffff0000); + m_space_io->install_readwrite_handler(0x0000, 0x000f, read8sm_delegate(*m_dma1, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma1, FUNC(am9517a_device::write)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0020, 0x003f, read8sm_delegate(*m_pic1, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic1, FUNC(pic8259_device::write)), 0x0000ffff); + m_space_io->install_readwrite_handler(0x0040, 0x0043, read8sm_delegate(*m_ctc, FUNC(pit8254_device::read)), write8sm_delegate(*m_ctc, FUNC(pit8254_device::write)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(*this, FUNC(wd7600_device::keyb_data_r)), write8smo_delegate(*this, FUNC(wd7600_device::keyb_data_w)), 0x000000ff); + m_space_io->install_readwrite_handler(0x0060, 0x0063, read8smo_delegate(*this, FUNC(wd7600_device::portb_r)), write8smo_delegate(*this, FUNC(wd7600_device::portb_w)), 0x0000ff00); + m_space_io->install_readwrite_handler(0x0064, 0x0067, read8smo_delegate(*this, FUNC(wd7600_device::keyb_status_r)), write8smo_delegate(*this, FUNC(wd7600_device::keyb_cmd_w)), 0x000000ff); + m_space_io->install_readwrite_handler(0x0070, 0x007f, read8sm_delegate(*m_rtc, FUNC(mc146818_device::read)), write8sm_delegate(*this, FUNC(wd7600_device::rtc_w)), 0x0000ffff); + m_space_io->install_readwrite_handler(0x0080, 0x008f, read8sm_delegate(*this, FUNC(wd7600_device::dma_page_r)), write8sm_delegate(*this, FUNC(wd7600_device::dma_page_w)), 0xffffffff); + m_space_io->install_readwrite_handler(0x0090, 0x0093, read8smo_delegate(*this, FUNC(wd7600_device::a20_reset_r)), write8smo_delegate(*this, FUNC(wd7600_device::a20_reset_w)), 0x00ff0000); + m_space_io->install_readwrite_handler(0x00a0, 0x00a3, read8sm_delegate(*m_pic2, FUNC(pic8259_device::read)), write8sm_delegate(*m_pic2, FUNC(pic8259_device::write)), 0x0000ffff); + m_space_io->install_readwrite_handler(0x00c0, 0x00df, read8sm_delegate(*m_dma2, FUNC(am9517a_device::read)), write8sm_delegate(*m_dma2, FUNC(am9517a_device::write)), 0x00ff00ff); + m_space_io->install_readwrite_handler(0x2070, 0x2073, read16smo_delegate(*this, FUNC(wd7600_device::refresh_r)), write16smo_delegate(*this, FUNC(wd7600_device::refresh_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x2870, 0x2873, read16smo_delegate(*this, FUNC(wd7600_device::chipsel_r)), write16smo_delegate(*this, FUNC(wd7600_device::chipsel_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x3870, 0x3873, read16smo_delegate(*this, FUNC(wd7600_device::mem_ctrl_r)), write16smo_delegate(*this, FUNC(wd7600_device::mem_ctrl_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x4870, 0x4873, read16s_delegate(*this, FUNC(wd7600_device::bank_01_start_r)), write16s_delegate(*this, FUNC(wd7600_device::bank_01_start_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x5070, 0x5073, read16s_delegate(*this, FUNC(wd7600_device::bank_23_start_r)), write16s_delegate(*this, FUNC(wd7600_device::bank_23_start_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x5870, 0x5873, read16smo_delegate(*this, FUNC(wd7600_device::split_addr_r)), write16smo_delegate(*this, FUNC(wd7600_device::split_addr_w)), 0xffff0000); + m_space_io->install_readwrite_handler(0x9870, 0x9873, read16smo_delegate(*this, FUNC(wd7600_device::diag_r)), write16smo_delegate(*this, FUNC(wd7600_device::diag_w)), 0xffff0000); } } diff --git a/src/devices/sound/bsmt2000.cpp b/src/devices/sound/bsmt2000.cpp index f29e429390a..9b5610fac5c 100644 --- a/src/devices/sound/bsmt2000.cpp +++ b/src/devices/sound/bsmt2000.cpp @@ -65,7 +65,7 @@ bsmt2000_device::bsmt2000_device(const machine_config &mconfig, const char *tag, : device_t(mconfig, BSMT2000, tag, owner, clock) , device_sound_interface(mconfig, *this) , device_rom_interface(mconfig, *this, 32) - , m_ready_callback() + , m_ready_callback(*this) , m_stream(nullptr) , m_cpu(*this, "bsmt2000") , m_register_select(0) @@ -110,7 +110,7 @@ void bsmt2000_device::device_add_mconfig(machine_config &config) void bsmt2000_device::device_start() { - m_ready_callback.bind_relative_to(*owner()); + m_ready_callback.resolve(); // create the stream; BSMT typically runs at 24MHz and writes to a DAC, so // in theory we should generate a 24MHz stream, but that's certainly overkill diff --git a/src/devices/sound/bsmt2000.h b/src/devices/sound/bsmt2000.h index 6f720478f90..361d270b282 100644 --- a/src/devices/sound/bsmt2000.h +++ b/src/devices/sound/bsmt2000.h @@ -34,15 +34,7 @@ public: bsmt2000_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // inline configuration helpers - void set_ready_callback(ready_callback callback) { m_ready_callback = callback; } - template <class FunctionClass> void set_ready_callback(const char *devname, void (FunctionClass::*callback)(), const char *name) - { - set_ready_callback(ready_callback(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_ready_callback(void (FunctionClass::*callback)(), const char *name) - { - set_ready_callback(ready_callback(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_ready_callback(T &&... args) { m_ready_callback.set(std::forward<T>(args)...); } // public interface uint16_t read_status(); diff --git a/src/devices/sound/cdp1864.cpp b/src/devices/sound/cdp1864.cpp index 97df1a0aad2..ace6a34781e 100644 --- a/src/devices/sound/cdp1864.cpp +++ b/src/devices/sound/cdp1864.cpp @@ -95,7 +95,7 @@ void cdp1864_device::device_config_complete() screen().set_raw(clock(), SCREEN_WIDTH, HBLANK_END, HBLANK_START, TOTAL_SCANLINES, SCANLINE_VBLANK_END, SCANLINE_VBLANK_START); if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(cdp1864_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(cdp1864_device::screen_update)); } diff --git a/src/devices/sound/cdp1869.cpp b/src/devices/sound/cdp1869.cpp index 661611531d8..169b87cf7f7 100644 --- a/src/devices/sound/cdp1869.cpp +++ b/src/devices/sound/cdp1869.cpp @@ -357,6 +357,9 @@ cdp1869_device::cdp1869_device(const machine_config &mconfig, const char *tag, d device_memory_interface(mconfig, *this), m_read_pal_ntsc(*this), m_write_prd(*this), + m_in_pcb_func(*this), + m_in_char_ram_func(*this), + m_out_char_ram_func(*this), m_color_clock(0), m_stream(nullptr), m_palette(*this, "palette"), @@ -384,9 +387,9 @@ void cdp1869_device::device_start() // resolve callbacks m_read_pal_ntsc.resolve_safe(0); m_write_prd.resolve_safe(); - m_in_pcb_func.bind_relative_to(*owner()); - m_in_char_ram_func.bind_relative_to(*owner()); - m_out_char_ram_func.bind_relative_to(*owner()); + m_in_pcb_func.resolve(); + m_in_char_ram_func.resolve(); + m_out_char_ram_func.resolve(); // allocate timers m_prd_timer = timer_alloc(); diff --git a/src/devices/sound/cdp1869.h b/src/devices/sound/cdp1869.h index 96f8b4dbbf3..ac377a9815c 100644 --- a/src/devices/sound/cdp1869.h +++ b/src/devices/sound/cdp1869.h @@ -141,6 +141,10 @@ public: static constexpr unsigned PALETTE_LENGTH = 8+64; + typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate; + typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate; + typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate; + // construction/destruction template <typename T> cdp1869_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&addrmap) @@ -156,44 +160,9 @@ public: void set_color_clock(const XTAL &xtal) { xtal.validate("selecting cdp1869 clock"); set_color_clock(xtal.value()); } // delegate setters - typedef device_delegate<uint8_t (uint16_t pma, uint8_t cma, uint8_t pmd)> char_ram_read_delegate; - void set_char_ram_read_callback(char_ram_read_delegate callback) { m_in_char_ram_func = callback; } - template <class FunctionClass> void set_char_ram_read_callback(const char *devname, - uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name) - { - set_char_ram_read_callback(char_ram_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_char_ram_read_callback( - uint8_t (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name) - { - set_char_ram_read_callback(char_ram_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - - typedef device_delegate<void (uint16_t pma, uint8_t cma, uint8_t pmd, uint8_t data)> char_ram_write_delegate; - void set_char_ram_write_callback(char_ram_write_delegate callback) { m_out_char_ram_func = callback; } - template <class FunctionClass> void set_char_ram_write_callback(const char *devname, - void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name) - { - set_char_ram_write_callback(char_ram_write_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_char_ram_write_callback( - void (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t, uint8_t), const char *name) - { - set_char_ram_write_callback(char_ram_write_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - - typedef device_delegate<int (uint16_t pma, uint8_t cma, uint8_t pmd)> pcb_read_delegate; - void set_pcb_read_callback(pcb_read_delegate callback) { m_in_pcb_func = callback; } - template <class FunctionClass> void set_pcb_read_callback(const char *devname, - int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name) - { - set_pcb_read_callback(pcb_read_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_pcb_read_callback( - int (FunctionClass::*callback)(uint16_t, uint8_t, uint8_t), const char *name) - { - set_pcb_read_callback(pcb_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_char_ram_read_callback(T &&... args) { m_in_char_ram_func.set(std::forward<T>(args)...); } + template <typename... T> void set_char_ram_write_callback(T &&... args) { m_out_char_ram_func.set(std::forward<T>(args)...); } + template <typename... T> void set_pcb_read_callback(T &&... args) { m_in_pcb_func.set(std::forward<T>(args)...); } // helper functions template <typename T, typename U> screen_device& add_pal_screen(machine_config &config, T &&screen_tag, U &&clock) diff --git a/src/devices/sound/cem3394.cpp b/src/devices/sound/cem3394.cpp index 22894cfcbfd..60381d97723 100644 --- a/src/devices/sound/cem3394.cpp +++ b/src/devices/sound/cem3394.cpp @@ -16,6 +16,7 @@ #include "emu.h" #include "cem3394.h" +#include <algorithm> /* waveform generation parameters */ @@ -118,6 +119,7 @@ DEFINE_DEVICE_TYPE(CEM3394, cem3394_device, "cem3394", "CEM3394 Synthesizer Voic cem3394_device::cem3394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CEM3394, tag, owner, clock), device_sound_interface(mconfig, *this), + m_ext_cb(*this), m_stream(nullptr), m_vco_zero_freq(0.0), m_filter_zero_freq(0.0), @@ -137,7 +139,7 @@ cem3394_device::cem3394_device(const machine_config &mconfig, const char *tag, d m_mixer_buffer(nullptr), m_external_buffer(nullptr) { - memset(m_values, 0, 8*sizeof(double)); + std::fill(std::begin(m_values), std::end(m_values), 0.0); } @@ -333,7 +335,7 @@ void cem3394_device::device_start() /* allocate stream channels, 1 per chip */ m_stream = stream_alloc(0, 1, m_sample_rate); - m_ext_cb.bind_relative_to(*owner()); + m_ext_cb.resolve(); /* allocate memory for a mixer buffer and external buffer (1 second should do it!) */ m_mixer_buffer = std::make_unique<int16_t[]>(m_sample_rate); diff --git a/src/devices/sound/cem3394.h b/src/devices/sound/cem3394.h index 3a2d59afc02..40a6a2d0204 100644 --- a/src/devices/sound/cem3394.h +++ b/src/devices/sound/cem3394.h @@ -30,7 +30,7 @@ public: cem3394_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_ext_input_callback(T &&... args) { m_ext_cb = ext_input_delegate(std::forward<T>(args)...); } + template <typename... T> void set_ext_input_callback(T &&... args) { m_ext_cb.set(std::forward<T>(args)...); } void set_vco_zero_freq(double freq) { m_vco_zero_freq = freq; } void set_filter_zero_freq(double freq) { m_filter_zero_freq = freq; } diff --git a/src/devices/sound/k054539.cpp b/src/devices/sound/k054539.cpp index 17dd9c97501..b824650544d 100644 --- a/src/devices/sound/k054539.cpp +++ b/src/devices/sound/k054539.cpp @@ -32,6 +32,7 @@ k054539_device::k054539_device(const machine_config &mconfig, const char *tag, d , m_timer(nullptr) , m_timer_state(0) , m_timer_handler(*this) + , m_apan_cb(*this) { } @@ -503,7 +504,7 @@ void k054539_device::device_start() // resolve / bind callbacks m_timer_handler.resolve_safe(); - m_apan_cb.bind_relative_to(*owner()); + m_apan_cb.resolve(); for (auto & elem : gain) elem = 1.0; diff --git a/src/devices/sound/k054539.h b/src/devices/sound/k054539.h index 9e7bafdb0fc..65a551b1c4b 100644 --- a/src/devices/sound/k054539.h +++ b/src/devices/sound/k054539.h @@ -26,7 +26,7 @@ public: UPDATE_AT_KEYON = 4 }; - typedef device_delegate<void (double left, double right)> cb_delegate; + using apan_delegate = device_delegate<void (double left, double right)>; // construction/destruction k054539_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -34,15 +34,7 @@ public: // configuration helpers auto timer_handler() { return m_timer_handler.bind(); } - void set_analog_callback(cb_delegate callback) { m_apan_cb = callback; } - template <class FunctionClass> void set_analog_callback(const char *devname, void (FunctionClass::*callback)(double, double), const char *name) - { - set_analog_callback(cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_analog_callback(void (FunctionClass::*callback)(double, double), const char *name) - { - set_analog_callback(cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_analog_callback(T &&... args) { m_apan_cb.set(std::forward<T>(args)...); } void write(offs_t offset, u8 data); u8 read(offs_t offset); @@ -105,7 +97,7 @@ private: emu_timer *m_timer; uint32_t m_timer_state; devcb_write_line m_timer_handler; - cb_delegate m_apan_cb; + apan_delegate m_apan_cb; bool regupdate(); void keyon(int channel); diff --git a/src/devices/sound/lc7535.cpp b/src/devices/sound/lc7535.cpp index 00f86ea2945..0f05bb14456 100644 --- a/src/devices/sound/lc7535.cpp +++ b/src/devices/sound/lc7535.cpp @@ -41,6 +41,7 @@ DEFINE_DEVICE_TYPE(LC7535, lc7535_device, "lc7535", "Sanyo LC7535") lc7535_device::lc7535_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, LC7535, tag, owner, clock), m_select_cb(*this), + m_volume_cb(*this), m_addr(0), m_data(0), m_count(0), m_ce(0), m_di(0), m_clk(0) @@ -55,7 +56,7 @@ void lc7535_device::device_start() { // resolve callbacks m_select_cb.resolve(); - m_volume_cb.bind_relative_to(*owner()); + m_volume_cb.resolve(); // register for save states save_item(NAME(m_addr)); diff --git a/src/devices/sound/lc7535.h b/src/devices/sound/lc7535.h index f2137fd82c7..4fcf649abd9 100644 --- a/src/devices/sound/lc7535.h +++ b/src/devices/sound/lc7535.h @@ -42,15 +42,7 @@ public: typedef device_delegate<void (int attenuation_right, int attenuation_left, bool loudness)> volume_delegate; auto select() { return m_select_cb.bind(); } - void set_volume_callback(volume_delegate callback) { m_volume_cb = callback; } - template <class FunctionClass> void set_volume_callback(const char *devname, void (FunctionClass::*callback)(int, int, bool), const char *name) - { - set_volume_callback(volume_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_volume_callback(void (FunctionClass::*callback)(int, int, bool), const char *name) - { - set_volume_callback(volume_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_volume_callback(T &&... args) { m_volume_cb.set(std::forward<T>(args)...); } // serial interface DECLARE_WRITE_LINE_MEMBER( ce_w ); diff --git a/src/devices/sound/pokey.cpp b/src/devices/sound/pokey.cpp index 29baecb352e..d157745fca5 100644 --- a/src/devices/sound/pokey.cpp +++ b/src/devices/sound/pokey.cpp @@ -178,6 +178,8 @@ pokey_device::pokey_device(const machine_config &mconfig, const char *tag, devic m_allpot_r_cb(*this), m_serin_r_cb(*this), m_serout_w_cb(*this), + m_keyboard_r(*this), + m_irq_f(*this), m_output_type(LEGACY_LINEAR) { } @@ -189,10 +191,9 @@ pokey_device::pokey_device(const machine_config &mconfig, const char *tag, devic void pokey_device::device_start() { //int sample_rate = clock(); - int i; /* Setup channels */ - for (i=0; i<POKEY_CHANNELS; i++) + for (int i=0; i<POKEY_CHANNELS; i++) { m_channel[i].m_parent = this; m_channel[i].m_INTMask = 0; @@ -202,8 +203,8 @@ void pokey_device::device_start() m_channel[CHAN4].m_INTMask = IRQ_TIMR4; // bind callbacks - m_keyboard_r.bind_relative_to(*owner()); - m_irq_f.bind_relative_to(*owner()); + m_keyboard_r.resolve(); + m_irq_f.resolve(); /* calculate the A/D times * In normal, slow mode (SKCTL bit SK_PADDLE is clear) the conversion @@ -247,15 +248,8 @@ void pokey_device::device_start() m_kbd_state = 0; /* reset more internal state */ - for (i=0; i<3; i++) - { - m_clock_cnt[i] = 0; - } - - for (i=0; i<8; i++) - { - m_POTx[i] = 0; - } + std::fill(std::begin(m_clock_cnt), std::end(m_clock_cnt), 0); + std::fill(std::begin(m_POTx), std::end(m_POTx), 0); for (devcb_read8 &cb : m_pot_r_cb) cb.resolve(); @@ -270,7 +264,7 @@ void pokey_device::device_start() timer_alloc(SYNC_POT); timer_alloc(SYNC_SET_IRQST); - for (i=0; i<POKEY_CHANNELS; i++) + for (int i=0; i<POKEY_CHANNELS; i++) { save_item(NAME(m_channel[i].m_borrow_cnt), i); save_item(NAME(m_channel[i].m_counter), i); diff --git a/src/devices/sound/pokey.h b/src/devices/sound/pokey.h index 7e63e89e54d..b35f76a17ab 100644 --- a/src/devices/sound/pokey.h +++ b/src/devices/sound/pokey.h @@ -144,26 +144,10 @@ public: /* k543210 = k5 ... k0 returns bit0: kr1, bit1: kr2 */ /* all are, in contrast to actual hardware, ACTIVE_HIGH */ typedef device_delegate<uint8_t (uint8_t k543210)> kb_cb_delegate; - void set_keyboard_callback(kb_cb_delegate callback) { m_keyboard_r = callback; } - template <class FunctionClass> void set_keyboard_callback(const char *devname, uint8_t (FunctionClass::*callback)(uint8_t), const char *name) - { - set_keyboard_callback(kb_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_keyboard_callback(uint8_t (FunctionClass::*callback)(uint8_t), const char *name) - { - set_keyboard_callback(kb_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_keyboard_callback(T &&... args) { m_keyboard_r.set(std::forward<T>(args)...); } typedef device_delegate<void (int mask)> int_cb_delegate; - void set_interrupt_callback(int_cb_delegate callback) { m_irq_f = callback; } - template <class FunctionClass> void set_interrupt_callback(const char *devname, void (FunctionClass::*callback)(int), const char *name) - { - set_interrupt_callback(int_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_interrupt_callback(void (FunctionClass::*callback)(int), const char *name) - { - set_interrupt_callback(int_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_interrupt_callback(T &&... args) { m_irq_f.set(std::forward<T>(args)...); } uint8_t read(offs_t offset); void write(offs_t offset, uint8_t data); diff --git a/src/devices/sound/rf5c68.cpp b/src/devices/sound/rf5c68.cpp index 9ec522b7d92..56661d9a6d4 100644 --- a/src/devices/sound/rf5c68.cpp +++ b/src/devices/sound/rf5c68.cpp @@ -33,6 +33,7 @@ rf5c68_device::rf5c68_device(const machine_config & mconfig, device_type type, c , m_cbank(0) , m_wbank(0) , m_enable(0) + , m_sample_end_cb(*this) { } @@ -61,7 +62,7 @@ void rf5c68_device::device_start() m_data = &space(0); // Find our direct access m_cache = space().cache<0, 0, ENDIANNESS_LITTLE>(); - m_sample_end_cb.bind_relative_to(*owner()); + m_sample_end_cb.resolve(); /* allocate the stream */ m_stream = stream_alloc(0, 2, clock() / 384); diff --git a/src/devices/sound/rf5c68.h b/src/devices/sound/rf5c68.h index 262efb54286..d8cd3bf344a 100644 --- a/src/devices/sound/rf5c68.h +++ b/src/devices/sound/rf5c68.h @@ -28,15 +28,7 @@ public: rf5c68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - void set_end_callback(sample_end_cb_delegate callback) { m_sample_end_cb = callback; } - template <class FunctionClass> void set_end_callback(const char *devname, void (FunctionClass::*callback)(int), const char *name) - { - set_end_callback(sample_end_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_end_callback(void (FunctionClass::*callback)(int), const char *name) - { - set_end_callback(sample_end_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_end_callback(T &&... args) { m_sample_end_cb.set(std::forward<T>(args)...); } u8 rf5c68_r(offs_t offset); void rf5c68_w(offs_t offset, u8 data); diff --git a/src/devices/sound/samples.cpp b/src/devices/sound/samples.cpp index 40ff619cdce..f03ee6fe275 100644 --- a/src/devices/sound/samples.cpp +++ b/src/devices/sound/samples.cpp @@ -57,6 +57,7 @@ samples_device::samples_device(const machine_config &mconfig, device_type type, , device_sound_interface(mconfig, *this) , m_channels(0) , m_names(nullptr) + , m_samples_start_cb(*this) { } @@ -262,7 +263,7 @@ void samples_device::device_start() } // initialize any custom handlers - m_samples_start_cb.bind_relative_to(*owner()); + m_samples_start_cb.resolve(); if (!m_samples_start_cb.isnull()) m_samples_start_cb(); diff --git a/src/devices/sound/samples.h b/src/devices/sound/samples.h index f5f1ca088f0..aae6aa2cef1 100644 --- a/src/devices/sound/samples.h +++ b/src/devices/sound/samples.h @@ -43,15 +43,7 @@ public: void set_samples_names(const char *const *names) { m_names = names; } // start callback helpers - void set_samples_start_callback(start_cb_delegate callback) { m_samples_start_cb = callback; } - template <class FunctionClass> void set_samples_start_callback(const char *devname, void (FunctionClass::*callback)(), const char *name) - { - set_samples_start_callback(start_cb_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_samples_start_callback(void (FunctionClass::*callback)(), const char *name) - { - set_samples_start_callback(start_cb_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_samples_start_callback(T &&...args) { m_samples_start_cb.set(std::forward<T>(args)...); } // getters bool playing(uint8_t channel) const; diff --git a/src/devices/video/315_5313.cpp b/src/devices/video/315_5313.cpp index d664909bfae..891e9ad0328 100644 --- a/src/devices/video/315_5313.cpp +++ b/src/devices/video/315_5313.cpp @@ -169,6 +169,9 @@ sega315_5313_device::sega315_5313_device(const machine_config &mconfig, const ch , m_sndirqline_callback(*this) , m_lv6irqline_callback(*this) , m_lv4irqline_callback(*this) + , m_32x_scanline_func(*this) + , m_32x_interrupt_func(*this) + , m_32x_scanline_helper_func(*this) , m_command_pending(0) , m_command_part1(0) , m_command_part2(0) @@ -283,9 +286,9 @@ void sega315_5313_device::device_start() m_lv6irqline_callback.resolve_safe(); m_lv4irqline_callback.resolve_safe(); - m_32x_scanline_func.bind_relative_to(*owner()); - m_32x_interrupt_func.bind_relative_to(*owner()); - m_32x_scanline_helper_func.bind_relative_to(*owner()); + m_32x_scanline_func.resolve(); + m_32x_interrupt_func.resolve(); + m_32x_scanline_helper_func.resolve(); m_vram = std::make_unique<u16[]>(0x10000 / 2); m_cram = std::make_unique<u16[]>(0x80 / 2); diff --git a/src/devices/video/315_5313.h b/src/devices/video/315_5313.h index fe68bb9d9a9..72fcd51a6ed 100644 --- a/src/devices/video/315_5313.h +++ b/src/devices/video/315_5313.h @@ -37,9 +37,9 @@ public: template <typename T> void set_ext_palette(T &&tag) { m_ext_palette.set_tag(std::forward<T>(tag)); } // Temporary solution while 32x VDP mixing and scanline interrupting is moved outside MD VDP - template <typename... T> void set_md_32x_scanline(T &&... args) { m_32x_scanline_func = md_32x_scanline_delegate(std::forward<T>(args)...); } - template <typename... T> void set_md_32x_interrupt(T &&... args) { m_32x_interrupt_func = md_32x_interrupt_delegate(std::forward<T>(args)...); } - template <typename... T> void set_md_32x_scanline_helper(T &&... args) { m_32x_scanline_helper_func = md_32x_scanline_helper_delegate(std::forward<T>(args)...); } + template <typename... T> void set_md_32x_scanline(T &&... args) { m_32x_scanline_func.set(std::forward<T>(args)...); } + template <typename... T> void set_md_32x_interrupt(T &&... args) { m_32x_interrupt_func.set(std::forward<T>(args)...); } + template <typename... T> void set_md_32x_scanline_helper(T &&... args) { m_32x_scanline_helper_func.set(std::forward<T>(args)...); } int m_use_alt_timing; // use MAME scanline timer instead, render only one scanline to a single line buffer, to be rendered by a partial update call.. experimental diff --git a/src/devices/video/cdp1861.cpp b/src/devices/video/cdp1861.cpp index 27f8d0e3729..dfe71100411 100644 --- a/src/devices/video/cdp1861.cpp +++ b/src/devices/video/cdp1861.cpp @@ -99,7 +99,7 @@ void cdp1861_device::device_config_complete() screen().set_raw(clock(), SCREEN_WIDTH, HBLANK_END, HBLANK_START, TOTAL_SCANLINES, SCANLINE_VBLANK_END, SCANLINE_VBLANK_START); if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(cdp1861_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(cdp1861_device::screen_update)); } diff --git a/src/devices/video/clgd542x.cpp b/src/devices/video/clgd542x.cpp index 47b91c8743a..f9bdf1a288a 100644 --- a/src/devices/video/clgd542x.cpp +++ b/src/devices/video/clgd542x.cpp @@ -78,7 +78,7 @@ void cirrus_gd5428_device::device_start() vga.crtc.maximum_scan_line = 1; // copy over interfaces - vga.read_dipswitch = read8_delegate(); //read_dipswitch; + vga.read_dipswitch.set(nullptr); //read_dipswitch; vga.svga_intf.seq_regcount = 0x1f; vga.svga_intf.crtc_regcount = 0x2d; vga.svga_intf.vram_size = 0x200000; diff --git a/src/devices/video/crt9021.cpp b/src/devices/video/crt9021.cpp index a0dabe4d1c3..2ed5680559f 100644 --- a/src/devices/video/crt9021.cpp +++ b/src/devices/video/crt9021.cpp @@ -62,6 +62,7 @@ DEFINE_DEVICE_TYPE(CRT9021, crt9021_device, "crt9021", "SMC CRT9021 VAC") crt9021_device::crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CRT9021, tag, owner, clock), device_video_interface(mconfig, *this), + m_display_cb(*this), m_data(0), m_ms0(0), m_ms1(0), @@ -94,6 +95,8 @@ crt9021_device::crt9021_device(const machine_config &mconfig, const char *tag, d void crt9021_device::device_start() { + m_display_cb.resolve(); + // register bitmap screen().register_screen_bitmap(m_bitmap); diff --git a/src/devices/video/crt9021.h b/src/devices/video/crt9021.h index 65de1032a64..a98c76251b0 100644 --- a/src/devices/video/crt9021.h +++ b/src/devices/video/crt9021.h @@ -53,7 +53,7 @@ public: // construction/destruction crt9021_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward<T>(args)...); } + template <typename... T> void set_display_callback(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } void write(uint8_t data) { m_data = data; } DECLARE_WRITE8_MEMBER( write ) { write(data); } diff --git a/src/devices/video/crt9028.cpp b/src/devices/video/crt9028.cpp index 07f877e3095..94cc2429e13 100644 --- a/src/devices/video/crt9028.cpp +++ b/src/devices/video/crt9028.cpp @@ -132,7 +132,7 @@ void crt9028_device::device_config_complete() } if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(crt9028_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(crt9028_device::screen_update)); } diff --git a/src/devices/video/crtc_ega.cpp b/src/devices/video/crtc_ega.cpp index 7d03b09f131..7b3641423e5 100644 --- a/src/devices/video/crtc_ega.cpp +++ b/src/devices/video/crtc_ega.cpp @@ -23,6 +23,7 @@ DEFINE_DEVICE_TYPE(CRTC_EGA, crtc_ega_device, "crtc_ega", "IBM EGA CRT Controlle crtc_ega_device::crtc_ega_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, CRTC_EGA, tag, owner, clock), device_video_interface(mconfig, *this, false) , m_res_out_de_cb(*this), m_res_out_hsync_cb(*this), m_res_out_vsync_cb(*this), m_res_out_vblank_cb(*this) + , m_begin_update_cb(*this), m_row_update_cb(*this), m_end_update_cb(*this) , m_horiz_char_total(0), m_horiz_disp(0), m_horiz_blank_start(0), m_horiz_blank_end(0) , m_ena_vert_access(0), m_de_skew(0) , m_horiz_retr_start(0), m_horiz_retr_end(0), m_horiz_retr_skew(0) @@ -599,9 +600,9 @@ void crtc_ega_device::device_start() m_res_out_vblank_cb.resolve(); /* bind delegates */ - m_begin_update_cb.bind_relative_to(*owner()); - m_row_update_cb.bind_relative_to(*owner()); - m_end_update_cb.bind_relative_to(*owner()); + m_begin_update_cb.resolve(); + m_row_update_cb.resolve(); + m_end_update_cb.resolve(); /* create the timers */ m_line_timer = timer_alloc(TIMER_LINE); diff --git a/src/devices/video/crtc_ega.h b/src/devices/video/crtc_ega.h index 9d03177b494..e5a267bed90 100644 --- a/src/devices/video/crtc_ega.h +++ b/src/devices/video/crtc_ega.h @@ -34,9 +34,9 @@ public: auto res_out_vsync_callback() { return m_res_out_vsync_cb.bind(); } auto res_out_vblank_callback() { return m_res_out_vblank_cb.bind(); } - template <typename... T> void set_begin_update_callback(T &&... args) { m_begin_update_cb = begin_update_delegate(std::forward<T>(args)...); } - template <typename... T> void set_row_update_callback(T &&... args) { m_row_update_cb = row_update_delegate(std::forward<T>(args)...); } - template <typename... T> void set_end_update_callback(T &&... args) { m_end_update_cb = end_update_delegate(std::forward<T>(args)...); } + template <typename... T> void set_begin_update_callback(T &&... args) { m_begin_update_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_row_update_callback(T &&... args) { m_row_update_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_end_update_callback(T &&... args) { m_end_update_cb.set(std::forward<T>(args)...); } void config_set_hpixels_per_column(int hpixels_per_column) { m_hpixels_per_column = hpixels_per_column; } /* select one of the registers for reading or writing */ diff --git a/src/devices/video/ef9369.cpp b/src/devices/video/ef9369.cpp index fa2e1eb3456..49da6402bf7 100644 --- a/src/devices/video/ef9369.cpp +++ b/src/devices/video/ef9369.cpp @@ -30,6 +30,7 @@ DEFINE_DEVICE_TYPE(EF9369, ef9369_device, "ef9369", "Thomson EF9369 Single Chip ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, EF9369, tag, owner, clock) + , m_color_update_cb(*this) , m_address(0) { std::fill(m_ca, m_ca + NUMCOLORS, 0); @@ -45,7 +46,7 @@ ef9369_device::ef9369_device(const machine_config &mconfig, const char *tag, dev void ef9369_device::device_start() { // bind delegate - m_color_update_cb.bind_relative_to(*owner()); + m_color_update_cb.resolve(); // register for save states save_pointer(NAME(m_ca), NUMCOLORS); diff --git a/src/devices/video/ef9369.h b/src/devices/video/ef9369.h index ecea48d6122..1e2a1af6f0d 100644 --- a/src/devices/video/ef9369.h +++ b/src/devices/video/ef9369.h @@ -46,17 +46,7 @@ public: ef9369_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // configuration - template <typename Object> void set_color_update_callback(Object &&cb) { m_color_update_cb = std::forward<Object>(cb); } - void set_color_update_callback(color_update_delegate callback) { m_color_update_cb = callback; } - template <class FunctionClass> void set_color_update_callback(const char *devname, - void (FunctionClass::*callback)(int, bool, uint8_t, uint8_t, uint8_t), const char *name) - { - set_color_update_callback(color_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_color_update_callback(void (FunctionClass::*callback)(int, bool, uint8_t, uint8_t, uint8_t), const char *name) - { - set_color_update_callback(color_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_color_update_callback(T &&... args) { m_color_update_cb.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER(data_r); DECLARE_WRITE8_MEMBER(data_w); diff --git a/src/devices/video/epic12.cpp b/src/devices/video/epic12.cpp index f4e9a70d352..49c407cb5d0 100644 --- a/src/devices/video/epic12.cpp +++ b/src/devices/video/epic12.cpp @@ -933,22 +933,22 @@ void epic12_device::install_handlers(int addr1, int addr2) { address_space &space = m_maincpu->space(AS_PROGRAM); - read32_delegate read; - write32_delegate write; + read32_delegate read(*this); + write32_delegate write(*this); if (m_is_unsafe) { printf("using unsafe blit code!\n"); - read = read32_delegate(FUNC(epic12_device::blitter_r_unsafe), this); - write = write32_delegate(FUNC(epic12_device::blitter_w_unsafe), this); + read = read32_delegate(*this, FUNC(epic12_device::blitter_r_unsafe)); + write = write32_delegate(*this, FUNC(epic12_device::blitter_w_unsafe)); } else { - read = read32_delegate(FUNC(epic12_device::blitter_r), this); - write = write32_delegate(FUNC(epic12_device::blitter_w), this); + read = read32_delegate(*this, FUNC(epic12_device::blitter_r)); + write = write32_delegate(*this, FUNC(epic12_device::blitter_w)); } - space.install_readwrite_handler(addr1, addr2, read , write, 0xffffffffffffffffU); + space.install_readwrite_handler(addr1, addr2, std::move(read), std::move(write), 0xffffffffffffffffU); } u64 epic12_device::fpga_r() diff --git a/src/devices/video/fixfreq.cpp b/src/devices/video/fixfreq.cpp index 58eec1722e3..615fe4ce0cf 100644 --- a/src/devices/video/fixfreq.cpp +++ b/src/devices/video/fixfreq.cpp @@ -180,7 +180,7 @@ void fixedfreq_device::device_config_complete() m_monitor.m_vbackporch); if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(fixedfreq_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(fixedfreq_device::screen_update)); } void fixedfreq_device::device_start() diff --git a/src/devices/video/hd44780.cpp b/src/devices/video/hd44780.cpp index 0c64922aa3f..ac19c97ffcc 100644 --- a/src/devices/video/hd44780.cpp +++ b/src/devices/video/hd44780.cpp @@ -55,6 +55,7 @@ hd44780_device::hd44780_device(const machine_config &mconfig, const char *tag, d hd44780_device::hd44780_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) + , m_pixel_update_cb(*this) , m_cgrom(nullptr) , m_cgrom_region(*this, DEVICE_SELF) , m_rs_input(0) @@ -94,7 +95,7 @@ void hd44780_device::device_start() { m_cgrom = m_cgrom_region.found() ? m_cgrom_region : memregion("cgrom")->base(); - m_pixel_update_cb.bind_relative_to(*owner()); + m_pixel_update_cb.resolve(); m_busy_timer = timer_alloc(TIMER_BUSY); m_blink_timer = timer_alloc(TIMER_BLINKING); diff --git a/src/devices/video/hd44780.h b/src/devices/video/hd44780.h index c31cd67b426..ec45d0005d1 100644 --- a/src/devices/video/hd44780.h +++ b/src/devices/video/hd44780.h @@ -31,18 +31,7 @@ public: // static configuration helpers void set_lcd_size(int lines, int chars) { m_lines = lines; m_chars = chars; } - template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb = pixel_update_delegate(std::forward<T>(args)...); } - void set_pixel_update_cb(pixel_update_delegate callback) { m_pixel_update_cb = callback; } - template <class FunctionClass> void set_pixel_update_cb(const char *devname, - void (FunctionClass::*callback)(bitmap_ind16 &, u8, u8, u8, u8, int), const char *name) - { - set_pixel_update_cb(pixel_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_pixel_update_cb( - void (FunctionClass::*callback)(bitmap_ind16 &, u8, u8, u8, u8, int), const char *name) - { - set_pixel_update_cb(pixel_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb.set(std::forward<T>(args)...); } // device interface void write(offs_t offset, u8 data); diff --git a/src/devices/video/hd63484.cpp b/src/devices/video/hd63484.cpp index 873904d3793..1ae83881fbc 100644 --- a/src/devices/video/hd63484.cpp +++ b/src/devices/video/hd63484.cpp @@ -24,10 +24,11 @@ // hd63484_device - constructor //------------------------------------------------- -hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, HD63484, tag, owner, clock), +hd63484_device::hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, HD63484, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), + m_display_cb(*this), m_auto_configure_screen(true), m_external_skew(0), m_ar(0), @@ -2003,7 +2004,7 @@ WRITE8_MEMBER( hd63484_device::data8_w ) void hd63484_device::device_start() { - m_display_cb.bind_relative_to(*owner()); + m_display_cb.resolve(); register_save_state(); } diff --git a/src/devices/video/hd63484.h b/src/devices/video/hd63484.h index 73a321fc117..508579aed73 100644 --- a/src/devices/video/hd63484.h +++ b/src/devices/video/hd63484.h @@ -27,7 +27,7 @@ public: // construction/destruction hd63484_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_display_callback(T &&... args) { m_display_cb = display_delegate(std::forward<T>(args)...); } + template <typename... T> void set_display_callback(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } void set_auto_configure_screen(bool auto_configure_screen) { m_auto_configure_screen = auto_configure_screen; } void set_external_skew(int skew) { m_external_skew = skew; } diff --git a/src/devices/video/i82730.cpp b/src/devices/video/i82730.cpp index 5db1bf4e6a9..eeeedd3b4d1 100644 --- a/src/devices/video/i82730.cpp +++ b/src/devices/video/i82730.cpp @@ -58,6 +58,7 @@ i82730_device::i82730_device(const machine_config &mconfig, const char *tag, dev device_t(mconfig, I82730, tag, owner, clock), device_video_interface(mconfig, *this), m_sint_handler(*this), + m_update_row_cb(*this), m_cpu(*this, finder_base::DUMMY_TAG), m_program(nullptr), m_row_timer(nullptr), @@ -101,7 +102,7 @@ void i82730_device::device_start() m_sint_handler.resolve_safe(); // bind delegates - m_update_row_cb.bind_relative_to(*owner()); + m_update_row_cb.resolve(); // allocate row timer m_row_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(i82730_device::row_update), this)); diff --git a/src/devices/video/i82730.h b/src/devices/video/i82730.h index 03165358a22..2efc8c0a523 100644 --- a/src/devices/video/i82730.h +++ b/src/devices/video/i82730.h @@ -40,12 +40,7 @@ public: auto sint() { return m_sint_handler.bind(); } // inline configuration - void set_update_row_callback(update_row_delegate callback) { m_update_row_cb = callback; } - template <class FunctionClass> void set_update_row_callback(void (FunctionClass::*callback)(bitmap_rgb32 &, uint16_t *, uint8_t, uint16_t, int) - , const char *name) - { - set_update_row_callback(update_row_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_update_row_callback(T &&... args) { m_update_row_cb.set(std::forward<T>(args)...); } uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); diff --git a/src/devices/video/i8275.cpp b/src/devices/video/i8275.cpp index 4419d01fad2..ea9a22f498d 100644 --- a/src/devices/video/i8275.cpp +++ b/src/devices/video/i8275.cpp @@ -106,6 +106,7 @@ i8275_device::i8275_device(const machine_config &mconfig, device_type type, cons m_write_hrtc(*this), m_write_vrtc(*this), m_write_lc(*this), + m_display_cb(*this), m_refresh_hack(false), m_status(0), m_param_idx(0), @@ -149,12 +150,12 @@ void i8275_device::device_start() screen().register_screen_bitmap(m_bitmap); // resolve callbacks - m_display_cb.bind_relative_to(*owner()); m_write_drq.resolve_safe(); m_write_irq.resolve_safe(); m_write_hrtc.resolve_safe(); m_write_vrtc.resolve_safe(); m_write_lc.resolve_safe(); + m_display_cb.resolve(); // allocate timers m_hrtc_on_timer = timer_alloc(TIMER_HRTC_ON); diff --git a/src/devices/video/i8275.h b/src/devices/video/i8275.h index 5a9744886c0..b43fcbdefa8 100644 --- a/src/devices/video/i8275.h +++ b/src/devices/video/i8275.h @@ -62,20 +62,7 @@ public: void set_character_width(int value) { m_hpixels_per_column = value; } void set_refresh_hack(bool hack) { m_refresh_hack = hack; } - template <typename... T> void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward<T>(args)...); } - void set_display_callback(draw_character_delegate callback) { m_display_cb = callback; } - template <class FunctionClass> void set_display_callback(const char *devname, - void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t), - const char *name) - { - set_display_callback(draw_character_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_display_callback( - void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t, uint8_t), - const char *name) - { - set_display_callback(draw_character_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_display_callback(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } auto drq_wr_callback() { return m_write_drq.bind(); } auto irq_wr_callback() { return m_write_irq.bind(); } diff --git a/src/devices/video/mc6845.cpp b/src/devices/video/mc6845.cpp index 119297553ef..be0adeefc84 100644 --- a/src/devices/video/mc6845.cpp +++ b/src/devices/video/mc6845.cpp @@ -112,6 +112,11 @@ mc6845_device::mc6845_device(const machine_config &mconfig, device_type type, co m_visarea_adjust_min_y(0), m_visarea_adjust_max_y(0), m_hpixels_per_column(0), + m_reconfigure_cb(*this), + m_begin_update_cb(*this), + m_update_row_cb(*this), + m_end_update_cb(*this), + m_on_update_addr_changed_cb(*this), m_out_de_cb(*this), m_out_cur_cb(*this), m_out_hsync_cb(*this), @@ -1135,19 +1140,19 @@ void mc6845_device::device_start() assert(clock() > 0); assert(m_hpixels_per_column > 0); + /* bind delegates */ + m_reconfigure_cb.resolve(); + m_begin_update_cb.resolve(); + m_update_row_cb.resolve(); + m_end_update_cb.resolve(); + m_on_update_addr_changed_cb.resolve(); + /* resolve callbacks */ m_out_de_cb.resolve_safe(); m_out_cur_cb.resolve_safe(); m_out_hsync_cb.resolve_safe(); m_out_vsync_cb.resolve_safe(); - /* bind delegates */ - m_reconfigure_cb.bind_relative_to(*owner()); - m_begin_update_cb.bind_relative_to(*owner()); - m_update_row_cb.bind_relative_to(*owner()); - m_end_update_cb.bind_relative_to(*owner()); - m_on_update_addr_changed_cb.bind_relative_to(*owner()); - /* create the timers */ m_line_timer = timer_alloc(TIMER_LINE); m_de_off_timer = timer_alloc(TIMER_DE_OFF); @@ -1390,7 +1395,7 @@ void mos8563_device::device_start() m_update_ready_bit = 1; // default update_row delegate - m_update_row_cb = update_row_delegate(FUNC(mos8563_device::vdc_update_row), this); + m_update_row_cb.set(*this, FUNC(mos8563_device::vdc_update_row)); m_char_blink_state = false; m_char_blink_count = 0; diff --git a/src/devices/video/mc6845.h b/src/devices/video/mc6845.h index f20b83e5eff..46dfd9b19fb 100644 --- a/src/devices/video/mc6845.h +++ b/src/devices/video/mc6845.h @@ -72,11 +72,11 @@ public: } void set_char_width(int pixels) { m_hpixels_per_column = pixels; } - template <typename... T> void set_reconfigure_callback(T &&... args) { m_reconfigure_cb = reconfigure_delegate(std::forward<T>(args)...); } - template <typename... T> void set_begin_update_callback(T &&... args) { m_begin_update_cb = begin_update_delegate(std::forward<T>(args)...); } - template <typename... T> void set_update_row_callback(T &&... args) { m_update_row_cb = update_row_delegate(std::forward<T>(args)...); } - template <typename... T> void set_end_update_callback(T &&... args) { m_end_update_cb = end_update_delegate(std::forward<T>(args)...); } - template <typename... T> void set_on_update_addr_change_callback(T &&... args) { m_on_update_addr_changed_cb = on_update_addr_changed_delegate(std::forward<T>(args)...); } + template <typename... T> void set_reconfigure_callback(T &&... args) { m_reconfigure_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_begin_update_callback(T &&... args) { m_begin_update_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_update_row_callback(T &&... args) { m_update_row_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_end_update_callback(T &&... args) { m_end_update_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_on_update_addr_change_callback(T &&... args) { m_on_update_addr_changed_cb.set(std::forward<T>(args)...); } auto out_de_callback() { return m_out_de_cb.bind(); } auto out_cur_callback() { return m_out_cur_cb.bind(); } diff --git a/src/devices/video/mc6847.cpp b/src/devices/video/mc6847.cpp index bc4c8d393ea..e60da56ab2b 100644 --- a/src/devices/video/mc6847.cpp +++ b/src/devices/video/mc6847.cpp @@ -135,6 +135,7 @@ mc6847_friend_device::mc6847_friend_device(const machine_config &mconfig, device , device_video_interface(mconfig, *this) , m_write_hsync(*this) , m_write_fsync(*this) + , m_charrom_cb(*this) , m_character_map(fontdata, is_mc6847t1) , m_tpfs(tpfs) , m_divider(divider) @@ -599,7 +600,7 @@ void mc6847_base_device::device_config_complete() } if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(mc6847_base_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(mc6847_base_device::screen_update)); } @@ -617,7 +618,7 @@ void mc6847_base_device::device_start() /* resolve callbacks */ m_input_cb.resolve_safe(0); - m_charrom_cb.bind_relative_to(*owner()); + m_charrom_cb.resolve(); /* set up fixed mode */ setup_fixed_mode(); diff --git a/src/devices/video/mc6847.h b/src/devices/video/mc6847.h index 8402db86c2e..78a8ad57345 100644 --- a/src/devices/video/mc6847.h +++ b/src/devices/video/mc6847.h @@ -54,16 +54,7 @@ public: auto hsync_wr_callback() { return m_write_hsync.bind(); } auto fsync_wr_callback() { return m_write_fsync.bind(); } - template <typename Object> void set_get_char_rom(Object &&cb) { m_charrom_cb = std::forward<Object>(cb); } - void set_get_char_rom(get_char_rom_delegate cb) { m_charrom_cb = cb; } - template <class FunctionClass> void set_get_char_rom(const char *devname, uint8_t (FunctionClass::*cb)(uint8_t, int), const char *name) - { - set_get_char_rom(get_char_rom_delegate(cb, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_get_char_rom(uint8_t (FunctionClass::*cb)(uint8_t, int), const char *name) - { - set_get_char_rom(get_char_rom_delegate(cb, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_get_char_rom(T &&... args) { m_charrom_cb.set(std::forward<T>(args)...); } protected: mc6847_friend_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, diff --git a/src/devices/video/nt7534.cpp b/src/devices/video/nt7534.cpp index cacda7a11d9..a4cb9fb33f7 100644 --- a/src/devices/video/nt7534.cpp +++ b/src/devices/video/nt7534.cpp @@ -34,6 +34,7 @@ nt7534_device::nt7534_device(const machine_config &mconfig, const char *tag, dev nt7534_device::nt7534_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) + , m_pixel_update_cb(*this) { } @@ -45,6 +46,8 @@ void nt7534_device::device_start() { m_busy_timer = timer_alloc(TIMER_BUSY); + m_pixel_update_cb.resolve(); + // state saving save_item(NAME(m_busy_flag)); save_item(NAME(m_page)); diff --git a/src/devices/video/nt7534.h b/src/devices/video/nt7534.h index 75390f8acaa..caece0de4d1 100644 --- a/src/devices/video/nt7534.h +++ b/src/devices/video/nt7534.h @@ -29,7 +29,7 @@ public: // construction/destruction nt7534_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); - template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb = pixel_update_delegate(std::forward<T>(args)...); } + template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb.set(std::forward<T>(args)...); } // device interface virtual DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/video/pc_vga.cpp b/src/devices/video/pc_vga.cpp index 7e15f1efe5e..cc30d50bae7 100644 --- a/src/devices/video/pc_vga.cpp +++ b/src/devices/video/pc_vga.cpp @@ -134,6 +134,7 @@ vga_device::vga_device(const machine_config &mconfig, device_type type, const ch : device_t(mconfig, type, tag, owner, clock) , device_video_interface(mconfig, *this) , device_palette_interface(mconfig, *this) + , vga(*this) { } @@ -252,7 +253,7 @@ void vga_device::device_start() // copy over interfaces - vga.read_dipswitch = read8_delegate(); //read_dipswitch; + vga.read_dipswitch.set(nullptr); //read_dipswitch; vga.svga_intf.seq_regcount = 0x05; vga.svga_intf.crtc_regcount = 0x19; vga.svga_intf.vram_size = 0x100000; diff --git a/src/devices/video/pc_vga.h b/src/devices/video/pc_vga.h index 07823707606..22d8ba33a65 100644 --- a/src/devices/video/pc_vga.h +++ b/src/devices/video/pc_vga.h @@ -110,8 +110,10 @@ protected: } - struct + struct vga_t { + vga_t(device_t &owner) : read_dipswitch(owner) { } + read8_delegate read_dipswitch; struct { diff --git a/src/devices/video/pcd8544.cpp b/src/devices/video/pcd8544.cpp index 0cca6742b05..b0592592509 100644 --- a/src/devices/video/pcd8544.cpp +++ b/src/devices/video/pcd8544.cpp @@ -31,7 +31,8 @@ DEFINE_DEVICE_TYPE(PCD8544, pcd8544_device, "pcd8544_device", "Philips PCD8544 L //------------------------------------------------- pcd8544_device::pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, PCD8544, tag, owner, clock) + device_t(mconfig, PCD8544, tag, owner, clock), + m_screen_update_cb(*this) { } @@ -41,7 +42,7 @@ pcd8544_device::pcd8544_device(const machine_config &mconfig, const char *tag, d void pcd8544_device::device_start() { - m_screen_update_cb.bind_relative_to(*owner()); + m_screen_update_cb.resolve(); // state saving save_item(NAME(m_sdin)); diff --git a/src/devices/video/pcd8544.h b/src/devices/video/pcd8544.h index 069984e9483..6706097a4db 100644 --- a/src/devices/video/pcd8544.h +++ b/src/devices/video/pcd8544.h @@ -28,7 +28,7 @@ public: // construction/destruction pcd8544_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb = screen_update_delegate(std::forward<T>(args)...); } + template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); } // device interface DECLARE_WRITE_LINE_MEMBER(sdin_w); diff --git a/src/devices/video/ppu2c0x.cpp b/src/devices/video/ppu2c0x.cpp index f0b20856c57..4f2c6c587e7 100644 --- a/src/devices/video/ppu2c0x.cpp +++ b/src/devices/video/ppu2c0x.cpp @@ -117,10 +117,10 @@ device_memory_interface::space_config_vector ppu2c0x_device::memory_space_config void ppu2c0x_device::device_config_complete() { /* reset the callbacks */ - m_latch = latch_delegate(); - m_scanline_callback_proc = scanline_delegate(); - m_hblank_callback_proc = hblank_delegate(); - m_vidaccess_callback_proc = vidaccess_delegate(); + m_scanline_callback_proc.set(nullptr); + m_hblank_callback_proc.set(nullptr); + m_vidaccess_callback_proc.set(nullptr); + m_latch.set(nullptr); } ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) @@ -131,6 +131,9 @@ ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, , m_space_config("videoram", ENDIANNESS_LITTLE, 8, 17, 0, address_map_constructor(FUNC(ppu2c0x_device::ppu2c0x), this)) , m_cpu(*this, finder_base::DUMMY_TAG) , m_scanline(0) // reset the scanline count + , m_scanline_callback_proc(*this) + , m_hblank_callback_proc(*this) + , m_vidaccess_callback_proc(*this) , m_int_callback(*this) , m_refresh_data(0) , m_refresh_latch(0) @@ -146,6 +149,7 @@ ppu2c0x_device::ppu2c0x_device(const machine_config &mconfig, device_type type, , m_scan_scale(1) // set the scan scale (this is for dual monitor vertical setups) , m_tilecount(0) , m_draw_phase(0) + , m_latch(*this) , m_use_sprite_write_limitation(true) { for (auto & elem : m_regs) diff --git a/src/devices/video/ppu2c0x.h b/src/devices/video/ppu2c0x.h index 78ebef0b2ce..5660876674a 100644 --- a/src/devices/video/ppu2c0x.h +++ b/src/devices/video/ppu2c0x.h @@ -96,10 +96,10 @@ public: uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); int get_current_scanline() { return m_scanline; } - void set_scanline_callback( scanline_delegate &&cb ) { m_scanline_callback_proc = std::move(cb); m_scanline_callback_proc.bind_relative_to(*owner()); } - void set_hblank_callback( hblank_delegate &&cb ) { m_hblank_callback_proc = std::move(cb); m_hblank_callback_proc.bind_relative_to(*owner()); } - void set_vidaccess_callback( vidaccess_delegate &&cb ) { m_vidaccess_callback_proc = std::move(cb); m_vidaccess_callback_proc.bind_relative_to(*owner()); } - void set_scanlines_per_frame( int scanlines ) { m_scanlines_per_frame = scanlines; } + template <typename... T> void set_scanline_callback(T &&... args) { m_scanline_callback_proc.set(std::forward<T>(args)...); m_scanline_callback_proc.resolve(); /* FIXME: if this is supposed to be set at config time, it should be resolved on start */ } + template <typename... T> void set_hblank_callback(T &&... args) { m_hblank_callback_proc.set(std::forward<T>(args)...); m_hblank_callback_proc.resolve(); /* FIXME: if this is supposed to be set at config time, it should be resolved on start */ } + template <typename... T> void set_vidaccess_callback(T &&... args) { m_vidaccess_callback_proc.set(std::forward<T>(args)...); m_vidaccess_callback_proc.resolve(); /* FIXME: if this is supposed to be set at config time, it should be resolved on start */ } + void set_scanlines_per_frame(int scanlines) { m_scanlines_per_frame = scanlines; } // MMC5 has to be able to check this int is_sprite_8x16() { return m_regs[PPU_CONTROL0] & PPU_CONTROL0_SPRITE_SIZE; } @@ -107,7 +107,7 @@ public: int get_tilenum() { return m_tilecount; } //27/12/2002 (HACK!) - void set_latch( latch_delegate &&cb ) { m_latch = std::move(cb); m_latch.bind_relative_to(*owner()); } + template <typename... T> void set_latch(T &&... args) { m_latch.set(std::forward<T>(args)...); m_latch.resolve(); /* FIXME: if this is supposed to be set at config time, it should be resolved on start */ } // void update_screen(bitmap_t &bitmap, const rectangle &cliprect); diff --git a/src/devices/video/psx.cpp b/src/devices/video/psx.cpp index 471bfc5b50b..6a689edf14f 100644 --- a/src/devices/video/psx.cpp +++ b/src/devices/video/psx.cpp @@ -3542,5 +3542,5 @@ void psxgpu_device::device_config_complete() } if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(psxgpu_device::update_screen), this)); + screen().set_screen_update(*this, FUNC(psxgpu_device::update_screen)); } diff --git a/src/devices/video/scn2674.cpp b/src/devices/video/scn2674.cpp index 1e6cf3d68b5..cc8121a923f 100644 --- a/src/devices/video/scn2674.cpp +++ b/src/devices/video/scn2674.cpp @@ -86,6 +86,7 @@ scn2674_device::scn2674_device(const machine_config &mconfig, device_type type, , m_dbl1(0) , m_char_buffer(0), m_attr_buffer(0) , m_linecounter(0), m_address(0), m_start1change(0) + , m_display_cb(*this) , m_scanline_timer(nullptr) , m_breq_timer(nullptr) , m_vblank_timer(nullptr) @@ -97,18 +98,15 @@ scn2674_device::scn2674_device(const machine_config &mconfig, device_type type, device_memory_interface::space_config_vector scn2674_device::memory_space_config() const { - return has_configured_map(1) ? space_config_vector { - std::make_pair(0, &m_char_space_config), - std::make_pair(1, &m_attr_space_config) - } : space_config_vector { - std::make_pair(0, &m_char_space_config) - }; + return has_configured_map(1) + ? space_config_vector{ std::make_pair(0, &m_char_space_config), std::make_pair(1, &m_attr_space_config) } + : space_config_vector{ std::make_pair(0, &m_char_space_config) }; } void scn2674_device::device_start() { // resolve callbacks - m_display_cb.bind_relative_to(*owner()); + m_display_cb.resolve(); m_intr_cb.resolve_safe(); m_breq_cb.resolve_safe(); m_mbc_cb.resolve_safe(); diff --git a/src/devices/video/scn2674.h b/src/devices/video/scn2674.h index 2b7367eeed0..f3bd19b406a 100644 --- a/src/devices/video/scn2674.h +++ b/src/devices/video/scn2674.h @@ -16,8 +16,6 @@ class scn2674_device : public device_t, public device_memory_interface { public: - scn2674_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - typedef device_delegate<void (bitmap_rgb32 &bitmap, int x, int y, uint8_t linecount, uint8_t charcode, uint8_t attrcode, uint16_t address, bool cursor, bool dw, bool lg, bool ul, bool blink)> draw_character_delegate; // static configuration @@ -28,20 +26,9 @@ public: auto mbc_attr_callback() { return m_mbc_attr_cb.bind(); } void set_character_width(int value) { m_hpixels_per_column = value; } - template <class FunctionClass> - void set_display_callback(void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name) - { - set_display_callback(draw_character_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> - void set_display_callback(const char *devname, void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, uint8_t, uint16_t, bool, bool, bool, bool, bool), const char *name) - { - set_display_callback(draw_character_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_display_callback(draw_character_delegate callback) - { - m_display_cb = callback; - } + template <typename... T> void set_display_callback(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } + + scn2674_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); uint8_t read(offs_t offset); void write(offs_t offset, uint8_t data); diff --git a/src/devices/video/sed1520.cpp b/src/devices/video/sed1520.cpp index feca2ed10fd..8573725835f 100644 --- a/src/devices/video/sed1520.cpp +++ b/src/devices/video/sed1520.cpp @@ -33,7 +33,7 @@ DEFINE_DEVICE_TYPE(SED1520, sed1520_device, "sed1520", "Epson SED1520") sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SED1520, tag, owner, clock), m_lcd_on(0), m_busy(0), m_page(0), m_column(0), m_old_column(0), m_start_line(0), m_adc(0), m_static_drive(0), m_modify_write(false), - m_screen_update_cb() + m_screen_update_cb(*this) { } @@ -44,7 +44,7 @@ sed1520_device::sed1520_device(const machine_config &mconfig, const char *tag, d void sed1520_device::device_start() { - m_screen_update_cb.bind_relative_to(*owner()); + m_screen_update_cb.resolve(); // state saving save_item(NAME(m_lcd_on)); diff --git a/src/devices/video/sed1520.h b/src/devices/video/sed1520.h index 9ca1358713e..2857b978d10 100644 --- a/src/devices/video/sed1520.h +++ b/src/devices/video/sed1520.h @@ -33,17 +33,7 @@ public: sed1520_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // sconfiguration helpers - void set_screen_update_cb(screen_update_delegate callback) { m_screen_update_cb = callback; } - template <class FunctionClass> void set_screen_update_cb(const char *devname, - uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t *, int, int), const char *name) - { - set_screen_update_cb(screen_update_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_screen_update_cb( - uint32_t (FunctionClass::*callback)(bitmap_ind16 &, const rectangle &, uint8_t *, int, int), const char *name) - { - set_screen_update_cb(screen_update_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_screen_update_cb(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); } // device interface virtual DECLARE_WRITE8_MEMBER(write); diff --git a/src/devices/video/tms9928a.cpp b/src/devices/video/tms9928a.cpp index c068d8b4ce8..129b364e860 100644 --- a/src/devices/video/tms9928a.cpp +++ b/src/devices/video/tms9928a.cpp @@ -78,7 +78,7 @@ void tms9928a_device::device_config_complete() return; if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(tms9928a_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(tms9928a_device::screen_update)); if (!screen().refresh_attoseconds()) { diff --git a/src/devices/video/tms9928a.h b/src/devices/video/tms9928a.h index 72c466d464b..cc5a5192f14 100644 --- a/src/devices/video/tms9928a.h +++ b/src/devices/video/tms9928a.h @@ -82,7 +82,7 @@ public: void register_write(u8 data); /* update the screen */ - uint32_t screen_update( screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect ); + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); bitmap_rgb32 &get_bitmap() { return m_tmpbmp; } /* RESET pin */ diff --git a/src/devices/video/upd3301.cpp b/src/devices/video/upd3301.cpp index 07b8a32c99b..166f623dc30 100644 --- a/src/devices/video/upd3301.cpp +++ b/src/devices/video/upd3301.cpp @@ -84,6 +84,7 @@ upd3301_device::upd3301_device(const machine_config &mconfig, const char *tag, d m_write_drq(*this), m_write_hrtc(*this), m_write_vrtc(*this), + m_display_cb(*this), m_width(0), m_status(0), m_param_count(0), @@ -115,11 +116,11 @@ void upd3301_device::device_start() { screen().register_screen_bitmap(m_bitmap); // resolve callbacks - m_display_cb.bind_relative_to(*owner()); m_write_drq.resolve_safe(); m_write_int.resolve_safe(); m_write_hrtc.resolve_safe(); m_write_vrtc.resolve_safe(); + m_display_cb.resolve(); // allocate timers m_hrtc_timer = timer_alloc(TIMER_HRTC); diff --git a/src/devices/video/upd3301.h b/src/devices/video/upd3301.h index 147c12c5b7d..293aaa91613 100644 --- a/src/devices/video/upd3301.h +++ b/src/devices/video/upd3301.h @@ -60,18 +60,7 @@ public: upd3301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_character_width(int value) { m_width = value; } - template <typename... T> void set_display_callback(T &&... args) { m_display_cb = draw_character_delegate(std::forward<T>(args)...); } - void set_display_callback(draw_character_delegate callback) { m_display_cb = callback; } - template <class FunctionClass> void set_display_callback(const char *devname, - void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, int, int, int, int, int, int, int), const char *name) - { - set_display_callback(draw_character_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_display_callback( - void (FunctionClass::*callback)(bitmap_rgb32 &, int, int, uint8_t, uint8_t, int, int, int, int, int, int, int), const char *name) - { - set_display_callback(draw_character_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_display_callback(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } auto drq_wr_callback() { return m_write_drq.bind(); } auto int_wr_callback() { return m_write_int.bind(); } diff --git a/src/devices/video/upd7220.cpp b/src/devices/video/upd7220.cpp index 50e1cc9bd1c..235a1a99cf6 100644 --- a/src/devices/video/upd7220.cpp +++ b/src/devices/video/upd7220.cpp @@ -615,6 +615,8 @@ upd7220_device::upd7220_device(const machine_config &mconfig, const char *tag, d device_t(mconfig, UPD7220, tag, owner, clock), device_memory_interface(mconfig, *this), device_video_interface(mconfig, *this), + m_display_cb(*this), + m_draw_text_cb(*this), m_write_drq(*this), m_write_hsync(*this), m_write_vsync(*this), @@ -676,8 +678,8 @@ upd7220_device::upd7220_device(const machine_config &mconfig, const char *tag, d void upd7220_device::device_start() { // resolve callbacks - m_display_cb.bind_relative_to(*owner()); - m_draw_text_cb.bind_relative_to(*owner()); + m_display_cb.resolve(); + m_draw_text_cb.resolve(); m_write_drq.resolve_safe(); m_write_hsync.resolve_safe(); diff --git a/src/devices/video/upd7220.h b/src/devices/video/upd7220.h index 7c7370c0cd9..d1f8806c6ac 100644 --- a/src/devices/video/upd7220.h +++ b/src/devices/video/upd7220.h @@ -56,53 +56,14 @@ class upd7220_device : public device_t, public device_video_interface { public: - typedef device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint32_t address)> display_pixels_delegate; - typedef device_delegate<void (bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch, int lr, int cursor_on, int cursor_addr)> draw_text_delegate; + using display_pixels_delegate = device_delegate<void (bitmap_rgb32 &bitmap, int y, int x, uint32_t address)>; + using draw_text_delegate = device_delegate<void (bitmap_rgb32 &bitmap, uint32_t addr, int y, int wd, int pitch, int lr, int cursor_on, int cursor_addr)>; // construction/destruction upd7220_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - // FIXME: these should be aware of current device for resolving the tag - template <class FunctionClass> - void set_display_pixels(void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t), const char *name) - { - m_display_cb = display_pixels_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_display_pixels(void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t) const, const char *name) - { - m_display_cb = display_pixels_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_display_pixels(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t), const char *name) - { - m_display_cb = display_pixels_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_display_pixels(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, int, int, uint32_t) const, const char *name) - { - m_display_cb = display_pixels_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_draw_text(void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int), const char *name) - { - m_draw_text_cb = draw_text_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_draw_text(void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int) const, const char *name) - { - m_draw_text_cb = draw_text_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_draw_text(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int), const char *name) - { - m_draw_text_cb = draw_text_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_draw_text(const char *devname, void (FunctionClass::*init)(bitmap_rgb32 &, uint32_t, int, int, int, int, int, int) const, const char *name) - { - m_draw_text_cb = draw_text_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } + template <typename... T> void set_display_pixels(T &&... args) { m_display_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_draw_text(T &&... args) { m_draw_text_cb.set(std::forward<T>(args)...); } auto drq_wr_callback() { return m_write_drq.bind(); } auto hsync_wr_callback() { return m_write_hsync.bind(); } diff --git a/src/devices/video/v9938.cpp b/src/devices/video/v9938.cpp index 97c584fddc6..4549dae9e6e 100644 --- a/src/devices/video/v9938.cpp +++ b/src/devices/video/v9938.cpp @@ -169,7 +169,7 @@ void v99x8_device::device_config_complete() (m_pal_config ? VVISIBLE_PAL : VVISIBLE_NTSC) * 2 - 1 - VERTICAL_ADJUST * 2); if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(v99x8_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(v99x8_device::screen_update)); } diff --git a/src/devices/video/virge_pci.cpp b/src/devices/video/virge_pci.cpp index bc5755d3550..c3d55f4cc62 100644 --- a/src/devices/video/virge_pci.cpp +++ b/src/devices/video/virge_pci.cpp @@ -251,11 +251,11 @@ void virgedx_pci_device::device_start() void virge_pci_device::map_extra(uint64_t memory_window_start, uint64_t memory_window_end, uint64_t memory_offset, address_space *memory_space, uint64_t io_window_start, uint64_t io_window_end, uint64_t io_offset, address_space *io_space) { - memory_space->install_readwrite_handler(0xa0000, 0xbffff, read8_delegate(FUNC(virge_pci_device::vram_r),this), write8_delegate(FUNC(virge_pci_device::vram_w),this)); + memory_space->install_readwrite_handler(0xa0000, 0xbffff, read8_delegate(*this, FUNC(virge_pci_device::vram_r)), write8_delegate(*this, FUNC(virge_pci_device::vram_w))); - io_space->install_readwrite_handler(0x3b0, 0x3bf, read32_delegate(FUNC(virge_pci_device::vga_3b0_r), this), write32_delegate(FUNC(virge_pci_device::vga_3b0_w), this)); - io_space->install_readwrite_handler(0x3c0, 0x3cf, read32_delegate(FUNC(virge_pci_device::vga_3c0_r), this), write32_delegate(FUNC(virge_pci_device::vga_3c0_w), this)); - io_space->install_readwrite_handler(0x3d0, 0x3df, read32_delegate(FUNC(virge_pci_device::vga_3d0_r), this), write32_delegate(FUNC(virge_pci_device::vga_3d0_w), this)); + io_space->install_readwrite_handler(0x3b0, 0x3bf, read32_delegate(*this, FUNC(virge_pci_device::vga_3b0_r)), write32_delegate(*this, FUNC(virge_pci_device::vga_3b0_w))); + io_space->install_readwrite_handler(0x3c0, 0x3cf, read32_delegate(*this, FUNC(virge_pci_device::vga_3c0_r)), write32_delegate(*this, FUNC(virge_pci_device::vga_3c0_w))); + io_space->install_readwrite_handler(0x3d0, 0x3df, read32_delegate(*this, FUNC(virge_pci_device::vga_3d0_r)), write32_delegate(*this, FUNC(virge_pci_device::vga_3d0_w))); } void virge_pci_device::device_add_mconfig(machine_config &config) diff --git a/src/devices/video/voodoo_pci.cpp b/src/devices/video/voodoo_pci.cpp index 191eaec4bf3..494bd32a5dd 100644 --- a/src/devices/video/voodoo_pci.cpp +++ b/src/devices/video/voodoo_pci.cpp @@ -178,7 +178,7 @@ void voodoo_banshee_pci_device::map_extra(uint64_t memory_window_start, uint64_t // Should really be dependent on voodoo VGAINIT0 bit 8 and IO base + 0xc3 bit 0 uint64_t start = io_offset + 0x3b0; uint64_t end = io_offset + 0x3df; - io_space->install_readwrite_handler(start, end, read32_delegate(FUNC(voodoo_pci_device::vga_r), this), write32_delegate(FUNC(voodoo_pci_device::vga_w), this)); + io_space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(voodoo_pci_device::vga_r)), write32_delegate(*this, FUNC(voodoo_pci_device::vga_w))); logerror("%s: map %s at %0*x-%0*x\n", this->tag(), "vga_r/w", 4, uint32_t(start), 4, uint32_t(end)); } @@ -191,7 +191,7 @@ void voodoo_3_pci_device::map_extra(uint64_t memory_window_start, uint64_t memor // Should really be dependent on voodoo VGAINIT0 bit 8 and IO base + 0xc3 bit 0 uint64_t start = io_offset + 0x3b0; uint64_t end = io_offset + 0x3df; - io_space->install_readwrite_handler(start, end, read32_delegate(FUNC(voodoo_pci_device::vga_r), this), write32_delegate(FUNC(voodoo_pci_device::vga_w), this)); + io_space->install_readwrite_handler(start, end, read32_delegate(*this, FUNC(voodoo_pci_device::vga_r)), write32_delegate(*this, FUNC(voodoo_pci_device::vga_w))); logerror("%s: map %s at %0*x-%0*x\n", this->tag(), "vga_r/w", 4, uint32_t(start), 4, uint32_t(end)); } diff --git a/src/emu/addrmap.cpp b/src/emu/addrmap.cpp index eca9457e76e..c1ba4545492 100644 --- a/src/emu/addrmap.cpp +++ b/src/emu/addrmap.cpp @@ -61,21 +61,69 @@ static char *core_i64_hex_format(u64 value, u8 mindigits) //------------------------------------------------- address_map_entry::address_map_entry(device_t &device, address_map &map, offs_t start, offs_t end) - : m_next(nullptr), - m_map(map), - m_devbase(device), - m_addrstart(start), - m_addrend(end), - m_addrmirror(0), - m_addrmask(0), - m_addrselect(0), - m_mask(0), - m_cswidth(0), - m_share(nullptr), - m_region(nullptr), - m_rgnoffs(0), - m_submap_device(nullptr), - m_memory(nullptr) + : m_next(nullptr) + , m_map(map) + , m_devbase(device) + , m_addrstart(start) + , m_addrend(end) + , m_addrmirror(0) + , m_addrmask(0) + , m_addrselect(0) + , m_mask(0) + , m_cswidth(0) + , m_share(nullptr) + , m_region(nullptr) + , m_rgnoffs(0) + , m_rproto8(device) + , m_rproto16(device) + , m_rproto32(device) + , m_rproto64(device) + , m_wproto8(device) + , m_wproto16(device) + , m_wproto32(device) + , m_wproto64(device) + , m_rproto8m(device) + , m_rproto16m(device) + , m_rproto32m(device) + , m_rproto64m(device) + , m_wproto8m(device) + , m_wproto16m(device) + , m_wproto32m(device) + , m_wproto64m(device) + , m_rproto8s(device) + , m_rproto16s(device) + , m_rproto32s(device) + , m_rproto64s(device) + , m_wproto8s(device) + , m_wproto16s(device) + , m_wproto32s(device) + , m_wproto64s(device) + , m_rproto8sm(device) + , m_rproto16sm(device) + , m_rproto32sm(device) + , m_rproto64sm(device) + , m_wproto8sm(device) + , m_wproto16sm(device) + , m_wproto32sm(device) + , m_wproto64sm(device) + , m_rproto8mo(device) + , m_rproto16mo(device) + , m_rproto32mo(device) + , m_rproto64mo(device) + , m_wproto8mo(device) + , m_wproto16mo(device) + , m_wproto32mo(device) + , m_wproto64mo(device) + , m_rproto8smo(device) + , m_rproto16smo(device) + , m_rproto32smo(device) + , m_rproto64smo(device) + , m_wproto8smo(device) + , m_wproto16smo(device) + , m_wproto32smo(device) + , m_wproto64smo(device) + , m_submap_device(nullptr) + , m_memory(nullptr) { } @@ -1142,71 +1190,71 @@ void address_map::map_validity_check(validity_checker &valid, int spacenum) cons if (entry.m_read.m_type == AMH_DEVICE_DELEGATE || entry.m_read.m_type == AMH_DEVICE_DELEGATE_M || entry.m_read.m_type == AMH_DEVICE_DELEGATE_S || entry.m_read.m_type == AMH_DEVICE_DELEGATE_SM || entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO || entry.m_read.m_type == AMH_DEVICE_DELEGATE_SMO) { // extract the device tag from the proto-delegate - const char *devtag = nullptr; + std::pair<std::reference_wrapper<device_t>, const char *> devtag(entry.m_devbase, nullptr); switch (entry.m_read.m_bits) { case 8: if (entry.m_read.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_rproto8.device_name(); + devtag = entry.m_rproto8.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_rproto8m.device_name(); + devtag = entry.m_rproto8m.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_rproto8s.device_name(); + devtag = entry.m_rproto8s.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_rproto8sm.device_name(); + devtag = entry.m_rproto8sm.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_rproto8mo.device_name(); + devtag = entry.m_rproto8mo.finder_target(); else - devtag = entry.m_rproto8smo.device_name(); + devtag = entry.m_rproto8smo.finder_target(); break; case 16: if (entry.m_read.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_rproto16.device_name(); + devtag = entry.m_rproto16.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_rproto16m.device_name(); + devtag = entry.m_rproto16m.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_rproto16s.device_name(); + devtag = entry.m_rproto16s.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_rproto16sm.device_name(); + devtag = entry.m_rproto16sm.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_rproto16mo.device_name(); + devtag = entry.m_rproto16mo.finder_target(); else - devtag = entry.m_rproto16smo.device_name(); + devtag = entry.m_rproto16smo.finder_target(); break; case 32: if (entry.m_read.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_rproto32.device_name(); + devtag = entry.m_rproto32.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_rproto32m.device_name(); + devtag = entry.m_rproto32m.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_rproto32s.device_name(); + devtag = entry.m_rproto32s.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_rproto32sm.device_name(); + devtag = entry.m_rproto32sm.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_rproto32mo.device_name(); + devtag = entry.m_rproto32mo.finder_target(); else - devtag = entry.m_rproto32smo.device_name(); + devtag = entry.m_rproto32smo.finder_target(); break; case 64: if (entry.m_read.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_rproto64.device_name(); + devtag = entry.m_rproto64.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_rproto64m.device_name(); + devtag = entry.m_rproto64m.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_rproto64s.device_name(); + devtag = entry.m_rproto64s.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_rproto64sm.device_name(); + devtag = entry.m_rproto64sm.finder_target(); else if (entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_rproto64mo.device_name(); + devtag = entry.m_rproto64mo.finder_target(); else - devtag = entry.m_rproto64smo.device_name(); + devtag = entry.m_rproto64smo.finder_target(); break; } - if (entry.m_devbase.subdevice(devtag) == nullptr) - osd_printf_error("%s space memory map entry reads from nonexistent device '%s'\n", spaceconfig.m_name, devtag ? devtag : "<unspecified>"); + if (devtag.second && !devtag.first.get().subdevice(devtag.second)) + osd_printf_error("%s space memory map entry reads from nonexistent device '%s'\n", spaceconfig.m_name, devtag.first.get().subtag(devtag.second).c_str()); #ifndef MAME_DEBUG // assert will catch this earlier (void)entry.unitmask_is_appropriate(entry.m_read.m_bits, entry.m_mask, entry.m_read.m_name); #endif @@ -1214,71 +1262,71 @@ void address_map::map_validity_check(validity_checker &valid, int spacenum) cons if (entry.m_write.m_type == AMH_DEVICE_DELEGATE || entry.m_read.m_type == AMH_DEVICE_DELEGATE_M || entry.m_write.m_type == AMH_DEVICE_DELEGATE_S || entry.m_write.m_type == AMH_DEVICE_DELEGATE_SM || entry.m_read.m_type == AMH_DEVICE_DELEGATE_MO || entry.m_write.m_type == AMH_DEVICE_DELEGATE_SMO) { // extract the device tag from the proto-delegate - const char *devtag = nullptr; + std::pair<std::reference_wrapper<device_t>, const char *> devtag(entry.m_devbase, nullptr); switch (entry.m_write.m_bits) { case 8: if (entry.m_write.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_wproto8.device_name(); + devtag = entry.m_wproto8.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_wproto8m.device_name(); + devtag = entry.m_wproto8m.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_wproto8s.device_name(); + devtag = entry.m_wproto8s.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_wproto8sm.device_name(); + devtag = entry.m_wproto8sm.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_wproto8mo.device_name(); + devtag = entry.m_wproto8mo.finder_target(); else - devtag = entry.m_wproto8smo.device_name(); + devtag = entry.m_wproto8smo.finder_target(); break; case 16: if (entry.m_write.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_wproto16.device_name(); + devtag = entry.m_wproto16.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_wproto16m.device_name(); + devtag = entry.m_wproto16m.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_wproto16s.device_name(); + devtag = entry.m_wproto16s.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_wproto16sm.device_name(); + devtag = entry.m_wproto16sm.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_wproto16mo.device_name(); + devtag = entry.m_wproto16mo.finder_target(); else - devtag = entry.m_wproto16smo.device_name(); + devtag = entry.m_wproto16smo.finder_target(); break; case 32: if (entry.m_write.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_wproto32.device_name(); + devtag = entry.m_wproto32.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_wproto32m.device_name(); + devtag = entry.m_wproto32m.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_wproto32s.device_name(); + devtag = entry.m_wproto32s.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_wproto32sm.device_name(); + devtag = entry.m_wproto32sm.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_wproto32mo.device_name(); + devtag = entry.m_wproto32mo.finder_target(); else - devtag = entry.m_wproto32smo.device_name(); + devtag = entry.m_wproto32smo.finder_target(); break; case 64: if (entry.m_write.m_type == AMH_DEVICE_DELEGATE) - devtag = entry.m_wproto64.device_name(); + devtag = entry.m_wproto64.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_M) - devtag = entry.m_wproto64m.device_name(); + devtag = entry.m_wproto64m.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_S) - devtag = entry.m_wproto64s.device_name(); + devtag = entry.m_wproto64s.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_SM) - devtag = entry.m_wproto64sm.device_name(); + devtag = entry.m_wproto64sm.finder_target(); else if (entry.m_write.m_type == AMH_DEVICE_DELEGATE_MO) - devtag = entry.m_wproto64mo.device_name(); + devtag = entry.m_wproto64mo.finder_target(); else - devtag = entry.m_wproto64smo.device_name(); + devtag = entry.m_wproto64smo.finder_target(); break; } - if (entry.m_devbase.subdevice(devtag) == nullptr) - osd_printf_error("%s space memory map entry writes to nonexistent device '%s'\n", spaceconfig.m_name, devtag ? devtag : "<unspecified>"); + if (devtag.second && !devtag.first.get().subdevice(devtag.second)) + osd_printf_error("%s space memory map entry writes to nonexistent device '%s'\n", spaceconfig.m_name, devtag.first.get().subtag(devtag.second).c_str()); #ifndef MAME_DEBUG // assert will catch this earlier (void)entry.unitmask_is_appropriate(entry.m_write.m_bits, entry.m_mask, entry.m_write.m_name); #endif diff --git a/src/emu/addrmap.h b/src/emu/addrmap.h index ee6b0e4e3b6..b201201c4dd 100644 --- a/src/emu/addrmap.h +++ b/src/emu/addrmap.h @@ -81,7 +81,7 @@ class address_map_entry static device_t &find_device(const device_finder<T, Reqd> &finder) { const std::pair<device_t &, const char *> target(finder.finder_target()); device_t *device(target.first.subdevice(target.second)); - if (device == nullptr) + if (!device) throw emu_fatalerror("Device %s not found in %s\n", target.second, target.first.tag()); return *device; } @@ -186,15 +186,15 @@ public: // implicit base -> delegate converter template <typename T, typename Ret, typename... Params> address_map_entry &r(Ret (T::*read)(Params...), const char *read_name) - { return r(emu::detail::make_delegate(read, read_name, m_devbase.tag(), make_pointer<T>(m_devbase))); } + { return r(emu::detail::make_delegate(*make_pointer<T>(m_devbase), read, read_name)); } template <typename T, typename Ret, typename... Params> address_map_entry &w(Ret (T::*write)(Params...), const char *write_name) - { return w(emu::detail::make_delegate(write, write_name, m_devbase.tag(), make_pointer<T>(m_devbase))); } + { return w(emu::detail::make_delegate(*make_pointer<T>(m_devbase), write, write_name)); } template <typename T, typename RetR, typename... ParamsR, typename U, typename RetW, typename... ParamsW> address_map_entry &rw(RetR (T::*read)(ParamsR...), const char *read_name, RetW (U::*write)(ParamsW...), const char *write_name) - { return r(emu::detail::make_delegate(read, read_name, m_devbase.tag(), make_pointer<T>(m_devbase))).w(emu::detail::make_delegate(write, write_name, m_devbase.tag(), make_pointer<U>(m_devbase))); } + { return r(emu::detail::make_delegate(*make_pointer<T>(m_devbase), read, read_name)).w(emu::detail::make_delegate(*make_pointer<U>(m_devbase), write, write_name)); } template <typename T, typename Ret, typename... Params> address_map_entry &m(Ret (T::*map)(Params...), const char *map_name) @@ -204,15 +204,15 @@ public: // device tag -> delegate converter template <typename T, typename Ret, typename... Params> address_map_entry &r(const char *tag, Ret (T::*read)(Params...), const char *read_name) - { return r(emu::detail::make_delegate(read, read_name, tag, nullptr)); } + { return r(emu::detail::make_delegate(m_devbase, tag, read, read_name)); } template <typename T, typename Ret, typename... Params> address_map_entry &w(const char *tag, Ret (T::*write)(Params...), const char *write_name) - { return w(emu::detail::make_delegate(write, write_name, tag, nullptr)); } + { return w(emu::detail::make_delegate(m_devbase, tag, write, write_name)); } template <typename T, typename RetR, typename... ParamsR, typename U, typename RetW, typename... ParamsW> address_map_entry &rw(const char *tag, RetR (T::*read)(ParamsR...), const char *read_name, RetW (U::*write)(ParamsW...), const char *write_name) - { return r(emu::detail::make_delegate(read, read_name, tag, nullptr)).w(emu::detail::make_delegate(write, write_name, tag, nullptr)); } + { return r(emu::detail::make_delegate(m_devbase, tag, read, read_name)).w(emu::detail::make_delegate(m_devbase, tag, write, write_name)); } template <typename T, typename Ret, typename... Params> address_map_entry &m(const char *tag, Ret (T::*map)(Params...), const char *map_name) @@ -222,15 +222,15 @@ public: // device reference -> delegate converter template <typename T, typename U, typename Ret, typename... Params> address_map_entry &r(T &obj, Ret (U::*read)(Params...), const char *read_name) - { return r(emu::detail::make_delegate(read, read_name, get_tag(obj), make_pointer<U>(obj))); } + { return r(emu::detail::make_delegate(*make_pointer<U>(obj), read, read_name)); } template <typename T, typename U, typename Ret, typename... Params> address_map_entry &w(T &obj, Ret (U::*write)(Params...), const char *write_name) - { return w(emu::detail::make_delegate(write, write_name, get_tag(obj), make_pointer<U>(obj))); } + { return w(emu::detail::make_delegate(*make_pointer<U>(obj), write, write_name)); } template <typename T, typename U, typename RetR, typename... ParamsR, typename V, typename RetW, typename... ParamsW> address_map_entry &rw(T &obj, RetR (U::*read)(ParamsR...), const char *read_name, RetW (V::*write)(ParamsW...), const char *write_name) - { return r(emu::detail::make_delegate(read, read_name, get_tag(obj), make_pointer<U>(obj))).w(emu::detail::make_delegate(write, write_name, get_tag(obj), make_pointer<V>(obj))); } + { return r(emu::detail::make_delegate(*make_pointer<U>(obj), read, read_name)).w(emu::detail::make_delegate(make_pointer<V>(obj), write, write_name)); } template <typename T, typename U, typename Ret, typename... Params> address_map_entry &m(T &obj, Ret (U::*map)(Params...), const char *map_name) @@ -241,39 +241,39 @@ public: template <typename T, bool Reqd, typename U, typename Ret, typename... Params> address_map_entry &r(device_finder<T, Reqd> &finder, Ret (U::*read)(Params...), const char *read_name) { device_t &device(find_device(finder)); - return r(emu::detail::make_delegate(read, read_name, device.tag(), make_pointer<U>(device))); + return r(emu::detail::make_delegate(device, DEVICE_SELF, read, read_name)); } template <typename T, bool Reqd, typename U, typename Ret, typename... Params> address_map_entry &r(const device_finder<T, Reqd> &finder, Ret (U::*read)(Params...), const char *read_name) { device_t &device(find_device(finder)); - return r(emu::detail::make_delegate(read, read_name, device.tag(), make_pointer<U>(device))); + return r(emu::detail::make_delegate(device, DEVICE_SELF, read, read_name)); } template <typename T, bool Reqd, typename U, typename Ret, typename... Params> address_map_entry &w(device_finder<T, Reqd> &finder, Ret (U::*write)(Params...), const char *write_name) { device_t &device(find_device(finder)); - return w(emu::detail::make_delegate(write, write_name, device.tag(), make_pointer<U>(device))); + return w(emu::detail::make_delegate(device, DEVICE_SELF, write, write_name)); } template <typename T, bool Reqd, typename U, typename Ret, typename... Params> address_map_entry &w(const device_finder<T, Reqd> &finder, Ret (U::*write)(Params...), const char *write_name) { device_t &device(find_device(finder)); - return w(emu::detail::make_delegate(write, write_name, device.tag(), make_pointer<U>(device))); + return w(emu::detail::make_delegate(device, DEVICE_SELF, write, write_name)); } template <typename T, bool Reqd, typename U, typename RetR, typename... ParamsR, typename V, typename RetW, typename... ParamsW> address_map_entry &rw(device_finder<T, Reqd> &finder, RetR (U::*read)(ParamsR...), const char *read_name, RetW (V::*write)(ParamsW...), const char *write_name) { device_t &device(find_device(finder)); - return r(emu::detail::make_delegate(read, read_name, device.tag(), make_pointer<U>(device))) - .w(emu::detail::make_delegate(write, write_name, device.tag(), make_pointer<V>(device))); + return r(emu::detail::make_delegate(device, DEVICE_SELF, read, read_name)) + .w(emu::detail::make_delegate(device, DEVICE_SELF, write, write_name)); } template <typename T, bool Reqd, typename U, typename RetR, typename... ParamsR, typename V, typename RetW, typename... ParamsW> address_map_entry &rw(const device_finder<T, Reqd> &finder, RetR (U::*read)(ParamsR...), const char *read_name, RetW (V::*write)(ParamsW...), const char *write_name) { device_t &device(find_device(finder)); - return r(emu::detail::make_delegate(read, read_name, device.tag(), make_pointer<U>(device))) - .w(emu::detail::make_delegate(write, write_name, device.tag(), make_pointer<V>(device))); + return r(emu::detail::make_delegate(device, DEVICE_SELF, read, read_name)) + .w(emu::detail::make_delegate(device, DEVICE_SELF, write, write_name)); } template <typename T, bool Reqd, typename U, typename Ret, typename... Params> @@ -290,53 +290,41 @@ public: // lambda -> delegate converter - template<typename _lr> address_map_entry &lr8(const char *name, _lr &&read) { - return r(emu::detail::make_lr8_delegate(read, name)); - } + template <typename T> address_map_entry &lr8(T &&read, const char *name) + { return r(emu::detail::make_lr8_delegate(m_devbase, std::forward<T>(read), name)); } - template<typename _lr> address_map_entry &lr16(const char *name, _lr &&read) { - return r(emu::detail::make_lr16_delegate(read, name)); - } + template <typename T> address_map_entry &lr16(T &&read, const char *name) + { return r(emu::detail::make_lr16_delegate(m_devbase, std::forward<T>(read), name)); } - template<typename _lr> address_map_entry &lr32(const char *name, _lr &&read) { - return r(emu::detail::make_lr32_delegate(read, name)); - } + template <typename T> address_map_entry &lr32(T &&read, const char *name) + { return r(emu::detail::make_lr32_delegate(m_devbase, std::forward<T>(read), name)); } - template<typename _lr> address_map_entry &lr64(const char *name, _lr &&read) { - return r(emu::detail::make_lr64_delegate(read, name)); - } + template <typename T> address_map_entry &lr64(T &&read, const char *name) + { return r(emu::detail::make_lr64_delegate(m_devbase, std::forward<T>(read), name)); } - template<typename _lw> address_map_entry &lw8(const char *name, _lw &&write) { - return w(emu::detail::make_lw8_delegate(write, name)); - } + template <typename T> address_map_entry &lw8(T &&write, const char *name) + { return w(emu::detail::make_lw8_delegate(m_devbase, std::forward<T>(write), name)); } - template<typename _lw> address_map_entry &lw16(const char *name, _lw &&write) { - return w(emu::detail::make_lw16_delegate(write, name)); - } + template <typename T> address_map_entry &lw16(T &&write, const char *name) + { return w(emu::detail::make_lw16_delegate(m_devbase, std::forward<T>(write), name)); } - template<typename _lw> address_map_entry &lw32(const char *name, _lw &&write) { - return w(emu::detail::make_lw32_delegate(write, name)); - } + template <typename T> address_map_entry &lw32(T &&write, const char *name) + { return w(emu::detail::make_lw32_delegate(m_devbase, std::forward<T>(write), name)); } - template<typename _lw> address_map_entry &lw64(const char *name, _lw &&write) { - return w(emu::detail::make_lw64_delegate(write, name)); - } + template <typename T> address_map_entry &lw64(T &&write, const char *name) + { return w(emu::detail::make_lw64_delegate(m_devbase, std::forward<T>(write), name)); } - template<typename _lr, typename _lw> address_map_entry &lrw8(const char *name, _lr &&read, _lw &&write) { - return r(emu::detail::make_lr8_delegate(read, name)).w(emu::detail::make_lw8_delegate(write, name)); - } + template <typename T, typename U> address_map_entry &lrw8(T &&read, const char *read_name, U &&write, const char *write_name) + { return r(emu::detail::make_lr8_delegate(m_devbase, std::forward<T>(read), read_name)).w(emu::detail::make_lw8_delegate(m_devbase, std::forward<U>(write), write_name)); } - template<typename _lr, typename _lw> address_map_entry &lrw16(const char *name, _lr &&read, _lw &&write) { - return r(emu::detail::make_lr16_delegate(read, name)).w(emu::detail::make_lw16_delegate(write, name)); - } + template <typename T, typename U> address_map_entry &lrw16(T &&read, const char *read_name, U &&write, const char *write_name) + { return r(emu::detail::make_lr16_delegate(m_devbase, std::forward<T>(read), read_name)).w(emu::detail::make_lw16_delegate(m_devbase, std::forward<U>(write), write_name)); } - template<typename _lr, typename _lw> address_map_entry &lrw32(const char *name, _lr &&read, _lw &&write) { - return r(emu::detail::make_lr32_delegate(read, name)).w(emu::detail::make_lw32_delegate(write, name)); - } + template <typename T, typename U> address_map_entry &lrw32(T &&read, const char *read_name, U &&write, const char *write_name) + { return r(emu::detail::make_lr32_delegate(m_devbase, std::forward<T>(read), read_name)).w(emu::detail::make_lw32_delegate(m_devbase, std::forward<U>(write), write_name)); } - template<typename _lr, typename _lw> address_map_entry &lrw64(const char *name, _lr &&read, _lw &&write) { - return r(emu::detail::make_lr64_delegate(read, name)).w(emu::detail::make_lw64_delegate(write, name)); - } + template <typename T, typename U> address_map_entry &lrw64(T &&read, const char *read_name, U &&write, const char *write_name) + { return r(emu::detail::make_lr64_delegate(m_devbase, std::forward<T>(read), read_name)).w(emu::detail::make_lw64_delegate(m_devbase, std::forward<U>(write), write_name)); } // public state address_map_entry * m_next; // pointer to the next entry diff --git a/src/emu/devcb.h b/src/emu/devcb.h index 6b16c37b33a..321d0831fe1 100644 --- a/src/emu/devcb.h +++ b/src/emu/devcb.h @@ -44,16 +44,8 @@ typedef device_delegate<void (int)> write_line_delegate; namespace emu { namespace detail { -template <typename T, typename Enable = void> struct read_line_device_class { }; -template <typename T, typename Enable = void> struct write_line_device_class { }; - -template <typename T> -inline read_line_delegate make_delegate(T &&func, char const *name, char const *tag, rw_device_class_t<read_line_delegate, std::remove_reference_t<T> > *obj) -{ return read_line_delegate(func, name, tag, obj); } - -template <typename T> -inline write_line_delegate make_delegate(T &&func, char const *name, char const *tag, rw_device_class_t<write_line_delegate, std::remove_reference_t<T> > *obj) -{ return write_line_delegate(func, name, tag, obj); } +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read_line_delegate, std::remove_reference_t<T> > > > { using type = read_line_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write_line_delegate, std::remove_reference_t<T> > > > { using type = write_line_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; } } // namespace emu::detail @@ -115,43 +107,8 @@ protected: template <typename Input, typename Result, typename Func> using transform_result_t = typename transform_result<Input, Result, Func>::type; // Mapping method types to delegate types - template <typename T, typename Enable = void> struct delegate_type; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read8_delegate, std::remove_reference_t<T> > > > { using type = read8_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read16_delegate, std::remove_reference_t<T> > > > { using type = read16_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read32_delegate, std::remove_reference_t<T> > > > { using type = read32_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read64_delegate, std::remove_reference_t<T> > > > { using type = read64_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read8s_delegate, std::remove_reference_t<T> > > > { using type = read8s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read16s_delegate, std::remove_reference_t<T> > > > { using type = read16s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read32s_delegate, std::remove_reference_t<T> > > > { using type = read32s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read64s_delegate, std::remove_reference_t<T> > > > { using type = read64s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read8sm_delegate, std::remove_reference_t<T> > > > { using type = read8sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read16sm_delegate, std::remove_reference_t<T> > > > { using type = read16sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read32sm_delegate, std::remove_reference_t<T> > > > { using type = read32sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read64sm_delegate, std::remove_reference_t<T> > > > { using type = read64sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read8smo_delegate, std::remove_reference_t<T> > > > { using type = read8smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read16smo_delegate, std::remove_reference_t<T> > > > { using type = read16smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read32smo_delegate, std::remove_reference_t<T> > > > { using type = read32smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read64smo_delegate, std::remove_reference_t<T> > > > { using type = read64smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<read_line_delegate, std::remove_reference_t<T> > > > { using type = read_line_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write8_delegate, std::remove_reference_t<T> > > > { using type = write8_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write16_delegate, std::remove_reference_t<T> > > > { using type = write16_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write32_delegate, std::remove_reference_t<T> > > > { using type = write32_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write64_delegate, std::remove_reference_t<T> > > > { using type = write64_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write8s_delegate, std::remove_reference_t<T> > > > { using type = write8s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write16s_delegate, std::remove_reference_t<T> > > > { using type = write16s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write32s_delegate, std::remove_reference_t<T> > > > { using type = write32s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write64s_delegate, std::remove_reference_t<T> > > > { using type = write64s_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write8sm_delegate, std::remove_reference_t<T> > > > { using type = write8sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write16sm_delegate, std::remove_reference_t<T> > > > { using type = write16sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write32sm_delegate, std::remove_reference_t<T> > > > { using type = write32sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write64sm_delegate, std::remove_reference_t<T> > > > { using type = write64sm_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write8smo_delegate, std::remove_reference_t<T> > > > { using type = write8smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write16smo_delegate, std::remove_reference_t<T> > > > { using type = write16smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write32smo_delegate, std::remove_reference_t<T> > > > { using type = write32smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write64smo_delegate, std::remove_reference_t<T> > > > { using type = write64smo_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> struct delegate_type<T, void_t<emu::detail::rw_device_class_t<write_line_delegate, std::remove_reference_t<T> > > > { using type = write_line_delegate; using device_class = emu::detail::rw_device_class_t<type, std::remove_reference_t<T> >; }; - template <typename T> using delegate_type_t = typename delegate_type<T>::type; - template <typename T> using delegate_device_class_t = typename delegate_type<T>::device_class; + template <typename T> using delegate_type_t = emu::detail::rw_delegate_type_t<T>; + template <typename T> using delegate_device_class_t = emu::detail::rw_delegate_device_class_t<T>; // Invoking transform callbacks template <typename Input, typename Result, typename T> static std::enable_if_t<is_transform_form1<Input, Result, T>::value, mask_t<transform_result_t<Input, Result, T>, Result> > invoke_transform(T const &cb, address_space &space, offs_t &offset, Input data, std::make_unsigned_t<Input> &mem_mask) { return std::make_unsigned_t<transform_result_t<Input, Result, T> >(cb(space, offset, data, mem_mask)); } @@ -638,20 +595,17 @@ private: delegate_builder(devcb_read &target, bool append, device_t &devbase, char const *tag, T &&func, char const *name) : builder_base(target, append) , transform_base<output_t, delegate_builder>(DefaultMask & delegate_traits<Delegate>::default_mask) - , m_devbase(devbase) - , m_delegate(std::forward<T>(func), name, tag, std::add_pointer_t<devcb_read::delegate_device_class_t<T> >(nullptr)) + , m_delegate(devbase, tag, std::forward<T>(func), name) { } template <typename T> delegate_builder(devcb_read &target, bool append, device_t &devbase, devcb_read::delegate_device_class_t<T> &obj, T &&func, char const *name) : builder_base(target, append) , transform_base<output_t, delegate_builder>(DefaultMask & delegate_traits<Delegate>::default_mask) - , m_devbase(devbase) - , m_delegate(std::forward<T>(func), name, devcb_read::get_tag(obj), &obj) + , m_delegate(obj, std::forward<T>(func), name) { } delegate_builder(delegate_builder &&that) : builder_base(std::move(that)) , transform_base<output_t, delegate_builder>(std::move(that)) - , m_devbase(that.m_devbase) , m_delegate(std::move(that.m_delegate)) { that.consume(); @@ -670,8 +624,9 @@ private: void validity_check(validity_checker &valid) const { - if (!m_devbase.subdevice(m_delegate.device_name())) - osd_printf_error("Read callback bound to non-existent object tag %s (%s)\n", m_delegate.device_name(), m_delegate.name()); + auto const target(m_delegate.finder_target()); + if (target.second && !target.first.subdevice(target.second)) + osd_printf_error("Read callback bound to non-existent object tag %s (%s)\n", target.first.subtag(target.second).c_str(), m_delegate.name()); } template <typename T> @@ -679,7 +634,7 @@ private: { assert(this->m_consumed); this->built(); - m_delegate.bind_relative_to(m_devbase); + m_delegate.resolve(); chain( [cb = std::move(this->m_delegate), exor = this->exor(), mask = this->mask()] (address_space &space, offs_t offset, input_mask_t mem_mask) { return (devcb_read::invoke_read<Result>(cb, space, offset, mem_mask & mask) ^ exor) & mask; }); @@ -690,7 +645,6 @@ private: delegate_builder &operator=(delegate_builder const &) = delete; delegate_builder &operator=(delegate_builder &&that) = delete; - device_t &m_devbase; Delegate m_delegate; }; @@ -1328,7 +1282,6 @@ private: wrapped_builder(delegate_builder &&that) : builder_base(std::move(that)) - , m_devbase(that.m_devbase) , m_delegate(std::move(that.m_delegate)) { that.consume(); @@ -1336,7 +1289,6 @@ private: } wrapped_builder(wrapped_builder &&that) : builder_base(std::move(that)) - , m_devbase(that.m_devbase) , m_delegate(std::move(that.m_delegate)) { that.consume(); @@ -1345,15 +1297,16 @@ private: void validity_check(validity_checker &valid) const { - if (!m_devbase.subdevice(m_delegate.device_name())) - osd_printf_error("Write callback bound to non-existent object tag %s (%s)\n", m_delegate.device_name(), m_delegate.name()); + auto const target(m_delegate.finder_target()); + if (target.second && !target.first.subdevice(target.second)) + osd_printf_error("Write callback bound to non-existent object tag %s (%s)\n", target.first.subtag(target.second).c_str(), m_delegate.name()); } auto build() { assert(this->m_consumed); this->built(); - m_delegate.bind_relative_to(m_devbase); + m_delegate.resolve(); return [cb = std::move(this->m_delegate)] (address_space &space, offs_t offset, input_t data, std::make_unsigned_t<input_t> mem_mask) { devcb_write::invoke_write<Input>(cb, space, offset, data, mem_mask); }; @@ -1364,7 +1317,6 @@ private: wrapped_builder operator=(wrapped_builder const &) = delete; wrapped_builder operator=(wrapped_builder &&that) = delete; - device_t &m_devbase; Delegate m_delegate; }; @@ -1374,7 +1326,6 @@ private: delegate_builder &operator=(delegate_builder const &) = delete; delegate_builder &operator=(delegate_builder &&that) = delete; - device_t &m_devbase; Delegate m_delegate; public: @@ -1384,20 +1335,17 @@ private: delegate_builder(devcb_write &target, bool append, device_t &devbase, char const *tag, T &&func, char const *name) : builder_base(target, append) , transform_base<mask_t<Input, typename delegate_traits<Delegate>::input_t>, delegate_builder>(DefaultMask & delegate_traits<Delegate>::default_mask) - , m_devbase(devbase) - , m_delegate(std::forward<T>(func), name, tag, std::add_pointer_t<devcb_write::delegate_device_class_t<T> >(nullptr)) + , m_delegate(devbase, tag, std::forward<T>(func), name) { } template <typename T> delegate_builder(devcb_write &target, bool append, device_t &devbase, devcb_write::delegate_device_class_t<T> &obj, T &&func, char const *name) : builder_base(target, append) , transform_base<mask_t<Input, typename delegate_traits<Delegate>::input_t>, delegate_builder>(DefaultMask & delegate_traits<Delegate>::default_mask) - , m_devbase(devbase) - , m_delegate(std::forward<T>(func), name, devcb_write::get_tag(obj), &obj) + , m_delegate(obj, std::forward<T>(func), name) { } delegate_builder(delegate_builder &&that) : builder_base(std::move(that)) , transform_base<mask_t<Input, typename delegate_traits<Delegate>::input_t>, delegate_builder>(std::move(that)) - , m_devbase(that.m_devbase) , m_delegate(std::move(that.m_delegate)) { that.consume(); @@ -1415,15 +1363,16 @@ private: void validity_check(validity_checker &valid) const { - if (!m_devbase.subdevice(m_delegate.device_name())) - osd_printf_error("Write callback bound to non-existent object tag %s (%s)\n", m_delegate.device_name(), m_delegate.name()); + auto const target(m_delegate.finder_target()); + if (target.second && !target.first.subdevice(target.second)) + osd_printf_error("Write callback bound to non-existent object tag %s (%s)\n", target.first.subtag(target.second).c_str(), m_delegate.name()); } auto build() { assert(this->m_consumed); this->built(); - m_delegate.bind_relative_to(m_devbase); + m_delegate.resolve(); return [cb = std::move(this->m_delegate), exor = this->exor(), mask = this->mask()] (address_space &space, offs_t offset, input_t data, std::make_unsigned_t<input_t> mem_mask) { devcb_write::invoke_write<Input>(cb, space, offset, (data ^ exor) & mask, mem_mask & mask); }; diff --git a/src/emu/devdelegate.cpp b/src/emu/devdelegate.cpp index 380f01180e2..0396b583706 100644 --- a/src/emu/devdelegate.cpp +++ b/src/emu/devdelegate.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Aaron Giles +// copyright-holders:Aaron Giles, Vas Crabb /*************************************************************************** devdelegate.c @@ -9,29 +9,26 @@ ***************************************************************************/ #include "emu.h" +#include "devdelegate.h" -//------------------------------------------------- -// bound_object - use the device name to locate -// a device relative to the given search root; -// fatal error if not found -//------------------------------------------------- +namespace emu { namespace detail { -delegate_late_bind &device_delegate_helper::bound_object(device_t &search_root) const +delegate_late_bind &device_delegate_helper::bound_object() const { - device_t *device = search_root.subdevice(m_device_name); - if (device == nullptr) - throw emu_fatalerror("Unable to locate device '%s' relative to '%s'\n", m_device_name, search_root.tag()); + if (!m_tag) + return m_base.get(); + device_t *const device(m_base.get().subdevice(m_tag)); + if (!device) + throw emu_fatalerror("Unable to locate device '%s' relative to '%s'\n", m_tag, m_base.get().tag()); return *device; } -//------------------------------------------------- -// safe_tag - return a tag string or (unknown) if -// the object is not valid -//------------------------------------------------- - -const char *device_delegate_helper::safe_tag(device_t *object) +void device_delegate_helper::set_tag(char const *tag) { - return (object != nullptr) ? object->tag() : "(unknown)"; + m_base = m_base.get().mconfig().current_device(); + m_tag = tag; } + +} } // namespace emu::detail diff --git a/src/emu/devdelegate.h b/src/emu/devdelegate.h index 8bdef60f880..bbb94930d43 100644 --- a/src/emu/devdelegate.h +++ b/src/emu/devdelegate.h @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders:Aaron Giles +// copyright-holders:Aaron Giles, Vas Crabb /*************************************************************************** devdelegate.h @@ -7,7 +7,6 @@ Delegates that are late-bound to MAME devices. ***************************************************************************/ - #ifndef MAME_EMU_DEVDELEGATE_H #define MAME_EMU_DEVDELEGATE_H @@ -15,28 +14,59 @@ #include "delegate.h" +#include <array> +#include <functional> +#include <type_traits> +#include <utility> + + +namespace emu { + +//************************************************************************** +// FORWARD DECLARATIONS +//************************************************************************** + +template <typename Signature, unsigned Count> class device_delegate_array; + + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** +namespace detail { + // ======================> device_delegate_helper // device_delegate_helper does non-template work class device_delegate_helper { +public: + // accessors + char const *finder_tag() const { return m_tag; } + std::pair<device_t &, char const *> finder_target() const { return std::make_pair(m_base, m_tag); } + protected: - // constructor - device_delegate_helper(const char *devname) : m_device_name(devname) { } + // construct/assign + device_delegate_helper(device_t &owner, char const *tag = nullptr) : m_base(owner), m_tag(tag) { } + template <class DeviceClass, bool Required> device_delegate_helper(device_finder<DeviceClass, Required> const &finder); + device_delegate_helper(device_delegate_helper const &) = default; + device_delegate_helper &operator=(device_delegate_helper const &) = default; // internal helpers - delegate_late_bind &bound_object(device_t &search_root) const; - static const char *safe_tag(device_t *object); + delegate_late_bind &bound_object() const; + void set_tag(device_t &object) { m_base = object; m_tag = nullptr; } + void set_tag(device_t &base, char const *tag) { m_base = base; m_tag = tag; } + void set_tag(char const *tag); + template <class DeviceClass, bool Required> void set_tag(device_finder<DeviceClass, Required> const &finder); - // internal state - const char *m_device_name; +private: + std::reference_wrapper<device_t> m_base; + char const *m_tag; }; +} // namespace detail + // ======================> named_delegate template <typename Signature> @@ -45,7 +75,7 @@ class named_delegate : public delegate<Signature> private: using basetype = delegate<Signature>; - const char * m_name; // name string + char const *m_name = nullptr; // name string protected: template <class FunctionClass> using member_func_type = typename basetype::template member_func_type<FunctionClass>; @@ -54,59 +84,193 @@ protected: public: // create a standard set of constructors - named_delegate() : basetype(), m_name(nullptr) { } - explicit named_delegate(const basetype &src) : basetype(src), m_name(src.m_name) { } - named_delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object), m_name(src.m_name) { } - template <class FunctionClass> named_delegate(member_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } - template <class FunctionClass> named_delegate(const_member_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } - explicit named_delegate(std::function<Signature> funcptr, const char *name) : basetype(funcptr), m_name(name) { } - template <class FunctionClass> named_delegate(static_ref_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } - named_delegate &operator=(const basetype &src) { basetype::operator=(src); m_name = src.m_name; return *this; } - - const char *name() const { return m_name; } + named_delegate() = default; + named_delegate(named_delegate const &) = default; + named_delegate(named_delegate const &src, delegate_late_bind &object) : basetype(src, object), m_name(src.m_name) { } + template <class FunctionClass> named_delegate(member_func_type<FunctionClass> funcptr, char const *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } + template <class FunctionClass> named_delegate(const_member_func_type<FunctionClass> funcptr, char const *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } + template <class FunctionClass> named_delegate(static_ref_func_type<FunctionClass> funcptr, char const *name, FunctionClass *object) : basetype(funcptr, object), m_name(name) { } + template <typename T> named_delegate(T &&funcptr, std::enable_if_t<std::is_constructible<std::function<Signature>, T>::value, char const *> name) : basetype(std::forward<T>(funcptr)), m_name(name) { } + + // allow assignment + named_delegate &operator=(named_delegate const &src) = default; + + char const *name() const { return m_name; } }; // ======================> device_delegate // device_delegate is a delegate that wraps with a device tag and can be easily // late bound without replicating logic everywhere -template <typename Signature> -class device_delegate : public named_delegate<Signature>, public device_delegate_helper +template <typename Signature> class device_delegate; + +template <typename ReturnType, typename... Params> +class device_delegate<ReturnType (Params...)> : protected named_delegate<ReturnType (Params...)>, public detail::device_delegate_helper { - using thistype = device_delegate<Signature>; - using basetype = named_delegate<Signature>; - template <class FunctionClass> using member_func_type = typename basetype::template member_func_type<FunctionClass>; - template <class FunctionClass> using const_member_func_type = typename basetype::template const_member_func_type<FunctionClass>; - template <class FunctionClass> using static_ref_func_type = typename basetype::template static_ref_func_type<FunctionClass>; +private: + using basetype = named_delegate<ReturnType (Params...)>; + + template <class T, class U> struct is_related_device_implementation + { static constexpr bool value = std::is_base_of<T, U>::value && std::is_base_of<device_t, U>::value; }; + template <class T, class U> struct is_related_device_interface + { static constexpr bool value = std::is_base_of<T, U>::value && std::is_base_of<device_interface, U>::value && !std::is_base_of<device_t, U>::value; }; + template <class T, class U> struct is_related_device + { static constexpr bool value = is_related_device_implementation<T, U>::value || is_related_device_interface<T, U>::value; }; + + template <class T> static std::enable_if_t<is_related_device_implementation<T, T>::value, device_t &> get_device(T &object) { return object; } + template <class T> static std::enable_if_t<is_related_device_interface<T, T>::value, device_t &> get_device(T &object) { return object.device(); } public: - // provide the same constructors as the base class - device_delegate() : basetype(), device_delegate_helper(nullptr) { } - device_delegate(const basetype &src) : basetype(src), device_delegate_helper(src.m_device_name) { } - device_delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object), device_delegate_helper(src.m_device_name) { } - template <class FunctionClass> device_delegate(member_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { } - template <class FunctionClass> device_delegate(const_member_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { } - template <class FunctionClass> device_delegate(static_ref_func_type<FunctionClass> funcptr, const char *name, FunctionClass *object) : basetype(funcptr, name, object), device_delegate_helper(safe_tag(dynamic_cast<device_t *>(object))) { } - device_delegate(std::function<Signature> funcptr, const char *name) : basetype(funcptr, name), device_delegate_helper(nullptr) { } - device_delegate &operator=(const thistype &src) { basetype::operator=(src); m_device_name = src.m_device_name; return *this; } - - // provide additional constructors that take a device name string - template <class FunctionClass> device_delegate(member_func_type<FunctionClass> funcptr, const char *name, const char *devname) : basetype(funcptr, name, static_cast<FunctionClass *>(nullptr)), device_delegate_helper(devname) { } - template <class FunctionClass> device_delegate(member_func_type<FunctionClass> funcptr, const char *name, const char *devname, FunctionClass *) : basetype(funcptr, name, static_cast<FunctionClass *>(nullptr)), device_delegate_helper(devname) { } - template <class FunctionClass> device_delegate(const_member_func_type<FunctionClass> funcptr, const char *name, const char *devname) : basetype(funcptr, name, static_cast<FunctionClass *>(nullptr)), device_delegate_helper(devname) { } - template <class FunctionClass> device_delegate(const_member_func_type<FunctionClass> funcptr, const char *name, const char *devname, FunctionClass *) : basetype(funcptr, name, static_cast<FunctionClass *>(nullptr)), device_delegate_helper(devname) { } - template <class FunctionClass> device_delegate(static_ref_func_type<FunctionClass> funcptr, const char *name, const char *devname, FunctionClass *) : basetype(funcptr, name, static_cast<FunctionClass *>(nullptr)), device_delegate_helper(devname) { } - device_delegate(static_ref_func_type<device_t> funcptr, const char *name) : basetype(funcptr, name, static_cast<device_t *>(nullptr)), device_delegate_helper(nullptr) { } - - // and constructors that provide a search root - device_delegate(const thistype &src, device_t &search_root) : basetype(src), device_delegate_helper(src.m_device_name) { bind_relative_to(search_root); } + template <unsigned Count> using array = device_delegate_array<ReturnType (Params...), Count>; + + template <typename T> struct supports_callback + { static constexpr bool value = std::is_constructible<device_delegate, device_t &, char const *, T, char const *>::value; }; + + // construct/assign + explicit device_delegate(device_t &owner) : basetype(), detail::device_delegate_helper(owner) { } + device_delegate(device_delegate const &) = default; + device_delegate &operator=(device_delegate const &) = default; + + // construct with prototype and target + device_delegate(basetype const &proto, device_t &object) : basetype(proto, object), detail::device_delegate_helper(object) { } + device_delegate(device_delegate const &proto, device_t &object) : basetype(proto, object), detail::device_delegate_helper(object) { } + + // construct with base and tag + template <class D> + device_delegate(device_t &base, char const *tag, ReturnType (D::*funcptr)(Params...), char const *name) + : basetype(funcptr, name, static_cast<D *>(nullptr)) + , detail::device_delegate_helper(base, tag) + { } + template <class D> + device_delegate(device_t &base, char const *tag, ReturnType (D::*funcptr)(Params...) const, char const *name) + : basetype(funcptr, name, static_cast<D *>(nullptr)) + , detail::device_delegate_helper(base, tag) + { } + template <class D> + device_delegate(device_t &base, char const *tag, ReturnType (*funcptr)(D &, Params...), char const *name) + : basetype(funcptr, name, static_cast<D *>(nullptr)) + , detail::device_delegate_helper(base, tag) + { } + + // construct with device finder + template <class D, bool R, class E> + device_delegate(device_finder<D, R> const &finder, ReturnType (E::*funcptr)(Params...), char const *name) + : basetype(funcptr, name, static_cast<E *>(nullptr)) + , detail::device_delegate_helper(finder) + { } + template <class D, bool R, class E> + device_delegate(device_finder<D, R> const &finder, ReturnType (E::*funcptr)(Params...) const, char const *name) + : basetype(funcptr, name, static_cast<E *>(nullptr)) + , detail::device_delegate_helper(finder) + { } + template <class D, bool R, class E> + device_delegate(device_finder<D, R> const &finder, ReturnType (*funcptr)(E &, Params...), char const *name) + : basetype(funcptr, name, static_cast<E *>(nullptr)) + , detail::device_delegate_helper(finder) + { } + + // construct with target object + template <class T, class D> + device_delegate(T &object, ReturnType (D::*funcptr)(Params...), std::enable_if_t<is_related_device<D, T>::value, char const *> name) + : basetype(funcptr, name, static_cast<D *>(&object)) + , detail::device_delegate_helper(get_device(object)) + { } + template <class T, class D> + device_delegate(T &object, ReturnType (D::*funcptr)(Params...) const, std::enable_if_t<is_related_device<D, T>::value, char const *> name) + : basetype(funcptr, name, static_cast<D *>(&object)) + , detail::device_delegate_helper(get_device(object)) + { } + template <class T, class D> + device_delegate(T &object, ReturnType (*funcptr)(D &, Params...), std::enable_if_t<is_related_device<D, T>::value, char const *> name) + : basetype(funcptr, name, static_cast<D *>(&object)) + , detail::device_delegate_helper(get_device(object)) + { } + + // construct with callable object + template <typename T> + device_delegate(device_t &owner, T &&funcptr, std::enable_if_t<std::is_constructible<std::function<ReturnType (Params...)>, T>::value, char const *> name) + : basetype(std::forward<T>(funcptr), name) + , detail::device_delegate_helper(owner) + { basetype::operator=(basetype(std::forward<T>(funcptr), name)); } + + // setters that implicitly bind to the current device + template <class D> void set(ReturnType (D::*funcptr)(Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(nullptr); } + template <class D> void set(ReturnType (D::*funcptr)(Params...) const, char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(nullptr); } + template <class D> void set(ReturnType (*funcptr)(D &, Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(nullptr); } + + // setters that take a tag-like object specifying the target + template <typename T, class D> void set(T &&tag, ReturnType (D::*funcptr)(Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(std::forward<T>(tag)); } + template <typename T, class D> void set(T &&tag, ReturnType (D::*funcptr)(Params...) const, char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(std::forward<T>(tag)); } + template <typename T, class D> void set(T &&tag, ReturnType (*funcptr)(D &, Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(nullptr))); set_tag(std::forward<T>(tag)); } + + // setters that take a target object + template <class T, class D> std::enable_if_t<std::is_base_of<D, T>::value> set(T &object, ReturnType (D::*funcptr)(Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(&object))); set_tag(finder_target().first); } + template <class T, class D> std::enable_if_t<std::is_base_of<D, T>::value> set(T &object, ReturnType (D::*funcptr)(Params...) const, char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(&object))); set_tag(finder_target().first); } + template <class T, class D> std::enable_if_t<std::is_base_of<D, T>::value> set(T &object, ReturnType (*funcptr)(D &, Params...), char const *name) + { basetype::operator=(basetype(funcptr, name, static_cast<D *>(&object))); set_tag(finder_target().first); } + + // setter that takes a functoid + template <typename T> std::enable_if_t<std::is_constructible<std::function<ReturnType (Params...)>, T>::value> set(T &&funcptr, char const *name) + { basetype::operator=(basetype(std::forward<T>(funcptr), name)); } + + // unsetter + void set(std::nullptr_t) + { basetype::operator=(basetype()); set_tag(finder_target().first); } // perform the binding - void bind_relative_to(device_t &search_root) { if (!basetype::isnull()) basetype::late_bind(bound_object(search_root)); } + void resolve() { if (!basetype::isnull() && !basetype::has_object()) basetype::late_bind(bound_object()); } - // getter (for validation purposes) - const char *device_name() const { return m_device_name; } + // accessors + using basetype::operator(); + using basetype::isnull; + using basetype::has_object; + using basetype::name; }; +// simplifies constructing an array of delegates with a single owner +template <typename Signature, unsigned Count> +class device_delegate_array : public std::array<device_delegate<Signature>, Count> +{ +private: + template <unsigned... V> + device_delegate_array(device_t &owner, std::integer_sequence<unsigned, V...> const &) + : std::array<device_delegate<Signature>, Count>{ make_one<V>(owner)... } + { + } + + template <unsigned N> device_delegate<Signature> make_one(device_t &owner) + { + return device_delegate<Signature>(owner); + } + +public: + using std::array<device_delegate<Signature>, Count>::array; + + device_delegate_array(device_t &owner) + : device_delegate_array(owner, std::make_integer_sequence<unsigned, Count>()) + { + } + + void resolve_all() + { + for (device_delegate<Signature> &elem : *this) + elem.resolve(); + } +}; + +} // namespace emu + + +using emu::named_delegate; +using emu::device_delegate; + #endif // MAME_EMU_DEVDELEGATE_H diff --git a/src/emu/device.cpp b/src/emu/device.cpp index 42edf893168..5dc0366d99e 100644 --- a/src/emu/device.cpp +++ b/src/emu/device.cpp @@ -852,7 +852,7 @@ device_t *device_t::subdevice_slow(const char *tag) const // we presume the result is a rooted path; also doubled colons mess up our // tree walk, so catch them early assert(fulltag[0] == ':'); - assert(fulltag.find("::") == -1); + assert(fulltag.find("::") == std::string::npos); // walk the device list to the final path device_t *curdevice = &mconfig().root_device(); diff --git a/src/emu/device.h b/src/emu/device.h index 257311deb7f..a99c4589eab 100644 --- a/src/emu/device.h +++ b/src/emu/device.h @@ -596,6 +596,7 @@ public: u32 unscaled_clock() const { return m_unscaled_clock; } void set_unscaled_clock(u32 clock); void set_unscaled_clock(const XTAL &xtal) { set_unscaled_clock(xtal.value()); } + void set_unscaled_clock_int(u32 clock) { set_unscaled_clock(clock); } // non-overloaded name because binding to overloads is ugly double clock_scale() const { return m_clock_scale; } void set_clock_scale(double clockscale); attotime clocks_to_attotime(u64 clocks) const; diff --git a/src/emu/device.ipp b/src/emu/device.ipp index 9cc7a791278..2d7a5a29b7b 100644 --- a/src/emu/device.ipp +++ b/src/emu/device.ipp @@ -60,6 +60,19 @@ inline DeviceClass &device_type_impl<DeviceClass>::operator()(machine_config_rep return finder = result; } + +template <class DeviceClass, bool Required> +inline device_delegate_helper::device_delegate_helper(device_finder<DeviceClass, Required> const &finder) + : device_delegate_helper(finder.finder_target().first, finder.finder_tag()) +{ +} + +template <class DeviceClass, bool Required> +inline void device_delegate_helper::set_tag(device_finder<DeviceClass, Required> const &finder) +{ + std::tie(m_base, m_tag) = finder.finder_target(); +} + } } // namespace emu::detail diff --git a/src/emu/didisasm.cpp b/src/emu/didisasm.cpp index 7454e54ec3c..cd30ae6fd9a 100644 --- a/src/emu/didisasm.cpp +++ b/src/emu/didisasm.cpp @@ -49,7 +49,7 @@ private: device_disasm_interface::device_disasm_interface(const machine_config &mconfig, device_t &device) - : device_interface(device, "disasm"), m_disasm(), m_dasm_override(), m_started(false) + : device_interface(device, "disasm"), m_disasm(), m_dasm_override(device), m_started(false) { } @@ -69,6 +69,6 @@ void device_disasm_interface::interface_pre_start() if (!m_started) { m_started = true; - m_dasm_override.bind_relative_to(*device().owner()); + m_dasm_override.resolve(); } } diff --git a/src/emu/didisasm.h b/src/emu/didisasm.h index c63fe0cc421..4a727dc7834 100644 --- a/src/emu/didisasm.h +++ b/src/emu/didisasm.h @@ -35,13 +35,7 @@ public: virtual ~device_disasm_interface() = default; // Override - template <typename Obj> void set_dasm_override(Obj &&cb) { m_dasm_override = std::forward<Obj>(cb); } - void set_dasm_override(dasm_override_delegate callback) { m_dasm_override = callback; } - template <class FunctionClass> void set_dasm_override(offs_t (FunctionClass::*callback)(std::ostream &, offs_t, - const util::disasm_interface::data_buffer &, const util::disasm_interface::data_buffer &), const char *name) - { - set_dasm_override(dasm_override_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_dasm_override(T &&... args) { m_dasm_override.set(std::forward<T>(args)...); } // disassembler request util::disasm_interface &get_disassembler(); diff --git a/src/emu/diexec.cpp b/src/emu/diexec.cpp index fba63aa1e7d..4df8bb33493 100644 --- a/src/emu/diexec.cpp +++ b/src/emu/diexec.cpp @@ -46,9 +46,12 @@ device_execute_interface::device_execute_interface(const machine_config &mconfig : device_interface(device, "execute") , m_scheduler(nullptr) , m_disabled(false) + , m_vblank_interrupt(device) , m_vblank_interrupt_screen(nullptr) + , m_timed_interrupt(device) , m_timed_interrupt_period(attotime::zero) , m_nextexec(nullptr) + , m_driver_irq(device) , m_timedint_timer(nullptr) , m_profiler(PROFILER_IDLE) , m_icountptr(nullptr) @@ -371,9 +374,9 @@ void device_execute_interface::interface_pre_start() m_scheduler = &device().machine().scheduler(); // bind delegates - m_vblank_interrupt.bind_relative_to(*device().owner()); - m_timed_interrupt.bind_relative_to(*device().owner()); - m_driver_irq.bind_relative_to(*device().owner()); + m_vblank_interrupt.resolve(); + m_timed_interrupt.resolve(); + m_driver_irq.resolve(); // fill in the initial states int const index = device_iterator(device().machine().root_device()).indexof(*this); diff --git a/src/emu/diexec.h b/src/emu/diexec.h index 663cc6ddb1c..056033b95c6 100644 --- a/src/emu/diexec.h +++ b/src/emu/diexec.h @@ -114,53 +114,41 @@ public: // inline configuration helpers void set_disable() { m_disabled = true; } - template <typename Object> void set_vblank_int(Object &&cb, const char *tag) - { - m_vblank_interrupt = std::forward<Object>(cb); - m_vblank_interrupt_screen = tag; - } - void set_vblank_int(device_interrupt_delegate callback, const char *tag) + + template <typename... T> void set_vblank_int(const char *tag, T &&... args) { - m_vblank_interrupt = callback; + m_vblank_interrupt.set(std::forward<T>(args)...); m_vblank_interrupt_screen = tag; } - template <class FunctionClass> void set_vblank_int(const char *tag, const char *devname, void (FunctionClass::*callback)(device_t &), const char *name) + void remove_vblank_int() { - set_vblank_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), tag); - } - template <class FunctionClass> void set_vblank_int(const char *tag, void (FunctionClass::*callback)(device_t &), const char *name) - { - set_vblank_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), tag); + m_vblank_interrupt = device_interrupt_delegate(*this); + m_vblank_interrupt_screen = nullptr; } - template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate) + template <typename F> void set_periodic_int(F &&cb, const char *name, const attotime &rate) { - m_timed_interrupt = std::forward<Object>(cb); + m_timed_interrupt.set(std::forward<F>(cb), name); m_timed_interrupt_period = rate; } - void set_periodic_int(device_interrupt_delegate callback, const attotime &rate) + template <typename T, typename F> void set_periodic_int(T &&target, F &&cb, const char *name, const attotime &rate) { - m_timed_interrupt = callback; + m_timed_interrupt.set(std::forward<T>(target), std::forward<F>(cb), name); m_timed_interrupt_period = rate; } - template <class FunctionClass> void set_periodic_int(const char *devname, void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate) - { - set_periodic_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), rate); - } - template <class FunctionClass> void set_periodic_int(void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate) + void remove_periodic_int() { - set_periodic_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), rate); + m_timed_interrupt = device_interrupt_delegate(*this); + m_timed_interrupt_period = attotime(); } - template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); } - void set_irq_acknowledge_callback(device_irq_acknowledge_delegate callback) { m_driver_irq = callback; } - template <class FunctionClass> void set_irq_acknowledge_callback(const char *devname, int (FunctionClass::*callback)(device_t &, int), const char *name) + template <typename... T> void set_irq_acknowledge_callback(T &&... args) { - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + m_driver_irq.set(std::forward<T>(args)...); } - template <class FunctionClass> void set_irq_acknowledge_callback(int (FunctionClass::*callback)(device_t &, int), const char *name) + void remove_irq_acknowledge_callback() { - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_driver_irq = device_irq_acknowledge_delegate(*this); } // execution management diff --git a/src/emu/emumem.cpp b/src/emu/emumem.cpp index 57032751880..cccee057ad1 100644 --- a/src/emu/emumem.cpp +++ b/src/emu/emumem.cpp @@ -226,6 +226,56 @@ class address_space_specific : public address_space using NativeType = uX; using this_type = address_space_specific<Width, AddrShift, Endian>; + template <typename Delegate, typename Dummy = void> struct handler_width; + template <typename Dummy> struct handler_width<read8_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read8m_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read8s_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read8sm_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read8mo_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read8smo_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8m_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8s_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8sm_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8mo_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<write8smo_delegate, Dummy> { static constexpr int value = 0; }; + template <typename Dummy> struct handler_width<read16_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read16m_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read16s_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read16sm_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read16mo_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read16smo_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16m_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16s_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16sm_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16mo_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<write16smo_delegate, Dummy> { static constexpr int value = 1; }; + template <typename Dummy> struct handler_width<read32_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read32m_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read32s_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read32sm_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read32mo_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read32smo_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32m_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32s_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32sm_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32mo_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<write32smo_delegate, Dummy> { static constexpr int value = 2; }; + template <typename Dummy> struct handler_width<read64_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<read64m_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<read64s_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<read64sm_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<read64mo_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<read64smo_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64m_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64s_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64sm_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64mo_delegate, Dummy> { static constexpr int value = 3; }; + template <typename Dummy> struct handler_width<write64smo_delegate, Dummy> { static constexpr int value = 3; }; + // constants describing the native size static constexpr u32 NATIVE_BYTES = 1 << Width; static constexpr u32 NATIVE_STEP = AddrShift >= 0 ? NATIVE_BYTES << iabs(AddrShift) : NATIVE_BYTES >> iabs(AddrShift); @@ -245,83 +295,155 @@ public: void install_readwrite_port(offs_t addrstart, offs_t addrend, offs_t addrmirror, std::string rtag, std::string wtag) override; void install_device_delegate(offs_t addrstart, offs_t addrend, device_t &device, address_map_constructor &map, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate rhandler, write8_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate rhandler, write16_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate rhandler, write32_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate rhandler, write64_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate rhandler, write8m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate rhandler, write16m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate rhandler, write32m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate rhandler, write64m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate rhandler, write8s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate rhandler, write16s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate rhandler, write32s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate rhandler, write64s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate rhandler, write8sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate rhandler, write16sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate rhandler, write32sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate rhandler, write64sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate rhandler, write8mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate rhandler, write16mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate rhandler, write32mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate rhandler, write64mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate rhandler, write8smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate rhandler, write16smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate rhandler, write32smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override; - void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; - void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate rhandler, write64smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override; + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate rhandler, write8_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate rhandler, write16_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate rhandler, write32_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate rhandler, write64_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate rhandler, write8m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate rhandler, write16m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate rhandler, write32m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate rhandler, write64m_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate rhandler, write8s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate rhandler, write16s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate rhandler, write32s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate rhandler, write64s_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate rhandler, write8sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate rhandler, write16sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate rhandler, write32sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate rhandler, write64sm_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate rhandler, write8mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate rhandler, write16mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate rhandler, write32mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate rhandler, write64mo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate rhandler, write8smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate rhandler, write16smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate rhandler, write32smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } + void install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate rhandler, u64 unitmask = 0, int cswidth = 0) override + { install_read_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler); } + void install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_write_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, whandler); } + void install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate rhandler, write64smo_delegate whandler, u64 unitmask = 0, int cswidth = 0) override + { install_readwrite_handler_impl(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); } using address_space::install_read_tap; using address_space::install_write_tap; @@ -537,9 +659,47 @@ public: std::unordered_set<handler_entry *> m_delayed_unrefs; private: + template<typename READ> + void install_read_handler_impl(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, READ &handler_r) + { + try { handler_r.resolve(); } + catch (const binding_type_exception &) { + osd_printf_error("Binding error while installing read handler %s for range 0x%X-0x%X mask 0x%X mirror 0x%X select 0x%X umask 0x%X\n", handler_r.name(), addrstart, addrend, addrmask, addrmirror, addrselect, unitmask); + throw; + } + install_read_handler_helper<handler_width<READ>::value>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler_r); + } + + template<typename WRITE> + void install_write_handler_impl(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, WRITE &handler_w) + { + try { handler_w.resolve(); } + catch (const binding_type_exception &) { + osd_printf_error("Binding error while installing write handler %s for range 0x%X-0x%X mask 0x%X mirror 0x%X select 0x%X umask 0x%X\n", handler_w.name(), addrstart, addrend, addrmask, addrmirror, addrselect, unitmask); + throw; + } + install_write_handler_helper<handler_width<WRITE>::value>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler_w); + } + + template<typename READ, typename WRITE> + void install_readwrite_handler_impl(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, READ &handler_r, WRITE &handler_w) + { + static_assert(handler_width<READ>::value == handler_width<WRITE>::value, "handler widths do not match"); + try { handler_r.resolve(); } + catch (const binding_type_exception &) { + osd_printf_error("Binding error while installing read handler %s for range 0x%X-0x%X mask 0x%X mirror 0x%X select 0x%X umask 0x%X\n", handler_r.name(), addrstart, addrend, addrmask, addrmirror, addrselect, unitmask); + throw; + } + try { handler_w.resolve(); } + catch (const binding_type_exception &) { + osd_printf_error("Binding error while installing write handler %s for range 0x%X-0x%X mask 0x%X mirror 0x%X select 0x%X umask 0x%X\n", handler_w.name(), addrstart, addrend, addrmask, addrmirror, addrselect, unitmask); + throw; + } + install_readwrite_handler_helper<handler_width<READ>::value>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler_r, handler_w); + } + template<int AccessWidth, typename READ> std::enable_if_t<(Width == AccessWidth)> - install_read_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r) + install_read_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, const READ &handler_r) { VPRINTF(("address_space::install_read_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -560,7 +720,7 @@ private: template<int AccessWidth, typename READ> std::enable_if_t<(Width > AccessWidth)> install_read_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r) + const READ &handler_r) { VPRINTF(("address_space::install_read_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -584,14 +744,14 @@ private: template<int AccessWidth, typename READ> std::enable_if_t<(Width < AccessWidth)> install_read_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r) + const READ &handler_r) { fatalerror("install_read_handler: cannot install a %d-wide handler in a %d-wide bus", 8 << AccessWidth, 8 << Width); } template<int AccessWidth, typename WRITE> std::enable_if_t<(Width == AccessWidth)> install_write_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - WRITE handler_w) + const WRITE &handler_w) { VPRINTF(("address_space::install_write_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -612,7 +772,7 @@ private: template<int AccessWidth, typename WRITE> std::enable_if_t<(Width > AccessWidth)> install_write_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - WRITE handler_w) + const WRITE &handler_w) { VPRINTF(("address_space::install_write_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -636,7 +796,7 @@ private: template<int AccessWidth, typename WRITE> std::enable_if_t<(Width < AccessWidth)> install_write_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - WRITE handler_w) + const WRITE &handler_w) { fatalerror("install_write_handler: cannot install a %d-wide handler in a %d-wide bus", 8 << AccessWidth, 8 << Width); } @@ -645,8 +805,8 @@ private: template<int AccessWidth, typename READ, typename WRITE> std::enable_if_t<(Width == AccessWidth)> install_readwrite_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r, - WRITE handler_w) + const READ &handler_r, + const WRITE &handler_w) { VPRINTF(("address_space::install_readwrite_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -672,8 +832,8 @@ private: template<int AccessWidth, typename READ, typename WRITE> std::enable_if_t<(Width > AccessWidth)> install_readwrite_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r, - WRITE handler_w) + const READ &handler_r, + const WRITE &handler_w) { VPRINTF(("address_space::install_readwrite_handler(%s-%s mask=%s mirror=%s, space width=%d, handler width=%d, %s, %s, %s)\n", core_i64_hex_format(addrstart, m_addrchars), core_i64_hex_format(addrend, m_addrchars), @@ -704,8 +864,8 @@ private: template<int AccessWidth, typename READ, typename WRITE> std::enable_if_t<(Width < AccessWidth)> install_readwrite_handler_helper(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, u64 unitmask, int cswidth, - READ handler_r, - WRITE handler_w) + const READ &handler_r, + const WRITE &handler_w) { fatalerror("install_readwrite_handler: cannot install a %d-wide handler in a %d-wide bus", 8 << AccessWidth, 8 << Width); } @@ -1370,18 +1530,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8_delegate(entry.m_rproto8, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16_delegate(entry.m_rproto16, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32_delegate(entry.m_rproto32, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64_delegate(entry.m_rproto64, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8_delegate(entry.m_wproto8, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16_delegate(entry.m_wproto16, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32_delegate(entry.m_wproto32, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64_delegate(entry.m_wproto64, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64, entry.m_mask, entry.m_cswidth); break; } break; @@ -1389,18 +1549,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8m_delegate(entry.m_rproto8m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16m_delegate(entry.m_rproto16m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32m_delegate(entry.m_rproto32m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64m_delegate(entry.m_rproto64m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8m, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16m, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32m, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64m, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8m_delegate(entry.m_wproto8m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16m_delegate(entry.m_wproto16m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32m_delegate(entry.m_wproto32m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64m_delegate(entry.m_wproto64m, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8m, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16m, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32m, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64m, entry.m_mask, entry.m_cswidth); break; } break; @@ -1408,18 +1568,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8s_delegate(entry.m_rproto8s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16s_delegate(entry.m_rproto16s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32s_delegate(entry.m_rproto32s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64s_delegate(entry.m_rproto64s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8s, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16s, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32s, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64s, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8s_delegate(entry.m_wproto8s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16s_delegate(entry.m_wproto16s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32s_delegate(entry.m_wproto32s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64s_delegate(entry.m_wproto64s, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8s, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16s, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32s, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64s, entry.m_mask, entry.m_cswidth); break; } break; @@ -1427,18 +1587,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8sm_delegate(entry.m_rproto8sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16sm_delegate(entry.m_rproto16sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32sm_delegate(entry.m_rproto32sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64sm_delegate(entry.m_rproto64sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8sm, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16sm, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32sm, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64sm, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8sm_delegate(entry.m_wproto8sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16sm_delegate(entry.m_wproto16sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32sm_delegate(entry.m_wproto32sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64sm_delegate(entry.m_wproto64sm, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8sm, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16sm, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32sm, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64sm, entry.m_mask, entry.m_cswidth); break; } break; @@ -1446,18 +1606,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8mo_delegate(entry.m_rproto8mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16mo_delegate(entry.m_rproto16mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32mo_delegate(entry.m_rproto32mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64mo_delegate(entry.m_rproto64mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8mo, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16mo, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32mo, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64mo, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8mo_delegate(entry.m_wproto8mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16mo_delegate(entry.m_wproto16mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32mo_delegate(entry.m_wproto32mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64mo_delegate(entry.m_wproto64mo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8mo, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16mo, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32mo, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64mo, entry.m_mask, entry.m_cswidth); break; } break; @@ -1465,18 +1625,18 @@ void address_space::populate_map_entry(const address_map_entry &entry, read_or_w if (readorwrite == read_or_write::READ) switch (data.m_bits) { - case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read8smo_delegate(entry.m_rproto8smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read16smo_delegate(entry.m_rproto16smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read32smo_delegate(entry.m_rproto32smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, read64smo_delegate(entry.m_rproto64smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto8smo, entry.m_mask, entry.m_cswidth); break; + case 16: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto16smo, entry.m_mask, entry.m_cswidth); break; + case 32: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto32smo, entry.m_mask, entry.m_cswidth); break; + case 64: install_read_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_rproto64smo, entry.m_mask, entry.m_cswidth); break; } else switch (data.m_bits) { - case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write8smo_delegate(entry.m_wproto8smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write16smo_delegate(entry.m_wproto16smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write32smo_delegate(entry.m_wproto32smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; - case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, write64smo_delegate(entry.m_wproto64smo, entry.m_devbase), entry.m_mask, entry.m_cswidth); break; + case 8: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto8smo, entry.m_mask, entry.m_cswidth); break; + case 16: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto16smo, entry.m_mask, entry.m_cswidth); break; + case 32: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto32smo, entry.m_mask, entry.m_cswidth); break; + case 64: install_write_handler(entry.m_addrstart, entry.m_addrend, entry.m_addrmask, entry.m_addrmirror, entry.m_addrselect, entry.m_wproto64smo, entry.m_mask, entry.m_cswidth); break; } break; @@ -2080,389 +2240,6 @@ template<int Width, int AddrShift, endianness_t Endian> void address_space_speci } -//------------------------------------------------- -// install_handler - install 8-bit read/write -// delegate handlers for the space -//------------------------------------------------- - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8_delegate rhandler, write8_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8m_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8m_delegate rhandler, write8m_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8s_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8s_delegate rhandler, write8s_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8sm_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8sm_delegate rhandler, write8sm_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8mo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8mo_delegate rhandler, write8mo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write8smo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read8smo_delegate rhandler, write8smo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<0>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - - -//------------------------------------------------- -// install_handler - install 16-bit read/write -// delegate handlers for the space -//------------------------------------------------- - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16_delegate rhandler, write16_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16m_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16m_delegate rhandler, write16m_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16s_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16s_delegate rhandler, write16s_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16sm_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16sm_delegate rhandler, write16sm_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16smo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16smo_delegate rhandler, write16smo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write16mo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read16mo_delegate rhandler, write16mo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<1>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - - -//------------------------------------------------- -// install_handler - install 32-bit read/write -// delegate handlers for the space -//------------------------------------------------- - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32_delegate rhandler, write32_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32m_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32m_delegate rhandler, write32m_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32s_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32s_delegate rhandler, write32s_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32sm_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32sm_delegate rhandler, write32sm_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32mo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32mo_delegate rhandler, write32mo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write32smo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read32smo_delegate rhandler, write32smo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<2>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - - -//------------------------------------------------- -// install_handler64 - install 64-bit read/write -// delegate handlers for the space -//------------------------------------------------- - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64_delegate rhandler, write64_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64m_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64m_delegate rhandler, write64m_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64s_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64s_delegate rhandler, write64s_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64sm_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64sm_delegate rhandler, write64sm_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64mo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64mo_delegate rhandler, write64mo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_read_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate handler, u64 unitmask, int cswidth) -{ - install_read_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_write_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, write64smo_delegate handler, u64 unitmask, int cswidth) -{ - install_write_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, handler); -} - -template<int Width, int AddrShift, endianness_t Endian> void address_space_specific<Width, AddrShift, Endian>::install_readwrite_handler(offs_t addrstart, offs_t addrend, offs_t addrmask, offs_t addrmirror, offs_t addrselect, read64smo_delegate rhandler, write64smo_delegate whandler, u64 unitmask, int cswidth) -{ - install_readwrite_handler_helper<3>(addrstart, addrend, addrmask, addrmirror, addrselect, unitmask, cswidth, rhandler, whandler); -} - //************************************************************************** // MEMORY MAPPING HELPERS //************************************************************************** diff --git a/src/emu/emumem.h b/src/emu/emumem.h index 0bd3de898ca..4e0cf858bb4 100644 --- a/src/emu/emumem.h +++ b/src/emu/emumem.h @@ -156,372 +156,275 @@ using write64smo_delegate = device_delegate<void (u64)>; namespace emu { namespace detail { +// TODO: replace with std::void_t when we move to C++17 +template <typename... T> struct void_wrapper { using type = void; }; +template <typename... T> using void_t = typename void_wrapper<T...>::type; + template <typename D, typename T, typename Enable = void> struct rw_device_class { }; template <typename D, typename T, typename Ret, typename... Params> -struct rw_device_class<D, Ret (T::*)(Params...), std::enable_if_t<std::is_constructible<D, Ret (T::*)(Params...), const char *, const char *, T *>::value> > { using type = T; }; +struct rw_device_class<D, Ret (T::*)(Params...), std::enable_if_t<std::is_constructible<D, device_t &, const char *, Ret (T::*)(Params...), const char *>::value> > { using type = T; }; template <typename D, typename T, typename Ret, typename... Params> -struct rw_device_class<D, Ret (T::*)(Params...) const, std::enable_if_t<std::is_constructible<D, Ret (T::*)(Params...) const, const char *, const char *, T *>::value> > { using type = T; }; +struct rw_device_class<D, Ret (T::*)(Params...) const, std::enable_if_t<std::is_constructible<D, device_t &, const char *, Ret (T::*)(Params...) const, const char *>::value> > { using type = T; }; template <typename D, typename T, typename Ret, typename... Params> -struct rw_device_class<D, Ret (*)(T &, Params...), std::enable_if_t<std::is_constructible<D, Ret (*)(T &, Params...), const char *, const char *, T *>::value> > { using type = T; }; - -template <typename D, typename T> using rw_device_class_t = typename rw_device_class <D, T>::type; - -template <typename T> -inline read8_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8_delegate, std::remove_reference_t<T> > *obj) -{ return read8_delegate(func, name, tag, obj); } -template <typename T> -inline read16_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16_delegate, std::remove_reference_t<T> > *obj) -{ return read16_delegate(func, name, tag, obj); } -template <typename T> -inline read32_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32_delegate, std::remove_reference_t<T> > *obj) -{ return read32_delegate(func, name, tag, obj); } -template <typename T> -inline read64_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64_delegate, std::remove_reference_t<T> > *obj) -{ return read64_delegate(func, name, tag, obj); } - -template <typename T> -inline write8_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8_delegate, std::remove_reference_t<T> > *obj) -{ return write8_delegate(func, name, tag, obj); } -template <typename T> -inline write16_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16_delegate, std::remove_reference_t<T> > *obj) -{ return write16_delegate(func, name, tag, obj); } -template <typename T> -inline write32_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32_delegate, std::remove_reference_t<T> > *obj) -{ return write32_delegate(func, name, tag, obj); } -template <typename T> -inline write64_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64_delegate, std::remove_reference_t<T> > *obj) -{ return write64_delegate(func, name, tag, obj); } - - -template <typename T> -inline read8m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8m_delegate, std::remove_reference_t<T> > *obj) -{ return read8m_delegate(func, name, tag, obj); } -template <typename T> -inline read16m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16m_delegate, std::remove_reference_t<T> > *obj) -{ return read16m_delegate(func, name, tag, obj); } -template <typename T> -inline read32m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32m_delegate, std::remove_reference_t<T> > *obj) -{ return read32m_delegate(func, name, tag, obj); } -template <typename T> -inline read64m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64m_delegate, std::remove_reference_t<T> > *obj) -{ return read64m_delegate(func, name, tag, obj); } - -template <typename T> -inline write8m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8m_delegate, std::remove_reference_t<T> > *obj) -{ return write8m_delegate(func, name, tag, obj); } -template <typename T> -inline write16m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16m_delegate, std::remove_reference_t<T> > *obj) -{ return write16m_delegate(func, name, tag, obj); } -template <typename T> -inline write32m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32m_delegate, std::remove_reference_t<T> > *obj) -{ return write32m_delegate(func, name, tag, obj); } -template <typename T> -inline write64m_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64m_delegate, std::remove_reference_t<T> > *obj) -{ return write64m_delegate(func, name, tag, obj); } - - -template <typename T> -inline read8s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8s_delegate, std::remove_reference_t<T> > *obj) -{ return read8s_delegate(func, name, tag, obj); } -template <typename T> -inline read16s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16s_delegate, std::remove_reference_t<T> > *obj) -{ return read16s_delegate(func, name, tag, obj); } -template <typename T> -inline read32s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32s_delegate, std::remove_reference_t<T> > *obj) -{ return read32s_delegate(func, name, tag, obj); } -template <typename T> -inline read64s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64s_delegate, std::remove_reference_t<T> > *obj) -{ return read64s_delegate(func, name, tag, obj); } - -template <typename T> -inline write8s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8s_delegate, std::remove_reference_t<T> > *obj) -{ return write8s_delegate(func, name, tag, obj); } -template <typename T> -inline write16s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16s_delegate, std::remove_reference_t<T> > *obj) -{ return write16s_delegate(func, name, tag, obj); } -template <typename T> -inline write32s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32s_delegate, std::remove_reference_t<T> > *obj) -{ return write32s_delegate(func, name, tag, obj); } -template <typename T> -inline write64s_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64s_delegate, std::remove_reference_t<T> > *obj) -{ return write64s_delegate(func, name, tag, obj); } - - -template <typename T> -inline read8sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8sm_delegate, std::remove_reference_t<T> > *obj) -{ return read8sm_delegate(func, name, tag, obj); } -template <typename T> -inline read16sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16sm_delegate, std::remove_reference_t<T> > *obj) -{ return read16sm_delegate(func, name, tag, obj); } -template <typename T> -inline read32sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32sm_delegate, std::remove_reference_t<T> > *obj) -{ return read32sm_delegate(func, name, tag, obj); } -template <typename T> -inline read64sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64sm_delegate, std::remove_reference_t<T> > *obj) -{ return read64sm_delegate(func, name, tag, obj); } - -template <typename T> -inline write8sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8sm_delegate, std::remove_reference_t<T> > *obj) -{ return write8sm_delegate(func, name, tag, obj); } -template <typename T> -inline write16sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16sm_delegate, std::remove_reference_t<T> > *obj) -{ return write16sm_delegate(func, name, tag, obj); } -template <typename T> -inline write32sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32sm_delegate, std::remove_reference_t<T> > *obj) -{ return write32sm_delegate(func, name, tag, obj); } -template <typename T> -inline write64sm_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64sm_delegate, std::remove_reference_t<T> > *obj) -{ return write64sm_delegate(func, name, tag, obj); } - - -template <typename T> -inline read8mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8mo_delegate, std::remove_reference_t<T> > *obj) -{ return read8mo_delegate(func, name, tag, obj); } -template <typename T> -inline read16mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16mo_delegate, std::remove_reference_t<T> > *obj) -{ return read16mo_delegate(func, name, tag, obj); } -template <typename T> -inline read32mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32mo_delegate, std::remove_reference_t<T> > *obj) -{ return read32mo_delegate(func, name, tag, obj); } -template <typename T> -inline read64mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64mo_delegate, std::remove_reference_t<T> > *obj) -{ return read64mo_delegate(func, name, tag, obj); } - -template <typename T> -inline write8mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8mo_delegate, std::remove_reference_t<T> > *obj) -{ return write8mo_delegate(func, name, tag, obj); } -template <typename T> -inline write16mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16mo_delegate, std::remove_reference_t<T> > *obj) -{ return write16mo_delegate(func, name, tag, obj); } -template <typename T> -inline write32mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32mo_delegate, std::remove_reference_t<T> > *obj) -{ return write32mo_delegate(func, name, tag, obj); } -template <typename T> -inline write64mo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64mo_delegate, std::remove_reference_t<T> > *obj) -{ return write64mo_delegate(func, name, tag, obj); } +struct rw_device_class<D, Ret (*)(T &, Params...), std::enable_if_t<std::is_constructible<D, device_t &, const char *, Ret (*)(T &, Params...), const char *>::value> > { using type = T; }; + +template <typename D, typename T> using rw_device_class_t = typename rw_device_class<D, T>::type; + +template <typename T, typename Enable = void> struct rw_delegate_type; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8_delegate, std::remove_reference_t<T> > > > { using type = read8_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16_delegate, std::remove_reference_t<T> > > > { using type = read16_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32_delegate, std::remove_reference_t<T> > > > { using type = read32_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64_delegate, std::remove_reference_t<T> > > > { using type = read64_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8m_delegate, std::remove_reference_t<T> > > > { using type = read8m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16m_delegate, std::remove_reference_t<T> > > > { using type = read16m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32m_delegate, std::remove_reference_t<T> > > > { using type = read32m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64m_delegate, std::remove_reference_t<T> > > > { using type = read64m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8s_delegate, std::remove_reference_t<T> > > > { using type = read8s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16s_delegate, std::remove_reference_t<T> > > > { using type = read16s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32s_delegate, std::remove_reference_t<T> > > > { using type = read32s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64s_delegate, std::remove_reference_t<T> > > > { using type = read64s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8sm_delegate, std::remove_reference_t<T> > > > { using type = read8sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16sm_delegate, std::remove_reference_t<T> > > > { using type = read16sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32sm_delegate, std::remove_reference_t<T> > > > { using type = read32sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64sm_delegate, std::remove_reference_t<T> > > > { using type = read64sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8mo_delegate, std::remove_reference_t<T> > > > { using type = read8mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16mo_delegate, std::remove_reference_t<T> > > > { using type = read16mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32mo_delegate, std::remove_reference_t<T> > > > { using type = read32mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64mo_delegate, std::remove_reference_t<T> > > > { using type = read64mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read8smo_delegate, std::remove_reference_t<T> > > > { using type = read8smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read16smo_delegate, std::remove_reference_t<T> > > > { using type = read16smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read32smo_delegate, std::remove_reference_t<T> > > > { using type = read32smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<read64smo_delegate, std::remove_reference_t<T> > > > { using type = read64smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8_delegate, std::remove_reference_t<T> > > > { using type = write8_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16_delegate, std::remove_reference_t<T> > > > { using type = write16_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32_delegate, std::remove_reference_t<T> > > > { using type = write32_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64_delegate, std::remove_reference_t<T> > > > { using type = write64_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8m_delegate, std::remove_reference_t<T> > > > { using type = write8m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16m_delegate, std::remove_reference_t<T> > > > { using type = write16m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32m_delegate, std::remove_reference_t<T> > > > { using type = write32m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64m_delegate, std::remove_reference_t<T> > > > { using type = write64m_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8s_delegate, std::remove_reference_t<T> > > > { using type = write8s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16s_delegate, std::remove_reference_t<T> > > > { using type = write16s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32s_delegate, std::remove_reference_t<T> > > > { using type = write32s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64s_delegate, std::remove_reference_t<T> > > > { using type = write64s_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8sm_delegate, std::remove_reference_t<T> > > > { using type = write8sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16sm_delegate, std::remove_reference_t<T> > > > { using type = write16sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32sm_delegate, std::remove_reference_t<T> > > > { using type = write32sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64sm_delegate, std::remove_reference_t<T> > > > { using type = write64sm_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8mo_delegate, std::remove_reference_t<T> > > > { using type = write8mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16mo_delegate, std::remove_reference_t<T> > > > { using type = write16mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32mo_delegate, std::remove_reference_t<T> > > > { using type = write32mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64mo_delegate, std::remove_reference_t<T> > > > { using type = write64mo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write8smo_delegate, std::remove_reference_t<T> > > > { using type = write8smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write16smo_delegate, std::remove_reference_t<T> > > > { using type = write16smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write32smo_delegate, std::remove_reference_t<T> > > > { using type = write32smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> struct rw_delegate_type<T, void_t<rw_device_class_t<write64smo_delegate, std::remove_reference_t<T> > > > { using type = write64smo_delegate; using device_class = rw_device_class_t<type, std::remove_reference_t<T> >; }; +template <typename T> using rw_delegate_type_t = typename rw_delegate_type<T>::type; +template <typename T> using rw_delegate_device_class_t = typename rw_delegate_type<T>::device_class; template <typename T> -inline read8smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read8smo_delegate, std::remove_reference_t<T> > *obj) -{ return read8smo_delegate(func, name, tag, obj); } -template <typename T> -inline read16smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read16smo_delegate, std::remove_reference_t<T> > *obj) -{ return read16smo_delegate(func, name, tag, obj); } -template <typename T> -inline read32smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read32smo_delegate, std::remove_reference_t<T> > *obj) -{ return read32smo_delegate(func, name, tag, obj); } -template <typename T> -inline read64smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<read64smo_delegate, std::remove_reference_t<T> > *obj) -{ return read64smo_delegate(func, name, tag, obj); } +inline rw_delegate_type_t<T> make_delegate(device_t &base, char const *tag, T &&func, char const *name) +{ return rw_delegate_type_t<T>(base, tag, std::forward<T>(func), name); } template <typename T> -inline write8smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write8smo_delegate, std::remove_reference_t<T> > *obj) -{ return write8smo_delegate(func, name, tag, obj); } -template <typename T> -inline write16smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write16smo_delegate, std::remove_reference_t<T> > *obj) -{ return write16smo_delegate(func, name, tag, obj); } -template <typename T> -inline write32smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write32smo_delegate, std::remove_reference_t<T> > *obj) -{ return write32smo_delegate(func, name, tag, obj); } -template <typename T> -inline write64smo_delegate make_delegate(T &&func, const char *name, const char *tag, rw_device_class_t<write64smo_delegate, std::remove_reference_t<T> > *obj) -{ return write64smo_delegate(func, name, tag, obj); } - +inline rw_delegate_type_t<T> make_delegate(rw_delegate_device_class_t<T> &object, T &&func, char const *name) +{ return rw_delegate_type_t<T>(object, std::forward<T>(func), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8_delegate, L, const char *>::value, read8_delegate> make_lr8_delegate(L l, const char *name) -{ return read8_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8_delegate, device_t &, L, const char *>::value, read8_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8m_delegate, L, const char *>::value, read8m_delegate> make_lr8_delegate(L l, const char *name) -{ return read8m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8m_delegate, device_t &, L, const char *>::value, read8m_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8s_delegate, L, const char *>::value, read8s_delegate> make_lr8_delegate(L l, const char *name) -{ return read8s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8s_delegate, device_t &, L, const char *>::value, read8s_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8sm_delegate, L, const char *>::value, read8sm_delegate> make_lr8_delegate(L l, const char *name) -{ return read8sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8sm_delegate, device_t &, L, const char *>::value, read8sm_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8mo_delegate, L, const char *>::value, read8mo_delegate> make_lr8_delegate(L l, const char *name) -{ return read8mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8mo_delegate, device_t &, L, const char *>::value, read8mo_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read8smo_delegate, L, const char *>::value, read8smo_delegate> make_lr8_delegate(L l, const char *name) -{ return read8smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read8smo_delegate, device_t &, L, const char *>::value, read8smo_delegate> make_lr8_delegate(device_t &owner, L &&l, const char *name) +{ return read8smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16_delegate, L, const char *>::value, read16_delegate> make_lr16_delegate(L l, const char *name) -{ return read16_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16_delegate, device_t &, L, const char *>::value, read16_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16m_delegate, L, const char *>::value, read16m_delegate> make_lr16_delegate(L l, const char *name) -{ return read16m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16m_delegate, device_t &, L, const char *>::value, read16m_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16s_delegate, L, const char *>::value, read16s_delegate> make_lr16_delegate(L l, const char *name) -{ return read16s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16s_delegate, device_t &, L, const char *>::value, read16s_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16sm_delegate, L, const char *>::value, read16sm_delegate> make_lr16_delegate(L l, const char *name) -{ return read16sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16sm_delegate, device_t &, L, const char *>::value, read16sm_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16mo_delegate, L, const char *>::value, read16mo_delegate> make_lr16_delegate(L l, const char *name) -{ return read16mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16mo_delegate, device_t &, L, const char *>::value, read16mo_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read16smo_delegate, L, const char *>::value, read16smo_delegate> make_lr16_delegate(L l, const char *name) -{ return read16smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read16smo_delegate, device_t &, L, const char *>::value, read16smo_delegate> make_lr16_delegate(device_t &owner, L &&l, const char *name) +{ return read16smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32_delegate, L, const char *>::value, read32_delegate> make_lr32_delegate(L l, const char *name) -{ return read32_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32_delegate, device_t &, L, const char *>::value, read32_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32m_delegate, L, const char *>::value, read32m_delegate> make_lr32_delegate(L l, const char *name) -{ return read32m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32m_delegate, device_t &, L, const char *>::value, read32m_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32s_delegate, L, const char *>::value, read32s_delegate> make_lr32_delegate(L l, const char *name) -{ return read32s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32s_delegate, device_t &, L, const char *>::value, read32s_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32sm_delegate, L, const char *>::value, read32sm_delegate> make_lr32_delegate(L l, const char *name) -{ return read32sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32sm_delegate, device_t &, L, const char *>::value, read32sm_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32mo_delegate, L, const char *>::value, read32mo_delegate> make_lr32_delegate(L l, const char *name) -{ return read32mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32mo_delegate, device_t &, L, const char *>::value, read32mo_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read32smo_delegate, L, const char *>::value, read32smo_delegate> make_lr32_delegate(L l, const char *name) -{ return read32smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read32smo_delegate, device_t &, L, const char *>::value, read32smo_delegate> make_lr32_delegate(device_t &owner, L &&l, const char *name) +{ return read32smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64_delegate, L, const char *>::value, read64_delegate> make_lr64_delegate(L l, const char *name) -{ return read64_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64_delegate, device_t &, L, const char *>::value, read64_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64m_delegate, L, const char *>::value, read64m_delegate> make_lr64_delegate(L l, const char *name) -{ return read64m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64m_delegate, device_t &, L, const char *>::value, read64m_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64s_delegate, L, const char *>::value, read64s_delegate> make_lr64_delegate(L l, const char *name) -{ return read64s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64s_delegate, device_t &, L, const char *>::value, read64s_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64sm_delegate, L, const char *>::value, read64sm_delegate> make_lr64_delegate(L l, const char *name) -{ return read64sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64sm_delegate, device_t &, L, const char *>::value, read64sm_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64mo_delegate, L, const char *>::value, read64mo_delegate> make_lr64_delegate(L l, const char *name) -{ return read64mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64mo_delegate, device_t &, L, const char *>::value, read64mo_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<read64smo_delegate, L, const char *>::value, read64smo_delegate> make_lr64_delegate(L l, const char *name) -{ return read64smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<read64smo_delegate, device_t &, L, const char *>::value, read64smo_delegate> make_lr64_delegate(device_t &owner, L &&l, const char *name) +{ return read64smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8_delegate, L, const char *>::value, write8_delegate> make_lw8_delegate(L l, const char *name) -{ return write8_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8_delegate, device_t &, L, const char *>::value, write8_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8m_delegate, L, const char *>::value, write8m_delegate> make_lw8_delegate(L l, const char *name) -{ return write8m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8m_delegate, device_t &, L, const char *>::value, write8m_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8s_delegate, L, const char *>::value, write8s_delegate> make_lw8_delegate(L l, const char *name) -{ return write8s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8s_delegate, device_t &, L, const char *>::value, write8s_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8sm_delegate, L, const char *>::value, write8sm_delegate> make_lw8_delegate(L l, const char *name) -{ return write8sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8sm_delegate, device_t &, L, const char *>::value, write8sm_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8mo_delegate, L, const char *>::value, write8mo_delegate> make_lw8_delegate(L l, const char *name) -{ return write8mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8mo_delegate, device_t &, L, const char *>::value, write8mo_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write8smo_delegate, L, const char *>::value, write8smo_delegate> make_lw8_delegate(L l, const char *name) -{ return write8smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write8smo_delegate, device_t &, L, const char *>::value, write8smo_delegate> make_lw8_delegate(device_t &owner, L &&l, const char *name) +{ return write8smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16_delegate, L, const char *>::value, write16_delegate> make_lw16_delegate(L l, const char *name) -{ return write16_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16_delegate, device_t &, L, const char *>::value, write16_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16m_delegate, L, const char *>::value, write16m_delegate> make_lw16_delegate(L l, const char *name) -{ return write16m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16m_delegate, device_t &, L, const char *>::value, write16m_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16s_delegate, L, const char *>::value, write16s_delegate> make_lw16_delegate(L l, const char *name) -{ return write16s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16s_delegate, device_t &, L, const char *>::value, write16s_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16sm_delegate, L, const char *>::value, write16sm_delegate> make_lw16_delegate(L l, const char *name) -{ return write16sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16sm_delegate, device_t &, L, const char *>::value, write16sm_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16mo_delegate, L, const char *>::value, write16mo_delegate> make_lw16_delegate(L l, const char *name) -{ return write16mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16mo_delegate, device_t &, L, const char *>::value, write16mo_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write16smo_delegate, L, const char *>::value, write16smo_delegate> make_lw16_delegate(L l, const char *name) -{ return write16smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write16smo_delegate, device_t &, L, const char *>::value, write16smo_delegate> make_lw16_delegate(device_t &owner, L &&l, const char *name) +{ return write16smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32_delegate, L, const char *>::value, write32_delegate> make_lw32_delegate(L l, const char *name) -{ return write32_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32_delegate, device_t &, L, const char *>::value, write32_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32m_delegate, L, const char *>::value, write32m_delegate> make_lw32_delegate(L l, const char *name) -{ return write32m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32m_delegate, device_t &, L, const char *>::value, write32m_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32s_delegate, L, const char *>::value, write32s_delegate> make_lw32_delegate(L l, const char *name) -{ return write32s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32s_delegate, device_t &, L, const char *>::value, write32s_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32sm_delegate, L, const char *>::value, write32sm_delegate> make_lw32_delegate(L l, const char *name) -{ return write32sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32sm_delegate, device_t &, L, const char *>::value, write32sm_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32mo_delegate, L, const char *>::value, write32mo_delegate> make_lw32_delegate(L l, const char *name) -{ return write32mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32mo_delegate, device_t &, L, const char *>::value, write32mo_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write32smo_delegate, L, const char *>::value, write32smo_delegate> make_lw32_delegate(L l, const char *name) -{ return write32smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write32smo_delegate, device_t &, L, const char *>::value, write32smo_delegate> make_lw32_delegate(device_t &owner, L &&l, const char *name) +{ return write32smo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64_delegate, L, const char *>::value, write64_delegate> make_lw64_delegate(L l, const char *name) -{ return write64_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64_delegate, device_t &, L, const char *>::value, write64_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64m_delegate, L, const char *>::value, write64m_delegate> make_lw64_delegate(L l, const char *name) -{ return write64m_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64m_delegate, device_t &, L, const char *>::value, write64m_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64m_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64s_delegate, L, const char *>::value, write64s_delegate> make_lw64_delegate(L l, const char *name) -{ return write64s_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64s_delegate, device_t &, L, const char *>::value, write64s_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64s_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64sm_delegate, L, const char *>::value, write64sm_delegate> make_lw64_delegate(L l, const char *name) -{ return write64sm_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64sm_delegate, device_t &, L, const char *>::value, write64sm_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64sm_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64mo_delegate, L, const char *>::value, write64mo_delegate> make_lw64_delegate(L l, const char *name) -{ return write64mo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64mo_delegate, device_t &, L, const char *>::value, write64mo_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64mo_delegate(owner, std::forward<L>(l), name); } template <typename L> -inline std::enable_if_t<std::is_constructible<write64smo_delegate, L, const char *>::value, write64smo_delegate> make_lw64_delegate(L l, const char *name) -{ return write64smo_delegate(l, name); } +inline std::enable_if_t<std::is_constructible<write64smo_delegate, device_t &, L, const char *>::value, write64smo_delegate> make_lw64_delegate(device_t &owner, L &&l, const char *name) +{ return write64smo_delegate(owner, std::forward<L>(l), name); } @@ -1837,25 +1740,6 @@ private: #define DECLARE_READ64_MEMBER(name) u64 name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u64 mem_mask = 0xffffffffffffffffU) #define DECLARE_WRITE64_MEMBER(name) void name(ATTR_UNUSED address_space &space, ATTR_UNUSED offs_t offset, ATTR_UNUSED u64 data, ATTR_UNUSED u64 mem_mask = 0xffffffffffffffffU) -// device delegate macros -#define READ8_DELEGATE(_class, _member) read8_delegate(FUNC(_class::_member), this) -#define WRITE8_DELEGATE(_class, _member) write8_delegate(FUNC(_class::_member), this) -#define READ16_DELEGATE(_class, _member) read16_delegate(FUNC(_class::_member), this) -#define WRITE16_DELEGATE(_class, _member) write16_delegate(FUNC(_class::_member), this) -#define READ32_DELEGATE(_class, _member) read32_delegate(FUNC(_class::_member), this) -#define WRITE32_DELEGATE(_class, _member) write32_delegate(FUNC(_class::_member), this) -#define READ64_DELEGATE(_class, _member) read64_delegate(FUNC(_class::_member), this) -#define WRITE64_DELEGATE(_class, _member) write64_delegate(FUNC(_class::_member), this) - -#define READ8_DEVICE_DELEGATE(_device, _class, _member) read8_delegate(FUNC(_class::_member), (_class *)_device) -#define WRITE8_DEVICE_DELEGATE(_device, _class, _member) write8_delegate(FUNC(_class::_member), (_class *)_device) -#define READ16_DEVICE_DELEGATE(_device, _class, _member) read16_delegate(FUNC(_class::_member), (_class *)_device) -#define WRITE16_DEVICE_DELEGATE(_device, _class, _member) write16_delegate(FUNC(_class::_member), (_class *)_device) -#define READ32_DEVICE_DELEGATE(_device, _class, _member) read32_delegate(FUNC(_class::_member), (_class *)_device) -#define WRITE32_DEVICE_DELEGATE(_device, _class, _member) write32_delegate(FUNC(_class::_member), (_class *)_device) -#define READ64_DEVICE_DELEGATE(_device, _class, _member) read64_delegate(FUNC(_class::_member), (_class *)_device) -#define WRITE64_DEVICE_DELEGATE(_device, _class, _member) write64_delegate(FUNC(_class::_member), (_class *)_device) - // helper macro for merging data with the memory mask #define COMBINE_DATA(varptr) (*(varptr) = (*(varptr) & ~mem_mask) | (data & mem_mask)) diff --git a/src/emu/emumem_hedp.h b/src/emu/emumem_hedp.h index cba4877b20c..37b47747d61 100644 --- a/src/emu/emumem_hedp.h +++ b/src/emu/emumem_hedp.h @@ -11,7 +11,7 @@ public: using uX = typename emu::detail::handler_entry_size<Width>::uX; using inh = handler_entry_read_address<Width, AddrShift, Endian>; - handler_entry_read_delegate(address_space *space, READ delegate) : handler_entry_read_address<Width, AddrShift, Endian>(space, 0), m_delegate(delegate) {} + handler_entry_read_delegate(address_space *space, const READ &delegate) : handler_entry_read_address<Width, AddrShift, Endian>(space, 0), m_delegate(delegate) {} ~handler_entry_read_delegate() = default; uX read(offs_t offset, uX mem_mask) override; @@ -70,7 +70,7 @@ public: using uX = typename emu::detail::handler_entry_size<Width>::uX; using inh = handler_entry_write_address<Width, AddrShift, Endian>; - handler_entry_write_delegate(address_space *space, WRITE delegate) : handler_entry_write_address<Width, AddrShift, Endian>(space, 0), m_delegate(delegate) {} + handler_entry_write_delegate(address_space *space, const WRITE &delegate) : handler_entry_write_address<Width, AddrShift, Endian>(space, 0), m_delegate(delegate) {} ~handler_entry_write_delegate() = default; void write(offs_t offset, uX data, uX mem_mask) override; diff --git a/src/emu/emupal.cpp b/src/emu/emupal.cpp index 6d0955f3484..536eff6577d 100644 --- a/src/emu/emupal.cpp +++ b/src/emu/emupal.cpp @@ -21,83 +21,82 @@ DEFINE_DEVICE_TYPE(PALETTE, palette_device, "palette", "palette") palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, init_delegate &&init, u32 entries, u32 indirect) : palette_device(mconfig, tag, owner, 0U) { - set_entries(entries); - set_indirect_entries(indirect); - set_init(std::move(init)); + set_entries(entries, indirect); + m_init = std::move(init); } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, black_t, u32 entries) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_all_black), tag, this), entries) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_all_black)), entries) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_monochrome), tag, this), 2) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_monochrome)), 2) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_inv_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_monochrome_inverted), tag, this), 2) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_monochrome_inverted)), 2) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, mono_hi_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_monochrome_highlight), tag, this), 3) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_monochrome_highlight)), 3) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_rgb), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_rgb)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rbg_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_rbg), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_rbg)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, grb_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_grb), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_grb)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, gbr_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_gbr), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_gbr)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, brg_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_brg), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_brg)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_3b_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_3bit_bgr), tag, this), 8) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_3bit_bgr)), 8) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_555_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_rgb_555), tag, this), 32768) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_rgb_555)), 32768) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, grb_555_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_grb_555), tag, this), 32768) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_grb_555)), 32768) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_555_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_bgr_555), tag, this), 32768) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_bgr_555)), 32768) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_565_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_rgb_565), tag, this), 65536) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_rgb_565)), 65536) { } palette_device::palette_device(const machine_config &mconfig, const char *tag, device_t *owner, bgr_565_t) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_bgr_565), tag, this), 65536) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_bgr_565)), 65536) { } @@ -114,7 +113,7 @@ palette_device::palette_device(const machine_config &mconfig, const char *tag, d , m_endianness() , m_endianness_supplied(false) , m_prom_region(*this, finder_base::DUMMY_TAG) - , m_init() + , m_init(*this) , m_raw_to_rgb() { } @@ -495,7 +494,7 @@ void palette_device::write_indirect_ext(offs_t offset, u8 data) void palette_device::device_start() { // bind the init function - m_init.bind_relative_to(*owner()); + m_init.resolve(); // find the memory, if present const memory_share *share = memshare(tag()); diff --git a/src/emu/emupal.h b/src/emu/emupal.h index acc528110f1..9e6ffb62a9b 100644 --- a/src/emu/emupal.h +++ b/src/emu/emupal.h @@ -95,15 +95,14 @@ #pragma once +#include <type_traits> +#include <utility> + //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -class palette_device; -typedef device_delegate<void (palette_device &)> palette_init_delegate; - - // ======================> raw_to_rgb_converter class raw_to_rgb_converter @@ -271,31 +270,22 @@ public: template <typename T> palette_device(const machine_config &mconfig, const char *tag, device_t *owner, rgb_444_prom_t, T &®ion, u32 entries) - : palette_device(mconfig, tag, owner, init_delegate(FUNC(palette_device::palette_init_rgb_444_proms), tag, this), entries) + : palette_device(mconfig, tag, owner, init_delegate(*this, FUNC(palette_device::palette_init_rgb_444_proms)), entries) { set_prom_region(std::forward<T>(region)); } - // FIXME: these should be aware of current device for resolving the tag - template <class FunctionClass> - palette_device(const machine_config &mconfig, const char *tag, device_t *owner, void (FunctionClass::*init)(palette_device &), const char *name, u32 entries = 0U, u32 indirect = 0U) - : palette_device(mconfig, tag, owner, init_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)), entries, indirect) - { } - template <class FunctionClass> - palette_device(const machine_config &mconfig, const char *tag, device_t *owner, void (FunctionClass::*init)(palette_device &) const, const char *name, u32 entries = 0U, u32 indirect = 0U) - : palette_device(mconfig, tag, owner, init_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)), entries, indirect) - { } - template <class FunctionClass> - palette_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *devname, void (FunctionClass::*init)(palette_device &), const char *name, u32 entries = 0U, u32 indirect = 0U) - : palette_device(mconfig, tag, owner, init_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)), entries, indirect) - { } - template <class FunctionClass> - palette_device(const machine_config &mconfig, const char *tag, device_t *owner, const char *devname, void (FunctionClass::*init)(palette_device &) const, const char *name, u32 entries = 0U, u32 indirect = 0U) - : palette_device(mconfig, tag, owner, init_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)), entries, indirect) - { } + template <typename F> + palette_device(const machine_config &mconfig, const char *tag, device_t *owner, F &&init, std::enable_if_t<init_delegate::supports_callback<F>::value, const char *> name, u32 entries = 0U, u32 indirect = 0U) + : palette_device(mconfig, tag, owner, 0U) + { set_init(std::forward<F>(init), name).set_entries(entries, indirect); } + template <typename T, typename F> + palette_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&devname, F &&init, std::enable_if_t<init_delegate::supports_callback<F>::value, const char *> name, u32 entries = 0U, u32 indirect = 0U) + : palette_device(mconfig, tag, owner, 0U) + { set_init(std::forward<T>(devname), std::forward<F>(init), name).set_entries(entries, indirect); } // configuration - template <typename Object> void set_init(Object &&init) { m_init = std::forward<Object>(init); } + template <typename... T> palette_device &set_init(T &&... args) { m_init.set(std::forward<T>(args)...); return *this; } palette_device &set_format(raw_to_rgb_converter raw_to_rgb) { m_raw_to_rgb = raw_to_rgb; return *this; } palette_device &set_format(int bytes_per_entry, raw_to_rgb_converter::raw_to_rgb_func func, u32 entries); palette_device &set_format(rgb_332_t, u32 entries); @@ -347,28 +337,6 @@ public: palette_device &enable_hilights() { m_enable_hilights = true; return *this; } template <typename T> palette_device &set_prom_region(T &®ion) { m_prom_region.set_tag(std::forward<T>(region)); return *this; } - // FIXME: these should be aware of current device for resolving the tag - template <class FunctionClass> - void set_init(void (FunctionClass::*init)(palette_device &), const char *name) - { - m_init = init_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_init(void (FunctionClass::*init)(palette_device &) const, const char *name) - { - m_init = init_delegate(init, name, nullptr, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_init(const char *devname, void (FunctionClass::*init)(palette_device &), const char *name) - { - m_init = init_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } - template <class FunctionClass> - void set_init(const char *devname, void (FunctionClass::*init)(palette_device &) const, const char *name) - { - m_init = init_delegate(init, name, devname, static_cast<FunctionClass *>(nullptr)); - } - // palette RAM accessors memory_array &basemem() { return m_paletteram; } memory_array &extmem() { return m_paletteram_ext; } diff --git a/src/emu/ioport.cpp b/src/emu/ioport.cpp index 58161b78a83..7e064e27698 100644 --- a/src/emu/ioport.cpp +++ b/src/emu/ioport.cpp @@ -597,6 +597,8 @@ ioport_field::ioport_field(ioport_port &port, ioport_type type, ioport_value def m_flags(0), m_impulse(0), m_name(name), + m_read(port.device()), + m_write(port.device()), m_write_param(0), m_digital_value(false), m_min(0), @@ -608,6 +610,7 @@ ioport_field::ioport_field(ioport_port &port, ioport_type type, ioport_value def m_crosshair_scale(1.0), m_crosshair_offset(0), m_crosshair_altaxis(0), + m_crosshair_mapper(port.device()), m_full_turn_count(0), m_remap_table(nullptr), m_way(0) @@ -1329,9 +1332,9 @@ void ioport_field::expand_diplocation(const char *location, std::string &errorbu void ioport_field::init_live_state(analog_field *analog) { // resolve callbacks - m_read.bind_relative_to(device()); - m_write.bind_relative_to(device()); - m_crosshair_mapper.bind_relative_to(device()); + m_read.resolve(); + m_write.resolve(); + m_crosshair_mapper.resolve(); // allocate live state m_live = std::make_unique<ioport_field_live>(*this, analog); diff --git a/src/emu/ioport.h b/src/emu/ioport.h index df7d2ad026b..bb9a8f47830 100644 --- a/src/emu/ioport.h +++ b/src/emu/ioport.h @@ -1710,25 +1710,45 @@ ATTR_COLD void INPUT_PORTS_NAME(_name)(device_t &owner, ioport_list &portlist, s // read callbacks #define PORT_CUSTOM_MEMBER(_class, _member) \ - configurer.field_set_dynamic_read(ioport_field_read_delegate(&_class::_member, #_class "::" #_member, DEVICE_SELF, (_class *)nullptr)); + configurer.field_set_dynamic_read(ioport_field_read_delegate(owner, DEVICE_SELF, &_class::_member, #_class "::" #_member)); #define PORT_CUSTOM_DEVICE_MEMBER(_device, _class, _member) \ - configurer.field_set_dynamic_read(ioport_field_read_delegate(&_class::_member, #_class "::" #_member, _device, (_class *)nullptr)); + configurer.field_set_dynamic_read(ioport_field_read_delegate(owner, _device, &_class::_member, #_class "::" #_member)); // write callbacks #define PORT_CHANGED_MEMBER(_device, _class, _member, _param) \ - configurer.field_set_dynamic_write(ioport_field_write_delegate(&_class::_member, #_class "::" #_member, _device, (_class *)nullptr), (_param)); + configurer.field_set_dynamic_write(ioport_field_write_delegate(owner, _device, &_class::_member, #_class "::" #_member), (_param)); // input device handler #define PORT_READ_LINE_MEMBER(_class, _member) \ - configurer.field_set_dynamic_read(ioport_field_read_delegate([](_class &device)->ioport_value { return (device._member() & 1) ? ~ioport_value(0) : 0; } , #_class "::" #_member, DEVICE_SELF, (_class *)nullptr)); + configurer.field_set_dynamic_read( \ + ioport_field_read_delegate( \ + owner, \ + DEVICE_SELF, \ + static_cast<ioport_value (*)(_class &)>([] (_class &device) -> ioport_value { return (device._member() & 1) ? ~ioport_value(0) : 0; }), \ + #_class "::" #_member)); #define PORT_READ_LINE_DEVICE_MEMBER(_device, _class, _member) \ - configurer.field_set_dynamic_read(ioport_field_read_delegate([](_class &device)->ioport_value { return (device._member() & 1) ? ~ioport_value(0) : 0; } , #_class "::" #_member, _device, (_class *)nullptr)); + configurer.field_set_dynamic_read( \ + ioport_field_read_delegate( \ + owner, \ + _device, \ + static_cast<ioport_value (*)(_class &)>([] (_class &device) -> ioport_value { return (device._member() & 1) ? ~ioport_value(0) : 0; }), \ + #_class "::" #_member)); // output device handler #define PORT_WRITE_LINE_MEMBER(_class, _member) \ - configurer.field_set_dynamic_write(ioport_field_write_delegate([](_class &device, ioport_field &field, u32 param, ioport_value oldval, ioport_value newval) { device._member(newval); }, #_class "::" #_member, DEVICE_SELF, (_class *)nullptr)); + configurer.field_set_dynamic_write( \ + ioport_field_write_delegate( \ + owner, \ + DEVICE_SELF, \ + static_cast<void (*)(_class &, ioport_field &, u32, ioport_value, ioport_value)>([] (_class &device, ioport_field &field, u32 param, ioport_value oldval, ioport_value newval) { device._member(newval); }), \ + #_class "::" #_member)); #define PORT_WRITE_LINE_DEVICE_MEMBER(_device, _class, _member) \ - configurer.field_set_dynamic_write(ioport_field_write_delegate([](_class &device, ioport_field &field, u32 param, ioport_value oldval, ioport_value newval) { device._member(newval); }, #_class "::" #_member, _device, (_class *)nullptr)); + configurer.field_set_dynamic_write( \ + ioport_field_write_delegate( \ + owner, \ + _device, \ + static_cast<void (*)(_class &, ioport_field &, u32, ioport_value, ioport_value)>([] (_class &device, ioport_field &field, u32 param, ioport_value oldval, ioport_value newval) { device._member(newval); }), \ + #_class "::" #_member)); // dip switch definition #define PORT_DIPNAME(_mask, _default, _name) \ diff --git a/src/emu/screen.cpp b/src/emu/screen.cpp index a946fb22bd2..647bce77425 100644 --- a/src/emu/screen.cpp +++ b/src/emu/screen.cpp @@ -542,6 +542,8 @@ screen_device::screen_device(const machine_config &mconfig, const char *tag, dev , m_yoffset(0.0f) , m_xscale(1.0f) , m_yscale(1.0f) + , m_screen_update_ind16(*this) + , m_screen_update_rgb32(*this) , m_screen_vblank(*this) , m_scanline_cb(*this) , m_palette(*this, finder_base::DUMMY_TAG) @@ -700,8 +702,8 @@ std::pair<unsigned, unsigned> screen_device::physical_aspect() const void screen_device::device_resolve_objects() { // bind our handlers - m_screen_update_ind16.bind_relative_to(*owner()); - m_screen_update_rgb32.bind_relative_to(*owner()); + m_screen_update_ind16.resolve(); + m_screen_update_rgb32.resolve(); m_screen_vblank.resolve_safe(); m_scanline_cb.resolve(); diff --git a/src/emu/screen.h b/src/emu/screen.h index c43c5fe7278..3842a65b2e6 100644 --- a/src/emu/screen.h +++ b/src/emu/screen.h @@ -12,6 +12,7 @@ #pragma once +#include <type_traits> #include <utility> @@ -338,36 +339,29 @@ public: m_yoffset = yoffs; } - // FIXME: these should be aware of current device for resolving the tag - template <class FunctionClass> - void set_screen_update(u32 (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, const rectangle &), const char *name) + template <typename F> + std::enable_if_t<screen_update_ind16_delegate::supports_callback<F>::value> set_screen_update(F &&callback, const char *name) { - set_screen_update(screen_update_ind16_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_screen_update_ind16.set(std::forward<F>(callback), name); + m_screen_update_rgb32 = screen_update_rgb32_delegate(*this); } - template <class FunctionClass> - void set_screen_update(u32 (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, const rectangle &), const char *name) + template <typename F> + std::enable_if_t<screen_update_rgb32_delegate::supports_callback<F>::value> set_screen_update(F &&callback, const char *name) { - set_screen_update(screen_update_rgb32_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_screen_update_ind16 = screen_update_ind16_delegate(*this); + m_screen_update_rgb32.set(std::forward<F>(callback), name); } - template <class FunctionClass> - void set_screen_update(const char *devname, u32 (FunctionClass::*callback)(screen_device &, bitmap_ind16 &, const rectangle &), const char *name) + template <typename T, typename F> + std::enable_if_t<screen_update_ind16_delegate::supports_callback<F>::value> set_screen_update(T &&target, F &&callback, const char *name) { - set_screen_update(screen_update_ind16_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); + m_screen_update_ind16.set(std::forward<T>(target), std::forward<F>(callback), name); + m_screen_update_rgb32 = screen_update_rgb32_delegate(*this); } - template <class FunctionClass> - void set_screen_update(const char *devname, u32 (FunctionClass::*callback)(screen_device &, bitmap_rgb32 &, const rectangle &), const char *name) + template <typename T, typename F> + std::enable_if_t<screen_update_rgb32_delegate::supports_callback<F>::value> set_screen_update(T &&target, F &&callback, const char *name) { - set_screen_update(screen_update_rgb32_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - void set_screen_update(screen_update_ind16_delegate callback) - { - m_screen_update_ind16 = callback; - m_screen_update_rgb32 = screen_update_rgb32_delegate(); - } - void set_screen_update(screen_update_rgb32_delegate callback) - { - m_screen_update_ind16 = screen_update_ind16_delegate(); - m_screen_update_rgb32 = callback; + m_screen_update_ind16 = screen_update_ind16_delegate(*this); + m_screen_update_rgb32.set(std::forward<T>(target), std::forward<F>(callback), name); } auto screen_vblank() { return m_screen_vblank.bind(); } diff --git a/src/emu/tilemap.cpp b/src/emu/tilemap.cpp index 083b4b4ef5a..44360a2a486 100644 --- a/src/emu/tilemap.cpp +++ b/src/emu/tilemap.cpp @@ -336,7 +336,9 @@ inline void tilemap_t::scanline_draw_masked_rgb32_alpha(u32 *dest, const u16 *so // tilemap_t - constructor //------------------------------------------------- -tilemap_t::tilemap_t() +tilemap_t::tilemap_t(device_t &owner) + : m_mapper(owner) + , m_tile_get_info(owner) { // until init() is called, data is floating; this is deliberate } @@ -346,11 +348,18 @@ tilemap_t::tilemap_t() // init - initialize the tilemap //------------------------------------------------- -tilemap_t &tilemap_t::init(tilemap_manager &manager, device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_mapper_delegate mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows) +void tilemap_t::init_common( + tilemap_manager &manager, + device_gfx_interface &decoder, + tilemap_get_info_delegate tile_get_info, + u16 tilewidth, + u16 tileheight, + u32 cols, + u32 rows) { // populate managers and devices m_manager = &manager; - m_device = dynamic_cast<tilemap_device *>(this); + m_device = dynamic_cast<device_t *>(this); m_palette = &decoder.palette(); m_next = nullptr; m_user_data = nullptr; @@ -363,9 +372,6 @@ tilemap_t &tilemap_t::init(tilemap_manager &manager, device_gfx_interface &decod m_width = cols * tilewidth; m_height = rows * tileheight; - // populate logical <-> memory mappings - m_mapper = mapper; - // initialize tile information geters m_tile_get_info = tile_get_info; @@ -426,6 +432,52 @@ tilemap_t &tilemap_t::init(tilemap_manager &manager, device_gfx_interface &decod // reset everything after a load machine().save().register_postload(save_prepost_delegate(FUNC(tilemap_t::postload), this)); +} + +tilemap_t &tilemap_t::init( + tilemap_manager &manager, + device_gfx_interface &decoder, + tilemap_get_info_delegate tile_get_info, + tilemap_mapper_delegate mapper, + u16 tilewidth, + u16 tileheight, + u32 cols, + u32 rows) +{ + // populate logical <-> memory mappings + m_mapper = mapper; + + init_common(manager, decoder, tile_get_info, tilewidth, tileheight, cols, rows); + + return *this; +} + +tilemap_t &tilemap_t::init( + tilemap_manager &manager, + device_gfx_interface &decoder, + tilemap_get_info_delegate tile_get_info, + tilemap_standard_mapper mapper, + u16 tilewidth, + u16 tileheight, + u32 cols, + u32 rows) +{ + // populate logical <-> memory mappings + switch (mapper) + { + case TILEMAP_SCAN_ROWS: m_mapper.set(*this, FUNC(tilemap_t::scan_rows)); break; + case TILEMAP_SCAN_ROWS_FLIP_X: m_mapper.set(*this, FUNC(tilemap_t::scan_rows_flip_x)); break; + case TILEMAP_SCAN_ROWS_FLIP_Y: m_mapper.set(*this, FUNC(tilemap_t::scan_rows_flip_y)); break; + case TILEMAP_SCAN_ROWS_FLIP_XY: m_mapper.set(*this, FUNC(tilemap_t::scan_rows_flip_xy)); break; + case TILEMAP_SCAN_COLS: m_mapper.set(*this, FUNC(tilemap_t::scan_cols)); break; + case TILEMAP_SCAN_COLS_FLIP_X: m_mapper.set(*this, FUNC(tilemap_t::scan_cols_flip_x)); break; + case TILEMAP_SCAN_COLS_FLIP_Y: m_mapper.set(*this, FUNC(tilemap_t::scan_cols_flip_y)); break; + case TILEMAP_SCAN_COLS_FLIP_XY: m_mapper.set(*this, FUNC(tilemap_t::scan_cols_flip_xy)); break; + default: throw emu_fatalerror("Tilemap init unknown mapper %d", mapper); + } + + init_common(manager, decoder, tile_get_info, tilewidth, tileheight, cols, rows); + return *this; } @@ -1529,14 +1581,13 @@ tilemap_manager::tilemap_manager(running_machine &machine) tilemap_manager::~tilemap_manager() { - // detach all device tilemaps since they will be destroyed - // as subdevices elsewhere + // detach all device tilemaps since they will be destroyed as subdevices elsewhere bool found = true; while (found) { found = false; for (tilemap_t &tmap : m_tilemap_list) - if (tmap.device() != nullptr) + if (tmap.m_device) { found = true; m_tilemap_list.detach(tmap); @@ -1553,28 +1604,16 @@ tilemap_manager::~tilemap_manager() tilemap_t &tilemap_manager::create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_mapper_delegate mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated) { - if (allocated == nullptr) - allocated = global_alloc(tilemap_t); + if (!allocated) + allocated = global_alloc(tilemap_t)(machine().root_device()); return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, mapper, tilewidth, tileheight, cols, rows)); } tilemap_t &tilemap_manager::create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_standard_mapper mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated) { - if (allocated == nullptr) - allocated = global_alloc(tilemap_t); - - switch (mapper) - { - case TILEMAP_SCAN_ROWS :return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_rows), allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_ROWS_FLIP_X:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_rows_flip_x), allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_ROWS_FLIP_Y:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_rows_flip_y), allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_ROWS_FLIP_XY:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_rows_flip_xy),allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_COLS:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_cols),allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_COLS_FLIP_X:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_cols_flip_x),allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_COLS_FLIP_Y:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_cols_flip_y),allocated), tilewidth, tileheight, cols, rows)); - case TILEMAP_SCAN_COLS_FLIP_XY:return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, tilemap_mapper_delegate(FUNC(tilemap_t::scan_cols_flip_xy),allocated), tilewidth, tileheight, cols, rows)); - default: throw emu_fatalerror("Tilemap manager create unknown mapper %d", mapper); - } + if (!allocated) + allocated = global_alloc(tilemap_t)(machine().root_device()); + return m_tilemap_list.append(allocated->init(*this, decoder, tile_get_info, mapper, tilewidth, tileheight, cols, rows)); } @@ -1615,16 +1654,19 @@ DEFINE_DEVICE_TYPE(TILEMAP, tilemap_device, "tilemap", "Tilemap") //------------------------------------------------- tilemap_device::tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, TILEMAP, tag, owner, clock), - m_gfxdecode(*this, finder_base::DUMMY_TAG), - m_standard_mapper(TILEMAP_STANDARD_COUNT), - m_bytes_per_entry(0), - m_tile_width(8), - m_tile_height(8), - m_num_columns(64), - m_num_rows(64), - m_transparent_pen_set(false), - m_transparent_pen(0) + : device_t(mconfig, TILEMAP, tag, owner, clock) + , tilemap_t(static_cast<device_t &>(*this)) + , m_gfxdecode(*this, finder_base::DUMMY_TAG) + , m_get_info(*this) + , m_standard_mapper(TILEMAP_STANDARD_COUNT) + , m_mapper(*this) + , m_bytes_per_entry(0) + , m_tile_width(8) + , m_tile_height(8) + , m_num_columns(64) + , m_num_rows(64) + , m_transparent_pen_set(false) + , m_transparent_pen(0) { } @@ -1719,14 +1761,14 @@ void tilemap_device::device_start() throw device_missing_dependencies(); // bind our callbacks - m_get_info.bind_relative_to(*owner()); - m_mapper.bind_relative_to(*owner()); + m_get_info.resolve(); + m_mapper.resolve(); // allocate the tilemap if (m_standard_mapper == TILEMAP_STANDARD_COUNT) - machine().tilemap().create(*m_gfxdecode, m_get_info, m_mapper, m_tile_width, m_tile_height, m_num_columns, m_num_rows, this); + machine().tilemap().create(*m_gfxdecode, m_get_info, m_mapper, m_tile_width, m_tile_height, m_num_columns, m_num_rows, *this); else - machine().tilemap().create(*m_gfxdecode, m_get_info, m_standard_mapper, m_tile_width, m_tile_height, m_num_columns, m_num_rows, this); + machine().tilemap().create(*m_gfxdecode, m_get_info, m_standard_mapper, m_tile_width, m_tile_height, m_num_columns, m_num_rows, *this); // find the memory, if present const memory_share *share = memshare(tag()); diff --git a/src/emu/tilemap.h b/src/emu/tilemap.h index a116f019c6c..e9ed1a3b66d 100644 --- a/src/emu/tilemap.h +++ b/src/emu/tilemap.h @@ -303,6 +303,10 @@ #pragma once +#include <type_traits> +#include <utility> +#include <vector> + //************************************************************************** // CONSTANTS @@ -419,17 +423,19 @@ class tilemap_t // maximum index in each array static const pen_t MAX_PEN_TO_FLAGS = 256; + void init_common(tilemap_manager &manager, device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, u16 tilewidth, u16 tileheight, u32 cols, u32 rows); + protected: // tilemap_manager controls our allocations - tilemap_t(); + tilemap_t(device_t &owner); virtual ~tilemap_t(); tilemap_t &init(tilemap_manager &manager, device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_mapper_delegate mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows); + tilemap_t &init(tilemap_manager &manager, device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_standard_mapper mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows); public: // getters running_machine &machine() const; - tilemap_device *device() const { return m_device; } device_palette_interface &palette() const { return *m_palette; } device_gfx_interface &decoder() const { return *m_tileinfo.decoder; } @@ -554,7 +560,7 @@ private: // managers and devices tilemap_manager * m_manager; // reference to the owning manager - tilemap_device * m_device; // pointer to our owning device + device_t * m_device; // pointer to our owning device device_palette_interface * m_palette; // palette used for drawing tilemap_t * m_next; // pointer to next tilemap void * m_user_data; // user data value @@ -621,8 +627,12 @@ public: running_machine &machine() const { return m_machine; } // tilemap creation - tilemap_t &create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_mapper_delegate mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated = nullptr); - tilemap_t &create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_standard_mapper mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated = nullptr); + template <typename T, typename U> + tilemap_t &create(device_gfx_interface &decoder, T &&tile_get_info, U &&mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows) + { return create(decoder, std::forward<T>(tile_get_info), std::forward<U>(mapper), tilewidth, tileheight, cols, rows, nullptr); } + template <typename T, typename U, class V> + std::enable_if_t<std::is_base_of<device_t, V>::value, tilemap_t &> create(device_gfx_interface &decoder, T &&tile_get_info, U &&mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, V &allocated) + { return create(decoder, std::forward<T>(tile_get_info), std::forward<U>(mapper), tilewidth, tileheight, cols, rows, &static_cast<tilemap_t &>(allocated)); } // tilemap list information tilemap_t *find(int index) { return m_tilemap_list.find(index); } @@ -633,6 +643,10 @@ public: void set_flip_all(u32 attributes); private: + // tilemap creation + tilemap_t &create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_mapper_delegate mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated); + tilemap_t &create(device_gfx_interface &decoder, tilemap_get_info_delegate tile_get_info, tilemap_standard_mapper mapper, u16 tilewidth, u16 tileheight, u32 cols, u32 rows, tilemap_t *allocated); + // allocate an instance index int alloc_instance() { return ++m_instance; } @@ -689,29 +703,28 @@ public: template <typename T> void set_gfxdecode(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } void set_bytes_per_entry(int bpe) { m_bytes_per_entry = bpe; } - void set_info_callback(tilemap_get_info_delegate tile_get_info) { m_get_info = tile_get_info; } - template <class FunctionClass> void set_info_callback(const char *devname, void (FunctionClass::*callback)(tilemap_t &, tile_data &, tilemap_memory_index), const char *name) - { - set_info_callback(tilemap_get_info_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_info_callback(void (FunctionClass::*callback)(tilemap_t &, tile_data &, tilemap_memory_index), const char *name) - { - set_info_callback(tilemap_get_info_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_info_callback(T &&... args) { m_get_info.set(std::forward<T>(args)...); } - template <class FunctionClass> void set_layout(tilemap_memory_index (FunctionClass::*callback)(u32, u32, u32, u32), const char *name, u32 columns, u32 rows) + void set_layout(tilemap_standard_mapper mapper, u32 columns, u32 rows) { - set_layout(tilemap_mapper_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), columns, rows); - } - - void set_layout(tilemap_standard_mapper mapper, u32 columns, u32 rows) { + assert(TILEMAP_STANDARD_COUNT > mapper); m_standard_mapper = mapper; m_num_columns = columns; m_num_rows = rows; } - void set_layout(tilemap_mapper_delegate mapper, u32 columns, u32 rows) { + template <typename F> + void set_layout(F &&callback, const char *name, u32 columns, u32 rows) + { + m_standard_mapper = TILEMAP_STANDARD_COUNT; + m_mapper.set(std::forward<F>(callback), name); + m_num_columns = columns; + m_num_rows = rows; + } + template <typename T, typename F> + void set_layout(T &&target, F &&callback, const char *name, u32 columns, u32 rows) + { m_standard_mapper = TILEMAP_STANDARD_COUNT; - m_mapper = mapper; + m_mapper.set(std::forward<T>(target), std::forward<F>(callback), name); m_num_columns = columns; m_num_rows = rows; } diff --git a/src/lib/util/delegate.h b/src/lib/util/delegate.h index 6b3101f5afa..39cc5eb3d00 100644 --- a/src/lib/util/delegate.h +++ b/src/lib/util/delegate.h @@ -79,9 +79,9 @@ // standard C++ includes #include <cstring> +#include <functional> #include <typeinfo> #include <utility> -#include <functional> //************************************************************************** @@ -310,7 +310,7 @@ public: // comparison helpers bool operator==(const delegate_mfp &rhs) const { return (m_function == rhs.m_function && m_this_delta == rhs.m_this_delta); } - bool isnull() const { return (m_function == 0 && m_this_delta==0); } + bool isnull() const { return (m_function == 0 && m_this_delta == 0); } // getters static delegate_generic_class *real_object(delegate_generic_class *original) { return original; } @@ -412,7 +412,6 @@ class delegate_base public: // define our traits template <class FunctionClass> using traits = delegate_traits<FunctionClass, ReturnType, Params...>; - using functional_type = std::function<ReturnType (Params...)>; using generic_static_func = typename traits<delegate_generic_class>::static_func_type; typedef MEMBER_ABI generic_static_func generic_member_func; @@ -422,7 +421,6 @@ public: , m_object(nullptr) , m_latebinder(nullptr) , m_raw_function(nullptr) - , m_std_func(nullptr) { } // copy constructor @@ -432,7 +430,6 @@ public: , m_latebinder(src.m_latebinder) , m_raw_function(src.m_raw_function) , m_raw_mfp(src.m_raw_mfp) - , m_std_func(src.m_std_func) { bind(src.object()); } @@ -444,7 +441,6 @@ public: , m_latebinder(src.m_latebinder) , m_raw_function(src.m_raw_function) , m_raw_mfp(src.m_raw_mfp) - , m_std_func(src.m_std_func) { late_bind(object); } @@ -457,7 +453,6 @@ public: , m_latebinder(&late_bind_helper<FunctionClass>) , m_raw_function(nullptr) , m_raw_mfp(funcptr, object, static_cast<ReturnType *>(nullptr), static_cast<generic_static_func>(nullptr)) - , m_std_func(nullptr) { bind(reinterpret_cast<delegate_generic_class *>(object)); } @@ -469,7 +464,6 @@ public: , m_latebinder(&late_bind_helper<FunctionClass>) , m_raw_function(nullptr) , m_raw_mfp(funcptr, object, static_cast<ReturnType *>(nullptr), static_cast<generic_static_func>(nullptr)) - , m_std_func(nullptr) { bind(reinterpret_cast<delegate_generic_class *>(object)); } @@ -481,21 +475,10 @@ public: , m_object(nullptr) , m_latebinder(&late_bind_helper<FunctionClass>) , m_raw_function(reinterpret_cast<generic_static_func>(funcptr)) - , m_std_func(nullptr) { bind(reinterpret_cast<delegate_generic_class *>(object)); } - // construct from static reference function with object reference - delegate_base(functional_type funcptr) - : m_function(nullptr) - , m_object(nullptr) - , m_latebinder(nullptr) - , m_raw_function(nullptr) - , m_std_func(funcptr) - { - } - // copy operator delegate_base &operator=(const delegate_base &src) { @@ -506,7 +489,6 @@ public: m_latebinder = src.m_latebinder; m_raw_function = src.m_raw_function; m_raw_mfp = src.m_raw_mfp; - m_std_func = src.m_std_func; bind(src.object()); } @@ -516,7 +498,7 @@ public: // comparison helper bool operator==(const delegate_base &rhs) const { - return (m_raw_function == rhs.m_raw_function && object() == rhs.object() && m_raw_mfp == rhs.m_raw_mfp && m_std_func.target_type().name() == rhs.m_std_func.target_type().name()); + return (m_raw_function == rhs.m_raw_function && object() == rhs.object() && m_raw_mfp == rhs.m_raw_mfp); } @@ -525,17 +507,15 @@ public: { if (is_mfp() && (HAS_DIFFERENT_ABI)) return (*reinterpret_cast<generic_member_func>(m_function)) (m_object, std::forward<Params>(args)...); - else if (m_std_func) - return m_std_func(std::forward<Params>(args)...); else return (*m_function) (m_object, std::forward<Params>(args)...); } // getters - bool has_object() const { return (object() != nullptr) || m_std_func; } + bool has_object() const { return (object() != nullptr); } // helpers - bool isnull() const { return (m_raw_function == nullptr && m_raw_mfp.isnull() && !m_std_func); } + bool isnull() const { return (m_raw_function == nullptr && m_raw_mfp.isnull()); } bool is_mfp() const { return !m_raw_mfp.isnull(); } // late binding @@ -575,7 +555,6 @@ protected: late_bind_func m_latebinder; // late binding helper generic_static_func m_raw_function; // raw static function pointer delegate_mfp m_raw_mfp; // raw member function pointer - functional_type m_std_func; // std::function pointer }; @@ -585,14 +564,16 @@ protected: //************************************************************************** // declare the base template -template <typename Signature> -class delegate; +template <typename Signature> class delegate; template <typename ReturnType, typename... Params> class delegate<ReturnType (Params...)> : public delegate_base<ReturnType, Params...> { private: using basetype = delegate_base<ReturnType, Params...>; + using functional_type = std::function<ReturnType (Params...)>; + + functional_type m_std_func; protected: template <class FunctionClass> using traits = typename basetype::template traits<FunctionClass>; @@ -603,13 +584,32 @@ protected: public: // create a standard set of constructors delegate() : basetype() { } - explicit delegate(const basetype &src) : basetype(src) { } - delegate(const basetype &src, delegate_late_bind &object) : basetype(src, object) { } + delegate(delegate const &src) : basetype(src.m_std_func ? basetype(&functional_type::operator(), &m_std_func) : static_cast<basetype const &>(src)), m_std_func(src.m_std_func) { } + delegate(delegate &&src) : basetype(src.m_std_func ? basetype(&functional_type::operator(), &m_std_func) : std::move(static_cast<basetype &>(src))), m_std_func(std::move(src.m_std_func)) { } + delegate(delegate const &src, delegate_late_bind &object) : basetype(src.m_std_func ? basetype(&functional_type::operator(), &m_std_func) : basetype(src, object)), m_std_func(src.m_std_func) { } template <class FunctionClass> delegate(member_func_type<FunctionClass> funcptr, FunctionClass *object) : basetype(funcptr, object) { } template <class FunctionClass> delegate(const_member_func_type<FunctionClass> funcptr, FunctionClass *object) : basetype(funcptr, object) { } - explicit delegate(std::function<ReturnType (Params...)> funcptr) : basetype(funcptr) { } + explicit delegate(functional_type &&functoid) : basetype(&functional_type::operator(), &m_std_func), m_std_func(std::move(functoid)) { } template <class FunctionClass> delegate(static_ref_func_type<FunctionClass> funcptr, FunctionClass *object) : basetype(funcptr, object) { } - delegate &operator=(const basetype &src) { *static_cast<basetype *>(this) = src; return *this; } + + delegate &operator=(delegate const &src) + { + if (src.m_std_func) + basetype::operator=(basetype(&functional_type::operator(), &m_std_func)); + else + basetype::operator=(src); + m_std_func = src.m_std_func; + return *this; + } + delegate &operator=(delegate &&src) + { + if (src.m_std_func) + basetype::operator=(basetype(&functional_type::operator(), &m_std_func)); + else + basetype::operator=(std::move(src)); + m_std_func = std::move(src.m_std_func); + return *this; + } }; #endif // MAME_UTIL_DELEGATE_H diff --git a/src/mame/audio/cage.cpp b/src/mame/audio/cage.cpp index a1cc0ccf349..1866e730cc8 100644 --- a/src/mame/audio/cage.cpp +++ b/src/mame/audio/cage.cpp @@ -151,7 +151,7 @@ void atari_cage_device::device_start() m_cpu_h1_clock_period = cage_cpu_clock_period * 2; if (m_speedup) { - m_cpu->space(AS_PROGRAM).install_write_handler(m_speedup, m_speedup, write32_delegate(FUNC(atari_cage_device::speedup_w),this)); + m_cpu->space(AS_PROGRAM).install_write_handler(m_speedup, m_speedup, write32_delegate(*this, FUNC(atari_cage_device::speedup_w))); m_speedup_ram = m_cageram + m_speedup; } diff --git a/src/mame/audio/dcs.cpp b/src/mame/audio/dcs.cpp index da0ac4c6c5b..cd4b208c29c 100644 --- a/src/mame/audio/dcs.cpp +++ b/src/mame/audio/dcs.cpp @@ -717,6 +717,11 @@ dcs_audio_device::dcs_audio_device(const machine_config &mconfig, device_type ty m_last_output_full(0), m_last_input_empty(0), m_progflags(0), + m_output_full_cb(*this), + m_input_empty_cb(*this), + m_fifo_data_r(*this), + m_fifo_status_r(*this), + m_fifo_reset_w(*this), m_timer_enable(0), m_timer_ignore(false), m_timer_start_cycles(0), @@ -904,13 +909,13 @@ void dcs_audio_device::install_speedup(void) { if (m_polling_offset) { if (m_rev < REV_DSIO) { - m_cpu->space(AS_DATA).install_readwrite_handler(m_polling_offset, m_polling_offset, read16_delegate(FUNC(dcs_audio_device::dcs_polling_r), this), write16_delegate(FUNC(dcs_audio_device::dcs_polling_w), this)); + m_cpu->space(AS_DATA).install_readwrite_handler(m_polling_offset, m_polling_offset, read16_delegate(*this, FUNC(dcs_audio_device::dcs_polling_r)), write16_delegate(*this, FUNC(dcs_audio_device::dcs_polling_w))); } else { // ADSP 2181 (DSIO and DENVER) use program memory - m_cpu->space(AS_PROGRAM).install_readwrite_handler(m_polling_offset, m_polling_offset, read32_delegate(FUNC(dcs_audio_device::dcs_polling32_r), this), write32_delegate(FUNC(dcs_audio_device::dcs_polling32_w), this)); + m_cpu->space(AS_PROGRAM).install_readwrite_handler(m_polling_offset, m_polling_offset, read32_delegate(*this, FUNC(dcs_audio_device::dcs_polling32_r)), write32_delegate(*this, FUNC(dcs_audio_device::dcs_polling32_w))); // DSIO and DENVER poll in two spots. This offset covers all three machines (mwskins, sf2049, roadburn). - m_cpu->space(AS_PROGRAM).install_readwrite_handler(m_polling_offset + 9, m_polling_offset + 9, read32_delegate(FUNC(dcs_audio_device::dcs_polling32_r), this), write32_delegate(FUNC(dcs_audio_device::dcs_polling32_w), this)); + m_cpu->space(AS_PROGRAM).install_readwrite_handler(m_polling_offset + 9, m_polling_offset + 9, read32_delegate(*this, FUNC(dcs_audio_device::dcs_polling32_r)), write32_delegate(*this, FUNC(dcs_audio_device::dcs_polling32_w))); } } } diff --git a/src/mame/audio/jaguar.cpp b/src/mame/audio/jaguar.cpp index d9b6da8975c..c3c044e95a0 100644 --- a/src/mame/audio/jaguar.cpp +++ b/src/mame/audio/jaguar.cpp @@ -203,7 +203,7 @@ void jaguar_state::sound_start() #if ENABLE_SPEEDUP_HACKS if (m_hacks_enabled) - m_dsp->space(AS_PROGRAM).install_write_handler(0xf1a100, 0xf1a103, write32_delegate(FUNC(jaguar_state::dsp_flags_w), this)); + m_dsp->space(AS_PROGRAM).install_write_handler(0xf1a100, 0xf1a103, write32_delegate(*this, FUNC(jaguar_state::dsp_flags_w))); #endif } diff --git a/src/mame/audio/leland.cpp b/src/mame/audio/leland.cpp index b5b00d4b352..9fdbb391b76 100644 --- a/src/mame/audio/leland.cpp +++ b/src/mame/audio/leland.cpp @@ -417,12 +417,12 @@ void leland_80186_sound_device::peripheral_ctrl(offs_t offset, u16 data) u32 temp = (m_peripheral & 0xffc0) << 4; if (data & 0x0040) { - m_audiocpu->space(AS_PROGRAM).install_readwrite_handler(temp, temp + 0x2ff, read16s_delegate(FUNC(leland_80186_sound_device::peripheral_r), this), write16s_delegate(FUNC(leland_80186_sound_device::peripheral_w), this)); + m_audiocpu->space(AS_PROGRAM).install_readwrite_handler(temp, temp + 0x2ff, read16s_delegate(*this, FUNC(leland_80186_sound_device::peripheral_r)), write16s_delegate(*this, FUNC(leland_80186_sound_device::peripheral_w))); } else { temp &= 0xffff; - m_audiocpu->space(AS_IO).install_readwrite_handler(temp, temp + 0x2ff, read16s_delegate(FUNC(leland_80186_sound_device::peripheral_r), this), write16s_delegate(FUNC(leland_80186_sound_device::peripheral_w), this)); + m_audiocpu->space(AS_IO).install_readwrite_handler(temp, temp + 0x2ff, read16s_delegate(*this, FUNC(leland_80186_sound_device::peripheral_r)), write16s_delegate(*this, FUNC(leland_80186_sound_device::peripheral_w))); } break; } diff --git a/src/mame/audio/lynx.cpp b/src/mame/audio/lynx.cpp index e50a932acf1..408d47c9418 100644 --- a/src/mame/audio/lynx.cpp +++ b/src/mame/audio/lynx.cpp @@ -99,12 +99,12 @@ DEFINE_DEVICE_TYPE(LYNX2_SND, lynx2_sound_device, "lynx2_sound", "Mikey (Lynx II lynx_sound_device::lynx_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : lynx_sound_device(mconfig, LYNX_SND, tag, owner, clock) { - m_timer_delegate = timer_delegate(); } lynx_sound_device::lynx_sound_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock) , device_sound_interface(mconfig, *this) + , m_timer_delegate(*this) { } @@ -174,7 +174,7 @@ void lynx_sound_device::device_start() { m_mixer_channel = machine().sound().stream_alloc(*this, 0, 1, machine().sample_rate()); m_usec_per_sample = 1000000 / machine().sample_rate(); - m_timer_delegate.bind_relative_to(*owner()); + m_timer_delegate.resolve(); init(); register_save(); } @@ -184,7 +184,7 @@ void lynx2_sound_device::device_start() { m_mixer_channel = machine().sound().stream_alloc(*this, 0, 2, machine().sample_rate()); m_usec_per_sample = 1000000 / machine().sample_rate(); - m_timer_delegate.bind_relative_to(*owner()); + m_timer_delegate.resolve(); init(); register_save(); } diff --git a/src/mame/audio/lynx.h b/src/mame/audio/lynx.h index 670f3ff2a76..863861616f4 100644 --- a/src/mame/audio/lynx.h +++ b/src/mame/audio/lynx.h @@ -16,7 +16,7 @@ public: DECLARE_READ8_MEMBER(read); DECLARE_WRITE8_MEMBER(write); void count_down(int nr); - template <typename... T> void set_timer_delegate(T &&... args) { m_timer_delegate = timer_delegate(std::forward<T>(args)...); } + template <typename... T> void set_timer_delegate(T &&... args) { m_timer_delegate.set(std::forward<T>(args)...); } protected: struct LYNX_AUDIO { diff --git a/src/mame/audio/midway.cpp b/src/mame/audio/midway.cpp index 982961ea684..dfa62f619af 100644 --- a/src/mame/audio/midway.cpp +++ b/src/mame/audio/midway.cpp @@ -14,6 +14,7 @@ #include "audio/williams.h" #include "sound/volt_reg.h" +#include <algorithm> //************************************************************************** @@ -34,22 +35,25 @@ DEFINE_DEVICE_TYPE(MIDWAY_TURBO_CHEAP_SQUEAK, midway_turbo_cheap_squeak_device, //------------------------------------------------- midway_ssio_device::midway_ssio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, MIDWAY_SSIO, tag, owner, clock), - device_mixer_interface(mconfig, *this, 2), - m_cpu(*this, "cpu"), - m_ay0(*this, "ay0"), - m_ay1(*this, "ay1"), - m_ports(*this, {"IP0", "IP1", "IP2", "IP3", "IP4"}), - m_status(0), - m_14024_count(0), - m_mute(0) + : device_t(mconfig, MIDWAY_SSIO, tag, owner, clock) + , device_mixer_interface(mconfig, *this, 2) + , m_cpu(*this, "cpu") + , m_ay0(*this, "ay0") + , m_ay1(*this, "ay1") + , m_ports(*this, "IP%u", 0U) + , m_status(0) + , m_14024_count(0) + , m_mute(0) + , m_custom_input_mask{ 0U, 0U, 0U, 0U, 0U } + , m_custom_input(*this) + , m_custom_output_mask{ 0U, 0U } + , m_custom_output(*this) { - memset(m_data, 0, sizeof(m_data)); - memset(m_overall, 0, sizeof(m_overall)); - memset(m_duty_cycle, 0, sizeof(m_duty_cycle)); - memset(m_ayvolume_lookup, 0, sizeof(m_ayvolume_lookup)); - memset(m_custom_input_mask, 0, sizeof(m_custom_input_mask)); - memset(m_custom_output_mask, 0, sizeof(m_custom_output_mask)); + std::fill(std::begin(m_data), std::end(m_data), 0); + std::fill(std::begin(m_overall), std::end(m_overall), 0); + for (auto &duty_cycle : m_duty_cycle) + std::fill(std::begin(duty_cycle), std::end(duty_cycle), 0); + std::fill(std::begin(m_ayvolume_lookup), std::end(m_ayvolume_lookup), 0); } @@ -132,30 +136,6 @@ WRITE8_MEMBER(midway_ssio_device::ioport_write) //------------------------------------------------- -// set_custom_input - configure a custom port -// reader -//------------------------------------------------- - -void midway_ssio_device::set_custom_input(int which, uint8_t mask, read8_delegate handler) -{ - m_custom_input[which] = handler; - m_custom_input_mask[which] = mask; -} - - -//------------------------------------------------- -// set_custom_output - configure a custom port -// writer -//------------------------------------------------- - -void midway_ssio_device::set_custom_output(int which, uint8_t mask, write8_delegate handler) -{ - m_custom_output[which/4] = handler; - m_custom_output_mask[which/4] = mask; -} - - -//------------------------------------------------- // compute_ay8910_modulation - precompute // volume modulation tables based on the duty // cycle described by the PROMs diff --git a/src/mame/audio/midway.h b/src/mame/audio/midway.h index 5078db354f2..07eeb403217 100644 --- a/src/mame/audio/midway.h +++ b/src/mame/audio/midway.h @@ -58,8 +58,16 @@ public: DECLARE_WRITE8_MEMBER(ioport_write); // configuration - void set_custom_input(int which, uint8_t mask, read8_delegate handler); - void set_custom_output(int which, uint8_t mask, write8_delegate handler); + template <typename... T> void set_custom_input(int which, uint8_t mask, T &&... args) + { + m_custom_input_mask[which] = mask; + m_custom_input[which].set(std::forward<T>(args)...); + } + template <typename... T> void set_custom_output(int which, uint8_t mask, T &&... args) + { + m_custom_output_mask[which / 4] = mask; + m_custom_output[which / 4].set(std::forward<T>(args)...); + } // internal communications DECLARE_READ8_MEMBER(irq_clear); @@ -102,16 +110,15 @@ private: // I/O port overrides uint8_t m_custom_input_mask[5]; - read8_delegate m_custom_input[5]; + read8_delegate::array<5> m_custom_input; uint8_t m_custom_output_mask[2]; - write8_delegate m_custom_output[2]; + write8_delegate::array<2> m_custom_output; INTERRUPT_GEN_MEMBER(clock_14024); DECLARE_WRITE8_MEMBER(porta0_w); DECLARE_WRITE8_MEMBER(portb0_w); DECLARE_WRITE8_MEMBER(porta1_w); DECLARE_WRITE8_MEMBER(portb1_w); - }; diff --git a/src/mame/audio/segasnd.cpp b/src/mame/audio/segasnd.cpp index 85d95753e0f..bd194737fce 100644 --- a/src/mame/audio/segasnd.cpp +++ b/src/mame/audio/segasnd.cpp @@ -882,8 +882,9 @@ void usb_sound_device::device_add_mconfig(machine_config &config) m_ourcpu->p2_out_cb().set(FUNC(usb_sound_device::p2_w)); m_ourcpu->t1_in_cb().set(FUNC(usb_sound_device::t1_r)); - TIMER(config, "usb_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(usb_sound_device::increment_t1_clock_timer_cb), this) - , attotime::from_hz(USB_2MHZ_CLOCK / 256)); + TIMER(config, "usb_timer", 0).configure_periodic( + FUNC(usb_sound_device::increment_t1_clock_timer_cb), + attotime::from_hz(USB_2MHZ_CLOCK / 256)); } diff --git a/src/mame/audio/sente6vb.cpp b/src/mame/audio/sente6vb.cpp index 358e646182d..7e9fd2995f6 100644 --- a/src/mame/audio/sente6vb.cpp +++ b/src/mame/audio/sente6vb.cpp @@ -113,7 +113,7 @@ void sente6vb_device::device_add_mconfig(machine_config &config) uartclock.signal_handler().append(m_uart, FUNC(acia6850_device::write_txc)); uartclock.signal_handler().append(m_uart, FUNC(acia6850_device::write_rxc)); - TIMER(config, m_counter_0_timer, 0).configure_generic(timer_device::expired_delegate(FUNC(sente6vb_device::clock_counter_0_ff), this)); + TIMER(config, m_counter_0_timer, 0).configure_generic(FUNC(sente6vb_device::clock_counter_0_ff)); PIT8253(config, m_pit, 0); m_pit->out_handler<0>().set(FUNC(sente6vb_device::counter_0_set_out)); @@ -131,12 +131,12 @@ void sente6vb_device::device_add_mconfig(machine_config &config) cem_device->add_route(ALL_OUTPUTS, "mono", 0.90); } - m_cem_device[0]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_0), this); - m_cem_device[1]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_1), this); - m_cem_device[2]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_2), this); - m_cem_device[3]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_3), this); - m_cem_device[4]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_4), this); - m_cem_device[5]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_5), this); + m_cem_device[0]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_0)); + m_cem_device[1]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_1)); + m_cem_device[2]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_2)); + m_cem_device[3]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_3)); + m_cem_device[4]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_4)); + m_cem_device[5]->set_ext_input_callback(FUNC(sente6vb_device::noise_gen_5)); } diff --git a/src/mame/drivers/1943.cpp b/src/mame/drivers/1943.cpp index c903e24e500..53f870199d9 100644 --- a/src/mame/drivers/1943.cpp +++ b/src/mame/drivers/1943.cpp @@ -81,11 +81,11 @@ void _1943_state::c1943_map(address_map &map) map(0xc002, 0xc002).portr("P2"); map(0xc003, 0xc003).portr("DSWA"); map(0xc004, 0xc004).portr("DSWB"); - map(0xc007, 0xc007).lr8("mcu_r", [this]() -> u8 { return m_mcu_to_cpu; }); + map(0xc007, 0xc007).lr8(NAME([this] () -> u8 { return m_mcu_to_cpu; })); map(0xc800, 0xc800).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0xc804, 0xc804).w(FUNC(_1943_state::c804_w)); // ROM bank switch, screen flip map(0xc806, 0xc806).w("watchdog", FUNC(watchdog_timer_device::reset_w)); - map(0xc807, 0xc807).lw8("mcu_w", [this](u8 data) { m_cpu_to_mcu = data; }); + map(0xc807, 0xc807).lw8(NAME([this] (u8 data) { m_cpu_to_mcu = data; })); map(0xd000, 0xd3ff).ram().w(FUNC(_1943_state::videoram_w)).share("videoram"); map(0xd400, 0xd7ff).ram().w(FUNC(_1943_state::colorram_w)).share("colorram"); map(0xd800, 0xd801).ram().share("scrollx"); @@ -106,7 +106,7 @@ void _1943_state::c1943b_map(address_map &map) // the bootleg expects 0x00 to be returned from the protection reads // because the protection has been patched out - map(0xc007, 0xc007).lr8("mcu_r", []() -> u8 { return 0x00; }); + map(0xc007, 0xc007).lr8(NAME([]() -> u8 { return 0x00; })); map(0xc807, 0xc807).noprw(); } @@ -115,7 +115,7 @@ void _1943_state::sound_map(address_map &map) map(0x0000, 0x7fff).rom(); map(0xc000, 0xc7ff).ram(); map(0xc800, 0xc800).r("soundlatch", FUNC(generic_latch_8_device::read)); - map(0xd800, 0xd800).lrw8("mcu", [this]() { return m_mcu_to_audiocpu; }, [this](u8 data) { m_audiocpu_to_mcu = data; }); + map(0xd800, 0xd800).lrw8(NAME([this]() { return m_mcu_to_audiocpu; }), NAME([this](u8 data) { m_audiocpu_to_mcu = data; })); map(0xe000, 0xe001).w("ym1", FUNC(ym2203_device::write)); map(0xe002, 0xe003).w("ym2", FUNC(ym2203_device::write)); } diff --git a/src/mame/drivers/1945kiii.cpp b/src/mame/drivers/1945kiii.cpp index d77122dedde..1a8fa1af50e 100644 --- a/src/mame/drivers/1945kiii.cpp +++ b/src/mame/drivers/1945kiii.cpp @@ -121,7 +121,7 @@ TILE_GET_INFO_MEMBER(k3_state::get_tile_info) void k3_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(k3_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(k3_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); } void k3_state::k3_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, diff --git a/src/mame/drivers/39in1.cpp b/src/mame/drivers/39in1.cpp index ed5aa3df6b6..5b0a0204c55 100644 --- a/src/mame/drivers/39in1.cpp +++ b/src/mame/drivers/39in1.cpp @@ -198,7 +198,7 @@ READ32_MEMBER(_39in1_state::prot_cheater_r) void _39in1_state::driver_init() { address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_read_handler (0xa0151648, 0xa015164b, read32_delegate(FUNC(_39in1_state::prot_cheater_r), this)); + space.install_read_handler (0xa0151648, 0xa015164b, read32_delegate(*this, FUNC(_39in1_state::prot_cheater_r))); } void _39in1_state::_39in1_map(address_map &map) diff --git a/src/mame/drivers/3x3puzzl.cpp b/src/mame/drivers/3x3puzzl.cpp index 6c9025a6f73..d20fdfde634 100644 --- a/src/mame/drivers/3x3puzzl.cpp +++ b/src/mame/drivers/3x3puzzl.cpp @@ -179,9 +179,9 @@ WRITE16_MEMBER(_3x3puzzle_state::tilemap1_scrolly_w) void _3x3puzzle_state::video_start() { - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_3x3puzzle_state::get_tile1_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_3x3puzzle_state::get_tile2_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_3x3puzzle_state::get_tile3_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_3x3puzzle_state::get_tile1_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_3x3puzzle_state::get_tile2_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_3x3puzzle_state::get_tile3_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap2->set_transparent_pen(0); m_tilemap3->set_transparent_pen(0); } diff --git a/src/mame/drivers/4dpi.cpp b/src/mame/drivers/4dpi.cpp index af5163d0e5b..abd638641c9 100644 --- a/src/mame/drivers/4dpi.cpp +++ b/src/mame/drivers/4dpi.cpp @@ -251,17 +251,14 @@ void pi4d2x_state::map(address_map &map) //map(0x1f000000, 0x1fbfffff); // local I/O (duarts, timers, etc.) map(0x1f000000, 0x1f007fff).m(m_gfx, FUNC(sgi_gr1_device::map)).mirror(0x8000); - map(0x1f800000, 0x1f800003).lrw8("memcfg", [this]() { return m_memcfg; }, [this](u8 data) { m_memcfg = data; }).umask32(0xff000000); + map(0x1f800000, 0x1f800003).lrw8(NAME([this]() { return m_memcfg; }), NAME([this](u8 data) { m_memcfg = data; })).umask32(0xff000000); map(0x1f800000, 0x1f800003).r(FUNC(pi4d2x_state::sysid_r)).umask32(0x00ff0000); - map(0x1f840000, 0x1f840003).lrw8("vme_isr", [this]() { return m_vme_isr; }, [this](u8 data) { m_vme_isr = data; }).umask32(0x000000ff); - map(0x1f840008, 0x1f84000b).lrw8("vme_imr", [this]() { return m_vme_imr; }, [this](u8 data) { m_vme_imr = data; }).umask32(0x000000ff); + map(0x1f840000, 0x1f840003).lrw8(NAME([this]() { return m_vme_isr; }), NAME([this](u8 data) { m_vme_isr = data; })).umask32(0x000000ff); + map(0x1f840008, 0x1f84000b).lrw8(NAME([this]() { return m_vme_imr; }), NAME([this](u8 data) { m_vme_imr = data; })).umask32(0x000000ff); - map(0x1f880000, 0x1f880003).lrw16("cpuctrl", - [this]() - { - return m_cpuctrl; - }, + map(0x1f880000, 0x1f880003).lrw16( + NAME([this]() { return m_cpuctrl; }), [this](u16 data) { m_eeprom->di_write(BIT(data, 8)); @@ -278,13 +275,10 @@ void pi4d2x_state::map(address_map &map) //BIT(data, 15); // fast peripheral cycle m_cpuctrl = data; - }).umask32(0x0000ffff); + }, "cpuctrl_w").umask32(0x0000ffff); //map(0x1f8c0000, 0x1f8c0003); // lca readback trigger (b) - map(0x1f8e0000, 0x1f8e0003).lrw8("cpuauxctrl", - [this]() - { - return m_cpuauxctl; - }, + map(0x1f8e0000, 0x1f8e0003).lrw8( + NAME([this]() { return m_cpuauxctl; }), [this](u8 data) { // cpu leds @@ -303,59 +297,41 @@ void pi4d2x_state::map(address_map &map) m_gfx->reset_w(BIT(data, 7)); m_cpuauxctl = data; - }).umask32(0xff000000); + }, "cpuauxctl_w").umask32(0xff000000); - map(0x1f900000, 0x1f900003).lrw16("dmalo", - [this]() - { - return m_dmalo; - }, + map(0x1f900000, 0x1f900003).lrw16( + NAME([this]() { return m_dmalo; }), [this](u16 data) { m_dmalo = data; m_mapindex = 0; m_dmaaddr = (u32(m_dmahi[m_mapindex]) << 12) | (m_dmalo & 0x0ffc); - }).umask32(0x0000ffff); + }, "dmalo_w").umask32(0x0000ffff); - map(0x1f910000, 0x1f910003).lrw8("mapindex", - [this]() - { - return m_mapindex; - }, - [this](u8 data) - { - m_mapindex = data; - }).umask32(0x000000ff); + map(0x1f910000, 0x1f910003).lrw8( + NAME([this]() { return m_mapindex; }), + NAME([this](u8 data) { m_mapindex = data; })).umask32(0x000000ff); /* * DMA address mapping table is a pair of CY7C128-35PC 2048x8 SRAMs which * read/write to data bus D27-12. A10 is tied high, giving 1024 entries. */ - map(0x1f920000, 0x1f920fff).lrw16("dmahi", - [this](offs_t offset) - { - return m_dmahi[offset]; - }, - [this](offs_t offset, u16 data, u16 mem_mask) - { - COMBINE_DATA(&m_dmahi[offset]); - }).umask32(0x0000ffff); + map(0x1f920000, 0x1f920fff).lrw16( + NAME([this](offs_t offset) { return m_dmahi[offset]; }), + NAME([this](offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_dmahi[offset]); })).umask32(0x0000ffff); // emulation can ignore dma flush map(0x1f940000, 0x1f940003).nopw(); map(0x1f950000, 0x1f9501ff).rw(m_enet, FUNC(am7990_device::regs_r), FUNC(am7990_device::regs_w)).umask32(0xffff0000); - map(0x1f960000, 0x1f960003).lr8("etherrdy", [this]() { m_enet->reset_w(1); return 0; }).umask32(0xff000000); - map(0x1f960004, 0x1f960007).lr8("etherrst", [this]() { m_enet->reset_w(0); return 0; }).umask32(0xff000000); + map(0x1f960000, 0x1f960003).lr8([this]() { m_enet->reset_w(1); return 0; }, "etherrdy").umask32(0xff000000); + map(0x1f960004, 0x1f960007).lr8([this]() { m_enet->reset_w(0); return 0; }, "etherrst").umask32(0xff000000); //map(0x1f960008, 0x1f96000b).rw().umask32(0xff000000); // etherwait: wait state control - map(0x1f980000, 0x1f980003).lr16("lio_isr", [this]() { return m_lio_isr; }).umask32(0x0000ffff); - map(0x1f980008, 0x1f98000b).lrw8("lio_imr", - [this]() - { - return m_lio_imr; - }, + map(0x1f980000, 0x1f980003).lr16(NAME([this]() { return m_lio_isr; })).umask32(0x0000ffff); + map(0x1f980008, 0x1f98000b).lrw8( + NAME([this]() { return m_lio_imr; }), [this](u8 data) { m_lio_imr = data; @@ -376,7 +352,7 @@ void pi4d2x_state::map(address_map &map) m_lio_int = lio_int; m_cpu->set_input_line(INPUT_LINE_IRQ1, m_lio_int); } - }).umask32(0x000000ff); + }, "lio_imr_w").umask32(0x000000ff); // 1 0 a7 a6 a5 a4 a3 a2 a1 a0 1 0 lance dmahi // 0 0 a7 a6 a5 a4 a3 a2 a1 a0 1 0 scsi dmahi @@ -406,12 +382,12 @@ void pi4d2x_state::map(address_map &map) map(0x1f9e0000, 0x1f9e0003).ram().umask32(0x000000ff); map(0x1f9f000c, 0x1f9f000f).ram().umask32(0xffffffff); - map(0x1fa00000, 0x1fa00003).lr8("timer1_ack", [this]() { m_cpu->set_input_line(INPUT_LINE_IRQ4, 0); return 0; }).umask32(0xff000000); - map(0x1fa20000, 0x1fa20003).lr8("timer0_ack", [this]() { m_cpu->set_input_line(INPUT_LINE_IRQ2, 0); return 0; }).umask32(0xff000000); + map(0x1fa00000, 0x1fa00003).lr8([this]() { m_cpu->set_input_line(INPUT_LINE_IRQ4, 0); return 0; }, "timer1_ack").umask32(0xff000000); + map(0x1fa20000, 0x1fa20003).lr8([this]() { m_cpu->set_input_line(INPUT_LINE_IRQ2, 0); return 0; }, "timer0_ack").umask32(0xff000000); - map(0x1fa40000, 0x1fa40003).lr32("erradr", [this]() { m_cpu->set_input_line(INPUT_LINE_IRQ5, 0); m_cpu->berr_w(0); return m_erradr; }); + map(0x1fa40000, 0x1fa40003).lr32([this]() { m_cpu->set_input_line(INPUT_LINE_IRQ5, 0); m_cpu->berr_w(0); return m_erradr; }, "erradr"); - map(0x1fa40004, 0x1fa40007).lrw32("refadr", + map(0x1fa40004, 0x1fa40007).lrw32( [this]() { if (m_memcfg & MEMCFG_TIMERDIS) @@ -425,51 +401,45 @@ void pi4d2x_state::map(address_map &map) } else return m_refadr; - }, + }, "refadr_r", [this](u32 data) { m_refadr = data; m_refresh_timer = machine().time(); - }); + }, "refadr_w"); - map(0x1fa40008, 0x1fa4000b).lrw32("gdma_dabr_phys", [this]() { return m_gdma_dabr; }, [this](u32 data) { m_gdma_dabr = data; }); - map(0x1fa4000c, 0x1fa4000f).lrw32("gdma_bufadr_phys", [this]() { return m_gdma_bufadr; }, [this](u32 data) { m_gdma_bufadr = data; }); - map(0x1fa40010, 0x1fa40013).lrw16("gdma_burst_phys", [this]() { return m_gdma_burst; }, [this](u16 data) { m_gdma_burst = data; }).umask32(0xffff0000); - map(0x1fa40010, 0x1fa40013).lrw16("gdma_buflen_phys", [this]() { return m_gdma_buflen; }, [this](u16 data) { m_gdma_buflen = data; }).umask32(0x0000ffff); + map(0x1fa40008, 0x1fa4000b).lrw32(NAME([this]() { return m_gdma_dabr; }), NAME([this](u32 data) { m_gdma_dabr = data; })); + map(0x1fa4000c, 0x1fa4000f).lrw32(NAME([this]() { return m_gdma_bufadr; }), NAME([this](u32 data) { m_gdma_bufadr = data; })); + map(0x1fa40010, 0x1fa40013).lrw16(NAME([this]() { return m_gdma_burst; }), NAME([this](u16 data) { m_gdma_burst = data; })).umask32(0xffff0000); + map(0x1fa40010, 0x1fa40013).lrw16(NAME([this]() { return m_gdma_buflen; }), NAME([this](u16 data) { m_gdma_buflen = data; })).umask32(0x0000ffff); - map(0x1fa60000, 0x1fa60003).lrw8("vmermw", [this]() { m_sysid |= SYSID_VMERMW; return 0; }, [this](u8 data) { m_sysid |= SYSID_VMERMW; }).umask32(0xff000000); + map(0x1fa60000, 0x1fa60003).lrw8([this]() { m_sysid |= SYSID_VMERMW; return 0; }, "vmermw_r", [this](u8 data) { m_sysid |= SYSID_VMERMW; }, "vmermw_w").umask32(0xff000000); //map(0x1fa60004, 0x1fa60007).rw("actpup").umask32(0xff000000); // turn on active bus pullup - map(0x1fa60018, 0x1fa6001b).lrw8("vmefbon", [this]() { m_sysid |= SYSID_VMEFBT; return 0; }, [this](u8 data) { m_sysid |= SYSID_VMEFBT; }).umask32(0xff000000); - map(0x1fa6001c, 0x1fa6001f).lrw8("vmefbof", [this]() { m_sysid &= ~SYSID_VMEFBT; return 0; }, [this](u8 data) { m_sysid &= ~SYSID_VMEFBT; }).umask32(0xff000000); + map(0x1fa60018, 0x1fa6001b).lrw8([this]() { m_sysid |= SYSID_VMEFBT; return 0; }, "vmefbon_r", [this](u8 data) { m_sysid |= SYSID_VMEFBT; }, "vmefbon_w").umask32(0xff000000); + map(0x1fa6001c, 0x1fa6001f).lrw8([this]() { m_sysid &= ~SYSID_VMEFBT; return 0; }, "vmefbof_r", [this](u8 data) { m_sysid &= ~SYSID_VMEFBT; }, "vmefbof_w").umask32(0xff000000); map(0x1fa60020, 0x1fa60023).nopr(); // reload gfx dma burst/delay reg (FIXME: silenced) //map(0x1fa60024, 0x1fa60027).rw("enraso").umask32(0xff000000); // enable ctl ras decoder - map(0x1fa80000, 0x1fa80003).lr8("scsirdy", [this]() { m_scsi->reset_w(0); return 0; }).umask32(0xff000000); - map(0x1fa80004, 0x1fa80007).lr8("scsirst", [this]() { m_scsi->reset_w(1); return 0; }).umask32(0xff000000); - map(0x1fa80008, 0x1fa8000b).lr8("scsibstat", []() { return 0; }).umask32(0x00ff0000); + map(0x1fa80000, 0x1fa80003).lr8([this]() { m_scsi->reset_w(0); return 0; }, "scsirdy").umask32(0xff000000); + map(0x1fa80004, 0x1fa80007).lr8([this]() { m_scsi->reset_w(1); return 0; }, "scsirst").umask32(0xff000000); + map(0x1fa80008, 0x1fa8000b).lr8([]() { return 0; }, "scsibstat").umask32(0x00ff0000); // TODO: IOC2 configuration register, bus error on IOC1 //map(0x1fa80008, 0x1fa8000b).rw(FUNC(pi4d2x_state::buserror_r), FUNC(pi4d2x_state::buserror_w)); - map(0x1faa0000, 0x1faa0003).lrw8("clrerr", [this](offs_t offset) { m_parerr &= ~(PARERR_BYTE | (1 << offset)); return 0; }, [this](offs_t offset) { m_parerr &= ~(PARERR_BYTE | (1 << offset)); }); - map(0x1faa0004, 0x1faa0007).lr8("parerr", [this]() { return m_parerr; }).umask32(0x00ff0000); + map(0x1faa0000, 0x1faa0003).lrw8([this](offs_t offset) { m_parerr &= ~(PARERR_BYTE | (1 << offset)); return 0; }, "clrerr_r", [this](offs_t offset) { m_parerr &= ~(PARERR_BYTE | (1 << offset)); }, "clrerr_w"); + map(0x1faa0004, 0x1faa0007).lr8(NAME([this]() { return m_parerr; })).umask32(0x00ff0000); - map(0x1fac0000, 0x1fac0003).lrw8("vrrst", [this]() { lio_interrupt<LIO_VR>(1); return 0; }, [this](u8 data) { lio_interrupt<LIO_VR>(1); }).umask32(0xff000000); + map(0x1fac0000, 0x1fac0003).lrw8([this]() { lio_interrupt<LIO_VR>(1); return 0; }, "vrrst_r", [this](u8 data) { lio_interrupt<LIO_VR>(1); }, "vrrst_w").umask32(0xff000000); map(0x1fb00000, 0x1fb00003).rw(m_scsi, FUNC(wd33c93_device::indir_addr_r), FUNC(wd33c93_device::indir_addr_w)).umask32(0x00ff0000); map(0x1fb00100, 0x1fb00103).rw(m_scsi, FUNC(wd33c93_device::indir_reg_r), FUNC(wd33c93_device::indir_reg_w)).umask32(0x00ff0000); map(0x1fb40000, 0x1fb4000f).rw(m_pit, FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask32(0xff000000); - map(0x1fb80000, 0x1fb800ff).lrw8("duarts", - [this](offs_t offset) - { - return m_duart[BIT(offset, 0)]->read(offset >> 2); - }, - [this](offs_t offset, u8 data) - { - m_duart[BIT(offset, 0)]->write(offset >> 2, data); - }).umask32(0xff000000); + map(0x1fb80000, 0x1fb800ff).lrw8( + NAME([this](offs_t offset) { return m_duart[BIT(offset, 0)]->read(offset >> 2); }), + NAME([this](offs_t offset, u8 data) { m_duart[BIT(offset, 0)]->write(offset >> 2, data); })).umask32(0xff000000); map(0x1fbc0000, 0x1fbc007f).rw(m_rtc, FUNC(dp8573_device::read), FUNC(dp8573_device::write)).umask32(0xff000000); diff --git a/src/mame/drivers/4enlinea.cpp b/src/mame/drivers/4enlinea.cpp index a07d92002b1..9247d314ba8 100644 --- a/src/mame/drivers/4enlinea.cpp +++ b/src/mame/drivers/4enlinea.cpp @@ -329,8 +329,8 @@ void isa8_cga_4enlinea_device::device_start() m_vram_size = 0x4000; m_vram.resize(m_vram_size); - //m_isa->install_device(0x3bf, 0x3bf, 0, 0, nullptr, write8_delegate( FUNC(isa8_cga_4enlinea_device::_4enlinea_mode_control_w), this ) ); - m_isa->install_device(0x3d0, 0x3df, read8_delegate( FUNC(isa8_cga_4enlinea_device::_4enlinea_io_read), this ), write8_delegate( FUNC(isa8_cga_device::io_write), this ) ); + //m_isa->install_device(0x3bf, 0x3bf, 0, 0, nullptr, write8_delegate(*this, FUNC(isa8_cga_4enlinea_device::_4enlinea_mode_control_w))); + m_isa->install_device(0x3d0, 0x3df, read8_delegate(*this, FUNC(isa8_cga_4enlinea_device::_4enlinea_io_read)), write8_delegate(*this, FUNC(isa8_cga_device::io_write))); m_isa->install_bank(0x8000, 0xbfff, "bank1", &m_vram[0]); /* Initialise the cga palette */ diff --git a/src/mame/drivers/5clown.cpp b/src/mame/drivers/5clown.cpp index 9a0e0605b2d..af1c46fed80 100644 --- a/src/mame/drivers/5clown.cpp +++ b/src/mame/drivers/5clown.cpp @@ -1049,7 +1049,7 @@ void _5clown_state::fclown(machine_config &config) crtc.set_show_border_area(false); crtc.set_char_width(8); crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); - crtc.set_update_row_callback(FUNC(_5clown_state::update_row), this); + crtc.set_update_row_callback(FUNC(_5clown_state::update_row)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/88games.cpp b/src/mame/drivers/88games.cpp index ff8e7a553e3..2672faf4087 100644 --- a/src/mame/drivers/88games.cpp +++ b/src/mame/drivers/88games.cpp @@ -323,17 +323,17 @@ void _88games_state::_88games(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(_88games_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(_88games_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(_88games_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(_88games_state::sprite_callback)); K051316(config, m_k051316, 0); m_k051316->set_palette("palette"); - m_k051316->set_zoom_callback(FUNC(_88games_state::zoom_callback), this); + m_k051316->set_zoom_callback(FUNC(_88games_state::zoom_callback)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/a2600.cpp b/src/mame/drivers/a2600.cpp index 6cbeeef3a4d..2ab2427e761 100644 --- a/src/mame/drivers/a2600.cpp +++ b/src/mame/drivers/a2600.cpp @@ -312,50 +312,50 @@ void a2600_state::machine_start() case A26_DC: case A26_FV: case A26_8IN1: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); break; case A26_F6: case A26_DPC: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); break; case A26_FE: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_ram),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01fe, 0x01ff, read8_delegate(FUNC(vcs_cart_slot_device::read_bank),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x01fe, 0x01fe, write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_ram))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01fe, 0x01ff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_bank))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x01fe, 0x01fe, write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); break; case A26_3E: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_ram),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x00, 0x3f, write8_delegate(FUNC(a2600_state::cart_over_tia_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x00, 0x3f, write8_delegate(*this, FUNC(a2600_state::cart_over_tia_w))); break; case A26_3F: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x00, 0x3f, write8_delegate(FUNC(a2600_state::cart_over_tia_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x00, 0x3f, write8_delegate(*this, FUNC(a2600_state::cart_over_tia_w))); break; case A26_UA: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200, 0x27f, read8_delegate(FUNC(vcs_cart_slot_device::read_bank),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200, 0x27f, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_bank)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); break; case A26_JVP: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); // to verify the actual behavior... - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfa0, 0xfc0, read8_delegate(FUNC(a2600_state::cart_over_riot_r), this), write8_delegate(FUNC(a2600_state::cart_over_riot_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfa0, 0xfc0, read8_delegate(*this, FUNC(a2600_state::cart_over_riot_r)), write8_delegate(*this, FUNC(a2600_state::cart_over_riot_w))); break; case A26_4IN1: case A26_32IN1: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom))); break; case A26_SS: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom))); break; case A26_CM: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom))); break; case A26_X07: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x0fff, read8_delegate(FUNC(a2600_state::cart_over_all_r), this), write8_delegate(FUNC(a2600_state::cart_over_all_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x0fff, read8_delegate(*this, FUNC(a2600_state::cart_over_all_r)), write8_delegate(*this, FUNC(a2600_state::cart_over_all_w))); break; case A26_HARMONY: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(FUNC(vcs_cart_slot_device::read_rom),(vcs_cart_slot_device*)m_cart), write8_delegate(FUNC(vcs_cart_slot_device::write_bank),(vcs_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x1fff, read8_delegate(*m_cart, FUNC(vcs_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vcs_cart_slot_device::write_bank))); break; } diff --git a/src/mame/drivers/a7800.cpp b/src/mame/drivers/a7800.cpp index 145388dc6fb..aa35459d5a5 100644 --- a/src/mame/drivers/a7800.cpp +++ b/src/mame/drivers/a7800.cpp @@ -214,38 +214,37 @@ READ8_MEMBER(a7800_state::tia_r) { switch (offset & 0x0f) { - case 0x00: - case 0x01: - case 0x02: - case 0x03: - case 0x04: - case 0x05: - case 0x06: - case 0x07: - /* Even though the 7800 doesn't use the TIA graphics the collision registers should - still return a reasonable value */ + case 0x00: + case 0x01: + case 0x02: + case 0x03: + case 0x04: + case 0x05: + case 0x06: + case 0x07: + /* Even though the 7800 doesn't use the TIA graphics the collision registers should + still return a reasonable value */ + return 0x00; + case 0x08: + return ((m_io_buttons->read() & 0x02) << 6); + case 0x09: + return ((m_io_buttons->read() & 0x08) << 4); + case 0x0a: + return ((m_io_buttons->read() & 0x01) << 7); + case 0x0b: + return ((m_io_buttons->read() & 0x04) << 5); + case 0x0c: + if (((m_io_buttons->read() & 0x08) ||(m_io_buttons->read() & 0x02)) && m_p1_one_button) return 0x00; - case 0x08: - return ((m_io_buttons->read() & 0x02) << 6); - case 0x09: - return ((m_io_buttons->read() & 0x08) << 4); - case 0x0a: - return ((m_io_buttons->read() & 0x01) << 7); - case 0x0b: - return ((m_io_buttons->read() & 0x04) << 5); - case 0x0c: - if (((m_io_buttons->read() & 0x08) ||(m_io_buttons->read() & 0x02)) && m_p1_one_button) - return 0x00; - else - return 0x80; - case 0x0d: - if (((m_io_buttons->read() & 0x01) ||(m_io_buttons->read() & 0x04)) && m_p2_one_button) - return 0x00; - else - return 0x80; - default: - logerror("undefined TIA read %x\n",offset); - + else + return 0x80; + case 0x0d: + if (((m_io_buttons->read() & 0x01) ||(m_io_buttons->read() & 0x04)) && m_p2_one_button) + return 0x00; + else + return 0x80; + default: + logerror("undefined TIA read %x\n",offset); } return 0xff; } @@ -277,7 +276,7 @@ WRITE8_MEMBER(a7800_state::tia_w) TIMER_DEVICE_CALLBACK_MEMBER(a7800_state::interrupt) { // DMA Begins 7 cycles after hblank - machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(7), timer_expired_delegate(FUNC(a7800_state::maria_startdma),this)); + machine().scheduler().timer_set(m_maincpu->cycles_to_attotime(7), timer_expired_delegate(FUNC(a7800_state::maria_startdma), this)); m_maria->interrupt(m_lines); } @@ -1342,27 +1341,27 @@ void a7800_state::machine_start() { switch (m_cart->get_cart_type()) { - case A78_HSC: - // ROM+NVRAM accesses for HiScore - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(FUNC(a78_cart_slot_device::read_10xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_10xx),(a78_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(FUNC(a78_cart_slot_device::read_30xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_30xx),(a78_cart_slot_device*)m_cart)); - break; - case A78_XB_BOARD: - case A78_TYPE0_POK450: - case A78_TYPE1_POK450: - case A78_TYPE6_POK450: - case A78_TYPEA_POK450: - case A78_VERSA_POK450: - // POKEY and RAM regs at 0x400-0x47f - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(FUNC(a78_cart_slot_device::read_04xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_04xx),(a78_cart_slot_device*)m_cart)); - break; - case A78_XM_BOARD: - // POKEY and RAM and YM regs at 0x400-0x47f - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(FUNC(a78_cart_slot_device::read_04xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_04xx),(a78_cart_slot_device*)m_cart)); - // ROM+NVRAM accesses for HiScore - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(FUNC(a78_cart_slot_device::read_10xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_10xx),(a78_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(FUNC(a78_cart_slot_device::read_30xx),(a78_cart_slot_device*)m_cart), write8_delegate(FUNC(a78_cart_slot_device::write_30xx),(a78_cart_slot_device*)m_cart)); - break; + case A78_HSC: + // ROM+NVRAM accesses for HiScore + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_10xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_10xx))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_30xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_30xx))); + break; + case A78_XB_BOARD: + case A78_TYPE0_POK450: + case A78_TYPE1_POK450: + case A78_TYPE6_POK450: + case A78_TYPEA_POK450: + case A78_VERSA_POK450: + // POKEY and RAM regs at 0x400-0x47f + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_04xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_04xx))); + break; + case A78_XM_BOARD: + // POKEY and RAM and YM regs at 0x400-0x47f + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0400, 0x047f, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_04xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_04xx))); + // ROM+NVRAM accesses for HiScore + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x17ff, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_10xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_10xx))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3000, 0x3fff, read8_delegate(*m_cart, FUNC(a78_cart_slot_device::read_30xx)), write8_delegate(*m_cart, FUNC(a78_cart_slot_device::write_30xx))); + break; } } } diff --git a/src/mame/drivers/aa310.cpp b/src/mame/drivers/aa310.cpp index 824f15bcb41..0ddf6346309 100644 --- a/src/mame/drivers/aa310.cpp +++ b/src/mame/drivers/aa310.cpp @@ -179,7 +179,7 @@ void aa310_state::init_aa310() uint32_t ram_size = m_ram->size(); m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x02000000, 0x02ffffff); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x02000000, 0x02000000+(ram_size-1), read32_delegate(FUNC(aa310_state::aa310_psy_wram_r), this), write32_delegate(FUNC(aa310_state::aa310_psy_wram_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler( 0x02000000, 0x02000000+(ram_size-1), read32_delegate(*this, FUNC(aa310_state::aa310_psy_wram_r)), write32_delegate(*this, FUNC(aa310_state::aa310_psy_wram_w))); archimedes_driver_init(); } diff --git a/src/mame/drivers/abc1600.cpp b/src/mame/drivers/abc1600.cpp index 5aad63f1cef..6d194a89b37 100644 --- a/src/mame/drivers/abc1600.cpp +++ b/src/mame/drivers/abc1600.cpp @@ -807,9 +807,9 @@ WRITE_LINE_MEMBER( abc1600_state::nmi_w ) void abc1600_state::cpu_space_map(address_map &map) { map(0xffff0, 0xfffff).m(m_maincpu, FUNC(m68008_device::autovectors_map)); - map(0xffff5, 0xffff5).lr8("cio int", [this]() -> u8 { return m_cio->intack_r(); }); - map(0xffffb, 0xffffb).lr8("dart int", [this]() -> u8 { return m_dart->m1_r(); }); - map(0xfffff, 0xfffff).lr8("nmi int", [this]() -> u8 { m_maincpu->set_input_line(M68K_IRQ_7, CLEAR_LINE); return m68008_device::autovector(7); }); + map(0xffff5, 0xffff5).lr8(NAME([this]() -> u8 { return m_cio->intack_r(); })); + map(0xffffb, 0xffffb).lr8(NAME([this]() -> u8 { return m_dart->m1_r(); })); + map(0xfffff, 0xfffff).lr8(NAME([this]() -> u8 { m_maincpu->set_input_line(M68K_IRQ_7, CLEAR_LINE); return m68008_device::autovector(7); })); } void abc1600_state::machine_start() diff --git a/src/mame/drivers/abc80.cpp b/src/mame/drivers/abc80.cpp index 2086d174ba1..7dea7548233 100644 --- a/src/mame/drivers/abc80.cpp +++ b/src/mame/drivers/abc80.cpp @@ -537,7 +537,7 @@ void abc80_state::abc80(machine_config &config) generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, KEYBOARD_TAG, 0)); keyboard.set_keyboard_callback(FUNC(abc80_state::kbd_w)); - QUICKLOAD(config, "quickload", "bac", attotime::from_seconds(2)).set_load_callback(FUNC(abc80_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bac", attotime::from_seconds(2)).set_load_callback(FUNC(abc80_state::quickload_cb)); // internal ram RAM(config, RAM_TAG).set_default_size("16K"); diff --git a/src/mame/drivers/abc80x.cpp b/src/mame/drivers/abc80x.cpp index 98a9da1c6d4..8395ec6ced7 100644 --- a/src/mame/drivers/abc80x.cpp +++ b/src/mame/drivers/abc80x.cpp @@ -1115,7 +1115,7 @@ void abc800_state::common(machine_config &config) SOFTWARE_LIST(config, "hdd_list").set_original("abc800_hdd"); // quickload - QUICKLOAD(config, "quickload", "bac", attotime::from_seconds(2)).set_load_callback(FUNC(abc800_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bac", attotime::from_seconds(2)).set_load_callback(FUNC(abc800_state::quickload_cb)); } diff --git a/src/mame/drivers/aci_ggm.cpp b/src/mame/drivers/aci_ggm.cpp index 1c740817b8d..865fb38e46c 100644 --- a/src/mame/drivers/aci_ggm.cpp +++ b/src/mame/drivers/aci_ggm.cpp @@ -450,7 +450,7 @@ void ggm_state::ggm(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "ggm", "bin"); - m_cart->set_device_load(FUNC(ggm_state::cartridge), this); + m_cart->set_device_load(FUNC(ggm_state::cartridge)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("ggm"); diff --git a/src/mame/drivers/adm23.cpp b/src/mame/drivers/adm23.cpp index 4d957aef7c4..04b1c419590 100644 --- a/src/mame/drivers/adm23.cpp +++ b/src/mame/drivers/adm23.cpp @@ -67,8 +67,8 @@ void adm23_state::adm23(machine_config &config) crtc.set_char_width(9); crtc.set_show_border_area(false); crtc.set_screen("screen"); - crtc.set_update_row_callback(FUNC(adm23_state::update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(adm23_state::addr_changed), this); + crtc.set_update_row_callback(FUNC(adm23_state::update_row)); + crtc.set_on_update_addr_change_callback(FUNC(adm23_state::addr_changed)); } ROM_START(adm23) diff --git a/src/mame/drivers/aerofgt.cpp b/src/mame/drivers/aerofgt.cpp index 6756d8d3869..40379901a65 100644 --- a/src/mame/drivers/aerofgt.cpp +++ b/src/mame/drivers/aerofgt.cpp @@ -1489,7 +1489,7 @@ void aerofgt_state::pspikes(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1616,7 +1616,7 @@ void aerofgt_state::kickball(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1664,7 +1664,7 @@ void aerofgt_state::pspikesc(machine_config &config) //VSYSTEM_GGA(config, "gga", 0); VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1706,12 +1706,12 @@ void aerofgt_state::karatblz(machine_config &config) VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback), this); + m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback)); m_spr_old[1]->set_gfx_region(3); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1760,12 +1760,12 @@ void aerofgt_state::karatblzbl(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024); VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback), this); + m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback)); m_spr_old[1]->set_gfx_region(3); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1822,7 +1822,7 @@ void aerofgt_state::spinlbrk(machine_config &config) m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::spinbrk_tile_callback), this); // rom lookup + m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::spinbrk_tile_callback)); // rom lookup m_spr_old[1]->set_pritype(1); m_spr_old[1]->set_gfx_region(3); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1874,12 +1874,12 @@ void aerofgt_state::turbofrc(machine_config &config) VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback), this); + m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback)); m_spr_old[1]->set_gfx_region(3); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1930,12 +1930,12 @@ void aerofgt_state::aerofgtb(machine_config &config) VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback), this); + m_spr_old[1]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_ol2_tile_callback)); m_spr_old[1]->set_gfx_region(3); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1996,7 +1996,7 @@ void aerofgt_state::aerofgt(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024); VSYSTEM_SPR(config, m_spr, 0); - m_spr->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_tile_callback), this); + m_spr->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_tile_callback)); m_spr->set_gfx_region(2); m_spr->set_gfxdecode_tag(m_gfxdecode); @@ -2117,7 +2117,7 @@ void aerofgt_state::wbbc97(machine_config &config) //VSYSTEM_GGA(config, "gga", 0); VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(aerofgt_state::aerofgt_old_tile_callback)); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/aim65.cpp b/src/mame/drivers/aim65.cpp index 32214b2b1d5..05aa6dca50b 100644 --- a/src/mame/drivers/aim65.cpp +++ b/src/mame/drivers/aim65.cpp @@ -277,15 +277,15 @@ void aim65_state::aim65(machine_config &config) //m_rs232->rxd_handler().set(m_via0, FUNC(via6522_device::write_pb6)); // function disabled in 6522via.cpp m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(serial_term)); - GENERIC_SOCKET(config, "z26", generic_plain_slot, "aim65_z26_cart", "z26").set_device_load(FUNC(aim65_state::z26_load), this); - GENERIC_SOCKET(config, "z25", generic_plain_slot, "aim65_z25_cart", "z25").set_device_load(FUNC(aim65_state::z25_load), this); - GENERIC_SOCKET(config, "z24", generic_plain_slot, "aim65_z24_cart", "z24").set_device_load(FUNC(aim65_state::z24_load), this); + GENERIC_SOCKET(config, "z26", generic_plain_slot, "aim65_z26_cart", "z26").set_device_load(FUNC(aim65_state::z26_load)); + GENERIC_SOCKET(config, "z25", generic_plain_slot, "aim65_z25_cart", "z25").set_device_load(FUNC(aim65_state::z25_load)); + GENERIC_SOCKET(config, "z24", generic_plain_slot, "aim65_z24_cart", "z24").set_device_load(FUNC(aim65_state::z24_load)); /* PROM/ROM module sockets */ - GENERIC_SOCKET(config, "z12", generic_plain_slot, "rm65_z12_cart", "z12").set_device_load(FUNC(aim65_state::z12_load), this); - GENERIC_SOCKET(config, "z13", generic_plain_slot, "rm65_z13_cart", "z13").set_device_load(FUNC(aim65_state::z13_load), this); - GENERIC_SOCKET(config, "z14", generic_plain_slot, "rm65_z14_cart", "z14").set_device_load(FUNC(aim65_state::z14_load), this); - GENERIC_SOCKET(config, "z15", generic_plain_slot, "rm65_z15_cart", "z15").set_device_load(FUNC(aim65_state::z15_load), this); + GENERIC_SOCKET(config, "z12", generic_plain_slot, "rm65_z12_cart", "z12").set_device_load(FUNC(aim65_state::z12_load)); + GENERIC_SOCKET(config, "z13", generic_plain_slot, "rm65_z13_cart", "z13").set_device_load(FUNC(aim65_state::z13_load)); + GENERIC_SOCKET(config, "z14", generic_plain_slot, "rm65_z14_cart", "z14").set_device_load(FUNC(aim65_state::z14_load)); + GENERIC_SOCKET(config, "z15", generic_plain_slot, "rm65_z15_cart", "z15").set_device_load(FUNC(aim65_state::z15_load)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("4K").set_extra_options("1K,2K,3K"); diff --git a/src/mame/drivers/airbustr.cpp b/src/mame/drivers/airbustr.cpp index 563a55f7a9e..448908773d0 100644 --- a/src/mame/drivers/airbustr.cpp +++ b/src/mame/drivers/airbustr.cpp @@ -699,7 +699,7 @@ ROM_END void airbustr_state::init_airbustr() { - m_master->space(AS_PROGRAM).install_read_handler(0xe000, 0xefff, read8_delegate(FUNC(airbustr_state::devram_r),this)); // protection device lives here + m_master->space(AS_PROGRAM).install_read_handler(0xe000, 0xefff, read8_delegate(*this, FUNC(airbustr_state::devram_r))); // protection device lives here } diff --git a/src/mame/drivers/ajax.cpp b/src/mame/drivers/ajax.cpp index c92f94623dc..2d810660aab 100644 --- a/src/mame/drivers/ajax.cpp +++ b/src/mame/drivers/ajax.cpp @@ -200,19 +200,19 @@ void ajax_state::ajax(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(ajax_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(ajax_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_subcpu, M6809_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(ajax_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(ajax_state::sprite_callback)); m_k051960->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K051316(config, m_k051316, 0); m_k051316->set_palette(m_palette); m_k051316->set_bpp(7); - m_k051316->set_zoom_callback(FUNC(ajax_state::zoom_callback), this); + m_k051316->set_zoom_callback(FUNC(ajax_state::zoom_callback)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/akkaarrh.cpp b/src/mame/drivers/akkaarrh.cpp index 49240528d8d..9a7f355f2ff 100644 --- a/src/mame/drivers/akkaarrh.cpp +++ b/src/mame/drivers/akkaarrh.cpp @@ -90,10 +90,10 @@ static constexpr XTAL MASTER_CLOCK = 12.096_MHz_XTAL; void akkaarrh_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(akkaarrh_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(akkaarrh_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(akkaarrh_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(akkaarrh_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(akkaarrh_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(akkaarrh_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(akkaarrh_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(akkaarrh_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); m_tilemap[0]->set_flip(0); m_tilemap[1]->set_flip(TILEMAP_FLIPX); diff --git a/src/mame/drivers/albazg.cpp b/src/mame/drivers/albazg.cpp index fe708a49954..dccb8e7a287 100644 --- a/src/mame/drivers/albazg.cpp +++ b/src/mame/drivers/albazg.cpp @@ -112,7 +112,7 @@ TILE_GET_INFO_MEMBER(albazg_state::y_get_bg_tile_info) void albazg_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(albazg_state::y_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(albazg_state::y_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t albazg_state::screen_update_yumefuda(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/alcat7100.cpp b/src/mame/drivers/alcat7100.cpp index 3a3b1dec0fd..93e4ff81941 100644 --- a/src/mame/drivers/alcat7100.cpp +++ b/src/mame/drivers/alcat7100.cpp @@ -100,7 +100,7 @@ void alcat7100_state::alcat7100(machine_config &config) crtc.set_screen("screen"); crtc.set_char_width(12); crtc.set_show_border_area(false); - crtc.set_update_row_callback(FUNC(alcat7100_state::update_row), this); + crtc.set_update_row_callback(FUNC(alcat7100_state::update_row)); AY31015(config, "uart"); // AMI S1602P } diff --git a/src/mame/drivers/alesis.cpp b/src/mame/drivers/alesis.cpp index 5c73c5a4343..119803cb1cd 100644 --- a/src/mame/drivers/alesis.cpp +++ b/src/mame/drivers/alesis.cpp @@ -465,7 +465,7 @@ void alesis_state::sr16(machine_config &config) config.set_default_layout(layout_sr16); m_lcdc->set_lcd_size(2, 8); - m_lcdc->set_pixel_update_cb(FUNC(alesis_state::sr16_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(alesis_state::sr16_pixel_update)); } void alesis_state::mmt8(machine_config &config) diff --git a/src/mame/drivers/aliens.cpp b/src/mame/drivers/aliens.cpp index 33fbe27facb..c0712544c42 100644 --- a/src/mame/drivers/aliens.cpp +++ b/src/mame/drivers/aliens.cpp @@ -221,12 +221,12 @@ void aliens_state::aliens(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(aliens_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(aliens_state::tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(aliens_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(aliens_state::sprite_callback)); m_k051960->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); /* sound hardware */ diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp index 37b4d28a203..96a37710280 100644 --- a/src/mame/drivers/alpha68k.cpp +++ b/src/mame/drivers/alpha68k.cpp @@ -522,7 +522,7 @@ void alpha68k_III_state::alpha68k_V_map(address_map &map) map(0x080000, 0x080001).r(FUNC(alpha68k_III_state::control_1_r)); /* Joysticks */ map(0x080000, 0x080000).w(FUNC(alpha68k_III_state::video_bank_w)); map(0x080001, 0x080001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x0c0000, 0x0c0001).lr16("control_2_V_r", [this]() -> u16 { return m_in[3]->read(); }); /* Dip 2 */ + map(0x0c0000, 0x0c0001).lr16(NAME([this] () -> u16 { return m_in[3]->read(); })); /* Dip 2 */ map(0x0c0001, 0x0c0001).select(0x78).w(FUNC(alpha68k_III_state::outlatch_w)); map(0x0d8000, 0x0d8001).nopr(); /* IRQ ack? */ map(0x0e0000, 0x0e0001).nopr(); /* IRQ ack? */ @@ -1275,7 +1275,7 @@ void alpha68k_II_state::video_config(machine_config &config, u16 num_pens) SNK68_SPR(config, m_sprites, 0); m_sprites->set_gfxdecode_tag(m_gfxdecode); - m_sprites->set_tile_indirect_cb(FUNC(alpha68k_II_state::tile_callback), this); + m_sprites->set_tile_indirect_cb(FUNC(alpha68k_II_state::tile_callback)); m_sprites->set_xpos_shift(15); m_sprites->set_color_entry_mask((num_pens / 16) - 1); @@ -1357,13 +1357,13 @@ void alpha68k_V_state::alpha68k_V(machine_config &config) void skyadventure_state::skyadventure(machine_config &config) { alpha68k_V_state::alpha68k_V(config); - m_sprites->set_tile_indirect_cb(FUNC(skyadventure_state::tile_callback_noflipx), this); + m_sprites->set_tile_indirect_cb(FUNC(skyadventure_state::tile_callback_noflipx)); } void gangwars_state::gangwars(machine_config &config) { alpha68k_V_state::alpha68k_V(config); - m_sprites->set_tile_indirect_cb(FUNC(gangwars_state::tile_callback_noflipy), this); + m_sprites->set_tile_indirect_cb(FUNC(gangwars_state::tile_callback_noflipy)); } /******************************************************************************/ diff --git a/src/mame/drivers/alpha68k_n.cpp b/src/mame/drivers/alpha68k_n.cpp index c4602b10e7d..73aa3d7f0a9 100644 --- a/src/mame/drivers/alpha68k_n.cpp +++ b/src/mame/drivers/alpha68k_n.cpp @@ -310,7 +310,7 @@ void sstingray_state::main_map(address_map &map) map(0x060000, 0x060001).ram().share("videoram"); // MSB: watchdog, LSB: BGC map(0x080000, 0x0801ff).rw(FUNC(sstingray_state::alpha8511_command_r), FUNC(sstingray_state::alpha8511_command_w)).umask16(0x00ff); map(0x0c0000, 0x0c0001).portr("IN0"); - map(0x0e0000, 0x0e0000).lr8("kyros_dip_r", [this]() -> u8 { return m_in[1]->read(); }).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0e0000, 0x0e0000).lr8(NAME([this] () -> u8 { return m_in[1]->read(); })).w(m_soundlatch, FUNC(generic_latch_8_device::write)); } void alpha68k_N_state::main_map(address_map &map) @@ -321,7 +321,7 @@ void alpha68k_N_state::main_map(address_map &map) map(0x060000, 0x060001).ram().share("videoram"); // MSB: watchdog, LSB: BGC map(0x080000, 0x0801ff).rw(FUNC(kyros_state::kyros_alpha_trigger_r), FUNC(kyros_state::alpha_microcontroller_w)); map(0x0c0000, 0x0c0001).portr("IN0"); - map(0x0e0000, 0x0e0000).lr8("kyros_dip_r", [this]() -> u8 { return m_in[1]->read(); }).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x0e0000, 0x0e0000).lr8(NAME([this] () -> u8 { return m_in[1]->read(); })).w(m_soundlatch, FUNC(generic_latch_8_device::write)); } void jongbou_state::main_map(address_map &map) diff --git a/src/mame/drivers/alphasma.cpp b/src/mame/drivers/alphasma.cpp index 2df7f75c6ad..a78c85939af 100644 --- a/src/mame/drivers/alphasma.cpp +++ b/src/mame/drivers/alphasma.cpp @@ -211,7 +211,7 @@ WRITE8_MEMBER(asma2k_state::port_a_w) if (data & 0x40) space.install_readwrite_bank(0x0000, 0x7fff, "rambank"); else - space.install_readwrite_handler(0x0000, 0x7fff, read8_delegate(FUNC(asma2k_state::io_r), this), write8_delegate(FUNC(asma2k_state::io_w), this)); + space.install_readwrite_handler(0x0000, 0x7fff, read8_delegate(*this, FUNC(asma2k_state::io_r)), write8_delegate(*this, FUNC(asma2k_state::io_w))); } m_rambank->set_entry(((data>>4) & 0x03)); diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index bedb42e9593..a7e71bccd00 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -769,7 +769,7 @@ void alphatro_state::alphatro(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(alphatro_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(alphatro_state::crtc_update_row)); I8251(config, m_usart, 16_MHz_XTAL / 4); m_usart->txd_handler().set([this] (bool state) { m_cassbit = state; }); @@ -787,7 +787,7 @@ void alphatro_state::alphatro(machine_config &config) RAM(config, "ram").set_default_size("64K"); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "alphatro_cart", "bin").set_device_load(FUNC(alphatro_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "alphatro_cart", "bin").set_device_load(FUNC(alphatro_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("alphatro_cart"); /* 0000 banking */ diff --git a/src/mame/drivers/altair.cpp b/src/mame/drivers/altair.cpp index 7516502342d..701bdb0b792 100644 --- a/src/mame/drivers/altair.cpp +++ b/src/mame/drivers/altair.cpp @@ -119,7 +119,7 @@ void altair_state::altair(machine_config &config) uart_clock.signal_handler().append("acia", FUNC(acia6850_device::write_rxc)); /* quickload */ - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(altair_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(altair_state::quickload_cb)); } /* ROM definition */ diff --git a/src/mame/drivers/altos5.cpp b/src/mame/drivers/altos5.cpp index 88224c6a38c..85dbc36eeba 100644 --- a/src/mame/drivers/altos5.cpp +++ b/src/mame/drivers/altos5.cpp @@ -475,7 +475,7 @@ void altos5_state::altos5(machine_config &config) FLOPPY_CONNECTOR(config, "fdc:1", altos5_floppies, "525qd", floppy_image_device::default_floppy_formats).enable_sound(true); SOFTWARE_LIST(config, "flop_list").set_original("altos5"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(altos5_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(altos5_state::quickload_cb)); } diff --git a/src/mame/drivers/ambush.cpp b/src/mame/drivers/ambush.cpp index bb6b400b7a2..9f9f02fc119 100644 --- a/src/mame/drivers/ambush.cpp +++ b/src/mame/drivers/ambush.cpp @@ -681,7 +681,7 @@ MACHINE_START_MEMBER( ambush_state, ambush ) register_save_states(); // create character tilemap - m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ambush_state::ambush_char_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ambush_state::ambush_char_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_char_tilemap->set_transparent_pen(0); m_char_tilemap->set_scroll_cols(32); } @@ -691,7 +691,7 @@ MACHINE_START_MEMBER( ambush_state, mariobl ) register_save_states(); // create character tilemap - m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ambush_state::mariobl_char_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ambush_state::mariobl_char_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_char_tilemap->set_transparent_pen(0); m_gfxdecode->gfx(0)->set_granularity(8); } @@ -701,7 +701,7 @@ MACHINE_START_MEMBER( ambush_state, dkong3abl ) register_save_states(); // create character tilemap - m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ambush_state::dkong3abl_char_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ambush_state::dkong3abl_char_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_char_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index d66c9a3b7f9..94f51d99d95 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -810,7 +810,7 @@ void amstrad_state::cpcplus_cartslot(machine_config &config) { generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "gx4000_cart", "bin,cpr")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(amstrad_state::amstrad_plus_cartridge), this); + cartslot.set_device_load(FUNC(amstrad_state::amstrad_plus_cartridge)); SOFTWARE_LIST(config, "cart_list").set_original("gx4000"); } @@ -957,7 +957,7 @@ void amstrad_state::amstrad_base(machine_config &config) m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy)); /* snapshot */ - SNAPSHOT(config, "snapshot", "sna").set_load_callback(FUNC(amstrad_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "sna").set_load_callback(FUNC(amstrad_state::snapshot_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(cdt_cassette_formats); @@ -1082,7 +1082,7 @@ void amstrad_state::cpcplus(machine_config &config) m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy)); /* snapshot */ - SNAPSHOT(config, "snapshot", "sna").set_load_callback(FUNC(amstrad_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "sna").set_load_callback(FUNC(amstrad_state::snapshot_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(cdt_cassette_formats); diff --git a/src/mame/drivers/amusco.cpp b/src/mame/drivers/amusco.cpp index b9e367d3a37..8579713ff6d 100644 --- a/src/mame/drivers/amusco.cpp +++ b/src/mame/drivers/amusco.cpp @@ -191,7 +191,7 @@ TILE_GET_INFO_MEMBER(amusco_state::get_bg_tile_info) void amusco_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(amusco_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 10, 74, 24); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(amusco_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 10, 74, 24); m_blink_state = false; m_videoram = std::make_unique<uint8_t []>(videoram_size); @@ -589,10 +589,9 @@ void amusco_state::amusco(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_on_update_addr_change_callback(FUNC(amusco_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(amusco_state::crtc_addr)); m_crtc->out_de_callback().set(m_pic, FUNC(pic8259_device::ir1_w)); // IRQ1 sets 0x918 bit 3 - m_crtc->set_update_row_callback(FUNC(amusco_state::update_row), this); - + m_crtc->set_update_row_callback(FUNC(amusco_state::update_row)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/amust.cpp b/src/mame/drivers/amust.cpp index 58cd91fd1ee..819708e8b3c 100644 --- a/src/mame/drivers/amust.cpp +++ b/src/mame/drivers/amust.cpp @@ -459,7 +459,7 @@ void amust_state::amust(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(amust_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(amust_state::crtc_update_row)); crtc.out_hsync_callback().set(FUNC(amust_state::hsync_w)); crtc.out_vsync_callback().set(FUNC(amust_state::vsync_w)); diff --git a/src/mame/drivers/apf.cpp b/src/mame/drivers/apf.cpp index 880d9ec19ce..7e76e51b7c3 100644 --- a/src/mame/drivers/apf.cpp +++ b/src/mame/drivers/apf.cpp @@ -252,11 +252,11 @@ void apf_state::machine_start() switch (m_cart->get_type()) { case APF_BASIC: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6800, 0x7fff, read8_delegate(FUNC(apf_cart_slot_device::extra_rom),(apf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6800, 0x7fff, read8_delegate(*m_cart, FUNC(apf_cart_slot_device::extra_rom))); break; case APF_SPACEDST: m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x9800, 0x9fff); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9800, 0x9bff, read8_delegate(FUNC(apf_cart_slot_device::read_ram),(apf_cart_slot_device*)m_cart), write8_delegate(FUNC(apf_cart_slot_device::write_ram),(apf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9800, 0x9bff, read8_delegate(*m_cart, FUNC(apf_cart_slot_device::read_ram)), write8_delegate(*m_cart, FUNC(apf_cart_slot_device::write_ram))); m_has_cart_ram = true; break; } diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp index 71f5ca64697..f0e9366b0c6 100644 --- a/src/mame/drivers/apollo.cpp +++ b/src/mame/drivers/apollo.cpp @@ -444,7 +444,7 @@ WRITE32_MEMBER(apollo_state::ram_with_parity_w){ // no more than 192 read/write handlers may be used // see table_assign_handler in memory.c if (parity_error_handler_install_counter < 40) { - m_maincpu->space(AS_PROGRAM).install_read_handler(ram_base_address+offset*4, ram_base_address+offset*4+3, read32_delegate(FUNC(apollo_state::ram_with_parity_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(ram_base_address+offset*4, ram_base_address+offset*4+3, read32_delegate(*this, FUNC(apollo_state::ram_with_parity_r))); parity_error_handler_is_installed = 1; parity_error_handler_install_counter++; } @@ -917,7 +917,7 @@ void apollo_state::machine_reset() } #if 0 - m_maincpu->set_instruction_hook(read32_delegate(FUNC(apollo_state::apollo_instruction_hook),this)); + m_maincpu->set_instruction_hook(read32_delegate(*this, FUNC(apollo_state::apollo_instruction_hook))); #endif } @@ -955,8 +955,8 @@ void apollo_state::machine_start(){ MACHINE_START_CALL_MEMBER(apollo); // install nop handlers for unmapped ISA bus addresses - m_isa->install16_device((ATBUS_IO_BASE - 0x40000) >> 7, (ATBUS_IO_END - 0x40000) >> 7, read16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_r), this), write16_delegate(FUNC(apollo_state::apollo_atbus_unmap_io_w), this)); - m_isa->install_memory(0, ATBUS_MEMORY_END, read8_delegate(FUNC(apollo_state::apollo_atbus_unmap_r), this), write8_delegate(FUNC(apollo_state::apollo_atbus_unmap_w), this)); + m_isa->install16_device((ATBUS_IO_BASE - 0x40000) >> 7, (ATBUS_IO_END - 0x40000) >> 7, read16_delegate(*this, FUNC(apollo_state::apollo_atbus_unmap_io_r)), write16_delegate(*this, FUNC(apollo_state::apollo_atbus_unmap_io_w))); + m_isa->install_memory(0, ATBUS_MEMORY_END, read8_delegate(*this, FUNC(apollo_state::apollo_atbus_unmap_r)), write8_delegate(*this, FUNC(apollo_state::apollo_atbus_unmap_w))); } /*************************************************************************** @@ -968,7 +968,7 @@ void apollo_state::init_dn3500() // MLOG1(("driver_init_dn3500")); /* hook the RESET line, which resets a slew of other components */ - m_maincpu->set_reset_callback(write_line_delegate(FUNC(apollo_state::apollo_reset_instr_callback),this)); + m_maincpu->set_reset_callback(FUNC(apollo_state::apollo_reset_instr_callback)); ram_base_address = DN3500_RAM_BASE; ram_end_address = DN3500_RAM_END; diff --git a/src/mame/drivers/apple1.cpp b/src/mame/drivers/apple1.cpp index b2f5b5e6c54..26fc47f880a 100644 --- a/src/mame/drivers/apple1.cpp +++ b/src/mame/drivers/apple1.cpp @@ -615,7 +615,7 @@ void apple1_state::apple1(machine_config &config) A1BUS(config, A1_BUS_TAG, 0).set_space(m_maincpu, AS_PROGRAM); A1BUS_SLOT(config, "exp", 0, A1_BUS_TAG, apple1_cards, "cassette"); - SNAPSHOT(config, "snapshot", "snp").set_load_callback(FUNC(apple1_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "snp").set_load_callback(FUNC(apple1_state::snapshot_cb)); SOFTWARE_LIST(config, "cass_list").set_original("apple1"); diff --git a/src/mame/drivers/apple2.cpp b/src/mame/drivers/apple2.cpp index 17235a8ad4f..f24eda24da6 100644 --- a/src/mame/drivers/apple2.cpp +++ b/src/mame/drivers/apple2.cpp @@ -1324,8 +1324,7 @@ void apple2_state::apple2_common(machine_config &config) m_ay3600->ako().set(FUNC(apple2_state::ay3600_ako_w)); /* repeat timer. 15 Hz from page 90 of "The Apple II Circuit Description */ - timer_device &timer(TIMER(config, "repttmr", 0)); - timer.configure_periodic(timer_device::expired_delegate(FUNC(apple2_state::ay3600_repeat), this), attotime::from_hz(15)); + TIMER(config, "repttmr", 0).configure_periodic(FUNC(apple2_state::ay3600_repeat), attotime::from_hz(15)); /* slot devices */ A2BUS(config, m_a2bus, 0); diff --git a/src/mame/drivers/apple2e.cpp b/src/mame/drivers/apple2e.cpp index 31240a2fdb4..6ba64a2bb6e 100644 --- a/src/mame/drivers/apple2e.cpp +++ b/src/mame/drivers/apple2e.cpp @@ -4300,7 +4300,7 @@ void apple2e_state::apple2e(machine_config &config) /* repeat timer. 15 Hz from page 7-15 of "Understanding the Apple IIe" */ timer_device &timer(TIMER(config, "repttmr", 0)); - timer.configure_periodic(timer_device::expired_delegate(FUNC(apple2e_state::ay3600_repeat), this), attotime::from_hz(15)); + timer.configure_periodic(FUNC(apple2e_state::ay3600_repeat), attotime::from_hz(15)); /* slot devices */ A2BUS(config, m_a2bus, 0); diff --git a/src/mame/drivers/applix.cpp b/src/mame/drivers/applix.cpp index 8140bb64cfb..b08da95aba5 100644 --- a/src/mame/drivers/applix.cpp +++ b/src/mame/drivers/applix.cpp @@ -896,8 +896,8 @@ void applix_state::applix(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(applix_state::crtc_update_row), this); - m_crtc->set_begin_update_callback(FUNC(applix_state::crtc_update_border), this); + m_crtc->set_update_row_callback(FUNC(applix_state::crtc_update_row)); + m_crtc->set_begin_update_callback(FUNC(applix_state::crtc_update_border)); m_crtc->out_vsync_callback().set(FUNC(applix_state::vsync_w)); VIA6522(config, m_via, 30_MHz_XTAL / 4 / 10); // VIA uses 68000 E clock diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp index 417c0b6c739..4cb8b34d8d4 100644 --- a/src/mame/drivers/apricot.cpp +++ b/src/mame/drivers/apricot.cpp @@ -393,7 +393,7 @@ void apricot_state::apricot(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(10); - m_crtc->set_update_row_callback(FUNC(apricot_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(apricot_state::crtc_update_row)); m_crtc->out_de_callback().set(FUNC(apricot_state::apricot_hd6845_de)); // sound hardware diff --git a/src/mame/drivers/apricotp.cpp b/src/mame/drivers/apricotp.cpp index 2def89372c1..0e449e4b777 100644 --- a/src/mame/drivers/apricotp.cpp +++ b/src/mame/drivers/apricotp.cpp @@ -603,7 +603,7 @@ void fp_state::fp(machine_config &config) m_crtc->set_screen(SCREEN_CRT_TAG); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(fp_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(fp_state::update_row)); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/aquarium.cpp b/src/mame/drivers/aquarium.cpp index 0a18960d945..35f3981c31c 100644 --- a/src/mame/drivers/aquarium.cpp +++ b/src/mame/drivers/aquarium.cpp @@ -248,7 +248,7 @@ void aquarium_state::aquarium(machine_config &config) EXCELLENT_SPRITE(config, m_sprgen, 0); m_sprgen->set_palette(m_palette); m_sprgen->set_color_base(0x300); - m_sprgen->set_colpri_callback(FUNC(aquarium_state::aquarium_colpri_cb), this); + m_sprgen->set_colpri_callback(FUNC(aquarium_state::aquarium_colpri_cb)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/arcadia.cpp b/src/mame/drivers/arcadia.cpp index a385743900a..aab239326d2 100644 --- a/src/mame/drivers/arcadia.cpp +++ b/src/mame/drivers/arcadia.cpp @@ -454,12 +454,12 @@ void arcadia_state::machine_start() { switch (m_cart->get_type()) { - case ARCADIA_STD: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x7fff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart)); - break; - case ARCADIA_GOLF: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(arcadia_cart_slot_device::extra_rom),(arcadia_cart_slot_device*)m_cart)); - break; + case ARCADIA_STD: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x7fff, read8_delegate(*m_cart, FUNC(arcadia_cart_slot_device::extra_rom))); + break; + case ARCADIA_GOLF: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(*m_cart, FUNC(arcadia_cart_slot_device::extra_rom))); + break; } } } diff --git a/src/mame/drivers/argo.cpp b/src/mame/drivers/argo.cpp index 0e2e3e06f65..fba33d67549 100644 --- a/src/mame/drivers/argo.cpp +++ b/src/mame/drivers/argo.cpp @@ -495,7 +495,7 @@ void argo_state::argo(machine_config &config) i8275_device &crtc(I8275(config, "crtc", XTAL(20'000'000) / 12)); // unknown frequency crtc.set_character_width(6); - crtc.set_display_callback(FUNC(argo_state::display_pixels), this); + crtc.set_display_callback(FUNC(argo_state::display_pixels)); crtc.drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w)); crtc.set_screen("screen"); } diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp index 83bf0c53aa5..8652d093d82 100644 --- a/src/mame/drivers/arkanoid.cpp +++ b/src/mame/drivers/arkanoid.cpp @@ -2112,12 +2112,12 @@ ROM_END /* Driver Initialization */ -void arkanoid_state::arkanoid_bootleg_init( ) +void arkanoid_state::arkanoid_bootleg_init() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xf000, 0xf000, read8_delegate(FUNC(arkanoid_state::arkanoid_bootleg_f000_r),this) ); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xf002, 0xf002, read8_delegate(FUNC(arkanoid_state::arkanoid_bootleg_f002_r),this) ); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd018, 0xd018, write8_delegate(FUNC(arkanoid_state::arkanoid_bootleg_d018_w),this) ); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd008, 0xd008, read8_delegate(FUNC(arkanoid_state::arkanoid_bootleg_d008_r),this) ); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xf000, 0xf000, read8_delegate(*this, FUNC(arkanoid_state::arkanoid_bootleg_f000_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xf002, 0xf002, read8_delegate(*this, FUNC(arkanoid_state::arkanoid_bootleg_f002_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd018, 0xd018, write8_delegate(*this, FUNC(arkanoid_state::arkanoid_bootleg_d018_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd008, 0xd008, read8_delegate(*this, FUNC(arkanoid_state::arkanoid_bootleg_d008_r))); } void arkanoid_state::init_arkangc() @@ -2195,12 +2195,12 @@ void arkanoid_state::init_tetrsark() ROM[x] = ROM[x] ^ 0x94; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd008, 0xd008, write8_delegate(FUNC(arkanoid_state::tetrsark_d008_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd008, 0xd008, write8_delegate(*this, FUNC(arkanoid_state::tetrsark_d008_w))); } void arkanoid_state::init_tetrsark2() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd008, 0xd008, write8_delegate(FUNC(arkanoid_state::tetrsark_d008_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd008, 0xd008, write8_delegate(*this, FUNC(arkanoid_state::tetrsark_d008_w))); } diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index 6f266ad8704..7fe361f309f 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -2135,24 +2135,24 @@ void armedf_state::init_terraf() { m_scroll_type = 0; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(FUNC(armedf_state::bootleg_io_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c006, 0x07c007, write16_delegate(FUNC(armedf_state::terraf_fg_scrolly_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c008, 0x07c009, write16_delegate(FUNC(armedf_state::terraf_fg_scrollx_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0c0001, write16_delegate(FUNC(armedf_state::terraf_fg_scroll_msb_arm_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::bootleg_io_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c006, 0x07c007, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scrolly_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c008, 0x07c009, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scrollx_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0c0001, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scroll_msb_arm_w))); } void armedf_state::init_terrafu() { m_scroll_type = 0; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(FUNC(armedf_state::terraf_io_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); } void armedf_state::init_terrafjb() { m_scroll_type = 0; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(FUNC(armedf_state::terrafjb_io_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terrafjb_io_w))); } void armedf_state::init_armedf() @@ -2171,7 +2171,7 @@ void armedf_state::init_kozure() ROM[0x04fc6/2] = 0x4e71; m_scroll_type = 0; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(FUNC(armedf_state::terraf_io_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); } @@ -2206,7 +2206,7 @@ void armedf_state::init_legionjb() void armedf_state::init_cclimbr2() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(FUNC(armedf_state::terraf_io_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); m_scroll_type = 3; } diff --git a/src/mame/drivers/artmagic.cpp b/src/mame/drivers/artmagic.cpp index 2e6d00a40d5..7ffc6833055 100644 --- a/src/mame/drivers/artmagic.cpp +++ b/src/mame/drivers/artmagic.cpp @@ -1157,7 +1157,7 @@ void artmagic_state::init_ultennis() m_protection_handler = &artmagic_state::ultennis_protection; /* additional (protection?) hack */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(FUNC(artmagic_state::ultennis_hack_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(*this, FUNC(artmagic_state::ultennis_hack_r))); } diff --git a/src/mame/drivers/asterix.cpp b/src/mame/drivers/asterix.cpp index 94019c13c53..97cff42f8e8 100644 --- a/src/mame/drivers/asterix.cpp +++ b/src/mame/drivers/asterix.cpp @@ -284,14 +284,14 @@ void asterix_state::asterix(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(asterix_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(asterix_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 1); m_k056832->set_palette("palette"); K053244(config, m_k053244, 0); m_k053244->set_palette("palette"); m_k053244->set_offsets(-3, -1); - m_k053244->set_sprite_callback(FUNC(asterix_state::sprite_callback), this); + m_k053244->set_sprite_callback(FUNC(asterix_state::sprite_callback)); K053251(config, m_k053251, 0); diff --git a/src/mame/drivers/asteroid.cpp b/src/mame/drivers/asteroid.cpp index 1e18d8b4eba..2fb03b74e0d 100644 --- a/src/mame/drivers/asteroid.cpp +++ b/src/mame/drivers/asteroid.cpp @@ -1173,7 +1173,7 @@ void asteroid_state::init_asteroidb() void asteroid_state::init_asterock() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2007, read8_delegate(FUNC(asteroid_state::asterock_IN0_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2007, read8_delegate(*this, FUNC(asteroid_state::asterock_IN0_r))); } diff --git a/src/mame/drivers/astrof.cpp b/src/mame/drivers/astrof.cpp index 2556459885d..8862a3ff6d0 100644 --- a/src/mame/drivers/astrof.cpp +++ b/src/mame/drivers/astrof.cpp @@ -1341,8 +1341,8 @@ void astrof_state::init_abattle() rom[i] = prom[rom[i]]; /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(FUNC(astrof_state::shoot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(FUNC(astrof_state::abattle_coin_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(*this, FUNC(astrof_state::shoot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(*this, FUNC(astrof_state::abattle_coin_prot_r))); } @@ -1353,8 +1353,8 @@ void astrof_state::init_afire() rom[i] = ~rom[i]; /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(FUNC(astrof_state::shoot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(FUNC(astrof_state::afire_coin_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(*this, FUNC(astrof_state::shoot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(*this, FUNC(astrof_state::afire_coin_prot_r))); } @@ -1365,15 +1365,15 @@ void astrof_state::init_sstarbtl() rom[i] = ~rom[i]; /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(FUNC(astrof_state::shoot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(FUNC(astrof_state::abattle_coin_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(*this, FUNC(astrof_state::shoot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(*this, FUNC(astrof_state::abattle_coin_prot_r))); } void astrof_state::init_acombat3() { /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(FUNC(astrof_state::shoot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(FUNC(astrof_state::abattle_coin_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa003, 0xa003, read8_delegate(*this, FUNC(astrof_state::shoot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa004, 0xa004, read8_delegate(*this, FUNC(astrof_state::abattle_coin_prot_r))); } diff --git a/src/mame/drivers/astrohome.cpp b/src/mame/drivers/astrohome.cpp index 87921cc4ba6..947561e662f 100644 --- a/src/mame/drivers/astrohome.cpp +++ b/src/mame/drivers/astrohome.cpp @@ -263,14 +263,14 @@ void astrocde_state::init_astrocde() MACHINE_START_MEMBER(astrocde_home_state, astrocde) { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x3fff, read8_delegate(FUNC(astrocade_cart_slot_device::read_rom),(astrocade_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x3fff, read8_delegate(*m_cart, FUNC(astrocade_cart_slot_device::read_rom))); // if no RAM is mounted and the handlers are installed, the system starts with garbage on screen and a RESET is necessary // thus, install RAM only if an expansion is mounted if (m_exp->get_card_mounted()) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x5000, 0xffff, read8_delegate(FUNC(astrocade_exp_device::read),(astrocade_exp_device*)m_exp), write8_delegate(FUNC(astrocade_exp_device::write),(astrocade_exp_device*)m_exp)); - m_maincpu->space(AS_IO).install_readwrite_handler(0x0080, 0x00ff, 0x0000, 0x0000, 0xff00, read8_delegate(FUNC(astrocade_exp_device::read_io),(astrocade_exp_device*)m_exp), write8_delegate(FUNC(astrocade_exp_device::write_io),(astrocade_exp_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x5000, 0xffff, read8_delegate(*m_exp, FUNC(astrocade_exp_device::read)), write8_delegate(*m_exp, FUNC(astrocade_exp_device::write))); + m_maincpu->space(AS_IO).install_readwrite_handler(0x0080, 0x00ff, 0x0000, 0x0000, 0xff00, read8_delegate(*m_exp, FUNC(astrocade_exp_device::read_io)), write8_delegate(*m_exp, FUNC(astrocade_exp_device::write_io))); } } diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index 25140be246a..af14a96f464 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -839,7 +839,7 @@ void asuka_state::bonzeadv(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); - m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb)); TC0100SCN(config, m_tc0100scn, 0); m_tc0100scn->set_palette(m_tc0110pcr); @@ -894,7 +894,7 @@ void asuka_state::asuka(machine_config &config) m_pc090oj->set_offsets(0, 8); m_pc090oj->set_usebuffer(true); m_pc090oj->set_palette(m_tc0110pcr); - m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb)); TC0100SCN(config, m_tc0100scn, 0); m_tc0100scn->set_palette(m_tc0110pcr); @@ -961,7 +961,7 @@ void asuka_state::cadash(machine_config &config) m_pc090oj->set_offsets(0, 8); m_pc090oj->set_usebuffer(true); m_pc090oj->set_palette(m_tc0110pcr); - m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb)); TC0100SCN(config, m_tc0100scn, 0); m_tc0100scn->set_offsets(1, 0); @@ -1016,7 +1016,7 @@ void asuka_state::mofflott(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); - m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb)); TC0100SCN(config, m_tc0100scn, 0); m_tc0100scn->set_offsets(1, 0); @@ -1079,7 +1079,7 @@ void asuka_state::eto(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); - m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb)); TC0100SCN(config, m_tc0100scn, 0); m_tc0100scn->set_offsets(1, 0); diff --git a/src/mame/drivers/atari400.cpp b/src/mame/drivers/atari400.cpp index 571509a04d7..f6bffb8619b 100644 --- a/src/mame/drivers/atari400.cpp +++ b/src/mame/drivers/atari400.cpp @@ -1920,20 +1920,20 @@ void a400_state::setup_cart(a800_cart_slot_device *slot) switch (slot->get_cart_type()) { case A800_8K: - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); break; case A800_8K_RIGHT: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x9fff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x9fff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0x9fff); break; case A800_16K: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0xbfff); break; case A800_BBSB: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0x9fff, write8_delegate(FUNC(a800_cart_slot_device::write_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0x9fff, write8_delegate(*slot, FUNC(a800_cart_slot_device::write_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); break; case A800_OSS034M: @@ -1943,57 +1943,57 @@ void a400_state::setup_cart(a800_cart_slot_device *slot) case A800_TURBO64: case A800_TURBO128: case A800_PHOENIX: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_EXPRESS: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd570, 0xd57f, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd570, 0xd57f, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_DIAMOND: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd5d0, 0xd5df, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd5d0, 0xd5df, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_WILLIAMS: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd50f, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd50f, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_SPARTADOS: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd5e0, 0xd5ef, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd5e0, 0xd5ef, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_BLIZZARD: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_8000), this), write8_delegate(FUNC(a400_state::special_write_8000), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_8000)), write8_delegate(*this, FUNC(a400_state::special_write_8000))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_MICROCALC: // this can also disable ROM when reading in 0xd500-0xd5ff - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(FUNC(a400_state::special_read_a000), this), write8_delegate(FUNC(a400_state::special_write_a000), this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd500, 0xd5ff, read8_delegate(FUNC(a400_state::read_d5xx), this), write8_delegate(FUNC(a400_state::disable_cart), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa000, 0xbfff, read8_delegate(*this, FUNC(a400_state::special_read_a000)), write8_delegate(*this, FUNC(a400_state::special_write_a000))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd500, 0xd5ff, read8_delegate(*this, FUNC(a400_state::read_d5xx)), write8_delegate(*this, FUNC(a400_state::disable_cart))); break; case A800_TELELINK2: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x9000, 0x90ff, write8_delegate(FUNC(a800_cart_slot_device::write_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x9000, 0x90ff, write8_delegate(*slot, FUNC(a800_cart_slot_device::write_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0xa000, 0xbfff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd501, 0xd501, read8_delegate(FUNC(a800_cart_slot_device::read_d5xx),(a800_cart_slot_device*)slot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd502, 0xd502, write8_delegate(FUNC(a800_cart_slot_device::write_d5xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd501, 0xd501, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_d5xx))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd502, 0xd502, write8_delegate(*slot, FUNC(a800_cart_slot_device::write_d5xx))); break; case A800_XEGS: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0x8000, 0xbfff); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(FUNC(a800_cart_slot_device::write_d5xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd500, 0xd5ff, write8_delegate(*slot, FUNC(a800_cart_slot_device::write_d5xx))); break; case A5200_4K: case A5200_8K: case A5200_16K: case A5200_32K: case A5200_16K_2CHIPS: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0x4000, 0xbfff); break; case A5200_BBSB: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(FUNC(a800_cart_slot_device::read_80xx),(a800_cart_slot_device*)slot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4000, 0x5fff, write8_delegate(FUNC(a800_cart_slot_device::write_80xx),(a800_cart_slot_device*)slot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8_delegate(*slot, FUNC(a800_cart_slot_device::read_80xx))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4000, 0x5fff, write8_delegate(*slot, FUNC(a800_cart_slot_device::write_80xx))); m_maincpu->space(AS_PROGRAM).unmap_write(0x6000, 0xbfff); break; } diff --git a/src/mame/drivers/atarig1.cpp b/src/mame/drivers/atarig1.cpp index 7fef9366911..b079c927777 100644 --- a/src/mame/drivers/atarig1.cpp +++ b/src/mame/drivers/atarig1.cpp @@ -156,7 +156,7 @@ READ16_MEMBER(atarig1_state::pitfightb_cheap_slapstic_r) void atarig1_state::pitfightb_cheap_slapstic_init() { /* install a read handler */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x038000, 0x03ffff, read16_delegate(FUNC(atarig1_state::pitfightb_cheap_slapstic_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x038000, 0x03ffff, read16_delegate(*this, FUNC(atarig1_state::pitfightb_cheap_slapstic_r))); m_bslapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0x38000); /* allocate memory for a copy of bank 0 */ diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp index 2c1be9ac4b8..277cca66f7e 100644 --- a/src/mame/drivers/atarig42.cpp +++ b/src/mame/drivers/atarig42.cpp @@ -830,7 +830,7 @@ void atarig42_0x200_state::init_roadriot() m_playfield_base = 0x400; address_space &main = m_maincpu->space(AS_PROGRAM); - main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_0x200_state::roadriot_sloop_data_r),this), write16_delegate(FUNC(atarig42_0x200_state::roadriot_sloop_data_w),this)); + main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(*this, FUNC(atarig42_0x200_state::roadriot_sloop_data_r)), write16_delegate(*this, FUNC(atarig42_0x200_state::roadriot_sloop_data_w))); m_sloop_base = (uint16_t *)memregion("maincpu")->base(); /* @@ -865,7 +865,7 @@ void atarig42_0x400_state::init_guardian() *(uint16_t *)&memregion("maincpu")->base()[0x80000] = 0x4E75; address_space &main = m_maincpu->space(AS_PROGRAM); - main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(FUNC(atarig42_0x400_state::guardians_sloop_data_r),this), write16_delegate(FUNC(atarig42_0x400_state::guardians_sloop_data_w),this)); + main.install_readwrite_handler(0x000000, 0x07ffff, read16_delegate(*this, FUNC(atarig42_0x400_state::guardians_sloop_data_r)), write16_delegate(*this, FUNC(atarig42_0x400_state::guardians_sloop_data_w))); m_sloop_base = (uint16_t *)memregion("maincpu")->base(); /* diff --git a/src/mame/drivers/atarigt.cpp b/src/mame/drivers/atarigt.cpp index ca989a8e90d..7b753688ec3 100644 --- a/src/mame/drivers/atarigt.cpp +++ b/src/mame/drivers/atarigt.cpp @@ -1330,7 +1330,7 @@ void atarigt_state::init_tmek() m_protection_w = &atarigt_state::tmek_protection_w; /* temp hack */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd72000, 0xd75fff, write32_delegate(FUNC(atarigt_state::tmek_pf_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd72000, 0xd75fff, write32_delegate(*this, FUNC(atarigt_state::tmek_pf_w))); } diff --git a/src/mame/drivers/atarigx2.cpp b/src/mame/drivers/atarigx2.cpp index 6d25473a84c..8de721542aa 100644 --- a/src/mame/drivers/atarigx2.cpp +++ b/src/mame/drivers/atarigx2.cpp @@ -2263,8 +2263,8 @@ void atarigx2_state::init_spclords() { m_playfield_base = 0x000; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc80f00, 0xc80fff, read32_delegate(FUNC(atari_136095_0072_device::polylsb_read),(atari_136095_0072_device*)&(*m_xga)), write32_delegate(FUNC(atari_136095_0072_device::polylsb_write),(atari_136095_0072_device*)&(*m_xga))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(FUNC(atari_xga_device::read),&(*m_xga)), write32_delegate(FUNC(atari_xga_device::write),&(*m_xga))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc80f00, 0xc80fff, read32_delegate(downcast<atari_136095_0072_device &>(*m_xga), FUNC(atari_136095_0072_device::polylsb_read)), write32_delegate(downcast<atari_136095_0072_device &>(*m_xga), FUNC(atari_136095_0072_device::polylsb_write))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(*m_xga, FUNC(atari_xga_device::read)), write32_delegate(*m_xga, FUNC(atari_xga_device::write))); } @@ -2293,15 +2293,15 @@ XMEM=68.A23*E.A22*!E.A21*68.A20 = 1101 xxxx = d0 +68.A23*E.A22*!E.A21*!68.A20*68.A19 = 1100 1xxx = c80000-cfffff +!68.A23*!E.A22*!E.A21 = 000x xxxx = 000000-1fffff */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(FUNC(atari_xga_device::read),&(*m_xga)), write32_delegate(FUNC(atari_xga_device::write),&(*m_xga))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(*m_xga, FUNC(atari_xga_device::read)), write32_delegate(*m_xga, FUNC(atari_xga_device::write))); } void atarigx2_state::init_rrreveng() { m_playfield_base = 0x000; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(FUNC(atarigx2_state::atarigx2_protection_r),this), write32_delegate(FUNC(atarigx2_state::atarigx2_protection_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xca0fc0, 0xca0fc3, read32_delegate(FUNC(atarigx2_state::rrreveng_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xca0000, 0xca0fff, read32_delegate(*this, FUNC(atarigx2_state::atarigx2_protection_r)), write32_delegate(*this, FUNC(atarigx2_state::atarigx2_protection_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xca0fc0, 0xca0fc3, read32_delegate(*this, FUNC(atarigx2_state::rrreveng_prot_r))); } diff --git a/src/mame/drivers/atarist.cpp b/src/mame/drivers/atarist.cpp index ed3f4e723a1..3d03aacb791 100644 --- a/src/mame/drivers/atarist.cpp +++ b/src/mame/drivers/atarist.cpp @@ -1862,7 +1862,7 @@ void st_state::machine_start() configure_memory(); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); // allocate timers if (m_mousex.found()) @@ -1917,7 +1917,7 @@ void ste_state::machine_start() configure_memory(); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); /* allocate timers */ m_dmasound_timer = timer_alloc(TIMER_DMASOUND_TICK); @@ -1964,7 +1964,7 @@ void stbook_state::machine_start() } if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfa0000, 0xfbffff, read16s_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); /* register for state saving */ ste_state::state_save(); diff --git a/src/mame/drivers/atarittl.cpp b/src/mame/drivers/atarittl.cpp index 53dd592f48b..2cd87fa4df7 100644 --- a/src/mame/drivers/atarittl.cpp +++ b/src/mame/drivers/atarittl.cpp @@ -374,7 +374,7 @@ void gtrak10_state::gtrak10(machine_config &config) /* basic machine hardware */ NETLIST_CPU(config, "maincpu", NETLIST_CLOCK).set_source(netlist_gtrak10); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("VIDEO_OUT", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("VIDEO_OUT", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); /* video hardware */ diff --git a/src/mame/drivers/atom.cpp b/src/mame/drivers/atom.cpp index b1b30cd94dc..35222ab4134 100644 --- a/src/mame/drivers/atom.cpp +++ b/src/mame/drivers/atom.cpp @@ -663,7 +663,7 @@ void atom_state::machine_start() m_baseram[0x0b] = machine().rand() & 0x0ff; if (m_cart.found() && m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8sm_delegate(FUNC(generic_slot_device::read_rom), &*m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa000, 0xafff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } /*------------------------------------------------- @@ -758,10 +758,10 @@ void atom_state::atom(machine_config &config) m_cassette->set_formats(atom_cassette_formats); m_cassette->set_interface("atom_cass"); - QUICKLOAD(config, "quickload", "atm").set_load_callback(FUNC(atom_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "atm").set_load_callback(FUNC(atom_state::quickload_cb)); /* utility rom slot */ - GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "atom_cart", "bin,rom").set_device_load(FUNC(atom_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "atom_cart", "bin,rom").set_device_load(FUNC(atom_state::cart_load)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("2K,4K,6K,8K,10K,12K").set_default_value(0x00); @@ -777,7 +777,7 @@ void atom_state::atom(machine_config &config) -------------------------------------------------*/ #define ATOM_ROM(_tag, _load) \ - GENERIC_SOCKET(config, _tag, generic_linear_slot, "atom_cart", "bin,rom").set_device_load(FUNC(atomeb_state::_load), this) \ + GENERIC_SOCKET(config, _tag, generic_linear_slot, "atom_cart", "bin,rom").set_device_load(FUNC(atomeb_state::_load)) \ void atomeb_state::atomeb(machine_config &config) { diff --git a/src/mame/drivers/attache.cpp b/src/mame/drivers/attache.cpp index c665ad28701..090677ccf6e 100644 --- a/src/mame/drivers/attache.cpp +++ b/src/mame/drivers/attache.cpp @@ -1094,7 +1094,7 @@ void attache_state::driver_start() m_nvram->set_base(m_cmos_ram,64); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000,0x0fff,read8_delegate(FUNC(attache_state::rom_r),this),write8_delegate(FUNC(attache_state::rom_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000,0x0fff, read8_delegate(*this, FUNC(attache_state::rom_r)), write8_delegate(*this, FUNC(attache_state::rom_w))); save_pointer(m_char_ram,"Character RAM",128*32); save_pointer(m_attr_ram,"Attribute RAM",128*32); diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp index 18a64b9ee11..c085db57dbd 100644 --- a/src/mame/drivers/aussiebyte.cpp +++ b/src/mame/drivers/aussiebyte.cpp @@ -585,13 +585,13 @@ void aussiebyte_state::aussiebyte(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(aussiebyte_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(aussiebyte_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(aussiebyte_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(aussiebyte_state::crtc_update_addr)); MSM5832(config, m_rtc, 32.768_kHz_XTAL); /* quickload */ - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(aussiebyte_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(aussiebyte_state::quickload_cb)); } diff --git a/src/mame/drivers/ave_arb.cpp b/src/mame/drivers/ave_arb.cpp index 9a316f15653..52482c5acf6 100644 --- a/src/mame/drivers/ave_arb.cpp +++ b/src/mame/drivers/ave_arb.cpp @@ -299,7 +299,7 @@ void arb_state::arb(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "arb", "bin"); - m_cart->set_device_load(FUNC(arb_state::cart_load), this); + m_cart->set_device_load(FUNC(arb_state::cart_load)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("arb"); diff --git a/src/mame/drivers/avigo.cpp b/src/mame/drivers/avigo.cpp index bb79a00129e..a3942391265 100644 --- a/src/mame/drivers/avigo.cpp +++ b/src/mame/drivers/avigo.cpp @@ -812,7 +812,7 @@ void avigo_state::avigo(machine_config &config) TIMER(config, "1hz_timer").configure_periodic(FUNC(avigo_state::avigo_1hz_timer), attotime::from_hz(1)); /* quickload */ - QUICKLOAD(config, "quickload", "app").set_load_callback(FUNC(avigo_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "app").set_load_callback(FUNC(avigo_state::quickload_cb)); } diff --git a/src/mame/drivers/avt.cpp b/src/mame/drivers/avt.cpp index c3fe2892b01..4864c3d7d59 100644 --- a/src/mame/drivers/avt.cpp +++ b/src/mame/drivers/avt.cpp @@ -537,7 +537,7 @@ TILE_GET_INFO_MEMBER(avt_state::get_bg_tile_info) void avt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(avt_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 28, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(avt_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 28, 32); } diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp index 6b03aa0f27c..2681cdb1cbe 100644 --- a/src/mame/drivers/babbage.cpp +++ b/src/mame/drivers/babbage.cpp @@ -257,7 +257,7 @@ void babbage_state::babbage(machine_config &config) m_pio_2->in_pa_callback().set(FUNC(babbage_state::pio2_a_r)); m_pio_2->out_pb_callback().set(FUNC(babbage_state::pio2_b_w)); - TIMER(config, "keyboard_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(babbage_state::keyboard_callback), this), attotime::from_hz(30)); + TIMER(config, "keyboard_timer", 0).configure_periodic(FUNC(babbage_state::keyboard_callback), attotime::from_hz(30)); } diff --git a/src/mame/drivers/backfire.cpp b/src/mame/drivers/backfire.cpp index a123d45916f..b222e6fd062 100644 --- a/src/mame/drivers/backfire.cpp +++ b/src/mame/drivers/backfire.cpp @@ -407,8 +407,8 @@ void backfire_state::backfire(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x40); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(backfire_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(backfire_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(backfire_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(backfire_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -423,8 +423,8 @@ void backfire_state::backfire(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x50); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(backfire_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(backfire_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(backfire_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(backfire_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(2); m_deco_tilegen[1]->set_pf12_16x16_bank(3); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); @@ -432,13 +432,13 @@ void backfire_state::backfire(machine_config &config) DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_screen(m_lscreen); m_sprgen[0]->set_gfx_region(4); - m_sprgen[0]->set_pri_callback(FUNC(backfire_state::pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(backfire_state::pri_callback)); m_sprgen[0]->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen[1], 0); m_sprgen[1]->set_screen("rscreen"); m_sprgen[1]->set_gfx_region(5); - m_sprgen[1]->set_pri_callback(FUNC(backfire_state::pri_callback), this); + m_sprgen[1]->set_pri_callback(FUNC(backfire_state::pri_callback)); m_sprgen[1]->set_gfxdecode_tag("gfxdecode"); /* sound hardware */ @@ -615,7 +615,7 @@ void backfire_state::init_backfire() deco156_decrypt(machine()); m_maincpu->set_clock_scale(4.0f); /* core timings aren't accurate */ descramble_sound(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0170018, 0x017001b, read32_delegate(FUNC(backfire_state::backfire_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0170018, 0x017001b, read32_delegate(*this, FUNC(backfire_state::backfire_speedup_r))); } GAME( 1995, backfire, 0, backfire, backfire, backfire_state, init_backfire, ROT0, "Data East Corporation", "Backfire! (Japan, set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/balsente.cpp b/src/mame/drivers/balsente.cpp index 5fc95e5ba11..2da3342872b 100644 --- a/src/mame/drivers/balsente.cpp +++ b/src/mame/drivers/balsente.cpp @@ -238,7 +238,7 @@ void balsente_state::cpu1_base_map(address_map &map) map(0x8000, 0x8fff).ram().w(FUNC(balsente_state::paletteram_w)).share("paletteram"); map(0x9000, 0x9007).w(FUNC(balsente_state::adc_select_w)); map(0x9400, 0x9401).r(FUNC(balsente_state::adc_data_r)); - map(0x9800, 0x981f).mirror(0x0060).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d7(offset >> 2, data); }); + map(0x9800, 0x981f).mirror(0x0060).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d7(offset >> 2, data); })); map(0x9880, 0x989f).w(FUNC(balsente_state::random_reset_w)); map(0x98a0, 0x98bf).w(FUNC(balsente_state::rombank_select_w)); map(0x98c0, 0x98df).w(FUNC(balsente_state::palette_select_w)); @@ -1351,7 +1351,7 @@ void balsente_state::balsente(machine_config &config) WATCHDOG_TIMER(config, "watchdog"); - TIMER(config, m_scanline_timer, 0).configure_generic(timer_device::expired_delegate(FUNC(balsente_state::interrupt_timer), this)); + TIMER(config, m_scanline_timer, 0).configure_generic(FUNC(balsente_state::interrupt_timer)); LS259(config, m_outlatch); // U9H // these outputs are generally used to control the various lamps diff --git a/src/mame/drivers/banctec.cpp b/src/mame/drivers/banctec.cpp index fa996910cb2..d871c5ec20a 100644 --- a/src/mame/drivers/banctec.cpp +++ b/src/mame/drivers/banctec.cpp @@ -161,8 +161,8 @@ void banctec_state::banctec(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(banctec_state::crtc_update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(banctec_state::crtc_addr), this); + crtc.set_update_row_callback(FUNC(banctec_state::crtc_update_row)); + crtc.set_on_update_addr_change_callback(FUNC(banctec_state::crtc_addr)); } ROM_START(banctec) diff --git a/src/mame/drivers/battlnts.cpp b/src/mame/drivers/battlnts.cpp index 1d21e0ed5e7..b076294bb2b 100644 --- a/src/mame/drivers/battlnts.cpp +++ b/src/mame/drivers/battlnts.cpp @@ -257,12 +257,12 @@ void battlnts_state::battlnts(machine_config &config) K007342(config, m_k007342, 0); m_k007342->set_gfxnum(0); - m_k007342->set_tile_callback(FUNC(battlnts_state::battlnts_tile_callback), this); + m_k007342->set_tile_callback(FUNC(battlnts_state::battlnts_tile_callback)); m_k007342->set_gfxdecode_tag(m_gfxdecode); K007420(config, m_k007420, 0); m_k007420->set_bank_limit(0x3ff); - m_k007420->set_sprite_callback(FUNC(battlnts_state::battlnts_sprite_callback), this); + m_k007420->set_sprite_callback(FUNC(battlnts_state::battlnts_sprite_callback)); m_k007420->set_palette_tag("palette"); /* sound hardware */ diff --git a/src/mame/drivers/bbc.cpp b/src/mame/drivers/bbc.cpp index a56ba806dee..761a78a0f9b 100644 --- a/src/mame/drivers/bbc.cpp +++ b/src/mame/drivers/bbc.cpp @@ -858,9 +858,9 @@ void bbc_state::bbca(machine_config &config) m_hd6845->set_screen("screen"); m_hd6845->set_show_border_area(false); m_hd6845->set_char_width(12); - //m_hd6845->set_begin_update_callback(FUNC(bbc_state::crtc_begin_update), this); - m_hd6845->set_update_row_callback(FUNC(bbc_state::crtc_update_row), this); - //m_hd6845->set_reconfigure_callback(FUNC(bbc_state::crtc_reconfig), this); + //m_hd6845->set_begin_update_callback(FUNC(bbc_state::crtc_begin_update)); + m_hd6845->set_update_row_callback(FUNC(bbc_state::crtc_update_row)); + //m_hd6845->set_reconfigure_callback(FUNC(bbc_state::crtc_reconfig)); m_hd6845->out_de_callback().set(FUNC(bbc_state::bbc_de_changed)); m_hd6845->out_hsync_callback().set(FUNC(bbc_state::bbc_hsync_changed)); m_hd6845->out_vsync_callback().set(FUNC(bbc_state::bbc_vsync_changed)); @@ -947,8 +947,8 @@ void bbc_state::bbcb(machine_config &config) /* adc */ UPD7002(config, m_upd7002, 16_MHz_XTAL / 16); - m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input), this); - m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc), this); + m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input)); + m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc)); /* printer */ centronics_device ¢ronics(CENTRONICS(config, "centronics", centronics_devices, "printer")); @@ -1350,9 +1350,9 @@ void bbcm_state::bbcm(machine_config &config) m_hd6845->set_screen("screen"); m_hd6845->set_show_border_area(false); m_hd6845->set_char_width(12); - //m_hd6845->set_begin_update_callback(FUNC(bbc_state::crtc_begin_update), this); - m_hd6845->set_update_row_callback(FUNC(bbc_state::crtc_update_row), this); - //m_hd6845->set_reconfigure_callback(FUNC(bbc_state::crtc_reconfig), this); + //m_hd6845->set_begin_update_callback(FUNC(bbc_state::crtc_begin_update)); + m_hd6845->set_update_row_callback(FUNC(bbc_state::crtc_update_row)); + //m_hd6845->set_reconfigure_callback(FUNC(bbc_state::crtc_reconfig)); m_hd6845->out_de_callback().set(FUNC(bbc_state::bbc_de_changed)); m_hd6845->out_hsync_callback().set(FUNC(bbc_state::bbc_hsync_changed)); m_hd6845->out_vsync_callback().set(FUNC(bbc_state::bbc_vsync_changed)); @@ -1400,8 +1400,8 @@ void bbcm_state::bbcm(machine_config &config) /* adc */ UPD7002(config, m_upd7002, 16_MHz_XTAL / 16); - m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input), this); - m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc), this); + m_upd7002->set_get_analogue_callback(FUNC(bbc_state::get_analogue_input)); + m_upd7002->set_eoc_callback(FUNC(bbc_state::upd7002_eoc)); /* system via */ VIA6522(config, m_via6522_0, 16_MHz_XTAL / 16); @@ -1461,9 +1461,9 @@ void bbcm_state::bbcm(machine_config &config) /* cartridge slots */ GENERIC_CARTSLOT(config, m_cart[0], generic_linear_slot, "bbcm_cart", "bin,rom"); - m_cart[0]->set_device_load(FUNC(bbc_state::cart1_load), this); + m_cart[0]->set_device_load(FUNC(bbc_state::cart1_load)); GENERIC_CARTSLOT(config, m_cart[1], generic_linear_slot, "bbcm_cart", "bin,rom"); - m_cart[1]->set_device_load(FUNC(bbc_state::cart2_load), this); + m_cart[1]->set_device_load(FUNC(bbc_state::cart2_load)); /* eprom sockets */ BBC_ROMSLOT16(config, m_rom[0x08], bbc_rom_devices, nullptr); /* ic27 */ diff --git a/src/mame/drivers/bbcbc.cpp b/src/mame/drivers/bbcbc.cpp index 2a73eddf278..acaa2c13f4a 100644 --- a/src/mame/drivers/bbcbc.cpp +++ b/src/mame/drivers/bbcbc.cpp @@ -75,13 +75,9 @@ void bbcbc_state::mem_map(address_map &map) void bbcbc_state::io_map(address_map &map) { map.global_mask(0xff); - map(0x00, 0x7f).lrw8("z80pio_rw", - [this](offs_t offset) { - return m_z80pio->read(offset >> 5); - }, - [this](offs_t offset, u8 data) { - m_z80pio->write(offset >> 5, data); - }); + map(0x00, 0x7f).lrw8( + NAME([this](offs_t offset) { return m_z80pio->read(offset >> 5); }), + NAME([this](offs_t offset, u8 data) { m_z80pio->write(offset >> 5, data); })); map(0x80, 0x81).rw("tms9129", FUNC(tms9129_device::read), FUNC(tms9129_device::write)); } diff --git a/src/mame/drivers/berzerk.cpp b/src/mame/drivers/berzerk.cpp index 415fd52f3d3..dcbd211951e 100644 --- a/src/mame/drivers/berzerk.cpp +++ b/src/mame/drivers/berzerk.cpp @@ -25,8 +25,8 @@ class berzerk_state : public driver_device { public: - berzerk_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + berzerk_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_s14001a(*this, "speech"), m_ls181_10c(*this, "ls181_10c"), @@ -1364,8 +1364,8 @@ ROM_END void berzerk_state::init_moonwarp() { address_space &io = m_maincpu->space(AS_IO); - io.install_read_handler (0x48, 0x48, read8_delegate(FUNC(berzerk_state::moonwarp_p1_r), this)); - io.install_read_handler (0x4a, 0x4a, read8_delegate(FUNC(berzerk_state::moonwarp_p2_r), this)); + io.install_read_handler (0x48, 0x48, read8_delegate(*this, FUNC(berzerk_state::moonwarp_p1_r))); + io.install_read_handler (0x4a, 0x4a, read8_delegate(*this, FUNC(berzerk_state::moonwarp_p2_r))); save_item(NAME(m_p1_counter_74ls161)); save_item(NAME(m_p1_direction)); diff --git a/src/mame/drivers/bestleag.cpp b/src/mame/drivers/bestleag.cpp index 77fa89cd590..01c1e2ce175 100644 --- a/src/mame/drivers/bestleag.cpp +++ b/src/mame/drivers/bestleag.cpp @@ -127,9 +127,9 @@ TILEMAP_MAPPER_MEMBER(bestleag_state::bsb_bg_scan) void bestleag_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bestleag_state::get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,256, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bestleag_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(bestleag_state::bsb_bg_scan),this),16,16,128, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bestleag_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(bestleag_state::bsb_bg_scan),this),16,16,128, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bestleag_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 256, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bestleag_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(bestleag_state::bsb_bg_scan)), 16, 16, 128, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bestleag_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(bestleag_state::bsb_bg_scan)), 16, 16, 128, 64); m_tx_tilemap->set_transparent_pen(15); m_fg_tilemap->set_transparent_pen(15); diff --git a/src/mame/drivers/beta.cpp b/src/mame/drivers/beta.cpp index 2413c7c4663..6c080e00811 100644 --- a/src/mame/drivers/beta.cpp +++ b/src/mame/drivers/beta.cpp @@ -368,8 +368,8 @@ void beta_state::beta(machine_config &config) /* EPROM socket */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, EPROM_TAG, generic_plain_slot, nullptr, "bin,rom")); - cartslot.set_device_load(FUNC(beta_state::load_beta_eprom), this); - cartslot.set_device_unload(FUNC(beta_state::unload_beta_eprom), this); + cartslot.set_device_load(FUNC(beta_state::load_beta_eprom)); + cartslot.set_device_unload(FUNC(beta_state::unload_beta_eprom)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("256"); diff --git a/src/mame/drivers/bfm_sc2.cpp b/src/mame/drivers/bfm_sc2.cpp index aaf7b61d546..e035ee6c95a 100644 --- a/src/mame/drivers/bfm_sc2.cpp +++ b/src/mame/drivers/bfm_sc2.cpp @@ -3741,8 +3741,8 @@ void bfm_sc2_dmd_state::machine_start() { bfm_sc2_state::machine_start(); address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_write_handler(0x2800, 0x2800, write8_delegate(FUNC(bfm_sc2_dmd_state::vfd1_dmd_w),this)); - space.install_write_handler(0x2900, 0x2900, write8_delegate(FUNC(bfm_sc2_dmd_state::dmd_reset_w),this)); + space.install_write_handler(0x2800, 0x2800, write8_delegate(*this, FUNC(bfm_sc2_dmd_state::vfd1_dmd_w))); + space.install_write_handler(0x2900, 0x2900, write8_delegate(*this, FUNC(bfm_sc2_dmd_state::dmd_reset_w))); } /* machine driver for scorpion2 board */ diff --git a/src/mame/drivers/bfm_sc4.cpp b/src/mame/drivers/bfm_sc4.cpp index 2a85b11494b..ebbef7cbf4b 100644 --- a/src/mame/drivers/bfm_sc4.cpp +++ b/src/mame/drivers/bfm_sc4.cpp @@ -821,10 +821,10 @@ void sc4_state::machine_start() m_nvram->set_base(m_mainram, sizeof(m_mainram)); m_maincpu->set_port_callbacks( - m68307_cpu_device::porta_read_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_r), this), - m68307_cpu_device::porta_write_delegate(FUNC(sc4_state::bfm_sc4_68307_porta_w), this), - m68307_cpu_device::portb_read_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_r), this), - m68307_cpu_device::portb_write_delegate(FUNC(sc4_state::bfm_sc4_68307_portb_w), this)); + m68307_cpu_device::porta_read_delegate(*this, FUNC(sc4_state::bfm_sc4_68307_porta_r)), + m68307_cpu_device::porta_write_delegate(*this, FUNC(sc4_state::bfm_sc4_68307_porta_w)), + m68307_cpu_device::portb_read_delegate(*this, FUNC(sc4_state::bfm_sc4_68307_portb_r)), + m68307_cpu_device::portb_write_delegate(*this, FUNC(sc4_state::bfm_sc4_68307_portb_w))); } diff --git a/src/mame/drivers/bigbord2.cpp b/src/mame/drivers/bigbord2.cpp index 990c6ee47b8..80bf88d5746 100644 --- a/src/mame/drivers/bigbord2.cpp +++ b/src/mame/drivers/bigbord2.cpp @@ -598,7 +598,7 @@ void bigbord2_state::bigbord2(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(bigbord2_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(bigbord2_state::crtc_update_row)); crtc.out_vsync_callback().set(m_ctc1, FUNC(z80ctc_device::trg3)); ls259_device &proglatch(LS259(config, "proglatch")); // U41 diff --git a/src/mame/drivers/binbug.cpp b/src/mame/drivers/binbug.cpp index 175d513b26d..dc58fa4135e 100644 --- a/src/mame/drivers/binbug.cpp +++ b/src/mame/drivers/binbug.cpp @@ -266,7 +266,7 @@ void binbug_state::binbug(machine_config &config) RS232_PORT(config, m_rs232, default_rs232_devices, "keyboard").set_option_device_input_defaults("keyboard", DEVICE_INPUT_DEFAULTS_NAME(keyboard)); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(binbug_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(binbug_state::quickload_cb)); S100_BUS(config, m_s100, 0); S100_SLOT(config, "s100:1", binbug_s100_devices, "dg640"); diff --git a/src/mame/drivers/bionicc.cpp b/src/mame/drivers/bionicc.cpp index 22e9bc9681a..aad9eb30303 100644 --- a/src/mame/drivers/bionicc.cpp +++ b/src/mame/drivers/bionicc.cpp @@ -205,7 +205,7 @@ void bionicc_state::sound_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0x8001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); - map(0xa000, 0xa000).lrw8("mcu", [this]() { return m_mcu_to_audiocpu; }, [this](u8 data) { m_audiocpu_to_mcu = data; }); + map(0xa000, 0xa000).lrw8(NAME([this]() { return m_mcu_to_audiocpu; }), NAME([this](u8 data) { m_audiocpu_to_mcu = data; })); map(0xc000, 0xc7ff).ram(); } @@ -393,9 +393,9 @@ u32 bionicc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, co void bionicc_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bionicc_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bionicc_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bionicc_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bionicc_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bionicc_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bionicc_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tx_tilemap->set_transparent_pen(3); m_fg_tilemap->set_transmask(0, 0xffff, 0x8000); /* split type 0 is completely transparent in front half */ diff --git a/src/mame/drivers/bishi.cpp b/src/mame/drivers/bishi.cpp index c4759292227..07d62161665 100644 --- a/src/mame/drivers/bishi.cpp +++ b/src/mame/drivers/bishi.cpp @@ -466,7 +466,7 @@ void bishi_state::bishi(machine_config &config) m_palette->enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(bishi_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(bishi_state::tile_callback)); m_k056832->set_config(K056832_BPP_8, 1, 0); m_k056832->set_palette(m_palette); @@ -489,7 +489,7 @@ void bishi_state::dobouchn(machine_config &config) { bishi(config); // TODO: change accordingly (ASCII charset definitely not 8bpp, 5bpp perhaps?) -// m_k056832->set_tile_callback(FUNC(bishi_state::dobouchn_tile_callback), this); +// m_k056832->set_tile_callback(FUNC(bishi_state::dobouchn_tile_callback)); m_k056832->set_config(K056832_BPP_8, 1, 0); } diff --git a/src/mame/drivers/blackt96.cpp b/src/mame/drivers/blackt96.cpp index 16f93b40737..212590a0e9e 100644 --- a/src/mame/drivers/blackt96.cpp +++ b/src/mame/drivers/blackt96.cpp @@ -171,7 +171,7 @@ TILE_GET_INFO_MEMBER(blackt96_state::get_tx_tile_info) void blackt96_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blackt96_state::get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blackt96_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(0); } @@ -507,7 +507,7 @@ void blackt96_state::blackt96(machine_config &config) SNK68_SPR(config, m_sprites, 0); m_sprites->set_gfxdecode_tag(m_gfxdecode); - m_sprites->set_tile_indirect_cb(FUNC(blackt96_state::tile_callback), this); + m_sprites->set_tile_indirect_cb(FUNC(blackt96_state::tile_callback)); m_sprites->set_no_partial(); m_sprites->set_xpos_shift(12); m_sprites->set_color_entry_mask(0x7f); diff --git a/src/mame/drivers/bladestl.cpp b/src/mame/drivers/bladestl.cpp index 1897ab49c91..490a09ffc21 100644 --- a/src/mame/drivers/bladestl.cpp +++ b/src/mame/drivers/bladestl.cpp @@ -331,12 +331,12 @@ void bladestl_state::bladestl(machine_config &config) K007342(config, m_k007342, 0); m_k007342->set_gfxnum(0); - m_k007342->set_tile_callback(FUNC(bladestl_state::bladestl_tile_callback), this); + m_k007342->set_tile_callback(FUNC(bladestl_state::bladestl_tile_callback)); m_k007342->set_gfxdecode_tag(m_gfxdecode); K007420(config, m_k007420, 0); m_k007420->set_bank_limit(0x3ff); - m_k007420->set_sprite_callback(FUNC(bladestl_state::bladestl_sprite_callback), this); + m_k007420->set_sprite_callback(FUNC(bladestl_state::bladestl_sprite_callback)); m_k007420->set_palette_tag("palette"); K051733(config, "k051733", 0); diff --git a/src/mame/drivers/blitz68k.cpp b/src/mame/drivers/blitz68k.cpp index bbaa5301a67..ae737a34b8c 100644 --- a/src/mame/drivers/blitz68k.cpp +++ b/src/mame/drivers/blitz68k.cpp @@ -1820,7 +1820,7 @@ void blitz68k_state::cjffruit(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq1)); ramdac_config(config); @@ -1853,7 +1853,7 @@ void blitz68k_state::bankrob(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1884,7 +1884,7 @@ void blitz68k_state::bankroba(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq5)); ramdac_config(config); @@ -1914,7 +1914,7 @@ void blitz68k_state::deucesw2(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1946,7 +1946,7 @@ void blitz68k_state::dualgame(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); @@ -1976,7 +1976,7 @@ void blitz68k_state::hermit(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq1)); ramdac_config(config); @@ -2010,7 +2010,7 @@ void blitz68k_state::maxidbl(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(4); - m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(blitz68k_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(blitz68k_state::crtc_vsync_irq3)); ramdac_config(config); diff --git a/src/mame/drivers/blockade.cpp b/src/mame/drivers/blockade.cpp index 127c85c951b..5dcb98e9c19 100644 --- a/src/mame/drivers/blockade.cpp +++ b/src/mame/drivers/blockade.cpp @@ -443,7 +443,7 @@ const char *const blockade_sample_names[] = void blockade_state::machine_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blockade_state::tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blockade_state::tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_vblank_timer = timer_alloc(0); diff --git a/src/mame/drivers/blockhl.cpp b/src/mame/drivers/blockhl.cpp index c81c35e66fb..318fba0869f 100644 --- a/src/mame/drivers/blockhl.cpp +++ b/src/mame/drivers/blockhl.cpp @@ -306,13 +306,13 @@ void blockhl_state::blockhl(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(blockhl_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(blockhl_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(blockhl_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(blockhl_state::sprite_callback)); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/bloodbro.cpp b/src/mame/drivers/bloodbro.cpp index de5993ef4b8..3971dc8f494 100644 --- a/src/mame/drivers/bloodbro.cpp +++ b/src/mame/drivers/bloodbro.cpp @@ -576,7 +576,7 @@ void bloodbro_state::weststry(machine_config &config) m_audiocpu->set_clock(XTAL(20'000'000)/4); /* 5MHz - verified on PCB */ m_audiocpu->set_addrmap(AS_PROGRAM, &bloodbro_state::weststry_sound_map); - m_audiocpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate()); + m_audiocpu->remove_irq_acknowledge_callback(); m_gfxdecode->set_info(gfx_weststry); m_palette->set_format(palette_device::xBGR_444, 1024); diff --git a/src/mame/drivers/bmcpokr.cpp b/src/mame/drivers/bmcpokr.cpp index 6efbc64c122..3904354c1fe 100644 --- a/src/mame/drivers/bmcpokr.cpp +++ b/src/mame/drivers/bmcpokr.cpp @@ -126,8 +126,8 @@ TILE_GET_INFO_MEMBER(bmcpokr_state::get_tile_info) void bmcpokr_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bmcpokr_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,128,128); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bmcpokr_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,128,128); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bmcpokr_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 128,128); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bmcpokr_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 128,128); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/drivers/bml3.cpp b/src/mame/drivers/bml3.cpp index a1405f3e7e7..b7d5bafe055 100644 --- a/src/mame/drivers/bml3.cpp +++ b/src/mame/drivers/bml3.cpp @@ -766,11 +766,11 @@ void bml3_state::machine_reset() /* defaults */ mem.install_rom(0xa000, 0xfeff,memregion("maincpu")->base() + 0xa000); mem.install_rom(0xfff0, 0xffff,memregion("maincpu")->base() + 0xfff0); - mem.install_write_handler(0xa000, 0xbfff, write8_delegate(FUNC(bml3_state::a000_w), this),0); - mem.install_write_handler(0xc000, 0xdfff, write8_delegate(FUNC(bml3_state::c000_w), this),0); - mem.install_write_handler(0xe000, 0xefff, write8_delegate(FUNC(bml3_state::e000_w), this),0); - mem.install_write_handler(0xf000, 0xfeff, write8_delegate(FUNC(bml3_state::f000_w), this),0); - mem.install_write_handler(0xfff0, 0xffff, write8_delegate(FUNC(bml3_state::fff0_w), this),0); + mem.install_write_handler(0xa000, 0xbfff, write8_delegate(*this, FUNC(bml3_state::a000_w)), 0); + mem.install_write_handler(0xc000, 0xdfff, write8_delegate(*this, FUNC(bml3_state::c000_w)), 0); + mem.install_write_handler(0xe000, 0xefff, write8_delegate(*this, FUNC(bml3_state::e000_w)), 0); + mem.install_write_handler(0xf000, 0xfeff, write8_delegate(*this, FUNC(bml3_state::f000_w)), 0); + mem.install_write_handler(0xfff0, 0xffff, write8_delegate(*this, FUNC(bml3_state::fff0_w)), 0); m_firq_mask = -1; // disable firq } @@ -798,16 +798,17 @@ WRITE8_MEMBER(bml3_state::piaA_w) if(data & 0x40) { mem.install_readwrite_handler(0xa000, 0xbfff, - read8_delegate(FUNC(bml3_state::a000_r), this), - write8_delegate(FUNC(bml3_state::a000_w), this), 0); + read8_delegate(*this, FUNC(bml3_state::a000_r)), + write8_delegate(*this, FUNC(bml3_state::a000_w)), + 0); } else { mem.install_rom(0xa000, 0xbfff, - memregion("maincpu")->base() + 0xa000); + memregion("maincpu")->base() + 0xa000); mem.install_write_handler(0xa000, 0xbfff, - write8_delegate(FUNC(bml3_state::a000_w), this), - 0); + write8_delegate(*this, FUNC(bml3_state::a000_w)), + 0); } } @@ -816,16 +817,17 @@ WRITE8_MEMBER(bml3_state::piaA_w) if(data & 0x40) { mem.install_readwrite_handler(0xc000, 0xdfff, - read8_delegate(FUNC(bml3_state::c000_r), this), - write8_delegate(FUNC(bml3_state::c000_w), this), 0); + read8_delegate(*this, FUNC(bml3_state::c000_r)), + write8_delegate(*this, FUNC(bml3_state::c000_w)), + 0); } else { mem.install_rom(0xc000, 0xdfff, - memregion("maincpu")->base() + 0xc000); + memregion("maincpu")->base() + 0xc000); mem.install_write_handler(0xc000, 0xdfff, - write8_delegate(FUNC(bml3_state::c000_w), this), - 0); + write8_delegate(*this, FUNC(bml3_state::c000_w)), + 0); } } @@ -834,47 +836,50 @@ WRITE8_MEMBER(bml3_state::piaA_w) if(data & 0x80) { mem.install_readwrite_handler(0xe000, 0xefff, - read8_delegate(FUNC(bml3_state::e000_r), this), - write8_delegate(FUNC(bml3_state::e000_w), this), 0); + read8_delegate(*this, FUNC(bml3_state::e000_r)), + write8_delegate(*this, FUNC(bml3_state::e000_w)), + 0); } else { mem.install_rom(0xe000, 0xefff, - memregion("maincpu")->base() + 0xe000); + memregion("maincpu")->base() + 0xe000); mem.install_write_handler(0xe000, 0xefff, - write8_delegate(FUNC(bml3_state::e000_w), this), - 0); + write8_delegate(*this, FUNC(bml3_state::e000_w)), + 0); } } if(data & 1) { mem.install_readwrite_handler(0xf000, 0xfeff, - read8_delegate(FUNC(bml3_state::f000_r), this), - write8_delegate(FUNC(bml3_state::f000_w), this), 0); + read8_delegate(*this, FUNC(bml3_state::f000_r)), + write8_delegate(*this, FUNC(bml3_state::f000_w)), + 0); } else { mem.install_rom(0xf000, 0xfeff, - memregion("maincpu")->base() + 0xf000); + memregion("maincpu")->base() + 0xf000); mem.install_write_handler(0xf000, 0xfeff, - write8_delegate(FUNC(bml3_state::f000_w), this), - 0); + write8_delegate(*this, FUNC(bml3_state::f000_w)), + 0); } if(data & 2) { mem.install_readwrite_handler(0xfff0, 0xffff, - read8_delegate(FUNC(bml3_state::fff0_r), this), - write8_delegate(FUNC(bml3_state::fff0_w), this), 0); + read8_delegate(*this, FUNC(bml3_state::fff0_r)), + write8_delegate(*this, FUNC(bml3_state::fff0_w)), + 0); } else { mem.install_rom(0xfff0, 0xffff, - memregion("maincpu")->base() + 0xfff0); + memregion("maincpu")->base() + 0xfff0); mem.install_write_handler(0xfff0, 0xffff, - write8_delegate(FUNC(bml3_state::fff0_w), this), - 0); + write8_delegate(*this, FUNC(bml3_state::fff0_w)), + 0); } } @@ -936,7 +941,7 @@ void bml3_state::bml3_common(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(bml3_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(bml3_state::crtc_update_row)); // fire once per scan of an individual key // According to the service manual (p.65), the keyboard timer is driven by the horizontal video sync clock. diff --git a/src/mame/drivers/bnstars.cpp b/src/mame/drivers/bnstars.cpp index d67b3dbdae7..dd1f1a6c771 100644 --- a/src/mame/drivers/bnstars.cpp +++ b/src/mame/drivers/bnstars.cpp @@ -489,28 +489,24 @@ void bnstars_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co void bnstars_state::video_start() { - m_ms32_tx_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_tx0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,64); - m_ms32_tx_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_tx1_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,64); + m_ms32_tx_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_tx0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,64); + m_ms32_tx_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_tx1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,64); m_ms32_tx_tilemap[0]->set_transparent_pen(0); m_ms32_tx_tilemap[1]->set_transparent_pen(0); - m_ms32_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_bg0_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,64); - m_ms32_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_bg1_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,64); + m_ms32_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_bg0_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,64); + m_ms32_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,64); m_ms32_bg_tilemap[0]->set_transparent_pen(0); m_ms32_bg_tilemap[1]->set_transparent_pen(0); - m_ms32_roz_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_roz0_tile_info),this),TILEMAP_SCAN_ROWS,16,16,128,128); - m_ms32_roz_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bnstars_state::get_ms32_roz1_tile_info),this),TILEMAP_SCAN_ROWS,16,16,128,128); + m_ms32_roz_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_roz0_tile_info)),TILEMAP_SCAN_ROWS, 16,16,128,128); + m_ms32_roz_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bnstars_state::get_ms32_roz1_tile_info)),TILEMAP_SCAN_ROWS, 16,16,128,128); m_ms32_roz_tilemap[0]->set_transparent_pen(0); m_ms32_roz_tilemap[1]->set_transparent_pen(0); - - } - - uint32_t bnstars_state::screen_update_bnstars_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { screen.priority().fill(0, cliprect); diff --git a/src/mame/drivers/boogwing.cpp b/src/mame/drivers/boogwing.cpp index 0e0f17730cd..da4f8945578 100644 --- a/src/mame/drivers/boogwing.cpp +++ b/src/mame/drivers/boogwing.cpp @@ -360,7 +360,7 @@ void boogwing_state::boogwing(machine_config &config) m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); // no bank1 callback - m_deco_tilegen[0]->set_bank2_callback(FUNC(boogwing_state::bank_callback), this); + m_deco_tilegen[0]->set_bank2_callback(FUNC(boogwing_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -374,8 +374,8 @@ void boogwing_state::boogwing(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(16); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(boogwing_state::bank_callback2), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(boogwing_state::bank_callback2), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(boogwing_state::bank_callback2)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(boogwing_state::bank_callback2)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/bottom9.cpp b/src/mame/drivers/bottom9.cpp index 321a07fe2ad..92f954c9ed4 100644 --- a/src/mame/drivers/bottom9.cpp +++ b/src/mame/drivers/bottom9.cpp @@ -321,17 +321,17 @@ void bottom9_state::bottom9(machine_config &config) K052109(config, m_k052109, 0); // 051961 on schematics m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(bottom9_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(bottom9_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(bottom9_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(bottom9_state::sprite_callback)); K051316(config, m_k051316, 0); m_k051316->set_palette(m_palette); - m_k051316->set_zoom_callback(FUNC(bottom9_state::zoom_callback), this); + m_k051316->set_zoom_callback(FUNC(bottom9_state::zoom_callback)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/btime.cpp b/src/mame/drivers/btime.cpp index 8a7301793ae..43b90ca079d 100644 --- a/src/mame/drivers/btime.cpp +++ b/src/mame/drivers/btime.cpp @@ -2042,7 +2042,7 @@ void btime_state::init_protennb() void btime_state::init_wtennis() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc15f, 0xc15f, read8_delegate(FUNC(btime_state::wtennis_reset_hack_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc15f, 0xc15f, read8_delegate(*this, FUNC(btime_state::wtennis_reset_hack_r))); m_audiocpu->space(AS_PROGRAM).install_read_bank(0x0200, 0x0fff, "bank10"); membank("bank10")->set_base(memregion("audiocpu")->base() + 0xe200); diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index ddee36e8bfe..afc4676795f 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -559,7 +559,7 @@ void bw12_state::common(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::amber())); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_screen_update(MC6845_TAG, FUNC(mc6845_device::screen_update)); screen.set_size(640, 200); screen.set_visarea(0, 640-1, 0, 200-1); @@ -571,7 +571,7 @@ void bw12_state::common(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(bw12_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(bw12_state::crtc_update_row)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/bzone.cpp b/src/mame/drivers/bzone.cpp index 09e95802ce4..ccfefcb64e4 100644 --- a/src/mame/drivers/bzone.cpp +++ b/src/mame/drivers/bzone.cpp @@ -896,8 +896,8 @@ void bzone_state::init_bradley() space.install_ram(0x400, 0x7ff); space.install_read_port(0x1808, 0x1808, "1808"); space.install_read_port(0x1809, 0x1809, "1809"); - space.install_read_handler(0x180a, 0x180a, read8smo_delegate(FUNC(bzone_state::analog_data_r),this)); - space.install_write_handler(0x1848, 0x1850, write8sm_delegate(FUNC(bzone_state::analog_select_w),this)); + space.install_read_handler(0x180a, 0x180a, read8smo_delegate(*this, FUNC(bzone_state::analog_data_r))); + space.install_write_handler(0x1848, 0x1850, write8sm_delegate(*this, FUNC(bzone_state::analog_select_w))); } diff --git a/src/mame/drivers/c128.cpp b/src/mame/drivers/c128.cpp index a0571df460e..0aaf87a0966 100644 --- a/src/mame/drivers/c128.cpp +++ b/src/mame/drivers/c128.cpp @@ -1755,7 +1755,7 @@ void c128_state::ntsc(machine_config &config) m_user->pl_handler().set(FUNC(c128_state::write_user_pb7)); m_user->pm_handler().set(FUNC(c128_state::write_user_pa2)); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c128_state::quickload_c128), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c128_state::quickload_c128)); // software list SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10").set_filter("NTSC"); @@ -1942,7 +1942,7 @@ void c128_state::pal(machine_config &config) m_user->pl_handler().set(FUNC(c128_state::write_user_pb7)); m_user->pm_handler().set(FUNC(c128_state::write_user_pa2)); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c128_state::quickload_c128), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c128_state::quickload_c128)); // software list SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10"); diff --git a/src/mame/drivers/c2color.cpp b/src/mame/drivers/c2color.cpp index 8eed63b0ed4..a3ebfaa48dd 100644 --- a/src/mame/drivers/c2color.cpp +++ b/src/mame/drivers/c2color.cpp @@ -140,7 +140,7 @@ void c2_color_state::c2_color(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "c2color_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(c2_color_state::cart_load), this); + m_cart->set_device_load(FUNC(c2_color_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("c2color_cart"); } diff --git a/src/mame/drivers/c64.cpp b/src/mame/drivers/c64.cpp index 0906d5ffa13..da55973cb2e 100644 --- a/src/mame/drivers/c64.cpp +++ b/src/mame/drivers/c64.cpp @@ -1536,7 +1536,7 @@ void c64_state::ntsc(machine_config &config) m_user->pl_handler().set(FUNC(c64_state::write_user_pb7)); m_user->pm_handler().set(FUNC(c64_state::write_user_pa2)); - QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64), this); + QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64)); // software list SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10").set_filter("NTSC"); @@ -1708,7 +1708,7 @@ void c64_state::pal(machine_config &config) m_user->pl_handler().set(FUNC(c64_state::write_user_pb7)); m_user->pm_handler().set(FUNC(c64_state::write_user_pa2)); - QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64), this); + QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64)); // software list SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10").set_filter("PAL"); @@ -1854,7 +1854,7 @@ void c64gs_state::pal_gs(machine_config &config) m_user->pl_handler().set(FUNC(c64_state::write_user_pb7)); m_user->pm_handler().set(FUNC(c64_state::write_user_pa2)); - QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64), this); + QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(c64_state::quickload_c64)); // software list SOFTWARE_LIST(config, "cart_list_vic10").set_original("vic10").set_filter("PAL"); diff --git a/src/mame/drivers/cabaret.cpp b/src/mame/drivers/cabaret.cpp index 1aa0fbd62d0..126c9a7856c 100644 --- a/src/mame/drivers/cabaret.cpp +++ b/src/mame/drivers/cabaret.cpp @@ -132,8 +132,8 @@ WRITE8_MEMBER(cabaret_state::fg_color_w) void cabaret_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cabaret_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cabaret_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabaret_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabaret_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(64); } diff --git a/src/mame/drivers/calchase.cpp b/src/mame/drivers/calchase.cpp index 4a53a9e4ecf..c3bfb65cb07 100644 --- a/src/mame/drivers/calchase.cpp +++ b/src/mame/drivers/calchase.cpp @@ -690,10 +690,8 @@ void calchase_state::calchase(machine_config &config) ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(calchase_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(calchase_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(calchase_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(calchase_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(calchase_state::intel82439tx_pci_r), FUNC(calchase_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(calchase_state::intel82371ab_pci_r), FUNC(calchase_state::intel82371ab_pci_w)); /* video hardware */ pcvideo_trident_vga(config); @@ -725,10 +723,8 @@ void calchase_state::hostinv(machine_config &config) ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(calchase_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(calchase_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(calchase_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(calchase_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(calchase_state::intel82439tx_pci_r), FUNC(calchase_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(calchase_state::intel82371ab_pci_r), FUNC(calchase_state::intel82371ab_pci_w)); /* video hardware */ pcvideo_trident_vga(config); @@ -763,7 +759,7 @@ void calchase_state::init_calchase() intel82439tx_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3f0b160, 0x3f0b163, read32_delegate(FUNC(calchase_state::calchase_idle_skip_r),this), write32_delegate(FUNC(calchase_state::calchase_idle_skip_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x3f0b160, 0x3f0b163, read32_delegate(*this, FUNC(calchase_state::calchase_idle_skip_r)), write32_delegate(*this, FUNC(calchase_state::calchase_idle_skip_w))); } void calchase_state::init_hostinv() diff --git a/src/mame/drivers/calcune.cpp b/src/mame/drivers/calcune.cpp index 5697e051c79..fba577b3ff1 100644 --- a/src/mame/drivers/calcune.cpp +++ b/src/mame/drivers/calcune.cpp @@ -287,8 +287,8 @@ void calcune_state::calcune(machine_config &config) m_vdp[1]->add_route(ALL_OUTPUTS, "lspeaker", 0.25); m_vdp[1]->add_route(ALL_OUTPUTS, "rspeaker", 0.25); - TIMER(config, "scantimer").configure_scanline("gen_vdp1", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1); - TIMER(config, "scantimer2").configure_scanline("gen_vdp2", FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1); + TIMER(config, "scantimer").configure_scanline(m_vdp[0], FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1); + TIMER(config, "scantimer2").configure_scanline(m_vdp[1], FUNC(sega315_5313_device::megadriv_scanline_timer_callback_alt_timing), "megadriv", 0, 1); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); diff --git a/src/mame/drivers/calorie.cpp b/src/mame/drivers/calorie.cpp index 41c3028527c..1f6e0346514 100644 --- a/src/mame/drivers/calorie.cpp +++ b/src/mame/drivers/calorie.cpp @@ -166,8 +166,8 @@ TILE_GET_INFO_MEMBER(calorie_state::get_fg_tile_info) void calorie_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(calorie_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(calorie_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(*this, FUNC(calorie_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(calorie_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/camplynx.cpp b/src/mame/drivers/camplynx.cpp index 1376514a64b..4c09e4f8e2b 100644 --- a/src/mame/drivers/camplynx.cpp +++ b/src/mame/drivers/camplynx.cpp @@ -895,7 +895,7 @@ void camplynx_state::lynx48k(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx48k_update_row), this); + m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx48k_update_row)); m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); /* software lists */ @@ -944,7 +944,7 @@ void camplynx_state::lynx128k(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx128k_update_row), this); + m_crtc->set_update_row_callback(FUNC(camplynx_state::lynx128k_update_row)); m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); lynx_disk(config); diff --git a/src/mame/drivers/cardline.cpp b/src/mame/drivers/cardline.cpp index 89d4dc1c19b..bad735186f5 100644 --- a/src/mame/drivers/cardline.cpp +++ b/src/mame/drivers/cardline.cpp @@ -362,8 +362,8 @@ void cardline_state::cardline(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_begin_update_callback(FUNC(cardline_state::crtc_begin_update), this); - crtc.set_update_row_callback(FUNC(cardline_state::crtc_update_row), this); + crtc.set_begin_update_callback(FUNC(cardline_state::crtc_begin_update)); + crtc.set_update_row_callback(FUNC(cardline_state::crtc_update_row)); crtc.out_hsync_callback().set(FUNC(cardline_state::hsync_changed)); crtc.out_vsync_callback().set(FUNC(cardline_state::vsync_changed)); diff --git a/src/mame/drivers/carjmbre.cpp b/src/mame/drivers/carjmbre.cpp index 4f41fa0d45a..0c7e19c8e9c 100644 --- a/src/mame/drivers/carjmbre.cpp +++ b/src/mame/drivers/carjmbre.cpp @@ -169,7 +169,7 @@ TILE_GET_INFO_MEMBER(carjmbre_state::get_tile_info) void carjmbre_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(carjmbre_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(carjmbre_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/casloopy.cpp b/src/mame/drivers/casloopy.cpp index e189a822b63..f1529712729 100644 --- a/src/mame/drivers/casloopy.cpp +++ b/src/mame/drivers/casloopy.cpp @@ -544,7 +544,7 @@ void casloopy_state::casloopy(machine_config &config) cartslot.set_width(GENERIC_ROM32_WIDTH); cartslot.set_endian(ENDIANNESS_LITTLE); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(casloopy_state::cart_load), this); + cartslot.set_device_load(FUNC(casloopy_state::cart_load)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("casloopy"); diff --git a/src/mame/drivers/caswin.cpp b/src/mame/drivers/caswin.cpp index 06e4c1cac33..3dbefa88cac 100644 --- a/src/mame/drivers/caswin.cpp +++ b/src/mame/drivers/caswin.cpp @@ -132,7 +132,7 @@ TILE_GET_INFO_MEMBER(caswin_state::get_sc0_tile_info) void caswin_state::video_start() { m_lamps.resolve(); - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(caswin_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(caswin_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8,32,32); } uint32_t caswin_state::screen_update_vvillage(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/cat.cpp b/src/mame/drivers/cat.cpp index d1ed24efad5..0c5e7979b10 100644 --- a/src/mame/drivers/cat.cpp +++ b/src/mame/drivers/cat.cpp @@ -919,7 +919,7 @@ TIMER_CALLBACK_MEMBER(cat_state::counter_6ms_callback) void cat_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff3, 0xfffff3).lr8("interrupt 1", [this]() { m_maincpu->set_input_line(1, CLEAR_LINE); return m68000_device::autovector(1); }); + map(0xfffff3, 0xfffff3).lr8(NAME([this]() { m_maincpu->set_input_line(1, CLEAR_LINE); return m68000_device::autovector(1); })); } MACHINE_START_MEMBER(cat_state,cat) diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp index 89e36b424a8..49fcd7371fc 100644 --- a/src/mame/drivers/cave.cpp +++ b/src/mame/drivers/cave.cpp @@ -2501,7 +2501,7 @@ void cave_state::sailormn(machine_config &config) m_screen[0]->set_visarea(0+1, 320+1-1, 0, 240-1); /* Layer 2 (8x8) needs to be handled differently */ - m_tilemap[2]->set_tile_callback(tilemap038_device::tmap038_cb_delegate(FUNC(cave_state::sailormn_get_banked_code), this)); /* Layer 2 has 1 banked ROM */ + m_tilemap[2]->set_tile_callback(FUNC(cave_state::sailormn_get_banked_code)); /* Layer 2 has 1 banked ROM */ GFXDECODE(config, m_gfxdecode[0], m_palette[0], gfx_sailormn); // 4 bit sprites, 6 bit tiles m_palette[0]->set_entries(0x4000/2); diff --git a/src/mame/drivers/cb2001.cpp b/src/mame/drivers/cb2001.cpp index 669049d97d4..9d5921bc600 100644 --- a/src/mame/drivers/cb2001.cpp +++ b/src/mame/drivers/cb2001.cpp @@ -539,9 +539,9 @@ TILE_GET_INFO_MEMBER(cb2001_state::get_cb2001_reel3_tile_info) void cb2001_state::video_start() { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cb2001_state::get_cb2001_reel1_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cb2001_state::get_cb2001_reel2_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cb2001_state::get_cb2001_reel3_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cb2001_state::get_cb2001_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cb2001_state::get_cb2001_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cb2001_state::get_cb2001_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); m_reel2_tilemap->set_scroll_cols(64); diff --git a/src/mame/drivers/cball.cpp b/src/mame/drivers/cball.cpp index 38d9d82e31c..f0c8e1cc731 100644 --- a/src/mame/drivers/cball.cpp +++ b/src/mame/drivers/cball.cpp @@ -82,7 +82,7 @@ WRITE8_MEMBER(cball_state::vram_w) void cball_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cball_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cball_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/cbm2.cpp b/src/mame/drivers/cbm2.cpp index 8fef6b51a6e..cdfe8850ea5 100644 --- a/src/mame/drivers/cbm2.cpp +++ b/src/mame/drivers/cbm2.cpp @@ -2361,7 +2361,7 @@ void p500_state::p500_ntsc(machine_config &config) rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr)); rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts)); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(p500_state::quickload_p500), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(p500_state::quickload_p500)); // internal ram _128k(config); @@ -2492,7 +2492,7 @@ void p500_state::p500_pal(machine_config &config) rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr)); rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts)); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(p500_state::quickload_p500), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(p500_state::quickload_p500)); // internal ram _128k(config); @@ -2535,7 +2535,7 @@ void cbm2_state::cbm2lp_ntsc(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(cbm2_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(cbm2_state::crtc_update_row)); // sound hardware SPEAKER(config, "mono").front_center(); @@ -2622,7 +2622,7 @@ void cbm2_state::cbm2lp_ntsc(machine_config &config) rs232.dsr_handler().set(m_acia, FUNC(mos6551_device::write_dsr)); rs232.cts_handler().set(m_acia, FUNC(mos6551_device::write_cts)); - QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(cbm2_state::quickload_cbmb), this); + QUICKLOAD(config, "quickload", "p00,prg,t64", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(cbm2_state::quickload_cbmb)); // software list SOFTWARE_LIST(config, "cart_list").set_original("cbm2_cart").set_filter("NTSC"); diff --git a/src/mame/drivers/cbuster.cpp b/src/mame/drivers/cbuster.cpp index 67c8d2efc10..54b1c83bbf6 100644 --- a/src/mame/drivers/cbuster.cpp +++ b/src/mame/drivers/cbuster.cpp @@ -117,7 +117,7 @@ void cbuster_state::main_map(address_map &map) map(0x0bc002, 0x0bc003).portr("DSW"); map(0x0bc002, 0x0bc003).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff).cswidth(16); map(0x0bc004, 0x0bc005).rw(FUNC(cbuster_state::prot_r), FUNC(cbuster_state::prot_w)); - map(0x0bc006, 0x0bc007).portr("COINS").lw16("irq_ack_w", [this](u16 data) { m_maincpu->set_input_line(4, CLEAR_LINE); }); + map(0x0bc006, 0x0bc007).portr("COINS").lw16(NAME([this] (u16 data) { m_maincpu->set_input_line(4, CLEAR_LINE); })); } @@ -292,8 +292,8 @@ void cbuster_state::twocrude(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x20); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(cbuster_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(cbuster_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(cbuster_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(cbuster_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -307,8 +307,8 @@ void cbuster_state::twocrude(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x40); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cbuster_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cbuster_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cbuster_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cbuster_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/cc40.cpp b/src/mame/drivers/cc40.cpp index 5fbdd2a4548..bbeeda6e490 100644 --- a/src/mame/drivers/cc40.cpp +++ b/src/mame/drivers/cc40.cpp @@ -611,7 +611,7 @@ void cc40_state::cc40(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780", 0)); hd44780.set_lcd_size(2, 16); // 2*16 internal - hd44780.set_pixel_update_cb(FUNC(cc40_state::cc40_pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(cc40_state::cc40_pixel_update)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); @@ -619,7 +619,7 @@ void cc40_state::cc40(machine_config &config) VOLTAGE_REGULATOR(config, "vref").add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "cc40_cart", "bin,rom,256").set_device_load(FUNC(cc40_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "cc40_cart", "bin,rom,256").set_device_load(FUNC(cc40_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("cc40_cart"); } diff --git a/src/mame/drivers/cd2650.cpp b/src/mame/drivers/cd2650.cpp index af87e1fea82..bf87f5fd199 100644 --- a/src/mame/drivers/cd2650.cpp +++ b/src/mame/drivers/cd2650.cpp @@ -341,7 +341,7 @@ void cd2650_state::cd2650(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(cd2650_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(cd2650_state::quickload_cb)); /* Sound */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index e7febbdd3a6..d1379fda0a1 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -235,7 +235,7 @@ WRITE16_MEMBER( cgc7900_state::interrupt_mask_w ) void cgc7900_state::cpu_space_map(address_map &map) { - map(0xfffff2, 0xffffff).lr16("interrupt", [] (offs_t offset) -> u16 { return int_vectors[offset+1]; }); + map(0xfffff2, 0xffffff).lr16(NAME([] (offs_t offset) -> u16 { return int_vectors[offset + 1]; })); } void cgc7900_state::irq_encoder(int pin, int state) diff --git a/src/mame/drivers/cgenie.cpp b/src/mame/drivers/cgenie.cpp index 172e929880d..fc33270e48e 100644 --- a/src/mame/drivers/cgenie.cpp +++ b/src/mame/drivers/cgenie.cpp @@ -34,8 +34,8 @@ class cgenie_state : public driver_device { public: - cgenie_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + cgenie_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_cassette(*this, "cassette"), m_ram(*this, RAM_TAG), @@ -50,7 +50,7 @@ public: m_control(0xff), m_rs232_rx(1), m_rs232_dcd(1) - {} + { } void init_cgenie_eu(); void init_cgenie_nz(); @@ -450,8 +450,8 @@ void cgenie_state::cgenie(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_begin_update_callback(FUNC(cgenie_state::crtc_begin_update), this); - m_crtc->set_update_row_callback(FUNC(cgenie_state::crtc_update_row), this); + m_crtc->set_begin_update_callback(FUNC(cgenie_state::crtc_begin_update)); + m_crtc->set_update_row_callback(FUNC(cgenie_state::crtc_update_row)); // sound hardware SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/cham24.cpp b/src/mame/drivers/cham24.cpp index 5255faf3b66..a314148a724 100644 --- a/src/mame/drivers/cham24.cpp +++ b/src/mame/drivers/cham24.cpp @@ -281,7 +281,7 @@ void cham24_state::machine_reset() m_nt_page[3] = m_nt_ram.get() + 0xc00; /* and read/write handlers */ - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff,read8_delegate(FUNC(cham24_state::nt_r), this), write8_delegate(FUNC(cham24_state::nt_w), this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(cham24_state::nt_r)), write8_delegate(*this, FUNC(cham24_state::nt_w))); } void cham24_state::init_cham24() diff --git a/src/mame/drivers/chanbara.cpp b/src/mame/drivers/chanbara.cpp index feac1e17267..b263d277dd1 100644 --- a/src/mame/drivers/chanbara.cpp +++ b/src/mame/drivers/chanbara.cpp @@ -176,8 +176,8 @@ TILE_GET_INFO_MEMBER(chanbara_state::get_bg2_tile_info) void chanbara_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chanbara_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,8, 8, 32, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chanbara_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS,16, 16, 16, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chanbara_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS,8, 8, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chanbara_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS,16, 16, 16, 32); m_bg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/chance32.cpp b/src/mame/drivers/chance32.cpp index ed07e57eab8..33760a6f887 100644 --- a/src/mame/drivers/chance32.cpp +++ b/src/mame/drivers/chance32.cpp @@ -108,10 +108,10 @@ TILE_GET_INFO_MEMBER(chance32_state::get_bg_tile_info) void chance32_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chance32_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 35, 29); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chance32_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 35, 29); m_fg_tilemap->set_transparent_pen(0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chance32_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 35, 29); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chance32_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 35, 29); m_fg_tilemap->set_flip(TILE_FLIPX|TILE_FLIPY); m_bg_tilemap->set_flip(TILE_FLIPX|TILE_FLIPY); diff --git a/src/mame/drivers/channelf.cpp b/src/mame/drivers/channelf.cpp index 529a911e10d..09979a0782c 100644 --- a/src/mame/drivers/channelf.cpp +++ b/src/mame/drivers/channelf.cpp @@ -168,18 +168,18 @@ void channelf_state::machine_start() switch (m_cart->get_type()) { case CF_MAZE: - m_maincpu->space(AS_IO).install_readwrite_handler(0x24, 0x25, read8_delegate(FUNC(channelf_cart_slot_device::read_ram),(channelf_cart_slot_device*)m_cart), write8_delegate(FUNC(channelf_cart_slot_device::write_ram),(channelf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_IO).install_readwrite_handler(0x24, 0x25, read8_delegate(*m_cart, FUNC(channelf_cart_slot_device::read_ram)), write8_delegate(*m_cart, FUNC(channelf_cart_slot_device::write_ram))); break; case CF_HANGMAN: - m_maincpu->space(AS_IO).install_readwrite_handler(0x20, 0x21, read8_delegate(FUNC(channelf_cart_slot_device::read_ram),(channelf_cart_slot_device*)m_cart), write8_delegate(FUNC(channelf_cart_slot_device::write_ram),(channelf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_IO).install_readwrite_handler(0x20, 0x21, read8_delegate(*m_cart, FUNC(channelf_cart_slot_device::read_ram)), write8_delegate(*m_cart, FUNC(channelf_cart_slot_device::write_ram))); break; case CF_CHESS: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2800, 0x2fff, read8_delegate(FUNC(channelf_cart_slot_device::read_ram),(channelf_cart_slot_device*)m_cart), write8_delegate(FUNC(channelf_cart_slot_device::write_ram),(channelf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2800, 0x2fff, read8_delegate(*m_cart, FUNC(channelf_cart_slot_device::read_ram)), write8_delegate(*m_cart, FUNC(channelf_cart_slot_device::write_ram))); break; case CF_MULTI: case CF_MULTI_OLD: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2800, 0x2fff, read8_delegate(FUNC(channelf_cart_slot_device::read_ram),(channelf_cart_slot_device*)m_cart), write8_delegate(FUNC(channelf_cart_slot_device::write_ram),(channelf_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x3000, 0x3fff, write8_delegate(FUNC(channelf_cart_slot_device::write_bank),(channelf_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2800, 0x2fff, read8_delegate(*m_cart, FUNC(channelf_cart_slot_device::read_ram)), write8_delegate(*m_cart, FUNC(channelf_cart_slot_device::write_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x3000, 0x3fff, write8_delegate(*m_cart, FUNC(channelf_cart_slot_device::write_bank))); break; } diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp index 398d4578ec9..82ee3379f5d 100644 --- a/src/mame/drivers/chinagat.cpp +++ b/src/mame/drivers/chinagat.cpp @@ -309,8 +309,8 @@ void chinagat_state::video_start() { ddragon_state::video_start(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chinagat_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(chinagat_state::background_scan),this), 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chinagat_state::get_fg_16color_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chinagat_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(chinagat_state::background_scan)), 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chinagat_state::get_fg_16color_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrolldy(-8, -8); diff --git a/src/mame/drivers/chinsan.cpp b/src/mame/drivers/chinsan.cpp index e6ddc7b5e71..3c659aa1e8e 100644 --- a/src/mame/drivers/chinsan.cpp +++ b/src/mame/drivers/chinsan.cpp @@ -468,7 +468,7 @@ WRITE8_MEMBER( chinsan_state::ctrl_w ) void chinsan_state::machine_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chinsan_state::tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chinsan_state::tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bank1->configure_entries(0, 4, memregion("maincpu")->base() + 0x8000, 0x4000); diff --git a/src/mame/drivers/chqflag.cpp b/src/mame/drivers/chqflag.cpp index ee63dabf483..0a55ecf795d 100644 --- a/src/mame/drivers/chqflag.cpp +++ b/src/mame/drivers/chqflag.cpp @@ -345,7 +345,7 @@ void chqflag_state::chqflag(machine_config &config) K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(chqflag_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(chqflag_state::sprite_callback)); m_k051960->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); m_k051960->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); m_k051960->vreg_contrast_handler().set(FUNC(chqflag_state::background_brt_w)); @@ -353,14 +353,14 @@ void chqflag_state::chqflag(machine_config &config) K051316(config, m_k051316[0], 0); m_k051316[0]->set_palette(m_palette); m_k051316[0]->set_offsets(7, 0); - m_k051316[0]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_1), this); + m_k051316[0]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_1)); K051316(config, m_k051316[1], 0); m_k051316[1]->set_palette(m_palette); m_k051316[1]->set_bpp(8); m_k051316[1]->set_layermask(0xc0); m_k051316[1]->set_wrap(1); - m_k051316[1]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_2), this); + m_k051316[1]->set_zoom_callback(FUNC(chqflag_state::zoom_callback_2)); K051733(config, "k051733", 0); diff --git a/src/mame/drivers/cinemat.cpp b/src/mame/drivers/cinemat.cpp index 820f929e2f8..20c0b4d0ea4 100644 --- a/src/mame/drivers/cinemat.cpp +++ b/src/mame/drivers/cinemat.cpp @@ -1499,21 +1499,21 @@ ROM_END void cinemat_state::init_speedfrk() { m_gear = 0xe; - m_maincpu->space(AS_IO).install_read_handler(0x00, 0x03, read8_delegate(FUNC(cinemat_state::speedfrk_wheel_r),this)); - m_maincpu->space(AS_IO).install_read_handler(0x04, 0x06, read8_delegate(FUNC(cinemat_state::speedfrk_gear_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x00, 0x03, read8_delegate(*this, FUNC(cinemat_state::speedfrk_wheel_r))); + m_maincpu->space(AS_IO).install_read_handler(0x04, 0x06, read8_delegate(*this, FUNC(cinemat_state::speedfrk_gear_r))); save_item(NAME(m_gear)); } void cinemat_16level_state::init_sundance() { - m_maincpu->space(AS_IO).install_read_handler(0x00, 0x0f, read8_delegate(FUNC(cinemat_16level_state::sundance_inputs_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x00, 0x0f, read8_delegate(*this, FUNC(cinemat_16level_state::sundance_inputs_r))); } void cinemat_color_state::init_boxingb() { - m_maincpu->space(AS_IO).install_read_handler(0x0c, 0x0f, read8_delegate(FUNC(cinemat_color_state::boxingb_dial_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x0c, 0x0f, read8_delegate(*this, FUNC(cinemat_color_state::boxingb_dial_r))); } diff --git a/src/mame/drivers/cischeat.cpp b/src/mame/drivers/cischeat.cpp index d7961cd0fb1..aca6f21c8cc 100644 --- a/src/mame/drivers/cischeat.cpp +++ b/src/mame/drivers/cischeat.cpp @@ -2205,8 +2205,8 @@ void captflag_state::captflag(machine_config &config) MEGASYS1_TILEMAP(config, m_tmap[2], m_palette, 0x4e00/2); // Motors - TIMER(config, m_motor_left).configure_generic(timer_device::expired_delegate()); - TIMER(config, m_motor_right).configure_generic(timer_device::expired_delegate()); + TIMER(config, m_motor_left).configure_generic(nullptr); + TIMER(config, m_motor_right).configure_generic(nullptr); // Layout config.set_default_layout(layout_captflag); diff --git a/src/mame/drivers/clickstart.cpp b/src/mame/drivers/clickstart.cpp index 2c24ae2f63c..ac5fcb27a00 100644 --- a/src/mame/drivers/clickstart.cpp +++ b/src/mame/drivers/clickstart.cpp @@ -423,7 +423,7 @@ void clickstart_state::clickstart(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "clickstart_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(clickstart_state::cart_load), this); + m_cart->set_device_load(FUNC(clickstart_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("clickstart_cart"); } diff --git a/src/mame/drivers/clpoker.cpp b/src/mame/drivers/clpoker.cpp index 372c788d257..d2c34eee812 100644 --- a/src/mame/drivers/clpoker.cpp +++ b/src/mame/drivers/clpoker.cpp @@ -220,8 +220,8 @@ WRITE8_MEMBER(clpoker_state::videoram_w) void clpoker_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clpoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clpoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clpoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clpoker_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); m_nmi_enable = false; diff --git a/src/mame/drivers/cmi.cpp b/src/mame/drivers/cmi.cpp index 48617b5d569..db1adbf9dd8 100644 --- a/src/mame/drivers/cmi.cpp +++ b/src/mame/drivers/cmi.cpp @@ -1265,7 +1265,7 @@ void cmi_state::install_video_ram(int cpunum) { address_space *space = (cpunum == CPU_1 ? m_cpu1space : m_cpu2space); - space->install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(cmi_state::vram_r),this), write8_delegate(FUNC(cmi_state::vram_w),this)); + space->install_readwrite_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(cmi_state::vram_r)), write8_delegate(*this, FUNC(cmi_state::vram_w))); } WRITE8_MEMBER( cmi_state::i8214_cpu1_w ) @@ -1302,54 +1302,57 @@ void cmi_state::install_peripherals(int cpunum) { address_space *space = (cpunum == CPU_1 ? m_cpu1space : m_cpu2space); - space->install_readwrite_handler(0xe000, 0xe03f, read8_delegate(FUNC(cmi_state::cmi02_r),this), write8_delegate(FUNC(cmi_state::cmi02_w),this)); + space->install_readwrite_handler(0xe000, 0xe03f, read8_delegate(*this, FUNC(cmi_state::cmi02_r)), write8_delegate(*this, FUNC(cmi_state::cmi02_w))); if (cpunum) - space->install_readwrite_handler(0xf000, 0xf7ff, read8_delegate(FUNC(cmi_state::rom_r<1>),this), write8_delegate(FUNC(cmi_state::map_ram_w),this)); + space->install_readwrite_handler(0xf000, 0xf7ff, read8_delegate(*this, FUNC(cmi_state::rom_r<1>)), write8_delegate(*this, FUNC(cmi_state::map_ram_w))); else - space->install_readwrite_handler(0xf000, 0xf7ff, read8_delegate(FUNC(cmi_state::rom_r<0>),this), write8_delegate(FUNC(cmi_state::map_ram_w),this)); + space->install_readwrite_handler(0xf000, 0xf7ff, read8_delegate(*this, FUNC(cmi_state::rom_r<0>)), write8_delegate(*this, FUNC(cmi_state::map_ram_w))); space->install_rom(0xf800, 0xfbff, m_q133_rom + (cpunum == CPU_2 ? 0x1800 : 0x2800)); - space->install_readwrite_handler(0xfc40, 0xfc4f, read8_delegate(FUNC(cmi_state::parity_r),this), write8_delegate(FUNC(cmi_state::mapsel_w),this)); + space->install_readwrite_handler(0xfc40, 0xfc4f, read8_delegate(*this, FUNC(cmi_state::parity_r)), write8_delegate(*this, FUNC(cmi_state::mapsel_w))); space->nop_readwrite(0xfc5a, 0xfc5b); // Q077 HDD controller - not installed - space->install_readwrite_handler(0xfc5e, 0xfc5e, read8_delegate(FUNC(cmi_state::atomic_r),this), write8_delegate(FUNC(cmi_state::cpufunc_w),this)); + space->install_readwrite_handler(0xfc5e, 0xfc5e, read8_delegate(*this, FUNC(cmi_state::atomic_r)), write8_delegate(*this, FUNC(cmi_state::cpufunc_w))); if (cpunum) - space->install_readwrite_handler(0xfc5f, 0xfc5f, read8_delegate(FUNC(cmi_state::map_r<1>),this), write8_delegate(FUNC(cmi_state::map_w<1>),this)); + space->install_readwrite_handler(0xfc5f, 0xfc5f, read8_delegate(*this, FUNC(cmi_state::map_r<1>)), write8_delegate(*this, FUNC(cmi_state::map_w<1>))); else - space->install_readwrite_handler(0xfc5f, 0xfc5f, read8_delegate(FUNC(cmi_state::map_r<0>),this), write8_delegate(FUNC(cmi_state::map_w<0>),this)); + space->install_readwrite_handler(0xfc5f, 0xfc5f, read8_delegate(*this, FUNC(cmi_state::map_r<0>)), write8_delegate(*this, FUNC(cmi_state::map_w<0>))); - space->install_readwrite_handler(0xfc80, 0xfc83, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[0].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[0].target())); - space->install_readwrite_handler(0xfc84, 0xfc87, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[1].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[1].target())); - space->install_readwrite_handler(0xfc88, 0xfc8b, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[2].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[2].target())); - space->install_readwrite_handler(0xfc8c, 0xfc8f, read8sm_delegate(FUNC(mos6551_device::read),m_q133_acia[3].target()), write8sm_delegate(FUNC(mos6551_device::write),m_q133_acia[3].target())); - space->install_readwrite_handler(0xfc90, 0xfc97, read8sm_delegate(FUNC(ptm6840_device::read),m_q133_ptm.target()), write8sm_delegate(FUNC(ptm6840_device::write),m_q133_ptm.target())); + space->install_readwrite_handler(0xfc80, 0xfc83, read8sm_delegate(*m_q133_acia[0], FUNC(mos6551_device::read)), write8sm_delegate(*m_q133_acia[0], FUNC(mos6551_device::write))); + space->install_readwrite_handler(0xfc84, 0xfc87, read8sm_delegate(*m_q133_acia[1], FUNC(mos6551_device::read)), write8sm_delegate(*m_q133_acia[1], FUNC(mos6551_device::write))); + space->install_readwrite_handler(0xfc88, 0xfc8b, read8sm_delegate(*m_q133_acia[2], FUNC(mos6551_device::read)), write8sm_delegate(*m_q133_acia[2], FUNC(mos6551_device::write))); + space->install_readwrite_handler(0xfc8c, 0xfc8f, read8sm_delegate(*m_q133_acia[3], FUNC(mos6551_device::read)), write8sm_delegate(*m_q133_acia[3], FUNC(mos6551_device::write))); + space->install_readwrite_handler(0xfc90, 0xfc97, read8sm_delegate(*m_q133_ptm, FUNC(ptm6840_device::read)), write8sm_delegate(*m_q133_ptm, FUNC(ptm6840_device::write))); - space->install_readwrite_handler(0xfcbc, 0xfcbc, read8_delegate(FUNC(cmi_state::cmi07_r),this), write8_delegate(FUNC(cmi_state::cmi07_w),this)); + space->install_readwrite_handler(0xfcbc, 0xfcbc, read8_delegate(*this, FUNC(cmi_state::cmi07_r)), write8_delegate(*this, FUNC(cmi_state::cmi07_w))); - space->install_read_handler(0xfcc0, 0xfcc3, read8_delegate(FUNC(cmi_state::lightpen_r),this)); - space->install_readwrite_handler(0xfcc4, 0xfcc7, read8sm_delegate(FUNC(pia6821_device::read),m_q219_pia.target()), write8sm_delegate(FUNC(pia6821_device::write),m_q219_pia.target())); - space->install_readwrite_handler(0xfcc8, 0xfccf, read8sm_delegate(FUNC(ptm6840_device::read),m_q219_ptm.target()), write8sm_delegate(FUNC(ptm6840_device::write),m_q219_ptm.target())); - space->install_readwrite_handler(0xfcd0, 0xfcdc, read8_delegate(FUNC(cmi_state::video_r),this), write8_delegate(FUNC(cmi_state::video_w),this)); - space->install_readwrite_handler(0xfce0, 0xfce1, read8_delegate(FUNC(cmi_state::fdc_r),this), write8_delegate(FUNC(cmi_state::fdc_w),this)); + space->install_read_handler(0xfcc0, 0xfcc3, read8_delegate(*this, FUNC(cmi_state::lightpen_r))); + space->install_readwrite_handler(0xfcc4, 0xfcc7, read8sm_delegate(*m_q219_pia, FUNC(pia6821_device::read)), write8sm_delegate(*m_q219_pia, FUNC(pia6821_device::write))); + space->install_readwrite_handler(0xfcc8, 0xfccf, read8sm_delegate(*m_q219_ptm, FUNC(ptm6840_device::read)), write8sm_delegate(*m_q219_ptm, FUNC(ptm6840_device::write))); + space->install_readwrite_handler(0xfcd0, 0xfcdc, read8_delegate(*this, FUNC(cmi_state::video_r)), write8_delegate(*this, FUNC(cmi_state::video_w))); + space->install_readwrite_handler(0xfce0, 0xfce1, read8_delegate(*this, FUNC(cmi_state::fdc_r)), write8_delegate(*this, FUNC(cmi_state::fdc_w))); space->nop_readwrite(0xfce2, 0xfcef); // Monitor ROM will attempt to detect floppy disk controller cards in this entire range - space->install_readwrite_handler(0xfcf0, 0xfcf7, read8sm_delegate(FUNC(pia6821_device::read),m_q133_pia[0].target()), write8sm_delegate(FUNC(pia6821_device::write),m_q133_pia[0].target())); - space->install_readwrite_handler(0xfcf8, 0xfcff, read8sm_delegate(FUNC(pia6821_device::read),m_q133_pia[1].target()), write8sm_delegate(FUNC(pia6821_device::write),m_q133_pia[1].target())); + space->install_readwrite_handler(0xfcf0, 0xfcf7, read8sm_delegate(*m_q133_pia[0], FUNC(pia6821_device::read)), write8sm_delegate(*m_q133_pia[0], FUNC(pia6821_device::write))); + space->install_readwrite_handler(0xfcf8, 0xfcff, read8sm_delegate(*m_q133_pia[1], FUNC(pia6821_device::read)), write8sm_delegate(*m_q133_pia[1], FUNC(pia6821_device::write))); - space->install_write_handler(0xfcfc, 0xfcfc, write8_delegate(FUNC(cmi_state::i8214_cpu1_w),this)); - space->install_write_handler(0xfcfd, 0xfcfd, write8_delegate(FUNC(cmi_state::i8214_cpu2_w),this)); + space->install_write_handler(0xfcfc, 0xfcfc, write8_delegate(*this, FUNC(cmi_state::i8214_cpu1_w))); + space->install_write_handler(0xfcfd, 0xfcfd, write8_delegate(*this, FUNC(cmi_state::i8214_cpu2_w))); - space->install_readwrite_handler(0xfd00, 0xfeff, read8_delegate(FUNC(cmi_state::shared_ram_r),this), write8_delegate(FUNC(cmi_state::shared_ram_w),this)); + space->install_readwrite_handler(0xfd00, 0xfeff, read8_delegate(*this, FUNC(cmi_state::shared_ram_r)), write8_delegate(*this, FUNC(cmi_state::shared_ram_w))); space->install_ram(0xff00, 0xfff7, &m_scratch_ram[cpunum][0]); space->install_ram(0xfffa, 0xfffd, &m_scratch_ram[cpunum][0xfa]); - if (cpunum) { - space->install_readwrite_handler(0xfff8, 0xfff9, read8_delegate(FUNC(cmi_state::irq_ram_r<1>),this), write8_delegate(FUNC(cmi_state::irq_ram_w<1>),this)); - space->install_read_handler(0xfffe, 0xffff, read8_delegate(FUNC(cmi_state::vector_r<1>),this)); - } else { - space->install_readwrite_handler(0xfff8, 0xfff9, read8_delegate(FUNC(cmi_state::irq_ram_r<0>),this), write8_delegate(FUNC(cmi_state::irq_ram_w<0>),this)); - space->install_read_handler(0xfffe, 0xffff, read8_delegate(FUNC(cmi_state::vector_r<0>),this)); + if (cpunum) + { + space->install_readwrite_handler(0xfff8, 0xfff9, read8_delegate(*this, FUNC(cmi_state::irq_ram_r<1>)), write8_delegate(*this, FUNC(cmi_state::irq_ram_w<1>))); + space->install_read_handler(0xfffe, 0xffff, read8_delegate(*this, FUNC(cmi_state::vector_r<1>))); + } + else + { + space->install_readwrite_handler(0xfff8, 0xfff9, read8_delegate(*this, FUNC(cmi_state::irq_ram_r<0>)), write8_delegate(*this, FUNC(cmi_state::irq_ram_w<0>))); + space->install_read_handler(0xfffe, 0xffff, read8_delegate(*this, FUNC(cmi_state::vector_r<0>))); } } diff --git a/src/mame/drivers/cninja.cpp b/src/mame/drivers/cninja.cpp index ee91c544f42..7df1d9f149d 100644 --- a/src/mame/drivers/cninja.cpp +++ b/src/mame/drivers/cninja.cpp @@ -812,15 +812,15 @@ void cninja_state::cninja(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_gfx_region(3); - m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback)); m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode); DECO104PROT(config, m_ioprot, 0); @@ -899,15 +899,15 @@ void cninja_state::stoneage(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_gfx_region(3); - m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback)); m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode); DECO104PROT(config, m_ioprot, 0); @@ -994,8 +994,8 @@ void cninja_state::cninjabl(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); @@ -1064,15 +1064,15 @@ void cninja_state::edrandy(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::cninja_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::cninja_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_gfx_region(3); - m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback)); m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode); DECO146PROT(config, m_ioprot, 0); @@ -1138,7 +1138,7 @@ void cninja_state::robocop2(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank2_callback(FUNC(cninja_state::robocop2_bank_callback), this); + m_deco_tilegen[0]->set_bank2_callback(FUNC(cninja_state::robocop2_bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1152,15 +1152,15 @@ void cninja_state::robocop2(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::robocop2_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::robocop2_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::robocop2_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::robocop2_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_gfx_region(3); - m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(cninja_state::pri_callback)); m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode); DECO146PROT(config, m_ioprot, 0); @@ -1230,8 +1230,8 @@ void cninja_state::mutantf(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x30); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(cninja_state::mutantf_1_bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(cninja_state::mutantf_2_bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(cninja_state::mutantf_1_bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(cninja_state::mutantf_2_bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1245,8 +1245,8 @@ void cninja_state::mutantf(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x40); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::mutantf_1_bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::mutantf_1_bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(cninja_state::mutantf_1_bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(cninja_state::mutantf_1_bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); @@ -2221,7 +2221,7 @@ ROM_END void cninja_state::init_cninjabl2() { m_maincpu->space(AS_PROGRAM).install_ram(0x180000, 0x18ffff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1b4000, 0x1b4001, read16_delegate(FUNC(cninja_state::cninjabl2_sprite_dma_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1b4000, 0x1b4001, read16_delegate(*this, FUNC(cninja_state::cninjabl2_sprite_dma_r))); m_okibank->configure_entries(0, 8, memregion("oki2")->base(), 0x10000); } diff --git a/src/mame/drivers/cntsteer.cpp b/src/mame/drivers/cntsteer.cpp index a41be7a573d..1323717d2ae 100644 --- a/src/mame/drivers/cntsteer.cpp +++ b/src/mame/drivers/cntsteer.cpp @@ -199,8 +199,8 @@ TILE_GET_INFO_MEMBER(cntsteer_state::get_fg_tile_info) VIDEO_START_MEMBER(cntsteer_state,cntsteer) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cntsteer_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cntsteer_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cntsteer_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cntsteer_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); @@ -209,8 +209,8 @@ VIDEO_START_MEMBER(cntsteer_state,cntsteer) VIDEO_START_MEMBER(cntsteer_state,zerotrgt) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cntsteer_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cntsteer_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cntsteer_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cntsteer_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/cobra.cpp b/src/mame/drivers/cobra.cpp index 1a9f50b90c8..adc7b603c27 100644 --- a/src/mame/drivers/cobra.cpp +++ b/src/mame/drivers/cobra.cpp @@ -3298,8 +3298,7 @@ void cobra_state::cobra(machine_config &config) config.m_minimum_quantum = attotime::from_hz(15005); PCI_BUS_LEGACY(config, m_legacy_pci, 0, 0); - m_legacy_pci->set_device_read(0, FUNC(cobra_state::mpc106_pci_r), this); - m_legacy_pci->set_device_write(0, FUNC(cobra_state::mpc106_pci_w), this); + m_legacy_pci->set_device(0, FUNC(cobra_state::mpc106_pci_r), FUNC(cobra_state::mpc106_pci_w)); ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true); m_ata->irq_handler().set(FUNC(cobra_state::ide_interrupt)); @@ -3377,12 +3376,12 @@ void cobra_state::init_cobra() cobra_fifo::event_delegate(&cobra_state::s2mfifo_event_callback, this)) ); - m_maincpu->ppc_set_dcstore_callback(write32_delegate(FUNC(cobra_state::main_cpu_dc_store),this)); + m_maincpu->ppc_set_dcstore_callback(write32_delegate(*this, FUNC(cobra_state::main_cpu_dc_store))); - m_gfxcpu->ppc_set_dcstore_callback(write32_delegate(FUNC(cobra_state::gfx_cpu_dc_store), this)); + m_gfxcpu->ppc_set_dcstore_callback(write32_delegate(*this, FUNC(cobra_state::gfx_cpu_dc_store))); - m_subcpu->ppc4xx_set_dma_write_handler(0, write32_delegate(FUNC(cobra_state::sub_sound_dma_w), this), 44100); - m_subcpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(cobra_state::sub_jvs_w), this)); + m_subcpu->ppc4xx_set_dma_write_handler(0, write32_delegate(*this, FUNC(cobra_state::sub_sound_dma_w)), 44100); + m_subcpu->ppc4xx_spu_set_tx_handler(write8_delegate(*this, FUNC(cobra_state::sub_jvs_w))); m_comram[0] = std::make_unique<uint32_t[]>(0x40000/4); diff --git a/src/mame/drivers/coinmstr.cpp b/src/mame/drivers/coinmstr.cpp index 98780b94b88..3e5bf6a5685 100644 --- a/src/mame/drivers/coinmstr.cpp +++ b/src/mame/drivers/coinmstr.cpp @@ -1246,7 +1246,7 @@ TILE_GET_INFO_MEMBER(coinmstr_state::get_bg_tile_info) void coinmstr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(coinmstr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 46, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(coinmstr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 46, 32); } uint32_t coinmstr_state::screen_update_coinmstr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/coleco.cpp b/src/mame/drivers/coleco.cpp index 8c44a8f89cd..af8fdbeea9b 100644 --- a/src/mame/drivers/coleco.cpp +++ b/src/mame/drivers/coleco.cpp @@ -342,7 +342,7 @@ void coleco_state::machine_start() } if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8_delegate(FUNC(coleco_state::cart_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8_delegate(*this, FUNC(coleco_state::cart_r))); save_item(NAME(m_joy_mode)); save_item(NAME(m_last_nmi_state)); diff --git a/src/mame/drivers/combatsc.cpp b/src/mame/drivers/combatsc.cpp index f3ab95696d3..24c92c6fc82 100644 --- a/src/mame/drivers/combatsc.cpp +++ b/src/mame/drivers/combatsc.cpp @@ -235,8 +235,8 @@ WRITE8_MEMBER(combatsc_state::combatscb_bankselect_w) if (data == 0x1f) { membank("bank1")->set_entry(8 + (data & 1)); - space.install_write_handler(0x4000, 0x7fff, write8_delegate(FUNC(combatsc_state::combatscb_io_w),this)); - space.install_read_handler(0x4400, 0x4403, read8_delegate(FUNC(combatsc_state::combatscb_io_r),this));/* IO RAM & Video Registers */ + space.install_write_handler(0x4000, 0x7fff, write8_delegate(*this, FUNC(combatsc_state::combatscb_io_w))); + space.install_read_handler(0x4400, 0x4403, read8_delegate(*this, FUNC(combatsc_state::combatscb_io_r))); // IO RAM & Video Registers } else { diff --git a/src/mame/drivers/comx35.cpp b/src/mame/drivers/comx35.cpp index 0db94f4f0a1..5c600bd0c6e 100644 --- a/src/mame/drivers/comx35.cpp +++ b/src/mame/drivers/comx35.cpp @@ -630,7 +630,7 @@ void comx35_state::base(machine_config &config, const XTAL clock) m_kbe->d11_callback().set_ioport("D11"); m_kbe->da_callback().set_inputline(m_maincpu, COSMAC_INPUT_LINE_EF3); - QUICKLOAD(config, "quickload", "comx").set_load_callback(FUNC(comx35_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "comx").set_load_callback(FUNC(comx35_state::quickload_cb)); CASSETTE(config, m_cassette).set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); //m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); diff --git a/src/mame/drivers/coolridr.cpp b/src/mame/drivers/coolridr.cpp index 4bc6129aeb0..3c9566c3900 100644 --- a/src/mame/drivers/coolridr.cpp +++ b/src/mame/drivers/coolridr.cpp @@ -3436,7 +3436,7 @@ READ32_MEMBER(coolridr_state::aquastge_hack_r) void coolridr_state::init_coolridr() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x60d8894, 0x060d8897, read32_delegate(FUNC(coolridr_state::coolridr_hack2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x60d8894, 0x060d8897, read32_delegate(*this, FUNC(coolridr_state::coolridr_hack2_r))); m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); m_subcpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); @@ -3452,7 +3452,7 @@ void coolridr_state::init_coolridr() void coolridr_state::init_aquastge() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x60c3fd8, 0x60c3fdb, read32_delegate(FUNC(coolridr_state::aquastge_hack_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x60c3fd8, 0x60c3fdb, read32_delegate(*this, FUNC(coolridr_state::aquastge_hack_r))); m_maincpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); m_subcpu->sh2drc_set_options(SH2DRC_FASTEST_OPTIONS); diff --git a/src/mame/drivers/cosmic.cpp b/src/mame/drivers/cosmic.cpp index 484dcbeba1b..8f114e37f7e 100644 --- a/src/mame/drivers/cosmic.cpp +++ b/src/mame/drivers/cosmic.cpp @@ -1575,16 +1575,16 @@ void cosmic_state::init_cosmica() void cosmic_state::init_devzone() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4807, 0x4807,write8_delegate(FUNC(cosmic_state::cosmic_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4807, 0x4807, write8_delegate(*this, FUNC(cosmic_state::cosmic_background_enable_w))); } void cosmic_state::init_nomnlnd() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5000, 0x5001, read8_delegate(FUNC(cosmic_state::nomnlnd_port_0_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5000, 0x5001, read8_delegate(*this, FUNC(cosmic_state::nomnlnd_port_0_1_r))); m_maincpu->space(AS_PROGRAM).nop_write(0x4800, 0x4800); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4807, 0x4807, write8_delegate(FUNC(cosmic_state::cosmic_background_enable_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x480a, 0x480a, write8_delegate(FUNC(cosmic_state::dac_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4807, 0x4807, write8_delegate(*this, FUNC(cosmic_state::cosmic_background_enable_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x480a, 0x480a, write8_delegate(*this, FUNC(cosmic_state::dac_w))); } void cosmic_state::init_panic() diff --git a/src/mame/drivers/cosmicos.cpp b/src/mame/drivers/cosmicos.cpp index 5fb6eb70d9d..a997accc93e 100644 --- a/src/mame/drivers/cosmicos.cpp +++ b/src/mame/drivers/cosmicos.cpp @@ -549,7 +549,7 @@ void cosmicos_state::cosmicos(machine_config &config) m_cti->add_route(ALL_OUTPUTS, "mono", 0.25); /* devices */ - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(cosmicos_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(cosmicos_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index b4bb54d20f4..97f50ef2fe7 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -294,7 +294,7 @@ void cp1_state::cp1(machine_config &config) m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_SPEAKER_ENABLED | CASSETTE_MOTOR_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); - QUICKLOAD(config, "quickload", "obj", attotime::from_seconds(1)).set_load_callback(FUNC(cp1_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "obj", attotime::from_seconds(1)).set_load_callback(FUNC(cp1_state::quickload_cb)); } /* ROM definition */ diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp index d43b0e56a96..0ab83924b68 100644 --- a/src/mame/drivers/cps1.cpp +++ b/src/mame/drivers/cps1.cpp @@ -353,11 +353,15 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps_state::ganbare_interrupt) void cps_state::cpu_space_map(address_map &map) { // Eventually add the sync to E due to vpa - map(0xfffff2, 0xffffff).lr16("autovectors", [this](offs_t offset) -> u16 { - // clear the IPL1 and IPL2 flip-flops - m_maincpu->set_input_line(2, CLEAR_LINE); - m_maincpu->set_input_line(4, CLEAR_LINE); - return m68000_device::autovector(offset+1); }); + map(0xfffff2, 0xffffff).lr16( + [this] (offs_t offset) -> u16 + { + // clear the IPL1 and IPL2 flip-flops + m_maincpu->set_input_line(2, CLEAR_LINE); + m_maincpu->set_input_line(4, CLEAR_LINE); + return m68000_device::autovector(offset + 1); + }, + "autovectors"); } @@ -13026,7 +13030,7 @@ READ16_MEMBER(cps_state::sf2rb_prot_r) void cps_state::init_sf2rb() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(*this, FUNC(cps_state::sf2rb_prot_r))); init_cps1(); } @@ -13047,7 +13051,7 @@ READ16_MEMBER(cps_state::sf2rb2_prot_r) void cps_state::init_sf2rb2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(FUNC(cps_state::sf2rb2_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x2fffff, read16_delegate(*this, FUNC(cps_state::sf2rb2_prot_r))); init_cps1(); } @@ -13057,7 +13061,7 @@ void cps_state::init_sf2ee() /* This specific revision of SF2 has the CPS-B custom mapped at a different address. */ /* The mapping is handled by the PAL IOB2 on the B-board */ m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x800140, 0x80017f); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(*this, FUNC(cps_state::cps1_cps_b_r)), write16_delegate(*this, FUNC(cps_state::cps1_cps_b_w))); init_cps1(); } @@ -13065,7 +13069,7 @@ void cps_state::init_sf2ee() void cps_state::init_sf2thndr() { /* This particular hack uses a modified B-board PAL which mirrors the CPS-B registers at an alternate address */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(FUNC(cps_state::cps1_cps_b_r),this), write16_delegate(FUNC(cps_state::cps1_cps_b_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8001c0, 0x8001ff, read16_delegate(*this, FUNC(cps_state::cps1_cps_b_r)), write16_delegate(*this, FUNC(cps_state::cps1_cps_b_w))); init_cps1(); } @@ -13073,7 +13077,7 @@ void cps_state::init_sf2thndr() void cps_state::init_sf2hack() { /* some SF2 hacks have some inputs wired to the LSB instead of MSB */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_hack_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(*this, FUNC(cps_state::cps1_hack_dsw_r))); init_cps1(); } @@ -13115,7 +13119,7 @@ READ16_MEMBER(cps_state::sf2dongb_prot_r) void cps_state::init_sf2dongb() { // There is a hacked up Altera EP910PC-30 DIP in the 5f socket instead of a 4th EPROM - m_maincpu->space(AS_PROGRAM).install_read_handler(0x180000, 0x1fffff, read16_delegate(FUNC(cps_state::sf2dongb_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180000, 0x1fffff, read16_delegate(*this, FUNC(cps_state::sf2dongb_prot_r))); init_cps1(); } @@ -13137,8 +13141,8 @@ WRITE16_MEMBER(cps_state::sf2ceblp_prot_w) void cps_state::init_sf2ceblp() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16_delegate(FUNC(cps_state::sf2ceblp_prot_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16_delegate(FUNC(cps_state::sf2ceblp_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5762b0, 0x5762b1, write16_delegate(*this, FUNC(cps_state::sf2ceblp_prot_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x57A2b0, 0x57A2b1, read16_delegate(*this, FUNC(cps_state::sf2ceblp_prot_r))); init_cps1(); } @@ -13255,7 +13259,7 @@ void cps_state::init_ganbare() init_cps1(); /* ram is shared between the CPS work ram and the timekeeper ram */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff0000, 0xffffff, read16_delegate(FUNC(cps_state::ganbare_ram_r),this), write16_delegate(FUNC(cps_state::ganbare_ram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff0000, 0xffffff, read16_delegate(*this, FUNC(cps_state::ganbare_ram_r)), write16_delegate(*this, FUNC(cps_state::ganbare_ram_w))); } READ16_MEMBER(cps_state::dinohunt_sound_r) @@ -13269,7 +13273,7 @@ READ16_MEMBER(cps_state::dinohunt_sound_r) void cps_state::init_dinohunt() { // is this shared with the new sound hw? - m_maincpu->space(AS_PROGRAM).install_read_handler(0xf18000, 0xf19fff, read16_delegate(FUNC(cps_state::dinohunt_sound_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xf18000, 0xf19fff, read16_delegate(*this, FUNC(cps_state::dinohunt_sound_r))); m_maincpu->space(AS_PROGRAM).install_read_port(0xfc0000, 0xfc0001, "IN2"); ; // the ym2151 doesn't seem to be used. Is it actually on the PCB? diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index 69b5acb934d..0795c89dcfa 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -9930,7 +9930,7 @@ void cps2_state::init_digital_volume() m_cps2disabledigitalvolume = 0; /* create a timer to update our volume state from the fake switches - read it every 6 frames or so to enable some granularity */ - m_digital_volume_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cps2_state::cps2_update_digital_volume),this)); + m_digital_volume_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cps2_state::cps2_update_digital_volume), this)); m_digital_volume_timer->adjust(attotime::from_msec(100), 0, attotime::from_msec(100)); } @@ -9977,7 +9977,7 @@ void cps2_state::init_pzloop2() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(*this, FUNC(cps2_state::joy_or_paddle_r))); } void cps2_state::init_singbrd() @@ -10025,7 +10025,7 @@ void cps2_state::init_gigaman2() m_gigaman2_dummyqsound_ram = std::make_unique<uint16_t[]>(0x20000 / 2); save_pointer(NAME(m_gigaman2_dummyqsound_ram), 0x20000 / 2); - space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_r),this), write16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_w), this)); // no qsound.. + space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(*this, FUNC(cps2_state::gigaman2_dummyqsound_r)), write16_delegate(*this, FUNC(cps2_state::gigaman2_dummyqsound_w))); // no qsound.. memcpy(m_decrypted_opcodes, memregion("maincpu")->base()+0x200000, 0x200000); @@ -10042,7 +10042,7 @@ void cps2_state::init_ecofghtr() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_ecofghtr_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(*this, FUNC(cps2_state::joy_or_paddle_ecofghtr_r))); } diff --git a/src/mame/drivers/cps3.cpp b/src/mame/drivers/cps3.cpp index fac2c927a22..ae9f9b5f02b 100644 --- a/src/mame/drivers/cps3.cpp +++ b/src/mame/drivers/cps3.cpp @@ -2157,10 +2157,10 @@ void cps3_state::cps3_map(address_map &map) map(0x05040000, 0x0504ffff).rw(FUNC(cps3_state::ssram_r), FUNC(cps3_state::ssram_w)).umask32(0x00ff00ff); // 'SS' RAM (Score Screen) (text tilemap + toles) map(0x05050000, 0x0505002b).w(FUNC(cps3_state::ssregs_w)).umask32(0x00ff00ff); - map(0x05100000, 0x05100003).lw32("irq12_ack", [this](offs_t, u32) { m_maincpu->set_input_line(12, CLEAR_LINE); }); - map(0x05110000, 0x05110003).lw32("irq10_ack", [this](offs_t, u32) { m_maincpu->set_input_line(10, CLEAR_LINE); }); - map(0x05120000, 0x05120003).lw32("irq14_ack", [this](offs_t, u32) { m_maincpu->set_input_line(14, CLEAR_LINE); }); // ?? unused - map(0x05130000, 0x05130003).lw32("irq6_ack", [this](offs_t, u32) { m_maincpu->set_input_line(6, CLEAR_LINE); }); // ?? unused + map(0x05100000, 0x05100003).lw32(NAME([this] (offs_t, u32) { m_maincpu->set_input_line(12, CLEAR_LINE); })); + map(0x05110000, 0x05110003).lw32(NAME([this] (offs_t, u32) { m_maincpu->set_input_line(10, CLEAR_LINE); })); + map(0x05120000, 0x05120003).lw32(NAME([this] (offs_t, u32) { m_maincpu->set_input_line(14, CLEAR_LINE); })); // ?? unused + map(0x05130000, 0x05130003).lw32(NAME([this] (offs_t, u32) { m_maincpu->set_input_line(6, CLEAR_LINE); })); // ?? unused map(0x05140000, 0x05140003).rw("scsi:7:wd33c93", FUNC(wd33c93_device::indir_r), FUNC(wd33c93_device::indir_w)).umask32(0x00ff00ff); map(0x06000000, 0x067fffff).rw(FUNC(cps3_state::flash1_r), FUNC(cps3_state::flash1_w)); /* Flash ROMs simm 1 */ diff --git a/src/mame/drivers/crgolf.cpp b/src/mame/drivers/crgolf.cpp index b6d7be43ad6..e44dcaa034b 100644 --- a/src/mame/drivers/crgolf.cpp +++ b/src/mame/drivers/crgolf.cpp @@ -757,7 +757,7 @@ ROM_END void crgolf_state::init_crgolfhi() { - m_audiocpu->space(AS_PROGRAM).install_write_handler(0xa000, 0xa003, write8_delegate(FUNC(crgolf_state::crgolfhi_sample_w),this)); + m_audiocpu->space(AS_PROGRAM).install_write_handler(0xa000, 0xa003, write8_delegate(*this, FUNC(crgolf_state::crgolfhi_sample_w))); } diff --git a/src/mame/drivers/crimfght.cpp b/src/mame/drivers/crimfght.cpp index cc1b9cb146d..147f8619994 100644 --- a/src/mame/drivers/crimfght.cpp +++ b/src/mame/drivers/crimfght.cpp @@ -328,12 +328,12 @@ void crimfght_state::crimfght(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(crimfght_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(crimfght_state::tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(crimfght_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(crimfght_state::sprite_callback)); m_k051960->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); /* sound hardware */ diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp index 0a78c3f0d3e..0f243576a88 100644 --- a/src/mame/drivers/crshrace.cpp +++ b/src/mame/drivers/crshrace.cpp @@ -427,7 +427,7 @@ void crshrace_state::crshrace(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xGBR_555, 2048); VSYSTEM_SPR(config, m_spr, 0); - m_spr->set_tile_indirect_cb(FUNC(crshrace_state::crshrace_tile_callback), this); + m_spr->set_tile_indirect_cb(FUNC(crshrace_state::crshrace_tile_callback)); m_spr->set_gfx_region(2); m_spr->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/crvision.cpp b/src/mame/drivers/crvision.cpp index 8f97937de0a..19811bb602b 100644 --- a/src/mame/drivers/crvision.cpp +++ b/src/mame/drivers/crvision.cpp @@ -694,8 +694,8 @@ void crvision_state::machine_start() if (m_cart->exists()) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom40),(crvision_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(crvision_cart_slot_device::read_rom80),(crvision_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(*m_cart, FUNC(crvision_cart_slot_device::read_rom40))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xbfff, read8_delegate(*m_cart, FUNC(crvision_cart_slot_device::read_rom80))); } } diff --git a/src/mame/drivers/csplayh5.cpp b/src/mame/drivers/csplayh5.cpp index 426410c7227..3a4686d7b9f 100644 --- a/src/mame/drivers/csplayh5.cpp +++ b/src/mame/drivers/csplayh5.cpp @@ -46,8 +46,8 @@ class csplayh5_state : public driver_device { public: - csplayh5_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + csplayh5_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_nichisnd(*this, "nichisnd"), m_key(*this, "KEY.%u", 0), @@ -361,7 +361,7 @@ void csplayh5_state::csplayh5(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &csplayh5_state::csplayh5_map); m_maincpu->out_parallel_callback().set(FUNC(csplayh5_state::tmp68301_parallel_port_w)); - TIMER(config, "scantimer", 0).configure_scanline(timer_device::expired_delegate(FUNC(csplayh5_state::csplayh5_irq), this), "screen", 0, 1); + TIMER(config, "scantimer", 0).configure_scanline(FUNC(csplayh5_state::csplayh5_irq), "screen", 0, 1); #if USE_H8 h830002_device &subcpu(H83002(config, "subcpu", DVD_CLOCK/2)); /* unknown divider */ diff --git a/src/mame/drivers/cswat.cpp b/src/mame/drivers/cswat.cpp index 3624c96a493..0b68aeeb176 100644 --- a/src/mame/drivers/cswat.cpp +++ b/src/mame/drivers/cswat.cpp @@ -34,8 +34,8 @@ TODO: class cswat_state : public driver_device { public: - cswat_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + cswat_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_videoram(*this, "videoram"), @@ -98,7 +98,7 @@ TILE_GET_INFO_MEMBER(cswat_state::get_tile_info) void cswat_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cswat_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(cswat_state::tilemap_scan_rows),this), 8, 8, 36, 28); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cswat_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(cswat_state::tilemap_scan_rows)), 8, 8, 36, 28); } uint32_t cswat_state::screen_update_cswat(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/cultures.cpp b/src/mame/drivers/cultures.cpp index 69f636b5c74..c388d96a098 100644 --- a/src/mame/drivers/cultures.cpp +++ b/src/mame/drivers/cultures.cpp @@ -24,8 +24,8 @@ class cultures_state : public driver_device { public: - cultures_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + cultures_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_vrambank(*this, "vrambank"), @@ -109,9 +109,9 @@ TILE_GET_INFO_MEMBER(cultures_state::get_bg0_tile_info) void cultures_state::video_start() { - m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cultures_state::get_bg0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 128); - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cultures_state::get_bg1_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 512, 512); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cultures_state::get_bg2_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 512, 512); + m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cultures_state::get_bg0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 128); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cultures_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 512, 512); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cultures_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 512, 512); m_bg1_tilemap->set_transparent_pen(0); m_bg0_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/cv1k.cpp b/src/mame/drivers/cv1k.cpp index 9180342ed1e..528a4b946d2 100644 --- a/src/mame/drivers/cv1k.cpp +++ b/src/mame/drivers/cv1k.cpp @@ -900,7 +900,7 @@ void cv1k_state::install_speedups(uint32_t idleramoff, uint32_t idlepc, bool is_ m_maincpu->sh2drc_add_pcflush(idlepc+2); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000000+m_idleramoffs, 0xc000000+m_idleramoffs+7, read64_delegate(FUNC(cv1k_state::speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000000+m_idleramoffs, 0xc000000+m_idleramoffs+7, read64_delegate(*this, FUNC(cv1k_state::speedup_r))); m_maincpu->sh2drc_add_fastram(0x00000000, 0x003fffff, true, m_rombase); diff --git a/src/mame/drivers/cvs.cpp b/src/mame/drivers/cvs.cpp index 5853563151e..11879abd318 100644 --- a/src/mame/drivers/cvs.cpp +++ b/src/mame/drivers/cvs.cpp @@ -1561,7 +1561,7 @@ READ8_MEMBER(cvs_state::huncholy_prot_r) void cvs_state::init_huncholy() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6ff1, 0x6ff2, read8_delegate(FUNC(cvs_state::huncholy_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6ff1, 0x6ff2, read8_delegate(*this, FUNC(cvs_state::huncholy_prot_r))); save_item(NAME(m_protection_counter)); } @@ -1586,7 +1586,7 @@ READ8_MEMBER(cvs_state::superbik_prot_r) void cvs_state::init_superbik() { m_protection_counter = 0; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f1, 0x73f2, read8_delegate(FUNC(cvs_state::superbik_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f1, 0x73f2, read8_delegate(*this, FUNC(cvs_state::superbik_prot_r))); save_item(NAME(m_protection_counter)); } @@ -1619,7 +1619,7 @@ READ8_MEMBER(cvs_state::hero_prot_r) void cvs_state::init_hero() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f0, 0x73ff, read8_delegate(FUNC(cvs_state::hero_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x73f0, 0x73ff, read8_delegate(*this, FUNC(cvs_state::hero_prot_r))); } diff --git a/src/mame/drivers/cybertnk.cpp b/src/mame/drivers/cybertnk.cpp index 7a834e49f94..87dd4c34787 100644 --- a/src/mame/drivers/cybertnk.cpp +++ b/src/mame/drivers/cybertnk.cpp @@ -275,13 +275,13 @@ TILE_GET_INFO_MEMBER(cybertnk_state::get_tile_info) void cybertnk_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cybertnk_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,128,32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cybertnk_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8,128,32); m_tilemap[0]->set_transparent_pen(0); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cybertnk_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,128,32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cybertnk_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8,128,32); m_tilemap[1]->set_transparent_pen(0); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cybertnk_state::get_tile_info<2>),this),TILEMAP_SCAN_ROWS,8,8,128,32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cybertnk_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 8,8,128,32); m_tilemap[2]->set_transparent_pen(0); } diff --git a/src/mame/drivers/cybiko.cpp b/src/mame/drivers/cybiko.cpp index 3d964f31ff0..fc69472fcf4 100644 --- a/src/mame/drivers/cybiko.cpp +++ b/src/mame/drivers/cybiko.cpp @@ -426,7 +426,7 @@ void cybiko_state::cybikov1_base(machine_config &config) m_debug_serial->set_option_device_input_defaults("pty", DEVICE_INPUT_DEFAULTS_NAME(debug_serial)); // quickload - QUICKLOAD(config, "quickload", "bin,nv").set_load_callback(FUNC(cybiko_state::quickload_cybiko), this); + QUICKLOAD(config, "quickload", "bin,nv").set_load_callback(FUNC(cybiko_state::quickload_cybiko)); } void cybiko_state::cybikov1_flash(machine_config &config) @@ -497,7 +497,7 @@ void cybiko_state::cybikoxt(machine_config &config) subdevice<h8_sci_device>("maincpu:sci2")->tx_handler().set("debug_serial", FUNC(rs232_port_device::write_txd)); // quickload - QUICKLOAD(config.replace(), "quickload", "bin,nv").set_load_callback(FUNC(cybiko_state::quickload_cybikoxt), this); + QUICKLOAD(config.replace(), "quickload", "bin,nv").set_load_callback(FUNC(cybiko_state::quickload_cybikoxt)); } ///////// diff --git a/src/mame/drivers/cz101.cpp b/src/mame/drivers/cz101.cpp index 3ece028eed4..3798b82d4e5 100644 --- a/src/mame/drivers/cz101.cpp +++ b/src/mame/drivers/cz101.cpp @@ -405,7 +405,7 @@ void cz101_state::cz101(machine_config &config) HD44780(config, m_hd44780, 0); m_hd44780->set_lcd_size(2, 16); - m_hd44780->set_pixel_update_cb(FUNC(cz101_state::lcd_pixel_update), this); + m_hd44780->set_pixel_update_cb(FUNC(cz101_state::lcd_pixel_update)); config.set_default_layout(layout_cz101); } diff --git a/src/mame/drivers/d6800.cpp b/src/mame/drivers/d6800.cpp index 5903ef4c6d3..ced66c31a75 100644 --- a/src/mame/drivers/d6800.cpp +++ b/src/mame/drivers/d6800.cpp @@ -445,7 +445,7 @@ void d6800_state::d6800(machine_config &config) TIMER(config, "kansas_r").configure_periodic(FUNC(d6800_state::kansas_r), attotime::from_hz(40000)); /* quickload */ - QUICKLOAD(config, "quickload", "bin,c8,ch8", attotime::from_seconds(1)).set_load_callback(FUNC(d6800_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin,c8,ch8", attotime::from_seconds(1)).set_load_callback(FUNC(d6800_state::quickload_cb)); } /* ROMs */ diff --git a/src/mame/drivers/d6809.cpp b/src/mame/drivers/d6809.cpp index 24525bcc328..52360ee24f1 100644 --- a/src/mame/drivers/d6809.cpp +++ b/src/mame/drivers/d6809.cpp @@ -158,7 +158,7 @@ void d6809_state::mem_map(address_map &map) //map(0x00f0, 0x00f0).r(m_fdc, FUNC(upd765a_device::msr_r)); map(0x00ff, 0x00ff).rw(FUNC(d6809_state::term_r), FUNC(d6809_state::term_w)); map(0x0200, 0x0201).mirror(0xfe).m(m_fdc, FUNC(upd765a_device::map)); - map(0x0300, 0x0300).mirror(0xff).lw8("tc", [this](u8 data){ m_fdc->tc_w(1); m_fdc->tc_w(0); } ); + map(0x0300, 0x0300).mirror(0xff).lw8(NAME([this] (u8 data){ m_fdc->tc_w(1); m_fdc->tc_w(0); })); map(0x1000, 0xdfff).ram(); map(0xe000, 0xffff).rom().region("roms", 0); } diff --git a/src/mame/drivers/d9final.cpp b/src/mame/drivers/d9final.cpp index 41fb3d33b0e..adcb78987ab 100644 --- a/src/mame/drivers/d9final.cpp +++ b/src/mame/drivers/d9final.cpp @@ -90,7 +90,7 @@ TILE_GET_INFO_MEMBER(d9final_state::get_sc0_tile_info) void d9final_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(d9final_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(d9final_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32); } uint32_t d9final_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/dacholer.cpp b/src/mame/drivers/dacholer.cpp index 015d0fa5834..28fc721569a 100644 --- a/src/mame/drivers/dacholer.cpp +++ b/src/mame/drivers/dacholer.cpp @@ -138,8 +138,8 @@ TILE_GET_INFO_MEMBER(dacholer_state::get_fg_tile_info) void dacholer_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dacholer_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(dacholer_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(*this, FUNC(dacholer_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dacholer_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } @@ -714,7 +714,7 @@ void dacholer_state::itaten(machine_config &config) m_audiocpu->set_addrmap(AS_PROGRAM, &dacholer_state::itaten_snd_map); m_audiocpu->set_addrmap(AS_IO, &dacholer_state::itaten_snd_io_map); - m_audiocpu->set_vblank_int(device_interrupt_delegate(), nullptr); + m_audiocpu->remove_vblank_int(); m_gfxdecode->set_info(gfx_itaten); diff --git a/src/mame/drivers/dassault.cpp b/src/mame/drivers/dassault.cpp index 6dac523c34a..4795bae0eda 100644 --- a/src/mame/drivers/dassault.cpp +++ b/src/mame/drivers/dassault.cpp @@ -565,8 +565,8 @@ void dassault_state::dassault(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(16); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(dassault_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(dassault_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(dassault_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(dassault_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -580,8 +580,8 @@ void dassault_state::dassault(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(16); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(dassault_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(dassault_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(dassault_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(dassault_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/dblewing.cpp b/src/mame/drivers/dblewing.cpp index 5dbd3d027a1..4b9230db575 100644 --- a/src/mame/drivers/dblewing.cpp +++ b/src/mame/drivers/dblewing.cpp @@ -376,15 +376,15 @@ void dblewing_state::dblewing(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(dblewing_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(dblewing_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(dblewing_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(dblewing_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); - m_sprgen->set_pri_callback(FUNC(dblewing_state::pri_callback), this); + m_sprgen->set_pri_callback(FUNC(dblewing_state::pri_callback)); m_sprgen->set_gfxdecode_tag("gfxdecode"); DECO104PROT(config, m_deco104, 0); diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp index 160c23da091..2f587e406b6 100644 --- a/src/mame/drivers/dbz.cpp +++ b/src/mame/drivers/dbz.cpp @@ -125,7 +125,7 @@ void dbz_state::dbz_map(address_map &map) map(0x4d4000, 0x4d401f).w(m_k053936_2, FUNC(k053936_device::ctrl_w)); map(0x4e0000, 0x4e0001).portr("P1_P2"); map(0x4e0002, 0x4e0003).portr("SYSTEM_DSW1"); - map(0x4e4000, 0x4e4001).lr8("4e4000", [this]() { return uint8_t(m_dsw2->read()); }); + map(0x4e4000, 0x4e4001).lr8(NAME([this]() { return uint8_t(m_dsw2->read()); })); map(0x4e8000, 0x4e8001).nopw(); map(0x4ec000, 0x4ec001).w(FUNC(dbz_state::dbzcontrol_w)); map(0x4f0000, 0x4f0001).w(FUNC(dbz_state::dbz_sound_command_w)); @@ -349,12 +349,12 @@ void dbz_state::dbz(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x4000/2).enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(dbz_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(dbz_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 1); m_k056832->set_palette("palette"); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(dbz_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(dbz_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, -87, 32); // or -52, 16? m_k053246->set_palette("palette"); diff --git a/src/mame/drivers/dccons.cpp b/src/mame/drivers/dccons.cpp index 3178e75574a..5d5ea161b95 100644 --- a/src/mame/drivers/dccons.cpp +++ b/src/mame/drivers/dccons.cpp @@ -305,14 +305,14 @@ void dc_cons_state::init_dc() void dc_cons_state::init_dcus() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2303b0, 0xc2303b7, read64_delegate(FUNC(dc_cons_state::dcus_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2303b0, 0xc2303b7, read64_delegate(*this, FUNC(dc_cons_state::dcus_idle_skip_r))); init_dc(); } void dc_cons_state::init_dcjp() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2302f8, 0xc2302ff, read64_delegate(FUNC(dc_cons_state::dcjp_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2302f8, 0xc2302ff, read64_delegate(*this, FUNC(dc_cons_state::dcjp_idle_skip_r))); init_dc(); } diff --git a/src/mame/drivers/ddayjlc.cpp b/src/mame/drivers/ddayjlc.cpp index 02a18490774..0f3523be9e8 100644 --- a/src/mame/drivers/ddayjlc.cpp +++ b/src/mame/drivers/ddayjlc.cpp @@ -175,8 +175,8 @@ TILE_GET_INFO_MEMBER(ddayjlc_state::get_tile_info_fg) void ddayjlc_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddayjlc_state::get_tile_info_bg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddayjlc_state::get_tile_info_fg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddayjlc_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddayjlc_state::get_tile_info_fg)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/ddealer.cpp b/src/mame/drivers/ddealer.cpp index dbec61011c7..7a64cffe3a8 100644 --- a/src/mame/drivers/ddealer.cpp +++ b/src/mame/drivers/ddealer.cpp @@ -204,7 +204,7 @@ TILE_GET_INFO_MEMBER(ddealer_state::get_back_tile_info) void ddealer_state::video_start() { - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddealer_state::get_back_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddealer_state::get_back_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); } void ddealer_state::draw_video_layer(uint16_t* vreg_base, uint16_t* top, uint16_t* bottom, bitmap_ind16 &bitmap, const rectangle &cliprect, int flipy) @@ -681,7 +681,7 @@ READ16_MEMBER(ddealer_state::mcu_r) void ddealer_state::init_ddealer() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfe01c, 0xfe01d, read16_delegate(FUNC(ddealer_state::mcu_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfe01c, 0xfe01d, read16_delegate(*this, FUNC(ddealer_state::mcu_r))); } ROM_START( ddealer ) diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp index 848056549a1..47e5d510ac8 100644 --- a/src/mame/drivers/ddenlovr.cpp +++ b/src/mame/drivers/ddenlovr.cpp @@ -12919,7 +12919,7 @@ ROM_END void ddenlovr_state::init_momotaro() { - m_maincpu->space(AS_IO).install_read_handler(0xe0, 0xe0, read8_delegate(FUNC(ddenlovr_state::momotaro_protection_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0xe0, 0xe0, read8_delegate(*this, FUNC(ddenlovr_state::momotaro_protection_r))); } /*************************************************************************** diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp index 6cbae850333..4668803308a 100644 --- a/src/mame/drivers/deadang.cpp +++ b/src/mame/drivers/deadang.cpp @@ -733,8 +733,8 @@ void deadang_state::init_ghunter() m_adpcm1->decrypt(); m_adpcm2->decrypt(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000, 0x80001, read16_delegate(FUNC(deadang_state::ghunter_trackball_low_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0000, 0xb0001, read16_delegate(FUNC(deadang_state::ghunter_trackball_high_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000, 0x80001, read16_delegate(*this, FUNC(deadang_state::ghunter_trackball_low_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0000, 0xb0001, read16_delegate(*this, FUNC(deadang_state::ghunter_trackball_high_r))); } /* Game Drivers */ diff --git a/src/mame/drivers/dec0.cpp b/src/mame/drivers/dec0.cpp index 1b78501b745..8d7304198ad 100644 --- a/src/mame/drivers/dec0.cpp +++ b/src/mame/drivers/dec0.cpp @@ -1860,7 +1860,7 @@ void dec0_automat_state::automat(machine_config &config) m_tilegen[2]->set_gfxdecode_tag("gfxdecode"); DECO_MXC06(config, m_spritegen, 0); - m_spritegen->set_colpri_callback(FUNC(dec0_automat_state::robocop_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_automat_state::robocop_colpri_cb)); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024); GFXDECODE(config, m_gfxdecode, m_palette, gfx_automat); @@ -1986,7 +1986,7 @@ void dec0_state::hbarrel(machine_config &config) /* video hardware */ m_screen->set_screen_update(FUNC(dec0_state::screen_update_hbarrel)); - m_spritegen->set_colpri_callback(FUNC(dec0_state::hbarrel_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_state::hbarrel_colpri_cb)); } void dec0_state::bandit(machine_config &config) @@ -2012,7 +2012,7 @@ void dec0_state::bandit(machine_config &config) /* video hardware */ m_screen->set_screen_update(FUNC(dec0_state::screen_update_bandit)); - m_spritegen->set_colpri_callback(FUNC(dec0_state::bandit_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_state::bandit_colpri_cb)); } void dec0_state::baddudes(machine_config &config) @@ -2080,7 +2080,7 @@ void dec0_state::robocop(machine_config &config) /* video hardware */ m_screen->set_screen_update(FUNC(dec0_state::screen_update_robocop)); - m_spritegen->set_colpri_callback(FUNC(dec0_state::robocop_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_state::robocop_colpri_cb)); } void dec0_state::robocopb(machine_config &config) @@ -2089,7 +2089,7 @@ void dec0_state::robocopb(machine_config &config) /* video hardware */ m_screen->set_screen_update(FUNC(dec0_state::screen_update_robocop)); - m_spritegen->set_colpri_callback(FUNC(dec0_state::robocop_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_state::robocop_colpri_cb)); } void dec0_state::hippodrm(machine_config &config) @@ -2171,7 +2171,7 @@ void dec0_state::midres(machine_config &config) /* video hardware */ m_screen->set_screen_update(FUNC(dec0_state::screen_update_midres)); - m_spritegen->set_colpri_callback(FUNC(dec0_state::midres_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(dec0_state::midres_colpri_cb)); m_gfxdecode->set_info(gfx_midres); } @@ -4018,10 +4018,10 @@ ROM_END void dec0_state::init_midresb() { -// m_maincpu->space(AS_PROGRAM).install_read_handler(0x00180000, 0x0018000f, read16_delegate(FUNC(dec0_state::dec0_controls_r),this)); -// m_maincpu->space(AS_PROGRAM).install_read_handler(0x001a0000, 0x001a000f, read16_delegate(FUNC(dec0_state::dec0_rotary_r),this)); +// m_maincpu->space(AS_PROGRAM).install_read_handler(0x00180000, 0x0018000f, read16_delegate(*this, FUNC(dec0_state::dec0_controls_r))); +// m_maincpu->space(AS_PROGRAM).install_read_handler(0x001a0000, 0x001a000f, read16_delegate(*this, FUNC(dec0_state::dec0_rotary_r))); -// m_maincpu->space(AS_PROGRAM).install_write_handler(0x00180014, 0x00180015, write16_delegate(FUNC(dec0_state::midres_sound_w),this)); +// m_maincpu->space(AS_PROGRAM).install_write_handler(0x00180014, 0x00180015, write16_delegate(*this, FUNC(dec0_state::midres_sound_w))); } READ16_MEMBER(dec0_state::ffantasybl_242024_r) @@ -4041,7 +4041,7 @@ void dec0_state::init_ffantasybl() { m_maincpu->space(AS_PROGRAM).install_ram(0x24c880, 0x24cbff); // what is this? layer 3-related?? - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00242024, 0x00242025, read16_delegate(FUNC(dec0_state::ffantasybl_242024_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00242024, 0x00242025, read16_delegate(*this, FUNC(dec0_state::ffantasybl_242024_r))); m_maincpu->space(AS_PROGRAM).install_read_port(0x00ff87ee, 0x00ff87ef, "VBLANK"); } diff --git a/src/mame/drivers/dec8.cpp b/src/mame/drivers/dec8.cpp index 00fa911bceb..09927ceef9a 100644 --- a/src/mame/drivers/dec8.cpp +++ b/src/mame/drivers/dec8.cpp @@ -2024,7 +2024,7 @@ void dec8_state::gondo(machine_config &config) BUFFERED_SPRITERAM8(config, m_spriteram); DECO_KARNOVSPRITES(config, m_spritegen_krn, 0); - m_spritegen_krn->set_colpri_callback(FUNC(dec8_state::gondo_colpri_cb), this); + m_spritegen_krn->set_colpri_callback(FUNC(dec8_state::gondo_colpri_cb)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); // m_screen->set_refresh_hz(58); @@ -2156,7 +2156,7 @@ void dec8_state::ghostb(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_ghostb); DECO_RMC3(config, m_palette, 0, 1024); // xxxxBBBBGGGGRRRR with custom weighting m_palette->set_prom_region("proms"); - m_palette->set_init("palette", FUNC(deco_rmc3_device::palette_init_proms)); + m_palette->set_init(m_palette, FUNC(deco_rmc3_device::palette_init_proms)); MCFG_VIDEO_START_OVERRIDE(dec8_state,ghostb) /* sound hardware */ @@ -2365,7 +2365,7 @@ void dec8_state::cobracom(machine_config &config) m_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_MXC06(config, m_spritegen_mxc, 0); - m_spritegen_mxc->set_colpri_callback(FUNC(dec8_state::cobracom_colpri_cb), this); + m_spritegen_mxc->set_colpri_callback(FUNC(dec8_state::cobracom_colpri_cb)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); // m_screen->set_refresh_hz(58); diff --git a/src/mame/drivers/deco156.cpp b/src/mame/drivers/deco156.cpp index 311113bb7a8..19660061e87 100644 --- a/src/mame/drivers/deco156.cpp +++ b/src/mame/drivers/deco156.cpp @@ -342,15 +342,15 @@ void deco156_state::hvysmsh(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(deco156_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(deco156_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(deco156_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(deco156_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); - m_sprgen->set_pri_callback(FUNC(deco156_state::pri_callback), this); + m_sprgen->set_pri_callback(FUNC(deco156_state::pri_callback)); m_sprgen->set_gfxdecode_tag("gfxdecode"); /* sound hardware */ @@ -394,15 +394,15 @@ void deco156_state::wcvol95(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(deco156_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(deco156_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(deco156_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(deco156_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); - m_sprgen->set_pri_callback(FUNC(deco156_state::pri_callback), this); + m_sprgen->set_pri_callback(FUNC(deco156_state::pri_callback)); m_sprgen->set_gfxdecode_tag("gfxdecode"); /* sound hardware */ diff --git a/src/mame/drivers/deco32.cpp b/src/mame/drivers/deco32.cpp index 27acb9b07c7..15467e651c0 100644 --- a/src/mame/drivers/deco32.cpp +++ b/src/mame/drivers/deco32.cpp @@ -394,9 +394,9 @@ void captaven_state::captaven_map(address_map &map) map(0x130000, 0x131fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); map(0x148000, 0x14800f).m(m_deco_irq, FUNC(deco_irq_device::map)).umask32(0x000000ff); map(0x160000, 0x167fff).ram(); /* Extra work RAM */ - map(0x168000, 0x168000).lr8("dsw1_r", [this]() { return m_io_dsw[0]->read(); }); - map(0x168001, 0x168001).lr8("dsw2_r", [this]() { return m_io_dsw[1]->read(); }); - map(0x168002, 0x168002).lr8("dsw3_r", [this]() { return m_io_dsw[2]->read(); }); + map(0x168000, 0x168000).lr8(NAME([this] () { return m_io_dsw[0]->read(); })); + map(0x168001, 0x168001).lr8(NAME([this] () { return m_io_dsw[1]->read(); })); + map(0x168002, 0x168002).lr8(NAME([this] () { return m_io_dsw[2]->read(); })); map(0x168003, 0x168003).r(FUNC(captaven_state::captaven_soundcpu_status_r)); map(0x178000, 0x178003).w(FUNC(captaven_state::pri_w)); map(0x180000, 0x18001f).rw("tilegen1", FUNC(deco16ic_device::pf_control_dword_r), FUNC(deco16ic_device::pf_control_dword_w)); @@ -418,8 +418,8 @@ void fghthist_state::fghthist_map(address_map &map) // map(0x000000, 0x001fff).rom().w(FUNC(fghthist_state::pf1_data_w)); // wtf?? map(0x000000, 0x0fffff).rom(); map(0x100000, 0x11ffff).ram(); - map(0x120020, 0x120021).lr16("in0_r", [this]() { return m_io_in[0]->read(); }); - map(0x120024, 0x120025).lr16("in1_r", [this]() { return m_io_in[1]->read(); }); + map(0x120020, 0x120021).lr16(NAME([this] () { return m_io_in[0]->read(); })); + map(0x120024, 0x120025).lr16(NAME([this] () { return m_io_in[1]->read(); })); map(0x120028, 0x120028).r(FUNC(fghthist_state::eeprom_r)); map(0x12002c, 0x12002c).w(FUNC(fghthist_state::eeprom_w)); map(0x12002d, 0x12002d).w(FUNC(fghthist_state::volume_w)); @@ -1884,7 +1884,7 @@ void captaven_state::captaven(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x00); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x00); - m_deco_tilegen[1]->set_bank1_callback(FUNC(captaven_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(captaven_state::bank_callback)); // no bank2 callback m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); @@ -1892,7 +1892,7 @@ void captaven_state::captaven(machine_config &config) DECO_SPRITE(config, m_sprgen[0], 0); m_sprgen[0]->set_gfx_region(3); - m_sprgen[0]->set_pri_callback(FUNC(captaven_state::captaven_pri_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(captaven_state::captaven_pri_callback)); m_sprgen[0]->set_gfxdecode_tag(m_gfxdecode); DECO146PROT(config, m_ioprot, 0); @@ -1950,8 +1950,8 @@ void fghthist_state::fghthist(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(fghthist_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(fghthist_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(fghthist_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(fghthist_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -1965,8 +1965,8 @@ void fghthist_state::fghthist(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(fghthist_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(fghthist_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(fghthist_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(fghthist_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); @@ -2073,8 +2073,8 @@ void dragngun_state::dragngun(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x30); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -2088,7 +2088,7 @@ void dragngun_state::dragngun(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x04); m_deco_tilegen[1]->set_pf1_col_mask(0x03); m_deco_tilegen[1]->set_pf2_col_mask(0x03); - m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback)); // no bank2 callback m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); @@ -2199,8 +2199,8 @@ void dragngun_state::lockload(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x30); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(dragngun_state::bank_1_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(dragngun_state::bank_1_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -2214,7 +2214,7 @@ void dragngun_state::lockload(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x04); m_deco_tilegen[1]->set_pf1_col_mask(0x03); m_deco_tilegen[1]->set_pf2_col_mask(0x03); - m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(dragngun_state::bank_2_callback)); // no bank2 callback m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); @@ -2277,8 +2277,8 @@ void nslasher_state::tattass(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -2292,8 +2292,8 @@ void nslasher_state::tattass(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); @@ -2351,8 +2351,8 @@ void nslasher_state::nslasher(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(nslasher_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(nslasher_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -2366,8 +2366,8 @@ void nslasher_state::nslasher(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x30); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(nslasher_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(nslasher_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/deco_mlc.cpp b/src/mame/drivers/deco_mlc.cpp index d08332b6db9..b2f385759d3 100644 --- a/src/mame/drivers/deco_mlc.cpp +++ b/src/mame/drivers/deco_mlc.cpp @@ -961,7 +961,7 @@ void deco_mlc_state::init_avengrgs() dynamic_cast<sh2_device *>(m_maincpu.target())->sh2drc_add_fastram(0x0280000, 0x029ffff, 0, &m_vram[0]); m_irqLevel = 1; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01089a0, 0x01089a3, read32_delegate(FUNC(deco_mlc_state::avengrgs_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01089a0, 0x01089a3, read32_delegate(*this, FUNC(deco_mlc_state::avengrgs_speedup_r))); descramble_sound(); } diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp index 6f19e913667..d33582d19e4 100644 --- a/src/mame/drivers/decocass.cpp +++ b/src/mame/drivers/decocass.cpp @@ -2065,14 +2065,14 @@ void decocass_state::init_decocrom() /* convert charram to a banked ROM */ m_maincpu->space(AS_PROGRAM).install_read_bank(0x6000, 0xafff, "bank1"); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x6000, 0xafff, write8_delegate(FUNC(decocass_state::decocass_de0091_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x6000, 0xafff, write8_delegate(*this, FUNC(decocass_state::decocass_de0091_w))); membank("bank1")->configure_entry(0, m_charram); membank("bank1")->configure_entry(1, memregion("user3")->base()); membank("bank1")->configure_entry(2, memregion("user3")->base()+0x5000); membank("bank1")->set_entry(0); /* install the bank selector */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe900, 0xe900, write8_delegate(FUNC(decocass_state::decocass_e900_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe900, 0xe900, write8_delegate(*this, FUNC(decocass_state::decocass_e900_w))); } READ8_MEMBER(decocass_state::cdsteljn_input_r ) @@ -2105,8 +2105,8 @@ void decocass_state::init_cdsteljn() init_decocass(); /* install custom mahjong panel */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe413, 0xe413, write8_delegate(FUNC(decocass_state::cdsteljn_mux_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe600, 0xe6ff, read8_delegate(FUNC(decocass_state::cdsteljn_input_r), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe413, 0xe413, write8_delegate(*this, FUNC(decocass_state::cdsteljn_mux_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe600, 0xe6ff, read8_delegate(*this, FUNC(decocass_state::cdsteljn_input_r))); } /* -- */ GAME( 1981, decocass, 0, decocass, decocass, decocass_state, init_decocass, ROT270, "Data East Corporation", "DECO Cassette System", MACHINE_IS_BIOS_ROOT ) diff --git a/src/mame/drivers/dectalk.cpp b/src/mame/drivers/dectalk.cpp index 976fe06f711..87b4fe182cc 100644 --- a/src/mame/drivers/dectalk.cpp +++ b/src/mame/drivers/dectalk.cpp @@ -484,7 +484,7 @@ void dectalk_state::machine_start() void dectalk_state::machine_reset() { /* hook the RESET line, which resets a slew of other components */ - m_maincpu->set_reset_callback(write_line_delegate(FUNC(dectalk_state::dectalk_reset),this)); + m_maincpu->set_reset_callback(*this, FUNC(dectalk_state::dectalk_reset)); } /* Begin 68k i/o handlers */ diff --git a/src/mame/drivers/dgn_beta.cpp b/src/mame/drivers/dgn_beta.cpp index d1e3724d426..4fb86031887 100644 --- a/src/mame/drivers/dgn_beta.cpp +++ b/src/mame/drivers/dgn_beta.cpp @@ -383,7 +383,7 @@ void dgn_beta_state::dgnbeta(machine_config &config) m_mc6845->set_screen("screen"); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(16); /*?*/ - m_mc6845->set_update_row_callback(FUNC(dgn_beta_state::crtc_update_row), this); + m_mc6845->set_update_row_callback(FUNC(dgn_beta_state::crtc_update_row)); m_mc6845->out_vsync_callback().set(FUNC(dgn_beta_state::dgnbeta_vsync_changed)); /* internal ram */ diff --git a/src/mame/drivers/dietgo.cpp b/src/mame/drivers/dietgo.cpp index 5b29e7b96bf..44394aa9b4e 100644 --- a/src/mame/drivers/dietgo.cpp +++ b/src/mame/drivers/dietgo.cpp @@ -228,8 +228,8 @@ void dietgo_state::dietgo(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(dietgo_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(dietgo_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(dietgo_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(dietgo_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index eb0f6b87f43..a2715a757a1 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -339,7 +339,7 @@ void dim68k_state::dim68k(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(dim68k_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(dim68k_state::crtc_update_row)); generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(dim68k_state::kbd_put)); diff --git a/src/mame/drivers/divebomb.cpp b/src/mame/drivers/divebomb.cpp index c33052b34a1..b4c598e5135 100644 --- a/src/mame/drivers/divebomb.cpp +++ b/src/mame/drivers/divebomb.cpp @@ -419,14 +419,14 @@ void divebomb_state::divebomb(machine_config &config) m_k051316[0]->set_bpp(8); m_k051316[0]->set_wrap(0); m_k051316[0]->set_offsets(-88, -16); - m_k051316[0]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_1), this); + m_k051316[0]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_1)); K051316(config, m_k051316[1], 0); m_k051316[1]->set_palette(m_palette); m_k051316[1]->set_bpp(8); m_k051316[1]->set_wrap(0); m_k051316[1]->set_offsets(-88, -16); - m_k051316[1]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_2), this); + m_k051316[1]->set_zoom_callback(FUNC(divebomb_state::zoom_callback_2)); MCFG_MACHINE_START_OVERRIDE(divebomb_state, divebomb) MCFG_MACHINE_RESET_OVERRIDE(divebomb_state, divebomb) diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index b1deafa2fef..7dfe984f2c7 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -1403,7 +1403,7 @@ void djmain_state::djmainj(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_djmain); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(djmain_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(djmain_state::tile_callback)); m_k056832->set_config(K056832_BPP_4dj, 1, 1); m_k056832->set_palette(m_palette); diff --git a/src/mame/drivers/dkong.cpp b/src/mame/drivers/dkong.cpp index 6cf51e42734..c27d2bf1ec2 100644 --- a/src/mame/drivers/dkong.cpp +++ b/src/mame/drivers/dkong.cpp @@ -3633,8 +3633,8 @@ void dkong_state::init_strtheat() drakton_decrypt_rom(0x88, 0x1c000, bs[3]); /* custom handlers supporting Joystick or Steering Wheel */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x7c00, 0x7c00, read8_delegate(FUNC(dkong_state::strtheat_inputport_0_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x7c80, 0x7c80, read8_delegate(FUNC(dkong_state::strtheat_inputport_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x7c00, 0x7c00, read8_delegate(*this, FUNC(dkong_state::strtheat_inputport_0_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x7c80, 0x7c80, read8_delegate(*this, FUNC(dkong_state::strtheat_inputport_1_r))); } void dkong_state::dk_braze_decrypt() @@ -3657,8 +3657,8 @@ void dkong_state::init_dkonghs() dk_braze_decrypt(); address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_read_handler(0xc000, 0xc000, read8_delegate(FUNC(dkong_state::braze_eeprom_r), this)); - space.install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(dkong_state::braze_eeprom_w), this)); + space.install_read_handler(0xc000, 0xc000, read8_delegate(*this, FUNC(dkong_state::braze_eeprom_r))); + space.install_write_handler(0xc000, 0xc000, write8_delegate(*this, FUNC(dkong_state::braze_eeprom_w))); } void dkong_state::init_dkongx() @@ -3666,10 +3666,10 @@ void dkong_state::init_dkongx() dk_braze_decrypt(); address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_write_handler(0xe000, 0xe000, write8_delegate(FUNC(dkong_state::dk_braze_a15_w),this)); + space.install_write_handler(0xe000, 0xe000, write8_delegate(*this, FUNC(dkong_state::dk_braze_a15_w))); - space.install_read_handler(0xc800, 0xc800, read8_delegate(FUNC(dkong_state::braze_eeprom_r),this)); - space.install_write_handler(0xc800, 0xc800, write8_delegate(FUNC(dkong_state::braze_eeprom_w),this)); + space.install_read_handler(0xc800, 0xc800, read8_delegate(*this, FUNC(dkong_state::braze_eeprom_r))); + space.install_write_handler(0xc800, 0xc800, write8_delegate(*this, FUNC(dkong_state::braze_eeprom_w))); } void dkong_state::init_dkong3hs() @@ -3682,8 +3682,8 @@ void dkong_state::init_dkong3hs() m_maincpu->space(AS_PROGRAM).install_rom(0x8000, 0xffff, m_decrypted.get() + 0x8000); address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_read_handler(0xc000, 0xc000, read8_delegate(FUNC(dkong_state::braze_eeprom_r), this)); - space.install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(dkong_state::braze_eeprom_w), this)); + space.install_read_handler(0xc000, 0xc000, read8_delegate(*this, FUNC(dkong_state::braze_eeprom_r))); + space.install_write_handler(0xc000, 0xc000, write8_delegate(*this, FUNC(dkong_state::braze_eeprom_w))); } void dkong_state::init_dkingjr() diff --git a/src/mame/drivers/dm7000.cpp b/src/mame/drivers/dm7000.cpp index a7fdf980de0..44c03cde393 100644 --- a/src/mame/drivers/dm7000.cpp +++ b/src/mame/drivers/dm7000.cpp @@ -261,8 +261,8 @@ void dm7000_state::machine_reset() dcr[DCRSTB045_FRAME_BUFR_BASE] = 0x0f000000; m_scc0_lsr = UART_LSR_THRE | UART_LSR_TEMT; - m_maincpu->ppc4xx_set_dcr_read_handler(read32_delegate(FUNC(dm7000_state::dcr_r),this)); - m_maincpu->ppc4xx_set_dcr_write_handler(write32_delegate(FUNC(dm7000_state::dcr_w),this)); + m_maincpu->ppc4xx_set_dcr_read_handler(read32_delegate(*this, FUNC(dm7000_state::dcr_r))); + m_maincpu->ppc4xx_set_dcr_write_handler(write32_delegate(*this, FUNC(dm7000_state::dcr_w))); } void dm7000_state::video_start() diff --git a/src/mame/drivers/dmndrby.cpp b/src/mame/drivers/dmndrby.cpp index 1ed12af43c3..68a557fdf4a 100644 --- a/src/mame/drivers/dmndrby.cpp +++ b/src/mame/drivers/dmndrby.cpp @@ -374,7 +374,7 @@ void dmndrby_state::video_start() m_bg = 0; m_racetrack_tilemap_rom = memregion("user1")->base(); - m_racetrack_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dmndrby_state::get_dmndrby_tile_info),this),TILEMAP_SCAN_ROWS,16,16, 16, 512); + m_racetrack_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dmndrby_state::get_dmndrby_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 16, 512); m_racetrack_tilemap->mark_all_dirty(); } diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index 484da90f4dc..4ac34f5f940 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -896,7 +896,7 @@ void dmv_state::dmv(machine_config &config) SOFTWARE_LIST(config, "flop_list").set_original("dmv"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(dmv_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(dmv_state::quickload_cb)); } /* ROM definition */ diff --git a/src/mame/drivers/dooyong.cpp b/src/mame/drivers/dooyong.cpp index 269e59cb5d2..8b37e9673c9 100644 --- a/src/mame/drivers/dooyong.cpp +++ b/src/mame/drivers/dooyong.cpp @@ -1641,15 +1641,15 @@ void dooyong_z80_state::bluehawk(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024); DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 2, "bg0", 0x3c000, 0x4000); - m_bg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(dooyong_z80_state::bluehawk_tile_callback), this)); + m_bg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback)); DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 3, "fg0", 0x3c000, 0x4000); m_fg[0]->set_transparent_pen(15); - m_fg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(dooyong_z80_state::bluehawk_tile_callback), this)); + m_fg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback)); DOOYONG_ROM_TILEMAP(config, m_fg[1], m_gfxdecode, 4, "fg1", 0x1c000, 0x4000); m_fg[1]->set_transparent_pen(15); - m_fg[1]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(dooyong_z80_state::bluehawk_tile_callback), this)); + m_fg[1]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback)); DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0); @@ -1722,11 +1722,11 @@ void dooyong_z80_state::primella(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 1024); DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 1, "bg0", -0x4000, 0x4000); - m_bg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(dooyong_z80_state::bluehawk_tile_callback), this)); + m_bg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback)); DOOYONG_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 2, "fg0", -0x4000, 0x4000); m_fg[0]->set_transparent_pen(15); - m_fg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(dooyong_z80_state::bluehawk_tile_callback), this)); + m_fg[0]->set_tile_callback(FUNC(dooyong_z80_state::bluehawk_tile_callback)); DOOYONG_RAM_TILEMAP(config, m_tx, m_gfxdecode, 0); @@ -1774,19 +1774,19 @@ void rshark_state::dooyong_68k(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); RSHARK_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 4, "bg0", 0x00000, 0x20000, "tmap_hi", 0x60000, 0x20000); - m_bg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(rshark_state::rshark_tile_callback), this)); + m_bg[0]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback)); RSHARK_ROM_TILEMAP(config, m_bg[1], m_gfxdecode, 3, "bg1", 0x00000, 0x20000, "tmap_hi", 0x40000, 0x20000); m_bg[1]->set_transparent_pen(15); - m_bg[1]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(rshark_state::rshark_tile_callback), this)); + m_bg[1]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback)); RSHARK_ROM_TILEMAP(config, m_fg[0], m_gfxdecode, 2, "fg0", 0x00000, 0x20000, "tmap_hi", 0x20000, 0x20000); m_fg[0]->set_transparent_pen(15); - m_fg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(rshark_state::rshark_tile_callback), this)); + m_fg[0]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback)); RSHARK_ROM_TILEMAP(config, m_fg[1], m_gfxdecode, 1, "fg1", 0x00000, 0x20000, "tmap_hi", 0x00000, 0x20000); m_fg[1]->set_transparent_pen(15); - m_fg[1]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(rshark_state::rshark_tile_callback), this)); + m_fg[1]->set_tile_callback(FUNC(rshark_state::rshark_tile_callback)); // sound hardware sound_2151_4mhz(config); @@ -1832,10 +1832,10 @@ void popbingo_state::popbingo(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); DOOYONG_ROM_TILEMAP(config, m_bg[0], m_gfxdecode, 1, "bg0", 0x00000, 0x4000); - m_bg[0]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(popbingo_state::popbingo_tile_callback), this)); + m_bg[0]->set_tile_callback(FUNC(popbingo_state::popbingo_tile_callback)); DOOYONG_ROM_TILEMAP(config, m_bg[1], m_gfxdecode, 2, "bg1", 0x00000, 0x4000); - m_bg[1]->set_tile_callback(dooyong_rom_tilemap_device::dooyong_tmap_cb_delegate(FUNC(popbingo_state::popbingo_tile_callback), this)); + m_bg[1]->set_tile_callback(FUNC(popbingo_state::popbingo_tile_callback)); // sound hardware sound_2151_4mhz(config); diff --git a/src/mame/drivers/dpb7000.cpp b/src/mame/drivers/dpb7000.cpp index 49007be8f58..b57a3857b44 100644 --- a/src/mame/drivers/dpb7000.cpp +++ b/src/mame/drivers/dpb7000.cpp @@ -1116,8 +1116,8 @@ void dpb7000_state::dpb7000(machine_config &config) m_crtc->set_char_width(8); m_crtc->set_show_border_area(false); m_crtc->set_screen("screen"); - m_crtc->set_update_row_callback(FUNC(dpb7000_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(dpb7000_state::crtc_addr_changed), this); + m_crtc->set_update_row_callback(FUNC(dpb7000_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(dpb7000_state::crtc_addr_changed)); // Disc Sequencer Card AM2910(config, m_diskseq, 0); // We drive the clock manually from the driver diff --git a/src/mame/drivers/dragon.cpp b/src/mame/drivers/dragon.cpp index abb3c86e18f..035f9527f2c 100644 --- a/src/mame/drivers/dragon.cpp +++ b/src/mame/drivers/dragon.cpp @@ -339,7 +339,7 @@ void d64plus_state::d64plus(machine_config &config) m_crtc->set_screen("plus_screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(d64plus_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(d64plus_state::crtc_update_row)); } void dragon_alpha_state::dgnalpha(machine_config &config) diff --git a/src/mame/drivers/dreambal.cpp b/src/mame/drivers/dreambal.cpp index 5d00c431368..806229b4e79 100644 --- a/src/mame/drivers/dreambal.cpp +++ b/src/mame/drivers/dreambal.cpp @@ -345,8 +345,8 @@ void dreambal_state::dreambal(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(dreambal_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(dreambal_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(dreambal_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(dreambal_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/dreamwld.cpp b/src/mame/drivers/dreamwld.cpp index 073aded87c4..a843328bd73 100644 --- a/src/mame/drivers/dreamwld.cpp +++ b/src/mame/drivers/dreamwld.cpp @@ -268,10 +268,10 @@ TILE_GET_INFO_MEMBER(dreamwld_state::get_tile_info) void dreamwld_state::video_start() { - m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS, 16, 16, 64,64); - m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 64,64); - m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32); - m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dreamwld_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS, 16, 16, 128,32); + m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dreamwld_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dreamwld_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dreamwld_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 128, 32); + m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dreamwld_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 128, 32); m_tilemap[1][0]->set_transparent_pen(0); m_tilemap[1][1]->set_transparent_pen(0); @@ -424,7 +424,7 @@ void dreamwld_state::baryon_map(address_map &map) map(0x804400, 0x805fff).ram().share("vregs"); map(0xc00000, 0xc00003).portr("INPUTS"); - map(0xc00004, 0xc00007).lr16("c00004", [this]() { return u16(m_dsw->read()); }); + map(0xc00004, 0xc00007).lr16(NAME([this] () { return u16(m_dsw->read()); })); map(0xc0000f, 0xc0000f).w(FUNC(dreamwld_state::okibank_w<0>)); // sfx map(0xc00018, 0xc00018).rw("oki1", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // sfx diff --git a/src/mame/drivers/drtomy.cpp b/src/mame/drivers/drtomy.cpp index b5a4143b42e..8815d96aee1 100644 --- a/src/mame/drivers/drtomy.cpp +++ b/src/mame/drivers/drtomy.cpp @@ -142,8 +142,8 @@ void drtomy_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect void drtomy_state::video_start() { - m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drtomy_state::get_tile_info_bg),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drtomy_state::get_tile_info_fg),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drtomy_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drtomy_state::get_tile_info_fg)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tilemap_fg->set_transparent_pen(0); } diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp index f47b0810145..a56563a1b45 100644 --- a/src/mame/drivers/drw80pkr.cpp +++ b/src/mame/drivers/drw80pkr.cpp @@ -338,7 +338,7 @@ TILE_GET_INFO_MEMBER(drw80pkr_state::get_bg_tile_info) void drw80pkr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drw80pkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 27); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drw80pkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 24, 27); } uint32_t drw80pkr_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp index de7e5b0cee1..458df489b45 100644 --- a/src/mame/drivers/duet16.cpp +++ b/src/mame/drivers/duet16.cpp @@ -422,7 +422,7 @@ void duet16_state::duet16(machine_config &config) hd6845s_device &crtc(HD6845S(config, "crtc", 2000000)); // "46505S" on schematics crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(duet16_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(duet16_state::crtc_update_row)); PALETTE(config, m_pal).set_entries(8); PALETTE(config, m_chrpal, palette_device::BRG_3BIT); diff --git a/src/mame/drivers/dunhuang.cpp b/src/mame/drivers/dunhuang.cpp index 3740b7a78eb..4ec6c63c861 100644 --- a/src/mame/drivers/dunhuang.cpp +++ b/src/mame/drivers/dunhuang.cpp @@ -177,8 +177,8 @@ TILE_GET_INFO_MEMBER(dunhuang_state::get_tile_info2) void dunhuang_state::video_start() { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dunhuang_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 0x40,0x20); - m_tmap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dunhuang_state::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8,32, 0x40,0x8); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dunhuang_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 0x40,0x20); + m_tmap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dunhuang_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8,32, 0x40,0x8); m_tmap->set_transparent_pen(0); m_tmap2->set_transparent_pen(0); diff --git a/src/mame/drivers/dynadice.cpp b/src/mame/drivers/dynadice.cpp index b3e216fa517..2018f35472f 100644 --- a/src/mame/drivers/dynadice.cpp +++ b/src/mame/drivers/dynadice.cpp @@ -237,8 +237,8 @@ TILE_GET_INFO_MEMBER(dynadice_state::get_tile_info) void dynadice_state::video_start() { /* pacman - style videoram layout */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dynadice_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dynadice_state::get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 2, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dynadice_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dynadice_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 2, 32); m_bg_tilemap->set_scrollx(0, -16); } diff --git a/src/mame/drivers/dynax.cpp b/src/mame/drivers/dynax.cpp index e66d3b58acf..f026998efb1 100644 --- a/src/mame/drivers/dynax.cpp +++ b/src/mame/drivers/dynax.cpp @@ -1243,7 +1243,7 @@ void dynax_state::tenkai_map(address_map &map) map(0x10050, 0x10050).w(FUNC(dynax_state::tenkai_priority_w)); // layer priority and enable map(0x10054, 0x10054).w(FUNC(dynax_state::dynax_blit_backpen_w)); // Background Color map(0x10058, 0x10058).w(FUNC(dynax_state::tenkai_blit_romregion_w)); // Blitter ROM bank - map(0x10060, 0x1007f).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_d1(offset >> 2, data); }); + map(0x10060, 0x1007f).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_d1(offset >> 2, data); })); map(0x100c0, 0x100c0).w(FUNC(dynax_state::tenkai_ipsel_w)); map(0x100c1, 0x100c1).w(FUNC(dynax_state::tenkai_ip_w)); map(0x100c2, 0x100c3).r(FUNC(dynax_state::tenkai_ip_r)); diff --git a/src/mame/drivers/ec65.cpp b/src/mame/drivers/ec65.cpp index 2dd004ce7a0..933a8a20fe0 100644 --- a/src/mame/drivers/ec65.cpp +++ b/src/mame/drivers/ec65.cpp @@ -178,7 +178,7 @@ void ec65_state::ec65(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); /*?*/ - crtc.set_update_row_callback(FUNC(ec65_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(ec65_state::crtc_update_row)); /* devices */ PIA6821(config, PIA6821_TAG, 0); diff --git a/src/mame/drivers/ecoinfr.cpp b/src/mame/drivers/ecoinfr.cpp index f15158b1563..eeed824f546 100644 --- a/src/mame/drivers/ecoinfr.cpp +++ b/src/mame/drivers/ecoinfr.cpp @@ -778,11 +778,10 @@ void ecoinfr_state::ecoinfr(machine_config &config) Z80(config, m_maincpu, 4000000); m_maincpu->set_addrmap(AS_PROGRAM, &ecoinfr_state::memmap); m_maincpu->set_addrmap(AS_IO, &ecoinfr_state::portmap); - TIMER(config , "ectimer" , 0).configure_periodic(timer_device::expired_delegate(FUNC(ecoinfr_state::ecoinfr_irq_timer) , this) , attotime::from_hz(250)); + TIMER(config , "ectimer" , 0).configure_periodic(FUNC(ecoinfr_state::ecoinfr_irq_timer), attotime::from_hz(250)); config.set_default_layout(layout_ecoinfr); - I8251(config, UPD8251_TAG, 0); REEL(config, m_reel[0], ECOIN_200STEP_REEL, 12, 24, 0x09, 7, 200*2); diff --git a/src/mame/drivers/efdt.cpp b/src/mame/drivers/efdt.cpp index cf5bd51cdef..ef200da650c 100644 --- a/src/mame/drivers/efdt.cpp +++ b/src/mame/drivers/efdt.cpp @@ -221,8 +221,8 @@ TILE_GET_INFO_MEMBER(efdt_state::get_tile_info_1) void efdt_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(efdt_state::get_tile_info_0), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(efdt_state::get_tile_info_1), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(efdt_state::get_tile_info_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(efdt_state::get_tile_info_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/drivers/egghunt.cpp b/src/mame/drivers/egghunt.cpp index ce5844d122d..0362bf2f5b1 100644 --- a/src/mame/drivers/egghunt.cpp +++ b/src/mame/drivers/egghunt.cpp @@ -199,7 +199,7 @@ WRITE8_MEMBER(egghunt_state::egghunt_atram_w) void egghunt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(egghunt_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(egghunt_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); save_item(NAME(m_bgram)); save_item(NAME(m_spram)); diff --git a/src/mame/drivers/eispc.cpp b/src/mame/drivers/eispc.cpp index 5cdeab5d12d..4a9636bfea4 100644 --- a/src/mame/drivers/eispc.cpp +++ b/src/mame/drivers/eispc.cpp @@ -244,145 +244,164 @@ void epc_state::epc_map(address_map &map) void epc_state::epc_io(address_map &map) { - map(0x0000, 0x000f).mirror(0x10).lrw8("dma8237_rw", + map(0x0000, 0x000f).mirror(0x10).lrw8( [this](offs_t offset) -> uint8_t { uint8_t data = m_dma8237a->read(offset); LOGDMA("dma8237_r %04x\n", offset); return data; }, + "dma8237_r", [this](offs_t offset, uint8_t data) { LOGDMA("dma8237_w %04x: %02x\n", offset, data); m_dma8237a->write(offset, data); - } + }, + "dma8237_w" ); - map(0x0020, 0x0021).mirror(0x1e).lrw8("pic8259_rw", + map(0x0020, 0x0021).mirror(0x1e).lrw8( [this](offs_t offset) -> uint8_t { uint8_t data = m_pic8259->read(offset); LOGPIC("pic8259_r %04x: %02x\n", offset, data); return data; }, + "pic8259_r", [this](offs_t offset, uint8_t data) { LOGPIC("pic8259_w %04x: %02x\n", offset, data); m_pic8259->write(offset, data); - } + }, + "pic8259_w" ); - map(0x0040, 0x0043).mirror(0x1c).lrw8("pit8253_rw", + map(0x0040, 0x0043).mirror(0x1c).lrw8( [this](offs_t offset) -> uint8_t { uint8_t data = m_pit8253->read(offset); LOGPIT("pit8253_r %04x\n", offset); return data; }, + "pit8253_r", [this](offs_t offset, uint8_t data) { LOGPIT("pit8253_w %04x: %02x\n", offset, data); m_pit8253->write(offset, data); - } + }, + "pit8253_w" ); - map(0x0060, 0x0060).mirror(0x1c).lrw8("kbd_8251_data_rw", + map(0x0060, 0x0060).mirror(0x1c).lrw8( [this]() -> uint8_t { uint8_t data = m_kbd8251->data_r(); LOGKBD("kbd8251_r %02x\n", data); return data; }, + "kbd_8251_data_r", [this](offs_t offset, uint8_t data) { LOGKBD("kbd8251_w 0x60 %02x\n", data); m_kbd8251->data_w(data); - } + }, + "kbd_8251_data_w" ); // NOTE: PPI Port A is not mapped - map(0x0061, 0x0061).mirror(0x1c).lrw8("ppi8255_rw", // PPI Port B + map(0x0061, 0x0061).mirror(0x1c).lrw8( // PPI Port B [this](offs_t offset) -> uint8_t { uint8_t data = m_ppi8255->read(1); LOGPPI("ppi8255_r Port B: %02x\n", data); return data; }, + "ppi8255_r", [this](offs_t offset, uint8_t data) { LOGPPI("ppi8255_w Port B: %02x\n", data); m_ppi8255->write(1, data); - } + }, + "ppi8255_w" ); - map(0x0062, 0x0062).mirror(0x1c).lrw8("ppi8255_rw", // PPI Port C + map(0x0062, 0x0062).mirror(0x1c).lrw8( // PPI Port C [this](offs_t offset) -> uint8_t { uint8_t data = m_ppi8255->read(2); LOGPPI("ppi8255_r Port C: %02x\n", data); return data; }, + "ppi8255_r", [this](offs_t offset, uint8_t data) { LOGPPI("ppi8255_w Port C: %02x\n", data); m_ppi8255->write(2, data); - } + }, + "ppi8255_w" ); - map(0x0063, 0x0063).lrw8("ppi8255_rw", // PPI Control register + map(0x0063, 0x0063).lrw8( // PPI Control register [this](offs_t offset) -> uint8_t { uint8_t data = m_ppi8255->read(3); LOGPPI("ppi8255_r Control: %02x\n", data); return data; }, + "ppi8255_r", [this](offs_t offset, uint8_t data) { LOGPPI("ppi8255_w Control: %02x\n", data); m_ppi8255->write(3, data); - } + }, + "ppi8255_w" ); - map(0x0070, 0x0070).mirror(0x0e).lw8("i8251_data_w", + map(0x0070, 0x0070).mirror(0x0e).lw8( [this](offs_t offset, uint8_t data) { LOGKBD("kbd8251_w 0x70: %02x\n", data); m_kbd8251->data_w(data); - } + }, + "i8251_data_w" ); - map(0x0071, 0x0071).mirror(0x0e).lrw8("kbd_8251_stat_ctrl_rw", + map(0x0071, 0x0071).mirror(0x0e).lrw8( [this](offs_t offset) -> uint8_t { uint8_t stat = m_kbd8251->status_r(); //LOGKBD("kbd8251_status_r %02x\n", stat); return stat; }, + "kbd_8251_stat_ctrl_r", [this](offs_t offset, uint8_t data) { LOGKBD("kbd8251_control_w 0x71: %02x\n", data); m_kbd8251->control_w(data); - } + }, + "kbd_8251_stat_ctrl_w" ); - map(0x0080, 0x0083).mirror(0xc).lw8("dma_segement_w", + map(0x0080, 0x0083).mirror(0xc).lw8( [this](offs_t offset, uint8_t data) { LOGDMA("dma_segment_w %04x: %02x\n", offset, data); m_dma_segment[offset] = data & 0x0f; - } + }, + "dma_segement_w" ); - map(0x00a0, 0x00a1).mirror(0xe).lw8("nmi_enable_w", + map(0x00a0, 0x00a1).mirror(0xe).lw8( [this](offs_t offset, uint8_t data) { LOGNMI("nmi_enable_w %04x: %02x\n", offset, data); m_nmi_enabled = BIT(data,7); update_nmi(); - } + }, + "nmi_enable_w" ); // FDC Output Control Register (same as PC XT DOR) - map(0x03f2, 0x03f3).lw8("ocr_w", // B0-B1 Drive select 0-3 + map(0x03f2, 0x03f3).lw8( // B0-B1 Drive select 0-3 [this](offs_t offset, uint8_t data) // B2 FDC Reset line { // B3 Enable FDC DMA/IRQ LOGFDC("FDC OCR: %02x\n", data);// B4-B7 Motor on for selected drive @@ -404,23 +423,26 @@ void epc_state::epc_io(address_map &map) m_fdc->reset(); check_fdc_irq(); check_fdc_drq(); - } + }, + "ocr_w" ); map(0x03f4, 0x03f5).m(m_fdc, FUNC(i8272a_device::map)); - map(0x03bc, 0x03be).lrw8("lpt_rw", + map(0x03bc, 0x03be).lrw8( [this](address_space &space, offs_t offset, uint8_t mem_mask) -> uint8_t { uint8_t data = m_lpt->read(space, offset); LOGLPT("LPT read offset %02x: %02x\n", offset, data); return data; }, + "lpt_r", [this](address_space &space, offs_t offset, uint8_t data) { LOGLPT("LPT write offset %02x: %02x\n", offset, data); m_lpt->write(space, offset, data); - } + }, + "lpt_w" ); map(0x03f8, 0x03ff).rw(m_uart, FUNC(ins8250_device::ins8250_r), FUNC(ins8250_device::ins8250_w)); diff --git a/src/mame/drivers/elf.cpp b/src/mame/drivers/elf.cpp index 96f23c68044..a693b642c82 100644 --- a/src/mame/drivers/elf.cpp +++ b/src/mame/drivers/elf.cpp @@ -213,7 +213,7 @@ void elf2_state::machine_start() /* setup memory banking */ program.install_read_bank(0x0000, 0x00ff, "bank1"); - program.install_write_handler(0x0000, 0x00ff, write8_delegate(FUNC(elf2_state::memory_w), this)); + program.install_write_handler(0x0000, 0x00ff, write8_delegate(*this, FUNC(elf2_state::memory_w))); membank("bank1")->configure_entry(0, m_ram->pointer()); membank("bank1")->set_entry(0); @@ -279,7 +279,7 @@ void elf2_state::elf2(machine_config &config) m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(elf2_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(elf2_state::quickload_cb)); /* internal ram */ RAM(config, RAM_TAG).set_default_size("256"); diff --git a/src/mame/drivers/ep64.cpp b/src/mame/drivers/ep64.cpp index c1f6b97bd3a..3c95e577126 100644 --- a/src/mame/drivers/ep64.cpp +++ b/src/mame/drivers/ep64.cpp @@ -544,7 +544,7 @@ INPUT_PORTS_END void ep64_state::machine_start() { if (m_cart->exists()) - m_dave->space(AS_PROGRAM).install_read_handler(0x010000, 0x01ffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_dave->space(AS_PROGRAM).install_read_handler(0x010000, 0x01ffff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); // state saving save_item(NAME(m_key)); diff --git a/src/mame/drivers/equites.cpp b/src/mame/drivers/equites.cpp index a066ec22e83..dc9e2e8b818 100644 --- a/src/mame/drivers/equites.cpp +++ b/src/mame/drivers/equites.cpp @@ -649,7 +649,7 @@ void equites_state::equites_common_map(address_map &map) map(0x100000, 0x100001).r(FUNC(equites_state::equites_spriteram_kludge_r)); map(0x140000, 0x1407ff).rw(FUNC(equites_state::mcu_ram_r), FUNC(equites_state::mcu_ram_w)).umask16(0x00ff); map(0x180000, 0x180001).portr("IN1").w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0x180000, 0x180000).select(0x03c000).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_a3(offset >> 14); }); + map(0x180000, 0x180000).select(0x03c000).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_a3(offset >> 14); })); map(0x180001, 0x180001).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x1c0000, 0x1c0001).portr("IN0").w(FUNC(equites_state::equites_scrollreg_w)); map(0x380000, 0x380000).w(FUNC(equites_state::equites_bgcolor_w)); @@ -678,7 +678,7 @@ void splndrbt_state::splndrbt_map(address_map &map) map(0x080000, 0x080001).portr("IN0"); map(0x0c0000, 0x0c0001).portr("IN1"); map(0x0c0000, 0x0c0000).select(0x020000).w(FUNC(splndrbt_state::equites_bgcolor_w)); - map(0x0c0001, 0x0c0001).select(0x03c000).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_a3(offset >> 14); }); + map(0x0c0001, 0x0c0001).select(0x03c000).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_a3(offset >> 14); })); map(0x100000, 0x100001).w(FUNC(splndrbt_state::splndrbt_bg_scrollx_w)); map(0x140001, 0x140001).w("soundlatch", FUNC(generic_latch_8_device::write)); map(0x1c0000, 0x1c0001).w(FUNC(splndrbt_state::splndrbt_bg_scrolly_w)); @@ -1042,7 +1042,7 @@ void equites_state::common_sound(machine_config &config) I8085A(config, m_audiocpu, 6.144_MHz_XTAL); /* verified on pcb */ m_audiocpu->set_addrmap(AS_PROGRAM, &equites_state::sound_map); m_audiocpu->set_addrmap(AS_IO, &equites_state::sound_portmap); - m_audiocpu->set_clk_out("audio8155", FUNC(i8155_device::set_unscaled_clock)); + m_audiocpu->set_clk_out(m_audio8155, FUNC(i8155_device::set_unscaled_clock_int)); I8155(config, m_audio8155, 0); m_audio8155->out_pa_callback().set(FUNC(equites_state::equites_8155_porta_w)); diff --git a/src/mame/drivers/esd16.cpp b/src/mame/drivers/esd16.cpp index 094df3194e7..2fb8df294f6 100644 --- a/src/mame/drivers/esd16.cpp +++ b/src/mame/drivers/esd16.cpp @@ -637,7 +637,7 @@ void esd16_state::esd16(machine_config &config) DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(0); m_sprgen->set_is_bootleg(true); - m_sprgen->set_pri_callback(FUNC(esd16_state::pri_callback), this); + m_sprgen->set_pri_callback(FUNC(esd16_state::pri_callback)); m_sprgen->set_flipallx(1); m_sprgen->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/esprit.cpp b/src/mame/drivers/esprit.cpp index e1c079ffa2e..610c0fca646 100644 --- a/src/mame/drivers/esprit.cpp +++ b/src/mame/drivers/esprit.cpp @@ -160,7 +160,7 @@ void esprit_state::esprit(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(9); - crtc.set_update_row_callback(FUNC(esprit_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(esprit_state::crtc_update_row)); } void esprit_state::esprit3(machine_config &config) @@ -199,8 +199,8 @@ void esprit_state::esprit3(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(9); - crtc.set_update_row_callback(FUNC(esprit_state::crtc_update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(esprit_state::crtc_update_addr), this); + crtc.set_update_row_callback(FUNC(esprit_state::crtc_update_row)); + crtc.set_on_update_addr_change_callback(FUNC(esprit_state::crtc_update_addr)); crtc.out_hsync_callback().set("via", FUNC(via6522_device::write_pb6)).invert(); } diff --git a/src/mame/drivers/eti660.cpp b/src/mame/drivers/eti660.cpp index 8b85ead5f89..6eb66b34ca1 100644 --- a/src/mame/drivers/eti660.cpp +++ b/src/mame/drivers/eti660.cpp @@ -336,7 +336,7 @@ void eti660_state::eti660(machine_config &config) RAM(config, RAM_TAG).set_default_size("3K"); /* quickload */ - QUICKLOAD(config, "quickload", "bin,c8,ch8", attotime::from_seconds(2)).set_load_callback(FUNC(eti660_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin,c8,ch8", attotime::from_seconds(2)).set_load_callback(FUNC(eti660_state::quickload_cb)); } /* ROMs */ diff --git a/src/mame/drivers/ettrivia.cpp b/src/mame/drivers/ettrivia.cpp index ce0840bf3ce..3935e438c7a 100644 --- a/src/mame/drivers/ettrivia.cpp +++ b/src/mame/drivers/ettrivia.cpp @@ -277,8 +277,8 @@ void ettrivia_state::ettrivia_palette(palette_device &palette) const void ettrivia_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ettrivia_state::get_tile_info_bg),this),TILEMAP_SCAN_ROWS,8,8,64,32 ); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ettrivia_state::get_tile_info_fg),this),TILEMAP_SCAN_ROWS,8,8,64,32 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ettrivia_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 8,8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ettrivia_state::get_tile_info_fg)), TILEMAP_SCAN_ROWS, 8,8,64,32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/excali64.cpp b/src/mame/drivers/excali64.cpp index ec881b12608..da63fd51b5e 100644 --- a/src/mame/drivers/excali64.cpp +++ b/src/mame/drivers/excali64.cpp @@ -596,7 +596,7 @@ void excali64_state::excali64(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(excali64_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(excali64_state::update_row)); m_crtc->out_hsync_callback().set(FUNC(excali64_state::crtc_hs)); m_crtc->out_vsync_callback().set(FUNC(excali64_state::crtc_vs)); diff --git a/src/mame/drivers/exidy440.cpp b/src/mame/drivers/exidy440.cpp index 344ed70ea36..8f1d112b104 100644 --- a/src/mame/drivers/exidy440.cpp +++ b/src/mame/drivers/exidy440.cpp @@ -304,7 +304,7 @@ void exidy440_state::exidy440_bank_select(uint8_t bank) if (m_showdown_bank_data[0] != nullptr) { if (bank == 0 && m_bank != 0) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(FUNC(exidy440_state::showdown_bank0_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x7fff, read8_delegate(*this, FUNC(exidy440_state::showdown_bank0_r))); else if (bank != 0 && m_bank == 0) m_maincpu->space(AS_PROGRAM).install_read_bank(0x4000, 0x7fff, "bank1"); } @@ -365,7 +365,7 @@ TIMER_CALLBACK_MEMBER(exidy440_state::delayed_sound_command_w) WRITE8_MEMBER(exidy440_state::sound_command_w) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(exidy440_state::delayed_sound_command_w),this), data); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(exidy440_state::delayed_sound_command_w), this), data); } @@ -2074,7 +2074,7 @@ void exidy440_state::init_exidy440() void exidy440_state::init_claypign() { init_exidy440(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2ec0, 0x2ec3, read8_delegate(FUNC(exidy440_state::claypign_protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2ec0, 0x2ec3, read8_delegate(*this, FUNC(exidy440_state::claypign_protection_r))); } @@ -2083,11 +2083,11 @@ void topsecex_state::init_topsecex() init_exidy440(); /* extra input ports and scrolling */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2ec5, 0x2ec5, read8_delegate(FUNC(topsecex_state::topsecex_input_port_5_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2ec5, 0x2ec5, read8_delegate(*this, FUNC(topsecex_state::topsecex_input_port_5_r))); m_maincpu->space(AS_PROGRAM).install_read_port(0x2ec6, 0x2ec6, "AN0"); m_maincpu->space(AS_PROGRAM).install_read_port(0x2ec7, 0x2ec7, "IN4"); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x2ec1, 0x2ec1, write8_delegate(FUNC(topsecex_state::topsecex_yscroll_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x2ec1, 0x2ec1, write8_delegate(*this, FUNC(topsecex_state::topsecex_yscroll_w))); } diff --git a/src/mame/drivers/expro02.cpp b/src/mame/drivers/expro02.cpp index 332c09b46c4..875febac064 100644 --- a/src/mame/drivers/expro02.cpp +++ b/src/mame/drivers/expro02.cpp @@ -923,7 +923,7 @@ void expro02_state::expro02(machine_config &config) m_view2->set_colbase(0x400); m_view2->set_offset(0x5b, 0x8, 256, 224); m_view2->set_palette(m_palette); - m_view2->set_tile_callback(kaneko_view2_tilemap_device::view2_cb_delegate(FUNC(expro02_state::tile_callback), this)); + m_view2->set_tile_callback(FUNC(expro02_state::tile_callback)); KANEKO_VU002_SPRITE(config, m_kaneko_spr); m_kaneko_spr->set_priorities(8,8,8,8); // above all (not verified) diff --git a/src/mame/drivers/exprraid.cpp b/src/mame/drivers/exprraid.cpp index c424e16ef87..0d3300198cc 100644 --- a/src/mame/drivers/exprraid.cpp +++ b/src/mame/drivers/exprraid.cpp @@ -856,13 +856,13 @@ void exprraid_state::init_exprraid() void exprraid_state::init_wexpressb2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3800, 0x3800, read8_delegate(FUNC(exprraid_state::vblank_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3800, 0x3800, read8_delegate(*this, FUNC(exprraid_state::vblank_r))); exprraid_gfx_expand(); } void exprraid_state::init_wexpressb3() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xFFC0, 0xFFC0, read8_delegate(FUNC(exprraid_state::vblank_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xffc0, 0xffc0, read8_delegate(*this, FUNC(exprraid_state::vblank_r))); exprraid_gfx_expand(); } diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp index f62dd0e13a3..610726ea419 100644 --- a/src/mame/drivers/f1gp.cpp +++ b/src/mame/drivers/f1gp.cpp @@ -399,13 +399,13 @@ void f1gp_state::f1gp(machine_config &config) VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified VSYSTEM_SPR2(config, m_spr_old[0], 0); - m_spr_old[0]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<0>), this); + m_spr_old[0]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<0>)); m_spr_old[0]->set_gfx_region(1); m_spr_old[0]->set_pritype(2); m_spr_old[0]->set_gfxdecode_tag(m_gfxdecode); VSYSTEM_SPR2(config, m_spr_old[1], 0); - m_spr_old[1]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<1>), this); + m_spr_old[1]->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<1>)); m_spr_old[1]->set_gfx_region(2); m_spr_old[1]->set_pritype(2); m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode); @@ -488,8 +488,9 @@ void f1gp2_state::f1gp2(machine_config &config) config.device_remove("gga"); config.device_remove("vsystem_spr_old1"); config.device_remove("vsystem_spr_old2"); + VSYSTEM_SPR(config, m_spr, 0); - m_spr->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<0>), this); + m_spr->set_tile_indirect_cb(FUNC(f1gp2_state::tile_callback<0>)); m_spr->set_gfx_region(1); m_spr->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/facit4440.cpp b/src/mame/drivers/facit4440.cpp index c820f74b88d..8ed509db549 100644 --- a/src/mame/drivers/facit4440.cpp +++ b/src/mame/drivers/facit4440.cpp @@ -264,7 +264,7 @@ void facit4440_state::facit4440(machine_config &config) MC6845(config, m_crtc, FAKE_DOT_CLOCK / CH_WIDTH); // HD46505SP-2 m_crtc->set_char_width(CH_WIDTH); m_crtc->set_show_border_area(false); - m_crtc->set_update_row_callback(FUNC(facit4440_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(facit4440_state::update_row)); m_crtc->out_hsync_callback().set("ctc", FUNC(z80ctc_device::trg3)); m_crtc->out_vsync_callback().set(FUNC(facit4440_state::vsync_w)); } diff --git a/src/mame/drivers/falcots.cpp b/src/mame/drivers/falcots.cpp index c706babec20..69c00712909 100644 --- a/src/mame/drivers/falcots.cpp +++ b/src/mame/drivers/falcots.cpp @@ -386,7 +386,7 @@ void falcots_state::ts1(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(falcots_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(falcots_state::update_row)); } static const z80_daisy_config daisy_chain[] = @@ -425,7 +425,7 @@ void falcots_state::ts2624(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(16); - m_crtc->set_update_row_callback(FUNC(falcots_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(falcots_state::update_row)); } ROM_START(ts1) diff --git a/src/mame/drivers/famibox.cpp b/src/mame/drivers/famibox.cpp index fab34e49be2..c772235dfe9 100644 --- a/src/mame/drivers/famibox.cpp +++ b/src/mame/drivers/famibox.cpp @@ -510,7 +510,7 @@ void famibox_state::machine_start() m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(famibox_state::famibox_nt_r), this), write8_delegate(FUNC(famibox_state::famibox_nt_w), this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(famibox_state::famibox_nt_r)), write8_delegate(*this, FUNC(famibox_state::famibox_nt_w))); m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "ppubank1"); famicombox_bankswitch(0); diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index fcb47205b19..c4ae1904c18 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -1009,7 +1009,7 @@ void fanucspmg_state::fanucspmg(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(fanucspmg_state::vsync_w)); } @@ -1017,7 +1017,7 @@ void fanucspmg_state::fanucspmgm(machine_config &config) { fanucspmg(config); - m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row_mono), this); + m_crtc->set_update_row_callback(FUNC(fanucspmg_state::crtc_update_row_mono)); } /* ROM definition */ diff --git a/src/mame/drivers/fastfred.cpp b/src/mame/drivers/fastfred.cpp index 87902cc0505..1fb0df22581 100644 --- a/src/mame/drivers/fastfred.cpp +++ b/src/mame/drivers/fastfred.cpp @@ -1050,8 +1050,8 @@ ROM_END void fastfred_state::init_flyboy() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc085, 0xc099, read8_delegate(FUNC(fastfred_state::flyboy_custom1_io_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc8fb, 0xc900, read8_delegate(FUNC(fastfred_state::flyboy_custom2_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc085, 0xc099, read8_delegate(*this, FUNC(fastfred_state::flyboy_custom1_io_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc8fb, 0xc900, read8_delegate(*this, FUNC(fastfred_state::flyboy_custom2_io_r))); m_hardware_type = 1; } @@ -1062,28 +1062,28 @@ void fastfred_state::init_flyboyb() void fastfred_state::init_fastfred() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(FUNC(fastfred_state::fastfred_custom_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(*this, FUNC(fastfred_state::fastfred_custom_io_r))); m_maincpu->space(AS_PROGRAM).nop_write(0xc800, 0xcfff); m_hardware_type = 1; } void fastfred_state::init_jumpcoas() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(FUNC(fastfred_state::jumpcoas_custom_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(*this, FUNC(fastfred_state::jumpcoas_custom_io_r))); m_maincpu->space(AS_PROGRAM).nop_write(0xc800, 0xcfff); m_hardware_type = 0; } void fastfred_state::init_boggy84b() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(FUNC(fastfred_state::jumpcoas_custom_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(*this, FUNC(fastfred_state::jumpcoas_custom_io_r))); m_maincpu->space(AS_PROGRAM).nop_write(0xc800, 0xcfff); m_hardware_type = 2; } void fastfred_state::init_boggy84() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(FUNC(fastfred_state::boggy84_custom_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc800, 0xcfff, read8_delegate(*this, FUNC(fastfred_state::boggy84_custom_io_r))); m_maincpu->space(AS_PROGRAM).nop_write(0xc800, 0xcfff); m_hardware_type = 2; } diff --git a/src/mame/drivers/fb01.cpp b/src/mame/drivers/fb01.cpp index bf0a829c9e4..9eb6095e118 100644 --- a/src/mame/drivers/fb01.cpp +++ b/src/mame/drivers/fb01.cpp @@ -200,7 +200,7 @@ void fb01_state::fb01(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780", 0)); hd44780.set_lcd_size(2, 8); // 2x8 displayed as 1x16 - hd44780.set_pixel_update_cb(FUNC(fb01_state::fb01_pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(fb01_state::fb01_pixel_update)); I8251(config, m_upd71051, XTAL(4'000'000)); m_upd71051->rxrdy_handler().set(FUNC(fb01_state::upd71051_rxrdy_w)); diff --git a/src/mame/drivers/fc100.cpp b/src/mame/drivers/fc100.cpp index 4630e1645a3..3c68df4b1b0 100644 --- a/src/mame/drivers/fc100.cpp +++ b/src/mame/drivers/fc100.cpp @@ -465,7 +465,7 @@ void fc100_state::machine_start() m_inv = 0; if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000, 0x6fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); save_item(NAME(m_ag)); save_item(NAME(m_gm2)); diff --git a/src/mame/drivers/fccpu30.cpp b/src/mame/drivers/fccpu30.cpp index b7f2197872e..4d390cde0b1 100644 --- a/src/mame/drivers/fccpu30.cpp +++ b/src/mame/drivers/fccpu30.cpp @@ -661,7 +661,7 @@ static void fccpu30_vme_cards(device_slot_interface &device) void cpu30_state::cpu_space_map(address_map &map) { - map(0xfffffff2, 0xffffffff).lr16("fga002 irq", [this](offs_t offset) -> u16 { return m_fga002->iack(); }); + map(0xfffffff2, 0xffffffff).lr16(NAME([this] (offs_t offset) -> u16 { return m_fga002->iack(); })); } void cpu30_state::cpu30(machine_config &config) diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 96c973de10f..8a7e70d334a 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -2131,9 +2131,9 @@ ROM_END void cps_state::init_kodb() { m_maincpu->space(AS_PROGRAM).install_read_port(0x800000, 0x800007, "IN1"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800187, write16_delegate(FUNC(cps_state::cps1_soundlatch_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x98002f, write16_delegate(FUNC(cps_state::kodb_layer_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800018, 0x80001f, read16_delegate(*this, FUNC(cps_state::cps1_dsw_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800180, 0x800187, write16_delegate(*this, FUNC(cps_state::cps1_soundlatch_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x98002f, write16_delegate(*this, FUNC(cps_state::kodb_layer_w))); /* the original game alternates between 2 sprite ram areas to achieve flashing sprites - the bootleg doesn't do the write to the register to achieve this mapping both sprite ram areas to the same bootleg sprite ram - similar to how sf2mdt works */ @@ -2269,8 +2269,8 @@ ROM_END void cps_state::init_cawingbl() { m_maincpu->space(AS_PROGRAM).install_read_port(0x882000, 0x882001, "IN1"); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(FUNC(cps_state::cawingbl_soundlatch_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(FUNC(cps_state::cps1_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x882006, 0x882007, write16_delegate(*this, FUNC(cps_state::cawingbl_soundlatch_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x882008, 0x88200f, read16_delegate(*this, FUNC(cps_state::cps1_dsw_r))); init_cps1(); } @@ -3099,7 +3099,7 @@ void cps_state::init_sf2mdt() rom[i + 6] = tmp; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16_delegate(FUNC(cps_state::sf2mdt_layer_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16_delegate(*this, FUNC(cps_state::sf2mdt_layer_w))); init_sf2mdta(); } diff --git a/src/mame/drivers/fidel_as12.cpp b/src/mame/drivers/fidel_as12.cpp index 1f895ac9057..98adcbf4e1a 100644 --- a/src/mame/drivers/fidel_as12.cpp +++ b/src/mame/drivers/fidel_as12.cpp @@ -235,7 +235,7 @@ void as12_state::as12(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat"); - m_cart->set_device_load(FUNC(as12_state::cart_load), this); + m_cart->set_device_load(FUNC(as12_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); } diff --git a/src/mame/drivers/fidel_cc1.cpp b/src/mame/drivers/fidel_cc1.cpp index 643350f7c73..3d9cfec2334 100644 --- a/src/mame/drivers/fidel_cc1.cpp +++ b/src/mame/drivers/fidel_cc1.cpp @@ -233,7 +233,7 @@ void cc1_state::cc1(machine_config &config) m_ppi8255->out_pc_callback().set(FUNC(cc1_state::ppi_portc_w)); m_ppi8255->tri_pc_callback().set_constant(0); - TIMER(config, "delay").configure_generic(timer_device::expired_delegate()); + TIMER(config, "delay").configure_generic(nullptr); /* video hardware */ PWM_DISPLAY(config, m_display).set_size(6, 7); diff --git a/src/mame/drivers/fidel_eag68k.cpp b/src/mame/drivers/fidel_eag68k.cpp index 218ec1dcde3..298d1f5e80a 100644 --- a/src/mame/drivers/fidel_eag68k.cpp +++ b/src/mame/drivers/fidel_eag68k.cpp @@ -621,7 +621,7 @@ void eag_state::eag_base(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat"); - m_cart->set_device_load(FUNC(eag_state::cart_load), this); + m_cart->set_device_load(FUNC(eag_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); } diff --git a/src/mame/drivers/fidel_elite.cpp b/src/mame/drivers/fidel_elite.cpp index 5b89505f194..484d9bacccd 100644 --- a/src/mame/drivers/fidel_elite.cpp +++ b/src/mame/drivers/fidel_elite.cpp @@ -454,7 +454,7 @@ void elite_state::pc(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat"); - m_cart->set_device_load(FUNC(elite_state::cart_load), this); + m_cart->set_device_load(FUNC(elite_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); } diff --git a/src/mame/drivers/fidel_sc12.cpp b/src/mame/drivers/fidel_sc12.cpp index 47ac889cc9c..aec0576fd8c 100644 --- a/src/mame/drivers/fidel_sc12.cpp +++ b/src/mame/drivers/fidel_sc12.cpp @@ -254,7 +254,7 @@ void sc12_state::sc12(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat"); - m_cart->set_device_load(FUNC(sc12_state::cart_load), this); + m_cart->set_device_load(FUNC(sc12_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); } diff --git a/src/mame/drivers/fidel_sc6.cpp b/src/mame/drivers/fidel_sc6.cpp index 9b674d581a7..1864fa3ec24 100644 --- a/src/mame/drivers/fidel_sc6.cpp +++ b/src/mame/drivers/fidel_sc6.cpp @@ -243,7 +243,7 @@ void sc6_state::sc6(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_sc6", "bin"); - m_cart->set_device_load(FUNC(sc6_state::cart_load), this); + m_cart->set_device_load(FUNC(sc6_state::cart_load)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("fidel_sc6"); diff --git a/src/mame/drivers/fidel_sc9.cpp b/src/mame/drivers/fidel_sc9.cpp index 57867b040de..d8f49e242b2 100644 --- a/src/mame/drivers/fidel_sc9.cpp +++ b/src/mame/drivers/fidel_sc9.cpp @@ -300,7 +300,7 @@ void sc9_state::sc9d(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "fidel_scc", "bin,dat"); - m_cart->set_device_load(FUNC(sc9_state::cart_load), this); + m_cart->set_device_load(FUNC(sc9_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("fidel_scc"); } diff --git a/src/mame/drivers/fireball.cpp b/src/mame/drivers/fireball.cpp index 3d897c55fdd..22ec268e04d 100644 --- a/src/mame/drivers/fireball.cpp +++ b/src/mame/drivers/fireball.cpp @@ -504,7 +504,7 @@ void fireball_state::fireball(machine_config &config) m_maincpu->port_out_cb<3>().set(FUNC(fireball_state::p3_w)); //9ms from scope reading 111Hz take care of this in the handler - TIMER(config, "int_0", 0).configure_periodic(timer_device::expired_delegate(FUNC(fireball_state::int_0), this), attotime::from_hz(555)); + TIMER(config, "int_0", 0).configure_periodic(FUNC(fireball_state::int_0), attotime::from_hz(555)); EEPROM_X24C44_16BIT(config, "eeprom"); diff --git a/src/mame/drivers/firebeat.cpp b/src/mame/drivers/firebeat.cpp index a7e09bdb5d8..7e712b55822 100644 --- a/src/mame/drivers/firebeat.cpp +++ b/src/mame/drivers/firebeat.cpp @@ -1468,9 +1468,9 @@ WRITE8_MEMBER(firebeat_state::security_w) void firebeat_state::init_lights(write32_delegate out1, write32_delegate out2, write32_delegate out3) { - if(out1.isnull()) out1 = write32_delegate(FUNC(firebeat_state::lamp_output_w),this); - if(out2.isnull()) out2 = write32_delegate(FUNC(firebeat_state::lamp_output2_w),this); - if(out3.isnull()) out3 = write32_delegate(FUNC(firebeat_state::lamp_output3_w),this); + if(out1.isnull()) out1 = write32_delegate(*this, FUNC(firebeat_state::lamp_output_w)); + if(out2.isnull()) out2 = write32_delegate(*this, FUNC(firebeat_state::lamp_output2_w)); + if(out3.isnull()) out3 = write32_delegate(*this, FUNC(firebeat_state::lamp_output3_w)); m_maincpu->space(AS_PROGRAM).install_write_handler(0x7d000804, 0x7d000807, out1); m_maincpu->space(AS_PROGRAM).install_write_handler(0x7d000320, 0x7d000323, out2); @@ -1489,23 +1489,23 @@ void firebeat_state::init_firebeat() m_cur_cab_data = cab_data; - m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(firebeat_state::security_w), this)); + m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(*this, FUNC(firebeat_state::security_w))); set_ibutton(rom); - init_lights(write32_delegate(), write32_delegate(), write32_delegate()); + init_lights(write32_delegate(*this), write32_delegate(*this), write32_delegate(*this)); } void firebeat_state::init_ppp() { init_firebeat(); - init_lights(write32_delegate(FUNC(firebeat_state::lamp_output_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output2_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output3_ppp_w),this)); + init_lights(write32_delegate(*this, FUNC(firebeat_state::lamp_output_ppp_w)), write32_delegate(*this, FUNC(firebeat_state::lamp_output2_ppp_w)), write32_delegate(*this, FUNC(firebeat_state::lamp_output3_ppp_w))); } void firebeat_state::init_ppd() { init_firebeat(); - init_lights(write32_delegate(FUNC(firebeat_state::lamp_output_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output2_ppp_w),this), write32_delegate(FUNC(firebeat_state::lamp_output3_ppp_w),this)); + init_lights(write32_delegate(*this, FUNC(firebeat_state::lamp_output_ppp_w)), write32_delegate(*this, FUNC(firebeat_state::lamp_output2_ppp_w)), write32_delegate(*this, FUNC(firebeat_state::lamp_output3_ppp_w))); m_cur_cab_data = ppd_cab_data; } @@ -1520,7 +1520,7 @@ void firebeat_state::init_keyboard() void firebeat_state::init_kbm() { init_firebeat(); - init_lights(write32_delegate(FUNC(firebeat_state::lamp_output_kbm_w),this), write32_delegate(), write32_delegate()); + init_lights(write32_delegate(*this, FUNC(firebeat_state::lamp_output_kbm_w)), write32_delegate(*this), write32_delegate(*this)); init_keyboard(); diff --git a/src/mame/drivers/firefox.cpp b/src/mame/drivers/firefox.cpp index ab35e22dd29..cf7f0999715 100644 --- a/src/mame/drivers/firefox.cpp +++ b/src/mame/drivers/firefox.cpp @@ -248,7 +248,7 @@ WRITE8_MEMBER(firefox_state::tileram_w) void firefox_state::video_start() { - m_bgtiles = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firefox_state::bgtile_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_bgtiles = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firefox_state::bgtile_get_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_bgtiles->set_transparent_pen(0); m_bgtiles->set_scrolldy(m_screen->visible_area().top(), 0); } diff --git a/src/mame/drivers/fitfight.cpp b/src/mame/drivers/fitfight.cpp index 0566ca682ec..6067a24fa30 100644 --- a/src/mame/drivers/fitfight.cpp +++ b/src/mame/drivers/fitfight.cpp @@ -984,7 +984,7 @@ void fitfight_state::init_fitfight() { // uint16_t *mem16 = (uint16_t *)memregion("maincpu")->base(); // mem16[0x0165B2/2] = 0x4e71; // for now so it boots - m_maincpu->space(AS_PROGRAM).install_read_handler(0x700000, 0x700001, read16_delegate(FUNC(fitfight_state::fitfight_700000_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x700000, 0x700001, read16_delegate(*this, FUNC(fitfight_state::fitfight_700000_r))); m_bbprot_kludge = 0; } @@ -992,7 +992,7 @@ void fitfight_state::init_histryma() { // uint16_t *mem16 = (uint16_t *)memregion("maincpu")->base(); // mem16[0x017FDC/2] = 0x4e71; // for now so it boots - m_maincpu->space(AS_PROGRAM).install_read_handler(0x700000, 0x700001, read16_delegate(FUNC(fitfight_state::histryma_700000_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x700000, 0x700001, read16_delegate(*this, FUNC(fitfight_state::histryma_700000_r))); m_bbprot_kludge = 0; } @@ -1003,7 +1003,7 @@ void fitfight_state::init_bbprot() void fitfight_state::init_hotmindff() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(FUNC(fitfight_state::hotmindff_unk_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(*this, FUNC(fitfight_state::hotmindff_unk_r))); init_fitfight(); } diff --git a/src/mame/drivers/flipjack.cpp b/src/mame/drivers/flipjack.cpp index f99267910d5..cf8c9d20655 100644 --- a/src/mame/drivers/flipjack.cpp +++ b/src/mame/drivers/flipjack.cpp @@ -447,7 +447,7 @@ void flipjack_state::flipjack(machine_config &config) crtc.set_char_width(8); crtc.out_vsync_callback().set_inputline("maincpu", INPUT_LINE_IRQ0, HOLD_LINE); crtc.out_vsync_callback().append_inputline("audiocpu", INPUT_LINE_NMI, ASSERT_LINE); - crtc.set_update_row_callback(FUNC(flipjack_state::update_row), this); + crtc.set_update_row_callback(FUNC(flipjack_state::update_row)); GFXDECODE(config, "gfxdecode", m_palette, gfx_flipjack); PALETTE(config, m_palette, FUNC(flipjack_state::flipjack_palette), 128+8); diff --git a/src/mame/drivers/flower.cpp b/src/mame/drivers/flower.cpp index 2365317fa78..daf156ea303 100644 --- a/src/mame/drivers/flower.cpp +++ b/src/mame/drivers/flower.cpp @@ -177,8 +177,8 @@ TILE_GET_INFO_MEMBER(flower_state::get_fg_tile_info) void flower_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flower_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flower_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flower_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); m_screen->register_screen_bitmap(m_temp_bitmap); m_fg_tilemap->set_transparent_pen(15); diff --git a/src/mame/drivers/flyball.cpp b/src/mame/drivers/flyball.cpp index f9f24738a17..9e4dda6ba15 100644 --- a/src/mame/drivers/flyball.cpp +++ b/src/mame/drivers/flyball.cpp @@ -141,7 +141,7 @@ TILE_GET_INFO_MEMBER(flyball_state::get_tile_info) void flyball_state::video_start() { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flyball_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(flyball_state::get_memory_offset),this), 8, 16, 32, 16); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flyball_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(flyball_state::get_memory_offset)), 8, 16, 32, 16); } diff --git a/src/mame/drivers/fm7.cpp b/src/mame/drivers/fm7.cpp index 9c44273965a..c8243e199f2 100644 --- a/src/mame/drivers/fm7.cpp +++ b/src/mame/drivers/fm7.cpp @@ -1026,40 +1026,40 @@ void fm7_state::fm7_update_bank(address_space & space, int bank, uint8_t physica switch(physical) { case 0x10: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram0_r),this),write8_delegate(FUNC(fm7_state::fm7_vram0_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram0_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram0_w))); break; case 0x11: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram1_r),this),write8_delegate(FUNC(fm7_state::fm7_vram1_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram1_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram1_w))); break; case 0x12: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram2_r),this),write8_delegate(FUNC(fm7_state::fm7_vram2_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram2_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram2_w))); break; case 0x13: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram3_r),this),write8_delegate(FUNC(fm7_state::fm7_vram3_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram3_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram3_w))); break; case 0x14: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram4_r),this),write8_delegate(FUNC(fm7_state::fm7_vram4_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram4_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram4_w))); break; case 0x15: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram5_r),this),write8_delegate(FUNC(fm7_state::fm7_vram5_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram5_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram5_w))); break; case 0x16: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram6_r),this),write8_delegate(FUNC(fm7_state::fm7_vram6_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram6_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram6_w))); break; case 0x17: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram7_r),this),write8_delegate(FUNC(fm7_state::fm7_vram7_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram7_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram7_w))); break; case 0x18: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram8_r),this),write8_delegate(FUNC(fm7_state::fm7_vram8_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram8_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram8_w))); break; case 0x19: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vram9_r),this),write8_delegate(FUNC(fm7_state::fm7_vram9_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vram9_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vram9_w))); break; case 0x1a: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vramA_r),this),write8_delegate(FUNC(fm7_state::fm7_vramA_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vramA_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vramA_w))); break; case 0x1b: - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_vramB_r),this),write8_delegate(FUNC(fm7_state::fm7_vramB_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_vramB_r)),write8_delegate(*this, FUNC(fm7_state::fm7_vramB_w))); break; } // membank(bank+1)->set_base(RAM+(physical<<12)-0x10000); @@ -1067,12 +1067,12 @@ void fm7_state::fm7_update_bank(address_space & space, int bank, uint8_t physica } if(physical == 0x1c) { - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_console_ram_banked_r),this),write8_delegate(FUNC(fm7_state::fm7_console_ram_banked_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_console_ram_banked_r)),write8_delegate(*this, FUNC(fm7_state::fm7_console_ram_banked_w))); return; } if(physical == 0x1d) { - space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(FUNC(fm7_state::fm7_sub_ram_ports_banked_r),this),write8_delegate(FUNC(fm7_state::fm7_sub_ram_ports_banked_w),this)); + space.install_readwrite_handler(bank*0x1000,(bank*0x1000)+size,read8_delegate(*this, FUNC(fm7_state::fm7_sub_ram_ports_banked_r)),write8_delegate(*this, FUNC(fm7_state::fm7_sub_ram_ports_banked_w))); return; } if(physical == 0x35) @@ -1145,7 +1145,7 @@ void fm7_state::fm7_mmr_refresh(address_space& space) } else { - space.install_readwrite_handler(0x7000,0x7fff,read8sm_delegate(FUNC(address_map_bank_device::read8),(address_map_bank_device*)m_avbank[7]),write8sm_delegate(FUNC(address_map_bank_device::write8),(address_map_bank_device*)m_avbank[7])); + space.install_readwrite_handler(0x7000,0x7fff,read8sm_delegate(*m_avbank[7], FUNC(address_map_bank_device::read8)),write8sm_delegate(*m_avbank[7], FUNC(address_map_bank_device::write8))); } if(m_init_rom_en) { diff --git a/src/mame/drivers/force68k.cpp b/src/mame/drivers/force68k.cpp index 1002f3d9eae..9971891ed82 100644 --- a/src/mame/drivers/force68k.cpp +++ b/src/mame/drivers/force68k.cpp @@ -381,9 +381,9 @@ void force68k_state::machine_start () { m_usrrom = (uint16_t*)m_cart->get_rom_base(); #if 0 // This should be the correct way but produces odd and even bytes swapped - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(FUNC(generic_slot_device::read16_rom), (generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); #else // So we installs a custom very ineffecient handler for now until we understand hwp to solve the problem better - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(FUNC(force68k_state::read16_rom), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa0000, 0xbffff, read16_delegate(*this, FUNC(force68k_state::read16_rom))); #endif } } @@ -500,7 +500,7 @@ void force68k_state::fccpu1_eprom_sockets(machine_config &config) generic_cartslot_device &exp_rom1(GENERIC_CARTSLOT(config, "exp_rom1", generic_plain_slot, "fccpu1_cart", "bin,rom")); exp_rom1.set_width(GENERIC_ROM16_WIDTH); exp_rom1.set_endian(ENDIANNESS_BIG); - exp_rom1.set_device_load(FUNC(force68k_state::exp1_load), this); + exp_rom1.set_device_load(FUNC(force68k_state::exp1_load)); // SOFTWARE_LIST(config, "cart_list").set_original("fccpu1_cart"); } diff --git a/src/mame/drivers/fp1100.cpp b/src/mame/drivers/fp1100.cpp index b076857ded9..33fd04d2e16 100644 --- a/src/mame/drivers/fp1100.cpp +++ b/src/mame/drivers/fp1100.cpp @@ -302,7 +302,7 @@ void fp1100_state::sub_map(address_map &map) map(0xe001, 0xe001).mirror(0x3fe).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w)); map(0xe400, 0xe7ff).portr("DSW").w(FUNC(fp1100_state::kbd_row_w)); map(0xe800, 0xebff).rw(FUNC(fp1100_state::main_to_sub_r), FUNC(fp1100_state::sub_to_main_w)); - map(0xec00, 0xefff).lw8("reset0", [this] (u8 data) { m_subcpu->set_input_line(UPD7810_INTF0, CLEAR_LINE); }); + map(0xec00, 0xefff).lw8(NAME([this] (u8 data) { m_subcpu->set_input_line(UPD7810_INTF0, CLEAR_LINE); })); map(0xf000, 0xf3ff).w(FUNC(fp1100_state::colour_control_w)); map(0xf400, 0xff7f).rom().region("sub_ipl", 0x2400); } @@ -711,7 +711,7 @@ void fp1100_state::fp1100(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(fp1100_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(fp1100_state::crtc_update_row)); /* Printer */ CENTRONICS(config, m_centronics, centronics_devices, "printer"); diff --git a/src/mame/drivers/freeway.cpp b/src/mame/drivers/freeway.cpp index 38db5cdcc93..a45d6743261 100644 --- a/src/mame/drivers/freeway.cpp +++ b/src/mame/drivers/freeway.cpp @@ -149,7 +149,7 @@ void freeway_state::freeway(machine_config &config) crtc.set_char_width(8); crtc.set_show_border_area(false); crtc.set_screen("screen"); - crtc.set_update_row_callback(FUNC(freeway_state::update_row), this); + crtc.set_update_row_callback(FUNC(freeway_state::update_row)); crtc.out_hsync_callback().set("pit", FUNC(pit8254_device::write_clk0)); // guess ns16450_device &uart(NS16450(config, "uart", 10_MHz_XTAL / 8)); // type unknown diff --git a/src/mame/drivers/fresh.cpp b/src/mame/drivers/fresh.cpp index 0dc19ad686b..bded8f6855b 100644 --- a/src/mame/drivers/fresh.cpp +++ b/src/mame/drivers/fresh.cpp @@ -159,8 +159,8 @@ WRITE16_MEMBER(fresh_state::fresh_attr_2_videoram_w) void fresh_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fresh_state::get_fresh_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 512); - m_bg_2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fresh_state::get_fresh_bg_2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 512); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fresh_state::get_fresh_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 512); + m_bg_2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fresh_state::get_fresh_bg_2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 512); m_bg_tilemap->set_transparent_pen(255); } diff --git a/src/mame/drivers/fs3216.cpp b/src/mame/drivers/fs3216.cpp index 7f8df004b84..7ecd6312289 100644 --- a/src/mame/drivers/fs3216.cpp +++ b/src/mame/drivers/fs3216.cpp @@ -467,7 +467,7 @@ void fs3216_state::fs3216(machine_config &config) M68000(config, m_maincpu, 44.2368_MHz_XTAL / 8); // 5.5 MHz m_maincpu->set_addrmap(AS_PROGRAM, &fs3216_state::main_map); m_maincpu->set_addrmap(m68000_device::AS_CPU_SPACE, &fs3216_state::fc7_map); - m_maincpu->set_reset_callback(write_line_delegate(FUNC(fs3216_state::mmu_reset_w), this)); + m_maincpu->set_reset_callback(FUNC(fs3216_state::mmu_reset_w)); ADDRESS_MAP_BANK(config, m_clb); m_clb->set_addrmap(0, &fs3216_state::clb_map); @@ -501,7 +501,7 @@ void fs3216_state::fs3216(machine_config &config) mc6845_device &crtc(MC6845(config, "crtc", 14.58_MHz_XTAL / 9)); // HD46505RP crtc.set_char_width(9); crtc.set_show_border_area(false); - crtc.set_update_row_callback(FUNC(fs3216_state::crt_update_row), this); + crtc.set_update_row_callback(FUNC(fs3216_state::crt_update_row)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_color(rgb_t::green()); diff --git a/src/mame/drivers/funkball.cpp b/src/mame/drivers/funkball.cpp index 95bd5f603bf..3c88dd69f37 100644 --- a/src/mame/drivers/funkball.cpp +++ b/src/mame/drivers/funkball.cpp @@ -773,10 +773,8 @@ void funkball_state::funkball(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (7, FUNC(funkball_state::voodoo_0_pci_r), this); - pcibus.set_device_write(7, FUNC(funkball_state::voodoo_0_pci_w), this); - pcibus.set_device_read (18, FUNC(funkball_state::cx5510_pci_r), this); - pcibus.set_device_write(18, FUNC(funkball_state::cx5510_pci_w), this); + pcibus.set_device(7, FUNC(funkball_state::voodoo_0_pci_r), FUNC(funkball_state::voodoo_0_pci_w)); + pcibus.set_device(18, FUNC(funkball_state::cx5510_pci_r), FUNC(funkball_state::cx5510_pci_w)); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/funtech.cpp b/src/mame/drivers/funtech.cpp index 9f9077ef500..06b94be2839 100644 --- a/src/mame/drivers/funtech.cpp +++ b/src/mame/drivers/funtech.cpp @@ -130,12 +130,12 @@ WRITE8_MEMBER(fun_tech_corp_state::reel_ram_w) void fun_tech_corp_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fun_tech_corp_state::get_fg_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fun_tech_corp_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); - m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fun_tech_corp_state::get_reel_tile_info<0>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fun_tech_corp_state::get_reel_tile_info<1>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fun_tech_corp_state::get_reel_tile_info<2>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fun_tech_corp_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fun_tech_corp_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fun_tech_corp_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); m_reel_tilemap[0]->set_scroll_cols(64); m_reel_tilemap[1]->set_scroll_cols(64); diff --git a/src/mame/drivers/fuukifg2.cpp b/src/mame/drivers/fuukifg2.cpp index 45ab3b8efd5..37cef4df745 100644 --- a/src/mame/drivers/fuukifg2.cpp +++ b/src/mame/drivers/fuukifg2.cpp @@ -486,7 +486,7 @@ void fuuki16_state::fuuki16(machine_config &config) m_fuukivid->set_palette(m_palette); m_fuukivid->set_color_base(0x400*2); m_fuukivid->set_color_num(0x40); - m_fuukivid->set_colpri_callback(FUNC(fuuki16_state::fuuki16_colpri_cb), this); + m_fuukivid->set_colpri_callback(FUNC(fuuki16_state::fuuki16_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/fuukifg3.cpp b/src/mame/drivers/fuukifg3.cpp index e81b0077e8e..bb740c0d4e5 100644 --- a/src/mame/drivers/fuukifg3.cpp +++ b/src/mame/drivers/fuukifg3.cpp @@ -241,10 +241,10 @@ void fuuki32_state::fuuki32_map(address_map &map) map(0x600000, 0x601fff).rw(FUNC(fuuki32_state::sprram_r), FUNC(fuuki32_state::sprram_w)).share("spriteram"); // Sprites map(0x700000, 0x703fff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); // Palette - map(0x800000, 0x800003).lr16("800000", [this]() { return u16(m_system->read()); }).nopw(); // Coin - map(0x810000, 0x810003).lr16("810000", [this]() { return u16(m_inputs->read()); }).nopw(); // Player Inputs - map(0x880000, 0x880003).lr16("880000", [this]() { return u16(m_dsw1->read()); }); // Service + DIPS - map(0x890000, 0x890003).lr16("890000", [this]() { return u16(m_dsw2->read()); }); // More DIPS + map(0x800000, 0x800003).lr16(NAME([this] () { return u16(m_system->read()); })).nopw(); // Coin + map(0x810000, 0x810003).lr16(NAME([this] () { return u16(m_inputs->read()); })).nopw(); // Player Inputs + map(0x880000, 0x880003).lr16(NAME([this] () { return u16(m_dsw1->read()); })); // Service + DIPS + map(0x890000, 0x890003).lr16(NAME([this] () { return u16(m_dsw2->read()); })); // More DIPS map(0x8c0000, 0x8c001f).rw(FUNC(fuuki32_state::vregs_r), FUNC(fuuki32_state::vregs_w)).share("vregs"); // Video Registers map(0x8d0000, 0x8d0003).ram(); // Flipscreen Related @@ -546,8 +546,8 @@ void fuuki32_state::fuuki32(machine_config &config) m_fuukivid->set_palette(m_palette); m_fuukivid->set_color_base(0x400*2); m_fuukivid->set_color_num(0x40); - m_fuukivid->set_tile_callback(FUNC(fuuki32_state::fuuki32_tile_cb), this); - m_fuukivid->set_colpri_callback(FUNC(fuuki32_state::fuuki32_colpri_cb), this); + m_fuukivid->set_tile_callback(FUNC(fuuki32_state::fuuki32_tile_cb)); + m_fuukivid->set_colpri_callback(FUNC(fuuki32_state::fuuki32_colpri_cb)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/gaelco.cpp b/src/mame/drivers/gaelco.cpp index 3f257652ef3..922cdb47320 100644 --- a/src/mame/drivers/gaelco.cpp +++ b/src/mame/drivers/gaelco.cpp @@ -117,7 +117,7 @@ void gaelco_state::bigkarnk_map(address_map &map) map(0x700004, 0x700005).portr("P1"); map(0x700006, 0x700007).portr("P2"); map(0x700008, 0x700009).portr("SERVICE"); - map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x70000b, 0x70000b).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x70000f, 0x70000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); /* Triggers a FIRQ on the sound CPU */ map(0xff8000, 0xffffff).ram(); /* Work RAM */ } @@ -163,7 +163,7 @@ void gaelco_state::squash_map(address_map &map) map(0x700002, 0x700003).portr("DSW1"); map(0x700004, 0x700005).portr("P1"); map(0x700006, 0x700007).portr("P2"); - map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x70000b, 0x70000b).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x70000d, 0x70000d).w(FUNC(gaelco_state::oki_bankswitch_w)); map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ map(0xff0000, 0xffffff).ram(); /* Work RAM */ @@ -182,7 +182,7 @@ void gaelco_state::thoop_map(address_map &map) map(0x700002, 0x700003).portr("DSW1"); map(0x700004, 0x700005).portr("P1"); map(0x700006, 0x700007).portr("P2"); - map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x70000b, 0x70000b).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x70000d, 0x70000d).w(FUNC(gaelco_state::oki_bankswitch_w)); map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status register */ map(0xff0000, 0xffffff).ram(); /* Work RAM */ diff --git a/src/mame/drivers/gaelco3d.cpp b/src/mame/drivers/gaelco3d.cpp index 7a4f364bdf2..cb84e65c477 100644 --- a/src/mame/drivers/gaelco3d.cpp +++ b/src/mame/drivers/gaelco3d.cpp @@ -669,9 +669,9 @@ void gaelco3d_state::main_map(address_map &map) map(0x510042, 0x510043).r(FUNC(gaelco3d_state::sound_status_r)); map(0x510100, 0x510101).rw(FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w)); map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r)); - map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 3, data); }); + map(0x510103, 0x510103).select(0x000038).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 3, data); })); map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w)); - map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x510107, 0x510107).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base"); } @@ -688,9 +688,9 @@ void gaelco3d_state::main020_map(address_map &map) map(0x510042, 0x510043).r(FUNC(gaelco3d_state::sound_status_r)); map(0x510100, 0x510101).rw(FUNC(gaelco3d_state::eeprom_data_r), FUNC(gaelco3d_state::irq_ack_w)); map(0x510103, 0x510103).r(m_serial, FUNC(gaelco_serial_device::data_r)); - map(0x510103, 0x510103).select(0x000038).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 3, data); }); + map(0x510103, 0x510103).select(0x000038).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 3, data); })); map(0x510105, 0x510105).w(m_serial, FUNC(gaelco_serial_device::data_w)); - map(0x510107, 0x510107).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x510107, 0x510107).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0xfe0000, 0xfeffff).ram().share("m68k_ram_base"); } diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp index 649b386f8d1..e32aa6b07fc 100644 --- a/src/mame/drivers/galaga.cpp +++ b/src/mame/drivers/galaga.cpp @@ -3462,8 +3462,8 @@ void xevious_state::init_xevios() void battles_state::driver_init() { /* replace the Namco I/O handlers with interface to the 4th CPU */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x7000, 0x700f, read8_delegate(FUNC(battles_state::customio_data0_r),this), write8_delegate(FUNC(battles_state::customio_data0_w),this) ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x7100, 0x7100, read8_delegate(FUNC(battles_state::customio0_r),this), write8_delegate(FUNC(battles_state::customio0_w),this) ); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x7000, 0x700f, read8_delegate(*this, FUNC(battles_state::customio_data0_r)), write8_delegate(*this, FUNC(battles_state::customio_data0_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x7100, 0x7100, read8_delegate(*this, FUNC(battles_state::customio0_r)), write8_delegate(*this, FUNC(battles_state::customio0_w))); init_xevious(); } diff --git a/src/mame/drivers/galaxi.cpp b/src/mame/drivers/galaxi.cpp index e0a6cbfe08d..1bb2be6ed22 100644 --- a/src/mame/drivers/galaxi.cpp +++ b/src/mame/drivers/galaxi.cpp @@ -198,12 +198,12 @@ WRITE16_MEMBER(galaxi_state::fg_w) void galaxi_state::video_start() { - m_bg1_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxi_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); - m_bg2_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxi_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); - m_bg3_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxi_state::get_bg3_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); - m_bg4_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxi_state::get_bg4_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_bg1_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxi_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_bg2_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxi_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_bg3_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxi_state::get_bg3_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_bg4_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxi_state::get_bg4_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); - m_fg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxi_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); + m_fg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxi_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); m_bg1_tmap->set_transparent_pen(0); m_bg2_tmap->set_transparent_pen(0); diff --git a/src/mame/drivers/galaxian.cpp b/src/mame/drivers/galaxian.cpp index d4731c61128..570f6e27f57 100644 --- a/src/mame/drivers/galaxian.cpp +++ b/src/mame/drivers/galaxian.cpp @@ -7096,7 +7096,7 @@ void galaxian_state::init_pisces() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, &galaxian_state::pisces_extend_tile_info, &galaxian_state::pisces_extend_sprite_info); /* coin lockout replaced by graphics bank */ - space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::galaxian_gfxbank_w),this)); + space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::galaxian_gfxbank_w))); } @@ -7108,7 +7108,7 @@ void galaxian_state::init_batman2() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, &galaxian_state::batman2_extend_tile_info, &galaxian_state::upper_extend_sprite_info); /* coin lockout replaced by graphics bank */ - space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::galaxian_gfxbank_w),this)); + space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::galaxian_gfxbank_w))); } @@ -7176,7 +7176,7 @@ void galaxian_state::init_mooncrgx() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, &galaxian_state::mooncrst_extend_tile_info, &galaxian_state::mooncrst_extend_sprite_info); /* LEDs and coin lockout replaced by graphics banking */ - space.install_write_handler(0x6000, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::galaxian_gfxbank_w),this)); + space.install_write_handler(0x6000, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::galaxian_gfxbank_w))); } @@ -7202,7 +7202,7 @@ void galaxian_state::init_pacmanbl() init_galaxian(); /* ...but coin lockout disabled/disconnected */ - space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::artic_gfxbank_w),this)); + space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::artic_gfxbank_w))); } READ8_MEMBER(galaxian_state::tenspot_dsw_read) @@ -7265,18 +7265,18 @@ void galaxian_state::init_tenspot() //common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, &galaxian_state::batman2_extend_tile_info, &galaxian_state::upper_extend_sprite_info); /* coin lockout replaced by graphics bank */ - //space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::galaxian_gfxbank_w),this)); + //space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::galaxian_gfxbank_w))); init_galaxian(); - space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::artic_gfxbank_w),this)); + space.install_write_handler(0x6002, 0x6002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::artic_gfxbank_w))); m_tenspot_current_game = 0; tenspot_set_game_bank(m_tenspot_current_game, 0); - space.install_read_handler(0x7000, 0x7000, read8_delegate(FUNC(galaxian_state::tenspot_dsw_read),this)); + space.install_read_handler(0x7000, 0x7000, read8_delegate(*this, FUNC(galaxian_state::tenspot_dsw_read))); } @@ -7328,10 +7328,10 @@ void galaxian_state::init_checkman() /* move the interrupt enable from $b000 to $b001 */ space.unmap_write(0xb000, 0xb000, 0x7f8); - space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::irq_enable_w),this)); + space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::irq_enable_w))); /* attach the sound command handler */ - iospace.install_write_handler(0x00, 0x00, 0, 0xffff, 0, write8_delegate(FUNC(galaxian_state::checkman_sound_command_w),this)); + iospace.install_write_handler(0x00, 0x00, 0, 0xffff, 0, write8_delegate(*this, FUNC(galaxian_state::checkman_sound_command_w))); /* decrypt program code */ decode_checkman(); @@ -7346,10 +7346,10 @@ void galaxian_state::init_checkmaj() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, nullptr); /* attach the sound command handler */ - space.install_write_handler(0x7800, 0x7800, 0, 0x7ff, 0, write8_delegate(FUNC(galaxian_state::checkman_sound_command_w),this)); + space.install_write_handler(0x7800, 0x7800, 0, 0x7ff, 0, write8_delegate(*this, FUNC(galaxian_state::checkman_sound_command_w))); /* for the title screen */ - space.install_read_handler(0x3800, 0x3800, read8_delegate(FUNC(galaxian_state::checkmaj_protection_r),this)); + space.install_read_handler(0x3800, 0x3800, read8_delegate(*this, FUNC(galaxian_state::checkmaj_protection_r))); } @@ -7361,10 +7361,10 @@ void galaxian_state::init_dingo() common_init(&galaxian_state::galaxian_draw_bullet, &galaxian_state::galaxian_draw_background, nullptr, nullptr); /* attach the sound command handler */ - space.install_write_handler(0x7800, 0x7800, 0, 0x7ff, 0, write8_delegate(FUNC(galaxian_state::checkman_sound_command_w),this)); + space.install_write_handler(0x7800, 0x7800, 0, 0x7ff, 0, write8_delegate(*this, FUNC(galaxian_state::checkman_sound_command_w))); - space.install_read_handler(0x3000, 0x3000, read8_delegate(FUNC(galaxian_state::dingo_3000_r),this)); - space.install_read_handler(0x3035, 0x3035, read8_delegate(FUNC(galaxian_state::dingo_3035_r),this)); + space.install_read_handler(0x3000, 0x3000, read8_delegate(*this, FUNC(galaxian_state::dingo_3000_r))); + space.install_read_handler(0x3035, 0x3035, read8_delegate(*this, FUNC(galaxian_state::dingo_3035_r))); } @@ -7378,12 +7378,12 @@ void galaxian_state::init_dingoe() /* move the interrupt enable from $b000 to $b001 */ space.unmap_write(0xb000, 0xb000, 0x7f8); - space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::irq_enable_w),this)); + space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::irq_enable_w))); /* attach the sound command handler */ - iospace.install_write_handler(0x00, 0x00, 0, 0xffff, 0, write8_delegate(FUNC(galaxian_state::checkman_sound_command_w),this)); + iospace.install_write_handler(0x00, 0x00, 0, 0xffff, 0, write8_delegate(*this, FUNC(galaxian_state::checkman_sound_command_w))); - space.install_read_handler(0x3001, 0x3001, read8_delegate(FUNC(galaxian_state::dingoe_3001_r),this)); /* Protection check */ + space.install_read_handler(0x3001, 0x3001, read8_delegate(*this, FUNC(galaxian_state::dingoe_3001_r))); // Protection check /* decrypt program code */ decode_dingoe(); @@ -7533,10 +7533,10 @@ void galaxian_state::init_kingball() /* disable the stars */ space.unmap_write(0xb004, 0xb004, 0x7f8); - space.install_write_handler(0xb000, 0xb000, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::kingball_sound1_w),this)); - space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::irq_enable_w),this)); - space.install_write_handler(0xb002, 0xb002, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::kingball_sound2_w),this)); - space.install_write_handler(0xb003, 0xb003, 0, 0x7f8, 0, write8_delegate(FUNC(galaxian_state::kingball_speech_dip_w),this)); + space.install_write_handler(0xb000, 0xb000, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::kingball_sound1_w))); + space.install_write_handler(0xb001, 0xb001, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::irq_enable_w))); + space.install_write_handler(0xb002, 0xb002, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::kingball_sound2_w))); + space.install_write_handler(0xb003, 0xb003, 0, 0x7f8, 0, write8_delegate(*this, FUNC(galaxian_state::kingball_speech_dip_w))); save_item(NAME(m_kingball_speech_dip)); save_item(NAME(m_kingball_sound)); @@ -7581,7 +7581,7 @@ void galaxian_state::init_mandinga() address_space &space = m_maincpu->space(AS_PROGRAM); watchdog_timer_device *wdog = subdevice<watchdog_timer_device>("watchdog"); space.unmap_read(0x7000, 0x7000, 0x7ff); - space.install_read_handler(0x6800, 0x6800, 0, 0x7ff, 0, read8mo_delegate(FUNC(watchdog_timer_device::reset_r), wdog)); + space.install_read_handler(0x6800, 0x6800, 0, 0x7ff, 0, read8mo_delegate(*wdog, FUNC(watchdog_timer_device::reset_r))); } void galaxian_state::init_sfx() @@ -7606,7 +7606,7 @@ void galaxian_state::init_atlantis() /* watchdog is at $7800? (or is it just disabled?) */ watchdog_timer_device *wdog = subdevice<watchdog_timer_device>("watchdog"); space.unmap_read(0x7000, 0x77ff); - space.install_read_handler(0x7800, 0x7800, 0, 0x7ff, 0, read8mo_delegate(FUNC(watchdog_timer_device::reset_r), wdog)); + space.install_read_handler(0x7800, 0x7800, 0, 0x7ff, 0, read8mo_delegate(*wdog, FUNC(watchdog_timer_device::reset_r))); } diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp index aedf7042191..8d4b39b8500 100644 --- a/src/mame/drivers/galaxy.cpp +++ b/src/mame/drivers/galaxy.cpp @@ -197,7 +197,7 @@ void galaxy_state::galaxy(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME); /* snapshot */ - SNAPSHOT(config, "snapshot", "gal").set_load_callback(FUNC(galaxy_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "gal").set_load_callback(FUNC(galaxy_state::snapshot_cb)); SPEAKER(config, "mono").front_center(); @@ -236,7 +236,7 @@ void galaxy_state::galaxyp(machine_config &config) /* snapshot */ - SNAPSHOT(config, "snapshot", "gal").set_load_callback(FUNC(galaxy_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "gal").set_load_callback(FUNC(galaxy_state::snapshot_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp index a5223a52f74..0860d240162 100644 --- a/src/mame/drivers/galivan.cpp +++ b/src/mame/drivers/galivan.cpp @@ -1176,7 +1176,7 @@ WRITE8_MEMBER(galivan_state::youmab_86_w) void galivan_state::init_youmab() { - m_maincpu->space(AS_IO).install_write_handler(0x82, 0x82, write8_delegate(FUNC(galivan_state::youmab_extra_bank_w),this)); // banks rom at 0x8000? writes 0xff and 0x00 before executing code there + m_maincpu->space(AS_IO).install_write_handler(0x82, 0x82, write8_delegate(*this, FUNC(galivan_state::youmab_extra_bank_w))); // banks rom at 0x8000? writes 0xff and 0x00 before executing code there m_maincpu->space(AS_PROGRAM).install_read_bank(0x0000, 0x7fff, "bank3"); membank("bank3")->set_base(memregion("maincpu")->base()); @@ -1184,14 +1184,14 @@ void galivan_state::init_youmab() membank("bank2")->configure_entries(0, 2, memregion("user2")->base(), 0x4000); membank("bank2")->set_entry(0); - m_maincpu->space(AS_IO).install_write_handler(0x81, 0x81, write8_delegate(FUNC(galivan_state::youmab_81_w),this)); // ?? often, alternating values - m_maincpu->space(AS_IO).install_write_handler(0x84, 0x84, write8_delegate(FUNC(galivan_state::youmab_84_w),this)); // ?? often, sequence.. + m_maincpu->space(AS_IO).install_write_handler(0x81, 0x81, write8_delegate(*this, FUNC(galivan_state::youmab_81_w))); // ?? often, alternating values + m_maincpu->space(AS_IO).install_write_handler(0x84, 0x84, write8_delegate(*this, FUNC(galivan_state::youmab_84_w))); // ?? often, sequence.. m_maincpu->space(AS_PROGRAM).nop_write(0xd800, 0xd81f); // scrolling isn't here.. - m_maincpu->space(AS_IO).install_read_handler(0x8a, 0x8a, read8_delegate(FUNC(galivan_state::youmab_8a_r),this)); // ??? + m_maincpu->space(AS_IO).install_read_handler(0x8a, 0x8a, read8_delegate(*this, FUNC(galivan_state::youmab_8a_r))); // ??? - m_maincpu->space(AS_IO).install_write_handler(0x86, 0x86, write8_delegate(FUNC(galivan_state::youmab_86_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0x86, 0x86, write8_delegate(*this, FUNC(galivan_state::youmab_86_w))); } diff --git a/src/mame/drivers/gamecom.cpp b/src/mame/drivers/gamecom.cpp index 9869991add1..db8c9d155f6 100644 --- a/src/mame/drivers/gamecom.cpp +++ b/src/mame/drivers/gamecom.cpp @@ -292,8 +292,8 @@ void gamecom_state::gamecom(machine_config &config) vref.add_route(0, "dac1", 1.0, DAC_VREF_POS_INPUT); vref.add_route(0, "dac1", -1.0, DAC_VREF_NEG_INPUT); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot1", generic_linear_slot, "gamecom_cart", "bin,tgc").set_device_load(FUNC(gamecom_state::cart1_load), this); - GENERIC_CARTSLOT(config, "cartslot2", generic_linear_slot, "gamecom_cart", "bin,tgc").set_device_load(FUNC(gamecom_state::cart2_load), this); + GENERIC_CARTSLOT(config, "cartslot1", generic_linear_slot, "gamecom_cart", "bin,tgc").set_device_load(FUNC(gamecom_state::cart1_load)); + GENERIC_CARTSLOT(config, "cartslot2", generic_linear_slot, "gamecom_cart", "bin,tgc").set_device_load(FUNC(gamecom_state::cart2_load)); SOFTWARE_LIST(config, "cart_list").set_original("gamecom"); } diff --git a/src/mame/drivers/gamecstl.cpp b/src/mame/drivers/gamecstl.cpp index 947eaced689..325a78878b3 100644 --- a/src/mame/drivers/gamecstl.cpp +++ b/src/mame/drivers/gamecstl.cpp @@ -455,10 +455,8 @@ void gamecstl_state::gamecstl(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(gamecstl_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(gamecstl_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(gamecstl_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(gamecstl_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(gamecstl_state::intel82439tx_pci_r), FUNC(gamecstl_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(gamecstl_state::intel82371ab_pci_r), FUNC(gamecstl_state::intel82371ab_pci_w)); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/gameking.cpp b/src/mame/drivers/gameking.cpp index 65b222801b2..b1c1c2a4e77 100644 --- a/src/mame/drivers/gameking.cpp +++ b/src/mame/drivers/gameking.cpp @@ -304,7 +304,7 @@ void gameking_state::gameking(machine_config &config) PALETTE(config, m_palette, FUNC(gameking_state::gameking_palette), ARRAY_LENGTH(gameking_pens)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "gameking_cart", "bin").set_device_load(FUNC(gameking_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "gameking_cart", "bin").set_device_load(FUNC(gameking_state::cart_load)); } void gameking_state::gameking1(machine_config &config) diff --git a/src/mame/drivers/gba.cpp b/src/mame/drivers/gba.cpp index eb8e71d2e7d..95e05f76493 100644 --- a/src/mame/drivers/gba.cpp +++ b/src/mame/drivers/gba.cpp @@ -1344,8 +1344,8 @@ void gba_state::machine_start() membank("rom2")->set_base(cart_rom->base()); membank("rom3")->set_base(cart_rom->base()); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000c4, 0x80000cb, read32_delegate(FUNC(gba_cart_slot_device::read_gpio),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x80000c4, 0x80000cb, write32_delegate(FUNC(gba_cart_slot_device::write_gpio),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000c4, 0x80000cb, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_gpio))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x80000c4, 0x80000cb, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_gpio))); // add nvram to save state m_cart->save_nvram(); @@ -1353,40 +1353,40 @@ void gba_state::machine_start() // install the cart NVRAM handlers if necessary if (m_cart->get_type() == GBA_SRAM || m_cart->get_type() == GBA_DRILLDOZ || m_cart->get_type() == GBA_WARIOTWS) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe00ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe00ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe010000, 0xe01ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe010000, 0xe01ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe00ffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe00ffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe010000, 0xe01ffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe010000, 0xe01ffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); } if (m_cart->get_type() == GBA_EEPROM || m_cart->get_type() == GBA_EEPROM4 || m_cart->get_type() == GBA_EEPROM64 || m_cart->get_type() == GBA_BOKTAI) { // for games larger than 16MB the actual range is smaller but read_ram/write_ram handles that! - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000000, 0xdffffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000000, 0xdffffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000000, 0xdffffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000000, 0xdffffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); } if (m_cart->get_type() == GBA_YOSHIUG) { // EEPROM - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000000, 0xdffffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000000, 0xdffffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000000, 0xdffffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000000, 0xdffffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); // Tilt Sensor - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe008000, 0xe0085ff, read32_delegate(FUNC(gba_cart_slot_device::read_tilt),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe008000, 0xe0085ff, write32_delegate(FUNC(gba_cart_slot_device::write_tilt),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe008000, 0xe0085ff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_tilt))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe008000, 0xe0085ff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_tilt))); } // merge the two flash and mask accesses in read_ram?!? if (m_cart->get_type() == GBA_FLASH || m_cart->get_type() == GBA_FLASH512 || m_cart->get_type() == GBA_FLASH_RTC) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe00ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe00ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe00ffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe00ffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); } if (m_cart->get_type() == GBA_FLASH1M || m_cart->get_type() == GBA_FLASH1M_RTC) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe01ffff, read32_delegate(FUNC(gba_cart_slot_device::read_ram),(gba_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe01ffff, write32_delegate(FUNC(gba_cart_slot_device::write_ram),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe000000, 0xe01ffff, read32_delegate(*m_cart, FUNC(gba_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000000, 0xe01ffff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_ram))); } if (m_cart->get_type() == GBA_3DMATRIX) { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x08800000, 0x088001ff, write32_delegate(FUNC(gba_cart_slot_device::write_mapper),(gba_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x08800000, 0x088001ff, write32_delegate(*m_cart, FUNC(gba_cart_slot_device::write_mapper))); memory_region *cart_romhlp = memregion(region_tag.assign(m_cart->tag()).append(GBAHELP_ROM_REGION_TAG).c_str()); membank("rom1")->set_base(cart_romhlp->base()); } diff --git a/src/mame/drivers/gcpinbal.cpp b/src/mame/drivers/gcpinbal.cpp index 5fd6fb4c820..135cf88262e 100644 --- a/src/mame/drivers/gcpinbal.cpp +++ b/src/mame/drivers/gcpinbal.cpp @@ -376,7 +376,7 @@ void gcpinbal_state::gcpinbal(machine_config &config) EXCELLENT_SPRITE(config, m_sprgen, 0); m_sprgen->set_palette(m_palette); m_sprgen->set_color_base(0x600); - m_sprgen->set_colpri_callback(FUNC(gcpinbal_state::gcpinbal_colpri_cb), this); + m_sprgen->set_colpri_callback(FUNC(gcpinbal_state::gcpinbal_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/geniusiq.cpp b/src/mame/drivers/geniusiq.cpp index 75cd6a9638b..cf226d5a1fb 100644 --- a/src/mame/drivers/geniusiq.cpp +++ b/src/mame/drivers/geniusiq.cpp @@ -721,8 +721,8 @@ void geniusiq_state::iq128(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "iq128_cart")); - cartslot.set_device_load(FUNC(geniusiq_state::cart_load), this); - cartslot.set_device_unload(FUNC(geniusiq_state::cart_unload), this); + cartslot.set_device_load(FUNC(geniusiq_state::cart_load)); + cartslot.set_device_unload(FUNC(geniusiq_state::cart_unload)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("iq128"); diff --git a/src/mame/drivers/ghosteo.cpp b/src/mame/drivers/ghosteo.cpp index 6f9e166c67a..97485bbdee4 100644 --- a/src/mame/drivers/ghosteo.cpp +++ b/src/mame/drivers/ghosteo.cpp @@ -600,7 +600,7 @@ void ghosteo_state::machine_start() void ghosteo_state::machine_reset() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(FUNC(ghosteo_state::bballoon_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4d000010, 0x4d000013,read32_delegate(*this, FUNC(ghosteo_state::bballoon_speedup_r))); } void ghosteo_state::ghosteo(machine_config &config) diff --git a/src/mame/drivers/giclassic.cpp b/src/mame/drivers/giclassic.cpp index 8bc3c9928d9..4b2d80feafe 100644 --- a/src/mame/drivers/giclassic.cpp +++ b/src/mame/drivers/giclassic.cpp @@ -315,7 +315,7 @@ void giclassic_state::giclassic(machine_config &config) m_palette->enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(giclassic_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(giclassic_state::tile_callback)); m_k056832->set_config(K056832_BPP_4PIRATESH, 1, 0); m_k056832->set_palette(m_palette); } @@ -339,12 +339,12 @@ void giclassicsvr_state::giclassvr(machine_config &config) m_palette->enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(giclassicsvr_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(giclassicsvr_state::tile_callback)); m_k056832->set_config(K056832_BPP_4PIRATESH, 0, 0); m_k056832->set_palette(m_palette); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(giclassicsvr_state::sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(giclassicsvr_state::sprite_callback)); m_k055673->set_config(K055673_LAYOUT_PS, -60, 24); m_k055673->set_palette(m_palette); diff --git a/src/mame/drivers/gijoe.cpp b/src/mame/drivers/gijoe.cpp index 0248a66ece8..b2359cbdc59 100644 --- a/src/mame/drivers/gijoe.cpp +++ b/src/mame/drivers/gijoe.cpp @@ -316,12 +316,12 @@ void gijoe_state::gijoe(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(gijoe_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(gijoe_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette(m_palette); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(gijoe_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(gijoe_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, -37, 20); m_k053246->set_palette(m_palette); diff --git a/src/mame/drivers/gluck2.cpp b/src/mame/drivers/gluck2.cpp index 5a71b4e55c5..24e49608c8c 100644 --- a/src/mame/drivers/gluck2.cpp +++ b/src/mame/drivers/gluck2.cpp @@ -276,7 +276,7 @@ TILE_GET_INFO_MEMBER(gluck2_state::get_tile_info) void gluck2_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gluck2_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gluck2_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/gmaster.cpp b/src/mame/drivers/gmaster.cpp index 8de7f7992e8..50d263337ce 100644 --- a/src/mame/drivers/gmaster.cpp +++ b/src/mame/drivers/gmaster.cpp @@ -313,7 +313,7 @@ uint32_t gmaster_state::screen_update_gmaster(screen_device &screen, bitmap_ind1 void gmaster_state::machine_start() { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xfeff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xfeff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); save_item(NAME(m_video.data)); save_item(NAME(m_video.index)); diff --git a/src/mame/drivers/goldngam.cpp b/src/mame/drivers/goldngam.cpp index 8751597ffd0..e2eadc326b9 100644 --- a/src/mame/drivers/goldngam.cpp +++ b/src/mame/drivers/goldngam.cpp @@ -388,8 +388,8 @@ void goldngam_state::swisspkr_map(address_map &map) void goldngam_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff4, 0xfffff5).lr16("duart0 int", [this]() -> u16 { return m_duart[0]->get_irq_vector(); }); - map(0xfffff8, 0xfffff9).lr16("duart0 int", [this]() -> u16 { return m_duart[1]->get_irq_vector(); }); + map(0xfffff4, 0xfffff5).lr16(NAME([this] () -> u16 { return m_duart[0]->get_irq_vector(); })); + map(0xfffff8, 0xfffff9).lr16(NAME([this] () -> u16 { return m_duart[1]->get_irq_vector(); })); } void goldngam_state::moviecrd_map(address_map &map) diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 45008ba5ff6..3352d7a5067 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -1551,17 +1551,17 @@ TILE_GET_INFO_MEMBER(goldnpkr_state::super21p_get_bg_tile_info) void goldnpkr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldnpkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldnpkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } VIDEO_START_MEMBER(goldnpkr_state, wcrdxtnd) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldnpkr_state::wcrdxtnd_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldnpkr_state::wcrdxtnd_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } VIDEO_START_MEMBER(goldnpkr_state, super21p) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldnpkr_state::super21p_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldnpkr_state::super21p_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t goldnpkr_state::screen_update_goldnpkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/goldstar.cpp b/src/mame/drivers/goldstar.cpp index 615feca1e5f..e32c5826484 100644 --- a/src/mame/drivers/goldstar.cpp +++ b/src/mame/drivers/goldstar.cpp @@ -14435,7 +14435,7 @@ void cmaster_state::init_fb2010() ROM[0x10dc] = 0x00; ROM[0x10dd] = 0x00; - m_maincpu->space(AS_IO).install_read_handler(0x1e, 0x1e, read8_delegate(FUNC(cmaster_state::fixedval7d_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x1e, 0x1e, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x7d>))); } @@ -17278,8 +17278,8 @@ void cmaster_state::init_schery97() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x1d, 0x1d, read8_delegate(FUNC(cmaster_state::fixedvala8_r), this)); - m_maincpu->space(AS_IO).install_read_handler(0x2a, 0x2a, read8_delegate(FUNC(cmaster_state::fixedvalb4_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x1d, 0x1d, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xa8>))); + m_maincpu->space(AS_IO).install_read_handler(0x2a, 0x2a, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xb4>))); /* Oki 6295 at 0x20 */ } @@ -17301,7 +17301,7 @@ void cmaster_state::init_schery97a() } - m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, read8_delegate(FUNC(cmaster_state::fixedval38_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x38>))); /* Oki 6295 at 0x20 */ } @@ -17321,7 +17321,7 @@ void cmaster_state::init_skill98() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x1e, 0x1e, read8_delegate(FUNC(cmaster_state::fixedvalea_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x1e, 0x1e, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xea>))); /* Oki 6295 at 0x20 */ } @@ -17341,7 +17341,7 @@ void cmaster_state::init_nfb96_c1() } rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x31, 0x31, read8_delegate(FUNC(cmaster_state::fixedval68_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x31, 0x31, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x68>))); } @@ -17362,7 +17362,7 @@ void cmaster_state::init_nfb96_c2() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x21, 0x21, read8_delegate(FUNC(cmaster_state::fixedval58_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x21, 0x21, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x58>))); } void cmaster_state::init_nfb96_d() @@ -17382,11 +17382,11 @@ void cmaster_state::init_nfb96_d() rom[i] = x; } // nfb96b needs both of these - m_maincpu->space(AS_IO).install_read_handler(0x23, 0x23, read8_delegate(FUNC(cmaster_state::fixedval80_r), this)); - m_maincpu->space(AS_IO).install_read_handler(0x5a, 0x5a, read8_delegate(FUNC(cmaster_state::fixedvalaa_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x23, 0x23, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x80>))); + m_maincpu->space(AS_IO).install_read_handler(0x5a, 0x5a, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xaa>))); // csel96b - m_maincpu->space(AS_IO).install_read_handler(0x6e, 0x6e, read8_delegate(FUNC(cmaster_state::fixedval96_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x6e, 0x6e, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x96>))); } @@ -17407,7 +17407,7 @@ void cmaster_state::init_nfb96_dk() } rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x2e, 0x2e, read8_delegate(FUNC(cmaster_state::fixedvalbe_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x2e, 0x2e, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xbe>))); } @@ -17428,8 +17428,8 @@ void cmaster_state::init_rp35() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x5e, 0x5e, read8_delegate(FUNC(cmaster_state::fixedval84_r), this)); - m_maincpu->space(AS_IO).install_read_handler(0x36, 0x36, read8_delegate(FUNC(cmaster_state::fixedval90_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x5e, 0x5e, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x84>))); + m_maincpu->space(AS_IO).install_read_handler(0x36, 0x36, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x90>))); } void cmaster_state::init_rp36() @@ -17450,7 +17450,7 @@ void cmaster_state::init_rp36() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x34, 0x34, read8_delegate(FUNC(cmaster_state::fixedvalb2_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x34, 0x34, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xb2>))); } void cmaster_state::init_rp36c3() @@ -17471,7 +17471,7 @@ void cmaster_state::init_rp36c3() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x17, 0x17, read8_delegate(FUNC(cmaster_state::fixedval48_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x17, 0x17, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x48>))); } void cmaster_state::init_rp96sub() // 95 33 95 33 70 6C 70 6C... XORs and bitswaps seem ok. Stuck at Program Check screen. Unlike the other sets, there aren't unmapped reads where to put the handler. @@ -17492,7 +17492,7 @@ void cmaster_state::init_rp96sub() // 95 33 95 33 70 6C 70 6C... XORs and bitsw rom[i] = x; } -// m_maincpu->space(AS_IO).install_read_handler(0x34, 0x34, read8_delegate(FUNC(cmaster_state::fixedvalb2_r),this)); +// m_maincpu->space(AS_IO).install_read_handler(0x34, 0x34, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xb2>))); } @@ -17513,8 +17513,8 @@ void cmaster_state::init_po33() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x32, 0x32, read8_delegate(FUNC(cmaster_state::fixedval74_r), this)); - m_maincpu->space(AS_IO).install_read_handler(0x12, 0x12, read8_delegate(FUNC(cmaster_state::fixedval09_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x32, 0x32, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x74>))); + m_maincpu->space(AS_IO).install_read_handler(0x12, 0x12, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0x09>))); /* oki6295 at 0x20 */ } @@ -17537,8 +17537,8 @@ void cmaster_state::init_match133() rom[i] = x; } - m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, read8_delegate(FUNC(cmaster_state::fixedvalc7_r), this)); - m_maincpu->space(AS_IO).install_read_handler(0x1a, 0x1a, read8_delegate(FUNC(cmaster_state::fixedvale4_r), this)); + m_maincpu->space(AS_IO).install_read_handler(0x16, 0x16, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xc7>))); + m_maincpu->space(AS_IO).install_read_handler(0x1a, 0x1a, read8_delegate(*this, FUNC(cmaster_state::fixedval_r<0xe4>))); } diff --git a/src/mame/drivers/good.cpp b/src/mame/drivers/good.cpp index 6facf45265c..c0be11a803e 100644 --- a/src/mame/drivers/good.cpp +++ b/src/mame/drivers/good.cpp @@ -107,8 +107,8 @@ TILE_GET_INFO_MEMBER(good_state::get_bg_tile_info) void good_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(good_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(good_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(good_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(good_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_fg_tilemap->set_transparent_pen(0xf); } diff --git a/src/mame/drivers/goodejan.cpp b/src/mame/drivers/goodejan.cpp index 2c492468c14..2518d3465ad 100644 --- a/src/mame/drivers/goodejan.cpp +++ b/src/mame/drivers/goodejan.cpp @@ -366,10 +366,10 @@ void goodejan_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect void goodejan_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goodejan_state::seibucrtc_sc0_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goodejan_state::seibucrtc_sc2_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goodejan_state::seibucrtc_sc1_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goodejan_state::seibucrtc_sc3_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goodejan_state::seibucrtc_sc0_tile_info)), TILEMAP_SCAN_ROWS, 16,16,32,32); + m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goodejan_state::seibucrtc_sc2_tile_info)), TILEMAP_SCAN_ROWS, 16,16,32,32); + m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goodejan_state::seibucrtc_sc1_tile_info)), TILEMAP_SCAN_ROWS, 16,16,32,32); + m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goodejan_state::seibucrtc_sc3_tile_info)), TILEMAP_SCAN_ROWS, 8,8,32,32); m_sc2_tilemap->set_transparent_pen(15); m_sc1_tilemap->set_transparent_pen(15); @@ -477,13 +477,13 @@ void goodejan_state::totmejan_io_map(address_map &map) void goodejan_state::goodejan_io_map(address_map &map) { common_io_map(map); - map(0x8000, 0x807f).lrw16("crtc_rw", - [this](address_space &space, offs_t offset, u16 mem_mask) { + map(0x8000, 0x807f).lrw16( + NAME([this](address_space &space, offs_t offset, u16 mem_mask) { return m_crtc->read(space, offset ^ 0x20, mem_mask); - }, - [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { + }), + NAME([this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { m_crtc->write(space, offset ^ 0x20, data, mem_mask); - }); + })); } static INPUT_PORTS_START( goodejan ) diff --git a/src/mame/drivers/gottlieb.cpp b/src/mame/drivers/gottlieb.cpp index 36e019f721c..2270b468c7b 100644 --- a/src/mame/drivers/gottlieb.cpp +++ b/src/mame/drivers/gottlieb.cpp @@ -233,9 +233,9 @@ void gottlieb_state::machine_start() if (m_laserdisc != nullptr) { /* attach to the I/O ports */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x05805, 0x05807, 0, 0x07f8, 0, read8_delegate(FUNC(gottlieb_state::laserdisc_status_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x05805, 0x05805, 0, 0x07f8, 0, write8_delegate(FUNC(gottlieb_state::laserdisc_command_w),this)); /* command for the player */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x05806, 0x05806, 0, 0x07f8, 0, write8_delegate(FUNC(gottlieb_state::laserdisc_select_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x05805, 0x05807, 0, 0x07f8, 0, read8_delegate(*this, FUNC(gottlieb_state::laserdisc_status_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x05805, 0x05805, 0, 0x07f8, 0, write8_delegate(*this, FUNC(gottlieb_state::laserdisc_command_w))); /* command for the player */ + m_maincpu->space(AS_PROGRAM).install_write_handler(0x05806, 0x05806, 0, 0x07f8, 0, write8_delegate(*this, FUNC(gottlieb_state::laserdisc_select_w))); /* allocate a timer for serial transmission, and one for philips code processing */ m_laserdisc_bit_timer = timer_alloc(TIMER_LASERDISC_BIT); @@ -1797,7 +1797,7 @@ void gottlieb_state::g2laser(machine_config &config) GOTTLIEB_SOUND_REV2(config, m_r2_sound, 0).add_route(ALL_OUTPUTS, "speaker", 1.0); PIONEER_PR8210(config, m_laserdisc, 0); - m_laserdisc->set_audio(FUNC(gottlieb_state::laserdisc_audio_process), this); + m_laserdisc->set_audio(FUNC(gottlieb_state::laserdisc_audio_process)); m_laserdisc->set_overlay(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, FUNC(gottlieb_state::screen_update)); m_laserdisc->set_overlay_clip(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8); m_laserdisc->add_route(0, "speaker", 1.0); @@ -1862,7 +1862,7 @@ void gottlieb_state::cobram3(machine_config &config) m_r2_sound->enable_cobram3_mods(); PIONEER_PR8210(config, m_laserdisc, 0); - m_laserdisc->set_audio(FUNC(gottlieb_state::laserdisc_audio_process), this); + m_laserdisc->set_audio(FUNC(gottlieb_state::laserdisc_audio_process)); m_laserdisc->set_overlay(GOTTLIEB_VIDEO_HCOUNT, GOTTLIEB_VIDEO_VCOUNT, FUNC(gottlieb_state::screen_update)); m_laserdisc->set_overlay_clip(0, GOTTLIEB_VIDEO_HBLANK-1, 0, GOTTLIEB_VIDEO_VBLANK-8); m_laserdisc->add_route(0, "speaker", 1.0); @@ -2599,21 +2599,21 @@ void gottlieb_state::init_romtiles() void gottlieb_state::init_qbert() { init_romtiles(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(FUNC(gottlieb_state::qbert_output_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(*this, FUNC(gottlieb_state::qbert_output_w))); } void gottlieb_state::init_qbertqub() { init_romtiles(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(FUNC(gottlieb_state::qbertqub_output_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(*this, FUNC(gottlieb_state::qbertqub_output_w))); } void gottlieb_state::init_stooges() { init_ramtiles(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(FUNC(gottlieb_state::stooges_output_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5803, 0x5803, 0, 0x07f8, 0, write8_delegate(*this, FUNC(gottlieb_state::stooges_output_w))); } diff --git a/src/mame/drivers/goupil.cpp b/src/mame/drivers/goupil.cpp index fdc0a5e924e..21564d60cd5 100644 --- a/src/mame/drivers/goupil.cpp +++ b/src/mame/drivers/goupil.cpp @@ -602,8 +602,8 @@ void goupil_g2_state::goupil_g2(machine_config &config) mc6845_device &crtc(MC6845(config, "crtc", 14.318181_MHz_XTAL / 8)); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(goupil_g2_state::crtc_update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(goupil_g2_state::crtc_update_addr_changed), this); + crtc.set_update_row_callback(FUNC(goupil_g2_state::crtc_update_row)); + crtc.set_on_update_addr_change_callback(FUNC(goupil_g2_state::crtc_update_addr_changed)); m_via_video->writepa_handler().set_nop(); m_via_video->writepb_handler().set_nop(); diff --git a/src/mame/drivers/gradius3.cpp b/src/mame/drivers/gradius3.cpp index d7eb5ece4de..e2d4a955b6f 100644 --- a/src/mame/drivers/gradius3.cpp +++ b/src/mame/drivers/gradius3.cpp @@ -290,13 +290,13 @@ void gradius3_state::gradius3(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(gradius3_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(gradius3_state::tile_callback)); m_k052109->set_char_ram(true); K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(gradius3_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(gradius3_state::sprite_callback)); m_k051960->set_plane_order(K051960_PLANEORDER_GRADIUS3); /* sound hardware */ diff --git a/src/mame/drivers/gridlee.cpp b/src/mame/drivers/gridlee.cpp index d2f75fdb74a..2b9feaf3fb2 100644 --- a/src/mame/drivers/gridlee.cpp +++ b/src/mame/drivers/gridlee.cpp @@ -289,7 +289,7 @@ void gridlee_state::cpu1_map(address_map &map) { map(0x0000, 0x07ff).ram().share("spriteram"); map(0x0800, 0x7fff).ram().w(FUNC(gridlee_state::gridlee_videoram_w)).share("videoram"); - map(0x9000, 0x9000).select(0x0070).lw8("latch_w", [this](offs_t offset, u8 data) { m_latch->write_d0(offset >> 4, data); }); + map(0x9000, 0x9000).select(0x0070).lw8(NAME([this] (offs_t offset, u8 data) { m_latch->write_d0(offset >> 4, data); })); map(0x9200, 0x9200).w(FUNC(gridlee_state::gridlee_palette_select_w)); map(0x9380, 0x9380).w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0x9500, 0x9501).r(FUNC(gridlee_state::analog_port_r)); diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp index f6dc60eea9c..4623f2d03bc 100644 --- a/src/mame/drivers/groundfx.cpp +++ b/src/mame/drivers/groundfx.cpp @@ -328,7 +328,7 @@ READ32_MEMBER(groundfx_state::irq_speedup_r) void groundfx_state::init_groundfx() { /* Speedup handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(*this, FUNC(groundfx_state::irq_speedup_r))); } diff --git a/src/mame/drivers/gstream.cpp b/src/mame/drivers/gstream.cpp index 73fc65c96e7..59f07382859 100644 --- a/src/mame/drivers/gstream.cpp +++ b/src/mame/drivers/gstream.cpp @@ -1088,7 +1088,7 @@ READ32_MEMBER(gstream_state::x2222_speedup2_r) void gstream_state::init_gstream() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd1ee0, 0xd1ee3, read32_delegate(FUNC(gstream_state::gstream_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd1ee0, 0xd1ee3, read32_delegate(*this, FUNC(gstream_state::gstream_speedup_r))); m_xoffset = 2; } @@ -1116,8 +1116,8 @@ void gstream_state::rearrange_sprite_data(uint8_t* ROM, uint32_t* NEW, uint32_t* void gstream_state::init_x2222() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x7ffac, 0x7ffaf, read32_delegate(FUNC(gstream_state::x2222_speedup_r), this)); // older - m_maincpu->space(AS_PROGRAM).install_read_handler(0x84e3c, 0x84e3f, read32_delegate(FUNC(gstream_state::x2222_speedup2_r), this)); // newer + m_maincpu->space(AS_PROGRAM).install_read_handler(0x7ffac, 0x7ffaf, read32_delegate(*this, FUNC(gstream_state::x2222_speedup_r))); // older + m_maincpu->space(AS_PROGRAM).install_read_handler(0x84e3c, 0x84e3f, read32_delegate(*this, FUNC(gstream_state::x2222_speedup2_r))); // newer rearrange_sprite_data(memregion("sprites")->base(), (uint32_t*)memregion("gfx1")->base(), (uint32_t*)memregion("gfx1_lower")->base() ); rearrange_tile_data(memregion("bg1")->base(), (uint32_t*)memregion("gfx2")->base(), (uint32_t*)memregion("gfx2_lower")->base()); diff --git a/src/mame/drivers/gstriker.cpp b/src/mame/drivers/gstriker.cpp index 5e4a5dc3849..996dc8b0406 100644 --- a/src/mame/drivers/gstriker.cpp +++ b/src/mame/drivers/gstriker.cpp @@ -853,8 +853,8 @@ the zooming.To use it,you should use Player 2 Start button to show the test scre or to advance into the tests. ******************************************************************************************/ #define PC(_num_)\ -m_work_ram[0x000/2] = (_num_ & 0xffff0000) >> 16;\ -m_work_ram[0x002/2] = (_num_ & 0x0000ffff) >> 0; + m_work_ram[0x000/2] = (_num_ & 0xffff0000) >> 16;\ + m_work_ram[0x002/2] = (_num_ & 0x0000ffff) >> 0; WRITE8_MEMBER(gstriker_state::twcup94_prot_reg_w) @@ -1103,8 +1103,8 @@ void gstriker_state::init_vgoalsoc() m_gametype = VGOAL_SOCCER_MCU; mcu_init(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x200090, 0x200091, write16_delegate(FUNC(gstriker_state::vbl_toggle_w),this)); // vblank toggle - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200090, 0x200091, read16_delegate(FUNC(gstriker_state::vbl_toggle_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x200090, 0x200091, write16_delegate(*this, FUNC(gstriker_state::vbl_toggle_w))); // vblank toggle + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200090, 0x200091, read16_delegate(*this, FUNC(gstriker_state::vbl_toggle_r))); } /*** GAME DRIVERS ************************************************************/ diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp index f26dfcf0071..33a00ef862d 100644 --- a/src/mame/drivers/gsword.cpp +++ b/src/mame/drivers/gsword.cpp @@ -436,7 +436,7 @@ void gsword_state::init_gsword() #endif #if 1 /* hack for sound protection or time out function */ - m_subcpu->space(AS_PROGRAM).install_read_handler(0x4004, 0x4005, read8_delegate(FUNC(gsword_state::hack_r),this)); + m_subcpu->space(AS_PROGRAM).install_read_handler(0x4004, 0x4005, read8_delegate(*this, FUNC(gsword_state::hack_r))); #endif } @@ -451,7 +451,7 @@ void gsword_state::init_gsword2() #endif #if 1 /* hack for sound protection or time out function */ - m_subcpu->space(AS_PROGRAM).install_read_handler(0x4004, 0x4005, read8_delegate(FUNC(gsword_state::hack_r),this)); + m_subcpu->space(AS_PROGRAM).install_read_handler(0x4004, 0x4005, read8_delegate(*this, FUNC(gsword_state::hack_r))); #endif } diff --git a/src/mame/drivers/gts3a.cpp b/src/mame/drivers/gts3a.cpp index 3b4a40f1709..18fc260f997 100644 --- a/src/mame/drivers/gts3a.cpp +++ b/src/mame/drivers/gts3a.cpp @@ -367,7 +367,7 @@ void gts3a_state::gts3a(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(gts3a_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(gts3a_state::crtc_update_row)); /* Sound */ genpin_audio(config); diff --git a/src/mame/drivers/gunbustr.cpp b/src/mame/drivers/gunbustr.cpp index 4b425dda742..1f2c9ed4d83 100644 --- a/src/mame/drivers/gunbustr.cpp +++ b/src/mame/drivers/gunbustr.cpp @@ -373,7 +373,7 @@ READ32_MEMBER(gunbustr_state::main_cycle_r) void gunbustr_state::init_gunbustr() { /* Speedup handler */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x203acc, 0x203acf, read32_delegate(FUNC(gunbustr_state::main_cycle_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x203acc, 0x203acf, read32_delegate(*this, FUNC(gunbustr_state::main_cycle_r))); m_interrupt5_timer = timer_alloc(TIMER_GUNBUSTR_INTERRUPT5); } diff --git a/src/mame/drivers/h19.cpp b/src/mame/drivers/h19.cpp index bd431361b89..4f6f6e3a36c 100644 --- a/src/mame/drivers/h19.cpp +++ b/src/mame/drivers/h19.cpp @@ -541,7 +541,7 @@ void h19_state::h19(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(h19_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(h19_state::crtc_update_row)); m_crtc->out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); // frame pulse ins8250_device &uart(INS8250(config, "ins8250", INS8250_CLOCK)); diff --git a/src/mame/drivers/h89.cpp b/src/mame/drivers/h89.cpp index 43851788c4e..f82be5e850c 100644 --- a/src/mame/drivers/h89.cpp +++ b/src/mame/drivers/h89.cpp @@ -31,8 +31,8 @@ class h89_state : public driver_device { public: h89_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") { } @@ -199,7 +199,7 @@ void h89_state::h89(machine_config & config) rs232.rxd_handler().set("ins8250", FUNC(ins8250_uart_device::rx_w)); rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); - TIMER(config, "irq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(h89_state::h89_irq_timer), this), attotime::from_hz(100)); + TIMER(config, "irq_timer", 0).configure_periodic(FUNC(h89_state::h89_irq_timer), attotime::from_hz(100)); } /* ROM definition */ diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp index 27624425f38..ead95b0f795 100644 --- a/src/mame/drivers/harddriv.cpp +++ b/src/mame/drivers/harddriv.cpp @@ -4714,14 +4714,14 @@ void harddriv_state::init_multisync(int compact_inputs) // if we have a JSA board, install the read/write handlers if (m_jsa.found()) - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x600000, 0x603fff, read8_delegate(FUNC(atari_jsa_base_device::main_response_r),m_jsa.target()), write8_delegate(FUNC(atari_jsa_base_device::main_command_w),m_jsa.target()), 0xff00); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x600000, 0x603fff, read8_delegate(*m_jsa, FUNC(atari_jsa_base_device::main_response_r)), write8_delegate(*m_jsa, FUNC(atari_jsa_base_device::main_command_w)), 0xff00); /* install handlers for the compact driving games' inputs */ if (compact_inputs) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x400000, 0x400001, read16_delegate(FUNC(harddriv_state::hdc68k_wheel_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x408000, 0x408001, write16_delegate(FUNC(harddriv_state::hdc68k_wheel_edge_reset_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hdc68k_port1_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x400000, 0x400001, read16_delegate(*this, FUNC(harddriv_state::hdc68k_wheel_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x408000, 0x408001, write16_delegate(*this, FUNC(harddriv_state::hdc68k_wheel_edge_reset_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(*this, FUNC(harddriv_state::hdc68k_port1_r))); } } @@ -4730,18 +4730,18 @@ void harddriv_state::init_multisync(int compact_inputs) void harddriv_state::init_adsp() { /* install ADSP program RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0x807fff, read16_delegate(FUNC(harddriv_state::hd68k_adsp_program_r), this), write16_delegate(FUNC(harddriv_state::hd68k_adsp_program_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0x807fff, read16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_program_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_program_w))); /* install ADSP data RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x808000, 0x80bfff, read16_delegate(FUNC(harddriv_state::hd68k_adsp_data_r), this), write16_delegate(FUNC(harddriv_state::hd68k_adsp_data_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x808000, 0x80bfff, read16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_data_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_data_w))); /* install ADSP serial buffer RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x813fff, read16_delegate(FUNC(harddriv_state::hd68k_adsp_buffer_r), this), write16_delegate(FUNC(harddriv_state::hd68k_adsp_buffer_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x813fff, read16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_buffer_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_buffer_w))); /* install ADSP control locations */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x818000, 0x81801f, write16_delegate(FUNC(harddriv_state::hd68k_adsp_control_w), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x818060, 0x81807f, write16_delegate(FUNC(harddriv_state::hd68k_adsp_irq_clear_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x838000, 0x83ffff, read16_delegate(FUNC(harddriv_state::hd68k_adsp_irq_state_r), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x818000, 0x81801f, write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_control_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x818060, 0x81807f, write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_irq_clear_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x838000, 0x83ffff, read16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_irq_state_r))); } @@ -4749,23 +4749,23 @@ void harddriv_state::init_adsp() void harddriv_state::init_ds3() { /* install ADSP program RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0x807fff, read16_delegate(FUNC(harddriv_state::hd68k_ds3_program_r), this), write16_delegate(FUNC(harddriv_state::hd68k_ds3_program_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0x807fff, read16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_program_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_program_w))); /* install ADSP data RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x808000, 0x80bfff, read16_delegate(FUNC(harddriv_state::hd68k_adsp_data_r), this), write16_delegate(FUNC(harddriv_state::hd68k_adsp_data_w), this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x80c000, 0x80dfff, read16_delegate(FUNC(harddriv_state::hdds3_special_r), this), write16_delegate(FUNC(harddriv_state::hdds3_special_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x808000, 0x80bfff, read16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_data_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x80c000, 0x80dfff, read16_delegate(*this, FUNC(harddriv_state::hdds3_special_r)), write16_delegate(*this, FUNC(harddriv_state::hdds3_special_w))); /* install ADSP control locations */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x820000, 0x8207ff, read16_delegate(FUNC(harddriv_state::hd68k_ds3_gdata_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x820800, 0x820fff, read16_delegate(FUNC(harddriv_state::hd68k_ds3_girq_state_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x820000, 0x8207ff, write16_delegate(FUNC(harddriv_state::hd68k_ds3_gdata_w), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x821000, 0x8217ff, write16_delegate(FUNC(harddriv_state::hd68k_adsp_irq_clear_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x820000, 0x8207ff, read16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_gdata_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x820800, 0x820fff, read16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_girq_state_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x820000, 0x8207ff, write16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_gdata_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x821000, 0x8217ff, write16_delegate(*this, FUNC(harddriv_state::hd68k_adsp_irq_clear_w))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x822000, 0x8227ff, read16_delegate(FUNC(harddriv_state::hd68k_ds3_sdata_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x822800, 0x822fff, read16_delegate(FUNC(harddriv_state::hd68k_ds3_sirq_state_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x822000, 0x8227ff, write16_delegate(FUNC(harddriv_state::hd68k_ds3_sdata_w), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x823000, 0x8237ff, write16_delegate(FUNC(harddriv_state::hd68k_ds3_sirq_clear_w), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x823800, 0x823fff, write16_delegate(FUNC(harddriv_state::hd68k_ds3_control_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x822000, 0x8227ff, read16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_sdata_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x822800, 0x822fff, read16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_sirq_state_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x822000, 0x8227ff, write16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_sdata_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x823000, 0x8237ff, write16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_sirq_clear_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x823800, 0x823fff, write16_delegate(*this, FUNC(harddriv_state::hd68k_ds3_control_w))); /* predetermine memory regions, can't use a region_ptr because strtdriv expects uint8_t while hdrivair expects uint16_t, also need to check if region exists for steeltal*/ if (memregion("ds3sdsp_data") != nullptr) @@ -4848,26 +4848,26 @@ void harddriv_state::init_dsk() uint8_t *usr3 = memregion("user3")->base(); /* install ASIC61 */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x85c000, 0x85c7ff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x85c000, 0x85c7ff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_dsp32_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_dsp32_w))); /* install control registers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x85c800, 0x85c81f, write16_delegate(FUNC(harddriv_state::hd68k_dsk_control_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x85c800, 0x85c81f, write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_control_w))); /* install extra RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x900000, 0x90ffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_ram_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_ram_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x900000, 0x90ffff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_ram_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_ram_w))); m_dsk_ram = (uint16_t *)(usr3 + 0x40000); /* install extra ZRAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x910000, 0x910fff, read8_delegate(FUNC(eeprom_parallel_28xx_device::read), m_dsk_10c.target()), write8_delegate(FUNC(eeprom_parallel_28xx_device::write), m_dsk_10c.target()), 0xff00); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x910000, 0x910fff, read8_delegate(FUNC(eeprom_parallel_28xx_device::read), m_dsk_30c.target()), write8_delegate(FUNC(eeprom_parallel_28xx_device::write), m_dsk_30c.target()), 0x00ff); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x910000, 0x910fff, read8_delegate(*m_dsk_10c, FUNC(eeprom_parallel_28xx_device::read)), write8_delegate(*m_dsk_10c, FUNC(eeprom_parallel_28xx_device::write)), 0xff00); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x910000, 0x910fff, read8_delegate(*m_dsk_30c, FUNC(eeprom_parallel_28xx_device::read)), write8_delegate(*m_dsk_30c, FUNC(eeprom_parallel_28xx_device::write)), 0x00ff); /* install ASIC65 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x914000, 0x917fff, write16sm_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x914000, 0x917fff, read16smo_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x918000, 0x91bfff, read16smo_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x914000, 0x917fff, write16sm_delegate(*m_asic65, FUNC(asic65_device::data_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x914000, 0x917fff, read16smo_delegate(*m_asic65, FUNC(asic65_device::read))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x918000, 0x91bfff, read16smo_delegate(*m_asic65, FUNC(asic65_device::io_r))); /* install extra ROM */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x940000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_small_rom_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x940000, 0x9fffff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_small_rom_r))); m_dsk_rom = (uint16_t *)(usr3 + 0x00000); } @@ -4878,22 +4878,22 @@ void harddriv_state::init_dsk2() uint8_t *usr3 = memregion("user3")->base(); /* install ASIC65 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x824000, 0x824003, write16sm_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x824000, 0x824003, read16smo_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x825000, 0x825001, read16smo_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x824000, 0x824003, write16sm_delegate(*m_asic65, FUNC(asic65_device::data_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x824000, 0x824003, read16smo_delegate(*m_asic65, FUNC(asic65_device::read))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x825000, 0x825001, read16smo_delegate(*m_asic65, FUNC(asic65_device::io_r))); /* install ASIC61 */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x827000, 0x8277ff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_dsp32_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x827000, 0x8277ff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_dsp32_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_dsp32_w))); /* install control registers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x827800, 0x82781f, write16_delegate(FUNC(harddriv_state::hd68k_dsk_control_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x827800, 0x82781f, write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_control_w))); /* install extra RAM */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x880000, 0x8bffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_ram_r), this), write16_delegate(FUNC(harddriv_state::hd68k_dsk_ram_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x880000, 0x8bffff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_ram_r)), write16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_ram_w))); m_dsk_ram = (uint16_t *)(usr3 + 0x100000); /* install extra ROM */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x9fffff, read16_delegate(FUNC(harddriv_state::hd68k_dsk_rom_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x9fffff, read16_delegate(*this, FUNC(harddriv_state::hd68k_dsk_rom_r))); m_dsk_rom = (uint16_t *)(usr3 + 0x000000); } @@ -4901,13 +4901,13 @@ void harddriv_state::init_dsk2() /* COMMON INIT: initialize the DSPCOM add-on board */ void harddriv_state::init_dspcom() { - /* install ASIC65 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x900000, 0x900003, write16sm_delegate(FUNC(asic65_device::data_w), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x900003, read16smo_delegate(FUNC(asic65_device::read), (asic65_device*)m_asic65)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x901000, 0x910001, read16smo_delegate(FUNC(asic65_device::io_r), (asic65_device*)m_asic65)); + /* install ASIC65 */ + m_maincpu->space(AS_PROGRAM).install_write_handler(0x900000, 0x900003, write16sm_delegate(*m_asic65, FUNC(asic65_device::data_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x900000, 0x900003, read16smo_delegate(*m_asic65, FUNC(asic65_device::read))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x901000, 0x910001, read16smo_delegate(*m_asic65, FUNC(asic65_device::io_r))); /* install DSPCOM control */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x904000, 0x90401f, write16_delegate(FUNC(harddriv_state::hddspcom_control_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x904000, 0x90401f, write16_delegate(*this, FUNC(harddriv_state::hddspcom_control_w))); } @@ -4915,9 +4915,9 @@ void harddriv_state::init_dspcom() void harddriv_state::init_driver_sound() { /* install sound handlers */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x840000, 0x840001, read16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_data_r), (harddriv_sound_board_device*)m_harddriv_sound), write16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_data_w), (harddriv_sound_board_device*)m_harddriv_sound)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x844000, 0x844001, read16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_status_r), (harddriv_sound_board_device*)m_harddriv_sound)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x84c000, 0x84c001, write16_delegate(FUNC(harddriv_sound_board_device::hd68k_snd_reset_w), (harddriv_sound_board_device*)m_harddriv_sound)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x840000, 0x840001, read16_delegate(*m_harddriv_sound, FUNC(harddriv_sound_board_device::hd68k_snd_data_r)), write16_delegate(*m_harddriv_sound, FUNC(harddriv_sound_board_device::hd68k_snd_data_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x844000, 0x844001, read16_delegate(*m_harddriv_sound, FUNC(harddriv_sound_board_device::hd68k_snd_status_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x84c000, 0x84c001, write16_delegate(*m_harddriv_sound, FUNC(harddriv_sound_board_device::hd68k_snd_reset_w))); } @@ -4929,7 +4929,7 @@ void harddriv_state::init_driver_sound() * *************************************/ -void harddriv_state::init_harddriv(void) +void harddriv_state::init_harddriv() { /* initialize the boards */ init_driver(); @@ -4937,25 +4937,25 @@ void harddriv_state::init_harddriv(void) init_driver_sound(); /* set up gsp speedup handler */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup1_w), this)); - m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup2_w), this)); - m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(FUNC(harddriv_state::hdgsp_speedup_r), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup1_w))); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup2_w))); + m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup_r))); m_gsp_speedup_pc = 0xffc00f10; m_gsp_speedup_addr[0] = (uint16_t *)(m_gsp_vram + ((0xfff9fc00 - 0xff800000) >> 3)); // Addresses are in bits. Really. m_gsp_speedup_addr[1] = (uint16_t *)(m_gsp_vram + ((0xfffcfc00 - 0xff800000) >> 3)); /* set up msp speedup handler */ - m_msp->space(AS_PROGRAM).install_write_handler(0x00751b00, 0x00751b0f, write16_delegate(FUNC(harddriv_state::hdmsp_speedup_w), this)); - m_msp->space(AS_PROGRAM).install_read_handler(0x00751b00, 0x00751b0f, read16_delegate(FUNC(harddriv_state::hdmsp_speedup_r), this)); + m_msp->space(AS_PROGRAM).install_write_handler(0x00751b00, 0x00751b0f, write16_delegate(*this, FUNC(harddriv_state::hdmsp_speedup_w))); + m_msp->space(AS_PROGRAM).install_read_handler(0x00751b00, 0x00751b0f, read16_delegate(*this, FUNC(harddriv_state::hdmsp_speedup_r))); m_msp_speedup_pc = 0x00723b00; m_msp_speedup_addr = m_msp_ram + ((0x751b00 - 0x700000) >> 4); // Address in bits, plus uint16_t * /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } -void harddriv_state::init_harddrivc(void) +void harddriv_state::init_harddrivc() { /* initialize the boards */ init_multisync(1); @@ -4963,44 +4963,44 @@ void harddriv_state::init_harddrivc(void) init_driver_sound(); /* set up gsp speedup handler */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup1_w), this)); - m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup2_w), this)); - m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(FUNC(harddriv_state::hdgsp_speedup_r), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup1_w))); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup2_w))); + m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup_r))); m_gsp_speedup_pc = 0xfff40ff0; m_gsp_speedup_addr[0] = (uint16_t *)(m_gsp_vram + ((0xfff9fc00 - 0xffc00000) >> 3)); // Addresses are in bits. Really. m_gsp_speedup_addr[1] = (uint16_t *)(m_gsp_vram + ((0xfffcfc00 - 0xffc00000) >> 3)); /* set up msp speedup handler */ - m_msp->space(AS_PROGRAM).install_write_handler(0x00751b00, 0x00751b0f, write16_delegate(FUNC(harddriv_state::hdmsp_speedup_w), this)); - m_msp->space(AS_PROGRAM).install_read_handler(0x00751b00, 0x00751b0f, read16_delegate(FUNC(harddriv_state::hdmsp_speedup_r), this)); + m_msp->space(AS_PROGRAM).install_write_handler(0x00751b00, 0x00751b0f, write16_delegate(*this, FUNC(harddriv_state::hdmsp_speedup_w))); + m_msp->space(AS_PROGRAM).install_read_handler(0x00751b00, 0x00751b0f, read16_delegate(*this, FUNC(harddriv_state::hdmsp_speedup_r))); m_msp_speedup_pc = 0x00723b00; m_msp_speedup_addr = m_msp_ram + ((0x751b00 - 0x700000) >> 4); // Address in bits, plus uint16_t * /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } -void harddriv_state::init_stunrun(void) +void harddriv_state::init_stunrun() { /* initialize the boards */ init_multisync(0); init_adsp(); /* set up gsp speedup handler */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup1_w), this)); - m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(FUNC(harddriv_state::hdgsp_speedup2_w), this)); - m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(FUNC(harddriv_state::hdgsp_speedup_r), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff9fc00, 0xfff9fc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup1_w))); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfffcfc00, 0xfffcfc0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup2_w))); + m_gsp->space(AS_PROGRAM).install_read_handler(0xfff9fc00, 0xfff9fc0f, read16_delegate(*this, FUNC(harddriv_state::hdgsp_speedup_r))); m_gsp_speedup_pc = 0xfff41070; m_gsp_speedup_addr[0] = (uint16_t *)(m_gsp_vram + ((0xfff9fc00 - 0xffc00000) >> 3)); // Addresses are in bits. Really. m_gsp_speedup_addr[1] = (uint16_t *)(m_gsp_vram + ((0xfffcfc00 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } -void harddriv_state::init_racedriv(void) +void harddriv_state::init_racedriv() { /* initialize the boards */ init_driver(); @@ -5010,17 +5010,17 @@ void harddriv_state::init_racedriv(void) /* set up the slapstic */ m_slapstic_device->slapstic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_r)), write16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_w))); m_m68k_slapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0xe0000); /* synchronization */ - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this)); - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this)); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync0_w))); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync1_w))); m_rddsp32_sync[0] = m_dsp32_ram + ((0x613c00 - 0x600000) >> 2); m_rddsp32_sync[1] = m_dsp32_ram + ((0x613e00 - 0x600000) >> 2); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } @@ -5035,31 +5035,31 @@ void harddriv_state::racedrivc_init_common(offs_t gsp_protection) /* set up the slapstic */ m_slapstic_device->slapstic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_r)), write16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_w))); m_m68k_slapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0xe0000); /* synchronization */ - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this)); - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this)); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync0_w))); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync1_w))); m_rddsp32_sync[0] = m_dsp32_ram + ((0x613c00 - 0x600000) >> 2); m_rddsp32_sync[1] = m_dsp32_ram + ((0x613e00 - 0x600000) >> 2); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((gsp_protection - 0xffc00000) >> 3)); /* set up gsp speedup handler */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(FUNC(harddriv_state::rdgsp_speedup1_w), this)); - m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(FUNC(harddriv_state::rdgsp_speedup1_r), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(*this, FUNC(harddriv_state::rdgsp_speedup1_w))); + m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(*this, FUNC(harddriv_state::rdgsp_speedup1_r))); m_gsp_speedup_pc = 0xfff43a00; m_gsp_speedup_addr[0] = (uint16_t *)(m_gsp_vram + ((0xfff76f60 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } -void harddriv_state::init_racedrivc(void) { racedrivc_init_common(0xfff95cd0); } -void harddriv_state::init_racedrivc1(void) { racedrivc_init_common(0xfff7ecd0); } +void harddriv_state::init_racedrivc() { racedrivc_init_common(0xfff95cd0); } +void harddriv_state::init_racedrivc1() { racedrivc_init_common(0xfff7ecd0); } void harddriv_state::init_racedrivc_panorama_side() { @@ -5070,30 +5070,30 @@ void harddriv_state::init_racedrivc_panorama_side() /* set up the slapstic */ m_slapstic_device->slapstic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_r)), write16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_w))); m_m68k_slapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0xe0000); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(gsp_protection, gsp_protection + 0x0f, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((gsp_protection - 0xffc00000) >> 3)); /* set up gsp speedup handler (todo, work these out) */ -// m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(FUNC(harddriv_state::rdgsp_speedup1_w), this)); -// m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(FUNC(harddriv_state::rdgsp_speedup1_r), this)); +// m_gsp->space(AS_PROGRAM).install_write_handler(0xfff76f60, 0xfff76f6f, write16_delegate(*this, FUNC(harddriv_state::rdgsp_speedup1_w))); +// m_gsp->space(AS_PROGRAM).install_read_handler(0xfff76f60, 0xfff76f6f, read16_delegate(*this, FUNC(harddriv_state::rdgsp_speedup1_r))); // m_gsp_speedup_pc = 0xfff43a00; // m_gsp_speedup_addr[0] = (uint16_t *)(m_gsp_vram + ((0xfff76f60 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); } -void harddriv_state::init_racedrivb1(void) +void harddriv_state::init_racedrivb1() { /* this unpleasantness prevents racedriv1/racedrivb1/racedrivg1 from crashing MAME during boot */ /* they clear the DSP32C's RAM and then release it from reset, causing it to run through */ /* its address space recursively executing instructions */ - m_dsp32->space(AS_PROGRAM).install_read_handler(0x002000, 0x5fffff, read32_delegate(FUNC(harddriv_state::rddsp_unmap_r),this)); - m_dsp32->space(AS_PROGRAM).install_read_handler(0x640000, 0xfff7ff, read32_delegate(FUNC(harddriv_state::rddsp_unmap_r),this)); + m_dsp32->space(AS_PROGRAM).install_read_handler(0x002000, 0x5fffff, read32_delegate(*this, FUNC(harddriv_state::rddsp_unmap_r))); + m_dsp32->space(AS_PROGRAM).install_read_handler(0x640000, 0xfff7ff, read32_delegate(*this, FUNC(harddriv_state::rddsp_unmap_r))); init_racedriv(); } @@ -5117,27 +5117,27 @@ void harddriv_state::steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloo init_ds3(); init_dspcom(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x908000, 0x908001, read16_delegate(FUNC(harddriv_state::steeltal_dummy_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x908000, 0x908001, read16_delegate(*this, FUNC(harddriv_state::steeltal_dummy_r))); /* set up the SLOOP */ if (!proto_sloop) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::st68k_sloop_r), this), write16_delegate(FUNC(harddriv_state::st68k_sloop_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4e000, 0x4ffff, read16_delegate(FUNC(harddriv_state::st68k_sloop_alt_r), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::st68k_sloop_r)), write16_delegate(*this, FUNC(harddriv_state::st68k_sloop_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4e000, 0x4ffff, read16_delegate(*this, FUNC(harddriv_state::st68k_sloop_alt_r))); } else - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::st68k_protosloop_r), this), write16_delegate(FUNC(harddriv_state::st68k_protosloop_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::st68k_protosloop_r)), write16_delegate(*this, FUNC(harddriv_state::st68k_protosloop_w))); m_m68k_slapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0xe0000); m_m68k_sloop_alt_base = (uint16_t *)(memregion("maincpu")->base() + 0x4e000); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff965d0, 0xfff965df, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff965d0, 0xfff965df, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((0xfff965d0 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); - m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(FUNC(harddriv_state::hdds3_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); + m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(*this, FUNC(harddriv_state::hdds3_speedup_r))); m_ds3_speedup_addr = &m_adsp_data_memory[0x1f99]; m_ds3_speedup_pc = 0xff; m_ds3_transfer_pc = ds3_transfer_pc; @@ -5145,23 +5145,23 @@ void harddriv_state::steeltal_init_common(offs_t ds3_transfer_pc, int proto_sloo -void harddriv_state::init_steeltal(void) +void harddriv_state::init_steeltal() { steeltal_init_common(0x4fc18, 0); } -void harddriv_state::init_steeltal1(void) +void harddriv_state::init_steeltal1() { steeltal_init_common(0x4f9c6, 0); } -void harddriv_state::init_steeltalp(void) +void harddriv_state::init_steeltalp() { steeltal_init_common(0x52290, 1); } -void harddriv_state::init_strtdriv(void) +void harddriv_state::init_strtdriv() { /* initialize the boards */ init_multisync(1); @@ -5170,80 +5170,80 @@ void harddriv_state::init_strtdriv(void) /* set up the slapstic */ m_slapstic_device->slapstic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(FUNC(harddriv_state::rd68k_slapstic_r), this), write16_delegate(FUNC(harddriv_state::rd68k_slapstic_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe0000, 0xfffff, read16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_r)), write16_delegate(*this, FUNC(harddriv_state::rd68k_slapstic_w))); m_m68k_slapstic_base = (uint16_t *)(memregion("maincpu")->base() + 0xe0000); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(*this, FUNC(harddriv_state::hda68k_port1_r))); /* synchronization */ - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this)); - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this)); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync0_w))); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync1_w))); m_rddsp32_sync[0] = m_dsp32_ram + ((0x613c00 - 0x600000) >> 2); m_rddsp32_sync[1] = m_dsp32_ram + ((0x613e00 - 0x600000) >> 2); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff960a0, 0xfff960af, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff960a0, 0xfff960af, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((0xfff960a0 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); - m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(FUNC(harddriv_state::hdds3_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); + m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(*this, FUNC(harddriv_state::hdds3_speedup_r))); m_ds3_speedup_addr = &m_adsp_data_memory[0x1f99]; m_ds3_speedup_pc = 0xff; m_ds3_transfer_pc = 0x43672; } -void harddriv_state::init_hdrivair(void) +void harddriv_state::init_hdrivair() { /* initialize the boards */ init_multisync(1); init_ds3(); init_dsk2(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(*this, FUNC(harddriv_state::hda68k_port1_r))); /* synchronization */ - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this)); - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this)); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync0_w))); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync1_w))); m_rddsp32_sync[0] = m_dsp32_ram + ((0x613c00 - 0x600000) >> 2); m_rddsp32_sync[1] = m_dsp32_ram + ((0x613e00 - 0x600000) >> 2); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff960a0, 0xfff960af, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff960a0, 0xfff960af, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((0xfff960a0 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); - m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(FUNC(harddriv_state::hdds3_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); + m_adsp->space(AS_DATA).install_read_handler(0x1f99, 0x1f99, read16_delegate(*this, FUNC(harddriv_state::hdds3_speedup_r))); m_ds3_speedup_addr = &m_adsp_data_memory[0x1f99]; m_ds3_speedup_pc = 0x2da; m_ds3_transfer_pc = 0x407b8; } -void harddriv_state::init_hdrivairp(void) +void harddriv_state::init_hdrivairp() { /* initialize the boards */ init_multisync(1); init_ds3(); init_dsk2(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(FUNC(harddriv_state::hda68k_port1_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa80000, 0xafffff, read16_delegate(*this, FUNC(harddriv_state::hda68k_port1_r))); /* synchronization */ - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(FUNC(harddriv_state::rddsp32_sync0_w), this)); - m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(FUNC(harddriv_state::rddsp32_sync1_w), this)); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613c00, 0x613c03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync0_w))); + m_dsp32->space(AS_PROGRAM).install_write_handler(0x613e00, 0x613e03, write32_delegate(*this, FUNC(harddriv_state::rddsp32_sync1_w))); m_rddsp32_sync[0] = m_dsp32_ram + ((0x613c00 - 0x600000) >> 2); m_rddsp32_sync[1] = m_dsp32_ram + ((0x613e00 - 0x600000) >> 2); /* set up protection hacks */ - m_gsp->space(AS_PROGRAM).install_write_handler(0xfff916c0, 0xfff916cf, write16_delegate(FUNC(harddriv_state::hdgsp_protection_w), this)); + m_gsp->space(AS_PROGRAM).install_write_handler(0xfff916c0, 0xfff916cf, write16_delegate(*this, FUNC(harddriv_state::hdgsp_protection_w))); m_gsp_protection = (uint16_t *)(m_gsp_vram + ((0xfff916c0 - 0xffc00000) >> 3)); /* set up adsp speedup handlers */ - m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(FUNC(harddriv_state::hdadsp_speedup_r), this)); - m_adsp->space(AS_DATA).install_read_handler(0x1f9a, 0x1f9a, read16_delegate(FUNC(harddriv_state::hdds3_speedup_r), this)); + m_adsp->space(AS_DATA).install_read_handler(0x1fff, 0x1fff, read16_delegate(*this, FUNC(harddriv_state::hdadsp_speedup_r))); + m_adsp->space(AS_DATA).install_read_handler(0x1f9a, 0x1f9a, read16_delegate(*this, FUNC(harddriv_state::hdds3_speedup_r))); m_ds3_speedup_addr = &m_adsp_data_memory[0x1f9a]; m_ds3_speedup_pc = 0x2d9; m_ds3_transfer_pc = 0x407da; diff --git a/src/mame/drivers/hazeltin.cpp b/src/mame/drivers/hazeltin.cpp index 2436ec53b7b..6df6ba1a5b5 100644 --- a/src/mame/drivers/hazeltin.cpp +++ b/src/mame/drivers/hazeltin.cpp @@ -756,9 +756,9 @@ void hazl1500_state::hazl1500(machine_config &config) NETLIST_LOGIC_INPUT(config, NETLIST_TAG ":cpu_db6", "cpu_db6.IN", 0); NETLIST_LOGIC_INPUT(config, NETLIST_TAG ":cpu_db7", "cpu_db7.IN", 0); - NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":video_out", 0).set_params("video_out", FUNC(hazl1500_state::video_out_cb), ""); - NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":vblank", 0).set_params("vblank", FUNC(hazl1500_state::vblank_cb), ""); - NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":tvinterq", 0).set_params("tvinterq", FUNC(hazl1500_state::tvinterq_cb), ""); + NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":video_out", 0).set_params("video_out", FUNC(hazl1500_state::video_out_cb)); + NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":vblank", 0).set_params("vblank", FUNC(hazl1500_state::vblank_cb)); + NETLIST_ANALOG_OUTPUT(config, NETLIST_TAG ":tvinterq", 0).set_params("tvinterq", FUNC(hazl1500_state::tvinterq_cb)); /* keyboard controller */ AY3600(config, m_kbdc, 0); diff --git a/src/mame/drivers/headonb.cpp b/src/mame/drivers/headonb.cpp index 14271fa90ae..b13b9da1c66 100644 --- a/src/mame/drivers/headonb.cpp +++ b/src/mame/drivers/headonb.cpp @@ -81,7 +81,7 @@ TILE_GET_INFO_MEMBER(headonb_state::get_tile_info) void headonb_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(headonb_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(headonb_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t headonb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/hektor.cpp b/src/mame/drivers/hektor.cpp index 3fac622949d..33a0d8a090b 100644 --- a/src/mame/drivers/hektor.cpp +++ b/src/mame/drivers/hektor.cpp @@ -391,7 +391,7 @@ void hektor2_state::hektor2(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &hektor2_state::hektor2_mem); m_maincpu->in_sid_func().set(FUNC(hektor_state::sid_r)); m_maincpu->out_sod_func().set(FUNC(hektor_state::sod_w)); - m_maincpu->set_clk_out("i8155", FUNC(i8155_device::set_unscaled_clock)); + m_maincpu->set_clk_out("i8155", FUNC(i8155_device::set_unscaled_clock_int)); I8155(config, m_i8155, 6.144_MHz_XTAL / 2); m_i8155->out_pa_callback().set(FUNC(hektor_state::i8155_porta_w)); @@ -431,7 +431,7 @@ void hektor3_state::hektor3(machine_config &config) m_maincpu->set_addrmap(AS_IO, &hektor3_state::hektor3_io); m_maincpu->in_sid_func().set(FUNC(hektor_state::sid_r)); m_maincpu->out_sod_func().set(FUNC(hektor_state::sod_w)); - m_maincpu->set_clk_out("i8155", FUNC(i8155_device::set_unscaled_clock)); + m_maincpu->set_clk_out("i8155", FUNC(i8155_device::set_unscaled_clock_int)); I8155(config, m_i8155, 16_MHz_XTAL / 4); m_i8155->out_pa_callback().set(FUNC(hektor_state::i8155_porta_w)); @@ -464,7 +464,7 @@ void hektor3_state::hektor3(machine_config &config) m_hd6845->set_screen(m_screen); m_hd6845->set_show_border_area(false); m_hd6845->set_char_width(8); - m_hd6845->set_update_row_callback(FUNC(hektor3_state::crtc_update_row), this); + m_hd6845->set_update_row_callback(FUNC(hektor3_state::crtc_update_row)); } diff --git a/src/mame/drivers/hh_tms1k.cpp b/src/mame/drivers/hh_tms1k.cpp index 785b21de3e8..8abea869492 100644 --- a/src/mame/drivers/hh_tms1k.cpp +++ b/src/mame/drivers/hh_tms1k.cpp @@ -2274,7 +2274,7 @@ void quizwizc_state::quizwizc(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "quizwiz_cart")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(quizwizc_state::cart_load), this); + cartslot.set_device_load(FUNC(quizwizc_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("quizwiz"); } @@ -2462,7 +2462,7 @@ void tc4_state::tc4(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "tc4_cart")); cartslot.set_must_be_loaded(true); // system won't power on without cartridge - cartslot.set_device_load(FUNC(tc4_state::cart_load), this); + cartslot.set_device_load(FUNC(tc4_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("tc4"); } diff --git a/src/mame/drivers/hitme.cpp b/src/mame/drivers/hitme.cpp index 47d12658f37..993d0fc625c 100644 --- a/src/mame/drivers/hitme.cpp +++ b/src/mame/drivers/hitme.cpp @@ -60,13 +60,13 @@ WRITE8_MEMBER(hitme_state::hitme_vidram_w) void hitme_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hitme_state::get_hitme_tile_info),this), TILEMAP_SCAN_ROWS, 8, 10, 40, 19); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hitme_state::get_hitme_tile_info)), TILEMAP_SCAN_ROWS, 8, 10, 40, 19); } VIDEO_START_MEMBER(hitme_state,barricad) { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hitme_state::get_hitme_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 24); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hitme_state::get_hitme_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 24); } diff --git a/src/mame/drivers/hnayayoi.cpp b/src/mame/drivers/hnayayoi.cpp index bd061e4c096..85c644b3e48 100644 --- a/src/mame/drivers/hnayayoi.cpp +++ b/src/mame/drivers/hnayayoi.cpp @@ -571,7 +571,7 @@ void hnayayoi_state::hnayayoi(machine_config &config) crtc.set_char_width(4); crtc.set_show_border_area(false); crtc.out_vsync_callback().set_inputline(m_maincpu, 0); - crtc.set_update_row_callback(FUNC(hnayayoi_state::hnayayoi_update_row), this); + crtc.set_update_row_callback(FUNC(hnayayoi_state::hnayayoi_update_row)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -611,7 +611,7 @@ void hnayayoi_state::untoucha(machine_config &config) m_mainlatch->q_out_cb<3>().set(m_msm, FUNC(msm5205_device::reset_w)).invert(); m_mainlatch->q_out_cb<4>().set_nop(); // ? - subdevice<hd6845s_device>("crtc")->set_update_row_callback(FUNC(hnayayoi_state::untoucha_update_row), this); + subdevice<hd6845s_device>("crtc")->set_update_row_callback(FUNC(hnayayoi_state::untoucha_update_row)); MCFG_VIDEO_START_OVERRIDE(hnayayoi_state,untoucha) } diff --git a/src/mame/drivers/homelab.cpp b/src/mame/drivers/homelab.cpp index 55fe65152bc..e442c4d94fc 100644 --- a/src/mame/drivers/homelab.cpp +++ b/src/mame/drivers/homelab.cpp @@ -779,7 +779,7 @@ void homelab_state::homelab(machine_config &config) CASSETTE(config, m_cass); m_cass->add_route(ALL_OUTPUTS, "speaker", 0.05); - QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab_state::quickload_cb)); } void homelab_state::homelab3(machine_config &config) @@ -812,7 +812,7 @@ void homelab_state::homelab3(machine_config &config) CASSETTE(config, m_cass); m_cass->add_route(ALL_OUTPUTS, "speaker", 0.05); - QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(2)).set_load_callback(FUNC(homelab_state::quickload_cb)); } void homelab_state::brailab4(machine_config &config) @@ -847,7 +847,7 @@ void homelab_state::brailab4(machine_config &config) CASSETTE(config, m_cass); m_cass->add_route(ALL_OUTPUTS, "speaker", 0.05); - QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(18)).set_load_callback(FUNC(homelab_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "htp", attotime::from_seconds(18)).set_load_callback(FUNC(homelab_state::quickload_cb)); } void homelab_state::init_brailab4() diff --git a/src/mame/drivers/hornet.cpp b/src/mame/drivers/hornet.cpp index 28bf3b28382..f3241347a3c 100644 --- a/src/mame/drivers/hornet.cpp +++ b/src/mame/drivers/hornet.cpp @@ -1431,7 +1431,7 @@ void hornet_state::init_hornet() m_konppc->set_cgboard_texture_bank(0, "bank5", memregion("user5")->base()); m_led_reg0 = m_led_reg1 = 0x7f; - m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(hornet_state::jamma_jvs_w), this)); + m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(*this, FUNC(hornet_state::jamma_jvs_w))); } void hornet_state::init_gradius4() @@ -1458,7 +1458,7 @@ void hornet_state::init_sscope() m_konppc->set_cgboard_texture_bank(1, "bank6", memregion("user5")->base()); m_led_reg0 = m_led_reg1 = 0x7f; - m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(hornet_state::jamma_jvs_w), this)); + m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(*this, FUNC(hornet_state::jamma_jvs_w))); } void hornet_state::init_sscope2() //fixme: eventually set sscope2 to load gfx roms from the comm board @@ -1467,7 +1467,7 @@ void hornet_state::init_sscope2() //fixme: eventually set sscope2 to load gfx ro m_konppc->set_cgboard_texture_bank(1, "bank6", memregion("user5")->base()); m_led_reg0 = m_led_reg1 = 0x7f; - m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(FUNC(hornet_state::jamma_jvs_w), this)); + m_maincpu->ppc4xx_spu_set_tx_handler(write8_delegate(*this, FUNC(hornet_state::jamma_jvs_w))); } /*****************************************************************************/ diff --git a/src/mame/drivers/hotstuff.cpp b/src/mame/drivers/hotstuff.cpp index 407e4ab0d6d..446c4edbaab 100644 --- a/src/mame/drivers/hotstuff.cpp +++ b/src/mame/drivers/hotstuff.cpp @@ -13,11 +13,12 @@ class hotstuff_state : public driver_device { public: - hotstuff_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + hotstuff_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_bitmapram(*this, "bitmapram"), m_maincpu(*this, "maincpu"), - m_rtc(*this, "rtc") { } + m_rtc(*this, "rtc") + { } void hotstuff(machine_config &config); @@ -39,37 +40,35 @@ void hotstuff_state::video_start() uint32_t hotstuff_state::screen_update_hotstuff(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - int count, y,yyy,x,xxx; + int yyy,xxx; uint16_t row_palette_data[0x10]; rgb_t row_palette_data_as_rgb32_pen_data[0x10]; yyy=512;xxx=512*2; - count = 0; - for (y = 0; y < yyy; y++) + int count = 0; + for (int y = 0; y < yyy; y++) { // the current palette is stored in the first 0x20 bytes of each row! - int p; - - for (p=0;p<0x10;p++) + for (int p = 0; p < 0x10; p++) { - row_palette_data[p] = m_bitmapram[count+p]; - - row_palette_data_as_rgb32_pen_data[p] = rgb_t( (row_palette_data[p] & 0x0f00)>>4, (row_palette_data[p] & 0x00f0)>>0, (row_palette_data[p] & 0x000f)<<4 ); - + row_palette_data[p] = m_bitmapram[count + p]; + row_palette_data_as_rgb32_pen_data[p] = rgb_t( + pal4bit(row_palette_data[p] >> 8), + pal4bit(row_palette_data[p] >> 4), + pal4bit(row_palette_data[p] >> 0)); } - for(x = 0; x < xxx; x++) + for (int x = 0; x < xxx; ) { - { - bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0xf000)>>12]; - x++; - bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x0f00)>>8]; - x++; - bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x00f0)>>4]; - x++; - bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x000f)>>0]; - } + bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0xf000)>>12]; + x++; + bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x0f00)>>8]; + x++; + bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x00f0)>>4]; + x++; + bitmap.pix32(y, x) = row_palette_data_as_rgb32_pen_data[(m_bitmapram[count] &0x000f)>>0]; + x++; count++; } @@ -87,13 +86,9 @@ void hotstuff_state::hotstuff_map(address_map &map) map(0x600000, 0x600003).rw("scc1", FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)); map(0x620000, 0x620003).rw("scc2", FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)); - map(0x680000, 0x680001).lrw8("rtc_rw", - [this](offs_t offset) { - return m_rtc->read(offset^1); - }, - [this](offs_t offset, u8 data) { - m_rtc->write(offset^1, data); - }); + map(0x680000, 0x680001).lrw8( + NAME([this] (offs_t offset) { return m_rtc->read(offset^1); }), + NAME([this] (offs_t offset, u8 data) { m_rtc->write(offset^1, data); })); map(0x980000, 0x9bffff).ram().share("bitmapram"); } diff --git a/src/mame/drivers/hp16500.cpp b/src/mame/drivers/hp16500.cpp index 00b7f368484..c1f3ade02ba 100644 --- a/src/mame/drivers/hp16500.cpp +++ b/src/mame/drivers/hp16500.cpp @@ -429,7 +429,7 @@ void hp16500_state::hp1650(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650)); crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); MC2661(config, "epci", 5000000); @@ -452,7 +452,7 @@ void hp16500_state::hp1651(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650), this); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row_1650)); crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); MC2661(config, "epci", 5000000); @@ -475,7 +475,7 @@ void hp16500_state::hp16500a(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(hp16500_state::crtc_update_row)); crtc.out_vsync_callback().set(FUNC(hp16500_state::vsync_changed)); SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index 39b03e51f67..c67fb7348f1 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -1394,7 +1394,7 @@ void hp64k_state::hp64k(machine_config &config) I8275(config, m_crtc, 2729045); m_crtc->set_screen("screen"); m_crtc->set_character_width(9); - m_crtc->set_display_callback(FUNC(hp64k_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(hp64k_state::crtc_display_pixels)); m_crtc->drq_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_drq_w)); m_crtc->vrtc_wr_callback().set(FUNC(hp64k_state::hp64k_crtc_vrtc_w)); diff --git a/src/mame/drivers/hp700.cpp b/src/mame/drivers/hp700.cpp index b62d26bda1b..7dea387a8ac 100644 --- a/src/mame/drivers/hp700.cpp +++ b/src/mame/drivers/hp700.cpp @@ -38,13 +38,13 @@ void hp700_state::mem_map(address_map &map) map(0x20000, 0x2ffff).ram(); map(0x30000, 0x31fff).ram().share("nvram"); map(0x34000, 0x34000).nopr(); - map(0x38000, 0x38fff).lrw8("duart_rw", - [this](offs_t offset) { + map(0x38000, 0x38fff).lrw8( + NAME([this] (offs_t offset) { return m_duart->read(offset >> 8); - }, - [this](offs_t offset, u8 data) { + }), + NAME([this] (offs_t offset, u8 data) { m_duart->write(offset >> 8, data); - }); + })); map(0xffff0, 0xfffff).rom().region("maincpu", 0x1fff0); } diff --git a/src/mame/drivers/hp9825.cpp b/src/mame/drivers/hp9825.cpp index d1512fa31c8..021ae268e1b 100644 --- a/src/mame/drivers/hp9825.cpp +++ b/src/mame/drivers/hp9825.cpp @@ -206,8 +206,8 @@ void hp9825_state::device_reset() // Then, set r/w handlers of all installed I/O cards int sc; - read16_delegate rhandler; - write16_delegate whandler; + read16_delegate rhandler(*this); + write16_delegate whandler(*this); for (unsigned i = 0; i < 3; i++) { if ((sc = m_io_slot[ i ]->get_rw_handlers(rhandler , whandler)) >= 0) { logerror("Install R/W handlers for slot %u @ SC = %d\n", i, sc); @@ -648,10 +648,10 @@ void hp9825_state::hp9825_base(machine_config &config) m_io_sys->flg().set(m_cpu , FUNC(hp_09825_67907_cpu_device::flag_w)); m_io_sys->dmar().set(m_cpu , FUNC(hp_09825_67907_cpu_device::dmar_w)); - TIMER(config , m_cursor_timer , 0).configure_generic(timer_device::expired_delegate(FUNC(hp9825_state::cursor_blink) , this)); + TIMER(config , m_cursor_timer , 0).configure_generic(FUNC(hp9825_state::cursor_blink)); // Keyboard scan timer. A scan of the whole keyboard should take 2^14 KDP clocks. - TIMER(config , "kb_timer" , 0).configure_periodic(timer_device::expired_delegate(FUNC(hp9825_state::kb_scan) , this) , attotime::from_ticks(16384 , KDP_CLOCK)); + TIMER(config , "kb_timer" , 0).configure_periodic(FUNC(hp9825_state::kb_scan), attotime::from_ticks(16384 , KDP_CLOCK)); // Tape drive HP9825_TAPE(config , m_tape , 0); @@ -662,12 +662,12 @@ void hp9825_state::hp9825_base(machine_config &config) // Printer BITBANGER(config , m_prt_alpha_out , 0); BITBANGER(config , m_prt_graph_out , 0); - TIMER(config , m_prt_timer , 0).configure_generic(timer_device::expired_delegate(FUNC(hp9825_state::prt_timer) , this)); + TIMER(config , m_prt_timer , 0).configure_generic(FUNC(hp9825_state::prt_timer)); // Beeper SPEAKER(config, "mono").front_center(); BEEP(config, m_beeper, BEEPER_FREQ).add_route(ALL_OUTPUTS, "mono", 1.00); - TIMER(config , m_beep_timer , 0).configure_generic(timer_device::expired_delegate(FUNC(hp9825_state::beep_timer) , this)); + TIMER(config , m_beep_timer , 0).configure_generic(FUNC(hp9825_state::beep_timer)); // I/O slots for (unsigned slot = 0; slot < 3; slot++) { diff --git a/src/mame/drivers/hp9845.cpp b/src/mame/drivers/hp9845.cpp index 287117f7a7f..9ee599a727b 100644 --- a/src/mame/drivers/hp9845.cpp +++ b/src/mame/drivers/hp9845.cpp @@ -473,8 +473,8 @@ void hp9845_base_state::device_reset() // Then, set r/w handlers of all installed I/O cards int sc; - read16_delegate rhandler; - write16_delegate whandler; + read16_delegate rhandler(*this); + write16_delegate whandler(*this); for (unsigned i = 0; 4 > i; ++i) { if ((sc = m_io_slot[i]->get_rw_handlers(rhandler , whandler)) >= 0) { logerror("Install R/W handlers for slot %u @ SC = %d\n", i, sc); diff --git a/src/mame/drivers/hp9k_3xx.cpp b/src/mame/drivers/hp9k_3xx.cpp index cdee08704d2..e982d119ff4 100644 --- a/src/mame/drivers/hp9k_3xx.cpp +++ b/src/mame/drivers/hp9k_3xx.cpp @@ -224,7 +224,7 @@ void hp9k3xx_state::machine_reset() { auto *dio = subdevice<bus::hp_dio::dio16_device>("diobus"); if (dio) - m_maincpu->set_reset_callback(write_line_delegate(FUNC(bus::hp_dio::dio16_device::reset_in), dio)); + m_maincpu->set_reset_callback(*dio, FUNC(bus::hp_dio::dio16_device::reset_in)); } void hp9k3xx_state::machine_start() diff --git a/src/mame/drivers/hprot1.cpp b/src/mame/drivers/hprot1.cpp index 64c198ac95d..ef4a75e0db6 100644 --- a/src/mame/drivers/hprot1.cpp +++ b/src/mame/drivers/hprot1.cpp @@ -269,7 +269,7 @@ void hprot1_state::hprot1(machine_config &config) HD44780(config, m_lcdc, 0); m_lcdc->set_lcd_size(2, 16); - m_lcdc->set_pixel_update_cb(FUNC(hprot1_state::hprot1_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(hprot1_state::hprot1_pixel_update)); /* TODO: figure out which RTC chip is in use. */ diff --git a/src/mame/drivers/hunter16.cpp b/src/mame/drivers/hunter16.cpp index efc8f0ebd69..1beda6a059f 100644 --- a/src/mame/drivers/hunter16.cpp +++ b/src/mame/drivers/hunter16.cpp @@ -244,7 +244,7 @@ void hunter16_state::hunter1680(machine_config &config) m_cga->set_screen("screen"); m_cga->set_show_border_area(false); m_cga->set_char_width(8); - m_cga->set_update_row_callback(FUNC(hunter16_state::crtc_update_row), this); + m_cga->set_update_row_callback(FUNC(hunter16_state::crtc_update_row)); } ROM_START( hunter16 ) diff --git a/src/mame/drivers/hvyunit.cpp b/src/mame/drivers/hvyunit.cpp index 28990353c76..fc190ea2d75 100644 --- a/src/mame/drivers/hvyunit.cpp +++ b/src/mame/drivers/hvyunit.cpp @@ -207,7 +207,7 @@ TILE_GET_INFO_MEMBER(hvyunit_state::get_bg_tile_info) void hvyunit_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hvyunit_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hvyunit_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); save_item(NAME(m_scrollx)); save_item(NAME(m_scrolly)); @@ -216,8 +216,8 @@ void hvyunit_state::video_start() uint32_t hvyunit_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { -#define SX_POS 96 -#define SY_POS 0 + constexpr int SX_POS = 96; + constexpr int SY_POS = 0; m_bg_tilemap->set_scrollx(0, ((m_port0_data & 0x40) << 2) + m_scrollx + SX_POS); // TODO m_bg_tilemap->set_scrolly(0, ((m_port0_data & 0x80) << 1) + m_scrolly + SY_POS); // TODO diff --git a/src/mame/drivers/hx20.cpp b/src/mame/drivers/hx20.cpp index 9bd4eca1ff8..924664f719b 100644 --- a/src/mame/drivers/hx20.cpp +++ b/src/mame/drivers/hx20.cpp @@ -941,7 +941,7 @@ void hx20_state::hx20(machine_config &config) // optional rom GENERIC_SOCKET(config, m_optrom, generic_plain_slot, "opt_rom", "bin,rom"); - m_optrom->set_device_load(FUNC(hx20_state::optrom_load), this); + m_optrom->set_device_load(FUNC(hx20_state::optrom_load)); // software lists SOFTWARE_LIST(config, "hx20_opt_list").set_original("hx20_rom"); diff --git a/src/mame/drivers/hyprduel.cpp b/src/mame/drivers/hyprduel.cpp index 3804f6c0fa8..b70a3010429 100644 --- a/src/mame/drivers/hyprduel.cpp +++ b/src/mame/drivers/hyprduel.cpp @@ -554,10 +554,10 @@ void hyprduel_state::init_hyprduel() m_int_num = 0x02; /* cpu synchronization (severe timings) */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc0040e, 0xc00411, write16_delegate(FUNC(hyprduel_state::hyprduel_cpusync_trigger1_w),this)); - m_subcpu->space(AS_PROGRAM).install_read_handler(0xc00408, 0xc00409, read16_delegate(FUNC(hyprduel_state::hyprduel_cpusync_trigger1_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc00408, 0xc00409, write16_delegate(FUNC(hyprduel_state::hyprduel_cpusync_trigger2_w),this)); - m_subcpu->space(AS_PROGRAM).install_read_handler(0xfff34c, 0xfff34d, read16_delegate(FUNC(hyprduel_state::hyprduel_cpusync_trigger2_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc0040e, 0xc00411, write16_delegate(*this, FUNC(hyprduel_state::hyprduel_cpusync_trigger1_w))); + m_subcpu->space(AS_PROGRAM).install_read_handler(0xc00408, 0xc00409, read16_delegate(*this, FUNC(hyprduel_state::hyprduel_cpusync_trigger1_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc00408, 0xc00409, write16_delegate(*this, FUNC(hyprduel_state::hyprduel_cpusync_trigger2_w))); + m_subcpu->space(AS_PROGRAM).install_read_handler(0xfff34c, 0xfff34d, read16_delegate(*this, FUNC(hyprduel_state::hyprduel_cpusync_trigger2_r))); } void hyprduel_state::init_magerror() diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp index 92b83714880..cbcec9c34a4 100644 --- a/src/mame/drivers/i7000.cpp +++ b/src/mame/drivers/i7000.cpp @@ -238,7 +238,7 @@ void i7000_state::machine_start() if (m_card->exists()) { // 0x4000 - 0xbfff 32KB ROM - program.install_read_handler(0x4000, 0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card)); + program.install_read_handler(0x4000, 0xbfff, read8sm_delegate(*m_card, FUNC(generic_slot_device::read_rom))); } } @@ -326,7 +326,7 @@ TILE_GET_INFO_MEMBER(i7000_state::get_bg_tile_info) void i7000_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(i7000_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(i7000_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); } uint32_t i7000_state::screen_update_i7000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -364,7 +364,7 @@ void i7000_state::i7000(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(true); crtc.set_char_width(8); - crtc.set_on_update_addr_change_callback(FUNC(i7000_state::crtc_addr), this); + crtc.set_on_update_addr_change_callback(FUNC(i7000_state::crtc_addr)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -387,7 +387,7 @@ void i7000_state::i7000(machine_config &config) kbdc.in_ctrl_callback().set_constant(1); // TODO: Ctrl key /* Cartridge slot */ - GENERIC_CARTSLOT(config, "cardslot", generic_romram_plain_slot, "i7000_card", "rom").set_device_load(FUNC(i7000_state::card_load), this); + GENERIC_CARTSLOT(config, "cardslot", generic_romram_plain_slot, "i7000_card", "rom").set_device_load(FUNC(i7000_state::card_load)); /* Software lists */ SOFTWARE_LIST(config, "card_list").set_original("i7000_card"); diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp index c50c9e373b5..2f296a5e45c 100644 --- a/src/mame/drivers/ibmpcjr.cpp +++ b/src/mame/drivers/ibmpcjr.cpp @@ -666,8 +666,8 @@ void pcjr_state::ibmpcjr(machine_config &config) m_keyboard->keypress().set(FUNC(pcjr_state::keyb_interrupt)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "ibmpcjr_cart", "bin,jrc").set_device_load(FUNC(pcjr_state::cart1_load), this); - GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "ibmpcjr_cart", "bin,jrc").set_device_load(FUNC(pcjr_state::cart2_load), this); + GENERIC_CARTSLOT(config, "cartslot1", generic_plain_slot, "ibmpcjr_cart", "bin,jrc").set_device_load(FUNC(pcjr_state::cart1_load)); + GENERIC_CARTSLOT(config, "cartslot2", generic_plain_slot, "ibmpcjr_cart", "bin,jrc").set_device_load(FUNC(pcjr_state::cart2_load)); /* internal ram */ RAM(config, m_ram).set_default_size("640K").set_extra_options("128K, 256K, 512K"); diff --git a/src/mame/drivers/icatel.cpp b/src/mame/drivers/icatel.cpp index 571c32c3fbc..980143a307e 100644 --- a/src/mame/drivers/icatel.cpp +++ b/src/mame/drivers/icatel.cpp @@ -279,7 +279,7 @@ void icatel_state::icatel(machine_config &config) HD44780(config, m_lcdc, 0); m_lcdc->set_lcd_size(2, 16); - m_lcdc->set_pixel_update_cb(FUNC(icatel_state::icatel_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(icatel_state::icatel_pixel_update)); } ROM_START( icatel ) diff --git a/src/mame/drivers/icebox.cpp b/src/mame/drivers/icebox.cpp index 3a1c7599cd7..373eaa2f22c 100644 --- a/src/mame/drivers/icebox.cpp +++ b/src/mame/drivers/icebox.cpp @@ -209,10 +209,10 @@ void icebox_state::io_map(address_map &map) map.unmap_value_high(); map(0xe0, 0xe1).rw(m_uart0, FUNC(i8251_device::read), FUNC(i8251_device::write)); map(0xe2, 0xe3).rw(m_uart1, FUNC(i8251_device::read), FUNC(i8251_device::write)); - map(0xe4, 0xe7).lrw8("fdc_usage", - [this](offs_t offset) { return m_fdc->read(offset^3); }, - [this](offs_t offset, u8 data) { m_fdc->write(offset^3, data); }); - map(0xf1, 0xf1).lw8("port_F1", [this](u8 data) { port_f1_w(data); } ); + map(0xe4, 0xe7).lrw8( + NAME([this] (offs_t offset) { return m_fdc->read(offset^3); }), + NAME([this] (offs_t offset, u8 data) { m_fdc->write(offset^3, data); })); + map(0xf1, 0xf1).lw8(NAME([this] (u8 data) { port_f1_w(data); })); } /* Input ports */ diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp index 7d09be7a758..bc618d4185a 100644 --- a/src/mame/drivers/icecold.cpp +++ b/src/mame/drivers/icecold.cpp @@ -392,10 +392,10 @@ void icecold_state::icecold(machine_config &config) kbdc.in_rl_callback().set(FUNC(icecold_state::kbd_r)); // kbd RL lines // 30Hz signal from CH-C of ay0 - TIMER(config, "sint_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(icecold_state::icecold_sint_timer), this), attotime::from_hz(30)); + TIMER(config, "sint_timer", 0).configure_periodic(FUNC(icecold_state::icecold_sint_timer), attotime::from_hz(30)); // for update motors position - TIMER(config, "motors_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(icecold_state::icecold_motors_timer), this), attotime::from_msec(50)); + TIMER(config, "motors_timer", 0).configure_periodic(FUNC(icecold_state::icecold_motors_timer), attotime::from_msec(50)); // video hardware config.set_default_layout(layout_icecold); diff --git a/src/mame/drivers/igs009.cpp b/src/mame/drivers/igs009.cpp index 39186763171..0d6ac64a551 100644 --- a/src/mame/drivers/igs009.cpp +++ b/src/mame/drivers/igs009.cpp @@ -281,13 +281,13 @@ WRITE8_MEMBER(igs009_state::fg_color_w) void igs009_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x80,0x20); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x80,0x20); m_fg_tilemap->set_transparent_pen(0); - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_jingbell_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_jingbell_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_jingbell_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_jingbell_reel4_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_jingbell_reel1_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_jingbell_reel2_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_jingbell_reel3_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_jingbell_reel4_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); m_reel1_tilemap->set_scroll_cols(128); m_reel2_tilemap->set_scroll_cols(128); @@ -298,13 +298,13 @@ void igs009_state::video_start() VIDEO_START_MEMBER(igs009_state,gp98) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x80,0x20); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x80,0x20); m_fg_tilemap->set_transparent_pen(0); - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_gp98_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_gp98_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_gp98_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); - m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igs009_state::get_gp98_reel4_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_gp98_reel1_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_gp98_reel2_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_gp98_reel3_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); + m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igs009_state::get_gp98_reel4_tile_info)),TILEMAP_SCAN_ROWS,8,32, 128, 8); m_reel1_tilemap->set_scroll_cols(128); m_reel2_tilemap->set_scroll_cols(128); diff --git a/src/mame/drivers/igs011.cpp b/src/mame/drivers/igs011.cpp index 21b5163779b..c1e8262bcd1 100644 --- a/src/mame/drivers/igs011.cpp +++ b/src/mame/drivers/igs011.cpp @@ -1211,8 +1211,8 @@ void igs011_state::prot_mem_range_set() address_space &sp = m_maincpu->space(AS_PROGRAM); // Add protection memory range - sp.install_write_handler(m_prot1_addr + 0, m_prot1_addr + 7, write8sm_delegate(FUNC(igs011_state::igs011_prot1_w), this), 0xff00); - sp.install_read_handler (m_prot1_addr + 8, m_prot1_addr + 9, read16smo_delegate(FUNC(igs011_state::igs011_prot1_r), this)); + sp.install_write_handler(m_prot1_addr + 0, m_prot1_addr + 7, write8sm_delegate(*this, FUNC(igs011_state::igs011_prot1_w)), 0xff00); + sp.install_read_handler (m_prot1_addr + 8, m_prot1_addr + 9, read16smo_delegate(*this, FUNC(igs011_state::igs011_prot1_r))); } /* READ16_MEMBER(igs011_state::igs011_prot_fake_r) @@ -2179,7 +2179,7 @@ void igs011_state::init_drgnwrldv21() drgnwrld_type2_decrypt(); drgnwrld_gfx_decrypt(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4c0, 0xd4ff, read16smo_delegate(FUNC(igs011_state::drgnwrldv21_igs011_prot2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4c0, 0xd4ff, read16smo_delegate(*this, FUNC(igs011_state::drgnwrldv21_igs011_prot2_r))); /* // PROTECTION CHECKS // bp 32ee; bp 11ca8; bp 23d5e; bp 23fd0; bp 24170; bp 24348; bp 2454e; bp 246cc; bp 24922; bp 24b66; bp 24de2; bp 2502a; bp 25556; bp 269de; bp 2766a; bp 2a830 @@ -2263,7 +2263,7 @@ void igs011_state::init_drgnwrldv40k() drgnwrldv40k_decrypt(); drgnwrld_gfx_decrypt(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4c0, 0xd4ff, read16smo_delegate(FUNC(igs011_state::drgnwrldv40k_igs011_prot2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd4c0, 0xd4ff, read16smo_delegate(*this, FUNC(igs011_state::drgnwrldv40k_igs011_prot2_r))); } void igs011_state::init_drgnwrldv11h() @@ -2327,7 +2327,7 @@ void igs011_state::init_dbc() dbc_decrypt(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x10600, 0x107ff, read16smo_delegate(FUNC(igs011_state::dbc_igs011_prot2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x10600, 0x107ff, read16smo_delegate(*this, FUNC(igs011_state::dbc_igs011_prot2_r))); /* // PROTECTION CHECKS rom[0x04c42/2] = 0x602e; // 004C42: 6604 bne 4c48 (rom test error otherwise) @@ -2357,7 +2357,7 @@ void igs011_state::init_ryukobou() ryukobou_decrypt(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x10600, 0x107ff, read16smo_delegate(FUNC(igs011_state::ryukobou_igs011_prot2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x10600, 0x107ff, read16smo_delegate(*this, FUNC(igs011_state::ryukobou_igs011_prot2_r))); // PROTECTION CHECKS // rom[0x2df68/2] = 0x4e75; // 02DF68: 4E56 FE00 link A6, #-$200 (fills palette with pink otherwise) diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp index 0cd875582a4..7849ed274a8 100644 --- a/src/mame/drivers/igs017.cpp +++ b/src/mame/drivers/igs017.cpp @@ -1251,7 +1251,7 @@ void igs017_state::init_lhzb2() lhzb2_patch_rom(); // install and configure protection device(s) -// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); +// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w))); // m_igs025->m_kb_source_data = dw3_source_data; // m_igs025->m_kb_source_data_offset = 0; // m_igs025->m_kb_game_id = 0x00060000; @@ -1424,7 +1424,7 @@ void igs017_state::init_slqz2() slqz2_patch_rom(); // install and configure protection device(s) -// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); +// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w))); // m_igs025->m_kb_source_data = dw3_source_data; // m_igs025->m_kb_source_data_offset = 0; // m_igs025->m_kb_game_id = 0x00060000; @@ -1525,10 +1525,10 @@ void igs017_state::iqblocka_remap_addr_w(offs_t offset, u8 data) // Add new memory ranges address_space &prg_space = m_maincpu->space(AS_PROGRAM); - prg_space.install_write_handler(m_remap_addr + 0x0, m_remap_addr + 0x0, write8smo_delegate(FUNC(igs_incdec_device::reset_w), &(*m_igs_incdec))); - prg_space.install_write_handler(m_remap_addr + 0x1, m_remap_addr + 0x1, write8smo_delegate(FUNC(igs_incdec_device::dec_w), &(*m_igs_incdec))); - prg_space.install_write_handler(m_remap_addr + 0x3, m_remap_addr + 0x3, write8smo_delegate(FUNC(igs_incdec_device::inc_w), &(*m_igs_incdec))); - prg_space.install_read_handler (m_remap_addr + 0x5, m_remap_addr + 0x5, read8smo_delegate (FUNC(igs_incdec_device::val_r), &(*m_igs_incdec))); + prg_space.install_write_handler(m_remap_addr + 0x0, m_remap_addr + 0x0, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::reset_w))); + prg_space.install_write_handler(m_remap_addr + 0x1, m_remap_addr + 0x1, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::dec_w))); + prg_space.install_write_handler(m_remap_addr + 0x3, m_remap_addr + 0x3, write8smo_delegate(*m_igs_incdec, FUNC(igs_incdec_device::inc_w))); + prg_space.install_read_handler (m_remap_addr + 0x5, m_remap_addr + 0x5, read8smo_delegate (*m_igs_incdec, FUNC(igs_incdec_device::val_r))); logerror("%s: incdec protection remapped at %04x\n", machine().describe_context(), m_remap_addr); } @@ -2254,11 +2254,11 @@ void igs017_state::lhzb2a_remap_addr_w(address_space &space, u16 data) m_remap_addr = data & 0xff; // Add new memory ranges - space.install_write_handler (m_remap_addr * 0x10000 + 0x4001, m_remap_addr * 0x10000 + 0x4001, write8smo_delegate(FUNC(igs_bitswap_device::address_w), &(*m_igs_bitswap))); - space.install_readwrite_handler(m_remap_addr * 0x10000 + 0x4003, m_remap_addr * 0x10000 + 0x4003, read8smo_delegate (FUNC(igs_bitswap_device::data_r), &(*m_igs_bitswap)), write8smo_delegate(FUNC(igs_bitswap_device::data_w), &(*m_igs_bitswap))); + space.install_write_handler (m_remap_addr * 0x10000 + 0x4001, m_remap_addr * 0x10000 + 0x4001, write8smo_delegate(*m_igs_bitswap, FUNC(igs_bitswap_device::address_w))); + space.install_readwrite_handler(m_remap_addr * 0x10000 + 0x4003, m_remap_addr * 0x10000 + 0x4003, read8smo_delegate (*m_igs_bitswap, FUNC(igs_bitswap_device::data_r)), write8smo_delegate(*m_igs_bitswap, FUNC(igs_bitswap_device::data_w))); - space.install_read_handler (m_remap_addr * 0x10000 + 0x8000, m_remap_addr * 0x10000 + 0x8005, read16sm_delegate (FUNC(igs017_state::lhzb2a_input_r), this)); - space.install_write_handler (m_remap_addr * 0x10000 + 0xc000, m_remap_addr * 0x10000 + 0xc001, write16mo_delegate(FUNC(igs017_state::lhzb2a_remap_addr_w), this)); + space.install_read_handler (m_remap_addr * 0x10000 + 0x8000, m_remap_addr * 0x10000 + 0x8005, read16sm_delegate (*this, FUNC(igs017_state::lhzb2a_input_r))); + space.install_write_handler (m_remap_addr * 0x10000 + 0xc000, m_remap_addr * 0x10000 + 0xc001, write16mo_delegate(*this, FUNC(igs017_state::lhzb2a_remap_addr_w))); logerror("%s: inputs and protection remapped at %02xxxxx\n", machine().describe_context(), m_remap_addr); } @@ -3618,7 +3618,7 @@ void igs017_state::mgcs(machine_config &config) m_screen->set_palette("igs017_igs031:palette"); IGS017_IGS031(config, m_igs017_igs031, 0); - m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::mgcs_palette_bitswap), this); + m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::mgcs_palette_bitswap)); m_igs017_igs031->set_i8255_tag("ppi8255"); // sound @@ -3645,7 +3645,7 @@ void igs017_state::lhzb2(machine_config &config) // protection IGS025(config, m_igs025, 0); - m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback), this); + m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback)); IGS022(config, m_igs022, 0); @@ -3659,7 +3659,7 @@ void igs017_state::lhzb2(machine_config &config) m_screen->set_palette("igs017_igs031:palette"); IGS017_IGS031(config, m_igs017_igs031, 0); - m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap), this); + m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap)); m_igs017_igs031->set_i8255_tag("ppi8255"); // sound @@ -3708,7 +3708,7 @@ void igs017_state::lhzb2a(machine_config &config) m_screen->set_palette("igs017_igs031:palette"); IGS017_IGS031(config, m_igs017_igs031, 0); - m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap), this); + m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::lhzb2a_palette_bitswap)); // m_igs017_igs031->set_i8255_tag("ppi8255"); // sound @@ -3735,7 +3735,7 @@ void igs017_state::slqz2(machine_config &config) // protection IGS025(config, m_igs025, 0); - m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback), this); + m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback)); IGS022(config, m_igs022, 0); @@ -3749,7 +3749,7 @@ void igs017_state::slqz2(machine_config &config) m_screen->set_palette("igs017_igs031:palette"); IGS017_IGS031(config, m_igs017_igs031, 0); - m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::slqz2_palette_bitswap), this); + m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::slqz2_palette_bitswap)); m_igs017_igs031->set_i8255_tag("ppi8255"); // sound @@ -3861,7 +3861,7 @@ void igs017_state::tjsb(machine_config &config) m_screen->set_palette("igs017_igs031:palette"); IGS017_IGS031(config, m_igs017_igs031, 0); - m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tjsb_palette_bitswap), this); + m_igs017_igs031->set_palette_scramble_cb(FUNC(igs017_state::tjsb_palette_bitswap)); m_igs017_igs031->set_i8255_tag("ppi8255"); // sound diff --git a/src/mame/drivers/igspoker.cpp b/src/mame/drivers/igspoker.cpp index 375103f79d0..6d16a897b6f 100644 --- a/src/mame/drivers/igspoker.cpp +++ b/src/mame/drivers/igspoker.cpp @@ -243,8 +243,8 @@ WRITE8_MEMBER(igspoker_state::fg_color_w) void igspoker_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igspoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igspoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igspoker_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igspoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); m_fg_tilemap->set_transparent_pen(0); } @@ -263,7 +263,7 @@ uint32_t igspoker_state::screen_update_igs_video(screen_device &screen, bitmap_i VIDEO_START_MEMBER(igspoker_state,cpokerpk) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igspoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igspoker_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } uint32_t igspoker_state::screen_update_cpokerpk(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/instruct.cpp b/src/mame/drivers/instruct.cpp index 18800bda6cb..3dd09c9c9d2 100644 --- a/src/mame/drivers/instruct.cpp +++ b/src/mame/drivers/instruct.cpp @@ -435,7 +435,7 @@ void instruct_state::instruct(machine_config &config) config.set_default_layout(layout_instruct); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(instruct_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(instruct_state::quickload_cb)); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/intellec4.cpp b/src/mame/drivers/intellec4.cpp index ab4fb38a922..8ea1f468107 100644 --- a/src/mame/drivers/intellec4.cpp +++ b/src/mame/drivers/intellec4.cpp @@ -1133,7 +1133,7 @@ void mod4_state::mod4(machine_config &config) cpu.set_ram_status_map(&mod4_state::intellec4_ram_status); cpu.set_ram_ports_map(&mod4_state::intellec4_ram_ports); cpu.set_program_memory_map(&mod4_state::intellec4_program_memory); - cpu.set_bus_cycle_cb(FUNC(mod4_state::bus_cycle), this); + cpu.set_bus_cycle_cb(FUNC(mod4_state::bus_cycle)); cpu.sync_cb().set(m_bus, FUNC(bus::intellec4::univ_bus_device::sync_in)); m_bus->test_out_cb().set(FUNC(mod4_state::bus_test)); @@ -1359,7 +1359,7 @@ void mod40_state::mod40(machine_config &config) cpu.set_ram_status_map(&mod40_state::intellec4_ram_status); cpu.set_ram_ports_map(&mod40_state::intellec4_ram_ports); cpu.set_program_memory_map(&mod40_state::intellec4_program_memory); - cpu.set_bus_cycle_cb(FUNC(mod40_state::bus_cycle), this); + cpu.set_bus_cycle_cb(FUNC(mod40_state::bus_cycle)); cpu.sync_cb().set(m_bus, FUNC(bus::intellec4::univ_bus_device::sync_in)); cpu.stp_ack_cb().set(FUNC(mod40_state::stp_ack)); diff --git a/src/mame/drivers/intellect02.cpp b/src/mame/drivers/intellect02.cpp index a448b2f3cee..3a2b9f731f0 100644 --- a/src/mame/drivers/intellect02.cpp +++ b/src/mame/drivers/intellect02.cpp @@ -255,7 +255,7 @@ void intel02_state::intel02(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "intellect02", "bin"); - m_cart->set_device_load(FUNC(intel02_state::cart_load), this); + m_cart->set_device_load(FUNC(intel02_state::cart_load)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("intellect02"); diff --git a/src/mame/drivers/interpro.cpp b/src/mame/drivers/interpro.cpp index aa3ba92913e..bbed9c9023b 100644 --- a/src/mame/drivers/interpro.cpp +++ b/src/mame/drivers/interpro.cpp @@ -532,13 +532,9 @@ void interpro_state::interpro_common_map(address_map &map) map(0x7f000400, 0x7f00040f).rw(m_scc1, FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)).umask32(0x000000ff); map(0x7f000410, 0x7f00041f).rw(m_scc2, FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)).umask32(0x000000ff); - map(0x7f000500, 0x7f000503).lrw8("rtc_rw", - [this](offs_t offset) { - return m_rtc->read(offset^1); - }, - [this](offs_t offset, u8 data) { - m_rtc->write(offset^1, data); - }).umask32(0x000000ff); + map(0x7f000500, 0x7f000503).lrw8( + NAME([this] (offs_t offset) { return m_rtc->read(offset^1); }), + NAME([this] (offs_t offset, u8 data) { m_rtc->write(offset^1, data); })).umask32(0x000000ff); map(0x7f000600, 0x7f000600).w(m_rtc, FUNC(mc146818_device::write)); // the system board id prom diff --git a/src/mame/drivers/inufuku.cpp b/src/mame/drivers/inufuku.cpp index afa9dbebeb7..5cb19f1bbf6 100644 --- a/src/mame/drivers/inufuku.cpp +++ b/src/mame/drivers/inufuku.cpp @@ -359,7 +359,7 @@ void inufuku_state::inufuku(machine_config &config) VSYSTEM_SPR(config, m_spr, 0); m_spr->set_offsets(0, 1); // reference videos confirm at least the +1 against tilemaps in 3on3dunk (the highscore header text and black box are meant to be 1 pixel misaligned, although there is currently a priority bug there too) m_spr->set_pdraw(true); - m_spr->set_tile_indirect_cb(FUNC(inufuku_state::inufuku_tile_callback), this); + m_spr->set_tile_indirect_cb(FUNC(inufuku_state::inufuku_tile_callback)); m_spr->set_gfx_region(2); m_spr->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/ipds.cpp b/src/mame/drivers/ipds.cpp index e6e9663d9f0..84829a4dd35 100644 --- a/src/mame/drivers/ipds.cpp +++ b/src/mame/drivers/ipds.cpp @@ -153,7 +153,7 @@ void ipds_state::ipds(machine_config &config) I8275(config, m_crtc, XTAL(19'660'800) / 4); m_crtc->set_character_width(6); - m_crtc->set_display_callback(FUNC(ipds_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(ipds_state::crtc_display_pixels)); generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(ipds_state::kbd_put)); diff --git a/src/mame/drivers/iqblock.cpp b/src/mame/drivers/iqblock.cpp index 5370a943e52..3b7c86eb1d1 100644 --- a/src/mame/drivers/iqblock.cpp +++ b/src/mame/drivers/iqblock.cpp @@ -487,7 +487,7 @@ void iqblock_state::init_iqblock() if ((i & 0x0090) == 0x0010) rom[i] ^= 0x20; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0xfe26, 0xfe26, write8_delegate(FUNC(iqblock_state::iqblock_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xfe26, 0xfe26, write8_delegate(*this, FUNC(iqblock_state::iqblock_prot_w))); m_video_type=1; } @@ -502,7 +502,7 @@ void iqblock_state::init_grndtour() if ((i & 0x0060) == 0x0040) rom[i] ^= 0x20; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0xfe39, 0xfe39, write8_delegate(FUNC(iqblock_state::grndtour_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xfe39, 0xfe39, write8_delegate(*this, FUNC(iqblock_state::grndtour_prot_w))); m_video_type=0; } diff --git a/src/mame/drivers/is48x.cpp b/src/mame/drivers/is48x.cpp index 0bdd2809890..6de9194a742 100644 --- a/src/mame/drivers/is48x.cpp +++ b/src/mame/drivers/is48x.cpp @@ -94,7 +94,7 @@ void is48x_state::is482(machine_config &config) m_crtc->set_char_width(14); // guess m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); - m_crtc->set_update_row_callback(FUNC(is48x_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(is48x_state::update_row)); } ROM_START(is482) // "IS-488-A" on case diff --git a/src/mame/drivers/istrebiteli.cpp b/src/mame/drivers/istrebiteli.cpp index 2121be3167b..2fe3a802067 100644 --- a/src/mame/drivers/istrebiteli.cpp +++ b/src/mame/drivers/istrebiteli.cpp @@ -272,14 +272,14 @@ void istrebiteli_state::init_moto() void istrebiteli_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(istrebiteli_state::get_tile_info), this), TILEMAP_SCAN_ROWS, + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(istrebiteli_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 16, 16, 1); m_tilemap->set_scrolldx(96, 96); } VIDEO_START_MEMBER(istrebiteli_state, moto) { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(istrebiteli_state::get_tile_info), this), TILEMAP_SCAN_ROWS, + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(istrebiteli_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 16, 16, 1); m_tilemap->set_scrolldx(96, 96); m_tilemap->set_scrolldy(8, 8); diff --git a/src/mame/drivers/itech32.cpp b/src/mame/drivers/itech32.cpp index 0e8d9c77dad..3cd7a902dbf 100644 --- a/src/mame/drivers/itech32.cpp +++ b/src/mame/drivers/itech32.cpp @@ -4447,8 +4447,8 @@ void drivedge_state::driver_init() m_vram_height = 1024; m_planes = 1; - m_dsp[0]->space(AS_PROGRAM).install_read_handler(0x8382, 0x8382, read32_delegate(FUNC(drivedge_state::tms1_speedup_r),this)); - m_dsp[1]->space(AS_PROGRAM).install_read_handler(0x8382, 0x8382, read32_delegate(FUNC(drivedge_state::tms2_speedup_r),this)); + m_dsp[0]->space(AS_PROGRAM).install_read_handler(0x8382, 0x8382, read32_delegate(*this, FUNC(drivedge_state::tms1_speedup_r))); + m_dsp[1]->space(AS_PROGRAM).install_read_handler(0x8382, 0x8382, read32_delegate(*this, FUNC(drivedge_state::tms2_speedup_r))); } @@ -4464,10 +4464,10 @@ void itech32_state::init_wcbowl() m_vram_height = 1024; m_planes = 1; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680001, read8smo_delegate(FUNC(itech32_state::trackball_r),this), 0x00ff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680001, read8smo_delegate(*this, FUNC(itech32_state::trackball_r)), 0x00ff); m_maincpu->space(AS_PROGRAM).nop_read(0x578000, 0x57ffff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680080, 0x680081, read16smo_delegate(FUNC(itech32_state::wcbowl_prot_result_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680080, 0x680081, read16smo_delegate(*this, FUNC(itech32_state::wcbowl_prot_result_r))); m_maincpu->space(AS_PROGRAM).nop_write(0x680080, 0x680081); } @@ -4484,11 +4484,11 @@ void itech32_state::init_wcbowlj() m_vram_height = 1024; m_planes = 1; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680001, read8smo_delegate(FUNC(itech32_state::trackball_r),this), 0x00ff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680040, 0x680041, read8smo_delegate(FUNC(itech32_state::trackball_p2_r),this), 0x00ff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680001, read8smo_delegate(*this, FUNC(itech32_state::trackball_r)), 0x00ff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680040, 0x680041, read8smo_delegate(*this, FUNC(itech32_state::trackball_p2_r)), 0x00ff); m_maincpu->space(AS_PROGRAM).nop_read(0x578000, 0x57ffff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680080, 0x680081, read16smo_delegate(FUNC(itech32_state::wcbowl_prot_result_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680080, 0x680081, read16smo_delegate(*this, FUNC(itech32_state::wcbowl_prot_result_r))); m_maincpu->space(AS_PROGRAM).nop_write(0x680080, 0x680081); } @@ -4501,8 +4501,8 @@ void itech32_state::init_sftm_common(int prot_addr) m_itech020_prot_address = prot_addr; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x300000, 0x300003, write8smo_delegate(FUNC(itech32_state::color_w<0>),this), 0x000000ff); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x380000, 0x380003, write8smo_delegate(FUNC(itech32_state::color_w<1>),this), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x300000, 0x300003, write8smo_delegate(*this, FUNC(itech32_state::color_w<0>)), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x380000, 0x380003, write8smo_delegate(*this, FUNC(itech32_state::color_w<1>)), 0x000000ff); } @@ -4531,10 +4531,10 @@ void itech32_state::init_shuffle_bowl_common(int prot_addr) m_itech020_prot_address = prot_addr; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x300000, 0x300003, write8smo_delegate(FUNC(itech32_state::color_w<0>),this), 0x000000ff); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x380000, 0x380003, write8smo_delegate(FUNC(itech32_state::color_w<1>),this), 0x000000ff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x180800, 0x180803, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_p1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x181000, 0x181003, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_p2_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x300000, 0x300003, write8smo_delegate(*this, FUNC(itech32_state::color_w<0>)), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x380000, 0x380003, write8smo_delegate(*this, FUNC(itech32_state::color_w<1>)), 0x000000ff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180800, 0x180803, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x181000, 0x181003, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p2_r))); } @@ -4552,7 +4552,7 @@ void itech32_state::init_wcbowln() void itech32_state::install_timekeeper() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x681000, 0x6817ff, read8sm_delegate(FUNC(timekeeper_device::read), &(*m_timekeeper)), write8sm_delegate(FUNC(timekeeper_device::write), &(*m_timekeeper)), 0xffffffff); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x681000, 0x6817ff, read8sm_delegate(*m_timekeeper, FUNC(timekeeper_device::read)), write8sm_delegate(*m_timekeeper, FUNC(timekeeper_device::write)), 0xffffffff); } void itech32_state::init_wcbowlt() @@ -4582,7 +4582,7 @@ void itech32_state::init_gt3d() Hacked versions of this PCB have been found with GT97 through GTClassic. This is _NOT_ a factory modification */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200003, read16smo_delegate(FUNC(itech32_state::trackball_8bit_r),this), 0x0000ffff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200003, read16smo_delegate(*this, FUNC(itech32_state::trackball_8bit_r)), 0x0000ffff); init_gt_common(); } @@ -4595,8 +4595,8 @@ void itech32_state::init_aama() board share the same sound CPU code and sample ROMs. This board has all versions of GT for it, GT3D through GTClassic */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x180800, 0x180803, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_p1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x181000, 0x181003, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_p2_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180800, 0x180803, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x181000, 0x181003, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p2_r))); init_gt_common(); } @@ -4620,7 +4620,7 @@ void itech32_state::init_s_ver() board: GT97 v1.21S, GT98, GT99, GT2K & GT Classic Versions 1.00S Trackball info is read through 200202 (actually 200203). */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200200, 0x200203, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_p1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200200, 0x200203, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_p1_r))); init_gt_common(); } @@ -4634,7 +4634,7 @@ void itech32_state::init_gt3dl() Player 1 trackball read through 200003 Player 2 trackball read through 200002 */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200003, read32smo_delegate(FUNC(itech32_state::trackball32_4bit_combined_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200003, read32smo_delegate(*this, FUNC(itech32_state::trackball32_4bit_combined_r))); init_gt_common(); } @@ -4642,7 +4642,7 @@ void itech32_state::init_gt3dl() void itech32_state::init_gt2kp() { /* a little extra protection */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680003, read32smo_delegate(FUNC(itech32_state::gt2kp_prot_result_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680003, read32smo_delegate(*this, FUNC(itech32_state::gt2kp_prot_result_r))); init_aama(); /* The protection code is: @@ -4663,7 +4663,7 @@ Label1 bne.s Label1 ; Infinite loop if result isn't 0x01 void itech32_state::init_gtclasscp() { /* a little extra protection */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680003, read32smo_delegate(FUNC(itech32_state::gtclass_prot_result_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x680000, 0x680003, read32smo_delegate(*this, FUNC(itech32_state::gtclass_prot_result_r))); init_aama(); /* The protection code is: diff --git a/src/mame/drivers/itech8.cpp b/src/mame/drivers/itech8.cpp index dd1bfe80380..2a519599aaf 100644 --- a/src/mame/drivers/itech8.cpp +++ b/src/mame/drivers/itech8.cpp @@ -961,7 +961,7 @@ void itech8_state::ninclown_map(address_map &map) map(0x100080, 0x100080).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x100100, 0x100100).w(FUNC(itech8_state::grom_bank_w)); map(0x100100, 0x100101).portr("40"); - map(0x100180, 0x100180).lw8("page_inv_w", [this](u8 data){ page_w(~data); } ); + map(0x100180, 0x100180).lw8(NAME([this](u8 data){ page_w(~data); })); map(0x100180, 0x100181).portr("60"); map(0x100240, 0x100240).w(m_tms34061, FUNC(tms34061_device::latch_w)); map(0x100280, 0x100281).portr("80").nopw(); diff --git a/src/mame/drivers/itt1700.cpp b/src/mame/drivers/itt1700.cpp index 0af62feb5fa..ec993830f2d 100644 --- a/src/mame/drivers/itt1700.cpp +++ b/src/mame/drivers/itt1700.cpp @@ -108,7 +108,7 @@ void itt1700_state::itt1700(machine_config &config) crtc.set_char_width(9); crtc.set_screen("screen"); crtc.set_show_border_area(false); - crtc.set_update_row_callback(FUNC(itt1700_state::update_row), this); + crtc.set_update_row_callback(FUNC(itt1700_state::update_row)); } ROM_START(itt1700) diff --git a/src/mame/drivers/jackie.cpp b/src/mame/drivers/jackie.cpp index 36281367b71..ac6495c2519 100644 --- a/src/mame/drivers/jackie.cpp +++ b/src/mame/drivers/jackie.cpp @@ -165,14 +165,14 @@ TILE_GET_INFO_MEMBER(jackie_state::get_reel_tile_info) void jackie_state::video_start() { - m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel_tile_info<2>),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jackie_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jackie_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jackie_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); for (int i = 0; i < 3; i++) m_reel_tilemap[i]->set_scroll_cols(64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jackie_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/jaguar.cpp b/src/mame/drivers/jaguar.cpp index 982492dbbd5..60c80ee87f3 100644 --- a/src/mame/drivers/jaguar.cpp +++ b/src/mame/drivers/jaguar.cpp @@ -1137,7 +1137,7 @@ void jaguar_state::jaguar_map(address_map &map) void jaguar_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffffd, 0xfffffd).lr8("level6", []() -> u8 { return 0x40; }); + map(0xfffffd, 0xfffffd).lr8([] () -> u8 { return 0x40; }, "level6"); } /* @@ -1349,7 +1349,7 @@ void jaguar_state::r3000_map(address_map &map) map(0x04f03000, 0x04f03fff).mirror(0x00008000).ram().share("gpuram"); map(0x04f10000, 0x04f103ff).rw(FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); map(0x04f16000, 0x04f1600b).r(FUNC(jaguar_state::cojag_gun_input_r)); // GPI02 - map(0x04f17000, 0x04f17003).lr16("4f17000", [this]() { return uint16_t(m_system->read()); }); // GPI03 + map(0x04f17000, 0x04f17003).lr16(NAME([this] () { return uint16_t(m_system->read()); })); // GPI03 map(0x04f17800, 0x04f17803).w(FUNC(jaguar_state::latch_w)); // GPI04 map(0x04f17c00, 0x04f17c03).portr("P1_P2"); // GPI05 map(0x04f1a100, 0x04f1a13f).rw(FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); @@ -1393,7 +1393,7 @@ void jaguar_state::m68020_map(address_map &map) map(0xf03000, 0xf03fff).mirror(0x008000).ram().share("gpuram"); map(0xf10000, 0xf103ff).rw(FUNC(jaguar_state::jerry_regs_r), FUNC(jaguar_state::jerry_regs_w)); map(0xf16000, 0xf1600b).r(FUNC(jaguar_state::cojag_gun_input_r)); // GPI02 - map(0xf17000, 0xf17003).lr16("f17000", [this]() { return uint16_t(m_system->read()); }); // GPI03 + map(0xf17000, 0xf17003).lr16(NAME([this] () { return uint16_t(m_system->read()); })); // GPI03 // map(0xf17800, 0xf17803).w(FUNC(jaguar_state::(latch_w)); // GPI04 map(0xf17c00, 0xf17c03).portr("P1_P2"); // GPI05 map(0xf1a100, 0xf1a13f).rw(FUNC(jaguar_state::dspctrl_r), FUNC(jaguar_state::dspctrl_w)); @@ -1920,11 +1920,11 @@ void jaguar_state::jaguar(machine_config &config) vref.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT); /* quickload */ - QUICKLOAD(config, "quickload", "abs,bin,cof,jag,prg").set_load_callback(FUNC(jaguar_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "abs,bin,cof,jag,prg").set_load_callback(FUNC(jaguar_state::quickload_cb)); /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "jaguar_cart", "j64,rom,bin")); - cartslot.set_device_load(FUNC(jaguar_state::cart_load), this); + cartslot.set_device_load(FUNC(jaguar_state::cart_load)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("jaguar"); @@ -2585,10 +2585,10 @@ void jaguar_state::cojag_common_init(uint16_t gpu_jump_offs, uint16_t spin_pc) /* install synchronization hooks for GPU */ if (m_is_r3000) - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04f0b000 + gpu_jump_offs, 0x04f0b003 + gpu_jump_offs, write32_delegate(FUNC(jaguar_state::gpu_jump_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04f0b000 + gpu_jump_offs, 0x04f0b003 + gpu_jump_offs, write32_delegate(*this, FUNC(jaguar_state::gpu_jump_w))); else - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf0b000 + gpu_jump_offs, 0xf0b003 + gpu_jump_offs, write32_delegate(FUNC(jaguar_state::gpu_jump_w), this)); - m_gpu->space(AS_PROGRAM).install_read_handler(0xf03000 + gpu_jump_offs, 0xf03003 + gpu_jump_offs, read32_delegate(FUNC(jaguar_state::gpu_jump_r), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xf0b000 + gpu_jump_offs, 0xf0b003 + gpu_jump_offs, write32_delegate(*this, FUNC(jaguar_state::gpu_jump_w))); + m_gpu->space(AS_PROGRAM).install_read_handler(0xf03000 + gpu_jump_offs, 0xf03003 + gpu_jump_offs, read32_delegate(*this, FUNC(jaguar_state::gpu_jump_r))); m_gpu_jump_address = &m_gpu_ram[gpu_jump_offs/4]; m_gpu_spin_pc = 0xf03000 + spin_pc; @@ -2606,7 +2606,7 @@ void jaguar_state::init_area51a() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa02030, 0xa02033, write32_delegate(FUNC(jaguar_state::area51_main_speedup_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa02030, 0xa02033, write32_delegate(*this, FUNC(jaguar_state::area51_main_speedup_w))); m_main_speedup = m_mainram + 0x2030/4; #endif } @@ -2619,7 +2619,7 @@ void jaguar_state::init_area51() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ m_main_speedup_max_cycles = 120; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x100062e8, 0x100062eb, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x100062e8, 0x100062eb, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + 0x62e8/4; #endif } @@ -2635,7 +2635,7 @@ void jaguar_state::init_maxforce() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ m_main_speedup_max_cycles = 120; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000865c, 0x1000865f, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000865c, 0x1000865f, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + 0x865c/4; #endif } @@ -2651,7 +2651,7 @@ void jaguar_state::init_area51mx() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa19550, 0xa19557, write32_delegate(FUNC(jaguar_state::area51mx_main_speedup_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa19550, 0xa19557, write32_delegate(*this, FUNC(jaguar_state::area51mx_main_speedup_w))); m_main_speedup = m_mainram + 0x19550/4; #endif } @@ -2668,7 +2668,7 @@ void jaguar_state::init_a51mxr3k() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ m_main_speedup_max_cycles = 120; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x10006f0c, 0x10006f0f, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x10006f0c, 0x10006f0f, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + 0x6f0c/4; #endif } @@ -2682,7 +2682,7 @@ void jaguar_state::init_fishfren() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ m_main_speedup_max_cycles = 200; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x10021b60, 0x10021b63, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x10021b60, 0x10021b63, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + 0x21b60/4; #endif } @@ -2696,10 +2696,10 @@ void jaguar_state::init_freeze_common(offs_t main_speedup_addr) /* install speedup for main CPU */ m_main_speedup_max_cycles = 200; if (main_speedup_addr != 0) { - m_maincpu->space(AS_PROGRAM).install_read_handler(main_speedup_addr, main_speedup_addr + 3, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(main_speedup_addr, main_speedup_addr + 3, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + (main_speedup_addr - 0x10000000)/4; } - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400d900, 0x0400d900 + 3, read32_delegate(FUNC(jaguar_state::main_gpu_wait_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400d900, 0x0400d900 + 3, read32_delegate(*this, FUNC(jaguar_state::main_gpu_wait_r))); m_main_gpu_wait = m_shared_ram + 0xd900/4; #endif } @@ -2719,7 +2719,7 @@ void jaguar_state::init_vcircle() #if ENABLE_SPEEDUP_HACKS /* install speedup for main CPU */ m_main_speedup_max_cycles = 50; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x12005b34, 0x12005b37, read32_delegate(FUNC(jaguar_state::cojagr3k_main_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x12005b34, 0x12005b37, read32_delegate(*this, FUNC(jaguar_state::cojagr3k_main_speedup_r))); m_main_speedup = m_mainram + 0x5b34/4; m_main_speedup = m_mainram2 + 0x5b34/4; #endif diff --git a/src/mame/drivers/jalmah.cpp b/src/mame/drivers/jalmah.cpp index c0b4fd50698..a3bc1ea1c65 100644 --- a/src/mame/drivers/jalmah.cpp +++ b/src/mame/drivers/jalmah.cpp @@ -302,10 +302,10 @@ void urashima_state::video_start() { jalmah_state::video_start(); - m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(urashima_state::get_tile_info_urashima<0>),this),tilemap_mapper_delegate(FUNC(urashima_state::range0_16x16),this),16,16,256,32); + m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(urashima_state::get_tile_info_urashima<0>)), tilemap_mapper_delegate(*this, FUNC(urashima_state::range0_16x16)), 16,16,256,32); // range confirmed with title screen transition in attract mode // also it's confirmed to be 64 x 64 with 2nd tier girls stripping - m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(urashima_state::get_tile_info_urashima<1>),this),tilemap_mapper_delegate(FUNC(urashima_state::range3_8x8),this),8,8,64,64); + m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(urashima_state::get_tile_info_urashima<1>)), tilemap_mapper_delegate(*this, FUNC(urashima_state::range3_8x8)), 8,8,64,64); for(int i=0;i<2;i++) m_layer[i]->set_transparent_pen(15); @@ -1701,53 +1701,53 @@ READ16_MEMBER(jalmah_state::suchiesp_mcu_r) void jalmah_state::init_urashima() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::urashima_mcu_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(FUNC(jalmah_state::urashima_mcu_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::urashima_mcu_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(*this, FUNC(jalmah_state::urashima_mcu_w))); m_mcu_prg = URASHIMA_MCU; } void jalmah_state::init_daireika() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::daireika_mcu_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(FUNC(jalmah_state::daireika_mcu_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::daireika_mcu_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(*this, FUNC(jalmah_state::daireika_mcu_w))); m_mcu_prg = DAIREIKA_MCU; } void jalmah_state::init_mjzoomin() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::mjzoomin_mcu_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(FUNC(jalmah_state::mjzoomin_mcu_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::mjzoomin_mcu_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x80012, 0x80013, write16_delegate(*this, FUNC(jalmah_state::mjzoomin_mcu_w))); m_mcu_prg = MJZOOMIN_MCU; } void jalmah_state::init_kakumei() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::kakumei_mcu_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::kakumei_mcu_r))); m_mcu_prg = KAKUMEI_MCU; } void jalmah_state::init_kakumei2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::kakumei_mcu_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::kakumei_mcu_r))); m_mcu_prg = KAKUMEI2_MCU; } void jalmah_state::init_suchiesp() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(FUNC(jalmah_state::suchiesp_mcu_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80004, 0x80005, read16_delegate(*this, FUNC(jalmah_state::suchiesp_mcu_r))); m_mcu_prg = SUCHIESP_MCU; } /*First version of the MCU*/ GAME( 1989, urashima, 0, urashima, urashima, urashima_state, init_urashima, ROT0, "UPL", "Otogizoushi Urashima Mahjong (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1989, daireika, 0, jalmahv1, daireika, jalmah_state, init_daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) -GAME( 1990, mjzoomin, 0, jalmahv1, mjzoomin, jalmah_state, init_mjzoomin, ROT0, "Jaleco", "Mahjong Channel Zoom In (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1989, daireika, 0, jalmahv1, daireika, jalmah_state, init_daireika, ROT0, "Jaleco / NMK", "Mahjong Daireikai (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) +GAME( 1990, mjzoomin, 0, jalmahv1, mjzoomin, jalmah_state, init_mjzoomin, ROT0, "Jaleco", "Mahjong Channel Zoom In (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_UNEMULATED_PROTECTION ) /*Second version of the MCU*/ GAME( 1990, kakumei, 0, jalmah, kakumei, jalmah_state, init_kakumei, ROT0, "Jaleco", "Mahjong Kakumei (Japan)", MACHINE_IMPERFECT_GRAPHICS ) GAME( 1992, kakumei2, 0, jalmah, kakumei2, jalmah_state, init_kakumei2, ROT0, "Jaleco", "Mahjong Kakumei 2 - Princess League (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/jangou.cpp b/src/mame/drivers/jangou.cpp index 35a57d77769..c30e06ba736 100644 --- a/src/mame/drivers/jangou.cpp +++ b/src/mame/drivers/jangou.cpp @@ -1272,7 +1272,7 @@ READ8_MEMBER(jangou_state::jngolady_rng_r) void jangou_state::init_jngolady() { - m_nsc->space(AS_PROGRAM).install_read_handler(0x08, 0x08, read8_delegate(FUNC(jangou_state::jngolady_rng_r),this) ); + m_nsc->space(AS_PROGRAM).install_read_handler(0x08, 0x08, read8_delegate(*this, FUNC(jangou_state::jngolady_rng_r))); } void jangou_state::init_luckygrl() diff --git a/src/mame/drivers/jazz.cpp b/src/mame/drivers/jazz.cpp index 33349c84d71..e603218b24c 100644 --- a/src/mame/drivers/jazz.cpp +++ b/src/mame/drivers/jazz.cpp @@ -85,8 +85,8 @@ void jazz_state::jazz_common_map(address_map &map) map(0x1fc00000, 0x1fc3ffff).r(m_flash, FUNC(amd_28f020_device::read)); // NOTE: defaults to console on serial1 if no video rom found - map(0x60000000, 0x6000013f).lr8("video_rom", - [](offs_t offset) + map(0x60000000, 0x6000013f).lr8( + [] (offs_t offset) { /* * Board_Identifier, PROM_Stride, PROM_Width, PROM_Size @@ -129,10 +129,10 @@ void jazz_state::jazz_common_map(address_map &map) }; return bogus_g364[offset]; - }).umask64(0xff); + }, "bogus_g364_r").umask64(0xff); map(0x60080000, 0x60081fff).m(m_cvc, FUNC(g364_device::map)); - map(0x60180000, 0x60180007).lw32("g364_reset", [this](u32 data) { m_cvc->reset(); }); + map(0x60180000, 0x60180007).lw32([this] (u32 data) { m_cvc->reset(); }, "g364_reset"); map(0x80000000, 0x80000fff).m(m_mct_adr, FUNC(jazz_mct_adr_device::map)); @@ -142,23 +142,24 @@ void jazz_state::jazz_common_map(address_map &map) // LE: only reads 4000 // BE: read 400d, write 400d, write 400c - map(0x80004000, 0x8000400f).lrw8("rtc", - [this](offs_t offset) { return m_rtc->read(1); }, - [this](offs_t offset, u8 data) { m_rtc->write(1, data); }).umask64(0xff); + map(0x80004000, 0x8000400f).lrw8( + NAME([this] (offs_t offset) { return m_rtc->read(1); }), + NAME([this] (offs_t offset, u8 data) { m_rtc->write(1, data); })).umask64(0xff); map(0x80005000, 0x80005007).rw(m_kbdc, FUNC(ps2_keyboard_controller_device::data_r), FUNC(ps2_keyboard_controller_device::data_w)).umask64(0x00ff); map(0x80005000, 0x80005007).rw(m_kbdc, FUNC(ps2_keyboard_controller_device::status_r), FUNC(ps2_keyboard_controller_device::command_w)).umask64(0xff00); map(0x80006000, 0x80006007).rw(m_ace[0], FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); map(0x80007000, 0x80007007).rw(m_ace[1], FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)); map(0x80008000, 0x80008007).rw(m_lpt, FUNC(pc_lpt_device::read), FUNC(pc_lpt_device::write)).umask64(0xffffffff); map(0x80009000, 0x8000afff).ram().share("nvram"); // 9000-9fff unprotected/a000-afff protected? - map(0x8000b000, 0x8000b007).lr8("mac", - [](offs_t offset) - { - // mac address and checksum - static u8 const mac[] = { 0x00, 0x00, 0x6b, 0x12, 0x34, 0x56, 0x00, 0xf7 }; + map(0x8000b000, 0x8000b007).lr8( + [] (offs_t offset) + { + // mac address and checksum + static u8 const mac[] = { 0x00, 0x00, 0x6b, 0x12, 0x34, 0x56, 0x00, 0xf7 }; - return mac[offset]; - }); + return mac[offset]; + }, + "mac"); // 3 4k pages of nvram: read/write, protected, read-only // last page holds ethernet mac and checksum in bytes 0-7 @@ -167,13 +168,12 @@ void jazz_state::jazz_common_map(address_map &map) map(0x8000d600, 0x8000d607).nopw(); map(0x8000f000, 0x8000f007).lrw8( - "led", - [this]() { return m_led; }, - [this](u8 data) - { - logerror("led 0x%02x (%s)\n", data, machine().describe_context()); - m_led = data; - }).umask64(0xff); + NAME([this] () { return m_led; }), + NAME([this] (u8 data) + { + logerror("led 0x%02x (%s)\n", data, machine().describe_context()); + m_led = data; + })).umask64(0xff); // lots of byte data written to 800 //map(0x800e0000, 0x800fffff).m() // dram config diff --git a/src/mame/drivers/jchan.cpp b/src/mame/drivers/jchan.cpp index 98c91324f27..5a8394bf767 100644 --- a/src/mame/drivers/jchan.cpp +++ b/src/mame/drivers/jchan.cpp @@ -709,8 +709,8 @@ ROM_END void jchan_state::init_jchan() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x403ffe, 0x403fff, write16_delegate(FUNC(jchan_state::main2sub_cmd_w),this)); - m_subcpu->space(AS_PROGRAM).install_write_handler(0x400000, 0x400001, write16_delegate(FUNC(jchan_state::sub2main_cmd_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x403ffe, 0x403fff, write16_delegate(*this, FUNC(jchan_state::main2sub_cmd_w))); + m_subcpu->space(AS_PROGRAM).install_write_handler(0x400000, 0x400001, write16_delegate(*this, FUNC(jchan_state::sub2main_cmd_w))); } diff --git a/src/mame/drivers/jclub2.cpp b/src/mame/drivers/jclub2.cpp index 30019b05df8..94468ef42fc 100644 --- a/src/mame/drivers/jclub2.cpp +++ b/src/mame/drivers/jclub2.cpp @@ -401,8 +401,8 @@ void darkhors_state::video_start() { common_state::video_start(); - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darkhors_state::get_tile_info_0),this), TILEMAP_SCAN_ROWS,16,16, 0x40,0x40); - m_tmap2= &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darkhors_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS,16,16, 0x40,0x40); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darkhors_state::get_tile_info_0)), TILEMAP_SCAN_ROWS, 16,16, 0x40,0x40); + m_tmap2= &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darkhors_state::get_tile_info_1)), TILEMAP_SCAN_ROWS, 16,16, 0x40,0x40); m_tmap->set_transparent_pen(0); m_tmap2->set_transparent_pen(0); diff --git a/src/mame/drivers/jensen.cpp b/src/mame/drivers/jensen.cpp index 3d044e4a5d9..691669a5652 100644 --- a/src/mame/drivers/jensen.cpp +++ b/src/mame/drivers/jensen.cpp @@ -54,46 +54,46 @@ void jensen_state::local_memory(address_map &map) void jensen_state::local_io(address_map &map) { map(0x00000000, 0x0000001f); // EISA INTA cycle - map(0x80000000, 0x9fffffff).lr8("feprom0", [this](offs_t offset) { return m_feprom[0]->read(offset >> 9); }); - map(0xa0000000, 0xbfffffff).lr8("feprom1", [this](offs_t offset) { return m_feprom[1]->read(offset >> 9); }); + map(0x80000000, 0x9fffffff).lr8(NAME([this] (offs_t offset) { return m_feprom[0]->read(offset >> 9); })); + map(0xa0000000, 0xbfffffff).lr8(NAME([this] (offs_t offset) { return m_feprom[1]->read(offset >> 9); })); //map(0xc0000000, 0xc1ffffff); // vl82c106 bits 24:9 -> vlsi 15:0 i.e. >> 9 - map(0xd0000000, 0xd0000000).lrw8("hae", [this]() { return m_hae; }, [this](u8 data) { m_hae = data & 0x7f; }); - map(0xe0000000, 0xe0000000).lrw8("sysctl", [this]() { return m_sysctl; }, [this](u8 data) { m_sysctl = data; logerror("led %x\n", data & 0xf); }); - map(0xf0000000, 0xf0000000).lrw8("spare", [this]() { return m_spare; }, [this](u8 data) { m_spare = data; }); + map(0xd0000000, 0xd0000000).lrw8(NAME([this] () { return m_hae; }), NAME([this] (u8 data) { m_hae = data & 0x7f; })); + map(0xe0000000, 0xe0000000).lrw8(NAME([this] () { return m_sysctl; }), NAME([this] (u8 data) { m_sysctl = data; logerror("led %x\n", data & 0xf); })); + map(0xf0000000, 0xf0000000).lrw8(NAME([this] () { return m_spare; }), NAME([this] (u8 data) { m_spare = data; })); } void jensen_state::eisa_memory(address_map &map) { - map(0x00000000, 0xffffffff).lrw8("eisa_memory", - [this](offs_t offset) - { - LOG("eisa_memory_r 0x%08x\n", (u32(m_hae) << 25) | (offset >> 7)); - - return 0; - }, - [this](offs_t offset, u8 data) - { - LOG("eisa_memory_w 0x%08x data 0x%02x\n", (u32(m_hae) << 25) | (offset >> 7), data); - }); + map(0x00000000, 0xffffffff).lrw8( + NAME([this] (offs_t offset) + { + LOG("eisa_memory_r 0x%08x\n", (u32(m_hae) << 25) | (offset >> 7)); + + return 0; + }), + NAME([this] (offs_t offset, u8 data) + { + LOG("eisa_memory_w 0x%08x data 0x%02x\n", (u32(m_hae) << 25) | (offset >> 7), data); + })); } void jensen_state::eisa_io(address_map &map) { - map(0x00000000, 0xffffffff).lrw8("eisa_io", - [this](offs_t offset) - { - LOG("eisa_io_r offset 0x%08x address 0x%08x count %d (%s)\n", offset, - (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, machine().describe_context()); - - return 0; - }, - [this](offs_t offset, u8 data) - { - LOG("eisa_io_w offset 0x%08x address 0x%08x count %d data 0x%02x (%s)\n", - offset, (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, data, machine().describe_context()); - }); + map(0x00000000, 0xffffffff).lrw8( + NAME([this] (offs_t offset) + { + LOG("eisa_io_r offset 0x%08x address 0x%08x count %d (%s)\n", offset, + (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, machine().describe_context()); + + return 0; + }), + NAME([this] (offs_t offset, u8 data) + { + LOG("eisa_io_w offset 0x%08x address 0x%08x count %d data 0x%02x (%s)\n", + offset, (u32(m_hae) << 25) | (offset >> 7), (offset >> 5) & 3, data, machine().describe_context()); + })); } void jensen_state::jensen(machine_config &config) diff --git a/src/mame/drivers/jokrwild.cpp b/src/mame/drivers/jokrwild.cpp index bce2a8014f9..69886589d94 100644 --- a/src/mame/drivers/jokrwild.cpp +++ b/src/mame/drivers/jokrwild.cpp @@ -152,7 +152,7 @@ TILE_GET_INFO_MEMBER(jokrwild_state::get_bg_tile_info) void jokrwild_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jokrwild_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 24, 26); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jokrwild_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 24, 26); } uint32_t jokrwild_state::screen_update_jokrwild(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/jollyjgr.cpp b/src/mame/drivers/jollyjgr.cpp index 668790c38d7..0ec83f5abde 100644 --- a/src/mame/drivers/jollyjgr.cpp +++ b/src/mame/drivers/jollyjgr.cpp @@ -491,7 +491,7 @@ TILE_GET_INFO_MEMBER(jollyjgr_state::get_bg_tile_info) void jollyjgr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jollyjgr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jollyjgr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); diff --git a/src/mame/drivers/joystand.cpp b/src/mame/drivers/joystand.cpp index 9830771e820..ff55bed33c2 100644 --- a/src/mame/drivers/joystand.cpp +++ b/src/mame/drivers/joystand.cpp @@ -308,8 +308,8 @@ WRITE16_MEMBER(joystand_state::bg15_1_w) void joystand_state::video_start() { - m_bg1_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(joystand_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); - m_bg2_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(joystand_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x40); + m_bg1_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(joystand_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); + m_bg2_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(joystand_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x40); m_bg1_tmap->set_transparent_pen(0xf); m_bg2_tmap->set_transparent_pen(0xf); diff --git a/src/mame/drivers/jr100.cpp b/src/mame/drivers/jr100.cpp index 2d444617639..842c0d20607 100644 --- a/src/mame/drivers/jr100.cpp +++ b/src/mame/drivers/jr100.cpp @@ -401,7 +401,7 @@ void jr100_state::jr100(machine_config &config) m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); /* quickload */ - QUICKLOAD(config, "quickload", "prg", attotime::from_seconds(2)).set_load_callback(FUNC(jr100_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "prg", attotime::from_seconds(2)).set_load_callback(FUNC(jr100_state::quickload_cb)); } diff --git a/src/mame/drivers/jtc.cpp b/src/mame/drivers/jtc.cpp index db9e50d17b9..47e3b5627c6 100644 --- a/src/mame/drivers/jtc.cpp +++ b/src/mame/drivers/jtc.cpp @@ -831,7 +831,7 @@ void jtc_state::basic(machine_config &config) m_centronics->busy_handler().set(FUNC(jtc_state::write_centronics_busy)); /* quickload */ - QUICKLOAD(config, "quickload", "jtc,bin", attotime::from_seconds(2)).set_load_callback(FUNC(jtc_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "jtc,bin", attotime::from_seconds(2)).set_load_callback(FUNC(jtc_state::quickload_cb)); } void jtc_state::jtc(machine_config &config) diff --git a/src/mame/drivers/jubilee.cpp b/src/mame/drivers/jubilee.cpp index ab49044d7ba..9fb8ce5b444 100644 --- a/src/mame/drivers/jubilee.cpp +++ b/src/mame/drivers/jubilee.cpp @@ -281,7 +281,7 @@ TILE_GET_INFO_MEMBER(jubilee_state::get_bg_tile_info) void jubilee_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jubilee_state::get_bg_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jubilee_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scrolldx(8, 0); /* guess */ } diff --git a/src/mame/drivers/juicebox.cpp b/src/mame/drivers/juicebox.cpp index 5c512abc9c7..42f8a75e891 100644 --- a/src/mame/drivers/juicebox.cpp +++ b/src/mame/drivers/juicebox.cpp @@ -263,23 +263,23 @@ void juicebox_state::machine_start() smc_init(); - space.install_readwrite_handler(0x01c00000, 0x01c0000b, read32_delegate(FUNC(s3c44b0_device::cpuwrap_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::cpuwrap_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d00000, 0x01d0002b, read32_delegate(FUNC(s3c44b0_device::uart_0_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::uart_0_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d04000, 0x01d0402b, read32_delegate(FUNC(s3c44b0_device::uart_1_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::uart_1_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d14000, 0x01d14013, read32_delegate(FUNC(s3c44b0_device::sio_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::sio_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d18000, 0x01d18013, read32_delegate(FUNC(s3c44b0_device::iis_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::iis_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d20000, 0x01d20057, read32_delegate(FUNC(s3c44b0_device::gpio_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::gpio_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d30000, 0x01d3000b, read32_delegate(FUNC(s3c44b0_device::wdt_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::wdt_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d40000, 0x01d4000b, read32_delegate(FUNC(s3c44b0_device::adc_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::adc_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d50000, 0x01d5004f, read32_delegate(FUNC(s3c44b0_device::pwm_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::pwm_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d60000, 0x01d6000f, read32_delegate(FUNC(s3c44b0_device::iic_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::iic_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01d80000, 0x01d8000f, read32_delegate(FUNC(s3c44b0_device::clkpow_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::clkpow_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01e00000, 0x01e0003f, read32_delegate(FUNC(s3c44b0_device::irq_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::irq_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01e80000, 0x01e8001b, read32_delegate(FUNC(s3c44b0_device::zdma_0_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::zdma_0_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01e80020, 0x01e8003b, read32_delegate(FUNC(s3c44b0_device::zdma_1_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::zdma_1_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01f00000, 0x01f00047, read32_delegate(FUNC(s3c44b0_device::lcd_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::lcd_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01f80000, 0x01f8001b, read32_delegate(FUNC(s3c44b0_device::bdma_0_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::bdma_0_w), &(*m_s3c44b0))); - space.install_readwrite_handler(0x01f80020, 0x01f8003b, read32_delegate(FUNC(s3c44b0_device::bdma_1_r), &(*m_s3c44b0)), write32_delegate(FUNC(s3c44b0_device::bdma_1_w), &(*m_s3c44b0))); + space.install_readwrite_handler(0x01c00000, 0x01c0000b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::cpuwrap_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::cpuwrap_w))); + space.install_readwrite_handler(0x01d00000, 0x01d0002b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::uart_0_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::uart_0_w))); + space.install_readwrite_handler(0x01d04000, 0x01d0402b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::uart_1_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::uart_1_w))); + space.install_readwrite_handler(0x01d14000, 0x01d14013, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::sio_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::sio_w))); + space.install_readwrite_handler(0x01d18000, 0x01d18013, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::iis_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::iis_w))); + space.install_readwrite_handler(0x01d20000, 0x01d20057, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::gpio_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::gpio_w))); + space.install_readwrite_handler(0x01d30000, 0x01d3000b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::wdt_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::wdt_w))); + space.install_readwrite_handler(0x01d40000, 0x01d4000b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::adc_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::adc_w))); + space.install_readwrite_handler(0x01d50000, 0x01d5004f, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::pwm_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::pwm_w))); + space.install_readwrite_handler(0x01d60000, 0x01d6000f, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::iic_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::iic_w))); + space.install_readwrite_handler(0x01d80000, 0x01d8000f, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::clkpow_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::clkpow_w))); + space.install_readwrite_handler(0x01e00000, 0x01e0003f, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::irq_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::irq_w))); + space.install_readwrite_handler(0x01e80000, 0x01e8001b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::zdma_0_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::zdma_0_w))); + space.install_readwrite_handler(0x01e80020, 0x01e8003b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::zdma_1_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::zdma_1_w))); + space.install_readwrite_handler(0x01f00000, 0x01f00047, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::lcd_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::lcd_w))); + space.install_readwrite_handler(0x01f80000, 0x01f8001b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::bdma_0_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::bdma_0_w))); + space.install_readwrite_handler(0x01f80020, 0x01f8003b, read32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::bdma_1_r)), write32_delegate(*m_s3c44b0, FUNC(s3c44b0_device::bdma_1_w))); } void juicebox_state::machine_reset() diff --git a/src/mame/drivers/jupace.cpp b/src/mame/drivers/jupace.cpp index 2dbd54e6da8..842900a6ec3 100644 --- a/src/mame/drivers/jupace.cpp +++ b/src/mame/drivers/jupace.cpp @@ -790,7 +790,7 @@ void ace_state::ace(machine_config &config) m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); m_cassette->set_interface("jupace_cass"); - SNAPSHOT(config, "snapshot", "ace", attotime::from_seconds(1)).set_load_callback(FUNC(ace_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "ace", attotime::from_seconds(1)).set_load_callback(FUNC(ace_state::snapshot_cb)); I8255A(config, m_ppi); m_ppi->in_pb_callback().set(FUNC(ace_state::sby_r)); diff --git a/src/mame/drivers/k28.cpp b/src/mame/drivers/k28.cpp index c357569157f..509eb45d9ce 100644 --- a/src/mame/drivers/k28.cpp +++ b/src/mame/drivers/k28.cpp @@ -305,7 +305,7 @@ void k28_state::k28(machine_config &config) TMS6100(config, m_tms6100, 3.579545_MHz_XTAL / 15); // CLK tied to 8021 ALE pin - TIMER(config, "on_button").configure_generic(timer_device::expired_delegate()); + TIMER(config, "on_button").configure_generic(nullptr); /* video hardware */ MM5445(config, m_vfd).output_cb().set(FUNC(k28_state::vfd_output_w)); diff --git a/src/mame/drivers/kangaroo.cpp b/src/mame/drivers/kangaroo.cpp index c0d8de228bf..a3c549c8764 100644 --- a/src/mame/drivers/kangaroo.cpp +++ b/src/mame/drivers/kangaroo.cpp @@ -185,7 +185,7 @@ void kangaroo_state::machine_start() MACHINE_START_MEMBER(kangaroo_state,kangaroo_mcu) { kangaroo_state::machine_start(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xef00, 0xefff, read8_delegate(FUNC(kangaroo_state::mcu_sim_r),this), write8_delegate(FUNC(kangaroo_state::mcu_sim_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xef00, 0xefff, read8_delegate(*this, FUNC(kangaroo_state::mcu_sim_r)), write8_delegate(*this, FUNC(kangaroo_state::mcu_sim_w))); save_item(NAME(m_mcu_clock)); } diff --git a/src/mame/drivers/karnov.cpp b/src/mame/drivers/karnov.cpp index 52b7a27ef92..9b6f2bd291c 100644 --- a/src/mame/drivers/karnov.cpp +++ b/src/mame/drivers/karnov.cpp @@ -374,8 +374,8 @@ void karnov_state::karnov_map(address_map &map) map(0x0a0000, 0x0a07ff).ram().w(FUNC(karnov_state::videoram_w)).share("videoram"); map(0x0a0800, 0x0a0fff).w(FUNC(karnov_state::videoram_w)); /* Wndrplnt Mirror */ map(0x0a1000, 0x0a17ff).w(FUNC(karnov_state::playfield_w)).share("pf_data"); - map(0x0a1800, 0x0a1fff).lw16("pf_col_w", [this](offs_t offset, u16 data, u16 mem_mask) - { playfield_w(((offset & 0x1f) << 5) | ((offset & 0x3e0) >> 5), data, mem_mask); }); + map(0x0a1800, 0x0a1fff).lw16([this](offs_t offset, u16 data, u16 mem_mask) + { playfield_w(((offset & 0x1f) << 5) | ((offset & 0x3e0) >> 5), data, mem_mask); }, "pf_col_w"); map(0x0c0000, 0x0c0001).portr("P1_P2").w(FUNC(karnov_state::mcusim_ack_w)); map(0x0c0002, 0x0c0003).portr("SYSTEM"); map(0x0c0003, 0x0c0003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); diff --git a/src/mame/drivers/kaypro.cpp b/src/mame/drivers/kaypro.cpp index 4927826a32d..dfd98fdd458 100644 --- a/src/mame/drivers/kaypro.cpp +++ b/src/mame/drivers/kaypro.cpp @@ -225,7 +225,7 @@ void kaypro_state::kayproii(machine_config &config) BEEP(config, m_beep, 950).add_route(ALL_OUTPUTS, "mono", 1.00); /* piezo-device needs to be measured */ /* devices */ - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(kaypro_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(kaypro_state::quickload_cb)); kaypro_10_keyboard_device &kbd(KAYPRO_10_KEYBOARD(config, "kbd")); kbd.rxd_cb().set("sio", FUNC(z80sio_device::rxb_w)); @@ -316,9 +316,9 @@ void kaypro_state::kaypro484(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(7); - m_crtc->set_update_row_callback(FUNC(kaypro_state::kaypro484_update_row), this); + m_crtc->set_update_row_callback(FUNC(kaypro_state::kaypro484_update_row)); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(kaypro_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(kaypro_state::quickload_cb)); kaypro_10_keyboard_device &kbd(KAYPRO_10_KEYBOARD(config, "kbd")); kbd.rxd_cb().set("sio_1", FUNC(z80sio_device::rxb_w)); diff --git a/src/mame/drivers/kc.cpp b/src/mame/drivers/kc.cpp index e00de4a4b71..439fa3150f1 100644 --- a/src/mame/drivers/kc.cpp +++ b/src/mame/drivers/kc.cpp @@ -138,7 +138,7 @@ void kc_state::kc85_3(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(kc_cassette_formats); @@ -216,7 +216,7 @@ void kc85_4_state::kc85_4(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "kcc", attotime::from_seconds(2)).set_load_callback(FUNC(kc_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(kc_cassette_formats); diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp index fbdaeeaf03f..6b63f7fc764 100644 --- a/src/mame/drivers/kdt6.cpp +++ b/src/mame/drivers/kdt6.cpp @@ -574,8 +574,8 @@ void kdt6_state::machine_start() m_dummy_w = std::make_unique<uint8_t[]>(0x1000); // override the region 0x0000 to 0x1fff here to enable prom reading - m_cpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(FUNC(kdt6_state::page0_r), this)); - m_cpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(FUNC(kdt6_state::page1_r), this)); + m_cpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8_delegate(*this, FUNC(kdt6_state::page0_r))); + m_cpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8_delegate(*this, FUNC(kdt6_state::page1_r))); m_fdc->set_rate(250000); @@ -637,7 +637,7 @@ void kdt6_state::psi98(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(kdt6_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(kdt6_state::crtc_update_row)); m_crtc->out_vsync_callback().set("ctc2", FUNC(z80ctc_device::trg2)); // sound hardware diff --git a/src/mame/drivers/kenseim.cpp b/src/mame/drivers/kenseim.cpp index d36a07e7116..4bf9f1f66f5 100644 --- a/src/mame/drivers/kenseim.cpp +++ b/src/mame/drivers/kenseim.cpp @@ -695,7 +695,7 @@ ROM_END void kenseim_state::init_kenseim() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800030, 0x800037, write16_delegate(FUNC(kenseim_state::cps1_kensei_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800030, 0x800037, write16_delegate(*this, FUNC(kenseim_state::cps1_kensei_w))); init_cps1(); diff --git a/src/mame/drivers/kickgoal.cpp b/src/mame/drivers/kickgoal.cpp index 5bb83e1b919..d7c2db20317 100644 --- a/src/mame/drivers/kickgoal.cpp +++ b/src/mame/drivers/kickgoal.cpp @@ -166,10 +166,10 @@ void kickgoal_state::program_map(address_map &map) map(0x880000, 0x89ffff).nopw(); // during startup map(0x900000, 0x90ffff).nopw(); // during startup - map(0x900001, 0x900001).lw8("eeprom_cs_w", [this](u8 data){ m_eeprom->cs_write(BIT(data, 0)); }); - map(0x900003, 0x900003).lw8("eeprom_clk_w", [this](u8 data){ m_eeprom->clk_write(BIT(data, 0)); }); - map(0x900005, 0x900005).lw8("eeprom_di_w", [this](u8 data){ m_eeprom->di_write(BIT(data, 0)); }); - map(0x900007, 0x900007).lr8("eeprom_r", [this](){ return m_eeprom->do_read(); }); + map(0x900001, 0x900001).lw8(NAME([this] (u8 data) { m_eeprom->cs_write(BIT(data, 0)); })); + map(0x900003, 0x900003).lw8(NAME([this] (u8 data) { m_eeprom->clk_write(BIT(data, 0)); })); + map(0x900005, 0x900005).lw8(NAME([this] (u8 data) { m_eeprom->di_write(BIT(data, 0)); })); + map(0x900007, 0x900007).lr8(NAME([this] () { return m_eeprom->do_read(); })); map(0xa00000, 0xa03fff).ram().w(FUNC(kickgoal_state::fgram_w)).share("fgram"); /* FG Layer */ map(0xa04000, 0xa07fff).ram().w(FUNC(kickgoal_state::bgram_w)).share("bgram"); /* Higher BG Layer */ @@ -547,7 +547,7 @@ void kickgoal_state::init_kickgoal() void kickgoal_state::init_actionhw() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800004, 0x800005, write16_delegate(FUNC(kickgoal_state::actionhw_snd_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800004, 0x800005, write16_delegate(*this, FUNC(kickgoal_state::actionhw_snd_w))); } GAME( 1995, kickgoal, 0, kickgoal, kickgoal, kickgoal_state, init_kickgoal, ROT0, "TCH", "Kick Goal (set 1)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/kingdrby.cpp b/src/mame/drivers/kingdrby.cpp index cee9006c6fb..75da9697672 100644 --- a/src/mame/drivers/kingdrby.cpp +++ b/src/mame/drivers/kingdrby.cpp @@ -213,9 +213,9 @@ TILE_GET_INFO_MEMBER(kingdrby_state::get_sc1_tile_info) void kingdrby_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingdrby_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,24); - m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingdrby_state::get_sc1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,24); - m_sc0w_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingdrby_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingdrby_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8,32,24); + m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingdrby_state::get_sc1_tile_info)), TILEMAP_SCAN_ROWS, 8,8,32,24); + m_sc0w_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingdrby_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8,32,32); m_sc1_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/koftball.cpp b/src/mame/drivers/koftball.cpp index 9429cf05bf9..a474c144ff5 100644 --- a/src/mame/drivers/koftball.cpp +++ b/src/mame/drivers/koftball.cpp @@ -45,14 +45,15 @@ ft5_v6_c4.u58 / class koftball_state : public driver_device { public: - koftball_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + koftball_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this,"maincpu"), m_main_ram(*this, "main_ram"), m_bmc_1_videoram(*this, "bmc_1_videoram"), m_bmc_2_videoram(*this, "bmc_2_videoram"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette") + { } void koftball(machine_config &config); @@ -104,8 +105,8 @@ TILE_GET_INFO_MEMBER(koftball_state::get_t2_tile_info) void koftball_state::video_start() { - m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(koftball_state::get_t1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(koftball_state::get_t2_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_t1_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32); + m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koftball_state::get_t2_tile_info)), TILEMAP_SCAN_ROWS, 8,8,64,32); m_tilemap_1->set_transparent_pen(0); } diff --git a/src/mame/drivers/koikoi.cpp b/src/mame/drivers/koikoi.cpp index 57ff82295c5..93cf170274b 100644 --- a/src/mame/drivers/koikoi.cpp +++ b/src/mame/drivers/koikoi.cpp @@ -151,7 +151,7 @@ void koikoi_state::koikoi_palette(palette_device &palette) const void koikoi_state::video_start() { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(koikoi_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(koikoi_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t koikoi_state::screen_update_koikoi(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp index 02879ecf82f..396e66ec69b 100644 --- a/src/mame/drivers/konamigx.cpp +++ b/src/mame/drivers/konamigx.cpp @@ -1645,7 +1645,7 @@ void konamigx_state::konamigx(machine_config &config) m_palette->enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(konamigx_state::type2_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::type2_tile_callback)); m_k056832->set_config(K056832_BPP_5, 0, 0); m_k056832->set_palette(m_palette); @@ -1656,7 +1656,7 @@ void konamigx_state::konamigx(machine_config &config) m_k054338->set_alpha_invert(1); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::type2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::type2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -26, -23); m_k055673->set_screen(m_screen); m_k055673->set_palette(m_palette); @@ -1708,7 +1708,7 @@ void konamigx_state::sexyparo(machine_config &config) { konamigx(config); - m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -42, -23); } @@ -1729,7 +1729,7 @@ void konamigx_state::dragoonj(machine_config &config) m_k056832->set_config(K056832_BPP_5, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::dragoonj_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::dragoonj_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -53, -23); } @@ -1742,7 +1742,7 @@ void konamigx_state::le2(machine_config &config) m_k056832->set_config(K056832_BPP_8, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::le2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::le2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_LE2, -46, -23); } @@ -1761,7 +1761,7 @@ void konamigx_state::salmndr2(machine_config &config) konamigx(config); m_k056832->set_config(K056832_BPP_6, 1, 0); - m_k055673->set_sprite_callback(FUNC(konamigx_state::salmndr2_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(konamigx_state::salmndr2_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX6, -48, -23); } @@ -1914,7 +1914,7 @@ void konamigx_state::winspike(machine_config &config) m_k053252->set_offsets(24+15, 16); - m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback), this); + m_k056832->set_tile_callback(FUNC(konamigx_state::alpha_tile_callback)); m_k056832->set_config(K056832_BPP_8, 0, 2); m_k055673->set_config(K055673_LAYOUT_LE2, -53, -23); @@ -3852,8 +3852,8 @@ void konamigx_state::init_konamigx() switch (gameDefs[i].special) { case 1: // LE2 guns - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44000, 0xd44003, read32_delegate(FUNC(konamigx_state::le2_gun_H_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44004, 0xd44007, read32_delegate(FUNC(konamigx_state::le2_gun_V_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44000, 0xd44003, read32_delegate(*this, FUNC(konamigx_state::le2_gun_H_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd44004, 0xd44007, read32_delegate(*this, FUNC(konamigx_state::le2_gun_V_r))); break; case 2: // tkmmpzdm hack { @@ -3888,7 +3888,7 @@ void konamigx_state::init_konamigx() break; case 7: // install type 4 Xilinx protection for non-type 3/4 games - m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc0000, 0xcc0007, write32_delegate(FUNC(konamigx_state::type4_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc0000, 0xcc0007, write32_delegate(*this, FUNC(konamigx_state::type4_prot_w))); break; case 8: // tbyahhoo @@ -3905,7 +3905,7 @@ void konamigx_state::init_konamigx() } if (readback == BPP66) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(FUNC(konamigx_state::k_6bpp_rom_long_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd00000, 0xd01fff, read32_delegate(*this, FUNC(konamigx_state::k_6bpp_rom_long_r))); #undef BPP5 diff --git a/src/mame/drivers/konamim2.cpp b/src/mame/drivers/konamim2.cpp index 0c071bfcea1..1c3d8ac46fb 100644 --- a/src/mame/drivers/konamim2.cpp +++ b/src/mame/drivers/konamim2.cpp @@ -1449,8 +1449,8 @@ ROM_END void konamim2_state::install_m48t58() { - read8sm_delegate read_delegate(FUNC(m48t58_device::read), &(*m_m48t58)); - write8sm_delegate write_delegate(FUNC(m48t58_device::write), &(*m_m48t58)); + read8sm_delegate read_delegate(*m_m48t58, FUNC(m48t58_device::read)); + write8sm_delegate write_delegate(*m_m48t58, FUNC(m48t58_device::write)); m_ppc1->space(AS_PROGRAM).install_readwrite_handler(0x36c00000, 0x36c03fff, read_delegate, write_delegate, 0xff00ff00ff00ff00ULL); m_ppc2->space(AS_PROGRAM).install_readwrite_handler(0x36c00000, 0x36c03fff, read_delegate, write_delegate, 0xff00ff00ff00ff00ULL); @@ -1458,8 +1458,8 @@ void konamim2_state::install_m48t58() void konamim2_state::install_ymz280b() { - read8sm_delegate read_delegate(FUNC(ymz280b_device::read), &(*m_ymz280b)); - write8sm_delegate write_delegate(FUNC(ymz280b_device::write), &(*m_ymz280b)); + read8sm_delegate read_delegate(*m_ymz280b, FUNC(ymz280b_device::read)); + write8sm_delegate write_delegate(*m_ymz280b, FUNC(ymz280b_device::write)); m_ppc1->space(AS_PROGRAM).install_readwrite_handler(0x3e800000, 0x3e80000f, read_delegate, write_delegate, 0xff00ff0000000000ULL); m_ppc2->space(AS_PROGRAM).install_readwrite_handler(0x3e800000, 0x3e80000f, read_delegate, write_delegate, 0xff00ff0000000000ULL); diff --git a/src/mame/drivers/konin.cpp b/src/mame/drivers/konin.cpp index 70fc93ec311..8d4758760b0 100644 --- a/src/mame/drivers/konin.cpp +++ b/src/mame/drivers/konin.cpp @@ -80,14 +80,14 @@ void konin_state::konin_io(address_map &map) map.unmap_value_high(); map.global_mask(0xff); map(0x24, 0x24).w(FUNC(konin_state::picu_b_w)); - map(0x80, 0x83).lrw8("ioppi_rw", - [this](offs_t offset) { return m_ioppi->read(offset^3); }, - [this](offs_t offset, u8 data) { m_ioppi->write(offset^3, data); }); + map(0x80, 0x83).lrw8( + NAME([this](offs_t offset) { return m_ioppi->read(offset^3); }), + NAME([this](offs_t offset, u8 data) { m_ioppi->write(offset^3, data); })); map(0xf6, 0xf6).rw("uart", FUNC(i8251_device::status_r), FUNC(i8251_device::control_w)); map(0xf7, 0xf7).rw("uart", FUNC(i8251_device::data_r), FUNC(i8251_device::data_w)); - map(0xf8, 0xfb).lrw8("iopit_rw", - [this](offs_t offset) { return m_iopit->read(offset^3); }, - [this](offs_t offset, u8 data) { m_iopit->write(offset^3, data); }); + map(0xf8, 0xfb).lrw8( + NAME([this](offs_t offset) { return m_iopit->read(offset^3); }), + NAME([this](offs_t offset, u8 data) { m_iopit->write(offset^3, data); })); } /* Input ports */ @@ -106,7 +106,7 @@ void konin_state::konin(machine_config &config) maincpu.set_addrmap(AS_PROGRAM, &konin_state::konin_mem); maincpu.set_addrmap(AS_IO, &konin_state::konin_io); maincpu.out_inte_func().set(m_picu, FUNC(i8214_device::inte_w)); - maincpu.set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(i8212_device::inta_cb), "intlatch", (i8212_device*)nullptr)); + maincpu.set_irq_acknowledge_callback("intlatch", FUNC(i8212_device::inta_cb)); i8212_device &intlatch(I8212(config, "intlatch", 0)); intlatch.md_rd_callback().set_constant(0); diff --git a/src/mame/drivers/konmedal.cpp b/src/mame/drivers/konmedal.cpp index 0e7dc948fae..351d46aca8e 100644 --- a/src/mame/drivers/konmedal.cpp +++ b/src/mame/drivers/konmedal.cpp @@ -416,7 +416,7 @@ void konmedal_state::tsukande(machine_config &config) //m_palette->enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette(m_palette); @@ -449,7 +449,7 @@ void konmedal_state::ddboy(machine_config &config) //m_palette->enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(konmedal_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette(m_palette); @@ -564,7 +564,7 @@ void konmedal_state::shuriboy(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(konmedal_state::shuriboy_tile_callback), this); + m_k052109->set_tile_callback(FUNC(konmedal_state::shuriboy_tile_callback)); MCFG_MACHINE_START_OVERRIDE(konmedal_state, shuriboy) @@ -588,7 +588,7 @@ void konmedal_state::fuusenpn(machine_config &config) screen.set_screen_update(FUNC(konmedal_state::screen_update_fuusenpn)); screen.set_palette(m_palette); - m_k052109->set_tile_callback(FUNC(konmedal_state::fuusenpn_tile_callback), this); + m_k052109->set_tile_callback(FUNC(konmedal_state::fuusenpn_tile_callback)); } ROM_START( tsukande ) diff --git a/src/mame/drivers/konmedal68k.cpp b/src/mame/drivers/konmedal68k.cpp index 80d5622017b..032b5adff70 100644 --- a/src/mame/drivers/konmedal68k.cpp +++ b/src/mame/drivers/konmedal68k.cpp @@ -345,7 +345,7 @@ void konmedal68k_state::kzaurus(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xBGR_888, 8192).enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(konmedal68k_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(konmedal68k_state::tile_callback)); m_k056832->set_config(K056832_BPP_4dj, 1, 0); m_k056832->set_palette(m_palette); diff --git a/src/mame/drivers/ksys573.cpp b/src/mame/drivers/ksys573.cpp index 29721e75a05..8090e588ed4 100644 --- a/src/mame/drivers/ksys573.cpp +++ b/src/mame/drivers/ksys573.cpp @@ -1800,7 +1800,7 @@ void ksys573_state::punchmania_cassette_install(device_t *device) { auto game = downcast<konami573_cassette_xi_device *>(device); auto adc0838 = device->subdevice<adc083x_device>("adc0838"); - adc0838->set_input_callback(adc083x_device::input_delegate(FUNC(konami573_cassette_xi_device::punchmania_inputs_callback), game)); + adc0838->set_input_callback(*game, FUNC(konami573_cassette_xi_device::punchmania_inputs_callback)); } int pad_light[ 6 ]; diff --git a/src/mame/drivers/laserbas.cpp b/src/mame/drivers/laserbas.cpp index d24cec3251f..38409cf90f1 100644 --- a/src/mame/drivers/laserbas.cpp +++ b/src/mame/drivers/laserbas.cpp @@ -400,7 +400,7 @@ void laserbas_state::laserbas(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(laserbas_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(laserbas_state::crtc_update_row)); PALETTE(config, m_palette).set_format(palette_device::RGB_332, 32); diff --git a/src/mame/drivers/lbeach.cpp b/src/mame/drivers/lbeach.cpp index ff7d5893bc9..7c5f07971b0 100644 --- a/src/mame/drivers/lbeach.cpp +++ b/src/mame/drivers/lbeach.cpp @@ -142,9 +142,9 @@ TILE_GET_INFO_MEMBER(lbeach_state::get_fg_tile_info) void lbeach_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lbeach_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lbeach_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lbeach_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lbeach_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_screen->register_screen_bitmap(m_colmap_car); diff --git a/src/mame/drivers/ldplayer.cpp b/src/mame/drivers/ldplayer.cpp index 6ff7c0688a7..0f7fa037b2a 100644 --- a/src/mame/drivers/ldplayer.cpp +++ b/src/mame/drivers/ldplayer.cpp @@ -636,7 +636,7 @@ void ldv1000_state::ldv1000(machine_config &config) { ldplayer_ntsc(config); pioneer_ldv1000_device &laserdisc(PIONEER_LDV1000(config, "laserdisc")); - laserdisc.set_get_disc(FUNC(ldv1000_state::get_disc), this); + laserdisc.set_get_disc(FUNC(ldv1000_state::get_disc)); laserdisc.add_ntsc_screen(config, "screen"); SPEAKER(config, "lspeaker").front_left(); @@ -650,7 +650,7 @@ void pr8210_state::pr8210(machine_config &config) { ldplayer_ntsc(config); pioneer_pr8210_device &laserdisc(PIONEER_PR8210(config, "laserdisc")); - laserdisc.set_get_disc(FUNC(pr8210_state::get_disc), this); + laserdisc.set_get_disc(FUNC(pr8210_state::get_disc)); laserdisc.add_ntsc_screen(config, "screen"); SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/leapfrog_leappad.cpp b/src/mame/drivers/leapfrog_leappad.cpp index 59acdb72347..2c010d3f593 100644 --- a/src/mame/drivers/leapfrog_leappad.cpp +++ b/src/mame/drivers/leapfrog_leappad.cpp @@ -114,7 +114,7 @@ void leapfrog_leappad_state::leapfrog_leappad(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "leapfrog_leappad_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(leapfrog_leappad_state::cart_load), this); + m_cart->set_device_load(FUNC(leapfrog_leappad_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("leapfrog_leappad_cart"); } @@ -129,7 +129,7 @@ void leapfrog_leappad_state::leapfrog_mfleappad(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "leapfrog_mfleappad_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(leapfrog_leappad_state::cart_load), this); + m_cart->set_device_load(FUNC(leapfrog_leappad_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("leapfrog_mfleappad_cart"); SOFTWARE_LIST(config, "cart_list2").set_original("leapfrog_ltleappad_cart"); diff --git a/src/mame/drivers/leapster.cpp b/src/mame/drivers/leapster.cpp index 52cb80e98ea..2f7d04b67a4 100644 --- a/src/mame/drivers/leapster.cpp +++ b/src/mame/drivers/leapster.cpp @@ -324,7 +324,7 @@ void leapster_state::leapster(machine_config &config) screen.set_screen_update(FUNC(leapster_state::screen_update_leapster)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "leapster_cart", "bin").set_device_load(FUNC(leapster_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "leapster_cart", "bin").set_device_load(FUNC(leapster_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("leapster"); diff --git a/src/mame/drivers/legionna.cpp b/src/mame/drivers/legionna.cpp index 97bf35ea8e3..cbf0597ab45 100644 --- a/src/mame/drivers/legionna.cpp +++ b/src/mame/drivers/legionna.cpp @@ -197,9 +197,9 @@ void legionna_state::legionna_map(address_map &map) map(0x100470, 0x100471).nopw(); // toggles 0x2000 / 0x0000, tile bank on some games map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); map(0x100680, 0x100681).nopw(); // irq ack? - map(0x100700, 0x10071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x100700, 0x10071f).lrw8( + NAME([this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100740, 0x100741).portr("DSW1"); map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); @@ -227,9 +227,9 @@ void legionna_state::heatbrl_map(address_map &map) map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); map(0x10074c, 0x10074d).portr("SYSTEM"); - map(0x1007c0, 0x1007df).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x1007c0, 0x1007df).lrw8( + NAME([this] (offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100800, 0x100fff).ram(); // .w(FUNC(legionna_state::background_w)).share("back_data"); map(0x101000, 0x1017ff).ram(); // .w(FUNC(legionna_state::foreground_w).share("fore_data"); map(0x101800, 0x101fff).ram(); // .w(FUNC(legionna_state::midground_w).share("mid_data"); @@ -247,9 +247,9 @@ void legionna_state::godzilla_map(address_map &map) map(0x100470, 0x100471).w(FUNC(legionna_state::heatbrl_setgfxbank)); map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); map(0x100680, 0x100681).nopw(); // irq ack? - map(0x100700, 0x10071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x100700, 0x10071f).lrw8( + NAME([this] (offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100740, 0x100741).portr("DSW1"); map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); @@ -302,7 +302,7 @@ void legionna_state::denjinmk_map(address_map &map) map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); map(0x100680, 0x100681).nopw(); // irq ack? map(0x100700, 0x10071f).r(FUNC(legionna_state::denjinmk_sound_comms_r)) - .lw8("seibu_sound_w", [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + .lw8(NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100740, 0x100741).portr("DSW1"); map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); @@ -329,9 +329,9 @@ void legionna_state::grainbow_map(address_map &map) map(0x100480, 0x100487).w(FUNC(legionna_state::grainbow_layer_config_w)); // probably a COP feature map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); map(0x100680, 0x100681).nopw(); // irq ack? - map(0x100700, 0x10071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x100700, 0x10071f).lrw8( + NAME([this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100740, 0x100741).portr("DSW1"); map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); @@ -356,9 +356,9 @@ void legionna_state::cupsoc_map(address_map &map) map(0x100000, 0x1003ff).ram(); map(0x100600, 0x10064f).rw(m_crtc, FUNC(seibu_crtc_device::read), FUNC(seibu_crtc_device::write)); map(0x100680, 0x100681).nopw(); // irq ack? - map(0x100700, 0x10071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x100700, 0x10071f).lrw8( + NAME([this] (offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100740, 0x100741).portr("DSW1"); map(0x100744, 0x100745).portr("PLAYERS12"); map(0x100748, 0x100749).portr("PLAYERS34"); @@ -384,22 +384,22 @@ void legionna_state::cupsocs_map(address_map &map) legionna_cop_map(map); map(0x000000, 0x0fffff).rom(); map(0x100000, 0x1003ff).ram(); - map(0x100600, 0x10067f).lrw16("crtc_rw", - [this](address_space &space, offs_t offset, u16 mem_mask) { + map(0x100600, 0x10067f).lrw16( + NAME([this](address_space &space, offs_t offset, u16 mem_mask) { return m_crtc->read(space, offset ^ 0x20, mem_mask); - }, - [this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { + }), + NAME([this](address_space &space, offs_t offset, u16 data, u16 mem_mask) { m_crtc->write(space, offset ^ 0x20, data, mem_mask); - }); + })); map(0x100680, 0x100681).nopw(); // irq ack? map(0x100700, 0x100701).portr("DSW1"); map(0x100704, 0x100705).portr("PLAYERS12"); map(0x100708, 0x100709).portr("PLAYERS34"); map(0x10070c, 0x10070d).portr("SYSTEM"); map(0x10071c, 0x10071d).portr("DSW2"); - map(0x100740, 0x10075f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x100740, 0x10075f).lrw8( + NAME([this] (offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x100800, 0x100fff).ram(); // .w(FUNC(legionna_state::background_w)).share("back_data"); map(0x101000, 0x1017ff).ram(); // .w(FUNC(legionna_state::foreground_w).share("fore_data"); map(0x101800, 0x101fff).ram(); // .w(FUNC(legionna_state::midground_w).share("mid_data"); diff --git a/src/mame/drivers/leland.cpp b/src/mame/drivers/leland.cpp index 55c4a7013e1..9c510f9c488 100644 --- a/src/mame/drivers/leland.cpp +++ b/src/mame/drivers/leland.cpp @@ -2954,11 +2954,11 @@ ROM_END void leland_state::init_master_ports(u8 mvram_base, u8 io_base) { /* set up the master CPU VRAM I/O */ - m_master->space(AS_IO).install_readwrite_handler(mvram_base, mvram_base + 0x1f, read8sm_delegate(FUNC(leland_state::leland_mvram_port_r),this), write8sm_delegate(FUNC(leland_state::leland_mvram_port_w),this)); + m_master->space(AS_IO).install_readwrite_handler(mvram_base, mvram_base + 0x1f, read8sm_delegate(*this, FUNC(leland_state::leland_mvram_port_r)), write8sm_delegate(*this, FUNC(leland_state::leland_mvram_port_w))); /* set up the master CPU I/O ports */ - m_master->space(AS_IO).install_read_handler(io_base, io_base + 0x1f, read8sm_delegate(FUNC(leland_state::leland_master_input_r),this)); - m_master->space(AS_IO).install_write_handler(io_base, io_base + 0x0f, write8sm_delegate(FUNC(leland_state::leland_master_output_w),this)); + m_master->space(AS_IO).install_read_handler(io_base, io_base + 0x1f, read8sm_delegate(*this, FUNC(leland_state::leland_master_input_r))); + m_master->space(AS_IO).install_write_handler(io_base, io_base + 0x0f, write8sm_delegate(*this, FUNC(leland_state::leland_master_output_w))); } @@ -2974,8 +2974,8 @@ void leland_state::init_cerberus() init_master_ports(0x40, 0x80); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0x80, 0x80, read8smo_delegate(FUNC(leland_state::cerberus_dial_1_r),this)); - m_master->space(AS_IO).install_read_handler(0x90, 0x90, read8smo_delegate(FUNC(leland_state::cerberus_dial_2_r),this)); + m_master->space(AS_IO).install_read_handler(0x80, 0x80, read8smo_delegate(*this, FUNC(leland_state::cerberus_dial_1_r))); + m_master->space(AS_IO).install_read_handler(0x90, 0x90, read8smo_delegate(*this, FUNC(leland_state::cerberus_dial_2_r))); } @@ -3020,7 +3020,7 @@ void leland_state::init_alleymas() /* kludge warning: the game uses location E0CA to determine if the joysticks are available */ /* it gets cleared by the code, but there is no obvious way for the value to be set to a */ /* non-zero value. If the value is zero, the joystick is never read. */ - m_master->space(AS_PROGRAM).install_write_handler(0xe0ca, 0xe0ca, write8smo_delegate(FUNC(leland_state::alleymas_joystick_kludge),this)); + m_master->space(AS_PROGRAM).install_write_handler(0xe0ca, 0xe0ca, write8smo_delegate(*this, FUNC(leland_state::alleymas_joystick_kludge))); m_alleymas_kludge_mem = m_mainram + (0xe0ca - 0xe000); } @@ -3044,9 +3044,9 @@ void leland_state::init_dangerz() init_master_ports(0x40, 0x80); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0xf4, 0xf4, read8smo_delegate(FUNC(leland_state::dangerz_input_upper_r),this)); - m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(FUNC(leland_state::dangerz_input_y_r),this)); - m_master->space(AS_IO).install_read_handler(0xfc, 0xfc, read8smo_delegate(FUNC(leland_state::dangerz_input_x_r),this)); + m_master->space(AS_IO).install_read_handler(0xf4, 0xf4, read8smo_delegate(*this, FUNC(leland_state::dangerz_input_upper_r))); + m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(*this, FUNC(leland_state::dangerz_input_y_r))); + m_master->space(AS_IO).install_read_handler(0xfc, 0xfc, read8smo_delegate(*this, FUNC(leland_state::dangerz_input_x_r))); save_item(NAME(m_dangerz_x)); save_item(NAME(m_dangerz_y)); @@ -3094,10 +3094,10 @@ void redline_state::init_redlin2p() init_master_ports(0x00, 0xc0); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0xc0, 0xc0, read8smo_delegate(FUNC(redline_state::redline_pedal_1_r),this)); - m_master->space(AS_IO).install_read_handler(0xd0, 0xd0, read8smo_delegate(FUNC(redline_state::redline_pedal_2_r),this)); - m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(FUNC(redline_state::redline_wheel_2_r),this)); - m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(FUNC(redline_state::redline_wheel_1_r),this)); + m_master->space(AS_IO).install_read_handler(0xc0, 0xc0, read8smo_delegate(*this, FUNC(redline_state::redline_pedal_1_r))); + m_master->space(AS_IO).install_read_handler(0xd0, 0xd0, read8smo_delegate(*this, FUNC(redline_state::redline_pedal_2_r))); + m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(*this, FUNC(redline_state::redline_wheel_2_r))); + m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(*this, FUNC(redline_state::redline_wheel_1_r))); } @@ -3126,9 +3126,9 @@ void redline_state::init_viper() init_master_ports(0x00, 0xc0); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0xa4, 0xa4, read8smo_delegate(FUNC(redline_state::dangerz_input_upper_r),this)); - m_master->space(AS_IO).install_read_handler(0xb8, 0xb8, read8smo_delegate(FUNC(redline_state::dangerz_input_y_r),this)); - m_master->space(AS_IO).install_read_handler(0xbc, 0xbc, read8smo_delegate(FUNC(redline_state::dangerz_input_x_r),this)); + m_master->space(AS_IO).install_read_handler(0xa4, 0xa4, read8smo_delegate(*this, FUNC(redline_state::dangerz_input_upper_r))); + m_master->space(AS_IO).install_read_handler(0xb8, 0xb8, read8smo_delegate(*this, FUNC(redline_state::dangerz_input_y_r))); + m_master->space(AS_IO).install_read_handler(0xbc, 0xbc, read8smo_delegate(*this, FUNC(redline_state::dangerz_input_x_r))); save_item(NAME(m_dangerz_x)); save_item(NAME(m_dangerz_y)); @@ -3221,9 +3221,9 @@ void redline_state::init_offroad() init_master_ports(0x40, 0x80); /* yes, this is intentional */ /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(FUNC(redline_state::offroad_wheel_3_r),this)); - m_master->space(AS_IO).install_read_handler(0xf9, 0xf9, read8smo_delegate(FUNC(redline_state::offroad_wheel_1_r),this)); - m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(FUNC(redline_state::offroad_wheel_2_r),this)); + m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_3_r))); + m_master->space(AS_IO).install_read_handler(0xf9, 0xf9, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_1_r))); + m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_2_r))); } @@ -3240,9 +3240,9 @@ void redline_state::init_offroadt() init_master_ports(0x80, 0x40); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(FUNC(redline_state::offroad_wheel_3_r),this)); - m_master->space(AS_IO).install_read_handler(0xf9, 0xf9, read8smo_delegate(FUNC(redline_state::offroad_wheel_1_r),this)); - m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(FUNC(redline_state::offroad_wheel_2_r),this)); + m_master->space(AS_IO).install_read_handler(0xf8, 0xf8, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_3_r))); + m_master->space(AS_IO).install_read_handler(0xf9, 0xf9, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_1_r))); + m_master->space(AS_IO).install_read_handler(0xfb, 0xfb, read8smo_delegate(*this, FUNC(redline_state::offroad_wheel_2_r))); } @@ -3269,7 +3269,7 @@ void ataxx_state::init_ataxx() rotate_memory("slave"); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0x00, 0x03, read8sm_delegate(FUNC(ataxx_state::ataxx_trackball_r),this)); + m_master->space(AS_IO).install_read_handler(0x00, 0x03, read8sm_delegate(*this, FUNC(ataxx_state::ataxx_trackball_r))); } @@ -3279,7 +3279,7 @@ void ataxx_state::init_ataxxj() rotate_memory("slave"); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0x00, 0x03, read8sm_delegate(FUNC(ataxx_state::ataxx_trackball_r),this)); + m_master->space(AS_IO).install_read_handler(0x00, 0x03, read8sm_delegate(*this, FUNC(ataxx_state::ataxx_trackball_r))); } @@ -3301,14 +3301,14 @@ void ataxx_state::init_indyheat() rotate_memory("slave"); /* set up additional input ports */ - m_master->space(AS_IO).install_read_handler(0x00, 0x02, read8sm_delegate(FUNC(ataxx_state::ataxx_trackball_r),this)); - m_master->space(AS_IO).install_read_handler(0x08, 0x0b, read8sm_delegate(FUNC(ataxx_state::indyheat_analog_r),this)); + m_master->space(AS_IO).install_read_handler(0x00, 0x02, read8sm_delegate(*this, FUNC(ataxx_state::ataxx_trackball_r))); + m_master->space(AS_IO).install_read_handler(0x08, 0x0b, read8sm_delegate(*this, FUNC(ataxx_state::indyheat_analog_r))); m_master->space(AS_IO).install_read_port(0x0d, 0x0d, "P1"); m_master->space(AS_IO).install_read_port(0x0e, 0x0e, "P2"); m_master->space(AS_IO).install_read_port(0x0f, 0x0f, "P3"); /* set up additional output ports */ - m_master->space(AS_IO).install_write_handler(0x08, 0x0b, write8sm_delegate(FUNC(ataxx_state::indyheat_analog_w),this)); + m_master->space(AS_IO).install_write_handler(0x08, 0x0b, write8sm_delegate(*this, FUNC(ataxx_state::indyheat_analog_w))); } diff --git a/src/mame/drivers/lethal.cpp b/src/mame/drivers/lethal.cpp index 16fb28cf0be..bf1d46f7c86 100644 --- a/src/mame/drivers/lethal.cpp +++ b/src/mame/drivers/lethal.cpp @@ -516,7 +516,7 @@ void lethal_state::lethalen(machine_config &config) m_palette->enable_shadows(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(lethal_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(lethal_state::tile_callback)); m_k056832->set_config(K056832_BPP_8LE, 1, 0); m_k056832->set_palette(m_palette); @@ -524,7 +524,7 @@ void lethal_state::lethalen(machine_config &config) m_k053244->set_palette(m_palette); m_k053244->set_bpp(6); m_k053244->set_offsets(95, 0); - m_k053244->set_sprite_callback(FUNC(lethal_state::sprite_callback), this); + m_k053244->set_sprite_callback(FUNC(lethal_state::sprite_callback)); K054000(config, "k054000", 0); diff --git a/src/mame/drivers/lethalj.cpp b/src/mame/drivers/lethalj.cpp index 2bd14a5c9dc..2467c68cb8c 100644 --- a/src/mame/drivers/lethalj.cpp +++ b/src/mame/drivers/lethalj.cpp @@ -1015,19 +1015,19 @@ ROM_END void lethalj_state::init_ripribit() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(FUNC(lethalj_state::ripribit_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(*this, FUNC(lethalj_state::ripribit_control_w))); } void lethalj_state::init_cfarm() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(FUNC(lethalj_state::cfarm_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(*this, FUNC(lethalj_state::cfarm_control_w))); } void lethalj_state::init_cclownz() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(FUNC(lethalj_state::cclownz_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04100010, 0x0410001f, write16_delegate(*this, FUNC(lethalj_state::cclownz_control_w))); } diff --git a/src/mame/drivers/liberate.cpp b/src/mame/drivers/liberate.cpp index 1753bde6cb5..ced0d21aa19 100644 --- a/src/mame/drivers/liberate.cpp +++ b/src/mame/drivers/liberate.cpp @@ -77,7 +77,7 @@ WRITE8_MEMBER(liberate_state::deco16_bank_w) m_bank = data; if (m_bank) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(FUNC(liberate_state::deco16_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(*this, FUNC(liberate_state::deco16_io_r))); else m_maincpu->space(AS_PROGRAM).install_read_bank(0x8000, 0x800f, "bank1"); } @@ -180,9 +180,9 @@ WRITE8_MEMBER(liberate_state::prosoccr_io_bank_w) m_bank = data & 1; if (m_bank) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(FUNC(liberate_state::deco16_io_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(*this, FUNC(liberate_state::deco16_io_r))); else - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(FUNC(liberate_state::prosoccr_charram_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x800f, read8_delegate(*this, FUNC(liberate_state::prosoccr_charram_r))); } diff --git a/src/mame/drivers/limenko.cpp b/src/mame/drivers/limenko.cpp index 55ccde825cd..2ee82ecd573 100644 --- a/src/mame/drivers/limenko.cpp +++ b/src/mame/drivers/limenko.cpp @@ -470,9 +470,9 @@ void limenko_state::copy_sprites(bitmap_ind16 &bitmap, bitmap_ind16 &sprites_bit void limenko_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(limenko_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); - m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(limenko_state::get_md_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(limenko_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(limenko_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8,128,64); + m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(limenko_state::get_md_tile_info)), TILEMAP_SCAN_ROWS, 8,8,128,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(limenko_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8,128,64); m_md_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -1079,21 +1079,21 @@ void limenko_state::init_common() void limenko_state::init_dynabomb() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xe2784, 0xe2787, read32_delegate(FUNC(limenko_state::dynabomb_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xe2784, 0xe2787, read32_delegate(*this, FUNC(limenko_state::dynabomb_speedup_r))); init_common(); } void limenko_state::init_legendoh() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x32ab0, 0x32ab3, read32_delegate(FUNC(limenko_state::legendoh_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x32ab0, 0x32ab3, read32_delegate(*this, FUNC(limenko_state::legendoh_speedup_r))); init_common(); } void limenko_state::init_sb2003() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x135800, 0x135803, read32_delegate(FUNC(limenko_state::sb2003_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x135800, 0x135803, read32_delegate(*this, FUNC(limenko_state::sb2003_speedup_r))); init_common(); } @@ -1113,7 +1113,7 @@ void limenko_state::init_spotty() dst[x+2] = (src[x+1]&0x0f) >> 0; } - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6626c, 0x6626f, read32_delegate(FUNC(limenko_state::spotty_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6626c, 0x6626f, read32_delegate(*this, FUNC(limenko_state::spotty_speedup_r))); m_spriteram_bit = 1; diff --git a/src/mame/drivers/lola8a.cpp b/src/mame/drivers/lola8a.cpp index 39ae8719f57..16fd75b7fd6 100644 --- a/src/mame/drivers/lola8a.cpp +++ b/src/mame/drivers/lola8a.cpp @@ -314,7 +314,7 @@ void lola8a_state::lola8a(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(lola8a_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(lola8a_state::crtc_update_row)); crtc.out_vsync_callback().set(FUNC(lola8a_state::crtc_vsync)); PALETTE(config, m_palette, palette_device::BRG_3BIT); diff --git a/src/mame/drivers/looping.cpp b/src/mame/drivers/looping.cpp index 5b0d253411d..bace0c114fd 100644 --- a/src/mame/drivers/looping.cpp +++ b/src/mame/drivers/looping.cpp @@ -252,7 +252,7 @@ TILE_GET_INFO_MEMBER(looping_state::get_tile_info) void looping_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(looping_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(looping_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_bg_tilemap->set_scroll_cols(0x20); } @@ -933,7 +933,7 @@ void looping_state::init_looping() rom[i] = bitswap<8>(rom[i], 0,1,2,3,4,5,6,7); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x7007, read8_delegate(FUNC(looping_state::protection_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x7007, read8_delegate(*this, FUNC(looping_state::protection_r))); } diff --git a/src/mame/drivers/ltcasino.cpp b/src/mame/drivers/ltcasino.cpp index 180f5611986..039fa48ed1c 100644 --- a/src/mame/drivers/ltcasino.cpp +++ b/src/mame/drivers/ltcasino.cpp @@ -430,13 +430,13 @@ void ltcasino_state::init_mv4in1() void ltcasino_state::machine_start_ltcasino() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ltcasino_state::ltcasino_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ltcasino_state::ltcasino_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_lamps.resolve(); } void ltcasino_state::machine_start_ltcasin2() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ltcasino_state::ltcasin2_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ltcasino_state::ltcasin2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_lamps.resolve(); } diff --git a/src/mame/drivers/luckgrln.cpp b/src/mame/drivers/luckgrln.cpp index 541f9446497..2484e6b733a 100644 --- a/src/mame/drivers/luckgrln.cpp +++ b/src/mame/drivers/luckgrln.cpp @@ -188,10 +188,10 @@ TILE_GET_INFO_MEMBER(luckgrln_state::get_reel_tile_info) void luckgrln_state::video_start() { - m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(luckgrln_state::get_reel_tile_info<0>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(luckgrln_state::get_reel_tile_info<1>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(luckgrln_state::get_reel_tile_info<2>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(luckgrln_state::get_reel_tile_info<3>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(luckgrln_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(luckgrln_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(luckgrln_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(luckgrln_state::get_reel_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); for (uint8_t i = 0; i < 4; i++) { diff --git a/src/mame/drivers/lviv.cpp b/src/mame/drivers/lviv.cpp index f529443a2b1..6ea1c7e75ad 100644 --- a/src/mame/drivers/lviv.cpp +++ b/src/mame/drivers/lviv.cpp @@ -460,7 +460,7 @@ void lviv_state::lviv(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* snapshot */ - SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(lviv_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(lviv_state::snapshot_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(lviv_lvt_format); diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index e6b80ef5e8e..149429aa548 100644 --- a/src/mame/drivers/lwings.cpp +++ b/src/mame/drivers/lwings.cpp @@ -1777,8 +1777,8 @@ ROM_END void lwings_state::init_avengersb() { - /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf80c, 0xf80c, write8smo_delegate(FUNC(generic_latch_8_device::write), (generic_latch_8_device*)m_soundlatch)); + // set up protection handlers + m_maincpu->space(AS_PROGRAM).install_write_handler(0xf80c, 0xf80c, write8smo_delegate(*m_soundlatch, FUNC(generic_latch_8_device::write))); } diff --git a/src/mame/drivers/lynx.cpp b/src/mame/drivers/lynx.cpp index a5f71e1a7aa..272587ffcaa 100644 --- a/src/mame/drivers/lynx.cpp +++ b/src/mame/drivers/lynx.cpp @@ -98,15 +98,15 @@ void lynx_state::lynx(machine_config &config) /* sound hardware */ SPEAKER(config, "mono").front_center(); LYNX_SND(config, m_sound, 0); - m_sound->set_timer_delegate(FUNC(lynx_state::sound_cb), this); + m_sound->set_timer_delegate(FUNC(lynx_state::sound_cb)); m_sound->add_route(ALL_OUTPUTS, "mono", 0.50); /* devices */ - QUICKLOAD(config, "quickload", "o").set_load_callback(FUNC(lynx_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "o").set_load_callback(FUNC(lynx_state::quickload_cb)); generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "lynx_cart", "lnx,lyx")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(lynx_state::cart_load), this); + cartslot.set_device_load(FUNC(lynx_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("lynx"); @@ -123,7 +123,7 @@ void lynx_state::lynx2(machine_config &config) SPEAKER(config, "rspeaker").front_right(); config.device_remove("lynx"); LYNX2_SND(config.replace(), m_sound, 0); - m_sound->set_timer_delegate(FUNC(lynx_state::sound_cb), this); + m_sound->set_timer_delegate(FUNC(lynx_state::sound_cb)); m_sound->add_route(0, "lspeaker", 0.50); m_sound->add_route(1, "rspeaker", 0.50); } diff --git a/src/mame/drivers/m14.cpp b/src/mame/drivers/m14.cpp index f277b331ce6..56a1c2fb054 100644 --- a/src/mame/drivers/m14.cpp +++ b/src/mame/drivers/m14.cpp @@ -154,7 +154,7 @@ TILE_GET_INFO_MEMBER(m14_state::m14_get_tile_info) void m14_state::video_start() { - m_m14_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m14_state::m14_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_m14_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m14_state::m14_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/m20.cpp b/src/mame/drivers/m20.cpp index 4c43bb26821..b7cb018614f 100644 --- a/src/mame/drivers/m20.cpp +++ b/src/mame/drivers/m20.cpp @@ -820,7 +820,7 @@ void m20_state::m20(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(16); - crtc.set_update_row_callback(FUNC(m20_state::update_row), this); + crtc.set_update_row_callback(FUNC(m20_state::update_row)); I8255A(config, m_i8255, 0); diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp index f875c49b9c2..e97675a6e50 100644 --- a/src/mame/drivers/m3.cpp +++ b/src/mame/drivers/m3.cpp @@ -136,7 +136,7 @@ void m3_state::m3(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(7); - crtc.set_update_row_callback(FUNC(m3_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(m3_state::crtc_update_row)); } ROM_START( m3 ) diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp index 337f86df98b..bd7b14dedae 100644 --- a/src/mame/drivers/m5.cpp +++ b/src/mame/drivers/m5.cpp @@ -519,7 +519,7 @@ WRITE8_MEMBER( m5_state::mem64KBI_w ) //out 0x6c //if AUTOSTART is on don't load any ROM cart if (m_cart && (m_DIPS->read() & 2) != 2) { - program.install_read_handler(0x2000, 0x6fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom), (m5_cart_slot_device*)m_cart)); //m_cart pointer to rom cart + program.install_read_handler(0x2000, 0x6fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); //m_cart pointer to rom cart program.unmap_write(0x2000, 0x3fff); } else @@ -680,7 +680,7 @@ WRITE8_MEMBER( m5_state::mem64KRX_w ) //out 0x7f //if KRX ROM is paged out page in cart ROM if any if (m_cart && BIT(m_ram_mode, 1) == 0 ) { - program.install_read_handler(0x2000, 0x6fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom),(m5_cart_slot_device*)m_cart)); + program.install_read_handler(0x2000, 0x6fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); program.unmap_write(0x2000, 0x6fff); } @@ -1281,10 +1281,10 @@ void m5_state::machine_reset() case EM_5: program.install_rom(0x0000, 0x1fff, memregion(Z80_TAG)->base()); program.unmap_write(0x0000, 0x1fff); - program.install_readwrite_handler(0x8000, 0xffff, read8_delegate(FUNC(m5_cart_slot_device::read_ram),(m5_cart_slot_device*)m_cart_ram), write8_delegate(FUNC(m5_cart_slot_device::write_ram),(m5_cart_slot_device*)m_cart_ram)); + program.install_readwrite_handler(0x8000, 0xffff, read8_delegate(*m_cart_ram, FUNC(m5_cart_slot_device::read_ram)), write8_delegate(*m_cart_ram, FUNC(m5_cart_slot_device::write_ram))); if (m_cart) { - program.install_read_handler(0x2000, 0x6fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom),(m5_cart_slot_device*)m_cart)); + program.install_read_handler(0x2000, 0x6fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); program.unmap_write(0x2000, 0x6fff); } break; @@ -1296,7 +1296,7 @@ void m5_state::machine_reset() //if AUTOSTART is on then page out cart and start tape loading if (m_cart && ((m_DIPS->read() & 2) != 2)) { - program.install_read_handler(0x2000, 0x3fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom),(m5_cart_slot_device*)m_cart)); + program.install_read_handler(0x2000, 0x3fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); program.unmap_write(0x2000, 0x3fff); } else @@ -1342,7 +1342,7 @@ void m5_state::machine_reset() { program.install_rom(0x0000, 0x1fff, memregion(Z80_TAG)->base()); program.unmap_write(0x0000, 0x1fff); - program.install_read_handler(0x2000, 0x6fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom),(m5_cart_slot_device*)m_cart)); + program.install_read_handler(0x2000, 0x6fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); program.unmap_write(0x2000, 0x6fff); } m_ram_mode=0; @@ -1381,7 +1381,7 @@ void brno_state::machine_reset() if (m_cart) { - program.install_read_handler(0x2000, 0x6fff, read8_delegate(FUNC(m5_cart_slot_device::read_rom),(m5_cart_slot_device*)m_cart)); + program.install_read_handler(0x2000, 0x6fff, read8_delegate(*m_cart, FUNC(m5_cart_slot_device::read_rom))); program.unmap_write(0x2000, 0x6fff); } @@ -1526,7 +1526,7 @@ void brno_state::brno(machine_config &config) // only one floppy drive //config.device_remove(WD2797_TAG":1"); - //SNAPSHOT(config, "snapshot", "rmd", 0).set_load_callback(brno_state::snapshot_cb), this); + //SNAPSHOT(config, "snapshot", "rmd", 0).set_load_callback(brno_state::snapshot_cb)); // software list SOFTWARE_LIST(config, "flop_list").set_original("m5_flop"); diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp index 56b13888e04..252597a4f5a 100644 --- a/src/mame/drivers/m63.cpp +++ b/src/mame/drivers/m63.cpp @@ -335,8 +335,8 @@ TILE_GET_INFO_MEMBER(m63_state::get_fg_tile_info) VIDEO_START_MEMBER(m63_state,m63) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m63_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(m63_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(*this, FUNC(m63_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m63_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/m68705prg.cpp b/src/mame/drivers/m68705prg.cpp index 9bb8e2618f7..0f4a23fa273 100644 --- a/src/mame/drivers/m68705prg.cpp +++ b/src/mame/drivers/m68705prg.cpp @@ -232,10 +232,10 @@ void m68705prg_state_base::m68705prg(machine_config &config) config.m_perfect_cpu_quantum = subtag("mcu"); GENERIC_SOCKET(config, m_eprom_image, generic_plain_slot, "eprom", "bin,rom"); - m_eprom_image->set_device_load(FUNC(m68705prg_state_base::eprom_load), this); + m_eprom_image->set_device_load(FUNC(m68705prg_state_base::eprom_load)); GENERIC_SOCKET(config, m_mcu_image, generic_plain_slot, "mcu", "bin,rom"); - m_mcu_image->set_device_load(FUNC(m68705prg_state_base::mcu_load), this); + m_mcu_image->set_device_load(FUNC(m68705prg_state_base::mcu_load)); config.set_default_layout(layout_m68705prg); } diff --git a/src/mame/drivers/m72.cpp b/src/mame/drivers/m72.cpp index 66d343195d0..f5f698c7ca4 100644 --- a/src/mame/drivers/m72.cpp +++ b/src/mame/drivers/m72.cpp @@ -655,8 +655,8 @@ void m72_state::install_protection_handler(const u8 *code,const u8 *crc) m_protection_code = code; m_protection_crc = crc; m_maincpu->space(AS_PROGRAM).install_read_bank(0xb0000, 0xb0fff, "bank1"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16_delegate(FUNC(m72_state::protection_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16_delegate(FUNC(m72_state::protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xb0ffa, 0xb0ffb, read16_delegate(*this, FUNC(m72_state::protection_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb0000, 0xb0fff, write16_delegate(*this, FUNC(m72_state::protection_w))); membank("bank1")->configure_entry(0, m_protection_ram.get()); save_pointer(NAME(m_protection_ram), 0x1000/2); @@ -665,36 +665,36 @@ void m72_state::install_protection_handler(const u8 *code,const u8 *crc) void m72_state::init_bchopper() { install_protection_handler(bchopper_code,bchopper_crc); - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::bchopper_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::bchopper_sample_trigger_w))); } void m72_state::init_nspirit() { install_protection_handler(nspirit_code,nspirit_crc); - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::nspirit_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::nspirit_sample_trigger_w))); } void m72_state::init_imgfight() { install_protection_handler(imgfight_code,imgfightj_crc); - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::imgfight_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::imgfight_sample_trigger_w))); } void m72_state::init_dbreedm72() { install_protection_handler(dbreedm72_code,dbreedm72_crc); - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::dbreedm72_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::dbreedm72_sample_trigger_w))); } void m72_state::init_dkgenm72() { install_protection_handler(dkgenm72_code,dkgenm72_crc); - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::dkgenm72_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::dkgenm72_sample_trigger_w))); } void m72_state::init_gallop() { - m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(FUNC(m72_state::gallop_sample_trigger_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0xc0, 0xc1, write16_delegate(*this, FUNC(m72_state::gallop_sample_trigger_w))); } diff --git a/src/mame/drivers/m90.cpp b/src/mame/drivers/m90.cpp index e0f63a5fe2b..f2b459b0c17 100644 --- a/src/mame/drivers/m90.cpp +++ b/src/mame/drivers/m90.cpp @@ -851,7 +851,7 @@ void m90_state::dynablsb(machine_config &config) m_soundcpu->set_addrmap(AS_IO, &m90_state::dynablsb_sound_cpu_io_map); m_soundcpu->set_periodic_int(FUNC(m90_state::irq0_line_hold), attotime::from_hz(64*60)); /* half the sample rate of the original */ - m_soundcpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate()); + m_soundcpu->remove_irq_acknowledge_callback(); m_screen->set_size(320, 240); m_screen->set_visarea(0, 319, 0, 239); diff --git a/src/mame/drivers/macrossp.cpp b/src/mame/drivers/macrossp.cpp index d0fe5b3b565..e4a7cdd6986 100644 --- a/src/mame/drivers/macrossp.cpp +++ b/src/mame/drivers/macrossp.cpp @@ -712,13 +712,13 @@ WRITE32_MEMBER(macrossp_state::quizmoon_speedup_w) void macrossp_state::init_macrossp() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf10158, 0xf1015b, write32_delegate(FUNC(macrossp_state::macrossp_speedup_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xf10158, 0xf1015b, write32_delegate(*this, FUNC(macrossp_state::macrossp_speedup_w))); } void macrossp_state::init_quizmoon() { #ifdef UNUSED_FUNCTION - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf00020, 0xf00023, write32_delegate(FUNC(macrossp_state::quizmoon_speedup_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xf00020, 0xf00023, write32_delegate(*this, FUNC(macrossp_state::quizmoon_speedup_w))); #endif } diff --git a/src/mame/drivers/macs.cpp b/src/mame/drivers/macs.cpp index 5bc2554a204..ca82efc7d70 100644 --- a/src/mame/drivers/macs.cpp +++ b/src/mame/drivers/macs.cpp @@ -508,7 +508,7 @@ void macs_state::macs(machine_config &config) ST0016_CPU(config, m_maincpu, 8000000); // 8 MHz ? m_maincpu->set_memory_map(&macs_state::macs_mem); m_maincpu->set_io_map(&macs_state::macs_io); - m_maincpu->set_dma_offs_callback(FUNC(macs_state::dma_offset), this); + m_maincpu->set_dma_offs_callback(FUNC(macs_state::dma_offset)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); diff --git a/src/mame/drivers/magic10.cpp b/src/mame/drivers/magic10.cpp index 6899800253c..13cf7246d43 100644 --- a/src/mame/drivers/magic10.cpp +++ b/src/mame/drivers/magic10.cpp @@ -253,9 +253,9 @@ TILE_GET_INFO_MEMBER(magic10_state::get_layer2_tile_info) void magic10_state::video_start() { - m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magic10_state::get_layer0_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magic10_state::get_layer1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_layer2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magic10_state::get_layer2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magic10_state::get_layer0_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magic10_state::get_layer1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_layer2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magic10_state::get_layer2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_layer1_tilemap->set_transparent_pen(0); m_layer2_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/magicfly.cpp b/src/mame/drivers/magicfly.cpp index 63c2f06d573..6d46a08e875 100644 --- a/src/mame/drivers/magicfly.cpp +++ b/src/mame/drivers/magicfly.cpp @@ -542,7 +542,7 @@ TILE_GET_INFO_MEMBER(magicfly_state::get_magicfly_tile_info) void magicfly_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magicfly_state::get_magicfly_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magicfly_state::get_magicfly_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); } @@ -573,7 +573,7 @@ TILE_GET_INFO_MEMBER(magicfly_state::get_7mezzo_tile_info) VIDEO_START_MEMBER(magicfly_state, 7mezzo) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magicfly_state::get_7mezzo_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magicfly_state::get_7mezzo_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 29); } diff --git a/src/mame/drivers/magictg.cpp b/src/mame/drivers/magictg.cpp index e839285a4d3..adfc95c4f90 100644 --- a/src/mame/drivers/magictg.cpp +++ b/src/mame/drivers/magictg.cpp @@ -929,17 +929,13 @@ void magictg_state::magictg(machine_config &config) DMADAC(config, "dac2").add_route(ALL_OUTPUTS, "lspeaker", 1.0); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(magictg_state::pci_dev0_r), this); - pcibus.set_device_write(0, FUNC(magictg_state::pci_dev0_w), this); - pcibus.set_device_read (7, FUNC(magictg_state::voodoo_0_pci_r), this); - pcibus.set_device_write(7, FUNC(magictg_state::voodoo_0_pci_w), this); + pcibus.set_device(0, FUNC(magictg_state::pci_dev0_r), FUNC(magictg_state::pci_dev0_w)); + pcibus.set_device(7, FUNC(magictg_state::voodoo_0_pci_r), FUNC(magictg_state::voodoo_0_pci_w)); #if defined(USE_TWO_3DFX) - pcibus.set_device_read (8, FUNC(magictg_state::voodoo_1_pci_r), this); - pcibus.set_device_write(8, FUNC(magictg_state::voodoo_1_pci_w), this); + pcibus.set_device(8, FUNC(magictg_state::voodoo_1_pci_r), FUNC(magictg_state::voodoo_1_pci_w)); #endif - pcibus.set_device_read (9, FUNC(magictg_state::zr36120_pci_r), this); // TODO: ZR36120 device - pcibus.set_device_write(9, FUNC(magictg_state::zr36120_pci_w), this); // TODO: ZR36120 device + pcibus.set_device(9, FUNC(magictg_state::zr36120_pci_r), FUNC(magictg_state::zr36120_pci_w)); // TODO: ZR36120 device VOODOO_1(config, m_voodoo[0], STD_VOODOO_1_CLOCK); m_voodoo[0]->set_fbmem(2); diff --git a/src/mame/drivers/mainevt.cpp b/src/mame/drivers/mainevt.cpp index 47c2ec7f72a..c793f5280af 100644 --- a/src/mame/drivers/mainevt.cpp +++ b/src/mame/drivers/mainevt.cpp @@ -443,13 +443,13 @@ void mainevt_state::mainevt(machine_config &config) K052109(config, m_k052109, 24_MHz_XTAL); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(mainevt_state::mainevt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(mainevt_state::mainevt_tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); K051960(config, m_k051960, 24_MHz_XTAL); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(mainevt_state::mainevt_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(mainevt_state::mainevt_sprite_callback)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -492,13 +492,13 @@ void mainevt_state::devstors(machine_config &config) K052109(config, m_k052109, 24_MHz_XTAL); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(mainevt_state::dv_tile_callback), this); + m_k052109->set_tile_callback(FUNC(mainevt_state::dv_tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); K051960(config, m_k051960, 24_MHz_XTAL); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(mainevt_state::dv_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(mainevt_state::dv_sprite_callback)); K051733(config, "k051733", 0); diff --git a/src/mame/drivers/majorpkr.cpp b/src/mame/drivers/majorpkr.cpp index a0379db64a6..a5e39d4bd91 100644 --- a/src/mame/drivers/majorpkr.cpp +++ b/src/mame/drivers/majorpkr.cpp @@ -557,8 +557,8 @@ TILE_GET_INFO_MEMBER(majorpkr_state::fg_get_tile_info) void majorpkr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(majorpkr_state::bg_get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(majorpkr_state::fg_get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(majorpkr_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(majorpkr_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 36, 28); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/mappy.cpp b/src/mame/drivers/mappy.cpp index f41d55efb89..d3b62a7774f 100644 --- a/src/mame/drivers/mappy.cpp +++ b/src/mame/drivers/mappy.cpp @@ -2064,7 +2064,9 @@ void mappy_state::init_grobda() However, removing the 15XX from the board causes sound to disappear completely, so the 15XX may still play some part in conveying speech to the DAC. */ - m_subcpu->space(AS_PROGRAM).install_write_handler(0x0002, 0x0002, write8_delegate(FUNC(dac_byte_interface::data_w), (dac_byte_interface *)m_dac)); + write8_delegate dac_w(*this); + dac_w.set(*m_dac, FUNC(dac_byte_interface::data_w)); + m_subcpu->space(AS_PROGRAM).install_write_handler(0x0002, 0x0002, dac_w); } diff --git a/src/mame/drivers/marinedt.cpp b/src/mame/drivers/marinedt.cpp index 76150efe426..28ba37f3524 100644 --- a/src/mame/drivers/marinedt.cpp +++ b/src/mame/drivers/marinedt.cpp @@ -213,7 +213,7 @@ void marinedt_state::init_seabitmap() void marinedt_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(marinedt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(marinedt_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/mastboyo.cpp b/src/mame/drivers/mastboyo.cpp index 748154d4531..f07e63ac0cd 100644 --- a/src/mame/drivers/mastboyo.cpp +++ b/src/mame/drivers/mastboyo.cpp @@ -74,7 +74,7 @@ TILE_GET_INFO_MEMBER(mastboyo_state::get_fg_tile_info) void mastboyo_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mastboyo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mastboyo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t mastboyo_state::screen_update_mastboyo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp index 2fb76a59e81..128fa91beff 100644 --- a/src/mame/drivers/maygay1b.cpp +++ b/src/mame/drivers/maygay1b.cpp @@ -860,6 +860,6 @@ void maygay1b_state::init_m1() // if there is no OKI region disable writes here, the rom might be missing, so alert user if (m_oki_region == nullptr) { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(FUNC(maygay1b_state::m1ab_no_oki_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x2420, 0x2421, write8_delegate(*this, FUNC(maygay1b_state::m1ab_no_oki_w))); } } diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp index baea9d0482d..024e0553408 100644 --- a/src/mame/drivers/maygayv1.cpp +++ b/src/mame/drivers/maygayv1.cpp @@ -827,7 +827,7 @@ INPUT_PORTS_END void maygayv1_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffffa, 0xfffffb).lr16("duart irq", [this]() -> u16 { return m_duart68681->get_irq_vector(); }); + map(0xfffffa, 0xfffffb).lr16(NAME([this] () -> u16 { return m_duart68681->get_irq_vector(); })); } WRITE_LINE_MEMBER(maygayv1_state::duart_irq_handler) diff --git a/src/mame/drivers/mbc200.cpp b/src/mame/drivers/mbc200.cpp index 105ea31fe1f..07ef1b84754 100644 --- a/src/mame/drivers/mbc200.cpp +++ b/src/mame/drivers/mbc200.cpp @@ -327,7 +327,7 @@ void mbc200_state::mbc200(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mbc200_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(mbc200_state::update_row)); // sound SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mbc55x.cpp b/src/mame/drivers/mbc55x.cpp index ecfbcfebc00..4cab6e24bae 100644 --- a/src/mame/drivers/mbc55x.cpp +++ b/src/mame/drivers/mbc55x.cpp @@ -323,7 +323,7 @@ void mbc55x_state::mbc55x(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mbc55x_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(mbc55x_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(mbc55x_state::vid_vsync_changed)); m_crtc->out_hsync_callback().set(FUNC(mbc55x_state::vid_hsync_changed)); diff --git a/src/mame/drivers/mbee.cpp b/src/mame/drivers/mbee.cpp index a875a3338ee..fcab9586626 100644 --- a/src/mame/drivers/mbee.cpp +++ b/src/mame/drivers/mbee.cpp @@ -682,12 +682,12 @@ void mbee_state::mbee(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr)); m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs)); - QUICKLOAD(config, "quickload", "mwb,com,bee", attotime::from_seconds(3)).set_load_callback(FUNC(mbee_state::quickload_bee), this); - QUICKLOAD(config, "quickload2", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(mbee_state::quickload_bin), this); + QUICKLOAD(config, "quickload", "mwb,com,bee", attotime::from_seconds(3)).set_load_callback(FUNC(mbee_state::quickload_bee)); + QUICKLOAD(config, "quickload2", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(mbee_state::quickload_bin)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_a)); @@ -741,12 +741,12 @@ void mbee_state::mbeeic(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(mbee_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(mbee_state::crtc_update_addr)); m_crtc->out_vsync_callback().set(FUNC(mbee_state::crtc_vs)); - QUICKLOAD(config, "quickload", "mwb,com,bee", attotime::from_seconds(2)).set_load_callback(FUNC(mbee_state::quickload_bee), this); - QUICKLOAD(config, "quickload2", "bin", attotime::from_seconds(2)).set_load_callback(FUNC(mbee_state::quickload_bin), this); + QUICKLOAD(config, "quickload", "mwb,com,bee", attotime::from_seconds(2)).set_load_callback(FUNC(mbee_state::quickload_bee)); + QUICKLOAD(config, "quickload2", "bin", attotime::from_seconds(2)).set_load_callback(FUNC(mbee_state::quickload_bin)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->ack_handler().set(m_pio, FUNC(z80pio_device::strobe_a)); diff --git a/src/mame/drivers/mcatadv.cpp b/src/mame/drivers/mcatadv.cpp index d062e19c0bd..b24ac4dd117 100644 --- a/src/mame/drivers/mcatadv.cpp +++ b/src/mame/drivers/mcatadv.cpp @@ -448,12 +448,12 @@ void mcatadv_state::mcatadv(machine_config &config) TMAP038(config, m_tilemap[0]); m_tilemap[0]->set_gfxdecode_tag(m_gfxdecode); m_tilemap[0]->set_gfx(0); - m_tilemap[0]->set_tile_callback(tilemap038_device::tmap038_cb_delegate(FUNC(mcatadv_state::get_banked_color<0>), this)); + m_tilemap[0]->set_tile_callback(FUNC(mcatadv_state::get_banked_color<0>)); TMAP038(config, m_tilemap[1]); m_tilemap[1]->set_gfxdecode_tag(m_gfxdecode); m_tilemap[1]->set_gfx(1); - m_tilemap[1]->set_tile_callback(tilemap038_device::tmap038_cb_delegate(FUNC(mcatadv_state::get_banked_color<1>), this)); + m_tilemap[1]->set_tile_callback(FUNC(mcatadv_state::get_banked_color<1>)); WATCHDOG_TIMER(config, m_watchdog).set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */ diff --git a/src/mame/drivers/mcr.cpp b/src/mame/drivers/mcr.cpp index 49ba0917688..2b9a3fff688 100644 --- a/src/mame/drivers/mcr.cpp +++ b/src/mame/drivers/mcr.cpp @@ -2833,7 +2833,7 @@ void mcr_state::mcr_init(int cpuboard, int vidboard, int ssioboard) if (m_ssio.found()) { - m_ssio->set_custom_output(0, 0xff, write8_delegate(FUNC(mcr_state::mcr_control_port_w), this)); + m_ssio->set_custom_output(0, 0xff, *this, FUNC(mcr_state::mcr_control_port_w)); } } @@ -2843,8 +2843,8 @@ void mcr_state::init_solarfox() mcr_init(90009, 91399, 90908); m_mcr12_sprite_xoffs = 16; - m_ssio->set_custom_input(0, 0x1c, read8_delegate(FUNC(mcr_state::solarfox_ip0_r), this)); - m_ssio->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::solarfox_ip1_r), this)); + m_ssio->set_custom_input(0, 0x1c, *this, FUNC(mcr_state::solarfox_ip0_r)); + m_ssio->set_custom_input(1, 0xff, *this, FUNC(mcr_state::solarfox_ip1_r)); } @@ -2853,7 +2853,7 @@ void mcr_state::init_kick() mcr_init(90009, 91399, 90908); m_mcr12_sprite_xoffs_flip = 16; - m_ssio->set_custom_input(1, 0xf0, read8_delegate(FUNC(mcr_state::kick_ip1_r), this)); + m_ssio->set_custom_input(1, 0xf0, *this, FUNC(mcr_state::kick_ip1_r)); } @@ -2862,7 +2862,7 @@ void mcr_dpoker_state::init_dpoker() mcr_init(90009, 91399, 90908); m_mcr12_sprite_xoffs_flip = 16; - m_ssio->set_custom_input(0, 0x8e, read8_delegate(FUNC(mcr_dpoker_state::ip0_r),this)); + m_ssio->set_custom_input(0, 0x8e, *this, FUNC(mcr_dpoker_state::ip0_r)); // meter ram, is it battery backed? m_maincpu->space(AS_PROGRAM).install_ram(0x8000, 0x81ff); @@ -2872,10 +2872,10 @@ void mcr_dpoker_state::init_dpoker() m_maincpu->space(AS_IO).install_read_port(0x28, 0x28, "P28"); m_maincpu->space(AS_IO).install_read_port(0x2c, 0x2c, "P2C"); - m_maincpu->space(AS_IO).install_write_handler(0x2c, 0x2c, write8_delegate(FUNC(mcr_dpoker_state::lamps1_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x30, 0x30, write8_delegate(FUNC(mcr_dpoker_state::lamps2_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x34, 0x34, write8_delegate(FUNC(mcr_dpoker_state::output_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(mcr_dpoker_state::meters_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0x2c, 0x2c, write8_delegate(*this, FUNC(mcr_dpoker_state::lamps1_w))); + m_maincpu->space(AS_IO).install_write_handler(0x30, 0x30, write8_delegate(*this, FUNC(mcr_dpoker_state::lamps2_w))); + m_maincpu->space(AS_IO).install_write_handler(0x34, 0x34, write8_delegate(*this, FUNC(mcr_dpoker_state::output_w))); + m_maincpu->space(AS_IO).install_write_handler(0x3f, 0x3f, write8_delegate(*this, FUNC(mcr_dpoker_state::meters_w))); m_coin_status = 0; m_output = 0; @@ -2895,9 +2895,9 @@ void mcr_state::init_wacko() { mcr_init(90010, 91399, 90913); - m_ssio->set_custom_input(1, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip1_r),this)); - m_ssio->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr_state::wacko_ip2_r),this)); - m_ssio->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::wacko_op4_w),this)); + m_ssio->set_custom_input(1, 0xff, *this, FUNC(mcr_state::wacko_ip1_r)); + m_ssio->set_custom_input(2, 0xff, *this, FUNC(mcr_state::wacko_ip2_r)); + m_ssio->set_custom_output(4, 0x01, *this, FUNC(mcr_state::wacko_op4_w)); } @@ -2905,8 +2905,8 @@ void mcr_state::init_twotiger() { mcr_init(90010, 91399, 90913); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::twotiger_op4_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe800, 0xefff, 0, 0x1000, 0, read8_delegate(FUNC(mcr_state::twotiger_videoram_r),this), write8_delegate(FUNC(mcr_state::twotiger_videoram_w),this)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr_state::twotiger_op4_w)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xe800, 0xefff, 0, 0x1000, 0, read8_delegate(*this, FUNC(mcr_state::twotiger_videoram_r)), write8_delegate(*this, FUNC(mcr_state::twotiger_videoram_w))); } @@ -2914,8 +2914,8 @@ void mcr_state::init_kroozr() { mcr_init(90010, 91399, 91483); - m_ssio->set_custom_input(1, 0x47, read8_delegate(FUNC(mcr_state::kroozr_ip1_r),this)); - m_ssio->set_custom_output(4, 0x34, write8_delegate(FUNC(mcr_state::kroozr_op4_w),this)); + m_ssio->set_custom_input(1, 0x47, *this, FUNC(mcr_state::kroozr_ip1_r)); + m_ssio->set_custom_output(4, 0x34, *this, FUNC(mcr_state::kroozr_op4_w)); } @@ -2923,7 +2923,7 @@ void mcr_state::init_journey() { mcr_init(91475, 91464, 90913); - m_ssio->set_custom_output(4, 0x01, write8_delegate(FUNC(mcr_state::journey_op4_w),this)); + m_ssio->set_custom_output(4, 0x01, *this, FUNC(mcr_state::journey_op4_w)); } @@ -2937,7 +2937,7 @@ void mcr_state::init_dotrone() { mcr_init(91490, 91464, 91657); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::dotron_op4_w),this)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr_state::dotron_op4_w)); } @@ -2945,8 +2945,8 @@ void mcr_nflfoot_state::init_nflfoot() { mcr_init(91490, 91464, 91657); - m_ssio->set_custom_input(2, 0x80, read8_delegate(FUNC(mcr_nflfoot_state::ip2_r),this)); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_nflfoot_state::op4_w),this)); + m_ssio->set_custom_input(2, 0x80, *this, FUNC(mcr_nflfoot_state::ip2_r)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr_nflfoot_state::op4_w)); save_item(NAME(m_ipu_sio_txda)); save_item(NAME(m_ipu_sio_txdb)); @@ -2957,11 +2957,11 @@ void mcr_state::init_demoderb() { mcr_init(91490, 91464, 90913); - m_ssio->set_custom_input(1, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip1_r),this)); - m_ssio->set_custom_input(2, 0xfc, read8_delegate(FUNC(mcr_state::demoderb_ip2_r),this)); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr_state::demoderb_op4_w),this)); + m_ssio->set_custom_input(1, 0xfc, *this, FUNC(mcr_state::demoderb_ip1_r)); + m_ssio->set_custom_input(2, 0xfc, *this, FUNC(mcr_state::demoderb_ip2_r)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr_state::demoderb_op4_w)); - /* the SSIO Z80 doesn't have any program to execute */ + // the SSIO Z80 doesn't have any program to execute m_ssio->suspend_cpu(); } diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp index 193a58241fc..b0602f799db 100644 --- a/src/mame/drivers/mcr3.cpp +++ b/src/mame/drivers/mcr3.cpp @@ -1569,26 +1569,26 @@ void mcr3_state::mcr_common_init() void mcr3_state::init_demoderm() { mcr_common_init(); - m_maincpu->space(AS_IO).install_read_handler(0x01, 0x01, read8_delegate(FUNC(mcr3_state::demoderm_ip1_r),this)); - m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(FUNC(mcr3_state::demoderm_ip2_r),this)); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(mcr3_state::demoderm_op6_w),this)); + m_maincpu->space(AS_IO).install_read_handler(0x01, 0x01, read8_delegate(*this, FUNC(mcr3_state::demoderm_ip1_r))); + m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(*this, FUNC(mcr3_state::demoderm_ip2_r))); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*this, FUNC(mcr3_state::demoderm_op6_w))); } void mcr3_state::init_sarge() { mcr_common_init(); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(midway_turbo_cheap_squeak_device::write),m_turbo_cheap_squeak.target())); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*m_turbo_cheap_squeak, FUNC(midway_turbo_cheap_squeak_device::write))); } void mcr3_state::init_maxrpm() { mcr_common_init(); - m_maincpu->space(AS_IO).install_read_handler(0x01, 0x01, read8_delegate(FUNC(mcr3_state::maxrpm_ip1_r),this)); - m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(FUNC(mcr3_state::maxrpm_ip2_r),this)); - m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(FUNC(mcr3_state::maxrpm_op5_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(mcr3_state::maxrpm_op6_w),this)); + m_maincpu->space(AS_IO).install_read_handler(0x01, 0x01, read8_delegate(*this, FUNC(mcr3_state::maxrpm_ip1_r))); + m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(*this, FUNC(mcr3_state::maxrpm_ip2_r))); + m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(*this, FUNC(mcr3_state::maxrpm_op5_w))); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*this, FUNC(mcr3_state::maxrpm_op6_w))); save_item(NAME(m_maxrpm_adc_control)); save_item(NAME(m_maxrpm_last_shift)); @@ -1600,35 +1600,35 @@ void mcr3_state::init_maxrpm() void mcr3_state::init_rampage() { mcr_common_init(); - m_maincpu->space(AS_IO).install_read_handler(0x04, 0x04, read8_delegate(FUNC(mcr3_state::rampage_ip4_r),this)); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(mcr3_state::rampage_op6_w),this)); + m_maincpu->space(AS_IO).install_read_handler(0x04, 0x04, read8_delegate(*this, FUNC(mcr3_state::rampage_ip4_r))); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*this, FUNC(mcr3_state::rampage_op6_w))); } void mcr3_state::init_powerdrv() { mcr_common_init(); - m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(FUNC(mcr3_state::powerdrv_ip2_r),this)); - m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(FUNC(mcr3_state::powerdrv_op5_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(mcr3_state::powerdrv_op6_w),this)); + m_maincpu->space(AS_IO).install_read_handler(0x02, 0x02, read8_delegate(*this, FUNC(mcr3_state::powerdrv_ip2_r))); + m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(*this, FUNC(mcr3_state::powerdrv_op5_w))); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*this, FUNC(mcr3_state::powerdrv_op6_w))); } void mcr3_state::init_stargrds() { mcr_common_init(); - m_maincpu->space(AS_IO).install_read_handler(0x00, 0x00, read8_delegate(FUNC(mcr3_state::stargrds_ip0_r),this)); - m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(FUNC(mcr3_state::stargrds_op5_w),this)); - m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(FUNC(mcr3_state::stargrds_op6_w),this)); + m_maincpu->space(AS_IO).install_read_handler(0x00, 0x00, read8_delegate(*this, FUNC(mcr3_state::stargrds_ip0_r))); + m_maincpu->space(AS_IO).install_write_handler(0x05, 0x05, write8_delegate(*this, FUNC(mcr3_state::stargrds_op5_w))); + m_maincpu->space(AS_IO).install_write_handler(0x06, 0x06, write8_delegate(*this, FUNC(mcr3_state::stargrds_op6_w))); } void mcr3_state::init_spyhunt() { mcr_common_init(); - m_ssio->set_custom_input(1, 0x60, read8_delegate(FUNC(mcr3_state::spyhunt_ip1_r),this)); - m_ssio->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr3_state::spyhunt_ip2_r),this)); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr3_state::spyhunt_op4_w),this)); + m_ssio->set_custom_input(1, 0x60, *this, FUNC(mcr3_state::spyhunt_ip1_r)); + m_ssio->set_custom_input(2, 0xff, *this, FUNC(mcr3_state::spyhunt_ip2_r)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr3_state::spyhunt_op4_w)); m_spyhunt_sprite_color_mask = 0x00; m_spyhunt_scroll_offset = 16; @@ -1648,9 +1648,9 @@ void mcr3_state::init_crater() void mcr3_state::init_turbotag() { mcr_common_init(); - m_ssio->set_custom_input(1, 0x60, read8_delegate(FUNC(mcr3_state::spyhunt_ip1_r),this)); - m_ssio->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr3_state::turbotag_ip2_r),this)); - m_ssio->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr3_state::spyhunt_op4_w),this)); + m_ssio->set_custom_input(1, 0x60, *this, FUNC(mcr3_state::spyhunt_ip1_r)); + m_ssio->set_custom_input(2, 0xff, *this, FUNC(mcr3_state::turbotag_ip2_r)); + m_ssio->set_custom_output(4, 0xff, *this, FUNC(mcr3_state::spyhunt_op4_w)); m_spyhunt_sprite_color_mask = 0x00; m_spyhunt_scroll_offset = 88; @@ -1659,7 +1659,7 @@ void mcr3_state::init_turbotag() m_cheap_squeak_deluxe->suspend_cpu(); /* kludge for bad ROM read */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0b53, 0x0b53, read8_delegate(FUNC(mcr3_state::turbotag_kludge_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0b53, 0x0b53, read8_delegate(*this, FUNC(mcr3_state::turbotag_kludge_r))); } diff --git a/src/mame/drivers/mcr68.cpp b/src/mame/drivers/mcr68.cpp index e8367ad72bf..280bbab4453 100644 --- a/src/mame/drivers/mcr68.cpp +++ b/src/mame/drivers/mcr68.cpp @@ -1488,7 +1488,7 @@ void mcr68_state::init_xenophob() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* install control port handler */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::xenophobe_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::xenophobe_control_w))); } @@ -1500,9 +1500,9 @@ void mcr68_state::init_spyhunt2() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* analog port handling is a bit tricky */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::spyhunt2_control_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0d0000, 0x0dffff, read16_delegate(FUNC(mcr68_state::spyhunt2_port_0_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(FUNC(mcr68_state::spyhunt2_port_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::spyhunt2_control_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0d0000, 0x0dffff, read16_delegate(*this, FUNC(mcr68_state::spyhunt2_port_0_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(*this, FUNC(mcr68_state::spyhunt2_port_1_r))); } @@ -1516,7 +1516,7 @@ void mcr68_state::init_blasted() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* handle control writes */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::blasted_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::blasted_control_w))); } void mcr68_state::init_intlaser() @@ -1527,7 +1527,7 @@ void mcr68_state::init_intlaser() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* handle control writes */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::blasted_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::blasted_control_w))); } @@ -1541,10 +1541,10 @@ void mcr68_state::init_archrivl() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* handle control writes */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::archrivl_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::archrivl_control_w))); /* 49-way joystick handling is a bit tricky */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(FUNC(mcr68_state::archrivl_port_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(*this, FUNC(mcr68_state::archrivl_port_1_r))); } READ16_MEMBER(mcr68_state::archrivlb_port_1_r) @@ -1560,10 +1560,10 @@ void mcr68_state::init_archrivlb() m_timing_factor = attotime::from_hz(m_maincpu->unscaled_clock() / 10) * (256 + 16); /* handle control writes */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(FUNC(mcr68_state::archrivl_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0cffff, write16_delegate(*this, FUNC(mcr68_state::archrivl_control_w))); /* 49-way joystick replaced by standard 8way stick */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(FUNC(mcr68_state::archrivlb_port_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0000, 0x0effff, read16_delegate(*this, FUNC(mcr68_state::archrivlb_port_1_r))); } diff --git a/src/mame/drivers/mediagx.cpp b/src/mame/drivers/mediagx.cpp index 61f4cfae945..658d666d67d 100644 --- a/src/mame/drivers/mediagx.cpp +++ b/src/mame/drivers/mediagx.cpp @@ -81,17 +81,11 @@ #define SPEEDUP_HACKS 1 -struct speedup_entry -{ - uint32_t offset; - uint32_t pc; -}; - class mediagx_state : public pcat_base_state { public: - mediagx_state(const machine_config &mconfig, device_type type, const char *tag) - : pcat_base_state(mconfig, type, tag), + mediagx_state(const machine_config &mconfig, device_type type, const char *tag) : + pcat_base_state(mconfig, type, tag), m_ide(*this, "ide"), m_ramdac(*this, "ramdac"), m_dmadac(*this, "dac%u", 0U), @@ -114,6 +108,12 @@ protected: virtual void video_start() override; private: + struct speedup_entry + { + uint32_t offset; + uint32_t pc; + }; + DECLARE_READ32_MEMBER(disp_ctrl_r); DECLARE_WRITE32_MEMBER(disp_ctrl_w); DECLARE_READ32_MEMBER(memory_ctrl_r); @@ -127,18 +127,7 @@ private: DECLARE_READ8_MEMBER(io20_r); DECLARE_WRITE8_MEMBER(io20_w); uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - DECLARE_READ32_MEMBER(speedup0_r); - DECLARE_READ32_MEMBER(speedup1_r); - DECLARE_READ32_MEMBER(speedup2_r); - DECLARE_READ32_MEMBER(speedup3_r); - DECLARE_READ32_MEMBER(speedup4_r); - DECLARE_READ32_MEMBER(speedup5_r); - DECLARE_READ32_MEMBER(speedup6_r); - DECLARE_READ32_MEMBER(speedup7_r); - DECLARE_READ32_MEMBER(speedup8_r); - DECLARE_READ32_MEMBER(speedup9_r); - DECLARE_READ32_MEMBER(speedup10_r); - DECLARE_READ32_MEMBER(speedup11_r); + template <offs_t N> uint32_t speedup_r(address_space &space) { return generic_speedup(space, N); } TIMER_DEVICE_CALLBACK_MEMBER(sound_timer_callback); void draw_char(bitmap_rgb32 &bitmap, const rectangle &cliprect, gfx_element *gfx, int ch, int att, int x, int y); void draw_framebuffer(bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -220,7 +209,9 @@ private: int m_speedup_count; #endif - static const read32_delegate s_speedup_handlers[]; + using speedup_handler = std::pair<uint32_t (mediagx_state::*)(address_space &), const char *>; + static const speedup_handler s_speedup_handlers[]; + static const speedup_entry a51site4_speedups[]; }; // Display controller registers @@ -891,8 +882,7 @@ void mediagx_state::mediagx(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (18, FUNC(mediagx_state::cx5510_pci_r), this); - pcibus.set_device_write(18, FUNC(mediagx_state::cx5510_pci_w), this); + pcibus.set_device(18, FUNC(mediagx_state::cx5510_pci_r), FUNC(mediagx_state::cx5510_pci_w)); ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set(m_pic8259_2, FUNC(pic8259_device::ir6_w)); @@ -940,24 +930,11 @@ uint32_t mediagx_state::generic_speedup(address_space &space, int idx) return m_main_ram[m_speedup_table[idx].offset/4]; } -READ32_MEMBER(mediagx_state::speedup0_r) { return generic_speedup(space, 0); } -READ32_MEMBER(mediagx_state::speedup1_r) { return generic_speedup(space, 1); } -READ32_MEMBER(mediagx_state::speedup2_r) { return generic_speedup(space, 2); } -READ32_MEMBER(mediagx_state::speedup3_r) { return generic_speedup(space, 3); } -READ32_MEMBER(mediagx_state::speedup4_r) { return generic_speedup(space, 4); } -READ32_MEMBER(mediagx_state::speedup5_r) { return generic_speedup(space, 5); } -READ32_MEMBER(mediagx_state::speedup6_r) { return generic_speedup(space, 6); } -READ32_MEMBER(mediagx_state::speedup7_r) { return generic_speedup(space, 7); } -READ32_MEMBER(mediagx_state::speedup8_r) { return generic_speedup(space, 8); } -READ32_MEMBER(mediagx_state::speedup9_r) { return generic_speedup(space, 9); } -READ32_MEMBER(mediagx_state::speedup10_r) { return generic_speedup(space, 10); } -READ32_MEMBER(mediagx_state::speedup11_r) { return generic_speedup(space, 11); } - -const read32_delegate mediagx_state::s_speedup_handlers[] +const mediagx_state::speedup_handler mediagx_state::s_speedup_handlers[] { - { FUNC(mediagx_state::speedup0_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup1_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup2_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup3_r), (mediagx_state*)nullptr }, - { FUNC(mediagx_state::speedup4_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup5_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup6_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup7_r), (mediagx_state*)nullptr }, - { FUNC(mediagx_state::speedup8_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup9_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup10_r), (mediagx_state*)nullptr }, { FUNC(mediagx_state::speedup11_r), (mediagx_state*)nullptr } + { FUNC(mediagx_state::speedup_r<0>) }, { FUNC(mediagx_state::speedup_r<1>) }, { FUNC(mediagx_state::speedup_r<2>) }, { FUNC(mediagx_state::speedup_r<3>) }, + { FUNC(mediagx_state::speedup_r<4>) }, { FUNC(mediagx_state::speedup_r<5>) }, { FUNC(mediagx_state::speedup_r<6>) }, { FUNC(mediagx_state::speedup_r<7>) }, + { FUNC(mediagx_state::speedup_r<8>) }, { FUNC(mediagx_state::speedup_r<9>) }, { FUNC(mediagx_state::speedup_r<10>) }, { FUNC(mediagx_state::speedup_r<11>) } }; #ifdef MAME_DEBUG @@ -975,18 +952,15 @@ void mediagx_state::install_speedups(const speedup_entry *entries, int count) m_speedup_table = entries; m_speedup_count = count; - for (int i = 0; i < count; i++) { - read32_delegate func = s_speedup_handlers[i]; - func.late_bind(*this); - m_maincpu->space(AS_PROGRAM).install_read_handler(entries[i].offset, entries[i].offset + 3, func); - } + for (int i = 0; i < count; i++) + m_maincpu->space(AS_PROGRAM).install_read_handler(entries[i].offset, entries[i].offset + 3, read32mo_delegate(*this, s_speedup_handlers[i].first, s_speedup_handlers[i].second)); #ifdef MAME_DEBUG machine().add_notifier(MACHINE_NOTIFY_EXIT, machine_notify_delegate(&mediagx_state::report_speedups, this)); #endif } -static const speedup_entry a51site4_speedups[] = +const mediagx_state::speedup_entry mediagx_state::a51site4_speedups[] = { { 0x5504c, 0x0363e }, { 0x5f11c, 0x0363e }, diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp index 2fd81336110..723bd131193 100644 --- a/src/mame/drivers/megadriv.cpp +++ b/src/mame/drivers/megadriv.cpp @@ -277,10 +277,10 @@ MACHINE_START_MEMBER(md_cons_state, md_common) void md_cons_state::install_cartslot() { // for now m_cartslot is only in MD and not 32x and SegaCD - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_cart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_cart)); -// m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(*m_cart, FUNC(base_md_cart_slot_device::read)), write16_delegate(*m_cart, FUNC(base_md_cart_slot_device::write))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a13)), write16_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a13))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(*m_cart, FUNC(base_md_cart_slot_device::read_a15)), write16_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_a15))); +// m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(*m_cart, FUNC(base_md_cart_slot_device::write_tmss_bank))); } READ16_MEMBER( md_cons_state::tmss_r ) @@ -296,7 +296,7 @@ WRITE16_MEMBER( md_cons_state::tmss_swap_w ) if (data & 0x0001) { install_cartslot(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(FUNC(md_cons_state::tmss_swap_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(*this, FUNC(md_cons_state::tmss_swap_w))); } else { @@ -308,9 +308,9 @@ WRITE16_MEMBER( md_cons_state::tmss_swap_w ) void md_cons_state::install_tmss() { m_maincpu->space(AS_PROGRAM).unmap_readwrite(0x000000, 0x7fffff); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x7fffff, read16_delegate(FUNC(md_cons_state::tmss_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x7fffff, read16_delegate(*this, FUNC(md_cons_state::tmss_r))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(FUNC(md_cons_state::tmss_swap_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14100, 0xa14101, write16_delegate(*this, FUNC(md_cons_state::tmss_swap_w))); } @@ -469,8 +469,8 @@ ROM_END void md_cons_state::init_mess_md_common() { - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_cons_state::mess_md_io_read_data_port),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_cons_state::mess_md_io_write_data_port),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_cons_state::mess_md_io_read_data_port)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_cons_state::mess_md_io_write_data_port)); } void md_cons_state::init_genesis() @@ -605,9 +605,9 @@ void md_cons_state::genesis_32x(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) - m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this); - m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this); - m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this); + m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback)); + m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback)); + m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback)); m_vdp->reset_routes(); m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.50)/2); m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.50)/2); @@ -627,7 +627,7 @@ void md_cons_state::genesis_32x(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(md_cons_state::_32x_cart), this); + cartslot.set_device_load(FUNC(md_cons_state::_32x_cart)); SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("NTSC-U"); } @@ -640,9 +640,9 @@ void md_cons_state::mdj_32x(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) - m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this); - m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this); - m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this); + m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback)); + m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback)); + m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback)); m_vdp->reset_routes(); m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.50)/2); m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.50)/2); @@ -662,7 +662,7 @@ void md_cons_state::mdj_32x(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(md_cons_state::_32x_cart), this); + cartslot.set_device_load(FUNC(md_cons_state::_32x_cart)); SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("NTSC-J"); } @@ -675,9 +675,9 @@ void md_cons_state::md_32x(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, md_common) MCFG_MACHINE_RESET_OVERRIDE(md_cons_state, ms_megadriv) - m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback), this); - m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback), this); - m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback), this); + m_vdp->set_md_32x_scanline(FUNC(md_cons_state::_32x_scanline_callback)); + m_vdp->set_md_32x_scanline_helper(FUNC(md_cons_state::_32x_scanline_helper_callback)); + m_vdp->set_md_32x_interrupt(FUNC(md_cons_state::_32x_interrupt_callback)); m_vdp->reset_routes(); m_vdp->add_route(ALL_OUTPUTS, "lspeaker", (0.50)/2); m_vdp->add_route(ALL_OUTPUTS, "rspeaker", (0.50)/2); @@ -697,7 +697,7 @@ void md_cons_state::md_32x(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(md_cons_state::_32x_cart), this); + cartslot.set_device_load(FUNC(md_cons_state::_32x_cart)); SOFTWARE_LIST(config, "cart_list").set_original("32x").set_filter("PAL"); } @@ -808,7 +808,7 @@ void md_cons_state::genesis_32x_scd(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) config.device_remove("cartslot"); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart)); //config.m_perfect_cpu_quantum = subtag("32x_master_sh2"); SOFTWARE_LIST(config, "cd_list").set_original("segacd"); @@ -828,7 +828,7 @@ void md_cons_state::md_32x_scd(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) config.device_remove("cartslot"); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart)); //config.m_perfect_cpu_quantum = subtag("32x_master_sh2"); SOFTWARE_LIST(config, "cd_list").set_original("megacd"); @@ -848,7 +848,7 @@ void md_cons_state::mdj_32x_scd(machine_config &config) MCFG_MACHINE_START_OVERRIDE(md_cons_state, ms_megacd) config.device_remove("cartslot"); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "_32x_cart", "32x,bin").set_device_load(FUNC(md_cons_state::_32x_cart)); //config.m_perfect_cpu_quantum = subtag("32x_master_sh2"); SOFTWARE_LIST(config, "cd_list").set_original("megacdj"); diff --git a/src/mame/drivers/megadriv_acbl.cpp b/src/mame/drivers/megadriv_acbl.cpp index cf6e5463d9d..3fa037f74ca 100644 --- a/src/mame/drivers/megadriv_acbl.cpp +++ b/src/mame/drivers/megadriv_acbl.cpp @@ -956,8 +956,8 @@ void md_boot_state::init_aladmdb() #endif // 220000 = writes to mcu? 330000 = reads? - m_maincpu->space(AS_PROGRAM).install_write_handler(0x220000, 0x220001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x330000, 0x330001, read16_delegate(FUNC(md_boot_state::aladmdb_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x220000, 0x220001, write16_delegate(*this, FUNC(md_boot_state::aladmdb_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x330000, 0x330001, read16_delegate(*this, FUNC(md_boot_state::aladmdb_r))); init_megadrij(); } @@ -1005,12 +1005,12 @@ void md_boot_state::init_mk3mdb() rom[0x07] = 0x02; rom[0x06] = 0x10; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::mk3mdb_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(*this, FUNC(md_boot_state::mk3mdb_dsw_r))); init_megadriv(); // 6 button game, so overwrite 3 button io handlers - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_6button)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_6button)); } void md_boot_state::init_ssf2mdb() @@ -1021,12 +1021,12 @@ void md_boot_state::init_ssf2mdb() membank("bank5")->set_base(memregion( "maincpu" )->base() + 0x400000 ); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::ssf2mdb_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(*this, FUNC(md_boot_state::ssf2mdb_dsw_r))); init_megadrij(); // 6 button game, so overwrite 3 button io handlers - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_6button)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_6button)); } void md_boot_state::init_srmdb() @@ -1052,14 +1052,14 @@ void md_boot_state::init_srmdb() rom[0x06] = 0xd2; rom[0x07] = 0x00; - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(FUNC(md_boot_state::srmdb_dsw_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770070, 0x770075, read16_delegate(*this, FUNC(md_boot_state::srmdb_dsw_r))); init_megadriv(); } void md_boot_state::init_topshoot() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200050, 0x200051, read16_delegate(FUNC(md_boot_state::topshoot_200051_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200050, 0x200051, read16_delegate(*this, FUNC(md_boot_state::topshoot_200051_r))); m_maincpu->space(AS_PROGRAM).install_read_port(0x200042, 0x200043, "IN0"); m_maincpu->space(AS_PROGRAM).install_read_port(0x200044, 0x200045, "IN1"); m_maincpu->space(AS_PROGRAM).install_read_port(0x200046, 0x200047, "IN2"); @@ -1086,7 +1086,7 @@ void md_boot_state::init_barek3() void md_boot_state::init_sonic2mb() { // 100000 = writes to unpopulated MCU? - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(*this, FUNC(md_boot_state::aladmdb_w))); m_maincpu->space(AS_PROGRAM).install_read_port(0x300000, 0x300001, "DSW"); init_megadrij(); @@ -1103,15 +1103,15 @@ void md_boot_state::init_twinktmb() rom[0x06] = 0xcc; init_megadrij(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(FUNC(md_boot_state::twinktmb_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(*this, FUNC(md_boot_state::aladmdb_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(*this, FUNC(md_boot_state::twinktmb_r))); } void md_boot_state::init_jparkmb() { init_megadrij(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(md_boot_state::aladmdb_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(FUNC(md_boot_state::jparkmb_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(*this, FUNC(md_boot_state::aladmdb_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x300000, 0x300001, read16_delegate(*this, FUNC(md_boot_state::jparkmb_r))); } /************************************* diff --git a/src/mame/drivers/megadriv_rad.cpp b/src/mame/drivers/megadriv_rad.cpp index 9ff44620906..2b8d326d3de 100644 --- a/src/mame/drivers/megadriv_rad.cpp +++ b/src/mame/drivers/megadriv_rad.cpp @@ -178,8 +178,8 @@ void megadriv_radica_state::init_megadriv_radica_6button_pal() { init_megadrie(); // 6 button game, so overwrite 3 button io handlers - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_6button),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_6button),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_6button)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_6button)); } // NTSC releases diff --git a/src/mame/drivers/megaplay.cpp b/src/mame/drivers/megaplay.cpp index c3f9989ced5..12cf4276d84 100644 --- a/src/mame/drivers/megaplay.cpp +++ b/src/mame/drivers/megaplay.cpp @@ -927,17 +927,17 @@ void mplay_state::init_megaplay() m_ic37_ram = std::make_unique<uint8_t[]>(0x10000); init_megadrij(); - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_3button)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_3button)); // for now ... - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa10000, 0xa1001f, read16_delegate(FUNC(mplay_state::mp_io_read),this), write16_delegate(FUNC(mplay_state::mp_io_write),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa10000, 0xa1001f, read16_delegate(*this, FUNC(mplay_state::mp_io_read)), write16_delegate(*this, FUNC(mplay_state::mp_io_write))); // megaplay has ram shared with the bios cpu here m_z80snd->space(AS_PROGRAM).install_ram(0x2000, 0x3fff, &m_ic36_ram[0]); // instead of a RAM mirror the 68k sees the extra ram of the 2nd z80 too - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa02000, 0xa03fff, read16_delegate(FUNC(mplay_state::extra_ram_r),this), write16_delegate(FUNC(mplay_state::extra_ram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa02000, 0xa03fff, read16_delegate(*this, FUNC(mplay_state::extra_ram_r)), write16_delegate(*this, FUNC(mplay_state::extra_ram_w))); } /* diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 4e097cd0755..0090c681377 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -603,7 +603,7 @@ void megasys1_state::z80_sound_map(address_map &map) { map(0x0000, 0x3fff).rom(); map(0xc000, 0xc7ff).ram(); - map(0xe000, 0xe000).lr8("soundlatch_r_z", [this](){ return m_soundlatch[0]->read() & 0xff; }); + map(0xe000, 0xe000).lr8(NAME([this] () { return m_soundlatch[0]->read() & 0xff; })); map(0xf000, 0xf000).nopw(); /* ?? */ } @@ -4621,8 +4621,8 @@ WRITE16_MEMBER(megasys1_state::megasys1A_mcu_hs_w) void megasys1_state::init_astyanax() { astyanax_rom_decode(machine(), "maincpu"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x20000, 0x20009, write16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(*this, FUNC(megasys1_state::megasys1A_mcu_hs_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x20000, 0x20009, write16_delegate(*this, FUNC(megasys1_state::megasys1A_mcu_hs_w))); m_mcu_hs = 0; memset(m_mcu_hs_ram, 0, sizeof(m_mcu_hs_ram)); @@ -4766,8 +4766,8 @@ void megasys1_state::init_iganinju() { phantasm_rom_decode(machine(), "maincpu"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::iganinju_mcu_hs_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x2f000, 0x2f009, write16_delegate(FUNC(megasys1_state::iganinju_mcu_hs_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(*this, FUNC(megasys1_state::iganinju_mcu_hs_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x2f000, 0x2f009, write16_delegate(*this, FUNC(megasys1_state::iganinju_mcu_hs_w))); //m_rom_maincpu[0x00006e/2] = 0x0420; // the only game that does // not like lev 3 interrupts @@ -4785,8 +4785,8 @@ void megasys1_state::init_jitsupro() jitsupro_gfx_unmangle("scroll0"); // Gfx jitsupro_gfx_unmangle("sprites"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x20000, 0x20009, write16_delegate(FUNC(megasys1_state::megasys1A_mcu_hs_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(*this, FUNC(megasys1_state::megasys1A_mcu_hs_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x20000, 0x20009, write16_delegate(*this, FUNC(megasys1_state::megasys1A_mcu_hs_w))); m_mcu_hs = 0; memset(m_mcu_hs_ram, 0, sizeof(m_mcu_hs_ram)); @@ -4802,7 +4802,7 @@ void megasys1_state::init_peekaboo() m_okibank->configure_entry(7, &ROM[0x20000]); m_okibank->configure_entries(0, 7, &ROM[0x20000], 0x20000); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x100000, 0x100001, read16_delegate(FUNC(megasys1_state::protection_peekaboo_r),this), write16_delegate(FUNC(megasys1_state::protection_peekaboo_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x100000, 0x100001, read16_delegate(*this, FUNC(megasys1_state::protection_peekaboo_r)), write16_delegate(*this, FUNC(megasys1_state::protection_peekaboo_w))); save_item(NAME(m_protection_val)); } @@ -4853,14 +4853,14 @@ void megasys1_state::init_soldamj() { astyanax_rom_decode(machine(), "maincpu"); /* Sprite RAM is mirrored */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8c000, 0x8cfff, read16_delegate(FUNC(megasys1_state::soldamj_spriteram16_r),this), write16_delegate(FUNC(megasys1_state::soldamj_spriteram16_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8c000, 0x8cfff, read16_delegate(*this, FUNC(megasys1_state::soldamj_spriteram16_r)), write16_delegate(*this, FUNC(megasys1_state::soldamj_spriteram16_w))); } void megasys1_state::init_soldam() { phantasm_rom_decode(machine(), "maincpu"); /* Sprite RAM is mirrored */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8c000, 0x8cfff, read16_delegate(FUNC(megasys1_state::soldamj_spriteram16_r),this), write16_delegate(FUNC(megasys1_state::soldamj_spriteram16_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8c000, 0x8cfff, read16_delegate(*this, FUNC(megasys1_state::soldamj_spriteram16_r)), write16_delegate(*this, FUNC(megasys1_state::soldamj_spriteram16_w))); } @@ -4894,8 +4894,8 @@ WRITE16_MEMBER(megasys1_state::stdragon_mcu_hs_w) void megasys1_state::init_stdragon() { phantasm_rom_decode(machine(), "maincpu"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::stdragon_mcu_hs_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x23ff0, 0x23ff9, write16_delegate(FUNC(megasys1_state::stdragon_mcu_hs_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(*this, FUNC(megasys1_state::stdragon_mcu_hs_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x23ff0, 0x23ff9, write16_delegate(*this, FUNC(megasys1_state::stdragon_mcu_hs_w))); m_mcu_hs = 0; memset(m_mcu_hs_ram, 0, sizeof(m_mcu_hs_ram)); @@ -4911,8 +4911,8 @@ void megasys1_state::init_stdragona() stdragona_gfx_unmangle("scroll0"); stdragona_gfx_unmangle("sprites"); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(FUNC(megasys1_state::stdragon_mcu_hs_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x23ff0, 0x23ff9, write16_delegate(FUNC(megasys1_state::stdragon_mcu_hs_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00000, 0x3ffff, read16_delegate(*this, FUNC(megasys1_state::stdragon_mcu_hs_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x23ff0, 0x23ff9, write16_delegate(*this, FUNC(megasys1_state::stdragon_mcu_hs_w))); m_mcu_hs = 0; memset(m_mcu_hs_ram, 0, sizeof(m_mcu_hs_ram)); diff --git a/src/mame/drivers/megatech.cpp b/src/mame/drivers/megatech.cpp index 7ccc2c2cc82..7b10b7f7c5b 100644 --- a/src/mame/drivers/megatech.cpp +++ b/src/mame/drivers/megatech.cpp @@ -386,20 +386,20 @@ void mtech_state::set_genz80_as_sms() memcpy(sms_rom.get(), m_region_maincpu->base(), 0xc000); - prg.install_write_handler(0xfffc, 0xffff, write8_delegate(FUNC(mtech_state::mt_sms_standard_rom_bank_w),this)); + prg.install_write_handler(0xfffc, 0xffff, write8_delegate(*this, FUNC(mtech_state::mt_sms_standard_rom_bank_w))); // ports - io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8sm_delegate(FUNC(mtech_state::sms_count_r),this)); - io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8smo_delegate(FUNC(sega315_5124_device::psg_w),(sega315_5124_device *)m_vdp)); - io.install_readwrite_handler (0x80, 0x80, 0, 0x3e, 0, read8smo_delegate(FUNC(sega315_5124_device::data_read),(sega315_5124_device *)m_vdp), write8smo_delegate(FUNC(sega315_5124_device::data_write),(sega315_5124_device *)m_vdp)); - io.install_readwrite_handler (0x81, 0x81, 0, 0x3e, 0, read8smo_delegate(FUNC(sega315_5124_device::control_read),(sega315_5124_device *)m_vdp), write8smo_delegate(FUNC(sega315_5124_device::control_write),(sega315_5124_device *)m_vdp)); + io.install_read_handler (0x40, 0x41, 0, 0x3e, 0, read8sm_delegate(*this, FUNC(mtech_state::sms_count_r))); + io.install_write_handler (0x40, 0x41, 0, 0x3e, 0, write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::psg_w))); + io.install_readwrite_handler (0x80, 0x80, 0, 0x3e, 0, read8smo_delegate(*m_vdp, FUNC(sega315_5124_device::data_read)), write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::data_write))); + io.install_readwrite_handler (0x81, 0x81, 0, 0x3e, 0, read8smo_delegate(*m_vdp, FUNC(sega315_5124_device::control_read)), write8smo_delegate(*m_vdp, FUNC(sega315_5124_device::control_write))); - io.install_read_handler (0x10, 0x10, read8_delegate(FUNC(mtech_state::sms_ioport_dd_r),this)); // super tetris + io.install_read_handler (0x10, 0x10, read8_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // super tetris - io.install_read_handler (0xdc, 0xdc, read8_delegate(FUNC(mtech_state::sms_ioport_dc_r),this)); - io.install_read_handler (0xdd, 0xdd, read8_delegate(FUNC(mtech_state::sms_ioport_dd_r),this)); - io.install_read_handler (0xde, 0xde, read8_delegate(FUNC(mtech_state::sms_ioport_dd_r),this)); - io.install_read_handler (0xdf, 0xdf, read8_delegate(FUNC(mtech_state::sms_ioport_dd_r),this)); // adams family + io.install_read_handler (0xdc, 0xdc, read8_delegate(*this, FUNC(mtech_state::sms_ioport_dc_r))); + io.install_read_handler (0xdd, 0xdd, read8_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); + io.install_read_handler (0xde, 0xde, read8_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); + io.install_read_handler (0xdf, 0xdf, read8_delegate(*this, FUNC(mtech_state::sms_ioport_dd_r))); // adams family } @@ -413,12 +413,12 @@ void mtech_state::set_genz80_as_md() prg.install_ram(0x0000, 0x1fff, m_genz80.z80_prgram.get()); - prg.install_readwrite_handler(0x4000, 0x4003, read8sm_delegate(FUNC(ym2612_device::read), (ym2612_device *)m_ymsnd), write8sm_delegate(FUNC(ym2612_device::write), (ym2612_device *)m_ymsnd)); - prg.install_write_handler (0x6000, 0x6000, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this)); - prg.install_write_handler (0x6001, 0x6001, write8_delegate(FUNC(mtech_state::megadriv_z80_z80_bank_w),this)); - prg.install_read_handler (0x6100, 0x7eff, read8_delegate(FUNC(mtech_state::megadriv_z80_unmapped_read),this)); - prg.install_readwrite_handler(0x7f00, 0x7fff, read8_delegate(FUNC(mtech_state::megadriv_z80_vdp_read),this), write8_delegate(FUNC(mtech_state::megadriv_z80_vdp_write),this)); - prg.install_readwrite_handler(0x8000, 0xffff, read8_delegate(FUNC(mtech_state::z80_read_68k_banked_data),this), write8_delegate(FUNC(mtech_state::z80_write_68k_banked_data),this)); + prg.install_readwrite_handler(0x4000, 0x4003, read8sm_delegate(*m_ymsnd, FUNC(ym2612_device::read)), write8sm_delegate(*m_ymsnd, FUNC(ym2612_device::write))); + prg.install_write_handler (0x6000, 0x6000, write8_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w))); + prg.install_write_handler (0x6001, 0x6001, write8_delegate(*this, FUNC(mtech_state::megadriv_z80_z80_bank_w))); + prg.install_read_handler (0x6100, 0x7eff, read8_delegate(*this, FUNC(mtech_state::megadriv_z80_unmapped_read))); + prg.install_readwrite_handler(0x7f00, 0x7fff, read8_delegate(*this, FUNC(mtech_state::megadriv_z80_vdp_read)), write8_delegate(*this, FUNC(mtech_state::megadriv_z80_vdp_write))); + prg.install_readwrite_handler(0x8000, 0xffff, read8_delegate(*this, FUNC(mtech_state::z80_read_68k_banked_data)), write8_delegate(*this, FUNC(mtech_state::z80_write_68k_banked_data))); } @@ -768,7 +768,7 @@ image_init_result mtech_state::load_cart(device_image_interface &image, generic_ } #define MEGATECH_CARTSLOT(_tag, _load) \ - GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "megatech_cart").set_device_load(FUNC(mtech_state::_load), this) + GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "megatech_cart").set_device_load(FUNC(mtech_state::_load)) void mtech_state::megatech_multislot(machine_config &config) { @@ -794,7 +794,7 @@ void mtech_state::megatech_fixedslot(machine_config &config) // add cart slots generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "mt_slot1", generic_plain_slot, "megatech_cart")); - cartslot.set_device_load(FUNC(mtech_state::mt_cart1), this); + cartslot.set_device_load(FUNC(mtech_state::mt_cart1)); cartslot.set_user_loadable(false); } diff --git a/src/mame/drivers/mekd2.cpp b/src/mame/drivers/mekd2.cpp index 7810c6bbbfb..a93b14bf927 100644 --- a/src/mame/drivers/mekd2.cpp +++ b/src/mame/drivers/mekd2.cpp @@ -408,7 +408,7 @@ void mekd2_state::mekd2(machine_config &config) TIMER(config, "kansas_w").configure_periodic(FUNC(mekd2_state::kansas_w), attotime::from_hz(4800)); TIMER(config, "kansas_r").configure_periodic(FUNC(mekd2_state::kansas_r), attotime::from_hz(40000)); - QUICKLOAD(config, "quickload", "d2", attotime::from_seconds(1)).set_load_callback(FUNC(mekd2_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "d2", attotime::from_seconds(1)).set_load_callback(FUNC(mekd2_state::quickload_cb)); } /*********************************************************** diff --git a/src/mame/drivers/mekd3.cpp b/src/mame/drivers/mekd3.cpp index d4c47995afe..2d9bed36690 100644 --- a/src/mame/drivers/mekd3.cpp +++ b/src/mame/drivers/mekd3.cpp @@ -977,7 +977,7 @@ void mekd3_state::mekd3(machine_config &config) m_mc6845->set_screen("screen"); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(mekd3_state::update_row), this); + m_mc6845->set_update_row_callback(FUNC(mekd3_state::update_row)); m_mc6845->out_hsync_callback().set(FUNC(mekd3_state::r2_hsync_changed)); m_mc6845->out_vsync_callback().set(FUNC(mekd3_state::r2_vsync_changed)); diff --git a/src/mame/drivers/mekd4.cpp b/src/mame/drivers/mekd4.cpp index 7c73186b481..2fa8507faa1 100644 --- a/src/mame/drivers/mekd4.cpp +++ b/src/mame/drivers/mekd4.cpp @@ -989,7 +989,7 @@ void mekd4_state::mekd4(machine_config &config) m_mc6845->set_screen("screen"); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(mekd4_state::update_row), this); + m_mc6845->set_update_row_callback(FUNC(mekd4_state::update_row)); m_mc6845->out_hsync_callback().set(FUNC(mekd4_state::r2_hsync_changed)); m_mc6845->out_vsync_callback().set(FUNC(mekd4_state::r2_vsync_changed)); diff --git a/src/mame/drivers/merit.cpp b/src/mame/drivers/merit.cpp index ba47fc504d6..7154cc1ff94 100644 --- a/src/mame/drivers/merit.cpp +++ b/src/mame/drivers/merit.cpp @@ -1434,8 +1434,8 @@ void merit_state::pitboss(machine_config &config) crtc.set_screen(m_screen); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_begin_update_callback(FUNC(merit_state::crtc_begin_update), this); - crtc.set_update_row_callback(FUNC(merit_state::crtc_update_row), this); + crtc.set_begin_update_callback(FUNC(merit_state::crtc_begin_update)); + crtc.set_update_row_callback(FUNC(merit_state::crtc_update_row)); crtc.out_hsync_callback().set(FUNC(merit_state::hsync_changed)); crtc.out_vsync_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/drivers/meritm.cpp b/src/mame/drivers/meritm.cpp index a7042ce0713..af4db19748a 100644 --- a/src/mame/drivers/meritm.cpp +++ b/src/mame/drivers/meritm.cpp @@ -1175,7 +1175,7 @@ void meritm_state::crt250_crt252_crt258(machine_config &config) m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx)); MICROTOUCH(config, m_microtouch, 9600).stx().set(m_uart, FUNC(ins8250_uart_device::rx_w)); - m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform), this); + m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform)); } void meritm_state::crt260(machine_config &config) @@ -1194,7 +1194,7 @@ void meritm_state::crt260(machine_config &config) m_uart->out_tx_callback().set(m_microtouch, FUNC(microtouch_device::rx)); MICROTOUCH(config, m_microtouch, 9600).stx().set(m_uart, FUNC(ins8250_uart_device::rx_w)); - m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform), this); + m_microtouch->set_touch_callback(FUNC(meritm_state::touch_coord_transform)); } @@ -2386,7 +2386,7 @@ ROM_END void meritm_state::init_megat3te() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfff8, 0xffff, read8_delegate(FUNC(meritm_state::ds1644_r), this), write8_delegate(FUNC(meritm_state::ds1644_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfff8, 0xffff, read8_delegate(*this, FUNC(meritm_state::ds1644_r)), write8_delegate(*this, FUNC(meritm_state::ds1644_w))); } /* CRT-250 */ diff --git a/src/mame/drivers/meritum.cpp b/src/mame/drivers/meritum.cpp index 31b8fef11f8..8c46e71496d 100644 --- a/src/mame/drivers/meritum.cpp +++ b/src/mame/drivers/meritum.cpp @@ -440,7 +440,7 @@ void meritum_state::meritum(machine_config &config) CASSETTE(config, m_cassette); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); - QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(meritum_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(meritum_state::quickload_cb)); } /*************************************************************************** diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp index 82c18c784ee..0ef4367cb06 100644 --- a/src/mame/drivers/metro.cpp +++ b/src/mame/drivers/metro.cpp @@ -3126,7 +3126,7 @@ void metro_state::bangball(machine_config &config) { msgogo(config); m_maincpu->set_addrmap(AS_PROGRAM, &metro_state::bangball_map); - m_maincpu->set_periodic_int(device_interrupt_delegate(), attotime()); + m_maincpu->remove_periodic_int(); TIMER(config, "scantimer").configure_scanline(FUNC(metro_state::bangball_scanline), "screen", 0, 1); // doesn't like 58.2 Hz @@ -3138,7 +3138,7 @@ void metro_state::batlbubl(machine_config &config) { msgogo(config); m_maincpu->set_addrmap(AS_PROGRAM, &metro_state::batlbubl_map); - m_maincpu->set_periodic_int(device_interrupt_delegate(), attotime()); + m_maincpu->remove_periodic_int(); TIMER(config, "scantimer").configure_scanline(FUNC(metro_state::bangball_scanline), "screen", 0, 1); // doesn't like 58.2 Hz @@ -3200,7 +3200,7 @@ void metro_state::puzzli(machine_config &config) { daitorid(config); - m_maincpu->set_periodic_int(device_interrupt_delegate(), attotime()); + m_maincpu->remove_periodic_int(); TIMER(config, "scantimer").configure_scanline(FUNC(metro_state::bangball_scanline), "screen", 0, 1); m_screen->set_video_attributes(VIDEO_UPDATE_SCANLINE); diff --git a/src/mame/drivers/mgames.cpp b/src/mame/drivers/mgames.cpp index 6c11e57e462..efe910721a1 100644 --- a/src/mame/drivers/mgames.cpp +++ b/src/mame/drivers/mgames.cpp @@ -278,7 +278,7 @@ TILE_GET_INFO_MEMBER( mgames_state::tile_info ) void mgames_state::machine_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mgames_state::tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mgames_state::tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_lamps.resolve(); } diff --git a/src/mame/drivers/mgavegas.cpp b/src/mame/drivers/mgavegas.cpp index 367f4c3dc8b..c9b80303565 100644 --- a/src/mame/drivers/mgavegas.cpp +++ b/src/mame/drivers/mgavegas.cpp @@ -557,13 +557,13 @@ void mgavegas_state::machine_reset() void mgavegas_state::init_mgavegas21() { //hack to clear the irq on reti instruction - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00ea, 0x00ea, read8_delegate(FUNC(mgavegas_state::start_read), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00ea, 0x00ea, read8_delegate(*this, FUNC(mgavegas_state::start_read))); } void mgavegas_state::init_mgavegas() { //hack to clear the irq on reti instruction - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00e2, 0x00e2, read8_delegate(FUNC(mgavegas_state::start_read), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00e2, 0x00e2, read8_delegate(*this, FUNC(mgavegas_state::start_read))); } @@ -577,7 +577,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( mgavegas_state::int_0 ) void mgavegas_state::init_mgavegas133() { //hack to clear the irq on reti instruction - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00dd, 0x00dd, read8_delegate(FUNC(mgavegas_state::start_read), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00dd, 0x00dd, read8_delegate(*this, FUNC(mgavegas_state::start_read))); } /************************* diff --git a/src/mame/drivers/mgolf.cpp b/src/mame/drivers/mgolf.cpp index 54bf8ac3854..192022be98f 100644 --- a/src/mame/drivers/mgolf.cpp +++ b/src/mame/drivers/mgolf.cpp @@ -93,7 +93,7 @@ WRITE8_MEMBER(mgolf_state::vram_w) void mgolf_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mgolf_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mgolf_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/micro20.cpp b/src/mame/drivers/micro20.cpp index e08b9ec4ca3..2ef1a7b741d 100644 --- a/src/mame/drivers/micro20.cpp +++ b/src/mame/drivers/micro20.cpp @@ -84,7 +84,7 @@ void micro20_state::machine_reset() pRAM[1] = pROM[3]; m_maincpu->reset(); - m_maincpu->set_reset_callback(write_line_delegate(FUNC(micro20_state::m68k_reset_callback),this)); + m_maincpu->set_reset_callback(*this, FUNC(micro20_state::m68k_reset_callback)); m_tin = 0; } @@ -92,10 +92,9 @@ void micro20_state::machine_reset() TIMER_DEVICE_CALLBACK_MEMBER(micro20_state::micro20_timer) { m_pit->update_tin(m_tin ? ASSERT_LINE : CLEAR_LINE); - if ((!m_h4) && (m_tin)) - { + if (!m_h4 && m_tin) m_maincpu->set_input_line(M68K_IRQ_6, HOLD_LINE); - } + m_tin ^= 1; } diff --git a/src/mame/drivers/micro3d.cpp b/src/mame/drivers/micro3d.cpp index 160fdaadb2d..ed60e443656 100644 --- a/src/mame/drivers/micro3d.cpp +++ b/src/mame/drivers/micro3d.cpp @@ -294,7 +294,7 @@ void micro3d_state::soundmem_io(address_map &map) void micro3d_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff6, 0xfffff7).lr16("duart irq", [this]() -> u16 { return m_duart->get_irq_vector(); }); + map(0xfffff6, 0xfffff7).lr16(NAME([this] () -> u16 { return m_duart->get_irq_vector(); })); } diff --git a/src/mame/drivers/microtan.cpp b/src/mame/drivers/microtan.cpp index 1675b2b5c50..da937ffd603 100644 --- a/src/mame/drivers/microtan.cpp +++ b/src/mame/drivers/microtan.cpp @@ -305,9 +305,9 @@ void microtan_state::mt65(machine_config &config) /* snapshot/quickload */ snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", "dmp,m65")); - snapshot.set_load_callback(FUNC(microtan_state::snapshot_cb), this); + snapshot.set_load_callback(FUNC(microtan_state::snapshot_cb)); snapshot.set_interface("mt65_snap"); - QUICKLOAD(config, "quickload", "hex").set_load_callback(FUNC(microtan_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "hex").set_load_callback(FUNC(microtan_state::quickload_cb)); /* software lists */ SOFTWARE_LIST(config, "rom_list").set_original("mt65_rom"); diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp index 412afcfaf92..9f07c04fef1 100644 --- a/src/mame/drivers/microvsn.cpp +++ b/src/mame/drivers/microvsn.cpp @@ -670,7 +670,7 @@ void microvision_state::microvision(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "microvision_cart")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(microvision_state::cart_load), this); + cartslot.set_device_load(FUNC(microvision_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("microvision"); diff --git a/src/mame/drivers/midqslvr.cpp b/src/mame/drivers/midqslvr.cpp index 0c607f87f72..8e6dc436c3d 100644 --- a/src/mame/drivers/midqslvr.cpp +++ b/src/mame/drivers/midqslvr.cpp @@ -427,10 +427,8 @@ void midqslvr_state::midqslvr(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read ( 0, FUNC(midqslvr_state::intel82439tx_pci_r), this); - pcibus.set_device_write( 0, FUNC(midqslvr_state::intel82439tx_pci_w), this); - pcibus.set_device_read (31, FUNC(midqslvr_state::intel82371ab_pci_r), this); - pcibus.set_device_write(31, FUNC(midqslvr_state::intel82371ab_pci_w), this); + pcibus.set_device( 0, FUNC(midqslvr_state::intel82439tx_pci_r), FUNC(midqslvr_state::intel82439tx_pci_w)); + pcibus.set_device(31, FUNC(midqslvr_state::intel82371ab_pci_r), FUNC(midqslvr_state::intel82371ab_pci_w)); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/midvunit.cpp b/src/mame/drivers/midvunit.cpp index b8e22302801..24fa7c874a3 100644 --- a/src/mame/drivers/midvunit.cpp +++ b/src/mame/drivers/midvunit.cpp @@ -650,10 +650,10 @@ void midvunit_state::midvunit_map(address_map &map) map(0x980080, 0x980080).noprw(); map(0x980082, 0x980083).r(FUNC(midvunit_state::midvunit_dma_trigger_r)); map(0x990000, 0x990000).r(FUNC(midvunit_state::midvunit_intcs_r)); - map(0x991030, 0x991030).lr16("991030", [this]() { return uint16_t(m_in1->read()); }); + map(0x991030, 0x991030).lr16(NAME([this] () { return uint16_t(m_in1->read()); })); // map(0x991050, 0x991050).readonly(); // seems to be another port map(0x991060, 0x991060).r(FUNC(midvunit_state::port0_r)); - map(0x992000, 0x992000).lr16("992000", [this]() { return uint16_t(m_dsw->read()); }); + map(0x992000, 0x992000).lr16(NAME([this] () { return uint16_t(m_dsw->read()); })); map(0x993000, 0x993000).rw(FUNC(midvunit_state::adc_r), FUNC(midvunit_state::adc_w)); map(0x994000, 0x994000).w(FUNC(midvunit_state::midvunit_control_w)); map(0x995000, 0x995000).rw(FUNC(midvunit_state::midvunit_wheel_board_r), FUNC(midvunit_state::midvunit_wheel_board_w)); @@ -1113,8 +1113,8 @@ void midvunit_state::midvcommon(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); - TIMER(config, "timer0").configure_generic(timer_device::expired_delegate()); - TIMER(config, "timer1").configure_generic(timer_device::expired_delegate()); + TIMER(config, "timer0").configure_generic(nullptr); + TIMER(config, "timer1").configure_generic(nullptr); WATCHDOG_TIMER(config, m_watchdog); @@ -1866,7 +1866,7 @@ void midvunit_state::init_crusnusa_common(offs_t speedup) m_adc_shift = 24; /* speedups */ - m_maincpu->space(AS_PROGRAM).install_read_handler(speedup, speedup + 1, read32_delegate(FUNC(midvunit_state::generic_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(speedup, speedup + 1, read32_delegate(*this, FUNC(midvunit_state::generic_speedup_r))); m_generic_speedup = m_ram_base + speedup; } void midvunit_state::init_crusnusa() { init_crusnusa_common(0xc93e); } @@ -1879,19 +1879,19 @@ void midvunit_state::init_crusnwld_common(offs_t speedup) m_adc_shift = 16; /* control register is different */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x994000, 0x994000, write32_delegate(FUNC(midvunit_state::crusnwld_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x994000, 0x994000, write32_delegate(*this, FUNC(midvunit_state::crusnwld_control_w))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x991030, 0x991030, read32_delegate(FUNC(midvunit_state::crusnwld_serial_status_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x996000, 0x996000, read32_delegate(FUNC(midvunit_state::crusnwld_serial_data_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x996000, 0x996000, write32_delegate(FUNC(midvunit_state::crusnwld_serial_data_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x991030, 0x991030, read32_delegate(*this, FUNC(midvunit_state::crusnwld_serial_status_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x996000, 0x996000, read32_delegate(*this, FUNC(midvunit_state::crusnwld_serial_data_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x996000, 0x996000, write32_delegate(*this, FUNC(midvunit_state::crusnwld_serial_data_w))); /* install strange protection device */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x9d0000, 0x9d1fff, read32_delegate(FUNC(midvunit_state::bit_data_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x9d0000, 0x9d0000, write32_delegate(FUNC(midvunit_state::bit_reset_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9d0000, 0x9d1fff, read32_delegate(*this, FUNC(midvunit_state::bit_data_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x9d0000, 0x9d0000, write32_delegate(*this, FUNC(midvunit_state::bit_reset_w))); /* speedups */ if (speedup) { - m_maincpu->space(AS_PROGRAM).install_read_handler(speedup, speedup + 1, read32_delegate(FUNC(midvunit_state::generic_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(speedup, speedup + 1, read32_delegate(*this, FUNC(midvunit_state::generic_speedup_r))); m_generic_speedup = m_ram_base + speedup; } } @@ -1906,13 +1906,13 @@ void midvunit_state::init_offroadc() m_adc_shift = 16; /* control register is different */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x994000, 0x994000, write32_delegate(FUNC(midvunit_state::crusnwld_control_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x994000, 0x994000, write32_delegate(*this, FUNC(midvunit_state::crusnwld_control_w))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x991030, 0x991030, read32_delegate(FUNC(midvunit_state::offroadc_serial_status_r),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x996000, 0x996000, read32_delegate(FUNC(midvunit_state::offroadc_serial_data_r),this), write32_delegate(FUNC(midvunit_state::offroadc_serial_data_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x991030, 0x991030, read32_delegate(*this, FUNC(midvunit_state::offroadc_serial_status_r))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x996000, 0x996000, read32_delegate(*this, FUNC(midvunit_state::offroadc_serial_data_r)), write32_delegate(*this, FUNC(midvunit_state::offroadc_serial_data_w))); /* speedups */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x195aa, 0x195aa, read32_delegate(FUNC(midvunit_state::generic_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x195aa, 0x195aa, read32_delegate(*this, FUNC(midvunit_state::generic_speedup_r))); m_generic_speedup = m_ram_base + 0x195aa; } @@ -1933,7 +1933,7 @@ void midvunit_state::init_wargods() m_midway_ioasic->set_default_nvram(default_nvram); /* speedups */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2f4c, 0x2f4c, read32_delegate(FUNC(midvunit_state::generic_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2f4c, 0x2f4c, read32_delegate(*this, FUNC(midvunit_state::generic_speedup_r))); m_generic_speedup = m_ram_base + 0x2f4c; } diff --git a/src/mame/drivers/midzeus.cpp b/src/mame/drivers/midzeus.cpp index 192bc040bb0..242c5baab74 100644 --- a/src/mame/drivers/midzeus.cpp +++ b/src/mame/drivers/midzeus.cpp @@ -1667,23 +1667,23 @@ void midzeus_state::init_mk4() void midzeus_state::init_invasn() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9c0000, 0x9c0000, read32_delegate(FUNC(midzeus_state::invasn_gun_r),this), write32_delegate(FUNC(midzeus_state::invasn_gun_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9c0000, 0x9c0000, read32_delegate(*this, FUNC(midzeus_state::invasn_gun_r)), write32_delegate(*this, FUNC(midzeus_state::invasn_gun_w))); } void midzeus2_state::init_crusnexo() { membank("bank1")->configure_entries(0, 3, memregion("user2")->base(), 0x400000*4); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9b0004, 0x9b0007, read32_delegate(FUNC(midzeus2_state::crusnexo_leds_r),this), write32_delegate(FUNC(midzeus2_state::crusnexo_leds_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler (0x8d0009, 0x8d000a, write32_delegate(FUNC(midzeus_state::keypad_select_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x9b0004, 0x9b0007, read32_delegate(*this, FUNC(midzeus2_state::crusnexo_leds_r)), write32_delegate(*this, FUNC(midzeus2_state::crusnexo_leds_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler (0x8d0009, 0x8d000a, write32_delegate(*this, FUNC(midzeus_state::keypad_select_w))); } void midzeus2_state::init_thegrid() { membank("bank1")->configure_entries(0, 3, memregion("user2")->base(), 0x400000*4); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8c0000, 0x8c0001, read32_delegate(FUNC(midzeus_state::trackball_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x9b0000, 0x9b0004, read32_delegate(FUNC(midzeus_state::grid_keypad_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8c0000, 0x8c0001, read32_delegate(*this, FUNC(midzeus_state::trackball_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9b0000, 0x9b0004, read32_delegate(*this, FUNC(midzeus_state::grid_keypad_r))); } diff --git a/src/mame/drivers/mikrosha.cpp b/src/mame/drivers/mikrosha.cpp index 7b51a032f9f..f82dc2910bb 100644 --- a/src/mame/drivers/mikrosha.cpp +++ b/src/mame/drivers/mikrosha.cpp @@ -44,7 +44,7 @@ private: void mikrosha_state::machine_reset() { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x8000+m_cart->get_rom_size()-1, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0x8000 + m_cart->get_rom_size() - 1, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); radio86_state::machine_reset(); } @@ -220,7 +220,7 @@ void mikrosha_state::mikrosha(machine_config &config) i8275_device &i8275(I8275(config, "i8275", XTAL(16'000'000) / 12)); i8275.set_character_width(6); - i8275.set_display_callback(FUNC(mikrosha_state::display_pixels), this); + i8275.set_display_callback(FUNC(mikrosha_state::display_pixels)); i8275.drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w)); pit8253_device &pit8253(PIT8253(config, "pit8253", 0)); diff --git a/src/mame/drivers/mil4000.cpp b/src/mame/drivers/mil4000.cpp index 61f33968369..220f47e8bbf 100644 --- a/src/mame/drivers/mil4000.cpp +++ b/src/mame/drivers/mil4000.cpp @@ -245,10 +245,10 @@ void mil4000_state::machine_start() void mil4000_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mil4000_state::get_sc0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mil4000_state::get_sc1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mil4000_state::get_sc2_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mil4000_state::get_sc3_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mil4000_state::get_sc0_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mil4000_state::get_sc1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mil4000_state::get_sc2_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mil4000_state::get_sc3_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_sc1_tilemap->set_transparent_pen(0); m_sc2_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/mindset.cpp b/src/mame/drivers/mindset.cpp index 5de3def7c65..e886f5003f5 100644 --- a/src/mame/drivers/mindset.cpp +++ b/src/mame/drivers/mindset.cpp @@ -229,7 +229,7 @@ void mindset_sound_module::map(address_map &map) void mindset_sound_module::idmap(address_map &map) { - map(0x00, 0x3f).lr8("id", []() -> u8 { return 0x13; }).umask16(0x00ff); + map(0x00, 0x3f).lr8(NAME([]() -> u8 { return 0x13; })).umask16(0x00ff); } ROM_START(mindset_sound_module) @@ -288,7 +288,7 @@ void mindset_rs232_module::map(address_map &map) void mindset_rs232_module::idmap(address_map &map) { - map(0x00, 0x3f).lr8("id", [this]() -> u8 { return 0x73 | (m_irq_state ? 0x80 : 0x00); }).umask16(0x00ff); + map(0x00, 0x3f).lr8(NAME([this]() -> u8 { return 0x73 | (m_irq_state ? 0x80 : 0x00); })).umask16(0x00ff); } void mindset_rs232_module::device_add_mconfig(machine_config &config) diff --git a/src/mame/drivers/miniboy7.cpp b/src/mame/drivers/miniboy7.cpp index 75af1b98ba5..28f52c0aed3 100644 --- a/src/mame/drivers/miniboy7.cpp +++ b/src/mame/drivers/miniboy7.cpp @@ -682,7 +682,7 @@ void miniboy7_state::miniboy7(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(miniboy7_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(miniboy7_state::crtc_update_row)); crtc.out_vsync_callback().set("pia0", FUNC(pia6821_device::ca1_w)); /* sound hardware */ diff --git a/src/mame/drivers/mips.cpp b/src/mame/drivers/mips.cpp index 11afd54c3c6..976587c1e32 100644 --- a/src/mame/drivers/mips.cpp +++ b/src/mame/drivers/mips.cpp @@ -308,15 +308,9 @@ void rx2030_state::iop_program_map(address_map &map) void rx2030_state::iop_io_map(address_map &map) { - map(0x0000, 0x003f).lrw16("mmu", - [this](offs_t offset, u16 mem_mask) - { - return m_mmu[offset]; - }, - [this](offs_t offset, u16 data, u16 mem_mask) - { - m_mmu[offset] = data; - }); + map(0x0000, 0x003f).lrw16( + NAME([this] (offs_t offset, u16 mem_mask) { return m_mmu[offset]; }), + NAME([this] (offs_t offset, u16 data, u16 mem_mask) { m_mmu[offset] = data; })); map(0x0040, 0x0043).m(m_fdc, FUNC(wd37c65c_device::map)).umask16(0xff); map(0x0044, 0x0045).w(m_fdc, FUNC(wd37c65c_device::dor_w)).umask16(0xff); @@ -332,33 +326,34 @@ void rx2030_state::iop_io_map(address_map &map) * scan code set. Possibly caused by imperfect V50 timing and/or memory * wait states that make the IOP code execute more slowly than emulated. */ - map(0x00c0, 0x00c1).lrw8("kbdc_data", [this]() { return m_kbdc->data_r(); }, [this](u8 data) { m_kbdc->data_w(data == 0xff ? 0xf6 : data); }).umask16(0xff); + map(0x00c0, 0x00c1).lrw8(NAME([this] () { return m_kbdc->data_r(); }), NAME([this] (u8 data) { m_kbdc->data_w(data == 0xff ? 0xf6 : data); })).umask16(0xff); map(0x00c4, 0x00c5).rw(m_kbdc, FUNC(at_keyboard_controller_device::status_r), FUNC(at_keyboard_controller_device::command_w)).umask16(0xff); map(0x0100, 0x0107).rw(m_scc, FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)).umask16(0xff); map(0x0140, 0x0143).rw(m_net, FUNC(am7990_device::regs_r), FUNC(am7990_device::regs_w)); - map(0x0180, 0x018b).lr8("mac", [](offs_t offset) - { - // Ethernet MAC address (LSB first) - static u8 const mac[] = { 0x00, 0x00, 0x6b, 0x12, 0x34, 0x56 }; + map(0x0180, 0x018b).lr8( + [] (offs_t offset) + { + // Ethernet MAC address (LSB first) + static u8 const mac[] = { 0x00, 0x00, 0x6b, 0x12, 0x34, 0x56 }; - return mac[offset]; - }).umask16(0xff); + return mac[offset]; + }, "mac_r").umask16(0xff); // iop tests bits 0x04, 0x10 and 0x20 - map(0x01c0, 0x01c1).lr8("?", [this]() { return m_iop_interface; }); // maybe? + map(0x01c0, 0x01c1).lr8(NAME([this] () { return m_iop_interface; })); // maybe? map(0x0200, 0x0201).rw(m_fio, FUNC(z8038_device::fifo_r<1>), FUNC(z8038_device::fifo_w<1>)).umask16(0xff); map(0x0202, 0x0203).rw(m_fio, FUNC(z8038_device::reg_r<1>), FUNC(z8038_device::reg_w<1>)).umask16(0xff); - map(0x0240, 0x0241).lw8("rtc", [this](u8 data) { m_rtc->write(0, data); }).umask16(0xff00); - map(0x0280, 0x0281).lrw8("rtc", - [this]() { return m_rtc->read(1); }, - [this](u8 data) { m_rtc->write(1, data); }).umask16(0xff00); + map(0x0240, 0x0241).lw8(NAME([this] (u8 data) { m_rtc->write(0, data); })).umask16(0xff00); + map(0x0280, 0x0281).lrw8( + NAME([this] () { return m_rtc->read(1); }), + NAME([this] (u8 data) { m_rtc->write(1, data); })).umask16(0xff00); - map(0x02c0, 0x2c1).lw8("cpu_interface", [this](u8 data) + map(0x02c0, 0x2c1).lw8([this](u8 data) { switch (data) { @@ -389,15 +384,15 @@ void rx2030_state::iop_io_map(address_map &map) // something to do with shared memory access? //break; } - }).umask16(0xff); + }, "cpu_interface_w").umask16(0xff); - map(0x0380, 0x0381).lw8("led", [this](u8 data) { logerror("led_w 0x%02x\n", data); }).umask16(0xff00); + map(0x0380, 0x0381).lw8(NAME([this](u8 data) { logerror("led_w 0x%02x\n", data); })).umask16(0xff00); } void rx2030_state::rx2030_map(address_map &map) { - map(0x02000000, 0x02000003).lrw8("iop_interface", - [this]() { return m_iop_interface; }, + map(0x02000000, 0x02000003).lrw8( + NAME([this]() { return m_iop_interface; }), [this](u8 data) { switch (data) @@ -479,7 +474,7 @@ void rx2030_state::rx2030_map(address_map &map) LOG("iop interface command 0x%02x (%s)\n", data, machine().describe_context()); break; } - } + }, "iop_interface_w" ).umask32(0xff); } @@ -695,7 +690,7 @@ void rx3230_state::rx3230_map(address_map &map) map(0x18000000, 0x1800003f).m(m_scsi, FUNC(ncr53c94_device::map)).umask32(0xff); map(0x19000000, 0x19000003).rw(m_kbdc, FUNC(at_keyboard_controller_device::data_r), FUNC(at_keyboard_controller_device::data_w)).umask32(0xff); map(0x19000004, 0x19000007).rw(m_kbdc, FUNC(at_keyboard_controller_device::status_r), FUNC(at_keyboard_controller_device::command_w)).umask32(0xff); - map(0x19800000, 0x19800003).lr8("int_reg", [this]() { return m_int_reg; }).umask32(0xff); + map(0x19800000, 0x19800003).lr8(NAME([this]() { return m_int_reg; })).umask32(0xff); map(0x1a000000, 0x1a000007).rw(m_net, FUNC(am7990_device::regs_r), FUNC(am7990_device::regs_w)).umask32(0xffff); map(0x1b000000, 0x1b00001f).rw(m_scc, FUNC(z80scc_device::ab_dc_r), FUNC(z80scc_device::ab_dc_w)).umask32(0xff); // TODO: order? @@ -713,8 +708,8 @@ void rx3230_state::rs3230_map(address_map &map) { rx3230_map(map); - map(0x10000000, 0x12ffffff).lrw32("vram", - [this](offs_t offset) + map(0x10000000, 0x12ffffff).lrw32( + NAME([this](offs_t offset) { u32 const ram_offset = ((offset >> 13) * 0x500) + ((offset & 0x1ff) << 2); @@ -725,8 +720,8 @@ void rx3230_state::rs3230_map(address_map &map) u32(m_vram->read(ram_offset | 3)) << 0; return data; - }, - [this](offs_t offset, u32 data) + }), + NAME([this](offs_t offset, u32 data) { u32 const ram_offset = ((offset >> 13) * 0x500) + ((offset & 0x1ff) << 2); @@ -734,19 +729,19 @@ void rx3230_state::rs3230_map(address_map &map) m_vram->write(ram_offset | 1, data >> 16); m_vram->write(ram_offset | 2, data >> 8); m_vram->write(ram_offset | 3, data >> 0); - }); + })); map(0x14000000, 0x14000003).rw(m_ramdac, FUNC(bt459_device::address_lo_r), FUNC(bt459_device::address_lo_w)).umask32(0xff); map(0x14080000, 0x14080003).rw(m_ramdac, FUNC(bt459_device::address_hi_r), FUNC(bt459_device::address_hi_w)).umask32(0xff); map(0x14100000, 0x14100003).rw(m_ramdac, FUNC(bt459_device::register_r), FUNC(bt459_device::register_w)).umask32(0xff); map(0x14180000, 0x14180003).rw(m_ramdac, FUNC(bt459_device::palette_r), FUNC(bt459_device::palette_w)).umask32(0xff); - map(0x16080004, 0x16080007).lr8("gfx_reg", [this]() + map(0x16080004, 0x16080007).lr8(NAME([this] () { u8 const data = (m_screen->vblank() ? GFX_V_BLANK : 0) | (m_screen->hblank() ? GFX_H_BLANK : 0); return data; - }).umask32(0xff); // also write 0 + })).umask32(0xff); // also write 0 //map(0x16000004, 0x16000007).w(); // write 0x00000001 //map(0x16100000, 0x16100003).w(); // write 0xffffffff diff --git a/src/mame/drivers/mirage.cpp b/src/mame/drivers/mirage.cpp index 0a5fc2b446e..113582978d7 100644 --- a/src/mame/drivers/mirage.cpp +++ b/src/mame/drivers/mirage.cpp @@ -310,8 +310,8 @@ void miragemj_state::mirage(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(miragemj_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(miragemj_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(miragemj_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(miragemj_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/mjsenpu.cpp b/src/mame/drivers/mjsenpu.cpp index c0780ae7eea..697afbaa279 100644 --- a/src/mame/drivers/mjsenpu.cpp +++ b/src/mame/drivers/mjsenpu.cpp @@ -55,13 +55,13 @@ class mjsenpu_state : public driver_device { public: mjsenpu_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_oki(*this, "oki"), - m_hopper(*this, "hopper"), - m_mainram(*this, "mainram"), - // m_vram(*this, "vram"), - m_palette(*this, "palette") + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_oki(*this, "oki") + , m_hopper(*this, "hopper") + , m_mainram(*this, "mainram") + // , m_vram(*this, "vram") + , m_palette(*this, "palette") { } @@ -538,7 +538,7 @@ void mjsenpu_state::init_mjsenpu() (loops for 744256 instructions) */ // not especially effective, might be wrong. - m_maincpu->space(AS_PROGRAM).install_read_handler(0x23468, 0x2346b, read32_delegate(FUNC(mjsenpu_state::mjsenpu_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x23468, 0x2346b, read32_delegate(*this, FUNC(mjsenpu_state::mjsenpu_speedup_r))); } diff --git a/src/mame/drivers/ml20.cpp b/src/mame/drivers/ml20.cpp index 29964942c1a..413efc7ca99 100644 --- a/src/mame/drivers/ml20.cpp +++ b/src/mame/drivers/ml20.cpp @@ -273,7 +273,7 @@ void ml20_state::ml20(machine_config &config) HD44780(config, m_lcdc, 0); m_lcdc->set_lcd_size(2, 16); - m_lcdc->set_pixel_update_cb(FUNC(ml20_state::lcd_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(ml20_state::lcd_pixel_update)); config.set_default_layout(layout_ml20); diff --git a/src/mame/drivers/mmm.cpp b/src/mame/drivers/mmm.cpp index 2e2e2f9dc45..8a80b1d940c 100644 --- a/src/mame/drivers/mmm.cpp +++ b/src/mame/drivers/mmm.cpp @@ -17,10 +17,10 @@ class mmm_state : public driver_device { public: mmm_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_maincpu(*this, "maincpu"), - m_ctc(*this, "ctc"), - m_inputs(*this, "IN%u", 0) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_ctc(*this, "ctc") + , m_inputs(*this, "IN%u", 0) { } void mmm(machine_config &config); diff --git a/src/mame/drivers/model3.cpp b/src/mame/drivers/model3.cpp index 7441d928c33..5c3becdccf5 100644 --- a/src/mame/drivers/model3.cpp +++ b/src/mame/drivers/model3.cpp @@ -6114,23 +6114,23 @@ void model3_state::init_model3_10() { interleave_vroms(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc0000000, 0xc00000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc0000000, 0xc00000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc105_addr_r),this), write64_delegate(FUNC(model3_state::mpc105_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc105_data_r),this), write64_delegate(FUNC(model3_state::mpc105_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc105_reg_r),this), write64_delegate(FUNC(model3_state::mpc105_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc105_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc105_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc105_data_r)), write64_delegate(*this, FUNC(model3_state::mpc105_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc105_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc105_reg_w))); } void model3_state::init_model3_15() { interleave_vroms(); - m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); + m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1"); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc105_addr_r),this), write64_delegate(FUNC(model3_state::mpc105_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc105_data_r),this), write64_delegate(FUNC(model3_state::mpc105_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc105_reg_r),this), write64_delegate(FUNC(model3_state::mpc105_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc105_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc105_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc105_data_r)), write64_delegate(*this, FUNC(model3_state::mpc105_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc105_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc105_reg_w))); } void model3_state::init_model3_20() @@ -6138,11 +6138,11 @@ void model3_state::init_model3_20() interleave_vroms(); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc2000000, 0xc20000ff, read64_delegate(FUNC(model3_state::real3d_dma_r),this), write64_delegate(FUNC(model3_state::real3d_dma_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc2000000, 0xc20000ff, read64_delegate(*this, FUNC(model3_state::real3d_dma_r)), write64_delegate(*this, FUNC(model3_state::real3d_dma_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc106_reg_r),this), write64_delegate(FUNC(model3_state::mpc106_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc106_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc106_reg_w))); } void model3_state::init_lostwsga() @@ -6150,7 +6150,7 @@ void model3_state::init_lostwsga() uint32_t *rom = (uint32_t*)memregion("user1")->base(); init_model3_15(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); rom[0x7374f0/4] = 0x38840004; /* This seems to be an actual bug in the original code */ } @@ -6159,7 +6159,7 @@ void model3_state::init_scud() { init_model3_15(); /* TODO: network device at 0xC0000000 - FF */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); // uint32_t *rom = (uint32_t*)memregion("user1")->base(); // rom[(0x799de8^4)/4] = 0x00050208; // secret debug menu @@ -6168,20 +6168,20 @@ void model3_state::init_scud() void model3_state::init_scudplus() { init_model3_15(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); } void model3_state::init_scudplusa() { init_model3_15(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); } void model3_state::init_lemans24() { init_model3_15(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc1000000, 0xc10000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); // rom[(0x73fe38^4)/4] = 0x38840004; /* This seems to be an actual bug in the original code */ } @@ -6207,13 +6207,13 @@ void model3_state::init_vs215() interleave_vroms(); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc106_reg_r),this), write64_delegate(FUNC(model3_state::mpc106_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc106_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc106_reg_w))); } void model3_state::init_vs29815() @@ -6228,13 +6228,13 @@ void model3_state::init_vs29815() interleave_vroms(); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc106_reg_r),this), write64_delegate(FUNC(model3_state::mpc106_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc106_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc106_reg_w))); } void model3_state::init_bass() @@ -6244,13 +6244,13 @@ void model3_state::init_bass() interleave_vroms(); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(FUNC(model3_state::mpc106_addr_r),this), write64_delegate(FUNC(model3_state::mpc106_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(FUNC(model3_state::mpc106_data_r),this), write64_delegate(FUNC(model3_state::mpc106_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc106_reg_r),this), write64_delegate(FUNC(model3_state::mpc106_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfec00000, 0xfedfffff, read64_delegate(*this, FUNC(model3_state::mpc106_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc106_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfee00000, 0xfeffffff, read64_delegate(*this, FUNC(model3_state::mpc106_data_r)), write64_delegate(*this, FUNC(model3_state::mpc106_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc106_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc106_reg_w))); } void model3_state::init_getbass() @@ -6258,11 +6258,11 @@ void model3_state::init_getbass() interleave_vroms(); m_maincpu->space(AS_PROGRAM).install_read_bank(0xff000000, 0xff7fffff, "bank1" ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(FUNC(model3_state::scsi_r),this), write64_delegate(FUNC(model3_state::scsi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf9000000, 0xf90000ff, read64_delegate(*this, FUNC(model3_state::scsi_r)), write64_delegate(*this, FUNC(model3_state::scsi_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(FUNC(model3_state::mpc105_addr_r),this), write64_delegate(FUNC(model3_state::mpc105_addr_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(FUNC(model3_state::mpc105_data_r),this), write64_delegate(FUNC(model3_state::mpc105_data_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(FUNC(model3_state::mpc105_reg_r),this), write64_delegate(FUNC(model3_state::mpc105_reg_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0800cf8, 0xf0800cff, read64_delegate(*this, FUNC(model3_state::mpc105_addr_r)), write64_delegate(*this, FUNC(model3_state::mpc105_addr_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0c00cf8, 0xf0c00cff, read64_delegate(*this, FUNC(model3_state::mpc105_data_r)), write64_delegate(*this, FUNC(model3_state::mpc105_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf8fff000, 0xf8fff0ff, read64_delegate(*this, FUNC(model3_state::mpc105_reg_r)), write64_delegate(*this, FUNC(model3_state::mpc105_reg_w))); } void model3_state::init_vs2() @@ -6353,8 +6353,8 @@ void model3_state::init_daytona2() // uint32_t *rom = (uint32_t*)memregion("user1")->base(); init_model3_20(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2" ); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(*this, FUNC(model3_state::daytona2_rombank_w))); + m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2"); //rom[(0x68468c^4)/4] = 0x60000000; //rom[(0x6063c4^4)/4] = 0x60000000; @@ -6367,8 +6367,8 @@ void model3_state::init_dayto2pe() // uint32_t *rom = (uint32_t*)memregion("user1")->base(); init_model3_20(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(FUNC(model3_state::daytona2_rombank_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2" ); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc3800000, 0xc3800007, write64_delegate(*this, FUNC(model3_state::daytona2_rombank_w))); + m_maincpu->space(AS_PROGRAM).install_read_bank(0xc3000000, 0xc37fffff, "bank2"); // rom[(0x606784^4)/4] = 0x60000000; // rom[(0x69a3fc^4)/4] = 0x60000000; // jump to encrypted code diff --git a/src/mame/drivers/mogura.cpp b/src/mame/drivers/mogura.cpp index 75ce2cffd23..cf81571882e 100644 --- a/src/mame/drivers/mogura.cpp +++ b/src/mame/drivers/mogura.cpp @@ -97,7 +97,7 @@ TILE_GET_INFO_MEMBER(mogura_state::get_mogura_tile_info) void mogura_state::video_start() { m_gfxdecode->gfx(0)->set_source(m_gfxram); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mogura_state::get_mogura_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mogura_state::get_mogura_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } uint32_t mogura_state::screen_update_mogura(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/mole.cpp b/src/mame/drivers/mole.cpp index a217508e49d..7726f679f21 100644 --- a/src/mame/drivers/mole.cpp +++ b/src/mame/drivers/mole.cpp @@ -110,7 +110,7 @@ TILE_GET_INFO_MEMBER(mole_state::get_bg_tile_info) void mole_state::video_start() { memset(m_tileram, 0, sizeof(m_tileram)); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mole_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mole_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); save_item(NAME(m_tileram)); } diff --git a/src/mame/drivers/monon_color.cpp b/src/mame/drivers/monon_color.cpp index 14952bd45e2..a1017861101 100644 --- a/src/mame/drivers/monon_color.cpp +++ b/src/mame/drivers/monon_color.cpp @@ -154,7 +154,7 @@ void monon_color_state::monon_color(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "monon_color_cart", "bin")); cartslot.set_width(GENERIC_ROM8_WIDTH); - cartslot.set_device_load(FUNC(monon_color_state::cart_load), this); + cartslot.set_device_load(FUNC(monon_color_state::cart_load)); cartslot.set_must_be_loaded(true); /* software lists */ diff --git a/src/mame/drivers/moo.cpp b/src/mame/drivers/moo.cpp index a19bcf5611c..92b7e399270 100644 --- a/src/mame/drivers/moo.cpp +++ b/src/mame/drivers/moo.cpp @@ -528,12 +528,12 @@ void moo_state::moo(machine_config &config) MCFG_VIDEO_START_OVERRIDE(moo_state,moo) K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, -48+1, 23); m_k053246->set_palette("palette"); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(moo_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(moo_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette("palette"); @@ -582,12 +582,12 @@ void moo_state::moobl(machine_config &config) MCFG_VIDEO_START_OVERRIDE(moo_state,moo) K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, -48+1, 23); m_k053246->set_palette("palette"); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(moo_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(moo_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette("palette"); diff --git a/src/mame/drivers/mpu12wbk.cpp b/src/mame/drivers/mpu12wbk.cpp index ba6be725812..30ffdd1875b 100644 --- a/src/mame/drivers/mpu12wbk.cpp +++ b/src/mame/drivers/mpu12wbk.cpp @@ -290,7 +290,7 @@ TILE_GET_INFO_MEMBER(mpu12wbk_state::get_bg_tile_info) void mpu12wbk_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mpu12wbk_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mpu12wbk_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/mpu3.cpp b/src/mame/drivers/mpu3.cpp index 010b9076c88..484ca9bc24a 100644 --- a/src/mame/drivers/mpu3.cpp +++ b/src/mame/drivers/mpu3.cpp @@ -904,10 +904,9 @@ void mpu3_state::init_m3hprvpr() { address_space &space = m_maincpu->space(AS_PROGRAM); - m_disp_func=METER_PORT; + m_disp_func = METER_PORT; m_current_chr_table = hprvpr_data; - space.install_readwrite_handler(0xc000, 0xc000 , read8_delegate(FUNC(mpu3_state::characteriser_r), this),write8_delegate(FUNC(mpu3_state::characteriser_w), this)); - + space.install_readwrite_handler(0xc000, 0xc000, read8_delegate(*this, FUNC(mpu3_state::characteriser_r)), write8_delegate(*this, FUNC(mpu3_state::characteriser_w))); } ROM_START( m3tst ) diff --git a/src/mame/drivers/mpu4vid.cpp b/src/mame/drivers/mpu4vid.cpp index 6f025bbf86e..96bc9aa624c 100644 --- a/src/mame/drivers/mpu4vid.cpp +++ b/src/mame/drivers/mpu4vid.cpp @@ -1161,7 +1161,7 @@ MACHINE_START_MEMBER(mpu4vid_state,mpu4_vid) m_link7a_connected = 1; /* Hook the reset line */ - m_videocpu->set_reset_callback(write_line_delegate(FUNC(mpu4vid_state::mpu_video_reset),this)); + m_videocpu->set_reset_callback(FUNC(mpu4vid_state::mpu_video_reset)); } MACHINE_RESET_MEMBER(mpu4vid_state,mpu4_vid) diff --git a/src/mame/drivers/mtx.cpp b/src/mame/drivers/mtx.cpp index efdf393227b..bc802a49a75 100644 --- a/src/mame/drivers/mtx.cpp +++ b/src/mame/drivers/mtx.cpp @@ -322,8 +322,8 @@ void mtx_state::mtx512(machine_config &config) output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); m_centronics->set_output_latch(cent_data_out); - SNAPSHOT(config, "snapshot", "mtx", attotime::from_seconds(1)).set_load_callback(FUNC(mtx_state::snapshot_cb), this); - QUICKLOAD(config, "quickload", "run", attotime::from_seconds(1)).set_load_callback(FUNC(mtx_state::quickload_cb), this); + SNAPSHOT(config, "snapshot", "mtx", attotime::from_seconds(1)).set_load_callback(FUNC(mtx_state::snapshot_cb)); + QUICKLOAD(config, "quickload", "run", attotime::from_seconds(1)).set_load_callback(FUNC(mtx_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED); @@ -336,7 +336,7 @@ void mtx_state::mtx512(machine_config &config) /* rom extension board */ GENERIC_SOCKET(config, m_extrom, generic_plain_slot, "mtx_rom", "bin,rom"); - m_extrom->set_device_load(FUNC(mtx_state::extrom_load), this); + m_extrom->set_device_load(FUNC(mtx_state::extrom_load)); /* rs232 board with disk drive bus */ MTX_EXP_SLOT(config, m_exp, mtx_expansion_devices, nullptr); @@ -348,7 +348,7 @@ void mtx_state::mtx512(machine_config &config) /* cartridge slot */ GENERIC_CARTSLOT(config, m_rompak, generic_plain_slot, "mtx_cart", "bin,rom"); - m_rompak->set_device_load(FUNC(mtx_state::rompak_load), this); + m_rompak->set_device_load(FUNC(mtx_state::rompak_load)); /* software lists */ SOFTWARE_LIST(config, "cass_list").set_original("mtx_cass"); diff --git a/src/mame/drivers/multfish.cpp b/src/mame/drivers/multfish.cpp index 829252997f9..943a0e83b44 100644 --- a/src/mame/drivers/multfish.cpp +++ b/src/mame/drivers/multfish.cpp @@ -215,10 +215,10 @@ void igrosoft_gamble_state::video_start() memset(m_vid,0x00,sizeof(m_vid)); save_item(NAME(m_vid)); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igrosoft_gamble_state::get_igrosoft_gamble_tile_info),this),TILEMAP_SCAN_ROWS,16,16, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igrosoft_gamble_state::get_igrosoft_gamble_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64, 32); m_tilemap->set_transparent_pen(255); - m_reel_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(igrosoft_gamble_state::get_igrosoft_gamble_reel_tile_info),this),TILEMAP_SCAN_ROWS,16,16, 64, 64); + m_reel_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(igrosoft_gamble_state::get_igrosoft_gamble_reel_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64, 64); m_reel_tilemap->set_transparent_pen(255); m_reel_tilemap->set_scroll_cols(64); } diff --git a/src/mame/drivers/multi16.cpp b/src/mame/drivers/multi16.cpp index 9790814401b..636261155f6 100644 --- a/src/mame/drivers/multi16.cpp +++ b/src/mame/drivers/multi16.cpp @@ -173,7 +173,7 @@ void multi16_state::multi16(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(multi16_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(multi16_state::crtc_update_row)); // floppy MB8866(config, m_fdc, 2000000); diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp index 381f6d01bb5..0c164bac5d6 100644 --- a/src/mame/drivers/multi8.cpp +++ b/src/mame/drivers/multi8.cpp @@ -646,7 +646,7 @@ void multi8_state::multi8(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(multi8_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(multi8_state::crtc_update_row)); I8255(config, m_ppi); m_ppi->in_pa_callback().set(FUNC(multi8_state::porta_r)); diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index a8617843474..cac9ad1c0e8 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -599,11 +599,11 @@ WRITE8_MEMBER(multigam_state::multigam3_mmc3_rom_switch_w) case 0x6000: /* disable irqs */ m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); + m_ppu->set_scanline_callback(nullptr); break; case 0x6001: /* enable irqs */ - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(multigam_state::multigam3_mmc3_scanline_cb),this)); + m_ppu->set_scanline_callback(*this, FUNC(multigam_state::multigam3_mmc3_scanline_cb)); break; } } @@ -619,7 +619,7 @@ void multigam_state::multigam_init_mmc3(uint8_t *prg_base, int prg_size, int chr memcpy(&dst[0x8000], prg_base + (prg_size - 0x4000), 0x4000); memcpy(&dst[0xc000], prg_base + (prg_size - 0x4000), 0x4000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(multigam_state::multigam3_mmc3_rom_switch_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigam3_mmc3_rom_switch_w))); m_multigam3_mmc3_banks[0] = 0x1e; m_multigam3_mmc3_banks[1] = 0x1f; @@ -664,7 +664,7 @@ WRITE8_MEMBER(multigam_state::multigm3_switch_prg_rom) } else { - space.install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(multigam_state::multigm3_mapper2_w),this) ); + space.install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigm3_mapper2_w)) ); membank("bank10")->set_base(memregion("maincpu")->base() + 0x6000); } @@ -725,11 +725,11 @@ void multigam_state::multigam_init_mapper02(uint8_t* prg_base, int prg_size) { uint8_t* mem = memregion("maincpu")->base(); memcpy(mem + 0x8000, prg_base + prg_size - 0x8000, 0x8000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(multigam_state::multigam3_mapper02_rom_switch_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigam3_mapper02_rom_switch_w))); m_mapper02_prg_base = prg_base; m_mapper02_prg_size = prg_size; - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); + m_ppu->set_scanline_callback(nullptr); } /****************************************************** @@ -878,7 +878,7 @@ void multigam_state::multigam_init_mmc1(uint8_t *prg_base, int prg_size, int chr memcpy(&dst[0x8000], prg_base + (prg_size - 0x8000), 0x8000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(multigam_state::mmc1_rom_switch_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::mmc1_rom_switch_w))); m_mmc1_reg_write_enable = 1; m_mmc1_rom_mask = (prg_size / 0x4000) - 1; @@ -886,7 +886,7 @@ void multigam_state::multigam_init_mmc1(uint8_t *prg_base, int prg_size, int chr m_mmc1_prg_size = prg_size; m_mmc1_chr_bank_base = chr_bank_base; - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); + m_ppu->set_scanline_callback(nullptr); } @@ -949,7 +949,7 @@ void multigam_state::supergm3_set_bank() // title screen memcpy(mem + 0x8000, mem + 0x18000, 0x8000); membank("bank10")->set_base(mem + 0x6000); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate()); + m_ppu->set_scanline_callback(nullptr); } else if ((m_supergm3_prg_bank & 0x40) == 0) { @@ -1168,7 +1168,7 @@ void multigam_state::machine_start() m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank1"); membank("bank1")->set_base(memregion("gfx1")->base()); } @@ -1181,7 +1181,7 @@ MACHINE_START_MEMBER(multigam_state,multigm3) m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank2"); m_ppu->space(AS_PROGRAM).install_read_bank(0x0400, 0x07ff, "bank3"); @@ -1203,7 +1203,7 @@ MACHINE_START_MEMBER(multigam_state,supergm3) m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(multigam_state::multigam_nt_r),this), write8_delegate(FUNC(multigam_state::multigam_nt_w),this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_vram = std::make_unique<uint8_t[]>(0x2000); m_multigmc_mmc3_6000_ram = std::make_unique<uint8_t[]>(0x2000); diff --git a/src/mame/drivers/munchmo.cpp b/src/mame/drivers/munchmo.cpp index 48ca682dd5f..4910a9c2a98 100644 --- a/src/mame/drivers/munchmo.cpp +++ b/src/mame/drivers/munchmo.cpp @@ -102,7 +102,7 @@ void munchmo_state::mnchmobl_map(address_map &map) map(0xbaba, 0xbaba).nopw(); /* ? */ map(0xbc00, 0xbc7f).ram().share(m_status_vram); map(0xbe00, 0xbe00).w(m_soundlatch, FUNC(generic_latch_8_device::write)); - map(0xbe01, 0xbe01).select(0x0070).lw8("mainlatch_w", [this](offs_t offset, u8 data){ m_mainlatch->write_d0(offset >> 4, data); }); + map(0xbe01, 0xbe01).select(0x0070).lw8(NAME([this] (offs_t offset, u8 data){ m_mainlatch->write_d0(offset >> 4, data); })); map(0xbe02, 0xbe02).portr("DSW1"); map(0xbe03, 0xbe03).portr("DSW2"); map(0xbf00, 0xbf00).w(FUNC(munchmo_state::nmi_ack_w)); // CNI 1-8C diff --git a/src/mame/drivers/mx2178.cpp b/src/mame/drivers/mx2178.cpp index 18b06fb7f92..50deae97975 100644 --- a/src/mame/drivers/mx2178.cpp +++ b/src/mame/drivers/mx2178.cpp @@ -153,7 +153,7 @@ void mx2178_state::mx2178(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(mx2178_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(mx2178_state::crtc_update_row)); crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); clock_device &acia_clock(CLOCK(config, "acia_clock", XTAL(18'869'600) / 30)); diff --git a/src/mame/drivers/myb3k.cpp b/src/mame/drivers/myb3k.cpp index 6eb7264e9bf..3c611cc0ec9 100644 --- a/src/mame/drivers/myb3k.cpp +++ b/src/mame/drivers/myb3k.cpp @@ -985,7 +985,7 @@ void myb3k_state::myb3k(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(myb3k_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(myb3k_state::crtc_update_row)); /* ISA8+ Expansion bus */ ISA8(config, m_isabus, 0); diff --git a/src/mame/drivers/mycom.cpp b/src/mame/drivers/mycom.cpp index 87097a45524..e98a1de632e 100644 --- a/src/mame/drivers/mycom.cpp +++ b/src/mame/drivers/mycom.cpp @@ -556,7 +556,7 @@ void mycom_state::mycom(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(mycom_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(mycom_state::crtc_update_row)); SPEAKER(config, "mono").front_center(); SN76489(config, m_audio, 10_MHz_XTAL / 4).add_route(ALL_OUTPUTS, "mono", 1.50); diff --git a/src/mame/drivers/mystwarr.cpp b/src/mame/drivers/mystwarr.cpp index 273a64acab4..e06b365278c 100644 --- a/src/mame/drivers/mystwarr.cpp +++ b/src/mame/drivers/mystwarr.cpp @@ -957,14 +957,14 @@ void mystwarr_state::mystwarr(machine_config &config) m_palette->enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(mystwarr_state::mystwarr_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::mystwarr_tile_callback)); m_k056832->set_config(K056832_BPP_5, 0, 0); m_k056832->set_palette(m_palette); K055555(config, m_k055555, 0); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::mystwarr_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::mystwarr_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -48, -24); m_k055673->set_palette(m_palette); @@ -1012,9 +1012,9 @@ void mystwarr_state::viostorm(machine_config &config) m_screen->set_size(64*8, 32*8); m_screen->set_visarea(40, 40+384-1, 16, 16+224-1); - m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback)); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -62, -23); } @@ -1039,9 +1039,9 @@ void mystwarr_state::metamrph(machine_config &config) m_screen->set_size(64*8, 32*8); m_screen->set_visarea(24, 24+288-1, 15, 15+224-1); - m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback)); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::metamrph_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -51, -24); } @@ -1068,9 +1068,9 @@ void mystwarr_state::dadandrn(machine_config &config) m_screen->set_size(64*8, 32*8); m_screen->set_visarea(24, 24+288-1, 17, 17+224-1); - m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback)); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -42, -22); } @@ -1100,9 +1100,9 @@ void mystwarr_state::gaiapols(machine_config &config) m_screen->set_size(64*8, 32*8); m_screen->set_visarea(40, 40+376-1, 16, 16+224-1); - m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::game4bpp_tile_callback)); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::gaiapols_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -61, -22); // stage2 brick walls } @@ -1129,9 +1129,9 @@ void mystwarr_state::martchmp(machine_config &config) m_screen->set_size(64*8, 32*8); m_screen->set_visarea(32, 32+384-1, 16, 16+224-1); - m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(mystwarr_state::game5bpp_tile_callback)); - m_k055673->set_sprite_callback(FUNC(mystwarr_state::martchmp_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(mystwarr_state::martchmp_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_GX, -58, -23); config.device_remove("k054539_2"); diff --git a/src/mame/drivers/myvision.cpp b/src/mame/drivers/myvision.cpp index 74459784666..f3dfb32c807 100644 --- a/src/mame/drivers/myvision.cpp +++ b/src/mame/drivers/myvision.cpp @@ -140,7 +140,7 @@ INPUT_PORTS_END void myvision_state::machine_start() { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x5fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); save_item(NAME(m_column)); } @@ -239,7 +239,7 @@ void myvision_state::myvision(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "myvision_cart")); - cartslot.set_device_load(FUNC(myvision_state::cart_load), this); + cartslot.set_device_load(FUNC(myvision_state::cart_load)); //cartslot.set_must_be_loaded(true); /* software lists */ diff --git a/src/mame/drivers/n64.cpp b/src/mame/drivers/n64.cpp index 83f5198a6a9..27c787f774b 100644 --- a/src/mame/drivers/n64.cpp +++ b/src/mame/drivers/n64.cpp @@ -469,7 +469,7 @@ void n64_mess_state::n64(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "n64_cart", "v64,z64,rom,n64,bin")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(n64_mess_state::cart_load), this); + cartslot.set_device_load(FUNC(n64_mess_state::cart_load)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("n64"); @@ -484,11 +484,11 @@ void n64_mess_state::n64dd(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "n64_cart")); cartslot.set_extensions("v64,z64,rom,n64,bin"); - cartslot.set_device_load(FUNC(n64_mess_state::cart_load), this); + cartslot.set_device_load(FUNC(n64_mess_state::cart_load)); harddisk_image_device &hdd(HARDDISK(config, "n64disk")); - hdd.set_device_load(FUNC(n64_mess_state::load_n64dd), this); - hdd.set_device_unload(FUNC(n64_mess_state::unload_n64dd), this); + hdd.set_device_load(FUNC(n64_mess_state::load_n64dd)); + hdd.set_device_unload(FUNC(n64_mess_state::unload_n64dd)); hdd.set_interface("n64dd_disk"); SOFTWARE_LIST(config, "dd_list").set_original("n64dd"); diff --git a/src/mame/drivers/namcona1.cpp b/src/mame/drivers/namcona1.cpp index 2ea2c8b5a0b..3e939215503 100644 --- a/src/mame/drivers/namcona1.cpp +++ b/src/mame/drivers/namcona1.cpp @@ -643,9 +643,9 @@ void namcona1_state::na1mcu_shared_w(offs_t offset, u16 data, u16 mem_mask) void namcona1_state::namcona1_mcu_map(address_map &map) { map(0x000800, 0x000fff).rw(FUNC(namcona1_state::mcu_mailbox_r), FUNC(namcona1_state::mcu_mailbox_w_mcu)); // "Mailslot" communications ports - map(0x001000, 0x001fff).lrw8("c219_rw", - [this](offs_t offset) { return m_c140->c140_r(offset ^ 1)/* need ^ 1 because endian issue */; }, - [this](offs_t offset, u8 data) { m_c140->c140_w(offset ^ 1, data); }); // C140-alike sound chip + map(0x001000, 0x001fff).lrw8( + NAME([this](offs_t offset) { return m_c140->c140_r(offset ^ 1)/* need ^ 1 because endian issue */; }), + NAME([this](offs_t offset, u8 data) { m_c140->c140_w(offset ^ 1, data); })); // C140-alike sound chip map(0x002000, 0x002fff).rw(FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // mirror of first page of shared work RAM map(0x003000, 0x00afff).ram(); // there is a 32k RAM chip according to CGFM map(0x200000, 0x27ffff).rw(FUNC(namcona1_state::na1mcu_shared_r), FUNC(namcona1_state::na1mcu_shared_w)); // shared work RAM diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp index 3b8bea6e11d..de2b9632302 100644 --- a/src/mame/drivers/namcos11.cpp +++ b/src/mame/drivers/namcos11.cpp @@ -560,7 +560,7 @@ void namcos11_state::driver_start() { m_su_83 = 0; save_item( NAME(m_su_83) ); - m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(FUNC(namcos11_state::c76_speedup_r),this), write16_delegate(FUNC(namcos11_state::c76_speedup_w),this)); + m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(*this, FUNC(namcos11_state::c76_speedup_r)), write16_delegate(*this, FUNC(namcos11_state::c76_speedup_w))); } if( m_bankedroms != nullptr ) diff --git a/src/mame/drivers/namcos22.cpp b/src/mame/drivers/namcos22.cpp index fd5d1e81ef5..c354fc475f5 100644 --- a/src/mame/drivers/namcos22.cpp +++ b/src/mame/drivers/namcos22.cpp @@ -5640,21 +5640,21 @@ READ16_MEMBER(namcos22_state::mcuc74_speedup_r) void namcos22_state::install_c74_speedup() { if (MCU_SPEEDUP) - m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x80, 0x81, read16_delegate(FUNC(namcos22_state::mcuc74_speedup_r),this), write16_delegate(FUNC(namcos22_state::mcu_speedup_w),this)); + m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x80, 0x81, read16_delegate(*this, FUNC(namcos22_state::mcuc74_speedup_r)), write16_delegate(*this, FUNC(namcos22_state::mcu_speedup_w))); } void namcos22s_state::install_130_speedup() { // install speedup cheat for 1.20/1.30 MCU BIOS if (MCU_SPEEDUP) - m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(FUNC(namcos22s_state::mcu130_speedup_r),this), write16_delegate(FUNC(namcos22s_state::mcu_speedup_w),this)); + m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(*this, FUNC(namcos22s_state::mcu130_speedup_r)), write16_delegate(*this, FUNC(namcos22s_state::mcu_speedup_w))); } void namcos22s_state::install_141_speedup() { // install speedup cheat for 1.41 MCU BIOS if (MCU_SPEEDUP) - m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(FUNC(namcos22s_state::mcu141_speedup_r),this), write16_delegate(FUNC(namcos22s_state::mcu_speedup_w),this)); + m_mcu->space(AS_PROGRAM).install_readwrite_handler(0x82, 0x83, read16_delegate(*this, FUNC(namcos22s_state::mcu141_speedup_r)), write16_delegate(*this, FUNC(namcos22s_state::mcu_speedup_w))); } diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp index 8d0d7520309..1a3b81ded51 100644 --- a/src/mame/drivers/namcos23.cpp +++ b/src/mame/drivers/namcos23.cpp @@ -2414,7 +2414,7 @@ WRITE32_MEMBER(namcos23_state::textchar_w) VIDEO_START_MEMBER(namcos23_state,s23) { m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(m_charram.target())); - m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos23_state::TextTilemapGetInfo),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos23_state::TextTilemapGetInfo)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_bgtilemap->set_transparent_pen(0xf); m_bgtilemap->set_scrolldx(860, 860); m_render.polymgr = std::make_unique<namcos23_renderer>(*this); diff --git a/src/mame/drivers/naomi.cpp b/src/mame/drivers/naomi.cpp index eb75a864492..1a9d4ea979a 100644 --- a/src/mame/drivers/naomi.cpp +++ b/src/mame/drivers/naomi.cpp @@ -10469,7 +10469,7 @@ READ64_MEMBER(atomiswave_state::xtrmhnt2_hack_r) void atomiswave_state::init_xtrmhnt2() { init_atomiswave(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000000, 0x100011f, read64_delegate(FUNC(atomiswave_state::xtrmhnt2_hack_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000000, 0x100011f, read64_delegate(*this, FUNC(atomiswave_state::xtrmhnt2_hack_r))); } ROM_START( fotns ) diff --git a/src/mame/drivers/nascom1.cpp b/src/mame/drivers/nascom1.cpp index 879767c0ff2..26831fe30bd 100644 --- a/src/mame/drivers/nascom1.cpp +++ b/src/mame/drivers/nascom1.cpp @@ -807,10 +807,10 @@ void nascom_state::nascom(machine_config &config) // devices snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", "nas", attotime::from_msec(500))); - snapshot.set_load_callback(FUNC(nascom_state::snapshot_cb<0>), this); + snapshot.set_load_callback(FUNC(nascom_state::snapshot_cb<0>)); snapshot.set_interface("nascom_snap"); snapshot_image_device &snapchar(SNAPSHOT(config, "snapchar", "chr", attotime::from_msec(500))); - snapchar.set_load_callback(FUNC(nascom_state::snapshot_cb<1>), this); + snapchar.set_load_callback(FUNC(nascom_state::snapshot_cb<1>)); snapchar.set_interface("nascom_char"); } @@ -850,9 +850,9 @@ void nascom2_state::nascom2(machine_config &config) // generic sockets for ram/rom (todo: support ram here) GENERIC_SOCKET(config, m_socket1, generic_plain_slot, "nascom_socket", "bin,rom"); - m_socket1->set_device_load(FUNC(nascom2_state::socket1_load), this); + m_socket1->set_device_load(FUNC(nascom2_state::socket1_load)); GENERIC_SOCKET(config, m_socket2, generic_plain_slot, "nascom_socket", "bin,rom"); - m_socket2->set_device_load(FUNC(nascom2_state::socket2_load), this); + m_socket2->set_device_load(FUNC(nascom2_state::socket2_load)); // nasbus expansion bus nasbus_device &nasbus(NASBUS(config, NASBUS_TAG)); diff --git a/src/mame/drivers/naughtyb.cpp b/src/mame/drivers/naughtyb.cpp index 10294400632..28d132d6991 100644 --- a/src/mame/drivers/naughtyb.cpp +++ b/src/mame/drivers/naughtyb.cpp @@ -839,10 +839,10 @@ ROM_END void naughtyb_state::init_popflame() { /* install a handler to catch protection checks */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x9000, 0x9000, read8_delegate(FUNC(naughtyb_state::popflame_protection_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x9090, 0x9090, read8_delegate(FUNC(naughtyb_state::popflame_protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9000, 0x9000, read8_delegate(*this, FUNC(naughtyb_state::popflame_protection_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9090, 0x9090, read8_delegate(*this, FUNC(naughtyb_state::popflame_protection_r))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb000, 0xb0ff, write8_delegate(FUNC(naughtyb_state::popflame_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb000, 0xb0ff, write8_delegate(*this, FUNC(naughtyb_state::popflame_protection_w))); save_item(NAME(m_popflame_prot_seed)); save_item(NAME(m_r_index)); @@ -874,7 +874,7 @@ WRITE8_MEMBER(naughtyb_state::trvmstr_questions_w) void naughtyb_state::init_trvmstr() { /* install questions' handlers */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc000, 0xc002, read8_delegate(FUNC(naughtyb_state::trvmstr_questions_r),this), write8_delegate(FUNC(naughtyb_state::trvmstr_questions_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc000, 0xc002, read8_delegate(*this, FUNC(naughtyb_state::trvmstr_questions_r)), write8_delegate(*this, FUNC(naughtyb_state::trvmstr_questions_w))); save_item(NAME(m_question_offset)); } diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index ee78441506b..1103ba80a3b 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -1411,8 +1411,8 @@ void nc_state::nc_base(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cardslot", generic_plain_slot, nullptr)); - cartslot.set_device_load(FUNC(nc_state::load_pcmcia_card), this); - cartslot.set_device_unload(FUNC(nc_state::unload_pcmcia_card), this); + cartslot.set_device_load(FUNC(nc_state::load_pcmcia_card)); + cartslot.set_device_unload(FUNC(nc_state::unload_pcmcia_card)); /* internal ram */ RAM(config, m_ram).set_default_size("64K"); diff --git a/src/mame/drivers/neogeo.cpp b/src/mame/drivers/neogeo.cpp index acc92779399..5f01170e228 100644 --- a/src/mame/drivers/neogeo.cpp +++ b/src/mame/drivers/neogeo.cpp @@ -1405,7 +1405,7 @@ void neogeo_base_state::set_slot_idx(int slot) space.install_read_bank(0x200000, 0x2fffff, "cartridge"); - space.install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(FUNC(neogeo_base_state::write_banksel),this)); + space.install_write_handler(0x2ffff0, 0x2fffff, write16_delegate(*this, FUNC(neogeo_base_state::write_banksel))); m_bank_cartridge = membank("cartridge"); init_cpu(); @@ -1423,104 +1423,104 @@ void neogeo_base_state::set_slot_idx(int slot) int type = m_slots[m_curr_slot]->get_type(); switch (type) { - case NEOGEO_FATFURY2: - space.install_readwrite_handler(0x200000, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_cart_slot_device::protection_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF98: - space.install_read_handler(0x00100, 0x00103, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(FUNC(neogeo_cart_slot_device::protection_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_MSLUGX: - space.install_readwrite_handler(0x2fffe0, 0x2fffef, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_cart_slot_device::protection_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF99: - // addon_r here gives SMA random number - space.install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2ffff8, 0x2ffff9, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2ffffa, 0x2ffffb, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_GAROU: - // addon_r here gives SMA random number - space.install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2fffcc, 0x2fffcd, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2ffff0, 0x2ffff1, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_GAROUH: - // addon_r here gives SMA random number - space.install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2fffcc, 0x2fffcd, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2ffff0, 0x2ffff1, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_MSLUG3: - case NEOGEO_MSLUG3A: - space.install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - //space.install_read_handler(0x2ffff8, 0x2ffff9, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - //space.install_read_handler(0x2ffffa, 0x2ffffb, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF2K: - // addon_r here gives SMA random number - space.install_write_handler(0x2fffec, 0x2fffed, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2fffd8, 0x2fffd9, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2fffda, 0x2fffdb, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_MSLUG5: - case NEOGEO_SVC: - case NEOGEO_KOF2K3: - case NEOGEO_KOF2K3H: - case NEOGEO_SVCBOOT: - case NEOGEO_SVCSPLUS: - space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_base_state::write_bankprot_pvc),this)); - break; - case NEOGEO_CTHD2K3: - case NEOGEO_CT2K3SP: - space.install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(FUNC(neogeo_base_state::write_bankprot),this)); - break; - case NEOGEO_MSLUG5P: - space.install_readwrite_handler(0x2ffff0, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_base_state::write_bankprot_ms5p),this)); - break; - case NEOGEO_KOG: - space.install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF2K3B: - case NEOGEO_KOF2K3UP: - // addon_r here gives m_overlay member from bootleg protection (possibly hack?) - space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_base_state::write_bankprot_kf2k3bl),this)); - space.install_read_handler(0x58196, 0x58197, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF2K3P: - space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_base_state::write_bankprot_kf2k3bl),this)); - break; - case NEOGEO_SBP: - // there seems to be a protection device living around here.. - // if you nibble swap the data in the rom the game will boot - // there are also writes to 0x1080.. - // - // other stuff going on as well tho, the main overlay is still missing, and p1 inputs don't work - space.install_readwrite_handler(0x00200, 0x001fff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_cart_slot_device::protection_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_KOF10TH: - // addon_r here reads from ram2 bank - space.install_read_handler(0x000080, 0x0dffff, read16_delegate(FUNC(neogeo_base_state::read_lorom_kof10th),this)); - space.install_read_handler(0x0e0000, 0x0fffff, read16_delegate(FUNC(neogeo_cart_slot_device::addon_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - space.install_read_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(neogeo_cart_slot_device::protection_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - // REVIEW ME: we might possibly need to split this, by adding further write handlers - space.install_write_handler(0x200000, 0x2fffff, write16_delegate(FUNC(neogeo_base_state::write_bankprot_kof10th),this)); - break; - case NEOGEO_JOCKEYGP: - space.install_readwrite_handler(0x200000, 0x201fff, read16_delegate(FUNC(neogeo_cart_slot_device::ram_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_cart_slot_device::ram_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - break; - case NEOGEO_VLINER: - space.install_readwrite_handler(0x200000, 0x201fff, read16_delegate(FUNC(neogeo_cart_slot_device::ram_r),(neogeo_cart_slot_device*)m_slots[m_curr_slot]), write16_delegate(FUNC(neogeo_cart_slot_device::ram_w),(neogeo_cart_slot_device*)m_slots[m_curr_slot])); - // custom input handling... install it here for the moment. - space.install_read_port(0x300000, 0x300001, 0x01ff7e, "DSW"); - space.install_read_port(0x280000, 0x280001, "IN5"); - space.install_read_port(0x2c0000, 0x2c0001, "IN6"); - break; + case NEOGEO_FATFURY2: + space.install_readwrite_handler(0x200000, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_w))); + break; + case NEOGEO_KOF98: + space.install_read_handler(0x00100, 0x00103, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + space.install_write_handler(0x20aaaa, 0x20aaab, write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_w))); + break; + case NEOGEO_MSLUGX: + space.install_readwrite_handler(0x2fffe0, 0x2fffef, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_w))); + break; + case NEOGEO_KOF99: + // addon_r here gives SMA random number + space.install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + space.install_read_handler(0x2ffff8, 0x2ffff9, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + space.install_read_handler(0x2ffffa, 0x2ffffb, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_GAROU: + // addon_r here gives SMA random number + space.install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + space.install_read_handler(0x2fffcc, 0x2fffcd, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + space.install_read_handler(0x2ffff0, 0x2ffff1, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_GAROUH: + // addon_r here gives SMA random number + space.install_write_handler(0x2fffc0, 0x2fffc1, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + space.install_read_handler(0x2fffcc, 0x2fffcd, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + space.install_read_handler(0x2ffff0, 0x2ffff1, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_MSLUG3: + case NEOGEO_MSLUG3A: + space.install_write_handler(0x2fffe4, 0x2fffe5, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + //space.install_read_handler(0x2ffff8, 0x2ffff9, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + //space.install_read_handler(0x2ffffa, 0x2ffffb, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_KOF2K: + // addon_r here gives SMA random number + space.install_write_handler(0x2fffec, 0x2fffed, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + space.install_read_handler(0x2fe446, 0x2fe447, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + space.install_read_handler(0x2fffd8, 0x2fffd9, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + space.install_read_handler(0x2fffda, 0x2fffdb, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_MSLUG5: + case NEOGEO_SVC: + case NEOGEO_KOF2K3: + case NEOGEO_KOF2K3H: + case NEOGEO_SVCBOOT: + case NEOGEO_SVCSPLUS: + space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot_pvc))); + break; + case NEOGEO_CTHD2K3: + case NEOGEO_CT2K3SP: + space.install_write_handler(0x2ffff0, 0x2ffff1, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot))); + break; + case NEOGEO_MSLUG5P: + space.install_readwrite_handler(0x2ffff0, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot_ms5p))); + break; + case NEOGEO_KOG: + space.install_read_handler(0x0ffffe, 0x0fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + break; + case NEOGEO_KOF2K3B: + case NEOGEO_KOF2K3UP: + // addon_r here gives m_overlay member from bootleg protection (possibly hack?) + space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot_kf2k3bl))); + space.install_read_handler(0x58196, 0x58197, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + break; + case NEOGEO_KOF2K3P: + space.install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot_kf2k3bl))); + break; + case NEOGEO_SBP: + // there seems to be a protection device living around here.. + // if you nibble swap the data in the rom the game will boot + // there are also writes to 0x1080.. + // + // other stuff going on as well tho, the main overlay is still missing, and p1 inputs don't work + space.install_readwrite_handler(0x00200, 0x001fff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r)), write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_w))); + break; + case NEOGEO_KOF10TH: + // addon_r here reads from ram2 bank + space.install_read_handler(0x000080, 0x0dffff, read16_delegate(*this, FUNC(neogeo_base_state::read_lorom_kof10th))); + space.install_read_handler(0x0e0000, 0x0fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::addon_r))); + space.install_read_handler(0x2fe000, 0x2fffff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::protection_r))); + // REVIEW ME: we might possibly need to split this, by adding further write handlers + space.install_write_handler(0x200000, 0x2fffff, write16_delegate(*this, FUNC(neogeo_base_state::write_bankprot_kof10th))); + break; + case NEOGEO_JOCKEYGP: + space.install_readwrite_handler(0x200000, 0x201fff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::ram_r)), write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::ram_w))); + break; + case NEOGEO_VLINER: + space.install_readwrite_handler(0x200000, 0x201fff, read16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::ram_r)), write16_delegate(*m_slots[m_curr_slot], FUNC(neogeo_cart_slot_device::ram_w))); + // custom input handling... install it here for the moment. + space.install_read_port(0x300000, 0x300001, 0x01ff7e, "DSW"); + space.install_read_port(0x280000, 0x280001, "IN5"); + space.install_read_port(0x2c0000, 0x2c0001, "IN6"); + break; } } } @@ -1563,19 +1563,19 @@ void ngarcade_base_state::machine_start() address_space &main_program_space(m_maincpu->space(AS_PROGRAM)); if (m_ctrl1) - main_program_space.install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(FUNC(ngarcade_base_state::in0_edge_joy_r), this)); + main_program_space.install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(*this, FUNC(ngarcade_base_state::in0_edge_joy_r))); else if (m_edge) - main_program_space.install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(FUNC(ngarcade_base_state::in0_edge_r), this)); + main_program_space.install_read_handler(0x300000, 0x300001, 0, 0x01ff7e, 0, read16_delegate(*this, FUNC(ngarcade_base_state::in0_edge_r))); if (m_ctrl2) - main_program_space.install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(FUNC(ngarcade_base_state::in1_edge_joy_r), this)); + main_program_space.install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(*this, FUNC(ngarcade_base_state::in1_edge_joy_r))); else if (m_edge) - main_program_space.install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(FUNC(ngarcade_base_state::in1_edge_r), this)); + main_program_space.install_read_handler(0x340000, 0x340001, 0, 0x01fffe, 0, read16_delegate(*this, FUNC(ngarcade_base_state::in1_edge_r))); if (m_memcard) { main_program_space.unmap_readwrite(0x800000, 0x800fff); - main_program_space.install_readwrite_handler(0x800000, 0x800fff, read16_delegate(FUNC(ngarcade_base_state::memcard_r), this), write16_delegate(FUNC(ngarcade_base_state::memcard_w), this)); + main_program_space.install_readwrite_handler(0x800000, 0x800fff, read16_delegate(*this, FUNC(ngarcade_base_state::memcard_r)), write16_delegate(*this, FUNC(ngarcade_base_state::memcard_w))); } // enable rtc and serial mode diff --git a/src/mame/drivers/neogeocd.cpp b/src/mame/drivers/neogeocd.cpp index cdfb8209aa1..9e1763ecc87 100644 --- a/src/mame/drivers/neogeocd.cpp +++ b/src/mame/drivers/neogeocd.cpp @@ -1056,9 +1056,9 @@ void ngcd_state::neocd(machine_config &config) LC89510_TEMP(config, m_tempcdc, 0); // cd controller m_tempcdc->set_cdrom_tag("cdrom"); m_tempcdc->set_is_neoCD(true); - m_tempcdc->set_type1_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type1), this); - m_tempcdc->set_type2_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type2), this); - m_tempcdc->set_type3_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type3), this); + m_tempcdc->set_type1_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type1)); + m_tempcdc->set_type2_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type2)); + m_tempcdc->set_type3_interrupt_callback(FUNC(ngcd_state::interrupt_callback_type3)); NVRAM(config, "saveram", nvram_device::DEFAULT_ALL_0); diff --git a/src/mame/drivers/neopcb.cpp b/src/mame/drivers/neopcb.cpp index 9f1a460ae08..f678a169d2d 100644 --- a/src/mame/drivers/neopcb.cpp +++ b/src/mame/drivers/neopcb.cpp @@ -469,7 +469,7 @@ void neopcb_state::install_common() membank("cpu_bank")->set_base(m_region_maincpu->base() + 0x100000); // install protection handlers + bankswitch handler - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(FUNC(pvc_prot_device::protection_r),(pvc_prot_device*)m_pvc_prot), write16_delegate(FUNC(neopcb_state::write_bankpvc),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2fe000, 0x2fffff, read16_delegate(*m_pvc_prot, FUNC(pvc_prot_device::protection_r)), write16_delegate(*this, FUNC(neopcb_state::write_bankpvc))); // perform basic memory initialization that are usually done on-cart m_curr_slot = 0; diff --git a/src/mame/drivers/nes.cpp b/src/mame/drivers/nes.cpp index b2aacb90e2a..59b38b9c1e7 100644 --- a/src/mame/drivers/nes.cpp +++ b/src/mame/drivers/nes.cpp @@ -169,24 +169,24 @@ void nes_state::setup_disk(nes_disksys_device *slot) address_space &space = m_maincpu->space(AS_PROGRAM); // Set up memory handlers - space.install_read_handler(0x4020, 0x40ff, read8sm_delegate(FUNC(nes_disksys_device::read_ex), (nes_disksys_device *)slot)); - space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(FUNC(nes_disksys_device::write_ex), (nes_disksys_device *)slot)); - space.install_read_handler(0x4100, 0x5fff, read8sm_delegate(FUNC(device_nes_cart_interface::read_l), (device_nes_cart_interface *)slot)); - space.install_write_handler(0x4100, 0x5fff, write8sm_delegate(FUNC(device_nes_cart_interface::write_l), (device_nes_cart_interface *)slot)); - space.install_read_handler(0x6000, 0x7fff, read8sm_delegate(FUNC(nes_disksys_device::read_m), (nes_disksys_device *)slot)); - space.install_write_handler(0x6000, 0x7fff, write8sm_delegate(FUNC(nes_disksys_device::write_m), (nes_disksys_device *)slot)); - space.install_read_handler(0x8000, 0xffff, read8sm_delegate(FUNC(nes_disksys_device::read_h), (nes_disksys_device *)slot)); - space.install_write_handler(0x8000, 0xffff, write8sm_delegate(FUNC(nes_disksys_device::write_h), (nes_disksys_device *)slot)); + space.install_read_handler(0x4020, 0x40ff, read8sm_delegate(*slot, FUNC(nes_disksys_device::read_ex))); + space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(*slot, FUNC(nes_disksys_device::write_ex))); + space.install_read_handler(0x4100, 0x5fff, read8sm_delegate(*slot, FUNC(device_nes_cart_interface::read_l))); + space.install_write_handler(0x4100, 0x5fff, write8sm_delegate(*slot, FUNC(device_nes_cart_interface::write_l))); + space.install_read_handler(0x6000, 0x7fff, read8sm_delegate(*slot, FUNC(nes_disksys_device::read_m))); + space.install_write_handler(0x6000, 0x7fff, write8sm_delegate(*slot, FUNC(nes_disksys_device::write_m))); + space.install_read_handler(0x8000, 0xffff, read8sm_delegate(*slot, FUNC(nes_disksys_device::read_h))); + space.install_write_handler(0x8000, 0xffff, write8sm_delegate(*slot, FUNC(nes_disksys_device::write_h))); slot->vram_alloc(0x2000); slot->prgram_alloc(0x8000); slot->pcb_start(machine(), m_ciram.get(), false); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8sm_delegate(FUNC(device_nes_cart_interface::chr_r),(device_nes_cart_interface *)slot), write8sm_delegate(FUNC(device_nes_cart_interface::chr_w),(device_nes_cart_interface *)slot)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(FUNC(device_nes_cart_interface::nt_r),(device_nes_cart_interface *)slot), write8sm_delegate(FUNC(device_nes_cart_interface::nt_w),(device_nes_cart_interface *)slot)); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),(device_nes_cart_interface *)slot)); - m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(nes_disksys_device::hblank_irq),(nes_disksys_device *)slot)); - m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),(device_nes_cart_interface *)slot)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8sm_delegate(*slot, FUNC(device_nes_cart_interface::chr_r)), write8sm_delegate(*slot, FUNC(device_nes_cart_interface::chr_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(*slot, FUNC(device_nes_cart_interface::nt_r)), write8sm_delegate(*slot, FUNC(device_nes_cart_interface::nt_w))); + m_ppu->set_scanline_callback(*slot, FUNC(device_nes_cart_interface::scanline_irq)); + m_ppu->set_hblank_callback(*slot, FUNC(nes_disksys_device::hblank_irq)); + m_ppu->set_latch(*slot, FUNC(device_nes_cart_interface::ppu_latch)); } } diff --git a/src/mame/drivers/nes_vt.cpp b/src/mame/drivers/nes_vt.cpp index 1378109963a..e9d467b4ade 100644 --- a/src/mame/drivers/nes_vt.cpp +++ b/src/mame/drivers/nes_vt.cpp @@ -720,13 +720,13 @@ void nes_vt_state::machine_start() m_chrram = std::make_unique<uint8_t[]>(0x2000); save_pointer(NAME(m_chrram), 0x2000); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(nes_vt_state::scanline_irq),this)); - m_ppu->set_hblank_callback(ppu2c0x_device::scanline_delegate(FUNC(nes_vt_state::hblank_irq),this)); + m_ppu->set_scanline_callback(*this, FUNC(nes_vt_state::scanline_irq)); + m_ppu->set_hblank_callback(*this, FUNC(nes_vt_state::hblank_irq)); -// m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(device_nes_cart_interface::hblank_irq),m_cartslot->m_cart)); -// m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(device_nes_cart_interface::chr_r),m_cartslot->m_cart), write8_delegate(FUNC(device_nes_cart_interface::chr_w),m_cartslot->m_cart)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(nes_vt_state::nt_r),this), write8_delegate(FUNC(nes_vt_state::nt_w),this)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(nes_vt_state::chr_r),this), write8_delegate(FUNC(nes_vt_state::chr_w),this)); +// m_ppu->set_hblank_callback(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::hblank_irq))); +// m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::chr_r)), write8_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::chr_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(nes_vt_state::nt_r)), write8_delegate(*this, FUNC(nes_vt_state::nt_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(*this, FUNC(nes_vt_state::chr_r)), write8_delegate(*this, FUNC(nes_vt_state::chr_w))); } diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp index a3bf0d6e4f8..64aca1d588e 100644 --- a/src/mame/drivers/ngen.cpp +++ b/src/mame/drivers/ngen.cpp @@ -268,13 +268,13 @@ WRITE16_MEMBER(ngen_state::cpu_peripheral_cb) addr = (m_peripheral & 0xffc0) << 4; if(m_middle & 0x0040) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(addr, addr + 0x3ff, read16_delegate(FUNC(ngen_state::peripheral_r), this), write16_delegate(FUNC(ngen_state::peripheral_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(addr, addr + 0x3ff, read16_delegate(*this, FUNC(ngen_state::peripheral_r)), write16_delegate(*this, FUNC(ngen_state::peripheral_w))); logerror("Mapped peripherals to memory 0x%08x\n",addr); } else { addr &= 0xffff; - m_maincpu->space(AS_IO).install_readwrite_handler(addr, addr + 0x3ff, read16_delegate(FUNC(ngen_state::peripheral_r), this), write16_delegate(FUNC(ngen_state::peripheral_w), this)); + m_maincpu->space(AS_IO).install_readwrite_handler(addr, addr + 0x3ff, read16_delegate(*this, FUNC(ngen_state::peripheral_r)), write16_delegate(*this, FUNC(ngen_state::peripheral_w))); logerror("Mapped peripherals to I/O 0x%04x\n",addr); } break; @@ -450,7 +450,7 @@ WRITE16_MEMBER(ngen_state::xbus_w) switch(m_xbus_current) { case 0x00: // Floppy/Hard disk module - io.install_readwrite_handler(addr,addr+0xff,read16_delegate(FUNC(ngen_state::hfd_r),this),write16_delegate(FUNC(ngen_state::hfd_w),this),0xffffffff); + io.install_readwrite_handler(addr,addr+0xff, read16_delegate(*this, FUNC(ngen_state::hfd_r)), write16_delegate(*this, FUNC(ngen_state::hfd_w)), 0xffffffff); break; default: cpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); // reached end of the modules @@ -999,7 +999,7 @@ void ngen_state::ngen(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(ngen_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(ngen_state::crtc_update_row)); // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz @@ -1112,7 +1112,7 @@ void ngen386_state::ngen386(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(ngen386_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(ngen386_state::crtc_update_row)); // keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board) I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz diff --git a/src/mame/drivers/ngp.cpp b/src/mame/drivers/ngp.cpp index 5170c52171f..a4713dc199b 100644 --- a/src/mame/drivers/ngp.cpp +++ b/src/mame/drivers/ngp.cpp @@ -868,8 +868,8 @@ void ngp_state::ngp(machine_config &config) subdevice<screen_device>("screen")->set_palette("k1ge:palette"); generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ngp_cart", "bin,ngp,npc,ngc")); - cartslot.set_device_load(FUNC(ngp_state::load_ngp_cart), this); - cartslot.set_device_unload(FUNC(ngp_state::unload_ngp_cart), this); + cartslot.set_device_load(FUNC(ngp_state::load_ngp_cart)); + cartslot.set_device_unload(FUNC(ngp_state::unload_ngp_cart)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("ngp"); @@ -887,8 +887,8 @@ void ngp_state::ngpc(machine_config &config) subdevice<screen_device>("screen")->set_palette("k1ge:palette"); generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ngp_cart", "bin,ngp,npc,ngc")); - cartslot.set_device_load(FUNC(ngp_state::load_ngp_cart), this); - cartslot.set_device_unload(FUNC(ngp_state::unload_ngp_cart), this); + cartslot.set_device_load(FUNC(ngp_state::load_ngp_cart)); + cartslot.set_device_unload(FUNC(ngp_state::unload_ngp_cart)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("ngpc"); diff --git a/src/mame/drivers/nibble.cpp b/src/mame/drivers/nibble.cpp index dab1ae412ff..7cad912b972 100644 --- a/src/mame/drivers/nibble.cpp +++ b/src/mame/drivers/nibble.cpp @@ -123,7 +123,7 @@ TILE_GET_INFO_MEMBER(nibble_state::get_bg_tile_info) void nibble_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nibble_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nibble_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t nibble_state::screen_update_nibble(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/nightgal.cpp b/src/mame/drivers/nightgal.cpp index 67d47158bcc..801e60a48b1 100644 --- a/src/mame/drivers/nightgal.cpp +++ b/src/mame/drivers/nightgal.cpp @@ -1325,8 +1325,8 @@ READ8_MEMBER(nightgal_state::ngalsumr_prot_value_r) void nightgal_state::init_ngalsumr() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x6000, 0x6000, write8_delegate(FUNC(nightgal_state::ngalsumr_prot_latch_w), this) ); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6001, 0x6001, read8_delegate(FUNC(nightgal_state::ngalsumr_prot_value_r), this) ); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x6000, 0x6000, write8_delegate(*this, FUNC(nightgal_state::ngalsumr_prot_latch_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6001, 0x6001, read8_delegate(*this, FUNC(nightgal_state::ngalsumr_prot_value_r))); // 0x6003 some kind of f/f state } diff --git a/src/mame/drivers/ninjakd2.cpp b/src/mame/drivers/ninjakd2.cpp index adf3b7d63eb..2bdcee7d420 100644 --- a/src/mame/drivers/ninjakd2.cpp +++ b/src/mame/drivers/ninjakd2.cpp @@ -1672,7 +1672,7 @@ void robokid_state::motion_error_kludge(uint16_t offset) ROM[2] = 0x18; ROM[3] = 0xf6; // jr $-8 - m_maincpu->space(AS_PROGRAM).install_read_handler(offset, offset, read8_delegate(FUNC(robokid_state::motion_error_verbose_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(offset, offset, read8_delegate(*this, FUNC(robokid_state::motion_error_verbose_r))); } void robokid_state::init_robokid() diff --git a/src/mame/drivers/nmg5.cpp b/src/mame/drivers/nmg5.cpp index 1f3def2ebe7..71d8f5c2ab4 100644 --- a/src/mame/drivers/nmg5.cpp +++ b/src/mame/drivers/nmg5.cpp @@ -861,8 +861,8 @@ TILE_GET_INFO_MEMBER(nmg5_state::get_tile_info){ SET_TILE_INFO_MEMBER(0, m_vram[ void nmg5_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmg5_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmg5_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmg5_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmg5_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[1]->set_transparent_pen(0); m_pixmap = std::make_unique<bitmap_ind16>(512, 256); diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index d396617dce7..07b0f040057 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -4141,8 +4141,8 @@ void nmk16_state::tharrier(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); - m_spritegen->set_ext_callback(FUNC(nmk16_state::get_sprite_flip), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); + m_spritegen->set_ext_callback(FUNC(nmk16_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_tharrier)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tharrier); @@ -4180,7 +4180,7 @@ void nmk16_state::mustang(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4222,7 +4222,7 @@ void nmk16_state::mustangb(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4255,7 +4255,7 @@ void nmk16_state::bioship(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bioship); @@ -4293,7 +4293,7 @@ void nmk16_state::vandyke(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4333,7 +4333,7 @@ void nmk16_state::vandykeb(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4357,7 +4357,7 @@ void nmk16_state::acrobatm(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4399,7 +4399,7 @@ void nmk16_state::tdragonb(machine_config &config) /* bootleg using Raiden so /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4432,7 +4432,7 @@ void nmk16_state::tdragon(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4479,7 +4479,7 @@ void nmk16_state::ssmissin(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4506,7 +4506,7 @@ void nmk16_state::strahl(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_strahl); @@ -4544,7 +4544,7 @@ void nmk16_state::hachamf(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4589,7 +4589,7 @@ void nmk16_state::macross(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4627,7 +4627,7 @@ void nmk16_state::blkheart(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4665,7 +4665,7 @@ void nmk16_state::gunnail(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -4728,7 +4728,7 @@ void nmk16_state::macross2(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); @@ -4772,7 +4772,7 @@ void nmk16_state::tdragon2(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); @@ -4823,7 +4823,7 @@ void nmk16_state::raphero(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_5bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); @@ -4863,7 +4863,7 @@ void nmk16_state::bjtwin(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_bjtwin)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bjtwin); @@ -4926,8 +4926,8 @@ void nmk16_state::manybloc(machine_config &config) m_screen->set_palette(m_palette); NMK_16BIT_SPRITE(config, m_spritegen, XTAL(12'000'000)/2); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); - m_spritegen->set_ext_callback(FUNC(nmk16_state::get_sprite_flip), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); + m_spritegen->set_ext_callback(FUNC(nmk16_state::get_sprite_flip)); m_spritegen->set_screen_size(256, 256); m_spritegen->set_max_sprite_clock(384 * 263); // from hardware manual @@ -4972,7 +4972,7 @@ void nmk16_tomagic_state::tomagic(machine_config &config) /* video hardware */ set_hacky_screen_hires(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_tomagic_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_tomagic_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -5183,7 +5183,7 @@ void nmk16_state::init_hachamf_prot() rom[0x048a/2] = 0x4e71; rom[0x04aa/2] = 0x4e71; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0f0000, 0x0fffff, write16s_delegate(FUNC(nmk16_state::hachamf_mainram_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0f0000, 0x0fffff, write16s_delegate(*this, FUNC(nmk16_state::hachamf_mainram_w))); save_protregs(); } @@ -5203,7 +5203,7 @@ void nmk16_state::init_tdragon_prot() rom[0x048a/2] = 0x4e71; rom[0x04aa/2] = 0x4e71; - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0b0000, 0x0bffff, write16s_delegate(FUNC(nmk16_state::tdragon_mainram_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0b0000, 0x0bffff, write16s_delegate(*this, FUNC(nmk16_state::tdragon_mainram_w))); save_protregs(); } @@ -5257,7 +5257,7 @@ u16 nmk16_state::vandykeb_r(){ return 0x0000; } void nmk16_state::init_vandykeb() { m_okibank[0]->configure_entries(0, 4, memregion("oki1")->base() + 0x20000, 0x20000); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x08000e, 0x08000f, read16smo_delegate(FUNC(nmk16_state::vandykeb_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x08000e, 0x08000f, read16smo_delegate(*this, FUNC(nmk16_state::vandykeb_r))); m_maincpu->space(AS_PROGRAM).nop_write(0x08001e, 0x08001f); } @@ -5429,8 +5429,8 @@ void afega_state::stagger1(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit), this); - m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip), this); + m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit)); + m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(afega_state::screen_update_afega)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); @@ -5512,8 +5512,8 @@ void afega_state::firehawk(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit), this); - m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip), this); + m_spritegen->set_colpri_callback(FUNC(afega_state::get_colour_4bit)); + m_spritegen->set_ext_callback(FUNC(afega_state::get_sprite_flip)); m_screen->set_screen_update(FUNC(afega_state::screen_update_firehawk)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_grdnstrm); @@ -5552,7 +5552,7 @@ void nmk16_state::twinactn(machine_config &config) /* video hardware */ set_hacky_screen_lowres(config); - m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit), this); + m_spritegen->set_colpri_callback(FUNC(nmk16_state::get_colour_4bit)); m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); diff --git a/src/mame/drivers/nokia_3310.cpp b/src/mame/drivers/nokia_3310.cpp index ea7919f0682..55820d40b73 100644 --- a/src/mame/drivers/nokia_3310.cpp +++ b/src/mame/drivers/nokia_3310.cpp @@ -718,7 +718,7 @@ void noki3310_state::noki3310(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME_INVERTED); PCD8544(config, m_pcd8544, 0); - m_pcd8544->set_screen_update_cb(FUNC(noki3310_state::pcd8544_screen_update), this); + m_pcd8544->set_screen_update_cb(FUNC(noki3310_state::pcd8544_screen_update)); INTEL_TE28F160(config, "flash"); } diff --git a/src/mame/drivers/novag_diablo.cpp b/src/mame/drivers/novag_diablo.cpp index b4dd330f97b..74f2f8979cf 100644 --- a/src/mame/drivers/novag_diablo.cpp +++ b/src/mame/drivers/novag_diablo.cpp @@ -323,7 +323,7 @@ void diablo_state::diablo68k(machine_config &config) HD44780(config, m_lcd, 0); m_lcd->set_lcd_size(2, 8); - m_lcd->set_pixel_update_cb(FUNC(diablo_state::lcd_pixel_update), this); + m_lcd->set_pixel_update_cb(FUNC(diablo_state::lcd_pixel_update)); PWM_DISPLAY(config, m_display).set_size(8, 8+2); config.set_default_layout(layout_novag_diablo68k); diff --git a/src/mame/drivers/novag_sexpert.cpp b/src/mame/drivers/novag_sexpert.cpp index 6ddfbac9745..443cfccb767 100644 --- a/src/mame/drivers/novag_sexpert.cpp +++ b/src/mame/drivers/novag_sexpert.cpp @@ -440,7 +440,7 @@ void sexpert_state::sexpert(machine_config &config) HD44780(config, m_lcd, 0); m_lcd->set_lcd_size(2, 8); - m_lcd->set_pixel_update_cb(FUNC(sexpert_state::lcd_pixel_update), this); + m_lcd->set_pixel_update_cb(FUNC(sexpert_state::lcd_pixel_update)); PWM_DISPLAY(config, m_display).set_size(8, 8); config.set_default_layout(layout_novag_sexpert); diff --git a/src/mame/drivers/nsmpoker.cpp b/src/mame/drivers/nsmpoker.cpp index edf4bc36707..672119d153e 100644 --- a/src/mame/drivers/nsmpoker.cpp +++ b/src/mame/drivers/nsmpoker.cpp @@ -142,7 +142,7 @@ TILE_GET_INFO_MEMBER(nsmpoker_state::get_bg_tile_info) void nsmpoker_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nsmpoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nsmpoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/nyny.cpp b/src/mame/drivers/nyny.cpp index 0575c99dc78..c1186106c25 100644 --- a/src/mame/drivers/nyny.cpp +++ b/src/mame/drivers/nyny.cpp @@ -622,8 +622,8 @@ void nyny_state::nyny(machine_config &config) m_mc6845->set_screen("screen"); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(nyny_state::crtc_update_row), this); - m_mc6845->set_end_update_callback(FUNC(nyny_state::crtc_end_update), this); + m_mc6845->set_update_row_callback(FUNC(nyny_state::crtc_update_row)); + m_mc6845->set_end_update_callback(FUNC(nyny_state::crtc_end_update)); m_mc6845->out_de_callback().set(m_ic48_1, FUNC(ttl74123_device::a_w)); /* 74LS123 */ diff --git a/src/mame/drivers/offtwall.cpp b/src/mame/drivers/offtwall.cpp index 9cbc03d71a9..25099d5bed4 100644 --- a/src/mame/drivers/offtwall.cpp +++ b/src/mame/drivers/offtwall.cpp @@ -445,9 +445,9 @@ ROM_END void offtwall_state::init_offtwall() { /* install son-of-slapstic workarounds */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fde42, 0x3fde43, read16_delegate(FUNC(offtwall_state::spritecache_count_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x037ec2, 0x037f39, read16_delegate(FUNC(offtwall_state::bankswitch_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fdf1e, 0x3fdf1f, read16_delegate(FUNC(offtwall_state::unknown_verify_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fde42, 0x3fde43, read16_delegate(*this, FUNC(offtwall_state::spritecache_count_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x037ec2, 0x037f39, read16_delegate(*this, FUNC(offtwall_state::bankswitch_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fdf1e, 0x3fdf1f, read16_delegate(*this, FUNC(offtwall_state::unknown_verify_r))); m_spritecache_count = m_mainram + (0x3fde42 - 0x3fd800)/2; m_bankswitch_base = (uint16_t *)(memregion("maincpu")->base() + 0x37ec2); m_unknown_verify_base = m_mainram + (0x3fdf1e - 0x3fd800)/2; @@ -457,9 +457,9 @@ void offtwall_state::init_offtwall() void offtwall_state::init_offtwalc() { /* install son-of-slapstic workarounds */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fde42, 0x3fde43, read16_delegate(FUNC(offtwall_state::spritecache_count_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x037eca, 0x037f43, read16_delegate(FUNC(offtwall_state::bankswitch_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fdf24, 0x3fdf25, read16_delegate(FUNC(offtwall_state::unknown_verify_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fde42, 0x3fde43, read16_delegate(*this, FUNC(offtwall_state::spritecache_count_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x037eca, 0x037f43, read16_delegate(*this, FUNC(offtwall_state::bankswitch_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3fdf24, 0x3fdf25, read16_delegate(*this, FUNC(offtwall_state::unknown_verify_r))); m_spritecache_count = m_mainram + (0x3fde42 - 0x3fd800)/2; m_bankswitch_base = (uint16_t *)(memregion("maincpu")->base() + 0x37eca); m_unknown_verify_base = m_mainram + (0x3fdf24 - 0x3fd800)/2; diff --git a/src/mame/drivers/olibochu.cpp b/src/mame/drivers/olibochu.cpp index 376d66307ff..497d14a60b7 100644 --- a/src/mame/drivers/olibochu.cpp +++ b/src/mame/drivers/olibochu.cpp @@ -182,7 +182,7 @@ TILE_GET_INFO_MEMBER(olibochu_state::get_bg_tile_info) void olibochu_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(olibochu_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(olibochu_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void olibochu_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp index 640725d0485..0695d4b8516 100644 --- a/src/mame/drivers/olyboss.cpp +++ b/src/mame/drivers/olyboss.cpp @@ -468,7 +468,7 @@ void olyboss_state::olybossd(machine_config &config) UPD3301(config, m_crtc, XTAL(14'318'181)); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(olyboss_state::olyboss_display_pixels), this); + m_crtc->set_display_callback(FUNC(olyboss_state::olyboss_display_pixels)); m_crtc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w)); m_crtc->int_wr_callback().set(m_uic, FUNC(am9519_device::ireq0_w)).invert(); m_crtc->set_screen(SCREEN_TAG); diff --git a/src/mame/drivers/onetwo.cpp b/src/mame/drivers/onetwo.cpp index 1f624b1ef54..6cba8e87ac0 100644 --- a/src/mame/drivers/onetwo.cpp +++ b/src/mame/drivers/onetwo.cpp @@ -121,7 +121,7 @@ TILE_GET_INFO_MEMBER(onetwo_state::get_fg_tile_info) void onetwo_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(onetwo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(onetwo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } uint32_t onetwo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/onyx.cpp b/src/mame/drivers/onyx.cpp index a5860e56e1b..b632aafc784 100644 --- a/src/mame/drivers/onyx.cpp +++ b/src/mame/drivers/onyx.cpp @@ -98,16 +98,16 @@ void onyx_state::z8002_m1_w(uint8_t data) void onyx_state::c8002_io(address_map &map) { - map(0xff00, 0xff07).lrw8("sio1_rw", [this](offs_t offset) { return m_sio[0]->cd_ba_r(offset >> 1); }, [this](offs_t offset, u8 data) { m_sio[0]->cd_ba_w(offset >> 1, data); }); - map(0xff08, 0xff0f).lrw8("sio2_rw", [this](offs_t offset) { return m_sio[1]->cd_ba_r(offset >> 1); }, [this](offs_t offset, u8 data) { m_sio[1]->cd_ba_w(offset >> 1, data); }); - map(0xff10, 0xff17).lrw8("sio3_rw", [this](offs_t offset) { return m_sio[2]->cd_ba_r(offset >> 1); }, [this](offs_t offset, u8 data) { m_sio[2]->cd_ba_w(offset >> 1, data); }); - map(0xff18, 0xff1f).lrw8("sio4_rw", [this](offs_t offset) { return m_sio[3]->cd_ba_r(offset >> 1); }, [this](offs_t offset, u8 data) { m_sio[3]->cd_ba_w(offset >> 1, data); }); - map(0xff20, 0xff27).lrw8("sio5_rw", [this](offs_t offset) { return m_sio[4]->cd_ba_r(offset >> 1); }, [this](offs_t offset, u8 data) { m_sio[4]->cd_ba_w(offset >> 1, data); }); - map(0xff30, 0xff37).lrw8("ctc1_rw", [this](offs_t offset) { return m_ctc[0]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[0]->write(offset >> 1, data); }); - map(0xff38, 0xff3f).lrw8("ctc2_rw", [this](offs_t offset) { return m_ctc[1]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[1]->write(offset >> 1, data); }); - map(0xff40, 0xff47).lrw8("ctc3_rw", [this](offs_t offset) { return m_ctc[2]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[2]->write(offset >> 1, data); }); - map(0xff50, 0xff57).lrw8("pio1_rw", [this](offs_t offset) { return m_pio[0]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_pio[0]->write(offset >> 1, data); }); - map(0xff58, 0xff5f).lrw8("pio2_rw", [this](offs_t offset) { return m_pio[1]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_pio[1]->write(offset >> 1, data); }); + map(0xff00, 0xff07).lrw8(NAME([this] (offs_t offset) { return m_sio[0]->cd_ba_r(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_sio[0]->cd_ba_w(offset >> 1, data); })); + map(0xff08, 0xff0f).lrw8(NAME([this] (offs_t offset) { return m_sio[1]->cd_ba_r(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_sio[1]->cd_ba_w(offset >> 1, data); })); + map(0xff10, 0xff17).lrw8(NAME([this] (offs_t offset) { return m_sio[2]->cd_ba_r(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_sio[2]->cd_ba_w(offset >> 1, data); })); + map(0xff18, 0xff1f).lrw8(NAME([this] (offs_t offset) { return m_sio[3]->cd_ba_r(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_sio[3]->cd_ba_w(offset >> 1, data); })); + map(0xff20, 0xff27).lrw8(NAME([this] (offs_t offset) { return m_sio[4]->cd_ba_r(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_sio[4]->cd_ba_w(offset >> 1, data); })); + map(0xff30, 0xff37).lrw8(NAME([this] (offs_t offset) { return m_ctc[0]->read(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_ctc[0]->write(offset >> 1, data); })); + map(0xff38, 0xff3f).lrw8(NAME([this] (offs_t offset) { return m_ctc[1]->read(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_ctc[1]->write(offset >> 1, data); })); + map(0xff40, 0xff47).lrw8(NAME([this] (offs_t offset) { return m_ctc[2]->read(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_ctc[2]->write(offset >> 1, data); })); + map(0xff50, 0xff57).lrw8(NAME([this] (offs_t offset) { return m_pio[0]->read(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_pio[0]->write(offset >> 1, data); })); + map(0xff58, 0xff5f).lrw8(NAME([this] (offs_t offset) { return m_pio[1]->read(offset >> 1); }), NAME([this] (offs_t offset, u8 data) { m_pio[1]->write(offset >> 1, data); })); map(0xffb9, 0xffb9).w(FUNC(onyx_state::z8002_m1_w)); } diff --git a/src/mame/drivers/opwolf.cpp b/src/mame/drivers/opwolf.cpp index b9cc31fb9aa..03159113b4e 100644 --- a/src/mame/drivers/opwolf.cpp +++ b/src/mame/drivers/opwolf.cpp @@ -930,7 +930,7 @@ void opwolf_state::opwolf(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_palette("palette"); - m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -1004,7 +1004,7 @@ void opwolf_state::opwolfb(machine_config &config) /* OSC clocks unknown for the PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_palette("palette"); - m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(opwolf_state::opwolf_colpri_cb)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index a2befac49e2..91f0948b248 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -356,8 +356,8 @@ void osborne1nv_state::osborne1nv(machine_config &config) crtc.set_screen(m_screen); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(osborne1nv_state::crtc_update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(osborne1nv_state::crtc_update_addr_changed), this); + crtc.set_update_row_callback(FUNC(osborne1nv_state::crtc_update_row)); + crtc.set_on_update_addr_change_callback(FUNC(osborne1nv_state::crtc_update_addr_changed)); } diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index c567e44b770..5ccd1edd8d0 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -423,7 +423,7 @@ void othello_state::othello(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(TILE_WIDTH); - crtc.set_update_row_callback(FUNC(othello_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(othello_state::crtc_update_row)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); diff --git a/src/mame/drivers/overdriv.cpp b/src/mame/drivers/overdriv.cpp index 9783d66210f..b61be4c5beb 100644 --- a/src/mame/drivers/overdriv.cpp +++ b/src/mame/drivers/overdriv.cpp @@ -356,7 +356,7 @@ void overdriv_state::overdriv(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xBGR_555, 2048).enable_shadows(); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(overdriv_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(overdriv_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 77, 22); m_k053246->set_palette("palette"); @@ -364,12 +364,12 @@ void overdriv_state::overdriv(machine_config &config) m_k051316_1->set_palette("palette"); m_k051316_1->set_offsets(14, -1); m_k051316_1->set_wrap(1); - m_k051316_1->set_zoom_callback(FUNC(overdriv_state::zoom_callback_1), this); + m_k051316_1->set_zoom_callback(FUNC(overdriv_state::zoom_callback_1)); K051316(config, m_k051316_2, 0); m_k051316_2->set_palette("palette"); m_k051316_2->set_offsets(15, 1); - m_k051316_2->set_zoom_callback(FUNC(overdriv_state::zoom_callback_2), this); + m_k051316_2->set_zoom_callback(FUNC(overdriv_state::zoom_callback_2)); K053251(config, m_k053251, 0); diff --git a/src/mame/drivers/pacman.cpp b/src/mame/drivers/pacman.cpp index 8db2f53d5dc..03f0b2d0015 100644 --- a/src/mame/drivers/pacman.cpp +++ b/src/mame/drivers/pacman.cpp @@ -7190,9 +7190,9 @@ ROM_END void pacman_state::init_maketrax() { /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x5004, 0x5004, write8_delegate(FUNC(pacman_state::maketrax_protection_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50bf, read8_delegate(FUNC(pacman_state::maketrax_special_port2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x50c0, 0x50ff, read8_delegate(FUNC(pacman_state::maketrax_special_port3_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x5004, 0x5004, write8_delegate(*this, FUNC(pacman_state::maketrax_protection_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50bf, read8_delegate(*this, FUNC(pacman_state::maketrax_special_port2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x50c0, 0x50ff, read8_delegate(*this, FUNC(pacman_state::maketrax_special_port3_r))); save_item(NAME(m_maketrax_disable_protection)); save_item(NAME(m_maketrax_offset)); @@ -7202,7 +7202,7 @@ void pacman_state::init_maketrax() void pacman_state::init_mbrush() { /* set up protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50ff, read8_delegate(FUNC(pacman_state::mbrush_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5080, 0x50ff, read8_delegate(*this, FUNC(pacman_state::mbrush_prot_r))); } void pacman_state::init_ponpoko() @@ -7493,7 +7493,7 @@ READ8_MEMBER(pacman_state::mspacii_protection_r) void pacman_state::init_mspacii() { // protection - m_maincpu->space(AS_PROGRAM).install_read_handler(0x504d, 0x506f, read8_delegate(FUNC(pacman_state::mspacii_protection_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x504d, 0x506f, read8_delegate(*this, FUNC(pacman_state::mspacii_protection_r))); } void pacman_state::init_superabc() @@ -7556,7 +7556,7 @@ void pacman_state::init_cannonbp() m_maincpu->space(AS_PROGRAM).install_ram(0x4800, 0x4bff); /* protection? */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x3000, 0x3fff, read8_delegate(FUNC(pacman_state::cannonbp_protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x3000, 0x3fff, read8_delegate(*this, FUNC(pacman_state::cannonbp_protection_r))); } void pacman_state::init_pengomc1() diff --git a/src/mame/drivers/palestra.cpp b/src/mame/drivers/palestra.cpp index a32abb73d92..97687c386e9 100644 --- a/src/mame/drivers/palestra.cpp +++ b/src/mame/drivers/palestra.cpp @@ -76,7 +76,7 @@ void palestra_state::palestra(machine_config &config) NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK) .set_source(netlist_palestra); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", m_video, FUNC(fixedfreq_device::update_composite_monochrome)); SCREEN(config, "screen", SCREEN_TYPE_RASTER); FIXFREQ(config, m_video).set_screen("screen"); diff --git a/src/mame/drivers/panicr.cpp b/src/mame/drivers/panicr.cpp index 2fb4549b3cc..6f5ef7547ab 100644 --- a/src/mame/drivers/panicr.cpp +++ b/src/mame/drivers/panicr.cpp @@ -237,10 +237,10 @@ TILE_GET_INFO_MEMBER(panicr_state::get_txttile_info) void panicr_state::video_start() { - m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(panicr_state::get_bgtile_info),this),TILEMAP_SCAN_ROWS,16,16,1024,16 ); - 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_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(panicr_state::get_bgtile_info)), TILEMAP_SCAN_ROWS, 16,16, 1024,16); + m_infotilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(panicr_state::get_infotile_info_2)), 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_txttilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(panicr_state::get_txttile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_txttilemap->configure_groups(*m_gfxdecode->gfx(0), 0); save_item(NAME(m_scrollx)); diff --git a/src/mame/drivers/paradise.cpp b/src/mame/drivers/paradise.cpp index 4c73aef6164..6db7f5a39be 100644 --- a/src/mame/drivers/paradise.cpp +++ b/src/mame/drivers/paradise.cpp @@ -1408,14 +1408,14 @@ void paradise_state::init_paradise() void paradise_state::init_tgtball() { m_sprite_inc = 4; - m_maincpu->space(AS_IO).install_write_handler(0x2001, 0x2001, write8_delegate(FUNC(paradise_state::tgtball_flipscreen_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0x2001, 0x2001, write8_delegate(*this, FUNC(paradise_state::tgtball_flipscreen_w))); } void paradise_state::init_torus() { m_sprite_inc = 4; - m_maincpu->space(AS_IO).install_write_handler(0x2070, 0x2070, write8_delegate(FUNC(paradise_state::torus_coin_counter_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0x2070, 0x2070, write8_delegate(*this, FUNC(paradise_state::torus_coin_counter_w))); } diff --git a/src/mame/drivers/parodius.cpp b/src/mame/drivers/parodius.cpp index f450fc04769..549f9d8c799 100644 --- a/src/mame/drivers/parodius.cpp +++ b/src/mame/drivers/parodius.cpp @@ -251,12 +251,12 @@ void parodius_state::parodius(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(parodius_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(parodius_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K053245(config, m_k053245, 0); m_k053245->set_palette("palette"); - m_k053245->set_sprite_callback(FUNC(parodius_state::sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(parodius_state::sprite_callback)); K053251(config, m_k053251, 0); diff --git a/src/mame/drivers/partner.cpp b/src/mame/drivers/partner.cpp index 8b41a0dbc57..48daf21ca15 100644 --- a/src/mame/drivers/partner.cpp +++ b/src/mame/drivers/partner.cpp @@ -177,7 +177,7 @@ void partner_state::partner(machine_config &config) auto &i8275(I8275(config, "i8275", 16_MHz_XTAL / 12)); i8275.set_character_width(6); - i8275.set_display_callback(FUNC(partner_state::display_pixels), this); + i8275.set_display_callback(FUNC(partner_state::display_pixels)); i8275.drq_wr_callback().set("dma8257", FUNC(i8257_device::dreq2_w)); /* video hardware */ diff --git a/src/mame/drivers/pasha2.cpp b/src/mame/drivers/pasha2.cpp index 5885b1c6aba..a2706473e81 100644 --- a/src/mame/drivers/pasha2.cpp +++ b/src/mame/drivers/pasha2.cpp @@ -466,7 +466,7 @@ READ16_MEMBER(pasha2_state::pasha2_speedup_r) void pasha2_state::init_pasha2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x95744, 0x95747, read16_delegate(FUNC(pasha2_state::pasha2_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x95744, 0x95747, read16_delegate(*this, FUNC(pasha2_state::pasha2_speedup_r))); m_mainbank->configure_entries(0, 6, memregion("bankeddata")->base(), 0x400000); m_mainbank->set_entry(0); diff --git a/src/mame/drivers/pasopia.cpp b/src/mame/drivers/pasopia.cpp index 60f35e838c6..16a0943bb7f 100644 --- a/src/mame/drivers/pasopia.cpp +++ b/src/mame/drivers/pasopia.cpp @@ -344,7 +344,7 @@ void pasopia_state::pasopia(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(pasopia_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(pasopia_state::crtc_update_row)); I8255A(config, m_ppi0); m_ppi0->out_pa_callback().set(FUNC(pasopia_state::vram_addr_lo_w)); diff --git a/src/mame/drivers/patapata.cpp b/src/mame/drivers/patapata.cpp index 8139df2dcce..f34c14f778e 100644 --- a/src/mame/drivers/patapata.cpp +++ b/src/mame/drivers/patapata.cpp @@ -118,12 +118,12 @@ TILEMAP_MAPPER_MEMBER(patapata_state::pagescan) void patapata_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024,16*2); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024,16*2); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(patapata_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(patapata_state::pagescan)), 16, 16, 1024, 16*2); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(patapata_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(patapata_state::pagescan)), 16, 16, 1024, 16*2); // 2nd half of the ram seems unused, maybe it's actually a mirror meaning this would be the correct tilemap sizes -// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024/2,16*2); -// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(patapata_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(patapata_state::pagescan),this), 16, 16, 1024/2,16*2); +// m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(patapata_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(patapata_state::pagescan)), 16, 16, 1024/2, 16*2); +// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(patapata_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(patapata_state::pagescan)), 16, 16, 1024/2, 16*2); m_fg_tilemap->set_transparent_pen(0xf); diff --git a/src/mame/drivers/patinho_feio.cpp b/src/mame/drivers/patinho_feio.cpp index 5cfc76779a8..872bd11ea8a 100644 --- a/src/mame/drivers/patinho_feio.cpp +++ b/src/mame/drivers/patinho_feio.cpp @@ -282,7 +282,7 @@ void patinho_feio_state::patinho_feio(machine_config &config) m_tty->set_keyboard_callback(FUNC(patinho_feio_state::teletype_kbd_input)); /* punched tape */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "patinho_tape", "bin").set_device_load(FUNC(patinho_feio_state::tape_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "patinho_tape", "bin").set_device_load(FUNC(patinho_feio_state::tape_load)); config.set_default_layout(layout_patinho); diff --git a/src/mame/drivers/pbaction.cpp b/src/mame/drivers/pbaction.cpp index 1fa8cc13dc6..f3a4ffcdb5e 100644 --- a/src/mame/drivers/pbaction.cpp +++ b/src/mame/drivers/pbaction.cpp @@ -695,14 +695,12 @@ void pbaction_state::init_pbaction2() { uint8_t *rom = memregion("maincpu")->base(); - /* first of all, do a simple bitswap */ + // first of all, do a simple bitswap for (int i = 0; i < 0xc000; i++) - { rom[i] = bitswap<8>(rom[i], 7,6,5,4,1,2,3,0); - } - /* install a protection (?) workaround */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xc000, read8_delegate(FUNC(pbaction_state::pbaction2_prot_kludge_r),this) ); + // install a protection (?) workaround + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xc000, read8_delegate(*this, FUNC(pbaction_state::pbaction2_prot_kludge_r)) ); } diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp index a3653e6738a..d088eb9b209 100644 --- a/src/mame/drivers/pc100.cpp +++ b/src/mame/drivers/pc100.cpp @@ -353,8 +353,9 @@ void pc100_state::pc100_io(address_map &map) map(0x3a, 0x3a).w(FUNC(pc100_state::pc100_crtc_data_w)); //crtc data reg map(0x3c, 0x3f).rw(FUNC(pc100_state::pc100_vs_vreg_r), FUNC(pc100_state::pc100_vs_vreg_w)).umask16(0x00ff); //crtc vertical start position map(0x40, 0x5f).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x60, 0x61).r(read16_delegate([this](address_space &s, offs_t o, u8 mm) { return m_crtc.cmd; }, "pc100_crtc_cmd_r")). - w(write16_delegate([this](address_space &s, offs_t o, u16 d, u8 mm) { m_crtc.cmd = d; }, "pc100_crtc_cmd_w")); + map(0x60, 0x61).lrw16( + NAME([this] () { return m_crtc.cmd; }), + NAME([this] (u16 d) { m_crtc.cmd = d; })); map(0x80, 0x81).rw(FUNC(pc100_state::pc100_kanji_r), FUNC(pc100_state::pc100_kanji_w)); map(0x82, 0x83).nopw(); //kanji-related? map(0x84, 0x87).nopw(); //kanji "strobe" signal 0/1 diff --git a/src/mame/drivers/pc2000.cpp b/src/mame/drivers/pc2000.cpp index 3b7a7837988..cdb51981fb5 100644 --- a/src/mame/drivers/pc2000.cpp +++ b/src/mame/drivers/pc2000.cpp @@ -916,7 +916,7 @@ void pc2000_state::pc2000(machine_config &config) SPEAKER(config, "mono").front_center(); BEEP(config, m_beep, 3250).add_route(ALL_OUTPUTS, "mono", 1.00); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "genius_cart").set_device_load(FUNC(pc2000_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "genius_cart").set_device_load(FUNC(pc2000_state::cart_load)); SOFTWARE_LIST(config, "pc1000_cart").set_compatible("pc1000"); } diff --git a/src/mame/drivers/pc6001.cpp b/src/mame/drivers/pc6001.cpp index 73c840dbc4a..4ea82cb4ab5 100644 --- a/src/mame/drivers/pc6001.cpp +++ b/src/mame/drivers/pc6001.cpp @@ -1349,7 +1349,7 @@ void pc6001_state::machine_reset() set_videoram_bank(0xc000); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); std::string region_tag; m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); diff --git a/src/mame/drivers/pc8001.cpp b/src/mame/drivers/pc8001.cpp index bbcf9e8b3ed..a5a5be31e78 100644 --- a/src/mame/drivers/pc8001.cpp +++ b/src/mame/drivers/pc8001.cpp @@ -511,7 +511,7 @@ void pc8001_state::pc8001(machine_config &config) UPD3301(config, m_crtc, XTAL(14'318'181)); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels), this); + m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels)); m_crtc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w)); m_crtc->set_screen(SCREEN_TAG); @@ -561,7 +561,7 @@ void pc8001mk2_state::pc8001mk2(machine_config &config) UPD3301(config, m_crtc, XTAL(14'318'181)); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels), this); + m_crtc->set_display_callback(FUNC(pc8001_state::pc8001_display_pixels)); m_crtc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w)); m_crtc->set_screen(SCREEN_TAG); diff --git a/src/mame/drivers/pc9801.cpp b/src/mame/drivers/pc9801.cpp index 58ca84c67a5..d8268628051 100644 --- a/src/mame/drivers/pc9801.cpp +++ b/src/mame/drivers/pc9801.cpp @@ -1422,7 +1422,7 @@ void pc9801_state::pc9821_io(address_map &map) { // map.unmap_value_high(); // TODO: a read to somewhere makes this to fail at POST map(0x0000, 0x001f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).umask32(0xff00ff00); - map(0x0000, 0x001f).r(read8_delegate([this](address_space &s, offs_t o, u8 mm) { return BIT(o, 1) ? 0xff : pic_r(s, o, mm); }, "pc9821_pic")).umask32(0x00ff00ff); + map(0x0000, 0x001f).lr8(NAME([this] (address_space &s, offs_t o, u8 mm) { return BIT(o, 1) ? 0xff : pic_r(s, o, mm); })).umask32(0x00ff00ff); map(0x0000, 0x001f).w(FUNC(pc9801_state::pic_w)).umask32(0x00ff00ff); // i8259 PIC (bit 3 ON slave / master) / i8237 DMA map(0x0020, 0x002f).w(FUNC(pc9801_state::rtc_w)).umask32(0x000000ff); map(0x0020, 0x002f).w(FUNC(pc9801_state::dmapg8_w)).umask32(0xff00ff00); @@ -1471,7 +1471,7 @@ void pc9801_state::pc9821_io(address_map &map) // map(0x0cc0, 0x0cc7) SCSI interface / <undefined> // map(0x0cfc, 0x0cff) PCI bus map(0x1e8c, 0x1e8f).noprw(); // IDE RAM switch - map(0x2ed0, 0x2edf).r(read8_delegate([](address_space &s, offs_t o, u8 mm) { return 0xff; }, "pc9821_unkaudio")).umask32(0xffffffff); // unknown sound related + map(0x2ed0, 0x2edf).lr8(NAME([] (address_space &s, offs_t o, u8 mm) { return 0xff; })).umask32(0xffffffff); // unknown sound related map(0x3fd8, 0x3fdf).rw(m_pit8253, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask32(0xff00ff00); // <undefined> / pit mirror ports map(0x7fd8, 0x7fdf).rw("ppi8255_mouse", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0xff00ff00); map(0x841c, 0x841f).rw(FUNC(pc9801_state::sdip_0_r), FUNC(pc9801_state::sdip_0_w)); diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp index 88460dde163..93bb6a14139 100644 --- a/src/mame/drivers/pcw.cpp +++ b/src/mame/drivers/pcw.cpp @@ -245,7 +245,7 @@ void pcw_state::pcw_update_read_memory_block(int block, int bank) if (bank == 3) { /* when upper 16 bytes are accessed use keyboard read handler */ - space.install_read_handler( block * 0x04000 + 0x3ff0, block * 0x04000 + 0x3fff, read8_delegate(FUNC(pcw_state::pcw_keyboard_data_r),this)); + space.install_read_handler( block * 0x04000 + 0x3ff0, block * 0x04000 + 0x3fff, read8_delegate(*this, FUNC(pcw_state::pcw_keyboard_data_r))); LOGMEM("MEM: read block %i -> bank %i\n", block, bank); } else @@ -1291,7 +1291,7 @@ void pcw_state::pcw(machine_config &config) /* internal ram */ RAM(config, m_ram).set_default_size("256K"); - TIMER(config, "pcw_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(pcw_state::pcw_timer_interrupt), this), attotime::from_hz(300)); + TIMER(config, "pcw_timer", 0).configure_periodic(FUNC(pcw_state::pcw_timer_interrupt), attotime::from_hz(300)); } void pcw_state::pcw8256(machine_config &config) diff --git a/src/mame/drivers/pcxt.cpp b/src/mame/drivers/pcxt.cpp index 51ffa944a9d..5a224b39f2b 100644 --- a/src/mame/drivers/pcxt.cpp +++ b/src/mame/drivers/pcxt.cpp @@ -173,7 +173,7 @@ void isa8_cga_tetriskr_device::device_start() { m_bg_bank = 0; isa8_cga_superimpose_device::device_start(); - m_isa->install_device(0x3c0, 0x3c0, read8_delegate( FUNC(isa8_cga_tetriskr_device::bg_bank_r), this ), write8_delegate( FUNC(isa8_cga_tetriskr_device::bg_bank_w), this ) ); + m_isa->install_device(0x3c0, 0x3c0, read8_delegate(*this, FUNC(isa8_cga_tetriskr_device::bg_bank_r)), write8_delegate(*this, FUNC(isa8_cga_tetriskr_device::bg_bank_w))); } WRITE8_MEMBER(isa8_cga_tetriskr_device::bg_bank_w) diff --git a/src/mame/drivers/pegasus.cpp b/src/mame/drivers/pegasus.cpp index 9abe19518be..71412a3632a 100644 --- a/src/mame/drivers/pegasus.cpp +++ b/src/mame/drivers/pegasus.cpp @@ -462,15 +462,15 @@ image_init_result pegasus_state::load_cart(device_image_interface &image, generi void pegasus_state::machine_start() { if (m_exp_00->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_00)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(*m_exp_00, FUNC(generic_slot_device::read_rom))); if (m_exp_01->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_01)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x1fff, read8sm_delegate(*m_exp_01, FUNC(generic_slot_device::read_rom))); if (m_exp_02->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_02)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2000, 0x2fff, read8sm_delegate(*m_exp_02, FUNC(generic_slot_device::read_rom))); if (m_exp_0c->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xcfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0c)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xcfff, read8sm_delegate(*m_exp_0c, FUNC(generic_slot_device::read_rom))); if (m_exp_0d->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000, 0xdfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_exp_0d)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd000, 0xdfff, read8sm_delegate(*m_exp_0d, FUNC(generic_slot_device::read_rom))); } void pegasus_state::machine_reset() @@ -525,11 +525,11 @@ void pegasus_state::pegasus(machine_config &config) m_pia_u->irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE); m_pia_u->irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE); - GENERIC_SOCKET(config, "exp00", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp00_load), this); - GENERIC_SOCKET(config, "exp01", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp01_load), this); - GENERIC_SOCKET(config, "exp02", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp02_load), this); - GENERIC_SOCKET(config, "exp0c", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp0c_load), this); - GENERIC_SOCKET(config, "exp0d", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp0d_load), this); + GENERIC_SOCKET(config, "exp00", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp00_load)); + GENERIC_SOCKET(config, "exp01", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp01_load)); + GENERIC_SOCKET(config, "exp02", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp02_load)); + GENERIC_SOCKET(config, "exp0c", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp0c_load)); + GENERIC_SOCKET(config, "exp0d", generic_plain_slot, "pegasus_cart").set_device_load(FUNC(pegasus_state::exp0d_load)); CASSETTE(config, m_cass); m_cass->set_default_state(CASSETTE_STOPPED|CASSETTE_MOTOR_ENABLED); diff --git a/src/mame/drivers/pencil2.cpp b/src/mame/drivers/pencil2.cpp index 9076c588f11..b736065dfb5 100644 --- a/src/mame/drivers/pencil2.cpp +++ b/src/mame/drivers/pencil2.cpp @@ -306,7 +306,7 @@ INPUT_PORTS_END void pencil2_state::machine_start() { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x8000, 0xffff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } void pencil2_state::pencil2(machine_config &config) diff --git a/src/mame/drivers/pentagon.cpp b/src/mame/drivers/pentagon.cpp index 83708376c0e..fa9a8bb4518 100644 --- a/src/mame/drivers/pentagon.cpp +++ b/src/mame/drivers/pentagon.cpp @@ -225,8 +225,8 @@ MACHINE_RESET_MEMBER(pentagon_state,pentagon) m_program = &m_maincpu->space(AS_PROGRAM); m_p_ram = memregion("maincpu")->base(); - m_program->install_write_handler(0x4000, 0x5aff, write8_delegate(FUNC(pentagon_state::pentagon_scr_w), this)); - m_program->install_write_handler(0xc000, 0xdaff, write8_delegate(FUNC(pentagon_state::pentagon_scr2_w), this)); + m_program->install_write_handler(0x4000, 0x5aff, write8_delegate(*this, FUNC(pentagon_state::pentagon_scr_w))); + m_program->install_write_handler(0xc000, 0xdaff, write8_delegate(*this, FUNC(pentagon_state::pentagon_scr2_w))); if (m_beta->started()) { diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index ed7beef1aad..73239e9c5af 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -281,7 +281,7 @@ void peoplepc_state::olypeopl(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(peoplepc_state::update_row), this); + crtc.set_update_row_callback(FUNC(peoplepc_state::update_row)); I8257(config, m_dmac, XTAL(14'745'600)/3); m_dmac->out_hrq_cb().set(FUNC(peoplepc_state::hrq_w)); diff --git a/src/mame/drivers/peplus.cpp b/src/mame/drivers/peplus.cpp index c69232af1f7..2c94fb51238 100644 --- a/src/mame/drivers/peplus.cpp +++ b/src/mame/drivers/peplus.cpp @@ -957,7 +957,7 @@ TILE_GET_INFO_MEMBER(peplus_state::get_bg_tile_info) void peplus_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(peplus_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(peplus_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); m_palette_ram[0] = std::make_unique<uint8_t[]>(0x3000); memset(m_palette_ram[0].get(), 0, 0x3000); m_palette_ram[1] = std::make_unique<uint8_t[]>(0x3000); @@ -1400,7 +1400,7 @@ void peplus_state::peplus(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_on_update_addr_change_callback(FUNC(peplus_state::crtc_addr), this); + m_crtc->set_on_update_addr_change_callback(FUNC(peplus_state::crtc_addr)); m_crtc->out_vsync_callback().set(FUNC(peplus_state::crtc_vsync)); I2C_X2404P(config, m_i2cmem); diff --git a/src/mame/drivers/pet.cpp b/src/mame/drivers/pet.cpp index 75e07cb0b84..1bc29e04ed3 100644 --- a/src/mame/drivers/pet.cpp +++ b/src/mame/drivers/pet.cpp @@ -1714,7 +1714,7 @@ void pet_state::base_pet_devices(machine_config &config, const char *default_dri m_user->pm_handler().set(m_via, FUNC(via6522_device::write_cb2)); quickload_image_device &quickload(QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY)); - quickload.set_load_callback(FUNC(pet_state::quickload_pet), this); + quickload.set_load_callback(FUNC(pet_state::quickload_pet)); quickload.set_interface("cbm_quik"); SOFTWARE_LIST(config, "cass_list").set_original("pet_cass"); @@ -1896,8 +1896,8 @@ void pet2001b_state::pet4032f(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update), this); - m_crtc->set_update_row_callback(FUNC(pet_state::pet40_update_row), this); + m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update)); + m_crtc->set_update_row_callback(FUNC(pet_state::pet40_update_row)); m_crtc->out_vsync_callback().set(M6520_1_TAG, FUNC(pia6821_device::cb1_w)); // sound hardware @@ -1952,8 +1952,8 @@ void pet_state::cbm4032f(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update), this); - m_crtc->set_update_row_callback(FUNC(pet_state::pet40_update_row), this); + m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update)); + m_crtc->set_update_row_callback(FUNC(pet_state::pet40_update_row)); m_crtc->out_vsync_callback().set(M6520_1_TAG, FUNC(pia6821_device::cb1_w)); // sound hardware @@ -2018,8 +2018,8 @@ void pet80_state::pet80(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(2*8); - m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update), this); - m_crtc->set_update_row_callback(FUNC(pet80_state::pet80_update_row), this); + m_crtc->set_begin_update_callback(FUNC(pet_state::pet_begin_update)); + m_crtc->set_update_row_callback(FUNC(pet80_state::pet80_update_row)); m_crtc->out_vsync_callback().set(M6520_1_TAG, FUNC(pia6821_device::cb1_w)); // sound hardware @@ -2073,7 +2073,7 @@ void cbm8296_state::cbm8296(machine_config &config) m_crtc->set_clock(XTAL(16'000'000)/16); m_crtc->set_show_border_area(true); m_crtc->set_char_width(2*8); - m_crtc->set_update_row_callback(FUNC(pet80_state::cbm8296_update_row), this); + m_crtc->set_update_row_callback(FUNC(pet80_state::cbm8296_update_row)); m_crtc->out_vsync_callback().set(M6520_1_TAG, FUNC(pia6821_device::cb1_w)); subdevice<ieee488_slot_device>("ieee8")->set_default_option("c8250"); diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index fc4beba17ad..8711aece97f 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -446,7 +446,7 @@ void pg685_state::pg675(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row)); // sound hardware @@ -494,7 +494,7 @@ void pg685_state::pg685(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row)); // sound hardware @@ -546,7 +546,7 @@ void pg685_state::pg685oua12(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row_oua12), this); + crtc.set_update_row_callback(FUNC(pg685_state::crtc_update_row_oua12)); // sound hardware diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp index 641ab098576..bfdf02f1db1 100644 --- a/src/mame/drivers/pgm2.cpp +++ b/src/mame/drivers/pgm2.cpp @@ -754,7 +754,7 @@ void pgm2_state::pgm2(machine_config &config) IGS036(config, m_maincpu, 100000000); // Unknown clock / divider m_maincpu->set_addrmap(AS_PROGRAM, &pgm2_state::pgm2_rom_map); - TIMER(config, m_mcu_timer, 0).configure_generic(timer_device::expired_delegate(FUNC(pgm2_state::mcu_interrupt), this)); + TIMER(config, m_mcu_timer, 0).configure_generic(FUNC(pgm2_state::mcu_interrupt)); ARM_AIC(config, m_arm_aic, 0).irq_callback().set(FUNC(pgm2_state::irq)); @@ -1394,20 +1394,20 @@ void pgm2_state::common_encryption_init() void pgm2_state::init_orleg2() { common_encryption_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20020114, 0x20020117, read32_delegate(FUNC(pgm2_state::orleg2_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20020114, 0x20020117, read32_delegate(*this, FUNC(pgm2_state::orleg2_speedup_r))); } void pgm2_state::init_kov2nl() { common_encryption_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20020470, 0x20020473, read32_delegate(FUNC(pgm2_state::kov2nl_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20020470, 0x20020473, read32_delegate(*this, FUNC(pgm2_state::kov2nl_speedup_r))); } void pgm2_state::init_ddpdojt() { common_encryption_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000060, 0x20000063, read32_delegate(FUNC(pgm2_state::ddpdojt_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20021e04, 0x20021e07, read32_delegate(FUNC(pgm2_state::ddpdojt_speedup2_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000060, 0x20000063, read32_delegate(*this, FUNC(pgm2_state::ddpdojt_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20021e04, 0x20021e07, read32_delegate(*this, FUNC(pgm2_state::ddpdojt_speedup2_r))); } // currently we don't know how to derive address/data xor values from real keys, so we need both @@ -1419,7 +1419,7 @@ static const kov3_module_key kov3_100_key = { { 0x40,0xac,0x30,0x00,0x47,0x49,0x void pgm2_state::init_kov3() { common_encryption_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000b4, 0x200000b7, read32_delegate(FUNC(pgm2_state::kov3_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000b4, 0x200000b7, read32_delegate(*this, FUNC(pgm2_state::kov3_speedup_r))); } void pgm2_state::decrypt_kov3_module(u32 addrxor, u16 dataxor) @@ -1464,7 +1464,7 @@ void pgm2_state::init_kov3_100() void pgm2_state::init_kof98umh() { common_encryption_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000060, 0x20000063, read32_delegate(FUNC(pgm2_state::kof98umh_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000060, 0x20000063, read32_delegate(*this, FUNC(pgm2_state::kof98umh_speedup_r))); } diff --git a/src/mame/drivers/photoply.cpp b/src/mame/drivers/photoply.cpp index 4dfce5b1a83..7f2ae54e2af 100644 --- a/src/mame/drivers/photoply.cpp +++ b/src/mame/drivers/photoply.cpp @@ -32,8 +32,8 @@ TODO: class photoply_state : public pcat_base_state { public: - photoply_state(const machine_config &mconfig, device_type type, const char *tag) - : pcat_base_state(mconfig, type, tag), + photoply_state(const machine_config &mconfig, device_type type, const char *tag) : + pcat_base_state(mconfig, type, tag), m_eeprom(*this, "eeprom"), m_main_bios(*this, "bios"), m_video_bios(*this, "video_bios"), @@ -319,8 +319,7 @@ void photoply_state::photoply(machine_config &config) ide2.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir7_w)); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (5, FUNC(photoply_state::sis_pcm_r), this); - pcibus.set_device_write(5, FUNC(photoply_state::sis_pcm_w), this); + pcibus.set_device(5, FUNC(photoply_state::sis_pcm_r), FUNC(photoply_state::sis_pcm_w)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(XTAL(25'174'800),900,0,640,526,0,480); diff --git a/src/mame/drivers/phunsy.cpp b/src/mame/drivers/phunsy.cpp index b52c1417f44..b66bf6347df 100644 --- a/src/mame/drivers/phunsy.cpp +++ b/src/mame/drivers/phunsy.cpp @@ -373,7 +373,7 @@ void phunsy_state::phunsy(machine_config &config) m_cass->add_route(ALL_OUTPUTS, "mono", 0.05); /* quickload */ - QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(2)).set_load_callback(FUNC(phunsy_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(2)).set_load_callback(FUNC(phunsy_state::quickload_cb)); } diff --git a/src/mame/drivers/piggypas.cpp b/src/mame/drivers/piggypas.cpp index 9dcfa1b5e30..723e794241d 100644 --- a/src/mame/drivers/piggypas.cpp +++ b/src/mame/drivers/piggypas.cpp @@ -26,8 +26,8 @@ game details unknown class piggypas_state : public driver_device { public: - piggypas_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + piggypas_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_hd44780(*this, "hd44780"), m_ticket(*this, "ticket"), @@ -218,7 +218,7 @@ void piggypas_state::piggypas(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780")); hd44780.set_lcd_size(1, 16); - hd44780.set_pixel_update_cb(FUNC(piggypas_state::piggypas_pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(piggypas_state::piggypas_pixel_update)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp index 6d337040e06..c52a19a9621 100644 --- a/src/mame/drivers/pinball2k.cpp +++ b/src/mame/drivers/pinball2k.cpp @@ -613,8 +613,7 @@ void pinball2k_state::mediagx(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (18, FUNC(pinball2k_state::cx5510_pci_r), this); - pcibus.set_device_write(18, FUNC(pinball2k_state::cx5510_pci_w), this); + pcibus.set_device(18, FUNC(pinball2k_state::cx5510_pci_r), FUNC(pinball2k_state::cx5510_pci_w)); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/pingpong.cpp b/src/mame/drivers/pingpong.cpp index 1ecb7f4aeca..36d45dd24fd 100644 --- a/src/mame/drivers/pingpong.cpp +++ b/src/mame/drivers/pingpong.cpp @@ -582,8 +582,8 @@ void pingpong_state::init_cashquiz() ROM[i] = bitswap<8>(ROM[i],0,1,2,3,4,5,6,7); /* questions banking handlers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4000, 0x4000, write8_delegate(FUNC(pingpong_state::cashquiz_question_bank_high_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4001, 0x4001, write8_delegate(FUNC(pingpong_state::cashquiz_question_bank_low_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4000, 0x4000, write8_delegate(*this, FUNC(pingpong_state::cashquiz_question_bank_high_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4001, 0x4001, write8_delegate(*this, FUNC(pingpong_state::cashquiz_question_bank_low_w))); // 8 independents banks for questions m_maincpu->space(AS_PROGRAM).install_read_bank(0x5000, 0x50ff, "bank1"); diff --git a/src/mame/drivers/pipbug.cpp b/src/mame/drivers/pipbug.cpp index dafac58c3e3..08a986842d4 100644 --- a/src/mame/drivers/pipbug.cpp +++ b/src/mame/drivers/pipbug.cpp @@ -217,7 +217,7 @@ void pipbug_state::pipbug(machine_config &config) m_rs232->set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(terminal)); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(pipbug_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(pipbug_state::quickload_cb)); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/pipedrm.cpp b/src/mame/drivers/pipedrm.cpp index 5360228314b..468cb7f6f17 100644 --- a/src/mame/drivers/pipedrm.cpp +++ b/src/mame/drivers/pipedrm.cpp @@ -889,7 +889,7 @@ void pipedrm_state::init_pipedrm() void pipedrm_state::init_hatris() { - m_maincpu->space(AS_IO).install_write_handler(0x21, 0x21, write8_delegate(FUNC(pipedrm_state::fromance_gfxreg_w),this)); + m_maincpu->space(AS_IO).install_write_handler(0x21, 0x21, write8_delegate(*this, FUNC(pipedrm_state::fromance_gfxreg_w))); } diff --git a/src/mame/drivers/pipeline.cpp b/src/mame/drivers/pipeline.cpp index 6a2b52a8345..65d76e11623 100644 --- a/src/mame/drivers/pipeline.cpp +++ b/src/mame/drivers/pipeline.cpp @@ -161,8 +161,8 @@ TILE_GET_INFO_MEMBER(pipeline_state::get_tile_info2) void pipeline_state::video_start() { m_palram=std::make_unique<u8[]>(0x1000); - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pipeline_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32 ); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pipeline_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,32 ); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pipeline_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pipeline_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_tilemap2->set_transparent_pen(0); save_item(NAME(m_vidctrl)); diff --git a/src/mame/drivers/pirates.cpp b/src/mame/drivers/pirates.cpp index 4fc64e0a30d..f0a280eb436 100644 --- a/src/mame/drivers/pirates.cpp +++ b/src/mame/drivers/pirates.cpp @@ -461,7 +461,7 @@ void pirates_state::init_genix() /* If this value is increased then something has gone wrong and the protection failed */ /* Write-protect it for now */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x109e98, 0x109e9b, read16_delegate(FUNC(pirates_state::genix_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x109e98, 0x109e9b, read16_delegate(*this, FUNC(pirates_state::genix_prot_r))); } /* GAME */ diff --git a/src/mame/drivers/piratesh.cpp b/src/mame/drivers/piratesh.cpp index 15c0fda159a..a8e7da1241f 100644 --- a/src/mame/drivers/piratesh.cpp +++ b/src/mame/drivers/piratesh.cpp @@ -626,7 +626,7 @@ void piratesh_state::piratesh(machine_config &config) PALETTE(config, "palette").set_format(palette_device::BGRx_888, 2048).enable_shadows().enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(piratesh_state::piratesh_tile_callback), this); + m_k056832->set_tile_callback(FUNC(piratesh_state::piratesh_tile_callback)); m_k056832->set_config(K056832_BPP_4PIRATESH, 1, 0); m_k056832->set_palette("palette"); @@ -635,13 +635,13 @@ void piratesh_state::piratesh(machine_config &config) K053250PS(config, m_k053250, 12000000, "palette", "screen", -16, 0); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(piratesh_state::piratesh_sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(piratesh_state::piratesh_sprite_callback)); m_k055673->set_config(K055673_LAYOUT_PS, -60, 24); m_k055673->set_palette("palette"); // ???? //K053246(config, m_k053246, 0); - //m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback), this); + //m_k053246->set_sprite_callback(FUNC(moo_state::sprite_callback)); //m_k053246->set_config("k053246", NORMAL_PLANE_ORDER, -48+1, 23); //m_k053246->set_palette(m_palette); diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp index b2793f6fcf4..e0c5c816893 100644 --- a/src/mame/drivers/pkscram.cpp +++ b/src/mame/drivers/pkscram.cpp @@ -263,9 +263,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(pkscram_state::scanline_callback) void pkscram_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pkscram_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,32,32); - m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pkscram_state::get_md_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,32,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pkscram_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(*this, FUNC(pkscram_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pkscram_state::get_md_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pkscram_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,32,32); m_md_tilemap->set_transparent_pen(15); m_fg_tilemap->set_transparent_pen(15); diff --git a/src/mame/drivers/pktgaldx.cpp b/src/mame/drivers/pktgaldx.cpp index e50b76f09e5..f6d73c3d60c 100644 --- a/src/mame/drivers/pktgaldx.cpp +++ b/src/mame/drivers/pktgaldx.cpp @@ -368,8 +368,8 @@ void pktgaldx_state::pktgaldx(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(pktgaldx_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(pktgaldx_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(pktgaldx_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(pktgaldx_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/plus4.cpp b/src/mame/drivers/plus4.cpp index 256116d6133..4ad7ddbb1e4 100644 --- a/src/mame/drivers/plus4.cpp +++ b/src/mame/drivers/plus4.cpp @@ -930,7 +930,7 @@ void plus4_state::plus4(machine_config &config) m_exp->cd_wr_callback().set(FUNC(plus4_state::write)); m_exp->aec_wr_callback().set_inputline(MOS7501_TAG, INPUT_LINE_HALT); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(plus4_state::quickload_c16), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(plus4_state::quickload_c16)); // internal ram RAM(config, m_ram).set_default_size("64K"); diff --git a/src/mame/drivers/pockchal.cpp b/src/mame/drivers/pockchal.cpp index cc151eb8f3b..98fdfe8858c 100644 --- a/src/mame/drivers/pockchal.cpp +++ b/src/mame/drivers/pockchal.cpp @@ -92,7 +92,7 @@ void pockchalv1_state::machine_start() { address_space &space = m_maincpu->space(AS_PROGRAM); if (m_cart->exists()) - space.install_read_handler(0x0000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + space.install_read_handler(0x0000, 0x7fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } void pockchalv1_state::machine_reset() @@ -120,7 +120,7 @@ void pockchalv1_state::pockchalv1(machine_config &config) screen.set_palette("palette"); generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "pockchalw_cart", "bin")); - cartslot.set_device_load(FUNC(pockchalv1_state::cart_load), this); + cartslot.set_device_load(FUNC(pockchalv1_state::cart_load)); cartslot.set_must_be_loaded(true); SOFTWARE_LIST(config, "pc1_list").set_compatible("pockchalw"); diff --git a/src/mame/drivers/pockstat.cpp b/src/mame/drivers/pockstat.cpp index efb714113ae..c73721cd9fa 100644 --- a/src/mame/drivers/pockstat.cpp +++ b/src/mame/drivers/pockstat.cpp @@ -1008,7 +1008,7 @@ void pockstat_state::pockstat(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "pockstat_cart", "gme"); m_cart->set_width(GENERIC_ROM32_WIDTH); m_cart->set_endian(ENDIANNESS_LITTLE); - m_cart->set_device_load(FUNC(pockstat_state::flash_load), this); + m_cart->set_device_load(FUNC(pockstat_state::flash_load)); } /* ROM definition */ diff --git a/src/mame/drivers/poisk1.cpp b/src/mame/drivers/poisk1.cpp index 76d4d0fbe79..702f6e8048f 100644 --- a/src/mame/drivers/poisk1.cpp +++ b/src/mame/drivers/poisk1.cpp @@ -237,7 +237,7 @@ WRITE8_MEMBER(p1_state::p1_ppi2_porta_w) else { program.install_read_bank(0xb8000, 0xbbfff, "bank11"); - program.install_write_handler(0xb8000, 0xbbfff, WRITE8_DELEGATE(p1_state, p1_vram_w)); + program.install_write_handler(0xb8000, 0xbbfff, write8_delegate(*this, FUNC(p1_state::p1_vram_w))); } } // DISPLAY BANK diff --git a/src/mame/drivers/pokemini.cpp b/src/mame/drivers/pokemini.cpp index 9ca4c699607..df99ab5e72b 100644 --- a/src/mame/drivers/pokemini.cpp +++ b/src/mame/drivers/pokemini.cpp @@ -1789,7 +1789,7 @@ void pokemini_state::pokemini(machine_config &config) m_speaker->add_route(ALL_OUTPUTS, "mono", 0.50); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "pokemini_cart", "bin,min").set_device_load(FUNC(pokemini_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "pokemini_cart", "bin,min").set_device_load(FUNC(pokemini_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("pokemini"); diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp index 75c1f7ec103..58ac0c71d59 100644 --- a/src/mame/drivers/polepos.cpp +++ b/src/mame/drivers/polepos.cpp @@ -2449,7 +2449,7 @@ ROM_END void polepos_state::init_polepos2() { /* note that the bootleg version doesn't need this custom IC; it has a hacked ROM in its place */ - m_subcpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read16_delegate(FUNC(polepos_state::polepos2_ic25_r),this)); + m_subcpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x5fff, read16_delegate(*this, FUNC(polepos_state::polepos2_ic25_r))); } diff --git a/src/mame/drivers/policetr.cpp b/src/mame/drivers/policetr.cpp index 7265232dd67..2ce74d37493 100644 --- a/src/mame/drivers/policetr.cpp +++ b/src/mame/drivers/policetr.cpp @@ -704,7 +704,7 @@ ROM_END void policetr_state::driver_init() { - m_maincpu->space(AS_PROGRAM).install_write_handler(m_speedup_addr, m_speedup_addr+3, write32_delegate(FUNC(policetr_state::speedup_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(m_speedup_addr, m_speedup_addr+3, write32_delegate(*this, FUNC(policetr_state::speedup_w))); m_speedup_data = m_rambase + m_speedup_addr/4; } diff --git a/src/mame/drivers/poly88.cpp b/src/mame/drivers/poly88.cpp index d1323650725..a6f59b3f2e3 100644 --- a/src/mame/drivers/poly88.cpp +++ b/src/mame/drivers/poly88.cpp @@ -161,7 +161,7 @@ void poly88_state::poly88(machine_config &config) m_brg->output_cb().set(FUNC(poly88_state::cassette_clock_w)); /* snapshot */ - SNAPSHOT(config, "snapshot", "img", attotime::from_seconds(2)).set_load_callback(FUNC(poly88_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "img", attotime::from_seconds(2)).set_load_callback(FUNC(poly88_state::snapshot_cb)); S100_BUS(config, m_s100, 16.5888_MHz_XTAL / 9); m_s100->vi2().set(FUNC(poly88_state::vi2_w)); diff --git a/src/mame/drivers/pong.cpp b/src/mame/drivers/pong.cpp index 7359f8038b4..a72c1b35b4b 100644 --- a/src/mame/drivers/pong.cpp +++ b/src/mame/drivers/pong.cpp @@ -470,8 +470,8 @@ void pong_state::pong(machine_config &config) NETLIST_LOGIC_INPUT(config, "maincpu:coinsw", "coinsw.POS", 0); NETLIST_LOGIC_INPUT(config, "maincpu:antenna", "antenna.IN", 0); - NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(pong_state::sound_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(pong_state::sound_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); /* video hardware */ SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -514,15 +514,15 @@ void breakout_state::breakout(machine_config &config) NETLIST_LOGIC_INPUT(config, "maincpu:antenna", "antenna.IN", 0); - NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(breakout_state::sound_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(breakout_state::sound_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); // Leds and lamps - NETLIST_ANALOG_OUTPUT(config, "maincpu:led_serve", 0).set_params("CON_P", FUNC(breakout_state::serve_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:lamp_credit1", 0).set_params("CON_CREDIT1", FUNC(breakout_state::credit1_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:lamp_credit2", 0).set_params("CON_CREDIT2", FUNC(breakout_state::credit2_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:coin_counter", 0).set_params("CON_T", FUNC(breakout_state::coin_counter_cb), ""); + NETLIST_ANALOG_OUTPUT(config, "maincpu:led_serve", 0).set_params("CON_P", FUNC(breakout_state::serve_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:lamp_credit1", 0).set_params("CON_CREDIT1", FUNC(breakout_state::credit1_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:lamp_credit2", 0).set_params("CON_CREDIT2", FUNC(breakout_state::credit2_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:coin_counter", 0).set_params("CON_T", FUNC(breakout_state::coin_counter_cb)); /* video hardware */ SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -573,8 +573,8 @@ void pong_state::pongd(machine_config &config) NETLIST_LOGIC_INPUT(config, "maincpu:antenna", "antenna.IN", 0, 0x01) #endif - NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("AUDIO", FUNC(pong_state::sound_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("AUDIO", FUNC(pong_state::sound_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); /* video hardware */ SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -609,11 +609,11 @@ void rebound_state::rebound(machine_config &config) NETLIST_LOGIC_INPUT(config, "maincpu:dsw1b", "DSW1b.POS", 0); NETLIST_LOGIC_INPUT(config, "maincpu:dsw2", "DSW2.POS", 0); - NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(rebound_state::sound_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:snd0", 0).set_params("sound", FUNC(rebound_state::sound_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0", 0).set_params("videomix", "fixfreq", FUNC(fixedfreq_device::update_composite_monochrome)); - NETLIST_ANALOG_OUTPUT(config, "maincpu:led_credit", 0).set_params("CON11", FUNC(rebound_state::led_credit_cb), ""); - NETLIST_ANALOG_OUTPUT(config, "maincpu:coin_counter", 0).set_params("CON10", FUNC(rebound_state::coin_counter_cb), ""); + NETLIST_ANALOG_OUTPUT(config, "maincpu:led_credit", 0).set_params("CON11", FUNC(rebound_state::led_credit_cb)); + NETLIST_ANALOG_OUTPUT(config, "maincpu:coin_counter", 0).set_params("CON10", FUNC(rebound_state::coin_counter_cb)); /* video hardware */ SCREEN(config, "screen", SCREEN_TYPE_RASTER); diff --git a/src/mame/drivers/popobear.cpp b/src/mame/drivers/popobear.cpp index cb0601256e5..91ed2e63851 100644 --- a/src/mame/drivers/popobear.cpp +++ b/src/mame/drivers/popobear.cpp @@ -226,10 +226,10 @@ void popobear_state::video_start() m_gfxdecode->gfx(0)->set_source(reinterpret_cast<uint8_t *>(&m_vram_rearranged[0])); - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popobear_state::get_bg3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popobear_state::get_bg0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popobear_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popobear_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popobear_state::get_bg3_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); m_bg_tilemap[0]->set_transparent_pen(0); m_bg_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/drivers/popper.cpp b/src/mame/drivers/popper.cpp index 58e2fd41026..ae442d5eb6c 100644 --- a/src/mame/drivers/popper.cpp +++ b/src/mame/drivers/popper.cpp @@ -507,10 +507,10 @@ READ8_MEMBER( popper_state::watchdog_clear_r ) void popper_state::machine_start() { // create tilemaps - m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popper_state::layer0_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 48, 32); + m_layer0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popper_state::layer0_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 48, 32); m_layer0_tilemap->set_transparent_pen(1); - m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popper_state::layer1_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 48, 32); + m_layer1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popper_state::layer1_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 48, 32); m_layer1_tilemap->set_transparent_pen(0); // allocate and start scanline timer diff --git a/src/mame/drivers/powerbal.cpp b/src/mame/drivers/powerbal.cpp index b16ecb924ac..76f6ed54349 100644 --- a/src/mame/drivers/powerbal.cpp +++ b/src/mame/drivers/powerbal.cpp @@ -558,7 +558,7 @@ void powerbal_state::draw_sprites_powerbal(bitmap_ind16 &bitmap, const rectangle VIDEO_START_MEMBER(powerbal_state,powerbal) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(powerbal_state::powerbal_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerbal_state::powerbal_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_xoffset = -20; @@ -567,7 +567,7 @@ VIDEO_START_MEMBER(powerbal_state,powerbal) VIDEO_START_MEMBER(powerbal_state,atombjt) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(powerbal_state::powerbal_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerbal_state::powerbal_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_xoffset = 32; m_yoffset = 8; diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index b0608f2f3e0..70ea6780663 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -295,8 +295,8 @@ void powerins_state::powerins(machine_config &config) m_screen->set_palette(m_palette); NMK_16BIT_SPRITE(config, m_spritegen, XTAL(14'000'000) / 2); - m_spritegen->set_colpri_callback(FUNC(powerins_state::get_colour_6bit), this); - m_spritegen->set_ext_callback(FUNC(powerins_state::get_flip_extcode), this); + m_spritegen->set_colpri_callback(FUNC(powerins_state::get_colour_6bit)); + m_spritegen->set_ext_callback(FUNC(powerins_state::get_flip_extcode)); m_spritegen->set_mask(0x3ff, 0x3ff); m_spritegen->set_screen_size(320, 256); m_spritegen->set_max_sprite_clock(448 * 263); // not verified? diff --git a/src/mame/drivers/ppmast93.cpp b/src/mame/drivers/ppmast93.cpp index e6388df9651..4a6337f9aad 100644 --- a/src/mame/drivers/ppmast93.cpp +++ b/src/mame/drivers/ppmast93.cpp @@ -361,8 +361,8 @@ TILE_GET_INFO_MEMBER(ppmast93_state::get_fg_tile_info) void ppmast93_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ppmast93_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(ppmast93_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(*this, FUNC(ppmast93_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ppmast93_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/prehisle.cpp b/src/mame/drivers/prehisle.cpp index 9bed8d3cc2e..5d96ac4f858 100644 --- a/src/mame/drivers/prehisle.cpp +++ b/src/mame/drivers/prehisle.cpp @@ -40,17 +40,17 @@ void prehisle_state::prehisle_map(address_map &map) map(0x0d0000, 0x0d07ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x0e0010, 0x0e0011).portr("P2"); // Player 2 map(0x0e0020, 0x0e0021).portr("COIN"); // Coins, Tilt, Service - map(0x0e0041, 0x0e0041).lr8("P1_r", [this]() -> u8 { return m_io_p1->read() ^ m_invert_controls; }); // Player 1 + map(0x0e0041, 0x0e0041).lr8(NAME([this] () -> u8 { return m_io_p1->read() ^ m_invert_controls; })); // Player 1 map(0x0e0042, 0x0e0043).portr("DSW0"); // DIPs map(0x0e0044, 0x0e0045).portr("DSW1"); // DIPs + VBLANK map(0x0f0000, 0x0f0001).w(FUNC(prehisle_state::fg_scrolly_w)); map(0x0f0010, 0x0f0011).w(FUNC(prehisle_state::fg_scrollx_w)); map(0x0f0020, 0x0f0021).w(FUNC(prehisle_state::bg_scrolly_w)); map(0x0f0030, 0x0f0031).w(FUNC(prehisle_state::bg_scrollx_w)); - map(0x0f0046, 0x0f0047).lw16("invert_controls_w", [this](u16 data){ m_invert_controls = data ? 0xff : 0x00; }); - map(0x0f0050, 0x0f0051).lw16("coin_counter_1_w", [this](u16 data){ machine().bookkeeping().coin_counter_w(0, data & 1); }); - map(0x0f0052, 0x0f0053).lw16("coin_counter_2_w", [this](u16 data){ machine().bookkeeping().coin_counter_w(1, data & 1); }); - map(0x0f0060, 0x0f0061).lw16("flip_screen_w", [this](u16 data){ flip_screen_set(data & 0x01); }); + map(0x0f0046, 0x0f0047).lw16(NAME([this] (u16 data) { m_invert_controls = data ? 0xff : 0x00; })); + map(0x0f0050, 0x0f0051).lw16(NAME([this] (u16 data) { machine().bookkeeping().coin_counter_w(0, data & 1); })); + map(0x0f0052, 0x0f0053).lw16(NAME([this] (u16 data) { machine().bookkeeping().coin_counter_w(1, data & 1); })); + map(0x0f0060, 0x0f0061).lw16(NAME([this] (u16 data) { flip_screen_set(data & 0x01); })); map(0x0f0070, 0x0f0071).w(FUNC(prehisle_state::soundcmd_w)); } @@ -77,7 +77,7 @@ void prehisle_state::prehisle_sound_io_map(address_map &map) map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); map(0x40, 0x40).w(FUNC(prehisle_state::upd_port_w)); - map(0x80, 0x80).lw8("upd_reset", [this](u8 data){ m_upd7759->reset_w(BIT(data, 7)); } ); + map(0x80, 0x80).lw8(NAME([this] (u8 data) { m_upd7759->reset_w(BIT(data, 7)); })); } /******************************************************************************/ diff --git a/src/mame/drivers/primo.cpp b/src/mame/drivers/primo.cpp index 5db10bcf489..0474b1af9ee 100644 --- a/src/mame/drivers/primo.cpp +++ b/src/mame/drivers/primo.cpp @@ -269,8 +269,8 @@ void primo_state::primoa32(machine_config &config) SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); /* snapshot/quickload */ - SNAPSHOT(config, "snapshot", "pss").set_load_callback(FUNC(primo_state::snapshot_cb), this); - QUICKLOAD(config, "quickload", "pp").set_load_callback(FUNC(primo_state::quickload_cb), this); + SNAPSHOT(config, "snapshot", "pss").set_load_callback(FUNC(primo_state::snapshot_cb)); + QUICKLOAD(config, "quickload", "pp").set_load_callback(FUNC(primo_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_formats(primo_ptp_format); diff --git a/src/mame/drivers/psion.cpp b/src/mame/drivers/psion.cpp index 7583a170ec7..4374b176fcc 100644 --- a/src/mame/drivers/psion.cpp +++ b/src/mame/drivers/psion.cpp @@ -614,7 +614,7 @@ void psion_state::psion_4lines(machine_config &config) subdevice<screen_device>("screen")->set_visarea(0, 6*20-1, 0, 9*4-1); m_lcdc->set_lcd_size(4, 20); - m_lcdc->set_pixel_update_cb(FUNC(psion_state::lz_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(psion_state::lz_pixel_update)); } void psion1_state::psion1(machine_config &config) @@ -628,7 +628,7 @@ void psion1_state::psion1(machine_config &config) subdevice<screen_device>("screen")->set_visarea(0, 6*16-1, 0, 8*1-1); m_lcdc->set_lcd_size(1, 16); - m_lcdc->set_pixel_update_cb(FUNC(psion1_state::psion1_pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(psion1_state::psion1_pixel_update)); /* Software lists */ SOFTWARE_LIST(config.replace(), "pack_list").set_original("psion1"); diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp index 145e3c969d1..0de37a45dce 100644 --- a/src/mame/drivers/psx.cpp +++ b/src/mame/drivers/psx.cpp @@ -543,7 +543,7 @@ void psx1_state::psx_base(machine_config &config) spu.add_route(0, "lspeaker", 1.00); spu.add_route(1, "rspeaker", 1.00); - QUICKLOAD(config, "quickload", "cpe,exe,psf,psx").set_load_callback(FUNC(psx1_state::quickload_exe), this); + QUICKLOAD(config, "quickload", "cpe,exe,psf,psx").set_load_callback(FUNC(psx1_state::quickload_exe)); PSX_PARALLEL_SLOT(config, "parallel", psx_parallel_devices, nullptr); diff --git a/src/mame/drivers/pturn.cpp b/src/mame/drivers/pturn.cpp index 9539652aa3c..8a0bba0c0b0 100644 --- a/src/mame/drivers/pturn.cpp +++ b/src/mame/drivers/pturn.cpp @@ -189,9 +189,9 @@ TILE_GET_INFO_MEMBER(pturn_state::get_bg_tile_info) void pturn_state::video_start() { - m_fgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pturn_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8, 8,32,32); + m_fgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pturn_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fgmap->set_transparent_pen(0); - m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pturn_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8, 8,32,32*8); + m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pturn_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32*8); m_bgmap->set_transparent_pen(0); save_item(NAME(m_bgbank)); diff --git a/src/mame/drivers/pv1000.cpp b/src/mame/drivers/pv1000.cpp index b23aa109511..1ca3c7fa860 100644 --- a/src/mame/drivers/pv1000.cpp +++ b/src/mame/drivers/pv1000.cpp @@ -395,7 +395,7 @@ void pv1000_state::machine_start() if (m_cart->exists()) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); // FIXME: this is needed for gfx decoding, but there is probably a cleaner solution! std::string region_tag; @@ -462,7 +462,7 @@ void pv1000_state::pv1000(machine_config &config) /* Cartridge slot */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "pv1000_cart")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(pv1000_state::cart_load), this); + cartslot.set_device_load(FUNC(pv1000_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("pv1000"); diff --git a/src/mame/drivers/pv2000.cpp b/src/mame/drivers/pv2000.cpp index 7ee58f80106..ba9f8000d10 100644 --- a/src/mame/drivers/pv2000.cpp +++ b/src/mame/drivers/pv2000.cpp @@ -354,7 +354,7 @@ WRITE_LINE_MEMBER( pv2000_state::pv2000_vdp_interrupt ) void pv2000_state::machine_start() { if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } void pv2000_state::machine_reset() @@ -408,7 +408,7 @@ void pv2000_state::pv2000(machine_config &config) m_cass->add_route(ALL_OUTPUTS, "mono", 0.05); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "pv2000_cart", "bin,rom,col").set_device_load(FUNC(pv2000_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "pv2000_cart", "bin,rom,col").set_device_load(FUNC(pv2000_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("pv2000"); diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index e9e21a36aa4..e254f11f7b0 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -433,7 +433,7 @@ void pwrview_state::pwrview(machine_config &config) hd6845s_device &crtc(HD6845S(config, "crtc", XTAL(64'000'000)/64)); // clock unknown crtc.set_char_width(32); /* ? */ - crtc.set_update_row_callback(FUNC(pwrview_state::update_row), this); + crtc.set_update_row_callback(FUNC(pwrview_state::update_row)); ADDRESS_MAP_BANK(config, "bios_bank").set_map(&pwrview_state::bios_bank).set_options(ENDIANNESS_LITTLE, 16, 17, 0x8000); } diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp index 5a16c67a810..eb926ad0b5a 100644 --- a/src/mame/drivers/pyl601.cpp +++ b/src/mame/drivers/pyl601.cpp @@ -570,7 +570,7 @@ void pyl601_state::pyl601(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); /* ? */ - crtc.set_update_row_callback(FUNC(pyl601_state::pyl601_update_row), this); + crtc.set_update_row_callback(FUNC(pyl601_state::pyl601_update_row)); UPD765A(config, m_fdc, 8'000'000, true, true); FLOPPY_CONNECTOR(config, "upd765:0", pyl601_floppies, "525hd", pyl601_state::floppy_formats); @@ -589,7 +589,7 @@ void pyl601_state::pyl601a(machine_config &config) subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_pyl601a); - subdevice<mc6845_device>("crtc")->set_update_row_callback(FUNC(pyl601_state::pyl601a_update_row), this); + subdevice<mc6845_device>("crtc")->set_update_row_callback(FUNC(pyl601_state::pyl601a_update_row)); } /* ROM definition */ diff --git a/src/mame/drivers/pzletime.cpp b/src/mame/drivers/pzletime.cpp index 520cdfed016..ea765fc4425 100644 --- a/src/mame/drivers/pzletime.cpp +++ b/src/mame/drivers/pzletime.cpp @@ -108,8 +108,8 @@ TILE_GET_INFO_MEMBER(pzletime_state::get_txt_tile_info) void pzletime_state::video_start() { - m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pzletime_state::get_mid_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 16); - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pzletime_state::get_txt_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pzletime_state::get_mid_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 16); + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pzletime_state::get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_mid_tilemap->set_transparent_pen(0); m_txt_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/qdrmfgp.cpp b/src/mame/drivers/qdrmfgp.cpp index d9057c8ff3c..2215ac85e3b 100644 --- a/src/mame/drivers/qdrmfgp.cpp +++ b/src/mame/drivers/qdrmfgp.cpp @@ -551,7 +551,7 @@ void qdrmfgp_state::qdrmfgp(machine_config &config) MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp) K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(qdrmfgp_state::qdrmfgp_tile_callback), this); + m_k056832->set_tile_callback(FUNC(qdrmfgp_state::qdrmfgp_tile_callback)); m_k056832->set_config(K056832_BPP_4dj, 1, 0); m_k056832->set_palette(m_palette); @@ -596,7 +596,7 @@ void qdrmfgp_state::qdrmfgp2(machine_config &config) MCFG_VIDEO_START_OVERRIDE(qdrmfgp_state,qdrmfgp2) K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(qdrmfgp_state::qdrmfgp2_tile_callback), this); + m_k056832->set_tile_callback(FUNC(qdrmfgp_state::qdrmfgp2_tile_callback)); m_k056832->set_config(K056832_BPP_4dj, 1, 0); m_k056832->set_palette(m_palette); diff --git a/src/mame/drivers/queen.cpp b/src/mame/drivers/queen.cpp index a6d046fa11a..c5ab9c65244 100644 --- a/src/mame/drivers/queen.cpp +++ b/src/mame/drivers/queen.cpp @@ -290,10 +290,8 @@ void queen_state::queen(machine_config &config) pcat_common(config); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(queen_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(queen_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(queen_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(queen_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(queen_state::intel82439tx_pci_r), FUNC(queen_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(queen_state::intel82371ab_pci_r), FUNC(queen_state::intel82371ab_pci_w)); ide_controller_device &ide(IDE_CONTROLLER(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/quickpick5.cpp b/src/mame/drivers/quickpick5.cpp index 5f551fd27d0..82ec34b6c85 100644 --- a/src/mame/drivers/quickpick5.cpp +++ b/src/mame/drivers/quickpick5.cpp @@ -197,7 +197,7 @@ void quickpick5_state::video_start() m_gfxdecode->set_gfx(gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, memregion("ttl")->base(), 0, m_palette->entries() / 16, 0)); m_ttl_gfx_index = gfx_index; - m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quickpick5_state::ttl_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quickpick5_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_ttl_tilemap->set_transparent_pen(0); m_ttl_tilemap->set_scrollx(80); m_ttl_tilemap->set_scrolly(28); @@ -428,7 +428,7 @@ void quickpick5_state::quickpick5(machine_config &config) K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); m_k053245->set_offsets(-(44+80), 20); - m_k053245->set_sprite_callback(FUNC(quickpick5_state::sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(quickpick5_state::sprite_callback)); GFXDECODE(config, m_gfxdecode, m_palette, gfxdecode_device::empty); diff --git a/src/mame/drivers/quizpun2.cpp b/src/mame/drivers/quizpun2.cpp index 7227d56d725..84dd912350e 100644 --- a/src/mame/drivers/quizpun2.cpp +++ b/src/mame/drivers/quizpun2.cpp @@ -216,8 +216,8 @@ WRITE8_MEMBER(quizpun2_state::scroll_w) void quizpun2_state::video_start() { - m_bg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpun2_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS,16,16,0x20,0x40); - m_fg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpun2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS,16,16,0x20,0x40); + m_bg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpun2_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS,16,16,0x20,0x40); + m_fg_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpun2_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS,16,16,0x20,0x40); m_bg_tmap->set_transparent_pen(0); m_fg_tmap->set_transparent_pen(0); diff --git a/src/mame/drivers/quizshow.cpp b/src/mame/drivers/quizshow.cpp index ca56abe0d43..334ff573035 100644 --- a/src/mame/drivers/quizshow.cpp +++ b/src/mame/drivers/quizshow.cpp @@ -129,7 +129,7 @@ TILE_GET_INFO_MEMBER(quizshow_state::get_tile_info) void quizshow_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizshow_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 16, 32, 16); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizshow_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 16, 32, 16); } uint32_t quizshow_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/qvt102.cpp b/src/mame/drivers/qvt102.cpp index 56644e3c5e7..833450d2996 100644 --- a/src/mame/drivers/qvt102.cpp +++ b/src/mame/drivers/qvt102.cpp @@ -630,7 +630,7 @@ void qvt102_state::qvt102(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(9); - m_crtc->set_update_row_callback(FUNC(qvt102_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(qvt102_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(qvt102_state::vsync_w)); ACIA6850(config, m_acia, 0); diff --git a/src/mame/drivers/qvt190.cpp b/src/mame/drivers/qvt190.cpp index dff45aa5ece..0e4778308e0 100644 --- a/src/mame/drivers/qvt190.cpp +++ b/src/mame/drivers/qvt190.cpp @@ -135,7 +135,7 @@ void qvt190_state::qvt190(machine_config &config) mc6845_device &crtc(MC6845(config, "crtc", 16.6698_MHz_XTAL / 9)); crtc.set_screen("screen"); crtc.set_char_width(9); - crtc.set_update_row_callback(FUNC(qvt190_state::update_row), this); + crtc.set_update_row_callback(FUNC(qvt190_state::update_row)); } ROM_START( qvt190 ) diff --git a/src/mame/drivers/qx10.cpp b/src/mame/drivers/qx10.cpp index 3d660ecf7b8..13e91067742 100644 --- a/src/mame/drivers/qx10.cpp +++ b/src/mame/drivers/qx10.cpp @@ -827,7 +827,7 @@ void qx10_state::qx10(machine_config &config) // software lists SOFTWARE_LIST(config, "flop_list").set_original("qx10_flop"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(qx10_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(qx10_state::quickload_cb)); } /* ROM definition */ diff --git a/src/mame/drivers/r2dtank.cpp b/src/mame/drivers/r2dtank.cpp index f0804a1f499..8860359a3fb 100644 --- a/src/mame/drivers/r2dtank.cpp +++ b/src/mame/drivers/r2dtank.cpp @@ -466,7 +466,7 @@ void r2dtank_state::r2dtank(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(r2dtank_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(r2dtank_state::crtc_update_row)); crtc.out_de_callback().set("74123", FUNC(ttl74123_device::a_w)); /* 74LS123 */ diff --git a/src/mame/drivers/r2dx_v33.cpp b/src/mame/drivers/r2dx_v33.cpp index a70701efad0..d1ec01a7755 100644 --- a/src/mame/drivers/r2dx_v33.cpp +++ b/src/mame/drivers/r2dx_v33.cpp @@ -483,9 +483,9 @@ void r2dx_v33_state::nzeroteam_base_map(address_map &map) // map(0x00762, 0x00763).r(FUNC(r2dx_v33_state::nzerotea_unknown_r)); - map(0x00780, 0x0079f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x00780, 0x0079f).lrw8( + NAME([this] (offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this] (offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x00800, 0x00fff).ram(); map(0x01000, 0x0bfff).ram(); diff --git a/src/mame/drivers/rabbit.cpp b/src/mame/drivers/rabbit.cpp index ab112f18b34..2f7f1731633 100644 --- a/src/mame/drivers/rabbit.cpp +++ b/src/mame/drivers/rabbit.cpp @@ -426,10 +426,10 @@ void rabbit_state::video_start() m_tilemap_ram[2] = make_unique_clear<uint32_t[]>(0x20000/4); m_tilemap_ram[3] = make_unique_clear<uint32_t[]>(0x20000/4); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap0_tile_info),this),TILEMAP_SCAN_ROWS,16, 16, 128,32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap1_tile_info),this),TILEMAP_SCAN_ROWS,16, 16, 128,32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap2_tile_info),this),TILEMAP_SCAN_ROWS,16, 16, 128,32); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rabbit_state::get_tilemap3_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 128,32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rabbit_state::get_tilemap0_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rabbit_state::get_tilemap1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rabbit_state::get_tilemap2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 32); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rabbit_state::get_tilemap3_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); /* the tilemaps mix 4bpp and 8bbp tiles, we split these into 2 groups, and set a different transpen for each group */ m_tilemap[0]->map_pen_to_layer(0, 15, TILEMAP_PIXEL_TRANSPARENT); diff --git a/src/mame/drivers/radio86.cpp b/src/mame/drivers/radio86.cpp index bd67ef4d0a7..6203769d5ab 100644 --- a/src/mame/drivers/radio86.cpp +++ b/src/mame/drivers/radio86.cpp @@ -476,7 +476,7 @@ void radio86_state::radio86(machine_config &config) i8275_device &crtc(I8275(config, "i8275", XTAL(16'000'000) / 12)); crtc.set_character_width(6); - crtc.set_display_callback(FUNC(radio86_state::display_pixels), this); + crtc.set_display_callback(FUNC(radio86_state::display_pixels)); crtc.drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w)); /* video hardware */ diff --git a/src/mame/drivers/raiden2.cpp b/src/mame/drivers/raiden2.cpp index 7ce33e9323f..8e53b82694c 100644 --- a/src/mame/drivers/raiden2.cpp +++ b/src/mame/drivers/raiden2.cpp @@ -585,9 +585,9 @@ void raiden2_state::raiden2_mem(address_map &map) map(0x0068e, 0x0068f).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); - map(0x00700, 0x0071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x00700, 0x0071f).lrw8( + NAME([this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x00740, 0x00741).portr("DSW"); map(0x00744, 0x00745).portr("P1_P2"); @@ -630,9 +630,9 @@ void raiden2_state::zeroteam_mem(address_map &map) map(0x0068e, 0x0068f).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); - map(0x00700, 0x0071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x00700, 0x0071f).lrw8( + NAME([this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x00740, 0x00741).portr("DSW"); map(0x00744, 0x00745).portr("P1_P2"); @@ -664,9 +664,9 @@ void raiden2_state::xsedae_mem(address_map &map) map(0x0068e, 0x0068f).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); - map(0x00700, 0x0071f).lrw8("seibu_sound_rw", - [this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }, - [this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); }).umask16(0x00ff); + map(0x00700, 0x0071f).lrw8( + NAME([this](offs_t offset) { return m_seibu_sound->main_r(offset >> 1); }), + NAME([this](offs_t offset, u8 data) { m_seibu_sound->main_w(offset >> 1, data); })).umask16(0x00ff); map(0x00740, 0x00741).portr("DSW"); map(0x00744, 0x00745).portr("P1_P2"); diff --git a/src/mame/drivers/rainbow.cpp b/src/mame/drivers/rainbow.cpp index 12004e771ba..627e08732ba 100644 --- a/src/mame/drivers/rainbow.cpp +++ b/src/mame/drivers/rainbow.cpp @@ -1164,8 +1164,8 @@ void rainbow_state::machine_reset() #ifdef RTC_ENABLED // *********************************** / DS1315 'PHANTOM CLOCK' IMPLEMENTATION FOR 'DEC-100-A' *************************************** - program.install_read_handler(RTC_BASE, RTC_BASE, read8_delegate(FUNC(rainbow_state::rtc_r), this)); - program.install_write_handler(RTC_BASE + 0xFE, RTC_BASE + 0xFF, write8_delegate(FUNC(rainbow_state::rtc_w), this)); + program.install_read_handler(RTC_BASE, RTC_BASE, read8_delegate(*this, FUNC(rainbow_state::rtc_r))); + program.install_write_handler(RTC_BASE + 0xFE, RTC_BASE + 0xFF, write8_delegate(*this, FUNC(rainbow_state::rtc_w))); // *********************************** / DS1315 'PHANTOM CLOCK' IMPLEMENTATION FOR 'DEC-100-A' *************************************** #endif @@ -1183,7 +1183,7 @@ void rainbow_state::machine_reset() #ifdef RTC_ENABLED // *********************************** / DS1315 'PHANTOM CLOCK' IMPLEMENTATION FOR 'DEC-100-B' *************************************** // No address space needed ( -> IRQs must be disabled to block ROM accesses during reads ). - program.install_read_handler(RTC_BASE, RTC_BASE + 0x2104, read8_delegate(FUNC(rainbow_state::rtc_r), this)); + program.install_read_handler(RTC_BASE, RTC_BASE + 0x2104, read8_delegate(*this, FUNC(rainbow_state::rtc_r))); // *********************************** / DS1315 'PHANTOM CLOCK' IMPLEMENTATION FOR 'DEC-100-B' *************************************** #endif #endif @@ -1206,8 +1206,8 @@ void rainbow_state::machine_reset() { // Install 8088 read / write handler io.unmap_readwrite(0x60, 0x60); - io.install_read_handler(0x60, 0x60, read8_delegate(FUNC(rainbow_state::hd_status_60_r), this)); - io.install_write_handler(0x60, 0x60, write8_delegate(FUNC(rainbow_state::hd_status_60_w), this)); + io.install_read_handler(0x60, 0x60, read8_delegate(*this, FUNC(rainbow_state::hd_status_60_r))); + io.install_write_handler(0x60, 0x60, write8_delegate(*this, FUNC(rainbow_state::hd_status_60_w))); hdc_reset(); m_hdc_drive_ready = true; @@ -2756,7 +2756,7 @@ WRITE8_MEMBER(rainbow_state::diagnostic_w) // 8088 (port 0A WRITTEN). Fig.4-28 + // Install 8088 read / write handler once loopback test is over if ( !(data & 32) && (m_diagnostic & 32) ) { - io.install_readwrite_handler(0x40, 0x43, read8sm_delegate(FUNC(upd7201_new_device::cd_ba_r), &*m_mpsc), write8sm_delegate(FUNC(upd7201_new_device::cd_ba_w), &*m_mpsc)); + io.install_readwrite_handler(0x40, 0x43, read8sm_delegate(*m_mpsc, FUNC(upd7201_new_device::cd_ba_r)), write8sm_delegate(*m_mpsc, FUNC(upd7201_new_device::cd_ba_w))); logerror("\n **** COMM HANDLER INSTALLED **** "); //popmessage("Autoboot from drive %c", m_p_nvram[0xab] ? (64 + m_p_nvram[0xab]) : 0x3F ); } diff --git a/src/mame/drivers/rastan.cpp b/src/mame/drivers/rastan.cpp index dc9d741188c..355e9235aec 100644 --- a/src/mame/drivers/rastan.cpp +++ b/src/mame/drivers/rastan.cpp @@ -370,7 +370,7 @@ void rastan_state::rastan(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_palette("palette"); - m_pc090oj->set_colpri_callback(FUNC(rastan_state::rastan_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(rastan_state::rastan_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/rastersp.cpp b/src/mame/drivers/rastersp.cpp index 6e4fd1fd0ab..5cafb2b16ef 100644 --- a/src/mame/drivers/rastersp.cpp +++ b/src/mame/drivers/rastersp.cpp @@ -186,8 +186,8 @@ void rastersp_state::machine_start() m_tms_tx_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(rastersp_state::tms_tx_timer), this)); #if USE_SPEEDUP_HACK - m_dsp->space(AS_PROGRAM).install_read_handler(0x809923, 0x809923, read32_delegate(FUNC(rastersp_state::dsp_speedup_r), this)); - m_dsp->space(AS_PROGRAM).install_write_handler(0x809923, 0x809923, write32_delegate(FUNC(rastersp_state::dsp_speedup_w), this)); + m_dsp->space(AS_PROGRAM).install_read_handler(0x809923, 0x809923, read32_delegate(*this, FUNC(rastersp_state::dsp_speedup_r))); + m_dsp->space(AS_PROGRAM).install_write_handler(0x809923, 0x809923, write32_delegate(*this, FUNC(rastersp_state::dsp_speedup_w))); #endif } diff --git a/src/mame/drivers/ravens.cpp b/src/mame/drivers/ravens.cpp index 5bd97c2a571..35ee278499e 100644 --- a/src/mame/drivers/ravens.cpp +++ b/src/mame/drivers/ravens.cpp @@ -350,7 +350,7 @@ void ravens_state::ravens(machine_config &config) config.set_default_layout(layout_ravens); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(ravens_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(ravens_state::quickload_cb)); SPEAKER(config, "mono").front_center(); @@ -375,7 +375,7 @@ void ravens_state::ravens2(machine_config &config) m_terminal->set_keyboard_callback(FUNC(ravens_state::kbd_put)); /* quickload */ - QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(ravens_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm", attotime::from_seconds(1)).set_load_callback(FUNC(ravens_state::quickload_cb)); SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/rbisland.cpp b/src/mame/drivers/rbisland.cpp index c4827687fb9..7a2610b476a 100644 --- a/src/mame/drivers/rbisland.cpp +++ b/src/mame/drivers/rbisland.cpp @@ -668,7 +668,7 @@ void rbisland_state::rbisland(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_palette(m_palette); - m_pc090oj->set_colpri_callback(FUNC(rbisland_state::rbisland_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(rbisland_state::rbisland_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/rc702.cpp b/src/mame/drivers/rc702.cpp index 65f9ea41210..26a62d7bf71 100644 --- a/src/mame/drivers/rc702.cpp +++ b/src/mame/drivers/rc702.cpp @@ -121,7 +121,7 @@ void rc702_state::rc702_io(address_map &map) map(0x0c, 0x0f).rw(m_ctc1, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); map(0x10, 0x13).rw(m_pio, FUNC(z80pio_device::read), FUNC(z80pio_device::write)); map(0x14, 0x17).portr("DSW").w(FUNC(rc702_state::port14_w)); // motors - map(0x18, 0x1b).lw8("banking",[this](u8 data){membank("bankr0")->set_entry(1);}); // replace roms with ram + map(0x18, 0x1b).lw8(NAME([this] (u8 data) { membank("bankr0")->set_entry(1); })); // replace roms with ram map(0x1c, 0x1f).w(FUNC(rc702_state::port1c_w)); // sound map(0xf0, 0xff).rw(m_dma, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); } @@ -387,7 +387,7 @@ void rc702_state::rc702(machine_config &config) i8275_device &crtc(I8275(config, "crtc", 11640000/7)); crtc.set_character_width(7); - crtc.set_display_callback(FUNC(rc702_state::display_pixels), this); + crtc.set_display_callback(FUNC(rc702_state::display_pixels)); crtc.irq_wr_callback().set(m_7474, FUNC(ttl7474_device::clear_w)).invert(); crtc.irq_wr_callback().append(m_ctc1, FUNC(z80ctc_device::trg2)); crtc.drq_wr_callback().set(FUNC(rc702_state::crtc_drq_w)); diff --git a/src/mame/drivers/rd100.cpp b/src/mame/drivers/rd100.cpp index c9ece638430..d5d83d4dd05 100644 --- a/src/mame/drivers/rd100.cpp +++ b/src/mame/drivers/rd100.cpp @@ -219,7 +219,7 @@ void rd100_state::rd100(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780")); hd44780.set_lcd_size(2, 16); - hd44780.set_pixel_update_cb(FUNC(rd100_state::pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(rd100_state::pixel_update)); PALETTE(config, "palette").set_entries(2); diff --git a/src/mame/drivers/rex6000.cpp b/src/mame/drivers/rex6000.cpp index 1a0eb1f5a8e..d79a7350650 100644 --- a/src/mame/drivers/rex6000.cpp +++ b/src/mame/drivers/rex6000.cpp @@ -935,7 +935,7 @@ void rex6000_state::rex6000(machine_config &config) serport.cts_handler().set(m_uart, FUNC(ins8250_uart_device::cts_w)); /* quickload */ - QUICKLOAD(config, "quickload", "rex,ds2").set_load_callback(FUNC(rex6000_state::quickload_rex6000), this); + QUICKLOAD(config, "quickload", "rex,ds2").set_load_callback(FUNC(rex6000_state::quickload_rex6000)); tc8521_device &rtc(TC8521(config, TC8521_TAG, XTAL(32'768))); rtc.out_alarm_callback().set(FUNC(rex6000_state::alarm_irq)); @@ -999,7 +999,7 @@ void oz750_state::oz750(machine_config &config) ADDRESS_MAP_BANK(config, "bank1").set_map(&oz750_state::oz750_banked_map).set_options(ENDIANNESS_LITTLE, 8, 32, 0x2000); /* quickload */ - QUICKLOAD(config, "quickload", "wzd").set_load_callback(FUNC(oz750_state::quickload_oz750), this); + QUICKLOAD(config, "quickload", "wzd").set_load_callback(FUNC(oz750_state::quickload_oz750)); tc8521_device &rtc(TC8521(config, TC8521_TAG, XTAL(32'768))); rtc.out_alarm_callback().set(FUNC(rex6000_state::alarm_irq)); diff --git a/src/mame/drivers/rmhaihai.cpp b/src/mame/drivers/rmhaihai.cpp index 46558a70a50..7d3a612bc7b 100644 --- a/src/mame/drivers/rmhaihai.cpp +++ b/src/mame/drivers/rmhaihai.cpp @@ -132,7 +132,7 @@ TILE_GET_INFO_MEMBER(rmhaihai_state::get_bg_tile_info) void rmhaihai_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rmhaihai_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rmhaihai_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); save_item(NAME(m_keyboard_cmd)); diff --git a/src/mame/drivers/rockrage.cpp b/src/mame/drivers/rockrage.cpp index 4d28a96862c..362ac8cc2df 100644 --- a/src/mame/drivers/rockrage.cpp +++ b/src/mame/drivers/rockrage.cpp @@ -271,12 +271,12 @@ void rockrage_state::rockrage(machine_config &config) K007342(config, m_k007342, 0); m_k007342->set_gfxnum(0); - m_k007342->set_tile_callback(FUNC(rockrage_state::rockrage_tile_callback), this); + m_k007342->set_tile_callback(FUNC(rockrage_state::rockrage_tile_callback)); m_k007342->set_gfxdecode_tag(m_gfxdecode); K007420(config, m_k007420, 0); m_k007420->set_bank_limit(0x3ff); - m_k007420->set_sprite_callback(FUNC(rockrage_state::rockrage_sprite_callback), this); + m_k007420->set_sprite_callback(FUNC(rockrage_state::rockrage_sprite_callback)); m_k007420->set_palette_tag(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_rockrage); diff --git a/src/mame/drivers/rohga.cpp b/src/mame/drivers/rohga.cpp index 6f3b582d725..937919ba648 100644 --- a/src/mame/drivers/rohga.cpp +++ b/src/mame/drivers/rohga.cpp @@ -899,8 +899,8 @@ void rohga_state::rohga(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -914,15 +914,15 @@ void rohga_state::rohga(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x10); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen[0], 0); - m_sprgen[0]->set_pri_callback(FUNC(rohga_state::rohga_pri_callback), this); - m_sprgen[0]->set_col_callback(FUNC(rohga_state::rohga_col_callback), this); + m_sprgen[0]->set_pri_callback(FUNC(rohga_state::rohga_pri_callback)); + m_sprgen[0]->set_col_callback(FUNC(rohga_state::rohga_col_callback)); m_sprgen[0]->set_gfx_region(3); m_sprgen[0]->set_gfxdecode_tag("gfxdecode"); @@ -989,8 +989,8 @@ void rohga_state::wizdfire(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -1004,8 +1004,8 @@ void rohga_state::wizdfire(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x10); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); @@ -1084,8 +1084,8 @@ void rohga_state::nitrobal(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -1099,8 +1099,8 @@ void rohga_state::nitrobal(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0); m_deco_tilegen[1]->set_pf1_col_mask(0); m_deco_tilegen[1]->set_pf2_col_mask(0); - m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); @@ -1180,8 +1180,8 @@ void rohga_state::schmeisr(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x10); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag("gfxdecode"); @@ -1195,15 +1195,15 @@ void rohga_state::schmeisr(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x10); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(rohga_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(rohga_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(0); m_deco_tilegen[1]->set_pf12_16x16_bank(2); m_deco_tilegen[1]->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen[0], 0); - m_sprgen[0]->set_pri_callback(FUNC(rohga_state::rohga_pri_callback), this); - m_sprgen[0]->set_col_callback(FUNC(rohga_state::schmeisr_col_callback), this); // wire mods on pcb... + m_sprgen[0]->set_pri_callback(FUNC(rohga_state::rohga_pri_callback)); + m_sprgen[0]->set_col_callback(FUNC(rohga_state::schmeisr_col_callback)); // wire mods on pcb... m_sprgen[0]->set_gfx_region(3); m_sprgen[0]->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/rollerg.cpp b/src/mame/drivers/rollerg.cpp index b6aefa297eb..1c60e6bb5ea 100644 --- a/src/mame/drivers/rollerg.cpp +++ b/src/mame/drivers/rollerg.cpp @@ -270,12 +270,12 @@ void rollerg_state::rollerg(machine_config &config) K053244(config, m_k053244, 0); m_k053244->set_palette("palette"); m_k053244->set_offsets(-3, -1); - m_k053244->set_sprite_callback(FUNC(rollerg_state::sprite_callback), this); + m_k053244->set_sprite_callback(FUNC(rollerg_state::sprite_callback)); K051316(config, m_k051316, 0); m_k051316->set_palette("palette"); m_k051316->set_offsets(22, 1); - m_k051316->set_zoom_callback(FUNC(rollerg_state::zoom_callback), this); + m_k051316->set_zoom_callback(FUNC(rollerg_state::zoom_callback)); K053252(config, m_k053252, 3000000*2); m_k053252->int1_ack().set(FUNC(rollerg_state::rollerg_irq_ack_w)); diff --git a/src/mame/drivers/rollext.cpp b/src/mame/drivers/rollext.cpp index 8a5af16a441..ae604a52d6e 100644 --- a/src/mame/drivers/rollext.cpp +++ b/src/mame/drivers/rollext.cpp @@ -572,7 +572,7 @@ INTERRUPT_GEN_MEMBER(rollext_state::vblank_interrupt) void rollext_state::init_rollext() { - m_maincpu->set_command_callback(write32_delegate(FUNC(rollext_state::cmd_callback),this)); + m_maincpu->set_command_callback(*this, FUNC(rollext_state::cmd_callback)); } diff --git a/src/mame/drivers/ron.cpp b/src/mame/drivers/ron.cpp index 7b8a5294888..f1a012750bb 100644 --- a/src/mame/drivers/ron.cpp +++ b/src/mame/drivers/ron.cpp @@ -496,7 +496,7 @@ void ron_state::ron(machine_config &config) I8035(config, m_audiocpu, SOUND_CLOCK); m_audiocpu->set_addrmap(AS_PROGRAM, &ron_state::ron_audio_map); m_audiocpu->set_addrmap(AS_IO, &ron_state::ron_audio_io); - m_audiocpu->set_t0_clk_cb("aysnd", FUNC(device_t::set_unscaled_clock)); + m_audiocpu->set_t0_clk_cb("aysnd", FUNC(device_t::set_unscaled_clock_int)); m_audiocpu->p2_in_cb().set(FUNC(ron_state::audio_cmd_r)); m_audiocpu->p1_out_cb().set(FUNC(ron_state::audio_p1_w)); m_audiocpu->p2_out_cb().set(FUNC(ron_state::audio_p2_w)); diff --git a/src/mame/drivers/rt1715.cpp b/src/mame/drivers/rt1715.cpp index 26c2257ff58..fef76862797 100644 --- a/src/mame/drivers/rt1715.cpp +++ b/src/mame/drivers/rt1715.cpp @@ -602,7 +602,7 @@ void rt1715_state::rt1715(machine_config &config) I8275(config, m_crtc, 13.824_MHz_XTAL / 8); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(rt1715_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(rt1715_state::crtc_display_pixels)); m_crtc->set_screen(m_screen); /* keyboard */ diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp index 525bea32edf..fc07c720cb7 100644 --- a/src/mame/drivers/rungun.cpp +++ b/src/mame/drivers/rungun.cpp @@ -422,7 +422,7 @@ void rungun_state::rng(machine_config &config) m_k053936->set_offsets(34, 9); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(rungun_state::sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(rungun_state::sprite_callback)); m_k055673->set_config(K055673_LAYOUT_RNG, -8, -15); m_k055673->set_palette(m_palette); m_k055673->set_screen(m_screen); diff --git a/src/mame/drivers/rx78.cpp b/src/mame/drivers/rx78.cpp index 51c433cab2c..fc65fe855e0 100644 --- a/src/mame/drivers/rx78.cpp +++ b/src/mame/drivers/rx78.cpp @@ -431,7 +431,7 @@ void rx78_state::machine_reset() { address_space &prg = m_maincpu->space(AS_PROGRAM); if (m_cart->exists()) - prg.install_read_handler(0x2000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + prg.install_read_handler(0x2000, 0x5fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } DEVICE_IMAGE_LOAD_MEMBER( rx78_state::cart_load ) @@ -491,7 +491,7 @@ void rx78_state::rx78(machine_config &config) PALETTE(config, m_palette).set_entries(16+1); //+1 for the background color GFXDECODE(config, "gfxdecode", m_palette, gfx_rx78); - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "rx78_cart", "bin,rom").set_device_load(FUNC(rx78_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "rx78_cart", "bin,rom").set_device_load(FUNC(rx78_state::cart_load)); RAM(config, RAM_TAG).set_default_size("32K").set_extra_options("16K"); diff --git a/src/mame/drivers/rz1.cpp b/src/mame/drivers/rz1.cpp index 6b92833fb52..7dc22f683ba 100644 --- a/src/mame/drivers/rz1.cpp +++ b/src/mame/drivers/rz1.cpp @@ -369,7 +369,7 @@ void rz1_state::rz1(machine_config &config) HD44780(config, m_hd44780, 0); m_hd44780->set_lcd_size(1, 16); - m_hd44780->set_pixel_update_cb(FUNC(rz1_state::lcd_pixel_update), this); + m_hd44780->set_pixel_update_cb(FUNC(rz1_state::lcd_pixel_update)); config.set_default_layout(layout_rz1); diff --git a/src/mame/drivers/safarir.cpp b/src/mame/drivers/safarir.cpp index f7c6b9c0904..4d3a199fa41 100644 --- a/src/mame/drivers/safarir.cpp +++ b/src/mame/drivers/safarir.cpp @@ -207,8 +207,8 @@ TILE_GET_INFO_MEMBER(safarir_state::get_fg_tile_info) void safarir_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(safarir_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(safarir_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(*this, FUNC(safarir_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(safarir_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index 3b703af5967..358d7fc1d3d 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -387,7 +387,7 @@ void sage2_state::machine_reset() address_space &program = m_maincpu->space(AS_PROGRAM); program.unmap_readwrite(0x000000, 0x07ffff); program.install_rom(0x000000, 0x001fff, 0x07e000, m_rom->base()); - program.install_read_handler(0xfe0000, 0xfe3fff, read16_delegate(FUNC(sage2_state::rom_r), this)); + program.install_read_handler(0xfe0000, 0xfe3fff, read16_delegate(*this, FUNC(sage2_state::rom_r))); } READ16_MEMBER(sage2_state::rom_r) diff --git a/src/mame/drivers/saitek_corona.cpp b/src/mame/drivers/saitek_corona.cpp index 6eea4fdba10..48fd6bbdb3a 100644 --- a/src/mame/drivers/saitek_corona.cpp +++ b/src/mame/drivers/saitek_corona.cpp @@ -293,7 +293,7 @@ void corona_state::corona(machine_config &config) /* extension rom */ GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr", "bin"); - m_extrom->set_device_load(FUNC(corona_state::extrom_load), this); + m_extrom->set_device_load(FUNC(corona_state::extrom_load)); SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr"); } diff --git a/src/mame/drivers/saitek_stratos.cpp b/src/mame/drivers/saitek_stratos.cpp index 786b4482183..e0f757e3292 100644 --- a/src/mame/drivers/saitek_stratos.cpp +++ b/src/mame/drivers/saitek_stratos.cpp @@ -513,7 +513,7 @@ void stratos_state::stratos(machine_config &config) /* extension rom */ GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_egr", "bin"); - m_extrom->set_device_load(FUNC(stratos_state::extrom_load), this); + m_extrom->set_device_load(FUNC(stratos_state::extrom_load)); SOFTWARE_LIST(config, "cart_list").set_original("saitek_egr"); } diff --git a/src/mame/drivers/saitek_superstar.cpp b/src/mame/drivers/saitek_superstar.cpp index 491b2bee8f0..29921bbfad7 100644 --- a/src/mame/drivers/saitek_superstar.cpp +++ b/src/mame/drivers/saitek_superstar.cpp @@ -243,7 +243,7 @@ void star_state::tstar432(machine_config &config) /* extension rom */ GENERIC_CARTSLOT(config, m_extrom, generic_plain_slot, "saitek_kso", "bin"); - m_extrom->set_device_load(FUNC(star_state::extrom_load), this); + m_extrom->set_device_load(FUNC(star_state::extrom_load)); SOFTWARE_LIST(config, "cart_list").set_original("saitek_kso"); } diff --git a/src/mame/drivers/sangho.cpp b/src/mame/drivers/sangho.cpp index 91c55bbcd8a..705ecf3c02e 100644 --- a/src/mame/drivers/sangho.cpp +++ b/src/mame/drivers/sangho.cpp @@ -221,7 +221,7 @@ void pzlestar_state::pzlestar_map_banks() break; } - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xffff, 0xffff, read8_delegate(FUNC(pzlestar_state::sec_slot_r),this), write8_delegate(FUNC(pzlestar_state::sec_slot_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xffff, 0xffff, read8_delegate(*this, FUNC(pzlestar_state::sec_slot_r)), write8_delegate(*this, FUNC(pzlestar_state::sec_slot_w))); } WRITE8_MEMBER(pzlestar_state::pzlestar_bank_w) diff --git a/src/mame/drivers/sanremo.cpp b/src/mame/drivers/sanremo.cpp index 9f5cd7f919d..91c46478352 100644 --- a/src/mame/drivers/sanremo.cpp +++ b/src/mame/drivers/sanremo.cpp @@ -169,7 +169,7 @@ TILE_GET_INFO_MEMBER(sanremo_state::get_tile_info) void sanremo_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanremo_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 48, 40); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanremo_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 48, 40); m_lamps.resolve(); diff --git a/src/mame/drivers/sapi1.cpp b/src/mame/drivers/sapi1.cpp index 67865dabc03..b1cd1733f1f 100644 --- a/src/mame/drivers/sapi1.cpp +++ b/src/mame/drivers/sapi1.cpp @@ -846,7 +846,7 @@ void sapi_state::sapi3b(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(6); - crtc.set_update_row_callback(FUNC(sapi_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(sapi_state::crtc_update_row)); subdevice<screen_device>("screen")->set_screen_update("crtc", FUNC(mc6845_device::screen_update)); subdevice<screen_device>("screen")->set_no_palette(); diff --git a/src/mame/drivers/saturn.cpp b/src/mame/drivers/saturn.cpp index e6f6cf5209f..b81750ea784 100644 --- a/src/mame/drivers/saturn.cpp +++ b/src/mame/drivers/saturn.cpp @@ -606,8 +606,8 @@ void sat_console_state::nvram_init(nvram_device &nvram, void *data, size_t size) MACHINE_START_MEMBER(sat_console_state, saturn) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(FUNC(sat_console_state::saturn_null_ram_r),this), write32_delegate(FUNC(sat_console_state::saturn_null_ram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(*this, FUNC(sat_console_state::saturn_null_ram_r)), write32_delegate(*this, FUNC(sat_console_state::saturn_null_ram_w))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x02400000, 0x027fffff, read32_delegate(*this, FUNC(sat_console_state::saturn_null_ram_r)), write32_delegate(*this, FUNC(sat_console_state::saturn_null_ram_w))); m_maincpu->space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff); m_slave->space(AS_PROGRAM).nop_readwrite(0x04000000, 0x047fffff); @@ -622,39 +622,39 @@ MACHINE_START_MEMBER(sat_console_state, saturn) case 0x22: case 0x23: case 0x24: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_bram), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_bram), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_bram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_bram))); + m_slave->space(AS_PROGRAM).install_read_handler(0x04000000, 0x047fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_bram))); + m_slave->space(AS_PROGRAM).install_write_handler(0x04000000, 0x047fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_bram))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_bram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_bram))); + m_slave->space(AS_PROGRAM).install_read_handler(0x24000000, 0x247fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_bram))); + m_slave->space(AS_PROGRAM).install_write_handler(0x24000000, 0x247fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_bram))); break; case 0x5a: // Data RAM cart case 0x5c: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram0), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(FUNC(sat_cart_slot_device::read_ext_dram1), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(FUNC(sat_cart_slot_device::write_ext_dram1), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram0))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram0))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram1))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram1))); + m_slave->space(AS_PROGRAM).install_read_handler(0x02400000, 0x025fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram0))); + m_slave->space(AS_PROGRAM).install_write_handler(0x02400000, 0x025fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram0))); + m_slave->space(AS_PROGRAM).install_read_handler(0x02600000, 0x027fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram1))); + m_slave->space(AS_PROGRAM).install_write_handler(0x02600000, 0x027fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram1))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram0))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram0))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram1))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram1))); + m_slave->space(AS_PROGRAM).install_read_handler(0x22400000, 0x225fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram0))); + m_slave->space(AS_PROGRAM).install_write_handler(0x22400000, 0x225fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram0))); + m_slave->space(AS_PROGRAM).install_read_handler(0x22600000, 0x227fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_ext_dram1))); + m_slave->space(AS_PROGRAM).install_write_handler(0x22600000, 0x227fffff, write32_delegate(*m_exp, FUNC(sat_cart_slot_device::write_ext_dram1))); break; case 0xff: // ROM cart + mirror - m_maincpu->space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); - m_slave->space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(FUNC(sat_cart_slot_device::read_rom), (sat_cart_slot_device*)m_exp)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_rom))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_rom))); + m_slave->space(AS_PROGRAM).install_read_handler(0x02000000, 0x023fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_rom))); + m_slave->space(AS_PROGRAM).install_read_handler(0x22000000, 0x223fffff, read32_delegate(*m_exp, FUNC(sat_cart_slot_device::read_rom))); break; } } @@ -666,7 +666,7 @@ MACHINE_START_MEMBER(sat_console_state, saturn) save_item(NAME(m_vdp2.odd)); // TODO: trampoline - m_audiocpu->set_reset_callback(write_line_delegate(FUNC(saturn_state::m68k_reset_callback),this)); + m_audiocpu->set_reset_callback(*this, FUNC(saturn_state::m68k_reset_callback)); } /* Die Hard Trilogy tests RAM address 0x25e7ffe bit 2 with Slave during FRT minit irq, in-development tool for breaking execution of it? */ diff --git a/src/mame/drivers/savquest.cpp b/src/mame/drivers/savquest.cpp index 117eb78457f..1d56f54ad4f 100644 --- a/src/mame/drivers/savquest.cpp +++ b/src/mame/drivers/savquest.cpp @@ -823,12 +823,9 @@ void savquest_state::savquest(machine_config &config) DS12885(config.replace(), "rtc"); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read ( 0, FUNC(savquest_state::intel82439tx_pci_r), this); - pcibus.set_device_write( 0, FUNC(savquest_state::intel82439tx_pci_w), this); - pcibus.set_device_read ( 7, FUNC(savquest_state::intel82371ab_pci_r), this); - pcibus.set_device_write( 7, FUNC(savquest_state::intel82371ab_pci_w), this); - pcibus.set_device_read (13, FUNC(savquest_state::pci_3dfx_r), this); - pcibus.set_device_write(13, FUNC(savquest_state::pci_3dfx_w), this); + pcibus.set_device( 0, FUNC(savquest_state::intel82439tx_pci_r), FUNC(savquest_state::intel82439tx_pci_w)); + pcibus.set_device( 7, FUNC(savquest_state::intel82371ab_pci_r), FUNC(savquest_state::intel82371ab_pci_w)); + pcibus.set_device(13, FUNC(savquest_state::pci_3dfx_r), FUNC(savquest_state::pci_3dfx_w)); ide_controller_32_device &ide(IDE_CONTROLLER_32(config, "ide").options(ata_devices, "hdd", nullptr, true)); ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); diff --git a/src/mame/drivers/sbowling.cpp b/src/mame/drivers/sbowling.cpp index da8e1a3ce06..e6132f6dedb 100644 --- a/src/mame/drivers/sbowling.cpp +++ b/src/mame/drivers/sbowling.cpp @@ -153,7 +153,7 @@ uint32_t sbowling_state::screen_update(screen_device &screen, bitmap_ind16 &bitm void sbowling_state::video_start() { m_tmpbitmap = std::make_unique<bitmap_ind16>(32*8,32*8); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sbowling_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sbowling_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); save_item(NAME(m_bgmap)); save_item(NAME(m_system)); diff --git a/src/mame/drivers/sbrain.cpp b/src/mame/drivers/sbrain.cpp index de2e101d8fc..5196e89e441 100644 --- a/src/mame/drivers/sbrain.cpp +++ b/src/mame/drivers/sbrain.cpp @@ -739,7 +739,7 @@ void sbrain_state::sbrain(machine_config &config) FLOPPY_CONNECTOR(config, "fdc:2", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats).enable_sound(true); FLOPPY_CONNECTOR(config, "fdc:3", sbrain_floppies, nullptr, floppy_image_device::default_floppy_formats).enable_sound(true); - TIMER(config, "timer_a", 0).configure_periodic(timer_device::expired_delegate(FUNC(sbrain_state::kbd_scan), this), attotime::from_hz(15)); + TIMER(config, "timer_a", 0).configure_periodic(FUNC(sbrain_state::kbd_scan), attotime::from_hz(15)); } ROM_START( sbrain ) diff --git a/src/mame/drivers/sbrkout.cpp b/src/mame/drivers/sbrkout.cpp index 164c30ffa42..10866b3b54c 100644 --- a/src/mame/drivers/sbrkout.cpp +++ b/src/mame/drivers/sbrkout.cpp @@ -339,7 +339,7 @@ TILE_GET_INFO_MEMBER(sbrkout_state::get_bg_tile_info) void sbrkout_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sbrkout_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sbrkout_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/scopus.cpp b/src/mame/drivers/scopus.cpp index 3333215decc..535b68766f2 100644 --- a/src/mame/drivers/scopus.cpp +++ b/src/mame/drivers/scopus.cpp @@ -216,7 +216,7 @@ void sagitta180_state::sagitta180(machine_config &config) I8275(config, m_crtc, 12480000 / 8); /* guessed xtal */ m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(sagitta180_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(sagitta180_state::crtc_display_pixels)); m_crtc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq2_w)); m_crtc->irq_wr_callback().set_inputline(m_maincpu, I8085_INTR_LINE); m_crtc->set_screen("screen"); diff --git a/src/mame/drivers/scorpion.cpp b/src/mame/drivers/scorpion.cpp index d88d0f09ca9..b8654309569 100644 --- a/src/mame/drivers/scorpion.cpp +++ b/src/mame/drivers/scorpion.cpp @@ -217,7 +217,7 @@ MACHINE_RESET_MEMBER(scorpion_state,scorpion) m_ram_0000 = nullptr; m_program->install_read_bank(0x0000, 0x3fff, "bank1"); - m_program->install_write_handler(0x0000, 0x3fff, write8_delegate(FUNC(scorpion_state::scorpion_0000_w),this)); + m_program->install_write_handler(0x0000, 0x3fff, write8_delegate(*this, FUNC(scorpion_state::scorpion_0000_w))); m_beta->disable(); diff --git a/src/mame/drivers/seabattl.cpp b/src/mame/drivers/seabattl.cpp index c633cc62da7..8e7153a30d0 100644 --- a/src/mame/drivers/seabattl.cpp +++ b/src/mame/drivers/seabattl.cpp @@ -242,7 +242,7 @@ void seabattl_state::video_start() { m_7segs.resolve(); m_screen->register_screen_bitmap(m_collision_bg); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seabattl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seabattl_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(-12, 0); } diff --git a/src/mame/drivers/sega_beena.cpp b/src/mame/drivers/sega_beena.cpp index 7ad05c481e9..95f8d9253bf 100644 --- a/src/mame/drivers/sega_beena.cpp +++ b/src/mame/drivers/sega_beena.cpp @@ -124,7 +124,7 @@ void sega_beena_state::sega_beena(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "sega_beena_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(sega_beena_state::cart_load), this); + m_cart->set_device_load(FUNC(sega_beena_state::cart_load)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "cart_list").set_original("sega_beena_cart"); diff --git a/src/mame/drivers/segac2.cpp b/src/mame/drivers/segac2.cpp index a194c4d37d0..ce5350b1ec5 100644 --- a/src/mame/drivers/segac2.cpp +++ b/src/mame/drivers/segac2.cpp @@ -105,6 +105,7 @@ public: : md_base_state(mconfig, type, tag) , m_paletteram(*this, "paletteram") , m_upd_region(*this, "upd") + , m_prot_func(*this) , m_upd7759(*this, "upd") , m_screen(*this, "screen") , m_palette(*this, "palette") @@ -2140,7 +2141,7 @@ void segac2_state::segac2_common_init(segac2_prot_delegate prot_func) m_prot_func = prot_func; if (m_upd7759 != nullptr) - m_maincpu->space(AS_PROGRAM).install_write_handler(0x880000, 0x880001, 0, 0x13fefe, 0, write16_delegate(FUNC(segac2_state::segac2_upd7759_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x880000, 0x880001, 0, 0x13fefe, 0, write16_delegate(*this, FUNC(segac2_state::segac2_upd7759_w))); } int segac2_state::prot_func_dummy(int in) @@ -2373,94 +2374,94 @@ int segac2_state::prot_func_pclubjv5(int in) void segac2_state::init_c2boot() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_dummy),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_dummy))); } void segac2_state::init_bloxeedc() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_dummy),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_dummy))); } void segac2_state::init_columns() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_columns),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_columns))); } void segac2_state::init_columns2() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_columns2),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_columns2))); } void segac2_state::init_tfrceac() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_tfrceac),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_tfrceac))); } void segac2_state::init_tfrceacb() { /* disable the palette bank switching from the protection chip */ - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_dummy),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_dummy))); m_maincpu->space(AS_PROGRAM).nop_write(0x800000, 0x800001); } void segac2_state::init_borench() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_borench),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_borench))); } void segac2_state::init_twinsqua() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_twinsqua),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_twinsqua))); } void segac2_state::init_ribbit() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_ribbit),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_ribbit))); } void segac2_state::init_puyo() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_puyo),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_puyo))); } void segac2_state::init_tantr() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_tantr),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_tantr))); } void segac2_state::init_tantrkor() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_tantrkor),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_tantrkor))); } void segac2_state::init_potopoto() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_potopoto),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_potopoto))); } void segac2_state::init_stkclmns() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_stkclmns),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_stkclmns))); } void segac2_state::init_stkclmnj() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_stkclmnj),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_stkclmnj))); } void segac2_state::init_ichir() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_ichir),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_ichir))); } void segac2_state::init_ichirk() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_ichirk),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_ichirk))); } void segac2_state::init_ichirj() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_ichirj),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_ichirj))); } READ16_MEMBER(segac2_state::ichirjbl_prot_r ) @@ -2470,49 +2471,49 @@ READ16_MEMBER(segac2_state::ichirjbl_prot_r ) void segac2_state::init_ichirjbl() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_dummy),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_dummy))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x840108, 0x840109, read16_delegate(FUNC(segac2_state::ichirjbl_prot_r),this) ); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x840108, 0x840109, read16_delegate(*this, FUNC(segac2_state::ichirjbl_prot_r))); } void segac2_state::init_puyopuy2() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_puyopuy2),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_puyopuy2))); } void segac2_state::init_zunkyou() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_zunkyou),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_zunkyou))); } void segac2_state::init_pclub() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x880120, 0x880121, read16_delegate(FUNC(segac2_state::printer_r),this) ); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x880124, 0x880125, read16_delegate(FUNC(segac2_state::printer_r),this) ); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x880124, 0x880125, write16_delegate(FUNC(segac2_state::print_club_camera_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x880120, 0x880121, read16_delegate(*this, FUNC(segac2_state::printer_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x880124, 0x880125, read16_delegate(*this, FUNC(segac2_state::printer_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x880124, 0x880125, write16_delegate(*this, FUNC(segac2_state::print_club_camera_w))); } void segac2_state::init_pclubj() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_pclub),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_pclub))); init_pclub(); } void segac2_state::init_pclubjv2() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_pclubjv2),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_pclubjv2))); init_pclub(); } void segac2_state::init_pclubjv4() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_pclubjv4),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_pclubjv4))); init_pclub(); } void segac2_state::init_pclubjv5() { - segac2_common_init(segac2_prot_delegate(FUNC(segac2_state::prot_func_pclubjv5),this)); + segac2_common_init(segac2_prot_delegate(*this, FUNC(segac2_state::prot_func_pclubjv5))); init_pclub(); } diff --git a/src/mame/drivers/segag80r.cpp b/src/mame/drivers/segag80r.cpp index 0e6a28529d5..2347bc6907f 100644 --- a/src/mame/drivers/segag80r.cpp +++ b/src/mame/drivers/segag80r.cpp @@ -1537,11 +1537,11 @@ void segag80r_state::init_astrob() m_background_pcb = G80_BACKGROUND_NONE; /* install speech board */ - iospace.install_write_handler(0x38, 0x38, write8_delegate(FUNC(speech_sound_device::data_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3b, 0x3b, write8_delegate(FUNC(speech_sound_device::control_w), (speech_sound_device*)m_speech)); + iospace.install_write_handler(0x38, 0x38, write8_delegate(*m_speech, FUNC(speech_sound_device::data_w))); + iospace.install_write_handler(0x3b, 0x3b, write8_delegate(*m_speech, FUNC(speech_sound_device::control_w))); /* install Astro Blaster sound board */ - iospace.install_write_handler(0x3e, 0x3f, write8_delegate(FUNC(segag80r_state::astrob_sound_w),this)); + iospace.install_write_handler(0x3e, 0x3f, write8_delegate(*this, FUNC(segag80r_state::astrob_sound_w))); save_item(NAME(m_sound_state)); save_item(NAME(m_sound_rate)); @@ -1575,14 +1575,14 @@ void segag80r_state::init_spaceod() m_background_pcb = G80_BACKGROUND_SPACEOD; /* configure ports for the background board */ - iospace.install_readwrite_handler(0x08, 0x0f, read8_delegate(FUNC(segag80r_state::spaceod_back_port_r),this), write8_delegate(FUNC(segag80r_state::spaceod_back_port_w),this)); + iospace.install_readwrite_handler(0x08, 0x0f, read8_delegate(*this, FUNC(segag80r_state::spaceod_back_port_r)), write8_delegate(*this, FUNC(segag80r_state::spaceod_back_port_w))); /* install Space Odyssey sound board */ - iospace.install_write_handler(0x0e, 0x0f, write8_delegate(FUNC(segag80r_state::spaceod_sound_w),this)); + iospace.install_write_handler(0x0e, 0x0f, write8_delegate(*this, FUNC(segag80r_state::spaceod_sound_w))); /* install our wacky mangled ports */ - iospace.install_read_handler(0xf8, 0xfb, read8_delegate(FUNC(segag80r_state::spaceod_mangled_ports_r),this)); - iospace.install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(segag80r_state::spaceod_port_fc_r),this)); + iospace.install_read_handler(0xf8, 0xfb, read8_delegate(*this, FUNC(segag80r_state::spaceod_mangled_ports_r))); + iospace.install_read_handler(0xfc, 0xfc, read8_delegate(*this, FUNC(segag80r_state::spaceod_port_fc_r))); save_item(NAME(m_sound_state)); } @@ -1601,8 +1601,8 @@ void segag80r_state::init_monsterb() monsterb_expand_gfx("gfx1"); /* install background board handlers */ - iospace.install_write_handler(0xb8, 0xbd, write8_delegate(FUNC(segag80r_state::monsterb_back_port_w),this)); - pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(FUNC(segag80r_state::monsterb_vidram_w),this)); + iospace.install_write_handler(0xb8, 0xbd, write8_delegate(*this, FUNC(segag80r_state::monsterb_back_port_w))); + pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(*this, FUNC(segag80r_state::monsterb_vidram_w))); save_item(NAME(m_sound_state)); save_item(NAME(m_sound_addr)); @@ -1622,9 +1622,9 @@ void segag80r_state::init_monster2() monsterb_expand_gfx("gfx1"); /* install background board handlers */ - iospace.install_write_handler(0xb4, 0xb5, write8_delegate(FUNC(segag80r_state::pignewt_back_color_w),this)); - iospace.install_write_handler(0xb8, 0xbd, write8_delegate(FUNC(segag80r_state::pignewt_back_port_w),this)); - pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(FUNC(segag80r_state::pignewt_vidram_w),this)); + iospace.install_write_handler(0xb4, 0xb5, write8_delegate(*this, FUNC(segag80r_state::pignewt_back_color_w))); + iospace.install_write_handler(0xb8, 0xbd, write8_delegate(*this, FUNC(segag80r_state::pignewt_back_port_w))); + pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(*this, FUNC(segag80r_state::pignewt_vidram_w))); save_item(NAME(m_sound_state)); save_item(NAME(m_sound_addr)); @@ -1644,14 +1644,14 @@ void segag80r_state::init_pignewt() monsterb_expand_gfx("gfx1"); /* install background board handlers */ - iospace.install_write_handler(0xb4, 0xb5, write8_delegate(FUNC(segag80r_state::pignewt_back_color_w),this)); - iospace.install_write_handler(0xb8, 0xbd, write8_delegate(FUNC(segag80r_state::pignewt_back_port_w),this)); - pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(FUNC(segag80r_state::pignewt_vidram_w),this)); + iospace.install_write_handler(0xb4, 0xb5, write8_delegate(*this, FUNC(segag80r_state::pignewt_back_color_w))); + iospace.install_write_handler(0xb8, 0xbd, write8_delegate(*this, FUNC(segag80r_state::pignewt_back_port_w))); + pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(*this, FUNC(segag80r_state::pignewt_vidram_w))); /* install Universal sound board */ - iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(FUNC(usb_sound_device::status_r), (usb_sound_device*)m_usbsnd), write8_delegate(FUNC(usb_sound_device::data_w), (usb_sound_device*)m_usbsnd)); - pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(FUNC(usb_sound_device::ram_r), (usb_sound_device*)m_usbsnd)); - pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(FUNC(segag80r_state::usb_ram_w),this)); + iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(*m_usbsnd, FUNC(usb_sound_device::status_r)), write8_delegate(*m_usbsnd, FUNC(usb_sound_device::data_w))); + pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(*m_usbsnd, FUNC(usb_sound_device::ram_r))); + pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(*this, FUNC(segag80r_state::usb_ram_w))); } @@ -1667,8 +1667,8 @@ void segag80r_state::init_sindbadm() m_background_pcb = G80_BACKGROUND_SINDBADM; /* install background board handlers */ - iospace.install_write_handler(0x40, 0x41, write8_delegate(FUNC(segag80r_state::sindbadm_back_port_w),this)); - pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(FUNC(segag80r_state::sindbadm_vidram_w),this)); + iospace.install_write_handler(0x40, 0x41, write8_delegate(*this, FUNC(segag80r_state::sindbadm_back_port_w))); + pgmspace.install_write_handler(0xe000, 0xffff, write8_delegate(*this, FUNC(segag80r_state::sindbadm_vidram_w))); } diff --git a/src/mame/drivers/segag80v.cpp b/src/mame/drivers/segag80v.cpp index 3104a986d79..136bfb3a4a4 100644 --- a/src/mame/drivers/segag80v.cpp +++ b/src/mame/drivers/segag80v.cpp @@ -1303,8 +1303,8 @@ void segag80v_state::init_elim2() m_decrypt = segag80_security(70); /* configure sound */ - iospace.install_write_handler(0x3e, 0x3e, write8_delegate(FUNC(segag80v_state::elim1_sh_w),this)); - iospace.install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(segag80v_state::elim2_sh_w),this)); + iospace.install_write_handler(0x3e, 0x3e, write8_delegate(*this, FUNC(segag80v_state::elim1_sh_w))); + iospace.install_write_handler(0x3f, 0x3f, write8_delegate(*this, FUNC(segag80v_state::elim2_sh_w))); } @@ -1316,12 +1316,12 @@ void segag80v_state::init_elim4() m_decrypt = segag80_security(76); /* configure sound */ - iospace.install_write_handler(0x3e, 0x3e, write8_delegate(FUNC(segag80v_state::elim1_sh_w),this)); - iospace.install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(segag80v_state::elim2_sh_w),this)); + iospace.install_write_handler(0x3e, 0x3e, write8_delegate(*this, FUNC(segag80v_state::elim1_sh_w))); + iospace.install_write_handler(0x3f, 0x3f, write8_delegate(*this, FUNC(segag80v_state::elim2_sh_w))); /* configure inputs */ - iospace.install_write_handler(0xf8, 0xf8, write8_delegate(FUNC(segag80v_state::spinner_select_w),this)); - iospace.install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(segag80v_state::elim4_input_r),this)); + iospace.install_write_handler(0xf8, 0xf8, write8_delegate(*this, FUNC(segag80v_state::spinner_select_w))); + iospace.install_read_handler(0xfc, 0xfc, read8_delegate(*this, FUNC(segag80v_state::elim4_input_r))); } @@ -1333,10 +1333,10 @@ void segag80v_state::init_spacfury() m_decrypt = segag80_security(64); /* configure sound */ - iospace.install_write_handler(0x38, 0x38, write8_delegate(FUNC(speech_sound_device::data_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3b, 0x3b, write8_delegate(FUNC(speech_sound_device::control_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3e, 0x3e, write8_delegate(FUNC(segag80v_state::spacfury1_sh_w),this)); - iospace.install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(segag80v_state::spacfury2_sh_w),this)); + iospace.install_write_handler(0x38, 0x38, write8_delegate(*m_speech, FUNC(speech_sound_device::data_w))); + iospace.install_write_handler(0x3b, 0x3b, write8_delegate(*m_speech, FUNC(speech_sound_device::control_w))); + iospace.install_write_handler(0x3e, 0x3e, write8_delegate(*this, FUNC(segag80v_state::spacfury1_sh_w))); + iospace.install_write_handler(0x3f, 0x3f, write8_delegate(*this, FUNC(segag80v_state::spacfury2_sh_w))); } @@ -1348,15 +1348,15 @@ void segag80v_state::init_zektor() m_decrypt = segag80_security(82); /* configure sound */ - iospace.install_write_handler(0x38, 0x38, write8_delegate(FUNC(speech_sound_device::data_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3b, 0x3b, write8_delegate(FUNC(speech_sound_device::control_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3c, 0x3d, write8sm_delegate(FUNC(ay8912_device::address_data_w), (ay8912_device*)m_aysnd)); - iospace.install_write_handler(0x3e, 0x3e, write8_delegate(FUNC(segag80v_state::zektor1_sh_w),this)); - iospace.install_write_handler(0x3f, 0x3f, write8_delegate(FUNC(segag80v_state::zektor2_sh_w),this)); + iospace.install_write_handler(0x38, 0x38, write8_delegate(*m_speech, FUNC(speech_sound_device::data_w))); + iospace.install_write_handler(0x3b, 0x3b, write8_delegate(*m_speech, FUNC(speech_sound_device::control_w))); + iospace.install_write_handler(0x3c, 0x3d, write8sm_delegate(*m_aysnd, FUNC(ay8912_device::address_data_w))); + iospace.install_write_handler(0x3e, 0x3e, write8_delegate(*this, FUNC(segag80v_state::zektor1_sh_w))); + iospace.install_write_handler(0x3f, 0x3f, write8_delegate(*this, FUNC(segag80v_state::zektor2_sh_w))); /* configure inputs */ - iospace.install_write_handler(0xf8, 0xf8, write8_delegate(FUNC(segag80v_state::spinner_select_w),this)); - iospace.install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(segag80v_state::spinner_input_r),this)); + iospace.install_write_handler(0xf8, 0xf8, write8_delegate(*this, FUNC(segag80v_state::spinner_select_w))); + iospace.install_read_handler(0xfc, 0xfc, read8_delegate(*this, FUNC(segag80v_state::spinner_input_r))); } @@ -1369,13 +1369,13 @@ void segag80v_state::init_tacscan() m_decrypt = segag80_security(76); /* configure sound */ - iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(FUNC(usb_sound_device::status_r), (usb_sound_device*)m_usb), write8_delegate(FUNC(usb_sound_device::data_w), (usb_sound_device*)m_usb)); - pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(FUNC(usb_sound_device::ram_r), (usb_sound_device*)m_usb)); - pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(FUNC(segag80v_state::usb_ram_w),this)); + iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(*m_usb, FUNC(usb_sound_device::status_r)), write8_delegate(*m_usb, FUNC(usb_sound_device::data_w))); + pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(*m_usb, FUNC(usb_sound_device::ram_r))); + pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(*this, FUNC(segag80v_state::usb_ram_w))); /* configure inputs */ - iospace.install_write_handler(0xf8, 0xf8, write8_delegate(FUNC(segag80v_state::spinner_select_w),this)); - iospace.install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(segag80v_state::spinner_input_r),this)); + iospace.install_write_handler(0xf8, 0xf8, write8_delegate(*this, FUNC(segag80v_state::spinner_select_w))); + iospace.install_read_handler(0xfc, 0xfc, read8_delegate(*this, FUNC(segag80v_state::spinner_input_r))); } @@ -1388,16 +1388,16 @@ void segag80v_state::init_startrek() m_decrypt = segag80_security(64); /* configure sound */ - iospace.install_write_handler(0x38, 0x38, write8_delegate(FUNC(speech_sound_device::data_w), (speech_sound_device*)m_speech)); - iospace.install_write_handler(0x3b, 0x3b, write8_delegate(FUNC(speech_sound_device::control_w), (speech_sound_device*)m_speech)); + iospace.install_write_handler(0x38, 0x38, write8_delegate(*m_speech, FUNC(speech_sound_device::data_w))); + iospace.install_write_handler(0x3b, 0x3b, write8_delegate(*m_speech, FUNC(speech_sound_device::control_w))); - iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(FUNC(usb_sound_device::status_r), (usb_sound_device*)m_usb), write8_delegate(FUNC(usb_sound_device::data_w), (usb_sound_device*)m_usb)); - pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(FUNC(usb_sound_device::ram_r), (usb_sound_device*)m_usb)); - pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(FUNC(segag80v_state::usb_ram_w),this)); + iospace.install_readwrite_handler(0x3f, 0x3f, read8_delegate(*m_usb, FUNC(usb_sound_device::status_r)), write8_delegate(*m_usb, FUNC(usb_sound_device::data_w))); + pgmspace.install_read_handler(0xd000, 0xdfff, read8_delegate(*m_usb, FUNC(usb_sound_device::ram_r))); + pgmspace.install_write_handler(0xd000, 0xdfff, write8_delegate(*this, FUNC(segag80v_state::usb_ram_w))); /* configure inputs */ - iospace.install_write_handler(0xf8, 0xf8, write8_delegate(FUNC(segag80v_state::spinner_select_w),this)); - iospace.install_read_handler(0xfc, 0xfc, read8_delegate(FUNC(segag80v_state::spinner_input_r),this)); + iospace.install_write_handler(0xf8, 0xf8, write8_delegate(*this, FUNC(segag80v_state::spinner_select_w))); + iospace.install_read_handler(0xfc, 0xfc, read8_delegate(*this, FUNC(segag80v_state::spinner_input_r))); } diff --git a/src/mame/drivers/segaorun.cpp b/src/mame/drivers/segaorun.cpp index cb1bc9f751b..71a32914c80 100644 --- a/src/mame/drivers/segaorun.cpp +++ b/src/mame/drivers/segaorun.cpp @@ -445,32 +445,32 @@ void segaorun_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t switch (index) { case 5: - mapper.map_as_handler(0x90000, 0x10000, 0xf00000, read16_delegate(FUNC(segaorun_state::sega_road_control_0_r), this), write16_delegate(FUNC(segaorun_state::sega_road_control_0_w), this)); - mapper.map_as_ram(0x80000, 0x01000, 0xf0f000, "segaic16road:roadram", write16_delegate()); - mapper.map_as_ram(0x60000, 0x08000, 0xf18000, "cpu1ram", write16_delegate()); - mapper.map_as_ram(0x00000, 0x60000, 0xf00000, "cpu1rom", write16_delegate(FUNC(segaorun_state::nop_w), this)); + mapper.map_as_handler(0x90000, 0x10000, 0xf00000, read16_delegate(*this, FUNC(segaorun_state::sega_road_control_0_r)), write16_delegate(*this, FUNC(segaorun_state::sega_road_control_0_w))); + mapper.map_as_ram(0x80000, 0x01000, 0xf0f000, "segaic16road:roadram", write16_delegate(*this)); + mapper.map_as_ram(0x60000, 0x08000, 0xf18000, "cpu1ram", write16_delegate(*this)); + mapper.map_as_ram(0x00000, 0x60000, 0xf00000, "cpu1rom", write16_delegate(*this, FUNC(segaorun_state::nop_w))); break; case 4: - mapper.map_as_handler(0x90000, 0x10000, 0xf00000, read16_delegate(FUNC(segaorun_state::misc_io_r), this), write16_delegate(FUNC(segaorun_state::misc_io_w), this)); + mapper.map_as_handler(0x90000, 0x10000, 0xf00000, read16_delegate(*this, FUNC(segaorun_state::misc_io_r)), write16_delegate(*this, FUNC(segaorun_state::misc_io_w))); break; case 3: - mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "sprites", write16_delegate()); + mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "sprites", write16_delegate(*this)); break; case 2: - mapper.map_as_ram(0x00000, 0x02000, 0xffe000, "paletteram", write16_delegate(FUNC(segaorun_state::paletteram_w), this)); + mapper.map_as_ram(0x00000, 0x02000, 0xffe000, "paletteram", write16_delegate(*this, FUNC(segaorun_state::paletteram_w))); break; case 1: - mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(FUNC(segaorun_state::tileram_w), this)); - mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(FUNC(segaorun_state::textram_w), this)); + mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(*this, FUNC(segaorun_state::tileram_w))); + mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(*this, FUNC(segaorun_state::textram_w))); break; case 0: - mapper.map_as_ram(0x60000, 0x08000, 0xf98000, "workram", write16_delegate()); - mapper.map_as_rom(0x00000, 0x60000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); + mapper.map_as_ram(0x60000, 0x08000, 0xf98000, "workram", write16_delegate(*this)); + mapper.map_as_rom(0x00000, 0x60000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; } } @@ -537,7 +537,7 @@ void segaorun_state::machine_reset() m_segaic16vid->tilemap_reset(*m_screen); // hook the RESET line, which resets CPU #1 - m_maincpu->set_reset_callback(write_line_delegate(FUNC(segaorun_state::m68k_reset_callback),this)); + m_maincpu->set_reset_callback(*this, FUNC(segaorun_state::m68k_reset_callback)); // start timers to track interrupts m_scanline_timer->adjust(m_screen->time_until_pos(223), 223); @@ -1183,7 +1183,7 @@ void segaorun_state::outrun_base(machine_config &config) m_adc->vin_callback().set(FUNC(segaorun_state::analog_r)); SEGA_315_5195_MEM_MAPPER(config, m_mapper, MASTER_CLOCK/4, m_maincpu); - m_mapper->set_mapper(FUNC(segaorun_state::memory_mapper), this); + m_mapper->set_mapper(FUNC(segaorun_state::memory_mapper)); m_mapper->pbf().set_inputline(m_soundcpu, INPUT_LINE_NMI); // video hardware @@ -2923,8 +2923,8 @@ void segaorun_state::init_generic() void segaorun_state::init_outrun() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segaorun_state::outrun_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segaorun_state::outrun_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segaorun_state::outrun_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segaorun_state::outrun_custom_io_w)); } void segaorun_state::init_outrunb() @@ -2969,8 +2969,8 @@ void segaorun_state::init_shangon() { init_generic(); m_shangon_video = true; - m_custom_io_r = read16_delegate(FUNC(segaorun_state::shangon_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segaorun_state::shangon_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segaorun_state::shangon_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segaorun_state::shangon_custom_io_w)); } diff --git a/src/mame/drivers/segapico.cpp b/src/mame/drivers/segapico.cpp index 0eed917f943..fa5e38fc88b 100644 --- a/src/mame/drivers/segapico.cpp +++ b/src/mame/drivers/segapico.cpp @@ -384,10 +384,10 @@ static void pico_cart(device_slot_interface &device) MACHINE_START_MEMBER(pico_state,pico) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read_a13)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_a13))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read_a15)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_a15))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_tmss_bank))); m_vdp->stop_timers(); } @@ -596,10 +596,10 @@ static void copera_cart(device_slot_interface &device) MACHINE_START_MEMBER(copera_state,copera) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(FUNC(base_md_cart_slot_device::read),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a13),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a13),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(FUNC(base_md_cart_slot_device::read_a15),(base_md_cart_slot_device*)m_picocart), write16_delegate(FUNC(base_md_cart_slot_device::write_a15),(base_md_cart_slot_device*)m_picocart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(FUNC(base_md_cart_slot_device::write_tmss_bank),(base_md_cart_slot_device*)m_picocart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7fffff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa13000, 0xa130ff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read_a13)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_a13))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa15000, 0xa150ff, read16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::read_a15)), write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_a15))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa14000, 0xa14003, write16_delegate(*m_picocart, FUNC(base_md_cart_slot_device::write_tmss_bank))); m_sega_315_5641_pcm->reset_w(0); m_sega_315_5641_pcm->start_w(0); diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index 80c31947558..b2c72b31273 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -2041,7 +2041,7 @@ void segas16a_state::aceattaca_fd1094(machine_config &config) void segas16a_state::system16a_i8751(machine_config &config) { system16a(config); - m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr); + m_maincpu->remove_vblank_int(); I8751(config, m_mcu, 8000000); m_mcu->set_addrmap(AS_IO, &segas16a_state::mcu_io_map); @@ -3882,8 +3882,8 @@ void segas16a_state::init_generic() m_nvram->set_base(m_workram, m_workram.bytes()); // create default read/write handlers - m_custom_io_r = read16_delegate(FUNC(segas16a_state::standard_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16a_state::standard_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::standard_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16a_state::standard_io_w)); // save state save_item(NAME(m_video_control)); @@ -3904,8 +3904,8 @@ void segas16a_state::init_generic() void segas16a_state::init_aceattaca() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segas16a_state::aceattaca_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16a_state::aceattaca_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::aceattaca_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16a_state::aceattaca_custom_io_w)); } void segas16a_state::init_dumpmtmt() @@ -3917,25 +3917,25 @@ void segas16a_state::init_dumpmtmt() void segas16a_state::init_mjleague() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segas16a_state::mjleague_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::mjleague_custom_io_r)); } void segas16a_state::init_passsht16a() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segas16a_state::passsht16a_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::passsht16a_custom_io_r)); } void segas16a_state::init_sdi() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segas16a_state::sdi_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::sdi_custom_io_r)); } void segas16a_state::init_sjryukoa() { init_generic(); - m_custom_io_r = read16_delegate(FUNC(segas16a_state::sjryuko_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16a_state::sjryuko_custom_io_r)); m_lamp_changed_w = lamp_changed_delegate(&segas16a_state::sjryuko_lamp_changed_w, this); } diff --git a/src/mame/drivers/segas16b.cpp b/src/mame/drivers/segas16b.cpp index 85ac0f7aa95..b80a25dd44e 100644 --- a/src/mame/drivers/segas16b.cpp +++ b/src/mame/drivers/segas16b.cpp @@ -905,30 +905,30 @@ void segas16b_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t break; case 6: // 4k of paletteram - mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "paletteram", write16_delegate(FUNC(segas16b_state::paletteram_w), this)); + mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "paletteram", write16_delegate(*this, FUNC(segas16b_state::paletteram_w))); break; case 5: // 64k of tileram + 4k of textram - mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(FUNC(segas16b_state::tileram_w), this)); - mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(FUNC(segas16b_state::textram_w), this)); + mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(*this, FUNC(segas16b_state::tileram_w))); + mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(*this, FUNC(segas16b_state::textram_w))); break; case 4: // 2k of spriteram - mapper.map_as_ram(0x00000, 0x00800, 0xfff800, "sprites", write16_delegate()); + mapper.map_as_ram(0x00000, 0x00800, 0xfff800, "sprites", write16_delegate(*this)); break; case 3: // 16k or 256k of work RAM - mapper.map_as_ram(0x00000, m_workram.bytes(), ~(m_workram.bytes() - 1), "workram", write16_delegate()); + mapper.map_as_ram(0x00000, m_workram.bytes(), ~(m_workram.bytes() - 1), "workram", write16_delegate(*this)); break; case 2: // 3rd ROM base, or board-specific banking switch (m_romboard) { - case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x20000, write16_delegate()); break; - case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x40000, write16_delegate()); break; + case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x20000, write16_delegate(*this)); break; + case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom2base", "decrypted_rom2base", 0x40000, write16_delegate(*this)); break; case ROM_BOARD_171_5521: - case ROM_BOARD_171_5704: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(), write16_delegate(FUNC(segas16b_state::rom_5704_bank_w), this)); break; - case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(FUNC(segas16b_state::unknown_rgn2_r), this), write16_delegate(FUNC(segas16b_state::unknown_rgn2_w), this)); break; + case ROM_BOARD_171_5704: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(*this), write16_delegate(*this, FUNC(segas16b_state::rom_5704_bank_w))); break; + case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(*this, FUNC(segas16b_state::unknown_rgn2_r)), write16_delegate(*this, FUNC(segas16b_state::unknown_rgn2_w))); break; case ROM_BOARD_KOREAN: break; default: assert(false); } @@ -937,12 +937,12 @@ void segas16b_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t case 1: // 2nd ROM base, banking & math, or sound for Korean games switch (m_romboard) { - case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x10000, write16_delegate()); break; - case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x20000, write16_delegate()); break; + case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x10000, write16_delegate(*this)); break; + case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom1base", "decrypted_rom1base", 0x20000, write16_delegate(*this)); break; case ROM_BOARD_171_5521: - case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom1base", "decrypted_rom1base", 0x40000, write16_delegate()); break; - case ROM_BOARD_KOREAN: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(), write16_delegate(FUNC(segas16b_state::atomicp_sound_w), this)); break; - case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x04000, 0xffc000, read16_delegate(FUNC(segas16b_state::rom_5797_bank_math_r), this), write16_delegate(FUNC(segas16b_state::rom_5797_bank_math_w), this)); break; + case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom1base", "decrypted_rom1base", 0x40000, write16_delegate(*this)); break; + case ROM_BOARD_KOREAN: mapper.map_as_handler(0x00000, 0x10000, 0xff0000, read16_delegate(*this), write16_delegate(*this, FUNC(segas16b_state::atomicp_sound_w))); break; + case ROM_BOARD_171_5797: mapper.map_as_handler(0x00000, 0x04000, 0xffc000, read16_delegate(*this, FUNC(segas16b_state::rom_5797_bank_math_r)), write16_delegate(*this, FUNC(segas16b_state::rom_5797_bank_math_w))); break; default: assert(false); } break; @@ -950,12 +950,12 @@ void segas16b_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t case 0: // 1st ROM base switch (m_romboard) { - case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); break; - case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); break; + case ROM_BOARD_171_5358_SMALL: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; + case ROM_BOARD_171_5358: mapper.map_as_rom(0x00000, 0x20000, 0xfe0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; case ROM_BOARD_171_5521: - case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break; - case ROM_BOARD_KOREAN: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break; - case ROM_BOARD_171_5797: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0000000, write16_delegate()); break; + case ROM_BOARD_171_5704: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; + case ROM_BOARD_KOREAN: mapper.map_as_rom(0x00000, 0x40000, 0xfc0000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; + case ROM_BOARD_171_5797: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; default: assert(false); } break; @@ -3910,7 +3910,7 @@ void segas16b_state::system16b(machine_config &config) NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); SEGA_315_5195_MEM_MAPPER(config, m_mapper, MASTER_CLOCK_10MHz, m_maincpu); - m_mapper->set_mapper(FUNC(segas16b_state::memory_mapper), this); + m_mapper->set_mapper(FUNC(segas16b_state::memory_mapper)); m_mapper->pbf().set_inputline(m_soundcpu, 0); // video hardware @@ -4084,7 +4084,7 @@ void segas16b_state::fpointbl(machine_config &config) m_sprites->set_local_originx(75); // these align the pieces with the playfield m_sprites->set_local_originy(-2); // some other gfx don't have identical alignment to original tho (flickey character over 'good luck') - m_segaic16vid->set_pagelatch_cb(FUNC(segas16b_state::tilemap_16b_fpointbl_fill_latch), this); + m_segaic16vid->set_pagelatch_cb(FUNC(segas16b_state::tilemap_16b_fpointbl_fill_latch)); } void segas16b_state::fpointbla(machine_config &config) @@ -9299,8 +9299,8 @@ void segas16b_state::init_generic(segas16b_rom_board rom_board) m_nvram->set_base(m_workram, m_workram.bytes()); // create default read/write handlers - m_custom_io_r = read16_delegate(FUNC(segas16b_state::standard_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16b_state::standard_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::standard_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16b_state::standard_io_w)); // save state save_item(NAME(m_atomicp_sound_count)); @@ -9359,8 +9359,8 @@ void segas16b_state::init_generic_bootleg() void segas16b_state::init_aceattac_5358() { init_generic_5358(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::aceattac_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16b_state::aceattac_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::aceattac_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16b_state::aceattac_custom_io_w)); } void segas16b_state::init_aliensyn7_5358_small() @@ -9384,27 +9384,27 @@ void segas16b_state::init_altbeas4_5521() void segas16b_state::init_dunkshot_5358_small() { init_generic_5358_small(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::dunkshot_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::dunkshot_custom_io_r)); m_tilemap_type = segaic16_video_device::TILEMAP_16B_ALT; } void segas16b_state::init_exctleag_5358() { init_generic_5358(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::sdi_custom_io_r)); } void segas16b_state::init_hwchamp_5521() { init_generic_5521(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::hwchamp_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16b_state::hwchamp_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::hwchamp_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16b_state::hwchamp_custom_io_w)); } void segas16b_state::init_passshtj_5358() { init_generic_5358(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::passshtj_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::passshtj_custom_io_r)); } void segas16b_state::init_cencourt_5358() @@ -9416,7 +9416,7 @@ void segas16b_state::init_cencourt_5358() void segas16b_state::init_sdi_5358_small() { init_generic_5358_small(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::sdi_custom_io_r)); if (memregion("maincpux") != nullptr) { @@ -9440,7 +9440,7 @@ void segas16b_state::init_fpointbla() void segas16b_state::init_defense_5358_small() { init_generic_5358_small(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::sdi_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::sdi_custom_io_r)); } void segas16b_state::init_shinobi4_5521() @@ -9458,8 +9458,8 @@ void segas16b_state::init_shinobi3_5358() void segas16b_state::init_sjryuko_5358_small() { init_generic_5358_small(); - m_custom_io_r = read16_delegate(FUNC(segas16b_state::sjryuko_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas16b_state::sjryuko_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas16b_state::sjryuko_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas16b_state::sjryuko_custom_io_w)); m_tilemap_type = segaic16_video_device::TILEMAP_16B_ALT; } diff --git a/src/mame/drivers/segas18.cpp b/src/mame/drivers/segas18.cpp index edc09a610e1..4be60825962 100644 --- a/src/mame/drivers/segas18.cpp +++ b/src/mame/drivers/segas18.cpp @@ -52,24 +52,24 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t i switch (index) { case 7: - mapper.map_as_handler(0x00000, 0x04000, 0xffc000, read16_delegate(FUNC(segas18_state::misc_io_r), this), write16_delegate(FUNC(segas18_state::misc_io_w), this)); + mapper.map_as_handler(0x00000, 0x04000, 0xffc000, read16_delegate(*this, FUNC(segas18_state::misc_io_r)), write16_delegate(*this, FUNC(segas18_state::misc_io_w))); break; case 6: - mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "paletteram", write16_delegate(FUNC(segas18_state::paletteram_w), this)); + mapper.map_as_ram(0x00000, 0x01000, 0xfff000, "paletteram", write16_delegate(*this, FUNC(segas18_state::paletteram_w))); break; case 5: - mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(FUNC(segas18_state::tileram_w), this)); - mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(FUNC(segas18_state::textram_w), this)); + mapper.map_as_ram(0x00000, 0x10000, 0xfe0000, "tileram", write16_delegate(*this, FUNC(segas18_state::tileram_w))); + mapper.map_as_ram(0x10000, 0x01000, 0xfef000, "textram", write16_delegate(*this, FUNC(segas18_state::textram_w))); break; case 4: - mapper.map_as_ram(0x00000, 0x00800, 0xfff800, "sprites", write16_delegate()); + mapper.map_as_ram(0x00000, 0x00800, 0xfff800, "sprites", write16_delegate(*this)); break; case 3: - mapper.map_as_ram(0x00000, 0x04000, 0xffc000, "workram", write16_delegate()); + mapper.map_as_ram(0x00000, 0x04000, 0xffc000, "workram", write16_delegate(*this)); break; case 2: @@ -78,7 +78,7 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t i case ROM_BOARD_171_SHADOW: break; // ??? case ROM_BOARD_837_7525: case ROM_BOARD_171_5874: - case ROM_BOARD_171_5987: mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(FUNC(segas18_state::genesis_vdp_r), this), write16_delegate(FUNC(segas18_state::genesis_vdp_w), this)); break; + case ROM_BOARD_171_5987: mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(*this, FUNC(segas18_state::genesis_vdp_r)), write16_delegate(*this, FUNC(segas18_state::genesis_vdp_w))); break; default: assert(false); } break; @@ -86,14 +86,14 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t i case 1: switch (m_romboard) { - case ROM_BOARD_171_SHADOW: mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(FUNC(segas18_state::genesis_vdp_r), this), write16_delegate(FUNC(segas18_state::genesis_vdp_w), this)); break; - case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate()); break; + case ROM_BOARD_171_SHADOW: mapper.map_as_handler(0x00000, 0x00010, 0xfffff0, read16_delegate(*this, FUNC(segas18_state::genesis_vdp_r)), write16_delegate(*this, FUNC(segas18_state::genesis_vdp_w))); break; + case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate(*this)); break; case ROM_BOARD_171_5987: if (romsize <= 0x100000) - mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this)); + mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate(*this, FUNC(segas18_state::rom_5987_bank_w))); else - mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base", "decrypted_rom1base",0x100000, write16_delegate(FUNC(segas18_state::rom_5987_bank_w), this)); + mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom1base", "decrypted_rom1base",0x100000, write16_delegate(*this, FUNC(segas18_state::rom_5987_bank_w))); break; - case ROM_BOARD_837_7525: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate(FUNC(segas18_state::rom_837_7525_bank_w), this)); + case ROM_BOARD_837_7525: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom1base", "decrypted_rom1base", 0x80000, write16_delegate(*this, FUNC(segas18_state::rom_837_7525_bank_w))); break; default: assert(false); @@ -104,12 +104,12 @@ void segas18_state::memory_mapper(sega_315_5195_mapper_device &mapper, uint8_t i switch (m_romboard) { case ROM_BOARD_171_SHADOW: - case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); break; + case ROM_BOARD_171_5874: mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; case ROM_BOARD_837_7525: case ROM_BOARD_171_5987: if (romsize <= 0x100000) - mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); + mapper.map_as_rom(0x00000, 0x80000, 0xf80000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); else - mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate()); + mapper.map_as_rom(0x00000,0x100000, 0xf00000, "rom0base", "decrypted_rom0base", 0x00000, write16_delegate(*this)); break; default: assert(false); } @@ -1321,7 +1321,7 @@ void segas18_state::system18(machine_config &config) NVRAM(config, m_nvram, nvram_device::DEFAULT_ALL_0); SEGA_315_5195_MEM_MAPPER(config, m_mapper, 10000000, m_maincpu); - m_mapper->set_mapper(FUNC(segas18_state::memory_mapper), this); + m_mapper->set_mapper(FUNC(segas18_state::memory_mapper)); m_mapper->pbf().set_inputline(m_soundcpu, INPUT_LINE_NMI); SEGA_315_5296(config, m_io, 16000000); @@ -1441,7 +1441,7 @@ void segas18_state::system18_i8751(machine_config &config) system18(config); // basic machine hardware - m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr); + m_maincpu->remove_vblank_int(); m_mapper->mcu_int().set_inputline(m_mcu, INPUT_LINE_IRQ1); @@ -1455,7 +1455,7 @@ void segas18_state::system18_fd1094_i8751(machine_config &config) system18_fd1094(config); // basic machine hardware - m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr); + m_maincpu->remove_vblank_int(); m_mapper->mcu_int().set_inputline(m_mcu, INPUT_LINE_IRQ1); @@ -3184,21 +3184,21 @@ void segas18_state::init_hamaway() void segas18_state::init_ddcrew() { init_generic_5987(); - m_custom_io_r = read16_delegate(FUNC(segas18_state::ddcrew_custom_io_r), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas18_state::ddcrew_custom_io_r)); } void segas18_state::init_lghost() { init_generic_5987(); - m_custom_io_r = read16_delegate(FUNC(segas18_state::lghost_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas18_state::lghost_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas18_state::lghost_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas18_state::lghost_custom_io_w)); } void segas18_state::init_wwally() { init_generic_5987(); - m_custom_io_r = read16_delegate(FUNC(segas18_state::wwally_custom_io_r), this); - m_custom_io_w = write16_delegate(FUNC(segas18_state::wwally_custom_io_w), this); + m_custom_io_r = read16_delegate(*this, FUNC(segas18_state::wwally_custom_io_r)); + m_custom_io_w = write16_delegate(*this, FUNC(segas18_state::wwally_custom_io_w)); } diff --git a/src/mame/drivers/segas24.cpp b/src/mame/drivers/segas24.cpp index 69f85cc3435..d99eef46c24 100644 --- a/src/mame/drivers/segas24.cpp +++ b/src/mame/drivers/segas24.cpp @@ -1937,7 +1937,7 @@ void segas24_state::system24(machine_config &config) TIMER(config, "irq_timer").configure_generic(FUNC(segas24_state::irq_timer_cb)); TIMER(config, "irq_timer_clear").configure_generic(FUNC(segas24_state::irq_timer_clear_cb)); - TIMER(config, "frc_timer").configure_generic(timer_device::expired_delegate()); + TIMER(config, "frc_timer").configure_generic(nullptr); TIMER(config, "irq_frc").configure_periodic(FUNC(segas24_state::irq_frc_cb), attotime::from_hz(FRC_CLOCK_MODE1)); S24TILE(config, m_vtile, 0, 0xfff).set_palette("palette"); diff --git a/src/mame/drivers/segas32.cpp b/src/mame/drivers/segas32.cpp index 6d62f2fe8ca..ee04cfa9997 100644 --- a/src/mame/drivers/segas32.cpp +++ b/src/mame/drivers/segas32.cpp @@ -5650,11 +5650,11 @@ void segas32_new_state::init_arescue() m_slavepcb->init_arescue(0); m_dual_pcb_comms = std::make_unique<uint16_t[]>(0x1000/2); - m_mainpcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this)); - m_mainpcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_masterslave),this)); + m_mainpcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_r)), write16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_w))); + m_mainpcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_masterslave))); - m_slavepcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this)); - m_slavepcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_slave),this)); + m_slavepcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_r)), write16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_w))); + m_slavepcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_slave))); } void segas32_new_state::init_f1en() { @@ -5664,11 +5664,11 @@ void segas32_new_state::init_f1en() { m_dual_pcb_comms = std::make_unique<uint16_t[]>(0x1000/2); memset(m_dual_pcb_comms.get(), 0xff, 0x1000 / 2); - m_mainpcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this)); - m_mainpcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_masterslave),this)); + m_mainpcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_r)), write16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_w))); + m_mainpcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_masterslave))); - m_slavepcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(FUNC(segas32_new_state::dual_pcb_comms_r),this), write16_delegate(FUNC(segas32_new_state::dual_pcb_comms_w),this)); - m_slavepcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(FUNC(segas32_new_state::dual_pcb_slave),this)); + m_slavepcb->maincpu()->space(AS_PROGRAM).install_readwrite_handler(0x810000, 0x810fff, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_r)), write16_delegate(*this, FUNC(segas32_new_state::dual_pcb_comms_w))); + m_slavepcb->maincpu()->space(AS_PROGRAM).install_read_handler(0x818000, 0x818003, read16_delegate(*this, FUNC(segas32_new_state::dual_pcb_slave))); } void segas32_new_state::init_f1lap() @@ -5690,7 +5690,7 @@ void segas32_state::init_alien3() void segas32_state::init_arescue(int m_hasdsp) { segas32_common_init(); - if (m_hasdsp) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00007, read16_delegate(FUNC(segas32_state::arescue_dsp_r),this), write16_delegate(FUNC(segas32_state::arescue_dsp_w),this)); + if (m_hasdsp) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa00007, read16_delegate(*this, FUNC(segas32_state::arescue_dsp_r)), write16_delegate(*this, FUNC(segas32_state::arescue_dsp_w))); for (auto & elem : m_arescue_dsp_io) elem = 0x00; @@ -5731,8 +5731,8 @@ void segas32_state::init_brival() /* install protection handlers */ m_system32_protram = std::make_unique<uint16_t[]>(0x1000/2); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20ba00, 0x20ba07, read16_delegate(FUNC(segas32_state::brival_protection_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa00000, 0xa00fff, write16_delegate(FUNC(segas32_state::brival_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20ba00, 0x20ba07, read16_delegate(*this, FUNC(segas32_state::brival_protection_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa00000, 0xa00fff, write16_delegate(*this, FUNC(segas32_state::brival_protection_w))); } @@ -5741,7 +5741,7 @@ void segas32_state::init_darkedge() segas32_common_init(); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::darkedge_protection_r),this), write16_delegate(FUNC(segas32_state::darkedge_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(*this, FUNC(segas32_state::darkedge_protection_r)), write16_delegate(*this, FUNC(segas32_state::darkedge_protection_w))); m_system32_prot_vblank = &segas32_state::darkedge_fd1149_vblank; } @@ -5751,7 +5751,7 @@ void segas32_state::init_dbzvrvs() segas32_common_init(); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(FUNC(segas32_state::dbzvrvs_protection_r),this), write16_delegate(FUNC(segas32_state::dbzvrvs_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xa00000, 0xa7ffff, read16_delegate(*this, FUNC(segas32_state::dbzvrvs_protection_r)), write16_delegate(*this, FUNC(segas32_state::dbzvrvs_protection_w))); // 0x810000 to 0x8107ff = link RAM? probably not a dual cabinet, though... } @@ -5852,7 +5852,7 @@ void segas32_state::init_radr() void segas32_state::init_scross() { segas32_common_init(); - m_soundcpu->space(AS_PROGRAM).install_write_handler(0xb0, 0xbf, write8_delegate(FUNC(segas32_state::scross_bank_w),this)); + m_soundcpu->space(AS_PROGRAM).install_write_handler(0xb0, 0xbf, write8_delegate(*this, FUNC(segas32_state::scross_bank_w))); m_sw1_output = &segas32_state::scross_sw1_output; m_sw2_output = &segas32_state::scross_sw2_output; @@ -5872,7 +5872,7 @@ void segas32_state::init_sonic() segas32_common_init(); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x20E5C4, 0x20E5C5, write16_delegate(FUNC(segas32_state::sonic_level_load_protection),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x20E5C4, 0x20E5C5, write16_delegate(*this, FUNC(segas32_state::sonic_level_load_protection))); } @@ -5897,7 +5897,7 @@ void segas32_state::init_svf() void segas32_state::init_jleague() { segas32_common_init(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x20F700, 0x20F705, write16_delegate(FUNC(segas32_state::jleague_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x20F700, 0x20F705, write16_delegate(*this, FUNC(segas32_state::jleague_protection_w))); } diff --git a/src/mame/drivers/segaxbd.cpp b/src/mame/drivers/segaxbd.cpp index e47278547cf..18e06a456f5 100644 --- a/src/mame/drivers/segaxbd.cpp +++ b/src/mame/drivers/segaxbd.cpp @@ -344,7 +344,7 @@ void segaxbd_state::device_reset() m_segaic16vid->tilemap_reset(*m_screen); // hook the RESET line, which resets CPU #1 - m_maincpu->set_reset_callback(write_line_delegate(FUNC(segaxbd_state::m68k_reset_callback),this)); + m_maincpu->set_reset_callback(*this, FUNC(segaxbd_state::m68k_reset_callback)); // start timers to track interrupts m_scanline_timer->adjust(m_screen->time_until_pos(0), 0); @@ -355,8 +355,8 @@ class segaxbd_new_state : public driver_device { public: segaxbd_new_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), - m_mainpcb(*this, "mainpcb") + : driver_device(mconfig, type, tag) + , m_mainpcb(*this, "mainpcb") { } @@ -4665,7 +4665,7 @@ void segaxbd_state::install_loffire(void) m_adc_reverse[1] = m_adc_reverse[3] = true; // install sync hack on core shared memory - m_maincpu->space(AS_PROGRAM).install_write_handler(0x29c000, 0x29c011, write16_delegate(FUNC(segaxbd_state::loffire_sync0_w), this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x29c000, 0x29c011, write16_delegate(*this, FUNC(segaxbd_state::loffire_sync0_w))); m_loffire_sync = m_subram0; } @@ -4678,7 +4678,7 @@ void segaxbd_new_state::init_loffire() void segaxbd_state::install_smgp(void) { // map /EXCS space - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2f0000, 0x2f3fff, read16_delegate(FUNC(segaxbd_state::smgp_excs_r), this), write16_delegate(FUNC(segaxbd_state::smgp_excs_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2f0000, 0x2f3fff, read16_delegate(*this, FUNC(segaxbd_state::smgp_excs_r)), write16_delegate(*this, FUNC(segaxbd_state::smgp_excs_w))); } void segaxbd_new_state::init_smgp() @@ -4713,8 +4713,8 @@ void segaxbd_new_state_double::init_gprider_double() m_mainpcb->install_gprider(); m_subpcb->install_gprider(); - m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2F0000, 0x2F003f, read16_delegate(FUNC(segaxbd_new_state_double::shareram1_r), this), write16_delegate(FUNC(segaxbd_new_state_double::shareram1_w), this)); - m_subpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2F0000, 0x2F003f, read16_delegate(FUNC(segaxbd_new_state_double::shareram2_r), this), write16_delegate(FUNC(segaxbd_new_state_double::shareram2_w), this)); + m_mainpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2F0000, 0x2F003f, read16_delegate(*this, FUNC(segaxbd_new_state_double::shareram1_r)), write16_delegate(*this, FUNC(segaxbd_new_state_double::shareram1_w))); + m_subpcb->m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x2F0000, 0x2F003f, read16_delegate(*this, FUNC(segaxbd_new_state_double::shareram2_r)), write16_delegate(*this, FUNC(segaxbd_new_state_double::shareram2_w))); } diff --git a/src/mame/drivers/seibuspi.cpp b/src/mame/drivers/seibuspi.cpp index 88d1783a375..e91b737477c 100644 --- a/src/mame/drivers/seibuspi.cpp +++ b/src/mame/drivers/seibuspi.cpp @@ -2009,50 +2009,50 @@ void seibuspi_state::sys386f(machine_config &config) void seibuspi_state::init_senkyu() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018cb4, 0x0018cb7, read32_delegate(FUNC(seibuspi_state::senkyu_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018cb4, 0x0018cb7, read32_delegate(*this, FUNC(seibuspi_state::senkyu_speedup_r))); init_sei252(); } void seibuspi_state::init_senkyua() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018c9c, 0x0018c9f, read32_delegate(FUNC(seibuspi_state::senkyua_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018c9c, 0x0018c9f, read32_delegate(*this, FUNC(seibuspi_state::senkyua_speedup_r))); init_sei252(); } void seibuspi_state::init_batlball() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018db4, 0x0018db7, read32_delegate(FUNC(seibuspi_state::batlball_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x0018db4, 0x0018db7, read32_delegate(*this, FUNC(seibuspi_state::batlball_speedup_r))); init_sei252(); } void seibuspi_state::init_viprp1() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001e2e0, 0x001e2e3, read32_delegate(FUNC(seibuspi_state::viprp1_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001e2e0, 0x001e2e3, read32_delegate(*this, FUNC(seibuspi_state::viprp1_speedup_r))); init_sei252(); } void seibuspi_state::init_viprp1o() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001d49c, 0x001d49f, read32_delegate(FUNC(seibuspi_state::viprp1o_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x001d49c, 0x001d49f, read32_delegate(*this, FUNC(seibuspi_state::viprp1o_speedup_r))); init_sei252(); } void seibuspi_state::init_ejanhs() { // idle skip doesn't work properly? -// if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002d224, 0x002d227, read32_delegate(FUNC(seibuspi_state::ejanhs_speedup_r),this)); +// if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002d224, 0x002d227, read32_delegate(*this, FUNC(seibuspi_state::ejanhs_speedup_r))); init_sei252(); } void seibuspi_state::init_rdft() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00298d0, 0x00298d3, read32_delegate(FUNC(seibuspi_state::rdft_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00298d0, 0x00298d3, read32_delegate(*this, FUNC(seibuspi_state::rdft_speedup_r))); init_sei252(); } void seibuspi_state::init_rdft2() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00282ac, 0x00282af, read32_delegate(FUNC(seibuspi_state::rf2_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x00282ac, 0x00282af, read32_delegate(*this, FUNC(seibuspi_state::rf2_speedup_r))); rdft2_text_decrypt(memregion("chars")->base()); rdft2_bg_decrypt(memregion("tiles")->base(), memregion("tiles")->bytes()); @@ -2062,7 +2062,7 @@ void seibuspi_state::init_rdft2() void seibuspi_state::init_rfjet() { - if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002894c, 0x002894f, read32_delegate(FUNC(seibuspi_state::rfjet_speedup_r),this)); + if (ENABLE_SPEEDUP_HACKS) m_maincpu->space(AS_PROGRAM).install_read_handler(0x002894c, 0x002894f, read32_delegate(*this, FUNC(seibuspi_state::rfjet_speedup_r))); rfjet_text_decrypt(memregion("chars")->base()); rfjet_bg_decrypt(memregion("tiles")->base(), memregion("tiles")->bytes()); diff --git a/src/mame/drivers/seicupbl.cpp b/src/mame/drivers/seicupbl.cpp index 40ac0fcbc89..8865dc8f113 100644 --- a/src/mame/drivers/seicupbl.cpp +++ b/src/mame/drivers/seicupbl.cpp @@ -278,10 +278,10 @@ void seicupbl_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap,co void seicupbl_state::video_start() { - m_sc_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seicupbl_state::get_sc0_tileinfo),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seicupbl_state::get_sc1_tileinfo),this), TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seicupbl_state::get_sc2_tileinfo),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seicupbl_state::get_sc3_tileinfo),this),TILEMAP_SCAN_ROWS, 8,8,64,32); + m_sc_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seicupbl_state::get_sc0_tileinfo)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_sc_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seicupbl_state::get_sc1_tileinfo)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_sc_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seicupbl_state::get_sc2_tileinfo)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_sc_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seicupbl_state::get_sc3_tileinfo)), TILEMAP_SCAN_ROWS, 8,8, 64,32); for(int i=0;i<4;i++) m_sc_layer[i]->set_transparent_pen(15); diff --git a/src/mame/drivers/sengokmj.cpp b/src/mame/drivers/sengokmj.cpp index c154d2bd1dd..8fcd5b60fde 100644 --- a/src/mame/drivers/sengokmj.cpp +++ b/src/mame/drivers/sengokmj.cpp @@ -307,10 +307,10 @@ void sengokmj_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect void sengokmj_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sengokmj_state::seibucrtc_sc0_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sengokmj_state::seibucrtc_sc2_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sengokmj_state::seibucrtc_sc1_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sengokmj_state::seibucrtc_sc3_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sengokmj_state::seibucrtc_sc0_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_sc2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sengokmj_state::seibucrtc_sc2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_sc1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sengokmj_state::seibucrtc_sc1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_sc3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sengokmj_state::seibucrtc_sc3_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_sc2_tilemap->set_transparent_pen(15); m_sc1_tilemap->set_transparent_pen(15); diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index 73654bbf369..0331f240dc2 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -1483,18 +1483,14 @@ TIMER_CALLBACK_MEMBER(seta_state::uPD71054_timer_callback) void seta_state::uPD71054_timer_init() { uPD71054_state *uPD71054 = &m_uPD71054; - int no; uPD71054->write_select = 0; - for (no = 0; no < USED_TIMER_NUM; no++) - { + for (int no = 0; no < USED_TIMER_NUM; no++) uPD71054->max[no] = 0xffff; - } - for (no = 0; no < USED_TIMER_NUM; no++) - { + + for (int no = 0; no < USED_TIMER_NUM; no++) uPD71054->timer[no] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(seta_state::uPD71054_timer_callback),this)); - } } @@ -1511,9 +1507,9 @@ void seta_state::timer_regs_w(offs_t offset, u16 data) switch (offset) { - case 0x0000: - case 0x0001: - case 0x0002: + case 0x0000: + case 0x0001: + case 0x0002: if (uPD71054->write_select == 0) { uPD71054->max[offset] = (uPD71054->max[offset] & 0xff00) + data; @@ -1531,12 +1527,12 @@ void seta_state::timer_regs_w(offs_t offset, u16 data) uPD71054_update_timer(m_maincpu.target(), offset); } break; - case 0x0003: + case 0x0003: switch ((data >> 4) & 3) { - case 2: uPD71054->write_select = 1; break; - case 1: - case 3: uPD71054->write_select = 0; break; + case 2: uPD71054->write_select = 1; break; + case 1: + case 3: uPD71054->write_select = 0; break; } break; } @@ -3608,9 +3604,9 @@ void seta_state::calibr50_soundlatch2_w(u8 data) void seta_state::calibr50_sub_map(address_map &map) { - map(0x0000, 0x1fff).lrw8("x1_soundram_rw", - [this](offs_t offset) { return m_x1->read(offset ^ 0x1000); }, - [this](offs_t offset, u8 data) { m_x1->write(offset ^ 0x1000, data); }); // Sound + map(0x0000, 0x1fff).lrw8( + NAME([this](offs_t offset) { return m_x1->read(offset ^ 0x1000); }), + NAME([this](offs_t offset, u8 data) { m_x1->write(offset ^ 0x1000, data); })); // Sound map(0x4000, 0x4000).r(m_soundlatch[0], FUNC(generic_latch_8_device::read)); // From Main CPU map(0x4000, 0x4000).w(FUNC(seta_state::calibr50_sub_bankswitch_w)); // Bankswitching map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM @@ -7926,7 +7922,7 @@ void seta_state::tndrcade(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -7978,7 +7974,7 @@ void seta_state::twineagl(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8024,7 +8020,7 @@ void seta_state::downtown(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8105,7 +8101,7 @@ void usclssic_state::usclssic(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(usclssic_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(usclssic_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8165,7 +8161,7 @@ void seta_state::calibr50(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8214,7 +8210,7 @@ void seta_state::metafox(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8254,7 +8250,7 @@ void seta_state::atehate(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8297,7 +8293,7 @@ void seta_state::blandia(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8332,7 +8328,7 @@ void seta_state::blandiap(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8372,7 +8368,7 @@ void seta_state::blockcar(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8446,7 +8442,7 @@ void seta_state::daioh(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8501,7 +8497,7 @@ void seta_state::drgnunit(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8566,7 +8562,7 @@ void setaroul_state::setaroul(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM); @@ -8617,7 +8613,7 @@ void seta_state::eightfrc(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8661,7 +8657,7 @@ void seta_state::extdwnhl(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8726,7 +8722,7 @@ void seta_state::gundhara(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8795,7 +8791,7 @@ void seta_state::jjsquawk(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8827,7 +8823,7 @@ void seta_state::jjsquawb(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8871,7 +8867,7 @@ void seta_state::kamenrid(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8910,7 +8906,7 @@ void seta_state::orbs(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -8951,7 +8947,7 @@ void seta_state::keroppij(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9004,7 +9000,7 @@ void seta_state::krzybowl(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9046,7 +9042,7 @@ void seta_state::madshark(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); WATCHDOG_TIMER(config, "watchdog"); @@ -9096,7 +9092,7 @@ void seta_state::magspeed(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9139,7 +9135,7 @@ void seta_state::msgundam(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9183,7 +9179,7 @@ void seta_state::oisipuzl(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9224,7 +9220,7 @@ void seta_state::triplfun(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9271,7 +9267,7 @@ void kiwame_state::kiwame(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(kiwame_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(kiwame_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9315,7 +9311,7 @@ void seta_state::rezon(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9354,7 +9350,7 @@ void seta_state::thunderl(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9428,7 +9424,7 @@ void seta_state::wiggie(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9468,7 +9464,7 @@ void seta_state::wits(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9505,7 +9501,7 @@ void seta_state::umanclub(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9546,7 +9542,7 @@ void seta_state::utoukond(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9604,7 +9600,7 @@ void seta_state::wrofaero(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9646,7 +9642,7 @@ void seta_state::zingzip(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); WATCHDOG_TIMER(config, "watchdog"); @@ -9700,7 +9696,7 @@ void seta_state::pairlove(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9748,7 +9744,7 @@ void seta_state::crazyfgt(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -9817,7 +9813,7 @@ void jockeyc_state::jockeyc(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag(m_gfxdecode); - m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(seta_state::setac_gfxbank_callback)); NVRAM(config, "nvram", nvram_device::DEFAULT_RANDOM); @@ -11918,10 +11914,10 @@ void seta_state::init_twineagl() { init_bank6502(); /* debug? */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x8000ff, read16_delegate(FUNC(seta_state::twineagl_debug_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x8000ff, read16_delegate(*this, FUNC(seta_state::twineagl_debug_r))); /* This allows 2 simultaneous players and the use of the "Copyright" Dip Switch. */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200100, 0x20010f, read16_delegate(FUNC(seta_state::twineagl_200100_r),this), write16_delegate(FUNC(seta_state::twineagl_200100_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200100, 0x20010f, read16_delegate(*this, FUNC(seta_state::twineagl_200100_r)), write16_delegate(*this, FUNC(seta_state::twineagl_200100_w))); } @@ -11955,7 +11951,7 @@ void seta_state::init_downtown() m_downtown_protection = make_unique_clear<u16[]>(0x200/2); save_pointer(NAME(m_downtown_protection),0x200/2); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2001ff, read16_delegate(FUNC(seta_state::downtown_protection_r),this), write16_delegate(FUNC(seta_state::downtown_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2001ff, read16_delegate(*this, FUNC(seta_state::downtown_protection_r)), write16_delegate(*this, FUNC(seta_state::downtown_protection_w))); } @@ -11976,7 +11972,7 @@ READ16_MEMBER(seta_state::arbalest_debug_r) void seta_state::init_arbalest() { init_bank6502(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000, 0x8000f, read16_delegate(FUNC(seta_state::arbalest_debug_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80000, 0x8000f, read16_delegate(*this, FUNC(seta_state::arbalest_debug_r))); } @@ -12005,7 +12001,7 @@ READ16_MEMBER(seta_state::metafox_protection_r) void seta_state::init_metafox() { init_bank6502(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x21c000, 0x21ffff,read16_delegate(FUNC(seta_state::metafox_protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x21c000, 0x21ffff,read16_delegate(*this, FUNC(seta_state::metafox_protection_r))); } diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index b37d9d97810..81f1c03c72c 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -279,7 +279,7 @@ void seta2_state::mj4simai_map(address_map &map) map(0x200000, 0x20ffff).ram(); // RAM map(0x600000, 0x600001).r(FUNC(seta2_state::mj4simai_p1_r)); // P1 map(0x600002, 0x600003).r(FUNC(seta2_state::mj4simai_p2_r)); // P2 - map(0x600005, 0x600005).lw8("keyboard_row_w", [this](u8 data){ m_keyboard_row = data; } ); // select keyboard row to read + map(0x600005, 0x600005).lw8(NAME([this] (u8 data){ m_keyboard_row = data; })); // select keyboard row to read map(0x600006, 0x600007).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); map(0x600100, 0x600101).portr("SYSTEM"); // map(0x600200, 0x600201).nopw(); // Leds? Coins? diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp index b4bd4a8f996..3d5c697bc89 100644 --- a/src/mame/drivers/sfbonus.cpp +++ b/src/mame/drivers/sfbonus.cpp @@ -928,11 +928,11 @@ void sfbonus_state::video_start() { m_temp_reel_bitmap = std::make_unique<bitmap_ind16>(1024,512); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 128, 64); - m_reel_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_reel_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 16); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 16); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 16); - m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sfbonus_state::get_sfbonus_reel4_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 16); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sfbonus_state::get_sfbonus_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_reel_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sfbonus_state::get_sfbonus_reel_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 16); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sfbonus_state::get_sfbonus_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 16); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sfbonus_state::get_sfbonus_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 16); + m_reel4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sfbonus_state::get_sfbonus_reel4_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 16); m_tilemap->set_transparent_pen(0); m_reel_tilemap->set_transparent_pen(255); diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index b5ef0daa73b..c4a2c85c4d3 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -463,8 +463,8 @@ void sg1000_state::machine_start() { if (m_cart->get_type() == SEGA8_DAHJEE_TYPEA || m_cart->get_type() == SEGA8_DAHJEE_TYPEB) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(sega8_cart_slot_device::read_ram),(sega8_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc000, 0xffff, write8_delegate(FUNC(sega8_cart_slot_device::write_ram),(sega8_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(*m_cart, FUNC(sega8_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc000, 0xffff, write8_delegate(*m_cart, FUNC(sega8_cart_slot_device::write_ram))); } if (m_cart) @@ -484,8 +484,8 @@ void sc3000_state::machine_start() || m_cart->get_type() == SEGA8_DAHJEE_TYPEA || m_cart->get_type() == SEGA8_DAHJEE_TYPEB || m_cart->get_type() == SEGA8_MULTICART || m_cart->get_type() == SEGA8_MEGACART)) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(FUNC(sega8_cart_slot_device::read_ram),(sega8_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xc000, 0xffff, write8_delegate(FUNC(sega8_cart_slot_device::write_ram),(sega8_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc000, 0xffff, read8_delegate(*m_cart, FUNC(sega8_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xc000, 0xffff, write8_delegate(*m_cart, FUNC(sega8_cart_slot_device::write_ram))); } if (m_cart) diff --git a/src/mame/drivers/silvmil.cpp b/src/mame/drivers/silvmil.cpp index 2d3b3e0110a..98ce29ba074 100644 --- a/src/mame/drivers/silvmil.cpp +++ b/src/mame/drivers/silvmil.cpp @@ -169,8 +169,8 @@ TILEMAP_MAPPER_MEMBER(silvmil_state::scan_rows) void silvmil_state::video_start() { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::scan_rows),this), 16, 16, 64, 32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silvmil_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(silvmil_state::scan_rows),this), 16, 16, 64, 32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(silvmil_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(silvmil_state::scan_rows)), 16, 16, 64, 32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(silvmil_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(silvmil_state::scan_rows)), 16, 16, 64, 32); m_fg_layer->set_transparent_pen(0); } diff --git a/src/mame/drivers/simpl156.cpp b/src/mame/drivers/simpl156.cpp index d3ac5fa6267..be31c5e2848 100644 --- a/src/mame/drivers/simpl156.cpp +++ b/src/mame/drivers/simpl156.cpp @@ -412,15 +412,15 @@ void simpl156_state::chainrec(machine_config &config) m_deco_tilegen->set_pf2_col_bank(0x10); m_deco_tilegen->set_pf1_col_mask(0x0f); m_deco_tilegen->set_pf2_col_mask(0x0f); - m_deco_tilegen->set_bank1_callback(FUNC(simpl156_state::bank_callback), this); - m_deco_tilegen->set_bank2_callback(FUNC(simpl156_state::bank_callback), this); + m_deco_tilegen->set_bank1_callback(FUNC(simpl156_state::bank_callback)); + m_deco_tilegen->set_bank2_callback(FUNC(simpl156_state::bank_callback)); m_deco_tilegen->set_pf12_8x8_bank(0); m_deco_tilegen->set_pf12_16x16_bank(1); m_deco_tilegen->set_gfxdecode_tag("gfxdecode"); DECO_SPRITE(config, m_sprgen, 0); m_sprgen->set_gfx_region(2); - m_sprgen->set_pri_callback(FUNC(simpl156_state::pri_callback), this); + m_sprgen->set_pri_callback(FUNC(simpl156_state::pri_callback)); m_sprgen->set_gfxdecode_tag("gfxdecode"); SPEAKER(config, "lspeaker").front_left(); @@ -1058,7 +1058,7 @@ READ32_MEMBER(simpl156_state::joemacr_speedup_r) void simpl156_state::init_joemacr() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201018, 0x020101b, read32_delegate(FUNC(simpl156_state::joemacr_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201018, 0x020101b, read32_delegate(*this, FUNC(simpl156_state::joemacr_speedup_r))); init_simpl156(); } @@ -1071,7 +1071,7 @@ READ32_MEMBER(simpl156_state::chainrec_speedup_r) void simpl156_state::init_chainrec() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201018, 0x020101b, read32_delegate(FUNC(simpl156_state::chainrec_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201018, 0x020101b, read32_delegate(*this, FUNC(simpl156_state::chainrec_speedup_r))); init_simpl156(); } @@ -1084,7 +1084,7 @@ READ32_MEMBER(simpl156_state::prtytime_speedup_r) void simpl156_state::init_prtytime() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201ae0, 0x0201ae3, read32_delegate(FUNC(simpl156_state::prtytime_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201ae0, 0x0201ae3, read32_delegate(*this, FUNC(simpl156_state::prtytime_speedup_r))); init_simpl156(); } @@ -1098,7 +1098,7 @@ READ32_MEMBER(simpl156_state::charlien_speedup_r) void simpl156_state::init_charlien() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201010, 0x0201013, read32_delegate(FUNC(simpl156_state::charlien_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201010, 0x0201013, read32_delegate(*this, FUNC(simpl156_state::charlien_speedup_r))); init_simpl156(); } @@ -1111,7 +1111,7 @@ READ32_MEMBER(simpl156_state::osman_speedup_r) void simpl156_state::init_osman() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201010, 0x0201013, read32_delegate(FUNC(simpl156_state::osman_speedup_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0201010, 0x0201013, read32_delegate(*this, FUNC(simpl156_state::osman_speedup_r))); init_simpl156(); } diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp index 172ef67ad3f..9f363ffbd86 100644 --- a/src/mame/drivers/simpsons.cpp +++ b/src/mame/drivers/simpsons.cpp @@ -350,11 +350,11 @@ void simpsons_state::simpsons(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(simpsons_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(simpsons_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(simpsons_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(simpsons_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 53, 23); m_k053246->set_palette("palette"); diff --git a/src/mame/drivers/sk101bl.cpp b/src/mame/drivers/sk101bl.cpp index 8a099badb0f..0e60fa81c86 100644 --- a/src/mame/drivers/sk101bl.cpp +++ b/src/mame/drivers/sk101bl.cpp @@ -170,7 +170,7 @@ void sk101bl_state::sk101bl(machine_config &config) screen.set_palette("palette"); HD44780(config, m_lcdc).set_lcd_size(1, 16); - m_lcdc->set_pixel_update_cb(FUNC(sk101bl_state::pixel_update), this); + m_lcdc->set_pixel_update_cb(FUNC(sk101bl_state::pixel_update)); PALETTE(config, "palette").set_entries(2); diff --git a/src/mame/drivers/skyarmy.cpp b/src/mame/drivers/skyarmy.cpp index d905c1895ce..f926047105b 100644 --- a/src/mame/drivers/skyarmy.cpp +++ b/src/mame/drivers/skyarmy.cpp @@ -153,7 +153,7 @@ void skyarmy_state::skyarmy_palette(palette_device &palette) const void skyarmy_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skyarmy_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skyarmy_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tilemap->set_scroll_cols(32); } diff --git a/src/mame/drivers/skylncr.cpp b/src/mame/drivers/skylncr.cpp index 4d6b135eb48..2216d43ab39 100644 --- a/src/mame/drivers/skylncr.cpp +++ b/src/mame/drivers/skylncr.cpp @@ -295,12 +295,12 @@ TILE_GET_INFO_MEMBER(skylncr_state::get_reel_4_tile_info) void skylncr_state::video_start() { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20 ); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skylncr_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20 ); - m_reel_1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); - m_reel_2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); - m_reel_3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_3_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); - m_reel_4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skylncr_state::get_reel_4_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); + m_reel_1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skylncr_state::get_reel_1_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); + m_reel_2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skylncr_state::get_reel_2_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); + m_reel_3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skylncr_state::get_reel_3_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); + m_reel_4_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skylncr_state::get_reel_4_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8 ); m_reel_2_tilemap->set_scroll_cols(0x40); m_reel_3_tilemap->set_scroll_cols(0x40); diff --git a/src/mame/drivers/slotcarn.cpp b/src/mame/drivers/slotcarn.cpp index 989ce132421..5892aaa50b9 100644 --- a/src/mame/drivers/slotcarn.cpp +++ b/src/mame/drivers/slotcarn.cpp @@ -39,8 +39,8 @@ class slotcarn_state : public driver_device { public: - slotcarn_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + slotcarn_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_backup_ram(*this, "backup_ram"), m_ram_attr(*this, "raattr"), m_ram_video(*this, "ravideo"), @@ -571,8 +571,8 @@ void slotcarn_state::slotcarn(machine_config &config) crtc.set_screen(m_screen); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_begin_update_callback(FUNC(slotcarn_state::crtc_begin_update), this); - crtc.set_update_row_callback(FUNC(slotcarn_state::crtc_update_row), this); + crtc.set_begin_update_callback(FUNC(slotcarn_state::crtc_begin_update)); + crtc.set_update_row_callback(FUNC(slotcarn_state::crtc_update_row)); crtc.out_hsync_callback().set(FUNC(slotcarn_state::hsync_changed)); crtc.out_vsync_callback().set_inputline(m_maincpu, 0); diff --git a/src/mame/drivers/sm1800.cpp b/src/mame/drivers/sm1800.cpp index 221b0636fdd..e2ae4f81e9d 100644 --- a/src/mame/drivers/sm1800.cpp +++ b/src/mame/drivers/sm1800.cpp @@ -189,7 +189,7 @@ void sm1800_state::sm1800(machine_config &config) I8275(config, m_crtc, 2000000); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(sm1800_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(sm1800_state::crtc_display_pixels)); I8251(config, m_uart, 0); } diff --git a/src/mame/drivers/smc777.cpp b/src/mame/drivers/smc777.cpp index fc78b3038e8..c1014c7618e 100644 --- a/src/mame/drivers/smc777.cpp +++ b/src/mame/drivers/smc777.cpp @@ -1144,7 +1144,7 @@ void smc777_state::smc777(machine_config &config) FLOPPY_CONNECTOR(config, "fdc:1", smc777_floppies, "ssdd", floppy_image_device::default_floppy_formats); SOFTWARE_LIST(config, "flop_list").set_original("smc777"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(smc777_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(smc777_state::quickload_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/snes.cpp b/src/mame/drivers/snes.cpp index 9b84e1c4d88..dc12b34e97b 100644 --- a/src/mame/drivers/snes.cpp +++ b/src/mame/drivers/snes.cpp @@ -1206,8 +1206,8 @@ void snes_console_state::machine_start() if (m_cartslot && m_cartslot->exists()) { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes20_lo_r),this), write8_delegate(FUNC(snes_console_state::snes20_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes20_hi_r),this), write8_delegate(FUNC(snes_console_state::snes20_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snes20_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snes20_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snes20_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snes20_hi_w))); m_maincpu->set_5a22_map(); m_type = m_cartslot->get_type(); @@ -1224,104 +1224,104 @@ void snes_console_state::machine_start() case SNES_ST018: // still unemulated break; case SNES_Z80GB: // skeleton support - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessgb_lo_r),this), write8_delegate(FUNC(snes_console_state::snessgb_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessgb_hi_r),this), write8_delegate(FUNC(snes_console_state::snessgb_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snessgb_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snessgb_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snessgb_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snessgb_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_SA1: // skeleton support - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessa1_lo_r),this), write8_delegate(FUNC(snes_console_state::snessa1_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessa1_hi_r),this), write8_delegate(FUNC(snes_console_state::snessa1_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snessa1_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snessa1_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snessa1_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snessa1_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_DSP: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x208000, 0x20ffff, 0, 0x9f0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_DSP_2MB: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x600000, 0x607fff, 0, 0x8f0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_DSP4: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x308000, 0x30ffff, 0, 0x8f0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_OBC1: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0xbf0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_GSU1: case SNES_GSU2: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessfx_lo_r),this), write8_delegate(FUNC(snes_console_state::snessfx_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessfx_hi_r),this), write8_delegate(FUNC(snes_console_state::snessfx_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snessfx_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snessfx_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snessfx_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snessfx_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_SDD1: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snessdd1_lo_r),this), write8_delegate(FUNC(snes_console_state::snessdd1_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snessdd1_hi_r),this), write8_delegate(FUNC(snes_console_state::snessdd1_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snessdd1_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snessdd1_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snessdd1_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snessdd1_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_BSX: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snesbsx_lo_r),this), write8_delegate(FUNC(snes_console_state::snesbsx_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snesbsx_hi_r),this), write8_delegate(FUNC(snes_console_state::snesbsx_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snesbsx_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snesbsx_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snesbsx_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snesbsx_hi_w))); m_maincpu->set_5a22_map(); break; // HiROM & HiROM + addons case SNES_MODE21: case SNES_BSXHI: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snes21_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snes21_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_DSP_MODE21: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snes21_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snes21_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_hi_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x006000, 0x007fff, 0, 0x9f0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); m_maincpu->set_5a22_map(); break; case SNES_SRTC: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes21_lo_r),this), write8_delegate(FUNC(snes_console_state::snes21_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes21_hi_r),this), write8_delegate(FUNC(snes_console_state::snes21_hi_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x002800, 0x002800, 0, 0xbf0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x002801, 0x002801, 0, 0xbf0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snes21_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snes21_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snes21_hi_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x002800, 0x002800, 0, 0xbf0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x002801, 0x002801, 0, 0xbf0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); m_maincpu->set_5a22_map(); break; case SNES_SPC7110: case SNES_SPC7110_RTC: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::snes7110_lo_r),this), write8_delegate(FUNC(snes_console_state::snes7110_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::snes7110_hi_r),this), write8_delegate(FUNC(snes_console_state::snes7110_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::snes7110_lo_r)), write8_delegate(*this, FUNC(snes_console_state::snes7110_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::snes7110_hi_r)), write8_delegate(*this, FUNC(snes_console_state::snes7110_hi_w))); m_maincpu->set_5a22_map(); break; case SNES_PFEST94: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(FUNC(snes_console_state::pfest94_lo_r),this), write8_delegate(FUNC(snes_console_state::pfest94_lo_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(FUNC(snes_console_state::pfest94_hi_r),this), write8_delegate(FUNC(snes_console_state::pfest94_hi_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x000000, 0x7dffff, read8_delegate(*this, FUNC(snes_console_state::pfest94_lo_r)), write8_delegate(*this, FUNC(snes_console_state::pfest94_lo_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x800000, 0xffffff, read8_delegate(*this, FUNC(snes_console_state::pfest94_hi_r)), write8_delegate(*this, FUNC(snes_console_state::pfest94_hi_w))); m_maincpu->set_5a22_map(); break; // pirate 'mappers' case SNES_POKEMON: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x800000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x800000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_TEKKEN2: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x8087ff, 0, 0x3f0000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_MCPIR1: case SNES_MCPIR2: - m_maincpu->space(AS_PROGRAM).install_write_handler(0xffff00, 0xffffff, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xffff00, 0xffffff, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_20COL: - m_maincpu->space(AS_PROGRAM).install_write_handler(0x008000, 0x008fff, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x008000, 0x008fff, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); break; case SNES_SOULBLAD: // reads from xxx0-xxx3in range [80-bf] return a fixed sequence of 4bits; reads in range [c0-ff] return open bus - m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x808003, 0, 0x3f7ff0, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc00000, 0xffffff, read8smo_delegate(FUNC(snes_console_state::snes_open_bus_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x808003, 0, 0x3f7ff0, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc00000, 0xffffff, read8smo_delegate(*this, FUNC(snes_console_state::snes_open_bus_r))); break; case SNES_BUGS: case SNES_BANANA: -// m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(FUNC(base_sns_cart_slot_device::chip_read),(base_sns_cart_slot_device*)m_cartslot)); -// m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(FUNC(base_sns_cart_slot_device::chip_write),(base_sns_cart_slot_device*)m_cartslot)); +// m_maincpu->space(AS_PROGRAM).install_read_handler(0x808000, 0x80ffff, 0, 0x780000, 0, read8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_read))); +// m_maincpu->space(AS_PROGRAM).install_write_handler(0x808000, 0x80ffff, 0, 0x780000, 0, write8sm_delegate(*m_cartslot, FUNC(base_sns_cart_slot_device::chip_write))); // m_maincpu->set_5a22_map(); break; } @@ -1359,10 +1359,10 @@ void snes_console_state::snes(machine_config &config) m_ppu->set_screen("screen"); SNES_CONTROL_PORT(config, m_ctrl1, snes_control_port_devices, "joypad"); - m_ctrl1->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb), this); + m_ctrl1->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb)); SNES_CONTROL_PORT(config, m_ctrl2, snes_control_port_devices, "joypad"); - m_ctrl2->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb), this); - m_ctrl2->set_gunlatch_callback(FUNC(snes_console_state::gun_latch_cb), this); + m_ctrl2->set_onscreen_callback(FUNC(snes_console_state::onscreen_cb)); + m_ctrl2->set_gunlatch_callback(FUNC(snes_console_state::gun_latch_cb)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/snesb.cpp b/src/mame/drivers/snesb.cpp index 1b5013d81ad..27ff7b6cc57 100644 --- a/src/mame/drivers/snesb.cpp +++ b/src/mame/drivers/snesb.cpp @@ -808,12 +808,12 @@ void snesb_state::init_kinstb() } m_shared_ram = std::make_unique<int8_t[]>(0x100); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x7810ff, read8_delegate(FUNC(snesb_state::sharedram_r),this), write8_delegate(FUNC(snesb_state::sharedram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x7810ff, read8_delegate(*this, FUNC(snesb_state::sharedram_r)), write8_delegate(*this, FUNC(snesb_state::sharedram_w))); /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes_hirom(); } @@ -853,9 +853,9 @@ void snesb_state::init_ffight2b() rom[0x7ffc] = 0x54; /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes(); } @@ -877,9 +877,9 @@ void snesb_state::init_iron() } /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes(); } @@ -907,9 +907,9 @@ void snesb_state::init_denseib() rom[0xfffd] = 0xf7; /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes_hirom(); } @@ -969,9 +969,9 @@ void snesb_state::init_denseib2() dst[0xfffd] = 0xf7; /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes_hirom(); } @@ -1001,9 +1001,9 @@ void snesb_state::init_legendsb() rom[0x7ffd] = 0x80; // extra inputs - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes(); } @@ -1060,16 +1060,16 @@ void snesb_state::init_sblast2b() dst[0xfffd] = 0x7a; /* protection checks */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x75bd37, 0x75bd37, read8_delegate(FUNC(snesb_state::sb2b_75bd37_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x6a6000, 0x6a6fff, read8_delegate(FUNC(snesb_state::sb2b_6a6xxx_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x75bd37, 0x75bd37, read8_delegate(*this, FUNC(snesb_state::sb2b_75bd37_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x6a6000, 0x6a6fff, read8_delegate(*this, FUNC(snesb_state::sb2b_6a6xxx_r))); /* handler to read boot code */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x007000, 0x007fff, read8_delegate(FUNC(snesb_state::sb2b_7xxx_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x007000, 0x007fff, read8_delegate(*this, FUNC(snesb_state::sb2b_7xxx_r))); /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes_hirom(); } @@ -1128,21 +1128,21 @@ void snesb_state::init_endless() dst[0x7ffd] = 0x80; /* protection checks */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x580000, 0x580fff, read8_delegate(FUNC(snesb_state::endless_580xxx_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x624b7f, 0x624b7f, read8_delegate(FUNC(snesb_state::endless_624b7f_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x580000, 0x580fff, read8_delegate(*this, FUNC(snesb_state::endless_580xxx_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x624b7f, 0x624b7f, read8_delegate(*this, FUNC(snesb_state::endless_624b7f_r))); /* work around missing content */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x800b, 0x800c, read8_delegate(FUNC(snesb_state::endless_800b_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x800b, 0x800c, read8_delegate(*this, FUNC(snesb_state::endless_800b_r))); m_shared_ram = std::make_unique<int8_t[]>(0x22); m_shared_ram2 = std::make_unique<int8_t[]>(0x22); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8_delegate(FUNC(snesb_state::sharedram_r),this), write8_delegate(FUNC(snesb_state::sharedram_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8_delegate(FUNC(snesb_state::sharedram2_r),this), write8_delegate(FUNC(snesb_state::sharedram2_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8_delegate(*this, FUNC(snesb_state::sharedram_r)), write8_delegate(*this, FUNC(snesb_state::sharedram_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8_delegate(*this, FUNC(snesb_state::sharedram2_r)), write8_delegate(*this, FUNC(snesb_state::sharedram2_w))); /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes(); } @@ -1281,13 +1281,13 @@ void snesb_state::init_venom() m_shared_ram = std::make_unique<int8_t[]>(0x22); m_shared_ram2 = std::make_unique<int8_t[]>(0x22); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8_delegate(FUNC(snesb_state::sharedram_r),this), write8_delegate(FUNC(snesb_state::sharedram_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8_delegate(FUNC(snesb_state::sharedram2_r),this), write8_delegate(FUNC(snesb_state::sharedram2_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781000, 0x781021, read8_delegate(*this, FUNC(snesb_state::sharedram_r)), write8_delegate(*this, FUNC(snesb_state::sharedram_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x781200, 0x781221, read8_delegate(*this, FUNC(snesb_state::sharedram2_r)), write8_delegate(*this, FUNC(snesb_state::sharedram2_w))); /* extra inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(FUNC(snesb_state::snesb_dsw1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(FUNC(snesb_state::snesb_dsw2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(FUNC(snesb_state::snesb_coin_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770071, 0x770071, read8_delegate(*this, FUNC(snesb_state::snesb_dsw1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770073, 0x770073, read8_delegate(*this, FUNC(snesb_state::snesb_dsw2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x770079, 0x770079, read8_delegate(*this, FUNC(snesb_state::snesb_coin_r))); init_snes(); } diff --git a/src/mame/drivers/snk68.cpp b/src/mame/drivers/snk68.cpp index 6a8d9965d07..c980c5f6494 100644 --- a/src/mame/drivers/snk68.cpp +++ b/src/mame/drivers/snk68.cpp @@ -66,8 +66,8 @@ void snk68_state::pow_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x040000, 0x043fff).ram(); - map(0x080000, 0x080000).lr8("P2_r", [this]() -> u8 { return m_p2_io->read(); }); - map(0x080001, 0x080001).lr8("P1_r", [this]() -> u8 { return m_p1_io->read(); }); + map(0x080000, 0x080000).lr8(NAME([this] () -> u8 { return m_p2_io->read(); })); + map(0x080001, 0x080001).lr8(NAME([this] () -> u8 { return m_p1_io->read(); })); map(0x080000, 0x080000).w(FUNC(snk68_state::sound_w)); map(0x0c0000, 0x0c0001).portr("SYSTEM"); map(0x0c0001, 0x0c0001).w(FUNC(snk68_state::flipscreen_w)); // + char bank @@ -110,12 +110,12 @@ void searchar_state::searchar_map(address_map &map) { map(0x000000, 0x03ffff).rom(); map(0x040000, 0x043fff).ram(); - map(0x080001, 0x080001).lr8("P1_invert_r", [this]() -> u8 { return m_p1_io->read() ^ m_invert_controls; }); - map(0x080003, 0x080003).lr8("P2_invert_r", [this]() -> u8 { return m_p2_io->read() ^ m_invert_controls; }); - map(0x080005, 0x080005).lr8("SYS_invert_r", [this]() -> u8 { return m_system_io->read() ^ m_invert_controls; }); + map(0x080001, 0x080001).lr8(NAME([this] () -> u8 { return m_p1_io->read() ^ m_invert_controls; })); + map(0x080003, 0x080003).lr8(NAME([this] () -> u8 { return m_p2_io->read() ^ m_invert_controls; })); + map(0x080005, 0x080005).lr8(NAME([this] () -> u8 { return m_system_io->read() ^ m_invert_controls; })); map(0x080000, 0x080000).w(FUNC(searchar_state::sound_w)); /* top byte unknown, bottom is protection in ikari3 and streetsm */ - map(0x080007, 0x080007).lw8("invctrl_w", [this](u8 data){ m_invert_controls = ((data & 0xff) == 0x07) ? 0xff : 0x00; } ); + map(0x080007, 0x080007).lw8(NAME([this] (u8 data){ m_invert_controls = ((data & 0xff) == 0x07) ? 0xff : 0x00; } )); map(0x0c0001, 0x0c0001).w(FUNC(searchar_state::flipscreen_w)); map(0x0c0000, 0x0c0001).r(FUNC(searchar_state::rotary_1_r)); /* Player 1 rotary */ map(0x0c8000, 0x0c8001).r(FUNC(searchar_state::rotary_2_r)); /* Player 2 rotary */ @@ -154,7 +154,7 @@ void snk68_state::sound_io_map(address_map &map) map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w)); map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w)); map(0x40, 0x40).w(FUNC(snk68_state::D7759_write_port_0_w)); - map(0x80, 0x80).lw8("upd_reset", [this](u8 data){ m_upd7759->reset_w(BIT(data, 7)); } ); + map(0x80, 0x80).lw8(NAME([this] (u8 data) { m_upd7759->reset_w(BIT(data, 7)); } )); } /******************************************************************************/ @@ -601,7 +601,7 @@ void snk68_state::pow(machine_config &config) SNK68_SPR(config, m_sprites, 0); m_sprites->set_gfxdecode_tag(m_gfxdecode); - m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_pow), this); + m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_pow)); m_sprites->set_xpos_shift(12); m_sprites->set_color_entry_mask(0x7f); @@ -622,7 +622,7 @@ void snk68_state::pow(machine_config &config) void snk68_state::streetsm(machine_config &config) { pow(config); - m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_notpow), this); + m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_notpow)); } void searchar_state::searchar(machine_config &config) diff --git a/src/mame/drivers/snowbros.cpp b/src/mame/drivers/snowbros.cpp index b15e85c5820..207c3be4cd8 100644 --- a/src/mame/drivers/snowbros.cpp +++ b/src/mame/drivers/snowbros.cpp @@ -2817,7 +2817,7 @@ void snowbros_state::init_4in1boot() buffer[i] = src[i^0x4000]; memcpy(src,&buffer[0],len); } - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(FUNC(snowbros_state::_4in1_02_read),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(*this, FUNC(snowbros_state::_4in1_02_read))); } void snowbros_state::init_snowbro3() @@ -2844,7 +2844,7 @@ READ16_MEMBER(snowbros_state::_3in1_read) void snowbros_state::init_3in1semi() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(FUNC(snowbros_state::_3in1_read),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(*this, FUNC(snowbros_state::_3in1_read))); } @@ -2855,7 +2855,7 @@ READ16_MEMBER(snowbros_state::cookbib3_read) void snowbros_state::init_cookbib3() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(FUNC(snowbros_state::cookbib3_read),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x200001, read16_delegate(*this, FUNC(snowbros_state::cookbib3_read))); } void snowbros_state::init_pzlbreak() @@ -2893,7 +2893,7 @@ void snowbros_state::init_toto() } // protection? (just return 0x07) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x500006, 0x500007, read16_delegate(FUNC(snowbros_state::toto_read),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x500006, 0x500007, read16_delegate(*this, FUNC(snowbros_state::toto_read))); } void snowbros_state::init_hyperpac() diff --git a/src/mame/drivers/sorcerer.cpp b/src/mame/drivers/sorcerer.cpp index 446f78ea8e3..ed7ac04a44f 100644 --- a/src/mame/drivers/sorcerer.cpp +++ b/src/mame/drivers/sorcerer.cpp @@ -488,8 +488,8 @@ void sorcerer_state::sorcerer(machine_config &config) INPUT_BUFFER(config, "cent_status_in"); /* quickload */ - SNAPSHOT(config, "snapshot", "snp", attotime::from_seconds(2)).set_load_callback(FUNC(sorcerer_state::snapshot_cb), this); - QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(sorcerer_state::quickload_cb), this); + SNAPSHOT(config, "snapshot", "snp", attotime::from_seconds(2)).set_load_callback(FUNC(sorcerer_state::snapshot_cb)); + QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(sorcerer_state::quickload_cb)); CASSETTE(config, m_cassette1); m_cassette1->set_formats(sorcerer_cassette_formats); diff --git a/src/mame/drivers/spartanxtec.cpp b/src/mame/drivers/spartanxtec.cpp index 6ff57310e15..5855b4d86eb 100644 --- a/src/mame/drivers/spartanxtec.cpp +++ b/src/mame/drivers/spartanxtec.cpp @@ -113,7 +113,7 @@ TILE_GET_INFO_MEMBER(spartanxtec_state::get_kungfum_bg_tile_info) void spartanxtec_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spartanxtec_state::get_kungfum_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spartanxtec_state::get_kungfum_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/drivers/spc1500.cpp b/src/mame/drivers/spc1500.cpp index 8da3f204d41..d5e95b54b4c 100644 --- a/src/mame/drivers/spc1500.cpp +++ b/src/mame/drivers/spc1500.cpp @@ -900,8 +900,8 @@ void spc1500_state::spc1500(machine_config &config) m_vdg->set_screen("screen"); m_vdg->set_show_border_area(false); m_vdg->set_char_width(8); - m_vdg->set_update_row_callback(FUNC(spc1500_state::crtc_update_row), this); - m_vdg->set_reconfigure_callback(FUNC(spc1500_state::crtc_reconfig), this); + m_vdg->set_update_row_callback(FUNC(spc1500_state::crtc_update_row)); + m_vdg->set_reconfigure_callback(FUNC(spc1500_state::crtc_reconfig)); MCFG_VIDEO_START_OVERRIDE(spc1500_state, spc) diff --git a/src/mame/drivers/spdheat.cpp b/src/mame/drivers/spdheat.cpp index 4a811f553b0..8b8066ee9b6 100644 --- a/src/mame/drivers/spdheat.cpp +++ b/src/mame/drivers/spdheat.cpp @@ -58,10 +58,10 @@ void spdheat_state::machine_reset() void spdheat_state::video_start() { - m_fg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spdheat_state::get_fg_tile_info<0>), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spdheat_state::get_fg_tile_info<1>), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spdheat_state::get_fg_tile_info<2>), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spdheat_state::get_fg_tile_info<3>), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spdheat_state::get_fg_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spdheat_state::get_fg_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spdheat_state::get_fg_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spdheat_state::get_fg_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/spectrum.cpp b/src/mame/drivers/spectrum.cpp index a59235f7904..56acc9e4696 100644 --- a/src/mame/drivers/spectrum.cpp +++ b/src/mame/drivers/spectrum.cpp @@ -736,8 +736,8 @@ void spectrum_state::spectrum_common(machine_config &config) m_exp->nmi_handler().set_inputline(m_maincpu, INPUT_LINE_NMI); /* devices */ - SNAPSHOT(config, "snapshot", "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx").set_load_callback(FUNC(spectrum_state::snapshot_cb), this); - QUICKLOAD(config, "quickload", "raw,scr", attotime::from_seconds(2)).set_load_callback(FUNC(spectrum_state::quickload_cb), this); // The delay prevents the screen from being cleared by the RAM test at boot + SNAPSHOT(config, "snapshot", "ach,frz,plusd,prg,sem,sit,sna,snp,snx,sp,z80,zx").set_load_callback(FUNC(spectrum_state::snapshot_cb)); + QUICKLOAD(config, "quickload", "raw,scr", attotime::from_seconds(2)).set_load_callback(FUNC(spectrum_state::quickload_cb)); // The delay prevents the screen from being cleared by the RAM test at boot CASSETTE(config, m_cassette); m_cassette->set_formats(tzx_cassette_formats); diff --git a/src/mame/drivers/spiders.cpp b/src/mame/drivers/spiders.cpp index b076d4a5e70..e8d6c599feb 100644 --- a/src/mame/drivers/spiders.cpp +++ b/src/mame/drivers/spiders.cpp @@ -527,7 +527,7 @@ void spiders_state::spiders(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(spiders_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(spiders_state::crtc_update_row)); crtc.out_de_callback().set("ic60", FUNC(ttl74123_device::a_w)); PIA6821(config, m_pia[0], 0); diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp index e039b222fc2..d49b6069dd1 100644 --- a/src/mame/drivers/splash.cpp +++ b/src/mame/drivers/splash.cpp @@ -81,7 +81,7 @@ void splash_state::splash_map(address_map &map) map(0x840002, 0x840003).portr("DSW2"); map(0x840004, 0x840005).portr("P1"); map(0x840006, 0x840007).portr("P2"); - map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x84000a, 0x84000a).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x880000, 0x8817ff).ram().w(FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */ map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */ @@ -161,7 +161,7 @@ void splash_state::roldfrog_map(address_map &map) map(0x840002, 0x840003).portr("DSW2"); map(0x840004, 0x840005).portr("P1"); map(0x840006, 0x840007).portr("P2"); - map(0x84000a, 0x84000a).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x84000a, 0x84000a).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x84000f, 0x84000f).w(m_soundlatch, FUNC(generic_latch_8_device::write)); map(0x880000, 0x8817ff).ram().w(FUNC(splash_state::vram_w)).share("videoram"); /* Video RAM */ map(0x881800, 0x881803).ram().share("vregs"); /* Scroll registers */ @@ -1436,8 +1436,8 @@ void funystrp_state::init_funystrp() membank("sound_bank")->configure_entries(0, 16, &ROM[0x00000], 0x8000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x1fffff, write16_delegate(FUNC(funystrp_state::protection_w), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x1fffff, read16_delegate(FUNC(funystrp_state::protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x1fffff, write16_delegate(*this, FUNC(funystrp_state::protection_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x1fffff, read16_delegate(*this, FUNC(funystrp_state::protection_r))); } GAME( 1992, splash, 0, splash, splash, splash_state, init_splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spoker.cpp b/src/mame/drivers/spoker.cpp index 149228cff12..463fef68d24 100644 --- a/src/mame/drivers/spoker.cpp +++ b/src/mame/drivers/spoker.cpp @@ -151,8 +151,8 @@ WRITE8_MEMBER(spoker_state::fg_color_w) void spoker_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 32, 128, 8); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spoker_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 128, 8); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spoker_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/drivers/spool99.cpp b/src/mame/drivers/spool99.cpp index e7b57a8580e..c1ebdc6c3c3 100644 --- a/src/mame/drivers/spool99.cpp +++ b/src/mame/drivers/spool99.cpp @@ -162,7 +162,7 @@ TILE_GET_INFO_MEMBER(spool99_state::get_tile_info) void spool99_state::video_start() { - m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spool99_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_sc0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spool99_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } uint32_t spool99_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/sprint2.cpp b/src/mame/drivers/sprint2.cpp index 3db9afd6015..aecd99d4385 100644 --- a/src/mame/drivers/sprint2.cpp +++ b/src/mame/drivers/sprint2.cpp @@ -70,7 +70,7 @@ int sprint2_state::service_mode() } -INTERRUPT_GEN_MEMBER(sprint2_state::sprint2) +INTERRUPT_GEN_MEMBER(sprint2_state::sprint2_irq) { /* handle steering wheels */ @@ -494,7 +494,7 @@ void sprint2_state::sprint2(machine_config &config) /* basic machine hardware */ M6502(config, m_maincpu, 12.096_MHz_XTAL / 16); m_maincpu->set_addrmap(AS_PROGRAM, &sprint2_state::sprint2_map); - m_maincpu->set_vblank_int("screen", FUNC(sprint2_state::sprint2)); + m_maincpu->set_vblank_int("screen", FUNC(sprint2_state::sprint2_irq)); WATCHDOG_TIMER(config, m_watchdog).set_vblank_count(m_screen, 8); diff --git a/src/mame/drivers/spy.cpp b/src/mame/drivers/spy.cpp index 856919cec3e..dacaf45fa28 100644 --- a/src/mame/drivers/spy.cpp +++ b/src/mame/drivers/spy.cpp @@ -514,13 +514,13 @@ void spy_state::spy(machine_config &config) K052109(config, m_k052109, 0); // 051961 on schematics m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(spy_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(spy_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, M6809_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(spy_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(spy_state::sprite_callback)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/spyhuntertec.cpp b/src/mame/drivers/spyhuntertec.cpp index 59ebd1ced16..f13f8ba2fa1 100644 --- a/src/mame/drivers/spyhuntertec.cpp +++ b/src/mame/drivers/spyhuntertec.cpp @@ -32,8 +32,8 @@ sound system appears to be the same as 'spartanxtec.cpp' class spyhuntertec_state : public driver_device { public: - spyhuntertec_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + spyhuntertec_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_analog_timer(*this, "analog_timer"), @@ -242,10 +242,10 @@ TILE_GET_INFO_MEMBER(spyhuntertec_state::spyhunt_get_alpha_tile_info) void spyhuntertec_state::video_start() { /* initialize the background tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spyhuntertec_state::spyhunt_get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(spyhuntertec_state::spyhunt_bg_scan),this), 64,16, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spyhuntertec_state::spyhunt_get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(spyhuntertec_state::spyhunt_bg_scan)), 64,16, 64,32); /* initialize the text tilemap */ - m_alpha_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spyhuntertec_state::spyhunt_get_alpha_tile_info),this), TILEMAP_SCAN_COLS, 16,8, 32,32); + m_alpha_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spyhuntertec_state::spyhunt_get_alpha_tile_info)), TILEMAP_SCAN_COLS, 16,8, 32,32); m_alpha_tilemap->set_transparent_pen(0); m_alpha_tilemap->set_scrollx(0, 16); diff --git a/src/mame/drivers/squale.cpp b/src/mame/drivers/squale.cpp index 65c33c5cd0b..08d83bec5de 100644 --- a/src/mame/drivers/squale.cpp +++ b/src/mame/drivers/squale.cpp @@ -840,7 +840,7 @@ void squale_state::squale(machine_config &config) SOFTWARE_LIST(config, "flop525_list").set_original("squale"); /* Cartridge slot */ - GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "squale_cart").set_device_load(FUNC(squale_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_linear_slot, "squale_cart").set_device_load(FUNC(squale_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("squale_cart"); } diff --git a/src/mame/drivers/srmp2.cpp b/src/mame/drivers/srmp2.cpp index fd7352d610e..100d4cd35a7 100644 --- a/src/mame/drivers/srmp2.cpp +++ b/src/mame/drivers/srmp2.cpp @@ -1188,7 +1188,7 @@ void srmp2_state::srmp3(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag("gfxdecode"); - m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); @@ -1240,7 +1240,7 @@ void srmp2_state::mjyuugi(machine_config &config) SETA001_SPRITE(config, m_seta001, 0); m_seta001->set_gfxdecode_tag("gfxdecode"); - m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback), this); + m_seta001->set_gfxbank_callback(FUNC(srmp2_state::srmp3_gfxbank_callback)); /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); diff --git a/src/mame/drivers/ssem.cpp b/src/mame/drivers/ssem.cpp index 98b2927edeb..62b543c48cf 100644 --- a/src/mame/drivers/ssem.cpp +++ b/src/mame/drivers/ssem.cpp @@ -648,7 +648,7 @@ void ssem_state::ssem(machine_config &config) PALETTE(config, "palette", palette_device::MONOCHROME); /* quickload */ - QUICKLOAD(config, "quickload", "snp,asm").set_load_callback(FUNC(ssem_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "snp,asm").set_load_callback(FUNC(ssem_state::quickload_cb)); } diff --git a/src/mame/drivers/sshangha.cpp b/src/mame/drivers/sshangha.cpp index ae800c6bc95..673de4f8907 100644 --- a/src/mame/drivers/sshangha.cpp +++ b/src/mame/drivers/sshangha.cpp @@ -443,8 +443,8 @@ void sshangha_state::sshangha(machine_config &config) m_tilegen->set_pf2_col_bank(0x20); m_tilegen->set_pf1_col_mask(0x0f); m_tilegen->set_pf2_col_mask(0x0f); - m_tilegen->set_bank1_callback(FUNC(sshangha_state::bank_callback), this); - m_tilegen->set_bank2_callback(FUNC(sshangha_state::bank_callback), this); + m_tilegen->set_bank1_callback(FUNC(sshangha_state::bank_callback)); + m_tilegen->set_bank2_callback(FUNC(sshangha_state::bank_callback)); m_tilegen->set_pf12_8x8_bank(0); m_tilegen->set_pf12_16x16_bank(1); m_tilegen->set_gfxdecode_tag("gfxdecode"); diff --git a/src/mame/drivers/sshot.cpp b/src/mame/drivers/sshot.cpp index 0cfeabd8617..2facbbdaf4a 100644 --- a/src/mame/drivers/sshot.cpp +++ b/src/mame/drivers/sshot.cpp @@ -212,7 +212,7 @@ TILE_GET_INFO_MEMBER(supershot_state::get_supershot_text_tile_info) void supershot_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supershot_state::get_supershot_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supershot_state::get_supershot_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t supershot_state::screen_update_supershot(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/ssingles.cpp b/src/mame/drivers/ssingles.cpp index 01681aef641..bf6df8a76e3 100644 --- a/src/mame/drivers/ssingles.cpp +++ b/src/mame/drivers/ssingles.cpp @@ -571,7 +571,7 @@ void ssingles_state::ssingles(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(ssingles_state::ssingles_update_row), this); + crtc.set_update_row_callback(FUNC(ssingles_state::ssingles_update_row)); crtc.out_vsync_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); /* sound hardware */ @@ -595,7 +595,7 @@ void ssingles_state::atamanot(machine_config &config) m_maincpu->set_addrmap(AS_IO, &ssingles_state::atamanot_io_map); mc6845_device &crtc(*subdevice<mc6845_device>("crtc")); - crtc.set_update_row_callback(FUNC(ssingles_state::atamanot_update_row), this); + crtc.set_update_row_callback(FUNC(ssingles_state::atamanot_update_row)); crtc.out_vsync_callback().set(FUNC(ssingles_state::atamanot_irq)); subdevice<gfxdecode_device>("gfxdecode")->set_info(gfx_atamanot); diff --git a/src/mame/drivers/stadhero.cpp b/src/mame/drivers/stadhero.cpp index c5b66a9551a..de0bc01baa3 100644 --- a/src/mame/drivers/stadhero.cpp +++ b/src/mame/drivers/stadhero.cpp @@ -60,7 +60,7 @@ void stadhero_state::main_map(address_map &map) map(0x240010, 0x240017).w(m_tilegen, FUNC(deco_bac06_device::pf_control_1_w)); map(0x260000, 0x261fff).rw(m_tilegen, FUNC(deco_bac06_device::pf_data_r), FUNC(deco_bac06_device::pf_data_w)); map(0x30c000, 0x30c001).portr("INPUTS"); - map(0x30c002, 0x30c002).lr8("30c002", [this]() { return uint8_t(m_coin->read()); }); + map(0x30c002, 0x30c002).lr8(NAME([this] () { return uint8_t(m_coin->read()); })); map(0x30c003, 0x30c003).r(FUNC(stadhero_state::mystery_r)); map(0x30c004, 0x30c005).portr("DSW").w(FUNC(stadhero_state::int_ack_w)); map(0x30c007, 0x30c007).w(m_soundlatch, FUNC(generic_latch_8_device::write)); diff --git a/src/mame/drivers/starfire.cpp b/src/mame/drivers/starfire.cpp index 18175becd56..cd7bc37214d 100644 --- a/src/mame/drivers/starfire.cpp +++ b/src/mame/drivers/starfire.cpp @@ -450,8 +450,8 @@ ROM_END void starfire_state::init_starfire() { - m_input_read = read8_delegate(FUNC(starfire_state::starfire_input_r),this); - m_io2_write = write8_delegate(FUNC(starfire_state::starfire_sound_w),this); + m_input_read = read8_delegate(*this, FUNC(starfire_state::starfire_input_r)); + m_io2_write = write8_delegate(*this, FUNC(starfire_state::starfire_sound_w)); /* register for state saving */ save_item(NAME(m_prev_sound)); @@ -459,8 +459,8 @@ void starfire_state::init_starfire() void starfire_state::init_fireone() { - m_input_read = read8_delegate(FUNC(starfire_state::fireone_input_r),this); - m_io2_write = write8_delegate(FUNC(starfire_state::fireone_sound_w),this); + m_input_read = read8_delegate(*this, FUNC(starfire_state::fireone_input_r)); + m_io2_write = write8_delegate(*this, FUNC(starfire_state::fireone_sound_w)); /* register for state saving */ save_item(NAME(m_fireone_select)); diff --git a/src/mame/drivers/statriv2.cpp b/src/mame/drivers/statriv2.cpp index bf6c4c836cb..a7edc0ff4a4 100644 --- a/src/mame/drivers/statriv2.cpp +++ b/src/mame/drivers/statriv2.cpp @@ -187,12 +187,12 @@ void statriv2_state::statriv2_palette(palette_device &palette) const void statriv2_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(statriv2_state::horizontal_tile_info), this), TILEMAP_SCAN_ROWS, 8, 15, 64, 16); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(statriv2_state::horizontal_tile_info)), TILEMAP_SCAN_ROWS, 8, 15, 64, 16); } VIDEO_START_MEMBER(statriv2_state,vertical) { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(statriv2_state::vertical_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(statriv2_state::vertical_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } @@ -1698,18 +1698,18 @@ void statriv2_state::init_laserdisc() { address_space &iospace = m_maincpu->space(AS_IO); iospace.install_readwrite_handler(0x28, 0x2b, - read8_delegate([this](address_space &space, offs_t offset, uint8_t mem_mask) -> uint8_t + read8_delegate(*this, NAME([this] (address_space &space, offs_t offset, uint8_t mem_mask) -> uint8_t { uint8_t result = 0x00; if (offset == 1) result = 0x18; logerror("%s:ld read ($%02X) = %02X\n", machine().describe_context(), 0x28 + offset, result); return result; - },"write_lambda"), - write8_delegate([this](address_space &space, offs_t offset, uint8_t data, uint8_t mem_mask) + })), + write8_delegate(*this, NAME([this] (address_space &space, offs_t offset, uint8_t data, uint8_t mem_mask) { logerror("%s:ld write ($%02X) = %02X\n", machine().describe_context(), 0x28 + offset, data); - },"read_lambda") + })) ); } diff --git a/src/mame/drivers/storio.cpp b/src/mame/drivers/storio.cpp index 74037d65289..430c9ef7e9a 100644 --- a/src/mame/drivers/storio.cpp +++ b/src/mame/drivers/storio.cpp @@ -105,7 +105,7 @@ void vtech_storio_state::vtech_storio(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vtech_storio_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(vtech_storio_state::cart_load), this); + m_cart->set_device_load(FUNC(vtech_storio_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("vtech_storio_cart"); } diff --git a/src/mame/drivers/studio2.cpp b/src/mame/drivers/studio2.cpp index a240f8d3e2d..8707fbf2ab2 100644 --- a/src/mame/drivers/studio2.cpp +++ b/src/mame/drivers/studio2.cpp @@ -530,9 +530,9 @@ void studio2_state::machine_start() if (m_cart->exists()) { // these have to be installed only if a cart is present, because they partially overlap the built-in game - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400, 0x07ff, read8_delegate(FUNC(studio2_state::cart_400), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0a00, 0x0bff, read8_delegate(FUNC(studio2_state::cart_a00), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e00, 0x0fff, read8_delegate(FUNC(studio2_state::cart_e00), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400, 0x07ff, read8_delegate(*this, FUNC(studio2_state::cart_400))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0a00, 0x0bff, read8_delegate(*this, FUNC(studio2_state::cart_a00))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e00, 0x0fff, read8_delegate(*this, FUNC(studio2_state::cart_e00))); } // register for state saving @@ -544,8 +544,8 @@ void mpt02_state::machine_start() if (m_cart->exists()) { // these have to be installed only if a cart is present, because they partially overlap the built-in game - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400, 0x07ff, read8_delegate(FUNC(studio2_state::cart_400), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c00, 0x0fff, read8_delegate(FUNC(mpt02_state::cart_c00), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0400, 0x07ff, read8_delegate(*this, FUNC(studio2_state::cart_400))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c00, 0x0fff, read8_delegate(*this, FUNC(mpt02_state::cart_c00))); } // register for state saving @@ -647,7 +647,7 @@ DEVICE_IMAGE_LOAD_MEMBER( studio2_state::cart_load ) void studio2_state::studio2_cartslot(machine_config &config) { - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "studio2_cart", "st2,bin,rom").set_device_load(FUNC(studio2_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "studio2_cart", "st2,bin,rom").set_device_load(FUNC(studio2_state::cart_load)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("studio2"); diff --git a/src/mame/drivers/stuntair.cpp b/src/mame/drivers/stuntair.cpp index 90595acce81..18b6dd82451 100644 --- a/src/mame/drivers/stuntair.cpp +++ b/src/mame/drivers/stuntair.cpp @@ -207,10 +207,10 @@ TILE_GET_INFO_MEMBER(stuntair_state::get_stuntair_bg_tile_info) void stuntair_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stuntair_state::get_stuntair_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stuntair_state::get_stuntair_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stuntair_state::get_stuntair_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stuntair_state::get_stuntair_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/stv.cpp b/src/mame/drivers/stv.cpp index 7880b82b229..5ef8a6f6f68 100644 --- a/src/mame/drivers/stv.cpp +++ b/src/mame/drivers/stv.cpp @@ -435,8 +435,8 @@ void stv_state::init_stv() m_maincpu->sh2drc_set_options(SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL); m_slave->sh2drc_set_options(SH2DRC_STRICT_VERIFY|SH2DRC_STRICT_PCREL); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::stv_ioga_w32),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::stv_ioga_w32),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stv_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stv_ioga_w32))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stv_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stv_ioga_w32))); m_maincpu->sh2drc_add_fastram(0x00000000, 0x0007ffff, 1, &m_rom[0]); m_maincpu->sh2drc_add_fastram(0x00200000, 0x002fffff, 0, &m_workram_l[0]); @@ -451,8 +451,8 @@ void stv_state::init_stv() void stv_state::init_critcrsh() { init_stv(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::critcrsh_ioga_r32),this), write32_delegate(FUNC(stv_state::stv_ioga_w32),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::critcrsh_ioga_r32),this), write32_delegate(FUNC(stv_state::stv_ioga_w32),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::critcrsh_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stv_ioga_w32))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::critcrsh_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stv_ioga_w32))); } /* @@ -487,11 +487,11 @@ void stv_state::init_magzun() init_stv(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::magzun_ioga_r32),this), write32_delegate(FUNC(stv_state::magzun_ioga_w32),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::magzun_ioga_r32),this), write32_delegate(FUNC(stv_state::magzun_ioga_w32),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::magzun_ioga_r32)), write32_delegate(*this, FUNC(stv_state::magzun_ioga_w32))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::magzun_ioga_r32)), write32_delegate(*this, FUNC(stv_state::magzun_ioga_w32))); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x608e830, 0x608e833, read32_delegate(FUNC(stv_state::magzun_hef_hack_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x60ff3b4, 0x60ff3b7, read32_delegate(FUNC(stv_state::magzun_rx_hack_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x608e830, 0x608e833, read32_delegate(*this, FUNC(stv_state::magzun_hef_hack_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x60ff3b4, 0x60ff3b7, read32_delegate(*this, FUNC(stv_state::magzun_rx_hack_r))); /* Program ROM patches, don't understand how to avoid these two checks ... */ { @@ -507,8 +507,8 @@ void stv_state::init_magzun() void stv_state::init_stvmp() { init_stv(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stvmp_ioga_r32),this), write32_delegate(FUNC(stv_state::stvmp_ioga_w32),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stvmp_ioga_r32),this), write32_delegate(FUNC(stv_state::stvmp_ioga_w32),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stvmp_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stvmp_ioga_w32))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stvmp_ioga_r32)), write32_delegate(*this, FUNC(stv_state::stvmp_ioga_w32))); } @@ -761,8 +761,8 @@ void stv_state::init_batmanfr() init_stv(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x04800000, 0x04800003, write32_delegate(FUNC(stv_state::batmanfr_sound_comms_w),this)); - m_slave->space(AS_PROGRAM).install_write_handler(0x04800000, 0x04800003, write32_delegate(FUNC(stv_state::batmanfr_sound_comms_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x04800000, 0x04800003, write32_delegate(*this, FUNC(stv_state::batmanfr_sound_comms_w))); + m_slave->space(AS_PROGRAM).install_write_handler(0x04800000, 0x04800003, write32_delegate(*this, FUNC(stv_state::batmanfr_sound_comms_w))); m_minit_boost = m_sinit_boost = 0; m_minit_boost_timeslice = m_sinit_boost_timeslice = attotime::from_usec(50); @@ -992,12 +992,12 @@ WRITE32_MEMBER(stv_state::decathlt_prot_srcaddr_w) void stv_state::init_decathlt() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x2000000, 0x37fffff, write32_delegate(FUNC(stv_state::decathlt_prot_srcaddr_w), this)); // set compressed data source address, write data + m_maincpu->space(AS_PROGRAM).install_write_handler(0x2000000, 0x37fffff, write32_delegate(*this, FUNC(stv_state::decathlt_prot_srcaddr_w))); // set compressed data source address, write data // really needs installing over the whole range, with fallbacks to read rom if device is disabled or isn't accessed on given address - m_maincpu->space(AS_PROGRAM).install_read_handler(0x27ffff8, 0x27ffffb, read32_delegate(FUNC(stv_state::decathlt_prot_r), this)); // read decompressed data - m_maincpu->space(AS_PROGRAM).install_read_handler(0x2fffff8, 0x2fffffb, read32_delegate(FUNC(stv_state::decathlt_prot_r), this)); // ^ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x37ffff8, 0x37ffffb, read32_delegate(FUNC(stv_state::decathlt_prot_r), this)); // ^ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x27ffff8, 0x27ffffb, read32_delegate(*this, FUNC(stv_state::decathlt_prot_r))); // read decompressed data + m_maincpu->space(AS_PROGRAM).install_read_handler(0x2fffff8, 0x2fffffb, read32_delegate(*this, FUNC(stv_state::decathlt_prot_r))); // ^ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x37ffff8, 0x37ffffb, read32_delegate(*this, FUNC(stv_state::decathlt_prot_r))); // ^ m_protbank->configure_entry(0, memregion("cart")->base() + 0x0000000); m_protbank->configure_entry(1, memregion("cart")->base() + 0x0800000); @@ -1028,8 +1028,8 @@ void stv_state::init_nameclv3() void stv_state::init_hopper() { init_stv(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this)); - m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(FUNC(stv_state::stv_ioga_r32),this), write32_delegate(FUNC(stv_state::hop_ioga_w32),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stv_ioga_r32)), write32_delegate(*this, FUNC(stv_state::hop_ioga_w32))); + m_slave->space(AS_PROGRAM).install_readwrite_handler(0x00400000, 0x0040003f, read32_delegate(*this, FUNC(stv_state::stv_ioga_r32)), write32_delegate(*this, FUNC(stv_state::hop_ioga_w32))); } void stv_state::stv_mem(address_map &map) @@ -1255,7 +1255,7 @@ void stv_state::shienryu(machine_config &config) } #define STV_CARTSLOT_ADD(_tag, _load) \ - GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "stv_cart").set_device_load(FUNC(stv_state::_load), this); + GENERIC_CARTSLOT(config, _tag, generic_plain_slot, "stv_cart").set_device_load(FUNC(stv_state::_load)); void stv_state::stv_cartslot(machine_config &config) { @@ -1365,7 +1365,7 @@ MACHINE_START_MEMBER(stv_state, stv) stv_register_protection_savestates(); // machine/stvprot.c - m_audiocpu->set_reset_callback(write_line_delegate(FUNC(stv_state::m68k_reset_callback),this)); + m_audiocpu->set_reset_callback(*this, FUNC(stv_state::m68k_reset_callback)); } diff --git a/src/mame/drivers/subsino.cpp b/src/mame/drivers/subsino.cpp index 2099f1a6294..331eb20bde6 100644 --- a/src/mame/drivers/subsino.cpp +++ b/src/mame/drivers/subsino.cpp @@ -400,7 +400,7 @@ TILE_GET_INFO_MEMBER(subsino_state::get_stbsub_tile_info) VIDEO_START_MEMBER(subsino_state,subsino) { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 0x40,0x20); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 0x40,0x20); m_tmap->set_transparent_pen(0 ); m_tiles_offset = 0; } @@ -442,9 +442,9 @@ VIDEO_START_MEMBER(subsino_state, reels) { VIDEO_START_CALL_MEMBER( subsino ); - m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_reel_tile_info<0>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_reel_tile_info<1>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_reel_tile_info<2>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); m_reel_tilemap[0]->set_scroll_cols(64); m_reel_tilemap[1]->set_scroll_cols(64); @@ -454,12 +454,12 @@ VIDEO_START_MEMBER(subsino_state, reels) VIDEO_START_MEMBER(subsino_state,stbsub) { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_stbsub_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); m_tmap->set_transparent_pen(0 ); - m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_stbsub_reel_tile_info<0>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_stbsub_reel_tile_info<1>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(subsino_state::get_stbsub_reel_tile_info<2>), this), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_reel_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(subsino_state::get_stbsub_reel_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); m_reel_tilemap[0]->set_scroll_cols(64); m_reel_tilemap[1]->set_scroll_cols(64); diff --git a/src/mame/drivers/subsino2.cpp b/src/mame/drivers/subsino2.cpp index ebe52744268..7818c36cf2a 100644 --- a/src/mame/drivers/subsino2.cpp +++ b/src/mame/drivers/subsino2.cpp @@ -688,8 +688,8 @@ void subsino2_state::video_start() layer_t *l = &m_layers[i]; l->tmap = &machine().tilemap().create(*m_gfxdecode, i ? - tilemap_get_info_delegate(FUNC(subsino2_state::ss9601_get_tile_info_1),this) : - tilemap_get_info_delegate(FUNC(subsino2_state::ss9601_get_tile_info_0),this), + tilemap_get_info_delegate(*this, FUNC(subsino2_state::ss9601_get_tile_info_1)) : + tilemap_get_info_delegate(*this, FUNC(subsino2_state::ss9601_get_tile_info_0)), TILEMAP_SCAN_ROWS, 8,8, 0x80,0x40); l->tmap->set_transparent_pen(0); diff --git a/src/mame/drivers/supduck.cpp b/src/mame/drivers/supduck.cpp index 4975b2bb9c3..0c7a5416c83 100644 --- a/src/mame/drivers/supduck.cpp +++ b/src/mame/drivers/supduck.cpp @@ -123,10 +123,10 @@ TILEMAP_MAPPER_MEMBER(supduck_state::supduk_tilemap_scan) void supduck_state::video_start() { - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supduck_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fore_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_fore_tile_info),this), tilemap_mapper_delegate(FUNC(supduck_state::supduk_tilemap_scan),this), 32, 32, 128,64); - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supduck_state::get_back_tile_info),this), tilemap_mapper_delegate(FUNC(supduck_state::supduk_tilemap_scan),this), 32, 32, 128,64); + m_fore_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supduck_state::get_fore_tile_info)), tilemap_mapper_delegate(*this, FUNC(supduck_state::supduk_tilemap_scan)), 32, 32, 128,64); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supduck_state::get_back_tile_info)), tilemap_mapper_delegate(*this, FUNC(supduck_state::supduk_tilemap_scan)), 32, 32, 128,64); m_text_tilemap->set_transparent_pen(0x3); m_fore_tilemap->set_transparent_pen(0xf); diff --git a/src/mame/drivers/super80.cpp b/src/mame/drivers/super80.cpp index bd9e74991df..877741406cf 100644 --- a/src/mame/drivers/super80.cpp +++ b/src/mame/drivers/super80.cpp @@ -750,7 +750,7 @@ void super80_state::super80(machine_config &config) INPUT_BUFFER(config, "cent_status_in", 0); /* quickload */ - QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(super80_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(super80_state::quickload_cb)); /* cassette */ CASSETTE(config, m_cassette); @@ -833,7 +833,7 @@ void super80_state::super80v(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(SUPER80V_DOTS); - m_crtc->set_update_row_callback(FUNC(super80_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(super80_state::crtc_update_row)); config.set_default_layout(layout_super80); @@ -855,7 +855,7 @@ void super80_state::super80v(machine_config &config) INPUT_BUFFER(config, "cent_status_in", 0); /* quickload */ - QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(super80_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin", attotime::from_seconds(3)).set_load_callback(FUNC(super80_state::quickload_cb)); /* cassette */ CASSETTE(config, m_cassette); diff --git a/src/mame/drivers/superchs.cpp b/src/mame/drivers/superchs.cpp index 1de84063936..cb9598c0481 100644 --- a/src/mame/drivers/superchs.cpp +++ b/src/mame/drivers/superchs.cpp @@ -551,8 +551,8 @@ READ16_MEMBER(superchs_state::sub_cycle_r) void superchs_state::init_superchs() { /* Speedup handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x100003, read32_delegate(FUNC(superchs_state::main_cycle_r),this)); - m_subcpu->space(AS_PROGRAM).install_read_handler(0x80000a, 0x80000b, read16_delegate(FUNC(superchs_state::sub_cycle_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x100003, read32_delegate(*this, FUNC(superchs_state::main_cycle_r))); + m_subcpu->space(AS_PROGRAM).install_read_handler(0x80000a, 0x80000b, read16_delegate(*this, FUNC(superchs_state::sub_cycle_r))); } GAMEL( 1992, superchs, 0, superchs, superchs, superchs_state, init_superchs, ROT0, "Taito Corporation Japan", "Super Chase - Criminal Termination (World)", 0, layout_superchs ) // 1993/02/16 11:39:36 SUPER CHASE VER 1.2O diff --git a/src/mame/drivers/supercrd.cpp b/src/mame/drivers/supercrd.cpp index 09863f403fb..cd275e71201 100644 --- a/src/mame/drivers/supercrd.cpp +++ b/src/mame/drivers/supercrd.cpp @@ -280,7 +280,7 @@ TILE_GET_INFO_MEMBER(supercrd_state::get_bg_tile_info) void supercrd_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supercrd_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 96, 29); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supercrd_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 96, 29); } diff --git a/src/mame/drivers/superdq.cpp b/src/mame/drivers/superdq.cpp index ddaecea02b7..fda97f7601a 100644 --- a/src/mame/drivers/superdq.cpp +++ b/src/mame/drivers/superdq.cpp @@ -85,7 +85,7 @@ TILE_GET_INFO_MEMBER(superdq_state::get_tile_info) void superdq_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(superdq_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(superdq_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t superdq_state::screen_update_superdq(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/superwng.cpp b/src/mame/drivers/superwng.cpp index 54eb52208b8..1b2509ecab9 100644 --- a/src/mame/drivers/superwng.cpp +++ b/src/mame/drivers/superwng.cpp @@ -150,8 +150,8 @@ TILE_GET_INFO_MEMBER(superwng_state::get_fg_tile_info) void superwng_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(superwng_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(superwng_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(*this, FUNC(superwng_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(superwng_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scrollx(0, 64); } diff --git a/src/mame/drivers/supracan.cpp b/src/mame/drivers/supracan.cpp index 70a4e6d54ec..8203aae4d12 100644 --- a/src/mame/drivers/supracan.cpp +++ b/src/mame/drivers/supracan.cpp @@ -440,25 +440,25 @@ void supracan_state::video_start() m_gfxdecode->gfx(4)->set_source(&m_vram_addr_swapped[0]); m_gfxdecode->gfx(4)->set_xormask(0); - m_tilemap_sizes[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap0_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap_sizes[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap0_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap_sizes[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap0_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); - m_tilemap_sizes[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap0_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - - m_tilemap_sizes[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap1_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap_sizes[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap1_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap_sizes[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap1_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); - m_tilemap_sizes[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap1_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - - m_tilemap_sizes[2][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap2_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap_sizes[2][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap2_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap_sizes[2][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap2_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); - m_tilemap_sizes[2][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_tilemap2_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - - m_tilemap_sizes[3][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap_sizes[3][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap_sizes[3][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); - m_tilemap_sizes[3][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(supracan_state::get_roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap_sizes[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap_sizes[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap_sizes[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap_sizes[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + + m_tilemap_sizes[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap_sizes[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap_sizes[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap_sizes[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + + m_tilemap_sizes[2][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap_sizes[2][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap_sizes[2][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap_sizes[2][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_tilemap2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + + m_tilemap_sizes[3][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap_sizes[3][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap_sizes[3][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap_sizes[3][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(supracan_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); } int supracan_state::get_tilemap_dimensions(int &xsize, int &ysize, int layer) @@ -1952,7 +1952,7 @@ void supracan_state::machine_start() m_line_off_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(supracan_state::line_off_callback), this)); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x3fffff, read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000000, 0x3fffff, read16s_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); } @@ -2089,7 +2089,7 @@ void supracan_state::supracan(machine_config &config) generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "supracan_cart")); cartslot.set_width(GENERIC_ROM16_WIDTH); cartslot.set_endian(ENDIANNESS_BIG); - cartslot.set_device_load(FUNC(supracan_state::cart_load), this); + cartslot.set_device_load(FUNC(supracan_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("supracan"); } diff --git a/src/mame/drivers/suprgolf.cpp b/src/mame/drivers/suprgolf.cpp index 45b4915cd77..1f04a90fcbe 100644 --- a/src/mame/drivers/suprgolf.cpp +++ b/src/mame/drivers/suprgolf.cpp @@ -114,7 +114,7 @@ TILE_GET_INFO_MEMBER(suprgolf_state::get_tile_info) void suprgolf_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprgolf_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprgolf_state::get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32 ); m_paletteram = std::make_unique<uint8_t[]>(0x1000); m_bg_vram = std::make_unique<uint8_t[]>(0x2000*0x20); m_bg_fb = std::make_unique<uint16_t[]>(0x2000*0x20); diff --git a/src/mame/drivers/suprnova.cpp b/src/mame/drivers/suprnova.cpp index 1255842b58a..7f1dedb1a95 100644 --- a/src/mame/drivers/suprnova.cpp +++ b/src/mame/drivers/suprnova.cpp @@ -1019,21 +1019,21 @@ void skns_state::set_drc_pcflush(uint32_t addr) void skns_state::init_galpani4() { m_spritegen->skns_sprite_kludge(-5,-1); init_drc(); } void skns_state::init_galpanis() { m_spritegen->skns_sprite_kludge(-5,-1); init_drc(); } -void skns_state::init_cyvern() { m_spritegen->skns_sprite_kludge(+0,+2); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x604d3c8, 0x604d3cb, read32_delegate(FUNC(skns_state::cyvern_speedup_r),this) ); set_drc_pcflush(0x402ebd2); } -void skns_state::init_galpans2() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60fb6bc, 0x60fb6bf, read32_delegate(FUNC(skns_state::galpans2_speedup_r),this) ); set_drc_pcflush(0x4049ae2); } -void skns_state::init_gutsn() { m_spritegen->skns_sprite_kludge(+0,+0); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x600c780, 0x600c783, read32_delegate(FUNC(skns_state::gutsn_speedup_r),this) ); set_drc_pcflush(0x402206e); } -void skns_state::init_panicstr() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60f19e4, 0x60f19e7, read32_delegate(FUNC(skns_state::panicstr_speedup_r),this) ); set_drc_pcflush(0x404e68a); } -void skns_state::init_senknow() { m_spritegen->skns_sprite_kludge(+1,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60000dc, 0x60000df, read32_delegate(FUNC(skns_state::senknow_speedup_r),this) ); set_drc_pcflush(0x4017dce); } -void skns_state::init_puzzloope() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6081d38, 0x6081d3b, read32_delegate(FUNC(skns_state::puzzloope_speedup_r),this) ); set_drc_pcflush(0x401da14); } -void skns_state::init_puzzloopj() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6086714, 0x6086717, read32_delegate(FUNC(skns_state::puzzloopj_speedup_r),this) ); set_drc_pcflush(0x401dca0); } -void skns_state::init_puzzloopa() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6085bcc, 0x6085bcf, read32_delegate(FUNC(skns_state::puzzloopa_speedup_r),this) ); set_drc_pcflush(0x401d9d4); } -void skns_state::init_puzzloopu() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6085cec, 0x6085cef, read32_delegate(FUNC(skns_state::puzzloopu_speedup_r),this) ); set_drc_pcflush(0x401dab0); } -void skns_state::init_jjparads() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000994, 0x6000997, read32_delegate(FUNC(skns_state::jjparads_speedup_r),this) ); set_drc_pcflush(0x4015e84); } -void skns_state::init_jjparad2() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000984, 0x6000987, read32_delegate(FUNC(skns_state::jjparad2_speedup_r),this) ); set_drc_pcflush(0x401620a); } -void skns_state::init_ryouran() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000a14, 0x6000a17, read32_delegate(FUNC(skns_state::ryouran_speedup_r),this) ); set_drc_pcflush(0x40182ce); } -void skns_state::init_teljan() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6002fb4, 0x6002fb7, read32_delegate(FUNC(skns_state::teljan_speedup_r),this) ); set_drc_pcflush(0x401ba32); } -void skns_state::init_sengekis() { m_spritegen->skns_sprite_kludge(-192,-272); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60b74bc, 0x60b74bf, read32_delegate(FUNC(skns_state::sengekis_speedup_r),this) ); set_drc_pcflush(0x60006ec); } -void skns_state::init_sengekij() { m_spritegen->skns_sprite_kludge(-192,-272); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60b7380, 0x60b7383, read32_delegate(FUNC(skns_state::sengekij_speedup_r),this) ); set_drc_pcflush(0x60006ec); } +void skns_state::init_cyvern() { m_spritegen->skns_sprite_kludge(+0,+2); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x604d3c8, 0x604d3cb, read32_delegate(*this, FUNC(skns_state::cyvern_speedup_r)) ); set_drc_pcflush(0x402ebd2); } +void skns_state::init_galpans2() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60fb6bc, 0x60fb6bf, read32_delegate(*this, FUNC(skns_state::galpans2_speedup_r)) ); set_drc_pcflush(0x4049ae2); } +void skns_state::init_gutsn() { m_spritegen->skns_sprite_kludge(+0,+0); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x600c780, 0x600c783, read32_delegate(*this, FUNC(skns_state::gutsn_speedup_r)) ); set_drc_pcflush(0x402206e); } +void skns_state::init_panicstr() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60f19e4, 0x60f19e7, read32_delegate(*this, FUNC(skns_state::panicstr_speedup_r)) ); set_drc_pcflush(0x404e68a); } +void skns_state::init_senknow() { m_spritegen->skns_sprite_kludge(+1,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60000dc, 0x60000df, read32_delegate(*this, FUNC(skns_state::senknow_speedup_r)) ); set_drc_pcflush(0x4017dce); } +void skns_state::init_puzzloope() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6081d38, 0x6081d3b, read32_delegate(*this, FUNC(skns_state::puzzloope_speedup_r)) ); set_drc_pcflush(0x401da14); } +void skns_state::init_puzzloopj() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6086714, 0x6086717, read32_delegate(*this, FUNC(skns_state::puzzloopj_speedup_r)) ); set_drc_pcflush(0x401dca0); } +void skns_state::init_puzzloopa() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6085bcc, 0x6085bcf, read32_delegate(*this, FUNC(skns_state::puzzloopa_speedup_r)) ); set_drc_pcflush(0x401d9d4); } +void skns_state::init_puzzloopu() { m_spritegen->skns_sprite_kludge(-9,-1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6085cec, 0x6085cef, read32_delegate(*this, FUNC(skns_state::puzzloopu_speedup_r)) ); set_drc_pcflush(0x401dab0); } +void skns_state::init_jjparads() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000994, 0x6000997, read32_delegate(*this, FUNC(skns_state::jjparads_speedup_r)) ); set_drc_pcflush(0x4015e84); } +void skns_state::init_jjparad2() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000984, 0x6000987, read32_delegate(*this, FUNC(skns_state::jjparad2_speedup_r)) ); set_drc_pcflush(0x401620a); } +void skns_state::init_ryouran() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6000a14, 0x6000a17, read32_delegate(*this, FUNC(skns_state::ryouran_speedup_r)) ); set_drc_pcflush(0x40182ce); } +void skns_state::init_teljan() { m_spritegen->skns_sprite_kludge(+5,+1); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x6002fb4, 0x6002fb7, read32_delegate(*this, FUNC(skns_state::teljan_speedup_r)) ); set_drc_pcflush(0x401ba32); } +void skns_state::init_sengekis() { m_spritegen->skns_sprite_kludge(-192,-272); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60b74bc, 0x60b74bf, read32_delegate(*this, FUNC(skns_state::sengekis_speedup_r)) ); set_drc_pcflush(0x60006ec); } +void skns_state::init_sengekij() { m_spritegen->skns_sprite_kludge(-192,-272); init_drc();m_maincpu->space(AS_PROGRAM).install_read_handler(0x60b7380, 0x60b7383, read32_delegate(*this, FUNC(skns_state::sengekij_speedup_r)) ); set_drc_pcflush(0x60006ec); } void skns_state::init_sarukani() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc(); set_drc_pcflush(0x4013b42); } // Speedup is in io_w() void skns_state::init_galpans3() { m_spritegen->skns_sprite_kludge(-1,-1); init_drc(); } diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp index c7e21370431..ccf9e54ca82 100644 --- a/src/mame/drivers/suprslam.cpp +++ b/src/mame/drivers/suprslam.cpp @@ -300,7 +300,7 @@ void suprslam_state::suprslam(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::xGBR_555, 0x800); VSYSTEM_SPR(config, m_spr, 0); - m_spr->set_tile_indirect_cb(FUNC(suprslam_state::suprslam_tile_callback), this); + m_spr->set_tile_indirect_cb(FUNC(suprslam_state::suprslam_tile_callback)); m_spr->set_gfx_region(1); m_spr->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/surpratk.cpp b/src/mame/drivers/surpratk.cpp index 814e6c2c830..8e768ddc45b 100644 --- a/src/mame/drivers/surpratk.cpp +++ b/src/mame/drivers/surpratk.cpp @@ -187,12 +187,12 @@ void surpratk_state::surpratk(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(surpratk_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(surpratk_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K053244(config, m_k053244, 0); m_k053244->set_palette(m_palette); - m_k053244->set_sprite_callback(FUNC(surpratk_state::sprite_callback), this); + m_k053244->set_sprite_callback(FUNC(surpratk_state::sprite_callback)); K053251(config, m_k053251, 0); diff --git a/src/mame/drivers/sv8000.cpp b/src/mame/drivers/sv8000.cpp index b9df9809820..f04d23ed7fa 100644 --- a/src/mame/drivers/sv8000.cpp +++ b/src/mame/drivers/sv8000.cpp @@ -182,7 +182,7 @@ void sv8000_state::machine_start() m_inv = 0; if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); save_item(NAME(m_column)); save_item(NAME(m_ag)); @@ -410,7 +410,7 @@ void sv8000_state::sv8000(machine_config &config) /* cartridge */ generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "sv8000_cart")); cartslot.set_must_be_loaded(true); - cartslot.set_device_load(FUNC(sv8000_state::cart_load), this); + cartslot.set_device_load(FUNC(sv8000_state::cart_load)); /* software lists */ SOFTWARE_LIST(config, "cart_list").set_original("sv8000"); diff --git a/src/mame/drivers/svi318.cpp b/src/mame/drivers/svi318.cpp index b7050e3dd88..cb067892007 100644 --- a/src/mame/drivers/svi318.cpp +++ b/src/mame/drivers/svi318.cpp @@ -545,7 +545,7 @@ void svi3x8_state::svi318(machine_config &config) SOFTWARE_LIST(config, "cass_list").set_original("svi318_cass"); // cartridge slot - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "svi318_cart", "bin,rom").set_device_load(FUNC(svi3x8_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "svi318_cart", "bin,rom").set_device_load(FUNC(svi3x8_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("svi318_cart"); // expander bus diff --git a/src/mame/drivers/svision.cpp b/src/mame/drivers/svision.cpp index 306cb19d494..abd77a5e0af 100644 --- a/src/mame/drivers/svision.cpp +++ b/src/mame/drivers/svision.cpp @@ -507,7 +507,7 @@ void svision_state::svision_base(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "svision_cart", "bin,ws,sv"); m_cart->set_must_be_loaded(true); - m_cart->set_device_load(FUNC(svision_state::cart_load), this); + m_cart->set_device_load(FUNC(svision_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("svision"); } diff --git a/src/mame/drivers/svmu.cpp b/src/mame/drivers/svmu.cpp index e76bf756cbd..33170a0cddd 100644 --- a/src/mame/drivers/svmu.cpp +++ b/src/mame/drivers/svmu.cpp @@ -342,7 +342,7 @@ void svmu_state::svmu(machine_config &config) ATMEL_29C010(config, m_flash); quickload_image_device &quickload(QUICKLOAD(config, "quickload", "vms,bin")); - quickload.set_load_callback(FUNC(svmu_state::quickload_cb), this); + quickload.set_load_callback(FUNC(svmu_state::quickload_cb)); quickload.set_interface("svmu_quik"); /* Software lists */ diff --git a/src/mame/drivers/swtpc8212.cpp b/src/mame/drivers/swtpc8212.cpp index cb648e08b09..1191198b431 100644 --- a/src/mame/drivers/swtpc8212.cpp +++ b/src/mame/drivers/swtpc8212.cpp @@ -108,7 +108,7 @@ void swtpc8212_state::swtpc8212(machine_config &config) crtc.set_char_width(9); crtc.set_screen("screen"); crtc.set_show_border_area(false); - crtc.set_update_row_callback(FUNC(swtpc8212_state::update_row), this); + crtc.set_update_row_callback(FUNC(swtpc8212_state::update_row)); } diff --git a/src/mame/drivers/sys9002.cpp b/src/mame/drivers/sys9002.cpp index 2c768b2cdee..ed917402b48 100644 --- a/src/mame/drivers/sys9002.cpp +++ b/src/mame/drivers/sys9002.cpp @@ -143,7 +143,7 @@ void sys9002_state::sys9002(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(sys9002_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(sys9002_state::crtc_update_row)); clock_device &uart_clock(CLOCK(config, "uart_clock", 614400)); uart_clock.signal_handler().set("uart1", FUNC(i8251_device::write_txc)); diff --git a/src/mame/drivers/system1.cpp b/src/mame/drivers/system1.cpp index 65b7726aa30..b970cf7f7e6 100644 --- a/src/mame/drivers/system1.cpp +++ b/src/mame/drivers/system1.cpp @@ -2459,7 +2459,7 @@ void system1_state::sys1ppisx_315_5041(machine_config &config) void system1_state::mcu(machine_config &config) { /* basic machine hardware */ - m_maincpu->set_vblank_int(device_interrupt_delegate(), nullptr); + m_maincpu->remove_vblank_int(); I8751(config, m_mcu, SOUND_CLOCK); m_mcu->set_addrmap(AS_IO, &system1_state::mcu_io_map); @@ -2469,7 +2469,7 @@ void system1_state::mcu(machine_config &config) // This interrupt is driven by pin 15 of a PAL16R4 (315-5138 on Choplifter), based on the vertical count. // The actual duty cycle likely differs from VBLANK, which is another output from the same PAL. - TIMER(config, "mcu_t0", 0).configure_periodic(timer_device::expired_delegate(FUNC(system1_state::mcu_t0_callback), this), attotime::from_usec(2500)); + TIMER(config, "mcu_t0", 0).configure_periodic(FUNC(system1_state::mcu_t0_callback), attotime::from_usec(2500)); } /* alternate program map with RAM/collision swapped */ @@ -5456,11 +5456,11 @@ void system1_state::init_nob() /* hack to fix incorrect JMP at start, which should obviously be to $0080 */ /* patching the ROM causes errors in the self-test */ /* in real-life, it could be some behavior dependent upon M1 */ - space.install_read_handler(0x0001, 0x0001, read8_delegate(FUNC(system1_state::nob_start_r),this)); + space.install_read_handler(0x0001, 0x0001, read8_delegate(*this, FUNC(system1_state::nob_start_r))); /* install MCU communications */ - iospace.install_readwrite_handler(0x18, 0x18, read8_delegate(FUNC(system1_state::nob_maincpu_latch_r),this), write8_delegate(FUNC(system1_state::nob_maincpu_latch_w),this)); - iospace.install_read_handler(0x1c, 0x1c, read8_delegate(FUNC(system1_state::nob_mcu_status_r),this)); + iospace.install_readwrite_handler(0x18, 0x18, read8_delegate(*this, FUNC(system1_state::nob_maincpu_latch_r)), write8_delegate(*this, FUNC(system1_state::nob_maincpu_latch_w))); + iospace.install_read_handler(0x1c, 0x1c, read8_delegate(*this, FUNC(system1_state::nob_mcu_status_r))); } void system1_state::init_nobb() @@ -5487,10 +5487,10 @@ void system1_state::init_nobb() init_bank44(); - iospace.install_read_handler(0x1c, 0x1c, read8_delegate(FUNC(system1_state::nobb_inport1c_r),this)); - iospace.install_read_handler(0x02, 0x02, read8_delegate(FUNC(system1_state::nobb_inport22_r),this)); - iospace.install_read_handler(0x03, 0x03, read8_delegate(FUNC(system1_state::nobb_inport23_r),this)); - iospace.install_write_handler(0x04, 0x04, write8_delegate(FUNC(system1_state::nobb_outport24_w),this)); + iospace.install_read_handler(0x1c, 0x1c, read8_delegate(*this, FUNC(system1_state::nobb_inport1c_r))); + iospace.install_read_handler(0x02, 0x02, read8_delegate(*this, FUNC(system1_state::nobb_inport22_r))); + iospace.install_read_handler(0x03, 0x03, read8_delegate(*this, FUNC(system1_state::nobb_inport23_r))); + iospace.install_write_handler(0x04, 0x04, write8_delegate(*this, FUNC(system1_state::nobb_outport24_w))); } @@ -5520,7 +5520,7 @@ void system1_state::init_shtngmst() address_space &iospace = m_maincpu->space(AS_IO); iospace.install_read_port(0x12, 0x12, "TRIGGER"); iospace.install_read_port(0x18, 0x18, 0x03, "18"); - iospace.install_read_handler(0x1c, 0x1c, 0, 0x02, 0, read8_delegate(FUNC(system1_state::shtngmst_gunx_r),this)); + iospace.install_read_handler(0x1c, 0x1c, 0, 0x02, 0, read8_delegate(*this, FUNC(system1_state::shtngmst_gunx_r))); iospace.install_read_port(0x1d, 0x1d, 0x02, "GUNY"); init_bank0c(); } diff --git a/src/mame/drivers/system16.cpp b/src/mame/drivers/system16.cpp index d21b688b08e..8182e183faf 100644 --- a/src/mame/drivers/system16.cpp +++ b/src/mame/drivers/system16.cpp @@ -4057,7 +4057,7 @@ void segas1x_bootleg_state::init_altbeastbl() { init_common(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x418000, 0x418029, write16_delegate(FUNC(segas1x_bootleg_state::altbeastbl_gfx_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x418000, 0x418029, write16_delegate(*this, FUNC(segas1x_bootleg_state::altbeastbl_gfx_w))); } /* Tetris-based */ @@ -4128,7 +4128,7 @@ void segas1x_bootleg_state::init_astormb2() init_sys18bl_oki(); m_maincpu->space(AS_PROGRAM).unmap_write(0xa00006, 0xa00007); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa00006, 0xa00007, write8smo_delegate(FUNC(generic_latch_8_device::write), (generic_latch_8_device*)m_soundlatch), 0x00ff); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa00006, 0xa00007, write8smo_delegate(*m_soundlatch, FUNC(generic_latch_8_device::write)), 0x00ff); } /************************************* diff --git a/src/mame/drivers/tail2nos.cpp b/src/mame/drivers/tail2nos.cpp index 9ef10460371..0c98f641242 100644 --- a/src/mame/drivers/tail2nos.cpp +++ b/src/mame/drivers/tail2nos.cpp @@ -266,7 +266,7 @@ void tail2nos_state::tail2nos(machine_config &config) m_k051316->set_bpp(-4); m_k051316->set_offsets(-89, -14); m_k051316->set_wrap(1); - m_k051316->set_zoom_callback(FUNC(tail2nos_state::zoom_callback), this); + m_k051316->set_zoom_callback(FUNC(tail2nos_state::zoom_callback)); VSYSTEM_GGA(config, "gga", XTAL(14'318'181) / 2); // divider not verified diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp index 9ec71f01788..0d971a33a12 100644 --- a/src/mame/drivers/taito_f2.cpp +++ b/src/mame/drivers/taito_f2.cpp @@ -3090,7 +3090,7 @@ void taitof2_state::mjnquest(machine_config &config) TC0100SCN(config, m_tc0100scn[0], 0); m_tc0100scn[0]->set_palette(m_tc0110pcr); - m_tc0100scn[0]->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb), this); + m_tc0100scn[0]->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb)); } void taitof2_state::footchmp(machine_config &config) diff --git a/src/mame/drivers/taito_l.cpp b/src/mame/drivers/taito_l.cpp index f6482ccdab9..07dcadbe3c7 100644 --- a/src/mame/drivers/taito_l.cpp +++ b/src/mame/drivers/taito_l.cpp @@ -584,10 +584,10 @@ void horshoes_state::horshoes_map(address_map &map) common_banks_map(map); map(0x8000, 0x9fff).ram(); map(0xa000, 0xa003).r(FUNC(horshoes_state::extport_select_and_ym2203_r)).w(m_ymsnd, FUNC(ym2203_device::write)); - map(0xa800, 0xa800).select(0x000c).lr8("upd4701_r", + map(0xa800, 0xa800).select(0x000c).lr8(NAME( [this](address_space &space, offs_t offset, u8 mem_mask) { return m_upd4701->read_xy(space, offset >> 2, mem_mask); - }); + })); map(0xa802, 0xa802).r(m_upd4701, FUNC(upd4701_device::reset_x_r)); map(0xa803, 0xa803).r(m_upd4701, FUNC(upd4701_device::reset_y_r)); map(0xb801, 0xb801).nopr(); // Watchdog or interrupt ack diff --git a/src/mame/drivers/taitojc.cpp b/src/mame/drivers/taitojc.cpp index 4dae09011b9..fcd4f265752 100644 --- a/src/mame/drivers/taitojc.cpp +++ b/src/mame/drivers/taitojc.cpp @@ -528,7 +528,7 @@ WRITE16_MEMBER(taitojc_state::main_to_dsp_7ff_w) void taitojc_state::cpu_space_map(address_map &map) { map(0xfffffff0, 0xffffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffffff4, 0xfffffff5).lr16("vblank irq", []() -> u16 { return 0x82; }); + map(0xfffffff4, 0xfffffff5).lr16(NAME([] () -> u16 { return 0x82; })); } INTERRUPT_GEN_MEMBER(taitojc_state::taitojc_vblank) @@ -1176,7 +1176,7 @@ void taitojc_state::init_taitojc() m_has_dsp_hack = 1; if (DSP_IDLESKIP) - m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(FUNC(taitojc_state::taitojc_dsp_idle_skip_r),this)); + m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(*this, FUNC(taitojc_state::taitojc_dsp_idle_skip_r))); } void taitojc_state::init_dendego2() @@ -1184,7 +1184,7 @@ void taitojc_state::init_dendego2() init_taitojc(); if (DSP_IDLESKIP) - m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(FUNC(taitojc_state::dendego2_dsp_idle_skip_r),this)); + m_dsp->space(AS_DATA).install_read_handler(0x7ff0, 0x7ff0, read16_delegate(*this, FUNC(taitojc_state::dendego2_dsp_idle_skip_r))); } void taitojc_state::init_dangcurv() diff --git a/src/mame/drivers/taitopjc.cpp b/src/mame/drivers/taitopjc.cpp index 06d1cca07f7..2f8aa81665f 100644 --- a/src/mame/drivers/taitopjc.cpp +++ b/src/mame/drivers/taitopjc.cpp @@ -244,8 +244,8 @@ void taitopjc_state::video_start() m_screen_ram = std::make_unique<uint32_t[]>(0x40000); m_pal_ram = std::make_unique<uint32_t[]>(0x8000); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitopjc_state::tile_get_info),this), tilemap_mapper_delegate(FUNC(taitopjc_state::tile_scan_layer0),this), 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitopjc_state::tile_get_info),this), tilemap_mapper_delegate(FUNC(taitopjc_state::tile_scan_layer1),this), 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitopjc_state::tile_get_info)), tilemap_mapper_delegate(*this, FUNC(taitopjc_state::tile_scan_layer0)), 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitopjc_state::tile_get_info)), tilemap_mapper_delegate(*this, FUNC(taitopjc_state::tile_scan_layer1)), 16, 16, 32, 32); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(1); diff --git a/src/mame/drivers/taitosj.cpp b/src/mame/drivers/taitosj.cpp index 401bea5bc28..bd637167fa3 100644 --- a/src/mame/drivers/taitosj.cpp +++ b/src/mame/drivers/taitosj.cpp @@ -2835,7 +2835,7 @@ void taitosj_state::init_spacecr() init_common(); /* install protection handler */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd48b, 0xd48b, read8_delegate(FUNC(taitosj_state::spacecr_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd48b, 0xd48b, read8_delegate(*this, FUNC(taitosj_state::spacecr_prot_r))); } void taitosj_state::init_alpine() @@ -2843,8 +2843,8 @@ void taitosj_state::init_alpine() init_common(); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd40b, 0xd40b, read8_delegate(FUNC(taitosj_state::alpine_port_2_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd50f, 0xd50f, write8_delegate(FUNC(taitosj_state::alpine_protection_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd40b, 0xd40b, read8_delegate(*this, FUNC(taitosj_state::alpine_port_2_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd50f, 0xd50f, write8_delegate(*this, FUNC(taitosj_state::alpine_protection_w))); } void taitosj_state::init_alpinea() @@ -2852,8 +2852,8 @@ void taitosj_state::init_alpinea() init_common(); /* install protection handlers */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd40b, 0xd40b, read8_delegate(FUNC(taitosj_state::alpine_port_2_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd50e, 0xd50e, write8_delegate(FUNC(taitosj_state::alpinea_bankswitch_w),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd40b, 0xd40b, read8_delegate(*this, FUNC(taitosj_state::alpine_port_2_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd50e, 0xd50e, write8_delegate(*this, FUNC(taitosj_state::alpinea_bankswitch_w))); } void taitosj_state::init_junglhbr() @@ -2861,7 +2861,7 @@ void taitosj_state::init_junglhbr() init_common(); /* inverter on bits 0 and 1 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x9000, 0xbfff, write8_delegate(FUNC(taitosj_state::junglhbr_characterram_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x9000, 0xbfff, write8_delegate(*this, FUNC(taitosj_state::junglhbr_characterram_w))); } GAME( 1981, spaceskr, 0, nomcu, spaceskr, taitosj_state, init_taitosj, ROT0, "Taito Corporation", "Space Seeker", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/taitowlf.cpp b/src/mame/drivers/taitowlf.cpp index 08c135b56b6..7ba54ff0775 100644 --- a/src/mame/drivers/taitowlf.cpp +++ b/src/mame/drivers/taitowlf.cpp @@ -379,10 +379,8 @@ void taitowlf_state::taitowlf(machine_config &config) pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(taitowlf_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(taitowlf_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(taitowlf_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(taitowlf_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(taitowlf_state::intel82439tx_pci_r), FUNC(taitowlf_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(taitowlf_state::intel82371ab_pci_r), FUNC(taitowlf_state::intel82371ab_pci_w)); pcat_common(config); diff --git a/src/mame/drivers/tandy1t.cpp b/src/mame/drivers/tandy1t.cpp index 5b2e4e95f50..432f967a9f4 100644 --- a/src/mame/drivers/tandy1t.cpp +++ b/src/mame/drivers/tandy1t.cpp @@ -428,10 +428,10 @@ void tandy1000_state::machine_start() m_maincpu->space(AS_PROGRAM).install_ram(0, m_ram->size() - (128*1024) - 1, &m_ram->pointer()[128*1024]); if(m_maincpu->space(AS_PROGRAM).data_width() == 8) m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1, - read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this)); + read8_delegate(*this, FUNC(tandy1000_state::vram_r)), write8_delegate(*this, FUNC(tandy1000_state::vram_w))); else m_maincpu->space(AS_PROGRAM).install_readwrite_handler(m_ram->size() - (128*1024), 640*1024 - 1, - read8_delegate(FUNC(tandy1000_state::vram_r), this), write8_delegate(FUNC(tandy1000_state::vram_w), this), 0xffff); + read8_delegate(*this, FUNC(tandy1000_state::vram_r)), write8_delegate(*this, FUNC(tandy1000_state::vram_w)), 0xffff); subdevice<nvram_device>("nvram")->set_base(m_eeprom_ee, sizeof(m_eeprom_ee)); } diff --git a/src/mame/drivers/taotaido.cpp b/src/mame/drivers/taotaido.cpp index 446b0b1a32c..5d08dbbc066 100644 --- a/src/mame/drivers/taotaido.cpp +++ b/src/mame/drivers/taotaido.cpp @@ -388,7 +388,7 @@ void taotaido_state::taotaido(machine_config &config) PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x800); VSYSTEM_SPR(config, m_spr, 0); - m_spr->set_tile_indirect_cb(FUNC(taotaido_state::tile_callback), this); + m_spr->set_tile_indirect_cb(FUNC(taotaido_state::tile_callback)); m_spr->set_gfx_region(0); m_spr->set_gfxdecode_tag(m_gfxdecode); diff --git a/src/mame/drivers/tapatune.cpp b/src/mame/drivers/tapatune.cpp index e74e6fa0e87..c87b667425f 100644 --- a/src/mame/drivers/tapatune.cpp +++ b/src/mame/drivers/tapatune.cpp @@ -56,12 +56,14 @@ class tapatune_state : public driver_device { public: - tapatune_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + tapatune_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_videocpu(*this, "videocpu"), m_bsmt(*this, "bsmt"), - m_videoram(*this, "videoram") {} + m_videoram(*this, "videoram") + { + } void tapatune(machine_config &config); void tapatune_base(machine_config &config); @@ -556,8 +558,8 @@ void tapatune_state::tapatune(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(5); - crtc.set_begin_update_callback(FUNC(tapatune_state::crtc_begin_update), this); - crtc.set_update_row_callback(FUNC(tapatune_state::crtc_update_row), this); + crtc.set_begin_update_callback(FUNC(tapatune_state::crtc_begin_update)); + crtc.set_update_row_callback(FUNC(tapatune_state::crtc_update_row)); crtc.out_vsync_callback().set(FUNC(tapatune_state::crtc_vsync)); /* video hardware */ diff --git a/src/mame/drivers/tasman.cpp b/src/mame/drivers/tasman.cpp index 9beb36406e3..6bb9f80a5f9 100644 --- a/src/mame/drivers/tasman.cpp +++ b/src/mame/drivers/tasman.cpp @@ -675,7 +675,7 @@ void kongambl_state::kongambl(machine_config &config) K055555(config, m_k055555, 0); K055673(config, m_k055673, 0); - m_k055673->set_sprite_callback(FUNC(kongambl_state::sprite_callback), this); + m_k055673->set_sprite_callback(FUNC(kongambl_state::sprite_callback)); m_k055673->set_config(K055673_LAYOUT_LE2, -48+1, -23); m_k055673->set_palette(m_palette); @@ -684,7 +684,7 @@ void kongambl_state::kongambl(machine_config &config) #endif K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(kongambl_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(kongambl_state::tile_callback)); m_k056832->set_config(K056832_BPP_8TASMAN, 0, 0); m_k056832->set_palette(m_palette); diff --git a/src/mame/drivers/tatsumi.cpp b/src/mame/drivers/tatsumi.cpp index c74c4e3807d..05d25ff202f 100644 --- a/src/mame/drivers/tatsumi.cpp +++ b/src/mame/drivers/tatsumi.cpp @@ -860,7 +860,7 @@ MACHINE_RESET_MEMBER(apache3_state,apache3) m_subcpu2->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); // TODO /* Hook the RESET line, which resets the Z80 */ - m_subcpu->set_reset_callback(write_line_delegate(FUNC(apache3_state::apache3_68000_reset),this)); + m_subcpu->set_reset_callback(*this, FUNC(apache3_state::apache3_68000_reset)); } diff --git a/src/mame/drivers/tattack.cpp b/src/mame/drivers/tattack.cpp index d040ae8ad39..a3d0e9f9e74 100644 --- a/src/mame/drivers/tattack.cpp +++ b/src/mame/drivers/tattack.cpp @@ -230,7 +230,7 @@ uint32_t tattack_state::screen_update_tattack(screen_device &screen, bitmap_ind1 void tattack_state::video_start() { - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tattack_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tattack_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); } WRITE8_MEMBER(tattack_state::paddle_w) diff --git a/src/mame/drivers/tavernie.cpp b/src/mame/drivers/tavernie.cpp index 748796a994d..9cec7765635 100644 --- a/src/mame/drivers/tavernie.cpp +++ b/src/mame/drivers/tavernie.cpp @@ -390,7 +390,7 @@ void tavernie_state::ivg09(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(tavernie_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(tavernie_state::crtc_update_row)); PIA6821(config, m_pia1, 0); m_pia1->readpb_handler().set(FUNC(tavernie_state::pb_ivg_r)); diff --git a/src/mame/drivers/techno.cpp b/src/mame/drivers/techno.cpp index 271529bac3b..13cb69af6ec 100644 --- a/src/mame/drivers/techno.cpp +++ b/src/mame/drivers/techno.cpp @@ -256,7 +256,7 @@ INPUT_PORTS_END void techno_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff2, 0xfffff3).lr16("timer irq", [this]() -> u16 { return m_vector; }); + map(0xfffff2, 0xfffff3).lr16(NAME([this] () -> u16 { return m_vector; })); } void techno_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) diff --git a/src/mame/drivers/testpat.cpp b/src/mame/drivers/testpat.cpp index 898f9dd5a1a..78b9e418537 100644 --- a/src/mame/drivers/testpat.cpp +++ b/src/mame/drivers/testpat.cpp @@ -106,7 +106,7 @@ void tp1983_state::tp1983(machine_config &config) { NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK).set_source(netlist_tp1983); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", FUNC(fixedfreq_device::update_composite_monochrome), "fixfreq"); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", m_video, FUNC(fixedfreq_device::update_composite_monochrome)); SCREEN(config, "screen", SCREEN_TYPE_RASTER); FIXFREQ(config, m_video).set_screen("screen"); @@ -122,7 +122,7 @@ void tp1985_state::tp1985(machine_config &config) { NETLIST_CPU(config, m_maincpu, NETLIST_CLOCK).set_source(netlist_tp1985); - NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", FUNC(tp1985_state::video_out_cb), ""); + NETLIST_ANALOG_OUTPUT(config, "maincpu:vid0").set_params("videomix", FUNC(tp1985_state::video_out_cb)); SCREEN(config, "screen", SCREEN_TYPE_RASTER); FIXFREQ(config, m_video).set_screen("screen"); diff --git a/src/mame/drivers/thepit.cpp b/src/mame/drivers/thepit.cpp index 7061b2e0dd6..22feb9f7572 100644 --- a/src/mame/drivers/thepit.cpp +++ b/src/mame/drivers/thepit.cpp @@ -1353,7 +1353,7 @@ READ8_MEMBER(thepit_state::rtriv_question_r) void thepit_state::init_rtriv() { // Set-up the weirdest questions read ever done - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(FUNC(thepit_state::rtriv_question_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0x4fff, read8_delegate(*this, FUNC(thepit_state::rtriv_question_r))); save_item(NAME(m_question_address)); save_item(NAME(m_question_rom)); diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp index 5a06205469e..3bceee89bd0 100644 --- a/src/mame/drivers/thomson.cpp +++ b/src/mame/drivers/thomson.cpp @@ -746,7 +746,7 @@ void thomson_state::to7_base(machine_config &config) acia_clock.signal_handler().set(FUNC(thomson_state::write_acia_clock)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "to_cart", "m7,rom").set_device_load(FUNC(thomson_state::to7_cartridge), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "to_cart", "m7,rom").set_device_load(FUNC(thomson_state::to7_cartridge)); /* internal ram */ RAM(config, m_ram).set_default_size("40K").set_extra_options("24K,48K"); @@ -1160,7 +1160,7 @@ void thomson_state::mo5(machine_config &config) m_pia_sys->cb2_handler().set_nop(); m_pia_sys->irqb_handler().set("mainirq", FUNC(input_merger_device::in_w<1>)); // WARNING: differs from TO7 ! - GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge), this); + GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge)); config.device_remove("to7_cart_list"); config.device_remove("to7_cass_list"); @@ -2256,7 +2256,7 @@ void thomson_state::mo6(machine_config &config) OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); - GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge), this); + GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge)); /* internal ram */ m_ram->set_default_size("128K"); @@ -2523,7 +2523,7 @@ void thomson_state::mo5nr(machine_config &config) OUTPUT_LATCH(config, m_cent_data_out); m_centronics->set_output_latch(*m_cent_data_out); - GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge), this); + GENERIC_CARTSLOT(config.replace(), "cartslot", generic_plain_slot, "mo_cart", "m5,rom").set_device_load(FUNC(thomson_state::mo5_cartridge)); /* internal ram */ m_ram->set_default_size("128K"); diff --git a/src/mame/drivers/thoop2.cpp b/src/mame/drivers/thoop2.cpp index c8a9c49e2df..7b153735cfa 100644 --- a/src/mame/drivers/thoop2.cpp +++ b/src/mame/drivers/thoop2.cpp @@ -135,7 +135,7 @@ void thoop2_state::thoop2_map(address_map &map) map(0x700004, 0x700005).portr("P1"); map(0x700006, 0x700007).portr("P2"); map(0x700008, 0x700009).portr("SYSTEM"); - map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x70000b, 0x70000b).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x70000d, 0x70000d).w(FUNC(thoop2_state::oki_bankswitch_w)); /* OKI6295 bankswitch */ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 data register */ map(0xfe0000, 0xfe7fff).ram(); /* Work RAM */ diff --git a/src/mame/drivers/thunderx.cpp b/src/mame/drivers/thunderx.cpp index 9f50f97de8a..c510c8d70dd 100644 --- a/src/mame/drivers/thunderx.cpp +++ b/src/mame/drivers/thunderx.cpp @@ -660,13 +660,13 @@ void thunderx_state::scontra(machine_config &config) K052109(config, m_k052109, 0); // 051961 on Super Contra and Thunder Cross schematics m_k052109->set_palette(m_palette); m_k052109->set_screen("screen"); - m_k052109->set_tile_callback(FUNC(thunderx_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(thunderx_state::tile_callback)); m_k052109->irq_handler().set_inputline(m_maincpu, KONAMI_IRQ_LINE); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(thunderx_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(thunderx_state::sprite_callback)); /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -715,7 +715,7 @@ void thunderx_state::gbusters(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &thunderx_state::gbusters_map); m_maincpu->line().set(FUNC(thunderx_state::banking_callback)); - m_k052109->set_tile_callback(FUNC(thunderx_state::gbusters_tile_callback), this); + m_k052109->set_tile_callback(FUNC(thunderx_state::gbusters_tile_callback)); } diff --git a/src/mame/drivers/ti74.cpp b/src/mame/drivers/ti74.cpp index 8081b37f94b..397809989c8 100644 --- a/src/mame/drivers/ti74.cpp +++ b/src/mame/drivers/ti74.cpp @@ -504,7 +504,7 @@ void ti74_state::machine_start() m_lamps.resolve(); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000, 0xbfff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); membank("sysbank")->configure_entries(0, 4, memregion("system")->base(), 0x2000); membank("sysbank")->set_entry(0); @@ -544,10 +544,10 @@ void ti74_state::ti74(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780", 0)); // 270kHz hd44780.set_lcd_size(2, 16); // 2*16 internal - hd44780.set_pixel_update_cb(FUNC(ti74_state::ti74_pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(ti74_state::ti74_pixel_update)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ti74_cart", "bin,rom,256").set_device_load(FUNC(ti74_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ti74_cart", "bin,rom,256").set_device_load(FUNC(ti74_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("ti74_cart"); } @@ -578,10 +578,10 @@ void ti74_state::ti95(machine_config &config) hd44780_device &hd44780(HD44780(config, "hd44780", 0)); hd44780.set_lcd_size(2, 16); - hd44780.set_pixel_update_cb(FUNC(ti74_state::ti95_pixel_update), this); + hd44780.set_pixel_update_cb(FUNC(ti74_state::ti95_pixel_update)); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ti95_cart", "bin,rom,256").set_device_load(FUNC(ti74_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "ti95_cart", "bin,rom,256").set_device_load(FUNC(ti74_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("ti95_cart"); } diff --git a/src/mame/drivers/ti85.cpp b/src/mame/drivers/ti85.cpp index 71fe2576e47..1605411788d 100644 --- a/src/mame/drivers/ti85.cpp +++ b/src/mame/drivers/ti85.cpp @@ -618,7 +618,7 @@ void ti85_state::ti85(machine_config &config) void ti85_state::ti85d(machine_config &config) { ti85(config); - SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(ti85_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(ti85_state::snapshot_cb)); //TI85SERIAL(config, "tiserial"); } @@ -672,7 +672,7 @@ void ti85_state::ti86(machine_config &config) MCFG_MACHINE_START_OVERRIDE(ti85_state, ti86) MCFG_MACHINE_RESET_OVERRIDE(ti85_state, ti85) - SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(ti85_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "sav").set_load_callback(FUNC(ti85_state::snapshot_cb)); } void ti85_state::ti83p(machine_config &config) diff --git a/src/mame/drivers/ti89.cpp b/src/mame/drivers/ti89.cpp index 67f823f2b94..1e4a6c3bd20 100644 --- a/src/mame/drivers/ti89.cpp +++ b/src/mame/drivers/ti89.cpp @@ -464,11 +464,11 @@ void ti68k_state::machine_start() if (initial_pc > 0x400000) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x400000, 0x5fffff, read16_delegate(FUNC(ti68k_state::rom_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x400000, 0x5fffff, read16_delegate(*this, FUNC(ti68k_state::rom_r))); } else { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x3fffff, read16_delegate(FUNC(ti68k_state::rom_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x200000, 0x3fffff, read16_delegate(*this, FUNC(ti68k_state::rom_r))); } } diff --git a/src/mame/drivers/tim100.cpp b/src/mame/drivers/tim100.cpp index f91f4f830c2..e0dedbddc6f 100644 --- a/src/mame/drivers/tim100.cpp +++ b/src/mame/drivers/tim100.cpp @@ -177,7 +177,7 @@ void tim100_state::tim100(machine_config &config) I8276(config, m_crtc, XTAL(4'915'200)); m_crtc->set_character_width(12); - m_crtc->set_display_callback(FUNC(tim100_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(tim100_state::crtc_display_pixels)); m_crtc->drq_wr_callback().set(FUNC(tim100_state::drq_w)); m_crtc->irq_wr_callback().set(FUNC(tim100_state::irq_w)); m_crtc->set_screen("screen"); diff --git a/src/mame/drivers/timeplt.cpp b/src/mame/drivers/timeplt.cpp index 98708dd54c4..a1f559f6113 100644 --- a/src/mame/drivers/timeplt.cpp +++ b/src/mame/drivers/timeplt.cpp @@ -141,7 +141,7 @@ void timeplt_state::timeplt_main_map(address_map &map) map(0xc000, 0xc000).mirror(0x0cff).r(FUNC(timeplt_state::scanline_r)).w("timeplt_audio", FUNC(timeplt_audio_device::sound_data_w)); map(0xc200, 0xc200).mirror(0x0cff).portr("DSW1").w("watchdog", FUNC(watchdog_timer_device::reset_w)); map(0xc300, 0xc300).mirror(0x0c9f).portr("IN0"); - map(0xc300, 0xc30f).lw8("mainlatch_w", [this](offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 1, data); }); + map(0xc300, 0xc30f).lw8(NAME([this] (offs_t offset, u8 data) { m_mainlatch->write_d0(offset >> 1, data); })); map(0xc320, 0xc320).mirror(0x0c9f).portr("IN1"); map(0xc340, 0xc340).mirror(0x0c9f).portr("IN2"); map(0xc360, 0xc360).mirror(0x0c9f).portr("DSW0"); diff --git a/src/mame/drivers/timex.cpp b/src/mame/drivers/timex.cpp index b09f26844fe..f15b772541c 100644 --- a/src/mame/drivers/timex.cpp +++ b/src/mame/drivers/timex.cpp @@ -713,7 +713,7 @@ void timex_state::ts2068(machine_config &config) AY8912(config.replace(), "ay8912", XTAL(14'112'000)/8).add_route(ALL_OUTPUTS, "mono", 0.25); /* From Schematic; 1.764 MHz */ /* cartridge */ - GENERIC_CARTSLOT(config, "dockslot", generic_plain_slot, "timex_cart", "dck,bin").set_device_load(FUNC(timex_state::cart_load), this); + GENERIC_CARTSLOT(config, "dockslot", generic_plain_slot, "timex_cart", "dck,bin").set_device_load(FUNC(timex_state::cart_load)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("timex_dock"); diff --git a/src/mame/drivers/tispeak.cpp b/src/mame/drivers/tispeak.cpp index 9de61d8631c..5c0cda68296 100644 --- a/src/mame/drivers/tispeak.cpp +++ b/src/mame/drivers/tispeak.cpp @@ -1328,7 +1328,7 @@ void tispeak_state::sns_cd2801(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "snspell", "vsm"); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("snspell"); } @@ -1379,7 +1379,7 @@ void tispeak_state::snread(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "snread", "vsm"); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("snread"); } @@ -1398,7 +1398,7 @@ void tispeak_state::lantutor(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "lantutor", "vsm,bin"); m_cart->set_must_be_loaded(true); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("lantutor"); } @@ -1423,7 +1423,7 @@ void tispeak_state::snspellc(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "snspell", "vsm"); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("snspell"); } @@ -1463,7 +1463,7 @@ void tispeak_state::tntell(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "tntell", "vsm"); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("tntell"); } @@ -1488,7 +1488,7 @@ void tispeak_state::k28m2(machine_config &config) /* cartridge */ GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "k28m2", "vsm"); - m_cart->set_device_load(FUNC(tispeak_state::cart_load), this); + m_cart->set_device_load(FUNC(tispeak_state::cart_load)); SOFTWARE_LIST(config, "cart_list").set_original("k28m2"); } diff --git a/src/mame/drivers/tmaster.cpp b/src/mame/drivers/tmaster.cpp index 5ccede566ba..ac309170f3b 100644 --- a/src/mame/drivers/tmaster.cpp +++ b/src/mame/drivers/tmaster.cpp @@ -212,7 +212,7 @@ WRITE_LINE_MEMBER(tmaster_state::write_oki_bank1) void tmaster_state::cpu_space_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff8, 0xfffff9).lr16("irq 2", [this]() -> u16 { return m_duart->get_irq_vector(); }); + map(0xfffff8, 0xfffff9).lr16(NAME([this] () -> u16 { return m_duart->get_irq_vector(); })); } WRITE_LINE_MEMBER(tmaster_state::duart_irq_handler) diff --git a/src/mame/drivers/tmc1800.cpp b/src/mame/drivers/tmc1800.cpp index 48ae70db106..c6a5d6421ae 100644 --- a/src/mame/drivers/tmc1800.cpp +++ b/src/mame/drivers/tmc1800.cpp @@ -800,7 +800,7 @@ void tmc1800_state::tmc1800(machine_config &config) BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.25); // devices - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); @@ -829,7 +829,7 @@ void osc1000b_state::osc1000b(machine_config &config) BEEP(config, m_beeper, 0).add_route(ALL_OUTPUTS, "mono", 0.25); // devices - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); @@ -855,7 +855,7 @@ void tmc2000_state::tmc2000(machine_config &config) tmc2000_video(config); // devices - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); @@ -881,7 +881,7 @@ void nano_state::nano(machine_config &config) nano_video(config); // devices - QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin").set_load_callback(FUNC(tmc1800_base_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp index 837839c791e..55107db6051 100644 --- a/src/mame/drivers/tmnt.cpp +++ b/src/mame/drivers/tmnt.cpp @@ -1082,9 +1082,9 @@ void prmrsocr_state::prmrsocr_audio_map(address_map &map) map(0x0000, 0x7fff).rom(); map(0x8000, 0xbfff).bankr("bank1"); map(0xc000, 0xdfff).ram(); - map(0xe000, 0xe12f).lrw8("k054539_rw", - [this](offs_t offset) { return m_k054539->read(((offset & 0x100) << 1) | (offset & 0xff)); }, - [this](offs_t offset, u8 data) { m_k054539->write(((offset & 0x100) << 1) | (offset & 0xff), data); }); + map(0xe000, 0xe12f).lrw8( + NAME([this](offs_t offset) { return m_k054539->read(((offset & 0x100) << 1) | (offset & 0xff)); }), + NAME([this](offs_t offset, u8 data) { m_k054539->write(((offset & 0x100) << 1) | (offset & 0xff), data); })); map(0xf000, 0xf003).m("k054321", FUNC(k054321_device::sound_map)); map(0xf800, 0xf800).w(FUNC(prmrsocr_state::prmrsocr_audio_bankswitch_w)); } @@ -1950,12 +1950,12 @@ void tmnt_state::cuebrick(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::cuebrick_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::cuebrick_tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(tmnt_state::mia_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(tmnt_state::mia_sprite_callback)); m_k051960->set_plane_order(K051960_PLANEORDER_MIA); /* sound hardware */ @@ -2000,12 +2000,12 @@ void tmnt_state::mia(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::mia_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::mia_tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(tmnt_state::mia_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(tmnt_state::mia_sprite_callback)); m_k051960->set_plane_order(K051960_PLANEORDER_MIA); /* sound hardware */ @@ -2063,12 +2063,12 @@ void tmnt_state::tmnt(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(tmnt_state::tmnt_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(tmnt_state::tmnt_sprite_callback)); m_k051960->set_plane_order(K051960_PLANEORDER_MIA); /* sound hardware */ @@ -2123,12 +2123,12 @@ void tmnt_state::punkshot(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(tmnt_state::punkshot_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(tmnt_state::punkshot_sprite_callback)); K053251(config, m_k053251, 0); @@ -2174,11 +2174,11 @@ void tmnt_state::lgtnfght(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback)); K053251(config, m_k053251, 0); @@ -2230,11 +2230,11 @@ void tmnt_state::blswhstl(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::blswhstl_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::blswhstl_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(tmnt_state::blswhstl_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(tmnt_state::blswhstl_sprite_callback)); K053251(config, m_k053251, 0); K054000(config, m_k054000, 0); @@ -2307,11 +2307,11 @@ void glfgreat_state::glfgreat(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(glfgreat_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(glfgreat_state::tmnt_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(glfgreat_state::lgtnfght_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(glfgreat_state::lgtnfght_sprite_callback)); K053936(config, m_k053936, 0); m_k053936->set_wrap(1); @@ -2373,11 +2373,11 @@ void prmrsocr_state::prmrsocr(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(prmrsocr_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(prmrsocr_state::tmnt_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(prmrsocr_state::prmrsocr_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(prmrsocr_state::prmrsocr_sprite_callback)); K053936(config, m_k053936, 0); m_k053936->set_offsets(85, 1); @@ -2435,11 +2435,11 @@ void tmnt_state::tmnt2(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback)); K053251(config, m_k053251, 0); @@ -2490,11 +2490,11 @@ void tmnt_state::ssriders(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback)); K053251(config, m_k053251, 0); @@ -2537,11 +2537,11 @@ void tmnt_state::sunsetbl(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::ssbl_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::ssbl_tile_callback)); K053245(config, m_k053245, 0); m_k053245->set_palette(m_palette); - m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback), this); + m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback)); K053251(config, m_k053251, 0); @@ -2585,12 +2585,12 @@ void tmnt_state::thndrx2(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback), this); + m_k052109->set_tile_callback(FUNC(tmnt_state::tmnt_tile_callback)); K051960(config, m_k051960, 0); m_k051960->set_palette(m_palette); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(tmnt_state::thndrx2_sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(tmnt_state::thndrx2_sprite_callback)); K053251(config, m_k053251, 0); diff --git a/src/mame/drivers/tmspoker.cpp b/src/mame/drivers/tmspoker.cpp index bf06b7801a0..a30894eda93 100644 --- a/src/mame/drivers/tmspoker.cpp +++ b/src/mame/drivers/tmspoker.cpp @@ -286,7 +286,7 @@ TILE_GET_INFO_MEMBER(tmspoker_state::get_bg_tile_info) void tmspoker_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tmspoker_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tmspoker_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t tmspoker_state::screen_update_tmspoker(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/toaplan2.cpp b/src/mame/drivers/toaplan2.cpp index 64783f2a609..d4df4d84480 100644 --- a/src/mame/drivers/toaplan2.cpp +++ b/src/mame/drivers/toaplan2.cpp @@ -433,7 +433,7 @@ MACHINE_RESET_MEMBER(toaplan2_state,toaplan2) // All games execute a RESET instruction on init, presumably to reset the sound CPU. // This is important for games with common RAM; the RAM test will fail // when leaving service mode if the sound CPU is not reset. - m_maincpu->set_reset_callback(write_line_delegate(FUNC(toaplan2_state::toaplan2_reset),this)); + m_maincpu->set_reset_callback(*this, FUNC(toaplan2_state::toaplan2_reset)); } @@ -555,13 +555,13 @@ void toaplan2_state::init_enmadaio() void toaplan2_state::cpu_space_fixeightbl_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff5, 0xfffff5).lr8("irq 2", [this]() { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); return m68000_device::autovector(2); }); + map(0xfffff5, 0xfffff5).lr8(NAME([this] () { m_maincpu->set_input_line(M68K_IRQ_2, CLEAR_LINE); return m68000_device::autovector(2); })); } void toaplan2_state::cpu_space_pipibibsbl_map(address_map &map) { map(0xfffff0, 0xffffff).m(m_maincpu, FUNC(m68000_base_device::autovectors_map)); - map(0xfffff9, 0xfffff9).lr8("irq 4", [this]() { m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE); return m68000_device::autovector(4); }); + map(0xfffff9, 0xfffff9).lr8(NAME([this] () { m_maincpu->set_input_line(M68K_IRQ_4, CLEAR_LINE); return m68000_device::autovector(4); })); } @@ -1258,9 +1258,9 @@ void toaplan2_state::batrider_68k_mem(address_map &map) map(0x200000, 0x207fff).ram().share("mainram"); map(0x208000, 0x20ffff).ram(); map(0x300000, 0x37ffff).r(FUNC(toaplan2_state::batrider_z80rom_r)); - map(0x400000, 0x40000d).lrw16("gp9001_invert_rw", - [this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }, - [this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); }); + map(0x400000, 0x40000d).lrw16( + NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }), + NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); })); map(0x500000, 0x500001).portr("IN"); map(0x500002, 0x500003).portr("SYS-DSW"); map(0x500004, 0x500005).portr("DSW"); @@ -1287,9 +1287,9 @@ void toaplan2_state::bbakraid_68k_mem(address_map &map) map(0x200000, 0x207fff).ram().share("mainram"); map(0x208000, 0x20ffff).ram(); map(0x300000, 0x33ffff).r(FUNC(toaplan2_state::batrider_z80rom_r)); - map(0x400000, 0x40000d).lrw16("gp9001_invert_rw", - [this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }, - [this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); }); + map(0x400000, 0x40000d).lrw16( + NAME([this](offs_t offset, u16 mem_mask) { return m_vdp[0]->read(offset ^ (0xc/2), mem_mask); }), + NAME([this](offs_t offset, u16 data, u16 mem_mask) { m_vdp[0]->write(offset ^ (0xc/2), data, mem_mask); })); map(0x500000, 0x500001).portr("IN"); map(0x500002, 0x500003).portr("SYS-DSW"); map(0x500004, 0x500005).portr("DSW"); @@ -4055,7 +4055,7 @@ void toaplan2_state::batrider(machine_config &config) GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL); m_vdp[0]->set_palette(m_palette); - m_vdp[0]->set_tile_callback(gp9001vdp_device::gp9001_cb_delegate(FUNC(toaplan2_state::batrider_bank_cb), this)); + m_vdp[0]->set_tile_callback(FUNC(toaplan2_state::batrider_bank_cb)); m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_2); MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider) @@ -4121,7 +4121,7 @@ void toaplan2_state::bbakraid(machine_config &config) GP9001_VDP(config, m_vdp[0], 27_MHz_XTAL); m_vdp[0]->set_palette(m_palette); - m_vdp[0]->set_tile_callback(gp9001vdp_device::gp9001_cb_delegate(FUNC(toaplan2_state::batrider_bank_cb), this)); + m_vdp[0]->set_tile_callback(FUNC(toaplan2_state::batrider_bank_cb)); m_vdp[0]->vint_out_cb().set_inputline(m_maincpu, M68K_IRQ_1); MCFG_VIDEO_START_OVERRIDE(toaplan2_state,batrider) diff --git a/src/mame/drivers/tomy_princ.cpp b/src/mame/drivers/tomy_princ.cpp index 2948c11711b..7723dcfcf17 100644 --- a/src/mame/drivers/tomy_princ.cpp +++ b/src/mame/drivers/tomy_princ.cpp @@ -124,10 +124,10 @@ uint32_t tomy_princ_state::screen_update_tomy_princ(screen_device &screen, bitma // fe2d25 void tomy_princ_state::princ_map(address_map &map) { - map(0x000001, 0x000001).lw8("free2", [](u8 data) { return 0xff; }); + map(0x000001, 0x000001).lw8([](u8 data) { return 0xff; }, "free2"); map(0x000008, 0x000008).r(FUNC(tomy_princ_state::read_gpu_status)); - map(0x68ff00, 0x68ff00).lw8("free1", [this](u8 data) { bFirstPort8Read = true; }); - map(0x68ff44, 0x68ff44).lr8("free0", [this]() -> u8 { return m_screen->vblank() ? 0x11 : 0x10; }); + map(0x68ff00, 0x68ff00).lw8([this](u8 data) { bFirstPort8Read = true; }, "free1"); + map(0x68ff44, 0x68ff44).lr8([this]() -> u8 { return m_screen->vblank() ? 0x11 : 0x10; }, "free0"); map(0xe00000, 0xe07fff).ram(); // stacks are placed here map(0xf00000, 0xffffff).rom().region("maincpu", 0x00000); } diff --git a/src/mame/drivers/tourvis.cpp b/src/mame/drivers/tourvis.cpp index d5f46c0fd2a..010719b1e3e 100644 --- a/src/mame/drivers/tourvis.cpp +++ b/src/mame/drivers/tourvis.cpp @@ -433,7 +433,7 @@ void tourvision_state::tourvision(machine_config &config) SPEAKER(config, "rspeaker").front_right(); generic_cartslot_device &cartslot(GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "tourvision_cart", "bin")); - cartslot.set_device_load(FUNC(tourvision_state::cart_load), this); + cartslot.set_device_load(FUNC(tourvision_state::cart_load)); cartslot.set_must_be_loaded(true); SOFTWARE_LIST(config, "tv_list").set_original("pce_tourvision"); diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index ee54ef0d337..4a68de3cb01 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -1658,7 +1658,7 @@ void trackfld_state::init_atlantol() downcast<konami1_device &>(*m_maincpu).set_encryption_boundary(0x6000); - space.install_write_handler(0x0800, 0x0800, write8_delegate(FUNC(trackfld_state::atlantol_gfxbank_w),this)); + space.install_write_handler(0x0800, 0x0800, write8_delegate(*this, FUNC(trackfld_state::atlantol_gfxbank_w))); space.nop_write(0x1000, 0x1000); /* unmapped areas read as ROM */ diff --git a/src/mame/drivers/travrusa.cpp b/src/mame/drivers/travrusa.cpp index e692ebb0f08..a409cbbefd6 100644 --- a/src/mame/drivers/travrusa.cpp +++ b/src/mame/drivers/travrusa.cpp @@ -608,7 +608,7 @@ READ8_MEMBER(travrusa_state::shtridrb_port11_r) void travrusa_state::init_shtridrb() { - m_maincpu->space(AS_IO).install_read_handler(0x11, 0x11, 0, 0xff00, 0, read8_delegate(FUNC(travrusa_state::shtridrb_port11_r),this)); + m_maincpu->space(AS_IO).install_read_handler(0x11, 0x11, 0, 0xff00, 0, read8_delegate(*this, FUNC(travrusa_state::shtridrb_port11_r))); } diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp index 62bb9a32ce6..6c77c12ecf0 100644 --- a/src/mame/drivers/trs80.cpp +++ b/src/mame/drivers/trs80.cpp @@ -539,7 +539,7 @@ void trs80_state::model1(machine_config &config) // model I, level II m_cassette->set_formats(trs80l2_cassette_formats); m_cassette->set_default_state(CASSETTE_PLAY); - QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80_state::quickload_cb)); FD1793(config, m_fdc, 4_MHz_XTAL / 4); // todo: should be fd1771 m_fdc->intrq_wr_callback().set(FUNC(trs80_state::intrq_w)); diff --git a/src/mame/drivers/trs80dt1.cpp b/src/mame/drivers/trs80dt1.cpp index 788e7a698b1..978c2881a89 100644 --- a/src/mame/drivers/trs80dt1.cpp +++ b/src/mame/drivers/trs80dt1.cpp @@ -348,7 +348,7 @@ void trs80dt1_state::trs80dt1(machine_config &config) I8276(config, m_crtc, 12480000 / 8); m_crtc->set_character_width(8); - m_crtc->set_display_callback(FUNC(trs80dt1_state::crtc_update_row), this); + m_crtc->set_display_callback(FUNC(trs80dt1_state::crtc_update_row)); m_crtc->drq_wr_callback().set_inputline(m_maincpu, MCS51_INT0_LINE); // BRDY pin goes through inverter to /INT0, so we don't invert m_crtc->irq_wr_callback().set(m_7474, FUNC(ttl7474_device::clear_w)); // INT pin m_crtc->irq_wr_callback().append(m_7474, FUNC(ttl7474_device::d_w)); diff --git a/src/mame/drivers/trs80m2.cpp b/src/mame/drivers/trs80m2.cpp index 8ac7584d544..85e9e14fb61 100644 --- a/src/mame/drivers/trs80m2.cpp +++ b/src/mame/drivers/trs80m2.cpp @@ -729,7 +729,7 @@ void trs80m2_state::trs80m2(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row)); m_crtc->out_de_callback().set(FUNC(trs80m2_state::de_w)); m_crtc->out_vsync_callback().set(FUNC(trs80m2_state::vsync_w)); @@ -821,7 +821,7 @@ void trs80m16_state::trs80m16(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(trs80m2_state::crtc_update_row)); m_crtc->out_de_callback().set(FUNC(trs80m2_state::de_w)); m_crtc->out_vsync_callback().set(FUNC(trs80m2_state::vsync_w)); diff --git a/src/mame/drivers/trs80m3.cpp b/src/mame/drivers/trs80m3.cpp index 114671e0bf2..5a14b7bbdf4 100644 --- a/src/mame/drivers/trs80m3.cpp +++ b/src/mame/drivers/trs80m3.cpp @@ -360,7 +360,7 @@ void trs80m3_state::model3(machine_config &config) m_cassette->set_default_state(CASSETTE_PLAY); m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); - QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80m3_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "cmd", attotime::from_seconds(1)).set_load_callback(FUNC(trs80m3_state::quickload_cb)); FD1793(config, m_fdc, 4_MHz_XTAL / 4); m_fdc->intrq_wr_callback().set(FUNC(trs80m3_state::intrq_w)); diff --git a/src/mame/drivers/trvmadns.cpp b/src/mame/drivers/trvmadns.cpp index 9c7af1d9443..a63eb5dfce0 100644 --- a/src/mame/drivers/trvmadns.cpp +++ b/src/mame/drivers/trvmadns.cpp @@ -330,7 +330,7 @@ TILE_GET_INFO_MEMBER(trvmadns_state::get_bg_tile_info) void trvmadns_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(trvmadns_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(trvmadns_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // fg_tilemap->set_transparent_pen(1); diff --git a/src/mame/drivers/ts803.cpp b/src/mame/drivers/ts803.cpp index af40eda32b6..54ac69a2c66 100644 --- a/src/mame/drivers/ts803.cpp +++ b/src/mame/drivers/ts803.cpp @@ -442,8 +442,8 @@ void ts803_state::ts803(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(ts803_state::crtc_update_row), this); - crtc.set_on_update_addr_change_callback(FUNC(ts803_state::crtc_update_addr), this); + crtc.set_update_row_callback(FUNC(ts803_state::crtc_update_row)); + crtc.set_on_update_addr_change_callback(FUNC(ts803_state::crtc_update_addr)); clock_device &sti_clock(CLOCK(config, "sti_clock", 16_MHz_XTAL / 13)); sti_clock.signal_handler().set("sti", FUNC(z80sti_device::tc_w)); diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp index 1b189d00860..0182fd37168 100644 --- a/src/mame/drivers/tsamurai.cpp +++ b/src/mame/drivers/tsamurai.cpp @@ -1395,7 +1395,7 @@ ROM_END void tsamurai_state::init_the26thz() { m_maincpu->space(AS_PROGRAM).unmap_read(0xd803, 0xd803); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xd803, 0xd803, read8_delegate(FUNC(tsamurai_state::tsamurai_unknown_d803_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xd803, 0xd803, read8_delegate(*this, FUNC(tsamurai_state::tsamurai_unknown_d803_r))); } GAME( 1984, vsgongf, 0, vsgongf, vsgongf, tsamurai_state, empty_init, ROT90, "Kaneko", "VS Gong Fight", MACHINE_IMPERFECT_COLORS | MACHINE_SUPPORTS_SAVE | MACHINE_UNEMULATED_PROTECTION ) diff --git a/src/mame/drivers/tumbleb.cpp b/src/mame/drivers/tumbleb.cpp index 51b5c7a0fa2..d5d3c567f85 100644 --- a/src/mame/drivers/tumbleb.cpp +++ b/src/mame/drivers/tumbleb.cpp @@ -3711,7 +3711,7 @@ void tumbleb_state::init_tumbleb2() #if TUMBLEP_HACK tumblepb_patch_code(0x000132); #endif - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(FUNC(tumbleb_state::tumbleb2_soundmcu_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100000, 0x100001, write16_delegate(*this, FUNC(tumbleb_state::tumbleb2_soundmcu_w))); } @@ -3756,7 +3756,7 @@ READ16_MEMBER(tumbleb_state::bcstory_1a0_read) void tumbleb_state::init_bcstory() { tumblepb_gfx_rearrange(1); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x180008, 0x180009, read16_delegate(FUNC(tumbleb_state::bcstory_1a0_read),this)); // io should be here?? + m_maincpu->space(AS_PROGRAM).install_read_handler(0x180008, 0x180009, read16_delegate(*this, FUNC(tumbleb_state::bcstory_1a0_read))); // io should be here?? } @@ -3817,27 +3817,27 @@ void tumbleb_state::init_chokchok() { init_htchctch(); - /* different palette format, closer to tumblep -- is this controlled by a register? the palette was right with the hatch catch trojan */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x140000, 0x140fff, write16s_delegate(FUNC(palette_device::write16), m_palette.target())); + // different palette format, closer to tumblep -- is this controlled by a register? the palette was right with the hatch catch trojan + m_maincpu->space(AS_PROGRAM).install_write_handler(0x140000, 0x140fff, write16s_delegate(*m_palette, FUNC(palette_device::write16))); - /* slightly different banking */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(FUNC(tumbleb_state::chokchok_tilebank_w),this)); + // slightly different banking + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(*this, FUNC(tumbleb_state::chokchok_tilebank_w))); } void tumbleb_state::init_carket() { init_htchctch(); - /* slightly different banking */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(FUNC(tumbleb_state::chokchok_tilebank_w),this)); + // slightly different banking + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(*this, FUNC(tumbleb_state::chokchok_tilebank_w))); } void tumbleb_state::init_wlstar() { tumblepb_gfx_rearrange(1); - /* slightly different banking */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(FUNC(tumbleb_state::wlstar_tilebank_w),this)); + // slightly different banking + m_maincpu->space(AS_PROGRAM).install_write_handler(0x100002, 0x100003, write16_delegate(*this, FUNC(tumbleb_state::wlstar_tilebank_w))); m_protbase = 0x0000; } diff --git a/src/mame/drivers/tv910.cpp b/src/mame/drivers/tv910.cpp index fbf245f8e86..3df409eb3ef 100644 --- a/src/mame/drivers/tv910.cpp +++ b/src/mame/drivers/tv910.cpp @@ -525,8 +525,8 @@ void tv910_state::tv910(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(tv910_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(tv910_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(tv910_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(tv910_state::crtc_update_addr)); m_crtc->out_vsync_callback().set(FUNC(tv910_state::vbl_w)); AY3600(config, m_ay3600, 0); diff --git a/src/mame/drivers/tv950.cpp b/src/mame/drivers/tv950.cpp index 75c5721fbed..50380a53fbe 100644 --- a/src/mame/drivers/tv950.cpp +++ b/src/mame/drivers/tv950.cpp @@ -298,8 +298,8 @@ void tv950_state::tv950(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(14); - m_crtc->set_update_row_callback(FUNC(tv950_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(tv950_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(tv950_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(tv950_state::crtc_update_addr)); m_crtc->out_hsync_callback().set(m_via, FUNC(via6522_device::write_pb6)).invert(); m_crtc->out_vsync_callback().set(FUNC(tv950_state::crtc_vs_w)); m_crtc->set_screen(nullptr); diff --git a/src/mame/drivers/tvc.cpp b/src/mame/drivers/tvc.cpp index 85124c69a80..e1bee4affde 100644 --- a/src/mame/drivers/tvc.cpp +++ b/src/mame/drivers/tvc.cpp @@ -218,7 +218,7 @@ void tvc_state::set_mem_page(uint8_t data) case 0xc0 : // External ROM selected TVC_INSTALL_ROM_BANK(3, "bank4", 0xc000, 0xffff); membank("bank4")->set_base(m_ext->base()); - space.install_readwrite_handler (0xc000, 0xdfff, read8_delegate(FUNC(tvc_state::expansion_r), this), write8_delegate(FUNC(tvc_state::expansion_w), this), 0); + space.install_readwrite_handler(0xc000, 0xdfff, read8_delegate(*this, FUNC(tvc_state::expansion_r)), write8_delegate(*this, FUNC(tvc_state::expansion_w)), 0); m_bank_type[3] = -1; break; } @@ -787,7 +787,7 @@ void tvc_state::tvc(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); /*?*/ - crtc.set_update_row_callback(FUNC(tvc_state::crtc_update_row), this); + crtc.set_update_row_callback(FUNC(tvc_state::crtc_update_row)); crtc.out_cur_callback().set(FUNC(tvc_state::int_ff_set)); /* internal ram */ @@ -830,7 +830,7 @@ void tvc_state::tvc(machine_config &config) m_cassette->add_route(ALL_OUTPUTS, "mono", 0.05); /* quickload */ - QUICKLOAD(config, "quickload", "cas", attotime::from_seconds(6)).set_load_callback(FUNC(tvc_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "cas", attotime::from_seconds(6)).set_load_callback(FUNC(tvc_state::quickload_cb)); /* Software lists */ SOFTWARE_LIST(config, "cart_list").set_original("tvc_cart"); diff --git a/src/mame/drivers/twin16.cpp b/src/mame/drivers/twin16.cpp index b43207e3c00..3f9f925f1d8 100644 --- a/src/mame/drivers/twin16.cpp +++ b/src/mame/drivers/twin16.cpp @@ -1255,7 +1255,7 @@ void cuebrickj_state::init_cuebrickj() address_space &space = m_maincpu->space(AS_PROGRAM); space.install_readwrite_bank(0x0b0000, 0x0b03ff, "nvrambank"); - space.install_write_handler( 0x0b0400, 0x0b0401, WRITE8_DELEGATE(cuebrickj_state, nvram_bank_w), 0xff00); + space.install_write_handler( 0x0b0400, 0x0b0401, write8_delegate(*this, FUNC(cuebrickj_state::nvram_bank_w)), 0xff00); membank("nvrambank")->configure_entries(0, 0x20, m_nvram, 0x400); diff --git a/src/mame/drivers/ultraman.cpp b/src/mame/drivers/ultraman.cpp index 112f532b91e..059da36369f 100644 --- a/src/mame/drivers/ultraman.cpp +++ b/src/mame/drivers/ultraman.cpp @@ -206,22 +206,22 @@ void ultraman_state::ultraman(machine_config &config) K051960(config, m_k051960, 0); m_k051960->set_palette("palette"); m_k051960->set_screen("screen"); - m_k051960->set_sprite_callback(FUNC(ultraman_state::sprite_callback), this); + m_k051960->set_sprite_callback(FUNC(ultraman_state::sprite_callback)); K051316(config, m_k051316[0], 0); m_k051316[0]->set_palette("palette"); m_k051316[0]->set_offsets(8, 0); - m_k051316[0]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_1), this); + m_k051316[0]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_1)); K051316(config, m_k051316[1], 0); m_k051316[1]->set_palette("palette"); m_k051316[1]->set_offsets(8, 0); - m_k051316[1]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_2), this); + m_k051316[1]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_2)); K051316(config, m_k051316[2], 0); m_k051316[2]->set_palette("palette"); m_k051316[2]->set_offsets(8, 0); - m_k051316[2]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_3), this); + m_k051316[2]->set_zoom_callback(FUNC(ultraman_state::zoom_callback_3)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/umipoker.cpp b/src/mame/drivers/umipoker.cpp index 4ba2e53f8ee..9d7b3d4f0b8 100644 --- a/src/mame/drivers/umipoker.cpp +++ b/src/mame/drivers/umipoker.cpp @@ -159,10 +159,10 @@ TILE_GET_INFO_MEMBER(umipoker_state::get_tile_info_3) void umipoker_state::video_start() { - m_tilemap_0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(umipoker_state::get_tile_info_0),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(umipoker_state::get_tile_info_1),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(umipoker_state::get_tile_info_2),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_tilemap_3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(umipoker_state::get_tile_info_3),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tilemap_0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info_0)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info_1)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info_2)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_tilemap_3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(umipoker_state::get_tile_info_3)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_tilemap_0->set_transparent_pen(0); m_tilemap_1->set_transparent_pen(0); diff --git a/src/mame/drivers/unichamp.cpp b/src/mame/drivers/unichamp.cpp index 2330b244fc0..66d3b3870af 100644 --- a/src/mame/drivers/unichamp.cpp +++ b/src/mame/drivers/unichamp.cpp @@ -186,10 +186,10 @@ void unichamp_state::machine_start() ptr[i+1] = TEMP; } m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x17ff, - read16s_delegate(FUNC(generic_slot_device::read16_rom),(generic_slot_device*)m_cart)); + read16s_delegate(*m_cart, FUNC(generic_slot_device::read16_rom))); } else m_maincpu->space(AS_PROGRAM).install_read_handler(0x1000, 0x17ff, - read16_delegate(FUNC(unichamp_state::read_ff), this)); + read16_delegate(*this, FUNC(unichamp_state::read_ff))); } /* Set Reset and INTR/INTRM Vector */ diff --git a/src/mame/drivers/unior.cpp b/src/mame/drivers/unior.cpp index a5cd9b57f48..287099417bf 100644 --- a/src/mame/drivers/unior.cpp +++ b/src/mame/drivers/unior.cpp @@ -495,7 +495,7 @@ void unior_state::unior(machine_config &config) i8275_device &crtc(I8275(config, "crtc", XTAL(20'000'000) / 12)); crtc.set_character_width(6); - crtc.set_display_callback(FUNC(unior_state::display_pixels), this); + crtc.set_display_callback(FUNC(unior_state::display_pixels)); crtc.drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq2_w)); crtc.set_screen("screen"); } diff --git a/src/mame/drivers/unistar.cpp b/src/mame/drivers/unistar.cpp index c5f8360489d..a2f488d3e19 100644 --- a/src/mame/drivers/unistar.cpp +++ b/src/mame/drivers/unistar.cpp @@ -153,7 +153,7 @@ void unistar_state::unistar(machine_config &config) i8275_device &crtc(I8275(config, "crtc", 20_MHz_XTAL / 9)); crtc.set_character_width(9); - crtc.set_display_callback(FUNC(unistar_state::draw_character), this); + crtc.set_display_callback(FUNC(unistar_state::draw_character)); crtc.set_screen("screen"); crtc.drq_wr_callback().set("dmac", FUNC(am9517a_device::dreq2_w)); crtc.irq_wr_callback().set("rst75", FUNC(input_merger_device::in_w<0>)); diff --git a/src/mame/drivers/usgames.cpp b/src/mame/drivers/usgames.cpp index 202f1be6322..e2e25062703 100644 --- a/src/mame/drivers/usgames.cpp +++ b/src/mame/drivers/usgames.cpp @@ -242,7 +242,7 @@ void usgames_state::usg32(machine_config &config) crtc.set_screen("screen"); crtc.set_show_border_area(false); crtc.set_char_width(8); - crtc.set_update_row_callback(FUNC(usgames_state::update_row), this); + crtc.set_update_row_callback(FUNC(usgames_state::update_row)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/uzebox.cpp b/src/mame/drivers/uzebox.cpp index dff2ec63c7a..a4b638a0c2a 100644 --- a/src/mame/drivers/uzebox.cpp +++ b/src/mame/drivers/uzebox.cpp @@ -87,7 +87,7 @@ void uzebox_state::machine_start() m_screen->register_screen_bitmap(m_bitmap); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0xffff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0xffff, read8sm_delegate(m_cart, FUNC(generic_slot_device::read_rom))); } void uzebox_state::machine_reset() @@ -307,7 +307,7 @@ void uzebox_state::uzebox(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "uzebox", "bin,uze"); m_cart->set_must_be_loaded(true); - m_cart->set_device_load(FUNC(uzebox_state::cart_load), this); + m_cart->set_device_load(FUNC(uzebox_state::cart_load)); SNES_CONTROL_PORT(config, m_ctrl1, snes_control_port_devices, "joypad"); SNES_CONTROL_PORT(config, m_ctrl2, snes_control_port_devices, "joypad"); diff --git a/src/mame/drivers/v6809.cpp b/src/mame/drivers/v6809.cpp index 5095945e919..96b80f7414f 100644 --- a/src/mame/drivers/v6809.cpp +++ b/src/mame/drivers/v6809.cpp @@ -308,8 +308,8 @@ void v6809_state::v6809(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(v6809_state::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(v6809_state::crtc_update_addr), this); + m_crtc->set_update_row_callback(FUNC(v6809_state::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(v6809_state::crtc_update_addr)); generic_keyboard_device &keyboard(GENERIC_KEYBOARD(config, "keyboard", 0)); keyboard.set_keyboard_callback(FUNC(v6809_state::kbd_put)); diff --git a/src/mame/drivers/vamphalf.cpp b/src/mame/drivers/vamphalf.cpp index a1c19cca1a0..61dd7388f0b 100644 --- a/src/mame/drivers/vamphalf.cpp +++ b/src/mame/drivers/vamphalf.cpp @@ -3262,7 +3262,7 @@ READ16_MEMBER(vamphalf_state::boonggab_speedup_r) void vamphalf_state::init_vamphalf() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a7b8, 0x0004a7b9, read16_delegate(FUNC(vamphalf_state::vamphalf_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a7b8, 0x0004a7b9, read16_delegate(*this, FUNC(vamphalf_state::vamphalf_speedup_r))); m_palshift = 0; m_flip_bit = 0x80; @@ -3270,7 +3270,7 @@ void vamphalf_state::init_vamphalf() void vamphalf_state::init_vamphalfr1() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a468, 0x0004a469, read16_delegate(FUNC(vamphalf_state::vamphalfr1_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a468, 0x0004a469, read16_delegate(*this, FUNC(vamphalf_state::vamphalfr1_speedup_r))); m_palshift = 0; m_flip_bit = 0x80; @@ -3278,7 +3278,7 @@ void vamphalf_state::init_vamphalfr1() void vamphalf_state::init_vamphafk() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a648, 0x0004a649, read16_delegate(FUNC(vamphalf_state::vamphafk_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0004a648, 0x0004a649, read16_delegate(*this, FUNC(vamphalf_state::vamphafk_speedup_r))); m_palshift = 0; m_flip_bit = 0x80; @@ -3286,8 +3286,8 @@ void vamphalf_state::init_vamphafk() void vamphalf_qdsp_state::init_misncrft() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000741e8, 0x000741e9, read16_delegate(FUNC(vamphalf_qdsp_state::misncrft_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00072e2c, 0x00072e2d, read16_delegate(FUNC(vamphalf_qdsp_state::misncrfta_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000741e8, 0x000741e9, read16_delegate(*this, FUNC(vamphalf_qdsp_state::misncrft_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00072e2c, 0x00072e2d, read16_delegate(*this, FUNC(vamphalf_qdsp_state::misncrfta_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3298,7 +3298,7 @@ void vamphalf_qdsp_state::init_misncrft() void vamphalf_state::init_coolmini() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d2df8, 0x000d2df9, read16_delegate(FUNC(vamphalf_state::coolmini_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d2df8, 0x000d2df9, read16_delegate(*this, FUNC(vamphalf_state::coolmini_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3306,7 +3306,7 @@ void vamphalf_state::init_coolmini() void vamphalf_state::init_coolminii() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d30a8, 0x000d30a9, read16_delegate(FUNC(vamphalf_state::coolminii_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000d30a8, 0x000d30a9, read16_delegate(*this, FUNC(vamphalf_state::coolminii_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3315,7 +3315,7 @@ void vamphalf_state::init_coolminii() void vamphalf_state::init_mrkicker() { banked_oki(0); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00063fc0, 0x00063fc1, read16_delegate(FUNC(vamphalf_state::mrkicker_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00063fc0, 0x00063fc1, read16_delegate(*this, FUNC(vamphalf_state::mrkicker_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3323,7 +3323,7 @@ void vamphalf_state::init_mrkicker() void vamphalf_state::init_suplup() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0011605c, 0x0011605d, read16_delegate(FUNC(vamphalf_state::suplup_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0011605c, 0x0011605d, read16_delegate(*this, FUNC(vamphalf_state::suplup_speedup_r))); m_palshift = 8; /* no flipscreen */ @@ -3331,7 +3331,7 @@ void vamphalf_state::init_suplup() void vamphalf_state::init_luplup() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00115e84, 0x00115e85, read16_delegate(FUNC(vamphalf_state::luplup_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00115e84, 0x00115e85, read16_delegate(*this, FUNC(vamphalf_state::luplup_speedup_r))); m_palshift = 8; /* no flipscreen */ @@ -3339,7 +3339,7 @@ void vamphalf_state::init_luplup() void vamphalf_state::init_luplup29() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f08, 0x00113f09, read16_delegate(FUNC(vamphalf_state::luplup29_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f08, 0x00113f09, read16_delegate(*this, FUNC(vamphalf_state::luplup29_speedup_r))); m_palshift = 8; /* no flipscreen */ @@ -3347,7 +3347,7 @@ void vamphalf_state::init_luplup29() void vamphalf_state::init_luplup10() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113b78, 0x00113b79, read16_delegate(FUNC(vamphalf_state::luplup10_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113b78, 0x00113b79, read16_delegate(*this, FUNC(vamphalf_state::luplup10_speedup_r))); m_palshift = 8; /* no flipscreen */ @@ -3355,8 +3355,8 @@ void vamphalf_state::init_luplup10() void vamphalf_state::init_puzlbang() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f14, 0x00113f15, read16_delegate(FUNC(vamphalf_state::puzlbang_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113ecc, 0x00113ecd, read16_delegate(FUNC(vamphalf_state::puzlbanga_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113f14, 0x00113f15, read16_delegate(*this, FUNC(vamphalf_state::puzlbang_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00113ecc, 0x00113ecd, read16_delegate(*this, FUNC(vamphalf_state::puzlbanga_speedup_r))); m_palshift = 8; /* no flipscreen */ @@ -3364,9 +3364,9 @@ void vamphalf_state::init_puzlbang() void vamphalf_qdsp_state::init_wyvernwg() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b4cc4, 0x00b4cc7, read32_delegate(FUNC(vamphalf_qdsp_state::wivernwg_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b56f4, 0x00b56f7, read32_delegate(FUNC(vamphalf_qdsp_state::wyvernwg_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b74f0, 0x00b74f3, read32_delegate(FUNC(vamphalf_qdsp_state::wyvernwga_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b4cc4, 0x00b4cc7, read32_delegate(*this, FUNC(vamphalf_qdsp_state::wivernwg_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b56f4, 0x00b56f7, read32_delegate(*this, FUNC(vamphalf_qdsp_state::wyvernwg_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00b74f0, 0x00b74f3, read32_delegate(*this, FUNC(vamphalf_qdsp_state::wyvernwga_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3408,7 +3408,7 @@ void vamphalf_nvram_state::init_finalgdr() banked_oki(0); m_finalgdr_backupram_bank = 1; m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x005e870, 0x005e873, read32_delegate(FUNC(vamphalf_nvram_state::finalgdr_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x005e870, 0x005e873, read32_delegate(*this, FUNC(vamphalf_nvram_state::finalgdr_speedup_r))); m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100); m_palshift = 0; @@ -3430,7 +3430,7 @@ void vamphalf_nvram_state::init_mrkickera() // backup ram isn't used m_finalgdr_backupram_bank = 1; m_finalgdr_backupram = std::make_unique<u8[]>(0x80*0x100); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00701a0, 0x00701a3, read32_delegate(FUNC(vamphalf_nvram_state::mrkickera_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00701a0, 0x00701a3, read32_delegate(*this, FUNC(vamphalf_nvram_state::mrkickera_speedup_r))); m_nvram->set_base(m_finalgdr_backupram.get(), 0x80*0x100); m_palshift = 0; @@ -3446,7 +3446,7 @@ void vamphalf_nvram_state::init_mrkickera() void vamphalf_state::init_dquizgo2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00cdde8, 0x00cdde9, read16_delegate(FUNC(vamphalf_state::dquizgo2_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00cdde8, 0x00cdde9, read16_delegate(*this, FUNC(vamphalf_state::dquizgo2_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3455,7 +3455,7 @@ void vamphalf_state::init_dquizgo2() void vamphalf_state::init_dtfamily() { banked_oki(0); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xcc2a8, 0xcc2a9, read16_delegate(FUNC(vamphalf_state::dtfamily_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xcc2a8, 0xcc2a9, read16_delegate(*this, FUNC(vamphalf_state::dtfamily_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3464,7 +3464,7 @@ void vamphalf_state::init_dtfamily() void vamphalf_state::init_toyland() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x780d8, 0x780d9, read16_delegate(FUNC(vamphalf_state::toyland_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x780d8, 0x780d9, read16_delegate(*this, FUNC(vamphalf_state::toyland_speedup_r))); m_palshift = 0; m_flip_bit = 1; @@ -3473,7 +3473,7 @@ void vamphalf_state::init_toyland() void vamphalf_state::init_aoh() { banked_oki(1); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x028a09c, 0x028a09f, read32_delegate(FUNC(vamphalf_state::aoh_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x028a09c, 0x028a09f, read32_delegate(*this, FUNC(vamphalf_state::aoh_speedup_r))); m_palshift = 0; /* no flipscreen */ @@ -3481,40 +3481,40 @@ void vamphalf_state::init_aoh() void vamphalf_state::init_jmpbreak() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x00906f4, 0x00906f5, read16_delegate(FUNC(vamphalf_state::jmpbreak_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x00906f4, 0x00906f5, read16_delegate(*this, FUNC(vamphalf_state::jmpbreak_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w))); m_palshift = 0; } void vamphalf_state::init_mrdig() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0768, 0x0e0769, read16_delegate(FUNC(vamphalf_state::mrdig_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0e0768, 0x0e0769, read16_delegate(*this, FUNC(vamphalf_state::mrdig_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w))); m_palshift = 0; } void vamphalf_state::init_poosho() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c8b58, 0x0c8b59, read16_delegate(FUNC(vamphalf_state::poosho_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c8b58, 0x0c8b59, read16_delegate(*this, FUNC(vamphalf_state::poosho_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w))); m_palshift = 0; } void vamphalf_state::init_newxpang() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x061218, 0x061219, read16_delegate(FUNC(vamphalf_state::newxpang_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x061218, 0x061219, read16_delegate(*this, FUNC(vamphalf_state::newxpang_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w))); m_palshift = 0; } void vamphalf_state::init_worldadv() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c5e78, 0x0c5e79, read16_delegate(FUNC(vamphalf_state::worldadv_speedup_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(FUNC(vamphalf_state::jmpbreak_flipscreen_w), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0c5e78, 0x0c5e79, read16_delegate(*this, FUNC(vamphalf_state::worldadv_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe0000000, 0xe0000003, write16smo_delegate(*this, FUNC(vamphalf_state::jmpbreak_flipscreen_w))); m_palshift = 0; } @@ -3522,7 +3522,7 @@ void vamphalf_state::init_worldadv() void vamphalf_state::init_boonggab() { banked_oki(0); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x000f1b74, 0x000f1b75, read16_delegate(FUNC(vamphalf_state::boonggab_speedup_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x000f1b74, 0x000f1b75, read16_delegate(*this, FUNC(vamphalf_state::boonggab_speedup_r))); m_palshift = 0; m_has_extra_gfx = true; diff --git a/src/mame/drivers/vaportra.cpp b/src/mame/drivers/vaportra.cpp index f196a9a3650..a6f593ce1df 100644 --- a/src/mame/drivers/vaportra.cpp +++ b/src/mame/drivers/vaportra.cpp @@ -242,8 +242,8 @@ void vaportra_state::vaportra(machine_config &config) m_deco_tilegen[0]->set_pf2_col_bank(0x20); m_deco_tilegen[0]->set_pf1_col_mask(0x0f); m_deco_tilegen[0]->set_pf2_col_mask(0x0f); - m_deco_tilegen[0]->set_bank1_callback(FUNC(vaportra_state::bank_callback), this); - m_deco_tilegen[0]->set_bank2_callback(FUNC(vaportra_state::bank_callback), this); + m_deco_tilegen[0]->set_bank1_callback(FUNC(vaportra_state::bank_callback)); + m_deco_tilegen[0]->set_bank2_callback(FUNC(vaportra_state::bank_callback)); m_deco_tilegen[0]->set_pf12_8x8_bank(0); m_deco_tilegen[0]->set_pf12_16x16_bank(1); m_deco_tilegen[0]->set_gfxdecode_tag(m_gfxdecode); @@ -257,14 +257,14 @@ void vaportra_state::vaportra(machine_config &config) m_deco_tilegen[1]->set_pf2_col_bank(0x40); m_deco_tilegen[1]->set_pf1_col_mask(0x0f); m_deco_tilegen[1]->set_pf2_col_mask(0x0f); - m_deco_tilegen[1]->set_bank1_callback(FUNC(vaportra_state::bank_callback), this); - m_deco_tilegen[1]->set_bank2_callback(FUNC(vaportra_state::bank_callback), this); + m_deco_tilegen[1]->set_bank1_callback(FUNC(vaportra_state::bank_callback)); + m_deco_tilegen[1]->set_bank2_callback(FUNC(vaportra_state::bank_callback)); m_deco_tilegen[1]->set_pf12_8x8_bank(2); m_deco_tilegen[1]->set_pf12_16x16_bank(3); m_deco_tilegen[1]->set_gfxdecode_tag(m_gfxdecode); DECO_MXC06(config, m_spritegen, 0); - m_spritegen->set_colpri_callback(FUNC(vaportra_state::vaportra_colpri_cb), this); + m_spritegen->set_colpri_callback(FUNC(vaportra_state::vaportra_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/vc4000.cpp b/src/mame/drivers/vc4000.cpp index b273447b551..4d4b7c67ea8 100644 --- a/src/mame/drivers/vc4000.cpp +++ b/src/mame/drivers/vc4000.cpp @@ -369,25 +369,25 @@ void vc4000_state::machine_start() // extra handler switch (m_cart->get_type()) { - case VC4000_STD: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart)); - break; - case VC4000_ROM4K: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart)); - break; - case VC4000_RAM1K: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart)); - break; - case VC4000_CHESS2: - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart)); - break; - // undumped Radofin Hobby Module -// case VC4000_HOBBY: -// m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_rom),(vc4000_cart_slot_device*)m_cart)); -// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8sm_delegate(FUNC(vc4000_cart_slot_device::read_ram),(vc4000_cart_slot_device*)m_cart), write8sm_delegate(FUNC(vc4000_cart_slot_device::write_ram),(vc4000_cart_slot_device*)m_cart)); -// break; + case VC4000_STD: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_rom))); + break; + case VC4000_ROM4K: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_rom))); + break; + case VC4000_RAM1K: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x0fff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_rom))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1000, 0x15ff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_ram)), write8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::write_ram))); + break; + case VC4000_CHESS2: + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x15ff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_rom))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1800, 0x1bff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_ram)), write8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::write_ram))); + break; + // undumped Radofin Hobby Module +// case VC4000_HOBBY: +// m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x07ff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_rom))); +// m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0800, 0x0fff, read8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::read_ram)), write8sm_delegate(*m_cart, FUNC(vc4000_cart_slot_device::write_ram))); +// break; } m_cart->save_ram(); @@ -550,7 +550,7 @@ void vc4000_state::vc4000(machine_config &config) VC4000_SND(config, m_custom, 0).add_route(ALL_OUTPUTS, "mono", 0.50); /* quickload */ - QUICKLOAD(config, "quickload", "pgm,tvc").set_load_callback(FUNC(vc4000_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "pgm,tvc").set_load_callback(FUNC(vc4000_state::quickload_cb)); /* cartridge */ VC4000_CART_SLOT(config, "cartslot", vc4000_cart, nullptr); diff --git a/src/mame/drivers/vector06.cpp b/src/mame/drivers/vector06.cpp index 9f7167ef785..6fe38d34ba5 100644 --- a/src/mame/drivers/vector06.cpp +++ b/src/mame/drivers/vector06.cpp @@ -44,9 +44,9 @@ void vector06_state::vector06_io(address_map &map) map.global_mask(0xff); map.unmap_value_high(); - map(0x00, 0x03).lrw8("ppi8255_rw", [this](offs_t offset) -> u8 { return m_ppi8255->read(offset^3); }, [this](offs_t offset, u8 data) { m_ppi8255->write(offset^3, data); }); - map(0x04, 0x07).lrw8("ppi8255_2_rw", [this](offs_t offset) -> u8 { return m_ppi8255_2->read(offset^3); }, [this](offs_t offset, u8 data) { m_ppi8255_2->write(offset^3, data); }); - map(0x08, 0x0b).lrw8("pit8253_rw", [this](offs_t offset) -> u8 { return m_pit8253->read(offset^3); }, [this](offs_t offset, u8 data) { m_pit8253->write(offset^3, data); }); + map(0x00, 0x03).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi8255->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi8255->write(offset^3, data); })); + map(0x04, 0x07).lrw8(NAME([this] (offs_t offset) -> u8 { return m_ppi8255_2->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_ppi8255_2->write(offset^3, data); })); + map(0x08, 0x0b).lrw8(NAME([this] (offs_t offset) -> u8 { return m_pit8253->read(offset^3); }), NAME([this] (offs_t offset, u8 data) { m_pit8253->write(offset^3, data); })); map(0x0c, 0x0c).w(FUNC(vector06_state::vector06_color_set)); map(0x10, 0x10).w(FUNC(vector06_state::vector06_ramdisk_w)); map(0x14, 0x15).rw(m_ay, FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_address_w)); diff --git a/src/mame/drivers/vendetta.cpp b/src/mame/drivers/vendetta.cpp index 1fbbff36241..e98208e0b22 100644 --- a/src/mame/drivers/vendetta.cpp +++ b/src/mame/drivers/vendetta.cpp @@ -457,10 +457,10 @@ void vendetta_state::vendetta(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); - m_k052109->set_tile_callback(FUNC(vendetta_state::vendetta_tile_callback), this); + m_k052109->set_tile_callback(FUNC(vendetta_state::vendetta_tile_callback)); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(vendetta_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(vendetta_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 53, 6); m_k053246->set_palette(m_palette); @@ -494,7 +494,7 @@ void vendetta_state::esckids(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette(m_palette); - m_k052109->set_tile_callback(FUNC(vendetta_state::esckids_tile_callback), this); + m_k052109->set_tile_callback(FUNC(vendetta_state::esckids_tile_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 101, 6); diff --git a/src/mame/drivers/vgmplay.cpp b/src/mame/drivers/vgmplay.cpp index 1e3f687f712..ed5d80c72f7 100644 --- a/src/mame/drivers/vgmplay.cpp +++ b/src/mame/drivers/vgmplay.cpp @@ -3226,11 +3226,11 @@ void vgmplay_state::soundchips_map(address_map &map) map(vgmplay_device::A_MULTIPCM_1 + 4, vgmplay_device::A_MULTIPCM_1 + 7).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_hi_w<1>)); map(vgmplay_device::A_MULTIPCM_1 + 8, vgmplay_device::A_MULTIPCM_1 + 11).w("vgmplay", FUNC(vgmplay_device::multipcm_bank_lo_w<1>)); map(vgmplay_device::A_UPD7759_0 + 0, vgmplay_device::A_UPD7759_0 + 0).w(FUNC(vgmplay_state::upd7759_reset_w<0>)); - map(vgmplay_device::A_UPD7759_0 + 1, vgmplay_device::A_UPD7759_0 + 1).lw8("upd7759.0.start", [this](uint8_t data) {m_upd7759[0]->start_w(data != 0); }); + map(vgmplay_device::A_UPD7759_0 + 1, vgmplay_device::A_UPD7759_0 + 1).lw8(NAME([this](uint8_t data) {m_upd7759[0]->start_w(data != 0); })); map(vgmplay_device::A_UPD7759_0 + 2, vgmplay_device::A_UPD7759_0 + 2).w(FUNC(vgmplay_state::upd7759_data_w<0>)); map(vgmplay_device::A_UPD7759_0 + 3, vgmplay_device::A_UPD7759_0 + 3).w("vgmplay", FUNC(vgmplay_device::upd7759_bank_w<0>)); map(vgmplay_device::A_UPD7759_1 + 0, vgmplay_device::A_UPD7759_1 + 0).w(FUNC(vgmplay_state::upd7759_reset_w<1>)); - map(vgmplay_device::A_UPD7759_1 + 1, vgmplay_device::A_UPD7759_1 + 1).lw8("upd7759.1.start", [this](uint8_t data) {m_upd7759[1]->start_w(data != 0); }); + map(vgmplay_device::A_UPD7759_1 + 1, vgmplay_device::A_UPD7759_1 + 1).lw8(NAME([this](uint8_t data) {m_upd7759[1]->start_w(data != 0); })); map(vgmplay_device::A_UPD7759_1 + 2, vgmplay_device::A_UPD7759_1 + 2).w(FUNC(vgmplay_state::upd7759_data_w<1>)); map(vgmplay_device::A_UPD7759_1 + 3, vgmplay_device::A_UPD7759_1 + 3).w("vgmplay", FUNC(vgmplay_device::upd7759_bank_w<1>)); map(vgmplay_device::A_OKIM6258_0 + 0x0, vgmplay_device::A_OKIM6258_0 + 0x0).w(m_okim6258[0], FUNC(okim6258_device::ctrl_w)); @@ -3456,7 +3456,7 @@ void vgmplay_state::vgmplay(machine_config &config) m_vgmplay->set_addrmap(AS_IO16, &vgmplay_state::soundchips16_map); quickload_image_device &quickload(QUICKLOAD(config, "quickload", "vgm,vgz")); - quickload.set_load_callback(FUNC(vgmplay_state::load_file), this); + quickload.set_load_callback(FUNC(vgmplay_state::load_file)); quickload.set_interface("vgm_quik"); SOFTWARE_LIST(config, "vgm_list").set_original("vgmplay"); diff --git a/src/mame/drivers/vic20.cpp b/src/mame/drivers/vic20.cpp index 86424ecf5c2..93d10aed1c6 100644 --- a/src/mame/drivers/vic20.cpp +++ b/src/mame/drivers/vic20.cpp @@ -844,7 +844,7 @@ void vic20_state::vic20(machine_config &config, const char* softlist_filter) m_user->pl_handler().set(m_via1, FUNC(via6522_device::write_pb7)); m_user->pm_handler().set(m_via1, FUNC(via6522_device::write_cb2)); - QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(vic20_state::quickload_vc20), this); + QUICKLOAD(config, "quickload", "p00,prg", CBM_QUICKLOAD_DELAY).set_load_callback(FUNC(vic20_state::quickload_vc20)); SOFTWARE_LIST(config, "cart_list").set_type("vic1001_cart", SOFTWARE_LIST_ORIGINAL_SYSTEM).set_filter(softlist_filter); SOFTWARE_LIST(config, "cass_list").set_type("vic1001_cass", SOFTWARE_LIST_ORIGINAL_SYSTEM).set_filter(softlist_filter); diff --git a/src/mame/drivers/victor9k.cpp b/src/mame/drivers/victor9k.cpp index c65e55331b8..7f3a543afe1 100644 --- a/src/mame/drivers/victor9k.cpp +++ b/src/mame/drivers/victor9k.cpp @@ -701,7 +701,7 @@ void victor9k_state::victor9k(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(10); - m_crtc->set_update_row_callback(FUNC(victor9k_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(victor9k_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(victor9k_state::vert_w)); // sound hardware diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp index 4e536d2988c..155a68df638 100644 --- a/src/mame/drivers/videopkr.cpp +++ b/src/mame/drivers/videopkr.cpp @@ -528,12 +528,12 @@ TILE_GET_INFO_MEMBER(videopkr_state::get_bg_tile_info) void videopkr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(videopkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(videopkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } VIDEO_START_MEMBER(videopkr_state,vidadcba) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(videopkr_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(videopkr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); } diff --git a/src/mame/drivers/vii.cpp b/src/mame/drivers/vii.cpp index 7ef021c7617..216289a4138 100644 --- a/src/mame/drivers/vii.cpp +++ b/src/mame/drivers/vii.cpp @@ -2186,7 +2186,7 @@ void vii_state::vii(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "vii_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(vii_state::cart_load_vii), this); + m_cart->set_device_load(FUNC(vii_state::cart_load_vii)); SOFTWARE_LIST(config, "vii_cart").set_original("vii"); } @@ -2208,7 +2208,7 @@ void icanguit_state::icanguit(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "icanguit_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(icanguit_state::cart_load_icanguit), this); + m_cart->set_device_load(FUNC(icanguit_state::cart_load_icanguit)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "icanguit_cart").set_original("icanguit"); @@ -2234,7 +2234,7 @@ void icanpian_state::icanpian(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "icanpian_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(icanpian_state::cart_load_icanguit), this); + m_cart->set_device_load(FUNC(icanpian_state::cart_load_icanguit)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "icanpian_cart").set_original("icanpian"); @@ -2253,7 +2253,7 @@ void tvgogo_state::tvgogo(machine_config &config) GENERIC_CARTSLOT(config, m_cart, generic_plain_slot, "tvgogo_cart"); m_cart->set_width(GENERIC_ROM16_WIDTH); - m_cart->set_device_load(FUNC(tvgogo_state::cart_load_tvgogo), this); + m_cart->set_device_load(FUNC(tvgogo_state::cart_load_tvgogo)); m_cart->set_must_be_loaded(true); SOFTWARE_LIST(config, "tvgogo_cart").set_original("tvgogo"); diff --git a/src/mame/drivers/vip.cpp b/src/mame/drivers/vip.cpp index d289cb30623..421035b3807 100644 --- a/src/mame/drivers/vip.cpp +++ b/src/mame/drivers/vip.cpp @@ -755,7 +755,7 @@ void vip_state::vip(machine_config &config) m_exp->dma_in_wr_callback().set(FUNC(vip_state::exp_dma_in_w)); // devices - QUICKLOAD(config, "quickload", "bin,c8,c8x").set_load_callback(FUNC(vip_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "bin,c8,c8x").set_load_callback(FUNC(vip_state::quickload_cb)); CASSETTE(config, m_cassette); m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cassette->set_interface("vip_cass"); diff --git a/src/mame/drivers/viper.cpp b/src/mame/drivers/viper.cpp index 11a025f1a67..63159a13d6f 100644 --- a/src/mame/drivers/viper.cpp +++ b/src/mame/drivers/viper.cpp @@ -1745,35 +1745,35 @@ void viper_state::voodoo3_pci_w(int function, int reg, uint32_t data, uint32_t m READ64_MEMBER(viper_state::voodoo3_io_r) { - return read64be_with_32sle_device_handler(read32s_delegate(FUNC(voodoo_3_device::banshee_io_r), &(*m_voodoo)), offset, mem_mask); + return read64be_with_32sle_device_handler(read32s_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_io_r)), offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_io_w) { // printf("voodoo3_io_w: %08X%08X, %08X at %08X\n", (uint32_t)(data >> 32), (uint32_t)(data), offset, m_maincpu->pc()); - write64be_with_32sle_device_handler(write32s_delegate(FUNC(voodoo_3_device::banshee_io_w), &(*m_voodoo)), offset, data, mem_mask); + write64be_with_32sle_device_handler(write32s_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_io_w)), offset, data, mem_mask); } READ64_MEMBER(viper_state::voodoo3_r) { - return read64be_with_32sle_device_handler(read32s_delegate(FUNC(voodoo_3_device::banshee_r), &(*m_voodoo)), offset, mem_mask); + return read64be_with_32sle_device_handler(read32s_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_r)), offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_w) { // printf("voodoo3_w: %08X%08X, %08X at %08X\n", (uint32_t)(data >> 32), (uint32_t)(data), offset, m_maincpu->pc()); - write64be_with_32sle_device_handler(write32s_delegate(FUNC(voodoo_3_device::banshee_w), &(*m_voodoo)), offset, data, mem_mask); + write64be_with_32sle_device_handler(write32s_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_w)), offset, data, mem_mask); } READ64_MEMBER(viper_state::voodoo3_lfb_r) { - return read64be_with_32smle_device_handler(read32sm_delegate(FUNC(voodoo_3_device::banshee_fb_r), &(*m_voodoo)), offset, mem_mask); + return read64be_with_32smle_device_handler(read32sm_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_fb_r)), offset, mem_mask); } WRITE64_MEMBER(viper_state::voodoo3_lfb_w) { // printf("voodoo3_lfb_w: %08X%08X, %08X at %08X\n", (uint32_t)(data >> 32), (uint32_t)(data), offset, m_maincpu->pc()); - write64be_with_32sle_device_handler(write32s_delegate(FUNC(voodoo_3_device::banshee_fb_w), &(*m_voodoo)), offset, data, mem_mask); + write64be_with_32sle_device_handler(write32s_delegate(*m_voodoo, FUNC(voodoo_3_device::banshee_fb_w)), offset, data, mem_mask); } @@ -2424,10 +2424,8 @@ void viper_state::viper(machine_config &config) m_maincpu->set_vblank_int("screen", FUNC(viper_state::viper_vblank)); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read ( 0, FUNC(viper_state::mpc8240_pci_r), this); - pcibus.set_device_write( 0, FUNC(viper_state::mpc8240_pci_w), this); - pcibus.set_device_read (12, FUNC(viper_state::voodoo3_pci_r), this); - pcibus.set_device_write(12, FUNC(viper_state::voodoo3_pci_w), this); + pcibus.set_device( 0, FUNC(viper_state::mpc8240_pci_r), FUNC(viper_state::mpc8240_pci_w)); + pcibus.set_device(12, FUNC(viper_state::voodoo3_pci_r), FUNC(viper_state::voodoo3_pci_w)); ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true); @@ -2469,17 +2467,17 @@ void viper_state::init_viperhd() { init_viper(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::ata_r), this), write64_delegate(FUNC(viper_state::ata_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(*this, FUNC(viper_state::ata_r)), write64_delegate(*this, FUNC(viper_state::ata_w))); } void viper_state::init_vipercf() { init_viper(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff000000, 0xff000fff, read64_delegate(FUNC(viper_state::cf_card_data_r), this), write64_delegate(FUNC(viper_state::cf_card_data_w), this) ); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff200000, 0xff200fff, read64_delegate(FUNC(viper_state::cf_card_r), this), write64_delegate(FUNC(viper_state::cf_card_w), this) ); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff000000, 0xff000fff, read64_delegate(*this, FUNC(viper_state::cf_card_data_r)), write64_delegate(*this, FUNC(viper_state::cf_card_data_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff200000, 0xff200fff, read64_delegate(*this, FUNC(viper_state::cf_card_r)), write64_delegate(*this, FUNC(viper_state::cf_card_w))); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(FUNC(viper_state::unk_serial_r), this), write64_delegate(FUNC(viper_state::unk_serial_w), this) ); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xff300000, 0xff300fff, read64_delegate(*this, FUNC(viper_state::unk_serial_r)), write64_delegate(*this, FUNC(viper_state::unk_serial_w))); } diff --git a/src/mame/drivers/vis.cpp b/src/mame/drivers/vis.cpp index 8e0421c206e..84263519217 100644 --- a/src/mame/drivers/vis.cpp +++ b/src/mame/drivers/vis.cpp @@ -56,8 +56,8 @@ void vis_audio_device::device_start() { set_isa_device(); m_isa->set_dma_channel(7, this, false); - m_isa->install_device(0x0220, 0x022f, read8_delegate(FUNC(vis_audio_device::pcm_r), this), write8_delegate(FUNC(vis_audio_device::pcm_w), this)); - m_isa->install_device(0x0388, 0x038b, read8sm_delegate(FUNC(ymf262_device::read), subdevice<ymf262_device>("ymf262")), write8sm_delegate(FUNC(ymf262_device::write), subdevice<ymf262_device>("ymf262"))); + m_isa->install_device(0x0220, 0x022f, read8_delegate(*this, FUNC(vis_audio_device::pcm_r)), write8_delegate(*this, FUNC(vis_audio_device::pcm_w))); + m_isa->install_device(0x0388, 0x038b, read8sm_delegate(*subdevice<ymf262_device>("ymf262"), FUNC(ymf262_device::read)), write8sm_delegate(*subdevice<ymf262_device>("ymf262"), FUNC(ymf262_device::write))); m_pcm = timer_alloc(); m_pcm->adjust(attotime::never); } @@ -386,8 +386,8 @@ void vis_vga_device::vga_vh_yuv8(bitmap_rgb32 &bitmap, const rectangle &cliprect void vis_vga_device::device_start() { set_isa_device(); - m_isa->install_device(0x03b0, 0x03df, read8_delegate(FUNC(vis_vga_device::vga_r), this), write8_delegate(FUNC(vis_vga_device::vga_w), this)); - m_isa->install_memory(0x0a0000, 0x0bffff, read8_delegate(FUNC(vis_vga_device::visvgamem_r), this), write8_delegate(FUNC(vis_vga_device::visvgamem_w), this)); + m_isa->install_device(0x03b0, 0x03df, read8_delegate(*this, FUNC(vis_vga_device::vga_r)), write8_delegate(*this, FUNC(vis_vga_device::vga_w))); + m_isa->install_memory(0x0a0000, 0x0bffff, read8_delegate(*this, FUNC(vis_vga_device::visvgamem_r)), write8_delegate(*this, FUNC(vis_vga_device::visvgamem_w))); svga_device::device_start(); vga.svga_intf.seq_regcount = 0x2d; save_pointer(m_crtc_regs,"VIS CRTC",0x32); diff --git a/src/mame/drivers/vk100.cpp b/src/mame/drivers/vk100.cpp index 3479e4ffc5b..6e1e4fa8a1c 100644 --- a/src/mame/drivers/vk100.cpp +++ b/src/mame/drivers/vk100.cpp @@ -1047,7 +1047,7 @@ void vk100_state::vk100(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(12); - m_crtc->set_update_row_callback(FUNC(vk100_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(vk100_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(vk100_state::crtc_vsync)); /* i8251 uart */ diff --git a/src/mame/drivers/vlc.cpp b/src/mame/drivers/vlc.cpp index 42ae414d6eb..b6bbcf516c5 100644 --- a/src/mame/drivers/vlc.cpp +++ b/src/mame/drivers/vlc.cpp @@ -300,7 +300,7 @@ TILE_GET_INFO_MEMBER( nevada_state::get_bg_tile_info ) /***************************************************************************/ void nevada_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nevada_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,31,31); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nevada_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 31,31); } /***************************************************************************/ diff --git a/src/mame/drivers/volfied.cpp b/src/mame/drivers/volfied.cpp index 67b01bf2355..fd66e5825d5 100644 --- a/src/mame/drivers/volfied.cpp +++ b/src/mame/drivers/volfied.cpp @@ -254,7 +254,7 @@ void volfied_state::volfied(machine_config &config) PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_palette("palette"); - m_pc090oj->set_colpri_callback(FUNC(volfied_state::volfied_colpri_cb), this); + m_pc090oj->set_colpri_callback(FUNC(volfied_state::volfied_colpri_cb)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/voyager.cpp b/src/mame/drivers/voyager.cpp index 258c4199fe9..7e1dbcd6414 100644 --- a/src/mame/drivers/voyager.cpp +++ b/src/mame/drivers/voyager.cpp @@ -515,10 +515,8 @@ void voyager_state::voyager(machine_config &config) ide.irq_handler().set("pic8259_2", FUNC(pic8259_device::ir6_w)); pci_bus_legacy_device &pcibus(PCI_BUS_LEGACY(config, "pcibus", 0, 0)); - pcibus.set_device_read (0, FUNC(voyager_state::intel82439tx_pci_r), this); - pcibus.set_device_write(0, FUNC(voyager_state::intel82439tx_pci_w), this); - pcibus.set_device_read (7, FUNC(voyager_state::intel82371ab_pci_r), this); - pcibus.set_device_write(7, FUNC(voyager_state::intel82371ab_pci_w), this); + pcibus.set_device(0, FUNC(voyager_state::intel82439tx_pci_r), FUNC(voyager_state::intel82439tx_pci_w)); + pcibus.set_device(7, FUNC(voyager_state::intel82371ab_pci_r), FUNC(voyager_state::intel82371ab_pci_w)); /* video hardware */ pcvideo_trident_vga(config); diff --git a/src/mame/drivers/vp60.cpp b/src/mame/drivers/vp60.cpp index 975d74b68bf..7022db15291 100644 --- a/src/mame/drivers/vp60.cpp +++ b/src/mame/drivers/vp60.cpp @@ -86,7 +86,7 @@ void vp60_state::vp60(machine_config &config) I8275(config, m_crtc, 25.92_MHz_XTAL / 16); m_crtc->set_character_width(16); - m_crtc->set_display_callback(FUNC(vp60_state::draw_character), this); + m_crtc->set_display_callback(FUNC(vp60_state::draw_character)); m_crtc->set_screen("screen"); i8035_device &kbdcpu(I8035(config, "kbdcpu", 3.579545_MHz_XTAL)); // 48-300-010 XTAL diff --git a/src/mame/drivers/vroulet.cpp b/src/mame/drivers/vroulet.cpp index 5d6f3dc0796..99d3a8c4545 100644 --- a/src/mame/drivers/vroulet.cpp +++ b/src/mame/drivers/vroulet.cpp @@ -139,7 +139,7 @@ void vroulet_state::video_start() { m_bg_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(vroulet_state::get_bg_tile_info),this), + tilemap_get_info_delegate(*this, FUNC(vroulet_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/drivers/vtech1.cpp b/src/mame/drivers/vtech1.cpp index 7ede641224c..09069bdebd1 100644 --- a/src/mame/drivers/vtech1.cpp +++ b/src/mame/drivers/vtech1.cpp @@ -459,7 +459,7 @@ void vtech1_state::laser110(machine_config &config) // snapshot snapshot_image_device &snapshot(SNAPSHOT(config, "snapshot", "vz")); snapshot.set_delay(attotime::from_double(2.0)); - snapshot.set_load_callback(FUNC(vtech1_state::snapshot_cb), this); + snapshot.set_load_callback(FUNC(vtech1_state::snapshot_cb)); snapshot.set_interface("vzsnap"); CASSETTE(config, m_cassette); diff --git a/src/mame/drivers/vtech2.cpp b/src/mame/drivers/vtech2.cpp index 51626b20a4d..2bcc22a415a 100644 --- a/src/mame/drivers/vtech2.cpp +++ b/src/mame/drivers/vtech2.cpp @@ -93,10 +93,10 @@ void vtech2_state::io_map(address_map &map) { map.global_mask(0xff); map(0x10, 0x1f).rw(FUNC(vtech2_state::laser_fdc_r), FUNC(vtech2_state::laser_fdc_w)); - map(0x40, 0x40).lw8("set_bankA", [this] (u8 data) { m_banka->set_bank(data & 15); }); - map(0x41, 0x41).lw8("set_bankB", [this] (u8 data) { m_bankb->set_bank(data & 15); }); - map(0x42, 0x42).lw8("set_bankC", [this] (u8 data) { m_bankc->set_bank(data & 15); }); - map(0x43, 0x43).lw8("set_bankD", [this] (u8 data) { m_bankd->set_bank(data & 15); }); + map(0x40, 0x40).lw8(NAME([this] (u8 data) { m_banka->set_bank(data & 15); })); + map(0x41, 0x41).lw8(NAME([this] (u8 data) { m_bankb->set_bank(data & 15); })); + map(0x42, 0x42).lw8(NAME([this] (u8 data) { m_bankc->set_bank(data & 15); })); + map(0x43, 0x43).lw8(NAME([this] (u8 data) { m_bankd->set_bank(data & 15); })); map(0x44, 0x44).w(FUNC(vtech2_state::laser_bg_mode_w)); map(0x45, 0x45).w(FUNC(vtech2_state::laser_two_color_w)); } @@ -521,7 +521,7 @@ void vtech2_state::laser350(machine_config &config) VTECH_IOEXP_SLOT(config, "io").set_io_space(m_maincpu, AS_IO); /* cartridge */ - GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "vtech_cart", "rom,bin").set_device_load(FUNC(vtech2_state::cart_load), this); + GENERIC_CARTSLOT(config, "cartslot", generic_plain_slot, "vtech_cart", "rom,bin").set_device_load(FUNC(vtech2_state::cart_load)); /* 5.25" Floppy drive */ LEGACY_FLOPPY(config, FLOPPY_0, 0, &vtech2_floppy_interface); diff --git a/src/mame/drivers/wallc.cpp b/src/mame/drivers/wallc.cpp index 88fbf57ed72..037305b5696 100644 --- a/src/mame/drivers/wallc.cpp +++ b/src/mame/drivers/wallc.cpp @@ -243,17 +243,17 @@ TILE_GET_INFO_MEMBER(wallc_state::get_bg_tile_info_sidampkr) void wallc_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wallc_state::get_bg_tile_info), this), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wallc_state::get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); } VIDEO_START_MEMBER(wallc_state, unkitpkr) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wallc_state::get_bg_tile_info_unkitpkr), this), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wallc_state::get_bg_tile_info_unkitpkr)), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); } VIDEO_START_MEMBER(wallc_state, sidampkr) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wallc_state::get_bg_tile_info_sidampkr), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wallc_state::get_bg_tile_info_sidampkr)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t wallc_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/warpsped.cpp b/src/mame/drivers/warpsped.cpp index 183434821ae..4c85336e7fc 100644 --- a/src/mame/drivers/warpsped.cpp +++ b/src/mame/drivers/warpsped.cpp @@ -159,9 +159,9 @@ WRITE8_MEMBER(warpspeed_state::vidram_w) void warpspeed_state::video_start() { - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(warpspeed_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_text_tilemap->set_transparent_pen(0); - m_starfield_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(warpspeed_state::get_starfield_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_starfield_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(warpspeed_state::get_starfield_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_starfield_tilemap->mark_all_dirty(); save_item(NAME(m_regs)); diff --git a/src/mame/drivers/wecleman.cpp b/src/mame/drivers/wecleman.cpp index a76a3385ffc..c15e1d40b32 100644 --- a/src/mame/drivers/wecleman.cpp +++ b/src/mame/drivers/wecleman.cpp @@ -1168,12 +1168,12 @@ void wecleman_state::hotchase(machine_config &config) m_k051316[0]->set_palette(m_palette); m_k051316[0]->set_offsets(-0xb0 / 2, -16); m_k051316[0]->set_wrap(1); - m_k051316[0]->set_zoom_callback(FUNC(wecleman_state::hotchase_zoom_callback_1), this); + m_k051316[0]->set_zoom_callback(FUNC(wecleman_state::hotchase_zoom_callback_1)); K051316(config, m_k051316[1], 0); m_k051316[1]->set_palette(m_palette); m_k051316[1]->set_offsets(-0xb0 / 2, -16); - m_k051316[1]->set_zoom_callback(FUNC(wecleman_state::hotchase_zoom_callback_2), this); + m_k051316[1]->set_zoom_callback(FUNC(wecleman_state::hotchase_zoom_callback_2)); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); diff --git a/src/mame/drivers/wicat.cpp b/src/mame/drivers/wicat.cpp index 5e6f1d2c050..76697e7dd00 100644 --- a/src/mame/drivers/wicat.cpp +++ b/src/mame/drivers/wicat.cpp @@ -832,7 +832,7 @@ void wicat_state::wicat(machine_config &config) I8275(config, m_crtc, 19.6608_MHz_XTAL/10); m_crtc->set_character_width(10); - m_crtc->set_display_callback(FUNC(wicat_state::wicat_display_pixels), this); + m_crtc->set_display_callback(FUNC(wicat_state::wicat_display_pixels)); m_crtc->drq_wr_callback().set(m_videodma, FUNC(am9517a_device::dreq0_w)); m_crtc->vrtc_wr_callback().set(FUNC(wicat_state::crtc_irq_w)); m_crtc->set_screen("screen"); diff --git a/src/mame/drivers/williams.cpp b/src/mame/drivers/williams.cpp index f49a1e23239..dbe1342bf1f 100644 --- a/src/mame/drivers/williams.cpp +++ b/src/mame/drivers/williams.cpp @@ -3192,7 +3192,7 @@ void williams_state::init_mayday() CONFIGURE_BLITTER(WILLIAMS_BLITTER_NONE, 0x0000); /* install a handler to catch protection checks */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa190, 0xa191, read8sm_delegate(FUNC(williams_state::mayday_protection_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa190, 0xa191, read8sm_delegate(*this, FUNC(williams_state::mayday_protection_r))); m_mayday_protection = m_videoram + 0xa190; } @@ -3227,7 +3227,7 @@ void williams_state::init_bubbles() CONFIGURE_BLITTER(WILLIAMS_BLITTER_SC1, 0xc000); /* bubbles has a full 8-bit-wide CMOS */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8sm_delegate(FUNC(williams_state::bubbles_cmos_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xcc00, 0xcfff, write8sm_delegate(*this, FUNC(williams_state::bubbles_cmos_w))); } diff --git a/src/mame/drivers/wink.cpp b/src/mame/drivers/wink.cpp index 6f54a302426..4071356f3af 100644 --- a/src/mame/drivers/wink.cpp +++ b/src/mame/drivers/wink.cpp @@ -98,7 +98,7 @@ TILE_GET_INFO_MEMBER(wink_state::get_bg_tile_info) void wink_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wink_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wink_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t wink_state::screen_update_wink(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/drivers/witch.cpp b/src/mame/drivers/witch.cpp index ba620398e0e..393f322e618 100644 --- a/src/mame/drivers/witch.cpp +++ b/src/mame/drivers/witch.cpp @@ -263,7 +263,7 @@ TILE_GET_INFO_MEMBER(keirinou_state::get_keirinou_gfx1_tile_info) void witch_state::video_common_init() { - m_gfx0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_gfx0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(witch_state::get_gfx0_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_gfx0_tilemap->set_transparent_pen(0); @@ -276,7 +276,7 @@ void witch_state::video_common_init() void witch_state::video_start() { video_common_init(); - m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(witch_state::get_gfx1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(witch_state::get_gfx1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_gfx0_tilemap->set_palette_offset(0x100); m_gfx1_tilemap->set_palette_offset(0x200); @@ -288,7 +288,7 @@ void keirinou_state::video_start() { //witch_state::video_start(); video_common_init(); - m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(keirinou_state::get_keirinou_gfx1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_gfx1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(keirinou_state::get_keirinou_gfx1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_gfx0_tilemap->set_palette_offset(0x000); m_gfx1_tilemap->set_palette_offset(0x100); @@ -1136,7 +1136,7 @@ void witch_state::init_witch() m_mainbank->configure_entries(0, 4, memregion("maincpu")->base() + UNBANKED_SIZE, 0x8000); m_mainbank->set_entry(0); - m_subcpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x700f, read8_delegate(FUNC(witch_state::prot_read_700x), this)); + m_subcpu->space(AS_PROGRAM).install_read_handler(0x7000, 0x700f, read8_delegate(*this, FUNC(witch_state::prot_read_700x))); } GAME( 1987, keirinou, 0, keirinou, keirinou, keirinou_state, empty_init, ROT0, "Excellent System", "Keirin Ou", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/wrally.cpp b/src/mame/drivers/wrally.cpp index e0435567e01..2c11a2f5f86 100644 --- a/src/mame/drivers/wrally.cpp +++ b/src/mame/drivers/wrally.cpp @@ -156,7 +156,7 @@ void wrally_state::wrally_map(address_map &map) map(0x700002, 0x700003).portr("P1_P2"); map(0x700004, 0x700005).portr("WHEEL"); map(0x700008, 0x700009).portr("SYSTEM"); - map(0x70000b, 0x70000b).select(0x000070).lw8("outlatch_w", [this](offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); }); + map(0x70000b, 0x70000b).select(0x000070).lw8(NAME([this] (offs_t offset, u8 data) { m_outlatch->write_d0(offset >> 4, data); })); map(0x70000d, 0x70000d).w(FUNC(wrally_state::okim6295_bankswitch_w)); /* OKI6295 bankswitch */ map(0x70000f, 0x70000f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); /* OKI6295 status/data register */ map(0xfec000, 0xfeffff).ram().share("shareram"); /* Work RAM (shared with DS5002FP) */ diff --git a/src/mame/drivers/wswan.cpp b/src/mame/drivers/wswan.cpp index 085a06a91a0..8234e882520 100644 --- a/src/mame/drivers/wswan.cpp +++ b/src/mame/drivers/wswan.cpp @@ -127,8 +127,8 @@ void wswan_state::wswan(machine_config &config) WSWAN_VIDEO(config, m_vdp, 0); m_vdp->set_screen("screen"); m_vdp->set_vdp_type(VDP_TYPE_WSWAN); - m_vdp->set_irq_callback(FUNC(wswan_state::set_irq_line), this); - m_vdp->set_dmasnd_callback(FUNC(wswan_state::dma_sound_cb), this); + m_vdp->set_irq_callback(FUNC(wswan_state::set_irq_line)); + m_vdp->set_dmasnd_callback(FUNC(wswan_state::dma_sound_cb)); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); // screen.set_refresh_rate(75); diff --git a/src/mame/drivers/wy100.cpp b/src/mame/drivers/wy100.cpp index af475667330..56d963dfa72 100644 --- a/src/mame/drivers/wy100.cpp +++ b/src/mame/drivers/wy100.cpp @@ -239,7 +239,7 @@ void wy100_state::wy100(machine_config &config) crtc->set_screen("screen"); crtc->set_character_width(10); } - m_crtc[0]->set_display_callback(FUNC(wy100_state::draw_character), this); + m_crtc[0]->set_display_callback(FUNC(wy100_state::draw_character)); m_crtc[0]->drq_wr_callback().set_inputline(m_maincpu, MCS48_INPUT_IRQ); m_crtc[0]->drq_wr_callback().append(FUNC(wy100_state::brdy_w)); m_crtc[0]->lc_wr_callback().set("spkrgate", FUNC(input_merger_device::in_w<1>)).bit(3); diff --git a/src/mame/drivers/wyvernf0.cpp b/src/mame/drivers/wyvernf0.cpp index e98d473cf24..9dcb260eb8f 100644 --- a/src/mame/drivers/wyvernf0.cpp +++ b/src/mame/drivers/wyvernf0.cpp @@ -163,8 +163,8 @@ TILE_GET_INFO_MEMBER(wyvernf0_state::get_fg_tile_info) void wyvernf0_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wyvernf0_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(wyvernf0_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(*this, FUNC(wyvernf0_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wyvernf0_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/drivers/x07.cpp b/src/mame/drivers/x07.cpp index f749600bcb4..cd10fe813e0 100644 --- a/src/mame/drivers/x07.cpp +++ b/src/mame/drivers/x07.cpp @@ -1437,9 +1437,9 @@ void x07_state::machine_start() { // 0x4000 - 0x4fff 4KB RAM // 0x6000 - 0x7fff 8KB ROM - program.install_read_handler(ram_size, ram_size + 0xfff, read8sm_delegate(FUNC(generic_slot_device::read_ram),(generic_slot_device*)m_card)); - program.install_write_handler(ram_size, ram_size + 0xfff, write8sm_delegate(FUNC(generic_slot_device::write_ram),(generic_slot_device*)m_card)); - program.install_read_handler(0x6000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_card)); + program.install_read_handler(ram_size, ram_size + 0xfff, read8sm_delegate(*m_card, FUNC(generic_slot_device::read_ram))); + program.install_write_handler(ram_size, ram_size + 0xfff, write8sm_delegate(*m_card, FUNC(generic_slot_device::write_ram))); + program.install_read_handler(0x6000, 0x7fff, read8sm_delegate(*m_card, FUNC(generic_slot_device::read_rom))); m_card->save_ram(); } @@ -1519,7 +1519,7 @@ void x07_state::x07(machine_config &config) RAM(config, RAM_TAG).set_default_size("16K").set_extra_options("8K,12K,20K,24K"); /* Memory Card */ - GENERIC_CARTSLOT(config, "cardslot", generic_romram_plain_slot, "x07_card", "rom,bin").set_device_load(FUNC(x07_state::card_load), this); + GENERIC_CARTSLOT(config, "cardslot", generic_romram_plain_slot, "x07_card", "rom,bin").set_device_load(FUNC(x07_state::card_load)); /* cassette */ CASSETTE(config, m_cassette); diff --git a/src/mame/drivers/x68k.cpp b/src/mame/drivers/x68k.cpp index 0a2974c436e..01d2c56fe34 100644 --- a/src/mame/drivers/x68k.cpp +++ b/src/mame/drivers/x68k.cpp @@ -1181,7 +1181,7 @@ void x68k_state::cpu_space_map(address_map &map) map(0xfffff9, 0xfffff9).r(FUNC(x68k_state::iack4)); map(0xfffffb, 0xfffffb).r(FUNC(x68k_state::iack5)); map(0xfffffd, 0xfffffd).r(m_mfpdev, FUNC(mc68901_device::get_vector)); - map(0xffffff, 0xffffff).lr8("nmiack", []() { return m68000_base_device::autovector(7); }); + map(0xffffff, 0xffffff).lr8(NAME([] () { return m68000_base_device::autovector(7); })); } WRITE_LINE_MEMBER(x68ksupr_state::scsi_irq) diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp index 02225265c18..f208d96f4c1 100644 --- a/src/mame/drivers/xerox820.cpp +++ b/src/mame/drivers/xerox820.cpp @@ -667,7 +667,7 @@ void xerox820_state::xerox820(machine_config &config) // software lists SOFTWARE_LIST(config, "flop_list").set_original("xerox820"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(xerox820_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(xerox820_state::quickload_cb)); } void bigboard_state::bigboard(machine_config &config) @@ -771,7 +771,7 @@ void xerox820ii_state::xerox820ii(machine_config &config) // software lists SOFTWARE_LIST(config, "flop_list").set_original("xerox820ii"); - QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(xerox820_state::quickload_cb), this); + QUICKLOAD(config, "quickload", "com,cpm", attotime::from_seconds(3)).set_load_callback(FUNC(xerox820_state::quickload_cb)); } void xerox820ii_state::xerox168(machine_config &config) diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp index 35dd1323daa..68f4ed0b716 100644 --- a/src/mame/drivers/xexex.cpp +++ b/src/mame/drivers/xexex.cpp @@ -500,12 +500,12 @@ void xexex_state::xexex(machine_config &config) m_palette->enable_hilights(); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(xexex_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(xexex_state::tile_callback)); m_k056832->set_config(K056832_BPP_4, 1, 0); m_k056832->set_palette(m_palette); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(xexex_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(xexex_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, -48, 32); m_k053246->set_palette(m_palette); diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp index ed3b4543eb5..2e1dbea5239 100644 --- a/src/mame/drivers/xmen.cpp +++ b/src/mame/drivers/xmen.cpp @@ -327,10 +327,10 @@ void xmen_state::xmen(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(xmen_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(xmen_state::tile_callback)); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(xmen_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(xmen_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 53, -2); m_k053246->set_palette("palette"); @@ -390,10 +390,10 @@ void xmen_state::xmen6p(machine_config &config) K052109(config, m_k052109, 0); m_k052109->set_palette("palette"); m_k052109->set_screen(nullptr); - m_k052109->set_tile_callback(FUNC(xmen_state::tile_callback), this); + m_k052109->set_tile_callback(FUNC(xmen_state::tile_callback)); K053246(config, m_k053246, 0); - m_k053246->set_sprite_callback(FUNC(xmen_state::sprite_callback), this); + m_k053246->set_sprite_callback(FUNC(xmen_state::sprite_callback)); m_k053246->set_config(NORMAL_PLANE_ORDER, 53, -2); m_k053246->set_screen(m_screen); m_k053246->set_palette("palette"); diff --git a/src/mame/drivers/xor100.cpp b/src/mame/drivers/xor100.cpp index 5392e0a0e2a..07503074fb0 100644 --- a/src/mame/drivers/xor100.cpp +++ b/src/mame/drivers/xor100.cpp @@ -265,9 +265,9 @@ void xor100_state::xor100_io(address_map &map) map(0x0a, 0x0a).r(FUNC(xor100_state::prom_disable_r)); map(0x0b, 0x0b).portr("DSW0").w(COM5016_TAG, FUNC(com8116_device::stt_str_w)); map(0x0c, 0x0f).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write)); - map(0xf8, 0xfb).lrw8("fdc", - [this](offs_t offset) { return m_fdc->read(offset) ^ 0xff; }, - [this](offs_t offset, u8 data) { m_fdc->write(offset, data ^ 0xff); }); + map(0xf8, 0xfb).lrw8( + NAME([this](offs_t offset) { return m_fdc->read(offset) ^ 0xff; }), + NAME([this](offs_t offset, u8 data) { m_fdc->write(offset, data ^ 0xff); })); map(0xfc, 0xfc).rw(FUNC(xor100_state::fdc_wait_r), FUNC(xor100_state::fdc_dcont_w)); map(0xfd, 0xfd).w(FUNC(xor100_state::fdc_dsel_w)); } diff --git a/src/mame/drivers/xtom3d.cpp b/src/mame/drivers/xtom3d.cpp index 78000c9f526..95983f6fcd8 100644 --- a/src/mame/drivers/xtom3d.cpp +++ b/src/mame/drivers/xtom3d.cpp @@ -422,10 +422,8 @@ void xtom3d_state::xtom3d(machine_config &config) pcat_common(config); PCI_BUS_LEGACY(config, m_pcibus, 0, 0); - m_pcibus->set_device_read (0, FUNC(xtom3d_state::intel82439tx_pci_r), this); - m_pcibus->set_device_write(0, FUNC(xtom3d_state::intel82439tx_pci_w), this); - m_pcibus->set_device_read (7, FUNC(xtom3d_state::intel82371ab_pci_r), this); - m_pcibus->set_device_write(7, FUNC(xtom3d_state::intel82371ab_pci_w), this); + m_pcibus->set_device(0, FUNC(xtom3d_state::intel82439tx_pci_r), FUNC(xtom3d_state::intel82439tx_pci_w)); + m_pcibus->set_device(7, FUNC(xtom3d_state::intel82371ab_pci_r), FUNC(xtom3d_state::intel82371ab_pci_w)); /* video hardware */ pcvideo_vga(config); diff --git a/src/mame/drivers/ymmu50.cpp b/src/mame/drivers/ymmu50.cpp index 7fad2fb2388..a3962f4902d 100644 --- a/src/mame/drivers/ymmu50.cpp +++ b/src/mame/drivers/ymmu50.cpp @@ -215,13 +215,13 @@ void mu50_state::mu50_iomap(address_map &map) map(h8_device::PORT_B, h8_device::PORT_B).rw(FUNC(mu50_state::pb_r), FUNC(mu50_state::pb_w)); map(h8_device::PORT_C, h8_device::PORT_C).rw(FUNC(mu50_state::pc_r), FUNC(mu50_state::pc_w)); map(h8_device::ADC_0, h8_device::ADC_0).r(FUNC(mu50_state::adc_ar_r)); - map(h8_device::ADC_1, h8_device::ADC_1).lr16("gnd", []() -> u16 { return 0; }); + map(h8_device::ADC_1, h8_device::ADC_1).lr16([]() -> u16 { return 0; }, "gnd"); map(h8_device::ADC_2, h8_device::ADC_2).r(FUNC(mu50_state::adc_al_r)); - map(h8_device::ADC_3, h8_device::ADC_3).lr16("gnd", []() -> u16 { return 0; }); + map(h8_device::ADC_3, h8_device::ADC_3).lr16([]() -> u16 { return 0; }, "gnd"); map(h8_device::ADC_4, h8_device::ADC_4).r(FUNC(mu50_state::adc_midisw_r)); - map(h8_device::ADC_5, h8_device::ADC_6).lr16("gnd", []() -> u16 { return 0; }); + map(h8_device::ADC_5, h8_device::ADC_6).lr16([]() -> u16 { return 0; }, "gnd"); map(h8_device::ADC_6, h8_device::ADC_6).r(FUNC(mu50_state::adc_battery_r)); - map(h8_device::ADC_7, h8_device::ADC_7).lr16("gnd", []() -> u16 { return 0; }); + map(h8_device::ADC_7, h8_device::ADC_7).lr16([]() -> u16 { return 0; }, "gnd"); } void mu50_state::mu50(machine_config &config) diff --git a/src/mame/drivers/z100.cpp b/src/mame/drivers/z100.cpp index d6515c0c7f5..af25f34942e 100644 --- a/src/mame/drivers/z100.cpp +++ b/src/mame/drivers/z100.cpp @@ -799,7 +799,7 @@ void z100_state::z100(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(z100_state::update_row), this); + m_crtc->set_update_row_callback(FUNC(z100_state::update_row)); m_crtc->out_vsync_callback().set(FUNC(z100_state::vidint_w)); PIC8259(config, m_picm); diff --git a/src/mame/drivers/z1013.cpp b/src/mame/drivers/z1013.cpp index c3b033be782..77e3bbf9516 100644 --- a/src/mame/drivers/z1013.cpp +++ b/src/mame/drivers/z1013.cpp @@ -401,7 +401,7 @@ void z1013_state::z1013(machine_config &config) m_cass->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_ENABLED); m_cass->add_route(ALL_OUTPUTS, "mono", 0.05); - SNAPSHOT(config, "snapshot", "z80").set_load_callback(FUNC(z1013_state::snapshot_cb), this); + SNAPSHOT(config, "snapshot", "z80").set_load_callback(FUNC(z1013_state::snapshot_cb)); } void z1013_state::z1013k76(machine_config &config) diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp index 7b44e8fd29e..286d302cb1d 100644 --- a/src/mame/drivers/z88.cpp +++ b/src/mame/drivers/z88.cpp @@ -107,16 +107,16 @@ UPD65031_MEMORY_UPDATE(z88_state::bankswitch_update) switch (bank) { case 0: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x3fff, read8_delegate(FUNC(z88_state::bank0_cart_r), this), write8_delegate(FUNC(z88_state::bank0_cart_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x3fff, read8_delegate(*this, FUNC(z88_state::bank0_cart_r)), write8_delegate(*this, FUNC(z88_state::bank0_cart_w))); break; case 1: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4000, 0x7fff, read8_delegate(FUNC(z88_state::bank1_cart_r), this), write8_delegate(FUNC(z88_state::bank1_cart_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4000, 0x7fff, read8_delegate(*this, FUNC(z88_state::bank1_cart_r)), write8_delegate(*this, FUNC(z88_state::bank1_cart_w))); break; case 2: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xbfff, read8_delegate(FUNC(z88_state::bank2_cart_r), this), write8_delegate(FUNC(z88_state::bank2_cart_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(z88_state::bank2_cart_r)), write8_delegate(*this, FUNC(z88_state::bank2_cart_w))); break; case 3: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc000, 0xffff, read8_delegate(FUNC(z88_state::bank3_cart_r), this), write8_delegate(FUNC(z88_state::bank3_cart_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc000, 0xffff, read8_delegate(*this, FUNC(z88_state::bank3_cart_r)), write8_delegate(*this, FUNC(z88_state::bank3_cart_w))); break; } @@ -619,8 +619,8 @@ void z88_state::z88(machine_config &config) m_blink->int_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_blink->nmi_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI); m_blink->spkr_wr_callback().set("speaker", FUNC(speaker_sound_device::level_w)); - m_blink->set_screen_update_callback(FUNC(z88_state::lcd_update), this); - m_blink->set_memory_update_callback(FUNC(z88_state::bankswitch_update), this); + m_blink->set_screen_update_callback(FUNC(z88_state::lcd_update)); + m_blink->set_memory_update_callback(FUNC(z88_state::bankswitch_update)); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/zaxxon.cpp b/src/mame/drivers/zaxxon.cpp index 694b0a3fdf4..db85175205d 100644 --- a/src/mame/drivers/zaxxon.cpp +++ b/src/mame/drivers/zaxxon.cpp @@ -1584,7 +1584,7 @@ void zaxxon_state::init_razmataz() pgmspace.install_read_port(0xc00c, 0xc00c, 0x18f3, "SW0C"); /* unknown behavior expected here */ - pgmspace.install_read_handler(0xc80a, 0xc80a, read8_delegate(FUNC(zaxxon_state::razmataz_counter_r),this)); + pgmspace.install_read_handler(0xc80a, 0xc80a, read8_delegate(*this, FUNC(zaxxon_state::razmataz_counter_r))); /* additional state saving */ save_item(NAME(m_razmataz_dial_pos)); diff --git a/src/mame/drivers/zorba.cpp b/src/mame/drivers/zorba.cpp index 4d1096bd498..fb84b16637e 100644 --- a/src/mame/drivers/zorba.cpp +++ b/src/mame/drivers/zorba.cpp @@ -217,7 +217,7 @@ void zorba_state::zorba(machine_config &config) I8275(config, m_crtc, 14.318'181_MHz_XTAL / 8); // TODO: character clock divider is 9 during HRTC m_crtc->set_character_width(8); m_crtc->set_refresh_hack(true); - m_crtc->set_display_callback(FUNC(zorba_state::zorba_update_chr), this); + m_crtc->set_display_callback(FUNC(zorba_state::zorba_update_chr)); m_crtc->drq_wr_callback().set(m_dma, FUNC(z80dma_device::rdy_w)); m_crtc->irq_wr_callback().set("irq0", FUNC(input_merger_device::in_w<1>)); m_crtc->set_screen("screen"); diff --git a/src/mame/drivers/zr107.cpp b/src/mame/drivers/zr107.cpp index 62e3b197c87..be176b00fb5 100644 --- a/src/mame/drivers/zr107.cpp +++ b/src/mame/drivers/zr107.cpp @@ -815,7 +815,7 @@ void midnrun_state::midnrun(machine_config &config) m_screen->set_screen_update(FUNC(midnrun_state::screen_update)); K056832(config, m_k056832, 0); - m_k056832->set_tile_callback(FUNC(midnrun_state::tile_callback), this); + m_k056832->set_tile_callback(FUNC(midnrun_state::tile_callback)); m_k056832->set_config(K056832_BPP_8, 1, 0); m_k056832->set_palette(m_palette); } diff --git a/src/mame/drivers/zrt80.cpp b/src/mame/drivers/zrt80.cpp index f008e38453f..2e01a2ebd41 100644 --- a/src/mame/drivers/zrt80.cpp +++ b/src/mame/drivers/zrt80.cpp @@ -304,7 +304,7 @@ void zrt80_state::zrt80(machine_config &config) m_crtc->set_screen("screen"); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); /*?*/ - m_crtc->set_update_row_callback(FUNC(zrt80_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(zrt80_state::crtc_update_row)); INS8250(config, m_8250, 2457600); m_8250->out_int_callback().set_inputline("maincpu", INPUT_LINE_IRQ0); diff --git a/src/mame/drivers/zwackery.cpp b/src/mame/drivers/zwackery.cpp index ec2b8202d77..7b15b6e1dc4 100644 --- a/src/mame/drivers/zwackery.cpp +++ b/src/mame/drivers/zwackery.cpp @@ -195,10 +195,10 @@ void zwackery_state::video_start() gfx_element *gfx2 = m_gfxdecode->gfx(2); // initialize the background tilemap - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(zwackery_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zwackery_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); // initialize the foreground tilemap - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(zwackery_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zwackery_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_fg_tilemap->set_transparent_pen(0); // allocate memory for the assembled gfx data diff --git a/src/mame/includes/decocass.h b/src/mame/includes/decocass.h index 6efe74ffc17..63e1f073a33 100644 --- a/src/mame/includes/decocass.h +++ b/src/mame/includes/decocass.h @@ -33,6 +33,8 @@ public: : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_mcu(*this, "mcu") + , m_dongle_r(*this) + , m_dongle_w(*this) , m_audiocpu(*this, "audiocpu") , m_watchdog(*this, "watchdog") , m_cassette(*this, "cassette") @@ -63,8 +65,8 @@ protected: required_device<upi41_cpu_device> m_mcu; /* dongles-related */ - read8_delegate m_dongle_r; - write8_delegate m_dongle_w; + read8_delegate m_dongle_r; // TODO: why isn't this a virtual method? + write8_delegate m_dongle_w; // TODO: why isn't this a virtual method? virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/goldstar.h b/src/mame/includes/goldstar.h index 95ec5b259ee..4f39d36c1fa 100644 --- a/src/mame/includes/goldstar.h +++ b/src/mame/includes/goldstar.h @@ -198,26 +198,7 @@ public: protected: // installed by various driver init handlers to get stuff to work - READ8_MEMBER(fixedval09_r) { return 0x09; } - READ8_MEMBER(fixedval38_r) { return 0x38; } - READ8_MEMBER(fixedval48_r) { return 0x48; } - READ8_MEMBER(fixedval58_r) { return 0x58; } - READ8_MEMBER(fixedval68_r) { return 0x68; } - READ8_MEMBER(fixedval74_r) { return 0x74; } - READ8_MEMBER(fixedval7d_r) { return 0x7d; } - READ8_MEMBER(fixedval80_r) { return 0x80; } - READ8_MEMBER(fixedval82_r) { return 0x82; } - READ8_MEMBER(fixedval84_r) { return 0x84; } - READ8_MEMBER(fixedval90_r) { return 0x90; } - READ8_MEMBER(fixedval96_r) { return 0x96; } - READ8_MEMBER(fixedvala8_r) { return 0xa8; } - READ8_MEMBER(fixedvalaa_r) { return 0xaa; } - READ8_MEMBER(fixedvalb2_r) { return 0xb2; } - READ8_MEMBER(fixedvalb4_r) { return 0xb4; } - READ8_MEMBER(fixedvalbe_r) { return 0xbe; } - READ8_MEMBER(fixedvalc7_r) { return 0xc7; } - READ8_MEMBER(fixedvalea_r) { return 0xea; } - READ8_MEMBER(fixedvale4_r) { return 0xe4; } + template <uint8_t V> READ8_MEMBER(fixedval_r) { return V; } }; diff --git a/src/mame/includes/hp48.h b/src/mame/includes/hp48.h index d478736fe39..01f9f4e8024 100644 --- a/src/mame/includes/hp48.h +++ b/src/mame/includes/hp48.h @@ -28,25 +28,6 @@ typedef enum { HP49_G } hp48_models; -/* memory module configuration */ -typedef struct -{ - /* static part */ - uint32_t off_mask; /* offset bit-mask, indicates the real size */ - read8_delegate read; - const char *read_name; - write8_delegate write; - void* data; /* non-NULL for banks */ - int isnop; - - /* configurable part */ - uint8_t state; /* one of HP48_MODULE_ */ - uint32_t base; /* base address */ - uint32_t mask; /* often improperly called size, it is an address select mask */ - -} hp48_module; - - /* screen image averaging */ #define HP48_NB_SCREENS 3 @@ -55,6 +36,7 @@ class hp48_state : public driver_device public: hp48_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) + , m_modules{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this } } , m_maincpu(*this, "maincpu") , m_dac(*this, "dac") , m_palette(*this, "palette") @@ -72,14 +54,34 @@ public: void init_hp48(); - /* from highest to lowest priority: HDW, NCE2, CE1, CE2, NCE3, NCE1 */ - hp48_module m_modules[6]; - void decode_nibble(uint8_t* dst, uint8_t* src, int size); void encode_nibble(uint8_t* dst, uint8_t* src, int size); void apply_modules(); + /* memory module configuration */ + struct hp48_module + { + hp48_module(device_t &owner) : read(owner), write(owner) { } + + /* static part */ + uint32_t off_mask; // offset bit-mask, indicates the real size + read8_delegate read; + const char *read_name; + write8_delegate write; + void* data; // non-NULL for banks + int isnop; + + /* configurable part */ + uint8_t state; // one of HP48_MODULE_ + uint32_t base; // base address + uint32_t mask; // often improperly called size, it is an address select mask + + }; + + /* from highest to lowest priority: HDW, NCE2, CE1, CE2, NCE3, NCE1 */ + hp48_module m_modules[6]; + private: virtual void machine_reset() override; void base_machine_start(hp48_models model); diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h index 37e7c27526d..79bef161a25 100644 --- a/src/mame/includes/megadriv.h +++ b/src/mame/includes/megadriv.h @@ -52,7 +52,9 @@ public: m_scan_timer(*this, "md_scan_timer"), m_vdp(*this,"gen_vdp"), m_megadrive_ram(*this,"megadrive_ram"), - m_io_reset(*this, "RESET") + m_io_reset(*this, "RESET"), + m_megadrive_io_read_data_port_ptr(*this), + m_megadrive_io_write_data_port_ptr(*this) { } required_device<m68000_base_device> m_maincpu; diff --git a/src/mame/includes/newbrain.h b/src/mame/includes/newbrain.h index b7726e34a20..b52184ce58f 100644 --- a/src/mame/includes/newbrain.h +++ b/src/mame/includes/newbrain.h @@ -100,7 +100,7 @@ private: int get_reset_t(); int get_pwrup_t(); - void screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect); + void do_screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect); void tvl(uint8_t data, int a6); required_device<z80_device> m_maincpu; diff --git a/src/mame/includes/segaorun.h b/src/mame/includes/segaorun.h index c56d785273d..adc9543f755 100644 --- a/src/mame/includes/segaorun.h +++ b/src/mame/includes/segaorun.h @@ -26,8 +26,8 @@ class segaorun_state : public sega_16bit_common_base { public: // construction/destruction - segaorun_state(const machine_config &mconfig, device_type type, const char *tag) - : sega_16bit_common_base(mconfig, type, tag), + segaorun_state(const machine_config &mconfig, device_type type, const char *tag) : + sega_16bit_common_base(mconfig, type, tag), m_mapper(*this, "mapper"), m_maincpu(*this, "maincpu"), m_subcpu(*this, "subcpu"), @@ -44,6 +44,8 @@ public: m_digital_ports(*this, { { "SERVICE", "UNKNOWN", "COINAGE", "DSW" } }), m_adc_ports(*this, "ADC.%u", 0), m_workram(*this, "workram"), + m_custom_io_r(*this), + m_custom_io_w(*this), m_custom_map(nullptr), m_shangon_video(false), m_scanline_timer(nullptr), @@ -155,15 +157,15 @@ protected: // configuration read16_delegate m_custom_io_r; write16_delegate m_custom_io_w; - const uint8_t * m_custom_map; + const uint8_t * m_custom_map; bool m_shangon_video; // internal state emu_timer * m_scanline_timer; emu_timer * m_irq2_gen_timer; - uint8_t m_irq2_state; - uint8_t m_adc_select; - uint8_t m_vblank_irq_state; + uint8_t m_irq2_state; + uint8_t m_adc_select; + uint8_t m_vblank_irq_state; int m_bankmotor_pos; int m_bankmotor_delta; }; diff --git a/src/mame/includes/segas16a.h b/src/mame/includes/segas16a.h index 9486ee0e0f8..cbf910c255e 100644 --- a/src/mame/includes/segas16a.h +++ b/src/mame/includes/segas16a.h @@ -46,6 +46,8 @@ public: , m_cxdio(*this, "cxdio") , m_workram(*this, "nvram") , m_sound_decrypted_opcodes(*this, "sound_decrypted_opcodes") + , m_custom_io_r(*this) + , m_custom_io_w(*this) , m_video_control(0) , m_mcu_control(0) , m_n7751_command(0) diff --git a/src/mame/includes/segas16b.h b/src/mame/includes/segas16b.h index 49d7077d2bf..35ae4878406 100644 --- a/src/mame/includes/segas16b.h +++ b/src/mame/includes/segas16b.h @@ -58,6 +58,8 @@ public: , m_workram(*this, "workram") , m_romboard(ROM_BOARD_INVALID) , m_tilemap_type(segaic16_video_device::TILEMAP_16B) + , m_custom_io_r(*this) + , m_custom_io_w(*this) , m_disable_screen_blanking(false) , m_i8751_initial_config(nullptr) , m_atomicp_sound_divisor(0) diff --git a/src/mame/includes/segas18.h b/src/mame/includes/segas18.h index af0a09b1ed1..3689ae03bc1 100644 --- a/src/mame/includes/segas18.h +++ b/src/mame/includes/segas18.h @@ -49,6 +49,8 @@ public: , m_soundbank(*this, "soundbank") , m_gun_recoil(*this, "P%u_Gun_Recoil", 1U) , m_romboard(ROM_BOARD_INVALID) + , m_custom_io_r(*this) + , m_custom_io_w(*this) , m_grayscale_enable(false) , m_vdp_enable(false) , m_vdp_mixing(0) diff --git a/src/mame/includes/sprint2.h b/src/mame/includes/sprint2.h index 845fa4dca70..8845e09884a 100644 --- a/src/mame/includes/sprint2.h +++ b/src/mame/includes/sprint2.h @@ -88,7 +88,7 @@ private: void sprint2_palette(palette_device &palette) const; uint32_t screen_update_sprint2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_sprint2); - INTERRUPT_GEN_MEMBER(sprint2); + INTERRUPT_GEN_MEMBER(sprint2_irq); uint8_t collision_check(rectangle& rect); inline int get_sprite_code(uint8_t *video_ram, int n); inline int get_sprite_x(uint8_t *video_ram, int n); diff --git a/src/mame/includes/starfire.h b/src/mame/includes/starfire.h index 8dda83c71bd..9220ca0d933 100644 --- a/src/mame/includes/starfire.h +++ b/src/mame/includes/starfire.h @@ -5,6 +5,10 @@ Star Fire/Fire One system ***************************************************************************/ +#ifndef MAME_INCLUDES_STARFIRE_H +#define MAME_INCLUDES_STARFIRE_H + +#pragma once #include "sound/samples.h" #include "screen.h" @@ -25,14 +29,17 @@ class starfire_state : public driver_device { public: - starfire_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + starfire_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_starfire_colorram(*this, "colorram"), m_starfire_videoram(*this, "videoram"), m_samples(*this, "samples"), m_nmi(*this, "NMI"), + m_input_read(*this), + m_io2_write(*this), m_maincpu(*this, "maincpu"), - m_screen(*this, "screen") { } + m_screen(*this, "screen") + { } void fireone(machine_config &config); void starfire(machine_config &config); @@ -59,6 +66,10 @@ private: emu_timer* m_scanline_timer; bitmap_rgb32 m_starfire_screen; + + required_device<cpu_device> m_maincpu; + required_device<screen_device> m_screen; + DECLARE_WRITE8_MEMBER(starfire_scratch_w); DECLARE_READ8_MEMBER(starfire_scratch_r); DECLARE_READ8_MEMBER(starfire_input_r); @@ -74,8 +85,8 @@ private: TIMER_CALLBACK_MEMBER(starfire_scanline_callback); INTERRUPT_GEN_MEMBER(vblank_int); void get_pens(pen_t *pens); - required_device<cpu_device> m_maincpu; - required_device<screen_device> m_screen; void main_map(address_map &map); }; + +#endif // MAME_INCLUDES_STARFIRE_H diff --git a/src/mame/includes/zaxxon.h b/src/mame/includes/zaxxon.h index 0754acac279..6bf9c85f9bc 100644 --- a/src/mame/includes/zaxxon.h +++ b/src/mame/includes/zaxxon.h @@ -124,7 +124,7 @@ private: DECLARE_WRITE8_MEMBER(zaxxon_sound_c_w); DECLARE_WRITE8_MEMBER(congo_sound_b_w); DECLARE_WRITE8_MEMBER(congo_sound_c_w); - void video_start_common(tilemap_get_info_delegate fg_tile_info); + void video_start_common(tilemap_get_info_delegate &&fg_tile_info); void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, int skew); inline int find_minimum_y(uint8_t value, int flip); inline int find_minimum_x(uint8_t value, int flip); diff --git a/src/mame/machine/315-5881_crypt.cpp b/src/mame/machine/315-5881_crypt.cpp index d536fb6c2ac..2fc2d05b471 100644 --- a/src/mame/machine/315-5881_crypt.cpp +++ b/src/mame/machine/315-5881_crypt.cpp @@ -45,6 +45,7 @@ void sega_315_5881_crypt_device::iomap_le(address_map &map) sega_315_5881_crypt_device::sega_315_5881_crypt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SEGA315_5881_CRYPT, tag, owner, clock) + , m_read(*this) { } @@ -56,7 +57,7 @@ void sega_315_5881_crypt_device::device_start() line_buffer = std::make_unique<uint8_t[]>(LINE_SIZE); line_buffer_prev = std::make_unique<uint8_t[]>(LINE_SIZE); - m_read.bind_relative_to(*owner()); + m_read.resolve(); save_pointer(NAME(buffer), BUFFER_SIZE); save_pointer(NAME(line_buffer), LINE_SIZE); diff --git a/src/mame/machine/315-5881_crypt.h b/src/mame/machine/315-5881_crypt.h index 0d23b6d7527..98dcd37d1b8 100644 --- a/src/mame/machine/315-5881_crypt.h +++ b/src/mame/machine/315-5881_crypt.h @@ -35,12 +35,7 @@ public: sega_m2_read_delegate m_read; - template <typename Object> void set_read_cb(Object &&readcb) { m_read = std::forward<Object>(readcb); } - void set_read_cb(sega_m2_read_delegate callback) { m_read = callback; } - template <class FunctionClass> void set_read_cb(uint16_t (FunctionClass::*callback)(uint32_t), const char *name) - { - set_read_cb(sega_m2_read_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_read_cb(T &&... args) { m_read.set(std::forward<T>(args)...); } protected: virtual void device_start() override; diff --git a/src/mame/machine/315_5195.cpp b/src/mame/machine/315_5195.cpp index 0ba261a9854..df93ab9c436 100644 --- a/src/mame/machine/315_5195.cpp +++ b/src/mame/machine/315_5195.cpp @@ -42,6 +42,7 @@ sega_315_5195_mapper_device::sega_315_5195_mapper_device(const machine_config &m : device_t(mconfig, SEGA_315_5195_MEM_MAPPER, tag, owner, clock) , m_cpu(*this, finder_base::DUMMY_TAG) , m_cpuregion(*this, finder_base::DUMMY_TAG) + , m_mapper(*this) , m_pbf_callback(*this) , m_mcu_int_callback(*this) , m_space(nullptr) @@ -396,7 +397,7 @@ WRITE8_MEMBER(sega_315_5195_mapper_device::pwrite) void sega_315_5195_mapper_device::device_start() { // bind our handlers - m_mapper.bind_relative_to(*owner()); + m_mapper.resolve(); m_pbf_callback.resolve(); m_mcu_int_callback.resolve(); @@ -482,7 +483,7 @@ void sega_315_5195_mapper_device::update_mapping() // first reset everything back to the beginning m_space->unmap_readwrite(0x000000, 0xffffff); - m_space->install_readwrite_handler(0x000000, 0xffffff, read8_delegate(FUNC(sega_315_5195_mapper_device::read), this), write8_delegate(FUNC(sega_315_5195_mapper_device::write), this), 0x00ff); + m_space->install_readwrite_handler(0x000000, 0xffffff, read8_delegate(*this, FUNC(sega_315_5195_mapper_device::read)), write8_delegate(*this, FUNC(sega_315_5195_mapper_device::write)), 0x00ff); // loop over the regions for (int index = 7; index >= 0; index--) diff --git a/src/mame/machine/315_5195.h b/src/mame/machine/315_5195.h index 479abf824f9..0ba33c13c1c 100644 --- a/src/mame/machine/315_5195.h +++ b/src/mame/machine/315_5195.h @@ -40,7 +40,7 @@ public: sega_315_5195_mapper_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration helpers - template <typename... T> void set_mapper(T &&... args) { m_mapper = mapper_delegate(std::forward<T>(args)...); } + template <typename... T> void set_mapper(T &&... args) { m_mapper.set(std::forward<T>(args)...); } auto pbf() { return m_pbf_callback.bind(); } auto mcu_int() { return m_mcu_int_callback.bind(); } diff --git a/src/mame/machine/3dom2.cpp b/src/mame/machine/3dom2.cpp index fc3004c0f5e..4f838634c9d 100644 --- a/src/mame/machine/3dom2.cpp +++ b/src/mame/machine/3dom2.cpp @@ -469,24 +469,24 @@ void m2_bda_device::configure_ppc_address_map(address_space &space) space.install_ram(TE_TRAM_BASE, TE_TRAM_BASE + TE_TRAM_MASK, m_te->tram_ptr()); // Install BDA sub-devices - space.install_readwrite_handler(POWERBUS_BASE, POWERBUS_BASE + DEVICE_MASK,read32_delegate(FUNC(m2_powerbus_device::read), &(*m_powerbus)), write32_delegate(FUNC(m2_powerbus_device::write), &(*m_powerbus)), 0xffffffffffffffffULL); - space.install_readwrite_handler(MEMCTL_BASE, MEMCTL_BASE + DEVICE_MASK, read32_delegate(FUNC(m2_memctl_device::read), &(*m_memctl)), write32_delegate(FUNC(m2_memctl_device::write), &(*m_memctl)), 0xffffffffffffffffULL); - space.install_readwrite_handler(VDU_BASE, VDU_BASE + DEVICE_MASK, read32_delegate(FUNC(m2_vdu_device::read), &(*m_vdu)), write32_delegate(FUNC(m2_vdu_device::write), &(*m_vdu)), 0xffffffffffffffffULL); - space.install_readwrite_handler(TE_BASE, TE_BASE + DEVICE_MASK, read32_delegate(FUNC(m2_te_device::read), &(*m_te)), write32_delegate(FUNC(m2_te_device::write), &(*m_te)), 0xffffffffffffffffULL); - space.install_readwrite_handler(DSP_BASE, DSP_BASE + DEVICE_MASK, read32_delegate(FUNC(dspp_device::read), &(*m_dspp)), write32_delegate(FUNC(dspp_device::write), &(*m_dspp)), 0xffffffffffffffffULL); - space.install_readwrite_handler(CTRLPORT_BASE, CTRLPORT_BASE + DEVICE_MASK,read32_delegate(FUNC(m2_ctrlport_device::read), &(*m_ctrlport)), write32_delegate(FUNC(m2_ctrlport_device::write), &(*m_ctrlport)), 0xffffffffffffffffULL); - space.install_readwrite_handler(MPEG_BASE, MPEG_BASE + DEVICE_MASK, read32_delegate(FUNC(m2_mpeg_device::read), &(*m_mpeg)), write32_delegate(FUNC(m2_mpeg_device::write), &(*m_mpeg)), 0xffffffffffffffffULL); + space.install_readwrite_handler(POWERBUS_BASE, POWERBUS_BASE + DEVICE_MASK,read32_delegate(*m_powerbus, FUNC(m2_powerbus_device::read)), write32_delegate(*m_powerbus, FUNC(m2_powerbus_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(MEMCTL_BASE, MEMCTL_BASE + DEVICE_MASK, read32_delegate(*m_memctl, FUNC(m2_memctl_device::read)), write32_delegate(*m_memctl, FUNC(m2_memctl_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(VDU_BASE, VDU_BASE + DEVICE_MASK, read32_delegate(*m_vdu, FUNC(m2_vdu_device::read)), write32_delegate(*m_vdu, FUNC(m2_vdu_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(TE_BASE, TE_BASE + DEVICE_MASK, read32_delegate(*m_te, FUNC(m2_te_device::read)), write32_delegate(*m_te, FUNC(m2_te_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(DSP_BASE, DSP_BASE + DEVICE_MASK, read32_delegate(*m_dspp, FUNC(dspp_device::read)), write32_delegate(*m_dspp, FUNC(dspp_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(CTRLPORT_BASE, CTRLPORT_BASE + DEVICE_MASK,read32_delegate(*m_ctrlport, FUNC(m2_ctrlport_device::read)), write32_delegate(*m_ctrlport, FUNC(m2_ctrlport_device::write)), 0xffffffffffffffffULL); + space.install_readwrite_handler(MPEG_BASE, MPEG_BASE + DEVICE_MASK, read32_delegate(*m_mpeg, FUNC(m2_mpeg_device::read)), write32_delegate(*m_mpeg, FUNC(m2_mpeg_device::write)), 0xffffffffffffffffULL); - space.install_readwrite_handler(CPUID_BASE, CPUID_BASE + DEVICE_MASK, read32_delegate(FUNC(m2_bda_device::cpu_id_r), this), write32_delegate(FUNC(m2_bda_device::cpu_id_w), this), 0xffffffffffffffffULL); + space.install_readwrite_handler(CPUID_BASE, CPUID_BASE + DEVICE_MASK, read32_delegate(*this, FUNC(m2_bda_device::cpu_id_r)), write32_delegate(*this, FUNC(m2_bda_device::cpu_id_w)), 0xffffffffffffffffULL); // Find and install the CDE m2_cde_device *cde = downcast<m2_cde_device *>(machine().device("cde")); - if (cde == NULL) + if (!cde) throw emu_fatalerror("BDA: Could not find the CDE device!"); - space.install_readwrite_handler(SLOT4_BASE, SLOT4_BASE + SLOT_MASK, read32_delegate(FUNC(m2_cde_device::read), cde), write32_delegate(FUNC(m2_cde_device::write), cde), 0xffffffffffffffffULL); + space.install_readwrite_handler(SLOT4_BASE, SLOT4_BASE + SLOT_MASK, read32_delegate(*cde, FUNC(m2_cde_device::read)), write32_delegate(*cde, FUNC(m2_cde_device::write)), 0xffffffffffffffffULL); } diff --git a/src/mame/machine/6883sam.cpp b/src/mame/machine/6883sam.cpp index 53dc0688c32..b786d8ce85c 100644 --- a/src/mame/machine/6883sam.cpp +++ b/src/mame/machine/6883sam.cpp @@ -76,6 +76,7 @@ sam6883_device::sam6883_device(const machine_config &mconfig, const char *tag, d , sam6883_friend_device_interface(mconfig, *this, 4) , m_cpu_space(nullptr) , m_read_res(*this) + , m_banks{ { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this }, { *this } } , m_space_0000(*this) , m_space_8000(*this) , m_space_A000(*this) @@ -110,8 +111,8 @@ void sam6883_device::device_start() m_read_res.resolve_safe(0); // install SAM handlers - m_cpu_space->install_read_handler(0xFFC0, 0xFFDF, read8_delegate(FUNC(sam6883_device::read), this)); - m_cpu_space->install_write_handler(0xFFC0, 0xFFDF, write8_delegate(FUNC(sam6883_device::write), this)); + m_cpu_space->install_read_handler(0xFFC0, 0xFFDF, read8_delegate(*this, FUNC(sam6883_device::read))); + m_cpu_space->install_write_handler(0xFFC0, 0xFFDF, write8_delegate(*this, FUNC(sam6883_device::write))); // save state support save_item(NAME(m_sam_state)); @@ -127,7 +128,7 @@ void sam6883_device::device_start() void sam6883_device::configure_bank(int bank, uint8_t *memory, uint32_t memory_size, bool is_read_only) { - configure_bank(bank, memory, memory_size, is_read_only, read8_delegate(), write8_delegate()); + configure_bank(bank, memory, memory_size, is_read_only, read8_delegate(*this), write8_delegate(*this)); } @@ -212,7 +213,7 @@ void sam6883_device::device_post_load() // update_state //------------------------------------------------- -void sam6883_device::update_state(void) +void sam6883_device::update_state() { update_memory(); update_cpu_clock(); @@ -224,7 +225,7 @@ void sam6883_device::update_state(void) // update_memory //------------------------------------------------- -void sam6883_device::update_memory(void) +void sam6883_device::update_memory() { // Memory size - allowed restricting memory accesses to something less than // 32k @@ -307,7 +308,7 @@ void sam6883_device::update_memory(void) // clock //------------------------------------------------- -void sam6883_friend_device_interface::update_cpu_clock(void) +void sam6883_friend_device_interface::update_cpu_clock() { // The infamous speed up poke. // @@ -385,7 +386,7 @@ WRITE8_MEMBER( sam6883_device::write ) // horizontal_sync //------------------------------------------------- -void sam6883_device::horizontal_sync(void) +void sam6883_device::horizontal_sync() { bool carry; diff --git a/src/mame/machine/6883sam.h b/src/mame/machine/6883sam.h index c973bb22f65..d1c48e5af12 100644 --- a/src/mame/machine/6883sam.h +++ b/src/mame/machine/6883sam.h @@ -52,7 +52,7 @@ protected: // base clock divider (/4 for MC6883, /8 for GIME) int m_divider; - ATTR_FORCE_INLINE uint16_t display_offset(void) + ATTR_FORCE_INLINE uint16_t display_offset() { return ((m_sam_state & (SAM_STATE_F0|SAM_STATE_F1|SAM_STATE_F2|SAM_STATE_F3|SAM_STATE_F4|SAM_STATE_F5|SAM_STATE_F6)) / SAM_STATE_F0) << 9; } @@ -75,7 +75,7 @@ protected: return xorval; } - void update_cpu_clock(void); + void update_cpu_clock(); }; class sam6883_device : public device_t, public sam6883_friend_device_interface @@ -122,7 +122,7 @@ public: DECLARE_WRITE_LINE_MEMBER( hs_w ); // typically called by machine - address_space *mpu_address_space(void) const { return m_cpu_space; } + address_space *mpu_address_space() const { return m_cpu_space; } void set_bank_offset(int bank, offs_t offset); protected: @@ -136,6 +136,8 @@ private: // points to with the S2/S1/S0 output struct sam_bank { + sam_bank(device_t &owner) : m_rhandler(owner), m_whandler(owner) { } + uint8_t * m_memory; uint32_t m_memory_size; offs_t m_memory_offset; @@ -192,7 +194,7 @@ private: DECLARE_WRITE8_MEMBER( write ); // called when there is a carry out of bit 3 on the counter - ATTR_FORCE_INLINE void counter_carry_bit3(void) + ATTR_FORCE_INLINE void counter_carry_bit3() { uint8_t x_division; switch((m_sam_state & (SAM_STATE_V2|SAM_STATE_V1|SAM_STATE_V0)) / SAM_STATE_V0) @@ -220,7 +222,7 @@ private: } // called when there is a carry out of bit 4 on the counter - ATTR_FORCE_INLINE void counter_carry_bit4(void) + ATTR_FORCE_INLINE void counter_carry_bit4() { uint8_t y_division; switch((m_sam_state & (SAM_STATE_V2|SAM_STATE_V1|SAM_STATE_V0)) / SAM_STATE_V0) @@ -247,9 +249,9 @@ private: // other members void configure_bank(int bank, uint8_t *memory, uint32_t memory_size, bool is_read_only, read8_delegate rhandler, write8_delegate whandler); - void horizontal_sync(void); - void update_state(void); - void update_memory(void); + void horizontal_sync(); + void update_state(); + void update_memory(); }; DECLARE_DEVICE_TYPE(SAM6883, sam6883_device) diff --git a/src/mame/machine/aim65.cpp b/src/mame/machine/aim65.cpp index e39e192d682..8707cf9a2a1 100644 --- a/src/mame/machine/aim65.cpp +++ b/src/mame/machine/aim65.cpp @@ -113,21 +113,21 @@ void aim65_state::machine_start() // Init ROM sockets if (m_z24->exists()) - space.install_read_handler(0xd000, 0xdfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z24)); + space.install_read_handler(0xd000, 0xdfff, read8sm_delegate(*m_z24, FUNC(generic_slot_device::read_rom))); if (m_z25->exists()) - space.install_read_handler(0xc000, 0xcfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z25)); + space.install_read_handler(0xc000, 0xcfff, read8sm_delegate(*m_z25, FUNC(generic_slot_device::read_rom))); if (m_z26->exists()) - space.install_read_handler(0xb000, 0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z26)); + space.install_read_handler(0xb000, 0xbfff, read8sm_delegate(*m_z26, FUNC(generic_slot_device::read_rom))); // Init PROM/ROM module sockets if (m_z12->exists()) - space.install_read_handler(0x4000, 0x4fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z12)); + space.install_read_handler(0x4000, 0x4fff, read8sm_delegate(*m_z12, FUNC(generic_slot_device::read_rom))); if (m_z13->exists()) - space.install_read_handler(0x5000, 0x5fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z13)); + space.install_read_handler(0x5000, 0x5fff, read8sm_delegate(*m_z13, FUNC(generic_slot_device::read_rom))); if (m_z14->exists()) - space.install_read_handler(0x6000, 0x6fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z14)); + space.install_read_handler(0x6000, 0x6fff, read8sm_delegate(*m_z14, FUNC(generic_slot_device::read_rom))); if (m_z15->exists()) - space.install_read_handler(0x7000, 0x7fff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_z15)); + space.install_read_handler(0x7000, 0x7fff, read8sm_delegate(*m_z15, FUNC(generic_slot_device::read_rom))); // Init RAM space.install_ram(0x0000, m_ram->size() - 1, m_ram->pointer()); diff --git a/src/mame/machine/amiga.cpp b/src/mame/machine/amiga.cpp index 74e26418e78..ddec93c8012 100644 --- a/src/mame/machine/amiga.cpp +++ b/src/mame/machine/amiga.cpp @@ -154,7 +154,7 @@ void amiga_state::machine_start() m_power_led.resolve(); // add callback for RESET instruction - m_maincpu->set_reset_callback(write_line_delegate(FUNC(amiga_state::m68k_reset), this)); + m_maincpu->set_reset_callback(*this, FUNC(amiga_state::m68k_reset)); // set up chip RAM access memory_share *share = memshare("chip_ram"); diff --git a/src/mame/machine/amstrad.cpp b/src/mame/machine/amstrad.cpp index 80cf8846b9d..ef35bac847b 100644 --- a/src/mame/machine/amstrad.cpp +++ b/src/mame/machine/amstrad.cpp @@ -1160,10 +1160,10 @@ void amstrad_state::amstrad_setLowerRom() /* if ( m_asic.enabled && ( m_asic.rmr2 & 0x18 ) == 0x18 ) { - space.install_read_handler(0x4000, 0x5fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_r),this)); - space.install_read_handler(0x6000, 0x7fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_r),this)); - space.install_write_handler(0x4000, 0x5fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_w),this)); - space.install_write_handler(0x6000, 0x7fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_w),this)); + space.install_read_handler(0x4000, 0x5fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_r))); + space.install_read_handler(0x6000, 0x7fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_r))); + space.install_write_handler(0x4000, 0x5fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_w))); + space.install_write_handler(0x6000, 0x7fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_w))); } else { @@ -3144,10 +3144,10 @@ MACHINE_RESET_MEMBER(amstrad_state,plus) AmstradCPC_GA_SetRamConfiguration(); amstrad_GateArray_write(0x081); // Epyx World of Sports requires upper ROM to be enabled by default - space.install_read_handler(0x4000, 0x5fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_r),this)); - space.install_read_handler(0x6000, 0x7fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_r),this)); - space.install_write_handler(0x4000, 0x5fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_w),this)); - space.install_write_handler(0x6000, 0x7fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_w),this)); + space.install_read_handler(0x4000, 0x5fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_r))); + space.install_read_handler(0x6000, 0x7fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_r))); + space.install_write_handler(0x4000, 0x5fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_w))); + space.install_write_handler(0x6000, 0x7fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_w))); // multiface_init(); timer_set(attotime::zero, TIMER_SET_RESOLUTION); @@ -3187,10 +3187,10 @@ MACHINE_RESET_MEMBER(amstrad_state,gx4000) AmstradCPC_GA_SetRamConfiguration(); amstrad_GateArray_write(0x081); // Epyx World of Sports requires upper ROM to be enabled by default // multiface_init(); - space.install_read_handler(0x4000, 0x5fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_r),this)); - space.install_read_handler(0x6000, 0x7fff, read8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_r),this)); - space.install_write_handler(0x4000, 0x5fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_4000_w),this)); - space.install_write_handler(0x6000, 0x7fff, write8_delegate(FUNC(amstrad_state::amstrad_plus_asic_6000_w),this)); + space.install_read_handler(0x4000, 0x5fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_r))); + space.install_read_handler(0x6000, 0x7fff, read8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_r))); + space.install_write_handler(0x4000, 0x5fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_4000_w))); + space.install_write_handler(0x6000, 0x7fff, write8_delegate(*this, FUNC(amstrad_state::amstrad_plus_asic_6000_w))); timer_set(attotime::zero, TIMER_SET_RESOLUTION); } diff --git a/src/mame/machine/atarigen.cpp b/src/mame/machine/atarigen.cpp index dd1f5329d87..c13e9e6c43d 100644 --- a/src/mame/machine/atarigen.cpp +++ b/src/mame/machine/atarigen.cpp @@ -542,7 +542,7 @@ void atarigen_state::slapstic_configure(cpu_device &device, offs_t base, offs_t // install the memory handlers address_space &program = device.space(AS_PROGRAM); - program.install_readwrite_handler(base, base + 0x7fff, 0, mirror, 0, read16_delegate(FUNC(atarigen_state::slapstic_r), this), write16_delegate(FUNC(atarigen_state::slapstic_w), this)); + program.install_readwrite_handler(base, base + 0x7fff, 0, mirror, 0, read16_delegate(*this, FUNC(atarigen_state::slapstic_r)), write16_delegate(*this, FUNC(atarigen_state::slapstic_w))); m_slapstic = (u16 *)mem; // allocate memory for a copy of bank 0 diff --git a/src/mame/machine/b2m.cpp b/src/mame/machine/b2m.cpp index ba39ecc3f06..be10c86bf73 100644 --- a/src/mame/machine/b2m.cpp +++ b/src/mame/machine/b2m.cpp @@ -80,7 +80,7 @@ void b2m_state::b2m_set_bank(int bank) space.unmap_write(0xe000, 0xffff); membank("bank1")->set_base(ram); - space.install_read_handler(0x2800, 0x2fff, read8_delegate(FUNC(b2m_state::b2m_keyboard_r),this)); + space.install_read_handler(0x2800, 0x2fff, read8_delegate(*this, FUNC(b2m_state::b2m_keyboard_r))); membank("bank3")->set_base(ram + 0x10000); membank("bank4")->set_base(ram + 0x7000); membank("bank5")->set_base(rom + 0x10000); @@ -90,7 +90,7 @@ void b2m_state::b2m_set_bank(int bank) space.unmap_write(0xe000, 0xffff); membank("bank1")->set_base(ram); - space.install_read_handler(0x2800, 0x2fff, read8_delegate(FUNC(b2m_state::b2m_keyboard_r),this)); + space.install_read_handler(0x2800, 0x2fff, read8_delegate(*this, FUNC(b2m_state::b2m_keyboard_r))); membank("bank3")->set_base(ram + 0x14000); membank("bank4")->set_base(ram + 0x7000); membank("bank5")->set_base(rom + 0x10000); @@ -100,7 +100,7 @@ void b2m_state::b2m_set_bank(int bank) space.unmap_write(0xe000, 0xffff); membank("bank1")->set_base(ram); - space.install_read_handler(0x2800, 0x2fff, read8_delegate(FUNC(b2m_state::b2m_keyboard_r),this)); + space.install_read_handler(0x2800, 0x2fff, read8_delegate(*this, FUNC(b2m_state::b2m_keyboard_r))); membank("bank3")->set_base(ram + 0x18000); membank("bank4")->set_base(ram + 0x7000); membank("bank5")->set_base(rom + 0x10000); @@ -111,7 +111,7 @@ void b2m_state::b2m_set_bank(int bank) space.unmap_write(0xe000, 0xffff); membank("bank1")->set_base(ram); - space.install_read_handler(0x2800, 0x2fff, read8_delegate(FUNC(b2m_state::b2m_keyboard_r),this)); + space.install_read_handler(0x2800, 0x2fff, read8_delegate(*this, FUNC(b2m_state::b2m_keyboard_r))); membank("bank3")->set_base(ram + 0x1c000); membank("bank4")->set_base(ram + 0x7000); membank("bank5")->set_base(rom + 0x10000); diff --git a/src/mame/machine/bbc.cpp b/src/mame/machine/bbc.cpp index 4f100db598b..c15e57f60b0 100644 --- a/src/mame/machine/bbc.cpp +++ b/src/mame/machine/bbc.cpp @@ -1511,9 +1511,9 @@ void bbc_state::machine_reset() /* install econet hardware */ if (m_bbcconfig.read_safe(0) & 0x04) - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfea0, 0xfebf, read8sm_delegate(FUNC(mc6854_device::read), m_adlc.target()), write8sm_delegate(FUNC(mc6854_device::write), m_adlc.target())); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xfea0, 0xfebf, read8sm_delegate(*m_adlc, FUNC(mc6854_device::read)), write8sm_delegate(*m_adlc, FUNC(mc6854_device::write))); else - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfea0, 0xfebf, read8_delegate(FUNC(bbc_state::bbc_fe_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfea0, 0xfebf, read8_delegate(*this, FUNC(bbc_state::bbc_fe_r))); /* power-on reset timer, should produce "boo...beep" startup sound before sn76496 is initialised */ //m_maincpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); diff --git a/src/mame/machine/coco12.cpp b/src/mame/machine/coco12.cpp index 1096a5d8ee6..b843b311a13 100644 --- a/src/mame/machine/coco12.cpp +++ b/src/mame/machine/coco12.cpp @@ -36,19 +36,19 @@ void coco12_state::configure_sam() m_sam->configure_bank(2, &rom[0x2000], 0x2000, true); // $A000-$BFFF // $C000-$FEFF - m_sam->configure_bank(3, read8_delegate(FUNC(cococart_slot_device::cts_read), m_cococart.target()), write8_delegate(FUNC(cococart_slot_device::cts_write), m_cococart.target())); + m_sam->configure_bank(3, read8_delegate(*m_cococart, FUNC(cococart_slot_device::cts_read)), write8_delegate(*m_cococart, FUNC(cococart_slot_device::cts_write))); // $FF00-$FF1F - m_sam->configure_bank(4, read8_delegate(FUNC(coco12_state::ff00_read), this), write8_delegate(FUNC(coco12_state::ff00_write), this)); + m_sam->configure_bank(4, read8_delegate(*this, FUNC(coco12_state::ff00_read)), write8_delegate(*this, FUNC(coco12_state::ff00_write))); // $FF20-$FF3F - m_sam->configure_bank(5, read8_delegate(FUNC(coco12_state::ff20_read), this), write8_delegate(FUNC(coco12_state::ff20_write), this)); + m_sam->configure_bank(5, read8_delegate(*this, FUNC(coco12_state::ff20_read)), write8_delegate(*this, FUNC(coco12_state::ff20_write))); // $FF40-$FF5F - m_sam->configure_bank(6, read8_delegate(FUNC(coco12_state::ff40_read), this), write8_delegate(FUNC(coco12_state::ff40_write), this)); + m_sam->configure_bank(6, read8_delegate(*this, FUNC(coco12_state::ff40_read)), write8_delegate(*this, FUNC(coco12_state::ff40_write))); // $FF60-$FFBF - m_sam->configure_bank(7, read8_delegate(FUNC(coco12_state::ff60_read), this), write8_delegate(FUNC(coco12_state::ff60_write), this)); + m_sam->configure_bank(7, read8_delegate(*this, FUNC(coco12_state::ff60_read)), write8_delegate(*this, FUNC(coco12_state::ff60_write))); } diff --git a/src/mame/machine/decocass.cpp b/src/mame/machine/decocass.cpp index 53c42a8559c..fbda017d473 100644 --- a/src/mame/machine/decocass.cpp +++ b/src/mame/machine/decocass.cpp @@ -1152,7 +1152,7 @@ READ8_MEMBER(decocass_state::decocass_e5xx_r) else { if (!m_dongle_r.isnull()) - data = (m_dongle_r)(space, offset, mem_mask); + data = m_dongle_r(space, offset, mem_mask); else data = 0xff; } @@ -1163,7 +1163,7 @@ WRITE8_MEMBER(decocass_state::decocass_e5xx_w) { if (!m_dongle_w.isnull()) { - (m_dongle_w)(space, offset, data, mem_mask); + m_dongle_w(space, offset, data, mem_mask); return; } @@ -1251,8 +1251,8 @@ void decocass_state::machine_reset() m_firsttime = 1; m_latch1 = 0; - m_dongle_r = read8_delegate(); - m_dongle_w = write8_delegate(); + m_dongle_r = read8_delegate(*this); + m_dongle_w = write8_delegate(*this); m_decocass_reset = 0; m_i8041_p1 = 0xff; @@ -1292,7 +1292,7 @@ void decocass_type1_state::machine_reset() { decocass_state::machine_reset(); - m_dongle_r = read8_delegate(FUNC(decocass_type1_state::decocass_type1_r),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_type1_state::decocass_type1_r)); m_type1_inmap = MAKE_MAP(0,1,2,3,4,5,6,7); m_type1_outmap = MAKE_MAP(0,1,2,3,4,5,6,7); } @@ -1309,8 +1309,8 @@ void decocass_type2_state::machine_reset() decocass_state::machine_reset(); LOG(0,("dongle type #2 (CS82-007)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_type2_state::decocass_type2_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_type2_state::decocass_type2_w),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_type2_state::decocass_type2_r)); + m_dongle_w = write8_delegate(*this, FUNC(decocass_type2_state::decocass_type2_w)); m_type2_d2_latch = 0; m_type2_xx_latch = 0; @@ -1329,8 +1329,8 @@ void decocass_type3_state::machine_reset() { decocass_state::machine_reset(); - m_dongle_r = read8_delegate(FUNC(decocass_type3_state::decocass_type3_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_type3_state::decocass_type3_w),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_type3_state::decocass_type3_r)); + m_dongle_w = write8_delegate(*this, FUNC(decocass_type3_state::decocass_type3_w)); m_type3_ctrs = 0; m_type3_d0_latch = 0; @@ -1349,8 +1349,8 @@ void decocass_type4_state::machine_reset() decocass_state::machine_reset(); LOG(0,("dongle type #4 (32K ROM)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_type4_state::decocass_type4_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_type4_state::decocass_type4_w),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_type4_state::decocass_type4_r)); + m_dongle_w = write8_delegate(*this, FUNC(decocass_type4_state::decocass_type4_w)); m_type4_ctrs = 0; m_type4_latch = 0; @@ -1366,8 +1366,8 @@ void decocass_type5_state::machine_reset() decocass_state::machine_reset(); LOG(0,("dongle type #5 (NOP)\n")); - m_dongle_r = read8_delegate(FUNC(decocass_type5_state::decocass_type5_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_type5_state::decocass_type5_w),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_type5_state::decocass_type5_r)); + m_dongle_w = write8_delegate(*this, FUNC(decocass_type5_state::decocass_type5_w)); m_type5_latch = 0; } @@ -1376,7 +1376,7 @@ void decocass_nodong_state::machine_reset() { decocass_state::machine_reset(); LOG(0, ("no dongle\n")); - m_dongle_r = read8_delegate(FUNC(decocass_nodong_state::decocass_nodong_r), this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_nodong_state::decocass_nodong_r)); } MACHINE_RESET_MEMBER(decocass_type1_state,ctsttape) @@ -1622,8 +1622,8 @@ void decocass_widel_state::machine_reset() { decocass_state::machine_reset(); LOG(0,("Deco Multigame Dongle\n")); - m_dongle_r = read8_delegate(FUNC(decocass_widel_state::decocass_widel_r),this); - m_dongle_w = write8_delegate(FUNC(decocass_widel_state::decocass_widel_w),this); + m_dongle_r = read8_delegate(*this, FUNC(decocass_widel_state::decocass_widel_r)); + m_dongle_w = write8_delegate(*this, FUNC(decocass_widel_state::decocass_widel_w)); m_widel_ctrs = 0; m_widel_latch = 0; @@ -1641,17 +1641,17 @@ WRITE8_MEMBER(decocass_state::i8041_p1_w) if (data != m_i8041_p1_write_latch) { LOG(4,("%10s 8041-PC: %03x i8041_p1_w: $%02x (%s%s%s%s%s%s%s%s)\n", - machine().time().as_string(6), - m_maincpu->pcbase(), - data, - data & 0x01 ? "" : "DATA-WRT", - data & 0x02 ? "" : " DATA-CLK", - data & 0x04 ? "" : " FAST", - data & 0x08 ? "" : " BIT3", - data & 0x10 ? "" : " REW", - data & 0x20 ? "" : " FWD", - data & 0x40 ? "" : " WREN", - data & 0x80 ? "" : " REQ")); + machine().time().as_string(6), + m_maincpu->pcbase(), + data, + data & 0x01 ? "" : "DATA-WRT", + data & 0x02 ? "" : " DATA-CLK", + data & 0x04 ? "" : " FAST", + data & 0x08 ? "" : " BIT3", + data & 0x10 ? "" : " REW", + data & 0x20 ? "" : " FWD", + data & 0x40 ? "" : " WREN", + data & 0x80 ? "" : " REQ")); m_i8041_p1_write_latch = data; } diff --git a/src/mame/machine/dgn_beta.cpp b/src/mame/machine/dgn_beta.cpp index adaa9da972d..b3179af551d 100644 --- a/src/mame/machine/dgn_beta.cpp +++ b/src/mame/machine/dgn_beta.cpp @@ -95,30 +95,31 @@ // Info for bank switcher struct bank_info_entry { - write8_delegate func; // Pointer to write handler - offs_t start; // Offset of start of block - offs_t end; // offset of end of block + void (dgn_beta_state::*func)(address_space &, offs_t, u8, u8); // pointer to write handler + char const *name; // write handler name + offs_t start; // offset of start of block + offs_t end; // offset of end of block }; static const struct bank_info_entry bank_info[] = { - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b0_w),(dgn_beta_state*)nullptr), 0x0000, 0x0fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b1_w),(dgn_beta_state*)nullptr), 0x1000, 0x1fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b2_w),(dgn_beta_state*)nullptr), 0x2000, 0x2fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b3_w),(dgn_beta_state*)nullptr), 0x3000, 0x3fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b4_w),(dgn_beta_state*)nullptr), 0x4000, 0x4fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b5_w),(dgn_beta_state*)nullptr), 0x5000, 0x5fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b6_w),(dgn_beta_state*)nullptr), 0x6000, 0x6fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b7_w),(dgn_beta_state*)nullptr), 0x7000, 0x7fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b8_w),(dgn_beta_state*)nullptr), 0x8000, 0x8fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_b9_w),(dgn_beta_state*)nullptr), 0x9000, 0x9fff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bA_w),(dgn_beta_state*)nullptr), 0xA000, 0xAfff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bB_w),(dgn_beta_state*)nullptr), 0xB000, 0xBfff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bC_w),(dgn_beta_state*)nullptr), 0xC000, 0xCfff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bD_w),(dgn_beta_state*)nullptr), 0xD000, 0xDfff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bE_w),(dgn_beta_state*)nullptr), 0xE000, 0xEfff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bF_w),(dgn_beta_state*)nullptr), 0xF000, 0xFBff }, - { write8_delegate(FUNC(dgn_beta_state::dgnbeta_ram_bG_w),(dgn_beta_state*)nullptr), 0xFF00, 0xFfff } + { FUNC(dgn_beta_state::dgnbeta_ram_b0_w), 0x0000, 0x0fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b1_w), 0x1000, 0x1fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b2_w), 0x2000, 0x2fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b3_w), 0x3000, 0x3fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b4_w), 0x4000, 0x4fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b5_w), 0x5000, 0x5fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b6_w), 0x6000, 0x6fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b7_w), 0x7000, 0x7fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b8_w), 0x8000, 0x8fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_b9_w), 0x9000, 0x9fff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bA_w), 0xA000, 0xAfff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bB_w), 0xB000, 0xBfff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bC_w), 0xC000, 0xCfff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bD_w), 0xD000, 0xDfff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bE_w), 0xE000, 0xEfff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bF_w), 0xF000, 0xFBff }, + { FUNC(dgn_beta_state::dgnbeta_ram_bG_w), 0xFF00, 0xFfff } }; #define is_last_page(page) (((page==LastPage) || (page==LastPage+1)) ? 1 : 0) @@ -179,8 +180,7 @@ void dgn_beta_state::UpdateBanks(int first, int last) readbank = &m_ram->pointer()[(MapPage*RamPageSize)-256]; logerror("Error RAM in Last page !\n"); } - write8_delegate func = bank_info[Page].func; - if (!func.isnull()) func.late_bind(*this); + write8_delegate func(*this, bank_info[Page].func, bank_info[Page].name); space_0.install_write_handler(bank_start, bank_end, func); space_1.install_write_handler(bank_start, bank_end, func); } diff --git a/src/mame/machine/dragon.cpp b/src/mame/machine/dragon.cpp index ce4d6dd1be3..d5c217b9130 100644 --- a/src/mame/machine/dragon.cpp +++ b/src/mame/machine/dragon.cpp @@ -236,9 +236,9 @@ void d64plus_state::device_start() dragon_state::device_start(); address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_readwrite_handler(0xffe0, 0xffe0, read8smo_delegate(FUNC(mc6845_device::status_r), &*m_crtc), write8smo_delegate(FUNC(mc6845_device::address_w), &*m_crtc)); - space.install_readwrite_handler(0xffe1, 0xffe1, read8smo_delegate(FUNC(mc6845_device::register_r), &*m_crtc), write8smo_delegate(FUNC(mc6845_device::register_w), &*m_crtc)); - space.install_readwrite_handler(0xffe2, 0xffe2, READ8_DELEGATE(d64plus_state, d64plus_6845_disp_r), WRITE8_DELEGATE(d64plus_state, d64plus_bank_w)); + space.install_readwrite_handler(0xffe0, 0xffe0, read8smo_delegate(*m_crtc, FUNC(mc6845_device::status_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::address_w))); + space.install_readwrite_handler(0xffe1, 0xffe1, read8smo_delegate(*m_crtc, FUNC(mc6845_device::register_r)), write8smo_delegate(*m_crtc, FUNC(mc6845_device::register_w))); + space.install_readwrite_handler(0xffe2, 0xffe2, read8_delegate(*this, FUNC(d64plus_state::d64plus_6845_disp_r)), write8_delegate(*this, FUNC(d64plus_state::d64plus_bank_w))); // allocate memory m_plus_ram.allocate(0x10000); diff --git a/src/mame/machine/fd1094.cpp b/src/mame/machine/fd1094.cpp index 1692c2f969c..18d8085652c 100644 --- a/src/mame/machine/fd1094.cpp +++ b/src/mame/machine/fd1094.cpp @@ -653,9 +653,9 @@ void fd1094_device::device_start() m68000_device::device_start(); // register for the state changing callbacks we need in the m68000 - set_cmpild_callback(write32_delegate(FUNC(fd1094_device::cmp_callback),this)); - set_rte_callback(write_line_delegate(FUNC(fd1094_device::rte_callback),this)); - set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(fd1094_device::irq_callback), this)); + set_cmpild_callback(*this, FUNC(fd1094_device::cmp_callback)); + set_rte_callback(*this, FUNC(fd1094_device::rte_callback)); + set_irq_acknowledge_callback(*this, FUNC(fd1094_device::irq_callback)); // save state save_item(NAME(m_state)); diff --git a/src/mame/machine/gamepock.cpp b/src/mame/machine/gamepock.cpp index dd690f1b0ce..af9967db0b2 100644 --- a/src/mame/machine/gamepock.cpp +++ b/src/mame/machine/gamepock.cpp @@ -140,20 +140,19 @@ void gamepock_state::machine_reset() hd44102ch_init( 2 ); if (m_cart->exists()) - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000,0xbfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4000,0xbfff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } uint32_t gamepock_state::screen_update_gamepock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { uint8_t ad; - int i,j; /* Handle HD44102CH #0 */ ad = m_hd44102ch[0].start_page; - for ( i = 0; i < 4; i++ ) + for ( int i = 0; i < 4; i++ ) { - for ( j = 0; j < 50; j++ ) + for ( int j = 0; j < 50; j++ ) { bitmap.pix16(i * 8 + 0, 49 - j ) = ( m_hd44102ch[0].ram[ad+j] & 0x01 ) ? 0 : 1; bitmap.pix16(i * 8 + 1, 49 - j ) = ( m_hd44102ch[0].ram[ad+j] & 0x02 ) ? 0 : 1; @@ -169,9 +168,9 @@ uint32_t gamepock_state::screen_update_gamepock(screen_device &screen, bitmap_in /* Handle HD44102CH #1 */ ad = m_hd44102ch[1].start_page; - for ( i = 4; i < 8; i++ ) + for ( int i = 4; i < 8; i++ ) { - for ( j = 0; j < 50; j++ ) + for ( int j = 0; j < 50; j++ ) { bitmap.pix16(i * 8 + 0, j ) = ( m_hd44102ch[1].ram[ad+j] & 0x01 ) ? 0 : 1; bitmap.pix16(i * 8 + 1, j ) = ( m_hd44102ch[1].ram[ad+j] & 0x02 ) ? 0 : 1; @@ -187,9 +186,9 @@ uint32_t gamepock_state::screen_update_gamepock(screen_device &screen, bitmap_in /* Handle HD44102CH #2 */ ad = m_hd44102ch[2].start_page; - for ( i = 0; i < 4; i++ ) + for ( int i = 0; i < 4; i++ ) { - for ( j = 0; j < 25; j++ ) + for ( int j = 0; j < 25; j++ ) { bitmap.pix16(i * 8 + 0, 50 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x01 ) ? 0 : 1; bitmap.pix16(i * 8 + 1, 50 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x02 ) ? 0 : 1; @@ -200,7 +199,7 @@ uint32_t gamepock_state::screen_update_gamepock(screen_device &screen, bitmap_in bitmap.pix16(i * 8 + 6, 50 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x40 ) ? 0 : 1; bitmap.pix16(i * 8 + 7, 50 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x80 ) ? 0 : 1; } - for ( j = 25; j < 50; j++ ) + for ( int j = 25; j < 50; j++ ) { bitmap.pix16(32 + i * 8 + 0, 25 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x01 ) ? 0 : 1; bitmap.pix16(32 + i * 8 + 1, 25 + j ) = ( m_hd44102ch[2].ram[ad+j] & 0x02 ) ? 0 : 1; diff --git a/src/mame/machine/gridkeyb.cpp b/src/mame/machine/gridkeyb.cpp index bfd03d0b6f5..bace5c09696 100644 --- a/src/mame/machine/gridkeyb.cpp +++ b/src/mame/machine/gridkeyb.cpp @@ -206,7 +206,7 @@ grid_keyboard_device::grid_keyboard_device( , m_config(*this, "GRIDKBD_CFG") , m_modifiers(*this, "GRIDKBD_MOD") , m_last_modifiers(0U) - , m_keyboard_cb() + , m_keyboard_cb(*this) { } @@ -225,7 +225,7 @@ ioport_constructor grid_keyboard_device::device_input_ports() const void grid_keyboard_device::device_start() { - m_keyboard_cb.bind_relative_to(*owner()); + m_keyboard_cb.resolve(); save_item(NAME(m_last_modifiers)); } diff --git a/src/mame/machine/gridkeyb.h b/src/mame/machine/gridkeyb.h index c4a41cd1589..e0072d7ea38 100644 --- a/src/mame/machine/gridkeyb.h +++ b/src/mame/machine/gridkeyb.h @@ -40,12 +40,11 @@ public: device_t *owner, u32 clock); - template <class FunctionClass> - void set_keyboard_callback(void (FunctionClass::*callback)(u16 character), const char *name) + template <typename... T> + void set_keyboard_callback(T &&... args) { - set_keyboard_callback(output_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); + m_keyboard_cb.set(std::forward<T>(args)...); } - void set_keyboard_callback(output_delegate callback) { m_keyboard_cb = callback; } virtual ioport_constructor device_input_ports() const override; diff --git a/src/mame/machine/hp48.cpp b/src/mame/machine/hp48.cpp index f4c6716f0f1..5e1f871686d 100644 --- a/src/mame/machine/hp48.cpp +++ b/src/mame/machine/hp48.cpp @@ -907,8 +907,8 @@ void hp48_state::init_hp48() for (int i = 0; i < 6; i++) { m_modules[i].off_mask = 0x00fff; /* 2 KB */ - m_modules[i].read = read8_delegate(); - m_modules[i].write = write8_delegate(); + m_modules[i].read = read8_delegate(*this); + m_modules[i].write = write8_delegate(*this); m_modules[i].data = nullptr; m_modules[i].isnop = 0; } @@ -957,8 +957,8 @@ void hp48_state::base_machine_start(hp48_models model) /* I/O RAM */ m_modules[HP48_HDW].off_mask = 0x0003f; /* 32 B */ - m_modules[HP48_HDW].read = read8_delegate(FUNC(hp48_state::io_r),this); - m_modules[HP48_HDW].write = write8_delegate(FUNC(hp48_state::io_w),this); + m_modules[HP48_HDW].read = read8_delegate(*this, FUNC(hp48_state::io_r)); + m_modules[HP48_HDW].write = write8_delegate(*this, FUNC(hp48_state::io_w)); /* internal RAM */ if (HP49_G_MODEL) @@ -980,8 +980,8 @@ void hp48_state::base_machine_start(hp48_models model) if (HP48_G_SERIES) { m_modules[HP48_CE1].off_mask = 0x00fff; /* 2 KB */ - m_modules[HP48_CE1].read = read8_delegate(FUNC(hp48_state::bank_r),this); - m_modules[HP48_CE1].write = HP49_G_MODEL ? write8_delegate(FUNC(hp48_state::hp49_bank_w),this) : write8_delegate(); + m_modules[HP48_CE1].read = read8_delegate(*this, FUNC(hp48_state::bank_r)); + m_modules[HP48_CE1].write = HP49_G_MODEL ? write8_delegate(*this, FUNC(hp48_state::hp49_bank_w)) : write8_delegate(*this); } /* timers */ @@ -996,13 +996,13 @@ void hp48_state::base_machine_start(hp48_models model) m_kbd_timer->adjust(attotime::from_msec(1), 0, attotime::from_msec(1)); /* save state */ - save_item(NAME(m_out) ); - save_item(NAME(m_kdn) ); - save_item(NAME(m_io_addr) ); - save_item(NAME(m_crc) ); - save_item(NAME(m_timer1) ); - save_item(NAME(m_timer2) ); - save_item(NAME(m_bank_switch) ); + save_item(NAME(m_out)); + save_item(NAME(m_kdn)); + save_item(NAME(m_io_addr)); + save_item(NAME(m_crc)); + save_item(NAME(m_timer1)); + save_item(NAME(m_timer2)); + save_item(NAME(m_bank_switch)); for (int i = 0; i < 6; i++) { save_item(m_modules[i].state, "globals/m_modules[i].state", i); diff --git a/src/mame/machine/hp48_port.cpp b/src/mame/machine/hp48_port.cpp index c22e9e61623..459b20c781b 100644 --- a/src/mame/machine/hp48_port.cpp +++ b/src/mame/machine/hp48_port.cpp @@ -25,8 +25,8 @@ void hp48_port_image_device::fill_port() LOG("hp48_port_image_device::fill_port: %s module=%i size=%i rw=%i\n", tag(), m_module, size, m_port_write); m_port_data = make_unique_clear<uint8_t[]>(2 * size); m_hp48->m_modules[m_module].off_mask = 2 * (( size > 128 * 1024 ) ? 128 * 1024 : size) - 1; - m_hp48->m_modules[m_module].read = read8_delegate(); - m_hp48->m_modules[m_module].write = write8_delegate(); + m_hp48->m_modules[m_module].read = read8_delegate(*m_hp48); + m_hp48->m_modules[m_module].write = write8_delegate(*m_hp48); m_hp48->m_modules[m_module].isnop = m_port_write ? 0 : 1; m_hp48->m_modules[m_module].data = (void*)m_port_data.get(); m_hp48->apply_modules(); @@ -37,8 +37,8 @@ void hp48_port_image_device::unfill_port() { LOG("hp48_port_image_device::unfill_port\n"); m_hp48->m_modules[m_module].off_mask = 0x00fff; /* 2 KB */ - m_hp48->m_modules[m_module].read = read8_delegate(); - m_hp48->m_modules[m_module].write = write8_delegate(); + m_hp48->m_modules[m_module].read = read8_delegate(*m_hp48); + m_hp48->m_modules[m_module].write = write8_delegate(*m_hp48); m_hp48->m_modules[m_module].data = nullptr; m_hp48->m_modules[m_module].isnop = 1; m_port_size = 0; diff --git a/src/mame/machine/hp48_port.h b/src/mame/machine/hp48_port.h index 17826567740..b50bb8ae3bb 100644 --- a/src/mame/machine/hp48_port.h +++ b/src/mame/machine/hp48_port.h @@ -7,7 +7,6 @@ Hewlett Packard HP48 S/SX & G/GX and HP49 G **********************************************************************/ - #ifndef MAME_MACHINE_HP84_PORT_H #define MAME_MACHINE_HP84_PORT_H @@ -58,6 +57,7 @@ public: protected: // device-level overrides virtual void device_start() override; + private: void fill_port(); void unfill_port(); diff --git a/src/mame/machine/igs025.cpp b/src/mame/machine/igs025.cpp index 63f58c66003..6ac0c55a0e3 100644 --- a/src/mame/machine/igs025.cpp +++ b/src/mame/machine/igs025.cpp @@ -18,8 +18,8 @@ igs025_device::igs025_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, IGS025, tag, owner, clock) + , m_execute_external(*this, DEVICE_SELF, FUNC(igs025_device::no_callback_setup)) { - m_execute_external = igs025_execute_external(FUNC(igs025_device::no_callback_setup), this); } void igs025_device::no_callback_setup() @@ -40,7 +40,7 @@ void igs025_device::device_start() m_kb_ptr = 0; m_kb_swap = 0; - m_execute_external.bind_relative_to(*owner()); + m_execute_external.resolve(); save_item(NAME(m_kb_prot_hold)); save_item(NAME(m_kb_prot_hilo)); diff --git a/src/mame/machine/igs025.h b/src/mame/machine/igs025.h index 6c00548d8e3..7458152ad5f 100644 --- a/src/mame/machine/igs025.h +++ b/src/mame/machine/igs025.h @@ -20,7 +20,7 @@ public: uint32_t m_kb_game_id; uint32_t m_kb_region; - template <typename... T> void set_external_cb(T &&... args) { m_execute_external = igs025_execute_external(std::forward<T>(args)...); } + template <typename... T> void set_external_cb(T &&... args) { m_execute_external.set(std::forward<T>(args)...); } DECLARE_WRITE16_MEMBER( olds_w ); DECLARE_WRITE16_MEMBER( drgw2_d80000_protection_w ); diff --git a/src/mame/machine/imds2ioc.cpp b/src/mame/machine/imds2ioc.cpp index c5c148b7367..f74f6c5ab60 100644 --- a/src/mame/machine/imds2ioc.cpp +++ b/src/mame/machine/imds2ioc.cpp @@ -596,7 +596,7 @@ void imds2ioc_device::device_add_mconfig(machine_config &config) I8275(config, m_ioccrtc, 22853600 / 14); m_ioccrtc->set_character_width(14); m_ioccrtc->set_refresh_hack(true); - m_ioccrtc->set_display_callback(FUNC(imds2ioc_device::crtc_display_pixels), this); + m_ioccrtc->set_display_callback(FUNC(imds2ioc_device::crtc_display_pixels)); m_ioccrtc->drq_wr_callback().set(m_iocdma, FUNC(i8257_device::dreq2_w)); m_ioccrtc->irq_wr_callback().set_inputline(m_ioccpu, I8085_INTR_LINE); m_ioccrtc->set_screen("screen"); diff --git a/src/mame/machine/intv.cpp b/src/mame/machine/intv.cpp index cc363d1b2de..b8e8824bc16 100644 --- a/src/mame/machine/intv.cpp +++ b/src/mame/machine/intv.cpp @@ -598,35 +598,35 @@ void intv_state::machine_start() switch (m_cart->get_type()) { case INTV_RAM: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd000, 0xd7ff, read16sm_delegate(FUNC(intv_cart_slot_device::read_ram),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_ram),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd000, 0xd7ff, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_ram)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_ram))); break; case INTV_GFACT: - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8800, 0x8fff, read16sm_delegate(FUNC(intv_cart_slot_device::read_ram),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_ram),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8800, 0x8fff, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_ram)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_ram))); break; case INTV_VOICE: m_cart->late_subslot_setup(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0080, 0x0081, read16sm_delegate(FUNC(intv_cart_slot_device::read_speech),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_speech),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0080, 0x0081, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_speech)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_speech))); // passthru for RAM-equipped carts - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8800, 0x8fff, write16sm_delegate(FUNC(intv_cart_slot_device::write_88),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000, 0xd7ff, write16sm_delegate(FUNC(intv_cart_slot_device::write_d0),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8800, 0x8fff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_88))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000, 0xd7ff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_d0))); break; case INTV_ECS: m_cart->late_subslot_setup(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00f0, 0x00ff, read16sm_delegate(FUNC(intv_cart_slot_device::read_ay),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_ay),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4000, 0x47ff, read16sm_delegate(FUNC(intv_cart_slot_device::read_ram),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_ram),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x00f0, 0x00ff, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_ay)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_ay))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4000, 0x47ff, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_ram)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_ram))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x2000, 0x2fff, write16sm_delegate(FUNC(intv_cart_slot_device::write_rom20),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x7000, 0x7fff, write16sm_delegate(FUNC(intv_cart_slot_device::write_rom70),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000, 0xefff, write16sm_delegate(FUNC(intv_cart_slot_device::write_rome0),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf000, 0xffff, write16sm_delegate(FUNC(intv_cart_slot_device::write_romf0),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x2000, 0x2fff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_rom20))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x7000, 0x7fff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_rom70))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xe000, 0xefff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_rome0))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xf000, 0xffff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_romf0))); // passthru for Intellivoice expansion - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0080, 0x0081, read16sm_delegate(FUNC(intv_cart_slot_device::read_speech),(intv_cart_slot_device*)m_cart), write16sm_delegate(FUNC(intv_cart_slot_device::write_speech),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0080, 0x0081, read16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::read_speech)), write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_speech))); // passthru for RAM-equipped carts - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8800, 0x8fff, write16sm_delegate(FUNC(intv_cart_slot_device::write_88),(intv_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000, 0xd7ff, write16sm_delegate(FUNC(intv_cart_slot_device::write_d0),(intv_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8800, 0x8fff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_88))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xd000, 0xd7ff, write16sm_delegate(*m_cart, FUNC(intv_cart_slot_device::write_d0))); break; } diff --git a/src/mame/machine/jazz_mct_adr.cpp b/src/mame/machine/jazz_mct_adr.cpp index 2c7da33aec9..8c4c13b325f 100644 --- a/src/mame/machine/jazz_mct_adr.cpp +++ b/src/mame/machine/jazz_mct_adr.cpp @@ -48,72 +48,74 @@ jazz_mct_adr_device::jazz_mct_adr_device(const machine_config &mconfig, const ch void jazz_mct_adr_device::map(address_map &map) { - map(0x000, 0x007).lrw32("configuration", [this](){ return m_config; }, [this](u32 data) { m_config = data; }); - map(0x008, 0x00f).lr32("revision_level", [](){ return 1; }); - map(0x010, 0x017).lr32("dma_invalid_address", [this]() { m_dma_interrupt_source &= ~DMA_ADDRESS_ERROR; return m_dma_invalid_address; }); - map(0x018, 0x01f).lrw32("translation_base", [this]() { return m_trans_tbl_base; }, [this](u32 data) { LOG("tbl base 0x%08x\n", data); m_trans_tbl_base = data; }); - map(0x020, 0x027).lrw32("translation_limit", [this]() { return m_trans_tbl_limit; }, [this](u32 data) { LOG("tbl limit 0x%08x\n", data); m_trans_tbl_limit = data; }); - map(0x028, 0x02f).lrw32("translation_invalidate", []() { return 0; }, [](u32 data) { }); - map(0x030, 0x037).lw32("cache_maintenance", [this](u32 data) { m_ioc_maint = data; }); - map(0x038, 0x03f).lr32("remote_failed_address", []() { return 0; }); - map(0x040, 0x047).lr32("dma_memory_failed_address", [this]() { m_dma_interrupt_source &= ~DMA_PARITY_ERROR; return m_dma_memory_failed_address; }); - map(0x048, 0x04f).lw32("io_cache_physical_tag", [this](u32 data) { m_ioc_physical_tag = data; }); - map(0x050, 0x057).lw32("io_cache_logical_tag", [this](u32 data) { m_ioc_logical_tag = data; }); - map(0x058, 0x05f).lrw32("io_cache_byte_mask", - // FIXME: hack to pass diagnostics - [this]() - { - u32 const data = m_ioc_byte_mask; - - if (data == 0xffffffff) - m_ioc_byte_mask = 0; - return data; - }, - [this](u32 data) { m_ioc_byte_mask |= data; }); - map(0x060, 0x067).lw32("io_cache_buffer_window_lo", [this](u32 data) - { - // FIXME: hack to pass diagnostics - if (m_ioc_logical_tag == 0x80000001 && m_ioc_byte_mask == 0x0f0f0f0f) - { - u32 const address = (m_ioc_physical_tag & ~0x1) + ((m_ioc_maint & 0x3) << 3); - - m_bus->write_dword(address, data); - } - }); + map(0x000, 0x007).lrw32(NAME([this] () { return m_config; }), NAME([this] (u32 data) { m_config = data; })); + map(0x008, 0x00f).lr32([] () { return 1; }, "revision_level"); + map(0x010, 0x017).lr32(NAME([this] () { m_dma_interrupt_source &= ~DMA_ADDRESS_ERROR; return m_dma_invalid_address; })); + map(0x018, 0x01f).lrw32(NAME([this] () { return m_trans_tbl_base; }), NAME([this] (u32 data) { LOG("tbl base 0x%08x\n", data); m_trans_tbl_base = data; })); + map(0x020, 0x027).lrw32(NAME([this] () { return m_trans_tbl_limit; }), NAME([this] (u32 data) { LOG("tbl limit 0x%08x\n", data); m_trans_tbl_limit = data; })); + map(0x028, 0x02f).lrw32([] () { return 0; }, "translation_invalidate_r", [] (u32 data) { }, "translation_invalidate_w"); + map(0x030, 0x037).lw32(NAME([this] (u32 data) { m_ioc_maint = data; })); + map(0x038, 0x03f).lr32([] () { return 0; }, "remote_failed_address"); + map(0x040, 0x047).lr32(NAME([this] () { m_dma_interrupt_source &= ~DMA_PARITY_ERROR; return m_dma_memory_failed_address; })); + map(0x048, 0x04f).lw32(NAME([this] (u32 data) { m_ioc_physical_tag = data; })); + map(0x050, 0x057).lw32(NAME([this] (u32 data) { m_ioc_logical_tag = data; })); + map(0x058, 0x05f).lrw32( + // FIXME: hack to pass diagnostics + [this] () + { + u32 const data = m_ioc_byte_mask; + + if (data == 0xffffffff) + m_ioc_byte_mask = 0; + return data; + }, "io_cache_byte_mask_r", + NAME([this] (u32 data) { m_ioc_byte_mask |= data; })); + map(0x060, 0x067).lw32( + [this] (u32 data) + { + // FIXME: hack to pass diagnostics + if (m_ioc_logical_tag == 0x80000001 && m_ioc_byte_mask == 0x0f0f0f0f) + { + u32 const address = (m_ioc_physical_tag & ~0x1) + ((m_ioc_maint & 0x3) << 3); + + m_bus->write_dword(address, data); + } + }, "io_cache_buffer_window_lo"); // io_cache_buffer_window_hi - map(0x070, 0x0ef).lrw32("remote_speed", - [this](offs_t offset) { return m_remote_speed[offset >> 1]; }, - [this](offs_t offset, u32 data) { m_remote_speed[offset >> 1] = data; }); + map(0x070, 0x0ef).lrw32( + NAME([this] (offs_t offset) { return m_remote_speed[offset >> 1]; }), + NAME([this] (offs_t offset, u32 data) { m_remote_speed[offset >> 1] = data; })); // parity_diagnostic_lo // parity_diagnostic_hi - map(0x100, 0x1ff).lrw32("dma_reg", - [this](offs_t offset) { return m_dma_reg[offset >> 1]; }, - [this](offs_t offset, u32 data) - { - unsigned const reg = offset >> 1; - - LOG("dma_reg %d data 0x%08x (%s)\n", offset, data, machine().describe_context()); - - m_dma_reg[reg] = data; - - if ((reg == REG_ENABLE) && (data & DMA_ENABLE)) - LOG("dma started address 0x%08x count %d\n", translate_address(m_dma_reg[(0 << 2) + REG_ADDRESS]), m_dma_reg[(0 << 2) + REG_COUNT]); - }); - map(0x200, 0x207).lr32("interrupt_source", [this]() { return m_dma_interrupt_source; }); - map(0x208, 0x20f).lr32("error_type", []() { return 0; }); - map(0x210, 0x217).lrw32("refresh_rate", [this]() { return m_memory_refresh_rate; }, [this](u32 data) { m_memory_refresh_rate = data; }); + map(0x100, 0x1ff).lrw32( + NAME([this] (offs_t offset) { return m_dma_reg[offset >> 1]; }), + [this] (offs_t offset, u32 data) + { + unsigned const reg = offset >> 1; + + LOG("dma_reg %d data 0x%08x (%s)\n", offset, data, machine().describe_context()); + + m_dma_reg[reg] = data; + + if ((reg == REG_ENABLE) && (data & DMA_ENABLE)) + LOG("dma started address 0x%08x count %d\n", translate_address(m_dma_reg[(0 << 2) + REG_ADDRESS]), m_dma_reg[(0 << 2) + REG_COUNT]); + }, "dma_reg_w"); + map(0x200, 0x207).lr32(NAME([this] () { return m_dma_interrupt_source; })); + map(0x208, 0x20f).lr32([] () { return 0; }, "error_type"); + map(0x210, 0x217).lrw32(NAME([this] () { return m_memory_refresh_rate; }), NAME([this] (u32 data) { m_memory_refresh_rate = data; })); // refresh_counter - map(0x220, 0x227).lrw32("system_security", [this]() { return m_nvram_protect; }, [this](u32 data) { LOG("nvram_protect 0x%08x (%s)\n", data, machine().describe_context()); m_nvram_protect = data; }); - map(0x228, 0x22f).lw32("interrupt_interval", [this](u32 data) - { - LOG("timer_w 0x%08x\n", data); - - attotime interval = attotime::from_ticks((data + 1) & 0x1ff, 1000); - - m_interval_timer->adjust(interval, 0, interval); - }); - map(0x230, 0x237).lr32("interval_timer", [this]() { if (m_out_int_timer_asserted) { m_out_int_timer_asserted = false; m_out_int_timer(0); } return m_interval_timer->remaining().as_ticks(1000); }); - map(0x238, 0x23b).lr32("interrupt_acknowledge", [this]() { return m_eisa_iack(); }); + map(0x220, 0x227).lrw32(NAME([this] () { return m_nvram_protect; }), NAME([this] (u32 data) { LOG("nvram_protect 0x%08x (%s)\n", data, machine().describe_context()); m_nvram_protect = data; })); + map(0x228, 0x22f).lw32( + [this] (u32 data) + { + LOG("timer_w 0x%08x\n", data); + + attotime interval = attotime::from_ticks((data + 1) & 0x1ff, 1000); + + m_interval_timer->adjust(interval, 0, interval); + }, "interrupt_interval"); + map(0x230, 0x237).lr32([this] () { if (m_out_int_timer_asserted) { m_out_int_timer_asserted = false; m_out_int_timer(0); } return m_interval_timer->remaining().as_ticks(1000); }, "interval_timer"); + map(0x238, 0x23b).lr32(NAME([this] () { return m_eisa_iack(); })); } void jazz_mct_adr_device::device_start() diff --git a/src/mame/machine/kc.cpp b/src/mame/machine/kc.cpp index 0d1af0d94b7..5c956be6e3a 100644 --- a/src/mame/machine/kc.cpp +++ b/src/mame/machine/kc.cpp @@ -309,8 +309,8 @@ void kc_state::update_0x00000() { LOG(("Module at 0x0000\n")); - space.install_read_handler (0x0000, 0x3fff, read8_delegate(FUNC(kc_state::expansion_read), this), 0); - space.install_write_handler(0x0000, 0x3fff, write8_delegate(FUNC(kc_state::expansion_write), this), 0); + space.install_read_handler (0x0000, 0x3fff, read8_delegate(*this, FUNC(kc_state::expansion_read)), 0); + space.install_write_handler(0x0000, 0x3fff, write8_delegate(*this, FUNC(kc_state::expansion_write)), 0); } } @@ -321,8 +321,8 @@ void kc_state::update_0x04000() LOG(("Module at 0x4000\n")); - space.install_read_handler (0x4000, 0x7fff, read8_delegate(FUNC(kc_state::expansion_4000_r), this), 0); - space.install_write_handler(0x4000, 0x7fff, write8_delegate(FUNC(kc_state::expansion_4000_w), this), 0); + space.install_read_handler (0x4000, 0x7fff, read8_delegate(*this, FUNC(kc_state::expansion_4000_r)), 0); + space.install_write_handler(0x4000, 0x7fff, write8_delegate(*this, FUNC(kc_state::expansion_4000_w)), 0); } @@ -345,8 +345,8 @@ void kc_state::update_0x0c000() { LOG(("Module at 0x0c000\n")); - space.install_read_handler (0xc000, 0xdfff, read8_delegate(FUNC(kc_state::expansion_c000_r), this), 0); - space.install_write_handler(0xc000, 0xdfff, write8_delegate(FUNC(kc_state::expansion_c000_w), this), 0); + space.install_read_handler (0xc000, 0xdfff, read8_delegate(*this, FUNC(kc_state::expansion_c000_r)), 0); + space.install_write_handler(0xc000, 0xdfff, write8_delegate(*this, FUNC(kc_state::expansion_c000_w)), 0); } } @@ -368,8 +368,8 @@ void kc_state::update_0x0e000() { LOG(("Module at 0x0e000\n")); - space.install_read_handler (0xe000, 0xffff, read8_delegate(FUNC(kc_state::expansion_e000_r), this), 0); - space.install_write_handler(0xe000, 0xffff, write8_delegate(FUNC(kc_state::expansion_e000_w), this), 0); + space.install_read_handler (0xe000, 0xffff, read8_delegate(*this, FUNC(kc_state::expansion_e000_r)), 0); + space.install_write_handler(0xe000, 0xffff, write8_delegate(*this, FUNC(kc_state::expansion_e000_w)), 0); } } @@ -391,8 +391,8 @@ void kc_state::update_0x08000() { LOG(("Module at 0x8000!\n")); - space.install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(kc_state::expansion_8000_r), this), 0); - space.install_write_handler(0x8000, 0xbfff, write8_delegate(FUNC(kc_state::expansion_8000_w), this), 0); + space.install_read_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(kc_state::expansion_8000_r)), 0); + space.install_write_handler(0x8000, 0xbfff, write8_delegate(*this, FUNC(kc_state::expansion_8000_w)), 0); } } @@ -433,8 +433,8 @@ void kc85_4_state::update_0x04000() { LOG(("Module at 0x4000\n")); - space.install_read_handler (0x4000, 0x7fff, read8_delegate(FUNC(kc_state::expansion_4000_r), this), 0); - space.install_write_handler(0x4000, 0x7fff, write8_delegate(FUNC(kc_state::expansion_4000_w), this), 0); + space.install_read_handler (0x4000, 0x7fff, read8_delegate(*this, FUNC(kc_state::expansion_4000_r)), 0); + space.install_write_handler(0x4000, 0x7fff, write8_delegate(*this, FUNC(kc_state::expansion_4000_w)), 0); } } @@ -470,8 +470,8 @@ void kc85_4_state::update_0x0c000() { LOG(("Module at 0x0c000\n")); - space.install_read_handler (0xc000, 0xdfff, read8_delegate(FUNC(kc_state::expansion_c000_r), this), 0); - space.install_write_handler(0xc000, 0xdfff, write8_delegate(FUNC(kc_state::expansion_c000_w), this), 0); + space.install_read_handler (0xc000, 0xdfff, read8_delegate(*this, FUNC(kc_state::expansion_c000_r)), 0); + space.install_write_handler(0xc000, 0xdfff, write8_delegate(*this, FUNC(kc_state::expansion_c000_w)), 0); } } } @@ -542,8 +542,8 @@ void kc85_4_state::update_0x08000() { LOG(("Module at 0x8000\n")); - space.install_read_handler(0x8000, 0xbfff, read8_delegate(FUNC(kc_state::expansion_8000_r), this), 0); - space.install_write_handler(0x8000, 0xbfff, write8_delegate(FUNC(kc_state::expansion_8000_w), this), 0); + space.install_read_handler(0x8000, 0xbfff, read8_delegate(*this, FUNC(kc_state::expansion_8000_r)), 0); + space.install_write_handler(0x8000, 0xbfff, write8_delegate(*this, FUNC(kc_state::expansion_8000_w)), 0); } } diff --git a/src/mame/machine/konamigx.cpp b/src/mame/machine/konamigx.cpp index b927daf5156..d82eb498426 100644 --- a/src/mame/machine/konamigx.cpp +++ b/src/mame/machine/konamigx.cpp @@ -471,7 +471,7 @@ void konamigx_state::fantjour_dma_install() { save_item(NAME(m_fantjour_dma)); save_item(NAME(m_prot_data)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xdb0000, 0xdb001f, write32_delegate(FUNC(konamigx_state::fantjour_dma_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xdb0000, 0xdb001f, write32_delegate(*this, FUNC(konamigx_state::fantjour_dma_w))); memset(m_fantjour_dma, 0, sizeof(m_fantjour_dma)); } diff --git a/src/mame/machine/mac.cpp b/src/mame/machine/mac.cpp index 495f4884f97..9bfb19f07e4 100644 --- a/src/mame/machine/mac.cpp +++ b/src/mame/machine/mac.cpp @@ -344,7 +344,7 @@ void mac_state::v8_resize() mac_install_memory(0x00000000, memory_size-1, memory_size, memory_data, is_rom, "bank1"); // install catcher in place of ROM that will detect the first access to ROM in its real location - m_maincpu->space(AS_PROGRAM).install_read_handler(0xa00000, 0xafffff, read32_delegate(FUNC(mac_state::rom_switch_r), this), 0xffffffff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xa00000, 0xafffff, read32_delegate(*this, FUNC(mac_state::rom_switch_r)), 0xffffffff); } else { @@ -464,7 +464,7 @@ void mac_state::set_memory_overlay(int overlay) if (is_rom) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000000, 0x4fffffff, read32_delegate(FUNC(mac_state::rom_switch_r), this), 0xffffffff); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000000, 0x4fffffff, read32_delegate(*this, FUNC(mac_state::rom_switch_r)), 0xffffffff); } else { diff --git a/src/mame/machine/mbee.cpp b/src/mame/machine/mbee.cpp index 6a6d4fe49cd..a9bddd6c112 100644 --- a/src/mame/machine/mbee.cpp +++ b/src/mame/machine/mbee.cpp @@ -309,8 +309,8 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask) if (!BIT(b_byte, 4)) { // select video - mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(FUNC(mbee_state::video_low_r), this)); - mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(FUNC(mbee_state::video_high_r), this)); + mem.install_read_handler (b_vid, b_vid + 0x7ff, read8_delegate(*this, FUNC(mbee_state::video_low_r))); + mem.install_read_handler (b_vid + 0x800, b_vid + 0xfff, read8_delegate(*this, FUNC(mbee_state::video_high_r))); } else { @@ -341,8 +341,8 @@ void mbee_state::setup_banks(uint8_t data, bool first_time, uint8_t b_mask) if (!BIT(b_byte, 4)) { // select video - mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(FUNC(mbee_state::video_low_w), this)); - mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(FUNC(mbee_state::video_high_w), this)); + mem.install_write_handler (b_vid, b_vid + 0x7ff, write8_delegate(*this, FUNC(mbee_state::video_low_w))); + mem.install_write_handler (b_vid + 0x800, b_vid + 0xfff, write8_delegate(*this, FUNC(mbee_state::video_high_w))); } else { diff --git a/src/mame/machine/mega32x.cpp b/src/mame/machine/mega32x.cpp index 0bc38458be7..42072ec8c63 100644 --- a/src/mame/machine/mega32x.cpp +++ b/src/mame/machine/mega32x.cpp @@ -671,21 +671,21 @@ WRITE16_MEMBER( sega_32x_device::m68k_a15100_w ) space.install_rom(0x0000000, 0x03fffff, machine().root_device().memregion("32x_68k_bios")->base()); /* VDP area */ - space.install_readwrite_handler(0x0a15180, 0x0a1518b, read16_delegate(FUNC(sega_32x_device::common_vdp_regs_r), this), write16_delegate(FUNC(sega_32x_device::common_vdp_regs_w),this)); // common / shared VDP regs - space.install_readwrite_handler(0x0a15200, 0x0a153ff, read16_delegate(FUNC(sega_32x_device::m68k_palette_r), this), write16_delegate(FUNC(sega_32x_device::m68k_palette_w),this)); // access to 'palette' xRRRRRGGGGGBBBBB - space.install_readwrite_handler(0x0840000, 0x085ffff, read16_delegate(FUNC(sega_32x_device::m68k_dram_r), this), write16_delegate(FUNC(sega_32x_device::m68k_dram_w),this)); // access to 'display ram' (framebuffer) - space.install_readwrite_handler(0x0860000, 0x087ffff, read16_delegate(FUNC(sega_32x_device::m68k_dram_overwrite_r),this), write16_delegate(FUNC(sega_32x_device::m68k_dram_overwrite_w),this)); // access to 'display ram' (framebuffer) + space.install_readwrite_handler(0x0a15180, 0x0a1518b, read16_delegate(*this, FUNC(sega_32x_device::common_vdp_regs_r)), write16_delegate(*this, FUNC(sega_32x_device::common_vdp_regs_w))); // common / shared VDP regs + space.install_readwrite_handler(0x0a15200, 0x0a153ff, read16_delegate(*this, FUNC(sega_32x_device::m68k_palette_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_palette_w))); // access to 'palette' xRRRRRGGGGGBBBBB + space.install_readwrite_handler(0x0840000, 0x085ffff, read16_delegate(*this, FUNC(sega_32x_device::m68k_dram_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_dram_w))); // access to 'display ram' (framebuffer) + space.install_readwrite_handler(0x0860000, 0x087ffff, read16_delegate(*this, FUNC(sega_32x_device::m68k_dram_overwrite_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_dram_overwrite_w))); // access to 'display ram' (framebuffer) - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_w),this)); // h interrupt vector + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_w))); // h interrupt vector } else { m_32x_adapter_enabled = 0; space.install_rom(0x0000000, 0x03fffff, machine().root_device().memregion("gamecart")->base()); - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_w),this)); // h interrupt vector + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_w))); // h interrupt vector } } @@ -1817,23 +1817,23 @@ void sega_32x_device::device_reset() if (m_32x_adapter_enabled == 0) { m_main_cpu->space(AS_PROGRAM).install_rom(0x0000000, 0x03fffff, machine().root_device().memregion(":gamecart")->base()); - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_r),this), write16_delegate(FUNC(sega_32x_device::m68k_m_hint_vector_w),this)); // h interrupt vector + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0x000070, 0x000073, read16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_m_hint_vector_w))); // h interrupt vector }; m_a15100_reg = 0x0000; - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15100, 0xa15101, read16_delegate(FUNC(sega_32x_device::m68k_a15100_r),this), write16_delegate(FUNC(sega_32x_device::m68k_a15100_w),this)); // framebuffer control regs - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15102, 0xa15103, read16_delegate(FUNC(sega_32x_device::m68k_a15102_r),this), write16_delegate(FUNC(sega_32x_device::m68k_a15102_w),this)); // send irq to sh2 - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15104, 0xa15105, read16_delegate(FUNC(sega_32x_device::m68k_a15104_r),this), write16_delegate(FUNC(sega_32x_device::m68k_a15104_w),this)); // 68k BANK rom set - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15106, 0xa15107, read16_delegate(FUNC(sega_32x_device::m68k_a15106_r),this), write16_delegate(FUNC(sega_32x_device::m68k_a15106_w),this)); // dreq stuff - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15108, 0xa15113, read16_delegate(FUNC(sega_32x_device::dreq_common_r),this), write16_delegate(FUNC(sega_32x_device::dreq_common_w),this)); // dreq src / dst / length /fifo + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15100, 0xa15101, read16_delegate(*this, FUNC(sega_32x_device::m68k_a15100_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_a15100_w))); // framebuffer control regs + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15102, 0xa15103, read16_delegate(*this, FUNC(sega_32x_device::m68k_a15102_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_a15102_w))); // send irq to sh2 + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15104, 0xa15105, read16_delegate(*this, FUNC(sega_32x_device::m68k_a15104_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_a15104_w))); // 68k BANK rom set + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15106, 0xa15107, read16_delegate(*this, FUNC(sega_32x_device::m68k_a15106_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_a15106_w))); // dreq stuff + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15108, 0xa15113, read16_delegate(*this, FUNC(sega_32x_device::dreq_common_r)), write16_delegate(*this, FUNC(sega_32x_device::dreq_common_w))); // dreq src / dst / length /fifo - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa1511a, 0xa1511b, read16_delegate(FUNC(sega_32x_device::m68k_a1511a_r),this), write16_delegate(FUNC(sega_32x_device::m68k_a1511a_w),this)); // SEGA TV + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa1511a, 0xa1511b, read16_delegate(*this, FUNC(sega_32x_device::m68k_a1511a_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_a1511a_w))); // SEGA TV - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15120, 0xa1512f, read16_delegate(FUNC(sega_32x_device::m68k_m_commsram_r),this), write16_delegate(FUNC(sega_32x_device::m68k_m_commsram_w),this)); // comms reg 0-7 - m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15130, 0xa1513f, read16_delegate(FUNC(sega_32x_device::pwm_r),this), write16_delegate(FUNC(sega_32x_device::m68k_pwm_w),this)); + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15120, 0xa1512f, read16_delegate(*this, FUNC(sega_32x_device::m68k_m_commsram_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_m_commsram_w))); // comms reg 0-7 + m_main_cpu->space(AS_PROGRAM).install_readwrite_handler(0xa15130, 0xa1513f, read16_delegate(*this, FUNC(sega_32x_device::pwm_r)), write16_delegate(*this, FUNC(sega_32x_device::m68k_pwm_w))); - m_main_cpu->space(AS_PROGRAM).install_read_handler(0x0a130ec, 0x0a130ef, read16_delegate(FUNC(sega_32x_device::m68k_MARS_r),this)); // system ID + m_main_cpu->space(AS_PROGRAM).install_read_handler(0x0a130ec, 0x0a130ef, read16_delegate(*this, FUNC(sega_32x_device::m68k_MARS_r))); // system ID diff --git a/src/mame/machine/megacd.cpp b/src/mame/machine/megacd.cpp index 2872feaf9e9..f9d446cd1eb 100644 --- a/src/mame/machine/megacd.cpp +++ b/src/mame/machine/megacd.cpp @@ -297,17 +297,17 @@ void sega_segacd_device::device_add_mconfig(machine_config &config) { M68000(config, m_scdcpu, SEGACD_CLOCK); /* 12.5 MHz */ m_scdcpu->set_addrmap(AS_PROGRAM, &sega_segacd_device::segacd_map); - m_scdcpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(sega_segacd_device::segacd_sub_int_callback),this)); + m_scdcpu->set_irq_acknowledge_callback(FUNC(sega_segacd_device::segacd_sub_int_callback)); LC89510(config, "cdc", 0); // cd controller // temporary until things are cleaned up LC89510_TEMP(config, m_lc89510_temp, 0); // cd controller - m_lc89510_temp->set_cdc_do_dma_callback(FUNC(sega_segacd_device::SegaCD_CDC_Do_DMA), this); // hack + m_lc89510_temp->set_cdc_do_dma_callback(FUNC(sega_segacd_device::SegaCD_CDC_Do_DMA)); // hack m_lc89510_temp->set_cdrom_tag("^cdrom"); m_lc89510_temp->set_68k_tag(m_scdcpu); - TIMER(config, m_stopwatch_timer).configure_generic(timer_device::expired_delegate()); //stopwatch timer + TIMER(config, m_stopwatch_timer).configure_generic(nullptr); //stopwatch timer TIMER(config, m_stamp_timer).configure_generic(FUNC(sega_segacd_device::stamp_timer_callback)); TIMER(config, m_irq3_timer).configure_generic(FUNC(sega_segacd_device::irq3_timer_callback)); TIMER(config, m_dma_timer).configure_generic(FUNC(sega_segacd_device::dma_timer_callback)); @@ -1737,33 +1737,33 @@ void sega_segacd_device::device_start() space.unmap_readwrite (0x020000,0x3fffff); - space.install_read_handler (0x0020000, 0x003ffff, read16_delegate(FUNC(sega_segacd_device::scd_4m_prgbank_ram_r),this) ); - space.install_write_handler (0x0020000, 0x003ffff, write16_delegate(FUNC(sega_segacd_device::scd_4m_prgbank_ram_w),this) ); + space.install_read_handler (0x0020000, 0x003ffff, read16_delegate(*this, FUNC(sega_segacd_device::scd_4m_prgbank_ram_r)) ); + space.install_write_handler (0x0020000, 0x003ffff, write16_delegate(*this, FUNC(sega_segacd_device::scd_4m_prgbank_ram_w)) ); - space.install_readwrite_handler(0x200000, 0x23ffff, read16_delegate(FUNC(sega_segacd_device::segacd_main_dataram_part1_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_main_dataram_part1_w),this)); // RAM shared with sub - space.install_readwrite_handler(0xa12000, 0xa12001, read16_delegate(FUNC(sega_segacd_device::scd_a12000_halt_reset_r),this), write16_delegate(FUNC(sega_segacd_device::scd_a12000_halt_reset_w),this)); // sub-cpu control - space.install_readwrite_handler(0xa12002, 0xa12003, read16_delegate(FUNC(sega_segacd_device::scd_a12002_memory_mode_r),this), write16_delegate(FUNC(sega_segacd_device::scd_a12002_memory_mode_w),this)); // memory mode / write protect - //space.install_readwrite_handler(0xa12004, 0xa12005, read16_delegate(FUNC(sega_segacd_device::segacd_cdc_mode_address_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_cdc_mode_address_w),this)); - space.install_readwrite_handler(0xa12006, 0xa12007, read16_delegate(FUNC(sega_segacd_device::scd_a12006_hint_register_r),this), write16_delegate(FUNC(sega_segacd_device::scd_a12006_hint_register_w),this)); // where HINT points on main CPU - //space.install_read_handler (0xa12008, 0xa12009, read16_delegate(FUNC(sega_segacd_device::cdc_data_main_r),this)); + space.install_readwrite_handler(0x200000, 0x23ffff, read16_delegate(*this, FUNC(sega_segacd_device::segacd_main_dataram_part1_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_main_dataram_part1_w))); // RAM shared with sub + space.install_readwrite_handler(0xa12000, 0xa12001, read16_delegate(*this, FUNC(sega_segacd_device::scd_a12000_halt_reset_r)), write16_delegate(*this, FUNC(sega_segacd_device::scd_a12000_halt_reset_w))); // sub-cpu control + space.install_readwrite_handler(0xa12002, 0xa12003, read16_delegate(*this, FUNC(sega_segacd_device::scd_a12002_memory_mode_r)), write16_delegate(*this, FUNC(sega_segacd_device::scd_a12002_memory_mode_w))); // memory mode / write protect + //space.install_readwrite_handler(0xa12004, 0xa12005, read16_delegate(*this, FUNC(sega_segacd_device::segacd_cdc_mode_address_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_cdc_mode_address_w))); + space.install_readwrite_handler(0xa12006, 0xa12007, read16_delegate(*this, FUNC(sega_segacd_device::scd_a12006_hint_register_r)), write16_delegate(*this, FUNC(sega_segacd_device::scd_a12006_hint_register_w))); // where HINT points on main CPU + //space.install_read_handler (0xa12008, 0xa12009, read16_delegate(*this, FUNC(sega_segacd_device::cdc_data_main_r))); - space.install_readwrite_handler(0xa1200c, 0xa1200d, read16_delegate(FUNC(sega_segacd_device::segacd_stopwatch_timer_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_stopwatch_timer_w),this)); // starblad + space.install_readwrite_handler(0xa1200c, 0xa1200d, read16_delegate(*this, FUNC(sega_segacd_device::segacd_stopwatch_timer_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_stopwatch_timer_w))); // starblad - space.install_readwrite_handler(0xa1200e, 0xa1200f, read16_delegate(FUNC(sega_segacd_device::segacd_comms_flags_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_comms_flags_maincpu_w),this)); // communication flags block + space.install_readwrite_handler(0xa1200e, 0xa1200f, read16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_flags_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_flags_maincpu_w))); // communication flags block - space.install_readwrite_handler(0xa12010, 0xa1201f, read16_delegate(FUNC(sega_segacd_device::segacd_comms_main_part1_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_comms_main_part1_w),this)); - space.install_readwrite_handler(0xa12020, 0xa1202f, read16_delegate(FUNC(sega_segacd_device::segacd_comms_main_part2_r),this), write16_delegate(FUNC(sega_segacd_device::segacd_comms_main_part2_w),this)); + space.install_readwrite_handler(0xa12010, 0xa1201f, read16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_main_part1_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_main_part1_w))); + space.install_readwrite_handler(0xa12020, 0xa1202f, read16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_main_part2_r)), write16_delegate(*this, FUNC(sega_segacd_device::segacd_comms_main_part2_w))); - space.install_read_handler (0x0000070, 0x0000073, read16_delegate(FUNC(sega_segacd_device::scd_hint_vector_r),this) ); + space.install_read_handler (0x0000070, 0x0000073, read16_delegate(*this, FUNC(sega_segacd_device::scd_hint_vector_r)) ); - segacd_stampmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_16x16_1x1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - segacd_stampmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_32x32_1x1_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 8, 8); - segacd_stampmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_16x16_16x16_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 256); // 128kb! - segacd_stampmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(sega_segacd_device::get_stampmap_32x32_16x16_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 128, 128); // 32kb! + segacd_stampmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(sega_segacd_device::get_stampmap_16x16_1x1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + segacd_stampmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(sega_segacd_device::get_stampmap_32x32_1x1_tile_info)), TILEMAP_SCAN_ROWS, 32, 32, 8, 8); + segacd_stampmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(sega_segacd_device::get_stampmap_16x16_16x16_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 256, 256); // 128kb! + segacd_stampmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(sega_segacd_device::get_stampmap_32x32_16x16_tile_info)), TILEMAP_SCAN_ROWS, 32, 32, 128, 128); // 32kb! // todo register save state stuff } diff --git a/src/mame/machine/megacdcd.cpp b/src/mame/machine/megacdcd.cpp index 9241b906e07..c8b7fb440fe 100644 --- a/src/mame/machine/megacdcd.cpp +++ b/src/mame/machine/megacdcd.cpp @@ -135,15 +135,14 @@ DEFINE_DEVICE_TYPE(LC89510_TEMP, lc89510_temp_device, "lc89510_temp", "lc89510_t lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, LC89510_TEMP, tag, owner, clock) + , m_segacd_dma_callback(*this, FUNC(lc89510_temp_device::Fake_CDC_Do_DMA)) + , m_type1_interrupt_callback(*this, FUNC(lc89510_temp_device::dummy_interrupt_callback)) + , m_type2_interrupt_callback(*this, FUNC(lc89510_temp_device::dummy_interrupt_callback)) + , m_type3_interrupt_callback(*this, FUNC(lc89510_temp_device::dummy_interrupt_callback)) , m_cdrom(*this, finder_base::DUMMY_TAG) , m_cdda(*this, "cdda") , m_68k(*this, finder_base::DUMMY_TAG) { - segacd_dma_callback = segacd_dma_delegate(FUNC(lc89510_temp_device::Fake_CDC_Do_DMA), this); - type1_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this); - type2_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this); - type3_interrupt_callback = interrupt_delegate(FUNC(lc89510_temp_device::dummy_interrupt_callback), this); - is_neoCD = false; nff0002 = 0; @@ -160,7 +159,7 @@ lc89510_temp_device::lc89510_temp_device(const machine_config &mconfig, const ch segacd_irq_mask = 0; } -void lc89510_temp_device::dummy_interrupt_callback(void) +void lc89510_temp_device::dummy_interrupt_callback() { } @@ -172,10 +171,10 @@ void lc89510_temp_device::Fake_CDC_Do_DMA(int &dmacount, uint8_t *CDC_BUFFER, ui void lc89510_temp_device::device_start() { - segacd_dma_callback.bind_relative_to(*owner()); - type1_interrupt_callback.bind_relative_to(*owner()); - type2_interrupt_callback.bind_relative_to(*owner()); - type3_interrupt_callback.bind_relative_to(*owner()); + m_segacd_dma_callback.resolve(); + m_type1_interrupt_callback.resolve(); + m_type2_interrupt_callback.resolve(); + m_type3_interrupt_callback.resolve(); } void lc89510_temp_device::device_reset() @@ -645,7 +644,7 @@ void lc89510_temp_device::CDC_Do_DMA(running_machine& machine, int rate) uint16_t dma_addrc = LC8951RegistersW[REG_W_DACL] | (LC8951RegistersW[REG_W_DACH]<<8); // HACK - segacd_dma_callback(dmacount, CDC_BUFFER, dma_addrc, destination ); + m_segacd_dma_callback(dmacount, CDC_BUFFER, dma_addrc, destination ); dma_addrc += length*2; @@ -1138,7 +1137,7 @@ TIMER_DEVICE_CALLBACK_MEMBER( lc89510_temp_device::segacd_access_timer_callback { if (nff0002 & 0x0050) { - type2_interrupt_callback(); + m_type2_interrupt_callback(); } } @@ -1295,7 +1294,7 @@ void lc89510_temp_device::scd_ctrl_checks(running_machine& machine) { if (is_neoCD) { - type1_interrupt_callback(); + m_type1_interrupt_callback(); } else { diff --git a/src/mame/machine/megacdcd.h b/src/mame/machine/megacdcd.h index a8465a88384..3eec58bc6dd 100644 --- a/src/mame/machine/megacdcd.h +++ b/src/mame/machine/megacdcd.h @@ -8,20 +8,19 @@ #include "sound/cdda.h" -typedef device_delegate<void (int&, uint8_t*, uint16_t&, uint16_t&)> segacd_dma_delegate; - -typedef device_delegate<void (void)> interrupt_delegate; - class lc89510_temp_device : public device_t { public: + typedef device_delegate<void (int &, uint8_t *, uint16_t &, uint16_t &)> dma_delegate; + typedef device_delegate<void ()> interrupt_delegate; + void set_is_neoCD(bool new_is_neoCD) { is_neoCD = new_is_neoCD; } - template <typename... T> void set_type1_interrupt_callback(T &&... args) { type1_interrupt_callback = interrupt_delegate(std::forward<T>(args)...); } - template <typename... T> void set_type2_interrupt_callback(T &&... args) { type2_interrupt_callback = interrupt_delegate(std::forward<T>(args)...); } - template <typename... T> void set_type3_interrupt_callback(T &&... args) { type3_interrupt_callback = interrupt_delegate(std::forward<T>(args)...); } + template <typename... T> void set_type1_interrupt_callback(T &&... args) { m_type1_interrupt_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_type2_interrupt_callback(T &&... args) { m_type2_interrupt_callback.set(std::forward<T>(args)...); } + template <typename... T> void set_type3_interrupt_callback(T &&... args) { m_type3_interrupt_callback.set(std::forward<T>(args)...); } - template <typename... T> void set_cdc_do_dma_callback(T &&... args) { segacd_dma_callback = segacd_dma_delegate(std::forward<T>(args)...); } + template <typename... T> void set_cdc_do_dma_callback(T &&... args) { m_segacd_dma_callback.set(std::forward<T>(args)...); } template <typename T> void set_cdrom_tag(T &&tag) { m_cdrom.set_tag(std::forward<T>(tag)); } template <typename T> void set_68k_tag(T &&tag) { m_68k.set_tag(std::forward<T>(tag)); } @@ -72,14 +71,14 @@ protected: static constexpr unsigned EXTERNAL_BUFFER_SIZE = (32 * 1024 * 2) + SECTOR_SIZE; // HACK for DMA handling - segacd_dma_delegate segacd_dma_callback; - interrupt_delegate type1_interrupt_callback; - interrupt_delegate type2_interrupt_callback; - interrupt_delegate type3_interrupt_callback; + dma_delegate m_segacd_dma_callback; + interrupt_delegate m_type1_interrupt_callback; + interrupt_delegate m_type2_interrupt_callback; + interrupt_delegate m_type3_interrupt_callback; void Fake_CDC_Do_DMA(int &dmacount, uint8_t *CDC_BUFFER, uint16_t &dma_addrc, uint16_t &destination ); - void dummy_interrupt_callback(void); + void dummy_interrupt_callback(); required_device<cdrom_image_device> m_cdrom; diff --git a/src/mame/machine/megadriv.cpp b/src/mame/machine/megadriv.cpp index ee96f0d1f17..495e3612a66 100644 --- a/src/mame/machine/megadriv.cpp +++ b/src/mame/machine/megadriv.cpp @@ -1019,10 +1019,10 @@ void md_base_state::megadriv_init_common() save_pointer(NAME(m_genz80.z80_prgram), 0x2000); } - m_maincpu->set_tas_write_callback(write8_delegate(FUNC(md_base_state::megadriv_tas_callback),this)); + m_maincpu->set_tas_write_callback(*this, FUNC(md_base_state::megadriv_tas_callback)); - m_megadrive_io_read_data_port_ptr = read8_delegate(FUNC(md_base_state::megadrive_io_read_data_port_3button),this); - m_megadrive_io_write_data_port_ptr = write16_delegate(FUNC(md_base_state::megadrive_io_write_data_port_3button),this); + m_megadrive_io_read_data_port_ptr = read8_delegate(*this, FUNC(md_base_state::megadrive_io_read_data_port_3button)); + m_megadrive_io_write_data_port_ptr = write16_delegate(*this, FUNC(md_base_state::megadrive_io_write_data_port_3button)); } void md_base_state::init_megadriv_c2() diff --git a/src/mame/machine/mhavoc.cpp b/src/mame/machine/mhavoc.cpp index 65e9a99a3a6..2dbfe7067af 100644 --- a/src/mame/machine/mhavoc.cpp +++ b/src/mame/machine/mhavoc.cpp @@ -319,6 +319,6 @@ WRITE8_MEMBER(mhavoc_state::mhavocrv_speech_strobe_w) void mhavoc_state::init_mhavocrv() { // For Return to Vax, add support for the normally-unused speech module. - m_gamma->space(AS_PROGRAM).install_write_handler(0x5800, 0x5800, write8_delegate(FUNC(mhavoc_state::mhavocrv_speech_data_w),this)); - m_gamma->space(AS_PROGRAM).install_write_handler(0x5900, 0x5900, write8_delegate(FUNC(mhavoc_state::mhavocrv_speech_strobe_w),this)); + m_gamma->space(AS_PROGRAM).install_write_handler(0x5800, 0x5800, write8_delegate(*this, FUNC(mhavoc_state::mhavocrv_speech_data_w))); + m_gamma->space(AS_PROGRAM).install_write_handler(0x5900, 0x5900, write8_delegate(*this, FUNC(mhavoc_state::mhavocrv_speech_strobe_w))); } diff --git a/src/mame/machine/micro3d.cpp b/src/mame/machine/micro3d.cpp index e30e9361b5d..e96be82b856 100644 --- a/src/mame/machine/micro3d.cpp +++ b/src/mame/machine/micro3d.cpp @@ -524,8 +524,8 @@ void micro3d_state::init_botss() address_space &space = m_maincpu->space(AS_PROGRAM); /* Required to pass the hardware version check */ - space.install_read_handler(0x140000, 0x140001, read16_delegate(FUNC(micro3d_state::botss_140000_r),this)); - space.install_read_handler(0x180000, 0x180001, read16_delegate(FUNC(micro3d_state::botss_180000_r),this)); + space.install_read_handler(0x140000, 0x140001, read16_delegate(*this, FUNC(micro3d_state::botss_140000_r))); + space.install_read_handler(0x180000, 0x180001, read16_delegate(*this, FUNC(micro3d_state::botss_180000_r))); init_micro3d(); } diff --git a/src/mame/machine/midtunit.cpp b/src/mame/machine/midtunit.cpp index 5572fa5e7d7..d30338f6308 100644 --- a/src/mame/machine/midtunit.cpp +++ b/src/mame/machine/midtunit.cpp @@ -379,7 +379,7 @@ void midtunit_state::init_mktunit() init_tunit_generic(SOUND_ADPCM); /* protection */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b00000, 0x1b6ffff, read16_delegate(FUNC(midtunit_state::mk_prot_r),this), write16_delegate(FUNC(midtunit_state::mk_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b00000, 0x1b6ffff, read16_delegate(*this, FUNC(midtunit_state::mk_prot_r)), write16_delegate(*this, FUNC(midtunit_state::mk_prot_w))); /* sound chip protection (hidden RAM) */ m_adpcm_sound->get_cpu()->space(AS_PROGRAM).install_ram(0xfb9c, 0xfbc6); @@ -388,7 +388,7 @@ void midtunit_state::init_mktunit() void midtunit_state::init_mkturbo() { /* protection */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfffff400, 0xfffff40f, read16_delegate(FUNC(midtunit_state::mkturbo_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfffff400, 0xfffff40f, read16_delegate(*this, FUNC(midtunit_state::mkturbo_prot_r))); init_mktunit(); } @@ -402,13 +402,13 @@ void midtunit_state::init_nbajam_common(int te_protection) if (!te_protection) { m_nbajam_prot_table = nbajam_prot_values; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b14020, 0x1b2503f, read16_delegate(FUNC(midtunit_state::nbajam_prot_r),this), write16_delegate(FUNC(midtunit_state::nbajam_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b14020, 0x1b2503f, read16_delegate(*this, FUNC(midtunit_state::nbajam_prot_r)), write16_delegate(*this, FUNC(midtunit_state::nbajam_prot_w))); } else { m_nbajam_prot_table = nbajamte_prot_values; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b15f40, 0x1b37f5f, read16_delegate(FUNC(midtunit_state::nbajam_prot_r),this), write16_delegate(FUNC(midtunit_state::nbajam_prot_w),this)); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b95f40, 0x1bb7f5f, read16_delegate(FUNC(midtunit_state::nbajam_prot_r),this), write16_delegate(FUNC(midtunit_state::nbajam_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b15f40, 0x1b37f5f, read16_delegate(*this, FUNC(midtunit_state::nbajam_prot_r)), write16_delegate(*this, FUNC(midtunit_state::nbajam_prot_w))); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b95f40, 0x1bb7f5f, read16_delegate(*this, FUNC(midtunit_state::nbajam_prot_r)), write16_delegate(*this, FUNC(midtunit_state::nbajam_prot_w))); } /* sound chip protection (hidden RAM) */ @@ -437,7 +437,7 @@ void midtunit_state::init_jdreddp() m_maincpu->space(AS_PROGRAM).nop_write(0x01d81060, 0x01d8107f); /* protection */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b00000, 0x1bfffff, read16_delegate(FUNC(midtunit_state::jdredd_prot_r),this), write16_delegate(FUNC(midtunit_state::jdredd_prot_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x1b00000, 0x1bfffff, read16_delegate(*this, FUNC(midtunit_state::jdredd_prot_r)), write16_delegate(*this, FUNC(midtunit_state::jdredd_prot_w))); /* sound chip protection (hidden RAM) */ m_adpcm_sound->get_cpu()->space(AS_PROGRAM).install_read_bank(0xfbcf, 0xfbf9, "bank7"); @@ -462,13 +462,13 @@ void midtunit_state::init_mk2() m_video->set_gfx_rom_large(true); /* protection */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x00f20c60, 0x00f20c7f, write16_delegate(FUNC(midtunit_state::mk2_prot_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x00f42820, 0x00f4283f, write16_delegate(FUNC(midtunit_state::mk2_prot_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a190e0, 0x01a190ff, read16_delegate(FUNC(midtunit_state::mk2_prot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a191c0, 0x01a191df, read16_delegate(FUNC(midtunit_state::mk2_prot_shift_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a3d0c0, 0x01a3d0ff, read16_delegate(FUNC(midtunit_state::mk2_prot_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01d9d1e0, 0x01d9d1ff, read16_delegate(FUNC(midtunit_state::mk2_prot_const_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01def920, 0x01def93f, read16_delegate(FUNC(midtunit_state::mk2_prot_const_r),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x00f20c60, 0x00f20c7f, write16_delegate(*this, FUNC(midtunit_state::mk2_prot_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x00f42820, 0x00f4283f, write16_delegate(*this, FUNC(midtunit_state::mk2_prot_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a190e0, 0x01a190ff, read16_delegate(*this, FUNC(midtunit_state::mk2_prot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a191c0, 0x01a191df, read16_delegate(*this, FUNC(midtunit_state::mk2_prot_shift_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01a3d0c0, 0x01a3d0ff, read16_delegate(*this, FUNC(midtunit_state::mk2_prot_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01d9d1e0, 0x01d9d1ff, read16_delegate(*this, FUNC(midtunit_state::mk2_prot_const_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01def920, 0x01def93f, read16_delegate(*this, FUNC(midtunit_state::mk2_prot_const_r))); } diff --git a/src/mame/machine/midwayic.cpp b/src/mame/machine/midwayic.cpp index 02b727b7acb..560e6a4b838 100644 --- a/src/mame/machine/midwayic.cpp +++ b/src/mame/machine/midwayic.cpp @@ -756,11 +756,13 @@ void midway_ioasic_device::device_start() /* configure the fifo */ if (m_has_dcs) { - m_dcs->set_fifo_callbacks(read16_delegate(FUNC(midway_ioasic_device::fifo_r),this), - read16_delegate(FUNC(midway_ioasic_device::fifo_status_r),this), - write_line_delegate(FUNC(midway_ioasic_device::fifo_reset_w),this)); - m_dcs->set_io_callbacks(write_line_delegate(FUNC(midway_ioasic_device::ioasic_output_full),this), - write_line_delegate(FUNC(midway_ioasic_device::ioasic_input_empty),this)); + m_dcs->set_fifo_callbacks( + read16_delegate(*this, FUNC(midway_ioasic_device::fifo_r)), + read16_delegate(*this, FUNC(midway_ioasic_device::fifo_status_r)), + write_line_delegate(*this, FUNC(midway_ioasic_device::fifo_reset_w))); + m_dcs->set_io_callbacks( + write_line_delegate(*this, FUNC(midway_ioasic_device::ioasic_output_full)), + write_line_delegate(*this, FUNC(midway_ioasic_device::ioasic_input_empty))); } fifo_reset_w(1); diff --git a/src/mame/machine/midwunit.cpp b/src/mame/machine/midwunit.cpp index cacd27d68a9..da656020f03 100644 --- a/src/mame/machine/midwunit.cpp +++ b/src/mame/machine/midwunit.cpp @@ -209,14 +209,14 @@ void midwunit_state::init_mk3r10() void midwunit_state::init_umk3() { init_mk3_common(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0106a060, 0x0106a09f, write16_delegate(FUNC(midwunit_state::umk3_palette_hack_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0106a060, 0x0106a09f, write16_delegate(*this, FUNC(midwunit_state::umk3_palette_hack_w))); m_umk3_palette = m_mainram + (0x6a060>>4); } void midwunit_state::init_umk3r11() { init_mk3_common(); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0106a060, 0x0106a09f,write16_delegate(FUNC(midwunit_state::umk3_palette_hack_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x0106a060, 0x0106a09f, write16_delegate(*this, FUNC(midwunit_state::umk3_palette_hack_w))); m_umk3_palette = m_mainram + (0x6a060>>4); } @@ -291,7 +291,7 @@ WRITE16_MEMBER(midwunit_state::wwfmania_io_0_w) void midwunit_state::init_wwfmania() { /* enable I/O shuffling */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x01800000, 0x0180000f, write16_delegate(FUNC(midwunit_state::wwfmania_io_0_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x01800000, 0x0180000f, write16_delegate(*this, FUNC(midwunit_state::wwfmania_io_0_w))); /* serial prefixes 430, 528 */ //midway_serial_pic_init(machine(), 528); diff --git a/src/mame/machine/midxunit.cpp b/src/mame/machine/midxunit.cpp index 9ac0370eafa..9834cfc507a 100644 --- a/src/mame/machine/midxunit.cpp +++ b/src/mame/machine/midxunit.cpp @@ -267,7 +267,7 @@ void midxunit_state::machine_reset() for (int i = 0; i < 16; i++) m_ioshuffle[i] = i % 8; - m_dcs->set_io_callbacks(write_line_delegate(FUNC(midxunit_state::midxunit_dcs_output_full),this), write_line_delegate()); + m_dcs->set_io_callbacks(write_line_delegate(*this, FUNC(midxunit_state::midxunit_dcs_output_full)), write_line_delegate(*this)); } diff --git a/src/mame/machine/midyunit.cpp b/src/mame/machine/midyunit.cpp index c40aae938d3..68c199100df 100644 --- a/src/mame/machine/midyunit.cpp +++ b/src/mame/machine/midyunit.cpp @@ -286,7 +286,7 @@ void midyunit_state::init_generic(int bpp, int sound, int prot_start, int prot_e switch (sound) { case SOUND_CVSD_SMALL: - m_cvsd_sound->get_cpu()->space(AS_PROGRAM).install_write_handler(prot_start, prot_end, write8_delegate(FUNC(midyunit_state::cvsd_protection_w), this)); + m_cvsd_sound->get_cpu()->space(AS_PROGRAM).install_write_handler(prot_start, prot_end, write8_delegate(*this, FUNC(midyunit_state::cvsd_protection_w))); m_cvsd_protection_base = memregion("cvsd:cpu")->base() + 0x10000 + (prot_start - 0x8000); break; @@ -467,7 +467,7 @@ READ16_MEMBER(midyunit_state::mkturbo_prot_r) void midyunit_state::init_mkyturbo() { /* protection */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0xfffff400, 0xfffff40f, read16_delegate(FUNC(midyunit_state::mkturbo_prot_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xfffff400, 0xfffff40f, read16_delegate(*this, FUNC(midyunit_state::mkturbo_prot_r))); init_mkyunit(); } @@ -476,31 +476,31 @@ void midyunit_state::init_mkyturbo() void midyunit_state::term2_init_common(write16_delegate hack_w) { - /* protection */ - static const struct protection_data term2_protection_data = + // protection + static constexpr struct protection_data term2_protection_data = { { 0x0f00, 0x0f00, 0x0f00 }, { 0x4000, 0xf000, 0xa000 } }; m_prot_data = &term2_protection_data; - /* common init */ + // common init init_generic(6, SOUND_ADPCM, 0xfa8d, 0xfa9c); - /* special inputs */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x01c00000, 0x01c0005f, read16_delegate(FUNC(midyunit_state::term2_input_r), this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x01e00000, 0x01e0001f, write16_delegate(FUNC(midyunit_state::term2_sound_w), this)); + // special inputs */ + m_maincpu->space(AS_PROGRAM).install_read_handler(0x01c00000, 0x01c0005f, read16_delegate(*this, FUNC(midyunit_state::term2_input_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x01e00000, 0x01e0001f, write16_delegate(*this, FUNC(midyunit_state::term2_sound_w))); - /* HACK: this prevents the freeze on the movies */ - /* until we figure what's causing it, this is better than nothing */ + // HACK: this prevents the freeze on the movies + // until we figure what's causing it, this is better than nothing m_maincpu->space(AS_PROGRAM).install_write_handler(0x010aa0e0, 0x010aa0ff, hack_w); m_t2_hack_mem = m_mainram + (0xaa0e0>>4); } -void midyunit_state::init_term2() { term2_init_common(write16_delegate(FUNC(midyunit_state::term2_hack_w),this)); } -void midyunit_state::init_term2la3() { term2_init_common(write16_delegate(FUNC(midyunit_state::term2la3_hack_w),this)); } -void midyunit_state::init_term2la2() { term2_init_common(write16_delegate(FUNC(midyunit_state::term2la2_hack_w),this)); } -void midyunit_state::init_term2la1() { term2_init_common(write16_delegate(FUNC(midyunit_state::term2la1_hack_w),this)); } +void midyunit_state::init_term2() { term2_init_common(write16_delegate(*this, FUNC(midyunit_state::term2_hack_w))); } +void midyunit_state::init_term2la3() { term2_init_common(write16_delegate(*this, FUNC(midyunit_state::term2la3_hack_w))); } +void midyunit_state::init_term2la2() { term2_init_common(write16_delegate(*this, FUNC(midyunit_state::term2la2_hack_w))); } +void midyunit_state::init_term2la1() { term2_init_common(write16_delegate(*this, FUNC(midyunit_state::term2la1_hack_w))); } diff --git a/src/mame/machine/model1io2.cpp b/src/mame/machine/model1io2.cpp index 1b581fa5b14..78a307ea9ab 100644 --- a/src/mame/machine/model1io2.cpp +++ b/src/mame/machine/model1io2.cpp @@ -194,14 +194,14 @@ void model1io2_device::device_add_mconfig(machine_config &config) screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(6*20+1, 19); screen.set_visarea(0, 6*20, 0, 19-1); - screen.set_screen_update("lcd", FUNC(hd44780_device::screen_update)); + screen.set_screen_update(m_lcd, FUNC(hd44780_device::screen_update)); screen.set_palette("palette"); PALETTE(config, "palette", FUNC(model1io2_device::lcd_palette), 3); HD44780(config, m_lcd, 0); m_lcd->set_lcd_size(2, 20); - m_lcd->set_pixel_update_cb(FUNC(model1io2_device::lcd_pixel_update), this); + m_lcd->set_pixel_update_cb(FUNC(model1io2_device::lcd_pixel_update)); } diff --git a/src/mame/machine/mpu4.cpp b/src/mame/machine/mpu4.cpp index 540951a7193..25ecc5d8c4e 100644 --- a/src/mame/machine/mpu4.cpp +++ b/src/mame/machine/mpu4.cpp @@ -2127,22 +2127,22 @@ READ8_MEMBER(mpu4_state::mpu4_ym2413_r) void mpu4_state::mpu4_install_mod4yam_space(address_space &space) { - space.install_read_handler(0x0880, 0x0882, read8_delegate(FUNC(mpu4_state::mpu4_ym2413_r),this)); - space.install_write_handler(0x0880, 0x0881, write8_delegate(FUNC(mpu4_state::mpu4_ym2413_w),this)); + space.install_read_handler(0x0880, 0x0882, read8_delegate(*this, FUNC(mpu4_state::mpu4_ym2413_r))); + space.install_write_handler(0x0880, 0x0881, write8_delegate(*this, FUNC(mpu4_state::mpu4_ym2413_w))); } void mpu4_state::mpu4_install_mod4oki_space(address_space &space) { - pia6821_device *pia_ic4ss = subdevice<pia6821_device>("pia_ic4ss"); + pia6821_device *const pia_ic4ss = subdevice<pia6821_device>("pia_ic4ss"); - space.install_readwrite_handler(0x0880, 0x0883, read8sm_delegate(FUNC(pia6821_device::read), pia_ic4ss), write8sm_delegate(FUNC(pia6821_device::write), pia_ic4ss)); - space.install_read_handler(0x08c0, 0x08c7, read8sm_delegate(FUNC(ptm6840_device::read), (ptm6840_device*)m_ptm_ic3ss)); - space.install_write_handler(0x08c0, 0x08c7, write8_delegate(FUNC(mpu4_state::ic3ss_w),this)); + space.install_readwrite_handler(0x0880, 0x0883, read8sm_delegate(*pia_ic4ss, FUNC(pia6821_device::read)), write8sm_delegate(*pia_ic4ss, FUNC(pia6821_device::write))); + space.install_read_handler(0x08c0, 0x08c7, read8sm_delegate(*m_ptm_ic3ss, FUNC(ptm6840_device::read))); + space.install_write_handler(0x08c0, 0x08c7, write8_delegate(*this, FUNC(mpu4_state::ic3ss_w))); } void mpu4_state::mpu4_install_mod4bwb_space(address_space &space) { - space.install_readwrite_handler(0x0810, 0x0810, read8_delegate(FUNC(mpu4_state::bwb_characteriser_r),this),write8_delegate(FUNC(mpu4_state::bwb_characteriser_w),this)); + space.install_readwrite_handler(0x0810, 0x0810, read8_delegate(*this, FUNC(mpu4_state::bwb_characteriser_r)), write8_delegate(*this, FUNC(mpu4_state::bwb_characteriser_w))); mpu4_install_mod4oki_space(space); } @@ -2518,8 +2518,8 @@ void mpu4_state::init_m4default_big() else { m_bwb_bank = 1; - space.install_write_handler(0x0858, 0x0858, write8_delegate(FUNC(mpu4_state::bankswitch_w),this)); - space.install_write_handler(0x0878, 0x0878, write8_delegate(FUNC(mpu4_state::bankset_w),this)); + space.install_write_handler(0x0858, 0x0858, write8_delegate(*this, FUNC(mpu4_state::bankswitch_w))); + space.install_write_handler(0x0878, 0x0878, write8_delegate(*this, FUNC(mpu4_state::bankset_w))); uint8_t *rom = memregion("maincpu")->base(); m_numbanks = size / 0x10000; @@ -2552,8 +2552,8 @@ void mpu4_state::init_m_frkstn() { address_space &space = m_maincpu->space(AS_PROGRAM); init_m4default_big(); - space.install_read_handler(0x0880, 0x0880, read8_delegate(FUNC(mpu4_state::crystal_sound_r),this)); - space.install_write_handler(0x0881, 0x0881, write8_delegate(FUNC(mpu4_state::crystal_sound_w),this)); + space.install_read_handler(0x0880, 0x0880, read8_delegate(*this, FUNC(mpu4_state::crystal_sound_r))); + space.install_write_handler(0x0881, 0x0881, write8_delegate(*this, FUNC(mpu4_state::crystal_sound_w))); } // thanks to Project Amber for descramble information diff --git a/src/mame/machine/msx_systemflags.cpp b/src/mame/machine/msx_systemflags.cpp index d76b82447eb..29dd1cc3c87 100644 --- a/src/mame/machine/msx_systemflags.cpp +++ b/src/mame/machine/msx_systemflags.cpp @@ -24,8 +24,8 @@ void msx_systemflags_device::device_start() // Install IO read/write handlers address_space &space = m_maincpu->space(AS_IO); - space.install_write_handler(0xf4, 0xf4, write8_delegate(FUNC(msx_systemflags_device::write), this)); - space.install_read_handler(0xf4, 0xf4, read8_delegate(FUNC(msx_systemflags_device::read), this)); + space.install_write_handler(0xf4, 0xf4, write8_delegate(*this, FUNC(msx_systemflags_device::write))); + space.install_read_handler(0xf4, 0xf4, read8_delegate(*this, FUNC(msx_systemflags_device::read))); } diff --git a/src/mame/machine/mtx.cpp b/src/mame/machine/mtx.cpp index f4b96943f23..93457dc85f2 100644 --- a/src/mame/machine/mtx.cpp +++ b/src/mame/machine/mtx.cpp @@ -130,7 +130,7 @@ void mtx_state::bankswitch(uint8_t data) { /* rom based memory map */ program.install_rom(0x0000, 0x1fff, memregion("user1")->base()); - program.install_write_handler(0x0000, 0x1fff, write8_delegate(FUNC(mtx_state::mtx_subpage_w), this)); + program.install_write_handler(0x0000, 0x1fff, write8_delegate(*this, FUNC(mtx_state::mtx_subpage_w))); program.install_read_bank(0x2000, 0x3fff, "rommap_bank1"); program.unmap_write(0x2000, 0x3fff); program.install_readwrite_bank(0x4000, 0x7fff, "rommap_bank2"); diff --git a/src/mame/machine/namcos1.cpp b/src/mame/machine/namcos1.cpp index 02dc8fedb50..67d79665f30 100644 --- a/src/mame/machine/namcos1.cpp +++ b/src/mame/machine/namcos1.cpp @@ -610,7 +610,7 @@ void namcos1_state::driver_init() } // kludge! see notes - m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8smo_delegate(FUNC(namcos1_state::mcu_patch_w), this)); + m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8smo_delegate(*this, FUNC(namcos1_state::mcu_patch_w))); // these are overridden as needed in the specific DRIVER_INIT_MEMBERs m_key_id = 0; @@ -625,16 +625,16 @@ void namcos1_state::driver_init() void namcos1_state::key_type_1_init(int key_id) { m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, - read8sm_delegate(FUNC(namcos1_state::key_type1_r),this), - write8sm_delegate(FUNC(namcos1_state::key_type1_w),this)); + read8sm_delegate(*this, FUNC(namcos1_state::key_type1_r)), + write8sm_delegate(*this, FUNC(namcos1_state::key_type1_w))); m_key_id = key_id; } void namcos1_state::key_type_2_init(int key_id) { m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, - read8sm_delegate(FUNC(namcos1_state::key_type2_r),this), - write8sm_delegate(FUNC(namcos1_state::key_type2_w),this)); + read8sm_delegate(*this, FUNC(namcos1_state::key_type2_r)), + write8sm_delegate(*this, FUNC(namcos1_state::key_type2_w))); m_key_id = key_id; save_item(NAME(m_key_quotient)); save_item(NAME(m_key_reminder)); @@ -644,8 +644,8 @@ void namcos1_state::key_type_2_init(int key_id) void namcos1_state::key_type_3_init(int key_id, int reg, int rng, int swap4_arg, int swap4, int bottom4, int top4) { m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, - read8sm_delegate(FUNC(namcos1_state::key_type3_r),this), - write8sm_delegate(FUNC(namcos1_state::key_type3_w),this)); + read8sm_delegate(*this, FUNC(namcos1_state::key_type3_r)), + write8sm_delegate(*this, FUNC(namcos1_state::key_type3_w))); m_key_id = key_id; m_key_reg = reg; m_key_rng = rng; @@ -798,7 +798,7 @@ void namcos1_state::init_tankfrc4() m_stored_input[0] = 0; m_stored_input[1] = 0; - m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); + m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(*this, FUNC(namcos1_state::faceoff_inputs_r))); save_item(NAME(m_input_count)); save_item(NAME(m_stored_input)); } @@ -878,7 +878,7 @@ void namcos1_state::init_quester() { m_strobe = 0; driver_init(); - m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::quester_paddle_r), this)); + m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(*this, FUNC(namcos1_state::quester_paddle_r))); save_item(NAME(m_strobe)); } @@ -964,7 +964,7 @@ void namcos1_state::init_berabohm() m_strobe = 0; m_strobe_count = 0; driver_init(); - m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::berabohm_buttons_r), this)); + m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(*this, FUNC(namcos1_state::berabohm_buttons_r))); save_item(NAME(m_input_count)); save_item(NAME(m_strobe)); save_item(NAME(m_strobe_count)); @@ -1043,7 +1043,7 @@ void namcos1_state::init_faceoff() m_stored_input[1] = 0; driver_init(); - m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); + m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8sm_delegate(*this, FUNC(namcos1_state::faceoff_inputs_r))); save_item(NAME(m_input_count)); save_item(NAME(m_stored_input)); } diff --git a/src/mame/machine/naomi.cpp b/src/mame/machine/naomi.cpp index 4d1f2ddfd6a..78a7f61ca21 100644 --- a/src/mame/machine/naomi.cpp +++ b/src/mame/machine/naomi.cpp @@ -210,8 +210,8 @@ void naomi_state::set_drc_options() void naomi_state::init_naomi() { - //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this); // rev e bios - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r), this)); // rev h bios + //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(*this, FUNC(naomi_state::naomi_biose_idle_skip_r)); // rev e bios + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(*this, FUNC(naomi_state::naomi_biosh_idle_skip_r))); // rev h bios set_drc_options(); create_pic_from_retdat(); @@ -219,7 +219,7 @@ void naomi_state::init_naomi() void naomi2_state::init_naomi2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi2_biose_idle_skip_r),this)); // rev e bios + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(*this, FUNC(naomi_state::naomi2_biose_idle_skip_r))); // rev e bios set_drc_options(); create_pic_from_retdat(); @@ -298,8 +298,8 @@ CUSTOM_INPUT_MEMBER(naomi_state::naomi_kb_r) void naomi_state::init_naomi_mp() { - //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this); // rev e bios - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios + //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(*this, FUNC(naomi_state::naomi_biose_idle_skip_r)); // rev e bios + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(*this, FUNC(naomi_state::naomi_biosh_idle_skip_r))); // rev h bios m_mp_mux = 0; set_drc_options(); @@ -308,8 +308,8 @@ void naomi_state::init_naomi_mp() void naomi_state::init_naomigd() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this)); // rev e bios - //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(*this, FUNC(naomi_state::naomi_biose_idle_skip_r))); // rev e bios + //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(*this, FUNC(naomi_state::naomi_biosh_idle_skip_r))); // rev h bios set_drc_options(); create_pic_from_retdat(); @@ -317,8 +317,8 @@ void naomi_state::init_naomigd() void naomi_state::init_naomigd_mp() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(FUNC(naomi_state::naomi_biose_idle_skip_r),this)); // rev e bios - //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(FUNC(naomi_state::naomi_biosh_idle_skip_r),this)); // rev h bios + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2ad238, 0xc2ad23f, read64_delegate(*this, FUNC(naomi_state::naomi_biose_idle_skip_r))); // rev e bios + //m_maincpu->space(AS_PROGRAM).install_read_handler(0xc2b0600, 0xc2b0607, read64_delegate(*this, FUNC(naomi_state::naomi_biosh_idle_skip_r))); // rev h bios m_mp_mux = 0; set_drc_options(); @@ -336,7 +336,7 @@ READ64_MEMBER(naomi_state::naomigd_ggxxsla_idle_skip_r ) void naomi_state::init_ggxxsla() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc1aae18, 0xc1aae1f, read64_delegate(FUNC(naomi_state::naomigd_ggxxsla_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc1aae18, 0xc1aae1f, read64_delegate(*this, FUNC(naomi_state::naomigd_ggxxsla_idle_skip_r))); init_naomigd(); } @@ -351,7 +351,7 @@ READ64_MEMBER(naomi_state::naomigd_ggxx_idle_skip_r ) void naomi_state::init_ggxx() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc1837b8, 0xc1837bf, read64_delegate(FUNC(naomi_state::naomigd_ggxx_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc1837b8, 0xc1837bf, read64_delegate(*this, FUNC(naomi_state::naomigd_ggxx_idle_skip_r))); init_naomigd(); } @@ -367,7 +367,7 @@ READ64_MEMBER(naomi_state::naomigd_ggxxrl_idle_skip_r ) void naomi_state::init_ggxxrl() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc18d6c8, 0xc18d6cf, read64_delegate(FUNC(naomi_state::naomigd_ggxxrl_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc18d6c8, 0xc18d6cf, read64_delegate(*this, FUNC(naomi_state::naomigd_ggxxrl_idle_skip_r))); init_naomigd(); } @@ -382,7 +382,7 @@ READ64_MEMBER(naomi_state::naomigd_sfz3ugd_idle_skip_r ) void naomi_state::init_sfz3ugd() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xc5dc900, 0xc5dc907, read64_delegate(FUNC(naomi_state::naomigd_sfz3ugd_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xc5dc900, 0xc5dc907, read64_delegate(*this, FUNC(naomi_state::naomigd_sfz3ugd_idle_skip_r))); init_naomigd(); } @@ -400,7 +400,7 @@ READ64_MEMBER(naomi_state::hotd2_idle_skip_r ) void naomi_state::init_hotd2() { - m_maincpu->space(AS_PROGRAM).install_read_handler(0xca25fb8, 0xca25fbf, read64_delegate(FUNC(naomi_state::hotd2_idle_skip_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xca25fb8, 0xca25fbf, read64_delegate(*this, FUNC(naomi_state::hotd2_idle_skip_r))); set_drc_options(); } diff --git a/src/mame/machine/nes.cpp b/src/mame/machine/nes.cpp index d46c0ed286d..56db41cf829 100644 --- a/src/mame/machine/nes.cpp +++ b/src/mame/machine/nes.cpp @@ -55,21 +55,21 @@ void nes_state::machine_start() if (m_cartslot && m_cartslot->m_cart) { // Set up memory handlers - space.install_read_handler(0x4100, 0x5fff, read8sm_delegate(FUNC(nes_cart_slot_device::read_l), (nes_cart_slot_device *)m_cartslot)); - space.install_write_handler(0x4100, 0x5fff, write8sm_delegate(FUNC(nes_cart_slot_device::write_l), (nes_cart_slot_device *)m_cartslot)); - space.install_read_handler(0x6000, 0x7fff, read8sm_delegate(FUNC(nes_cart_slot_device::read_m), (nes_cart_slot_device *)m_cartslot)); - space.install_write_handler(0x6000, 0x7fff, write8sm_delegate(FUNC(nes_cart_slot_device::write_m), (nes_cart_slot_device *)m_cartslot)); + space.install_read_handler(0x4100, 0x5fff, read8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::read_l))); + space.install_write_handler(0x4100, 0x5fff, write8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::write_l))); + space.install_read_handler(0x6000, 0x7fff, read8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::read_m))); + space.install_write_handler(0x6000, 0x7fff, write8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::write_m))); space.install_read_bank(0x8000, 0x9fff, "prg0"); space.install_read_bank(0xa000, 0xbfff, "prg1"); space.install_read_bank(0xc000, 0xdfff, "prg2"); space.install_read_bank(0xe000, 0xffff, "prg3"); - space.install_write_handler(0x8000, 0xffff, write8sm_delegate(FUNC(nes_cart_slot_device::write_h), (nes_cart_slot_device *)m_cartslot)); + space.install_write_handler(0x8000, 0xffff, write8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::write_h))); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8sm_delegate(FUNC(device_nes_cart_interface::chr_r),m_cartslot->m_cart), write8sm_delegate(FUNC(device_nes_cart_interface::chr_w),m_cartslot->m_cart)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(FUNC(device_nes_cart_interface::nt_r),m_cartslot->m_cart), write8sm_delegate(FUNC(device_nes_cart_interface::nt_w),m_cartslot->m_cart)); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(device_nes_cart_interface::scanline_irq),m_cartslot->m_cart)); - m_ppu->set_hblank_callback(ppu2c0x_device::hblank_delegate(FUNC(device_nes_cart_interface::hblank_irq),m_cartslot->m_cart)); - m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(device_nes_cart_interface::ppu_latch),m_cartslot->m_cart)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8sm_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::chr_r)), write8sm_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::chr_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::nt_r)), write8sm_delegate(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::nt_w))); + m_ppu->set_scanline_callback(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::scanline_irq)); + m_ppu->set_hblank_callback(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::hblank_irq)); + m_ppu->set_latch(*m_cartslot->m_cart, FUNC(device_nes_cart_interface::ppu_latch)); // install additional handlers (read_h, read_ex, write_ex) if (m_cartslot->get_pcb_id() == STD_EXROM || m_cartslot->get_pcb_id() == STD_NROM368 || m_cartslot->get_pcb_id() == STD_DISKSYS @@ -82,20 +82,20 @@ void nes_state::machine_start() || m_cartslot->get_pcb_id() == BMC_70IN1 || m_cartslot->get_pcb_id() == BMC_800IN1) { logerror("read_h installed!\n"); - space.install_read_handler(0x8000, 0xffff, read8sm_delegate(FUNC(nes_cart_slot_device::read_h), (nes_cart_slot_device *)m_cartslot)); + space.install_read_handler(0x8000, 0xffff, read8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::read_h))); } if (m_cartslot->get_pcb_id() == BTL_SMB2JB || m_cartslot->get_pcb_id() == UNL_AC08 || m_cartslot->get_pcb_id() == UNL_SMB2J || m_cartslot->get_pcb_id() == BTL_09034A) { logerror("write_ex installed!\n"); - space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(FUNC(nes_cart_slot_device::write_ex), (nes_cart_slot_device *)m_cartslot)); + space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::write_ex))); } if (m_cartslot->get_pcb_id() == KAISER_KS7017 || m_cartslot->get_pcb_id() == UNL_603_5052 || m_cartslot->get_pcb_id() == STD_DISKSYS) { logerror("write_ex & read_ex installed!\n"); - space.install_read_handler(0x4020, 0x40ff, read8sm_delegate(FUNC(nes_cart_slot_device::read_ex), (nes_cart_slot_device *)m_cartslot)); - space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(FUNC(nes_cart_slot_device::write_ex), (nes_cart_slot_device *)m_cartslot)); + space.install_read_handler(0x4020, 0x40ff, read8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::read_ex))); + space.install_write_handler(0x4020, 0x40ff, write8sm_delegate(*m_cartslot, FUNC(nes_cart_slot_device::write_ex))); } m_cartslot->pcb_start(m_ciram.get()); @@ -186,7 +186,7 @@ void nes_state::init_famicom() { // setup alt input handlers for additional FC input devices address_space &space = m_maincpu->space(AS_PROGRAM); - space.install_read_handler(0x4016, 0x4016, read8_delegate(FUNC(nes_state::fc_in0_r), this)); - space.install_write_handler(0x4016, 0x4016, write8_delegate(FUNC(nes_state::fc_in0_w), this)); - space.install_read_handler(0x4017, 0x4017, read8_delegate(FUNC(nes_state::fc_in1_r), this)); + space.install_read_handler(0x4016, 0x4016, read8_delegate(*this, FUNC(nes_state::fc_in0_r))); + space.install_write_handler(0x4016, 0x4016, write8_delegate(*this, FUNC(nes_state::fc_in0_w))); + space.install_read_handler(0x4017, 0x4017, read8_delegate(*this, FUNC(nes_state::fc_in1_r))); } diff --git a/src/mame/machine/ondra.cpp b/src/mame/machine/ondra.cpp index 85bea88550e..da540a00c30 100644 --- a/src/mame/machine/ondra.cpp +++ b/src/mame/machine/ondra.cpp @@ -49,7 +49,7 @@ void ondra_state::ondra_update_banks() m_bank3->set_base(m_ram->pointer() + 0xe000); } else { space.unmap_write(0xe000, 0xffff); - space.install_read_handler (0xe000, 0xffff, read8_delegate(FUNC(ondra_state::ondra_keyboard_r),this)); + space.install_read_handler (0xe000, 0xffff, read8_delegate(*this, FUNC(ondra_state::ondra_keyboard_r))); } } diff --git a/src/mame/machine/orion.cpp b/src/mame/machine/orion.cpp index a61d6433cd0..b0ac5e4fa54 100644 --- a/src/mame/machine/orion.cpp +++ b/src/mame/machine/orion.cpp @@ -267,19 +267,19 @@ void orion_state::orionz80_switch_bank() if ((m_orionz80_dispatcher & 0x20) == 0) { - space.install_write_handler(0xf400, 0xf4ff, write8_delegate(FUNC(orion_state::orion128_system_w),this)); - space.install_write_handler(0xf500, 0xf5ff, write8_delegate(FUNC(orion_state::orion128_romdisk_w),this)); - space.install_write_handler(0xf700, 0xf7ff, write8_delegate(FUNC(orion_state::orionz80_floppy_rtc_w),this)); - space.install_read_handler(0xf400, 0xf4ff, read8_delegate(FUNC(orion_state::orion128_system_r),this)); - space.install_read_handler(0xf500, 0xf5ff, read8_delegate(FUNC(orion_state::orion128_romdisk_r),this)); - space.install_read_handler(0xf700, 0xf7ff, read8_delegate(FUNC(orion_state::orionz80_floppy_rtc_r),this)); - - space.install_write_handler(0xf800, 0xf8ff, write8_delegate(FUNC(orion_state::orion128_video_mode_w),this)); - space.install_write_handler(0xf900, 0xf9ff, write8_delegate(FUNC(orion_state::orionz80_memory_page_w),this)); - space.install_write_handler(0xfa00, 0xfaff, write8_delegate(FUNC(orion_state::orion128_video_page_w),this)); - space.install_write_handler(0xfb00, 0xfbff, write8_delegate(FUNC(orion_state::orionz80_dispatcher_w),this)); + space.install_write_handler(0xf400, 0xf4ff, write8_delegate(*this, FUNC(orion_state::orion128_system_w))); + space.install_write_handler(0xf500, 0xf5ff, write8_delegate(*this, FUNC(orion_state::orion128_romdisk_w))); + space.install_write_handler(0xf700, 0xf7ff, write8_delegate(*this, FUNC(orion_state::orionz80_floppy_rtc_w))); + space.install_read_handler(0xf400, 0xf4ff, read8_delegate(*this, FUNC(orion_state::orion128_system_r))); + space.install_read_handler(0xf500, 0xf5ff, read8_delegate(*this, FUNC(orion_state::orion128_romdisk_r))); + space.install_read_handler(0xf700, 0xf7ff, read8_delegate(*this, FUNC(orion_state::orionz80_floppy_rtc_r))); + + space.install_write_handler(0xf800, 0xf8ff, write8_delegate(*this, FUNC(orion_state::orion128_video_mode_w))); + space.install_write_handler(0xf900, 0xf9ff, write8_delegate(*this, FUNC(orion_state::orionz80_memory_page_w))); + space.install_write_handler(0xfa00, 0xfaff, write8_delegate(*this, FUNC(orion_state::orion128_video_page_w))); + space.install_write_handler(0xfb00, 0xfbff, write8_delegate(*this, FUNC(orion_state::orionz80_dispatcher_w))); space.unmap_write(0xfc00, 0xfeff); - space.install_write_handler(0xff00, 0xffff, write8_delegate(FUNC(orion_state::orionz80_sound_w),this)); + space.install_write_handler(0xff00, 0xffff, write8_delegate(*this, FUNC(orion_state::orionz80_sound_w))); m_bank3->set_base(m_ram->pointer() + 0xf000); m_bank5->set_base(m_region_maincpu->base() + 0xf800); @@ -314,19 +314,19 @@ void orion_z80_state::machine_reset() space.install_write_bank(0x4000, 0xefff, "bank2"); space.install_write_bank(0xf000, 0xf3ff, "bank3"); - space.install_write_handler(0xf400, 0xf4ff, write8_delegate(FUNC(orion_z80_state::orion128_system_w),this)); - space.install_write_handler(0xf500, 0xf5ff, write8_delegate(FUNC(orion_z80_state::orion128_romdisk_w),this)); - space.install_write_handler(0xf700, 0xf7ff, write8_delegate(FUNC(orion_z80_state::orionz80_floppy_rtc_w),this)); - space.install_read_handler(0xf400, 0xf4ff, read8_delegate(FUNC(orion_z80_state::orion128_system_r),this)); - space.install_read_handler(0xf500, 0xf5ff, read8_delegate(FUNC(orion_z80_state::orion128_romdisk_r),this)); - space.install_read_handler(0xf700, 0xf7ff, read8_delegate(FUNC(orion_z80_state::orionz80_floppy_rtc_r),this)); - - space.install_write_handler(0xf800, 0xf8ff, write8_delegate(FUNC(orion_z80_state::orion128_video_mode_w),this)); - space.install_write_handler(0xf900, 0xf9ff, write8_delegate(FUNC(orion_z80_state::orionz80_memory_page_w),this)); - space.install_write_handler(0xfa00, 0xfaff, write8_delegate(FUNC(orion_z80_state::orion128_video_page_w),this)); - space.install_write_handler(0xfb00, 0xfbff, write8_delegate(FUNC(orion_z80_state::orionz80_dispatcher_w),this)); + space.install_write_handler(0xf400, 0xf4ff, write8_delegate(*this, FUNC(orion_z80_state::orion128_system_w))); + space.install_write_handler(0xf500, 0xf5ff, write8_delegate(*this, FUNC(orion_z80_state::orion128_romdisk_w))); + space.install_write_handler(0xf700, 0xf7ff, write8_delegate(*this, FUNC(orion_z80_state::orionz80_floppy_rtc_w))); + space.install_read_handler(0xf400, 0xf4ff, read8_delegate(*this, FUNC(orion_z80_state::orion128_system_r))); + space.install_read_handler(0xf500, 0xf5ff, read8_delegate(*this, FUNC(orion_z80_state::orion128_romdisk_r))); + space.install_read_handler(0xf700, 0xf7ff, read8_delegate(*this, FUNC(orion_z80_state::orionz80_floppy_rtc_r))); + + space.install_write_handler(0xf800, 0xf8ff, write8_delegate(*this, FUNC(orion_z80_state::orion128_video_mode_w))); + space.install_write_handler(0xf900, 0xf9ff, write8_delegate(*this, FUNC(orion_z80_state::orionz80_memory_page_w))); + space.install_write_handler(0xfa00, 0xfaff, write8_delegate(*this, FUNC(orion_z80_state::orion128_video_page_w))); + space.install_write_handler(0xfb00, 0xfbff, write8_delegate(*this, FUNC(orion_z80_state::orionz80_dispatcher_w))); space.unmap_write(0xfc00, 0xfeff); - space.install_write_handler(0xff00, 0xffff, write8_delegate(FUNC(orion_z80_state::orionz80_sound_w),this)); + space.install_write_handler(0xff00, 0xffff, write8_delegate(*this, FUNC(orion_z80_state::orionz80_sound_w))); m_bank1->set_base(m_region_maincpu->base() + 0xf800); @@ -455,20 +455,20 @@ void orion_state::orionpro_bank_switch() { m_bank6->set_base(ram + 0x10000 * 0 + 0xf000); - space.install_write_handler(0xf400, 0xf4ff, write8_delegate(FUNC(orion_state::orion128_system_w),this)); - space.install_write_handler(0xf500, 0xf5ff, write8_delegate(FUNC(orion_state::orion128_romdisk_w),this)); + space.install_write_handler(0xf400, 0xf4ff, write8_delegate(*this, FUNC(orion_state::orion128_system_w))); + space.install_write_handler(0xf500, 0xf5ff, write8_delegate(*this, FUNC(orion_state::orion128_romdisk_w))); space.unmap_write(0xf600, 0xf6ff); - space.install_write_handler(0xf700, 0xf7ff, write8_delegate(FUNC(orion_state::orion128_floppy_w),this)); - space.install_read_handler(0xf400, 0xf4ff, read8_delegate(FUNC(orion_state::orion128_system_r),this)); - space.install_read_handler(0xf500, 0xf5ff, read8_delegate(FUNC(orion_state::orion128_romdisk_r),this)); + space.install_write_handler(0xf700, 0xf7ff, write8_delegate(*this, FUNC(orion_state::orion128_floppy_w))); + space.install_read_handler(0xf400, 0xf4ff, read8_delegate(*this, FUNC(orion_state::orion128_system_r))); + space.install_read_handler(0xf500, 0xf5ff, read8_delegate(*this, FUNC(orion_state::orion128_romdisk_r))); space.unmap_read(0xf600, 0xf6ff); - space.install_read_handler(0xf700, 0xf7ff, read8_delegate(FUNC(orion_state::orion128_floppy_r),this)); + space.install_read_handler(0xf700, 0xf7ff, read8_delegate(*this, FUNC(orion_state::orion128_floppy_r))); - space.install_write_handler(0xf800, 0xf8ff, write8_delegate(FUNC(orion_state::orion128_video_mode_w),this)); - space.install_write_handler(0xf900, 0xf9ff, write8_delegate(FUNC(orion_state::orionpro_memory_page_w),this)); - space.install_write_handler(0xfa00, 0xfaff, write8_delegate(FUNC(orion_state::orion128_video_page_w),this)); + space.install_write_handler(0xf800, 0xf8ff, write8_delegate(*this, FUNC(orion_state::orion128_video_mode_w))); + space.install_write_handler(0xf900, 0xf9ff, write8_delegate(*this, FUNC(orion_state::orionpro_memory_page_w))); + space.install_write_handler(0xfa00, 0xfaff, write8_delegate(*this, FUNC(orion_state::orion128_video_page_w))); space.unmap_write(0xfb00, 0xfeff); - space.install_write_handler(0xff00, 0xffff, write8_delegate(FUNC(orion_state::orionz80_sound_w),this)); + space.install_write_handler(0xff00, 0xffff, write8_delegate(*this, FUNC(orion_state::orionz80_sound_w))); m_bank8->set_base(ram + 0x10000 * 0 + 0xf800); diff --git a/src/mame/machine/osborne1.cpp b/src/mame/machine/osborne1.cpp index 0eeb5442c31..5fb5f7e669d 100644 --- a/src/mame/machine/osborne1.cpp +++ b/src/mame/machine/osborne1.cpp @@ -266,7 +266,7 @@ void osborne1_state::init_osborne1() m_video_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(osborne1_state::video_callback), this)); m_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(osborne1_state::get_tile_info), this), TILEMAP_SCAN_ROWS, + tilemap_get_info_delegate(*this, FUNC(osborne1_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 10, 128, 32); m_acia_rxc_txc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(osborne1_state::acia_rxc_txc_callback), this)); diff --git a/src/mame/machine/partner.cpp b/src/mame/machine/partner.cpp index 0b1397b4295..a00be2dd7be 100644 --- a/src/mame/machine/partner.cpp +++ b/src/mame/machine/partner.cpp @@ -100,8 +100,8 @@ void partner_state::partner_iomap_bank(uint8_t *rom) switch(m_win_mem_page) { case 2 : // FDD - space.install_write_handler(0xdc00, 0xddff, write8sm_delegate(FUNC(partner_state::partner_floppy_w),this)); - space.install_read_handler (0xdc00, 0xddff, read8sm_delegate(FUNC(partner_state::partner_floppy_r),this)); + space.install_write_handler(0xdc00, 0xddff, write8sm_delegate(*this, FUNC(partner_state::partner_floppy_w))); + space.install_read_handler (0xdc00, 0xddff, read8sm_delegate(*this, FUNC(partner_state::partner_floppy_r))); break; case 4 : // Timer diff --git a/src/mame/machine/pce.cpp b/src/mame/machine/pce.cpp index 5550ab5d2e7..aa9ba6112d5 100644 --- a/src/mame/machine/pce.cpp +++ b/src/mame/machine/pce.cpp @@ -120,13 +120,13 @@ MACHINE_RESET_MEMBER(pce_state,mess_pce) if (m_cartslot->get_type() == PCE_CDSYS3J) { m_sys3_card = 1; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x080000, 0x087fff, read8_delegate(FUNC(pce_state::pce_cd_acard_wram_r),this),write8_delegate(FUNC(pce_state::pce_cd_acard_wram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x080000, 0x087fff, read8_delegate(*this, FUNC(pce_state::pce_cd_acard_wram_r)), write8_delegate(*this, FUNC(pce_state::pce_cd_acard_wram_w))); } if (m_cartslot->get_type() == PCE_CDSYS3U) { m_sys3_card = 3; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x080000, 0x087fff, read8_delegate(FUNC(pce_state::pce_cd_acard_wram_r),this),write8_delegate(FUNC(pce_state::pce_cd_acard_wram_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x080000, 0x087fff, read8_delegate(*this, FUNC(pce_state::pce_cd_acard_wram_r)), write8_delegate(*this, FUNC(pce_state::pce_cd_acard_wram_w))); } } diff --git a/src/mame/machine/pecom.cpp b/src/mame/machine/pecom.cpp index da12c8d0932..b3cb049347a 100644 --- a/src/mame/machine/pecom.cpp +++ b/src/mame/machine/pecom.cpp @@ -73,10 +73,10 @@ WRITE8_MEMBER(pecom_state::pecom_bank_w) if (data==2) { - space2.install_read_handler (0xf000, 0xf7ff, read8_delegate(FUNC(pecom_state::pecom_cdp1869_charram_r),this)); - space2.install_write_handler(0xf000, 0xf7ff, write8_delegate(FUNC(pecom_state::pecom_cdp1869_charram_w),this)); - space2.install_read_handler (0xf800, 0xffff, read8_delegate(FUNC(pecom_state::pecom_cdp1869_pageram_r),this)); - space2.install_write_handler(0xf800, 0xffff, write8_delegate(FUNC(pecom_state::pecom_cdp1869_pageram_w),this)); + space2.install_read_handler (0xf000, 0xf7ff, read8_delegate(*this, FUNC(pecom_state::pecom_cdp1869_charram_r))); + space2.install_write_handler(0xf000, 0xf7ff, write8_delegate(*this, FUNC(pecom_state::pecom_cdp1869_charram_w))); + space2.install_read_handler (0xf800, 0xffff, read8_delegate(*this, FUNC(pecom_state::pecom_cdp1869_pageram_r))); + space2.install_write_handler(0xf800, 0xffff, write8_delegate(*this, FUNC(pecom_state::pecom_cdp1869_pageram_w))); } else { diff --git a/src/mame/machine/pgmprot_igs025_igs012.cpp b/src/mame/machine/pgmprot_igs025_igs012.cpp index 6a981f00338..17a883c4349 100644 --- a/src/mame/machine/pgmprot_igs025_igs012.cpp +++ b/src/mame/machine/pgmprot_igs025_igs012.cpp @@ -107,7 +107,7 @@ static const u8 drgw2_source_data[0x08][0xec] = void pgm_012_025_state::drgw2_common_init() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd80000, 0xd80003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::drgw2_d80000_protection_w), (igs025_device*)m_igs025)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd80000, 0xd80003, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::drgw2_d80000_protection_w))); m_igs025->m_kb_source_data = drgw2_source_data; diff --git a/src/mame/machine/pgmprot_igs025_igs022.cpp b/src/mame/machine/pgmprot_igs025_igs022.cpp index 8d0cb6076fc..4cabfead655 100644 --- a/src/mame/machine/pgmprot_igs025_igs022.cpp +++ b/src/mame/machine/pgmprot_igs025_igs022.cpp @@ -347,7 +347,7 @@ void pgm_022_025_state::init_killbld() pgm_killbld_decrypt(); // install and configure protection device(s) - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd40000, 0xd40003, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xd40000, 0xd40003, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w))); m_igs025->m_kb_source_data = killbld_source_data; } @@ -357,7 +357,7 @@ void pgm_022_025_state::init_drgw3() pgm_dw3_decrypt(); // install and configure protection device(s) - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::killbld_igs025_prot_w), (igs025_device*)m_igs025)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xda5610, 0xda5613, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_w))); m_igs025->m_kb_source_data = dw3_source_data; } @@ -377,7 +377,7 @@ void pgm_022_025_state::pgm_022_025(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &pgm_022_025_state::killbld_mem); IGS025(config, m_igs025, 0); - m_igs025->set_external_cb(FUNC(pgm_022_025_state::igs025_to_igs022_callback), this); + m_igs025->set_external_cb(FUNC(pgm_022_025_state::igs025_to_igs022_callback)); IGS022(config, m_igs022, 0); diff --git a/src/mame/machine/pgmprot_igs025_igs028.cpp b/src/mame/machine/pgmprot_igs025_igs028.cpp index ed122330a54..81c472d234d 100644 --- a/src/mame/machine/pgmprot_igs025_igs028.cpp +++ b/src/mame/machine/pgmprot_igs025_igs028.cpp @@ -166,7 +166,7 @@ void pgm_028_025_state::init_olds() { pgm_basic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xdcb400, 0xdcb403, read16_delegate(FUNC(igs025_device::killbld_igs025_prot_r), (igs025_device*)m_igs025), write16_delegate(FUNC(igs025_device::olds_w), (igs025_device*)m_igs025)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xdcb400, 0xdcb403, read16_delegate(*m_igs025, FUNC(igs025_device::killbld_igs025_prot_r)), write16_delegate(*m_igs025, FUNC(igs025_device::olds_w))); m_igs028->m_sharedprotram = m_sharedprotram; m_igs025->m_kb_source_data = m_olds_source_data; } @@ -192,7 +192,7 @@ void pgm_028_025_state::pgm_028_025_ol(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &pgm_028_025_state::olds_mem); IGS025(config, m_igs025, 0); - m_igs025->set_external_cb(FUNC(pgm_028_025_state::igs025_to_igs028_callback), this); + m_igs025->set_external_cb(FUNC(pgm_028_025_state::igs025_to_igs028_callback)); IGS028(config, m_igs028, 0); } diff --git a/src/mame/machine/pgmprot_igs027a_type1.cpp b/src/mame/machine/pgmprot_igs027a_type1.cpp index e93af94220a..e3aea0cd43e 100644 --- a/src/mame/machine/pgmprot_igs027a_type1.cpp +++ b/src/mame/machine/pgmprot_igs027a_type1.cpp @@ -280,7 +280,7 @@ void pgm_arm_type1_state::init_photoy2k() pgm_photoy2k_decrypt(machine()); arm7_type1_latch_init(); /* we only have a china internal ROM dumped for now.. allow region to be changed for debugging (to ensure all alt titles / regions can be seen) */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); } void pgm_arm_type1_state::init_kovsh() @@ -289,7 +289,7 @@ void pgm_arm_type1_state::init_kovsh() pgm_kovsh_decrypt(machine()); arm7_type1_latch_init(); /* we only have a china internal ROM dumped for now.. allow region to be changed for debugging (to ensure all alt titles / regions can be seen) */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); } /* Fake remapping of ASIC commands to the ones used by KOVSH due to the lack of the real ARM rom for this set */ @@ -357,8 +357,8 @@ void pgm_arm_type1_state::init_kovshp() pgm_basic_init(); pgm_kovshp_decrypt(machine()); arm7_type1_latch_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(*this, FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word))); } @@ -369,8 +369,8 @@ void pgm_arm_type1_state::init_kovshxas() pgm_basic_init(); // pgm_kovshp_decrypt(machine()); arm7_type1_latch_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(*this, FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word))); } void pgm_arm_type1_state::pgm_decode_kovlsqh2_tiles() @@ -461,8 +461,8 @@ void pgm_arm_type1_state::init_kovlsqh2() pgm_decode_kovlsqh2_samples(); pgm_basic_init(); arm7_type1_latch_init(); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x500000, 0x500005, write16sm_delegate(*this, FUNC(pgm_arm_type1_state::kovshp_asic27a_write_word))); } void pgm_arm_type1_state::init_kovqhsgs() @@ -483,7 +483,7 @@ void pgm_arm_type1_state::init_kovqhsgs() pgm_basic_init(); arm7_type1_latch_init(); /* we only have a china internal ROM dumped for now.. allow region to be changed for debugging (to ensure all alt titles / regions can be seen) */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(FUNC(pgm_arm_type1_state::kovsh_fake_region_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0008, 0x4f0009, read16smo_delegate(*this, FUNC(pgm_arm_type1_state::kovsh_fake_region_r))); } /* @@ -1789,7 +1789,7 @@ void pgm_arm_type1_state::init_ddp3() pgm_basic_init(false); pgm_py2k2_decrypt(machine()); // yes, it's the same as photo y2k2 arm_sim_handler = &pgm_arm_type1_state::command_handler_ddp3; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); } void pgm_arm_type1_state::init_ket() @@ -1797,7 +1797,7 @@ void pgm_arm_type1_state::init_ket() pgm_basic_init(false); pgm_ket_decrypt(machine()); arm_sim_handler = &pgm_arm_type1_state::command_handler_ddp3; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x400000, 0x400005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x400000, 0x400005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); } void pgm_arm_type1_state::init_espgal() @@ -1805,7 +1805,7 @@ void pgm_arm_type1_state::init_espgal() pgm_basic_init(false); pgm_espgal_decrypt(machine()); arm_sim_handler = &pgm_arm_type1_state::command_handler_ddp3; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x400000, 0x400005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x400000, 0x400005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); } @@ -2090,8 +2090,8 @@ void pgm_arm_type1_state::init_puzzli2() pgm_puzzli2_decrypt(machine()); arm_sim_handler = &pgm_arm_type1_state::command_handler_puzzli2; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); m_irq4_disabled = 1; // // doesn't like this irq?? - seems to be RTC related hackcount = 0; @@ -2219,8 +2219,8 @@ void pgm_arm_type1_state::init_py2k2() pgm_basic_init(); pgm_py2k2_decrypt(machine()); arm_sim_handler = &pgm_arm_type1_state::command_handler_py2k2; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); } void pgm_arm_type1_state::init_pgm3in1() @@ -2228,8 +2228,8 @@ void pgm_arm_type1_state::init_pgm3in1() pgm_basic_init(); pgm_decrypt_pgm3in1(machine()); arm_sim_handler = &pgm_arm_type1_state::command_handler_py2k2; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005,read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005,read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); m_irq4_disabled = 1; // // doesn't like this irq?? } @@ -2248,8 +2248,8 @@ void pgm_arm_type1_state::init_pstar() memset(m_slots, 0, 16 * sizeof(u32)); arm_sim_handler = &pgm_arm_type1_state::command_handler_pstars; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::pstars_arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::pstars_arm7_type1_sim_protram_r))); save_item(NAME(m_pstar_e7_value)); save_item(NAME(m_pstar_b1_value)); @@ -2267,8 +2267,8 @@ void pgm_arm_type1_state::init_kov() m_kov_cb_value = 0; m_kov_fe_value = 0; arm_sim_handler = &pgm_arm_type1_state::command_handler_kov; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); } void pgm_arm_type1_state::init_kovboot() @@ -2281,8 +2281,8 @@ void pgm_arm_type1_state::init_kovboot() m_kov_cb_value = 0; m_kov_fe_value = 0; arm_sim_handler = &pgm_arm_type1_state::command_handler_kov; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); } @@ -2294,8 +2294,8 @@ void pgm_arm_type1_state::init_oldsplus() memset(m_extra_ram, 0, 0x100 * sizeof(u16)); memset(m_slots, 0, 0x100 * sizeof(u32)); arm_sim_handler = &pgm_arm_type1_state::command_handler_oldsplus; - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_r),this), write16_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_w),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x500000, 0x500005, read16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_r)), write16_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_w))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x4f0000, 0x4f003f, read16sm_delegate(*this, FUNC(pgm_arm_type1_state::arm7_type1_sim_protram_r))); save_item(NAME(m_extra_ram)); } diff --git a/src/mame/machine/pgmprot_igs027a_type2.cpp b/src/mame/machine/pgmprot_igs027a_type2.cpp index 244e7b61b18..3ef761f2de6 100644 --- a/src/mame/machine/pgmprot_igs027a_type2.cpp +++ b/src/mame/machine/pgmprot_igs027a_type2.cpp @@ -180,7 +180,7 @@ void pgm_arm_type2_state::init_kov2() kov2_latch_init(); // we only have a HK internal ROM dumped for now, allow us to override that for debugging purposes. - m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(FUNC(pgm_arm_type2_state::kov2_arm_region_w),this)); + m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(*this, FUNC(pgm_arm_type2_state::kov2_arm_region_w))); } @@ -194,7 +194,7 @@ void pgm_arm_type2_state::init_kov2p() kov2_latch_init(); // we only have a China internal ROM dumped for now, allow us to override that for debugging purposes. - m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(FUNC(pgm_arm_type2_state::kov2p_arm_region_w),this)); + m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(*this, FUNC(pgm_arm_type2_state::kov2p_arm_region_w))); } void pgm_arm_type2_state::martmast_arm_region_w(offs_t offset, u32 data, u32 mem_mask) @@ -213,7 +213,7 @@ void pgm_arm_type2_state::init_martmast() kov2_latch_init(); // we only have a USA / CHINA internal ROMs dumped for now, allow us to override that for debugging purposes. - m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(FUNC(pgm_arm_type2_state::martmast_arm_region_w),this)); + m_prot->space(AS_PROGRAM).install_write_handler(0x48000138, 0x4800013b, write32s_delegate(*this, FUNC(pgm_arm_type2_state::martmast_arm_region_w))); } @@ -256,8 +256,8 @@ void pgm_arm_type2_state::init_ddp2() pgm_ddp2_decrypt(machine()); kov2_latch_init(); - m_prot->space(AS_PROGRAM).install_read_handler(0x1800300c, 0x1800300f, read32_delegate(FUNC(pgm_arm_type2_state::ddp2_speedup_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80ee54, 0x80ee55, read16_delegate(FUNC(pgm_arm_type2_state::ddp2_main_speedup_r),this)); + m_prot->space(AS_PROGRAM).install_read_handler(0x1800300c, 0x1800300f, read32_delegate(*this, FUNC(pgm_arm_type2_state::ddp2_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80ee54, 0x80ee55, read16_delegate(*this, FUNC(pgm_arm_type2_state::ddp2_main_speedup_r))); } diff --git a/src/mame/machine/pgmprot_igs027a_type3.cpp b/src/mame/machine/pgmprot_igs027a_type3.cpp index fd513353011..dbc0868e6eb 100644 --- a/src/mame/machine/pgmprot_igs027a_type3.cpp +++ b/src/mame/machine/pgmprot_igs027a_type3.cpp @@ -530,7 +530,7 @@ void pgm_arm_type3_state::init_theglad() pgm_create_dummy_internal_arm_region_theglad(0); - m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::theglad_speedup_r),this)); + m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(*this, FUNC(pgm_arm_type3_state::theglad_speedup_r))); } @@ -664,9 +664,7 @@ void pgm_arm_type3_state::init_svg() svg_latch_init(); pgm_create_dummy_internal_arm_region_theglad(1); m_armrom = (u32 *)memregion("prot")->base(); - m_prot->space(AS_PROGRAM).install_read_handler(0xB90, 0xB93, read32_delegate(FUNC(pgm_arm_type3_state::svg_speedup_r),this)); - - + m_prot->space(AS_PROGRAM).install_read_handler(0xB90, 0xB93, read32_delegate(*this, FUNC(pgm_arm_type3_state::svg_speedup_r))); } void pgm_arm_type3_state::init_svgpcb() @@ -676,8 +674,7 @@ void pgm_arm_type3_state::init_svgpcb() svg_latch_init(); pgm_create_dummy_internal_arm_region_theglad(0); m_armrom = (u32 *)memregion("prot")->base(); - m_prot->space(AS_PROGRAM).install_read_handler(0x9e0, 0x9e3, read32_delegate(FUNC(pgm_arm_type3_state::svgpcb_speedup_r),this)); - + m_prot->space(AS_PROGRAM).install_read_handler(0x9e0, 0x9e3, read32_delegate(*this, FUNC(pgm_arm_type3_state::svgpcb_speedup_r))); } @@ -695,7 +692,7 @@ void pgm_arm_type3_state::init_killbldp() pgm_killbldp_decrypt(machine()); svg_latch_init(); - m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::killbldp_speedup_r),this)); + m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(*this, FUNC(pgm_arm_type3_state::killbldp_speedup_r))); // u16 *temp16 = (u16 *)memregion("prot")->base(); // int base = 0xfc; // startup table uploads @@ -738,8 +735,8 @@ void pgm_arm_type3_state::init_dmnfrnt() /* put some fake code for the ARM here ... */ pgm_create_dummy_internal_arm_region(0x4000); - m_prot->space(AS_PROGRAM).install_read_handler(0x18000444, 0x18000447, read32_delegate(FUNC(pgm_arm_type3_state::dmnfrnt_speedup_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x80a03c, 0x80a03d, read16_delegate(FUNC(pgm_arm_type3_state::dmnfrnt_main_speedup_r),this)); + m_prot->space(AS_PROGRAM).install_read_handler(0x18000444, 0x18000447, read32_delegate(*this, FUNC(pgm_arm_type3_state::dmnfrnt_speedup_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x80a03c, 0x80a03d, read16_delegate(*this, FUNC(pgm_arm_type3_state::dmnfrnt_main_speedup_r))); m_svg_ram_sel = 1; @@ -847,5 +844,5 @@ void pgm_arm_type3_state::init_happy6() svg_latch_init(); pgm_create_dummy_internal_arm_region_theglad(0); - m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(FUNC(pgm_arm_type3_state::happy6_speedup_r),this)); + m_prot->space(AS_PROGRAM).install_read_handler(0x1000000c, 0x1000000f, read32_delegate(*this, FUNC(pgm_arm_type3_state::happy6_speedup_r))); } diff --git a/src/mame/machine/pgmprot_orlegend.cpp b/src/mame/machine/pgmprot_orlegend.cpp index 73db400cbb9..7e4d436f056 100644 --- a/src/mame/machine/pgmprot_orlegend.cpp +++ b/src/mame/machine/pgmprot_orlegend.cpp @@ -166,7 +166,7 @@ void pgm_asic3_state::init_orlegend() { pgm_basic_init(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xC04000, 0xC0400f, read16_delegate(FUNC(pgm_asic3_state::pgm_asic3_r),this), write16_delegate(FUNC(pgm_asic3_state::pgm_asic3_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xC04000, 0xC0400f, read16_delegate(*this, FUNC(pgm_asic3_state::pgm_asic3_r)), write16_delegate(*this, FUNC(pgm_asic3_state::pgm_asic3_w))); m_asic3_reg = 0; m_asic3_latch[0] = 0; diff --git a/src/mame/machine/playch10.cpp b/src/mame/machine/playch10.cpp index d38a4fc87f1..3fbb5b89018 100644 --- a/src/mame/machine/playch10.cpp +++ b/src/mame/machine/playch10.cpp @@ -46,8 +46,8 @@ void playch10_state::machine_start() /* move to individual boards as documentation of actual boards allows */ m_nt_ram = std::make_unique<uint8_t[]>(0x1000); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(playch10_state::pc10_chr_r),this), write8_delegate(FUNC(playch10_state::pc10_chr_w),this)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(playch10_state::pc10_nt_r),this),write8_delegate(FUNC(playch10_state::pc10_nt_w),this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(*this, FUNC(playch10_state::pc10_chr_r)), write8_delegate(*this, FUNC(playch10_state::pc10_chr_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(playch10_state::pc10_nt_r)), write8_delegate(*this, FUNC(playch10_state::pc10_nt_w))); if (nullptr != m_vram) set_videoram_bank(0, 8, 0, 8); @@ -69,8 +69,8 @@ MACHINE_START_MEMBER(playch10_state,playch10_hboard) m_vram = std::make_unique<uint8_t[]>(0x2000); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(FUNC(playch10_state::pc10_chr_r),this), write8_delegate(FUNC(playch10_state::pc10_chr_w),this)); - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(playch10_state::pc10_nt_r),this), write8_delegate(FUNC(playch10_state::pc10_nt_w),this)); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0, 0x1fff, read8_delegate(*this, FUNC(playch10_state::pc10_chr_r)), write8_delegate(*this, FUNC(playch10_state::pc10_chr_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(playch10_state::pc10_nt_r)), write8_delegate(*this, FUNC(playch10_state::pc10_nt_w))); } /************************************* @@ -555,7 +555,7 @@ WRITE8_MEMBER(playch10_state::aboard_vrom_switch_w) void playch10_state::init_pcaboard() { /* switches vrom with writes to the $803e-$8041 area */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0x8fff, write8_delegate(FUNC(playch10_state::aboard_vrom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0x8fff, write8_delegate(*this, FUNC(playch10_state::aboard_vrom_switch_w))); /* common init */ init_playch10(); @@ -587,7 +587,7 @@ void playch10_state::init_pcbboard() memcpy(&prg[0x08000], &prg[0x28000], 0x8000); /* Roms are banked at $8000 to $bfff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::bboard_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::bboard_rom_switch_w))); /* common init */ init_playch10(); @@ -612,7 +612,7 @@ WRITE8_MEMBER(playch10_state::cboard_vrom_switch_w) void playch10_state::init_pccboard() { /* switches vrom with writes to $6000 */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x6000, 0x6000, write8_delegate(FUNC(playch10_state::cboard_vrom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x6000, 0x6000, write8_delegate(*this, FUNC(playch10_state::cboard_vrom_switch_w))); /* we have no vram, make sure switching games doesn't point to an old allocation */ m_vram = nullptr; @@ -635,7 +635,7 @@ void playch10_state::init_pcdboard() m_mmc1_rom_mask = 0x07; /* MMC mapper at writes to $8000-$ffff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::mmc1_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::mmc1_rom_switch_w))); /* common init */ @@ -746,10 +746,10 @@ void playch10_state::init_pceboard() memcpy(&prg[0x08000], &prg[0x28000], 0x8000); /* basically a mapper 9 on a nes */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::eboard_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::eboard_rom_switch_w))); /* ppu_latch callback */ - m_ppu->set_latch(ppu2c0x_device::latch_delegate(FUNC(playch10_state::mapper9_latch),this)); + m_ppu->set_latch(*this, FUNC(playch10_state::mapper9_latch)); /* nvram at $6000-$6fff */ m_cartcpu->space(AS_PROGRAM).install_ram(0x6000, 0x6fff); @@ -776,7 +776,7 @@ void playch10_state::init_pcfboard() m_mmc1_rom_mask = ((len - 0x10000) / 0x4000) - 1; /* MMC mapper at writes to $8000-$ffff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::mmc1_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::mmc1_rom_switch_w))); /* common init */ init_playch10(); @@ -960,7 +960,7 @@ void playch10_state::init_pcgboard() memcpy(&prg[0x0c000], &prg[0x4c000], 0x4000); /* MMC3 mapper at writes to $8000-$ffff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::gboard_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::gboard_rom_switch_w))); /* extra ram at $6000-$7fff */ m_cartcpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff); @@ -976,7 +976,7 @@ void playch10_state::init_pcgboard() /* common init */ init_playch10(); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); + m_ppu->set_scanline_callback(*this, FUNC(playch10_state::gboard_scanline_cb)); } void playch10_state::init_pcgboard_type2() @@ -1014,7 +1014,7 @@ void playch10_state::init_pciboard() memcpy(&prg[0x08000], &prg[0x10000], 0x8000); /* Roms are banked at $8000 to $bfff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::iboard_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::iboard_rom_switch_w))); /* common init */ init_playch10(); @@ -1081,7 +1081,7 @@ void playch10_state::init_pchboard() memcpy(&prg[0x0c000], &prg[0x4c000], 0x4000); /* Roms are banked at $8000 to $bfff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::hboard_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::hboard_rom_switch_w))); /* extra ram at $6000-$7fff */ m_cartcpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff); @@ -1096,7 +1096,7 @@ void playch10_state::init_pchboard() /* common init */ init_playch10(); - m_ppu->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(playch10_state::gboard_scanline_cb),this)); + m_ppu->set_scanline_callback(*this, FUNC(playch10_state::gboard_scanline_cb)); } /**********************************************************************************/ @@ -1116,7 +1116,7 @@ void playch10_state::init_pckboard() m_cartcpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff); /* Roms are banked at $8000 to $bfff */ - m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(playch10_state::mmc1_rom_switch_w),this)); + m_cartcpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(playch10_state::mmc1_rom_switch_w))); /* common init */ init_playch10(); diff --git a/src/mame/machine/pp01.cpp b/src/mame/machine/pp01.cpp index 665724e5a60..12975f45615 100644 --- a/src/mame/machine/pp01.cpp +++ b/src/mame/machine/pp01.cpp @@ -93,28 +93,27 @@ void pp01_state::set_memory(uint8_t block, uint8_t data) // This is RAM space.install_read_bank (startaddr, endaddr, bank); switch(data) { - case 0xe6 : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_r_1_w),this)); - break; - case 0xe7 : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_r_2_w),this)); - break; - case 0xea : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_g_1_w),this)); - break; - case 0xeb : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_g_2_w),this)); - break; - case 0xee : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_b_1_w),this)); - break; - case 0xef : - space.install_write_handler(startaddr, endaddr, write8_delegate(FUNC(pp01_state::video_b_2_w),this)); - break; - - default : - space.install_write_bank(startaddr, endaddr, bank); - break; + case 0xe6 : + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_r_1_w))); + break; + case 0xe7: + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_r_2_w))); + break; + case 0xea: + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_g_1_w))); + break; + case 0xeb: + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_g_2_w))); + break; + case 0xee: + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_b_1_w))); + break; + case 0xef: + space.install_write_handler(startaddr, endaddr, write8_delegate(*this, FUNC(pp01_state::video_b_2_w))); + break; + default: + space.install_write_bank(startaddr, endaddr, bank); + break; } membank(bank)->set_base(m_ram->pointer() + (data & 0x0F)* 0x1000); diff --git a/src/mame/machine/rm380z.cpp b/src/mame/machine/rm380z.cpp index 2a3aa0690ab..07376409f41 100644 --- a/src/mame/machine/rm380z.cpp +++ b/src/mame/machine/rm380z.cpp @@ -305,7 +305,7 @@ void rm380z_state::config_memory_map() else { program.install_rom( 0x0000, 0x0FFF, rom ); - program.install_readwrite_handler(0x1BFC, 0x1BFF,read8_delegate(FUNC(rm380z_state::port_read_1b00), this),write8_delegate(FUNC(rm380z_state::port_write_1b00), this) ); + program.install_readwrite_handler(0x1BFC, 0x1BFF, read8_delegate(*this, FUNC(rm380z_state::port_read_1b00)), write8_delegate(*this, FUNC(rm380z_state::port_write_1b00))); program.install_rom( 0x1C00, 0x1DFF, rom + 0x1400 ); program.install_ram( 0x4000, 0xDFFF, m_ram_p ); } diff --git a/src/mame/machine/samcoupe.cpp b/src/mame/machine/samcoupe.cpp index ef5bead3f28..530fafe2ec9 100644 --- a/src/mame/machine/samcoupe.cpp +++ b/src/mame/machine/samcoupe.cpp @@ -323,7 +323,7 @@ void samcoupe_state::machine_reset() if (m_config->read() & 0x01) { /* install RTC */ - spaceio.install_readwrite_handler(0xef, 0xef, 0, 0, 0xff00, read8_delegate(FUNC(samcoupe_state::samcoupe_rtc_r),this), write8_delegate(FUNC(samcoupe_state::samcoupe_rtc_w),this)); + spaceio.install_readwrite_handler(0xef, 0xef, 0, 0, 0xff00, read8_delegate(*this, FUNC(samcoupe_state::samcoupe_rtc_r)), write8_delegate(*this, FUNC(samcoupe_state::samcoupe_rtc_w))); } else { diff --git a/src/mame/machine/scramble.cpp b/src/mame/machine/scramble.cpp index 0bf08f83f78..d36d8f7de67 100644 --- a/src/mame/machine/scramble.cpp +++ b/src/mame/machine/scramble.cpp @@ -129,13 +129,13 @@ void scramble_state::init_scramble_ppi() void scramble_state::init_scobra() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa803, 0xa803, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa803, 0xa803, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } #ifdef UNUSED_FUNCTION void scramble_state::init_atlantis() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x6803, 0x6803, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x6803, 0x6803, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } void scramble_state::init_scramble() @@ -146,14 +146,14 @@ void scramble_state::init_scramble() void scramble_state::init_stratgyx() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb000, 0xb000, write8_delegate(FUNC(scramble_state::scrambold_background_green_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb002, 0xb002, write8_delegate(FUNC(scramble_state::scrambold_background_blue_w),this)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb00a, 0xb00a, write8_delegate(FUNC(scramble_state::scrambold_background_red_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb000, 0xb000, write8_delegate(*this, FUNC(scramble_state::scrambold_background_green_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb002, 0xb002, write8_delegate(*this, FUNC(scramble_state::scrambold_background_blue_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb00a, 0xb00a, write8_delegate(*this, FUNC(scramble_state::scrambold_background_red_w))); } void scramble_state::init_tazmani2() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb002, 0xb002, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb002, 0xb002, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } void scramble_state::init_tazmaniet() @@ -182,8 +182,8 @@ void scramble_state::init_mariner() m_maincpu->space(AS_PROGRAM).unmap_write(0x5800, 0x67ff); membank("bank1")->set_base(memregion("maincpu")->base() + 0x5800); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x9008, 0x9008, read8_delegate(FUNC(scramble_state::mariner_protection_2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0xb401, 0xb401, read8_delegate(FUNC(scramble_state::mariner_protection_1_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x9008, 0x9008, read8_delegate(*this, FUNC(scramble_state::mariner_protection_2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0xb401, 0xb401, read8_delegate(*this, FUNC(scramble_state::mariner_protection_1_r))); /* ??? (it's NOT a background enable) */ /*m_maincpu->space(AS_PROGRAM).nop_write(0x6803, 0x6803);*/ @@ -259,7 +259,7 @@ void scramble_state::init_cavelon() cavelon_banksw(); /* A15 switches memory banks */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xffff, read8_delegate(FUNC(scramble_state::cavelon_banksw_r),this), write8_delegate(FUNC(scramble_state::cavelon_banksw_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x8000, 0xffff, read8_delegate(*this, FUNC(scramble_state::cavelon_banksw_r)), write8_delegate(*this, FUNC(scramble_state::cavelon_banksw_w))); m_maincpu->space(AS_PROGRAM).nop_write(0x2000, 0x2000); /* ??? */ m_maincpu->space(AS_PROGRAM).nop_write(0x3800, 0x3801); /* looks suspicously like @@ -271,7 +271,7 @@ void scramble_state::init_cavelon() void scramble_state::init_darkplnt() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xb00a, 0xb00a, write8_delegate(FUNC(scramble_state::darkplnt_bullet_color_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xb00a, 0xb00a, write8_delegate(*this, FUNC(scramble_state::darkplnt_bullet_color_w))); } void scramble_state::init_mimonkey() @@ -305,17 +305,17 @@ void scramble_state::init_mimonkey() ROM[A] = ROM[A] ^ xortable[line][col]; ctr++; } - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } void scramble_state::init_mimonsco() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0xa804, 0xa804, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } void scramble_state::init_mimonscr() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x6804, 0x6804, write8_delegate(FUNC(scramble_state::scrambold_background_enable_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x6804, 0x6804, write8_delegate(*this, FUNC(scramble_state::scrambold_background_enable_w))); } @@ -638,6 +638,6 @@ void scramble_state::init_newsin7a() // ROM[0x0067] ^= 0x22; /* rst $00 - should be push hl - the NMI routine is corrupt in this set, but the IRQ routine bypasses it? intentional? */ // attempts to access port at c20x instead of 820x in one location, mirror or bitrot? - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc200, 0xc20f, read8_delegate(FUNC(scramble_state::mars_ppi8255_1_r),this), write8_delegate(FUNC(scramble_state::mars_ppi8255_1_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xc200, 0xc20f, read8_delegate(*this, FUNC(scramble_state::mars_ppi8255_1_r)), write8_delegate(*this, FUNC(scramble_state::mars_ppi8255_1_w))); } diff --git a/src/mame/machine/sorcerer.cpp b/src/mame/machine/sorcerer.cpp index 8df04fabd50..ee4e6857d25 100644 --- a/src/mame/machine/sorcerer.cpp +++ b/src/mame/machine/sorcerer.cpp @@ -463,7 +463,7 @@ void sorcerer_state::machine_start_common(u16 endmem) } if (m_cart && m_cart->exists()) - space.install_read_handler(0xc000, 0xdfff, read8sm_delegate(FUNC(generic_slot_device::read_rom),(generic_slot_device*)m_cart)); + space.install_read_handler(0xc000, 0xdfff, read8sm_delegate(*m_cart, FUNC(generic_slot_device::read_rom))); } void sorcerer_state::machine_start() diff --git a/src/mame/machine/special.cpp b/src/mame/machine/special.cpp index bd971917260..ba7fc9330aa 100644 --- a/src/mame/machine/special.cpp +++ b/src/mame/machine/special.cpp @@ -167,7 +167,7 @@ void special_state::specimx_set_bank(offs_t i, uint8_t data) { case 0 : space.install_write_bank(0x0000, 0x8fff, "bank1"); - space.install_write_handler(0x9000, 0xbfff, write8_delegate(FUNC(special_state::video_memory_w), this)); + space.install_write_handler(0x9000, 0xbfff, write8_delegate(*this, FUNC(special_state::video_memory_w))); m_bank1->set_base(ram); m_bank2->set_base(ram + 0x9000); @@ -321,7 +321,7 @@ void special_state::erik_set_bank() m_bank4->set_base(mem + 0x1c000); space.unmap_write(0xf000, 0xf7ff); space.nop_read(0xf000, 0xf7ff); - space.install_readwrite_handler(0xf800, 0xf803, 0, 0x7fc, 0, read8sm_delegate(FUNC(i8255_device::read), (i8255_device*)m_ppi), write8sm_delegate(FUNC(i8255_device::write), (i8255_device*)m_ppi)); + space.install_readwrite_handler(0xf800, 0xf803, 0, 0x7fc, 0, read8sm_delegate(*m_ppi, FUNC(i8255_device::read)), write8sm_delegate(*m_ppi, FUNC(i8255_device::write))); break; } } diff --git a/src/mame/machine/st0016.cpp b/src/mame/machine/st0016.cpp index 17cf6e660be..cadd8bf046d 100644 --- a/src/mame/machine/st0016.cpp +++ b/src/mame/machine/st0016.cpp @@ -7,6 +7,8 @@ #include "emupal.h" #include "speaker.h" +#include <algorithm> + DEFINE_DEVICE_TYPE(ST0016_CPU, st0016_cpu_device, "st0016_cpu", "ST0016") @@ -33,23 +35,23 @@ void st0016_cpu_device::st0016_cpu_internal_io_map(address_map &map) // note: a lot of bits are left uninitialized by the games, the default values are uncertain st0016_cpu_device::st0016_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : z80_device(mconfig, ST0016_CPU, tag, owner, clock), - device_gfx_interface(mconfig, *this, nullptr, "palette"), - st0016_spr_bank(0), - st0016_spr2_bank(0), - st0016_pal_bank(0), - st0016_char_bank(0), - spr_dx(0), - spr_dy(0), - st0016_ramgfx(0), - m_io_space_config("io", ENDIANNESS_LITTLE, 8, 16, 0, address_map_constructor(FUNC(st0016_cpu_device::st0016_cpu_internal_io_map), this)), - m_space_config("regs", ENDIANNESS_LITTLE, 8, 16, 0, address_map_constructor(FUNC(st0016_cpu_device::st0016_cpu_internal_map), this)), - m_screen(*this, ":screen"), - m_rom(*this, DEVICE_SELF), - m_game_flag(-1) + : z80_device(mconfig, ST0016_CPU, tag, owner, clock) + , device_gfx_interface(mconfig, *this, nullptr, "palette") + , st0016_spr_bank(0) + , st0016_spr2_bank(0) + , st0016_pal_bank(0) + , st0016_char_bank(0) + , spr_dx(0) + , spr_dy(0) + , st0016_ramgfx(0) + , m_io_space_config("io", ENDIANNESS_LITTLE, 8, 16, 0, address_map_constructor(FUNC(st0016_cpu_device::st0016_cpu_internal_io_map), this)) + , m_space_config("regs", ENDIANNESS_LITTLE, 8, 16, 0, address_map_constructor(FUNC(st0016_cpu_device::st0016_cpu_internal_map), this)) + , m_screen(*this, ":screen") + , m_rom(*this, DEVICE_SELF) + , m_dma_offs_cb(*this) + , m_game_flag(-1) { - for (auto & elem : st0016_vregs) - elem = 0; + std::fill(std::begin(st0016_vregs), std::end(st0016_vregs), 0); } @@ -72,7 +74,7 @@ void st0016_cpu_device::device_start() { z80_device::device_start(); startup(); - m_dma_offs_cb.bind_relative_to(*owner()); + m_dma_offs_cb.resolve(); } @@ -230,23 +232,21 @@ WRITE8_MEMBER(st0016_cpu_device::st0016_character_ram_w) READ8_MEMBER(st0016_cpu_device::st0016_vregs_r) { -/* - $0, $1 = max scanline(including vblank)/timer? ($3e7) - - $8-$40 = bg tilemaps (8 bytes each) : - 0 - ? = usually 0/20/ba* - 1 - 0 = disabled , !zero = address of tilemap in spriteram /$1000 (for example: 3 -> tilemap at $3000 ) - 2 - ? = usually ff/1f/af* - 3 - priority ? = 0 - under sprites , $ff - over sprites \ - 4 - ? = $7f/$ff - 5 - ? = $29/$20 (29 when tilemap must be drawn over sprites . maybe this is real priority ?) - 6 - ? = 0 - 7 - ? =$20/$10/$12* - - - $40-$60 = scroll registers , X.w, Y.w - -*/ + /* + $0, $1 = max scanline(including vblank)/timer? ($3e7) + + $8-$40 = bg tilemaps (8 bytes each) : + 0 - ? = usually 0/20/ba* + 1 - 0 = disabled , !zero = address of tilemap in spriteram /$1000 (for example: 3 -> tilemap at $3000 ) + 2 - ? = usually ff/1f/af* + 3 - priority ? = 0 - under sprites , $ff - over sprites \ + 4 - ? = $7f/$ff + 5 - ? = $29/$20 (29 when tilemap must be drawn over sprites . maybe this is real priority ?) + 6 - ? = 0 + 7 - ? =$20/$10/$12* + + $40-$60 = scroll registers , X.w, Y.w + */ switch (offset) { diff --git a/src/mame/machine/st0016.h b/src/mame/machine/st0016.h index 6b2ca54eaef..548d927bf93 100644 --- a/src/mame/machine/st0016.h +++ b/src/mame/machine/st0016.h @@ -19,7 +19,7 @@ public: st0016_cpu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t); - template <typename... T> void set_dma_offs_callback(T &&... args) { m_dma_offs_cb = dma_offs_delegate(std::forward<T>(args)...); } + template <typename... T> void set_dma_offs_callback(T &&... args) { m_dma_offs_cb.set(std::forward<T>(args)...); } DECLARE_WRITE8_MEMBER(st0016_sprite_bank_w); DECLARE_WRITE8_MEMBER(st0016_palette_bank_w); diff --git a/src/mame/machine/stvprot.cpp b/src/mame/machine/stvprot.cpp index eaf95385624..4344696389a 100644 --- a/src/mame/machine/stvprot.cpp +++ b/src/mame/machine/stvprot.cpp @@ -84,7 +84,7 @@ WRITE32_MEMBER ( stv_state::common_prot_w ) void stv_state::install_common_protection() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4fffff0, 0x4ffffff, read32_delegate(FUNC(stv_state::common_prot_r), this), write32_delegate(FUNC(stv_state::common_prot_w), this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4fffff0, 0x4ffffff, read32_delegate(*this, FUNC(stv_state::common_prot_r)), write32_delegate(*this, FUNC(stv_state::common_prot_w))); } void stv_state::stv_register_protection_savestates() diff --git a/src/mame/machine/thomson.cpp b/src/mame/machine/thomson.cpp index f97ffe108ac..37c29966c96 100644 --- a/src/mame/machine/thomson.cpp +++ b/src/mame/machine/thomson.cpp @@ -338,7 +338,7 @@ void thomson_state::to7_update_cart_bank() bank = m_thom_cart_bank % m_thom_cart_nb_banks; if ( bank != m_old_cart_bank && m_old_cart_bank < 0 ) { - space.install_read_handler(0x0000, 0x0003, read8_delegate(FUNC(thomson_state::to7_cartridge_r),this) ); + space.install_read_handler(0x0000, 0x0003, read8_delegate(*this, FUNC(thomson_state::to7_cartridge_r)) ); } } if ( bank != m_old_cart_bank ) @@ -1484,8 +1484,8 @@ void thomson_state::mo5_update_cart_bank() if ( m_old_cart_bank < 0 ) { space.install_read_bank( 0xb000, 0xefff, m_cartbank); - space.install_write_handler( 0xb000, 0xefff, write8_delegate(FUNC(thomson_state::mo5_cartridge_w),this) ); - space.install_read_handler( 0xbffc, 0xbfff, read8_delegate(FUNC(thomson_state::mo5_cartridge_r),this) ); + space.install_write_handler( 0xb000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo5_cartridge_w)) ); + space.install_read_handler( 0xbffc, 0xbfff, read8_delegate(*this, FUNC(thomson_state::mo5_cartridge_r)) ); } LOG_BANK(( "mo5_update_cart_bank: CART is cartridge bank %i\n", bank )); } @@ -1496,7 +1496,7 @@ void thomson_state::mo5_update_cart_bank() if ( m_old_cart_bank != 0 ) { space.install_read_bank( 0xb000, 0xefff, m_cartbank); - space.install_write_handler( 0xb000, 0xefff, write8_delegate(FUNC(thomson_state::mo5_cartridge_w),this) ); + space.install_write_handler( 0xb000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo5_cartridge_w)) ); LOG_BANK(( "mo5_update_cart_bank: CART is internal\n")); } } @@ -1886,8 +1886,8 @@ void thomson_state::to9_update_cart_bank() if ( m_old_cart_bank < 0 || m_old_cart_bank > 3 ) { space.install_read_bank( 0x0000, 0x3fff, m_cartbank ); - space.install_write_handler( 0x0000, 0x3fff, write8_delegate(FUNC(thomson_state::to9_cartridge_w),this) ); - space.install_read_handler( 0x0000, 0x0003, read8_delegate(FUNC(thomson_state::to9_cartridge_r),this) ); + space.install_write_handler( 0x0000, 0x3fff, write8_delegate(*this, FUNC(thomson_state::to9_cartridge_w)) ); + space.install_read_handler( 0x0000, 0x0003, read8_delegate(*this, FUNC(thomson_state::to9_cartridge_r)) ); } LOG_BANK(( "to9_update_cart_bank: CART is cartridge bank %i\n", m_thom_cart_bank )); } @@ -3005,7 +3005,7 @@ void thomson_state::to8_update_cart_bank() } else { - space.install_write_handler( 0x0000, 0x3fff, write8_delegate(FUNC(thomson_state::to8_vcart_w),this)); + space.install_write_handler( 0x0000, 0x3fff, write8_delegate(*this, FUNC(thomson_state::to8_vcart_w))); } } } @@ -3047,7 +3047,7 @@ void thomson_state::to8_update_cart_bank() { if (m_to8_cart_vpage < 4) { - space.install_write_handler( 0x0000, 0x3fff, write8_delegate(FUNC(thomson_state::to8_vcart_w),this)); + space.install_write_handler( 0x0000, 0x3fff, write8_delegate(*this, FUNC(thomson_state::to8_vcart_w))); } else { @@ -3072,7 +3072,7 @@ void thomson_state::to8_update_cart_bank() if ( m_old_cart_bank < 4 || m_old_cart_bank > 7 ) { space.install_read_bank( 0x0000, 0x3fff, m_cartbank ); - space.install_write_handler( 0x0000, 0x3fff, write8_delegate(FUNC(thomson_state::to8_cartridge_w),this) ); + space.install_write_handler( 0x0000, 0x3fff, write8_delegate(*this, FUNC(thomson_state::to8_cartridge_w)) ); } LOG_BANK(( "to8_update_cart_bank: CART is internal bank %i\n", m_to8_soft_bank )); } @@ -3088,8 +3088,8 @@ void thomson_state::to8_update_cart_bank() if ( m_old_cart_bank < 0 || m_old_cart_bank > 3 ) { space.install_read_bank( 0x0000, 0x3fff, m_cartbank ); - space.install_write_handler( 0x0000, 0x3fff, write8_delegate(FUNC(thomson_state::to8_cartridge_w),this) ); - space.install_read_handler( 0x0000, 0x0003, read8_delegate(FUNC(thomson_state::to8_cartridge_r),this) ); + space.install_write_handler( 0x0000, 0x3fff, write8_delegate(*this, FUNC(thomson_state::to8_cartridge_w)) ); + space.install_read_handler( 0x0000, 0x0003, read8_delegate(*this, FUNC(thomson_state::to8_cartridge_r)) ); } LOG_BANK(( "to8_update_cart_bank: CART is external cartridge bank %i\n", bank )); } @@ -3813,8 +3813,8 @@ void thomson_state::mo6_update_cart_bank() } else { - space.install_write_handler( 0xb000, 0xbfff, write8_delegate(FUNC(thomson_state::mo6_vcart_lo_w),this)); - space.install_write_handler( 0xc000, 0xefff, write8_delegate(FUNC(thomson_state::mo6_vcart_hi_w),this)); + space.install_write_handler( 0xb000, 0xbfff, write8_delegate(*this, FUNC(thomson_state::mo6_vcart_lo_w))); + space.install_write_handler( 0xc000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo6_vcart_hi_w))); } } } @@ -3849,8 +3849,8 @@ void thomson_state::mo6_update_cart_bank() { if (m_to8_cart_vpage < 4) { - space.install_write_handler( 0xb000, 0xbfff, write8_delegate(FUNC(thomson_state::mo6_vcart_lo_w),this)); - space.install_write_handler( 0xc000, 0xefff, write8_delegate(FUNC(thomson_state::mo6_vcart_hi_w),this)); + space.install_write_handler( 0xb000, 0xbfff, write8_delegate(*this, FUNC(thomson_state::mo6_vcart_lo_w))); + space.install_write_handler( 0xc000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo6_vcart_hi_w))); } else { @@ -3945,7 +3945,7 @@ void thomson_state::mo6_update_cart_bank() { space.install_read_bank( 0xb000, 0xbfff, m_cartlobank ); space.install_read_bank( 0xc000, 0xefff, m_carthibank ); - space.install_write_handler( 0xb000, 0xefff, write8_delegate(FUNC(thomson_state::mo6_cartridge_w),this) ); + space.install_write_handler( 0xb000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo6_cartridge_w)) ); } LOG_BANK(( "mo6_update_cart_bank: CART is internal ROM bank %i\n", b )); } @@ -3962,8 +3962,8 @@ void thomson_state::mo6_update_cart_bank() { space.install_read_bank( 0xb000, 0xbfff, m_cartlobank ); space.install_read_bank( 0xc000, 0xefff, m_carthibank ); - space.install_write_handler( 0xb000, 0xefff, write8_delegate(FUNC(thomson_state::mo6_cartridge_w),this) ); - space.install_read_handler( 0xbffc, 0xbfff, read8_delegate(FUNC(thomson_state::mo6_cartridge_r),this) ); + space.install_write_handler( 0xb000, 0xefff, write8_delegate(*this, FUNC(thomson_state::mo6_cartridge_w)) ); + space.install_read_handler( 0xbffc, 0xbfff, read8_delegate(*this, FUNC(thomson_state::mo6_cartridge_r)) ); } LOG_BANK(( "mo6_update_cart_bank: CART is external cartridge bank %i\n", bank )); } diff --git a/src/mame/machine/toaplan1.cpp b/src/mame/machine/toaplan1.cpp index 3e10d414f97..9a66cae33c0 100644 --- a/src/mame/machine/toaplan1.cpp +++ b/src/mame/machine/toaplan1.cpp @@ -240,7 +240,7 @@ void toaplan1_state::machine_reset() MACHINE_RESET_MEMBER(toaplan1_state,zerowing) { machine_reset(); - m_maincpu->set_reset_callback(write_line_delegate(FUNC(toaplan1_state::reset_callback),this)); + m_maincpu->set_reset_callback(*this, FUNC(toaplan1_state::reset_callback)); } void toaplan1_demonwld_state::machine_reset() diff --git a/src/mame/machine/upd65031.cpp b/src/mame/machine/upd65031.cpp index 74584e6cbba..d195ef42560 100644 --- a/src/mame/machine/upd65031.cpp +++ b/src/mame/machine/upd65031.cpp @@ -196,12 +196,14 @@ inline void upd65031_device::set_mode(int mode) // upd65031_device - constructor //------------------------------------------------- -upd65031_device::upd65031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, UPD65031, tag, owner, clock), +upd65031_device::upd65031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, UPD65031, tag, owner, clock), m_read_kb(*this), m_write_int(*this), m_write_nmi(*this), - m_write_spkr(*this) + m_write_spkr(*this), + m_screen_update_cb(*this), + m_out_mem_cb(*this) { } @@ -219,8 +221,8 @@ void upd65031_device::device_start() m_write_spkr.resolve_safe(); // bind delegates - m_screen_update_cb.bind_relative_to(*owner()); - m_out_mem_cb.bind_relative_to(*owner()); + m_screen_update_cb.resolve(); + m_out_mem_cb.resolve(); // allocate timers m_rtc_timer = timer_alloc(TIMER_RTC); diff --git a/src/mame/machine/upd65031.h b/src/mame/machine/upd65031.h index e6c1b6d927c..5dd208fbe7c 100644 --- a/src/mame/machine/upd65031.h +++ b/src/mame/machine/upd65031.h @@ -16,9 +16,6 @@ // TYPE DEFINITIONS //************************************************************************** -typedef device_delegate<void (bitmap_ind16 &bitmap, uint16_t sbf, uint16_t hires0, uint16_t hires1, uint16_t lores0, uint16_t lores1, int flash)> upd65031_screen_update_delegate; -typedef device_delegate<void (int bank, uint16_t page, int rams)> upd65031_memory_update_delegate; - #define UPD65031_SCREEN_UPDATE(_name) void _name(bitmap_ind16 &bitmap, uint16_t sbf, uint16_t hires0, uint16_t hires1, uint16_t lores0, uint16_t lores1, int flash) #define UPD65031_MEMORY_UPDATE(_name) void _name(int bank, uint16_t page, int rams) @@ -28,6 +25,9 @@ typedef device_delegate<void (int bank, uint16_t page, int rams)> upd65031_memor class upd65031_device : public device_t { public: + typedef device_delegate<void (bitmap_ind16 &bitmap, uint16_t sbf, uint16_t hires0, uint16_t hires1, uint16_t lores0, uint16_t lores1, int flash)> screen_update_delegate; + typedef device_delegate<void (int bank, uint16_t page, int rams)> memory_update_delegate; + // construction/destruction upd65031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -36,8 +36,8 @@ public: auto nmi_wr_callback() { return m_write_nmi.bind(); } auto spkr_wr_callback() { return m_write_spkr.bind(); } - template <typename... T> void set_screen_update_callback(T &&... args) { m_screen_update_cb = upd65031_screen_update_delegate(std::forward<T>(args)...); } - template <typename... T> void set_memory_update_callback(T &&... args) { m_out_mem_cb = upd65031_memory_update_delegate(std::forward<T>(args)...); } + template <typename... T> void set_screen_update_callback(T &&... args) { m_screen_update_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_memory_update_callback(T &&... args) { m_out_mem_cb.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -64,8 +64,8 @@ private: devcb_write_line m_write_nmi; devcb_write_line m_write_spkr; - upd65031_screen_update_delegate m_screen_update_cb; // callback for update the LCD - upd65031_memory_update_delegate m_out_mem_cb; // callback for update bankswitch + screen_update_delegate m_screen_update_cb; // callback for update the LCD + memory_update_delegate m_out_mem_cb; // callback for update bankswitch int m_mode; uint16_t m_lcd_regs[5]; // LCD registers diff --git a/src/mame/machine/vectrex.cpp b/src/mame/machine/vectrex.cpp index a54f3f0227e..8563f3a9665 100644 --- a/src/mame/machine/vectrex.cpp +++ b/src/mame/machine/vectrex.cpp @@ -328,9 +328,9 @@ void vectrex_state::machine_start() { // install cart accesses if (m_cart->get_type() == VECTREX_SRAM) - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x7fff, read8_delegate(FUNC(vectrex_cart_slot_device::read_rom),(vectrex_cart_slot_device*)m_cart), write8_delegate(FUNC(vectrex_cart_slot_device::write_ram),m_cart.target())); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0000, 0x7fff, read8_delegate(*m_cart, FUNC(vectrex_cart_slot_device::read_rom)), write8_delegate(*m_cart, FUNC(vectrex_cart_slot_device::write_ram))); else - m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(FUNC(vectrex_cart_slot_device::read_rom),m_cart.target())); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x0000, 0x7fff, read8_delegate(*m_cart, FUNC(vectrex_cart_slot_device::read_rom))); // setup 3d imager and refresh timer diff --git a/src/mame/machine/vsnes.cpp b/src/mame/machine/vsnes.cpp index 317608c8f55..b3fa0904d2b 100644 --- a/src/mame/machine/vsnes.cpp +++ b/src/mame/machine/vsnes.cpp @@ -196,7 +196,7 @@ MACHINE_START_MEMBER(vsnes_state,vsnes) m_nt_page[0][2] = m_nt_ram[0].get() + 0x800; m_nt_page[0][3] = m_nt_ram[0].get() + 0xc00; - ppu1_space.install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt0_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt0_w),this)); + ppu1_space.install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(vsnes_state::vsnes_nt0_r)), write8_delegate(*this, FUNC(vsnes_state::vsnes_nt0_w))); if (m_gfx1_rom != nullptr) { @@ -249,8 +249,8 @@ MACHINE_START_MEMBER(vsnes_state,vsdual) m_nt_page[1][2] = m_nt_ram[1].get() + 0x800; m_nt_page[1][3] = m_nt_ram[1].get() + 0xc00; - m_ppu1->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt0_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt0_w),this)); - m_ppu2->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(FUNC(vsnes_state::vsnes_nt1_r),this), write8_delegate(FUNC(vsnes_state::vsnes_nt1_w),this)); + m_ppu1->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(vsnes_state::vsnes_nt0_r)), write8_delegate(*this, FUNC(vsnes_state::vsnes_nt0_w))); + m_ppu2->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(vsnes_state::vsnes_nt1_r)), write8_delegate(*this, FUNC(vsnes_state::vsnes_nt1_w))); // read only! m_ppu1->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank2"); // read only! @@ -347,7 +347,7 @@ WRITE8_MEMBER(vsnes_state::vsnormal_vrom_banking) void vsnes_state::init_vsnormal() { /* vrom switching is enabled with bit 2 of $4016 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(FUNC(vsnes_state::vsnormal_vrom_banking),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(*this, FUNC(vsnes_state::vsnormal_vrom_banking))); } /**********************************************************************************/ @@ -430,7 +430,7 @@ WRITE8_MEMBER(vsnes_state::gun_in0_w) void vsnes_state::init_vsgun() { /* VROM switching is enabled with bit 2 of $4016 */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(FUNC(vsnes_state::gun_in0_r),this), write8_delegate(FUNC(vsnes_state::gun_in0_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(*this, FUNC(vsnes_state::gun_in0_r)), write8_delegate(*this, FUNC(vsnes_state::gun_in0_w))); m_do_vrom_bank = 1; } @@ -471,7 +471,7 @@ void vsnes_state::init_vskonami() memcpy(&prg[0x08000], &prg[0x18000], 0x8000); /* banking is done with writes to the $8000-$ffff area */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::vskonami_rom_banking),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(vsnes_state::vskonami_rom_banking))); } /***********************************************************************/ @@ -498,7 +498,7 @@ void vsnes_state::init_vsgshoe() memcpy (&prg[0x08000], &prg[0x12000], 0x2000); /* vrom switching is enabled with bit 2 of $4016 */ - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(FUNC(vsnes_state::gun_in0_r),this), write8_delegate(FUNC(vsnes_state::vsgshoe_gun_in0_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(*this, FUNC(vsnes_state::gun_in0_r)), write8_delegate(*this, FUNC(vsnes_state::vsgshoe_gun_in0_w))); m_do_vrom_bank = 1; } @@ -627,7 +627,7 @@ void vsnes_state::init_drmario() memcpy(&prg[0x0c000], &prg[0x1c000], 0x4000); /* MMC1 mapper at writes to $8000-$ffff */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::drmario_rom_banking),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(vsnes_state::drmario_rom_banking))); m_drmario_shiftreg = 0; m_drmario_shiftcount = 0; @@ -651,7 +651,7 @@ void vsnes_state::init_vsvram() memcpy(&prg[0x08000], &prg[0x28000], 0x8000); /* banking is done with writes to the $8000-$ffff area */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::vsvram_rom_banking),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(vsnes_state::vsvram_rom_banking))); /* allocate m_vram */ m_vram = std::make_unique<uint8_t[]>(0x2000); @@ -768,12 +768,12 @@ WRITE8_MEMBER(vsnes_state::mapper4_w) case 0x6000: /* $e000 - Disable IRQs */ m_IRQ_enable = 0; m_IRQ_count = m_IRQ_count_latch; - m_ppu1->set_scanline_callback(ppu2c0x_device::scanline_delegate()); + m_ppu1->set_scanline_callback(nullptr); break; case 0x6001: /* $e001 - Enable IRQs */ m_IRQ_enable = 1; - m_ppu1->set_scanline_callback(ppu2c0x_device::scanline_delegate(FUNC(vsnes_state::mapper4_irq), this)); + m_ppu1->set_scanline_callback(*this, FUNC(vsnes_state::mapper4_irq)); break; default: @@ -802,7 +802,7 @@ void vsnes_state::init_MMC3() memcpy(&prg[0xe000], &prg[(MMC3_prg_chunks - 1) * 0x4000 + 0x12000], 0x2000); /* MMC3 mapper at writes to $8000-$ffff */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::mapper4_w),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(vsnes_state::mapper4_w))); /* extra ram at $6000-$7fff */ m_maincpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff); @@ -842,7 +842,7 @@ void vsnes_state::init_rbibb() init_MMC3(); /* RBI Base ball hack */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5e00, 0x5e01, read8_delegate(FUNC(vsnes_state::rbi_hack_r),this)) ; + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5e00, 0x5e01, read8_delegate(*this, FUNC(vsnes_state::rbi_hack_r))); } /* Vs. Super Xevious */ @@ -889,10 +889,10 @@ void vsnes_state::init_supxevs() init_MMC3(); /* Vs. Super Xevious Protection */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x54ff, 0x54ff, read8_delegate(FUNC(vsnes_state::supxevs_read_prot_1_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5678, 0x5678, read8_delegate(FUNC(vsnes_state::supxevs_read_prot_2_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x578f, 0x578f, read8_delegate(FUNC(vsnes_state::supxevs_read_prot_3_r),this)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5567, 0x5567, read8_delegate(FUNC(vsnes_state::supxevs_read_prot_4_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x54ff, 0x54ff, read8_delegate(*this, FUNC(vsnes_state::supxevs_read_prot_1_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5678, 0x5678, read8_delegate(*this, FUNC(vsnes_state::supxevs_read_prot_2_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x578f, 0x578f, read8_delegate(*this, FUNC(vsnes_state::supxevs_read_prot_3_r))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5567, 0x5567, read8_delegate(*this, FUNC(vsnes_state::supxevs_read_prot_4_r))); } /* Vs. TKO Boxing */ @@ -921,7 +921,7 @@ void vsnes_state::init_tkoboxng() init_MMC3(); /* security device at $5e00-$5e01 */ - m_maincpu->space(AS_PROGRAM).install_read_handler(0x5e00, 0x5e01, read8_delegate(FUNC(vsnes_state::tko_security_r),this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x5e00, 0x5e01, read8_delegate(*this, FUNC(vsnes_state::tko_security_r))); } /* Vs. Freedom Force */ @@ -930,7 +930,7 @@ void vsnes_state::init_vsfdf() { init_MMC3(); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(FUNC(vsnes_state::gun_in0_r),this), write8_delegate(FUNC(vsnes_state::gun_in0_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x4016, 0x4016, read8_delegate(*this, FUNC(vsnes_state::gun_in0_r)), write8_delegate(*this, FUNC(vsnes_state::gun_in0_w))); m_do_vrom_bank = 0; } @@ -979,7 +979,7 @@ void vsnes_state::init_platoon() memcpy(&prg[0x08000], &prg[0x10000], 0x4000); memcpy(&prg[0x0c000], &prg[0x2c000], 0x4000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(FUNC(vsnes_state::mapper68_rom_banking),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(vsnes_state::mapper68_rom_banking))); } /**********************************************************************************/ @@ -1000,7 +1000,7 @@ READ8_MEMBER(vsnes_state::set_bnglngby_irq_r) void vsnes_state::init_bnglngby() { - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0231, 0x0231, read8_delegate(FUNC(vsnes_state::set_bnglngby_irq_r),this), write8_delegate(FUNC(vsnes_state::set_bnglngby_irq_w),this)); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x0231, 0x0231, read8_delegate(*this, FUNC(vsnes_state::set_bnglngby_irq_r)), write8_delegate(*this, FUNC(vsnes_state::set_bnglngby_irq_w))); /* extra ram */ m_maincpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff); @@ -1043,8 +1043,8 @@ void vsnes_state::init_vsdual() uint8_t *prg = memregion("maincpu")->base(); /* vrom switching is enabled with bit 2 of $4016 */ - m_maincpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(FUNC(vsnes_state::vsdual_vrom_banking_main),this)); - m_subcpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(FUNC(vsnes_state::vsdual_vrom_banking_sub),this)); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(*this, FUNC(vsnes_state::vsdual_vrom_banking_main))); + m_subcpu->space(AS_PROGRAM).install_write_handler(0x4016, 0x4016, write8_delegate(*this, FUNC(vsnes_state::vsdual_vrom_banking_sub))); /* shared ram at $6000 */ m_maincpu->space(AS_PROGRAM).install_ram(0x6000, 0x7fff, &prg[0x6000]); diff --git a/src/mame/machine/wswan.cpp b/src/mame/machine/wswan.cpp index f403b341c1b..c8a942e1a6e 100644 --- a/src/mame/machine/wswan.cpp +++ b/src/mame/machine/wswan.cpp @@ -180,15 +180,15 @@ void wswan_state::common_start() if (m_cart->exists()) { // ROM - m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom20),(ws_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom30),(ws_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_rom40),(ws_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x20000, 0x2ffff, read8sm_delegate(*m_cart, FUNC(ws_cart_slot_device::read_rom20))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x30000, 0x3ffff, read8sm_delegate(*m_cart, FUNC(ws_cart_slot_device::read_rom30))); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x40000, 0xeffff, read8sm_delegate(*m_cart, FUNC(ws_cart_slot_device::read_rom40))); // SRAM if (m_cart->get_type() == WS_SRAM) { - m_maincpu->space(AS_PROGRAM).install_read_handler(0x10000, 0x1ffff, read8sm_delegate(FUNC(ws_cart_slot_device::read_ram),(ws_cart_slot_device*)m_cart)); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x10000, 0x1ffff, write8sm_delegate(FUNC(ws_cart_slot_device::write_ram),(ws_cart_slot_device*)m_cart)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x10000, 0x1ffff, read8sm_delegate(*m_cart, FUNC(ws_cart_slot_device::read_ram))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x10000, 0x1ffff, write8sm_delegate(*m_cart, FUNC(ws_cart_slot_device::write_ram))); } } } diff --git a/src/mame/machine/xbox_pci.cpp b/src/mame/machine/xbox_pci.cpp index f56259e68bf..b721162951e 100644 --- a/src/mame/machine/xbox_pci.cpp +++ b/src/mame/machine/xbox_pci.cpp @@ -1050,7 +1050,7 @@ void mcpx_ide_device::ide_pri_command(address_map &map) void mcpx_ide_device::ide_pri_control(address_map &map) { // 3f6 - map(2, 2).rw(*this, FUNC(mcpx_ide_device::pri_read_cs1_r), FUNC(mcpx_ide_device::pri_write_cs1_w)); + map(2, 2).rw(FUNC(mcpx_ide_device::pri_read_cs1_r), FUNC(mcpx_ide_device::pri_write_cs1_w)); } void mcpx_ide_device::ide_sec_command(address_map &map) @@ -1061,7 +1061,7 @@ void mcpx_ide_device::ide_sec_command(address_map &map) void mcpx_ide_device::ide_sec_control(address_map &map) { // 376 - map(2, 2).rw(*this, FUNC(mcpx_ide_device::sec_read_cs1_r), FUNC(mcpx_ide_device::sec_write_cs1_w)); + map(2, 2).rw(FUNC(mcpx_ide_device::sec_read_cs1_r), FUNC(mcpx_ide_device::sec_write_cs1_w)); } void mcpx_ide_device::ide_io(address_map &map) diff --git a/src/mame/video/1942.cpp b/src/mame/video/1942.cpp index 31dfa891649..2c2acdcb5ef 100644 --- a/src/mame/video/1942.cpp +++ b/src/mame/video/1942.cpp @@ -140,16 +140,16 @@ TILE_GET_INFO_MEMBER(_1942_state::get_bg_tile_info) ***************************************************************************/ void _1942_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_1942_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(_1942_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(0); } void _1942p_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_1942_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(_1942_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1942_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(3); } diff --git a/src/mame/video/1943.cpp b/src/mame/video/1943.cpp index d7262dec3a8..21f428e6583 100644 --- a/src/mame/video/1943.cpp +++ b/src/mame/video/1943.cpp @@ -195,9 +195,9 @@ TILE_GET_INFO_MEMBER(_1943_state::get_fg_tile_info) void _1943_state::video_start() { - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_1943_state::get_bg2_tile_info),this), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_1943_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(_1943_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1943_state::get_bg2_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1943_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_1943_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x0f); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/40love.cpp b/src/mame/video/40love.cpp index cb6bc13145a..3e62220c8d3 100644 --- a/src/mame/video/40love.cpp +++ b/src/mame/video/40love.cpp @@ -69,7 +69,7 @@ void fortyl_state::video_start() m_tmp_bitmap1 = std::make_unique<bitmap_ind16>(256, 256); m_tmp_bitmap2 = std::make_unique<bitmap_ind16>(256, 256); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fortyl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fortyl_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_xoffset = 128; // this never changes diff --git a/src/mame/video/4enraya.cpp b/src/mame/video/4enraya.cpp index d4cbe45da7c..3d82b8862dd 100644 --- a/src/mame/video/4enraya.cpp +++ b/src/mame/video/4enraya.cpp @@ -26,7 +26,7 @@ TILE_GET_INFO_MEMBER(_4enraya_state::get_tile_info) void _4enraya_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(_4enraya_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(_4enraya_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t _4enraya_state::screen_update_4enraya(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/abc1600.cpp b/src/mame/video/abc1600.cpp index d40c864ad74..2093365cbef 100644 --- a/src/mame/video/abc1600.cpp +++ b/src/mame/video/abc1600.cpp @@ -11,17 +11,14 @@ #include "abc1600.lh" #include "render.h" +//#define VERBOSE 1 +#include "logmacro.h" + //************************************************************************** // CONSTANTS / MACROS //************************************************************************** -#define LOG 0 - - -#define SY6845E_TAG "sy6845e" - - // video RAM #define VIDEORAM_SIZE 0x40000 #define VIDEORAM16_MASK 0x3ffff @@ -213,8 +210,8 @@ void abc1600_mover_device::device_add_mconfig(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(32); - m_crtc->set_update_row_callback(FUNC(abc1600_mover_device::crtc_update_row), this); - m_crtc->set_on_update_addr_change_callback(FUNC(abc1600_mover_device::crtc_update), this); + m_crtc->set_update_row_callback(FUNC(abc1600_mover_device::crtc_update_row)); + m_crtc->set_on_update_addr_change_callback(FUNC(abc1600_mover_device::crtc_update)); } @@ -230,7 +227,7 @@ abc1600_mover_device::abc1600_mover_device(const machine_config &mconfig, const device_t(mconfig, ABC1600_MOVER, tag, owner, clock), device_memory_interface(mconfig, *this), m_space_config("vram", ENDIANNESS_BIG, 16, 18, -1, address_map_constructor(FUNC(abc1600_mover_device::mover_map), this)), - m_crtc(*this, SY6845E_TAG), + m_crtc(*this, "sy6845e"), m_palette(*this, "palette"), m_wrmsk_rom(*this, "wrmsk"), m_shinf_rom(*this, "shinf"), @@ -356,18 +353,18 @@ WRITE8_MEMBER( abc1600_mover_device::video_ram_w ) { // WRPORT_LB m_wrm = (m_wrm & 0xff00) | data; - if (LOG) logerror("WRM LB %02x -> %04x\n", data, m_wrm); + LOG("WRM LB %02x -> %04x\n", data, m_wrm); } else { // DATAPORT_LB m_gmdi = (m_gmdi & 0xff00) | data; - if (LOG) logerror("GMDI LB %02x -> %04x\n", data, m_gmdi); + LOG("GMDI LB %02x -> %04x\n", data, m_gmdi); } write_videoram(addr, m_gmdi, m_wrm & 0x00ff); - if (LOG) logerror("Video RAM write LB to %05x : %04x\n", addr, read_videoram(addr)); + LOG("Video RAM write LB to %05x : %04x\n", addr, read_videoram(addr)); } else { @@ -375,18 +372,18 @@ WRITE8_MEMBER( abc1600_mover_device::video_ram_w ) { // WRPORT_HB m_wrm = (data << 8) | (m_wrm & 0xff); - if (LOG) logerror("WRM HB %02x -> %04x\n", data, m_wrm); + LOG("WRM HB %02x -> %04x\n", data, m_wrm); } else { // DATAPORT_HB m_gmdi = (data << 8) | (m_gmdi & 0xff); - if (LOG) logerror("GMDI HB %02x -> %04x\n", data, m_gmdi); + LOG("GMDI HB %02x -> %04x\n", data, m_gmdi); } write_videoram(addr, m_gmdi, m_wrm & 0xff00); - if (LOG) logerror("Video RAM write HB to %05x : %04x\n", addr, read_videoram(addr)); + LOG("Video RAM write HB to %05x : %04x\n", addr, read_videoram(addr)); } } @@ -445,7 +442,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldsx_hb_w ) */ - if (LOG) logerror("%s LDSX HB: %02x\n", machine().describe_context(), data); + LOG("%s LDSX HB: %02x\n", machine().describe_context(), data); m_xsize = ((data & 0x03) << 8) | (m_xsize & 0xff); m_udy = BIT(data, 2); @@ -474,7 +471,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldsx_lb_w ) */ - if (LOG) logerror("%s LDSX LB: %02x\n", machine().describe_context(), data); + LOG("%s LDSX LB: %02x\n", machine().describe_context(), data); m_xsize = (m_xsize & 0x300) | data; } @@ -501,7 +498,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldsy_hb_w ) */ - if (LOG) logerror("%s LDSY HB: %02x\n", machine().describe_context(), data); + LOG("%s LDSY HB: %02x\n", machine().describe_context(), data); m_ysize = ((data & 0x0f) << 8) | (m_ysize & 0xff); } @@ -528,7 +525,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldsy_lb_w ) */ - if (LOG) logerror("%s LDSY LB: %02x\n", machine().describe_context(), data); + LOG("%s LDSY LB: %02x\n", machine().describe_context(), data); m_ysize = (m_ysize & 0xf00) | data; } @@ -555,7 +552,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldtx_hb_w ) */ - if (LOG) logerror("%s LDTX HB: %02x\n", machine().describe_context(), data); + LOG("%s LDTX HB: %02x\n", machine().describe_context(), data); m_xto = ((data & 0x03) << 8) | (m_xto & 0xff); m_mta = (m_mta & 0x3ffcf) | ((data & 0x03) << 4); @@ -583,7 +580,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldtx_lb_w ) */ - if (LOG) logerror("%s LDTX LB: %02x\n", machine().describe_context(), data); + LOG("%s LDTX LB: %02x\n", machine().describe_context(), data); m_xto = (m_xto & 0x300) | data; m_mta = (m_mta & 0x3fff0) | (data >> 4); @@ -611,7 +608,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldty_hb_w ) */ - if (LOG) logerror("%s LDTY HB: %02x\n", machine().describe_context(), data); + LOG("%s LDTY HB: %02x\n", machine().describe_context(), data); if (L_P) return; @@ -642,7 +639,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldty_lb_w ) */ - if (LOG) logerror("%s LDTY LB: %02x\n", machine().describe_context(), data); + LOG("%s LDTY LB: %02x\n", machine().describe_context(), data); if (L_P) return; @@ -673,7 +670,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldfx_hb_w ) */ - if (LOG) logerror("%s LDFX HB: %02x\n", machine().describe_context(), data); + LOG("%s LDFX HB: %02x\n", machine().describe_context(), data); m_xfrom = ((data & 0x03) << 8) | (m_xfrom & 0xff); m_mfa = (m_mfa & 0x3ffcf) | ((data & 0x03) << 4); @@ -701,7 +698,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldfx_lb_w ) */ - if (LOG) logerror("%s LDFX LB: %02x\n", machine().describe_context(), data); + LOG("%s LDFX LB: %02x\n", machine().describe_context(), data); m_xfrom = (m_xfrom & 0x300) | data; m_mfa = (m_mfa & 0x3fff0) | (data >> 4); @@ -729,7 +726,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldfy_hb_w ) */ - if (LOG) logerror("%s LDFY HB: %02x\n", machine().describe_context(), data); + LOG("%s LDFY HB: %02x\n", machine().describe_context(), data); m_mfa = ((data & 0x0f) << 14) | (m_mfa & 0x3fff); } @@ -756,7 +753,7 @@ WRITE8_MEMBER( abc1600_mover_device::ldfy_lb_w ) */ - if (LOG) logerror("%s LDFY LB: %02x\n", machine().describe_context(), data); + LOG("%s LDFY LB: %02x\n", machine().describe_context(), data); m_mfa = (m_mfa & 0x3c03f) | (data << 6); @@ -785,7 +782,7 @@ WRITE8_MEMBER( abc1600_mover_device::wrml_w ) */ - if (LOG) logerror("MS %u : %02x\n", (offset >> 4) & 0x0f, data); + LOG("MS %u : %02x\n", (offset >> 4) & 0x0f, data); if (m_clocks_disabled) { @@ -815,7 +812,7 @@ WRITE8_MEMBER( abc1600_mover_device::wrdl_w ) */ - if (LOG) logerror("WS %u : %02x\n", (offset >> 4) & 0x0f, data); + LOG("WS %u : %02x\n", (offset >> 4) & 0x0f, data); if (m_clocks_disabled) { @@ -834,13 +831,13 @@ WRITE8_MEMBER( abc1600_mover_device::wrmask_strobe_hb_w ) { // DATAPORT_HB m_gmdi = (data << 8) | (m_gmdi & 0xff); - if (LOG) logerror("GMDI HB %04x\n", m_gmdi); + LOG("GMDI HB %04x\n", m_gmdi); } else { // WRPORT_HB m_wrm = (data << 8) | (m_wrm & 0xff); - if (LOG) logerror("WRM HB %04x\n", m_gmdi); + LOG("WRM HB %04x\n", m_gmdi); } } @@ -855,13 +852,13 @@ WRITE8_MEMBER( abc1600_mover_device::wrmask_strobe_lb_w ) { // DATAPORT_LB m_gmdi = (m_gmdi & 0xff00) | data; - if (LOG) logerror("GMDI LB %04x\n", m_gmdi); + LOG("GMDI LB %04x\n", m_gmdi); } else { // WRPORT_LB m_wrm = (m_wrm & 0xff00) | data; - if (LOG) logerror("WRM LB %04x\n", m_gmdi); + LOG("WRM LB %04x\n", m_gmdi); } } @@ -872,7 +869,7 @@ WRITE8_MEMBER( abc1600_mover_device::wrmask_strobe_lb_w ) WRITE8_MEMBER( abc1600_mover_device::enable_clocks_w ) { - if (LOG) logerror("ENABLE CLOCKS\n"); + LOG("ENABLE CLOCKS\n"); m_clocks_disabled = 0; } @@ -899,7 +896,7 @@ WRITE8_MEMBER( abc1600_mover_device::flag_strobe_w ) */ m_flag = data; - if (LOG) logerror("FLAG %02x\n", m_flag); + LOG("FLAG %02x\n", m_flag); } @@ -910,7 +907,7 @@ WRITE8_MEMBER( abc1600_mover_device::flag_strobe_w ) WRITE8_MEMBER( abc1600_mover_device::endisp_w ) { m_endisp = 1; - if (LOG) logerror("ENDISP\n"); + LOG("ENDISP\n"); } @@ -1193,7 +1190,7 @@ inline uint16_t abc1600_mover_device::word_mixer(uint16_t rot) void abc1600_mover_device::mover() { - if (LOG) logerror("XFROM %u XSIZE %u YSIZE %u XTO %u YTO %u MFA %05x MTA %05x U/D*X %u U/D*Y %u\n", m_xfrom, m_xsize, m_ysize, m_xto, m_yto, m_mfa, m_mta, m_udx, m_udy); + LOG("XFROM %u XSIZE %u YSIZE %u XTO %u YTO %u MFA %05x MTA %05x U/D*X %u U/D*Y %u\n", m_xfrom, m_xsize, m_ysize, m_xto, m_yto, m_mfa, m_mta, m_udx, m_udy); m_amm = 1; diff --git a/src/mame/video/abc800.cpp b/src/mame/video/abc800.cpp index e03bcf19c81..ffc56559aee 100644 --- a/src/mame/video/abc800.cpp +++ b/src/mame/video/abc800.cpp @@ -283,7 +283,7 @@ void abc800m_state::abc800m_video(machine_config &config) mc6845.set_screen(SCREEN_TAG); mc6845.set_show_border_area(true); mc6845.set_char_width(ABC800_CHAR_WIDTH); - mc6845.set_update_row_callback(FUNC(abc800m_state::abc800m_update_row), this); + mc6845.set_update_row_callback(FUNC(abc800m_state::abc800m_update_row)); mc6845.out_vsync_callback().set(m_dart, FUNC(z80dart_device::rib_w)).invert(); screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t(0xff, 0xff, 0x00))); diff --git a/src/mame/video/abc802.cpp b/src/mame/video/abc802.cpp index 7ea2c43b284..7656e18dd22 100644 --- a/src/mame/video/abc802.cpp +++ b/src/mame/video/abc802.cpp @@ -184,7 +184,7 @@ void abc802_state::abc802_video(machine_config &config) mc6845.set_screen(SCREEN_TAG); mc6845.set_show_border_area(true); mc6845.set_char_width(ABC800_CHAR_WIDTH); - mc6845.set_update_row_callback(FUNC(abc802_state::abc802_update_row), this); + mc6845.set_update_row_callback(FUNC(abc802_state::abc802_update_row)); mc6845.out_vsync_callback().set(FUNC(abc802_state::vs_w)); mc6845.out_vsync_callback().append(m_dart, FUNC(z80dart_device::rib_w)).invert(); diff --git a/src/mame/video/abc806.cpp b/src/mame/video/abc806.cpp index 82dd1238316..0bb243df817 100644 --- a/src/mame/video/abc806.cpp +++ b/src/mame/video/abc806.cpp @@ -10,7 +10,9 @@ #include "includes/abc80x.h" #include "screen.h" -#define LOG 0 +//#define VERBOSE 1 +#include "logmacro.h" + #define HORIZONTAL_PORCH_HACK 109 #define VERTICAL_PORCH_HACK 27 @@ -38,7 +40,7 @@ WRITE8_MEMBER( abc806_state::hrs_w ) */ - if (LOG) logerror("%s HRS %02x\n", machine().describe_context(), data); + LOG("%s HRS %02x\n", machine().describe_context(), data); m_hrs = data; } @@ -124,7 +126,7 @@ READ8_MEMBER( abc806_state::cli_r ) uint16_t hru2_addr = (m_hru2_a8 << 8) | (offset >> 8); uint8_t data = m_hru2_prom->base()[hru2_addr] & 0x0f; - if (LOG) logerror("HRU II %03x : %01x\n", hru2_addr, data); + LOG("HRU II %03x : %01x\n", hru2_addr, data); data |= m_rtc->dio_r() << 7; @@ -169,7 +171,7 @@ WRITE8_MEMBER( abc806_state::sto_w ) { case 0: // external memory enable - if (LOG) logerror("%s EME %u\n", machine().describe_context(), level); + LOG("%s EME %u\n", machine().describe_context(), level); m_eme = level; break; case 1: @@ -483,7 +485,7 @@ void abc806_state::abc806_video(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(ABC800_CHAR_WIDTH); - m_crtc->set_update_row_callback(FUNC(abc806_state::abc806_update_row), this); + m_crtc->set_update_row_callback(FUNC(abc806_state::abc806_update_row)); m_crtc->out_hsync_callback().set(FUNC(abc806_state::hs_w)); m_crtc->out_vsync_callback().set(FUNC(abc806_state::vs_w)); diff --git a/src/mame/video/aeroboto.cpp b/src/mame/video/aeroboto.cpp index 6718bf0a875..9f663dcca0d 100644 --- a/src/mame/video/aeroboto.cpp +++ b/src/mame/video/aeroboto.cpp @@ -42,7 +42,7 @@ TILE_GET_INFO_MEMBER(aeroboto_state::get_tile_info) void aeroboto_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aeroboto_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aeroboto_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_rows(64); diff --git a/src/mame/video/aerofgt.cpp b/src/mame/video/aerofgt.cpp index 7b39d8d9181..fd8496923bc 100644 --- a/src/mame/video/aerofgt.cpp +++ b/src/mame/video/aerofgt.cpp @@ -73,7 +73,7 @@ void aerofgt_state::aerofgt_register_state_globals( ) VIDEO_START_MEMBER(aerofgt_state,pspikes) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::get_pspikes_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); /* no bg2 in this game */ m_sprite_gfx = 1; @@ -84,8 +84,8 @@ VIDEO_START_MEMBER(aerofgt_state,pspikes) VIDEO_START_MEMBER(aerofgt_state,karatblz) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::karatblz_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::karatblz_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_tilemap[1]->set_transparent_pen(15); m_spritepalettebank = 0; @@ -96,8 +96,8 @@ VIDEO_START_MEMBER(aerofgt_state,karatblz) VIDEO_START_MEMBER(aerofgt_state,spinlbrk) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::spinlbrk_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::karatblz_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::spinlbrk_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::karatblz_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[1]->set_transparent_pen(15); @@ -111,8 +111,8 @@ VIDEO_START_MEMBER(aerofgt_state,spinlbrk) VIDEO_START_MEMBER(aerofgt_state,turbofrc) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[1]->set_transparent_pen(15); @@ -367,7 +367,7 @@ uint32_t aerofgt_state::screen_update_aerofgt(screen_device &screen, bitmap_ind1 // BOOTLEG VIDEO_START_MEMBER(aerofgt_state,wbbc97) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aerofgt_state::get_pspikes_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aerofgt_state::get_pspikes_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); /* no bg2 in this game */ m_tilemap[0]->set_transparent_pen(15); diff --git a/src/mame/video/airbustr.cpp b/src/mame/video/airbustr.cpp index 69e7693c08e..2b79c4d4505 100644 --- a/src/mame/video/airbustr.cpp +++ b/src/mame/video/airbustr.cpp @@ -79,8 +79,8 @@ TILE_GET_INFO_MEMBER(airbustr_state::get_tile_info) void airbustr_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airbustr_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airbustr_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airbustr_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airbustr_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/airraid_dev.cpp b/src/mame/video/airraid_dev.cpp index 3dac9982bc7..8e92c27f10e 100644 --- a/src/mame/video/airraid_dev.cpp +++ b/src/mame/video/airraid_dev.cpp @@ -81,13 +81,13 @@ void airraid_video_device::device_start() save_item(NAME(m_hw)); // there might actually be 4 banks of 2048 x 16 tilemaps in here as the upper scroll bits are with the rom banking. - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::bg_scan),this),16,16,2048, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airraid_video_device::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(airraid_video_device::bg_scan)), 16, 16, 2048, 64); // which could in turn mean this is actually 256 x 128, not 256 x 512 -// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::fg_scan),this),16,16,256, 512); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(airraid_video_device::fg_scan),this),16,16,256, 128); +// m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airraid_video_device::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(airraid_video_device::fg_scan)), 16, 16, 256, 512); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airraid_video_device::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(airraid_video_device::fg_scan)), 16, 16, 256, 128); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(airraid_video_device::get_cstx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(airraid_video_device::get_cstx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_fg_tilemap->set_transparent_pen(0); // m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/alpha68k.cpp b/src/mame/video/alpha68k.cpp index bccefa4191d..ca5199ff9c6 100644 --- a/src/mame/video/alpha68k.cpp +++ b/src/mame/video/alpha68k.cpp @@ -70,7 +70,7 @@ void alpha68k_II_state::videoram_w(offs_t offset, u16 data) VIDEO_START_MEMBER(alpha68k_II_state,alpha68k) { - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(alpha68k_II_state::get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(alpha68k_II_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/ampoker2.cpp b/src/mame/video/ampoker2.cpp index fafd36e60c7..88f9cb606b5 100644 --- a/src/mame/video/ampoker2.cpp +++ b/src/mame/video/ampoker2.cpp @@ -149,13 +149,13 @@ TILE_GET_INFO_MEMBER(ampoker2_state::s2k_get_bg_tile_info) void ampoker2_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ampoker2_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ampoker2_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } VIDEO_START_MEMBER(ampoker2_state,sigma2k) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ampoker2_state::s2k_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ampoker2_state::s2k_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } diff --git a/src/mame/video/amspdwy.cpp b/src/mame/video/amspdwy.cpp index 28c757f3ae0..49aa683ac50 100644 --- a/src/mame/video/amspdwy.cpp +++ b/src/mame/video/amspdwy.cpp @@ -69,7 +69,7 @@ TILEMAP_MAPPER_MEMBER(amspdwy_state::tilemap_scan_cols_back) void amspdwy_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(amspdwy_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(amspdwy_state::tilemap_scan_cols_back),this), 8, 8, 0x20, 0x20); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(amspdwy_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(amspdwy_state::tilemap_scan_cols_back)), 8, 8, 0x20, 0x20); } diff --git a/src/mame/video/angelkds.cpp b/src/mame/video/angelkds.cpp index afe1501c3a6..31e58854505 100644 --- a/src/mame/video/angelkds.cpp +++ b/src/mame/video/angelkds.cpp @@ -220,13 +220,13 @@ void angelkds_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec void angelkds_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(angelkds_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(angelkds_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(0); - m_bgbot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(angelkds_state::get_bgbot_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bgbot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(angelkds_state::get_bgbot_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bgbot_tilemap->set_transparent_pen(15); - m_bgtop_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(angelkds_state::get_bgtop_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bgtop_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(angelkds_state::get_bgtop_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bgtop_tilemap->set_transparent_pen(15); } diff --git a/src/mame/video/appoooh.cpp b/src/mame/video/appoooh.cpp index e59b0332e8c..f0e344d0dfa 100644 --- a/src/mame/video/appoooh.cpp +++ b/src/mame/video/appoooh.cpp @@ -124,8 +124,8 @@ TILE_GET_INFO_MEMBER(appoooh_state::get_bg_tile_info) void appoooh_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(appoooh_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(appoooh_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(*this, FUNC(appoooh_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(appoooh_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrolldy(8, 8); diff --git a/src/mame/video/aquarium.cpp b/src/mame/video/aquarium.cpp index 1e3b9c794a4..733163d0584 100644 --- a/src/mame/video/aquarium.cpp +++ b/src/mame/video/aquarium.cpp @@ -60,9 +60,9 @@ void aquarium_state::bak_videoram_w(offs_t offset, u16 data, u16 mem_mask) void aquarium_state::video_start() { - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aquarium_state::get_txt_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aquarium_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_bak_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aquarium_state::get_bak_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aquarium_state::get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aquarium_state::get_mid_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bak_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aquarium_state::get_bak_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_txt_tilemap->set_transparent_pen(0); m_mid_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/aquarius.cpp b/src/mame/video/aquarius.cpp index f291f3e9f60..68d825b144a 100644 --- a/src/mame/video/aquarius.cpp +++ b/src/mame/video/aquarius.cpp @@ -67,7 +67,7 @@ TILE_GET_INFO_MEMBER(aquarius_state::aquarius_gettileinfo) void aquarius_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(aquarius_state::aquarius_gettileinfo),this), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(aquarius_state::aquarius_gettileinfo)), TILEMAP_SCAN_ROWS, 8, 8, 40, 25); } uint32_t aquarius_state::screen_update_aquarius(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/argus.cpp b/src/mame/video/argus.cpp index 28d0f2f3845..f08b4b25683 100644 --- a/src/mame/video/argus.cpp +++ b/src/mame/video/argus.cpp @@ -242,10 +242,10 @@ void argus_common_state::reset_common() void argus_state::video_start() { /* info offset w h col row */ -// m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::get_bg0_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 4096, 32); // full 65536 width tilemap - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::get_bg0_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 1024/16, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::get_bg1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(argus_state::get_tx_tile_info<3>),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); +// m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(argus_state::get_bg0_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 4096, 32); // full 65536 width tilemap + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(argus_state::get_bg0_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 1024/16, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(argus_state::get_bg1_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(argus_state::get_tx_tile_info<3>)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_bg_tilemap[1]->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); @@ -265,8 +265,8 @@ void argus_state::video_reset() void valtric_state::video_start() { /* info offset w h col row */ - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(valtric_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(valtric_state::get_tx_tile_info<2>),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(valtric_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(valtric_state::get_tx_tile_info<2>)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); @@ -289,9 +289,9 @@ void valtric_state::video_reset() void butasan_state::video_start() { /* info offset w h col row */ - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(butasan_state::get_bg0_tile_info),this), tilemap_mapper_delegate(FUNC(butasan_state::bg_scan),this), 16, 16, 32, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(butasan_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(butasan_state::bg_scan),this), 16, 16, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(butasan_state::get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(butasan_state::tx_scan),this), 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(butasan_state::get_bg0_tile_info)), tilemap_mapper_delegate(*this, FUNC(butasan_state::bg_scan)), 16, 16, 32, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(butasan_state::get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(butasan_state::bg_scan)), 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(butasan_state::get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(butasan_state::tx_scan)), 8, 8, 32, 32); m_bg_tilemap[1]->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/arkanoid.cpp b/src/mame/video/arkanoid.cpp index b1996a29279..e1d6a7af08c 100644 --- a/src/mame/video/arkanoid.cpp +++ b/src/mame/video/arkanoid.cpp @@ -169,7 +169,7 @@ TILE_GET_INFO_MEMBER(arkanoid_state::get_bg_tile_info) void arkanoid_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(arkanoid_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(arkanoid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void arkanoid_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/armedf.cpp b/src/mame/video/armedf.cpp index 5e15e0ff151..c1d5d3bf2f7 100644 --- a/src/mame/video/armedf.cpp +++ b/src/mame/video/armedf.cpp @@ -115,11 +115,11 @@ VIDEO_START_MEMBER(armedf_state,terraf) { m_sprite_offy = (m_scroll_type & 2 ) ? 0 : 128; /* legion, legiono, crazy climber 2 */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_nb1414m4_tx_tile_info),this), - (m_scroll_type == 2) ? tilemap_mapper_delegate(FUNC(armedf_state::armedf_scan_type3),this) : tilemap_mapper_delegate(FUNC(armedf_state::armedf_scan_type2),this), 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_nb1414m4_tx_tile_info)), + (m_scroll_type == 2) ? tilemap_mapper_delegate(*this, FUNC(armedf_state::armedf_scan_type3)) : tilemap_mapper_delegate(*this, FUNC(armedf_state::armedf_scan_type2)), 8, 8, 64, 32); m_bg_tilemap->set_transparent_pen(0xf); m_fg_tilemap->set_transparent_pen(0xf); @@ -138,10 +138,10 @@ VIDEO_START_MEMBER(armedf_state,armedf) { m_sprite_offy = (m_scroll_type & 2 ) ? 0 : 128; /* legion, legiono, crazy climber 2 */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(armedf_state::get_armedf_tx_tile_info),this), tilemap_mapper_delegate(FUNC(armedf_state::armedf_scan_type1),this), 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(armedf_state::get_armedf_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(armedf_state::armedf_scan_type1)), 8, 8, 64, 32); m_bg_tilemap->set_transparent_pen(0xf); m_fg_tilemap->set_transparent_pen(0xf); diff --git a/src/mame/video/ashnojoe.cpp b/src/mame/video/ashnojoe.cpp index c515d078aa8..a2367c07dc0 100644 --- a/src/mame/video/ashnojoe.cpp +++ b/src/mame/video/ashnojoe.cpp @@ -136,12 +136,12 @@ void ashnojoe_state::tilemap_regs_w(offs_t offset, u16 data, u16 mem_mask) void ashnojoe_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_highest),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_midlow),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_high),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_low),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_midhigh),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ashnojoe_state::get_tile_info_lowest),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_highest)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_midlow)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_high)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_low)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_midhigh)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ashnojoe_state::get_tile_info_lowest)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tilemap[0]->set_transparent_pen(15); m_tilemap[1]->set_transparent_pen(15); diff --git a/src/mame/video/atarifb.cpp b/src/mame/video/atarifb.cpp index 05c63c7e744..3c68cb2fd2d 100644 --- a/src/mame/video/atarifb.cpp +++ b/src/mame/video/atarifb.cpp @@ -88,9 +88,9 @@ WRITE8_MEMBER(atarifb_state::atarifb_field_videoram_w) void atarifb_state::video_start() { - m_alpha1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(atarifb_state::alpha1_get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 3, 32); - m_alpha2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(atarifb_state::alpha2_get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 3, 32); - m_field_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(atarifb_state::field_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_alpha1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(atarifb_state::alpha1_get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 3, 32); + m_alpha2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(atarifb_state::alpha2_get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 3, 32); + m_field_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(atarifb_state::field_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/atetris.cpp b/src/mame/video/atetris.cpp index 06faefdeabe..448dd71110d 100644 --- a/src/mame/video/atetris.cpp +++ b/src/mame/video/atetris.cpp @@ -51,7 +51,7 @@ WRITE8_MEMBER(atetris_state::videoram_w) void atetris_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(atetris_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(atetris_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); } diff --git a/src/mame/video/bagman.cpp b/src/mame/video/bagman.cpp index 6d65bc6ea9c..ec93795a4bc 100644 --- a/src/mame/video/bagman.cpp +++ b/src/mame/video/bagman.cpp @@ -107,7 +107,7 @@ TILE_GET_INFO_MEMBER(bagman_state::get_bg_tile_info) void bagman_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bagman_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bagman_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/bankp.cpp b/src/mame/video/bankp.cpp index 44b70c4cd06..44540c0dc5f 100644 --- a/src/mame/video/bankp.cpp +++ b/src/mame/video/bankp.cpp @@ -147,8 +147,8 @@ TILE_GET_INFO_MEMBER(bankp_state::get_fg_tile_info) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bankp_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bankp_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0); diff --git a/src/mame/video/baraduke.cpp b/src/mame/video/baraduke.cpp index 3aa646b21f8..6ebc7730183 100644 --- a/src/mame/video/baraduke.cpp +++ b/src/mame/video/baraduke.cpp @@ -114,9 +114,9 @@ TILE_GET_INFO_MEMBER(baraduke_state::get_tile_info1) void baraduke_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(baraduke_state::tx_get_tile_info),this),tilemap_mapper_delegate(FUNC(baraduke_state::tx_tilemap_scan),this),8,8,36,28); - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(baraduke_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(baraduke_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(baraduke_state::tx_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(baraduke_state::tx_tilemap_scan)), 8,8, 36,28); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(baraduke_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(baraduke_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_tx_tilemap->set_transparent_pen(3); m_bg_tilemap[0]->set_transparent_pen(7); diff --git a/src/mame/video/battlane.cpp b/src/mame/video/battlane.cpp index 18e669d84df..0ef5a52ff9a 100644 --- a/src/mame/video/battlane.cpp +++ b/src/mame/video/battlane.cpp @@ -137,7 +137,7 @@ TILEMAP_MAPPER_MEMBER(battlane_state::battlane_tilemap_scan_rows_2x2) void battlane_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(battlane_state::get_tile_info_bg),this), tilemap_mapper_delegate(FUNC(battlane_state::battlane_tilemap_scan_rows_2x2),this), 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(battlane_state::get_tile_info_bg)), tilemap_mapper_delegate(*this, FUNC(battlane_state::battlane_tilemap_scan_rows_2x2)), 16, 16, 32, 32); m_screen_bitmap.allocate(32 * 8, 32 * 8); save_item(NAME(m_screen_bitmap)); } diff --git a/src/mame/video/battlex.cpp b/src/mame/video/battlex.cpp index bd10120f76a..218d3163fb4 100644 --- a/src/mame/video/battlex.cpp +++ b/src/mame/video/battlex.cpp @@ -71,12 +71,12 @@ TILE_GET_INFO_MEMBER(battlex_state::get_dodgeman_bg_tile_info) void battlex_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(battlex_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(battlex_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } void battlex_state::video_start_dodgeman() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(battlex_state::get_dodgeman_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(battlex_state::get_dodgeman_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } void battlex_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/bbusters.cpp b/src/mame/video/bbusters.cpp index 41ad5fd5337..5d106814605 100644 --- a/src/mame/video/bbusters.cpp +++ b/src/mame/video/bbusters.cpp @@ -51,7 +51,7 @@ WRITE16_MEMBER(bbusters_state_base::video_w) void bbusters_state_base::video_start() { - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bbusters_state_base::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bbusters_state_base::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(15); save_item(NAME(m_scale_line_count)); @@ -61,8 +61,8 @@ void bbusters_state::video_start() { bbusters_state_base::video_start(); - m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<0,3>, "layer0_gfx3", this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); - m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&bbusters_state::get_pf_tile_info<1,4>, "layer1_gfx4", this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); + m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&bbusters_state::get_pf_tile_info<0,3>))), TILEMAP_SCAN_COLS, 16, 16, 128, 32); + m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&bbusters_state::get_pf_tile_info<1,4>))), TILEMAP_SCAN_COLS, 16, 16, 128, 32); m_pf_tilemap[0]->set_transparent_pen(15); } @@ -71,8 +71,8 @@ void mechatt_state::video_start() { bbusters_state_base::video_start(); - m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&mechatt_state::get_pf_tile_info<0,2>, "layer0_gfx2", this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); - m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&mechatt_state::get_pf_tile_info<1,3>, "layer1_gfx3", this), TILEMAP_SCAN_COLS, 16, 16, 256, 32); + m_pf_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&mechatt_state::get_pf_tile_info<0,2>))), TILEMAP_SCAN_COLS, 16, 16, 256, 32); + m_pf_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&mechatt_state::get_pf_tile_info<1,3>))), TILEMAP_SCAN_COLS, 16, 16, 256, 32); m_pf_tilemap[0]->set_transparent_pen(15); } diff --git a/src/mame/video/bfm_adr2.cpp b/src/mame/video/bfm_adr2.cpp index 1da7d078b2e..d660183ec96 100644 --- a/src/mame/video/bfm_adr2.cpp +++ b/src/mame/video/bfm_adr2.cpp @@ -233,9 +233,9 @@ void bfm_adder2_device::device_start() save_item(NAME(m_adder_ram)); save_item(NAME(m_screen_ram)); - m_tilemap0 = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(bfm_adder2_device::get_tile0_info),this), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); + m_tilemap0 = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile0_info)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); - m_tilemap1 = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(bfm_adder2_device::get_tile1_info),this), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); + m_tilemap1 = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(bfm_adder2_device::get_tile1_info)), TILEMAP_SCAN_ROWS, 8, 8, 50, 35); palette().set_pen_color(0,rgb_t(0x00,0x00,0x00)); palette().set_pen_color(1,rgb_t(0x00,0x00,0xFF)); diff --git a/src/mame/video/bigstrkb.cpp b/src/mame/video/bigstrkb.cpp index 2372d0552ca..b98d4729387 100644 --- a/src/mame/video/bigstrkb.cpp +++ b/src/mame/video/bigstrkb.cpp @@ -113,9 +113,9 @@ WRITE16_MEMBER(bigstrkb_state::videoram3_w) void bigstrkb_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile_info),this),TILEMAP_SCAN_COLS, 8, 8,64,32); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile2_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bg_scan),this), 16, 16,128,64); - m_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bigstrkb_state::get_tile3_info),this),tilemap_mapper_delegate(FUNC(bigstrkb_state::bg_scan),this), 16, 16,128,64); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); + m_tilemap3 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bigstrkb_state::get_tile3_info)), tilemap_mapper_delegate(*this, FUNC(bigstrkb_state::bg_scan)), 16, 16, 128, 64); m_tilemap->set_transparent_pen(15); //m_tilemap2->set_transparent_pen(15); diff --git a/src/mame/video/bking.cpp b/src/mame/video/bking.cpp index 59d43fbc4dc..52e020d0d4c 100644 --- a/src/mame/video/bking.cpp +++ b/src/mame/video/bking.cpp @@ -215,7 +215,7 @@ TILE_GET_INFO_MEMBER(bking_state::get_tile_info) void bking_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bking_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bking_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_screen->register_screen_bitmap(m_colmap_bg); m_screen->register_screen_bitmap(m_colmap_ball); } diff --git a/src/mame/video/blktiger.cpp b/src/mame/video/blktiger.cpp index 9583ed28750..316ac2343c8 100644 --- a/src/mame/video/blktiger.cpp +++ b/src/mame/video/blktiger.cpp @@ -71,9 +71,9 @@ void blktiger_state::video_start() m_scroll_ram = std::make_unique<uint8_t[]>(BGRAM_BANK_SIZE * BGRAM_BANKS); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blktiger_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap8x4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blktiger_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(blktiger_state::bg8x4_scan),this), 16, 16, 128, 64); - m_bg_tilemap4x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blktiger_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(blktiger_state::bg4x8_scan),this), 16, 16, 64, 128); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap8x4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(blktiger_state::bg8x4_scan)), 16, 16, 128, 64); + m_bg_tilemap4x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blktiger_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(blktiger_state::bg4x8_scan)), 16, 16, 64, 128); m_tx_tilemap->set_transparent_pen(3); diff --git a/src/mame/video/blmbycar.cpp b/src/mame/video/blmbycar.cpp index d6bcb3f8e29..0c0c4577ef5 100644 --- a/src/mame/video/blmbycar.cpp +++ b/src/mame/video/blmbycar.cpp @@ -77,8 +77,8 @@ TILE_GET_INFO_MEMBER(blmbycar_state::get_tile_info) void blmbycar_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blmbycar_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, DIM_NX, DIM_NY ); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blmbycar_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, DIM_NX, DIM_NY ); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blmbycar_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, DIM_NX, DIM_NY ); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blmbycar_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, DIM_NX, DIM_NY ); m_tilemap[1]->set_transparent_pen(0); } diff --git a/src/mame/video/bloodbro.cpp b/src/mame/video/bloodbro.cpp index 5e9a680eda0..f08d881f5ff 100644 --- a/src/mame/video/bloodbro.cpp +++ b/src/mame/video/bloodbro.cpp @@ -58,9 +58,9 @@ TILE_GET_INFO_MEMBER(bloodbro_state::get_tx_tile_info) void bloodbro_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bloodbro_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bloodbro_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bloodbro_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bloodbro_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bloodbro_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bloodbro_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/blueprnt.cpp b/src/mame/video/blueprnt.cpp index 59ea2aa97b8..7005cb5c1f5 100644 --- a/src/mame/video/blueprnt.cpp +++ b/src/mame/video/blueprnt.cpp @@ -115,7 +115,7 @@ TILE_GET_INFO_MEMBER(blueprnt_state::get_bg_tile_info) VIDEO_START_MEMBER(blueprnt_state,blueprnt) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(blueprnt_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(blueprnt_state::get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/bogeyman.cpp b/src/mame/video/bogeyman.cpp index ed7ed049fa3..8405ae6b06b 100644 --- a/src/mame/video/bogeyman.cpp +++ b/src/mame/video/bogeyman.cpp @@ -82,8 +82,8 @@ TILE_GET_INFO_MEMBER(bogeyman_state::get_fg_tile_info) void bogeyman_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bogeyman_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bogeyman_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(*this, FUNC(bogeyman_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bogeyman_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/bombjack.cpp b/src/mame/video/bombjack.cpp index d93848e8d3e..eef0d90eac9 100644 --- a/src/mame/video/bombjack.cpp +++ b/src/mame/video/bombjack.cpp @@ -64,8 +64,8 @@ TILE_GET_INFO_MEMBER(bombjack_state::get_fg_tile_info) void bombjack_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bombjack_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bombjack_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(*this, FUNC(bombjack_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bombjack_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/bosco.cpp b/src/mame/video/bosco.cpp index 6d344c75fb4..7484346281a 100644 --- a/src/mame/video/bosco.cpp +++ b/src/mame/video/bosco.cpp @@ -118,8 +118,8 @@ TILE_GET_INFO_MEMBER(bosco_state::fg_get_tile_info ) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bosco_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bosco_state::fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(bosco_state::fg_tilemap_scan)), 8,8, 8,32); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); diff --git a/src/mame/video/brkthru.cpp b/src/mame/video/brkthru.cpp index eab926f5310..825616d5f53 100644 --- a/src/mame/video/brkthru.cpp +++ b/src/mame/video/brkthru.cpp @@ -108,8 +108,8 @@ WRITE8_MEMBER(brkthru_state::brkthru_fgram_w) void brkthru_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(brkthru_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(brkthru_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(brkthru_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(brkthru_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/bsktball.cpp b/src/mame/video/bsktball.cpp index 9ac1bc33b39..49f1e6a5285 100644 --- a/src/mame/video/bsktball.cpp +++ b/src/mame/video/bsktball.cpp @@ -28,7 +28,7 @@ TILE_GET_INFO_MEMBER(bsktball_state::get_bg_tile_info) void bsktball_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bsktball_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bsktball_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void bsktball_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/bwing.cpp b/src/mame/video/bwing.cpp index 5e86169679f..77648217931 100644 --- a/src/mame/video/bwing.cpp +++ b/src/mame/video/bwing.cpp @@ -125,9 +125,9 @@ void bwing_state::video_start() { int i; - m_charmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_charinfo),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_fgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_fgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::scan_cols),this), 16, 16, 64, 64); - m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(bwing_state::get_bgtileinfo),this), tilemap_mapper_delegate(FUNC(bwing_state::scan_cols),this), 16, 16, 64, 64); + m_charmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bwing_state::get_charinfo)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bwing_state::get_fgtileinfo)), tilemap_mapper_delegate(*this, FUNC(bwing_state::scan_cols)), 16, 16, 64, 64); + m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(bwing_state::get_bgtileinfo)), tilemap_mapper_delegate(*this, FUNC(bwing_state::scan_cols)), 16, 16, 64, 64); m_charmap->set_transparent_pen(0); m_fgmap->set_transparent_pen(0); diff --git a/src/mame/video/c45.cpp b/src/mame/video/c45.cpp index 2be60a34481..19946abdeee 100644 --- a/src/mame/video/c45.cpp +++ b/src/mame/video/c45.cpp @@ -234,8 +234,8 @@ void namco_c45_road_device::draw(bitmap_ind16 &bitmap, const rectangle &cliprect void namco_c45_road_device::device_start() { // create a tilemap for the road - m_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c45_road_device::get_road_info), this), - TILEMAP_SCAN_ROWS, ROAD_TILE_SIZE, ROAD_TILE_SIZE, ROAD_COLS, ROAD_ROWS); + m_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c45_road_device::get_road_info)), + TILEMAP_SCAN_ROWS, ROAD_TILE_SIZE, ROAD_TILE_SIZE, ROAD_COLS, ROAD_ROWS); } diff --git a/src/mame/video/cabal.cpp b/src/mame/video/cabal.cpp index 22b1d396643..3dc32c9263a 100644 --- a/src/mame/video/cabal.cpp +++ b/src/mame/video/cabal.cpp @@ -40,8 +40,8 @@ TILE_GET_INFO_MEMBER(cabal_state::get_text_tile_info) void cabal_state::video_start() { - m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cabal_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,16,16); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cabal_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); + m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabal_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cabal_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_text_layer->set_transparent_pen(3); m_background_layer->set_transparent_pen(15); diff --git a/src/mame/video/calomega.cpp b/src/mame/video/calomega.cpp index 716d0a592a3..7e23c2bb555 100644 --- a/src/mame/video/calomega.cpp +++ b/src/mame/video/calomega.cpp @@ -50,7 +50,7 @@ TILE_GET_INFO_MEMBER(calomega_state::get_bg_tile_info) void calomega_state::video_start() { m_gfxdecode->gfx(0)->set_granularity(8); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(calomega_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 31); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(calomega_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 31); } uint32_t calomega_state::screen_update_calomega(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/canyon.cpp b/src/mame/video/canyon.cpp index 6daaface4a8..c25ec2f709c 100644 --- a/src/mame/video/canyon.cpp +++ b/src/mame/video/canyon.cpp @@ -27,7 +27,7 @@ TILE_GET_INFO_MEMBER(canyon_state::get_bg_tile_info) void canyon_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(canyon_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(canyon_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/cbasebal.cpp b/src/mame/video/cbasebal.cpp index 6c50356d99a..71805e4c938 100644 --- a/src/mame/video/cbasebal.cpp +++ b/src/mame/video/cbasebal.cpp @@ -41,8 +41,8 @@ void cbasebal_state::video_start() m_textram = std::make_unique<uint8_t[]>(0x1000); m_scrollram = std::make_unique<uint8_t[]>(0x1000); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cbasebal_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cbasebal_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cbasebal_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cbasebal_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(3); diff --git a/src/mame/video/cclimber.cpp b/src/mame/video/cclimber.cpp index 2e7ff665d84..a7d0d320a78 100644 --- a/src/mame/video/cclimber.cpp +++ b/src/mame/video/cclimber.cpp @@ -444,11 +444,11 @@ TILE_GET_INFO_MEMBER(cclimber_state::toproller_get_bg_tile_info) VIDEO_START_MEMBER(cclimber_state,cclimber) { - m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::cclimber_get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::cclimber_get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_pf_tilemap->set_transparent_pen(0); m_pf_tilemap->set_scroll_cols(32); - m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::cclimber_get_bs_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::cclimber_get_bs_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bs_tilemap->set_scroll_cols(1); m_bs_tilemap->set_scroll_rows(1); m_bs_tilemap->set_transmask(0, 0x01, 0); /* pen 0 is transaprent */ @@ -461,11 +461,11 @@ VIDEO_START_MEMBER(cclimber_state,cclimber) VIDEO_START_MEMBER(cclimber_state,swimmer) { - m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::swimmer_get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::swimmer_get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_pf_tilemap->set_transparent_pen(0); m_pf_tilemap->set_scroll_cols(32); - m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::cclimber_get_bs_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::cclimber_get_bs_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bs_tilemap->set_scroll_cols(1); m_bs_tilemap->set_scroll_rows(1); m_bs_tilemap->set_transmask(0, 0x01, 0); /* pen 0 is transaprent */ @@ -480,13 +480,13 @@ VIDEO_START_MEMBER(cclimber_state,swimmer) VIDEO_START_MEMBER(cclimber_state,toprollr) { - m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::toprollr_get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_pf_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::toprollr_get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_pf_tilemap->set_transparent_pen(0); - m_toproller_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::toproller_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_toproller_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::toproller_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_toproller_bg_tilemap->set_scroll_rows(1); - m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cclimber_state::toprollr_get_bs_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bs_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cclimber_state::toprollr_get_bs_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bs_tilemap->set_scroll_cols(1); m_bs_tilemap->set_scroll_rows(1); m_bs_tilemap->set_transmask(0, 0x01, 0); /* pen 0 is transaprent */ diff --git a/src/mame/video/centiped.cpp b/src/mame/video/centiped.cpp index 689cd6059a6..c7d1991ea76 100644 --- a/src/mame/video/centiped.cpp +++ b/src/mame/video/centiped.cpp @@ -97,7 +97,7 @@ VIDEO_START_MEMBER(centiped_state,centiped) init_common(); init_penmask(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(centiped_state::centiped_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(centiped_state::centiped_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } @@ -105,7 +105,7 @@ VIDEO_START_MEMBER(centiped_state,warlords) { init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(centiped_state::warlords_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(centiped_state::warlords_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } @@ -114,7 +114,7 @@ VIDEO_START_MEMBER(centiped_state,milliped) init_common(); init_penmask(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(centiped_state::milliped_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(centiped_state::milliped_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } @@ -123,7 +123,7 @@ VIDEO_START_MEMBER(centiped_state,bullsdrt) init_common(); init_penmask(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(centiped_state::bullsdrt_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(centiped_state::bullsdrt_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/chaknpop.cpp b/src/mame/video/chaknpop.cpp index bfdf5341300..bd2b1b07e90 100644 --- a/src/mame/video/chaknpop.cpp +++ b/src/mame/video/chaknpop.cpp @@ -150,7 +150,7 @@ void chaknpop_state::video_start() uint8_t *RAM = memregion("maincpu")->base(); /* info offset type w h col row */ - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chaknpop_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chaknpop_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_vram1 = &RAM[0x10000]; m_vram2 = &RAM[0x12000]; diff --git a/src/mame/video/champbas.cpp b/src/mame/video/champbas.cpp index f329bc31622..4a2b577c0d6 100644 --- a/src/mame/video/champbas.cpp +++ b/src/mame/video/champbas.cpp @@ -159,12 +159,12 @@ TILE_GET_INFO_MEMBER(exctsccr_state::exctsccr_get_bg_tile_info) void champbas_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(champbas_state::champbas_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(champbas_state::champbas_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void exctsccr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(exctsccr_state::exctsccr_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exctsccr_state::exctsccr_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/cheekyms.cpp b/src/mame/video/cheekyms.cpp index 8930b3cb2e0..4d984f15a87 100644 --- a/src/mame/video/cheekyms.cpp +++ b/src/mame/video/cheekyms.cpp @@ -105,7 +105,7 @@ void cheekyms_state::video_start() height = m_screen->height(); m_bitmap_buffer = std::make_unique<bitmap_ind16>(width, height); - m_cm_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cheekyms_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_cm_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cheekyms_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_cm_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/circus.cpp b/src/mame/video/circus.cpp index c160672f142..3708e1b964a 100644 --- a/src/mame/video/circus.cpp +++ b/src/mame/video/circus.cpp @@ -38,7 +38,7 @@ TILE_GET_INFO_MEMBER(circus_state::get_bg_tile_info) void circus_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(circus_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(circus_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void circus_state::draw_line( bitmap_ind16 &bitmap, const rectangle &cliprect, int x1, int y1, int x2, int y2, int dotted ) diff --git a/src/mame/video/circusc.cpp b/src/mame/video/circusc.cpp index fa50b26a0a8..ab44ec4aff2 100644 --- a/src/mame/video/circusc.cpp +++ b/src/mame/video/circusc.cpp @@ -118,7 +118,7 @@ TILE_GET_INFO_MEMBER(circusc_state::get_tile_info) void circusc_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(circusc_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(circusc_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/citycon.cpp b/src/mame/video/citycon.cpp index d5720c3536c..51594ad7fbc 100644 --- a/src/mame/video/citycon.cpp +++ b/src/mame/video/citycon.cpp @@ -52,8 +52,8 @@ TILE_GET_INFO_MEMBER(citycon_state::get_bg_tile_info) void citycon_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(citycon_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(citycon_state::citycon_scan),this), 8, 8, 128, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(citycon_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(citycon_state::citycon_scan),this), 8, 8, 128, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(citycon_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(citycon_state::citycon_scan)), 8, 8, 128, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(citycon_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(citycon_state::citycon_scan)), 8, 8, 128, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scroll_rows(32); diff --git a/src/mame/video/cloak.cpp b/src/mame/video/cloak.cpp index 351379a4ada..d07397fe1cc 100644 --- a/src/mame/video/cloak.cpp +++ b/src/mame/video/cloak.cpp @@ -161,7 +161,7 @@ TILE_GET_INFO_MEMBER(cloak_state::get_bg_tile_info) void cloak_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cloak_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cloak_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bitmap_videoram1 = std::make_unique<uint8_t[]>(256*256); m_bitmap_videoram2 = std::make_unique<uint8_t[]>(256*256); diff --git a/src/mame/video/clshroad.cpp b/src/mame/video/clshroad.cpp index 9b2389fb46a..6c0c459f59a 100644 --- a/src/mame/video/clshroad.cpp +++ b/src/mame/video/clshroad.cpp @@ -202,10 +202,10 @@ WRITE8_MEMBER(clshroad_state::vram_1_w) VIDEO_START_MEMBER(clshroad_state,firebatl) { /* These 2 use the graphics and scroll value */ - m_tilemap_0a = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_0a),this),TILEMAP_SCAN_ROWS,16,16,0x20,0x10); - m_tilemap_0b = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_0b),this),TILEMAP_SCAN_ROWS,16,16,0x20,0x10); + m_tilemap_0a = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_0a)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_tilemap_0b = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_0b)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); /* Text (No scrolling) */ - m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_fb1),this),tilemap_mapper_delegate(FUNC(clshroad_state::tilemap_scan_rows_extra),this),8,8,0x24,0x20); + m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_fb1)), tilemap_mapper_delegate(*this, FUNC(clshroad_state::tilemap_scan_rows_extra)), 8, 8, 0x24, 0x20); m_tilemap_0a->set_scrolldx(-0x2a, -0xb3); m_tilemap_0b->set_scrolldx(-0x2a, -0xb3); @@ -220,10 +220,10 @@ VIDEO_START_MEMBER(clshroad_state,firebatl) VIDEO_START_MEMBER(clshroad_state,clshroad) { /* These 2 use the graphics and scroll value */ - m_tilemap_0a = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_0a),this),TILEMAP_SCAN_ROWS,16,16,0x20,0x10); - m_tilemap_0b = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_0b),this),TILEMAP_SCAN_ROWS,16,16,0x20,0x10); + m_tilemap_0a = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_0a)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); + m_tilemap_0b = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_0b)), TILEMAP_SCAN_ROWS, 16, 16, 0x20, 0x10); /* Text (No scrolling) */ - m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(clshroad_state::get_tile_info_1),this),tilemap_mapper_delegate(FUNC(clshroad_state::tilemap_scan_rows_extra),this),8,8,0x24,0x20); + m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(clshroad_state::get_tile_info_1)), tilemap_mapper_delegate(*this, FUNC(clshroad_state::tilemap_scan_rows_extra)), 8, 8, 0x24, 0x20); m_tilemap_0a->set_scrolldx(-0x30, -0xb5); m_tilemap_0b->set_scrolldx(-0x30, -0xb5); diff --git a/src/mame/video/combatsc.cpp b/src/mame/video/combatsc.cpp index c7598bb4b83..a18d116916c 100644 --- a/src/mame/video/combatsc.cpp +++ b/src/mame/video/combatsc.cpp @@ -250,9 +250,9 @@ TILE_GET_INFO_MEMBER(combatsc_state::get_text_info_bootleg) VIDEO_START_MEMBER(combatsc_state,combatsc) { - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_textlayer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_text_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_textlayer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_spriteram[0] = make_unique_clear<uint8_t[]>(0x800); m_spriteram[1] = make_unique_clear<uint8_t[]>(0x800); @@ -269,9 +269,9 @@ VIDEO_START_MEMBER(combatsc_state,combatsc) VIDEO_START_MEMBER(combatsc_state,combatscb) { - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info0_bootleg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_tile_info1_bootleg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_textlayer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(combatsc_state::get_text_info_bootleg),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_tile_info0_bootleg)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_tile_info1_bootleg)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_textlayer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(combatsc_state::get_text_info_bootleg)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_spriteram[0] = make_unique_clear<uint8_t[]>(0x800); m_spriteram[1] = make_unique_clear<uint8_t[]>(0x800); diff --git a/src/mame/video/commando.cpp b/src/mame/video/commando.cpp index f5c13948eff..59cfac0bba2 100644 --- a/src/mame/video/commando.cpp +++ b/src/mame/video/commando.cpp @@ -83,8 +83,8 @@ TILE_GET_INFO_MEMBER(commando_state::get_fg_tile_info) void commando_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(commando_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(commando_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(*this, FUNC(commando_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(commando_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(3); } diff --git a/src/mame/video/compgolf.cpp b/src/mame/video/compgolf.cpp index 5d5a026d44c..aca51e9f67e 100644 --- a/src/mame/video/compgolf.cpp +++ b/src/mame/video/compgolf.cpp @@ -70,8 +70,8 @@ TILE_GET_INFO_MEMBER(compgolf_state::get_back_info) void compgolf_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(compgolf_state::get_back_info),this), tilemap_mapper_delegate(FUNC(compgolf_state::back_scan),this), 16, 16, 32, 32); - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(compgolf_state::get_text_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_back_info)), tilemap_mapper_delegate(*this, FUNC(compgolf_state::back_scan)), 16, 16, 32, 32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(compgolf_state::get_text_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_text_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/contra.cpp b/src/mame/video/contra.cpp index 9756dfeb528..5d3fc19c191 100644 --- a/src/mame/video/contra.cpp +++ b/src/mame/video/contra.cpp @@ -139,9 +139,9 @@ TILE_GET_INFO_MEMBER(contra_state::get_tx_tile_info) void contra_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(contra_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(contra_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(contra_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(contra_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_buffered_spriteram = std::make_unique<uint8_t[]>(0x800); m_buffered_spriteram_2 = std::make_unique<uint8_t[]>(0x800); diff --git a/src/mame/video/cop01.cpp b/src/mame/video/cop01.cpp index cdf9c478d4a..d6cfd73b368 100644 --- a/src/mame/video/cop01.cpp +++ b/src/mame/video/cop01.cpp @@ -97,8 +97,8 @@ TILE_GET_INFO_MEMBER(cop01_state::get_fg_tile_info) void cop01_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cop01_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cop01_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(*this, FUNC(cop01_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cop01_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp index 770e8b6fed2..30c96d507d2 100644 --- a/src/mame/video/cps1.cpp +++ b/src/mame/video/cps1.cpp @@ -2268,9 +2268,9 @@ void cps_state::video_start() m_stars_rom_size = 0x2000; /* first 0x4000 of gfx ROM are used, but 0x0000-0x1fff is == 0x2000-0x3fff */ /* create tilemaps */ - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile0_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap0_scan),this), 8, 8, 64, 64); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile1_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap1_scan),this), 16, 16, 64, 64); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cps_state::get_tile2_info),this), tilemap_mapper_delegate(FUNC(cps_state::tilemap2_scan),this), 32, 32, 64, 64); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile0_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap0_scan)), 8, 8, 64, 64); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile1_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap1_scan)), 16, 16, 64, 64); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cps_state::get_tile2_info)), tilemap_mapper_delegate(*this, FUNC(cps_state::tilemap2_scan)), 32, 32, 64, 64); /* create empty tiles */ memset(m_empty_tile, 0x0f, sizeof(m_empty_tile)); diff --git a/src/mame/video/crbaloon.cpp b/src/mame/video/crbaloon.cpp index 3f9771afb23..1078215e3bb 100644 --- a/src/mame/video/crbaloon.cpp +++ b/src/mame/video/crbaloon.cpp @@ -63,7 +63,7 @@ TILE_GET_INFO_MEMBER(crbaloon_state::get_bg_tile_info) void crbaloon_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(crbaloon_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_XY, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crbaloon_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_XY, 8, 8, 32, 32); save_item(NAME(m_collision_address)); save_item(NAME(m_collision_address_clear)); diff --git a/src/mame/video/crospang.cpp b/src/mame/video/crospang.cpp index 5e83d448063..cbb8c71ba6a 100644 --- a/src/mame/video/crospang.cpp +++ b/src/mame/video/crospang.cpp @@ -126,8 +126,8 @@ TILE_GET_INFO_MEMBER(crospang_state::get_fg_tile_info) void crospang_state::video_start() { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(crospang_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(crospang_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crospang_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crospang_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_fg_layer->set_transparent_pen(0); } diff --git a/src/mame/video/crshrace.cpp b/src/mame/video/crshrace.cpp index 879d436923d..4a7a55a390d 100644 --- a/src/mame/video/crshrace.cpp +++ b/src/mame/video/crshrace.cpp @@ -41,8 +41,8 @@ uint32_t crshrace_state::crshrace_tile_callback( uint32_t code ) void crshrace_state::video_start() { - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(crshrace_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(crshrace_state::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(crshrace_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap1->set_transparent_pen(0x0f); m_tilemap2->set_transparent_pen(0xff); diff --git a/src/mame/video/darius.cpp b/src/mame/video/darius.cpp index f48b1cc490b..bf05c3785bd 100644 --- a/src/mame/video/darius.cpp +++ b/src/mame/video/darius.cpp @@ -22,7 +22,7 @@ TILE_GET_INFO_MEMBER(darius_state::get_fg_tile_info) void darius_state::video_start() { m_gfxdecode->gfx(2)->set_granularity(16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darius_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darius_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/darkmist.cpp b/src/mame/video/darkmist.cpp index ba2f90efc7b..27ff732ab22 100644 --- a/src/mame/video/darkmist.cpp +++ b/src/mame/video/darkmist.cpp @@ -88,9 +88,9 @@ void darkmist_state::darkmist_palette(palette_device &palette) const void darkmist_state::video_start() { - m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darkmist_state::get_bgtile_info),this),TILEMAP_SCAN_ROWS,16,16,512,64 ); - m_fgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darkmist_state::get_fgtile_info),this),TILEMAP_SCAN_ROWS,16,16,64,256 ); - m_txtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(darkmist_state::get_txttile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); + m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darkmist_state::get_bgtile_info)), TILEMAP_SCAN_ROWS, 16, 16, 512, 64); + m_fgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darkmist_state::get_fgtile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 256); + m_txtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(darkmist_state::get_txttile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_fgtilemap->set_transparent_pen(0); // m_txtilemap->set_transparent_pen(0); diff --git a/src/mame/video/dbz.cpp b/src/mame/video/dbz.cpp index 9a50d2803a5..5da4d15e005 100644 --- a/src/mame/video/dbz.cpp +++ b/src/mame/video/dbz.cpp @@ -73,8 +73,8 @@ TILE_GET_INFO_MEMBER(dbz_state::get_dbz_bg1_tile_info) void dbz_state::video_start() { - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dbz_state::get_dbz_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dbz_state::get_dbz_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dbz_state::get_dbz_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dbz_state::get_dbz_bg2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_bg1_tilemap->set_transparent_pen(0); m_bg2_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/dcon.cpp b/src/mame/video/dcon.cpp index 85bafa1be6f..e54683dcbab 100644 --- a/src/mame/video/dcon.cpp +++ b/src/mame/video/dcon.cpp @@ -99,10 +99,10 @@ TILE_GET_INFO_MEMBER(dcon_state::get_text_tile_info) void dcon_state::video_start() { - m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dcon_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS, 16,16,32,32); - m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dcon_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dcon_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dcon_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32); + m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dcon_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dcon_state::get_fore_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dcon_state::get_mid_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dcon_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_midground_layer->set_transparent_pen(15); m_foreground_layer->set_transparent_pen(15); diff --git a/src/mame/video/dday.cpp b/src/mame/video/dday.cpp index bf90fd389e9..5aae1f36528 100644 --- a/src/mame/video/dday.cpp +++ b/src/mame/video/dday.cpp @@ -203,10 +203,10 @@ TILE_GET_INFO_MEMBER(dday_state::get_sl_tile_info) void dday_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dday_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(dday_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dday_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_sl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dday_state::get_sl_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dday_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dday_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dday_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_sl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dday_state::get_sl_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_screen->register_screen_bitmap(m_main_bitmap); diff --git a/src/mame/video/ddragon.cpp b/src/mame/video/ddragon.cpp index 05b8d36125a..2fa8820c8cf 100644 --- a/src/mame/video/ddragon.cpp +++ b/src/mame/video/ddragon.cpp @@ -97,8 +97,8 @@ TILE_GET_INFO_MEMBER(ddragon_state::get_fg_16color_tile_info) VIDEO_START_MEMBER(ddragon_state,ddragon) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddragon_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(ddragon_state::background_scan),this), 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddragon_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(*this, FUNC(ddragon_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(ddragon_state::background_scan)), 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddragon_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrolldx(0, 0); diff --git a/src/mame/video/ddragon3.cpp b/src/mame/video/ddragon3.cpp index cdb40e0e3d3..3acdd768cd2 100644 --- a/src/mame/video/ddragon3.cpp +++ b/src/mame/video/ddragon3.cpp @@ -124,8 +124,8 @@ void ddragon3_state::video_start() { save_item(NAME(m_pri)); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddragon3_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddragon3_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddragon3_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddragon3_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -138,8 +138,7 @@ void wwfwfest_state::video_start() { ddragon3_state::video_start(); - - m_fg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wwfwfest_state::get_fg0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wwfwfest_state::get_fg0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,64,32); m_fg0_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/ddribble.cpp b/src/mame/video/ddribble.cpp index 477e49db2de..f047708884e 100644 --- a/src/mame/video/ddribble.cpp +++ b/src/mame/video/ddribble.cpp @@ -104,8 +104,8 @@ TILE_GET_INFO_MEMBER(ddribble_state::get_bg_tile_info) void ddribble_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddribble_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(ddribble_state::tilemap_scan),this), 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ddribble_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(ddribble_state::tilemap_scan),this), 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddribble_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(ddribble_state::tilemap_scan)), 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ddribble_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(ddribble_state::tilemap_scan)), 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/deadang.cpp b/src/mame/video/deadang.cpp index bd1766e9921..1db2c115185 100644 --- a/src/mame/video/deadang.cpp +++ b/src/mame/video/deadang.cpp @@ -78,10 +78,10 @@ TILE_GET_INFO_MEMBER(deadang_state::get_text_tile_info) void deadang_state::video_start() { - m_pf3_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf3_tile_info),this),tilemap_mapper_delegate(FUNC(deadang_state::bg_scan),this),16,16,128,256); - m_pf2_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf2_tile_info),this),tilemap_mapper_delegate(FUNC(deadang_state::bg_scan),this),16,16,128,256); - m_pf1_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf1_tile_info),this),TILEMAP_SCAN_COLS,16,16, 32, 32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_pf3_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf3_tile_info)), tilemap_mapper_delegate(*this, FUNC(deadang_state::bg_scan)), 16, 16, 128, 256); + m_pf2_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf2_tile_info)), tilemap_mapper_delegate(*this, FUNC(deadang_state::bg_scan)), 16, 16, 128, 256); + m_pf1_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf1_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_pf2_layer->set_transparent_pen(15); m_pf1_layer->set_transparent_pen(15); @@ -108,10 +108,10 @@ TILE_GET_INFO_MEMBER(popnrun_state::get_popnrun_text_tile_info) void popnrun_state::video_start() { - m_pf3_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf3_tile_info),this),tilemap_mapper_delegate(FUNC(deadang_state::bg_scan),this),16,16,128,256); - m_pf2_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf2_tile_info),this),tilemap_mapper_delegate(FUNC(deadang_state::bg_scan),this),16,16,128,256); - m_pf1_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deadang_state::get_pf1_tile_info),this),TILEMAP_SCAN_COLS,16,16, 32, 32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(popnrun_state::get_popnrun_text_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_pf3_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf3_tile_info)), tilemap_mapper_delegate(*this, FUNC(deadang_state::bg_scan)), 16, 16, 128, 256); + m_pf2_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf2_tile_info)), tilemap_mapper_delegate(*this, FUNC(deadang_state::bg_scan)), 16, 16, 128, 256); + m_pf1_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deadang_state::get_pf1_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(popnrun_state::get_popnrun_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_pf2_layer->set_transparent_pen(0); m_pf1_layer->set_transparent_pen(0); diff --git a/src/mame/video/dec8.cpp b/src/mame/video/dec8.cpp index d58a6b33d71..7fc3ce72562 100644 --- a/src/mame/video/dec8.cpp +++ b/src/mame/video/dec8.cpp @@ -249,7 +249,7 @@ TILE_GET_INFO_MEMBER(dec8_state::get_cobracom_fix_tile_info) VIDEO_START_MEMBER(dec8_state,cobracom) { allocate_buffered_spriteram16(); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_cobracom_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_cobracom_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); @@ -283,7 +283,7 @@ TILE_GET_INFO_MEMBER(dec8_state::get_ghostb_fix_tile_info) VIDEO_START_MEMBER(dec8_state,ghostb) { allocate_buffered_spriteram16(); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_ghostb_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_ghostb_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); m_game_uses_priority = 0; @@ -325,7 +325,7 @@ TILE_GET_INFO_MEMBER(dec8_state::get_oscar_fix_tile_info) VIDEO_START_MEMBER(dec8_state,oscar) { allocate_buffered_spriteram16(); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_oscar_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_oscar_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); @@ -398,8 +398,8 @@ TILE_GET_INFO_MEMBER(dec8_state::get_lastmisn_fix_tile_info) VIDEO_START_MEMBER(dec8_state,lastmisn) { allocate_buffered_spriteram16(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_lastmisn_tile_info),this), tilemap_mapper_delegate(FUNC(dec8_state::lastmisn_scan_rows),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_lastmisn_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_lastmisn_tile_info)), tilemap_mapper_delegate(*this, FUNC(dec8_state::lastmisn_scan_rows)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_lastmisn_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); m_game_uses_priority = 0; @@ -408,11 +408,11 @@ VIDEO_START_MEMBER(dec8_state,lastmisn) VIDEO_START_MEMBER(dec8_state,shackled) { allocate_buffered_spriteram16(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_lastmisn_tile_info),this), tilemap_mapper_delegate(FUNC(dec8_state::lastmisn_scan_rows),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_lastmisn_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_lastmisn_tile_info)), tilemap_mapper_delegate(*this, FUNC(dec8_state::lastmisn_scan_rows)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_lastmisn_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); - m_bg_tilemap->set_transmask(0, 0x000f, 0xfff0); /* Bottom 12 pens */ + m_bg_tilemap->set_transmask(0, 0x000f, 0xfff0); // Bottom 12 pens m_game_uses_priority = 1; } @@ -461,14 +461,14 @@ TILE_GET_INFO_MEMBER(dec8_state::get_srdarwin_tile_info) VIDEO_START_MEMBER(dec8_state,srdarwin) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_srdarwin_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_srdarwin_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_srdarwin_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 16); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_srdarwin_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); - m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); //* draw as background only - m_bg_tilemap->set_transmask(1, 0x00ff, 0xff00); /* Bottom 8 pens */ - m_bg_tilemap->set_transmask(2, 0x00ff, 0xff00); /* Bottom 8 pens */ - m_bg_tilemap->set_transmask(3, 0x0000, 0xffff); //* draw as foreground only + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // draw as background only + m_bg_tilemap->set_transmask(1, 0x00ff, 0xff00); // Bottom 8 pens + m_bg_tilemap->set_transmask(2, 0x00ff, 0xff00); // Bottom 8 pens + m_bg_tilemap->set_transmask(3, 0x0000, 0xffff); // draw as foreground only } /******************************************************************************/ @@ -537,8 +537,8 @@ TILE_GET_INFO_MEMBER(dec8_state::get_gondo_tile_info) VIDEO_START_MEMBER(dec8_state,gondo) { allocate_buffered_spriteram16(); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_gondo_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_gondo_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_gondo_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_gondo_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_fix_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transmask(0, 0x00ff, 0xff00); /* Bottom 8 pens */ @@ -548,8 +548,8 @@ VIDEO_START_MEMBER(dec8_state,gondo) VIDEO_START_MEMBER(dec8_state,garyoret) { allocate_buffered_spriteram16(); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_gondo_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dec8_state::get_gondo_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_gondo_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dec8_state::get_gondo_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_fix_tilemap->set_transparent_pen(0); m_game_uses_priority = 1; diff --git a/src/mame/video/decbac06.cpp b/src/mame/video/decbac06.cpp index 9df7665f684..dd432a65d17 100644 --- a/src/mame/video/decbac06.cpp +++ b/src/mame/video/decbac06.cpp @@ -219,27 +219,27 @@ void deco_bac06_device::create_tilemaps(int region8x8, int region16x16) m_tile_region_8 = region8x8; m_tile_region_16 = region16x16; - m_pf8x8_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_8x8_scan),this), 8, 8,128, 32); - m_pf8x8_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_8x8_scan),this), 8, 8, 64, 64); - m_pf8x8_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf8x8_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_8x8_scan),this), 8, 8, 32,128); + m_pf8x8_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_8x8_scan)), 8, 8, 128, 32); + m_pf8x8_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_8x8_scan)), 8, 8, 64, 64); + m_pf8x8_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf8x8_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_8x8_scan)), 8, 8, 32, 128); if (m_wide == 2) { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 256, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 128, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 64, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 256, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 128, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 64, 64); } else if (m_wide == 1) { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 128, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 64, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this), tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 32, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 128, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 64, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 32, 64); } else { - m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape0_scan),this), 16, 16, 64, 16); - m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape1_scan),this), 16, 16, 32, 32); - m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco_bac06_device::get_pf16x16_tile_info),this),tilemap_mapper_delegate(FUNC(deco_bac06_device::tile_shape2_scan),this), 16, 16, 16, 64); + m_pf16x16_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape0_scan)), 16, 16, 64, 16); + m_pf16x16_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape1_scan)), 16, 16, 32, 32); + m_pf16x16_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco_bac06_device::get_pf16x16_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco_bac06_device::tile_shape2_scan)), 16, 16, 16, 64); } } diff --git a/src/mame/video/deckarn.cpp b/src/mame/video/deckarn.cpp index 16c8c608767..67543ea4239 100644 --- a/src/mame/video/deckarn.cpp +++ b/src/mame/video/deckarn.cpp @@ -10,13 +10,14 @@ DEFINE_DEVICE_TYPE(DECO_KARNOVSPRITES, deco_karnovsprites_device, "deco_karnovsp deco_karnovsprites_device::deco_karnovsprites_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, DECO_KARNOVSPRITES, tag, owner, clock) + , m_colpri_cb(*this) { } void deco_karnovsprites_device::device_start() { m_flip_screen = false; - m_colpri_cb.bind_relative_to(*owner()); + m_colpri_cb.resolve(); save_item(NAME(m_flip_screen)); } diff --git a/src/mame/video/deckarn.h b/src/mame/video/deckarn.h index 7c176a024ca..c25396127db 100644 --- a/src/mame/video/deckarn.h +++ b/src/mame/video/deckarn.h @@ -7,23 +7,23 @@ #include "screen.h" -typedef device_delegate<void (u32 &colour, u32 &pri_mask)> deckarn_colpri_cb_delegate; - class deco_karnovsprites_device : public device_t { public: + typedef device_delegate<void (u32 &colour, u32 &pri_mask)> colpri_cb_delegate; + deco_karnovsprites_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, u16* spriteram, int size); void set_flip_screen(bool flip) { m_flip_screen = flip; } - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = deckarn_colpri_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } protected: virtual void device_start() override; virtual void device_reset() override; private: - deckarn_colpri_cb_delegate m_colpri_cb; + colpri_cb_delegate m_colpri_cb; bool m_flip_screen; }; diff --git a/src/mame/video/decmxc06.cpp b/src/mame/video/decmxc06.cpp index ebbfa1ad866..0905a096dd8 100644 --- a/src/mame/video/decmxc06.cpp +++ b/src/mame/video/decmxc06.cpp @@ -48,6 +48,7 @@ DEFINE_DEVICE_TYPE(DECO_MXC06, deco_mxc06_device, "deco_mxc06", "DECO MXC06 Spri deco_mxc06_device::deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, DECO_MXC06, tag, owner, clock) , device_video_interface(mconfig, *this) + , m_colpri_cb(*this) { } @@ -237,7 +238,7 @@ void deco_mxc06_device::draw_sprites_bootleg(screen_device &screen, bitmap_ind16 void deco_mxc06_device::device_start() { - m_colpri_cb.bind_relative_to(*owner()); + m_colpri_cb.resolve(); m_flip_screen = false; m_spritelist = make_unique_clear<struct sprite_t[]>(0x400); diff --git a/src/mame/video/decmxc06.h b/src/mame/video/decmxc06.h index 52bbd7bf61d..b774c7fec6e 100644 --- a/src/mame/video/decmxc06.h +++ b/src/mame/video/decmxc06.h @@ -7,15 +7,15 @@ #include "screen.h" -typedef device_delegate<void (u32 &colour, u32 &pri_mask)> decmxc06_colpri_cb_delegate; - class deco_mxc06_device : public device_t, public device_video_interface { public: + typedef device_delegate<void (u32 &colour, u32 &pri_mask)> colpri_cb_delegate; + deco_mxc06_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = decmxc06_colpri_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, u16* spriteram, int size); void draw_sprites_bootleg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, gfx_element *gfx, u16* spriteram, int size); @@ -34,7 +34,7 @@ private: bool flipx, flipy; u32 pri_mask; }; - decmxc06_colpri_cb_delegate m_colpri_cb; + colpri_cb_delegate m_colpri_cb; bool m_flip_screen; std::unique_ptr<struct sprite_t[]> m_spritelist; }; diff --git a/src/mame/video/deco16ic.cpp b/src/mame/video/deco16ic.cpp index 862c8f0c945..c1f9464d668 100644 --- a/src/mame/video/deco16ic.cpp +++ b/src/mame/video/deco16ic.cpp @@ -177,31 +177,33 @@ Rowscroll style: DEFINE_DEVICE_TYPE(DECO16IC, deco16ic_device, "deco16ic", "DECO 55 / 56 / 74 / 141 Tilemap Generator") deco16ic_device::deco16ic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO16IC, tag, owner, clock), - device_video_interface(mconfig, *this), - m_pf1_data(nullptr), - m_pf2_data(nullptr), - m_pf12_control(nullptr), - m_pf1_rowscroll_ptr(nullptr), - m_pf2_rowscroll_ptr(nullptr), - m_use_custom_pf1(0), - m_use_custom_pf2(0), - m_pf1_bank(0), - m_pf2_bank(0), - m_pf12_last_small(0), - m_pf12_last_big(0), - m_pf1_8bpp_mode(0), - m_pf1_size(0), - m_pf2_size(0), - m_pf1_trans_mask(0xf), - m_pf2_trans_mask(0xf), - m_pf1_colour_bank(0), - m_pf2_colour_bank(0), - m_pf1_colourmask(0xf), - m_pf2_colourmask(0xf), - m_pf12_8x8_gfx_bank(0), - m_pf12_16x16_gfx_bank(0), - m_gfxdecode(*this, finder_base::DUMMY_TAG) + : device_t(mconfig, DECO16IC, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_pf1_data(nullptr) + , m_pf2_data(nullptr) + , m_pf12_control(nullptr) + , m_pf1_rowscroll_ptr(nullptr) + , m_pf2_rowscroll_ptr(nullptr) + , m_bank1_cb(*this) + , m_bank2_cb(*this) + , m_use_custom_pf1(0) + , m_use_custom_pf2(0) + , m_pf1_bank(0) + , m_pf2_bank(0) + , m_pf12_last_small(0) + , m_pf12_last_big(0) + , m_pf1_8bpp_mode(0) + , m_pf1_size(0) + , m_pf2_size(0) + , m_pf1_trans_mask(0xf) + , m_pf2_trans_mask(0xf) + , m_pf1_colour_bank(0) + , m_pf2_colour_bank(0) + , m_pf1_colourmask(0xf) + , m_pf2_colourmask(0xf) + , m_pf12_8x8_gfx_bank(0) + , m_pf12_16x16_gfx_bank(0) + , m_gfxdecode(*this, finder_base::DUMMY_TAG) { } @@ -214,8 +216,8 @@ void deco16ic_device::device_start() if(!m_gfxdecode->started()) throw device_missing_dependencies(); - m_bank1_cb.bind_relative_to(*owner()); - m_bank2_cb.bind_relative_to(*owner()); + m_bank1_cb.resolve(); + m_bank2_cb.resolve(); int fullheight1 = 0; int fullwidth1 = 0; @@ -235,12 +237,12 @@ void deco16ic_device::device_start() if (m_pf2_size&DECO_64x32) fullwidth2 = 1; - m_pf1_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info),this), tilemap_mapper_delegate(FUNC(deco16ic_device::deco16_scan_rows),this), 16, 16, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); -// m_pf1_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); - m_pf1_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf1_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); + m_pf1_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco16ic_device::get_pf1_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco16ic_device::deco16_scan_rows)), 16, 16, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); +// m_pf1_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco16ic_device::get_pf1_tile_info_b)), TILEMAP_SCAN_ROWS, 8, 8, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); + m_pf1_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco16ic_device::get_pf1_tile_info_b)), TILEMAP_SCAN_ROWS, 8, 8, fullwidth1 ? 64 : 32, fullheight1 ? 64 : 32); - m_pf2_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf2_tile_info),this), tilemap_mapper_delegate(FUNC(deco16ic_device::deco16_scan_rows),this), 16, 16, fullwidth2 ? 64 : 32, fullheight2 ? 64 : 32); - m_pf2_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deco16ic_device::get_pf2_tile_info_b),this), TILEMAP_SCAN_ROWS, 8, 8, fullwidth2 ? 64 : 32, fullheight2 ? 64 : 32); + m_pf2_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco16ic_device::get_pf2_tile_info)), tilemap_mapper_delegate(*this, FUNC(deco16ic_device::deco16_scan_rows)), 16, 16, fullwidth2 ? 64 : 32, fullheight2 ? 64 : 32); + m_pf2_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deco16ic_device::get_pf2_tile_info_b)), TILEMAP_SCAN_ROWS, 8, 8, fullwidth2 ? 64 : 32, fullheight2 ? 64 : 32); m_pf1_tilemap_8x8->set_transparent_pen(0); m_pf2_tilemap_8x8->set_transparent_pen(0); diff --git a/src/mame/video/deco16ic.h b/src/mame/video/deco16ic.h index 34956db7391..e9bb27c7d5d 100644 --- a/src/mame/video/deco16ic.h +++ b/src/mame/video/deco16ic.h @@ -27,18 +27,16 @@ typedef device_delegate<int (int bank)> deco16_bank_cb_delegate; -class deco16ic_device : public device_t, - public device_video_interface +class deco16ic_device : public device_t, public device_video_interface { public: deco16ic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~deco16ic_device() {} // configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } // void set_palette_tag(const char *tag); - template <typename... T> void set_bank1_callback(T &&... args) { m_bank1_cb = deco16_bank_cb_delegate(std::forward<T>(args)...); } - template <typename... T> void set_bank2_callback(T &&... args) { m_bank2_cb = deco16_bank_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_bank1_callback(T &&... args) { m_bank1_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_bank2_callback(T &&... args) { m_bank2_cb.set(std::forward<T>(args)...); } void set_pf1_size(int size) { m_pf1_size = size; } void set_pf2_size(int size) { m_pf2_size = size; } void set_pf1_trans_mask(int mask) { m_pf1_trans_mask = mask; } @@ -104,26 +102,25 @@ public: template<class _BitmapClass> void custom_tilemap_draw( - screen_device &screen, - _BitmapClass &bitmap, - const rectangle &cliprect, - tilemap_t *tilemap0_8x8, - tilemap_t *tilemap0_16x16, - tilemap_t *tilemap1_8x8, - tilemap_t *tilemap1_16x16, - const u16 *rowscroll_ptr, - const u16 scrollx, - const u16 scrolly, - const u16 control0, - const u16 control1, - int combine_mask, - int combine_shift, - int trans_mask, - int flags, - u8 priority, - int is_tattoo, - u8 pmask = 0xff - ); + screen_device &screen, + _BitmapClass &bitmap, + const rectangle &cliprect, + tilemap_t *tilemap0_8x8, + tilemap_t *tilemap0_16x16, + tilemap_t *tilemap1_8x8, + tilemap_t *tilemap1_16x16, + const u16 *rowscroll_ptr, + const u16 scrollx, + const u16 scrolly, + const u16 control0, + const u16 control1, + int combine_mask, + int combine_shift, + int trans_mask, + int flags, + u8 priority, + int is_tattoo, + u8 pmask = 0xff); protected: // device-level overrides diff --git a/src/mame/video/decocass.cpp b/src/mame/video/decocass.cpp index bf06d8cd5a9..fc4004b873a 100644 --- a/src/mame/video/decocass.cpp +++ b/src/mame/video/decocass.cpp @@ -695,9 +695,9 @@ void decocass_state::draw_edge(bitmap_ind16 &bitmap, const rectangle &cliprect, void decocass_state::video_start() { - m_bg_tilemap_l = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(decocass_state::get_bg_l_tile_info),this), tilemap_mapper_delegate(FUNC(decocass_state::bgvideoram_scan_cols),this), 16, 16, 32, 32); - m_bg_tilemap_r = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(decocass_state::get_bg_r_tile_info),this), tilemap_mapper_delegate(FUNC(decocass_state::bgvideoram_scan_cols),this), 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(decocass_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(decocass_state::fgvideoram_scan_cols),this), 8, 8, 32, 32); + m_bg_tilemap_l = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(decocass_state::get_bg_l_tile_info)), tilemap_mapper_delegate(*this, FUNC(decocass_state::bgvideoram_scan_cols)), 16, 16, 32, 32); + m_bg_tilemap_r = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(decocass_state::get_bg_r_tile_info)), tilemap_mapper_delegate(*this, FUNC(decocass_state::bgvideoram_scan_cols)), 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(decocass_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(decocass_state::fgvideoram_scan_cols)), 8, 8, 32, 32); m_bg_tilemap_l->set_transparent_pen(0); m_bg_tilemap_r->set_transparent_pen(0); diff --git a/src/mame/video/decodmd2.cpp b/src/mame/video/decodmd2.cpp index e57a2ff79d3..b30d2719bc3 100644 --- a/src/mame/video/decodmd2.cpp +++ b/src/mame/video/decodmd2.cpp @@ -136,13 +136,13 @@ void decodmd_type2_device::device_add_mconfig(machine_config &config) config.m_minimum_quantum = attotime::from_hz(60); - TIMER(config, "firq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(decodmd_type2_device::dmd_firq), this), attotime::from_hz(80)); + TIMER(config, "firq_timer", 0).configure_periodic(FUNC(decodmd_type2_device::dmd_firq), attotime::from_hz(80)); MC6845(config, m_mc6845, XTAL(8'000'000) / 8); // TODO: confirm clock speed m_mc6845->set_screen(nullptr); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(decodmd_type2_device::crtc_update_row), this); + m_mc6845->set_update_row_callback(FUNC(decodmd_type2_device::crtc_update_row)); screen_device &screen(SCREEN(config, "dmd", SCREEN_TYPE_RASTER)); screen.set_native_aspect(); diff --git a/src/mame/video/decodmd3.cpp b/src/mame/video/decodmd3.cpp index 9041d92f229..58979b27770 100644 --- a/src/mame/video/decodmd3.cpp +++ b/src/mame/video/decodmd3.cpp @@ -138,13 +138,13 @@ void decodmd_type3_device::device_add_mconfig(machine_config &config) config.m_minimum_quantum = attotime::from_hz(60); - TIMER(config, "irq_timer", 0).configure_periodic(timer_device::expired_delegate(FUNC(decodmd_type3_device::dmd_irq), this), attotime::from_hz(150)); + TIMER(config, "irq_timer", 0).configure_periodic(FUNC(decodmd_type3_device::dmd_irq), attotime::from_hz(150)); MC6845(config, m_mc6845, XTAL(12'000'000) / 4); // TODO: confirm clock speed m_mc6845->set_screen(nullptr); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(16); - m_mc6845->set_update_row_callback(FUNC(decodmd_type3_device::crtc_update_row), this); + m_mc6845->set_update_row_callback(FUNC(decodmd_type3_device::crtc_update_row)); screen_device &screen(SCREEN(config, "dmd", SCREEN_TYPE_RASTER)); screen.set_native_aspect(); diff --git a/src/mame/video/decospr.cpp b/src/mame/video/decospr.cpp index bdd2d1a02f9..5c6aa4b2a14 100644 --- a/src/mame/video/decospr.cpp +++ b/src/mame/video/decospr.cpp @@ -142,25 +142,25 @@ DECOSPR_COLOUR_CB_MEMBER(decospr_device::default_col_cb) DEFINE_DEVICE_TYPE(DECO_SPRITE, decospr_device, "decospr", "DECO 52 Sprite") decospr_device::decospr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, DECO_SPRITE, tag, owner, clock), - device_video_interface(mconfig, *this), - m_gfxregion(0), - m_is_bootleg(false), - m_bootleg_type(0), - m_x_offset(0), - m_y_offset(0), - m_flipallx(0), - m_transpen(0), - m_gfxdecode(*this, finder_base::DUMMY_TAG) + : device_t(mconfig, DECO_SPRITE, tag, owner, clock) + , device_video_interface(mconfig, *this) + , m_gfxregion(0) + , m_pri_cb(*this) + , m_col_cb(*this, DEVICE_SELF, FUNC(decospr_device::default_col_cb)) // default color callback + , m_is_bootleg(false) + , m_bootleg_type(0) + , m_x_offset(0) + , m_y_offset(0) + , m_flipallx(0) + , m_transpen(0) + , m_gfxdecode(*this, finder_base::DUMMY_TAG) { - // default color callback - m_col_cb = decospr_col_cb_delegate(FUNC(decospr_device::default_col_cb), this); } void decospr_device::device_start() { - m_pri_cb.bind_relative_to(*owner()); - m_col_cb.bind_relative_to(*owner()); + m_pri_cb.resolve(); + m_col_cb.resolve(); m_alt_format = 0; m_pixmask = 0xf; diff --git a/src/mame/video/decospr.h b/src/mame/video/decospr.h index f2ff8aa39a7..338b67772dc 100644 --- a/src/mame/video/decospr.h +++ b/src/mame/video/decospr.h @@ -22,8 +22,8 @@ public: // configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } void set_gfx_region(int gfxregion) { m_gfxregion = gfxregion; } - template <typename... T> void set_pri_callback(T &&... args) { m_pri_cb = decospr_pri_cb_delegate(std::forward<T>(args)...); } - template <typename... T> void set_col_callback(T &&... args) { m_col_cb = decospr_col_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_pri_callback(T &&... args) { m_pri_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_col_callback(T &&... args) { m_col_cb.set(std::forward<T>(args)...); } void set_is_bootleg(bool is_bootleg) { m_is_bootleg = is_bootleg; } void set_bootleg_type(int bootleg_type) { m_bootleg_type = bootleg_type; } void set_flipallx(int flipallx) { m_flipallx = flipallx; } diff --git a/src/mame/video/decrmc3.cpp b/src/mame/video/decrmc3.cpp index cf7faeb23ab..66e7fc1391b 100644 --- a/src/mame/video/decrmc3.cpp +++ b/src/mame/video/decrmc3.cpp @@ -19,12 +19,12 @@ DEFINE_DEVICE_TYPE(DECO_RMC3, deco_rmc3_device, "deco_rmc3", "DECO RM-C3 PALETTE") deco_rmc3_device::deco_rmc3_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, DECO_RMC3, tag, owner, clock), - device_palette_interface(mconfig, *this), - m_entries(0), - m_indirect_entries(0), - m_prom_region(*this, finder_base::DUMMY_TAG), - m_init(deco_rmc3_palette_init_delegate()) + : device_t(mconfig, DECO_RMC3, tag, owner, clock) + , device_palette_interface(mconfig, *this) + , m_entries(0) + , m_indirect_entries(0) + , m_prom_region(*this, finder_base::DUMMY_TAG) + , m_init(*this) { } @@ -153,7 +153,7 @@ WRITE8_MEMBER(deco_rmc3_device::write_indirect_ext) void deco_rmc3_device::device_start() { // bind the init function - m_init.bind_relative_to(*owner()); + m_init.resolve(); // find the memory, if present const memory_share *share = memshare(tag()); diff --git a/src/mame/video/decrmc3.h b/src/mame/video/decrmc3.h index 5293c9c98a5..30296e2967d 100644 --- a/src/mame/video/decrmc3.h +++ b/src/mame/video/decrmc3.h @@ -42,11 +42,7 @@ public: deco_rmc3_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration - void set_init(deco_rmc3_palette_init_delegate init) { m_init = init; } - template <class FunctionClass> void set_init(const char *devname, void (FunctionClass::*callback)(deco_rmc3_device &), const char *name) - { - set_init(deco_rmc3_palette_init_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_init(T &&... args) { m_init.set(std::forward<T>(args)...); } // void set_membits(int membits); // void set_endianness(endianness_t endianness); void set_entries(u32 entries) { m_entries = entries; } diff --git a/src/mame/video/deniam.cpp b/src/mame/video/deniam.cpp index a4ddb3223dd..ebd3b5a9d6c 100644 --- a/src/mame/video/deniam.cpp +++ b/src/mame/video/deniam.cpp @@ -97,9 +97,9 @@ TILE_GET_INFO_MEMBER(deniam_state::get_tx_tile_info) void deniam_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deniam_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(deniam_state::scan_pages),this), 8, 8, 128, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deniam_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(deniam_state::scan_pages),this), 8, 8, 128, 64); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(deniam_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deniam_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(deniam_state::scan_pages)), 8, 8, 128, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deniam_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(deniam_state::scan_pages)), 8, 8, 128, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(deniam_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/digdug.cpp b/src/mame/video/digdug.cpp index 14cfd0d7c79..026bdafe5eb 100644 --- a/src/mame/video/digdug.cpp +++ b/src/mame/video/digdug.cpp @@ -146,8 +146,8 @@ VIDEO_START_MEMBER(digdug_state,digdug) m_bg_disable = 0; m_bg_color_bank = 0; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(digdug_state::bg_get_tile_info),this),tilemap_mapper_delegate(FUNC(digdug_state::tilemap_scan),this),8,8,36,28); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(digdug_state::tx_get_tile_info),this),tilemap_mapper_delegate(FUNC(digdug_state::tilemap_scan),this),8,8,36,28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(digdug_state::bg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(digdug_state::tilemap_scan)), 8, 8, 36, 28); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(digdug_state::tx_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(digdug_state::tilemap_scan)), 8, 8, 36, 28); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/divebomb.cpp b/src/mame/video/divebomb.cpp index 1b5bd73fdee..d3b3c55ec52 100644 --- a/src/mame/video/divebomb.cpp +++ b/src/mame/video/divebomb.cpp @@ -133,7 +133,7 @@ void divebomb_state::divebomb_palette(palette_device &palette) const VIDEO_START_MEMBER(divebomb_state,divebomb) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(divebomb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(divebomb_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrolly(0, 16); } diff --git a/src/mame/video/djboy.cpp b/src/mame/video/djboy.cpp index 39bae7bc99b..d323d02f3ec 100644 --- a/src/mame/video/djboy.cpp +++ b/src/mame/video/djboy.cpp @@ -39,7 +39,7 @@ WRITE8_MEMBER(djboy_state::djboy_videoram_w) void djboy_state::video_start() { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(djboy_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(djboy_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); } WRITE8_MEMBER(djboy_state::djboy_paletteram_w) diff --git a/src/mame/video/dkong.cpp b/src/mame/video/dkong.cpp index fe043a54a8c..c765b35b1c6 100644 --- a/src/mame/video/dkong.cpp +++ b/src/mame/video/dkong.cpp @@ -953,10 +953,10 @@ VIDEO_START_MEMBER(dkong_state,dkong) /* fall through */ case HARDWARE_TKG04: case HARDWARE_TKG02: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dkong_state::dkong_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dkong_state::dkong_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); break; case HARDWARE_TRS01: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dkong_state::radarscp1_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dkong_state::radarscp1_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_screen->register_screen_bitmap(m_bg_bits); m_gfx4 = memregion("gfx4")->base(); diff --git a/src/mame/video/docastle.cpp b/src/mame/video/docastle.cpp index e4933b3a840..f00a3c3adc9 100644 --- a/src/mame/video/docastle.cpp +++ b/src/mame/video/docastle.cpp @@ -104,7 +104,7 @@ TILE_GET_INFO_MEMBER(docastle_state::get_tile_info) void docastle_state::video_start_common( uint32_t tile_transmask ) { - m_do_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(docastle_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_do_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(docastle_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_do_tilemap->set_scrolldy(-32, -32); m_do_tilemap->set_transmask(0, tile_transmask, 0x0000); } diff --git a/src/mame/video/dogfgt.cpp b/src/mame/video/dogfgt.cpp index fffe0ff4e55..5035f64bf78 100644 --- a/src/mame/video/dogfgt.cpp +++ b/src/mame/video/dogfgt.cpp @@ -68,7 +68,7 @@ TILE_GET_INFO_MEMBER(dogfgt_state::get_tile_info) void dogfgt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dogfgt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dogfgt_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bitmapram = std::make_unique<uint8_t[]>(BITMAPRAM_SIZE); save_pointer(NAME(m_bitmapram), BITMAPRAM_SIZE); diff --git a/src/mame/video/dooyong.cpp b/src/mame/video/dooyong.cpp index bcacce58628..daeb0068293 100644 --- a/src/mame/video/dooyong.cpp +++ b/src/mame/video/dooyong.cpp @@ -63,6 +63,7 @@ dooyong_rom_tilemap_device::dooyong_rom_tilemap_device( : dooyong_tilemap_device_base(mconfig, type, tag, owner, clock) , m_rows(8) , m_tilerom(*this, finder_base::DUMMY_TAG) + , m_tmap_cb(*this) , m_tilerom_offset(0) , m_tilerom_length(~0U) , m_transparent_pen(~0U) @@ -108,11 +109,11 @@ void dooyong_rom_tilemap_device::device_start() if (!m_gfxdecode->started()) throw device_missing_dependencies(); - m_tmap_cb.bind_relative_to(*owner()); + m_tmap_cb.resolve(); m_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(dooyong_rom_tilemap_device::tile_info), this), + tilemap_get_info_delegate(*this, FUNC(dooyong_rom_tilemap_device::tile_info)), TILEMAP_SCAN_COLS, gfx().width(), gfx().height(), @@ -236,7 +237,7 @@ void dooyong_ram_tilemap_device::device_start() m_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(dooyong_ram_tilemap_device::tile_info), this), + tilemap_get_info_delegate(*this, FUNC(dooyong_ram_tilemap_device::tile_info)), TILEMAP_SCAN_COLS, 8, 8, diff --git a/src/mame/video/dooyong.h b/src/mame/video/dooyong.h index 58ce4ecf5c0..bc871d94fb3 100644 --- a/src/mame/video/dooyong.h +++ b/src/mame/video/dooyong.h @@ -62,7 +62,7 @@ public: void set_transparent_pen(unsigned pen) { m_transparent_pen = pen; } typedef device_delegate<void (u16 attr, u32 &code, u32 &color)> dooyong_tmap_cb_delegate; - void set_tile_callback(dooyong_tmap_cb_delegate cb) { m_tmap_cb = cb; } + template <typename... T> void set_tile_callback(T &&... args) { m_tmap_cb.set(std::forward<T>(args)...); } void ctrl_w(offs_t offset, u8 data); @@ -85,12 +85,12 @@ protected: private: required_region_ptr<u16> m_tilerom; + dooyong_tmap_cb_delegate m_tmap_cb; int m_tilerom_offset; int m_tilerom_length; unsigned m_transparent_pen; u8 m_registers[0x10]; - dooyong_tmap_cb_delegate m_tmap_cb; }; class rshark_rom_tilemap_device : public dooyong_rom_tilemap_device diff --git a/src/mame/video/dragrace.cpp b/src/mame/video/dragrace.cpp index d13441aed68..e17f7b28d0d 100644 --- a/src/mame/video/dragrace.cpp +++ b/src/mame/video/dragrace.cpp @@ -43,7 +43,7 @@ TILE_GET_INFO_MEMBER(dragrace_state::get_tile_info) void dragrace_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dragrace_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dragrace_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); } diff --git a/src/mame/video/drgnmst.cpp b/src/mame/video/drgnmst.cpp index 4f3449830e0..bc7f785647f 100644 --- a/src/mame/video/drgnmst.cpp +++ b/src/mame/video/drgnmst.cpp @@ -138,13 +138,13 @@ TILEMAP_MAPPER_MEMBER(drgnmst_state::bg_tilemap_scan_cols) void drgnmst_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drgnmst_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(drgnmst_state::fg_tilemap_scan_cols),this), 8, 8, 64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drgnmst_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(drgnmst_state::fg_tilemap_scan_cols)), 8, 8, 64,64); m_fg_tilemap->set_transparent_pen(15); - m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drgnmst_state::get_md_tile_info),this), tilemap_mapper_delegate(FUNC(drgnmst_state::md_tilemap_scan_cols),this), 16, 16, 64,64); + m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drgnmst_state::get_md_tile_info)), tilemap_mapper_delegate(*this, FUNC(drgnmst_state::md_tilemap_scan_cols)), 16, 16, 64,64); m_md_tilemap->set_transparent_pen(15); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drgnmst_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(drgnmst_state::bg_tilemap_scan_cols),this), 32, 32, 64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drgnmst_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(drgnmst_state::bg_tilemap_scan_cols)), 32, 32, 64,64); m_bg_tilemap->set_transparent_pen(15); // do the other tilemaps have rowscroll too? probably not .. diff --git a/src/mame/video/drmicro.cpp b/src/mame/video/drmicro.cpp index aea10c37bc9..7e430fab461 100644 --- a/src/mame/video/drmicro.cpp +++ b/src/mame/video/drmicro.cpp @@ -103,8 +103,8 @@ void drmicro_state::video_start() m_videoram = std::make_unique<uint8_t[]>(0x1000); save_pointer(NAME(m_videoram), 0x1000); - m_bg1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drmicro_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(drmicro_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drmicro_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(drmicro_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg2->set_transparent_pen(0); } diff --git a/src/mame/video/dynduke.cpp b/src/mame/video/dynduke.cpp index b459e8addaf..616c7b70b06 100644 --- a/src/mame/video/dynduke.cpp +++ b/src/mame/video/dynduke.cpp @@ -66,9 +66,9 @@ TILE_GET_INFO_MEMBER(dynduke_state::get_tx_tile_info) void dynduke_state::video_start() { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dynduke_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS, 16,16,32,32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dynduke_state::get_fg_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(dynduke_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dynduke_state::get_bg_tile_info)), TILEMAP_SCAN_COLS,16,16,32,32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dynduke_state::get_fg_tile_info)), TILEMAP_SCAN_COLS,16,16,32,32); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(dynduke_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,32,32); m_fg_layer->set_transparent_pen(15); m_tx_layer->set_transparent_pen(15); diff --git a/src/mame/video/edevices.cpp b/src/mame/video/edevices.cpp index 205d6a27e52..dcb2ab2974a 100644 --- a/src/mame/video/edevices.cpp +++ b/src/mame/video/edevices.cpp @@ -52,10 +52,10 @@ edevices_sforce_device::edevices_sforce_device(const machine_config &mconfig, co void edevices_device::device_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(edevices_device::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 16); - m_mlow_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(edevices_device::get_mlow_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 16); - m_mhigh_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(edevices_device::get_mhigh_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 16); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(edevices_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(edevices_device::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 16); + m_mlow_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(edevices_device::get_mlow_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 16); + m_mhigh_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(edevices_device::get_mhigh_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 16); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(edevices_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_mlow_tilemap->set_transparent_pen(0); m_mhigh_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/equites.cpp b/src/mame/video/equites.cpp index 55ef68af119..e474e9ba071 100644 --- a/src/mame/video/equites.cpp +++ b/src/mame/video/equites.cpp @@ -120,10 +120,10 @@ VIDEO_START_MEMBER(equites_state,equites) m_fg_videoram = std::make_unique<uint8_t[]>(0x800); save_pointer(NAME(m_fg_videoram), 0x800); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(equites_state::equites_fg_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(equites_state::equites_fg_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(equites_state::equites_bg_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(equites_state::equites_bg_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(0, -10); } @@ -135,11 +135,11 @@ VIDEO_START_MEMBER(splndrbt_state,splndrbt) m_fg_videoram = std::make_unique<uint8_t[]>(0x800); save_pointer(NAME(m_fg_videoram), 0x800); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(splndrbt_state::splndrbt_fg_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(splndrbt_state::splndrbt_fg_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrolldx(8, -8); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(splndrbt_state::splndrbt_bg_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(splndrbt_state::splndrbt_bg_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(1), 0x10); } diff --git a/src/mame/video/esd16.cpp b/src/mame/video/esd16.cpp index 589aadecf64..519c66af28f 100644 --- a/src/mame/video/esd16.cpp +++ b/src/mame/video/esd16.cpp @@ -108,14 +108,14 @@ void esd16_state::tilemap0_color_jumppop_w(u16 data) void esd16_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(esd16_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 0x80, 0x40); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(esd16_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 0x80, 0x40); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(esd16_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 0x80, 0x40); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(esd16_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 0x80, 0x40); /* swatpolc changes tilemap 0 to 16x16 at various times */ - m_tilemap_16x16[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(esd16_state::get_tile_info_16x16<0>),this), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); + m_tilemap_16x16[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(esd16_state::get_tile_info_16x16<0>)), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); /* hedpanic changes tilemap 1 to 16x16 at various times */ - m_tilemap_16x16[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(esd16_state::get_tile_info_16x16<1>),this), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); + m_tilemap_16x16[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(esd16_state::get_tile_info_16x16<1>)), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); m_tilemap[0]->set_scrolldx(-0x60 + 2, -0x60); m_tilemap[1]->set_scrolldx(-0x60, -0x60 + 2); diff --git a/src/mame/video/espial.cpp b/src/mame/video/espial.cpp index 642a9d1532a..7ca9fda3761 100644 --- a/src/mame/video/espial.cpp +++ b/src/mame/video/espial.cpp @@ -88,7 +88,7 @@ TILE_GET_INFO_MEMBER(espial_state::get_tile_info) void espial_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(espial_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(espial_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); save_item(NAME(m_flipscreen)); @@ -97,7 +97,7 @@ void espial_state::video_start() VIDEO_START_MEMBER(espial_state,netwars) { /* Net Wars has a tile map that's twice as big as Espial's */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(espial_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(espial_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); m_bg_tilemap->set_scroll_cols(32); m_bg_tilemap->set_scrolldy(0, 0x100); diff --git a/src/mame/video/excellent_spr.cpp b/src/mame/video/excellent_spr.cpp index 15c31083183..5c4cc9f9200 100644 --- a/src/mame/video/excellent_spr.cpp +++ b/src/mame/video/excellent_spr.cpp @@ -26,6 +26,7 @@ excellent_spr_device::excellent_spr_device(const machine_config &mconfig, const : device_t(mconfig, EXCELLENT_SPRITE, tag, owner, clock) , device_gfx_interface(mconfig, *this, nullptr) , device_video_interface(mconfig, *this) + , m_colpri_cb(*this) , m_gfx_region(*this, DEVICE_SELF) , m_colbase(0) { @@ -48,7 +49,7 @@ void excellent_spr_device::device_start() }; layout_16x16x4.total = m_gfx_region->bytes() / ((16*16*4) / 8); - m_colpri_cb.bind_relative_to(*owner()); + m_colpri_cb.resolve(); m_ram = make_unique_clear<u8[]>(0x1000); save_pointer(NAME(m_ram), 0x1000); diff --git a/src/mame/video/excellent_spr.h b/src/mame/video/excellent_spr.h index bd9ecabfba0..12e27c5922b 100644 --- a/src/mame/video/excellent_spr.h +++ b/src/mame/video/excellent_spr.h @@ -5,15 +5,15 @@ #pragma once -typedef device_delegate<void (u32 &colour, u32 &pri_mask)> excellent_spr_colpri_cb_delegate; - class excellent_spr_device : public device_t, public device_gfx_interface, public device_video_interface { public: + typedef device_delegate<void (u32 &colour, u32 &pri_mask)> colpri_cb_delegate; + excellent_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); void set_color_base(u16 base) { m_colbase = base; } - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = excellent_spr_colpri_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } u8 read(offs_t offset); void write(offs_t offset, u8 data); @@ -28,7 +28,7 @@ protected: virtual void device_reset() override; private: - excellent_spr_colpri_cb_delegate m_colpri_cb; + colpri_cb_delegate m_colpri_cb; required_memory_region m_gfx_region; u16 m_colbase; }; diff --git a/src/mame/video/exedexes.cpp b/src/mame/video/exedexes.cpp index c1824d20ea9..b52ab5fb96f 100644 --- a/src/mame/video/exedexes.cpp +++ b/src/mame/video/exedexes.cpp @@ -158,9 +158,9 @@ TILEMAP_MAPPER_MEMBER(exedexes_state::fg_tilemap_scan) void exedexes_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(exedexes_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(exedexes_state::bg_tilemap_scan),this), 32, 32, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(exedexes_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(exedexes_state::fg_tilemap_scan),this), 16, 16, 128, 128); - 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exedexes_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(exedexes_state::bg_tilemap_scan)), 32, 32, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exedexes_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(exedexes_state::fg_tilemap_scan)), 16, 16, 128, 128); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exedexes_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xcf); diff --git a/src/mame/video/exprraid.cpp b/src/mame/video/exprraid.cpp index b3728e0cf78..8c812a01a3d 100644 --- a/src/mame/video/exprraid.cpp +++ b/src/mame/video/exprraid.cpp @@ -82,8 +82,8 @@ TILE_GET_INFO_MEMBER(exprraid_state::get_fg_tile_info) void exprraid_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(exprraid_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(exprraid_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(*this, FUNC(exprraid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(exprraid_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(2); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/f1gp.cpp b/src/mame/video/f1gp.cpp index bef4278b8ac..86b4e354724 100644 --- a/src/mame/video/f1gp.cpp +++ b/src/mame/video/f1gp.cpp @@ -43,8 +43,8 @@ TILE_GET_INFO_MEMBER(f1gp2_state::get_roz_tile_info) void f1gp_state::video_start() { - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(f1gp_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(f1gp_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0xff); @@ -56,8 +56,8 @@ void f1gp_state::video_start() void f1gp2_state::video_start() { - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp2_state::get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(f1gp2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(f1gp2_state::get_roz_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(f1gp2_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0xff); m_roz_tilemap->set_transparent_pen(0x0f); diff --git a/src/mame/video/fastfred.cpp b/src/mame/video/fastfred.cpp index 13ae8f0c554..a2e365fede6 100644 --- a/src/mame/video/fastfred.cpp +++ b/src/mame/video/fastfred.cpp @@ -97,7 +97,7 @@ TILE_GET_INFO_MEMBER(fastfred_state::get_tile_info) VIDEO_START_MEMBER(fastfred_state,fastfred) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastfred_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastfred_state::get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); @@ -325,9 +325,9 @@ WRITE_LINE_MEMBER(fastfred_state::imago_charbank_w) VIDEO_START_MEMBER(fastfred_state,imago) { - m_web_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastfred_state::imago_get_tile_info_web),this),TILEMAP_SCAN_ROWS,8,8,32,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastfred_state::imago_get_tile_info_bg),this), TILEMAP_SCAN_ROWS,8,8,32,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastfred_state::imago_get_tile_info_fg),this), TILEMAP_SCAN_ROWS,8,8,32,32); + m_web_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastfred_state::imago_get_tile_info_web)),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastfred_state::imago_get_tile_info_bg)), TILEMAP_SCAN_ROWS,8,8,32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastfred_state::imago_get_tile_info_fg)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/fastlane.cpp b/src/mame/video/fastlane.cpp index e9b212245f4..f67762b8276 100644 --- a/src/mame/video/fastlane.cpp +++ b/src/mame/video/fastlane.cpp @@ -87,8 +87,8 @@ TILE_GET_INFO_MEMBER(fastlane_state::get_tile_info1) void fastlane_state::video_start() { - m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastlane_state::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_layer1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fastlane_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastlane_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_layer1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fastlane_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_layer0->set_scroll_rows(32); diff --git a/src/mame/video/fcombat.cpp b/src/mame/video/fcombat.cpp index 859a4d6384f..ada01a16a16 100644 --- a/src/mame/video/fcombat.cpp +++ b/src/mame/video/fcombat.cpp @@ -96,7 +96,7 @@ void fcombat_state::fcombat_palette(palette_device &palette) const void fcombat_state::video_start() { - m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fcombat_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32 * 8 * 2, 32); + m_bgmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fcombat_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32 * 8 * 2, 32); } diff --git a/src/mame/video/finalizr.cpp b/src/mame/video/finalizr.cpp index e0f05132bb8..1e74a663a84 100644 --- a/src/mame/video/finalizr.cpp +++ b/src/mame/video/finalizr.cpp @@ -114,8 +114,8 @@ TILE_GET_INFO_MEMBER(finalizr_state::get_fg_tile_info) void finalizr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(finalizr_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(finalizr_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(*this, FUNC(finalizr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(finalizr_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/firetrap.cpp b/src/mame/video/firetrap.cpp index d395c85a5fa..3a99cf61b4e 100644 --- a/src/mame/video/firetrap.cpp +++ b/src/mame/video/firetrap.cpp @@ -122,9 +122,9 @@ TILE_GET_INFO_MEMBER(firetrap_state::get_bg2_tile_info) void firetrap_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrap_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(firetrap_state::get_fg_memory_offset),this), 8, 8, 32, 32); - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrap_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(firetrap_state::get_bg_memory_offset),this), 16, 16, 32, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrap_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(firetrap_state::get_bg_memory_offset),this), 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrap_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(firetrap_state::get_fg_memory_offset)), 8, 8, 32, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrap_state::get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(firetrap_state::get_bg_memory_offset)), 16, 16, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrap_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(firetrap_state::get_bg_memory_offset)), 16, 16, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_bg1_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/firetrk.cpp b/src/mame/video/firetrk.cpp index 29c92d3afbd..ed1808f375a 100644 --- a/src/mame/video/firetrk.cpp +++ b/src/mame/video/firetrk.cpp @@ -211,8 +211,8 @@ void firetrk_state::video_start() m_screen->register_screen_bitmap(m_helper1); m_screen->register_screen_bitmap(m_helper2); - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::firetrk_get_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::firetrk_get_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::firetrk_get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::firetrk_get_tile_info2)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); } @@ -221,8 +221,8 @@ VIDEO_START_MEMBER(firetrk_state,superbug) m_screen->register_screen_bitmap(m_helper1); m_screen->register_screen_bitmap(m_helper2); - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::superbug_get_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::superbug_get_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::superbug_get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::superbug_get_tile_info2)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); } @@ -231,8 +231,8 @@ VIDEO_START_MEMBER(firetrk_state,montecar) m_screen->register_screen_bitmap(m_helper1); m_screen->register_screen_bitmap(m_helper2); - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::montecar_get_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(firetrk_state::montecar_get_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::montecar_get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(firetrk_state::montecar_get_tile_info2)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); } diff --git a/src/mame/video/fitfight.cpp b/src/mame/video/fitfight.cpp index 720fb53eabd..edad1d5396f 100644 --- a/src/mame/video/fitfight.cpp +++ b/src/mame/video/fitfight.cpp @@ -95,13 +95,13 @@ WRITE16_MEMBER(fitfight_state::fof_txt_tileram_w) void fitfight_state::video_start() { - m_fof_bak_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fitfight_state::get_fof_bak_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 128, 32); + m_fof_bak_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fitfight_state::get_fof_bak_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 128, 32); /* opaque */ - m_fof_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fitfight_state::get_fof_mid_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 128, 32); + m_fof_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fitfight_state::get_fof_mid_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 128, 32); m_fof_mid_tilemap->set_transparent_pen(0); - m_fof_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fitfight_state::get_fof_txt_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 128, 32); + m_fof_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fitfight_state::get_fof_txt_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 128, 32); m_fof_txt_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/flkatck.cpp b/src/mame/video/flkatck.cpp index ee92aece1e4..49bb7374b74 100644 --- a/src/mame/video/flkatck.cpp +++ b/src/mame/video/flkatck.cpp @@ -69,8 +69,8 @@ TILE_GET_INFO_MEMBER(flkatck_state::get_tile_info_B) void flkatck_state::video_start() { - m_k007121_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flkatck_state::get_tile_info_A),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_k007121_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flkatck_state::get_tile_info_B),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_k007121_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flkatck_state::get_tile_info_A)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_k007121_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flkatck_state::get_tile_info_B)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/flstory.cpp b/src/mame/video/flstory.cpp index 8f0f811f8f5..18424efd135 100644 --- a/src/mame/video/flstory.cpp +++ b/src/mame/video/flstory.cpp @@ -55,7 +55,7 @@ TILE_GET_INFO_MEMBER(flstory_state::get_rumba_tile_info) VIDEO_START_MEMBER(flstory_state,flstory) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flstory_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_bg_tilemap->set_transparent_pen(15); m_bg_tilemap->set_transmask(0, 0x3fff, 0xc000); /* split type 0 has pens 0-13 transparent in front half */ m_bg_tilemap->set_transmask(1, 0x8000, 0x7fff); /* split type 1 has pen 15 transparent in front half */ @@ -72,7 +72,7 @@ VIDEO_START_MEMBER(flstory_state,flstory) VIDEO_START_MEMBER(flstory_state,rumba) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flstory_state::get_rumba_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_state::get_rumba_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_bg_tilemap->set_transparent_pen(15); m_bg_tilemap->set_transmask(0, 0x3fff, 0xc000); /* split type 0 has pens 0-13 transparent in front half */ m_bg_tilemap->set_transmask(1, 0x8000, 0x7fff); /* split type 1 has pen 15 transparent in front half */ @@ -89,7 +89,7 @@ VIDEO_START_MEMBER(flstory_state,rumba) VIDEO_START_MEMBER(flstory_state,victnine) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(flstory_state::victnine_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_state::victnine_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); m_paletteram.resize(m_palette->entries()); diff --git a/src/mame/video/freekick.cpp b/src/mame/video/freekick.cpp index a02f0068ad7..b579cf016da 100644 --- a/src/mame/video/freekick.cpp +++ b/src/mame/video/freekick.cpp @@ -18,7 +18,7 @@ TILE_GET_INFO_MEMBER(freekick_state::get_freek_tile_info) void freekick_state::video_start() { - m_freek_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(freekick_state::get_freek_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_freek_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(freekick_state::get_freek_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/fromanc2.cpp b/src/mame/video/fromanc2.cpp index 04e3e7601f9..3d1b0cd0aa6 100644 --- a/src/mame/video/fromanc2.cpp +++ b/src/mame/video/fromanc2.cpp @@ -257,14 +257,14 @@ WRITE16_MEMBER(fromanc2_state::fromanc4_gfxreg_2_w) VIDEO_START_MEMBER(fromanc2_state,fromanc2) { - m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<0, 0>, "v0_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<0, 1>, "v0_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<0, 2>, "v0_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<0, 3>, "v0_l3", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<1, 0>, "v1_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<1, 1>, "v1_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<1, 2>, "v1_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromanc2_get_tile_info<1, 3>, "v1_l3", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<0, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<0, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<0, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<0, 3>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<1, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<1, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<1, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromanc2_get_tile_info<1, 3>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); for (int screen = 0; screen < 2; screen++) { @@ -295,13 +295,13 @@ VIDEO_START_MEMBER(fromanc2_state,fromanc2) VIDEO_START_MEMBER(fromanc2_state,fromancr) { - m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 0>, "v0_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 1>, "v0_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 2>, "v0_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[0][3] = nullptr; - m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 0>, "v1_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 1>, "v1_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 2>, "v1_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[1][3] = nullptr; for (int screen = 0; screen < 2; screen++) @@ -331,13 +331,13 @@ VIDEO_START_MEMBER(fromanc2_state,fromancr) VIDEO_START_MEMBER(fromanc2_state,fromanc4) { - m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 0>, "v0_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); - m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 1>, "v0_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); - m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<0, 2>, "v0_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<0, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); m_tilemap[0][3] = nullptr; - m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 0>, "v1_l0", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); - m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 1>, "v1_l1", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); - m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fromanc2_state::fromancr_get_tile_info<1, 2>, "v1_l2", this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fromanc2_state::fromancr_get_tile_info<1, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); m_tilemap[1][3] = nullptr; for (int screen = 0; screen < 2; screen++) diff --git a/src/mame/video/fromance.cpp b/src/mame/video/fromance.cpp index eaad8257137..a9e84600c01 100644 --- a/src/mame/video/fromance.cpp +++ b/src/mame/video/fromance.cpp @@ -88,8 +88,8 @@ void fromance_state::init_common( ) VIDEO_START_MEMBER(fromance_state,fromance) { /* allocate tilemaps */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fromance_state::get_fromance_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fromance_state::get_fromance_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fromance_state::get_fromance_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fromance_state::get_fromance_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); init_common(); } @@ -97,8 +97,8 @@ VIDEO_START_MEMBER(fromance_state,fromance) VIDEO_START_MEMBER(fromance_state,nekkyoku) { /* allocate tilemaps */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fromance_state::get_nekkyoku_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fromance_state::get_nekkyoku_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fromance_state::get_nekkyoku_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fromance_state::get_nekkyoku_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); init_common(); } diff --git a/src/mame/video/funkybee.cpp b/src/mame/video/funkybee.cpp index b762dd4e256..007a0130578 100644 --- a/src/mame/video/funkybee.cpp +++ b/src/mame/video/funkybee.cpp @@ -85,7 +85,7 @@ TILEMAP_MAPPER_MEMBER(funkybee_state::funkybee_tilemap_scan) void funkybee_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(funkybee_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(funkybee_state::funkybee_tilemap_scan),this), 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(funkybee_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(funkybee_state::funkybee_tilemap_scan)), 8, 8, 32, 32); } void funkybee_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/funworld.cpp b/src/mame/video/funworld.cpp index 3bfdf3a1204..d56b5bae043 100644 --- a/src/mame/video/funworld.cpp +++ b/src/mame/video/funworld.cpp @@ -125,22 +125,22 @@ TILE_GET_INFO_MEMBER(funworld_state::get_bg_tile_info) void funworld_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(funworld_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 96, 29); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(funworld_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 96, 29); } void magicrd2_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(magicrd2_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 112, 34); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(magicrd2_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 112, 34); } void chinatow_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(chinatow_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 96, 31); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(chinatow_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 96, 31); } void multiwin_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(multiwin_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 96, 31); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(multiwin_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 96, 31); } diff --git a/src/mame/video/funybubl.cpp b/src/mame/video/funybubl.cpp index 1e9103156b2..f2116510cea 100644 --- a/src/mame/video/funybubl.cpp +++ b/src/mame/video/funybubl.cpp @@ -29,7 +29,7 @@ TILE_GET_INFO_MEMBER(funybubl_state::get_tile_info) void funybubl_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(funybubl_state::get_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(funybubl_state::get_tile_info)),TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/fuukifg.cpp b/src/mame/video/fuukifg.cpp index 4388811fbb7..2add15d2b8a 100644 --- a/src/mame/video/fuukifg.cpp +++ b/src/mame/video/fuukifg.cpp @@ -13,6 +13,8 @@ fuukivid_device::fuukivid_device(const machine_config &mconfig, const char *tag, : device_t(mconfig, FUUKI_VIDEO, tag, owner, clock) , device_gfx_interface(mconfig, *this, nullptr) , device_video_interface(mconfig, *this) + , m_tile_cb(*this) + , m_colpri_cb(*this) , m_gfx_region(*this, DEVICE_SELF) , m_colbase(0) , m_colnum(0x100) @@ -34,8 +36,8 @@ void fuukivid_device::device_start() }; layout_16x16x4.total = m_gfx_region->bytes() / ((16*16*4) / 8); - m_tile_cb.bind_relative_to(*owner()); - m_colpri_cb.bind_relative_to(*owner()); + m_tile_cb.resolve(); + m_colpri_cb.resolve(); set_gfx(0, std::make_unique<gfx_element>(&palette(), layout_16x16x4, m_gfx_region->base(), 0, m_colnum, m_colbase)); } diff --git a/src/mame/video/fuukifg.h b/src/mame/video/fuukifg.h index 2c2568597bb..2fb522e257f 100644 --- a/src/mame/video/fuukifg.h +++ b/src/mame/video/fuukifg.h @@ -5,19 +5,19 @@ #pragma once -typedef device_delegate<void (u32 &code)> fuukivid_tile_delegate; -typedef device_delegate<void (u32 &colour, u32 &pri_mask)> fuukivid_colpri_cb_delegate; - class fuukivid_device : public device_t, public device_gfx_interface, public device_video_interface { public: + typedef device_delegate<void (u32 &code)> tile_delegate; + typedef device_delegate<void (u32 &colour, u32 &pri_mask)> colpri_cb_delegate; + fuukivid_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration void set_color_base(u16 base) { m_colbase = base; } void set_color_num(u16 num) { m_colnum = num; } - template <typename... T> void set_tile_callback(T &&... args) { m_tile_cb = fuukivid_tile_delegate(std::forward<T>(args)...); } - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = fuukivid_colpri_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_callback(T &&... args) { m_tile_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, bool flip_screen, u16 *spriteram, u32 size); @@ -26,8 +26,8 @@ protected: virtual void device_reset() override; private: - fuukivid_tile_delegate m_tile_cb; - fuukivid_colpri_cb_delegate m_colpri_cb; + tile_delegate m_tile_cb; + colpri_cb_delegate m_colpri_cb; required_memory_region m_gfx_region; u16 m_colbase; u16 m_colnum; diff --git a/src/mame/video/fuukifg2.cpp b/src/mame/video/fuukifg2.cpp index c363e6fcfc4..fc9aeb1c6c3 100644 --- a/src/mame/video/fuukifg2.cpp +++ b/src/mame/video/fuukifg2.cpp @@ -75,9 +75,9 @@ void fuuki16_state::fuuki16_palette(palette_device &palette) const void fuuki16_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fuuki16_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fuuki16_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(fuuki16_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fuuki16_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fuuki16_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(fuuki16_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[0]->set_transparent_pen(0x0f); // 4 bits m_tilemap[1]->set_transparent_pen(0xff); // 8 bits diff --git a/src/mame/video/fuukifg3.cpp b/src/mame/video/fuukifg3.cpp index 3295cf038ad..f9a1fe465c7 100644 --- a/src/mame/video/fuukifg3.cpp +++ b/src/mame/video/fuukifg3.cpp @@ -73,9 +73,9 @@ void fuuki32_state::video_start() m_buf_spriteram[0] = make_unique_clear<u16[]>(spriteram_size / 2); m_buf_spriteram[1] = make_unique_clear<u16[]>(spriteram_size / 2); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fuuki32_state::get_tile_info<0, 4>, "layer0", this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fuuki32_state::get_tile_info<1, 4>, "layer1", this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&fuuki32_state::get_tile_info<2, 0>, "layer2", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fuuki32_state::get_tile_info<0, 4>))), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fuuki32_state::get_tile_info<1, 4>))), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&fuuki32_state::get_tile_info<2, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[0]->set_transparent_pen(0xff); // 8 bits m_tilemap[1]->set_transparent_pen(0xff); // 8 bits diff --git a/src/mame/video/gaelco.cpp b/src/mame/video/gaelco.cpp index e7cc23e3938..ae62d81f0a2 100644 --- a/src/mame/video/gaelco.cpp +++ b/src/mame/video/gaelco.cpp @@ -68,17 +68,17 @@ void gaelco_state::vram_w(offs_t offset, u16 data, u16 mem_mask) VIDEO_START_MEMBER(gaelco_state,bigkarnk) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[0]->set_transmask(0, 0xff01, 0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */ - m_tilemap[1]->set_transmask(0, 0xff01, 0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */ + m_tilemap[0]->set_transmask(0, 0xff01, 0x00ff); // pens 1-7 opaque, pens 0, 8-15 transparent + m_tilemap[1]->set_transmask(0, 0xff01, 0x00ff); // pens 1-7 opaque, pens 0, 8-15 transparent } VIDEO_START_MEMBER(gaelco_state,maniacsq) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/gaelco2.cpp b/src/mame/video/gaelco2.cpp index 3c6e5403da8..856ce7201c5 100644 --- a/src/mame/video/gaelco2.cpp +++ b/src/mame/video/gaelco2.cpp @@ -258,8 +258,8 @@ VIDEO_START_MEMBER(gaelco2_state,gaelco2) m_videoram = m_spriteram->live(); /* create tilemaps */ - m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco2_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco2_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco2_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco2_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); /* set tilemap properties */ m_pant[0]->set_transparent_pen(0); @@ -278,8 +278,8 @@ VIDEO_START_MEMBER(gaelco2_state,gaelco2_dual) m_videoram = m_spriteram->live(); /* create tilemaps */ - m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco2_state::get_tile_info_dual<0>),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaelco2_state::get_tile_info_dual<1>),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco2_state::get_tile_info_dual<0>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaelco2_state::get_tile_info_dual<1>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); /* set tilemap properties */ m_pant[0]->set_transparent_pen(0); diff --git a/src/mame/video/gaiden.cpp b/src/mame/video/gaiden.cpp index 2dd404ec0b1..4deea34fe06 100644 --- a/src/mame/video/gaiden.cpp +++ b/src/mame/video/gaiden.cpp @@ -76,9 +76,9 @@ VIDEO_START_MEMBER(gaiden_state,gaiden) m_screen->register_screen_bitmap(m_tile_bitmap_fg); m_screen->register_screen_bitmap(m_tile_bitmap_tx); - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_fg_tile_info_raiga),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_fg_tile_info_raiga)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_background->set_transparent_pen(0); // m_foreground->set_transparent_pen(0); @@ -100,9 +100,9 @@ VIDEO_START_MEMBER(gaiden_state,raiga) m_screen->register_screen_bitmap(m_tile_bitmap_fg); m_screen->register_screen_bitmap(m_tile_bitmap_tx); - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_fg_tile_info_raiga),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_fg_tile_info_raiga)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_background->set_transparent_pen(0); // m_foreground->set_transparent_pen(0); @@ -116,9 +116,9 @@ VIDEO_START_MEMBER(gaiden_state,raiga) VIDEO_START_MEMBER(gaiden_state,drgnbowl) { /* set up tile layers */ - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gaiden_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaiden_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_foreground->set_transparent_pen(15); m_text_layer->set_transparent_pen(15); diff --git a/src/mame/video/galaga.cpp b/src/mame/video/galaga.cpp index 7de370c1713..23fe7653665 100644 --- a/src/mame/video/galaga.cpp +++ b/src/mame/video/galaga.cpp @@ -41,271 +41,267 @@ There are 63 stars in each set, 126 displayed at any one time galaga_state::star const galaga_state::s_star_seed_tab[252]= { -/* also shared by Bosconian */ - -/* star set 0 */ - -{0x0085,0x0006,0x35, 0x00}, -{0x008F,0x0008,0x30, 0x00}, -{0x00E5,0x001B,0x07, 0x00}, -{0x0022,0x001C,0x31, 0x00}, -{0x00E5,0x0025,0x1D, 0x00}, -{0x0015,0x0026,0x29, 0x00}, -{0x0080,0x002D,0x3B, 0x00}, -{0x0097,0x002E,0x1C, 0x00}, -{0x00BA,0x003B,0x05, 0x00}, -{0x0036,0x003D,0x36, 0x00}, -{0x0057,0x0044,0x09, 0x00}, -{0x00CF,0x0044,0x3D, 0x00}, -{0x0061,0x004E,0x27, 0x00}, -{0x0087,0x0064,0x1A, 0x00}, -{0x00D6,0x0064,0x17, 0x00}, -{0x000B,0x006C,0x3C, 0x00}, -{0x0006,0x006D,0x24, 0x00}, -{0x0018,0x006E,0x3A, 0x00}, -{0x00A9,0x0079,0x23, 0x00}, -{0x008A,0x007B,0x11, 0x00}, -{0x00D6,0x0080,0x0C, 0x00}, -{0x0067,0x0082,0x3F, 0x00}, -{0x0039,0x0083,0x38, 0x00}, -{0x0072,0x0083,0x14, 0x00}, -{0x00EC,0x0084,0x16, 0x00}, -{0x008E,0x0085,0x10, 0x00}, -{0x0020,0x0088,0x25, 0x00}, -{0x0095,0x008A,0x0F, 0x00}, -{0x000E,0x008D,0x00, 0x00}, -{0x0006,0x0091,0x2E, 0x00}, -{0x0007,0x0094,0x0D, 0x00}, -{0x00AE,0x0097,0x0B, 0x00}, -{0x0000,0x0098,0x2D, 0x00}, -{0x0086,0x009B,0x01, 0x00}, -{0x0058,0x00A1,0x34, 0x00}, -{0x00FE,0x00A1,0x3E, 0x00}, -{0x00A2,0x00A8,0x1F, 0x00}, -{0x0041,0x00AA,0x0A, 0x00}, -{0x003F,0x00AC,0x32, 0x00}, -{0x00DE,0x00AC,0x03, 0x00}, -{0x00D4,0x00B9,0x26, 0x00}, -{0x006D,0x00BB,0x1B, 0x00}, -{0x0062,0x00BD,0x39, 0x00}, -{0x00C9,0x00BE,0x18, 0x00}, -{0x006C,0x00C1,0x04, 0x00}, -{0x0059,0x00C3,0x21, 0x00}, -{0x0060,0x00CC,0x0E, 0x00}, -{0x0091,0x00CC,0x12, 0x00}, -{0x003F,0x00CF,0x06, 0x00}, -{0x00F7,0x00CF,0x22, 0x00}, -{0x0044,0x00D0,0x33, 0x00}, -{0x0034,0x00D2,0x08, 0x00}, -{0x00D3,0x00D9,0x20, 0x00}, -{0x0071,0x00DD,0x37, 0x00}, -{0x0073,0x00E1,0x2C, 0x00}, -{0x00B9,0x00E3,0x2F, 0x00}, -{0x00A9,0x00E4,0x13, 0x00}, -{0x00D3,0x00E7,0x19, 0x00}, -{0x0037,0x00ED,0x02, 0x00}, -{0x00BD,0x00F4,0x15, 0x00}, -{0x000F,0x00F6,0x28, 0x00}, -{0x004F,0x00F7,0x2B, 0x00}, -{0x00FB,0x00FF,0x2A, 0x00}, - -/* star set 1 */ - -{0x00FE,0x0004,0x3D, 0x01}, -{0x00C4,0x0006,0x10, 0x01}, -{0x001E,0x0007,0x2D, 0x01}, -{0x0083,0x000B,0x1F, 0x01}, -{0x002E,0x000D,0x3C, 0x01}, -{0x001F,0x000E,0x00, 0x01}, -{0x00D8,0x000E,0x2C, 0x01}, -{0x0003,0x000F,0x17, 0x01}, -{0x0095,0x0011,0x3F, 0x01}, -{0x006A,0x0017,0x35, 0x01}, -{0x00CC,0x0017,0x02, 0x01}, -{0x0000,0x0018,0x32, 0x01}, -{0x0092,0x001D,0x36, 0x01}, -{0x00E3,0x0021,0x04, 0x01}, -{0x002F,0x002D,0x37, 0x01}, -{0x00F0,0x002F,0x0C, 0x01}, -{0x009B,0x003E,0x06, 0x01}, -{0x00A4,0x004C,0x07, 0x01}, -{0x00EA,0x004D,0x13, 0x01}, -{0x0084,0x004E,0x21, 0x01}, -{0x0033,0x0052,0x0F, 0x01}, -{0x0070,0x0053,0x0E, 0x01}, -{0x0006,0x0059,0x08, 0x01}, -{0x0081,0x0060,0x28, 0x01}, -{0x0037,0x0061,0x29, 0x01}, -{0x008F,0x0067,0x2F, 0x01}, -{0x001B,0x006A,0x1D, 0x01}, -{0x00BF,0x007C,0x12, 0x01}, -{0x0051,0x007F,0x31, 0x01}, -{0x0061,0x0086,0x25, 0x01}, -{0x006A,0x008F,0x0D, 0x01}, -{0x006A,0x0091,0x19, 0x01}, -{0x0090,0x0092,0x05, 0x01}, -{0x003B,0x0096,0x24, 0x01}, -{0x008C,0x0097,0x0A, 0x01}, -{0x0006,0x0099,0x03, 0x01}, -{0x0038,0x0099,0x38, 0x01}, -{0x00A8,0x0099,0x18, 0x01}, -{0x0076,0x00A6,0x20, 0x01}, -{0x00AD,0x00A6,0x1C, 0x01}, -{0x00EC,0x00A6,0x1E, 0x01}, -{0x0086,0x00AC,0x15, 0x01}, -{0x0078,0x00AF,0x3E, 0x01}, -{0x007B,0x00B3,0x09, 0x01}, -{0x0027,0x00B8,0x39, 0x01}, -{0x0088,0x00C2,0x23, 0x01}, -{0x0044,0x00C3,0x3A, 0x01}, -{0x00CF,0x00C5,0x34, 0x01}, -{0x0035,0x00C9,0x30, 0x01}, -{0x006E,0x00D1,0x3B, 0x01}, -{0x00D6,0x00D7,0x16, 0x01}, -{0x003A,0x00D9,0x2B, 0x01}, -{0x00AB,0x00E0,0x11, 0x01}, -{0x00E0,0x00E2,0x1B, 0x01}, -{0x006F,0x00E6,0x0B, 0x01}, -{0x00B8,0x00E8,0x14, 0x01}, -{0x00D9,0x00E8,0x1A, 0x01}, -{0x00F9,0x00E8,0x22, 0x01}, -{0x0004,0x00F1,0x2E, 0x01}, -{0x0049,0x00F8,0x26, 0x01}, -{0x0010,0x00F9,0x01, 0x01}, -{0x0039,0x00FB,0x33, 0x01}, -{0x0028,0x00FC,0x27, 0x01}, - -/* star set 2 */ - -{0x00FA,0x0006,0x19, 0x02}, -{0x00E4,0x0007,0x2D, 0x02}, -{0x0072,0x000A,0x03, 0x02}, -{0x0084,0x001B,0x00, 0x02}, -{0x00BA,0x001D,0x29, 0x02}, -{0x00E3,0x0022,0x04, 0x02}, -{0x00D1,0x0026,0x2A, 0x02}, -{0x0089,0x0032,0x30, 0x02}, -{0x005B,0x0036,0x27, 0x02}, -{0x0084,0x003A,0x36, 0x02}, -{0x0053,0x003F,0x0D, 0x02}, -{0x0008,0x0040,0x1D, 0x02}, -{0x0055,0x0040,0x1A, 0x02}, -{0x00AA,0x0041,0x31, 0x02}, -{0x00FB,0x0041,0x2B, 0x02}, -{0x00BC,0x0046,0x16, 0x02}, -{0x0093,0x0052,0x39, 0x02}, -{0x00B9,0x0057,0x10, 0x02}, -{0x0054,0x0059,0x28, 0x02}, -{0x00E6,0x005A,0x01, 0x02}, -{0x00A7,0x005D,0x1B, 0x02}, -{0x002D,0x005E,0x35, 0x02}, -{0x0014,0x0062,0x21, 0x02}, -{0x0069,0x006D,0x1F, 0x02}, -{0x00CE,0x006F,0x0B, 0x02}, -{0x00DF,0x0075,0x2F, 0x02}, -{0x00CB,0x0077,0x12, 0x02}, -{0x004E,0x007C,0x23, 0x02}, -{0x004A,0x0084,0x0F, 0x02}, -{0x0012,0x0086,0x25, 0x02}, -{0x0068,0x008C,0x32, 0x02}, -{0x0003,0x0095,0x20, 0x02}, -{0x000A,0x009C,0x17, 0x02}, -{0x005B,0x00A3,0x08, 0x02}, -{0x005F,0x00A4,0x3E, 0x02}, -{0x0072,0x00A4,0x2E, 0x02}, -{0x00CC,0x00A6,0x06, 0x02}, -{0x008A,0x00AB,0x0C, 0x02}, -{0x00E0,0x00AD,0x26, 0x02}, -{0x00F3,0x00AF,0x0A, 0x02}, -{0x0075,0x00B4,0x13, 0x02}, -{0x0068,0x00B7,0x11, 0x02}, -{0x006D,0x00C2,0x2C, 0x02}, -{0x0076,0x00C3,0x14, 0x02}, -{0x00CF,0x00C4,0x1E, 0x02}, -{0x0004,0x00C5,0x1C, 0x02}, -{0x0013,0x00C6,0x3F, 0x02}, -{0x00B9,0x00C7,0x3C, 0x02}, -{0x0005,0x00D7,0x34, 0x02}, -{0x0095,0x00D7,0x3A, 0x02}, -{0x00FC,0x00D8,0x02, 0x02}, -{0x00E7,0x00DC,0x09, 0x02}, -{0x001D,0x00E1,0x05, 0x02}, -{0x0005,0x00E6,0x33, 0x02}, -{0x001C,0x00E9,0x3B, 0x02}, -{0x00A2,0x00ED,0x37, 0x02}, -{0x0028,0x00EE,0x07, 0x02}, -{0x00DD,0x00EF,0x18, 0x02}, -{0x006D,0x00F0,0x38, 0x02}, -{0x00A1,0x00F2,0x0E, 0x02}, -{0x0074,0x00F7,0x3D, 0x02}, -{0x0069,0x00F9,0x22, 0x02}, -{0x003F,0x00FF,0x24, 0x02}, - -/* star set 3 */ - -{0x0071,0x0010,0x34, 0x03}, -{0x00AF,0x0011,0x23, 0x03}, -{0x00A0,0x0014,0x26, 0x03}, -{0x0002,0x0017,0x02, 0x03}, -{0x004B,0x0019,0x31, 0x03}, -{0x0093,0x001C,0x0E, 0x03}, -{0x001B,0x001E,0x25, 0x03}, -{0x0032,0x0020,0x2E, 0x03}, -{0x00EE,0x0020,0x3A, 0x03}, -{0x0079,0x0022,0x2F, 0x03}, -{0x006C,0x0023,0x17, 0x03}, -{0x00BC,0x0025,0x11, 0x03}, -{0x0041,0x0029,0x30, 0x03}, -{0x001C,0x002E,0x32, 0x03}, -{0x00B9,0x0031,0x01, 0x03}, -{0x0083,0x0032,0x05, 0x03}, -{0x0095,0x003A,0x12, 0x03}, -{0x000D,0x003F,0x07, 0x03}, -{0x0020,0x0041,0x33, 0x03}, -{0x0092,0x0045,0x2C, 0x03}, -{0x00D4,0x0047,0x08, 0x03}, -{0x00A1,0x004B,0x2D, 0x03}, -{0x00D2,0x004B,0x3B, 0x03}, -{0x00D6,0x0052,0x24, 0x03}, -{0x009A,0x005F,0x1C, 0x03}, -{0x0016,0x0060,0x3D, 0x03}, -{0x001A,0x0063,0x1F, 0x03}, -{0x00CD,0x0066,0x28, 0x03}, -{0x00FF,0x0067,0x10, 0x03}, -{0x0035,0x0069,0x20, 0x03}, -{0x008F,0x006C,0x04, 0x03}, -{0x00CA,0x006C,0x2A, 0x03}, -{0x005A,0x0074,0x09, 0x03}, -{0x0060,0x0078,0x38, 0x03}, -{0x0072,0x0079,0x1E, 0x03}, -{0x0037,0x007F,0x29, 0x03}, -{0x0012,0x0080,0x14, 0x03}, -{0x0029,0x0082,0x2B, 0x03}, -{0x0084,0x0098,0x36, 0x03}, -{0x0032,0x0099,0x37, 0x03}, -{0x00BB,0x00A0,0x19, 0x03}, -{0x003E,0x00A3,0x3E, 0x03}, -{0x004A,0x00A6,0x1A, 0x03}, -{0x0029,0x00A7,0x21, 0x03}, -{0x009D,0x00B7,0x22, 0x03}, -{0x006C,0x00B9,0x15, 0x03}, -{0x000C,0x00C0,0x0A, 0x03}, -{0x00C2,0x00C3,0x0F, 0x03}, -{0x002F,0x00C9,0x0D, 0x03}, -{0x00D2,0x00CE,0x16, 0x03}, -{0x00F3,0x00CE,0x0B, 0x03}, -{0x0075,0x00CF,0x27, 0x03}, -{0x001A,0x00D5,0x35, 0x03}, -{0x0026,0x00D6,0x39, 0x03}, -{0x0080,0x00DA,0x3C, 0x03}, -{0x00A9,0x00DD,0x00, 0x03}, -{0x00BC,0x00EB,0x03, 0x03}, -{0x0032,0x00EF,0x1B, 0x03}, -{0x0067,0x00F0,0x3F, 0x03}, -{0x00EF,0x00F1,0x18, 0x03}, -{0x00A8,0x00F3,0x0C, 0x03}, -{0x00DE,0x00F9,0x1D, 0x03}, -{0x002C,0x00FA,0x13, 0x03} + // also shared by Bosconian + + // star set 0 + {0x0085, 0x0006, 0x35, 0x00}, + {0x008f, 0x0008, 0x30, 0x00}, + {0x00e5, 0x001b, 0x07, 0x00}, + {0x0022, 0x001c, 0x31, 0x00}, + {0x00e5, 0x0025, 0x1d, 0x00}, + {0x0015, 0x0026, 0x29, 0x00}, + {0x0080, 0x002d, 0x3b, 0x00}, + {0x0097, 0x002e, 0x1c, 0x00}, + {0x00ba, 0x003b, 0x05, 0x00}, + {0x0036, 0x003d, 0x36, 0x00}, + {0x0057, 0x0044, 0x09, 0x00}, + {0x00cf, 0x0044, 0x3d, 0x00}, + {0x0061, 0x004e, 0x27, 0x00}, + {0x0087, 0x0064, 0x1a, 0x00}, + {0x00d6, 0x0064, 0x17, 0x00}, + {0x000b, 0x006c, 0x3c, 0x00}, + {0x0006, 0x006d, 0x24, 0x00}, + {0x0018, 0x006e, 0x3a, 0x00}, + {0x00a9, 0x0079, 0x23, 0x00}, + {0x008a, 0x007b, 0x11, 0x00}, + {0x00d6, 0x0080, 0x0c, 0x00}, + {0x0067, 0x0082, 0x3f, 0x00}, + {0x0039, 0x0083, 0x38, 0x00}, + {0x0072, 0x0083, 0x14, 0x00}, + {0x00ec, 0x0084, 0x16, 0x00}, + {0x008e, 0x0085, 0x10, 0x00}, + {0x0020, 0x0088, 0x25, 0x00}, + {0x0095, 0x008a, 0x0f, 0x00}, + {0x000e, 0x008d, 0x00, 0x00}, + {0x0006, 0x0091, 0x2e, 0x00}, + {0x0007, 0x0094, 0x0d, 0x00}, + {0x00ae, 0x0097, 0x0b, 0x00}, + {0x0000, 0x0098, 0x2d, 0x00}, + {0x0086, 0x009b, 0x01, 0x00}, + {0x0058, 0x00a1, 0x34, 0x00}, + {0x00fe, 0x00a1, 0x3e, 0x00}, + {0x00a2, 0x00a8, 0x1f, 0x00}, + {0x0041, 0x00aa, 0x0a, 0x00}, + {0x003f, 0x00ac, 0x32, 0x00}, + {0x00de, 0x00ac, 0x03, 0x00}, + {0x00d4, 0x00b9, 0x26, 0x00}, + {0x006d, 0x00bb, 0x1b, 0x00}, + {0x0062, 0x00bd, 0x39, 0x00}, + {0x00c9, 0x00be, 0x18, 0x00}, + {0x006c, 0x00c1, 0x04, 0x00}, + {0x0059, 0x00c3, 0x21, 0x00}, + {0x0060, 0x00cc, 0x0e, 0x00}, + {0x0091, 0x00cc, 0x12, 0x00}, + {0x003f, 0x00cf, 0x06, 0x00}, + {0x00f7, 0x00cf, 0x22, 0x00}, + {0x0044, 0x00d0, 0x33, 0x00}, + {0x0034, 0x00d2, 0x08, 0x00}, + {0x00d3, 0x00d9, 0x20, 0x00}, + {0x0071, 0x00dd, 0x37, 0x00}, + {0x0073, 0x00e1, 0x2c, 0x00}, + {0x00b9, 0x00e3, 0x2f, 0x00}, + {0x00a9, 0x00e4, 0x13, 0x00}, + {0x00d3, 0x00e7, 0x19, 0x00}, + {0x0037, 0x00ed, 0x02, 0x00}, + {0x00bd, 0x00f4, 0x15, 0x00}, + {0x000f, 0x00f6, 0x28, 0x00}, + {0x004f, 0x00f7, 0x2b, 0x00}, + {0x00fb, 0x00ff, 0x2a, 0x00}, + + // star set 1 + {0x00fe, 0x0004, 0x3d, 0x01}, + {0x00c4, 0x0006, 0x10, 0x01}, + {0x001e, 0x0007, 0x2d, 0x01}, + {0x0083, 0x000b, 0x1f, 0x01}, + {0x002e, 0x000d, 0x3c, 0x01}, + {0x001f, 0x000e, 0x00, 0x01}, + {0x00d8, 0x000e, 0x2c, 0x01}, + {0x0003, 0x000f, 0x17, 0x01}, + {0x0095, 0x0011, 0x3f, 0x01}, + {0x006a, 0x0017, 0x35, 0x01}, + {0x00cc, 0x0017, 0x02, 0x01}, + {0x0000, 0x0018, 0x32, 0x01}, + {0x0092, 0x001d, 0x36, 0x01}, + {0x00e3, 0x0021, 0x04, 0x01}, + {0x002f, 0x002d, 0x37, 0x01}, + {0x00f0, 0x002f, 0x0c, 0x01}, + {0x009b, 0x003e, 0x06, 0x01}, + {0x00a4, 0x004c, 0x07, 0x01}, + {0x00ea, 0x004d, 0x13, 0x01}, + {0x0084, 0x004e, 0x21, 0x01}, + {0x0033, 0x0052, 0x0f, 0x01}, + {0x0070, 0x0053, 0x0e, 0x01}, + {0x0006, 0x0059, 0x08, 0x01}, + {0x0081, 0x0060, 0x28, 0x01}, + {0x0037, 0x0061, 0x29, 0x01}, + {0x008f, 0x0067, 0x2f, 0x01}, + {0x001b, 0x006a, 0x1d, 0x01}, + {0x00bf, 0x007c, 0x12, 0x01}, + {0x0051, 0x007f, 0x31, 0x01}, + {0x0061, 0x0086, 0x25, 0x01}, + {0x006a, 0x008f, 0x0d, 0x01}, + {0x006a, 0x0091, 0x19, 0x01}, + {0x0090, 0x0092, 0x05, 0x01}, + {0x003b, 0x0096, 0x24, 0x01}, + {0x008c, 0x0097, 0x0a, 0x01}, + {0x0006, 0x0099, 0x03, 0x01}, + {0x0038, 0x0099, 0x38, 0x01}, + {0x00a8, 0x0099, 0x18, 0x01}, + {0x0076, 0x00a6, 0x20, 0x01}, + {0x00ad, 0x00a6, 0x1c, 0x01}, + {0x00ec, 0x00a6, 0x1e, 0x01}, + {0x0086, 0x00ac, 0x15, 0x01}, + {0x0078, 0x00af, 0x3e, 0x01}, + {0x007b, 0x00b3, 0x09, 0x01}, + {0x0027, 0x00b8, 0x39, 0x01}, + {0x0088, 0x00c2, 0x23, 0x01}, + {0x0044, 0x00c3, 0x3a, 0x01}, + {0x00cf, 0x00c5, 0x34, 0x01}, + {0x0035, 0x00c9, 0x30, 0x01}, + {0x006e, 0x00d1, 0x3b, 0x01}, + {0x00d6, 0x00d7, 0x16, 0x01}, + {0x003a, 0x00d9, 0x2b, 0x01}, + {0x00ab, 0x00e0, 0x11, 0x01}, + {0x00e0, 0x00e2, 0x1b, 0x01}, + {0x006f, 0x00e6, 0x0b, 0x01}, + {0x00b8, 0x00e8, 0x14, 0x01}, + {0x00d9, 0x00e8, 0x1a, 0x01}, + {0x00f9, 0x00e8, 0x22, 0x01}, + {0x0004, 0x00f1, 0x2e, 0x01}, + {0x0049, 0x00f8, 0x26, 0x01}, + {0x0010, 0x00f9, 0x01, 0x01}, + {0x0039, 0x00fb, 0x33, 0x01}, + {0x0028, 0x00fc, 0x27, 0x01}, + + // star set 2 + {0x00fa, 0x0006, 0x19, 0x02}, + {0x00e4, 0x0007, 0x2d, 0x02}, + {0x0072, 0x000a, 0x03, 0x02}, + {0x0084, 0x001b, 0x00, 0x02}, + {0x00ba, 0x001d, 0x29, 0x02}, + {0x00e3, 0x0022, 0x04, 0x02}, + {0x00d1, 0x0026, 0x2a, 0x02}, + {0x0089, 0x0032, 0x30, 0x02}, + {0x005b, 0x0036, 0x27, 0x02}, + {0x0084, 0x003a, 0x36, 0x02}, + {0x0053, 0x003f, 0x0d, 0x02}, + {0x0008, 0x0040, 0x1d, 0x02}, + {0x0055, 0x0040, 0x1a, 0x02}, + {0x00aa, 0x0041, 0x31, 0x02}, + {0x00fb, 0x0041, 0x2b, 0x02}, + {0x00bc, 0x0046, 0x16, 0x02}, + {0x0093, 0x0052, 0x39, 0x02}, + {0x00b9, 0x0057, 0x10, 0x02}, + {0x0054, 0x0059, 0x28, 0x02}, + {0x00e6, 0x005a, 0x01, 0x02}, + {0x00a7, 0x005d, 0x1b, 0x02}, + {0x002d, 0x005e, 0x35, 0x02}, + {0x0014, 0x0062, 0x21, 0x02}, + {0x0069, 0x006d, 0x1f, 0x02}, + {0x00ce, 0x006f, 0x0b, 0x02}, + {0x00df, 0x0075, 0x2f, 0x02}, + {0x00cb, 0x0077, 0x12, 0x02}, + {0x004e, 0x007c, 0x23, 0x02}, + {0x004a, 0x0084, 0x0f, 0x02}, + {0x0012, 0x0086, 0x25, 0x02}, + {0x0068, 0x008c, 0x32, 0x02}, + {0x0003, 0x0095, 0x20, 0x02}, + {0x000a, 0x009c, 0x17, 0x02}, + {0x005b, 0x00a3, 0x08, 0x02}, + {0x005f, 0x00a4, 0x3e, 0x02}, + {0x0072, 0x00a4, 0x2e, 0x02}, + {0x00cc, 0x00a6, 0x06, 0x02}, + {0x008a, 0x00ab, 0x0c, 0x02}, + {0x00e0, 0x00ad, 0x26, 0x02}, + {0x00f3, 0x00af, 0x0a, 0x02}, + {0x0075, 0x00b4, 0x13, 0x02}, + {0x0068, 0x00b7, 0x11, 0x02}, + {0x006d, 0x00c2, 0x2c, 0x02}, + {0x0076, 0x00c3, 0x14, 0x02}, + {0x00cf, 0x00c4, 0x1e, 0x02}, + {0x0004, 0x00c5, 0x1c, 0x02}, + {0x0013, 0x00c6, 0x3f, 0x02}, + {0x00b9, 0x00c7, 0x3c, 0x02}, + {0x0005, 0x00d7, 0x34, 0x02}, + {0x0095, 0x00d7, 0x3a, 0x02}, + {0x00fc, 0x00d8, 0x02, 0x02}, + {0x00e7, 0x00dc, 0x09, 0x02}, + {0x001d, 0x00e1, 0x05, 0x02}, + {0x0005, 0x00e6, 0x33, 0x02}, + {0x001c, 0x00e9, 0x3b, 0x02}, + {0x00a2, 0x00ed, 0x37, 0x02}, + {0x0028, 0x00ee, 0x07, 0x02}, + {0x00dd, 0x00ef, 0x18, 0x02}, + {0x006d, 0x00f0, 0x38, 0x02}, + {0x00a1, 0x00f2, 0x0e, 0x02}, + {0x0074, 0x00f7, 0x3d, 0x02}, + {0x0069, 0x00f9, 0x22, 0x02}, + {0x003f, 0x00ff, 0x24, 0x02}, + + // star set 3 + {0x0071, 0x0010, 0x34, 0x03}, + {0x00af, 0x0011, 0x23, 0x03}, + {0x00a0, 0x0014, 0x26, 0x03}, + {0x0002, 0x0017, 0x02, 0x03}, + {0x004b, 0x0019, 0x31, 0x03}, + {0x0093, 0x001c, 0x0e, 0x03}, + {0x001b, 0x001e, 0x25, 0x03}, + {0x0032, 0x0020, 0x2e, 0x03}, + {0x00ee, 0x0020, 0x3a, 0x03}, + {0x0079, 0x0022, 0x2f, 0x03}, + {0x006c, 0x0023, 0x17, 0x03}, + {0x00bc, 0x0025, 0x11, 0x03}, + {0x0041, 0x0029, 0x30, 0x03}, + {0x001c, 0x002e, 0x32, 0x03}, + {0x00b9, 0x0031, 0x01, 0x03}, + {0x0083, 0x0032, 0x05, 0x03}, + {0x0095, 0x003a, 0x12, 0x03}, + {0x000d, 0x003f, 0x07, 0x03}, + {0x0020, 0x0041, 0x33, 0x03}, + {0x0092, 0x0045, 0x2c, 0x03}, + {0x00d4, 0x0047, 0x08, 0x03}, + {0x00a1, 0x004b, 0x2d, 0x03}, + {0x00d2, 0x004b, 0x3b, 0x03}, + {0x00d6, 0x0052, 0x24, 0x03}, + {0x009a, 0x005f, 0x1c, 0x03}, + {0x0016, 0x0060, 0x3d, 0x03}, + {0x001a, 0x0063, 0x1f, 0x03}, + {0x00cd, 0x0066, 0x28, 0x03}, + {0x00ff, 0x0067, 0x10, 0x03}, + {0x0035, 0x0069, 0x20, 0x03}, + {0x008f, 0x006c, 0x04, 0x03}, + {0x00ca, 0x006c, 0x2a, 0x03}, + {0x005a, 0x0074, 0x09, 0x03}, + {0x0060, 0x0078, 0x38, 0x03}, + {0x0072, 0x0079, 0x1e, 0x03}, + {0x0037, 0x007f, 0x29, 0x03}, + {0x0012, 0x0080, 0x14, 0x03}, + {0x0029, 0x0082, 0x2b, 0x03}, + {0x0084, 0x0098, 0x36, 0x03}, + {0x0032, 0x0099, 0x37, 0x03}, + {0x00bb, 0x00a0, 0x19, 0x03}, + {0x003e, 0x00a3, 0x3e, 0x03}, + {0x004a, 0x00a6, 0x1a, 0x03}, + {0x0029, 0x00a7, 0x21, 0x03}, + {0x009d, 0x00b7, 0x22, 0x03}, + {0x006c, 0x00b9, 0x15, 0x03}, + {0x000c, 0x00c0, 0x0a, 0x03}, + {0x00c2, 0x00c3, 0x0f, 0x03}, + {0x002f, 0x00c9, 0x0d, 0x03}, + {0x00d2, 0x00ce, 0x16, 0x03}, + {0x00f3, 0x00ce, 0x0b, 0x03}, + {0x0075, 0x00cf, 0x27, 0x03}, + {0x001a, 0x00d5, 0x35, 0x03}, + {0x0026, 0x00d6, 0x39, 0x03}, + {0x0080, 0x00da, 0x3c, 0x03}, + {0x00a9, 0x00dd, 0x00, 0x03}, + {0x00bc, 0x00eb, 0x03, 0x03}, + {0x0032, 0x00ef, 0x1b, 0x03}, + {0x0067, 0x00f0, 0x3f, 0x03}, + {0x00ef, 0x00f1, 0x18, 0x03}, + {0x00a8, 0x00f3, 0x0c, 0x03}, + {0x00de, 0x00f9, 0x1d, 0x03}, + {0x002c, 0x00fa, 0x13, 0x03} }; @@ -523,7 +519,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_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaga_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(galaga_state::tilemap_scan)), 8,8,36,28); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x1f); m_galaga_gfxbank = 0; diff --git a/src/mame/video/galaxia.cpp b/src/mame/video/galaxia.cpp index bbb46547e2b..e156580afb2 100644 --- a/src/mame/video/galaxia.cpp +++ b/src/mame/video/galaxia.cpp @@ -87,7 +87,7 @@ VIDEO_START_MEMBER(galaxia_state,galaxia) { init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxia_state::get_galaxia_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxia_state::get_galaxia_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(8); @@ -97,7 +97,7 @@ VIDEO_START_MEMBER(galaxia_state,astrowar) { init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxia_state::get_astrowar_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxia_state::get_astrowar_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(8); m_bg_tilemap->set_scrolldx(8, 8); diff --git a/src/mame/video/galaxian.cpp b/src/mame/video/galaxian.cpp index f3a192ad024..d4319477c6b 100644 --- a/src/mame/video/galaxian.cpp +++ b/src/mame/video/galaxian.cpp @@ -390,13 +390,13 @@ void galaxian_state::video_start() if (!m_sfx_tilemap) { /* normal galaxian hardware is row-based and individually scrolling columns */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxian_state::bg_get_tile_info),this), TILEMAP_SCAN_ROWS, m_x_scale*8,8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxian_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, m_x_scale*8,8, 32,32); m_bg_tilemap->set_scroll_cols(32); } else { /* sfx hardware is column-based and individually scrolling rows */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxian_state::bg_get_tile_info),this), TILEMAP_SCAN_COLS, m_x_scale*8,8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxian_state::bg_get_tile_info)), TILEMAP_SCAN_COLS, m_x_scale*8,8, 32,32); m_bg_tilemap->set_scroll_rows(32); } m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/galaxold.cpp b/src/mame/video/galaxold.cpp index 1303291335f..c9c9676330e 100644 --- a/src/mame/video/galaxold.cpp +++ b/src/mame/video/galaxold.cpp @@ -385,7 +385,7 @@ void galaxold_state::video_start_common() VIDEO_START_MEMBER(galaxold_state,galaxold_plain) { video_start_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); @@ -581,7 +581,7 @@ void galaxold_state::rockclim_modify_spritecode(uint8_t *spriteram, int *code, i VIDEO_START_MEMBER(galaxold_state,rockclim) { VIDEO_START_CALL_MEMBER(galaxold); - m_rockclim_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::rockclim_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_rockclim_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::rockclim_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,64,32); m_draw_background = &galaxold_state::rockclim_draw_background; m_modify_charcode = &galaxold_state::mooncrst_modify_charcode; @@ -608,7 +608,7 @@ TILE_GET_INFO_MEMBER(galaxold_state::drivfrcg_get_tile_info) VIDEO_START_MEMBER(galaxold_state,drivfrcg) { video_start_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::drivfrcg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::drivfrcg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); @@ -622,7 +622,7 @@ VIDEO_START_MEMBER(galaxold_state,drivfrcg) VIDEO_START_MEMBER(galaxold_state,ad2083) { video_start_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::drivfrcg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::drivfrcg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); @@ -658,7 +658,7 @@ TILE_GET_INFO_MEMBER(galaxold_state::racknrol_get_tile_info) VIDEO_START_MEMBER(galaxold_state,racknrol) { video_start_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::racknrol_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::racknrol_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_cols(32); @@ -689,7 +689,7 @@ void galaxold_state::harem_modify_spritecode(uint8_t *spriteram, int *code, int VIDEO_START_MEMBER(galaxold_state,harem) { video_start_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::harem_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::harem_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,32); // m_bg_tilemap->set_transparent_pen(0); // opaque tilemap to get sky and sand colors m_bg_tilemap->set_scroll_cols(32); @@ -757,7 +757,7 @@ VIDEO_START_MEMBER(galaxold_state,dambustr) /* make a copy of the tilemap to emulate background priority */ m_dambustr_videoram2 = std::make_unique<uint8_t[]>(0x0400); - m_dambustr_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galaxold_state::dambustr_get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_dambustr_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galaxold_state::dambustr_get_tile_info2)), TILEMAP_SCAN_ROWS,8,8,32,32); m_dambustr_tilemap2->set_transparent_pen(0); } diff --git a/src/mame/video/galivan.cpp b/src/mame/video/galivan.cpp index 747a026bfed..c66eabe36d1 100644 --- a/src/mame/video/galivan.cpp +++ b/src/mame/video/galivan.cpp @@ -163,16 +163,16 @@ TILE_GET_INFO_MEMBER(galivan_state::ninjemak_get_tx_tile_info) VIDEO_START_MEMBER(galivan_state,galivan) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galivan_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galivan_state::get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); } VIDEO_START_MEMBER(galivan_state,ninjemak) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galivan_state::ninjemak_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 512, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(galivan_state::ninjemak_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::ninjemak_get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 512, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(galivan_state::ninjemak_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); } diff --git a/src/mame/video/gaplus.cpp b/src/mame/video/gaplus.cpp index 875affd31da..6f0c8bbff8b 100644 --- a/src/mame/video/gaplus.cpp +++ b/src/mame/video/gaplus.cpp @@ -171,7 +171,7 @@ void gaplus_base_state::starfield_init() void gaplus_base_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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gaplus_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(gaplus_state::tilemap_scan)), 8,8,36,28); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0xff); diff --git a/src/mame/video/gatron.cpp b/src/mame/video/gatron.cpp index cd47ecae741..822627e7287 100644 --- a/src/mame/video/gatron.cpp +++ b/src/mame/video/gatron.cpp @@ -47,7 +47,7 @@ void gatron_state::video_start() { m_lamps.resolve(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gatron_state::get_bg_tile_info), this), TILEMAP_SCAN_COLS, 8, 16, 48, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gatron_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 16, 48, 16); } uint32_t gatron_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/gberet.cpp b/src/mame/video/gberet.cpp index f2affc95070..9a6f84bfc23 100644 --- a/src/mame/video/gberet.cpp +++ b/src/mame/video/gberet.cpp @@ -111,7 +111,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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gberet_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x10); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/video/gcpinbal.cpp b/src/mame/video/gcpinbal.cpp index fd564330797..f6a87c0901b 100644 --- a/src/mame/video/gcpinbal.cpp +++ b/src/mame/video/gcpinbal.cpp @@ -41,9 +41,9 @@ void gcpinbal_state::video_start() int xoffs = 0; int yoffs = 0; - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gcpinbal_state::get_bg0_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gcpinbal_state::get_bg1_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gcpinbal_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gcpinbal_state::get_bg0_tile_info)),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gcpinbal_state::get_bg1_tile_info)),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gcpinbal_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/ginganin.cpp b/src/mame/video/ginganin.cpp index 2b99a30d27d..c9b17e491fb 100644 --- a/src/mame/video/ginganin.cpp +++ b/src/mame/video/ginganin.cpp @@ -132,9 +132,9 @@ void ginganin_state::txtram_w(offs_t offset, u16 data, u16 mem_mask) void ginganin_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ginganin_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, BG_NX, BG_NY); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ginganin_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, FG_NX, FG_NY); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ginganin_state::get_txt_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, TXT_NX, TXT_NY); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ginganin_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, BG_NX, BG_NY); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ginganin_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, FG_NX, FG_NY); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ginganin_state::get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, TXT_NX, TXT_NY); m_fg_tilemap->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/gladiatr.cpp b/src/mame/video/gladiatr.cpp index 016b325d02b..c977b7f5945 100644 --- a/src/mame/video/gladiatr.cpp +++ b/src/mame/video/gladiatr.cpp @@ -44,8 +44,8 @@ TILE_GET_INFO_MEMBER(gladiatr_state_base::fg_get_tile_info) VIDEO_START_MEMBER(ppking_state,ppking) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ppking_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ppking_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ppking_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ppking_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,32,64); m_fg_tilemap->set_transparent_pen(0); @@ -61,8 +61,8 @@ VIDEO_START_MEMBER(ppking_state,ppking) VIDEO_START_MEMBER(gladiatr_state,gladiatr) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gladiatr_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gladiatr_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gladiatr_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gladiatr_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS,8,8,64,32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/glass.cpp b/src/mame/video/glass.cpp index 9006aa42ca8..dce9c9079aa 100644 --- a/src/mame/video/glass.cpp +++ b/src/mame/video/glass.cpp @@ -112,8 +112,8 @@ WRITE16_MEMBER(glass_state::vram_w) void glass_state::video_start() { - m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(glass_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(glass_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(glass_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(glass_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_screen_bitmap = std::make_unique<bitmap_ind16>(320, 200); save_item(NAME(*m_screen_bitmap)); diff --git a/src/mame/video/gng.cpp b/src/mame/video/gng.cpp index 4dc7a7d08b7..8fbed82cb64 100644 --- a/src/mame/video/gng.cpp +++ b/src/mame/video/gng.cpp @@ -47,12 +47,12 @@ TILE_GET_INFO_MEMBER(gng_state::get_bg_tile_info) void gng_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gng_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(gng_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gng_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); m_fg_tilemap->set_transparent_pen(3); - m_bg_tilemap->set_transmask(0, 0xff, 0x00); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x41, 0xbe); /* split type 1 has pens 0 and 6 transparent in front half */ + m_bg_tilemap->set_transmask(0, 0xff, 0x00); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x41, 0xbe); // split type 1 has pens 0 and 6 transparent in front half } diff --git a/src/mame/video/goal92.cpp b/src/mame/video/goal92.cpp index 87f4d0cba84..c7c942411a7 100644 --- a/src/mame/video/goal92.cpp +++ b/src/mame/video/goal92.cpp @@ -132,9 +132,9 @@ void goal92_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect void goal92_state::video_start() { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goal92_state::get_back_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goal92_state::get_fore_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goal92_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goal92_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goal92_state::get_fore_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goal92_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_buffered_spriteram = std::make_unique<uint16_t[]>(0x400 * 2); save_pointer(NAME(m_buffered_spriteram), 0x400 * 2); diff --git a/src/mame/video/goindol.cpp b/src/mame/video/goindol.cpp index a4c8752e2f8..800fa01eaba 100644 --- a/src/mame/video/goindol.cpp +++ b/src/mame/video/goindol.cpp @@ -47,8 +47,8 @@ TILE_GET_INFO_MEMBER(goindol_state::get_bg_tile_info) void goindol_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goindol_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(goindol_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(*this, FUNC(goindol_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goindol_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/goldstar.cpp b/src/mame/video/goldstar.cpp index 7ab78f486d2..e2e9ba3b215 100644 --- a/src/mame/video/goldstar.cpp +++ b/src/mame/video/goldstar.cpp @@ -105,15 +105,15 @@ TILE_GET_INFO_MEMBER(goldstar_state::get_goldstar_reel3_tile_info) VIDEO_START_MEMBER(goldstar_state, goldstar) { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); m_reel2_tilemap->set_scroll_cols(64); m_reel3_tilemap->set_scroll_cols(64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64, 32); m_fg_tilemap->set_transparent_pen(0); // is there an enable reg for this game? @@ -122,9 +122,9 @@ VIDEO_START_MEMBER(goldstar_state, goldstar) VIDEO_START_MEMBER(goldstar_state, cherrym) { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_goldstar_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_goldstar_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); m_reel2_tilemap->set_scroll_cols(64); @@ -133,7 +133,7 @@ VIDEO_START_MEMBER(goldstar_state, cherrym) m_cmaster_girl_num = 0; m_cmaster_girl_pal = 0; - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(goldstar_state::get_cherrym_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(goldstar_state::get_cherrym_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64, 32); m_fg_tilemap->set_transparent_pen(0); m_cm_enable_reg = 0x0b; @@ -347,11 +347,11 @@ TILE_GET_INFO_MEMBER(wingco_state::get_magical_fg_tile_info) VIDEO_START_MEMBER(wingco_state, bingowng) { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_goldstar_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_goldstar_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_goldstar_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64, 32); m_fg_tilemap->set_transparent_pen(0); // is there an enable reg for this game? @@ -360,15 +360,15 @@ VIDEO_START_MEMBER(wingco_state, bingowng) VIDEO_START_MEMBER(wingco_state, magical) { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_goldstar_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_goldstar_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_goldstar_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_goldstar_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_goldstar_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_goldstar_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(32); m_reel2_tilemap->set_scroll_cols(32); m_reel3_tilemap->set_scroll_cols(32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wingco_state::get_magical_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wingco_state::get_magical_fg_tile_info)),TILEMAP_SCAN_ROWS, 8,8, 64,32); m_fg_tilemap->set_transparent_pen(0); // is there an enable reg for this game? @@ -601,17 +601,17 @@ TILE_GET_INFO_MEMBER(sanghopm_state::get_reel3_tile_info) VIDEO_START_MEMBER(sanghopm_state, sangho) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanghopm_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 32, 64, 8); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanghopm_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 32, 64, 8); - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanghopm_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanghopm_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanghopm_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanghopm_state::get_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanghopm_state::get_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanghopm_state::get_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); m_reel2_tilemap->set_scroll_cols(64); m_reel3_tilemap->set_scroll_cols(64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sanghopm_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sanghopm_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } @@ -706,9 +706,9 @@ TILE_GET_INFO_MEMBER(unkch_state::get_reel3_tile_info) VIDEO_START_MEMBER(unkch_state, unkch) { - m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unkch_state::get_reel1_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unkch_state::get_reel2_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unkch_state::get_reel3_tile_info)), TILEMAP_SCAN_ROWS, 8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(32); m_reel2_tilemap->set_scroll_cols(32); @@ -718,7 +718,7 @@ VIDEO_START_MEMBER(unkch_state, unkch) m_cmaster_girl_pal = 0; m_vidreg = 0x00; - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(unkch_state::get_cherrym_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unkch_state::get_cherrym_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64, 32); m_fg_tilemap->set_transparent_pen(0); m_cm_enable_reg = 0x0b; diff --git a/src/mame/video/gomoku.cpp b/src/mame/video/gomoku.cpp index b2f697b8035..01c5d28f1e0 100644 --- a/src/mame/video/gomoku.cpp +++ b/src/mame/video/gomoku.cpp @@ -114,7 +114,7 @@ void gomoku_state::video_start() m_screen->register_screen_bitmap(m_bg_bitmap); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gomoku_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gomoku_state::get_fg_tile_info)),TILEMAP_SCAN_ROWS,8,8,32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/gotcha.cpp b/src/mame/video/gotcha.cpp index 14b722c021f..6493c335ddf 100644 --- a/src/mame/video/gotcha.cpp +++ b/src/mame/video/gotcha.cpp @@ -43,8 +43,8 @@ TILE_GET_INFO_MEMBER(gotcha_state::bg_get_tile_info) void gotcha_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gotcha_state::fg_get_tile_info),this), tilemap_mapper_delegate(FUNC(gotcha_state::gotcha_tilemap_scan),this), 16, 16, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gotcha_state::bg_get_tile_info),this), tilemap_mapper_delegate(FUNC(gotcha_state::gotcha_tilemap_scan),this), 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gotcha_state::fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(gotcha_state::gotcha_tilemap_scan)), 16, 16, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gotcha_state::bg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(gotcha_state::gotcha_tilemap_scan)), 16, 16, 64, 32); m_fg_tilemap->set_transparent_pen(0); @@ -97,9 +97,6 @@ WRITE16_MEMBER(gotcha_state::gotcha_scroll_w) } - - - uint32_t gotcha_state::screen_update_gotcha(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); diff --git a/src/mame/video/gottlieb.cpp b/src/mame/video/gottlieb.cpp index f108ad2c512..e79cab815e3 100644 --- a/src/mame/video/gottlieb.cpp +++ b/src/mame/video/gottlieb.cpp @@ -140,7 +140,7 @@ void gottlieb_state::video_start() m_transparent0 = false; /* configure the background tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gottlieb_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gottlieb_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); /* save some state */ @@ -163,7 +163,7 @@ VIDEO_START_MEMBER(gottlieb_state,screwloo) m_transparent0 = false; /* configure the background tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gottlieb_state::get_screwloo_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gottlieb_state::get_screwloo_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); /* save some state */ diff --git a/src/mame/video/gotya.cpp b/src/mame/video/gotya.cpp index 473676eef7e..f6953cc034a 100644 --- a/src/mame/video/gotya.cpp +++ b/src/mame/video/gotya.cpp @@ -104,7 +104,7 @@ TILEMAP_MAPPER_MEMBER(gotya_state::tilemap_scan_rows_thehand) void gotya_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gotya_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(gotya_state::tilemap_scan_rows_thehand),this), 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gotya_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(gotya_state::tilemap_scan_rows_thehand)), 8, 8, 64, 32); } void gotya_state::draw_status_row( bitmap_ind16 &bitmap, const rectangle &cliprect, int sx, int col ) diff --git a/src/mame/video/gp9001.cpp b/src/mame/video/gp9001.cpp index 78bd3202e8e..43ed591639e 100644 --- a/src/mame/video/gp9001.cpp +++ b/src/mame/video/gp9001.cpp @@ -213,6 +213,7 @@ gp9001vdp_device::gp9001vdp_device(const machine_config &mconfig, const char *ta , m_space_config("gp9001vdp", ENDIANNESS_BIG, 16, 14, 0, address_map_constructor(FUNC(gp9001vdp_device::map), this)) , m_vram(*this, "vram_%u", 0) , m_spriteram(*this, "spriteram") + , m_gp9001_cb(*this) , m_vint_out_cb(*this) { } @@ -258,9 +259,9 @@ void gp9001vdp_device::device_add_mconfig(machine_config &config) void gp9001vdp_device::create_tilemaps() { - m_tm[2].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<2>),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_tm[1].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_tm[0].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(gp9001vdp_device::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_tm[2].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(gp9001vdp_device::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 16,16,32,32); + m_tm[1].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(gp9001vdp_device::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16,32,32); + m_tm[0].tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(gp9001vdp_device::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16,32,32); m_tm[2].tmap->set_transparent_pen(0); m_tm[1].tmap->set_transparent_pen(0); @@ -272,7 +273,7 @@ void gp9001vdp_device::device_start() { create_tilemaps(); - m_gp9001_cb.bind_relative_to(*owner()); + m_gp9001_cb.resolve(); m_vint_out_cb.resolve(); m_raise_irq_timer = timer_alloc(TIMER_RAISE_IRQ); diff --git a/src/mame/video/gp9001.h b/src/mame/video/gp9001.h index d022f0ac5d4..2b737aba8f2 100644 --- a/src/mame/video/gp9001.h +++ b/src/mame/video/gp9001.h @@ -20,10 +20,11 @@ class gp9001vdp_device : public device_t, }; public: + typedef device_delegate<void (u8 layer, u32 &code)> gp9001_cb_delegate; + gp9001vdp_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - typedef device_delegate<void (u8 layer, u32 &code)> gp9001_cb_delegate; - void set_tile_callback(gp9001_cb_delegate cb) { m_gp9001_cb = cb; } + template <typename... T> void set_tile_callback(T &&... args) { m_gp9001_cb.set(std::forward<T>(args)...); } auto vint_out_cb() { return m_vint_out_cb.bind(); } diff --git a/src/mame/video/grchamp.cpp b/src/mame/video/grchamp.cpp index 03eb3b23b6f..377a077a9b7 100644 --- a/src/mame/video/grchamp.cpp +++ b/src/mame/video/grchamp.cpp @@ -101,10 +101,10 @@ void grchamp_state::video_start() m_work_bitmap.allocate(32,32); /* allocate tilemaps for each of the three sections */ - m_left_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(grchamp_state::get_left_tile_info),this), tilemap_mapper_delegate(FUNC(grchamp_state::get_memory_offset),this), 8,8, 64,32); - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(grchamp_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_right_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(grchamp_state::get_right_tile_info),this), tilemap_mapper_delegate(FUNC(grchamp_state::get_memory_offset),this), 8,8, 64,32); - m_center_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(grchamp_state::get_center_tile_info),this), tilemap_mapper_delegate(FUNC(grchamp_state::get_memory_offset),this), 8,8, 64,32); + m_left_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(grchamp_state::get_left_tile_info)), tilemap_mapper_delegate(*this, FUNC(grchamp_state::get_memory_offset)), 8,8, 64,32); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(grchamp_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_right_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(grchamp_state::get_right_tile_info)), tilemap_mapper_delegate(*this, FUNC(grchamp_state::get_memory_offset)), 8,8, 64,32); + m_center_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(grchamp_state::get_center_tile_info)), tilemap_mapper_delegate(*this, FUNC(grchamp_state::get_memory_offset)), 8,8, 64,32); } #if 0 diff --git a/src/mame/video/gsword.cpp b/src/mame/video/gsword.cpp index 69436e9c790..d2967a6f44d 100644 --- a/src/mame/video/gsword.cpp +++ b/src/mame/video/gsword.cpp @@ -70,7 +70,7 @@ TILE_GET_INFO_MEMBER(gsword_state_base::get_bg_tile_info) void gsword_state_base::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gsword_state_base::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gsword_state_base::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 64); save_item(NAME(m_charbank)); diff --git a/src/mame/video/gumbo.cpp b/src/mame/video/gumbo.cpp index 7124f587a3f..752b1b16258 100644 --- a/src/mame/video/gumbo.cpp +++ b/src/mame/video/gumbo.cpp @@ -34,8 +34,8 @@ TILE_GET_INFO_MEMBER(gumbo_state::get_gumbo_fg_tile_info) void gumbo_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gumbo_state::get_gumbo_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gumbo_state::get_gumbo_fg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gumbo_state::get_gumbo_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gumbo_state::get_gumbo_fg_tile_info)), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); m_fg_tilemap->set_transparent_pen(0xff); } diff --git a/src/mame/video/gundealr.cpp b/src/mame/video/gundealr.cpp index c3d6c0edff8..645a7fe679d 100644 --- a/src/mame/video/gundealr.cpp +++ b/src/mame/video/gundealr.cpp @@ -52,8 +52,8 @@ TILE_GET_INFO_MEMBER(gundealr_state::get_fg_tile_info) void gundealr_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gundealr_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gundealr_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(gundealr_state::pagescan),this), 16, 16, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gundealr_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gundealr_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(gundealr_state::pagescan)), 16, 16, 64, 32); m_fg_tilemap->set_transparent_pen(15); } diff --git a/src/mame/video/gunsmoke.cpp b/src/mame/video/gunsmoke.cpp index 1706da7eda1..e5078d0f2d0 100644 --- a/src/mame/video/gunsmoke.cpp +++ b/src/mame/video/gunsmoke.cpp @@ -125,8 +125,8 @@ TILE_GET_INFO_MEMBER(gunsmoke_state::get_fg_tile_info) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 32, 32, 2048, 8); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gunsmoke_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x4f); } diff --git a/src/mame/video/gyruss.cpp b/src/mame/video/gyruss.cpp index c4787fa72ee..772dd91d8a9 100644 --- a/src/mame/video/gyruss.cpp +++ b/src/mame/video/gyruss.cpp @@ -111,9 +111,9 @@ TILE_GET_INFO_MEMBER(gyruss_state::gyruss_get_tile_info) void gyruss_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(gyruss_state::gyruss_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tilemap->set_transmask(0, 0x00, 0); /* opaque */ - m_tilemap->set_transmask(1, 0x0f, 0); /* transparent */ + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(gyruss_state::gyruss_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap->set_transmask(0, 0x00, 0); // opaque + m_tilemap->set_transmask(1, 0x0f, 0); // transparent save_item(NAME(m_flipscreen)); } diff --git a/src/mame/video/hanaawas.cpp b/src/mame/video/hanaawas.cpp index 2ac87f5288d..789c8bf30de 100644 --- a/src/mame/video/hanaawas.cpp +++ b/src/mame/video/hanaawas.cpp @@ -98,7 +98,7 @@ TILE_GET_INFO_MEMBER(hanaawas_state::get_bg_tile_info) void hanaawas_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hanaawas_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hanaawas_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } uint32_t hanaawas_state::screen_update_hanaawas(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/hcastle.cpp b/src/mame/video/hcastle.cpp index 72deaece319..2b3b77641f6 100644 --- a/src/mame/video/hcastle.cpp +++ b/src/mame/video/hcastle.cpp @@ -105,8 +105,8 @@ TILE_GET_INFO_MEMBER(hcastle_state::get_bg_tile_info) void hcastle_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hcastle_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(hcastle_state::tilemap_scan),this), 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hcastle_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(hcastle_state::tilemap_scan),this), 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hcastle_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(hcastle_state::tilemap_scan)), 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hcastle_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(hcastle_state::tilemap_scan)), 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/hexion.cpp b/src/mame/video/hexion.cpp index 5750e538c59..cfaefbe9479 100644 --- a/src/mame/video/hexion.cpp +++ b/src/mame/video/hexion.cpp @@ -41,8 +41,8 @@ TILE_GET_INFO_MEMBER(hexion_state::get_tile_info1) void hexion_state::video_start() { - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hexion_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hexion_state::get_tile_info1),this),TILEMAP_SCAN_ROWS, 8,8,64,32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hexion_state::get_tile_info0)), TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hexion_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8,8,64,32); m_bg_tilemap[0]->set_transparent_pen(0); m_bg_tilemap[1]->set_scrollx(0,-4); diff --git a/src/mame/video/higemaru.cpp b/src/mame/video/higemaru.cpp index 28087b2f83d..804fad9d572 100644 --- a/src/mame/video/higemaru.cpp +++ b/src/mame/video/higemaru.cpp @@ -96,7 +96,7 @@ TILE_GET_INFO_MEMBER(higemaru_state::get_bg_tile_info) void higemaru_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(higemaru_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(higemaru_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void higemaru_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/himesiki.cpp b/src/mame/video/himesiki.cpp index 4634790f8b6..cae38a0d302 100644 --- a/src/mame/video/himesiki.cpp +++ b/src/mame/video/himesiki.cpp @@ -24,7 +24,7 @@ TILE_GET_INFO_MEMBER(himesiki_state::get_bg_tile_info) void himesiki_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(himesiki_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(himesiki_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } WRITE8_MEMBER(himesiki_state::himesiki_bg_ram_w) diff --git a/src/mame/video/hng64.cpp b/src/mame/video/hng64.cpp index 942bac2c7b3..a1efe3f845a 100644 --- a/src/mame/video/hng64.cpp +++ b/src/mame/video/hng64.cpp @@ -1271,21 +1271,21 @@ void hng64_state::video_start() m_old_tileflags[2] = -1; m_old_tileflags[3] = -1; - m_tilemap[0].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[0].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[0].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile0_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */ + m_tilemap[0].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile0_8x8_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[0].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile0_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[0].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile0_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); // 128x128x4 = 0x10000 - m_tilemap[1].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[1].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[1].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile1_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */ + m_tilemap[1].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile1_8x8_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[1].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile1_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[1].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile1_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); // 128x128x4 = 0x10000 - m_tilemap[2].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[2].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[2].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile2_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */ + m_tilemap[2].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile2_8x8_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[2].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile2_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[2].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile2_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); // 128x128x4 = 0x10000 - m_tilemap[3].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_8x8_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[3].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); /* 128x128x4 = 0x10000 */ - m_tilemap[3].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hng64_state::get_hng64_tile3_16x16_info),this), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); /* 128x128x4 = 0x10000 */ + m_tilemap[3].m_tilemap_8x8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile3_8x8_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[3].m_tilemap_16x16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile3_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); // 128x128x4 = 0x10000 + m_tilemap[3].m_tilemap_16x16_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hng64_state::get_hng64_tile3_16x16_info)), TILEMAP_SCAN_ROWS, 16, 16, 256, 64); // 128x128x4 = 0x10000 for (auto & elem : m_tilemap) { diff --git a/src/mame/video/holeland.cpp b/src/mame/video/holeland.cpp index 3000a758edb..aed1f41b496 100644 --- a/src/mame/video/holeland.cpp +++ b/src/mame/video/holeland.cpp @@ -57,7 +57,7 @@ TILE_GET_INFO_MEMBER(holeland_state::crzrally_get_tile_info) VIDEO_START_MEMBER(holeland_state,holeland) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(holeland_state::holeland_get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(holeland_state::holeland_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap->set_transmask(0, 0xff, 0x00); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1, 0x01, 0xfe); /* split type 1 has pen 0? transparent in front half */ @@ -67,7 +67,7 @@ VIDEO_START_MEMBER(holeland_state,holeland) VIDEO_START_MEMBER(holeland_state,crzrally) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(holeland_state::crzrally_get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(holeland_state::crzrally_get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); save_item(NAME(m_palette_offset)); } diff --git a/src/mame/video/homedata.cpp b/src/mame/video/homedata.cpp index aec14eb5888..41b3bbfc7ce 100644 --- a/src/mame/video/homedata.cpp +++ b/src/mame/video/homedata.cpp @@ -612,10 +612,10 @@ TILE_GET_INFO_MEMBER(homedata_state::mirderby_get_info1_1) VIDEO_START_MEMBER(homedata_state,mrokumei) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mrokumei_get_info0_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mrokumei_get_info0_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mrokumei_get_info1_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mrokumei_get_info1_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mrokumei_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); m_bg_tilemap[0][1]->set_transparent_pen(0); m_bg_tilemap[1][1]->set_transparent_pen(0); @@ -623,14 +623,14 @@ VIDEO_START_MEMBER(homedata_state,mrokumei) VIDEO_START_MEMBER(homedata_state,reikaids) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info0_0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info0_1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info0_2),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info0_3),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info1_0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info1_1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info1_2),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::reikaids_get_info1_3),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[0][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info0_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_2)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap[1][3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::reikaids_get_info1_3)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap[0][0]->set_transparent_pen(0xff); m_bg_tilemap[0][1]->set_transparent_pen(0xff); @@ -644,10 +644,10 @@ VIDEO_START_MEMBER(homedata_state,reikaids) VIDEO_START_MEMBER(homedata_state,pteacher) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::pteacher_get_info0_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::pteacher_get_info0_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::pteacher_get_info1_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::pteacher_get_info1_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::pteacher_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0][1]->set_transparent_pen(0xff); m_bg_tilemap[1][1]->set_transparent_pen(0xff); @@ -655,10 +655,10 @@ VIDEO_START_MEMBER(homedata_state,pteacher) VIDEO_START_MEMBER(homedata_state,lemnangl) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::lemnangl_get_info0_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::lemnangl_get_info0_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::lemnangl_get_info1_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::lemnangl_get_info1_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::lemnangl_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0][1]->set_transparent_pen(0x0f); m_bg_tilemap[1][1]->set_transparent_pen(0x0f); @@ -666,10 +666,10 @@ VIDEO_START_MEMBER(homedata_state,lemnangl) VIDEO_START_MEMBER(homedata_state,mirderby) { - m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mirderby_get_info0_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mirderby_get_info0_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mirderby_get_info1_0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); - m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homedata_state::mirderby_get_info1_1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32 ); + m_bg_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mirderby_get_info0_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mirderby_get_info0_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mirderby_get_info1_0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homedata_state::mirderby_get_info1_1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0][1]->set_transparent_pen(0); m_bg_tilemap[1][1]->set_transparent_pen(0); diff --git a/src/mame/video/homerun.cpp b/src/mame/video/homerun.cpp index 95878483c04..edf49e7d941 100644 --- a/src/mame/video/homerun.cpp +++ b/src/mame/video/homerun.cpp @@ -113,7 +113,7 @@ TILE_GET_INFO_MEMBER(homerun_state::get_tile_info) void homerun_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(homerun_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(homerun_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); save_item(NAME(m_gfx_ctrl)); save_item(NAME(m_scrolly)); diff --git a/src/mame/video/hyperspt.cpp b/src/mame/video/hyperspt.cpp index e6e21823296..594545e74c8 100644 --- a/src/mame/video/hyperspt.cpp +++ b/src/mame/video/hyperspt.cpp @@ -116,7 +116,7 @@ TILE_GET_INFO_MEMBER(hyperspt_state::get_bg_tile_info) void hyperspt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hyperspt_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hyperspt_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(32); } @@ -186,6 +186,6 @@ TILE_GET_INFO_MEMBER(hyperspt_state::roadf_get_bg_tile_info) VIDEO_START_MEMBER(hyperspt_state,roadf) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hyperspt_state::roadf_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hyperspt_state::roadf_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/video/igs017_igs031.cpp b/src/mame/video/igs017_igs031.cpp index f81be2406bc..77acdbc95ad 100644 --- a/src/mame/video/igs017_igs031.cpp +++ b/src/mame/video/igs017_igs031.cpp @@ -66,6 +66,7 @@ igs017_igs031_device::igs017_igs031_device(const machine_config &mconfig, const , device_gfx_interface(mconfig, *this, gfxinfo, "palette") , device_video_interface(mconfig, *this) , device_memory_interface(mconfig, *this) + , m_palette_scramble_cb(*this, FUNC(igs017_igs031_device::palette_callback_straight)) , m_space_config("igs017_igs031", ENDIANNESS_BIG, 8,15, 0, address_map_constructor(FUNC(igs017_igs031_device::map), this)) , m_spriteram(*this, "spriteram", 0) , m_fg_videoram(*this, "fg_videoram", 0) @@ -73,9 +74,8 @@ igs017_igs031_device::igs017_igs031_device(const machine_config &mconfig, const , m_palram(*this, "palram", 0) , m_i8255(*this, finder_base::DUMMY_TAG) , m_palette(*this, "palette") + , m_revbits(false) { - m_palette_scramble_cb = igs017_igs031_palette_scramble_delegate(FUNC(igs017_igs031_device::palette_callback_straight), this); - m_revbits = false; } device_memory_interface::space_config_vector igs017_igs031_device::memory_space_config() const @@ -97,10 +97,10 @@ void igs017_igs031_device::device_add_mconfig(machine_config &config) void igs017_igs031_device::device_start() { - m_palette_scramble_cb.bind_relative_to(*owner()); + m_palette_scramble_cb.resolve(); - m_fg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(igs017_igs031_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,32); - m_bg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(igs017_igs031_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_fg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(igs017_igs031_device::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(igs017_igs031_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_fg_tilemap->set_transparent_pen(0xf); m_bg_tilemap->set_transparent_pen(0xf); diff --git a/src/mame/video/igs017_igs031.h b/src/mame/video/igs017_igs031.h index 11b7407ece1..8026b8fa14e 100644 --- a/src/mame/video/igs017_igs031.h +++ b/src/mame/video/igs017_igs031.h @@ -9,18 +9,19 @@ #include "emupal.h" #include "tilemap.h" -typedef device_delegate<u16 (u16)> igs017_igs031_palette_scramble_delegate; - -class igs017_igs031_device : public device_t, - public device_gfx_interface, - public device_video_interface, - public device_memory_interface +class igs017_igs031_device : + public device_t, + public device_gfx_interface, + public device_video_interface, + public device_memory_interface { public: + typedef device_delegate<u16 (u16)> palette_scramble_delegate; + igs017_igs031_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); template <typename T> void set_i8255_tag(T &&tag) { m_i8255.set_tag(std::forward<T>(tag)); } - template <typename... T> void set_palette_scramble_cb(T &&... args) { m_palette_scramble_cb = igs017_igs031_palette_scramble_delegate(std::forward<T>(args)...); } + template <typename... T> void set_palette_scramble_cb(T &&... args) { m_palette_scramble_cb.set(std::forward<T>(args)...); } void set_text_reverse_bits() { @@ -29,8 +30,6 @@ public: u16 palette_callback_straight(u16 bgr) const; - igs017_igs031_palette_scramble_delegate m_palette_scramble_cb; - void map(address_map &map); u8 read(offs_t offset); @@ -69,6 +68,8 @@ protected: DECLARE_GFXDECODE_MEMBER(gfxinfo); private: + palette_scramble_delegate m_palette_scramble_cb; + address_space_config m_space_config; required_shared_ptr<u8> m_spriteram; diff --git a/src/mame/video/inufuku.cpp b/src/mame/video/inufuku.cpp index 111ede75c2e..1d60abfab94 100644 --- a/src/mame/video/inufuku.cpp +++ b/src/mame/video/inufuku.cpp @@ -117,8 +117,8 @@ uint32_t inufuku_state::inufuku_tile_callback( uint32_t code ) void inufuku_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(inufuku_state::get_inufuku_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(inufuku_state::get_inufuku_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(inufuku_state::get_inufuku_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(inufuku_state::get_inufuku_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_bg_tilemap->set_transparent_pen(255); m_tx_tilemap->set_transparent_pen(255); diff --git a/src/mame/video/iqblock.cpp b/src/mame/video/iqblock.cpp index ee594519f1b..d2442dbac19 100644 --- a/src/mame/video/iqblock.cpp +++ b/src/mame/video/iqblock.cpp @@ -38,8 +38,8 @@ TILE_GET_INFO_MEMBER(iqblock_state::get_fg_tile_info) void iqblock_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(iqblock_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(iqblock_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,32,64, 8); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(iqblock_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(iqblock_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,32,64, 8); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scroll_cols(64); diff --git a/src/mame/video/ironhors.cpp b/src/mame/video/ironhors.cpp index eda424a1e15..059a1109e9e 100644 --- a/src/mame/video/ironhors.cpp +++ b/src/mame/video/ironhors.cpp @@ -139,7 +139,7 @@ TILE_GET_INFO_MEMBER(ironhors_state::get_bg_tile_info) void ironhors_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ironhors_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ironhors_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(32); } @@ -251,7 +251,7 @@ TILE_GET_INFO_MEMBER(ironhors_state::farwest_get_bg_tile_info) VIDEO_START_MEMBER(ironhors_state,farwest) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ironhors_state::farwest_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ironhors_state::farwest_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/video/jack.cpp b/src/mame/video/jack.cpp index cf79dc5adb0..c338816be8e 100644 --- a/src/mame/video/jack.cpp +++ b/src/mame/video/jack.cpp @@ -57,7 +57,7 @@ TILEMAP_MAPPER_MEMBER(jack_state::tilemap_scan_cols_flipy) void jack_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jack_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(jack_state::tilemap_scan_cols_flipy),this), 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jack_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(jack_state::tilemap_scan_cols_flipy)), 8, 8, 32, 32); } @@ -175,7 +175,7 @@ TILE_GET_INFO_MEMBER(jack_state::joinem_get_bg_tile_info) VIDEO_START_MEMBER(jack_state,joinem) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jack_state::joinem_get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(jack_state::tilemap_scan_cols_flipy),this), 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jack_state::joinem_get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(jack_state::tilemap_scan_cols_flipy)), 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); } diff --git a/src/mame/video/jackal.cpp b/src/mame/video/jackal.cpp index a234e847098..8d0d45bf070 100644 --- a/src/mame/video/jackal.cpp +++ b/src/mame/video/jackal.cpp @@ -56,7 +56,7 @@ TILE_GET_INFO_MEMBER(jackal_state::get_bg_tile_info) void jackal_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jackal_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jackal_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void jackal_state::draw_background( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/jailbrek.cpp b/src/mame/video/jailbrek.cpp index 943c34629fa..6070c877858 100644 --- a/src/mame/video/jailbrek.cpp +++ b/src/mame/video/jailbrek.cpp @@ -56,7 +56,7 @@ TILE_GET_INFO_MEMBER(jailbrek_state::get_bg_tile_info) void jailbrek_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(jailbrek_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(jailbrek_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); } void jailbrek_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/k001604.cpp b/src/mame/video/k001604.cpp index 938c4127ea4..c949edd67f6 100644 --- a/src/mame/video/k001604.cpp +++ b/src/mame/video/k001604.cpp @@ -73,17 +73,17 @@ void k001604_device::device_start() if (m_layer_size) { - m_layer_8x8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_8x8),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_8x8_0_size1),this), 8, 8, 64, 64); - m_layer_8x8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_8x8),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_8x8_1_size1),this), 8, 8, 64, 64); + m_layer_8x8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_8x8)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_8x8_0_size1)), 8, 8, 64, 64); + m_layer_8x8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_8x8)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_8x8_1_size1)), 8, 8, 64, 64); - m_layer_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_roz),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_roz_256),this), roz_tile_size, roz_tile_size, 128, 64); + m_layer_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_roz)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_roz_256)), roz_tile_size, roz_tile_size, 128, 64); } else { - m_layer_8x8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_8x8),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_8x8_0_size0),this), 8, 8, 64, 64); - m_layer_8x8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_8x8),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_8x8_1_size0),this), 8, 8, 64, 64); + m_layer_8x8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_8x8)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_8x8_0_size0)), 8, 8, 64, 64); + m_layer_8x8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_8x8)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_8x8_1_size0)), 8, 8, 64, 64); - m_layer_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k001604_device::tile_info_layer_roz),this), tilemap_mapper_delegate(FUNC(k001604_device::scan_layer_roz_128),this), roz_tile_size, roz_tile_size, 128, 64); + m_layer_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k001604_device::tile_info_layer_roz)), tilemap_mapper_delegate(*this, FUNC(k001604_device::scan_layer_roz_128)), roz_tile_size, roz_tile_size, 128, 64); } m_layer_8x8[0]->set_transparent_pen(0); diff --git a/src/mame/video/k007342.cpp b/src/mame/video/k007342.cpp index 5909970e272..0cd29eab5f0 100644 --- a/src/mame/video/k007342.cpp +++ b/src/mame/video/k007342.cpp @@ -32,13 +32,14 @@ control registers #include "k007342.h" #include "konami_helper.h" -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +//#define VERBOSE 1 +#include "logmacro.h" + DEFINE_DEVICE_TYPE(K007342, k007342_device, "k007342", "K007342 Video Controller") -k007342_device::k007342_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K007342, tag, owner, clock), +k007342_device::k007342_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, K007342, tag, owner, clock), m_ram(nullptr), m_scroll_ram(nullptr), m_videoram_0(nullptr), @@ -52,6 +53,7 @@ k007342_device::k007342_device(const machine_config &mconfig, const char *tag, d //m_scrollx[2], //m_scrolly[2], m_gfxdecode(*this, finder_base::DUMMY_TAG), + m_callback(*this), m_gfxnum(0) { } @@ -66,10 +68,10 @@ void k007342_device::device_start() throw device_missing_dependencies(); // bind the init function - m_callback.bind_relative_to(*owner()); + m_callback.resolve(); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(k007342_device::get_tile_info0),this), tilemap_mapper_delegate(FUNC(k007342_device::scan),this), 8, 8, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(k007342_device::get_tile_info1),this), tilemap_mapper_delegate(FUNC(k007342_device::scan),this), 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(k007342_device::get_tile_info0)), tilemap_mapper_delegate(*this, FUNC(k007342_device::scan)), 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(k007342_device::get_tile_info1)), tilemap_mapper_delegate(*this, FUNC(k007342_device::scan)), 8, 8, 64, 32); m_ram = make_unique_clear<uint8_t[]>(0x2000); m_scroll_ram = make_unique_clear<uint8_t[]>(0x0200); diff --git a/src/mame/video/k007342.h b/src/mame/video/k007342.h index 807e93db1ff..cceae585f26 100644 --- a/src/mame/video/k007342.h +++ b/src/mame/video/k007342.h @@ -8,17 +8,17 @@ #include "tilemap.h" -typedef device_delegate<void (int layer, int bank, int *code, int *color, int *flags)> k007342_delegate; - class k007342_device : public device_t { public: + using tile_delegate = device_delegate<void (int layer, int bank, int *code, int *color, int *flags)>; + k007342_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } void set_gfxnum(int gfxnum) { m_gfxnum = gfxnum; } - template <typename... T> void set_tile_callback(T &&... args) { m_callback = k007342_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_callback(T &&... args) { m_callback.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -49,7 +49,7 @@ private: uint16_t m_scrollx[2]; uint8_t m_scrolly[2]; required_device<gfxdecode_device> m_gfxdecode; - k007342_delegate m_callback; + tile_delegate m_callback; int m_gfxnum; TILEMAP_MAPPER_MEMBER(scan); diff --git a/src/mame/video/k007420.cpp b/src/mame/video/k007420.cpp index ba3942df7b2..18226ba4d54 100644 --- a/src/mame/video/k007420.cpp +++ b/src/mame/video/k007420.cpp @@ -27,6 +27,7 @@ k007420_device::k007420_device(const machine_config &mconfig, const char *tag, d , m_flipscreen(0) , m_palette(*this, finder_base::DUMMY_TAG) , m_banklimit(0) + , m_callback(*this) //, m_regs[8] { } @@ -38,7 +39,7 @@ k007420_device::k007420_device(const machine_config &mconfig, const char *tag, d void k007420_device::device_start() { // bind the init function - m_callback.bind_relative_to(*owner()); + m_callback.resolve(); m_ram = make_unique_clear<uint8_t[]>(0x200); diff --git a/src/mame/video/k007420.h b/src/mame/video/k007420.h index 5a53a3b4bee..a791f9e0638 100644 --- a/src/mame/video/k007420.h +++ b/src/mame/video/k007420.h @@ -8,16 +8,16 @@ #include "emupal.h" -typedef device_delegate<void (int *code, int *color)> k007420_delegate; - class k007420_device : public device_t { public: + using sprite_delegate = device_delegate<void (int *code, int *color)>; + k007420_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); } void set_bank_limit(int limit) { m_banklimit = limit; } - template <typename... T> void set_sprite_callback(T &&... args) { m_callback = k007420_delegate(std::forward<T>(args)...); } + template <typename... T> void set_sprite_callback(T &&... args) { m_callback.set(std::forward<T>(args)...); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); @@ -35,7 +35,7 @@ private: uint8_t m_regs[8]; // current code uses the 7342 regs!! (only [2]) required_device<palette_device> m_palette; int m_banklimit; - k007420_delegate m_callback; + sprite_delegate m_callback; }; DECLARE_DEVICE_TYPE(K007420, k007420_device) diff --git a/src/mame/video/k037122.cpp b/src/mame/video/k037122.cpp index a5294904886..0f90673dbc1 100644 --- a/src/mame/video/k037122.cpp +++ b/src/mame/video/k037122.cpp @@ -9,15 +9,16 @@ Konami 037122 #include "konami_helper.h" #include "screen.h" -#define VERBOSE 0 -#define LOG(x) do { if (VERBOSE) logerror x; } while (0) +//#define VERBOSE 1 +#include "logmacro.h" + #define K037122_NUM_TILES 16384 DEFINE_DEVICE_TYPE(K037122, k037122_device, "k037122", "K037122 2D Tilemap") -k037122_device::k037122_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K037122, tag, owner, clock), +k037122_device::k037122_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, K037122, tag, owner, clock), device_video_interface(mconfig, *this), device_gfx_interface(mconfig, *this, nullptr), m_tile_ram(nullptr), @@ -51,8 +52,8 @@ void k037122_device::device_start() m_tile_ram = make_unique_clear<uint32_t[]>(0x20000 / 4); m_reg = make_unique_clear<uint32_t[]>(0x400 / 4); - m_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer0),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); - m_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k037122_device::tile_info_layer1),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k037122_device::tile_info_layer0)), TILEMAP_SCAN_ROWS, 8, 8, 256, 64); + m_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k037122_device::tile_info_layer1)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); m_layer[0]->set_transparent_pen(0); m_layer[1]->set_transparent_pen(0); diff --git a/src/mame/video/k051316.cpp b/src/mame/video/k051316.cpp index 3e770b365ff..cd64d89ac64 100644 --- a/src/mame/video/k051316.cpp +++ b/src/mame/video/k051316.cpp @@ -105,14 +105,15 @@ GFXDECODE_END k051316_device::k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K051316, tag, owner, clock), - device_gfx_interface(mconfig, *this, gfxinfo), - m_zoom_rom(*this, DEVICE_SELF), - m_dx(0), - m_dy(0), - m_wrap(0), - m_pixels_per_byte(2), // 4bpp layout is default - m_layermask(0) + : device_t(mconfig, K051316, tag, owner, clock) + , device_gfx_interface(mconfig, *this, gfxinfo) + , m_zoom_rom(*this, DEVICE_SELF) + , m_dx(0) + , m_dy(0) + , m_wrap(0) + , m_pixels_per_byte(2) // 4bpp layout is default + , m_layermask(0) + , m_k051316_cb(*this) { } @@ -155,7 +156,7 @@ void k051316_device::device_start() decode_gfx(); gfx(0)->set_colors(palette().entries() / gfx(0)->depth()); - m_tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k051316_device::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tmap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k051316_device::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_ram.resize(0x800); memset(&m_ram[0], 0, 0x800); @@ -168,7 +169,7 @@ void k051316_device::device_start() m_tmap->set_transparent_pen(0); // bind callbacks - m_k051316_cb.bind_relative_to(*owner()); + m_k051316_cb.resolve(); save_item(NAME(m_ram)); save_item(NAME(m_ctrlram)); diff --git a/src/mame/video/k051316.h b/src/mame/video/k051316.h index 8d655fc6877..6d1b928c3f8 100644 --- a/src/mame/video/k051316.h +++ b/src/mame/video/k051316.h @@ -8,13 +8,14 @@ #include "tilemap.h" -typedef device_delegate<void (int *code, int *color, int *flags)> k051316_cb_delegate; #define K051316_CB_MEMBER(_name) void _name(int *code, int *color, int *flags) class k051316_device : public device_t, public device_gfx_interface { public: + using zoom_delegate = device_delegate<void (int *code, int *color, int *flags)>; + k051316_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); static const gfx_layout charlayout4; @@ -26,7 +27,7 @@ public: DECLARE_GFXDECODE_MEMBER(gfxinfo4_ram); // configuration - template <typename... T> void set_zoom_callback(T &&... args) { m_k051316_cb = k051316_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_zoom_callback(T &&... args) { m_k051316_cb.set(std::forward<T>(args)...); } void set_wrap(int wrap) { m_wrap = wrap; } void set_bpp(int bpp); void set_layermask(int mask) { m_layermask = mask; } @@ -75,7 +76,7 @@ private: int m_wrap; int m_pixels_per_byte; int m_layermask; - k051316_cb_delegate m_k051316_cb; + zoom_delegate m_k051316_cb; TILE_GET_INFO_MEMBER(get_tile_info); }; diff --git a/src/mame/video/k051960.cpp b/src/mame/video/k051960.cpp index 40023ce2914..580801717c7 100644 --- a/src/mame/video/k051960.cpp +++ b/src/mame/video/k051960.cpp @@ -136,6 +136,7 @@ k051960_device::k051960_device(const machine_config &mconfig, const char *tag, d , m_ram(nullptr) , m_sprite_rom(*this, DEVICE_SELF) , m_scanline_timer(nullptr) + , m_k051960_cb(*this) , m_irq_handler(*this) , m_firq_handler(*this) , m_nmi_handler(*this) @@ -193,7 +194,7 @@ void k051960_device::device_start() m_ram = make_unique_clear<uint8_t[]>(0x400); // bind callbacks - m_k051960_cb.bind_relative_to(*owner()); + m_k051960_cb.resolve(); // resolve callbacks m_irq_handler.resolve_safe(); diff --git a/src/mame/video/k051960.h b/src/mame/video/k051960.h index ca3c114f478..43db938c508 100644 --- a/src/mame/video/k051960.h +++ b/src/mame/video/k051960.h @@ -13,7 +13,6 @@ enum }; -typedef device_delegate<void (int *code, int *color, int *priority, int *shadow)> k051960_cb_delegate; #define K051960_CB_MEMBER(_name) void _name(int *code, int *color, int *priority, int *shadow) @@ -27,6 +26,8 @@ class k051960_device : public device_t, public device_gfx_interface, public devi DECLARE_GFXDECODE_MEMBER(gfxinfo_gradius3); public: + using sprite_delegate = device_delegate<void (int *code, int *color, int *priority, int *shadow)>; + k051960_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); auto irq_handler() { return m_irq_handler.bind(); } @@ -37,7 +38,7 @@ public: // static configuration - template <typename... T> void set_sprite_callback(T &&... args) { m_k051960_cb = k051960_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_sprite_callback(T &&... args) { m_k051960_cb.set(std::forward<T>(args)...); } void set_plane_order(int order); /* @@ -77,7 +78,7 @@ private: emu_timer *m_scanline_timer; - k051960_cb_delegate m_k051960_cb; + sprite_delegate m_k051960_cb; devcb_write_line m_irq_handler; // TODO: is this even used by anything? diff --git a/src/mame/video/k052109.cpp b/src/mame/video/k052109.cpp index 4c856ce8169..3ebcbb6fa6d 100644 --- a/src/mame/video/k052109.cpp +++ b/src/mame/video/k052109.cpp @@ -183,6 +183,7 @@ k052109_device::k052109_device(const machine_config &mconfig, const char *tag, d m_romsubbank(0), m_scrollctrl(0), m_char_rom(*this, DEVICE_SELF), + m_k052109_cb(*this), m_irq_handler(*this), m_firq_handler(*this), m_nmi_handler(*this) @@ -230,16 +231,16 @@ void k052109_device::device_start() m_videoram2_A = &m_ram[0x4800]; m_videoram2_B = &m_ram[0x5000]; - m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k052109_device::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k052109_device::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k052109_device::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k052109_device::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); m_tilemap[2]->set_transparent_pen(0); // bind callbacks - m_k052109_cb.bind_relative_to(*owner()); + m_k052109_cb.resolve(); // resolve callbacks m_irq_handler.resolve_safe(); diff --git a/src/mame/video/k052109.h b/src/mame/video/k052109.h index 1721ade5083..e597e63a7a6 100644 --- a/src/mame/video/k052109.h +++ b/src/mame/video/k052109.h @@ -7,7 +7,6 @@ #include "tilemap.h" -typedef device_delegate<void (int layer, int bank, int *code, int *color, int *flags, int *priority)> k052109_cb_delegate; #define K052109_CB_MEMBER(_name) void _name(int layer, int bank, int *code, int *color, int *flags, int *priority) @@ -19,13 +18,15 @@ class k052109_device : public device_t, public device_gfx_interface, public devi DECLARE_GFXDECODE_MEMBER(gfxinfo_ram); public: + using tile_delegate = device_delegate<void (int layer, int bank, int *code, int *color, int *flags, int *priority)>; + k052109_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); ~k052109_device() {} auto irq_handler() { return m_irq_handler.bind(); } auto firq_handler() { return m_firq_handler.bind(); } auto nmi_handler() { return m_nmi_handler.bind(); } - template <typename... T> void set_tile_callback(T &&... args) { m_k052109_cb = k052109_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_callback(T &&... args) { m_k052109_cb.set(std::forward<T>(args)...); } void set_char_ram(bool ram); /* @@ -87,7 +88,7 @@ private: optional_region_ptr<uint8_t> m_char_rom; - k052109_cb_delegate m_k052109_cb; + tile_delegate m_k052109_cb; devcb_write_line m_irq_handler; devcb_write_line m_firq_handler; diff --git a/src/mame/video/k053244_k053245.cpp b/src/mame/video/k053244_k053245.cpp index 3b1e82a9237..a98b464bdce 100644 --- a/src/mame/video/k053244_k053245.cpp +++ b/src/mame/video/k053244_k053245.cpp @@ -82,14 +82,15 @@ GFXDECODE_MEMBER( k05324x_device::gfxinfo_6bpp ) GFXDECODE_END -k05324x_device::k05324x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K053244, tag, owner, clock), +k05324x_device::k05324x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, K053244, tag, owner, clock), device_gfx_interface(mconfig, *this, gfxinfo), m_ram(nullptr), m_buffer(nullptr), m_sprite_rom(*this, DEVICE_SELF), m_dx(0), m_dy(0), + m_k05324x_cb(*this), m_rombank(0), m_ramsize(0), m_z_rejection(0) @@ -135,7 +136,7 @@ void k05324x_device::device_start() m_buffer = make_unique_clear<uint16_t[]>(m_ramsize / 2); // bind callbacks - m_k05324x_cb.bind_relative_to(*owner()); + m_k05324x_cb.resolve(); save_pointer(NAME(m_ram), m_ramsize / 2); save_pointer(NAME(m_buffer), m_ramsize / 2); diff --git a/src/mame/video/k053244_k053245.h b/src/mame/video/k053244_k053245.h index e9be05e7c7c..1f01fd71a8a 100644 --- a/src/mame/video/k053244_k053245.h +++ b/src/mame/video/k053244_k053245.h @@ -6,7 +6,6 @@ #pragma once -typedef device_delegate<void (int *code, int *color, int *priority)> k05324x_cb_delegate; #define K05324X_CB_MEMBER(_name) void _name(int *code, int *color, int *priority) @@ -18,11 +17,13 @@ class k05324x_device : public device_t, public device_gfx_interface DECLARE_GFXDECODE_MEMBER(gfxinfo_6bpp); public: + using sprite_delegate = device_delegate<void (int *code, int *color, int *priority)>; + k05324x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration void set_bpp(int bpp); - template <typename... T> void set_sprite_callback(T &&... args) { m_k05324x_cb = k05324x_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_sprite_callback(T &&... args) { m_k05324x_cb.set(std::forward<T>(args)...); } void set_offsets(int x_offset, int y_offset) { m_dx = x_offset; @@ -53,9 +54,9 @@ private: required_region_ptr<uint8_t> m_sprite_rom; int m_dx, m_dy; - k05324x_cb_delegate m_k05324x_cb; + sprite_delegate m_k05324x_cb; - uint8_t m_regs[0x10]; // 053244 + uint8_t m_regs[0x10]; // 053244 int m_rombank; // 053244 int m_ramsize; int m_z_rejection; diff --git a/src/mame/video/k053246_k053247_k055673.cpp b/src/mame/video/k053246_k053247_k055673.cpp index 7b46b032563..750f2a4d084 100644 --- a/src/mame/video/k053246_k053247_k055673.cpp +++ b/src/mame/video/k053246_k053247_k055673.cpp @@ -1046,11 +1046,12 @@ k053247_device::k053247_device(const machine_config &mconfig, const char *tag, d } k053247_device::k053247_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, type, tag, owner, clock), - device_video_interface(mconfig, *this), - device_gfx_interface(mconfig, *this, nullptr), - m_gfxrom(*this, DEVICE_SELF), - m_gfx_num(0) + : device_t(mconfig, type, tag, owner, clock) + , device_video_interface(mconfig, *this) + , device_gfx_interface(mconfig, *this, nullptr) + , m_k053247_cb(*this) + , m_gfxrom(*this, DEVICE_SELF) + , m_gfx_num(0) { clear_all(); } diff --git a/src/mame/video/k053246_k053247_k055673.h b/src/mame/video/k053246_k053247_k055673.h index dc122084b17..62c93832217 100644 --- a/src/mame/video/k053246_k053247_k055673.h +++ b/src/mame/video/k053246_k053247_k055673.h @@ -12,7 +12,6 @@ #define NORMAL_PLANE_ORDER 4 -typedef device_delegate<void (int *code, int *color, int *priority_mask)> k053247_cb_delegate; #define K053246_CB_MEMBER(_name) void _name(int *code, int *color, int *priority_mask) #define K055673_CB_MEMBER(_name) void _name(int *code, int *color, int *priority_mask) @@ -52,11 +51,12 @@ class k053247_device : public device_t, public device_gfx_interface { public: + using sprite_delegate = device_delegate<void (int *code, int *color, int *priority_mask)>; + k053247_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration - void set_k053247_callback(k053247_cb_delegate callback) { m_k053247_cb = callback; } - template <typename... T> void set_sprite_callback(T &&... args) { m_k053247_cb = k053247_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_sprite_callback(T &&... args) { m_k053247_cb.set(std::forward<T>(args)...); } void set_config(int bpp, int dx, int dy) { m_bpp = bpp; @@ -101,7 +101,7 @@ public: u8 m_objcha_line; int m_z_rejection; - k053247_cb_delegate m_k053247_cb; + sprite_delegate m_k053247_cb; required_region_ptr<u8> m_gfxrom; int m_gfx_num; diff --git a/src/mame/video/k054156_k054157_k056832.cpp b/src/mame/video/k054156_k054157_k056832.cpp index 56476fc99ca..36583aa09f7 100644 --- a/src/mame/video/k054156_k054157_k056832.cpp +++ b/src/mame/video/k054156_k054157_k056832.cpp @@ -184,8 +184,8 @@ ones. The other 7 words are ignored. Global scrollx is ignored. DEFINE_DEVICE_TYPE(K056832, k056832_device, "k056832", "K056832 Tilemap Generator") -k056832_device::k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, K056832, tag, owner, clock), +k056832_device::k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, K056832, tag, owner, clock), device_gfx_interface(mconfig, *this), //m_tilemap[K056832_PAGE_COUNT], //*m_pixmap[K056832_PAGE_COUNT], @@ -194,6 +194,7 @@ k056832_device::k056832_device(const machine_config &mconfig, const char *tag, d m_rombase(*this, DEVICE_SELF), m_num_gfx_banks(0), m_cur_gfx_banks(0), + m_k056832_cb(*this), m_gfx_num(0), m_bpp(-1), m_big(0), @@ -263,22 +264,22 @@ void k056832_device::create_tilemaps() m_videoram.resize(0x2000 * (K056832_PAGE_COUNT + 1) / 2); memset(&m_videoram[0], 0, 2*m_videoram.size()); - m_tilemap[0x0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info3),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info4),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info5),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x6] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info6),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x7] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info7),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x8] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info8),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0x9] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_info9),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xa] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infoa),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xb] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infob),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xc] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infoc),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xd] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infod),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xe] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infoe),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tilemap[0xf] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(k056832_device::get_tile_infof),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info3)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info4)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info5)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x6] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info6)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x7] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info7)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x8] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info8)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0x9] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_info9)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xa] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infoa)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xb] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infob)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xc] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infoc)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xd] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infod)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xe] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infoe)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0xf] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(k056832_device::get_tile_infof)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); for (i = 0; i < K056832_PAGE_COUNT; i++) { @@ -348,7 +349,7 @@ void k056832_device::device_start() finalize_init(); // bind callbacks - m_k056832_cb.bind_relative_to(*owner()); + m_k056832_cb.resolve(); } /***************************************************************************** diff --git a/src/mame/video/k054156_k054157_k056832.h b/src/mame/video/k054156_k054157_k056832.h index 4be43e75517..57cfeff1c7d 100644 --- a/src/mame/video/k054156_k054157_k056832.h +++ b/src/mame/video/k054156_k054157_k056832.h @@ -8,7 +8,6 @@ #include "video/k055555.h" // still needs k055555_get_palette_index #include "tilemap.h" -typedef device_delegate<void (int layer, int *code, int *color, int *flags)> k056832_cb_delegate; #define K056832_CB_MEMBER(_name) void _name(int layer, int *code, int *color, int *flags) #define K056832_PAGE_COUNT 16 @@ -32,6 +31,8 @@ class k055555_device; class k056832_device : public device_t, public device_gfx_interface { public: + using tile_delegate = device_delegate<void (int layer, int *code, int *color, int *flags)>; + template <typename T> k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&mixer_tag) : k056832_device(mconfig, tag, owner, clock) { @@ -40,7 +41,7 @@ public: k056832_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template <typename... T> void set_tile_callback(T &&... args) { m_k056832_cb = k056832_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_callback(T &&... args) { m_k056832_cb.set(std::forward<T>(args)...); } void set_config(int bpp, int big, int djmain_hack) { @@ -122,7 +123,7 @@ private: int m_num_gfx_banks; // depends on size of graphics ROMs int m_cur_gfx_banks; // cached info for K056832_regs[0x1a] - k056832_cb_delegate m_k056832_cb; + tile_delegate m_k056832_cb; int m_gfx_num; int m_bpp; diff --git a/src/mame/video/kaneko_tmap.cpp b/src/mame/video/kaneko_tmap.cpp index 1f9e17b4be0..49679049bb0 100644 --- a/src/mame/video/kaneko_tmap.cpp +++ b/src/mame/video/kaneko_tmap.cpp @@ -116,6 +116,7 @@ kaneko_view2_tilemap_device::kaneko_view2_tilemap_device(const machine_config &m , m_xdim(0) , m_ydim(0) , m_invert_flip(0) + , m_view2_cb(*this) , m_regs(nullptr) { } @@ -148,19 +149,19 @@ void kaneko_view2_tilemap_device::device_start() }; layout.total = m_gfxrom->bytes() / ((16*16*4) / 8); - m_view2_cb.bind_relative_to(*owner()); + m_view2_cb.resolve(); m_regs = make_unique_clear<u16[]>(0x20/2); set_gfx(0, std::make_unique<gfx_element>(&palette(), layout, m_gfxrom->base(), 0, 0x40, m_colbase)); m_tmap[0] = &machine().tilemap().create( *this, - tilemap_get_info_delegate(FUNC(kaneko_view2_tilemap_device::get_tile_info<0>),this), + tilemap_get_info_delegate(*this, FUNC(kaneko_view2_tilemap_device::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16, 0x20,0x20); m_tmap[1] = &machine().tilemap().create( *this, - tilemap_get_info_delegate(FUNC(kaneko_view2_tilemap_device::get_tile_info<1>),this), + tilemap_get_info_delegate(*this, FUNC(kaneko_view2_tilemap_device::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 0x20,0x20); diff --git a/src/mame/video/kaneko_tmap.h b/src/mame/video/kaneko_tmap.h index 5984fb0fc54..c08d4876b2f 100644 --- a/src/mame/video/kaneko_tmap.h +++ b/src/mame/video/kaneko_tmap.h @@ -10,6 +10,8 @@ class kaneko_view2_tilemap_device : public device_t, public device_gfx_interface { public: + typedef device_delegate<void (u8, u32*)> view2_cb_delegate; + kaneko_view2_tilemap_device(const machine_config &mconfig, const char *tag, device_t *owner) : kaneko_view2_tilemap_device(mconfig, tag, owner, (u32)0) { @@ -28,8 +30,7 @@ public: } void set_invert_flip(int invert_flip) { m_invert_flip = invert_flip; } // for fantasia (bootleg) - typedef device_delegate<void (u8, u32*)> view2_cb_delegate; - void set_tile_callback(view2_cb_delegate cb) { m_view2_cb = cb; } + template <typename... T> void set_tile_callback(T &&... args) { m_view2_cb.set(std::forward<T>(args)...); } void vram_w(int _N_, offs_t offset, u16 data, u16 mem_mask = u16(~0)); diff --git a/src/mame/video/karnov.cpp b/src/mame/video/karnov.cpp index bcc5b1591d8..353ce1c4809 100644 --- a/src/mame/video/karnov.cpp +++ b/src/mame/video/karnov.cpp @@ -64,8 +64,8 @@ void karnov_state::playfield_w(offs_t offset, u16 data, u16 mem_mask) VIDEO_START_MEMBER(karnov_state,karnov) { /* Allocate bitmap & tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_fix_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(karnov_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(karnov_state::get_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); } @@ -73,8 +73,8 @@ VIDEO_START_MEMBER(karnov_state,karnov) VIDEO_START_MEMBER(karnov_state,wndrplnt) { /* Allocate bitmap & tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(karnov_state::get_fix_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(karnov_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(karnov_state::get_fix_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/kchamp.cpp b/src/mame/video/kchamp.cpp index c1590075173..ea81463be36 100644 --- a/src/mame/video/kchamp.cpp +++ b/src/mame/video/kchamp.cpp @@ -52,7 +52,7 @@ TILE_GET_INFO_MEMBER(kchamp_state::get_bg_tile_info) void kchamp_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kchamp_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kchamp_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } /* diff --git a/src/mame/video/kickgoal.cpp b/src/mame/video/kickgoal.cpp index fad3864a178..e538a93fdd8 100644 --- a/src/mame/video/kickgoal.cpp +++ b/src/mame/video/kickgoal.cpp @@ -118,9 +118,9 @@ VIDEO_START_MEMBER(kickgoal_state,kickgoal) m_bg2_base = 0x2000 / 4; m_bg2_mask = (0x2000/4) - 1; - m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_kickgoal_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_8x8),this), 8, 8, 64, 64); - m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); - m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_32x32),this), 32, 32, 64, 64); + m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_kickgoal_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_8x8)), 8, 8, 64, 64); + m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_16x16)), 16, 16, 64, 64); + m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_32x32)), 32, 32, 64, 64); m_fgtm->set_transparent_pen(15); m_bgtm->set_transparent_pen(15); @@ -138,9 +138,9 @@ VIDEO_START_MEMBER(kickgoal_state,actionhw) m_bg2_base = 0x2000; m_bg2_mask = 0x2000 - 1; - m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_actionhw_fg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_8x8),this), 8, 8, 64, 64); - m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); - m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kickgoal_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(kickgoal_state::tilemap_scan_16x16),this), 16, 16, 64, 64); + m_fgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_actionhw_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_8x8)), 8, 8, 64, 64); + m_bgtm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_16x16)), 16, 16, 64, 64); + m_bg2tm = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kickgoal_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(kickgoal_state::tilemap_scan_16x16)), 16, 16, 64, 64); m_fgtm->set_transparent_pen(15); m_bgtm->set_transparent_pen(15); diff --git a/src/mame/video/kingobox.cpp b/src/mame/video/kingobox.cpp index fc5a692786c..0669cb9127f 100644 --- a/src/mame/video/kingobox.cpp +++ b/src/mame/video/kingobox.cpp @@ -195,8 +195,8 @@ TILE_GET_INFO_MEMBER(kingofb_state::get_fg_tile_info) VIDEO_START_MEMBER(kingofb_state,kingofb) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingofb_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_Y, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingofb_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingofb_state::get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_Y, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingofb_state::get_fg_tile_info)), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } @@ -259,8 +259,8 @@ TILE_GET_INFO_MEMBER(kingofb_state::ringking_get_bg_tile_info) VIDEO_START_MEMBER(kingofb_state,ringking) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingofb_state::ringking_get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_Y, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kingofb_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingofb_state::ringking_get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_Y, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kingofb_state::get_fg_tile_info)), TILEMAP_SCAN_COLS_FLIP_Y, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/kncljoe.cpp b/src/mame/video/kncljoe.cpp index a8fd628aea9..5a366683f30 100644 --- a/src/mame/video/kncljoe.cpp +++ b/src/mame/video/kncljoe.cpp @@ -99,7 +99,7 @@ TILE_GET_INFO_MEMBER(kncljoe_state::get_bg_tile_info) void kncljoe_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kncljoe_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kncljoe_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(4); } diff --git a/src/mame/video/konamigx.cpp b/src/mame/video/konamigx.cpp index de95a75e1d7..875a027bfce 100644 --- a/src/mame/video/konamigx.cpp +++ b/src/mame/video/konamigx.cpp @@ -1178,8 +1178,8 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type3) common_init(); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256); - m_gx_psac_tilemap_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac3_alt_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 256, 256); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac3_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 256, 256); + m_gx_psac_tilemap_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac3_alt_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 256, 256); m_gx_rozenable = 0; m_gx_specialrozenable = 2; @@ -1214,7 +1214,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4) common_init(); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); m_gx_rozenable = 0; m_gx_specialrozenable = 3; @@ -1242,7 +1242,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_vsn) common_init(); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); m_gx_rozenable = 0; m_gx_specialrozenable = 3; @@ -1269,7 +1269,7 @@ VIDEO_START_MEMBER(konamigx_state, konamigx_type4_sd2) common_init(); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); m_gx_rozenable = 0; m_gx_specialrozenable = 3; @@ -1298,8 +1298,8 @@ VIDEO_START_MEMBER(konamigx_state, opengolf) m_k056832->set_layer_offs(2, 2+1, 0); m_k056832->set_layer_offs(3, 3+1, 0); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); - m_gx_psac_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac1a_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac1b_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); // transparency will be handled manually in post-processing //m_gx_psac_tilemap->set_transparent_pen(0); @@ -1333,8 +1333,8 @@ VIDEO_START_MEMBER(konamigx_state, racinfrc) m_k056832->set_layer_offs(2, 2+1, -16); m_k056832->set_layer_offs(3, 3+1, -16); - m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1a_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); - m_gx_psac_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(konamigx_state::get_gx_psac1b_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac1a_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); + m_gx_psac_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(konamigx_state::get_gx_psac1b_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 128); // transparency will be handled manually in post-processing //m_gx_psac_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/kopunch.cpp b/src/mame/video/kopunch.cpp index 15479271459..149cdcab5d6 100644 --- a/src/mame/video/kopunch.cpp +++ b/src/mame/video/kopunch.cpp @@ -96,8 +96,8 @@ TILE_GET_INFO_MEMBER(kopunch_state::get_bg_tile_info) void kopunch_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kopunch_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(kopunch_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kopunch_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kopunch_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/ksayakyu.cpp b/src/mame/video/ksayakyu.cpp index dd070aa039d..c900e78ce66 100644 --- a/src/mame/video/ksayakyu.cpp +++ b/src/mame/video/ksayakyu.cpp @@ -116,8 +116,8 @@ void ksayakyu_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre void ksayakyu_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ksayakyu_state::get_ksayakyu_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 * 8); - m_textmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ksayakyu_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ksayakyu_state::get_ksayakyu_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 * 8); + m_textmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ksayakyu_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_textmap->set_transparent_pen(0); } diff --git a/src/mame/video/kyugo.cpp b/src/mame/video/kyugo.cpp index f482b2027b3..756c0a6f777 100644 --- a/src/mame/video/kyugo.cpp +++ b/src/mame/video/kyugo.cpp @@ -47,8 +47,8 @@ void kyugo_state::video_start() { m_color_codes = memregion("proms")->base() + 0x300; - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kyugo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(kyugo_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kyugo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(kyugo_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/labyrunr.cpp b/src/mame/video/labyrunr.cpp index c8017a5ed42..e3cf3776d9c 100644 --- a/src/mame/video/labyrunr.cpp +++ b/src/mame/video/labyrunr.cpp @@ -103,8 +103,8 @@ TILE_GET_INFO_MEMBER(labyrunr_state::get_tile_info1) void labyrunr_state::video_start() { - m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(labyrunr_state::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_layer1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(labyrunr_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(labyrunr_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_layer1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(labyrunr_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_layer0->set_transparent_pen(0); m_layer1->set_transparent_pen(0); diff --git a/src/mame/video/ladybug.cpp b/src/mame/video/ladybug.cpp index ae69cb4d321..040c8cd6966 100644 --- a/src/mame/video/ladybug.cpp +++ b/src/mame/video/ladybug.cpp @@ -101,7 +101,7 @@ void ladybug_video_device::device_start() std::fill_n(m_spr_ram.get(), 0x0400, 0); std::fill_n(m_bg_ram.get(), 0x0800, 0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ladybug_video_device::get_bg_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ladybug_video_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(32); m_bg_tilemap->set_transparent_pen(0); @@ -432,7 +432,7 @@ void sraider_state::video_start() { ladybug_base_state::video_start(); - m_grid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sraider_state::get_grid_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_grid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sraider_state::get_grid_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_grid_tilemap->set_scroll_rows(32); m_grid_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/ladyfrog.cpp b/src/mame/video/ladyfrog.cpp index f0991b0e39e..22d146d568e 100644 --- a/src/mame/video/ladyfrog.cpp +++ b/src/mame/video/ladyfrog.cpp @@ -127,7 +127,7 @@ void ladyfrog_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre VIDEO_START_MEMBER(ladyfrog_state,ladyfrog_common) { m_spriteram = std::make_unique<uint8_t[]>(160); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ladyfrog_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ladyfrog_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_paletteram.resize(0x200); m_paletteram_ext.resize(0x200); diff --git a/src/mame/video/lasso.cpp b/src/mame/video/lasso.cpp index 7a083823229..cc0dfc2d766 100644 --- a/src/mame/video/lasso.cpp +++ b/src/mame/video/lasso.cpp @@ -154,7 +154,7 @@ TILE_GET_INFO_MEMBER(lasso_state::pinbo_get_bg_tile_info) void lasso_state::video_start() { /* create tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lasso_state::lasso_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lasso_state::lasso_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); } @@ -162,8 +162,8 @@ void lasso_state::video_start() VIDEO_START_MEMBER(lasso_state,wwjgtin) { /* create tilemaps */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lasso_state::lasso_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_track_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lasso_state::wwjgtin_get_track_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lasso_state::lasso_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_track_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lasso_state::wwjgtin_get_track_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 64); m_bg_tilemap->set_transparent_pen(0); } @@ -171,7 +171,7 @@ VIDEO_START_MEMBER(lasso_state,wwjgtin) VIDEO_START_MEMBER(lasso_state,pinbo) { /* create tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lasso_state::pinbo_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lasso_state::pinbo_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/lastduel.cpp b/src/mame/video/lastduel.cpp index 3410c948120..ec09ebd9088 100644 --- a/src/mame/video/lastduel.cpp +++ b/src/mame/video/lastduel.cpp @@ -78,9 +78,9 @@ TILE_GET_INFO_MEMBER(lastduel_state::get_fix_info) VIDEO_START_MEMBER(lastduel_state,lastduel) { - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::ld_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::ld_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::get_fix_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::ld_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::ld_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::get_fix_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[0]->set_transmask(0, 0xffff, 0x0001); m_tilemap[0]->set_transmask(1, 0xf07f, 0x0f81); @@ -93,9 +93,9 @@ VIDEO_START_MEMBER(lastduel_state,lastduel) VIDEO_START_MEMBER(lastduel_state,madgear) { - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,64,32); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::get_fg_tile_info),this),TILEMAP_SCAN_COLS,16,16,64,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lastduel_state::get_fix_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lastduel_state::get_fix_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[0]->set_transmask(0, 0xffff, 0x8000); m_tilemap[0]->set_transmask(1, 0x80ff, 0xff00); diff --git a/src/mame/video/legionna.cpp b/src/mame/video/legionna.cpp index 4492f7d4d4b..c2acb3c3ffd 100644 --- a/src/mame/video/legionna.cpp +++ b/src/mame/video/legionna.cpp @@ -204,17 +204,17 @@ void legionna_state::common_video_start(bool split, bool has_extended_banking, b { common_video_allocate_ptr(); - m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_back_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32); + m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(legionna_state::get_back_tile_info)), TILEMAP_SCAN_ROWS,16,16,32,32); if (split) { - m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_split),this), TILEMAP_SCAN_ROWS,16,16,32,32); + m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(legionna_state::get_mid_tile_info_split)), TILEMAP_SCAN_ROWS,16,16,32,32); } else { - m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_mid_tile_info_share_bgrom),this), TILEMAP_SCAN_ROWS,16,16,32,32); + m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(legionna_state::get_mid_tile_info_share_bgrom)), TILEMAP_SCAN_ROWS,16,16,32,32); } - m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_fore_tile_info),this), TILEMAP_SCAN_ROWS,16,16,32,32); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(legionna_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(legionna_state::get_fore_tile_info)), TILEMAP_SCAN_ROWS,16,16,32,32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(legionna_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,64,32); m_has_extended_banking = has_extended_banking; m_has_extended_priority = has_extended_priority; diff --git a/src/mame/video/leland.cpp b/src/mame/video/leland.cpp index 4301df5e3ce..7861ac0c553 100644 --- a/src/mame/video/leland.cpp +++ b/src/mame/video/leland.cpp @@ -96,7 +96,7 @@ TILE_GET_INFO_MEMBER(ataxx_state::ataxx_get_tile_info) void leland_state::video_start() { /* tilemap */ - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(leland_state::leland_get_tile_info),this), tilemap_mapper_delegate(FUNC(leland_state::leland_scan),this), 8, 8, 256, 256); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(leland_state::leland_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(leland_state::leland_scan)), 8, 8, 256, 256); /* allocate memory */ m_video_ram = make_unique_clear<u8[]>(VRAM_SIZE); @@ -122,7 +122,7 @@ void ataxx_state::video_start() { // TODO: further untangle driver so the base class doesn't have stuff that isn't common and this can call the base implementation /* tilemap */ - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ataxx_state::ataxx_get_tile_info),this), tilemap_mapper_delegate(FUNC(ataxx_state::ataxx_scan),this), 8, 8, 256, 128); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ataxx_state::ataxx_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(ataxx_state::ataxx_scan)), 8, 8, 256, 128); /* first do the standard stuff */ m_video_ram = make_unique_clear<u8[]>(VRAM_SIZE); diff --git a/src/mame/video/lemmings.cpp b/src/mame/video/lemmings.cpp index c7c3f80a4f4..3a64c13db9b 100644 --- a/src/mame/video/lemmings.cpp +++ b/src/mame/video/lemmings.cpp @@ -33,7 +33,7 @@ TILE_GET_INFO_MEMBER(lemmings_state::get_tile_info) void lemmings_state::video_start() { - m_vram_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lemmings_state::get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_vram_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lemmings_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_vram_tilemap->set_transparent_pen(0); m_bitmap0.fill(0x100); diff --git a/src/mame/video/liberate.cpp b/src/mame/video/liberate.cpp index 4bd3e8d580b..5c1acb8b79d 100644 --- a/src/mame/video/liberate.cpp +++ b/src/mame/video/liberate.cpp @@ -204,8 +204,8 @@ WRITE8_MEMBER(liberate_state::prosport_bg_vram_w) VIDEO_START_MEMBER(liberate_state,prosoccr) { - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_back_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::back_scan),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_fix_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::fix_scan),this), 8, 8, 32, 32); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_back_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::back_scan)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_fix_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::fix_scan)), 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); @@ -218,8 +218,8 @@ VIDEO_START_MEMBER(liberate_state,prosoccr) VIDEO_START_MEMBER(liberate_state,boomrang) { - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_back_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::back_scan),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_fix_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::fix_scan),this), 8, 8, 32, 32); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_back_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::back_scan)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_fix_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::fix_scan)), 8, 8, 32, 32); m_back_tilemap->set_transmask(0, 0x0001, 0x007e); /* Bottom 1 pen/Top 7 pens */ m_fix_tilemap->set_transparent_pen(0); @@ -227,16 +227,16 @@ VIDEO_START_MEMBER(liberate_state,boomrang) VIDEO_START_MEMBER(liberate_state,liberate) { - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_back_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::back_scan),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_fix_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::fix_scan),this), 8, 8, 32, 32); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_back_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::back_scan)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_fix_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::fix_scan)), 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); } VIDEO_START_MEMBER(liberate_state,prosport) { - m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::prosport_get_back_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::back_scan),this), 16, 16, 32, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(liberate_state::get_fix_tile_info),this), tilemap_mapper_delegate(FUNC(liberate_state::fix_scan),this), 8, 8, 32, 32); + m_back_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::prosport_get_back_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::back_scan)), 16, 16, 32, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(liberate_state::get_fix_tile_info)), tilemap_mapper_delegate(*this, FUNC(liberate_state::fix_scan)), 8, 8, 32, 32); m_fix_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/lkage.cpp b/src/mame/video/lkage.cpp index 4a8824e5f9f..082897d358a 100644 --- a/src/mame/video/lkage.cpp +++ b/src/mame/video/lkage.cpp @@ -87,9 +87,9 @@ TILE_GET_INFO_MEMBER(lkage_state::get_tx_tile_info) void lkage_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lkage_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(lkage_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lkage_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lkage_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lkage_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lkage_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/lockon.cpp b/src/mame/video/lockon.cpp index b234716aa32..5334f22d80f 100644 --- a/src/mame/video/lockon.cpp +++ b/src/mame/video/lockon.cpp @@ -886,7 +886,7 @@ void lockon_state::hud_draw( bitmap_ind16 &bitmap, const rectangle &cliprect ) void lockon_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lockon_state::get_lockon_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lockon_state::get_lockon_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap->set_transparent_pen(0); /* Allocate the two frame buffers for rotation */ diff --git a/src/mame/video/lordgun.cpp b/src/mame/video/lordgun.cpp index d314ca47e8e..eabeca1e51c 100644 --- a/src/mame/video/lordgun.cpp +++ b/src/mame/video/lordgun.cpp @@ -70,16 +70,16 @@ void lordgun_state::video_start() int h = m_screen->height(); // 0x800 x 200 - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lordgun_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS,8,8, 0x100, 0x40 ); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lordgun_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 0x100, 0x40); // 0x800 x 200 - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lordgun_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS,16,16, 0x80,0x20 ); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lordgun_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 0x80, 0x20); // 0x800 x 200 - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lordgun_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS,32,32, 0x40,0x10 ); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lordgun_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 32,32, 0x40, 0x10); // 0x200 x 100 - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lordgun_state::get_tile_info<3>),this), TILEMAP_SCAN_ROWS,8,8, 0x40,0x20 ); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lordgun_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); m_tilemap[0]->set_scroll_rows(1); m_tilemap[0]->set_scroll_cols(1); diff --git a/src/mame/video/lucky74.cpp b/src/mame/video/lucky74.cpp index adf9b5a5623..c2436f0dc47 100644 --- a/src/mame/video/lucky74.cpp +++ b/src/mame/video/lucky74.cpp @@ -227,8 +227,8 @@ TILE_GET_INFO_MEMBER(lucky74_state::get_bg_tile_info) void lucky74_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lucky74_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lucky74_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lucky74_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lucky74_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/lvcards.cpp b/src/mame/video/lvcards.cpp index 0434e209fea..f7e19bb21ad 100644 --- a/src/mame/video/lvcards.cpp +++ b/src/mame/video/lvcards.cpp @@ -71,7 +71,7 @@ TILE_GET_INFO_MEMBER(lvcards_state::get_bg_tile_info) void lvcards_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lvcards_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lvcards_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/lwings.cpp b/src/mame/video/lwings.cpp index acda77e9590..e0c36dea97f 100644 --- a/src/mame/video/lwings.cpp +++ b/src/mame/video/lwings.cpp @@ -78,21 +78,21 @@ TILE_GET_INFO_MEMBER(lwings_state::get_bg2_tile_info) void lwings_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lwings_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lwings_state::lwings_get_bg1_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::lwings_get_bg1_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); m_fg_tilemap->set_transparent_pen(3); } VIDEO_START_MEMBER(lwings_state,trojan) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lwings_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lwings_state::trojan_get_bg1_tile_info),this),TILEMAP_SCAN_COLS, 16, 16, 32, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(lwings_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(lwings_state::get_bg2_memory_offset),this), 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::trojan_get_bg1_tile_info)),TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(lwings_state::get_bg2_memory_offset)), 16, 16, 32, 16); m_fg_tilemap->set_transparent_pen(3); - m_bg1_tilemap->set_transmask(0, 0xffff, 0x0001); /* split type 0 is totally transparent in front half */ - m_bg1_tilemap->set_transmask(1, 0xf07f, 0x0f81); /* split type 1 has pens 7-11 opaque in front half */ + m_bg1_tilemap->set_transmask(0, 0xffff, 0x0001); // split type 0 is totally transparent in front half + m_bg1_tilemap->set_transmask(1, 0xf07f, 0x0f81); // split type 1 has pens 7-11 opaque in front half m_bg2_avenger_hw = 0; m_spr_avenger_hw = 0; diff --git a/src/mame/video/m10.cpp b/src/mame/video/m10.cpp index e3d2fda7e9a..ce111021505 100644 --- a/src/mame/video/m10.cpp +++ b/src/mame/video/m10.cpp @@ -97,21 +97,18 @@ inline void m10_state::plot_pixel_m10( bitmap_ind16 &bm, int x, int y, int col ) VIDEO_START_MEMBER(m10_state,m10) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m10_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(m10_state::tilemap_scan)), 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_gfxdecode->set_gfx(1, std::make_unique<gfx_element>(m_palette, backlayout, m_chargen, 0, 8, 0)); m_back_gfx = m_gfxdecode->gfx(1); - return ; } VIDEO_START_MEMBER(m10_state,m15) { m_gfxdecode->set_gfx(0,std::make_unique<gfx_element>(m_palette, charlayout, m_chargen, 0, 8, 0)); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m10_state::get_tile_info),this),tilemap_mapper_delegate(FUNC(m10_state::tilemap_scan),this), 8, 8, 32, 32); - - return ; + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m10_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(m10_state::tilemap_scan)), 8, 8, 32, 32); } /*************************************************************************** diff --git a/src/mame/video/m107.cpp b/src/mame/video/m107.cpp index 3be0b00a65b..880295c76b4 100644 --- a/src/mame/video/m107.cpp +++ b/src/mame/video/m107.cpp @@ -127,7 +127,7 @@ void m107_state::video_start() pf_layer_info *layer = &m_pf_layer[laynum]; /* allocate a tilemaps per layer */ - layer->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m107_state::get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,64); + layer->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m107_state::get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); /* set the user data to point to the layer */ layer->tmap->set_user_data(&m_pf_layer[laynum]); diff --git a/src/mame/video/m52.cpp b/src/mame/video/m52.cpp index dedb6bb33ad..e1f7eab1cbc 100644 --- a/src/mame/video/m52.cpp +++ b/src/mame/video/m52.cpp @@ -152,7 +152,7 @@ TILE_GET_INFO_MEMBER(m52_state::get_tile_info) void m52_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_tx_gfxdecode, tilemap_get_info_delegate(FUNC(m52_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_tx_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m52_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_tx_tilemap->set_scrolldx(127, 127); diff --git a/src/mame/video/m57.cpp b/src/mame/video/m57.cpp index 52abd052a73..be3b81010d0 100644 --- a/src/mame/video/m57.cpp +++ b/src/mame/video/m57.cpp @@ -138,7 +138,7 @@ WRITE8_MEMBER(m57_state::m57_videoram_w) void m57_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m57_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m57_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(256); save_item(NAME(m_flipscreen)); diff --git a/src/mame/video/m58.cpp b/src/mame/video/m58.cpp index 413cca1e90f..1e20b51308c 100644 --- a/src/mame/video/m58.cpp +++ b/src/mame/video/m58.cpp @@ -169,7 +169,7 @@ TILEMAP_MAPPER_MEMBER(m58_state::tilemap_scan_rows) void m58_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m58_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(m58_state::tilemap_scan_rows),this), 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m58_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(m58_state::tilemap_scan_rows)), 8, 8, 64, 32); m_bg_tilemap->set_scrolldy(32, 32); m_screen->register_screen_bitmap(m_scroll_panel_bitmap); diff --git a/src/mame/video/m62.cpp b/src/mame/video/m62.cpp index 08adb59e029..4e0e61155cf 100644 --- a/src/mame/video/m62.cpp +++ b/src/mame/video/m62.cpp @@ -337,7 +337,7 @@ void m62_state::draw_sprites( bitmap_rgb32 &bitmap, const rectangle &cliprect, i } } -void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ) +void m62_state::m62_start(tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2) { m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); @@ -350,7 +350,7 @@ void m62_state::m62_start( tilemap_get_info_delegate tile_get_info, int rows, in m_bg_tilemap->set_scroll_cols(cols); } -void m62_state::m62_textlayer( tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2 ) +void m62_state::m62_textlayer(tilemap_get_info_delegate tile_get_info, int rows, int cols, int x1, int y1, int x2, int y2) { m_fg_tilemap = &machine().tilemap().create(*m_fg_decode, tile_get_info, TILEMAP_SCAN_ROWS, x1, y1, x2, y2); @@ -390,7 +390,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_kungfum_bg_tile_info) VIDEO_START_MEMBER(m62_state,kungfum) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_kungfum_bg_tile_info),this), 32, 0, 8, 8, 64, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_kungfum_bg_tile_info)), 32, 0, 8, 8, 64, 32); } uint32_t m62_state::screen_update_kungfum(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -432,9 +432,9 @@ TILE_GET_INFO_MEMBER(m62_state::get_ldrun_bg_tile_info) void m62_state::video_start() { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_ldrun_bg_tile_info),this), 1, 1, 8, 8, 64, 32); - m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_ldrun_bg_tile_info)), 1, 1, 8, 8, 64, 32); + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); // split type 1 has pen 0 transparent in front half } uint32_t m62_state::screen_update_ldrun(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -470,7 +470,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_ldrun2_bg_tile_info) VIDEO_START_MEMBER(m62_state,ldrun2) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_ldrun2_bg_tile_info),this), 1, 1, 8, 8, 64, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_ldrun2_bg_tile_info)), 1, 1, 8, 8, 64, 32); m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } @@ -532,8 +532,8 @@ TILE_GET_INFO_MEMBER(m62_state::get_battroad_fg_tile_info) VIDEO_START_MEMBER(m62_state,battroad) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_battroad_bg_tile_info),this), 1, 1, 8, 8, 64, 32); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_battroad_fg_tile_info),this), 1, 1, 8, 8, 32, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_battroad_bg_tile_info)), 1, 1, 8, 8, 64, 32); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_battroad_fg_tile_info)), 1, 1, 8, 8, 32, 32); m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ } @@ -568,7 +568,7 @@ TILE_GET_INFO_MEMBER(m62_state::get_ldrun4_bg_tile_info) VIDEO_START_MEMBER(m62_state,ldrun4) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_ldrun4_bg_tile_info),this), 1, 0, 8, 8, 64, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_ldrun4_bg_tile_info)), 1, 0, 8, 8, 64, 32); } uint32_t m62_state::screen_update_ldrun4(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -607,8 +607,8 @@ TILE_GET_INFO_MEMBER(m62_state::get_lotlot_fg_tile_info) VIDEO_START_MEMBER(m62_state,lotlot) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_lotlot_bg_tile_info),this), 1, 1, 12, 10, 32, 64); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_lotlot_fg_tile_info),this), 1, 1, 12, 10, 32, 64); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_lotlot_bg_tile_info)), 1, 1, 12, 10, 32, 64); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_lotlot_fg_tile_info)), 1, 1, 12, 10, 32, 64); } uint32_t m62_state::screen_update_lotlot(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -666,13 +666,13 @@ TILE_GET_INFO_MEMBER(m62_state::get_kidniki_fg_tile_info) VIDEO_START_MEMBER(m62_state,kidniki) { - m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ + m_bg_tilemap = &machine().tilemap().create(*m_chr_decode, tilemap_get_info_delegate(*this, FUNC(m62_state::get_kidniki_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); // split type 1 has pen 0 transparent in front half register_savestate(); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_kidniki_fg_tile_info),this), 1, 1, 12, 8, 32, 64); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_kidniki_fg_tile_info)), 1, 1, 12, 8, 32, 64); } uint32_t m62_state::screen_update_kidniki(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -721,8 +721,8 @@ TILE_GET_INFO_MEMBER(m62_state::get_spelunkr_fg_tile_info) VIDEO_START_MEMBER(m62_state,spelunkr) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_bg_tile_info),this), 1, 1, 8, 8, 64, 64); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_spelunkr_bg_tile_info)), 1, 1, 8, 8, 64, 64); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_spelunkr_fg_tile_info)), 1, 1, 12, 8, 32, 32); } uint32_t m62_state::screen_update_spelunkr(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -763,8 +763,8 @@ TILE_GET_INFO_MEMBER(m62_state::get_spelunk2_bg_tile_info) VIDEO_START_MEMBER(m62_state,spelunk2) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_spelunk2_bg_tile_info),this), 1, 1, 8, 8, 64, 64); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_spelunkr_fg_tile_info),this), 1, 1, 12, 8, 32, 32); + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_spelunk2_bg_tile_info)), 1, 1, 8, 8, 64, 64); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_spelunkr_fg_tile_info)), 1, 1, 12, 8, 32, 32); } uint32_t m62_state::screen_update_spelunk2(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -806,10 +806,10 @@ TILE_GET_INFO_MEMBER(m62_state::get_youjyudn_fg_tile_info) VIDEO_START_MEMBER(m62_state,youjyudn) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_youjyudn_bg_tile_info),this), 1, 0, 8, 16, 64, 16); - m62_textlayer(tilemap_get_info_delegate(FUNC(m62_state::get_youjyudn_fg_tile_info),this), 1, 1, 12, 8, 32, 32); - m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_youjyudn_bg_tile_info)), 1, 0, 8, 16, 64, 16); + m62_textlayer(tilemap_get_info_delegate(*this, FUNC(m62_state::get_youjyudn_fg_tile_info)), 1, 1, 12, 8, 32, 32); + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); // split type 1 has pen 0 transparent in front half } uint32_t m62_state::screen_update_youjyudn(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) @@ -834,10 +834,8 @@ WRITE8_MEMBER(m62_state::horizon_scrollram_w) TILE_GET_INFO_MEMBER(m62_state::get_horizon_bg_tile_info) { - int code; - int color; - code = m_m62_tileram[tile_index << 1]; - color = m_m62_tileram[(tile_index << 1) | 1]; + int const code = m_m62_tileram[tile_index << 1]; + int const color = m_m62_tileram[(tile_index << 1) | 1]; SET_TILE_INFO_MEMBER(0, code | ((color & 0xc0) << 2) | ((color & 0x20) << 5), color & 0x1f, 0); if (((color & 0x1f) >> 1) >= 0x08) @@ -848,18 +846,16 @@ TILE_GET_INFO_MEMBER(m62_state::get_horizon_bg_tile_info) VIDEO_START_MEMBER(m62_state,horizon) { - m62_start(tilemap_get_info_delegate(FUNC(m62_state::get_horizon_bg_tile_info),this), 32, 0, 8, 8, 64, 32); - m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); /* split type 1 has pen 0 transparent in front half */ + m62_start(tilemap_get_info_delegate(*this, FUNC(m62_state::get_horizon_bg_tile_info)), 32, 0, 8, 8, 64, 32); + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); // split type 1 has pen 0 transparent in front half } uint32_t m62_state::screen_update_horizon(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { - int i; - for (i = 0; i < 32; i++) - { + for (int i = 0; i < 32; i++) m_bg_tilemap->set_scrollx(i, m_scrollram[i << 1] | (m_scrollram[(i << 1) | 1] << 8)); - } + m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); draw_sprites(bitmap, cliprect, 0x1f, 0x00, 0x00); m_bg_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); diff --git a/src/mame/video/m72.cpp b/src/mame/video/m72.cpp index 7f3415898d2..6cf2a07c0d1 100644 --- a/src/mame/video/m72.cpp +++ b/src/mame/video/m72.cpp @@ -95,8 +95,8 @@ void m72_state::register_savestate() VIDEO_START_MEMBER(m72_state,m72) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_fg_tilemap->set_transmask(0,0xffff,0x0001); m_fg_tilemap->set_transmask(1,0x00ff,0xff01); @@ -178,11 +178,11 @@ TILEMAP_MAPPER_MEMBER(m72_state::m82_scan_rows) VIDEO_START_MEMBER(m72_state,m82) { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::rtype2_get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::rtype2_get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); // The tilemap can be 256x64, but seems to be used at 128x64 (scroll wraparound). // The layout ramains 256x64, the right half is just not displayed. - m_bg_tilemap_large = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_tile_info<1>),this),tilemap_mapper_delegate(FUNC(m72_state::m82_scan_rows),this),8,8,128,64); + m_bg_tilemap_large = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::rtype2_get_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(m72_state::m82_scan_rows)), 8,8, 128,64); m_fg_tilemap->set_transmask(0,0xffff,0x0001); m_fg_tilemap->set_transmask(1,0x00ff,0xff01); @@ -216,8 +216,8 @@ VIDEO_START_MEMBER(m72_state,m82) // M84 VIDEO_START_MEMBER(m72_state,rtype2) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_tile_info<1>),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m72_state::rtype2_get_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::rtype2_get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m72_state::rtype2_get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_fg_tilemap->set_transmask(0,0xffff,0x0001); m_fg_tilemap->set_transmask(1,0x00ff,0xff01); diff --git a/src/mame/video/m90.cpp b/src/mame/video/m90.cpp index 6b581241b26..2bdeef80636 100644 --- a/src/mame/video/m90.cpp +++ b/src/mame/video/m90.cpp @@ -50,10 +50,10 @@ TILE_GET_INFO_MEMBER(m90_state::get_tile_info) void m90_state::common_tilemap_init() { - m_pf_layer[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m90_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64,64); - m_pf_layer[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m90_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); - m_pf_layer[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m90_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8, 64,64); - m_pf_layer[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m90_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); + m_pf_layer[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m90_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_pf_layer[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m90_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 128,64); + m_pf_layer[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m90_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_pf_layer[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m90_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 128,64); // fix for bootlegs m_pf_layer[0][0]->set_user_data(&m_video_data[0x0000]); diff --git a/src/mame/video/m92.cpp b/src/mame/video/m92.cpp index 4b3ca83cb40..7ac04a05988 100644 --- a/src/mame/video/m92.cpp +++ b/src/mame/video/m92.cpp @@ -241,8 +241,8 @@ VIDEO_START_MEMBER(m92_state,m92) M92_pf_layer_info *layer = &m_pf_layer[laynum]; /* allocate two tilemaps per layer, one normal, one wide */ - layer->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m92_state::get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,64); - layer->wide_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(m92_state::get_pf_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 128,64); + layer->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m92_state::get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + layer->wide_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(m92_state::get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 128,64); /* set the user data for each one to point to the layer */ layer->tmap->set_user_data(&m_pf_layer[laynum]); diff --git a/src/mame/video/macrossp.cpp b/src/mame/video/macrossp.cpp index 6658441b966..b50a8371b3f 100644 --- a/src/mame/video/macrossp.cpp +++ b/src/mame/video/macrossp.cpp @@ -168,10 +168,10 @@ void macrossp_state::video_start() m_spriteram_old = make_unique_clear<uint32_t[]>(m_spriteram.bytes() / 4); m_spriteram_old2 = make_unique_clear<uint32_t[]>(m_spriteram.bytes() / 4); - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_text_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_scra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_scra_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_scrb_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_scrb_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_scrc_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(macrossp_state::get_macrossp_scrc_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(macrossp_state::get_macrossp_text_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_scra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(macrossp_state::get_macrossp_scra_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_scrb_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(macrossp_state::get_macrossp_scrb_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_scrc_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(macrossp_state::get_macrossp_scrc_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_text_tilemap->set_transparent_pen(0); m_scra_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/madalien.cpp b/src/mame/video/madalien.cpp index 380d80cba01..56496074be2 100644 --- a/src/mame/video/madalien.cpp +++ b/src/mame/video/madalien.cpp @@ -118,27 +118,24 @@ WRITE8_MEMBER(madalien_state::madalien_videoram_w) void madalien_state::video_start() { - static const tilemap_mapper_delegate scan_functions[4] = + // can't make this static or it will keep stale pointers after a hard reset + const tilemap_mapper_delegate scan_functions[4] = { - tilemap_mapper_delegate(FUNC(madalien_state::scan_mode0),this), - tilemap_mapper_delegate(FUNC(madalien_state::scan_mode1),this), - tilemap_mapper_delegate(FUNC(madalien_state::scan_mode2),this), - tilemap_mapper_delegate(FUNC(madalien_state::scan_mode3),this) + tilemap_mapper_delegate(*this, FUNC(madalien_state::scan_mode0)), + tilemap_mapper_delegate(*this, FUNC(madalien_state::scan_mode1)), + tilemap_mapper_delegate(*this, FUNC(madalien_state::scan_mode2)), + tilemap_mapper_delegate(*this, FUNC(madalien_state::scan_mode3)) }; - static const int tilemap_cols[4] = - { - 16, 16, 32, 32 - }; + static constexpr int tilemap_cols[4] = { 16, 16, 32, 32 }; - m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(madalien_state::get_tile_info_FG),this), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); + m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(madalien_state::get_tile_info_FG)), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); m_tilemap_fg->set_transparent_pen(0); for (int i = 0; i < 4; i++) { - m_tilemap_edge1[i] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(madalien_state::get_tile_info_BG_1),this), scan_functions[i], 16, 16, tilemap_cols[i], 8); - - m_tilemap_edge2[i] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(madalien_state::get_tile_info_BG_2),this), scan_functions[i], 16, 16, tilemap_cols[i], 8); + m_tilemap_edge1[i] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(madalien_state::get_tile_info_BG_1)), scan_functions[i], 16, 16, tilemap_cols[i], 8); + m_tilemap_edge2[i] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(madalien_state::get_tile_info_BG_2)), scan_functions[i], 16, 16, tilemap_cols[i], 8); } m_headlight_bitmap = std::make_unique<bitmap_ind16>(128, 128); diff --git a/src/mame/video/mainsnk.cpp b/src/mame/video/mainsnk.cpp index 3d7e4344013..1be055435e2 100644 --- a/src/mame/video/mainsnk.cpp +++ b/src/mame/video/mainsnk.cpp @@ -69,8 +69,8 @@ TILE_GET_INFO_MEMBER(mainsnk_state::get_bg_tile_info) void mainsnk_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mainsnk_state::get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(mainsnk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mainsnk_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mainsnk_state::get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(mainsnk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mainsnk_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); diff --git a/src/mame/video/mappy.cpp b/src/mame/video/mappy.cpp index ccb2a54715c..5a4b7a66d13 100644 --- a/src/mame/video/mappy.cpp +++ b/src/mame/video/mappy.cpp @@ -304,7 +304,7 @@ TILE_GET_INFO_MEMBER(mappy_state::mappy_get_tile_info) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mappy_state::superpac_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mappy_state::superpac_tilemap_scan)), 8, 8, 36, 28); m_screen->register_screen_bitmap(m_sprite_bitmap); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31); @@ -312,14 +312,14 @@ VIDEO_START_MEMBER(mappy_state,superpac) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mappy_state::phozon_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mappy_state::superpac_tilemap_scan)), 8, 8, 36, 28); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 15); } 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mappy_state::mappy_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mappy_state::mappy_tilemap_scan)), 8, 8, 36, 60); m_bg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 31); m_bg_tilemap->set_scroll_cols(36); diff --git a/src/mame/video/marineb.cpp b/src/mame/video/marineb.cpp index 11fd9de48fb..03995835aa0 100644 --- a/src/mame/video/marineb.cpp +++ b/src/mame/video/marineb.cpp @@ -67,7 +67,7 @@ TILE_GET_INFO_MEMBER(marineb_state::get_tile_info) void marineb_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(marineb_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(marineb_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); save_item(NAME(m_palette_bank)); diff --git a/src/mame/video/mario.cpp b/src/mame/video/mario.cpp index 9619a59bc3e..162d3de1ea4 100644 --- a/src/mame/video/mario.cpp +++ b/src/mame/video/mario.cpp @@ -121,7 +121,7 @@ TILE_GET_INFO_MEMBER(mario_state::get_bg_tile_info) void mario_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(mario_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mario_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_gfxdecode->gfx(0)->set_granularity(8); diff --git a/src/mame/video/markham.cpp b/src/mame/video/markham.cpp index 834faf958a5..38415d8dce0 100644 --- a/src/mame/video/markham.cpp +++ b/src/mame/video/markham.cpp @@ -54,7 +54,7 @@ TILE_GET_INFO_MEMBER(markham_state::get_bg_tile_info) void markham_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(markham_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(markham_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/video/mb60553.cpp b/src/mame/video/mb60553.cpp index 894c7e91710..587c1612a47 100644 --- a/src/mame/video/mb60553.cpp +++ b/src/mame/video/mb60553.cpp @@ -48,7 +48,7 @@ void mb60553_zooming_tilemap_device::device_start() save_item(NAME(m_bank)); save_item(NAME(m_regs)); - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mb60553_zooming_tilemap_device::get_tile_info),this),tilemap_mapper_delegate(FUNC(mb60553_zooming_tilemap_device::twc94_scan),this), 16,16,128,64); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mb60553_zooming_tilemap_device::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(mb60553_zooming_tilemap_device::twc94_scan)), 16,16,128,64); m_tmap->set_transparent_pen(0); } diff --git a/src/mame/video/mcd212.cpp b/src/mame/video/mcd212.cpp index 45ac18184bb..a6c394a40cb 100644 --- a/src/mame/video/mcd212.cpp +++ b/src/mame/video/mcd212.cpp @@ -1417,6 +1417,7 @@ mcd212_device::mcd212_device(const machine_config &mconfig, const char *tag, dev : device_t(mconfig, MCD212, tag, owner, clock) , device_video_interface(mconfig, *this) , m_int_callback(*this) + , m_scanline_callback(*this) , m_planea(*this, "planea") , m_planeb(*this, "planeb") { @@ -1431,7 +1432,7 @@ mcd212_device::mcd212_device(const machine_config &mconfig, const char *tag, dev void mcd212_device::device_resolve_objects() { m_int_callback.resolve_safe(); - m_scanline_callback.bind_relative_to(*owner()); + m_scanline_callback.resolve(); } //------------------------------------------------- diff --git a/src/mame/video/mcd212.h b/src/mame/video/mcd212.h index cae78f3159d..bc5ed25a163 100644 --- a/src/mame/video/mcd212.h +++ b/src/mame/video/mcd212.h @@ -126,16 +126,7 @@ public: auto int_callback() { return m_int_callback.bind(); } - template <typename Object> void set_scanline_callback(Object &&cb) { m_scanline_callback = std::forward<Object>(cb); } - void set_scanline_callback(scanline_callback_delegate callback) { m_scanline_callback = callback; } - template <class FunctionClass> void set_scanline_callback(const char *devname, void (FunctionClass::*callback)(int), const char *name) - { - set_scanline_callback(scanline_callback_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr))); - } - template <class FunctionClass> void set_scanline_callback(void (FunctionClass::*callback)(int), const char *name) - { - set_scanline_callback(scanline_callback_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr))); - } + template <typename... T> void set_scanline_callback(T &&... args) { m_scanline_callback.set(std::forward<T>(args)...); } // device members DECLARE_READ16_MEMBER( regs_r ); diff --git a/src/mame/video/mcr.cpp b/src/mame/video/mcr.cpp index 87c72395cd3..1a0d21a1475 100644 --- a/src/mame/video/mcr.cpp +++ b/src/mame/video/mcr.cpp @@ -94,25 +94,25 @@ void mcr_state::video_start() /* the tilemap callback is based on the CPU board */ switch (m_mcr_cpu_board) { - case 90009: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr_state::mcr_90009_get_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,30); - break; + case 90009: + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr_state::mcr_90009_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,30); + break; - case 90010: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr_state::mcr_90010_get_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,30); - break; + case 90010: + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr_state::mcr_90010_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,30); + break; - case 91475: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr_state::mcr_90010_get_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,30); - break; + case 91475: + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr_state::mcr_90010_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,30); + break; - case 91490: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr_state::mcr_91490_get_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,30); - break; + case 91490: + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr_state::mcr_91490_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,30); + break; - default: - throw emu_fatalerror("mcr_state::video_start: Unknown mcr board"); - break; + default: + throw emu_fatalerror("mcr_state::video_start: Unknown mcr board"); + break; } } @@ -392,20 +392,20 @@ uint32_t mcr_state::screen_update_mcr(screen_device &screen, bitmap_ind16 &bitma /* update the sprites and render them */ switch (m_mcr_sprite_board) { - case 91399: - render_sprites_91399(screen, bitmap, cliprect); - break; - - case 91464: - if (m_mcr_cpu_board == 91442) - render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); - else if (m_mcr_cpu_board == 91475) - render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x40); - else if (m_mcr_cpu_board == 91490) - render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); - else if (m_mcr_cpu_board == 91721) - render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); - break; + case 91399: + render_sprites_91399(screen, bitmap, cliprect); + break; + + case 91464: + if (m_mcr_cpu_board == 91442) + render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); + else if (m_mcr_cpu_board == 91475) + render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x40); + else if (m_mcr_cpu_board == 91490) + render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); + else if (m_mcr_cpu_board == 91721) + render_sprites_91464(screen, bitmap, cliprect, 0x00, 0x30, 0x00); + break; } return 0; } diff --git a/src/mame/video/mcr3.cpp b/src/mame/video/mcr3.cpp index 261d5f66456..1d91b11f580 100644 --- a/src/mame/video/mcr3.cpp +++ b/src/mame/video/mcr3.cpp @@ -89,17 +89,17 @@ void mcr3_state::spyhunt_palette(palette_device &palette) const void mcr3_state::video_start() { // initialize the background tilemap - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr3_state::mcrmono_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr3_state::mcrmono_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,30); } VIDEO_START_MEMBER(mcr3_state,spyhunt) { // initialize the background tilemap - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr3_state::spyhunt_get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(mcr3_state::spyhunt_bg_scan),this), 64,32, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr3_state::spyhunt_get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(mcr3_state::spyhunt_bg_scan)), 64,32, 64,32); // initialize the text tilemap - m_alpha_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr3_state::spyhunt_get_alpha_tile_info),this), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_alpha_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr3_state::spyhunt_get_alpha_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); m_alpha_tilemap->set_transparent_pen(0); m_alpha_tilemap->set_scrollx(0, 16); diff --git a/src/mame/video/mcr68.cpp b/src/mame/video/mcr68.cpp index 10479d10075..faba58dc3fc 100644 --- a/src/mame/video/mcr68.cpp +++ b/src/mame/video/mcr68.cpp @@ -41,7 +41,7 @@ TILE_GET_INFO_MEMBER(mcr68_state::get_bg_tile_info) VIDEO_START_MEMBER(mcr68_state,mcr68) { /* initialize the background tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mcr68_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mcr68_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_bg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/meadows.cpp b/src/mame/video/meadows.cpp index ba5065fe665..9a106a01438 100644 --- a/src/mame/video/meadows.cpp +++ b/src/mame/video/meadows.cpp @@ -36,7 +36,7 @@ TILE_GET_INFO_MEMBER(meadows_state::get_tile_info) void meadows_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(meadows_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(meadows_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,30); } diff --git a/src/mame/video/mermaid.cpp b/src/mame/video/mermaid.cpp index 7b492537a6f..3e3b592d04b 100644 --- a/src/mame/video/mermaid.cpp +++ b/src/mame/video/mermaid.cpp @@ -156,10 +156,10 @@ TILE_GET_INFO_MEMBER(mermaid_state::get_fg_tile_info) void mermaid_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mermaid_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mermaid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mermaid_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mermaid_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_scroll_cols(32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/metlclsh.cpp b/src/mame/video/metlclsh.cpp index 462452c4f8d..018a1e71c63 100644 --- a/src/mame/video/metlclsh.cpp +++ b/src/mame/video/metlclsh.cpp @@ -135,8 +135,8 @@ void metlclsh_state::video_start() { m_otherram = std::make_unique<uint8_t[]>(0x800); // banked ram - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metlclsh_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(metlclsh_state::metlclsh_bgtilemap_scan),this), 16, 16, 32, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metlclsh_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(*this, FUNC(metlclsh_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(metlclsh_state::metlclsh_bgtilemap_scan)), 16, 16, 32, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(metlclsh_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/metro.cpp b/src/mame/video/metro.cpp index d1851f99d3d..b27d5e2fb8b 100644 --- a/src/mame/video/metro.cpp +++ b/src/mame/video/metro.cpp @@ -44,12 +44,12 @@ TILEMAP_MAPPER_MEMBER(metro_state::tilemap_scan_gstrik2) VIDEO_START_MEMBER(metro_state,blzntrnd) { - m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metro_state::k053936_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 256, 512); + m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(metro_state::k053936_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 256, 512); } VIDEO_START_MEMBER(metro_state,gstrik2) { - m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(metro_state::k053936_gstrik2_get_tile_info),this), tilemap_mapper_delegate(FUNC(metro_state::tilemap_scan_gstrik2),this), 16, 16, 128, 256); + m_k053936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(metro_state::k053936_gstrik2_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(metro_state::tilemap_scan_gstrik2)), 16, 16, 128, 256); } uint32_t metro_state::screen_update_psac_vdp2_mix(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/microtan.cpp b/src/mame/video/microtan.cpp index 3a43600b312..39087f4873a 100644 --- a/src/mame/video/microtan.cpp +++ b/src/mame/video/microtan.cpp @@ -44,7 +44,7 @@ void microtan_state::video_start() m_bg_tilemap = &machine().tilemap().create(* m_gfxdecode, - tilemap_get_info_delegate(FUNC(microtan_state::get_bg_tile_info),this), + tilemap_get_info_delegate(*this, FUNC(microtan_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 16, 32, 16); m_chunky_buffer = std::make_unique<uint8_t[]>(0x200); diff --git a/src/mame/video/mikie.cpp b/src/mame/video/mikie.cpp index 434bbbf82e9..5e1c739dfa3 100644 --- a/src/mame/video/mikie.cpp +++ b/src/mame/video/mikie.cpp @@ -127,7 +127,7 @@ TILE_GET_INFO_MEMBER(mikie_state::get_bg_tile_info) void mikie_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mikie_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mikie_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void mikie_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/mikromik.cpp b/src/mame/video/mikromik.cpp index f66a3af4e21..90c779d5179 100644 --- a/src/mame/video/mikromik.cpp +++ b/src/mame/video/mikromik.cpp @@ -143,7 +143,7 @@ void mm1_state::mm1m6_video(machine_config &config) I8275(config, m_crtc, XTAL(18'720'000)/8); m_crtc->set_character_width(HORIZONTAL_CHARACTER_PIXELS); - m_crtc->set_display_callback(FUNC(mm1_state::crtc_display_pixels), this); + m_crtc->set_display_callback(FUNC(mm1_state::crtc_display_pixels)); m_crtc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq0_w)); m_crtc->vrtc_wr_callback().set(m_hgdc, FUNC(upd7220_device::ext_sync_w)); m_crtc->set_screen("screen"); diff --git a/src/mame/video/mitchell.cpp b/src/mame/video/mitchell.cpp index 92c95ecc91f..473abc30d91 100644 --- a/src/mame/video/mitchell.cpp +++ b/src/mame/video/mitchell.cpp @@ -36,7 +36,7 @@ TILE_GET_INFO_MEMBER(mitchell_state::get_tile_info) VIDEO_START_MEMBER(mitchell_state,pang) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mitchell_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mitchell_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_transparent_pen(15); /* OBJ RAM */ diff --git a/src/mame/video/mjkjidai.cpp b/src/mame/video/mjkjidai.cpp index 0f66797bb87..3ba6d090ed6 100644 --- a/src/mame/video/mjkjidai.cpp +++ b/src/mame/video/mjkjidai.cpp @@ -28,7 +28,7 @@ TILE_GET_INFO_MEMBER(mjkjidai_state::get_tile_info) void mjkjidai_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mjkjidai_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mjkjidai_state::get_tile_info)),TILEMAP_SCAN_ROWS,8,8,64,32); } diff --git a/src/mame/video/model3.cpp b/src/mame/video/model3.cpp index 99e0f378512..77012df954a 100644 --- a/src/mame/video/model3.cpp +++ b/src/mame/video/model3.cpp @@ -197,14 +197,14 @@ void model3_state::video_start() m_vid_reg0 = 0; - m_layer4[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer0_4bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer8[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer0_8bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer4[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer1_4bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer8[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer1_8bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer4[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer2_4bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer8[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer2_8bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer4[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer3_4bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_layer8[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(model3_state::tile_info_layer3_8bit), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer4[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer0_4bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer8[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer0_8bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer4[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer1_4bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer8[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer1_8bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer4[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer2_4bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer8[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer2_8bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer4[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer3_4bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_layer8[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(model3_state::tile_info_layer3_8bit)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); // 4-bit tiles m_gfxdecode->set_gfx(0, std::make_unique<gfx_element>(m_palette, char4_layout, (uint8_t*)m_m3_char_ram.get(), 0, m_palette->entries() / 16, 0)); diff --git a/src/mame/video/mosaic.cpp b/src/mame/video/mosaic.cpp index de94afa235a..d3529f317b9 100644 --- a/src/mame/video/mosaic.cpp +++ b/src/mame/video/mosaic.cpp @@ -45,8 +45,8 @@ TILE_GET_INFO_MEMBER(mosaic_state::get_bg_tile_info) void mosaic_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mosaic_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mosaic_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mosaic_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mosaic_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0xff); } diff --git a/src/mame/video/mrdo.cpp b/src/mame/video/mrdo.cpp index 4917ff2d6a3..dae9fe3f180 100644 --- a/src/mame/video/mrdo.cpp +++ b/src/mame/video/mrdo.cpp @@ -160,8 +160,8 @@ TILE_GET_INFO_MEMBER(mrdo_state::get_fg_tile_info) void mrdo_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mrdo_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(mrdo_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(*this, FUNC(mrdo_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrdo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/mrjong.cpp b/src/mame/video/mrjong.cpp index 800758a9218..eb0a5875a36 100644 --- a/src/mame/video/mrjong.cpp +++ b/src/mame/video/mrjong.cpp @@ -98,7 +98,7 @@ TILE_GET_INFO_MEMBER(mrjong_state::get_bg_tile_info) void mrjong_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mrjong_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_XY, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mrjong_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_XY, 8, 8, 32, 32); } /* diff --git a/src/mame/video/ms1_tmap.cpp b/src/mame/video/ms1_tmap.cpp index dd3b0cac990..e1b84e30536 100644 --- a/src/mame/video/ms1_tmap.cpp +++ b/src/mame/video/ms1_tmap.cpp @@ -91,31 +91,31 @@ void megasys1_tilemap_device::device_start() // create 16x16 tilemaps m_tilemap[0][0] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_16x16),this), - 8,8, TILES_PER_PAGE_X * 16, TILES_PER_PAGE_Y * 2); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_16x16)), + 8, 8, TILES_PER_PAGE_X * 16, TILES_PER_PAGE_Y * 2); m_tilemap[0][1] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_16x16),this), - 8,8, TILES_PER_PAGE_X * 8, TILES_PER_PAGE_Y * 4); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_16x16)), + 8, 8, TILES_PER_PAGE_X * 8, TILES_PER_PAGE_Y * 4); m_tilemap[0][2] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_16x16),this), - 8,8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 8); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_16x16)), + 8, 8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 8); m_tilemap[0][3] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_16x16),this), - 8,8, TILES_PER_PAGE_X * 2, TILES_PER_PAGE_Y * 16); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_16x16)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_16x16)), + 8, 8, TILES_PER_PAGE_X * 2, TILES_PER_PAGE_Y * 16); // create 8x8 tilemaps m_tilemap[1][0] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_8x8),this), - 8,8, TILES_PER_PAGE_X * 8, TILES_PER_PAGE_Y * 1); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_8x8)), + 8, 8, TILES_PER_PAGE_X * 8, TILES_PER_PAGE_Y * 1); m_tilemap[1][1] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_8x8),this), - 8,8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 2); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_8x8)), + 8, 8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 2); m_tilemap[1][2] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_8x8),this), - 8,8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 2); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_8x8)), + 8, 8, TILES_PER_PAGE_X * 4, TILES_PER_PAGE_Y * 2); m_tilemap[1][3] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8),this), tilemap_mapper_delegate(FUNC(megasys1_tilemap_device::scan_8x8),this), - 8,8, TILES_PER_PAGE_X * 2, TILES_PER_PAGE_Y * 4); + *this, tilemap_get_info_delegate(*this, FUNC(megasys1_tilemap_device::get_scroll_tile_info_8x8)), tilemap_mapper_delegate(*this, FUNC(megasys1_tilemap_device::scan_8x8)), + 8, 8, TILES_PER_PAGE_X * 2, TILES_PER_PAGE_Y * 4); // set transparency for (int i = 0; i < 8; i++) diff --git a/src/mame/video/ms32.cpp b/src/mame/video/ms32.cpp index 5eef22b2f9c..f14612374bf 100644 --- a/src/mame/video/ms32.cpp +++ b/src/mame/video/ms32.cpp @@ -66,10 +66,10 @@ TILE_GET_INFO_MEMBER(ms32_state::get_ms32_extra_tile_info) void ms32_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ms32_state::get_ms32_tx_tile_info),this),TILEMAP_SCAN_ROWS,8, 8,64,64); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ms32_state::get_ms32_bg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,64); - m_bg_tilemap_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ms32_state::get_ms32_bg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,256,16); // alt layout, controller by register? - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ms32_state::get_ms32_roz_tile_info),this),TILEMAP_SCAN_ROWS,16,16,128,128); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ms32_state::get_ms32_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ms32_state::get_ms32_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64, 64); + m_bg_tilemap_alt = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ms32_state::get_ms32_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 256, 16); // alt layout, controller by register? + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ms32_state::get_ms32_roz_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 128,128); /* set up tile layers */ @@ -117,7 +117,7 @@ VIDEO_START_MEMBER(ms32_state,f1superb) { ms32_state::video_start(); - m_extra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ms32_state::get_ms32_extra_tile_info),this),TILEMAP_SCAN_ROWS,2048,1,1,0x400); + m_extra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ms32_state::get_ms32_extra_tile_info)), TILEMAP_SCAN_ROWS, 2048, 1, 1, 0x400); } /********** PALETTE WRITES **********/ diff --git a/src/mame/video/msisaac.cpp b/src/mame/video/msisaac.cpp index fea78aae6d3..da1624a0985 100644 --- a/src/mame/video/msisaac.cpp +++ b/src/mame/video/msisaac.cpp @@ -53,9 +53,9 @@ TILE_GET_INFO_MEMBER(msisaac_state::get_bg2_tile_info) void msisaac_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(msisaac_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(msisaac_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(msisaac_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(*this, FUNC(msisaac_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(msisaac_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(msisaac_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg2_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/mugsmash.cpp b/src/mame/video/mugsmash.cpp index cc2ca8db572..a5adb059819 100644 --- a/src/mame/video/mugsmash.cpp +++ b/src/mame/video/mugsmash.cpp @@ -133,10 +133,10 @@ WRITE16_MEMBER(mugsmash_state::mugsmash_reg_w) void mugsmash_state::video_start() { - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mugsmash_state::get_mugsmash_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mugsmash_state::get_mugsmash_tile_info1)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tilemap1->set_transparent_pen(0); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mugsmash_state::get_mugsmash_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mugsmash_state::get_mugsmash_tile_info2)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); } uint32_t mugsmash_state::screen_update_mugsmash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/mustache.cpp b/src/mame/video/mustache.cpp index 9a8f03217b7..317abfcff71 100644 --- a/src/mame/video/mustache.cpp +++ b/src/mame/video/mustache.cpp @@ -54,7 +54,7 @@ TILE_GET_INFO_MEMBER(mustache_state::get_bg_tile_info) void mustache_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mustache_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_X, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mustache_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(4); diff --git a/src/mame/video/mystston.cpp b/src/mame/video/mystston.cpp index bcf5961e61f..ff1c37aaa1b 100644 --- a/src/mame/video/mystston.cpp +++ b/src/mame/video/mystston.cpp @@ -215,9 +215,9 @@ void mystston_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec void mystston_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mystston_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_X, 16, 16, 16, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mystston_state::get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_X, 16, 16, 16, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mystston_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mystston_state::get_fg_tile_info)), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); /* create the interrupt timer */ diff --git a/src/mame/video/mystwarr.cpp b/src/mame/video/mystwarr.cpp index 9f70374a163..ab0787c7320 100644 --- a/src/mame/video/mystwarr.cpp +++ b/src/mame/video/mystwarr.cpp @@ -164,7 +164,7 @@ VIDEO_START_MEMBER(mystwarr_state, gaiapols) K053936_wraparound_enable(0, 1); K053936GP_set_offset(0, -10, 0); // floor tiles in demo loop2 (Elaine vs. boss) - m_ult_936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mystwarr_state::get_gai_936_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); + m_ult_936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mystwarr_state::get_gai_936_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); m_ult_936_tilemap->set_transparent_pen(0); } @@ -199,7 +199,7 @@ VIDEO_START_MEMBER(mystwarr_state, dadandrn) K053936_wraparound_enable(0, 1); K053936GP_set_offset(0, -8, 0); // Brainy's laser - m_ult_936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mystwarr_state::get_ult_936_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); + m_ult_936_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mystwarr_state::get_ult_936_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); m_ult_936_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/namco_c123tmap.cpp b/src/mame/video/namco_c123tmap.cpp index a5e25b2c19e..655df74b8a3 100644 --- a/src/mame/video/namco_c123tmap.cpp +++ b/src/mame/video/namco_c123tmap.cpp @@ -47,24 +47,24 @@ void namco_c123tmap_device::device_start() m_tilemapinfo.videoram = std::make_unique<uint16_t[]>(size); /* four scrolling tilemaps */ - m_tilemapinfo.tmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x0000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemapinfo.tmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x1000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemapinfo.tmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x2000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemapinfo.tmap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x0000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemapinfo.tmap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x1000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemapinfo.tmap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x2000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); if (m_tmap3_half_height) { - m_tilemapinfo.tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemapinfo.tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x3000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); /* two non-scrolling tilemaps */ - m_tilemapinfo.tmap[4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3808>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); - m_tilemapinfo.tmap[5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3c08>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); + m_tilemapinfo.tmap[4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x3808>)), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); + m_tilemapinfo.tmap[5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x3c08>)), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); } else { - m_tilemapinfo.tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x3000>), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemapinfo.tmap[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x3000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); /* two non-scrolling tilemaps */ - m_tilemapinfo.tmap[4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4008>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); - m_tilemapinfo.tmap[5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namco_c123tmap_device::get_tile_info<0x4408>), this), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); + m_tilemapinfo.tmap[4] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x4008>)), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); + m_tilemapinfo.tmap[5] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namco_c123tmap_device::get_tile_info<0x4408>)), TILEMAP_SCAN_ROWS, 8, 8, 36, 28); } /* define offsets for scrolling */ diff --git a/src/mame/video/namco_c169roz.cpp b/src/mame/video/namco_c169roz.cpp index 09ab88ec06f..89ca7a3ea2c 100644 --- a/src/mame/video/namco_c169roz.cpp +++ b/src/mame/video/namco_c169roz.cpp @@ -51,16 +51,16 @@ void namco_c169roz_device::device_start() std::fill(std::begin(m_videoram), std::end(m_videoram), 0x0000); m_tilemap[0] = &machine().tilemap().create(*this, - tilemap_get_info_delegate(FUNC(namco_c169roz_device::get_info<0>), this), - tilemap_mapper_delegate(FUNC(namco_c169roz_device::mapper), this), - 16, 16, - 256, 256); + tilemap_get_info_delegate(*this, FUNC(namco_c169roz_device::get_info<0>)), + tilemap_mapper_delegate(*this, FUNC(namco_c169roz_device::mapper)), + 16, 16, + 256, 256); m_tilemap[1] = &machine().tilemap().create(*this, - tilemap_get_info_delegate(FUNC(namco_c169roz_device::get_info<1>), this), - tilemap_mapper_delegate(FUNC(namco_c169roz_device::mapper), this), - 16, 16, - 256, 256); + tilemap_get_info_delegate(*this, FUNC(namco_c169roz_device::get_info<1>)), + tilemap_mapper_delegate(*this, FUNC(namco_c169roz_device::mapper)), + 16, 16, + 256, 256); save_item(NAME(m_control)); save_item(NAME(m_videoram)); diff --git a/src/mame/video/namcona1.cpp b/src/mame/video/namcona1.cpp index 34f3d89e0a2..aa92be6a294 100644 --- a/src/mame/video/namcona1.cpp +++ b/src/mame/video/namcona1.cpp @@ -191,13 +191,13 @@ void namcona1_state::gfxram_w(offs_t offset, u16 data, u16 mem_mask) void namcona1_state::video_start() { // normal tilemaps - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcona1_state::tilemap_get_info0),this), TILEMAP_SCAN_ROWS, 8,8,64,64); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcona1_state::tilemap_get_info1),this), TILEMAP_SCAN_ROWS, 8,8,64,64); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcona1_state::tilemap_get_info2),this), TILEMAP_SCAN_ROWS, 8,8,64,64); - m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcona1_state::tilemap_get_info3),this), TILEMAP_SCAN_ROWS, 8,8,64,64); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcona1_state::tilemap_get_info0)), TILEMAP_SCAN_ROWS, 8,8,64,64); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcona1_state::tilemap_get_info1)), TILEMAP_SCAN_ROWS, 8,8,64,64); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcona1_state::tilemap_get_info2)), TILEMAP_SCAN_ROWS, 8,8,64,64); + m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcona1_state::tilemap_get_info3)), TILEMAP_SCAN_ROWS, 8,8,64,64); // roz tilemap - m_bg_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcona1_state::roz_get_info),this), TILEMAP_SCAN_ROWS, 8,8,64,64); + m_bg_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcona1_state::roz_get_info)), TILEMAP_SCAN_ROWS, 8,8,64,64); m_shaperam.resize(0x8000); diff --git a/src/mame/video/namcos22.cpp b/src/mame/video/namcos22.cpp index 545fc499067..4a2c9d96900 100644 --- a/src/mame/video/namcos22.cpp +++ b/src/mame/video/namcos22.cpp @@ -2576,7 +2576,7 @@ void namcos22_state::video_start() m_posirq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(namcos22_state::posirq_callback),this)); m_mix_bitmap = std::make_unique<bitmap_ind16>(640, 480); - m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos22_state::get_text_tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_bgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos22_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_bgtilemap->set_transparent_pen(0xf); m_gfxdecode->gfx(0)->set_source((u8 *)m_cgram.target()); diff --git a/src/mame/video/namcos2_roz.cpp b/src/mame/video/namcos2_roz.cpp index 934b0e004b9..f4643e6611f 100644 --- a/src/mame/video/namcos2_roz.cpp +++ b/src/mame/video/namcos2_roz.cpp @@ -44,7 +44,7 @@ namcos2_roz_device::namcos2_roz_device(const machine_config &mconfig, const char void namcos2_roz_device::device_start() { - m_tilemap_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(namcos2_roz_device::roz_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 256, 256); + m_tilemap_roz = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(namcos2_roz_device::roz_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 256, 256); m_tilemap_roz->set_transparent_pen(0xff); } diff --git a/src/mame/video/namcos86.cpp b/src/mame/video/namcos86.cpp index 803270d78e6..e1fd9a556fa 100644 --- a/src/mame/video/namcos86.cpp +++ b/src/mame/video/namcos86.cpp @@ -133,14 +133,14 @@ TILE_GET_INFO_MEMBER(namcos86_state::get_tile_info3) void namcos86_state::video_start() { - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos86_state::get_tile_info0),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos86_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos86_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(namcos86_state::get_tile_info3),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos86_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos86_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos86_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(namcos86_state::get_tile_info3)), TILEMAP_SCAN_ROWS, 8,8, 64,32); for (int i = 0; i < 4; i++) { - static const int xdisp[] = { 47, 49, 46, 48 }; + static constexpr int xdisp[] = { 47, 49, 46, 48 }; m_bg_tilemap[i]->set_scrolldx(xdisp[i], 422 - xdisp[i]); m_bg_tilemap[i]->set_scrolldy(-9, 9); diff --git a/src/mame/video/nemesis.cpp b/src/mame/video/nemesis.cpp index aebbf5f7078..e136447af93 100644 --- a/src/mame/video/nemesis.cpp +++ b/src/mame/video/nemesis.cpp @@ -253,8 +253,8 @@ void nemesis_state::video_start() m_spriteram_words = m_spriteram.bytes() / 2; - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nemesis_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nemesis_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nemesis_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nemesis_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_background->set_transparent_pen(0); m_foreground->set_transparent_pen(0); diff --git a/src/mame/video/nes.cpp b/src/mame/video/nes.cpp index 267c63d7b46..8356e0b53b6 100644 --- a/src/mame/video/nes.cpp +++ b/src/mame/video/nes.cpp @@ -13,7 +13,7 @@ void nes_state::video_reset() { - m_ppu->set_vidaccess_callback(ppu2c0x_device::vidaccess_delegate(FUNC(nes_state::nes_ppu_vidaccess),this)); + m_ppu->set_vidaccess_callback(*this, FUNC(nes_state::nes_ppu_vidaccess)); } void nes_state::video_start() diff --git a/src/mame/video/newbrain.cpp b/src/mame/video/newbrain.cpp index 4e49210aeaa..79458eb10f1 100644 --- a/src/mame/video/newbrain.cpp +++ b/src/mame/video/newbrain.cpp @@ -76,7 +76,7 @@ void newbrain_state::video_start() save_item(NAME(m_tvl)); } -void newbrain_state::screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect) +void newbrain_state::do_screen_update(bitmap_rgb32 &bitmap, const rectangle &cliprect) { int columns = m_80l ? 80 : 40; int excess = m_32_40 ? 4 : 24; @@ -155,13 +155,9 @@ void newbrain_state::screen_update(bitmap_rgb32 &bitmap, const rectangle &clipre uint32_t newbrain_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) { if (m_tvp) - { - screen_update(bitmap, cliprect); - } + do_screen_update(bitmap, cliprect); else - { bitmap.fill(rgb_t::black(), cliprect); - } return 0; } diff --git a/src/mame/video/news.cpp b/src/mame/video/news.cpp index 19a0367aac0..4284b28ec31 100644 --- a/src/mame/video/news.cpp +++ b/src/mame/video/news.cpp @@ -44,10 +44,10 @@ TILE_GET_INFO_MEMBER(news_state::get_bg_tile_info) void news_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(news_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(news_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(news_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(news_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/ninjakd2.cpp b/src/mame/video/ninjakd2.cpp index f86727520b1..cd80646fec3 100644 --- a/src/mame/video/ninjakd2.cpp +++ b/src/mame/video/ninjakd2.cpp @@ -94,7 +94,7 @@ TILE_GET_INFO_MEMBER(robokid_state::robokid_get_bg_tile_info) void ninjakd2_state::video_init_common() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ninjakd2_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ninjakd2_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0xf); m_screen->register_screen_bitmap(m_sprites_bitmap); @@ -135,7 +135,7 @@ void ninjakd2_state::video_start() { video_init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ninjakd2_state::ninjakd2_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ninjakd2_state::ninjakd2_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_stencil_compare_function = stencil_ninjakd2; } @@ -144,7 +144,7 @@ VIDEO_START_MEMBER(mnight_state,mnight) { video_init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mnight_state::mnight_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mnight_state::mnight_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_stencil_compare_function = stencil_mnight; } @@ -153,7 +153,7 @@ VIDEO_START_MEMBER(mnight_state,arkarea) { video_init_common(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(mnight_state::mnight_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(mnight_state::mnight_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_stencil_compare_function = stencil_arkarea; } @@ -164,9 +164,9 @@ VIDEO_START_MEMBER(robokid_state,robokid) video_init_banked(0x0800); m_robokid_sprites = 1; - m_robokid_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(robokid_state::robokid_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(robokid_state::robokid_bg_scan),this), 16, 16, 32, 32); - m_robokid_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(robokid_state::robokid_get_bg_tile_info<1>),this), tilemap_mapper_delegate(FUNC(robokid_state::robokid_bg_scan),this), 16, 16, 32, 32); - m_robokid_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(robokid_state::robokid_get_bg_tile_info<2>),this), tilemap_mapper_delegate(FUNC(robokid_state::robokid_bg_scan),this), 16, 16, 32, 32); + m_robokid_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(robokid_state::robokid_get_bg_tile_info<0>)), tilemap_mapper_delegate(*this, FUNC(robokid_state::robokid_bg_scan)), 16, 16, 32, 32); + m_robokid_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(robokid_state::robokid_get_bg_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(robokid_state::robokid_bg_scan)), 16, 16, 32, 32); + m_robokid_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(robokid_state::robokid_get_bg_tile_info<2>)), tilemap_mapper_delegate(*this, FUNC(robokid_state::robokid_bg_scan)), 16, 16, 32, 32); m_robokid_tilemap[1]->set_transparent_pen(0xf); m_robokid_tilemap[2]->set_transparent_pen(0xf); @@ -180,9 +180,9 @@ VIDEO_START_MEMBER(omegaf_state,omegaf) video_init_banked(0x2000); m_robokid_sprites = 1; - m_robokid_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(omegaf_state::robokid_get_bg_tile_info<0>),this), tilemap_mapper_delegate(FUNC(omegaf_state::omegaf_bg_scan),this), 16, 16, 128, 32); - m_robokid_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(omegaf_state::robokid_get_bg_tile_info<1>),this), tilemap_mapper_delegate(FUNC(omegaf_state::omegaf_bg_scan),this), 16, 16, 128, 32); - m_robokid_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(omegaf_state::robokid_get_bg_tile_info<2>),this), tilemap_mapper_delegate(FUNC(omegaf_state::omegaf_bg_scan),this), 16, 16, 128, 32); + m_robokid_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(omegaf_state::robokid_get_bg_tile_info<0>)), tilemap_mapper_delegate(*this, FUNC(omegaf_state::omegaf_bg_scan)), 16, 16, 128, 32); + m_robokid_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(omegaf_state::robokid_get_bg_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(omegaf_state::omegaf_bg_scan)), 16, 16, 128, 32); + m_robokid_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(omegaf_state::robokid_get_bg_tile_info<2>)), tilemap_mapper_delegate(*this, FUNC(omegaf_state::omegaf_bg_scan)), 16, 16, 128, 32); m_robokid_tilemap[0]->set_transparent_pen(0xf); m_robokid_tilemap[1]->set_transparent_pen(0xf); diff --git a/src/mame/video/nmk16.cpp b/src/mame/video/nmk16.cpp index cce0877569e..97baf3b98d9 100644 --- a/src/mame/video/nmk16.cpp +++ b/src/mame/video/nmk16.cpp @@ -97,9 +97,9 @@ VIDEO_START_MEMBER(nmk16_state, bioship) { m_sprlimit = 384 * 263; // ROM Based Tilemap - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::bioship_get_bg_tile_info), this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages), this), 16, 16, 256, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&nmk16_state::common_get_bg_tile_info<1, 1>, "bg1_gfx1", this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages), this), 16, 16, 256, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::bioship_get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&nmk16_state::common_get_bg_tile_info<1, 1>))), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_bg_tilemap[1]->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); @@ -112,8 +112,8 @@ VIDEO_START_MEMBER(nmk16_state, bioship) VIDEO_START_MEMBER(nmk16_state,macross) { m_sprlimit = 384 * 263; - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&nmk16_state::common_get_bg_tile_info<0, 1>, "bg0_gfx1", this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages), this), 16, 16, 256, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&nmk16_state::common_get_bg_tile_info<0, 1>))), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); @@ -123,7 +123,7 @@ VIDEO_START_MEMBER(nmk16_state,macross) VIDEO_START_MEMBER(nmk16_state,strahl) { VIDEO_START_CALL_MEMBER(macross); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&nmk16_state::common_get_bg_tile_info<1, 3>, "bg1_gfx3", this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages), this), 16, 16, 256, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&nmk16_state::common_get_bg_tile_info<1, 3>))), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); m_bg_tilemap[1]->set_transparent_pen(15); m_sprdma_base = 0xf000; @@ -132,14 +132,13 @@ VIDEO_START_MEMBER(nmk16_state,strahl) VIDEO_START_MEMBER(nmk16_state,macross2) { m_sprlimit = 512 * 263; // not verified - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&nmk16_state::common_get_bg_tile_info<0, 1>, "bg0_gfx1", this), tilemap_mapper_delegate(FUNC(nmk16_state::tilemap_scan_pages), this), 16, 16, 256, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::common_get_tx_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, NAME((&nmk16_state::common_get_bg_tile_info<0, 1>))), tilemap_mapper_delegate(*this, FUNC(nmk16_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(15); video_init(); - m_videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */ - /* from the other side of the tilemap (!) */ + m_videoshift = 64; // 384x224 screen, leftmost 64 pixels have to be retrieved from the other side of the tilemap (!) } VIDEO_START_MEMBER(nmk16_state,gunnail) @@ -151,11 +150,10 @@ VIDEO_START_MEMBER(nmk16_state,gunnail) VIDEO_START_MEMBER(nmk16_state, bjtwin) { m_sprlimit = 512 * 263; // not verified - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nmk16_state::bjtwin_get_bg_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nmk16_state::bjtwin_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); video_init(); - m_videoshift = 64; /* 384x224 screen, leftmost 64 pixels have to be retrieved */ - /* from the other side of the tilemap (!) */ + m_videoshift = 64; // 384x224 screen, leftmost 64 pixels have to be retrieved from the other side of the tilemap (!) } void nmk16_state::mustang_scroll_w(u16 data) @@ -408,8 +406,8 @@ VIDEO_START_MEMBER(afega_state,grdnstrm) { m_sprlimit = 384 * 263; // 8bpp Tilemap - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(afega_state::get_bg_tile_info_8bit), this), tilemap_mapper_delegate(FUNC(afega_state::tilemap_scan_pages), this), 16, 16, 256, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(afega_state::common_get_tx_tile_info), this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(afega_state::get_bg_tile_info_8bit)), tilemap_mapper_delegate(*this, FUNC(afega_state::tilemap_scan_pages)), 16, 16, 256, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(afega_state::common_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/nmk16spr.cpp b/src/mame/video/nmk16spr.cpp index 3109f1dbccf..22daec39be8 100644 --- a/src/mame/video/nmk16spr.cpp +++ b/src/mame/video/nmk16spr.cpp @@ -39,6 +39,8 @@ DEFINE_DEVICE_TYPE(NMK_16BIT_SPRITE, nmk_16bit_sprite_device, "nmk16spr", "NMK 1 nmk_16bit_sprite_device::nmk_16bit_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, NMK_16BIT_SPRITE, tag, owner, clock) + , m_colpri_cb(*this) + , m_ext_cb(*this) , m_flip_screen(false) , m_videoshift(0) , m_xmask(0x1ff), m_ymask(0x1ff) @@ -255,8 +257,8 @@ void nmk_16bit_sprite_device::draw_sprites(screen_device &screen, bitmap_ind16 & void nmk_16bit_sprite_device::device_start() { - m_colpri_cb.bind_relative_to(*owner()); - m_ext_cb.bind_relative_to(*owner()); + m_colpri_cb.resolve(); + m_ext_cb.resolve(); m_flip_screen = false; m_spritelist = make_unique_clear<struct sprite_t[]>((0x1000/0x10) * 16 * 16); diff --git a/src/mame/video/nmk16spr.h b/src/mame/video/nmk16spr.h index 06650edd4c1..5d5a7c24124 100644 --- a/src/mame/video/nmk16spr.h +++ b/src/mame/video/nmk16spr.h @@ -11,14 +11,14 @@ class nmk_16bit_sprite_device : public device_t { public: - nmk_16bit_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - typedef device_delegate<void (u32 &colour, u32 &pri_mask)> colpri_cb_delegate; typedef device_delegate<void (u16 attr, int &flipx, int &flipy, int &code)> ext_cb_delegate; + nmk_16bit_sprite_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + // configuration - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = colpri_cb_delegate(std::forward<T>(args)...); } - template <typename... T> void set_ext_callback(T &&... args) { m_ext_cb = ext_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_ext_callback(T &&... args) { m_ext_cb.set(std::forward<T>(args)...); } void set_videoshift(int shift) { m_videoshift = shift; } void set_mask(int xmask, int ymask) { m_xmask = xmask, m_ymask = ymask; } void set_screen_size(int width, int height) { m_screen_width = width, m_screen_height = height; } diff --git a/src/mame/video/nova2001.cpp b/src/mame/video/nova2001.cpp index 4345133c3e4..2362a724bc1 100644 --- a/src/mame/video/nova2001.cpp +++ b/src/mame/video/nova2001.cpp @@ -149,30 +149,30 @@ TILE_GET_INFO_MEMBER(nova2001_state::raiders5_get_fg_tile_info) VIDEO_START_MEMBER(nova2001_state,nova2001) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nova2001_state::nova2001_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(nova2001_state::nova2001_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::nova2001_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::nova2001_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(0, -7); } VIDEO_START_MEMBER(nova2001_state,pkunwar) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nova2001_state::pkunwar_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::pkunwar_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); } VIDEO_START_MEMBER(nova2001_state,ninjakun) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nova2001_state::ninjakun_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(nova2001_state::ninjakun_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::ninjakun_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::ninjakun_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(7, 0); } VIDEO_START_MEMBER(nova2001_state,raiders5) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nova2001_state::raiders5_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(nova2001_state::raiders5_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::raiders5_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nova2001_state::raiders5_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(7, 0); } diff --git a/src/mame/video/nycaptor.cpp b/src/mame/video/nycaptor.cpp index ae519916d0f..c3b2abcbb68 100644 --- a/src/mame/video/nycaptor.cpp +++ b/src/mame/video/nycaptor.cpp @@ -60,7 +60,7 @@ TILE_GET_INFO_MEMBER(nycaptor_state::get_tile_info) void nycaptor_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(nycaptor_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(nycaptor_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transmask(0, 0xf800, 0x7ff); //split 0 m_bg_tilemap->set_transmask(1, 0xfe00, 0x01ff);//split 1 diff --git a/src/mame/video/ohmygod.cpp b/src/mame/video/ohmygod.cpp index fd035c60d0c..170f4111862 100644 --- a/src/mame/video/ohmygod.cpp +++ b/src/mame/video/ohmygod.cpp @@ -29,7 +29,7 @@ TILE_GET_INFO_MEMBER(ohmygod_state::get_tile_info) void ohmygod_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ohmygod_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ohmygod_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); } diff --git a/src/mame/video/ojankohs.cpp b/src/mame/video/ojankohs.cpp index 2391dae1c5a..00c93eebdaf 100644 --- a/src/mame/video/ojankohs.cpp +++ b/src/mame/video/ojankohs.cpp @@ -251,7 +251,7 @@ WRITE8_MEMBER(ojankohs_state::ojankoc_videoram_w) VIDEO_START_MEMBER(ojankohs_state,ojankohs) { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ojankohs_state::ojankohs_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ojankohs_state::ojankohs_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); // m_videoram = std::make_unique<uint8_t[]>(0x1000); // m_colorram = std::make_unique<uint8_t[]>(0x1000); // m_paletteram = std::make_unique<uint8_t[]>(0x800); @@ -259,7 +259,7 @@ VIDEO_START_MEMBER(ojankohs_state,ojankohs) VIDEO_START_MEMBER(ojankohs_state,ojankoy) { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ojankohs_state::ojankoy_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ojankohs_state::ojankoy_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 4, 64, 64); // m_videoram = std::make_unique<uint8_t[]>(0x2000); // m_colorram = std::make_unique<uint8_t[]>(0x1000); } diff --git a/src/mame/video/oneshot.cpp b/src/mame/video/oneshot.cpp index 76646953b82..4ab2451c528 100644 --- a/src/mame/video/oneshot.cpp +++ b/src/mame/video/oneshot.cpp @@ -51,9 +51,9 @@ void oneshot_state::fg_videoram_w(offs_t offset, u16 data, u16 mem_mask) void oneshot_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(oneshot_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(oneshot_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(oneshot_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(oneshot_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_mid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(oneshot_state::get_mid_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(oneshot_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap->set_transparent_pen(0); m_mid_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/orbit.cpp b/src/mame/video/orbit.cpp index 642929e56d7..107f5bce745 100644 --- a/src/mame/video/orbit.cpp +++ b/src/mame/video/orbit.cpp @@ -32,7 +32,7 @@ TILE_GET_INFO_MEMBER(orbit_state::get_tile_info) void orbit_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(orbit_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(orbit_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 30); } diff --git a/src/mame/video/orca40c.cpp b/src/mame/video/orca40c.cpp index 67e446ed661..fab592cf092 100644 --- a/src/mame/video/orca40c.cpp +++ b/src/mame/video/orca40c.cpp @@ -112,8 +112,8 @@ void orca_ovg_40c_device::device_start() { decode_gfx(gfxinfo); - m_bg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(orca_ovg_40c_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(orca_ovg_40c_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(orca_ovg_40c_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(orca_ovg_40c_device::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scroll_cols(32); @@ -283,7 +283,7 @@ void orca_ovg_40c_device::device_config_complete() screen().set_raw(PIXEL_CLOCK, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); if (!screen().has_screen_update()) - screen().set_screen_update(screen_update_rgb32_delegate(FUNC(orca_ovg_40c_device::screen_update), this)); + screen().set_screen_update(*this, FUNC(orca_ovg_40c_device::screen_update)); } void orca_ovg_40c_device::device_add_mconfig(machine_config &config) diff --git a/src/mame/video/pacland.cpp b/src/mame/video/pacland.cpp index ebc34135338..cf3dda78933 100644 --- a/src/mame/video/pacland.cpp +++ b/src/mame/video/pacland.cpp @@ -190,8 +190,8 @@ void pacland_state::video_start() m_screen->register_screen_bitmap(m_fg_bitmap); m_fg_bitmap.fill(0xffff); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacland_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacland_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacland_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacland_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scrolldx(3, 340); m_fg_tilemap->set_scrolldx(0, 336); /* scrolling portion needs an additional offset when flipped */ diff --git a/src/mame/video/pacman.cpp b/src/mame/video/pacman.cpp index cda16a3ea48..a0bc5e2eafd 100644 --- a/src/mame/video/pacman.cpp +++ b/src/mame/video/pacman.cpp @@ -171,7 +171,7 @@ VIDEO_START_MEMBER(pacman_state,pacman) /* one pixel to the left to get a more correct placement */ m_xoffsethack = 1; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::pacman_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 8, 8, 36, 28 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::pacman_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(pacman_state::pacman_scan_rows)), 8, 8, 36, 28); } VIDEO_START_MEMBER(pacman_state,birdiy) @@ -320,7 +320,7 @@ VIDEO_START_MEMBER(pacman_state,pengo) m_inv_spr = 0; m_xoffsethack = 0; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::pacman_get_tile_info),this), tilemap_mapper_delegate(FUNC(pacman_state::pacman_scan_rows),this), 8, 8, 36, 28 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::pacman_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(pacman_state::pacman_scan_rows)), 8, 8, 36, 28); } WRITE_LINE_MEMBER(pacman_state::pengo_palettebank_w) @@ -374,7 +374,7 @@ VIDEO_START_MEMBER(pacman_state,s2650games) m_inv_spr = 0; m_xoffsethack = 1; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::s2650_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::s2650_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); } @@ -542,7 +542,7 @@ VIDEO_START_MEMBER(pacman_state,jrpacman) m_inv_spr = 0; m_xoffsethack = 1; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pacman_state::jrpacman_get_tile_info),this),tilemap_mapper_delegate(FUNC(pacman_state::jrpacman_scan_rows),this),8,8,36,54 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pacman_state::jrpacman_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(pacman_state::jrpacman_scan_rows)), 8, 8, 36, 54); m_bg_tilemap->set_transparent_pen(0 ); m_bg_tilemap->set_scroll_cols(36 ); diff --git a/src/mame/video/pandoras.cpp b/src/mame/video/pandoras.cpp index f47f83e1826..e59d2af5a6a 100644 --- a/src/mame/video/pandoras.cpp +++ b/src/mame/video/pandoras.cpp @@ -103,7 +103,7 @@ TILE_GET_INFO_MEMBER(pandoras_state::get_tile_info0) void pandoras_state::video_start() { - m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pandoras_state::get_tile_info0),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_layer0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pandoras_state::get_tile_info0)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); save_item(NAME(m_flipscreen)); } diff --git a/src/mame/video/paradise.cpp b/src/mame/video/paradise.cpp index 51a70c8dc74..3e5a14ba998 100644 --- a/src/mame/video/paradise.cpp +++ b/src/mame/video/paradise.cpp @@ -44,8 +44,13 @@ WRITE8_MEMBER(paradise_state::tgtball_flipscreen_w) void paradise_state::update_pix_palbank() { for (int i = 0; i < 15; i++) - m_palette->set_pen_color(0x800 + i, m_paletteram[0x200 + m_pixbank + i + 0x800 * 0], m_paletteram[0x200 + m_pixbank + i + 0x800 * 1], - m_paletteram[0x200 + m_pixbank + i + 0x800 * 2]); + { + m_palette->set_pen_color( + 0x800 + i, + m_paletteram[0x200 + m_pixbank + i + (0x800 * 0)], + m_paletteram[0x200 + m_pixbank + i + (0x800 * 1)], + m_paletteram[0x200 + m_pixbank + i + (0x800 * 2)]); + } } /* 800 bytes for red, followed by 800 bytes for green & 800 bytes for blue */ @@ -152,9 +157,9 @@ WRITE8_MEMBER(paradise_state::pixmap_w) void paradise_state::video_start() { - m_tilemap_0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(paradise_state::get_tile_info_0),this), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); - m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(paradise_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); - m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(paradise_state::get_tile_info_2),this), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); + m_tilemap_0 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(paradise_state::get_tile_info_0)), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); + m_tilemap_1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(paradise_state::get_tile_info_1)), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); + m_tilemap_2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(paradise_state::get_tile_info_2)), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); /* pixmap */ m_screen->register_screen_bitmap(m_tmpbitmap); diff --git a/src/mame/video/pass.cpp b/src/mame/video/pass.cpp index 2d903b15ad9..cb8289e7bb9 100644 --- a/src/mame/video/pass.cpp +++ b/src/mame/video/pass.cpp @@ -46,8 +46,8 @@ WRITE16_MEMBER(pass_state::pass_fg_videoram_w) void pass_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pass_state::get_pass_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pass_state::get_pass_fg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_pass_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pass_state::get_pass_fg_tile_info)), TILEMAP_SCAN_ROWS, 4, 4, 128, 64); m_fg_tilemap->set_transparent_pen(255); } diff --git a/src/mame/video/pbaction.cpp b/src/mame/video/pbaction.cpp index 6e339f33c11..15f41317a7f 100644 --- a/src/mame/video/pbaction.cpp +++ b/src/mame/video/pbaction.cpp @@ -72,8 +72,8 @@ TILE_GET_INFO_MEMBER(pbaction_state::get_fg_tile_info) void pbaction_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pbaction_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(pbaction_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(*this, FUNC(pbaction_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pbaction_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/pc080sn.cpp b/src/mame/video/pc080sn.cpp index 70aba4a083e..58f02203200 100644 --- a/src/mame/video/pc080sn.cpp +++ b/src/mame/video/pc080sn.cpp @@ -85,13 +85,13 @@ void pc080sn_device::device_start() /* use the given gfx set for bg tiles */ if (!m_dblwidth) /* standard tilemaps */ { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pc080sn_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pc080sn_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pc080sn_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pc080sn_device::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); } else /* double width tilemaps */ { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pc080sn_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pc080sn_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pc080sn_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pc080sn_device::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); } m_tilemap[0]->set_transparent_pen(0); diff --git a/src/mame/video/pc090oj.cpp b/src/mame/video/pc090oj.cpp index 43d87c2e6f4..2f283eff2d5 100644 --- a/src/mame/video/pc090oj.cpp +++ b/src/mame/video/pc090oj.cpp @@ -77,6 +77,7 @@ DEFINE_DEVICE_TYPE(PC090OJ, pc090oj_device, "pc090oj", "Taito PC090OJ") pc090oj_device::pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : device_t(mconfig, PC090OJ, tag, owner, clock) , device_gfx_interface(mconfig, *this, nullptr) + , m_colpri_cb(*this) , m_ctrl(0) , m_sprite_ctrl(0) , m_ram(nullptr) @@ -106,6 +107,8 @@ void pc090oj_device::device_start() decode_gfx(gfxinfo); gfx(0)->set_colors(palette().entries() / 16); + m_colpri_cb.resolve(); + m_ram = make_unique_clear<u16[]>(PC090OJ_RAM_SIZE / 2); m_ram_buffered = make_unique_clear<u16[]>(PC090OJ_RAM_SIZE / 2); diff --git a/src/mame/video/pc090oj.h b/src/mame/video/pc090oj.h index 6a518d9b669..42a5b5bd245 100644 --- a/src/mame/video/pc090oj.h +++ b/src/mame/video/pc090oj.h @@ -5,11 +5,11 @@ #pragma once -typedef device_delegate<void (u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)> pc090oj_colpri_cb_delegate; - class pc090oj_device : public device_t, public device_gfx_interface { public: + typedef device_delegate<void (u32 &sprite_colbank, u32 &pri_mask, u16 sprite_ctrl)> colpri_cb_delegate; + pc090oj_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); // configuration @@ -19,7 +19,7 @@ public: m_x_offset = x_offset; m_y_offset = y_offset; } - template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb = pc090oj_colpri_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_colpri_callback(T &&... args) { m_colpri_cb.set(std::forward<T>(args)...); } u16 word_r(offs_t offset); void word_w(offs_t offset, u16 data, u16 mem_mask = 0); @@ -41,9 +41,9 @@ private: includes color banking and (optionally) priority. It allows each game to control these aspects of the sprites in different ways, while keeping the routines here modular. + */ -*/ - pc090oj_colpri_cb_delegate m_colpri_cb; + colpri_cb_delegate m_colpri_cb; // decoding info DECLARE_GFXDECODE_MEMBER(gfxinfo); diff --git a/src/mame/video/pc1512.cpp b/src/mame/video/pc1512.cpp index a075bfe061d..0e6b7f0606a 100644 --- a/src/mame/video/pc1512.cpp +++ b/src/mame/video/pc1512.cpp @@ -606,5 +606,5 @@ void pc1512_state::pc1512_video(machine_config &config) m_vdu->set_screen(m_screen); m_vdu->set_show_border_area(true); m_vdu->set_char_width(8); - m_vdu->set_update_row_callback(FUNC(pc1512_state::crtc_update_row), this); + m_vdu->set_update_row_callback(FUNC(pc1512_state::crtc_update_row)); } diff --git a/src/mame/video/pc_t1t.cpp b/src/mame/video/pc_t1t.cpp index 047445253c0..39e33ff66b0 100644 --- a/src/mame/video/pc_t1t.cpp +++ b/src/mame/video/pc_t1t.cpp @@ -128,7 +128,7 @@ void pcvideo_t1000_device::device_add_mconfig(machine_config &config) m_mc6845->set_screen(T1000_SCREEN_NAME); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(pc_t1t_device::crtc_update_row), this); + m_mc6845->set_update_row_callback(FUNC(pc_t1t_device::crtc_update_row)); m_mc6845->out_de_callback().set(FUNC(pc_t1t_device::t1000_de_changed)); m_mc6845->out_vsync_callback().set(FUNC(pcvideo_t1000_device::t1000_vsync_changed)); @@ -148,7 +148,7 @@ void pcvideo_pcjr_device::device_add_mconfig(machine_config &config) m_mc6845->set_screen(T1000_SCREEN_NAME); m_mc6845->set_show_border_area(false); m_mc6845->set_char_width(8); - m_mc6845->set_update_row_callback(FUNC(pcvideo_pcjr_device::crtc_update_row), this); + m_mc6845->set_update_row_callback(FUNC(pcvideo_pcjr_device::crtc_update_row)); m_mc6845->out_de_callback().set(FUNC(pc_t1t_device::t1000_de_changed)); m_mc6845->out_vsync_callback().set(FUNC(pcvideo_pcjr_device::pcjr_vsync_changed)); diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index bab1c77fdc5..d367e3de11f 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -399,8 +399,8 @@ WRITE8_MEMBER(pcx_video_device::p1_w) void pcd_video_device::device_start() { - m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, read8_delegate(FUNC(pcdx_video_device::detect_r), this), write8_delegate(FUNC(pcdx_video_device::detect_w), this), 0xff00); - m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0000, 0xf7fff, read8_delegate(FUNC(pcd_video_device::vram_r), this), write8_delegate(FUNC(pcd_video_device::vram_w), this), 0xffff); + m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, read8_delegate(*this, FUNC(pcdx_video_device::detect_r)), write8_delegate(*this, FUNC(pcdx_video_device::detect_w)), 0xff00); + m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0xf0000, 0xf7fff, read8_delegate(*this, FUNC(pcd_video_device::vram_r)), write8_delegate(*this, FUNC(pcd_video_device::vram_w)), 0xffff); set_gfx(0, std::make_unique<gfx_element>(&palette(), pcd_charlayout, &m_charram[0], 0, 1, 0)); } @@ -425,7 +425,7 @@ void pcd_video_device::map(address_map &map) void pcx_video_device::device_start() { - m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, read8_delegate(FUNC(pcdx_video_device::detect_r), this), write8_delegate(FUNC(pcdx_video_device::detect_w), this), 0x00ff); + m_maincpu->space(AS_IO).install_readwrite_handler(0xfb00, 0xfb01, read8_delegate(*this, FUNC(pcdx_video_device::detect_r)), write8_delegate(*this, FUNC(pcdx_video_device::detect_w)), 0x00ff); m_txd_handler.resolve_safe(); set_data_frame(1, 8, PARITY_NONE, STOP_BITS_1); diff --git a/src/mame/video/pgm.cpp b/src/mame/video/pgm.cpp index 0cd5b4111e0..5fc5016dbad 100644 --- a/src/mame/video/pgm.cpp +++ b/src/mame/video/pgm.cpp @@ -578,10 +578,10 @@ void pgm_state::video_start() m_aoffset = 0; m_boffset = 0; - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pgm_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pgm_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(15); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pgm_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 32, 32, 64, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pgm_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 32, 32, 64, 16); m_bg_tilemap->set_transparent_pen(31); m_bg_tilemap->set_scroll_rows(16 * 32); diff --git a/src/mame/video/pgm2.cpp b/src/mame/video/pgm2.cpp index 07bb2748b42..5216e6d68c5 100644 --- a/src/mame/video/pgm2.cpp +++ b/src/mame/video/pgm2.cpp @@ -371,10 +371,10 @@ TILE_GET_INFO_MEMBER(pgm2_state::get_bg_tile_info) void pgm2_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode2, tilemap_get_info_delegate(FUNC(pgm2_state::get_fg_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 96, 64); // 0x6000 bytes + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode2, tilemap_get_info_delegate(*this, FUNC(pgm2_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 96, 64); // 0x6000 bytes m_fg_tilemap->set_transparent_pen(0); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode3, tilemap_get_info_delegate(FUNC(pgm2_state::get_bg_tile_info), this), TILEMAP_SCAN_ROWS, 32, 32, 64, 32); // 0x2000 bytes + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode3, tilemap_get_info_delegate(*this, FUNC(pgm2_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 32, 32, 64, 32); // 0x2000 bytes m_bg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scroll_rows(32 * 32); diff --git a/src/mame/video/phoenix.cpp b/src/mame/video/phoenix.cpp index defbfc285d9..9c530ca110e 100644 --- a/src/mame/video/phoenix.cpp +++ b/src/mame/video/phoenix.cpp @@ -178,8 +178,8 @@ VIDEO_START_MEMBER(phoenix_state,phoenix) m_palette_bank = 0; m_cocktail_mode = 0; - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(phoenix_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(phoenix_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(*this, FUNC(phoenix_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(phoenix_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/pingpong.cpp b/src/mame/video/pingpong.cpp index ab4170b0aa2..5ca96fd42a3 100644 --- a/src/mame/video/pingpong.cpp +++ b/src/mame/video/pingpong.cpp @@ -104,7 +104,7 @@ TILE_GET_INFO_MEMBER(pingpong_state::get_bg_tile_info) void pingpong_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pingpong_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pingpong_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void pingpong_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/pirates.cpp b/src/mame/video/pirates.cpp index 66e3be0aa92..56dd486e730 100644 --- a/src/mame/video/pirates.cpp +++ b/src/mame/video/pirates.cpp @@ -37,11 +37,11 @@ TILE_GET_INFO_MEMBER(pirates_state::get_bg_tile_info) void pirates_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pirates_state::get_tx_tile_info),this),TILEMAP_SCAN_COLS,8,8,36,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pirates_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 36, 32); - /* Not sure how big they can be, Pirates uses only 32 columns, Genix 44 */ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pirates_state::get_fg_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pirates_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS, 8,8,64,32); + // Not sure how big they can be, Pirates uses only 32 columns, Genix 44 + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pirates_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pirates_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/pitnrun.cpp b/src/mame/video/pitnrun.cpp index 6d408cdab09..4d747a5946b 100644 --- a/src/mame/video/pitnrun.cpp +++ b/src/mame/video/pitnrun.cpp @@ -170,8 +170,8 @@ void pitnrun_state::pitnrun_palette(palette_device &palette) const void pitnrun_state::video_start() { - m_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pitnrun_state::get_tile_info1),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); - m_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pitnrun_state::get_tile_info2),this),TILEMAP_SCAN_ROWS,8,8,32*4,32 ); + m_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pitnrun_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pitnrun_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8, 8, 32*4, 32); m_fg->set_transparent_pen(0 ); m_tmp_bitmap[0] = std::make_unique<bitmap_ind16>(128,128); m_tmp_bitmap[1] = std::make_unique<bitmap_ind16>(128,128); diff --git a/src/mame/video/playch10.cpp b/src/mame/video/playch10.cpp index 935af106c14..e588fb72a7e 100644 --- a/src/mame/video/playch10.cpp +++ b/src/mame/video/playch10.cpp @@ -76,7 +76,7 @@ void playch10_state::video_start() const uint8_t *bios = memregion("maincpu")->base(); m_pc10_bios = (bios[3] == 0x2a) ? 1 : 2; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playch10_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playch10_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } @@ -85,7 +85,7 @@ VIDEO_START_MEMBER(playch10_state,playch10_hboard) const uint8_t *bios = memregion("maincpu")->base(); m_pc10_bios = (bios[3] == 0x2a) ? 1 : 2; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playch10_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playch10_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/playmark.cpp b/src/mame/video/playmark.cpp index 73d2ef93526..7294bc50ee6 100644 --- a/src/mame/video/playmark.cpp +++ b/src/mame/video/playmark.cpp @@ -92,8 +92,8 @@ TILE_GET_INFO_MEMBER(playmark_state::bigtwinb_get_tx_tile_info) VIDEO_START_MEMBER(playmark_state,bigtwin) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::bigtwin_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::bigtwin_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::bigtwin_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::bigtwin_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); @@ -108,9 +108,9 @@ VIDEO_START_MEMBER(playmark_state,bigtwin) VIDEO_START_MEMBER(playmark_state,bigtwinb) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::bigtwinb_get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::bigtwinb_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -128,9 +128,9 @@ VIDEO_START_MEMBER(playmark_state,bigtwinb) VIDEO_START_MEMBER(playmark_state,wbeachvl) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::wbeachvl_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::wbeachvl_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::wbeachvl_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::wbeachvl_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::wbeachvl_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::wbeachvl_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -145,8 +145,8 @@ VIDEO_START_MEMBER(playmark_state,wbeachvl) VIDEO_START_MEMBER(playmark_state,excelsr) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::bigtwin_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::bigtwin_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::bigtwin_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::bigtwin_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); @@ -160,9 +160,9 @@ VIDEO_START_MEMBER(playmark_state,excelsr) VIDEO_START_MEMBER(playmark_state,hotmind) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -181,9 +181,9 @@ VIDEO_START_MEMBER(playmark_state,hotmind) VIDEO_START_MEMBER(playmark_state,luckboomh) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); @@ -221,9 +221,9 @@ TILEMAP_MAPPER_MEMBER(playmark_state::playmark_tilemap_scan_pages) VIDEO_START_MEMBER(playmark_state,hrdtimes) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(playmark_state::playmark_tilemap_scan_pages),this), 16, 16, 128, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(playmark_state::hrdtimes_get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(playmark_state::playmark_tilemap_scan_pages)), 16, 16, 128, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(playmark_state::hrdtimes_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/plygonet.cpp b/src/mame/video/plygonet.cpp index 51eecb0358e..390be8274f1 100644 --- a/src/mame/video/plygonet.cpp +++ b/src/mame/video/plygonet.cpp @@ -105,12 +105,12 @@ void polygonet_state::video_start() m_gfxdecode->set_gfx(m_ttl_gfx_index, std::make_unique<gfx_element>(m_palette, charlayout, memregion("gfx1")->base(), 0, m_palette->entries() / 16, 0)); /* create the tilemap */ - m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(polygonet_state::ttl_get_tile_info),this), tilemap_mapper_delegate(FUNC(polygonet_state::plygonet_scan),this), 8, 8, 64, 32); + m_ttl_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(polygonet_state::ttl_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(polygonet_state::plygonet_scan)), 8, 8, 64, 32); m_ttl_tilemap->set_transparent_pen(0); /* set up the roz t-map too */ - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(polygonet_state::roz_get_tile_info),this), tilemap_mapper_delegate(FUNC(polygonet_state::plygonet_scan_cols),this), 16, 16, 32, 64); + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(polygonet_state::roz_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(polygonet_state::plygonet_scan_cols)), 16, 16, 32, 64); m_roz_tilemap->set_transparent_pen(0); /* save states */ diff --git a/src/mame/video/pokechmp.cpp b/src/mame/video/pokechmp.cpp index 29be909ca0b..1d55064a01a 100644 --- a/src/mame/video/pokechmp.cpp +++ b/src/mame/video/pokechmp.cpp @@ -34,7 +34,7 @@ TILE_GET_INFO_MEMBER(pokechmp_state::get_bg_tile_info) void pokechmp_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(pokechmp_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pokechmp_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/polepos.cpp b/src/mame/video/polepos.cpp index e3171c229c3..8b6e4d381eb 100644 --- a/src/mame/video/polepos.cpp +++ b/src/mame/video/polepos.cpp @@ -188,8 +188,8 @@ TILE_GET_INFO_MEMBER(polepos_state::tx_get_tile_info) void polepos_state::video_start() { - 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(polepos_state::bg_get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 16); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(polepos_state::tx_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0x2f); diff --git a/src/mame/video/poolshrk.cpp b/src/mame/video/poolshrk.cpp index cb396c94bce..973da751bda 100644 --- a/src/mame/video/poolshrk.cpp +++ b/src/mame/video/poolshrk.cpp @@ -20,7 +20,7 @@ TILE_GET_INFO_MEMBER(poolshrk_state::get_tile_info) void poolshrk_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(poolshrk_state::get_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(poolshrk_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/pooyan.cpp b/src/mame/video/pooyan.cpp index e1fbc6f2875..cbe34704d3c 100644 --- a/src/mame/video/pooyan.cpp +++ b/src/mame/video/pooyan.cpp @@ -113,7 +113,7 @@ TILE_GET_INFO_MEMBER(pooyan_state::get_bg_tile_info) void pooyan_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(pooyan_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(pooyan_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/popeye.cpp b/src/mame/video/popeye.cpp index b5052e8a1b6..ed18ca725ae 100644 --- a/src/mame/video/popeye.cpp +++ b/src/mame/video/popeye.cpp @@ -245,7 +245,7 @@ void tnx1_state::video_start() m_sprite_bitmap = std::make_unique<bitmap_ind16>(512, 512); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tnx1_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tnx1_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_field = 0; diff --git a/src/mame/video/portrait.cpp b/src/mame/video/portrait.cpp index b7a387c8aa5..46eb33b7d45 100644 --- a/src/mame/video/portrait.cpp +++ b/src/mame/video/portrait.cpp @@ -66,8 +66,8 @@ TILE_GET_INFO_MEMBER(portrait_state::get_fg_tile_info) void portrait_state::video_start() { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(portrait_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32 ); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(portrait_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32 ); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(portrait_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(portrait_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_foreground->set_transparent_pen(7); diff --git a/src/mame/video/powerins.cpp b/src/mame/video/powerins.cpp index 372a27d515e..18accbb4169 100644 --- a/src/mame/video/powerins.cpp +++ b/src/mame/video/powerins.cpp @@ -149,8 +149,8 @@ void powerins_state::video_start() m_spritebuffer[0] = make_unique_clear<uint16_t[]>(0x1000/2); m_spritebuffer[1] = make_unique_clear<uint16_t[]>(0x1000/2); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(powerins_state::get_tile_info_0),this),tilemap_mapper_delegate(FUNC(powerins_state::get_memory_offset_0),this),16,16,256,32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(powerins_state::get_tile_info_1),this),TILEMAP_SCAN_COLS,8,8,64,32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerins_state::get_tile_info_0)), tilemap_mapper_delegate(*this, FUNC(powerins_state::get_memory_offset_0)), 16, 16, 256, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerins_state::get_tile_info_1)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_tilemap[1]->set_transparent_pen(15); diff --git a/src/mame/video/prehisle.cpp b/src/mame/video/prehisle.cpp index dc4289e520d..b545ff0b02d 100644 --- a/src/mame/video/prehisle.cpp +++ b/src/mame/video/prehisle.cpp @@ -101,7 +101,7 @@ void prehisle_state::video_start() // ROM-based background layer m_bg_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(prehisle_state::get_bg_tile_info), this), + tilemap_get_info_delegate(*this, FUNC(prehisle_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, // scan order 16, 16, // tile size 1024, 32); // tilemap size @@ -109,7 +109,7 @@ void prehisle_state::video_start() // RAM-based foreground layer (overlays most sprites) m_fg_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(prehisle_state::get_fg_tile_info), this), + tilemap_get_info_delegate(*this, FUNC(prehisle_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, // scan order 16, 16, // tile size 256, 32); // tilemap size @@ -118,7 +118,7 @@ void prehisle_state::video_start() // text layer m_tx_tilemap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(prehisle_state::get_tx_tile_info), this), + tilemap_get_info_delegate(*this, FUNC(prehisle_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, // scan order 8, 8, // tile size 32, 32); // tilemap size diff --git a/src/mame/video/psikyo.cpp b/src/mame/video/psikyo.cpp index 96cbbe08e5a..75ad95db0d2 100644 --- a/src/mame/video/psikyo.cpp +++ b/src/mame/video/psikyo.cpp @@ -103,8 +103,8 @@ VIDEO_START_MEMBER(psikyo_state,psikyo) for (int size = 0; size < 4; size++) { - m_tilemap[0][size] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psikyo_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20 << size, 0x80 >> size); - m_tilemap[1][size] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psikyo_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 0x20 << size, 0x80 >> size); + m_tilemap[0][size] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psikyo_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 0x20 << size, 0x80 >> size); + m_tilemap[1][size] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psikyo_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 0x20 << size, 0x80 >> size); for (int layer = 0; layer < 2; layer++) { diff --git a/src/mame/video/psychic5.cpp b/src/mame/video/psychic5.cpp index 8d03ab5d549..863f2ed59e7 100644 --- a/src/mame/video/psychic5.cpp +++ b/src/mame/video/psychic5.cpp @@ -188,8 +188,8 @@ VIDEO_START_MEMBER(psychic5_state,psychic5) { video_start(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psychic5_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psychic5_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(15); save_item(NAME(m_title_screen)); @@ -200,8 +200,8 @@ VIDEO_START_MEMBER(psychic5_state,bombsa) { video_start(); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 128, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(psychic5_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psychic5_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 128, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(psychic5_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(15); save_item(NAME(m_bombsa_unknown)); diff --git a/src/mame/video/punchout.cpp b/src/mame/video/punchout.cpp index 8d64b464376..fa3285eaa40 100644 --- a/src/mame/video/punchout.cpp +++ b/src/mame/video/punchout.cpp @@ -96,12 +96,12 @@ TILEMAP_MAPPER_MEMBER(punchout_state::armwrest_bs1_scan_flipx) void punchout_state::video_start() { - m_bg_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::top_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_bg_bot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bot_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::top_get_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_bot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bot_get_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_bg_bot_tilemap->set_scroll_rows(32); - m_spr1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bs1_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 16,32); - m_spr2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bs2_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 16,32); + m_spr1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bs1_get_info)), TILEMAP_SCAN_ROWS, 8,8, 16,32); + m_spr2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bs2_get_info)), TILEMAP_SCAN_ROWS, 8,8, 16,32); m_fg_tilemap = nullptr; @@ -112,13 +112,13 @@ void punchout_state::video_start() VIDEO_START_MEMBER(punchout_state,armwrest) { - m_bg_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::armwrest_top_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_bg_bot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::armwrest_bot_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_top_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::armwrest_top_get_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_bot_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::armwrest_bot_get_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_spr1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bs1_get_info),this), tilemap_mapper_delegate(FUNC(punchout_state::armwrest_bs1_scan),this), 8,8, 32,16); - m_spr1_tilemap_flipx = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bs1_get_info),this), tilemap_mapper_delegate(FUNC(punchout_state::armwrest_bs1_scan_flipx),this), 8,8, 32,16); - m_spr2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::bs2_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 16,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(punchout_state::armwrest_fg_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_spr1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bs1_get_info)), tilemap_mapper_delegate(*this, FUNC(punchout_state::armwrest_bs1_scan)), 8,8, 32,16); + m_spr1_tilemap_flipx = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bs1_get_info)), tilemap_mapper_delegate(*this, FUNC(punchout_state::armwrest_bs1_scan_flipx)), 8,8, 32,16); + m_spr2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::bs2_get_info)), TILEMAP_SCAN_ROWS, 8,8, 16,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(punchout_state::armwrest_fg_get_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_spr1_tilemap->set_transparent_pen(0x07); m_spr1_tilemap_flipx->set_transparent_pen(0x07); diff --git a/src/mame/video/qix.cpp b/src/mame/video/qix.cpp index 07d2af06ede..62eeb26c27d 100644 --- a/src/mame/video/qix.cpp +++ b/src/mame/video/qix.cpp @@ -8,9 +8,10 @@ ***************************************************************************/ #include "emu.h" -#include "video/mc6845.h" #include "includes/qix.h" + #include "cpu/m6809/m6809.h" +#include "video/mc6845.h" /************************************* @@ -389,14 +390,14 @@ void qix_state::qix_video(machine_config &config) m_crtc->set_screen(m_screen); m_crtc->set_show_border_area(false); m_crtc->set_char_width(8); - m_crtc->set_begin_update_callback(FUNC(qix_state::crtc_begin_update), this); - m_crtc->set_update_row_callback(FUNC(qix_state::crtc_update_row), this); + m_crtc->set_begin_update_callback(FUNC(qix_state::crtc_begin_update)); + m_crtc->set_update_row_callback(FUNC(qix_state::crtc_update_row)); m_crtc->out_de_callback().set(FUNC(qix_state::display_enable_changed)); m_crtc->out_vsync_callback().set(FUNC(qix_state::qix_vsync_changed)); SCREEN(config, m_screen, SCREEN_TYPE_RASTER); m_screen->set_raw(QIX_CHARACTER_CLOCK*8, 0x148, 0, 0x100, 0x111, 0, 0x100); /* from CRTC */ - m_screen->set_screen_update("vid_u18", FUNC(mc6845_device::screen_update)); + m_screen->set_screen_update(m_crtc, FUNC(mc6845_device::screen_update)); } void qix_state::kram3_video(machine_config &config) diff --git a/src/mame/video/quizdna.cpp b/src/mame/video/quizdna.cpp index ce4f2911194..9ed8ad933f1 100644 --- a/src/mame/video/quizdna.cpp +++ b/src/mame/video/quizdna.cpp @@ -56,10 +56,10 @@ void quizdna_state::video_start() m_bg_ram = std::make_unique<uint8_t[]>(0x2000); m_fg_ram = std::make_unique<uint8_t[]>(0x1000); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizdna_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32 ); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizdna_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,8,32,32 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizdna_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); - m_fg_tilemap->set_transparent_pen(0 ); + m_fg_tilemap->set_transparent_pen(0); save_pointer(NAME(m_bg_ram), 0x2000); save_pointer(NAME(m_fg_ram), 0x1000); diff --git a/src/mame/video/quizpani.cpp b/src/mame/video/quizpani.cpp index 671de543a67..17770ae670c 100644 --- a/src/mame/video/quizpani.cpp +++ b/src/mame/video/quizpani.cpp @@ -68,8 +68,8 @@ WRITE16_MEMBER(quizpani_state::tilesbank_w) void quizpani_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpani_state::bg_tile_info),this), tilemap_mapper_delegate(FUNC(quizpani_state::bg_scan),this),16,16,256,32); - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(quizpani_state::txt_tile_info),this),tilemap_mapper_delegate(FUNC(quizpani_state::bg_scan),this),16,16,256,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16,16, 256,32); + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(quizpani_state::txt_tile_info)), tilemap_mapper_delegate(*this, FUNC(quizpani_state::bg_scan)), 16,16, 256,32); m_txt_tilemap->set_transparent_pen(15); save_item(NAME(m_bgbank)); diff --git a/src/mame/video/raiden.cpp b/src/mame/video/raiden.cpp index 2b55df6e67d..430d4ea1cf7 100644 --- a/src/mame/video/raiden.cpp +++ b/src/mame/video/raiden.cpp @@ -224,9 +224,9 @@ TILE_GET_INFO_MEMBER(raiden_state::get_text_tile_info) void raiden_state::video_start() { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_back_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_fore_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS,8, 8, 32,32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_back_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_fore_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32,32); m_fg_layer->set_transparent_pen(15); m_tx_layer->set_transparent_pen(15); @@ -240,9 +240,9 @@ void raiden_state::video_start() VIDEO_START_MEMBER(raiden_state,raidenb) { - m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_back_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); - m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_fore_tile_info),this),TILEMAP_SCAN_COLS,16,16,32,32); - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden_state::get_text_tile_info),this),TILEMAP_SCAN_COLS,8, 8, 32,32); + m_bg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_back_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_fg_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_fore_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden_state::get_text_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32,32); m_fg_layer->set_transparent_pen(15); m_tx_layer->set_transparent_pen(15); diff --git a/src/mame/video/raiden2.cpp b/src/mame/video/raiden2.cpp index 116ef9c0e78..a7237a49c6b 100644 --- a/src/mame/video/raiden2.cpp +++ b/src/mame/video/raiden2.cpp @@ -311,10 +311,10 @@ void raiden2_state::video_start() save_pointer(NAME(m_text_data), 0x1000/2); save_pointer(NAME(m_palette_data), 0x1000/2); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64,32 ); - m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_back_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); - m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_mid_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); - m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(raiden2_state::get_fore_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden2_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32 ); + m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden2_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); + m_midground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden2_state::get_mid_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); + m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(raiden2_state::get_fore_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32 ); } void raiden2_state::blend_layer(bitmap_rgb32 &bitmap, const rectangle &cliprect, bitmap_ind16 &source, int layer) diff --git a/src/mame/video/rallyx.cpp b/src/mame/video/rallyx.cpp index 0823b3fc8e7..f89fc48442a 100644 --- a/src/mame/video/rallyx.cpp +++ b/src/mame/video/rallyx.cpp @@ -327,8 +327,8 @@ void rallyx_state::rallyx_video_start_common( ) VIDEO_START_MEMBER(rallyx_state,rallyx) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rallyx_state::rallyx_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(rallyx_state::rallyx_fg_get_tile_info),this), tilemap_mapper_delegate(FUNC(rallyx_state::fg_tilemap_scan),this), 8, 8, 8, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::rallyx_bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::rallyx_fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(rallyx_state::fg_tilemap_scan)), 8, 8, 8, 32); /* the scrolling tilemap is slightly misplaced in Rally X */ m_bg_tilemap->set_scrolldx(3, 3); @@ -341,8 +341,8 @@ VIDEO_START_MEMBER(rallyx_state,rallyx) VIDEO_START_MEMBER(rallyx_state,jungler) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rallyx_state::rallyx_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(rallyx_state::rallyx_fg_get_tile_info),this), tilemap_mapper_delegate(FUNC(rallyx_state::fg_tilemap_scan),this), 8, 8, 8, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::rallyx_bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::rallyx_fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(rallyx_state::fg_tilemap_scan)), 8, 8, 8, 32); m_spriteram_base = 0x14; @@ -353,8 +353,8 @@ VIDEO_START_MEMBER(rallyx_state,jungler) VIDEO_START_MEMBER(rallyx_state,locomotn) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rallyx_state::locomotn_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(rallyx_state::locomotn_fg_get_tile_info),this), tilemap_mapper_delegate(FUNC(rallyx_state::fg_tilemap_scan),this), 8, 8, 8, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::locomotn_bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::locomotn_fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(rallyx_state::fg_tilemap_scan)), 8, 8, 8, 32); m_spriteram_base = 0x14; @@ -365,8 +365,8 @@ VIDEO_START_MEMBER(rallyx_state,locomotn) VIDEO_START_MEMBER(rallyx_state,commsega) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rallyx_state::locomotn_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(rallyx_state::locomotn_fg_get_tile_info),this), tilemap_mapper_delegate(FUNC(rallyx_state::fg_tilemap_scan),this), 8, 8, 8, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::locomotn_bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rallyx_state::locomotn_fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(rallyx_state::fg_tilemap_scan)), 8, 8, 8, 32); /* commsega has more sprites and bullets than the other games */ m_spriteram_base = 0x00; diff --git a/src/mame/video/realbrk.cpp b/src/mame/video/realbrk.cpp index 5edd7558a2c..a0ad8393805 100644 --- a/src/mame/video/realbrk.cpp +++ b/src/mame/video/realbrk.cpp @@ -121,11 +121,11 @@ void realbrk_state::vram_2_w(offs_t offset, u16 data, u16 mem_mask) void realbrk_state::video_start() { /* Backgrounds */ - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(realbrk_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 0x40, 0x20); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(realbrk_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 0x40, 0x20); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(realbrk_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 0x40, 0x20); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(realbrk_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 0x40, 0x20); /* Text */ - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(realbrk_state::get_tile_info_2),this), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(realbrk_state::get_tile_info_2)), TILEMAP_SCAN_ROWS, 8, 8, 0x40, 0x20); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/redclash.cpp b/src/mame/video/redclash.cpp index 7737b711fe3..fb7ab34796a 100644 --- a/src/mame/video/redclash.cpp +++ b/src/mame/video/redclash.cpp @@ -134,7 +134,7 @@ TILE_GET_INFO_MEMBER(redclash_state::get_fg_tile_info) void redclash_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(redclash_state::get_fg_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(redclash_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/renegade.cpp b/src/mame/video/renegade.cpp index 6ecfa8e3016..561f4e20947 100644 --- a/src/mame/video/renegade.cpp +++ b/src/mame/video/renegade.cpp @@ -59,8 +59,8 @@ TILE_GET_INFO_MEMBER(renegade_state::get_fg_tilemap_info) void renegade_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(renegade_state::get_bg_tilemap_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(renegade_state::get_fg_tilemap_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(renegade_state::get_bg_tilemap_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(renegade_state::get_fg_tilemap_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_scrolldx(256, 0); diff --git a/src/mame/video/retofinv.cpp b/src/mame/video/retofinv.cpp index c539adae368..5497f93d52e 100644 --- a/src/mame/video/retofinv.cpp +++ b/src/mame/video/retofinv.cpp @@ -124,8 +124,8 @@ TILE_GET_INFO_MEMBER(retofinv_state::fg_get_tile_info) 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_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(retofinv_state::bg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(retofinv_state::tilemap_scan)), 8, 8, 36, 28); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(retofinv_state::fg_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(retofinv_state::tilemap_scan)), 8, 8, 36, 28); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 0); diff --git a/src/mame/video/rocnrope.cpp b/src/mame/video/rocnrope.cpp index f8a253cddec..cce2c4cfec2 100644 --- a/src/mame/video/rocnrope.cpp +++ b/src/mame/video/rocnrope.cpp @@ -109,7 +109,7 @@ TILE_GET_INFO_MEMBER(rocnrope_state::get_bg_tile_info) void rocnrope_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rocnrope_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rocnrope_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void rocnrope_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/rollrace.cpp b/src/mame/video/rollrace.cpp index 408a6aca06d..22e33b03bc1 100644 --- a/src/mame/video/rollrace.cpp +++ b/src/mame/video/rollrace.cpp @@ -22,7 +22,7 @@ TILE_GET_INFO_MEMBER(rollrace_state::get_fg_tile_info) void rollrace_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rollrace_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32 ); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rollrace_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/rpunch.cpp b/src/mame/video/rpunch.cpp index e52a0516db8..28b829bd959 100644 --- a/src/mame/video/rpunch.cpp +++ b/src/mame/video/rpunch.cpp @@ -71,8 +71,8 @@ VIDEO_START_MEMBER(rpunch_state,rpunch) m_sprite_xoffs = 0; /* allocate tilemaps for the backgrounds */ - m_background[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rpunch_state::get_bg0_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,64); - m_background[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rpunch_state::get_bg1_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,64); + m_background[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg0_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64); + m_background[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rpunch_state::get_bg1_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64); /* configure the tilemaps */ m_background[1]->set_transparent_pen(15); diff --git a/src/mame/video/runaway.cpp b/src/mame/video/runaway.cpp index 01fdecad60a..218ba16bb13 100644 --- a/src/mame/video/runaway.cpp +++ b/src/mame/video/runaway.cpp @@ -69,7 +69,7 @@ TILE_GET_INFO_MEMBER(runaway_state::qwak_get_tile_info) void runaway_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(runaway_state::runaway_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(runaway_state::runaway_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); save_item(NAME(m_tile_bank)); } @@ -77,7 +77,7 @@ void runaway_state::video_start() VIDEO_START_MEMBER(runaway_state,qwak) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(runaway_state::qwak_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(runaway_state::qwak_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 30); save_item(NAME(m_tile_bank)); } diff --git a/src/mame/video/rungun.cpp b/src/mame/video/rungun.cpp index 3dd606422aa..607f970608f 100644 --- a/src/mame/video/rungun.cpp +++ b/src/mame/video/rungun.cpp @@ -101,11 +101,11 @@ void rungun_state::video_start() // create the tilemaps for(uint32_t screen_num = 0;screen_num < 2;screen_num++) { - m_ttl_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rungun_state::ttl_get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_ttl_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rungun_state::ttl_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_ttl_tilemap[screen_num]->set_user_data((void *)(uintptr_t)(screen_num * 0x2000)); m_ttl_tilemap[screen_num]->set_transparent_pen(0); - m_936_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(rungun_state::get_rng_936_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); + m_936_tilemap[screen_num] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(rungun_state::get_rng_936_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 128, 128); m_936_tilemap[screen_num]->set_user_data((void *)(uintptr_t)(screen_num * 0x80000)); m_936_tilemap[screen_num]->set_transparent_pen(0); diff --git a/src/mame/video/sauro.cpp b/src/mame/video/sauro.cpp index c6b7965e3e8..1a8bcb4c800 100644 --- a/src/mame/video/sauro.cpp +++ b/src/mame/video/sauro.cpp @@ -93,10 +93,10 @@ WRITE8_MEMBER(sauro_state::sauro_scroll_fg_w) VIDEO_START_MEMBER(sauro_state,sauro) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sauro_state::get_tile_info_bg),this), TILEMAP_SCAN_COLS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sauro_state::get_tile_info_bg)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sauro_state::get_tile_info_fg),this), TILEMAP_SCAN_COLS, + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sauro_state::get_tile_info_fg)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); @@ -164,7 +164,7 @@ uint32_t sauro_state::screen_update_sauro(screen_device &screen, bitmap_ind16 &b VIDEO_START_MEMBER(sauro_state,trckydoc) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sauro_state::get_tile_info_bg),this), TILEMAP_SCAN_COLS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sauro_state::get_tile_info_bg)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); } diff --git a/src/mame/video/sbasketb.cpp b/src/mame/video/sbasketb.cpp index f7fc1e0345c..c9adefe411b 100644 --- a/src/mame/video/sbasketb.cpp +++ b/src/mame/video/sbasketb.cpp @@ -124,7 +124,7 @@ TILE_GET_INFO_MEMBER(sbasketb_state::get_bg_tile_info) void sbasketb_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sbasketb_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sbasketb_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); save_item(NAME(m_spriteram_select)); diff --git a/src/mame/video/sbugger.cpp b/src/mame/video/sbugger.cpp index 168ac54788b..cedc1458cef 100644 --- a/src/mame/video/sbugger.cpp +++ b/src/mame/video/sbugger.cpp @@ -29,7 +29,7 @@ WRITE8_MEMBER(sbugger_state::videoram_attr_w) void sbugger_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sbugger_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 16, 64, 16); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sbugger_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 16, 64, 16); } uint32_t sbugger_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) @@ -50,7 +50,5 @@ void sbugger_state::sbugger_palette(palette_device &palette) const palette.set_pen_color(i*2+1, rgb_t(r, g, b)); palette.set_pen_color(i*2, rgb_t(0, 0, 0)); - } - } diff --git a/src/mame/video/scotrsht.cpp b/src/mame/video/scotrsht.cpp index dd4ec24781d..b8ed76edc2c 100644 --- a/src/mame/video/scotrsht.cpp +++ b/src/mame/video/scotrsht.cpp @@ -115,7 +115,7 @@ void scotrsht_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec void scotrsht_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(scotrsht_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(scotrsht_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_cols(64); diff --git a/src/mame/video/sderby.cpp b/src/mame/video/sderby.cpp index 1b95d5e3307..14e9e847781 100644 --- a/src/mame/video/sderby.cpp +++ b/src/mame/video/sderby.cpp @@ -89,12 +89,12 @@ void sderby_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect,i void sderby_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sderby_state::get_sderby_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); - m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sderby_state::get_sderby_md_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_md_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_md_tilemap->set_transparent_pen(0); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sderby_state::get_sderby_fg_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sderby_state::get_sderby_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/segag80r.cpp b/src/mame/video/segag80r.cpp index f1af8355cdf..d1e4d2e81a7 100644 --- a/src/mame/video/segag80r.cpp +++ b/src/mame/video/segag80r.cpp @@ -219,19 +219,19 @@ void segag80r_state::video_start() /* and one vertically scrolling */ case G80_BACKGROUND_SPACEOD: spaceod_bg_init_palette(); - m_spaceod_bg_htilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segag80r_state::spaceod_get_tile_info),this), tilemap_mapper_delegate(FUNC(segag80r_state::spaceod_scan_rows),this), 8,8, 128,32); - m_spaceod_bg_vtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segag80r_state::spaceod_get_tile_info),this), tilemap_mapper_delegate(FUNC(segag80r_state::spaceod_scan_rows),this), 8,8, 32,128); + m_spaceod_bg_htilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segag80r_state::spaceod_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(segag80r_state::spaceod_scan_rows)), 8,8, 128,32); + m_spaceod_bg_vtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segag80r_state::spaceod_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(segag80r_state::spaceod_scan_rows)), 8,8, 32,128); break; /* background tilemap is effectively 1 screen x n screens */ case G80_BACKGROUND_MONSTERB: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segag80r_state::bg_get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,memregion("gfx2")->bytes() / 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segag80r_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,memregion("gfx2")->bytes() / 32); break; /* background tilemap is effectively 4 screens x n screens */ case G80_BACKGROUND_PIGNEWT: case G80_BACKGROUND_SINDBADM: - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segag80r_state::bg_get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 128,memregion("gfx2")->bytes() / 128); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segag80r_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 128,memregion("gfx2")->bytes() / 128); break; } diff --git a/src/mame/video/segaic16.cpp b/src/mame/video/segaic16.cpp index eb2a7535c30..a3068395a16 100644 --- a/src/mame/video/segaic16.cpp +++ b/src/mame/video/segaic16.cpp @@ -537,11 +537,11 @@ segaic16_video_device::segaic16_video_device(const machine_config &mconfig, cons , m_tileram(*this, "^tileram") , m_textram(*this, "^textram") , m_rotateram(*this, "^rotateram") + , m_pagelatch_cb(*this, DEVICE_SELF, FUNC(segaic16_video_device::tilemap_16b_fill_latch)) , m_gfxdecode(*this, finder_base::DUMMY_TAG) { memset(m_rotate, 0, sizeof(m_rotate)); memset(m_bg_tilemap, 0, sizeof(m_bg_tilemap)); - m_pagelatch_cb = segaic16_video_pagelatch_delegate(FUNC(segaic16_video_device::tilemap_16b_fill_latch), this); } void segaic16_video_device::device_start() @@ -551,7 +551,7 @@ void segaic16_video_device::device_start() save_item(NAME(m_display_enable)); - m_pagelatch_cb.bind_relative_to(*owner()); + m_pagelatch_cb.resolve(); } void segaic16_video_device::device_reset() @@ -1205,8 +1205,8 @@ static void tilemap_16b_reset(screen_device &screen, segaic16_video_device::tile void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int xoffs, int numbanks) { struct tilemap_info *info = &m_bg_tilemap[which]; - tilemap_get_info_delegate get_text_info; - tilemap_get_info_delegate get_tile_info; + tilemap_get_info_delegate get_text_info(*this); + tilemap_get_info_delegate get_tile_info(*this); int pagenum; int i; @@ -1235,8 +1235,8 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int switch (type) { case TILEMAP_HANGON: - get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_text_info),this); - get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_tile_info),this); + get_text_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16a_text_info)); + get_tile_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16a_tile_info)); info->numpages = 4; info->draw_layer = tilemap_16a_draw_layer; info->reset = nullptr; @@ -1244,8 +1244,8 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int break; case TILEMAP_16A: - get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_text_info),this); - get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16a_tile_info),this); + get_text_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16a_text_info)); + get_tile_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16a_tile_info)); info->numpages = 8; info->draw_layer = tilemap_16a_draw_layer; info->reset = nullptr; @@ -1253,8 +1253,8 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int break; case TILEMAP_16B: - get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_text_info),this); - get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_tile_info),this); + get_text_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16b_text_info)); + get_tile_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16b_tile_info)); info->numpages = 16; info->draw_layer = tilemap_16b_draw_layer; info->reset = tilemap_16b_reset; @@ -1262,8 +1262,8 @@ void segaic16_video_device::tilemap_init(int which, int type, int colorbase, int break; case TILEMAP_16B_ALT: - get_text_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_alt_text_info),this); - get_tile_info = tilemap_get_info_delegate(FUNC(segaic16_video_device::tilemap_16b_alt_tile_info),this); + get_text_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16b_alt_text_info)); + get_tile_info = tilemap_get_info_delegate(*this, FUNC(segaic16_video_device::tilemap_16b_alt_tile_info)); info->numpages = 16; info->draw_layer = tilemap_16b_draw_layer; info->reset = tilemap_16b_reset; diff --git a/src/mame/video/segaic16.h b/src/mame/video/segaic16.h index 42ffb1539eb..e563a354d2d 100644 --- a/src/mame/video/segaic16.h +++ b/src/mame/video/segaic16.h @@ -129,7 +129,7 @@ public: segaic16_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // configuration - template <typename... T> void set_pagelatch_cb(T &&... args) { m_pagelatch_cb = segaic16_video_pagelatch_delegate(std::forward<T>(args)...); } + template <typename... T> void set_pagelatch_cb(T &&... args) { m_pagelatch_cb.set(std::forward<T>(args)...); } uint8_t m_display_enable; optional_shared_ptr<uint16_t> m_tileram; diff --git a/src/mame/video/segaic24.cpp b/src/mame/video/segaic24.cpp index 5a5f1d76a14..218c79e5bb7 100644 --- a/src/mame/video/segaic24.cpp +++ b/src/mame/video/segaic24.cpp @@ -81,10 +81,10 @@ void segas24_tile_device::device_start() m_xhout_write_cb.resolve_safe(); m_xvout_write_cb.resolve_safe(); - tile_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_0s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_0w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_1s),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - tile_layer[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(segas24_tile_device::tile_info_1w),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(segas24_tile_device::tile_info_0s)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(segas24_tile_device::tile_info_0w)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(segas24_tile_device::tile_info_1s)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + tile_layer[3] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(segas24_tile_device::tile_info_1w)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); tile_layer[0]->set_transparent_pen(0); tile_layer[1]->set_transparent_pen(0); diff --git a/src/mame/video/segas32.cpp b/src/mame/video/segas32.cpp index 9d62e0a6627..14d4f97bbd0 100644 --- a/src/mame/video/segas32.cpp +++ b/src/mame/video/segas32.cpp @@ -217,7 +217,7 @@ void segas32_state::device_start() { struct cache_entry *entry = auto_alloc(machine(), struct cache_entry); - entry->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segas32_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16,16, 32,16); + entry->tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas32_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,16); entry->page = 0xff; entry->bank = 0; entry->next = m_cache_head; diff --git a/src/mame/video/seibuspi.cpp b/src/mame/video/seibuspi.cpp index 881f62946c7..dd4af0df45d 100644 --- a/src/mame/video/seibuspi.cpp +++ b/src/mame/video/seibuspi.cpp @@ -744,10 +744,10 @@ void seibuspi_state::video_start() m_palette->basemem().set(&m_palette_ram[0], m_palette_ram_size, 32, ENDIANNESS_LITTLE, 2); - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,64,32); - m_back_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_back_tile_info),this), TILEMAP_SCAN_COLS, 16,16,32,32); - m_midl_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_midl_tile_info),this), TILEMAP_SCAN_COLS, 16,16,32,32); - m_fore_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(seibuspi_state::get_fore_tile_info),this), TILEMAP_SCAN_COLS, 16,16,32,32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seibuspi_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); + m_back_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seibuspi_state::get_back_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_midl_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seibuspi_state::get_midl_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); + m_fore_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seibuspi_state::get_fore_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); m_text_layer->set_transparent_pen(31); m_back_layer->set_transparent_pen(63); diff --git a/src/mame/video/seicross.cpp b/src/mame/video/seicross.cpp index 5d8556f3a10..f9d43d0ee59 100644 --- a/src/mame/video/seicross.cpp +++ b/src/mame/video/seicross.cpp @@ -87,7 +87,7 @@ TILE_GET_INFO_MEMBER(seicross_state::get_bg_tile_info) void seicross_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(seicross_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seicross_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/senjyo.cpp b/src/mame/video/senjyo.cpp index 4478c221b69..0c2a66e6526 100644 --- a/src/mame/video/senjyo.cpp +++ b/src/mame/video/senjyo.cpp @@ -84,19 +84,19 @@ TILE_GET_INFO_MEMBER(senjyo_state::get_bg3_tile_info) void senjyo_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); if (m_is_senjyo) { - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::senjyo_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 48); /* only 16x32 used by Star Force */ - m_bg3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::get_bg3_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 56); /* only 16x32 used by Star Force */ + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::senjyo_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 48); // only 16x32 used by Star Force + m_bg3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::get_bg3_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 56); // only 16x32 used by Star Force } else { - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::starforc_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); /* only 16x32 used by Star Force */ - m_bg3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(senjyo_state::get_bg3_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); /* only 16x32 used by Star Force */ + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::starforc_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); // only 16x32 used by Star Force + m_bg3_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(senjyo_state::get_bg3_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 32); // only 16x32 used by Star Force } m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp index 2908e46372d..27a906e0b8b 100644 --- a/src/mame/video/seta.cpp +++ b/src/mame/video/seta.cpp @@ -351,12 +351,12 @@ VIDEO_START_MEMBER(seta_state,seta_2_layers) /* layer 0 */ m_tilemap[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seta_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); /* layer 1 */ m_tilemap[1] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seta_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_tilemaps_flip = 0; @@ -388,7 +388,7 @@ VIDEO_START_MEMBER(seta_state,seta_1_layer) /* layer 0 */ m_tilemap[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seta_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_color_mode_shift = 4; @@ -422,7 +422,7 @@ VIDEO_START_MEMBER(seta_state,twineagl_1_layer) /* layer 0 */ m_tilemap[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::twineagl_get_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(seta_state::twineagl_get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_tilemap[0]->set_transparent_pen(0); diff --git a/src/mame/video/seta001.cpp b/src/mame/video/seta001.cpp index 231aa339431..c0430dedeb2 100644 --- a/src/mame/video/seta001.cpp +++ b/src/mame/video/seta001.cpp @@ -42,6 +42,7 @@ DEFINE_DEVICE_TYPE(SETA001_SPRITE, seta001_device, "seta001", "Seta SETA001 Spri seta001_device::seta001_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SETA001_SPRITE, tag, owner, clock) , m_gfxdecode(*this, finder_base::DUMMY_TAG) + , m_gfxbank_cb(*this) { } @@ -96,7 +97,7 @@ void seta001_device::device_start() m_bgflag = 0x00; - m_gfxbank_cb.bind_relative_to(*owner()); + m_gfxbank_cb.resolve(); save_item(NAME(m_bgflag)); save_item(NAME(m_spritectrl)); diff --git a/src/mame/video/seta001.h b/src/mame/video/seta001.h index ed3a03ca2d6..79307bebe41 100644 --- a/src/mame/video/seta001.h +++ b/src/mame/video/seta001.h @@ -16,41 +16,41 @@ public: // configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } - template <typename... T> void set_gfxbank_callback(T &&... args) { m_gfxbank_cb = gfxbank_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_gfxbank_callback(T &&... args) { m_gfxbank_cb.set(std::forward<T>(args)...); } - DECLARE_WRITE8_MEMBER( spritebgflag_w8 ); + DECLARE_WRITE8_MEMBER(spritebgflag_w8); - DECLARE_READ16_MEMBER( spritectrl_r16 ); - DECLARE_WRITE16_MEMBER( spritectrl_w16 ); - DECLARE_READ8_MEMBER( spritectrl_r8 ); - DECLARE_WRITE8_MEMBER( spritectrl_w8 ); + DECLARE_READ16_MEMBER(spritectrl_r16); + DECLARE_WRITE16_MEMBER(spritectrl_w16); + DECLARE_READ8_MEMBER(spritectrl_r8); + DECLARE_WRITE8_MEMBER(spritectrl_w8); - DECLARE_READ16_MEMBER( spriteylow_r16 ); - DECLARE_WRITE16_MEMBER( spriteylow_w16 ); - DECLARE_READ8_MEMBER( spriteylow_r8 ); - DECLARE_WRITE8_MEMBER( spriteylow_w8 ); + DECLARE_READ16_MEMBER(spriteylow_r16); + DECLARE_WRITE16_MEMBER(spriteylow_w16); + DECLARE_READ8_MEMBER(spriteylow_r8); + DECLARE_WRITE8_MEMBER(spriteylow_w8); - DECLARE_READ8_MEMBER( spritecodelow_r8 ); - DECLARE_WRITE8_MEMBER( spritecodelow_w8 ); - DECLARE_READ8_MEMBER( spritecodehigh_r8 ); - DECLARE_WRITE8_MEMBER( spritecodehigh_w8 ); - DECLARE_READ16_MEMBER( spritecode_r16 ); - DECLARE_WRITE16_MEMBER( spritecode_w16 ); + DECLARE_READ8_MEMBER(spritecodelow_r8); + DECLARE_WRITE8_MEMBER(spritecodelow_w8); + DECLARE_READ8_MEMBER(spritecodehigh_r8); + DECLARE_WRITE8_MEMBER(spritecodehigh_w8); + DECLARE_READ16_MEMBER(spritecode_r16); + DECLARE_WRITE16_MEMBER(spritecode_w16); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size); - void setac_eof( void ); - void tnzs_eof( void ); + void setac_eof(); + void tnzs_eof(); // position kludges for seta.c & srmp2.c - void set_fg_xoffsets( int flip, int noflip ) { m_fg_flipxoffs = flip; m_fg_noflipxoffs = noflip; }; - void set_fg_yoffsets( int flip, int noflip ) { m_fg_flipyoffs = flip; m_fg_noflipyoffs = noflip; }; - void set_bg_yoffsets( int flip, int noflip ) { m_bg_flipyoffs = flip; m_bg_noflipyoffs = noflip; }; - void set_bg_xoffsets( int flip, int noflip ) { m_bg_flipxoffs = flip; m_bg_noflipxoffs = noflip; }; + void set_fg_xoffsets(int flip, int noflip) { m_fg_flipxoffs = flip; m_fg_noflipxoffs = noflip; }; + void set_fg_yoffsets(int flip, int noflip) { m_fg_flipyoffs = flip; m_fg_noflipyoffs = noflip; }; + void set_bg_yoffsets(int flip, int noflip) { m_bg_flipyoffs = flip; m_bg_noflipyoffs = noflip; }; + void set_bg_xoffsets(int flip, int noflip) { m_bg_flipxoffs = flip; m_bg_noflipxoffs = noflip; }; void set_colorbase(int base) { m_colorbase = base; }; void set_spritelimit(int limit) { m_spritelimit = limit; }; - void set_transpen ( int pen ) { m_transpen = pen; }; + void set_transpen(int pen) { m_transpen = pen; }; int is_flipped() { return ((m_spritectrl[ 0 ] & 0x40) >> 6); }; @@ -59,9 +59,8 @@ protected: virtual void device_reset() override; private: - - void draw_background( bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size); - void draw_foreground( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size); + void draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size); + void draw_foreground(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int bank_size); required_device<gfxdecode_device> m_gfxdecode; gfxbank_cb_delegate m_gfxbank_cb; diff --git a/src/mame/video/sf.cpp b/src/mame/video/sf.cpp index fe1e62bee9e..d2c1de6804f 100644 --- a/src/mame/video/sf.cpp +++ b/src/mame/video/sf.cpp @@ -52,9 +52,9 @@ TILE_GET_INFO_MEMBER(sf_state::get_tx_tile_info) void sf_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sf_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 2048, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sf_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 2048, 16); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sf_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sf_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 2048, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sf_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 2048, 16); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sf_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(3); diff --git a/src/mame/video/sgi_gr1.cpp b/src/mame/video/sgi_gr1.cpp index 126959cf108..a17b8239c91 100644 --- a/src/mame/video/sgi_gr1.cpp +++ b/src/mame/video/sgi_gr1.cpp @@ -107,12 +107,12 @@ void sgi_gr1_device::map_bank(address_map &map) map(0x8440, 0x845f).rw(m_xmap[2], FUNC(sgi_xmap2_device::reg_r), FUNC(sgi_xmap2_device::reg_w)).umask32(0x000000ff); map(0x8460, 0x847f).rw(m_xmap[3], FUNC(sgi_xmap2_device::reg_r), FUNC(sgi_xmap2_device::reg_w)).umask32(0x000000ff); map(0x8480, 0x849f).rw(m_xmap[4], FUNC(sgi_xmap2_device::reg_r), FUNC(sgi_xmap2_device::reg_w)).umask32(0x000000ff); - map(0x84a0, 0x84bf).lw8("xmap_broadcast", - [this](offs_t offset, u8 data) - { - for (sgi_xmap2_device *xmap : m_xmap) - xmap->reg_w(offset, data); - }).umask32(0x000000ff); + map(0x84a0, 0x84bf).lw8( + [this](offs_t offset, u8 data) + { + for (sgi_xmap2_device *xmap : m_xmap) + xmap->reg_w(offset, data); + }, "xmap_broadcast").umask32(0x000000ff); map(0x84c0, 0x84c3).rw(FUNC(sgi_gr1_device::dr1_r), FUNC(sgi_gr1_device::dr1_w)).umask32(0xff000000); map(0x84e0, 0x84e3).rw(FUNC(sgi_gr1_device::dr0_r), FUNC(sgi_gr1_device::dr0_w)).umask32(0xff000000); @@ -134,7 +134,7 @@ void sgi_gr1_device::map_bank(address_map &map) map(0x0800, 0x0bff).r(m_ge, FUNC(sgi_ge5_device::buffer_r)).mirror(0x8000); map(0x0800, 0x0bff).w(FUNC(sgi_gr1_device::fifo_w)).mirror(0x8000); map(0x0c00, 0x0dff).w(m_ge, FUNC(sgi_ge5_device::mar_w)).mirror(0x8000); - map(0x0e00, 0x0e07).lw32("mar_msb", [this](offs_t offset, u32 data) { m_bank->set_bank(offset); }).mirror(0x8000); + map(0x0e00, 0x0e07).lw32([this](offs_t offset, u32 data) { m_bank->set_bank(offset); }, "mar_msb").mirror(0x8000); map(0x1400, 0x17ff).rw(m_ge, FUNC(sgi_ge5_device::data_r), FUNC(sgi_ge5_device::data_w)); map(0x2000, 0x2007).rw(m_ge, FUNC(sgi_ge5_device::finish_r), FUNC(sgi_ge5_device::finish_w)).mirror(0x8000); diff --git a/src/mame/video/shadfrce.cpp b/src/mame/video/shadfrce.cpp index 21789a93afa..1f356244173 100644 --- a/src/mame/video/shadfrce.cpp +++ b/src/mame/video/shadfrce.cpp @@ -60,13 +60,13 @@ WRITE16_MEMBER(shadfrce_state::bg1videoram_w) void shadfrce_state::video_start() { - m_fgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_fgtile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fgtilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shadfrce_state::get_fgtile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fgtilemap->set_transparent_pen(0); - m_bg0tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_bg0tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); + m_bg0tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shadfrce_state::get_bg0tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg0tilemap->set_transparent_pen(0); - m_bg1tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shadfrce_state::get_bg1tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,32,32); + m_bg1tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shadfrce_state::get_bg1tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_spvideoram_old = std::make_unique<uint16_t[]>(m_spvideoram.bytes()/2); diff --git a/src/mame/video/shangkid.cpp b/src/mame/video/shangkid.cpp index 7d4975d0c82..ca1b5b9a0c9 100644 --- a/src/mame/video/shangkid.cpp +++ b/src/mame/video/shangkid.cpp @@ -46,7 +46,7 @@ TILE_GET_INFO_MEMBER(shangkid_state::get_bg_tile_info) VIDEO_START_MEMBER(shangkid_state,shangkid) { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shangkid_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shangkid_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); } WRITE8_MEMBER(shangkid_state::videoram_w) diff --git a/src/mame/video/shaolins.cpp b/src/mame/video/shaolins.cpp index 62dfbe2fc54..91c7ab8e528 100644 --- a/src/mame/video/shaolins.cpp +++ b/src/mame/video/shaolins.cpp @@ -136,7 +136,7 @@ TILE_GET_INFO_MEMBER(shaolins_state::get_bg_tile_info) void shaolins_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shaolins_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shaolins_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/shisen.cpp b/src/mame/video/shisen.cpp index 909e0d534e0..a92d13d1ef2 100644 --- a/src/mame/video/shisen.cpp +++ b/src/mame/video/shisen.cpp @@ -49,7 +49,7 @@ TILE_GET_INFO_MEMBER(shisen_state::get_bg_tile_info) void shisen_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(shisen_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shisen_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); membank("bank1")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x4000); diff --git a/src/mame/video/shootout.cpp b/src/mame/video/shootout.cpp index a97ea52df94..47c0db18368 100644 --- a/src/mame/video/shootout.cpp +++ b/src/mame/video/shootout.cpp @@ -78,9 +78,9 @@ WRITE8_MEMBER(shootout_state::textram_w) void shootout_state::video_start() { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shootout_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(shootout_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_foreground->set_transparent_pen(0 ); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shootout_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(shootout_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_foreground->set_transparent_pen(0); save_item(NAME(m_ccnt_old_val)); } diff --git a/src/mame/video/sidearms.cpp b/src/mame/video/sidearms.cpp index c84cfd4c08a..a444084b32a 100644 --- a/src/mame/video/sidearms.cpp +++ b/src/mame/video/sidearms.cpp @@ -142,17 +142,17 @@ void sidearms_state::video_start() if (!m_gameid) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sidearms_state::get_sidearms_bg_tile_info),this), tilemap_mapper_delegate(FUNC(sidearms_state::tilemap_scan),this), + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sidearms_state::get_sidearms_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(sidearms_state::tilemap_scan)), 32, 32, 128, 128); m_bg_tilemap->set_transparent_pen(15); } else { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sidearms_state::get_philko_bg_tile_info),this), tilemap_mapper_delegate(FUNC(sidearms_state::tilemap_scan),this), 32, 32, 128, 128); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sidearms_state::get_philko_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(sidearms_state::tilemap_scan)), 32, 32, 128, 128); } - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sidearms_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sidearms_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_fg_tilemap->set_transparent_pen(3); diff --git a/src/mame/video/sidepckt.cpp b/src/mame/video/sidepckt.cpp index e4d08556c48..e9673a95572 100644 --- a/src/mame/video/sidepckt.cpp +++ b/src/mame/video/sidepckt.cpp @@ -71,7 +71,7 @@ TILE_GET_INFO_MEMBER(sidepckt_state::get_tile_info) void sidepckt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sidepckt_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sidepckt_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_bg_tilemap->set_transmask(0,0xff,0x00); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1,0x01,0xfe); /* split type 1 has pen 0 transparent in front half */ diff --git a/src/mame/video/silkroad.cpp b/src/mame/video/silkroad.cpp index f9c5b4653a5..7c5147c9561 100644 --- a/src/mame/video/silkroad.cpp +++ b/src/mame/video/silkroad.cpp @@ -71,9 +71,9 @@ TILE_GET_INFO_MEMBER(silkroad_state::get_tile_info) void silkroad_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(silkroad_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(silkroad_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(silkroad_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(silkroad_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/skydiver.cpp b/src/mame/video/skydiver.cpp index 88eb7bd3103..d8201c747b5 100644 --- a/src/mame/video/skydiver.cpp +++ b/src/mame/video/skydiver.cpp @@ -38,7 +38,7 @@ TILE_GET_INFO_MEMBER(skydiver_state::get_tile_info) void skydiver_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skydiver_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skydiver_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); save_item(NAME(m_nmion)); save_item(NAME(m_width)); diff --git a/src/mame/video/skykid.cpp b/src/mame/video/skykid.cpp index 6c08804b0d7..94e7c12275e 100644 --- a/src/mame/video/skykid.cpp +++ b/src/mame/video/skykid.cpp @@ -107,8 +107,8 @@ TILE_GET_INFO_MEMBER(skykid_state::bg_get_tile_info) void skykid_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skykid_state::tx_get_tile_info),this),tilemap_mapper_delegate(FUNC(skykid_state::tx_tilemap_scan),this), 8,8,36,28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skykid_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skykid_state::tx_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(skykid_state::tx_tilemap_scan)), 8,8, 36,28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skykid_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/slapfght.cpp b/src/mame/video/slapfght.cpp index cd1ef5465e9..959a2e61110 100644 --- a/src/mame/video/slapfght.cpp +++ b/src/mame/video/slapfght.cpp @@ -53,15 +53,15 @@ TILE_GET_INFO_MEMBER(slapfght_state::get_fix_tile_info) VIDEO_START_MEMBER(slapfght_state, perfrman) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(slapfght_state::get_pf_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(slapfght_state::get_pf_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_pf1_tilemap->set_transparent_pen(0); } VIDEO_START_MEMBER(slapfght_state, slapfight) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(slapfght_state::get_pf1_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(slapfght_state::get_fix_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(slapfght_state::get_pf1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fix_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(slapfght_state::get_fix_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fix_tilemap->set_scrolldy(0, 15); m_pf1_tilemap->set_scrolldy(0, 14); diff --git a/src/mame/video/snk.cpp b/src/mame/video/snk.cpp index 60b51cb4f40..fe58fa97438 100644 --- a/src/mame/video/snk.cpp +++ b/src/mame/video/snk.cpp @@ -224,9 +224,9 @@ VIDEO_START_MEMBER(snk_state,marvins) { VIDEO_START_CALL_MEMBER(snk_3bpp_shadow); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(snk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(snk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); @@ -245,8 +245,8 @@ VIDEO_START_MEMBER(snk_state,jcross) { VIDEO_START_CALL_MEMBER(snk_3bpp_shadow); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(snk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::aso_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(snk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::aso_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); @@ -264,8 +264,8 @@ VIDEO_START_MEMBER(snk_state,sgladiat) { VIDEO_START_CALL_MEMBER(snk_3bpp_shadow); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(snk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::aso_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(snk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::aso_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); @@ -304,8 +304,8 @@ VIDEO_START_MEMBER(snk_state,tnk3) { VIDEO_START_CALL_MEMBER(snk_3bpp_shadow); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::marvins_get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(snk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::tnk3_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::marvins_get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(snk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::tnk3_get_bg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 64); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); @@ -322,8 +322,8 @@ VIDEO_START_MEMBER(snk_state,ikari) { VIDEO_START_CALL_MEMBER(snk_3bpp_shadow); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::ikari_get_tx_tile_info),this), tilemap_mapper_delegate(FUNC(snk_state::marvins_tx_scan_cols),this), 8, 8, 36, 28); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::ikari_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::ikari_get_tx_tile_info)), tilemap_mapper_delegate(*this, FUNC(snk_state::marvins_tx_scan_cols)), 8, 8, 36, 28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::ikari_get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(15); m_tx_tilemap->set_scrolldy(8, 8); @@ -344,8 +344,8 @@ VIDEO_START_MEMBER(snk_state,gwar) memset(m_empty_tile, 0xf, sizeof(m_empty_tile)); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::gwar_get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 50, 32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk_state::gwar_get_bg_tile_info),this), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::gwar_get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 50, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk_state::gwar_get_bg_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/snk6502.cpp b/src/mame/video/snk6502.cpp index c188aaf855a..345b9b80972 100644 --- a/src/mame/video/snk6502.cpp +++ b/src/mame/video/snk6502.cpp @@ -165,8 +165,8 @@ TILE_GET_INFO_MEMBER(snk6502_state::get_fg_tile_info) VIDEO_START_MEMBER(snk6502_state,snk6502) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk6502_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(snk6502_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(*this, FUNC(snk6502_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk6502_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); @@ -289,8 +289,8 @@ TILE_GET_INFO_MEMBER(snk6502_state::satansat_get_fg_tile_info) VIDEO_START_MEMBER(snk6502_state,satansat) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk6502_state::satansat_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(snk6502_state::satansat_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk6502_state::satansat_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk6502_state::satansat_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/snk68.cpp b/src/mame/video/snk68.cpp index e4a592bc9f3..8b50da0bd53 100644 --- a/src/mame/video/snk68.cpp +++ b/src/mame/video/snk68.cpp @@ -58,7 +58,7 @@ void snk68_state::common_video_start() void snk68_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snk68_state::get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snk68_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tile_offset = 0; common_video_start(); @@ -68,7 +68,7 @@ void snk68_state::video_start() void searchar_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(searchar_state::get_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(searchar_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); snk68_state::common_video_start(); } diff --git a/src/mame/video/snk68_spr.cpp b/src/mame/video/snk68_spr.cpp index d1a9746763e..7115713669b 100644 --- a/src/mame/video/snk68_spr.cpp +++ b/src/mame/video/snk68_spr.cpp @@ -51,13 +51,13 @@ DEFINE_DEVICE_TYPE(SNK68_SPR, snk68_spr_device, "snk68_spr", "SNK68 Sprites") snk68_spr_device::snk68_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, SNK68_SPR, tag, owner, clock) + , m_newtilecb(*this, FUNC(snk68_spr_device::tile_callback_noindirect)) , m_gfxdecode(*this, finder_base::DUMMY_TAG) , m_spriteram(*this, "^spriteram") , m_screen(*this, "^screen") , m_flipscreen(false) , m_partialupdates(1) { - m_newtilecb = snk68_tile_indirection_delegate(FUNC(snk68_spr_device::tile_callback_noindirect), this); } void snk68_spr_device::tile_callback_noindirect(int &tile, int& fx, int& fy, int& region) @@ -67,7 +67,7 @@ void snk68_spr_device::tile_callback_noindirect(int &tile, int& fx, int& fy, int void snk68_spr_device::device_start() { // bind our handler - m_newtilecb.bind_relative_to(*owner()); + m_newtilecb.resolve(); } void snk68_spr_device::device_reset() diff --git a/src/mame/video/snk68_spr.h b/src/mame/video/snk68_spr.h index 994fe55dd1f..e74a8edc71c 100644 --- a/src/mame/video/snk68_spr.h +++ b/src/mame/video/snk68_spr.h @@ -7,17 +7,17 @@ #include "screen.h" -typedef device_delegate<void (int&, int&, int&, int&)> snk68_tile_indirection_delegate; - class snk68_spr_device : public device_t { public: + typedef device_delegate<void (int &, int &, int &, int &)> tile_indirection_delegate; + snk68_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // static configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } - template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb = snk68_tile_indirection_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb.set(std::forward<T>(args)...); } void set_no_partial() { m_partialupdates = 0; } void set_xpos_shift(u8 data) { m_xpos_shift = data; } void set_color_entry_mask(u16 data) { m_color_entry_mask = data; } @@ -28,8 +28,6 @@ public: void draw_sprites_all(bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites_alt(bitmap_ind16 &bitmap, const rectangle &cliprect); - snk68_tile_indirection_delegate m_newtilecb; - void tile_callback_noindirect(int& tile, int& fx, int& fy, int& region); void set_flip(bool flip); @@ -38,6 +36,7 @@ protected: virtual void device_reset() override; private: + tile_indirection_delegate m_newtilecb; required_device<gfxdecode_device> m_gfxdecode; required_shared_ptr<uint16_t> m_spriteram; required_device<screen_device> m_screen; diff --git a/src/mame/video/snookr10.cpp b/src/mame/video/snookr10.cpp index ecc5529d71f..4dcf95c4351 100644 --- a/src/mame/video/snookr10.cpp +++ b/src/mame/video/snookr10.cpp @@ -237,17 +237,17 @@ TILE_GET_INFO_MEMBER(snookr10_state::crystalc_get_bg_tile_info) void snookr10_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snookr10_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snookr10_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); } VIDEO_START_MEMBER(snookr10_state, apple10) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snookr10_state::apple10_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snookr10_state::apple10_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); } VIDEO_START_MEMBER(snookr10_state, crystalc) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(snookr10_state::crystalc_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(snookr10_state::crystalc_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 128, 30); } uint32_t snookr10_state::screen_update_snookr10(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/solomon.cpp b/src/mame/video/solomon.cpp index d6533cd6bab..d2c74323844 100644 --- a/src/mame/video/solomon.cpp +++ b/src/mame/video/solomon.cpp @@ -57,10 +57,10 @@ TILE_GET_INFO_MEMBER(solomon_state::get_fg_tile_info) void solomon_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(solomon_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(solomon_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(solomon_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(solomon_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/sonson.cpp b/src/mame/video/sonson.cpp index f77f557e669..d39d031950a 100644 --- a/src/mame/video/sonson.cpp +++ b/src/mame/video/sonson.cpp @@ -128,7 +128,7 @@ TILE_GET_INFO_MEMBER(sonson_state::get_bg_tile_info) void sonson_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sonson_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sonson_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_rows(32); } diff --git a/src/mame/video/spbactn.cpp b/src/mame/video/spbactn.cpp index 983b4ad6af5..cc8b6231657 100644 --- a/src/mame/video/spbactn.cpp +++ b/src/mame/video/spbactn.cpp @@ -49,8 +49,8 @@ VIDEO_START_MEMBER(spbactn_state,spbactn) m_screen->register_screen_bitmap(m_tile_bitmap_fg); m_screen->register_screen_bitmap(m_sprite_bitmap); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spbactn_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spbactn_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 64, 128); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spbactn_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 64, 128); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spbactn_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 64, 128); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); } @@ -59,7 +59,7 @@ VIDEO_START_MEMBER(spbactn_state,spbactnp) { VIDEO_START_CALL_MEMBER(spbactn); // no idea.. - m_extra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spbactn_state::get_extra_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 16, 16); + m_extra_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spbactn_state::get_extra_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 16, 16); } WRITE16_MEMBER( spbactn_state::spbatnp_90006_w ) diff --git a/src/mame/video/spdodgeb.cpp b/src/mame/video/spdodgeb.cpp index f2da1c13fd0..2dd932b70b5 100644 --- a/src/mame/video/spdodgeb.cpp +++ b/src/mame/video/spdodgeb.cpp @@ -71,7 +71,7 @@ TILE_GET_INFO_MEMBER(spdodgeb_state::get_bg_tile_info) void spdodgeb_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(spdodgeb_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(spdodgeb_state::background_scan),this),8,8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(spdodgeb_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(spdodgeb_state::background_scan)), 8,8, 64,32); membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base(), 0x4000); diff --git a/src/mame/video/speedbal.cpp b/src/mame/video/speedbal.cpp index 13d654c8967..2642fed1af8 100644 --- a/src/mame/video/speedbal.cpp +++ b/src/mame/video/speedbal.cpp @@ -38,8 +38,8 @@ TILE_GET_INFO_MEMBER(speedbal_state::get_tile_info_fg) void speedbal_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(speedbal_state::get_tile_info_bg),this), TILEMAP_SCAN_COLS_FLIP_X, 16, 16, 16, 16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(speedbal_state::get_tile_info_fg),this), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(speedbal_state::get_tile_info_bg)), TILEMAP_SCAN_COLS_FLIP_X, 16, 16, 16, 16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(speedbal_state::get_tile_info_fg)), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); m_bg_tilemap->set_transmask(0,0xffff,0x0000); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1,0x00f7,0x0000); /* split type 1 has pen 0-2, 4-7 transparent in front half */ diff --git a/src/mame/video/speedspn.cpp b/src/mame/video/speedspn.cpp index f56af8fcd0d..22d01989145 100644 --- a/src/mame/video/speedspn.cpp +++ b/src/mame/video/speedspn.cpp @@ -20,7 +20,7 @@ void speedspn_state::video_start() m_bank_vidram = 0; m_vidram.resize(0x1000 * 2); memset(&m_vidram[0], 0, 0x1000*2); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(speedspn_state::get_tile_info),this),TILEMAP_SCAN_COLS, 8, 8,64,32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(speedspn_state::get_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); save_item(NAME(m_display_disable)); save_item(NAME(m_bank_vidram)); diff --git a/src/mame/video/splash.cpp b/src/mame/video/splash.cpp index e2d7dc0272b..c27573c9eee 100644 --- a/src/mame/video/splash.cpp +++ b/src/mame/video/splash.cpp @@ -164,8 +164,8 @@ void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect) void splash_state::video_start() { - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(splash_state::get_tile_info_tilemap0)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(splash_state::get_tile_info_tilemap1)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap[0]->set_transparent_pen(0); m_bg_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/sprint2.cpp b/src/mame/video/sprint2.cpp index 03286986220..0d24f6bb120 100644 --- a/src/mame/video/sprint2.cpp +++ b/src/mame/video/sprint2.cpp @@ -45,7 +45,7 @@ void sprint2_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint2_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sprint2_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); } diff --git a/src/mame/video/sprint4.cpp b/src/mame/video/sprint4.cpp index 082c106a122..9aeea51b4ab 100644 --- a/src/mame/video/sprint4.cpp +++ b/src/mame/video/sprint4.cpp @@ -50,7 +50,7 @@ void sprint4_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint4_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sprint4_state::tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/sprint8.cpp b/src/mame/video/sprint8.cpp index 3f13debe6bb..f04d3ab8e8b 100644 --- a/src/mame/video/sprint8.cpp +++ b/src/mame/video/sprint8.cpp @@ -31,25 +31,25 @@ void sprint8_state::set_pens() { if (m_team) { - m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */ - m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */ - m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0xff, 0x00)); /* yellow */ - m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0xff, 0x00)); /* green */ - m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0xff)); /* magenta */ - m_palette->set_indirect_color(i + 5, rgb_t(0xe0, 0xc0, 0x70)); /* puce */ - m_palette->set_indirect_color(i + 6, rgb_t(0x00, 0xff, 0xff)); /* cyan */ - m_palette->set_indirect_color(i + 7, rgb_t(0xff, 0xaa, 0xaa)); /* pink */ + m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); // red + m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); // blue + m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0xff, 0x00)); // yellow + m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0xff, 0x00)); // green + m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0xff)); // magenta + m_palette->set_indirect_color(i + 5, rgb_t(0xe0, 0xc0, 0x70)); // puce + m_palette->set_indirect_color(i + 6, rgb_t(0x00, 0xff, 0xff)); // cyan + m_palette->set_indirect_color(i + 7, rgb_t(0xff, 0xaa, 0xaa)); // pink } else { - m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); /* red */ - m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); /* blue */ - m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0x00, 0x00)); /* red */ - m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0x00, 0xff)); /* blue */ - m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0x00)); /* red */ - m_palette->set_indirect_color(i + 5, rgb_t(0x00, 0x00, 0xff)); /* blue */ - m_palette->set_indirect_color(i + 6, rgb_t(0xff, 0x00, 0x00)); /* red */ - m_palette->set_indirect_color(i + 7, rgb_t(0x00, 0x00, 0xff)); /* blue */ + m_palette->set_indirect_color(i + 0, rgb_t(0xff, 0x00, 0x00)); // red + m_palette->set_indirect_color(i + 1, rgb_t(0x00, 0x00, 0xff)); // blue + m_palette->set_indirect_color(i + 2, rgb_t(0xff, 0x00, 0x00)); // red + m_palette->set_indirect_color(i + 3, rgb_t(0x00, 0x00, 0xff)); // blue + m_palette->set_indirect_color(i + 4, rgb_t(0xff, 0x00, 0x00)); // red + m_palette->set_indirect_color(i + 5, rgb_t(0x00, 0x00, 0xff)); // blue + m_palette->set_indirect_color(i + 6, rgb_t(0xff, 0x00, 0x00)); // red + m_palette->set_indirect_color(i + 7, rgb_t(0x00, 0x00, 0xff)); // blue } } @@ -111,8 +111,8 @@ void sprint8_state::video_start() m_screen->register_screen_bitmap(m_helper1); m_screen->register_screen_bitmap(m_helper2); - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint8_state::get_tile_info1),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sprint8_state::get_tile_info2),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sprint8_state::get_tile_info1)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sprint8_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); m_tilemap1->set_scrolly(0, +24); m_tilemap2->set_scrolly(0, +24); diff --git a/src/mame/video/srumbler.cpp b/src/mame/video/srumbler.cpp index 013e4f1e196..5a140c5a57c 100644 --- a/src/mame/video/srumbler.cpp +++ b/src/mame/video/srumbler.cpp @@ -47,13 +47,13 @@ TILE_GET_INFO_MEMBER(srumbler_state::get_bg_tile_info) void srumbler_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(srumbler_state::get_fg_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(srumbler_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS, 16,16,64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(srumbler_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(srumbler_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16,16, 64,64); m_fg_tilemap->set_transparent_pen(3); - m_bg_tilemap->set_transmask(0,0xffff,0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1,0x07ff,0xf800); /* split type 1 has pens 0-10 transparent in front half */ + m_bg_tilemap->set_transmask(0,0xffff,0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1,0x07ff,0xf800); // split type 1 has pens 0-10 transparent in front half save_item(NAME(m_scroll)); } diff --git a/src/mame/video/sslam.cpp b/src/mame/video/sslam.cpp index 279998e6920..5f29791efea 100644 --- a/src/mame/video/sslam.cpp +++ b/src/mame/video/sslam.cpp @@ -139,9 +139,9 @@ WRITE16_MEMBER(powerbls_state::powerbls_bg_tileram_w) void sslam_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sslam_state::get_sslam_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sslam_state::get_sslam_md_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sslam_state::get_sslam_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sslam_state::get_sslam_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_md_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sslam_state::get_sslam_md_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sslam_state::get_sslam_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_md_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); @@ -152,7 +152,7 @@ void sslam_state::video_start() void powerbls_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(powerbls_state::get_powerbls_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(powerbls_state::get_powerbls_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_sprites_x_offset = -21; save_item(NAME(m_sprites_x_offset)); diff --git a/src/mame/video/ssozumo.cpp b/src/mame/video/ssozumo.cpp index 51f37bbd789..09cd0b05ed9 100644 --- a/src/mame/video/ssozumo.cpp +++ b/src/mame/video/ssozumo.cpp @@ -132,10 +132,10 @@ TILE_GET_INFO_MEMBER(ssozumo_state::get_fg_tile_info) void ssozumo_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssozumo_state::get_bg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_X, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssozumo_state::get_bg_tile_info)), TILEMAP_SCAN_COLS_FLIP_X, 16, 16, 16, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssozumo_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS_FLIP_X, + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssozumo_state::get_fg_tile_info)), TILEMAP_SCAN_COLS_FLIP_X, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); @@ -164,11 +164,10 @@ void ssozumo_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect flipy = !flipy; } - - m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, - code, color, - flipx, flipy, - sx, sy, 0); + m_gfxdecode->gfx(2)->transpen(bitmap,cliprect, + code, color, + flipx, flipy, + sx, sy, 0); } } } diff --git a/src/mame/video/ssrj.cpp b/src/mame/video/ssrj.cpp index 47a5f67b12a..25554f25f82 100644 --- a/src/mame/video/ssrj.cpp +++ b/src/mame/video/ssrj.cpp @@ -220,9 +220,9 @@ static constexpr rgb_t fakecols[4 * 4][8] = void ssrj_state::video_start() { - m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssrj_state::get_tile_info1),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssrj_state::get_tile_info2),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); - m_tilemap4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssrj_state::get_tile_info4),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssrj_state::get_tile_info1)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssrj_state::get_tile_info2)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_tilemap4 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssrj_state::get_tile_info4)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_tilemap2->set_transparent_pen(0); m_tilemap4->set_transparent_pen(0); diff --git a/src/mame/video/ssv.cpp b/src/mame/video/ssv.cpp index 7d280915cc5..19d5d4bcc64 100644 --- a/src/mame/video/ssv.cpp +++ b/src/mame/video/ssv.cpp @@ -240,7 +240,7 @@ VIDEO_START_MEMBER(ssv_state,gdfs) { ssv_state::video_start(); - m_gdfs_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ssv_state::get_tile_info_0),this), TILEMAP_SCAN_ROWS, 16,16, 0x100,0x100); + m_gdfs_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ssv_state::get_tile_info_0)), TILEMAP_SCAN_ROWS, 16,16, 0x100,0x100); m_gdfs_tmap->set_transparent_pen(0); } diff --git a/src/mame/video/st0020.cpp b/src/mame/video/st0020.cpp index b26c1c02aff..c0b8ae6341e 100644 --- a/src/mame/video/st0020.cpp +++ b/src/mame/video/st0020.cpp @@ -21,10 +21,10 @@ DEFINE_DEVICE_TYPE(ST0020_SPRITES, st0020_device, "st0020", "Seta ST0020 Sprites") -#define ST0020_ST0032_BYTESWAP_DATA \ - if (m_is_st0032) data = ((data & 0x00ff)<<8) | ((data & 0xff00)>>8); -#define ST0020_ST0032_BYTESWAP_MEM_MASK \ - if (m_is_st0032) mem_mask = ((mem_mask & 0x00ff)<<8) | ((mem_mask & 0xff00)>>8); +#define ST0020_ST0032_BYTESWAP_DATA() \ + do { if (m_is_st0032) data = ((data & 0x00ff)<<8) | ((data & 0xff00)>>8); } while (false) +#define ST0020_ST0032_BYTESWAP_MEM_MASK() \ + do { if (m_is_st0032) mem_mask = ((mem_mask & 0x00ff)<<8) | ((mem_mask & 0xff00)>>8); } while (false) st0020_device::st0020_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : @@ -68,13 +68,13 @@ void st0020_device::device_start() // Tilemaps m_tmap[0] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info<0>), this), tilemap_mapper_delegate(FUNC(st0020_device::scan_16x16),this),16,8, 0x40,0x40*2); + *this, tilemap_get_info_delegate(*this, FUNC(st0020_device::get_tile_info<0>)), tilemap_mapper_delegate(*this, FUNC(st0020_device::scan_16x16)), 16,8, 0x40,0x40*2); m_tmap[1] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info<1>), this), tilemap_mapper_delegate(FUNC(st0020_device::scan_16x16),this),16,8, 0x40,0x40*2); + *this, tilemap_get_info_delegate(*this, FUNC(st0020_device::get_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(st0020_device::scan_16x16)), 16,8, 0x40,0x40*2); m_tmap[2] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info<2>), this), tilemap_mapper_delegate(FUNC(st0020_device::scan_16x16),this),16,8, 0x40,0x40*2); + *this, tilemap_get_info_delegate(*this, FUNC(st0020_device::get_tile_info<2>)), tilemap_mapper_delegate(*this, FUNC(st0020_device::scan_16x16)), 16,8, 0x40,0x40*2); m_tmap[3] = &machine().tilemap().create( - *this, tilemap_get_info_delegate(FUNC(st0020_device::get_tile_info<3>), this), tilemap_mapper_delegate(FUNC(st0020_device::scan_16x16),this),16,8, 0x40,0x40*2); + *this, tilemap_get_info_delegate(*this, FUNC(st0020_device::get_tile_info<3>)), tilemap_mapper_delegate(*this, FUNC(st0020_device::scan_16x16)), 16,8, 0x40,0x40*2); for (int i = 0; i < 4; ++i) { m_tmap[i]->set_transparent_pen(0); @@ -92,18 +92,18 @@ void st0020_device::device_start() // Gfx ram READ16_MEMBER(st0020_device::gfxram_r) { - ST0020_ST0032_BYTESWAP_MEM_MASK + ST0020_ST0032_BYTESWAP_MEM_MASK(); uint16_t data = m_gfxram[offset + m_gfxram_bank * 0x100000/2]; - ST0020_ST0032_BYTESWAP_DATA + ST0020_ST0032_BYTESWAP_DATA(); return data; } WRITE16_MEMBER(st0020_device::gfxram_w) { - ST0020_ST0032_BYTESWAP_MEM_MASK - ST0020_ST0032_BYTESWAP_DATA + ST0020_ST0032_BYTESWAP_MEM_MASK(); + ST0020_ST0032_BYTESWAP_DATA(); offset += m_gfxram_bank * 0x100000/2; COMBINE_DATA(&m_gfxram[offset]); diff --git a/src/mame/video/stadhero.cpp b/src/mame/video/stadhero.cpp index 6a18766b51a..b8edc446323 100644 --- a/src/mame/video/stadhero.cpp +++ b/src/mame/video/stadhero.cpp @@ -58,7 +58,7 @@ TILE_GET_INFO_MEMBER(stadhero_state::get_pf1_tile_info) void stadhero_state::video_start() { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stadhero_state::get_pf1_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stadhero_state::get_pf1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_pf1_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/starshp1.cpp b/src/mame/video/starshp1.cpp index c00207f17fd..c2b8038ef17 100644 --- a/src/mame/video/starshp1.cpp +++ b/src/mame/video/starshp1.cpp @@ -56,7 +56,7 @@ void starshp1_state::video_start() int i; - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(starshp1_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(starshp1_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/stfight_dev.cpp b/src/mame/video/stfight_dev.cpp index 18c81092dea..7c5d26f04b5 100644 --- a/src/mame/video/stfight_dev.cpp +++ b/src/mame/video/stfight_dev.cpp @@ -12,8 +12,8 @@ DEFINE_DEVICE_TYPE(STFIGHT_VIDEO, stfight_video_device, "stfight_vid", "Seibu Street Fight Video") -stfight_video_device::stfight_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, STFIGHT_VIDEO, tag, owner, clock), +stfight_video_device::stfight_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, STFIGHT_VIDEO, tag, owner, clock), m_gfxdecode(*this, "gfxdecode"), m_palette(*this,"^palette"), m_screen(*this, "screen"), @@ -311,9 +311,9 @@ void stfight_video_device::device_start() save_item(NAME(m_sprite_base)); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_video_device::bg_scan),this),16,16,128,256); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(stfight_video_device::fg_scan),this),16,16,128,256); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(stfight_video_device::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stfight_video_device::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(stfight_video_device::bg_scan)), 16,16, 128,256); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stfight_video_device::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(stfight_video_device::fg_scan)), 16,16, 128,256); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(stfight_video_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); // we do manual mixing using a temp bitmap m_screen->register_screen_bitmap(m_temp_sprite_bitmap); diff --git a/src/mame/video/sub.cpp b/src/mame/video/sub.cpp index f2e54e5d194..fe431aca7f2 100644 --- a/src/mame/video/sub.cpp +++ b/src/mame/video/sub.cpp @@ -59,7 +59,7 @@ WRITE8_MEMBER(sub_state::scrolly_w) void sub_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(sub_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(sub_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_tilemap->set_scroll_cols(32); } diff --git a/src/mame/video/suna8.cpp b/src/mame/video/suna8.cpp index f1e4cd650b2..e187d56dd6d 100644 --- a/src/mame/video/suna8.cpp +++ b/src/mame/video/suna8.cpp @@ -155,10 +155,8 @@ void suna8_state::suna8_vh_start_common(bool has_text, GFXBANK_TYPE_T gfxbank_ty } #if TILEMAPS - m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(suna8_state::get_tile_info),this), TILEMAP_SCAN_COLS, - - 8, 8, 0x20*(m_has_text ? 4 : 16), 0x20); - + m_bg_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suna8_state::get_tile_info)), TILEMAP_SCAN_COLS, + 8, 8, 0x20*(m_has_text ? 4 : 16), 0x20); m_bg_tilemap->set_transparent_pen(15); #endif } diff --git a/src/mame/video/superqix.cpp b/src/mame/video/superqix.cpp index 4f8b8fc7f54..17996e3770e 100644 --- a/src/mame/video/superqix.cpp +++ b/src/mame/video/superqix.cpp @@ -51,17 +51,17 @@ TILE_GET_INFO_MEMBER(superqix_state_base::sqix_get_bg_tile_info) void hotsmash_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(hotsmash_state::pb_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(hotsmash_state::pb_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8,32,32); } void superqix_state::video_start() { m_fg_bitmap[0] = std::make_unique<bitmap_ind16>(256, 256); m_fg_bitmap[1] = std::make_unique<bitmap_ind16>(256, 256); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(superqix_state_base::sqix_get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(superqix_state_base::sqix_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap->set_transmask(0,0xffff,0x0000); /* split type 0 is totally transparent in front half */ - m_bg_tilemap->set_transmask(1,0x0001,0xfffe); /* split type 1 has pen 0 transparent in front half */ + m_bg_tilemap->set_transmask(0, 0xffff, 0x0000); // split type 0 is totally transparent in front half + m_bg_tilemap->set_transmask(1, 0x0001, 0xfffe); // split type 1 has pen 0 transparent in front half save_item(NAME(*m_fg_bitmap[0])); save_item(NAME(*m_fg_bitmap[1])); diff --git a/src/mame/video/suprloco.cpp b/src/mame/video/suprloco.cpp index 15608323be7..be0b991d78a 100644 --- a/src/mame/video/suprloco.cpp +++ b/src/mame/video/suprloco.cpp @@ -90,7 +90,7 @@ TILE_GET_INFO_MEMBER(suprloco_state::get_tile_info) void suprloco_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprloco_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprloco_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_bg_tilemap->set_scroll_rows(32); diff --git a/src/mame/video/suprnova.cpp b/src/mame/video/suprnova.cpp index 25a02e667bd..f32c7a9e8d7 100644 --- a/src/mame/video/suprnova.cpp +++ b/src/mame/video/suprnova.cpp @@ -345,10 +345,10 @@ WRITE32_MEMBER(skns_state::v3_regs_w) void skns_state::video_start() { - m_tilemap_A = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skns_state::get_tilemap_A_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64, 64); + m_tilemap_A = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skns_state::get_tilemap_A_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,64); m_tilemap_A->set_transparent_pen(0); - m_tilemap_B = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(skns_state::get_tilemap_B_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64, 64); + m_tilemap_B = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(skns_state::get_tilemap_B_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,64); m_tilemap_B->set_transparent_pen(0); m_sprite_bitmap.allocate(1024,1024); diff --git a/src/mame/video/suprridr.cpp b/src/mame/video/suprridr.cpp index 1b695465257..645033f85f4 100644 --- a/src/mame/video/suprridr.cpp +++ b/src/mame/video/suprridr.cpp @@ -40,9 +40,9 @@ TILE_GET_INFO_MEMBER(suprridr_state::get_tile_info2) void suprridr_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprridr_state::get_tile_info2),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprridr_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_bg_tilemap_noscroll = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprridr_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprridr_state::get_tile_info2)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprridr_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg_tilemap_noscroll = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprridr_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/suprslam.cpp b/src/mame/video/suprslam.cpp index 8797ef12594..222dfeac954 100644 --- a/src/mame/video/suprslam.cpp +++ b/src/mame/video/suprslam.cpp @@ -57,8 +57,8 @@ uint32_t suprslam_state::suprslam_tile_callback( uint32_t code ) void suprslam_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprslam_state::get_suprslam_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_screen_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(suprslam_state::get_suprslam_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprslam_state::get_suprslam_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_screen_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(suprslam_state::get_suprslam_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_spr_ctrl = 0; m_screen_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/system1.cpp b/src/mame/video/system1.cpp index 745bd7148da..d04a9e6f1b6 100644 --- a/src/mame/video/system1.cpp +++ b/src/mame/video/system1.cpp @@ -131,7 +131,7 @@ void system1_state::video_start_common(int pagecount) /* create the tilemap pages */ for (pagenum = 0; pagenum < pagecount; pagenum++) { - m_tilemap_page[pagenum] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(system1_state::tile_get_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_tilemap_page[pagenum] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(system1_state::tile_get_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_tilemap_page[pagenum]->set_transparent_pen(0); m_tilemap_page[pagenum]->set_user_data(m_videoram.get() + 0x800 * pagenum); } diff --git a/src/mame/video/system16.cpp b/src/mame/video/system16.cpp index 1b26cb74807..331f0258cfe 100644 --- a/src/mame/video/system16.cpp +++ b/src/mame/video/system16.cpp @@ -36,9 +36,8 @@ void segas1x_bootleg_state::setup_system16_bootleg_spritebanking( ) { if (m_spritebank_type == 0) { - static const uint8_t alternate_banklist[] = { 0,255,255,255, 255,255,255,3, 255,255,255,2, 255,1,0,255 }; - int i; - for (i = 0; i < 16; i++) + static constexpr uint8_t alternate_banklist[] = { 0,255,255,255, 255,255,255,3, 255,255,255,2, 255,1,0,255 }; + for (int i = 0; i < 16; i++) m_sprites->set_bank(i, alternate_banklist[i]); } @@ -366,24 +365,24 @@ VIDEO_START_MEMBER(segas1x_bootleg_state,system16) if (!m_bg1_trans) m_background[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_bg_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_bg_map)), 8,8, - 64*2,32*2 ); + 64*2,32*2); else m_background[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_bg_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_bg_map)), 8,8, - 64*2,32*2 ); + 64*2,32*2); m_foreground[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_fg_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_bg_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_bg_map)), 8,8, - 64*2,32*2 ); + 64*2,32*2); m_text_layer = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_text_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_text_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_text_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_text_map)), 8,8, - 40,28 ); + 40,28); if (m_bg1_trans) m_background[0]->set_transparent_pen(0); m_foreground[0]->set_transparent_pen(0); @@ -422,14 +421,14 @@ VIDEO_START_MEMBER(segas1x_bootleg_state,system18old) m_bg1_trans = 1; m_background[1] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_bg_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_bg_map)), 8,8, - 64*2,32*2 ); + 64*2,32*2); m_foreground[1] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_fg2_tile_info),this), tilemap_mapper_delegate(FUNC(segas1x_bootleg_state::sys16_bg_map),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_fg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(segas1x_bootleg_state::sys16_bg_map)), 8,8, - 64*2,32*2 ); + 64*2,32*2); m_foreground[1]->set_transparent_pen(0); @@ -557,11 +556,11 @@ VIDEO_START_MEMBER(segas1x_bootleg_state,s16a_bootleg) - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_infotxt),this), TILEMAP_SCAN_ROWS, 8,8, 64,32 ); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_infotxt)), TILEMAP_SCAN_ROWS, 8,8, 64,32); // the system16a bootlegs have simple tilemaps instead of the paged system - m_bg_tilemaps[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_info0),this), TILEMAP_SCAN_ROWS, 8,8, 64,32 ); - m_bg_tilemaps[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_info1),this), TILEMAP_SCAN_ROWS, 8,8, 64,32 ); + m_bg_tilemaps[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_info0)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_bg_tilemaps[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(segas1x_bootleg_state::get_s16a_bootleg_tile_info1)), TILEMAP_SCAN_ROWS, 8,8, 64,32); m_text_tilemap->set_transparent_pen(0); m_bg_tilemaps[0]->set_transparent_pen(0); diff --git a/src/mame/video/tagteam.cpp b/src/mame/video/tagteam.cpp index 2fb421ad380..f46f85a3a27 100644 --- a/src/mame/video/tagteam.cpp +++ b/src/mame/video/tagteam.cpp @@ -137,7 +137,7 @@ TILE_GET_INFO_MEMBER(tagteam_state::get_bg_tile_info) void tagteam_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tagteam_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS_FLIP_X, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tagteam_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS_FLIP_X, 8, 8, 32, 32); save_item(NAME(m_palettebank)); diff --git a/src/mame/video/tail2nos.cpp b/src/mame/video/tail2nos.cpp index b8191e93382..9c3ab1d4282 100644 --- a/src/mame/video/tail2nos.cpp +++ b/src/mame/video/tail2nos.cpp @@ -49,7 +49,7 @@ void tail2nos_state::tail2nos_postload() void tail2nos_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tail2nos_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tail2nos_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/taito_f3.cpp b/src/mame/video/taito_f3.cpp index 2d1ae3b058e..458f347ff06 100644 --- a/src/mame/video/taito_f3.cpp +++ b/src/mame/video/taito_f3.cpp @@ -498,10 +498,10 @@ void taito_f3_state::video_start() if (m_game_config->extend) { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<2>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<3>), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); m_pf_data[0] = m_pf_ram + (0x0000 / 2); m_pf_data[1] = m_pf_ram + (0x2000 / 2); @@ -519,14 +519,14 @@ void taito_f3_state::video_start() } else { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<0>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<1>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<2>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<3>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<4>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<5>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[6] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<6>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[7] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info<7>), this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[4] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<4>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[5] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<5>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[6] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<6>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[7] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info<7>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_pf_data[0] = m_pf_ram + (0x0000 / 2); m_pf_data[1] = m_pf_ram + (0x1000 / 2); @@ -554,8 +554,8 @@ void taito_f3_state::video_start() m_spriteram16_buffered = std::make_unique<u16[]>(0x10000 / 2); m_spritelist = std::make_unique<tempsprite[]>(0x400); m_sprite_end = &m_spritelist[0]; - m_vram_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_text), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_pixel_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taito_f3_state::get_tile_info_pixel), this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_vram_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info_text)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_pixel_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taito_f3_state::get_tile_info_pixel)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); m_pf_line_inf = std::make_unique<f3_playfield_line_inf[]>(5); m_sa_line_inf = std::make_unique<f3_spritealpha_line_inf[]>(1); m_screen->register_screen_bitmap(m_pri_alp_bitmap); @@ -566,8 +566,7 @@ void taito_f3_state::video_start() m_vram_layer->set_transparent_pen(0); m_pixel_layer->set_transparent_pen(0); - /* Palettes have 4 bpp indexes despite up to 6 bpp data. The unused */ - /* top bits in the gfx data are cleared later. */ + // Palettes have 4 bpp indexes despite up to 6 bpp data. The unused top bits in the gfx data are cleared later. m_gfxdecode->gfx(2)->set_granularity(16); m_gfxdecode->gfx(3)->set_granularity(16); diff --git a/src/mame/video/taito_l.cpp b/src/mame/video/taito_l.cpp index 237ce077cf4..6035969cccb 100644 --- a/src/mame/video/taito_l.cpp +++ b/src/mame/video/taito_l.cpp @@ -50,9 +50,9 @@ void taitol_state::video_start() { m_buff_spriteram = make_unique_clear<u8[]>(SPRITERAM_SIZE); - m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitol_state::get_tile_info<0x8000>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitol_state::get_tile_info<0x9000>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitol_state::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitol_state::get_tile_info<0x8000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitol_state::get_tile_info<0x9000>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitol_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap[0]->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/taitojc.cpp b/src/mame/video/taitojc.cpp index 25f965eb542..018709783d8 100644 --- a/src/mame/video/taitojc.cpp +++ b/src/mame/video/taitojc.cpp @@ -309,7 +309,7 @@ void taitojc_state::video_start() assert(m_gfx_index != MAX_GFX_ELEMENTS); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taitojc_state::taitojc_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taitojc_state::taitojc_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tank8.cpp b/src/mame/video/tank8.cpp index e0919d373fd..8e76fa7d0db 100644 --- a/src/mame/video/tank8.cpp +++ b/src/mame/video/tank8.cpp @@ -104,10 +104,9 @@ void tank8_state::video_start() m_screen->register_screen_bitmap(m_helper2); m_screen->register_screen_bitmap(m_helper3); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tank8_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - - /* VBLANK starts on scanline #256 and ends on scanline #24 */ + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tank8_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + // VBLANK starts on scanline #256 and ends on scanline #24 m_tilemap->set_scrolly(0, 2 * 24); save_item(NAME(m_collision_index)); diff --git a/src/mame/video/tankbatt.cpp b/src/mame/video/tankbatt.cpp index 847bba56002..067cf00a70b 100644 --- a/src/mame/video/tankbatt.cpp +++ b/src/mame/video/tankbatt.cpp @@ -67,22 +67,22 @@ TILE_GET_INFO_MEMBER(tankbatt_state::get_bg_tile_info) void tankbatt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tankbatt_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tankbatt_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void tankbatt_state::draw_bullets(bitmap_ind16 &bitmap, const rectangle &cliprect) { - for (int offs = 0;offs < m_bulletsram.bytes();offs += 2) + for (int offs = 0; offs < m_bulletsram.bytes(); offs += 2) { - int color = 0xff; /* cyan, same color as the tanks */ - int x = m_bulletsram[offs + 1]; - int y = 255 - m_bulletsram[offs] - 2; + int const color = 0xff; // cyan, same color as the tanks + int const x = m_bulletsram[offs + 1]; + int const y = 255 - m_bulletsram[offs] - 2; m_gfxdecode->gfx(1)->opaque(bitmap,cliprect, - 0, /* this is just a square, generated by the hardware */ - color, - 0,0, - x,y); + 0, // this is just a square, generated by the hardware + color, + 0, 0, + x, y); } } diff --git a/src/mame/video/tankbust.cpp b/src/mame/video/tankbust.cpp index e179c067f6a..f79167032c9 100644 --- a/src/mame/video/tankbust.cpp +++ b/src/mame/video/tankbust.cpp @@ -79,10 +79,10 @@ TILE_GET_INFO_MEMBER(tankbust_state::get_txt_tile_info) void tankbust_state::video_start() { /* not scrollable */ - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tankbust_state::get_txt_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tankbust_state::get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); /* scrollable */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tankbust_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tankbust_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_txt_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/taotaido.cpp b/src/mame/video/taotaido.cpp index 9f23e7eb720..2da4879bcff 100644 --- a/src/mame/video/taotaido.cpp +++ b/src/mame/video/taotaido.cpp @@ -92,7 +92,7 @@ uint32_t taotaido_state::tile_callback( uint32_t code ) void taotaido_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(taotaido_state::bg_tile_info),this),tilemap_mapper_delegate(FUNC(taotaido_state::tilemap_scan_rows),this),16,16,128,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(taotaido_state::bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(taotaido_state::tilemap_scan_rows)), 16,16, 128,64); m_spriteram_old = std::make_unique<uint16_t[]>(0x2000/2); m_spriteram_older = std::make_unique<uint16_t[]>(0x2000/2); diff --git a/src/mame/video/targeth.cpp b/src/mame/video/targeth.cpp index def35b159d3..5460badc82f 100644 --- a/src/mame/video/targeth.cpp +++ b/src/mame/video/targeth.cpp @@ -65,8 +65,8 @@ WRITE16_MEMBER(targeth_state::vram_w) void targeth_state::video_start() { - m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(targeth_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(targeth_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(targeth_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(targeth_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); m_pant[0]->set_transparent_pen(0); } diff --git a/src/mame/video/tatsumi.cpp b/src/mame/video/tatsumi.cpp index 88491e65f59..511e428d716 100644 --- a/src/mame/video/tatsumi.cpp +++ b/src/mame/video/tatsumi.cpp @@ -687,7 +687,7 @@ void apache3_state::draw_ground(bitmap_rgb32 &dst, const rectangle &cliprect) VIDEO_START_MEMBER(apache3_state,apache3) { - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tatsumi_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192); m_temp_bitmap.allocate(512, 512); m_apache3_road_x_ram = std::make_unique<uint8_t[]>(512); @@ -754,7 +754,7 @@ WRITE8_MEMBER(roundup5_state::gfxdata_w) VIDEO_START_MEMBER(roundup5_state,roundup5) { - m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tatsumi_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS,8,8,128,64); + m_tx_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tatsumi_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 128,64); m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192); m_tx_gfxram = std::make_unique<uint8_t[]>(0x20000); m_bg_gfxram = std::make_unique<uint8_t[]>(0x20000); @@ -1185,10 +1185,10 @@ void cyclwarr_state::tile_expand() VIDEO_START_MEMBER(cyclwarr_state,cyclwarr) { tile_expand(); - m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<0>),this),TILEMAP_SCAN_ROWS,8,8,64,512); - m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_cyclwarr_road<1>),this),TILEMAP_SCAN_ROWS,8,8,128,256); - m_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<2>),this),TILEMAP_SCAN_ROWS,8,8,64,512); - m_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<3>),this),TILEMAP_SCAN_ROWS,8,8,64,512); + m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<0>)), TILEMAP_SCAN_ROWS, 8,8, 64,512); + m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_cyclwarr_road<1>)), TILEMAP_SCAN_ROWS, 8,8, 128,256); + m_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<2>)), TILEMAP_SCAN_ROWS, 8,8, 64,512); + m_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<3>)), TILEMAP_SCAN_ROWS, 8,8, 64,512); m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192); @@ -1209,10 +1209,10 @@ VIDEO_START_MEMBER(cyclwarr_state,cyclwarr) VIDEO_START_MEMBER(cyclwarr_state,bigfight) { tile_expand(); - m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<0>),this),TILEMAP_SCAN_ROWS,8,8,128,256); - m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<1>),this),TILEMAP_SCAN_ROWS,8,8,128,256); - m_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<2>),this),TILEMAP_SCAN_ROWS,8,8,128,256); - m_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(cyclwarr_state::get_tile_info_bigfight<3>),this),TILEMAP_SCAN_ROWS,8,8,128,256); + m_layer[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<0>)), TILEMAP_SCAN_ROWS, 8,8, 128,256); + m_layer[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<1>)), TILEMAP_SCAN_ROWS, 8,8, 128,256); + m_layer[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<2>)), TILEMAP_SCAN_ROWS, 8,8, 128,256); + m_layer[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(cyclwarr_state::get_tile_info_bigfight<3>)), TILEMAP_SCAN_ROWS, 8,8, 128,256); m_shadow_pen_array = make_unique_clear<uint8_t[]>(8192); diff --git a/src/mame/video/tbowl.cpp b/src/mame/video/tbowl.cpp index 640d5d41616..d060459868c 100644 --- a/src/mame/video/tbowl.cpp +++ b/src/mame/video/tbowl.cpp @@ -111,9 +111,9 @@ WRITE8_MEMBER(tbowl_state::bg2yscroll_hi) void tbowl_state::video_start() { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tbowl_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tbowl_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,128,32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tbowl_state::get_bg2_tile_info),this),TILEMAP_SCAN_ROWS, 16, 16,128,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tbowl_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tbowl_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 128,32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tbowl_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 128,32); m_tx_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tc0080vco.cpp b/src/mame/video/tc0080vco.cpp index fdba11c01cd..645ab6f36a9 100644 --- a/src/mame/video/tc0080vco.cpp +++ b/src/mame/video/tc0080vco.cpp @@ -143,8 +143,8 @@ void tc0080vco_device::device_start() 16*8 }; - m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0080vco_device::get_bg0_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0080vco_device::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0080vco_device::get_bg0_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0080vco_device::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); @@ -158,7 +158,7 @@ void tc0080vco_device::device_start() m_tilemap[0]->set_scroll_rows(512); /* Perform extra initialisations for text layer */ - m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0080vco_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0080vco_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[2]->set_scrolldx(0, 0); m_tilemap[2]->set_scrolldy(48, -448); diff --git a/src/mame/video/tc0100scn.cpp b/src/mame/video/tc0100scn.cpp index 0238be3d35e..084085b6365 100644 --- a/src/mame/video/tc0100scn.cpp +++ b/src/mame/video/tc0100scn.cpp @@ -156,6 +156,7 @@ tc0100scn_base_device::tc0100scn_base_device(const machine_config &mconfig, devi : device_t(mconfig, type, tag, owner, clock) , device_gfx_interface(mconfig, *this) , m_gfxlayout(TC0100SCN_LAYOUT_DEFAULT) + , m_tc0100scn_cb(*this) , m_ram(nullptr) , m_bgscroll_ram(nullptr) , m_fgscroll_ram(nullptr) @@ -227,7 +228,7 @@ GFXDECODE_END void tc0100scn_base_device::device_start() { // bind callbacks - m_tc0100scn_cb.bind_relative_to(*owner()); + m_tc0100scn_cb.resolve(); static const gfx_layout charlayout = { @@ -248,14 +249,14 @@ void tc0100scn_base_device::device_start() we're safe as it uses single width tilemaps. */ /* Single width versions */ - m_tilemap[0][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>, "bg0_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>, "bg1_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_tx_tile_info<0x02000, 1>, "txt_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_tx_tile_info<0x02000, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); /* Double width versions */ - m_tilemap[0][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>, "bg0_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_tilemap[1][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>, "bg1_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_tx_tile_info<0x09000, 2>, "txt_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap[0][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>))), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[1][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>))), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, NAME((&tc0100scn_base_device::get_tx_tile_info<0x09000, 2>))), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); m_tilemap[0][0]->set_transparent_pen(0); m_tilemap[1][0]->set_transparent_pen(0); diff --git a/src/mame/video/tc0100scn.h b/src/mame/video/tc0100scn.h index ad2ba68644a..8b99eb7b9a2 100644 --- a/src/mame/video/tc0100scn.h +++ b/src/mame/video/tc0100scn.h @@ -17,16 +17,17 @@ enum { TC0620SCC_LAYOUT_DEFAULT = 0 // default TC0620SCC layout is 6bpp }; -typedef device_delegate<void (u32 *code, u16 *color)> tc0100scn_cb_delegate; #define TC0100SCN_CB_MEMBER(_name) void _name(u32 *code, u16 *color) class tc0100scn_base_device : public device_t, public device_gfx_interface { public: + typedef device_delegate<void (u32 *code, u16 *color)> tc0100scn_cb_delegate; + // configuration void set_gfxlayout(int layout) { m_gfxlayout = layout; } void set_color_base(u16 base) { m_col_base = base; } - template <typename... T> void set_tile_callback(T &&... args) { m_tc0100scn_cb = tc0100scn_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_callback(T &&... args) { m_tc0100scn_cb.set(std::forward<T>(args)...); } void set_multiscr_xoffs(int xoffs) { m_multiscrn_xoffs = xoffs; } void set_multiscr_hack(int hack) { m_multiscrn_hack = hack; } void set_offsets(int x_offset, int y_offset) diff --git a/src/mame/video/tc0180vcu.cpp b/src/mame/video/tc0180vcu.cpp index 7c0f5827070..d8bc1876061 100644 --- a/src/mame/video/tc0180vcu.cpp +++ b/src/mame/video/tc0180vcu.cpp @@ -90,9 +90,9 @@ void tc0180vcu_device::device_resolve_objects() void tc0180vcu_device::device_start() { - m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0180vcu_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0180vcu_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0180vcu_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tilemap[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0180vcu_device::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0180vcu_device::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_tilemap[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0180vcu_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tilemap[1]->set_transparent_pen(0); m_tilemap[2]->set_transparent_pen(0); diff --git a/src/mame/video/tc0280grd.cpp b/src/mame/video/tc0280grd.cpp index 90c154a389b..8837a1e9440 100644 --- a/src/mame/video/tc0280grd.cpp +++ b/src/mame/video/tc0280grd.cpp @@ -59,7 +59,7 @@ void tc0280grd_device::device_start() decode_gfx(gfxinfo); gfx(0)->set_colorbase(m_colorbase); - m_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0280grd_device::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0280grd_device::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap->set_transparent_pen(0); m_ram = make_unique_clear<u16[]>(TC0280GRD_RAM_SIZE / 2); diff --git a/src/mame/video/tc0480scp.cpp b/src/mame/video/tc0480scp.cpp index 47f4b5c1b8a..8a52fd5a4e5 100644 --- a/src/mame/video/tc0480scp.cpp +++ b/src/mame/video/tc0480scp.cpp @@ -246,18 +246,18 @@ void tc0480scp_device::device_start() }; /* Single width versions */ - m_tilemap[0][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x0000>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[1][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x0800>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x1000>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[3][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x1800>),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); - m_tilemap[4][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x0000>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[1][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x0800>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x1000>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[3][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x1800>)), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_tilemap[4][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); /* Double width versions */ - m_tilemap[0][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x0000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[1][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x1000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x2000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[3][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_bg_tile_info<0x3000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tilemap[4][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(tc0480scp_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x0000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[1][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x1000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x2000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[3][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_bg_tile_info<0x3000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tilemap[4][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(tc0480scp_device::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); for (int i = 0; i < 2; i++) { diff --git a/src/mame/video/tceptor.cpp b/src/mame/video/tceptor.cpp index 7b14db0b7b7..556401437c1 100644 --- a/src/mame/video/tceptor.cpp +++ b/src/mame/video/tceptor.cpp @@ -377,14 +377,14 @@ void tceptor_state::video_start() m_c45_road->set_transparent_color(m_palette->pen_indirect(0xfff)); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_tx_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 34, 28); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tceptor_state::get_tx_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 34, 28); m_tx_tilemap->set_scrollx(0, -2*8); m_tx_tilemap->set_scrolly(0, 0); m_tx_tilemap->configure_groups(*m_gfxdecode->gfx(0), 7); - m_bg_tilemap[0] = &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_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tceptor_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tceptor_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tceptor_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); save_pointer(NAME(m_sprite_ram_buffered), 0x200 / 2); save_item(NAME(m_bg_scroll_x[0])); diff --git a/src/mame/video/tecmo.cpp b/src/mame/video/tecmo.cpp index 484bebc3506..16af911473c 100644 --- a/src/mame/video/tecmo.cpp +++ b/src/mame/video/tecmo.cpp @@ -80,15 +80,15 @@ void tecmo_state::video_start() { if (m_video_type == 2) /* gemini */ { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo_state::gemini_get_bg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo_state::gemini_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo_state::gemini_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo_state::gemini_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,16); } else /* rygar, silkworm */ { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,16); } - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32,32); m_bg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tecmo16.cpp b/src/mame/video/tecmo16.cpp index 3b386509751..0dbae63431a 100644 --- a/src/mame/video/tecmo16.cpp +++ b/src/mame/video/tecmo16.cpp @@ -74,9 +74,9 @@ void tecmo16_state::video_start() /* set up sprites */ m_screen->register_screen_bitmap(m_sprite_bitmap); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::tx_get_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::tx_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transparent_pen(0); @@ -99,9 +99,9 @@ VIDEO_START_MEMBER(tecmo16_state,ginkun) /* set up sprites */ m_screen->register_screen_bitmap(m_sprite_bitmap); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::tx_get_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::tx_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transparent_pen(0); @@ -122,9 +122,9 @@ VIDEO_START_MEMBER(tecmo16_state,riot) /* set up sprites */ m_screen->register_screen_bitmap(m_sprite_bitmap); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::fg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::bg_get_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmo16_state::tx_get_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::fg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::bg_get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmo16_state::tx_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); m_fg_tilemap->set_transparent_pen(0); m_bg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tecmosys.cpp b/src/mame/video/tecmosys.cpp index 6b9e646f08d..55592297fd5 100644 --- a/src/mame/video/tecmosys.cpp +++ b/src/mame/video/tecmosys.cpp @@ -284,16 +284,16 @@ void tecmosys_state::video_start() m_tmp_tilemap_composebitmap.fill(0x0000); m_tmp_tilemap_renderbitmap.fill(0x0000); - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmosys_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,8,8,32*2,32*2); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmosys_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8,8, 32*2,32*2); m_tilemap[0]->set_transparent_pen(0); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmosys_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmosys_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_tilemap[1]->set_transparent_pen(0); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmosys_state::get_tile_info<2>),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmosys_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_tilemap[2]->set_transparent_pen(0); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tecmosys_state::get_tile_info<3>),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tecmosys_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_tilemap[3]->set_transparent_pen(0); save_item(NAME(m_spritelist)); diff --git a/src/mame/video/tehkanwc.cpp b/src/mame/video/tehkanwc.cpp index f80d2267828..f8d3341c66d 100644 --- a/src/mame/video/tehkanwc.cpp +++ b/src/mame/video/tehkanwc.cpp @@ -90,11 +90,11 @@ TILE_GET_INFO_MEMBER(tehkanwc_state::get_fg_tile_info) void tehkanwc_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(tehkanwc_state::get_bg_tile_info),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tehkanwc_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); m_fg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(tehkanwc_state::get_fg_tile_info),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tehkanwc_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/terracre.cpp b/src/mame/video/terracre.cpp index 3da7cad5313..008e748ac4f 100644 --- a/src/mame/video/terracre.cpp +++ b/src/mame/video/terracre.cpp @@ -169,8 +169,8 @@ WRITE16_MEMBER(terracre_state::amazon_scrollx_w) void terracre_state::video_start() { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(terracre_state::get_bg_tile_info),this),TILEMAP_SCAN_COLS,16,16,64,32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(terracre_state::get_fg_tile_info),this),TILEMAP_SCAN_COLS,8,8,64,32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(terracre_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16,16, 64,32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(terracre_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64,32); m_foreground->set_transparent_pen(0xf); /* register for saving */ diff --git a/src/mame/video/tetrisp2.cpp b/src/mame/video/tetrisp2.cpp index 881099a042b..4ed9b005e0a 100644 --- a/src/mame/video/tetrisp2.cpp +++ b/src/mame/video/tetrisp2.cpp @@ -221,9 +221,9 @@ VIDEO_START_MEMBER(tetrisp2_state,tetrisp2) { m_flipscreen_old = -1; - m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_bg),this),TILEMAP_SCAN_ROWS,16,16,NX_0,NY_0); - m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_fg),this),TILEMAP_SCAN_ROWS,8,8,NX_1,NY_1); - m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rot),this),TILEMAP_SCAN_ROWS,16,16,NX_0*2,NY_0*2); + m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 16,16, NX_0,NY_0); + m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_fg)), TILEMAP_SCAN_ROWS, 8,8, NX_1,NY_1); + m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rot)), TILEMAP_SCAN_ROWS, 16,16, NX_0*2,NY_0*2); m_tilemap_bg->set_transparent_pen(0); m_tilemap_fg->set_transparent_pen(0); m_tilemap_rot->set_transparent_pen(0); @@ -245,9 +245,9 @@ VIDEO_START_MEMBER(tetrisp2_state,rockntread) { m_flipscreen_old = -1; - m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_bg),this),TILEMAP_SCAN_ROWS,16, 16, 256, 16); // rockn ms(main),1,2,3,4 - m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_fg),this),TILEMAP_SCAN_ROWS,8, 8, 64, 64); - m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rot),this),TILEMAP_SCAN_ROWS,16, 16, 128, 128); + m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 16,16, 256,16); // rockn ms(main),1,2,3,4 + m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_fg)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rot)), TILEMAP_SCAN_ROWS, 16,16, 128,128); m_tilemap_bg->set_transparent_pen(0); m_tilemap_fg->set_transparent_pen(0); @@ -265,9 +265,9 @@ VIDEO_START_MEMBER(tetrisp2_state,rocknms) { VIDEO_START_CALL_MEMBER( rockntread ); - m_tilemap_sub_bg = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rocknms_sub_bg),this),TILEMAP_SCAN_ROWS,16, 16, 32, 256); // rockn ms(sub) - m_tilemap_sub_fg = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rocknms_sub_fg),this),TILEMAP_SCAN_ROWS,8, 8, 64, 64); - m_tilemap_sub_rot = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rocknms_sub_rot),this),TILEMAP_SCAN_ROWS,16, 16, 128, 128); + m_tilemap_sub_bg = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rocknms_sub_bg)), TILEMAP_SCAN_ROWS, 16,16, 32,256); // rockn ms(sub) + m_tilemap_sub_fg = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rocknms_sub_fg)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_tilemap_sub_rot = &machine().tilemap().create(*m_sub_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rocknms_sub_rot)), TILEMAP_SCAN_ROWS, 16,16, 128,128); m_tilemap_sub_bg->set_transparent_pen(0); m_tilemap_sub_fg->set_transparent_pen(0); @@ -726,9 +726,9 @@ VIDEO_START_MEMBER(stepstag_state,stepstag) { m_flipscreen_old = -1; - m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_bg),this),TILEMAP_SCAN_ROWS,16,16,NX_0,NY_0); - m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::stepstag_get_tile_info_fg),this),TILEMAP_SCAN_ROWS,8,8,NX_1,NY_1); - m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tetrisp2_state::get_tile_info_rot),this),TILEMAP_SCAN_ROWS,16,16,NX_0*2,NY_0*2); + m_tilemap_bg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_bg)), TILEMAP_SCAN_ROWS, 16,16, NX_0,NY_0); + m_tilemap_fg = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::stepstag_get_tile_info_fg)), TILEMAP_SCAN_ROWS, 8,8, NX_1,NY_1); + m_tilemap_rot = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tetrisp2_state::get_tile_info_rot)), TILEMAP_SCAN_ROWS, 16,16, NX_0*2,NY_0*2); m_tilemap_bg->set_transparent_pen(0); m_tilemap_fg->set_transparent_pen(0); m_tilemap_rot->set_transparent_pen(0); diff --git a/src/mame/video/thedeep.cpp b/src/mame/video/thedeep.cpp index 8ca4fd02419..60cb5005c29 100644 --- a/src/mame/video/thedeep.cpp +++ b/src/mame/video/thedeep.cpp @@ -78,7 +78,7 @@ void thedeep_state::thedeep_palette(palette_device &palette) const void thedeep_state::video_start() { - m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(thedeep_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); + m_text_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(thedeep_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 0x20, 0x20); m_text_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/thepit.cpp b/src/mame/video/thepit.cpp index 58d401ca2c4..f139859f2d5 100644 --- a/src/mame/video/thepit.cpp +++ b/src/mame/video/thepit.cpp @@ -125,9 +125,9 @@ TILE_GET_INFO_MEMBER(thepit_state::get_tile_info) void thepit_state::video_start() { - m_solid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(thepit_state::solid_get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_solid_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(thepit_state::solid_get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(thepit_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(thepit_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_tilemap->set_transparent_pen(0); m_solid_tilemap->set_scroll_cols(32); diff --git a/src/mame/video/thoop2.cpp b/src/mame/video/thoop2.cpp index eab176dd317..6b7f2887d9e 100644 --- a/src/mame/video/thoop2.cpp +++ b/src/mame/video/thoop2.cpp @@ -70,8 +70,8 @@ WRITE16_MEMBER(thoop2_state::vram_w) void thoop2_state::video_start() { - m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(thoop2_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(thoop2_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_pant[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(thoop2_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_pant[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(thoop2_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_pant[0]->set_transmask(0,0xff01,0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */ m_pant[1]->set_transmask(0,0xff01,0x00ff); /* pens 1-7 opaque, pens 0, 8-15 transparent */ diff --git a/src/mame/video/tiamc1.cpp b/src/mame/video/tiamc1.cpp index 29530f325c6..0fba4cf00fe 100644 --- a/src/mame/video/tiamc1.cpp +++ b/src/mame/video/tiamc1.cpp @@ -166,10 +166,10 @@ void tiamc1_state::video_start() save_pointer(NAME(m_videoram), 0x3050); - m_bg_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg1_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tiamc1_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); - m_bg_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg2_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap2 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tiamc1_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap1->set_scrolldx(4, 4); m_bg_tilemap2->set_scrolldx(4, 4); @@ -201,7 +201,7 @@ VIDEO_START_MEMBER(tiamc1_state, kot) save_pointer(NAME(m_videoram), 0x450); - m_bg_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tiamc1_state::get_bg1_tile_info), this), TILEMAP_SCAN_ROWS, + m_bg_tilemap1 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tiamc1_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap1->set_scrolldx(4, 4); diff --git a/src/mame/video/tigeroad.cpp b/src/mame/video/tigeroad.cpp index 2c2be4f24dd..1f4010b1c7e 100644 --- a/src/mame/video/tigeroad.cpp +++ b/src/mame/video/tigeroad.cpp @@ -105,11 +105,11 @@ TILEMAP_MAPPER_MEMBER(tigeroad_state::tigeroad_tilemap_scan) void tigeroad_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(tigeroad_state::get_bg_tile_info),this), tilemap_mapper_delegate(FUNC(tigeroad_state::tigeroad_tilemap_scan),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tigeroad_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(tigeroad_state::tigeroad_tilemap_scan)), 32, 32, 128, 128); m_fg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(tigeroad_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tigeroad_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_transmask(0, 0xffff, 0); diff --git a/src/mame/video/timelimt.cpp b/src/mame/video/timelimt.cpp index 3dc75daf30b..f0358d54259 100644 --- a/src/mame/video/timelimt.cpp +++ b/src/mame/video/timelimt.cpp @@ -79,10 +79,10 @@ TILE_GET_INFO_MEMBER(timelimt_state::get_fg_tile_info) void timelimt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(timelimt_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(timelimt_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(timelimt_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(timelimt_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/timeplt.cpp b/src/mame/video/timeplt.cpp index 5c4e3f1da64..7e0224e7214 100644 --- a/src/mame/video/timeplt.cpp +++ b/src/mame/video/timeplt.cpp @@ -123,7 +123,7 @@ TILE_GET_INFO_MEMBER(timeplt_state::get_chkun_tile_info) void timeplt_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(timeplt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(timeplt_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_video_enable = 0; save_item(NAME(m_video_enable)); @@ -137,7 +137,7 @@ VIDEO_START_MEMBER(timeplt_state,psurge) VIDEO_START_MEMBER(timeplt_state,chkun) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(timeplt_state::get_chkun_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(timeplt_state::get_chkun_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_video_enable = 0; save_item(NAME(m_video_enable)); diff --git a/src/mame/video/tmap038.cpp b/src/mame/video/tmap038.cpp index ebd4b552b25..95759c2be75 100644 --- a/src/mame/video/tmap038.cpp +++ b/src/mame/video/tmap038.cpp @@ -137,6 +137,7 @@ tilemap038_device::tilemap038_device(const machine_config &mconfig, const char * , m_tiledim(false) , m_gfxdecode(*this, finder_base::DUMMY_TAG) , m_gfxno(0) + , m_038_cb(*this) { } @@ -178,7 +179,7 @@ TILE_GET_INFO_MEMBER(tilemap038_device::get_tile_info) void tilemap038_device::device_start() { - m_038_cb.bind_relative_to(*owner()); + m_038_cb.resolve(); m_vregs = make_unique_clear<u16[]>(0x6/2); if (m_vram_16x16 == nullptr && m_vram_8x8 == nullptr) @@ -191,7 +192,7 @@ void tilemap038_device::device_start() m_tmap = &machine().tilemap().create( *m_gfxdecode, - tilemap_get_info_delegate(FUNC(tilemap038_device::get_tile_info),this), + tilemap_get_info_delegate(*this, FUNC(tilemap038_device::get_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 512 / 8,512 / 8); diff --git a/src/mame/video/tmap038.h b/src/mame/video/tmap038.h index e479933861b..24506f553dc 100644 --- a/src/mame/video/tmap038.h +++ b/src/mame/video/tmap038.h @@ -10,6 +10,8 @@ class tilemap038_device : public device_t { public: + typedef device_delegate<void (bool tiledim, u32 &color, u32 &pri, u32 &code)> tmap038_cb_delegate; + tilemap038_device(const machine_config &mconfig, const char *tag, device_t *owner) : tilemap038_device(mconfig, tag, owner, (u32)0) { @@ -19,8 +21,7 @@ public: // configurations template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } - typedef device_delegate<void (bool tiledim, u32 &color, u32 &pri, u32 &code)> tmap038_cb_delegate; - void set_tile_callback(tmap038_cb_delegate cb) { m_038_cb = cb; } + template <typename... T> void set_tile_callback(T &&... args) { m_038_cb.set(std::forward<T>(args)...); } void set_gfx(u16 no) { m_gfxno = no; } // call to do the rendering etc. diff --git a/src/mame/video/tmnt.cpp b/src/mame/video/tmnt.cpp index 24995b3b770..c4025eccd66 100644 --- a/src/mame/video/tmnt.cpp +++ b/src/mame/video/tmnt.cpp @@ -254,7 +254,7 @@ VIDEO_START_MEMBER(tmnt_state,lgtnfght)/* also tmnt2, ssriders */ VIDEO_START_MEMBER(glfgreat_state,glfgreat) { - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(glfgreat_state::glfgreat_get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(glfgreat_state::glfgreat_get_roz_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 512, 512); m_roz_tilemap->set_transparent_pen(0); m_controller_select = 0; @@ -269,7 +269,7 @@ VIDEO_START_MEMBER(glfgreat_state,glfgreat) VIDEO_START_MEMBER(prmrsocr_state,prmrsocr) { - m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(prmrsocr_state::prmrsocr_get_roz_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 512, 256); + m_roz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(prmrsocr_state::prmrsocr_get_roz_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 512, 256); m_roz_tilemap->set_transparent_pen(0); m_sprite_bank = 0; diff --git a/src/mame/video/toaplan1.cpp b/src/mame/video/toaplan1.cpp index 41a9b6ef407..c8923114a38 100644 --- a/src/mame/video/toaplan1.cpp +++ b/src/mame/video/toaplan1.cpp @@ -162,10 +162,10 @@ TILE_GET_INFO_MEMBER(toaplan1_state::get_tile_info) void toaplan1_state::create_tilemaps() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<0>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<1>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<2>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan1_state::get_tile_info<3>),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toaplan1_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toaplan1_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toaplan1_state::get_tile_info<2>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[3] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toaplan1_state::get_tile_info<3>)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); m_tilemap[0]->set_transparent_pen(0); m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/toaplan2.cpp b/src/mame/video/toaplan2.cpp index 091dca2041e..192147f1f88 100644 --- a/src/mame/video/toaplan2.cpp +++ b/src/mame/video/toaplan2.cpp @@ -53,7 +53,7 @@ TILE_GET_INFO_MEMBER(toaplan2_state::get_text_tile_info) void toaplan2_state::create_tx_tilemap(int dx, int dx_flipped) { - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toaplan2_state::get_text_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toaplan2_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tx_tilemap->set_scroll_rows(8*32); /* line scrolling */ m_tx_tilemap->set_scroll_cols(1); diff --git a/src/mame/video/toki.cpp b/src/mame/video/toki.cpp index ffd316d9de2..fd8a42196f1 100644 --- a/src/mame/video/toki.cpp +++ b/src/mame/video/toki.cpp @@ -83,9 +83,9 @@ TILE_GET_INFO_MEMBER(toki_state::get_fore_tile_info) void toki_state::video_start() { - m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toki_state::get_text_tile_info),this),TILEMAP_SCAN_ROWS, 8,8,32,32); - m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toki_state::get_back_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); - m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(toki_state::get_fore_tile_info),this),TILEMAP_SCAN_ROWS,16,16,32,32); + m_text_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toki_state::get_text_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_background_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toki_state::get_back_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); + m_foreground_layer = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(toki_state::get_fore_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 32,32); m_text_layer->set_transparent_pen(15); m_background_layer->set_transparent_pen(15); diff --git a/src/mame/video/tp84.cpp b/src/mame/video/tp84.cpp index 726b97417ff..7851d147b7d 100644 --- a/src/mame/video/tp84.cpp +++ b/src/mame/video/tp84.cpp @@ -140,8 +140,8 @@ TILE_GET_INFO_MEMBER(tp84_state::get_fg_tile_info) void tp84_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tp84_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(tp84_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(*this, FUNC(tp84_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tp84_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/trackfld.cpp b/src/mame/video/trackfld.cpp index 807ee3961f0..056a64267b8 100644 --- a/src/mame/video/trackfld.cpp +++ b/src/mame/video/trackfld.cpp @@ -167,7 +167,7 @@ TILE_GET_INFO_MEMBER(trackfld_state::get_bg_tile_info) VIDEO_START_MEMBER(trackfld_state,trackfld) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(trackfld_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(trackfld_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scroll_rows(32); m_sprites_gfx_banked = 0; } diff --git a/src/mame/video/travrusa.cpp b/src/mame/video/travrusa.cpp index 42749cf2def..de3e0a9dc29 100644 --- a/src/mame/video/travrusa.cpp +++ b/src/mame/video/travrusa.cpp @@ -213,7 +213,7 @@ void travrusa_state::video_start() { save_item(NAME(m_scrollx)); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(travrusa_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(travrusa_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_transmask(0, 0xff, 0x00); /* split type 0 is totally transparent in front half */ m_bg_tilemap->set_transmask(1, 0x3f, 0xc0); /* split type 1 has pens 6 and 7 opaque - tunnels */ diff --git a/src/mame/video/triplhnt.cpp b/src/mame/video/triplhnt.cpp index b211a167460..333e24726ae 100644 --- a/src/mame/video/triplhnt.cpp +++ b/src/mame/video/triplhnt.cpp @@ -22,7 +22,7 @@ void triplhnt_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(triplhnt_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(triplhnt_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 16, 16); m_hit_timer = timer_alloc(TIMER_HIT); diff --git a/src/mame/video/trucocl.cpp b/src/mame/video/trucocl.cpp index e47fbf4397c..97a9a8af922 100644 --- a/src/mame/video/trucocl.cpp +++ b/src/mame/video/trucocl.cpp @@ -74,7 +74,7 @@ TILE_GET_INFO_MEMBER(trucocl_state::get_bg_tile_info) void trucocl_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(trucocl_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(trucocl_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32 ); } uint32_t trucocl_state::screen_update_trucocl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/tryout.cpp b/src/mame/video/tryout.cpp index cdf7d443ff3..90446a5b706 100644 --- a/src/mame/video/tryout.cpp +++ b/src/mame/video/tryout.cpp @@ -162,8 +162,8 @@ TILEMAP_MAPPER_MEMBER(tryout_state::get_bg_memory_offset) void tryout_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_fg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_fg_memory_offset),this),8,8,32,32); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tryout_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(tryout_state::get_bg_memory_offset),this),16,16,64,16); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tryout_state::get_fg_tile_info)), tilemap_mapper_delegate(*this, FUNC(tryout_state::get_fg_memory_offset)), 8, 8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tryout_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(tryout_state::get_bg_memory_offset)), 16,16, 64,16); m_vram=std::make_unique<uint8_t[]>(8 * 0x800); m_vram_gfx=std::make_unique<uint8_t[]>(0x6000); diff --git a/src/mame/video/tsamurai.cpp b/src/mame/video/tsamurai.cpp index 9b59bcd4d8a..c5c2e8a74e5 100644 --- a/src/mame/video/tsamurai.cpp +++ b/src/mame/video/tsamurai.cpp @@ -52,8 +52,8 @@ void tsamurai_state::video_start() VIDEO_START_MEMBER(tsamurai_state, tsamurai) { - m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tsamurai_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tsamurai_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_background->set_transparent_pen(0); m_foreground->set_transparent_pen(0); @@ -251,7 +251,7 @@ TILE_GET_INFO_MEMBER(tsamurai_state::get_vsgongf_tile_info) VIDEO_START_MEMBER(tsamurai_state,vsgongf) { - m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tsamurai_state::get_vsgongf_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tsamurai_state::get_vsgongf_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); save_item(NAME(m_vsgongf_color)); video_start(); diff --git a/src/mame/video/tumbleb.cpp b/src/mame/video/tumbleb.cpp index a515f219f7d..178eb82026d 100644 --- a/src/mame/video/tumbleb.cpp +++ b/src/mame/video/tumbleb.cpp @@ -222,9 +222,9 @@ void tumbleb_state::tumbleb_tilemap_redraw() VIDEO_START_MEMBER(tumbleb_state,pangpang) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::pangpang_get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::pangpang_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::pangpang_get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); + m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::pangpang_get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); m_pf1_tilemap->set_transparent_pen(0); m_pf1_alt_tilemap->set_transparent_pen(0); @@ -235,9 +235,9 @@ VIDEO_START_MEMBER(tumbleb_state,pangpang) VIDEO_START_MEMBER(tumbleb_state,tumblepb) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); + m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); m_pf1_tilemap->set_transparent_pen(0); m_pf1_alt_tilemap->set_transparent_pen(0); @@ -247,9 +247,9 @@ VIDEO_START_MEMBER(tumbleb_state,tumblepb) VIDEO_START_MEMBER(tumbleb_state,sdfight) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); // 64*64 to prevent bad tilemap wrapping? - check real behavior - m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); // 64*64 to prevent bad tilemap wrapping? - check real behavior + m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); + m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); m_pf1_tilemap->set_transparent_pen(0); m_pf1_alt_tilemap->set_transparent_pen(0); @@ -259,9 +259,9 @@ VIDEO_START_MEMBER(tumbleb_state,sdfight) VIDEO_START_MEMBER(tumbleb_state,fncywld) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fncywld_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fncywld_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fncywld_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); + m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fncywld_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); m_pf1_tilemap->set_transparent_pen(15); m_pf1_alt_tilemap->set_transparent_pen(15); @@ -272,9 +272,9 @@ VIDEO_START_MEMBER(tumbleb_state,fncywld) VIDEO_START_MEMBER(tumbleb_state,suprtrio) { - m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg1_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); - m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tumbleb_state::get_bg2_tile_info),this), tilemap_mapper_delegate(FUNC(tumbleb_state::tumblep_scan),this), 16, 16, 64, 32); + m_pf1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_pf1_alt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg1_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); + m_pf2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tumbleb_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(tumbleb_state::tumblep_scan)), 16, 16, 64, 32); m_pf1_alt_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/tunhunt.cpp b/src/mame/video/tunhunt.cpp index 04cb025ede8..5da4b5d764f 100644 --- a/src/mame/video/tunhunt.cpp +++ b/src/mame/video/tunhunt.cpp @@ -76,7 +76,7 @@ void tunhunt_state::video_start() m_tmpbitmap.allocate(256, 64, m_screen->format()); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tunhunt_state::get_fg_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(tunhunt_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 32, 32); m_fg_tilemap->set_transparent_pen(0); m_fg_tilemap->set_scrollx(0, 64); diff --git a/src/mame/video/turbo.cpp b/src/mame/video/turbo.cpp index a23d7370906..d5090b3752d 100644 --- a/src/mame/video/turbo.cpp +++ b/src/mame/video/turbo.cpp @@ -128,14 +128,14 @@ TILE_GET_INFO_MEMBER(turbo_state::get_fg_tile_info) VIDEO_START_MEMBER(turbo_state,turbo) { /* initialize the foreground tilemap */ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(turbo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(turbo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); } VIDEO_START_MEMBER(turbo_state,buckrog) { /* initialize the foreground tilemap */ - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(turbo_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(turbo_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); /* allocate the bitmap RAM */ m_buckrog_bitmap_ram = std::make_unique<uint8_t[]>(0xe000); diff --git a/src/mame/video/twin16.cpp b/src/mame/video/twin16.cpp index 03421242f46..0d3fd3b20f7 100644 --- a/src/mame/video/twin16.cpp +++ b/src/mame/video/twin16.cpp @@ -435,9 +435,9 @@ TILE_GET_INFO_MEMBER(twin16_state::layer1_tile_info) void twin16_state::video_start() { - m_fixed_tmap = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(FUNC(twin16_state::fix_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_scroll_tmap[0] = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(FUNC(twin16_state::layer0_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_scroll_tmap[1] = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(FUNC(twin16_state::layer1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); + m_fixed_tmap = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(*this, FUNC(twin16_state::fix_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + m_scroll_tmap[0] = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(*this, FUNC(twin16_state::layer0_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_scroll_tmap[1] = &machine().tilemap().create(*m_gfxdecode,tilemap_get_info_delegate(*this, FUNC(twin16_state::layer1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); m_fixed_tmap->set_transparent_pen(0); m_scroll_tmap[0]->set_transparent_pen(0); diff --git a/src/mame/video/twincobr.cpp b/src/mame/video/twincobr.cpp index 9a91eaa7f06..4f223d94ca7 100644 --- a/src/mame/video/twincobr.cpp +++ b/src/mame/video/twincobr.cpp @@ -61,16 +61,16 @@ TILE_GET_INFO_MEMBER(twincobr_state::get_tx_tile_info) void twincobr_state::twincobr_create_tilemaps() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(twincobr_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(twincobr_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(twincobr_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - - m_bg_tilemap->set_scrolldx(-55, -134 ); - m_fg_tilemap->set_scrolldx(-55, -134 ); - m_tx_tilemap->set_scrolldx(-55, -134 ); - m_bg_tilemap->set_scrolldy(-30, -243 ); - m_fg_tilemap->set_scrolldy(-30, -243 ); - m_tx_tilemap->set_scrolldy(-30, -243 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(twincobr_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(twincobr_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,64); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(twincobr_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 64,32); + + m_bg_tilemap->set_scrolldx(-55, -134); + m_fg_tilemap->set_scrolldx(-55, -134); + m_tx_tilemap->set_scrolldx(-55, -134); + m_bg_tilemap->set_scrolldy(-30, -243); + m_fg_tilemap->set_scrolldy(-30, -243); + m_tx_tilemap->set_scrolldy(-30, -243); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/ultratnk.cpp b/src/mame/video/ultratnk.cpp index 3f679791793..f629374539b 100644 --- a/src/mame/video/ultratnk.cpp +++ b/src/mame/video/ultratnk.cpp @@ -49,7 +49,7 @@ void ultratnk_state::video_start() { m_screen->register_screen_bitmap(m_helper); - m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(ultratnk_state::tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_playfield = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(ultratnk_state::tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/unico.cpp b/src/mame/video/unico.cpp index 5525dbe56c6..31e4cfc3116 100644 --- a/src/mame/video/unico.cpp +++ b/src/mame/video/unico.cpp @@ -113,15 +113,15 @@ WRITE16_MEMBER(unico_state::spriteram_w) { COMBINE_DATA(&m_spriteram[offset]); void unico_state::video_start() { m_tilemap[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(unico_state::get_tile_info),this),TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unico_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); m_tilemap[1] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(unico_state::get_tile_info),this),TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unico_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); m_tilemap[2] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(unico_state::get_tile_info),this),TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(unico_state::get_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 0x40, 0x40); m_tilemap[0]->set_user_data(&m_vram[0x8000/2]); diff --git a/src/mame/video/v1050.cpp b/src/mame/video/v1050.cpp index 2d0ade7b4f8..0c61c38780b 100644 --- a/src/mame/video/v1050.cpp +++ b/src/mame/video/v1050.cpp @@ -115,7 +115,7 @@ void v1050_state::v1050_video(machine_config &config) m_crtc->set_screen(SCREEN_TAG); m_crtc->set_show_border_area(true); m_crtc->set_char_width(8); - m_crtc->set_update_row_callback(FUNC(v1050_state::crtc_update_row), this); + m_crtc->set_update_row_callback(FUNC(v1050_state::crtc_update_row)); m_crtc->out_vsync_callback().set(FUNC(v1050_state::crtc_vs_w)); screen_device &screen(SCREEN(config, SCREEN_TAG, SCREEN_TYPE_RASTER, rgb_t::green())); diff --git a/src/mame/video/vastar.cpp b/src/mame/video/vastar.cpp index cf6bc3620f2..f601a2e79e7 100644 --- a/src/mame/video/vastar.cpp +++ b/src/mame/video/vastar.cpp @@ -60,9 +60,9 @@ TILE_GET_INFO_MEMBER(vastar_state::get_bg2_tile_info) void vastar_state::video_start() { - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(vastar_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS,8,8,32,32); - m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(vastar_state::get_bg1_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); - m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(vastar_state::get_bg2_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vastar_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vastar_state::get_bg1_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vastar_state::get_bg2_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,32); m_fg_tilemap->set_transparent_pen(0); m_bg1_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/vball.cpp b/src/mame/video/vball.cpp index bdb095a1fe2..08875bbe206 100644 --- a/src/mame/video/vball.cpp +++ b/src/mame/video/vball.cpp @@ -40,7 +40,7 @@ TILE_GET_INFO_MEMBER(vball_state::get_bg_tile_info) void vball_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(vball_state::get_bg_tile_info),this),tilemap_mapper_delegate(FUNC(vball_state::background_scan),this), 8, 8,64,64); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vball_state::get_bg_tile_info)), tilemap_mapper_delegate(*this, FUNC(vball_state::background_scan)), 8, 8, 64, 64); m_bg_tilemap->set_scroll_rows(32); m_gfxset=0; diff --git a/src/mame/video/videopin.cpp b/src/mame/video/videopin.cpp index 1db00b15dc2..bf9ddd0f52c 100644 --- a/src/mame/video/videopin.cpp +++ b/src/mame/video/videopin.cpp @@ -29,7 +29,7 @@ TILE_GET_INFO_MEMBER(videopin_state::get_tile_info) void videopin_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(videopin_state::get_tile_info),this), tilemap_mapper_delegate(FUNC(videopin_state::get_memory_offset),this), 8, 8, 48, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(videopin_state::get_tile_info)), tilemap_mapper_delegate(*this, FUNC(videopin_state::get_memory_offset)), 8, 8, 48, 32); save_item(NAME(m_ball_x)); save_item(NAME(m_ball_y)); diff --git a/src/mame/video/vs920a.cpp b/src/mame/video/vs920a.cpp index f827b95453f..ea94a9ec2f6 100644 --- a/src/mame/video/vs920a.cpp +++ b/src/mame/video/vs920a.cpp @@ -53,7 +53,7 @@ void vs920a_text_tilemap_device::device_start() save_item(NAME(m_pal_base)); - m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(vs920a_text_tilemap_device::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_tmap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vs920a_text_tilemap_device::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_tmap->set_transparent_pen(0); } diff --git a/src/mame/video/vsystem_spr.cpp b/src/mame/video/vsystem_spr.cpp index b0a2e11eba6..0c716e84e9c 100644 --- a/src/mame/video/vsystem_spr.cpp +++ b/src/mame/video/vsystem_spr.cpp @@ -68,7 +68,7 @@ DEFINE_DEVICE_TYPE(VSYSTEM_SPR, vsystem_spr_device, "vsystem_spr", "Video System vsystem_spr_device::vsystem_spr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, VSYSTEM_SPR, tag, owner, clock) - , m_newtilecb(FUNC(vsystem_spr_device::tile_callback_noindirect), this) + , m_newtilecb(*this, DEVICE_SELF, FUNC(vsystem_spr_device::tile_callback_noindirect)) , m_xoffs(0) , m_yoffs(0) , m_pdraw(false) @@ -89,7 +89,7 @@ uint32_t vsystem_spr_device::tile_callback_noindirect(uint32_t tile) void vsystem_spr_device::device_start() { // bind our handler - m_newtilecb.bind_relative_to(*owner()); + m_newtilecb.resolve(); save_item(NAME(m_pal_base)); diff --git a/src/mame/video/vsystem_spr.h b/src/mame/video/vsystem_spr.h index bd30347baad..40e0a3f1128 100644 --- a/src/mame/video/vsystem_spr.h +++ b/src/mame/video/vsystem_spr.h @@ -22,7 +22,7 @@ public: m_yoffs = yoffs; } void set_pdraw(bool pdraw) { m_pdraw = pdraw; } - template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb = vsystem_tile_indirection_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb.set(std::forward<T>(args)...); } void set_gfx_region(int gfx_region) { m_gfx_region = gfx_region; } void set_pal_base(int pal_base) { m_pal_base = pal_base; } void set_pal_mask(int pal_mask) { m_pal_mask = pal_mask; } diff --git a/src/mame/video/vsystem_spr2.cpp b/src/mame/video/vsystem_spr2.cpp index 408016822a8..aa62f29ce30 100644 --- a/src/mame/video/vsystem_spr2.cpp +++ b/src/mame/video/vsystem_spr2.cpp @@ -31,7 +31,7 @@ DEFINE_DEVICE_TYPE(VSYSTEM_SPR2, vsystem_spr2_device, "vsystem2_spr", "Video Sys vsystem_spr2_device::vsystem_spr2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, VSYSTEM_SPR2, tag, owner, clock) - , m_newtilecb(vsystem_tile2_indirection_delegate(FUNC(vsystem_spr2_device::tile_callback_noindirect), this)) + , m_newtilecb(*this, DEVICE_SELF, FUNC(vsystem_spr2_device::tile_callback_noindirect)) , m_pritype(0) // hack until we have better handling , m_gfx_region(0) , m_xoffs(0) @@ -50,7 +50,7 @@ uint32_t vsystem_spr2_device::tile_callback_noindirect(uint32_t tile) void vsystem_spr2_device::device_start() { // bind our handler - m_newtilecb.bind_relative_to(*owner()); + m_newtilecb.resolve(); } void vsystem_spr2_device::device_reset() diff --git a/src/mame/video/vsystem_spr2.h b/src/mame/video/vsystem_spr2.h index 13bcc4d9acd..87e28ecff9e 100644 --- a/src/mame/video/vsystem_spr2.h +++ b/src/mame/video/vsystem_spr2.h @@ -12,7 +12,7 @@ class vsystem_spr2_device : public device_t public: // configuration template <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); } - template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb = vsystem_tile2_indirection_delegate(std::forward<T>(args)...); } + template <typename... T> void set_tile_indirect_cb(T &&... args) { m_newtilecb.set(std::forward<T>(args)...); } void set_pritype(int pritype) { m_pritype = pritype; } void set_gfx_region(int gfx_region) { m_gfx_region = gfx_region; } void set_offsets(int xoffs, int yoffs) diff --git a/src/mame/video/vulgus.cpp b/src/mame/video/vulgus.cpp index 40c028eb1a5..eb9d99b338a 100644 --- a/src/mame/video/vulgus.cpp +++ b/src/mame/video/vulgus.cpp @@ -109,8 +109,8 @@ TILE_GET_INFO_MEMBER(vulgus_state::get_bg_tile_info) 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_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vulgus_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(vulgus_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16,16, 32,32); m_fg_tilemap->configure_groups(*m_gfxdecode->gfx(0), 47); diff --git a/src/mame/video/warpwarp.cpp b/src/mame/video/warpwarp.cpp index 10bb73b47f2..929774b7d9a 100644 --- a/src/mame/video/warpwarp.cpp +++ b/src/mame/video/warpwarp.cpp @@ -193,17 +193,17 @@ TILE_GET_INFO_MEMBER(warpwarp_state::warpwarp_get_tile_info) VIDEO_START_MEMBER(warpwarp_state,geebee) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(warpwarp_state::geebee_get_tile_info),this),tilemap_mapper_delegate(FUNC(warpwarp_state::tilemap_scan),this),8,8,34,28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(warpwarp_state::geebee_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(warpwarp_state::tilemap_scan)), 8,8, 34,28); } VIDEO_START_MEMBER(warpwarp_state,navarone) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(warpwarp_state::navarone_get_tile_info),this),tilemap_mapper_delegate(FUNC(warpwarp_state::tilemap_scan),this),8,8,34,28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(warpwarp_state::navarone_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(warpwarp_state::tilemap_scan)), 8,8, 34,28); } VIDEO_START_MEMBER(warpwarp_state,warpwarp) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(warpwarp_state::warpwarp_get_tile_info),this),tilemap_mapper_delegate(FUNC(warpwarp_state::tilemap_scan),this),8,8,34,28); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(warpwarp_state::warpwarp_get_tile_info)), tilemap_mapper_delegate(*this, FUNC(warpwarp_state::tilemap_scan)), 8,8, 34,28); } diff --git a/src/mame/video/wc90.cpp b/src/mame/video/wc90.cpp index d72f6b60234..ca5c08d1476 100644 --- a/src/mame/video/wc90.cpp +++ b/src/mame/video/wc90.cpp @@ -71,9 +71,9 @@ TILE_GET_INFO_MEMBER(wc90_state::track_get_fg_tile_info) void wc90_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16,16,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); @@ -81,9 +81,9 @@ void wc90_state::video_start() VIDEO_START_MEMBER(wc90_state,wc90t) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::track_get_bg_tile_info),this),TILEMAP_SCAN_ROWS, 16,16,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::track_get_fg_tile_info),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90_state::get_tx_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::track_get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::track_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64,32); m_fg_tilemap->set_transparent_pen(0); m_tx_tilemap->set_transparent_pen(0); diff --git a/src/mame/video/wc90b.cpp b/src/mame/video/wc90b.cpp index 416a0ce6ce1..08d5ee88b8f 100644 --- a/src/mame/video/wc90b.cpp +++ b/src/mame/video/wc90b.cpp @@ -48,9 +48,9 @@ TILE_GET_INFO_MEMBER(wc90b_state::get_tx_tile_info) void wc90b_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90b_state::get_bg_tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90b_state::get_fg_tile_info), this), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); - m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wc90b_state::get_tx_tile_info), this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90b_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90b_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 16, 64, 32); + m_tx_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wc90b_state::get_tx_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_fg_tilemap->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/wecleman.cpp b/src/mame/video/wecleman.cpp index 4bb6c0c1120..11201fcecb7 100644 --- a/src/mame/video/wecleman.cpp +++ b/src/mame/video/wecleman.cpp @@ -910,19 +910,19 @@ VIDEO_START_MEMBER(wecleman_state,wecleman) m_sprite_list = std::make_unique<sprite_t []>(NUM_SPRITES); - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wecleman_state::wecleman_get_bg_tile_info),this), + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wecleman_state::wecleman_get_bg_tile_info)), TILEMAP_SCAN_ROWS, /* We draw part of the road below */ 8,8, PAGE_NX * 2, PAGE_NY * 2 ); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wecleman_state::wecleman_get_fg_tile_info),this), + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wecleman_state::wecleman_get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, PAGE_NX * 2, PAGE_NY * 2); - m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wecleman_state::wecleman_get_txt_tile_info),this), + m_txt_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wecleman_state::wecleman_get_txt_tile_info)), TILEMAP_SCAN_ROWS, 8,8, diff --git a/src/mame/video/welltris.cpp b/src/mame/video/welltris.cpp index dd03b46388f..59d0c07e760 100644 --- a/src/mame/video/welltris.cpp +++ b/src/mame/video/welltris.cpp @@ -71,7 +71,7 @@ WRITE16_MEMBER(welltris_state::charvideoram_w) void welltris_state::video_start() { - m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(welltris_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(welltris_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_char_tilemap->set_transparent_pen(15); diff --git a/src/mame/video/wgp.cpp b/src/mame/video/wgp.cpp index 9f9e46b8995..d9f7160bc70 100644 --- a/src/mame/video/wgp.cpp +++ b/src/mame/video/wgp.cpp @@ -23,9 +23,9 @@ TILE_GET_INFO_MEMBER(wgp_state::get_piv_tile_info) void wgp_state::core_vh_start(int piv_xoffs, int piv_yoffs) { - m_piv_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wgp_state::get_piv_tile_info<0x0000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_piv_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wgp_state::get_piv_tile_info<0x1000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); - m_piv_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wgp_state::get_piv_tile_info<0x2000>),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_piv_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wgp_state::get_piv_tile_info<0x0000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_piv_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wgp_state::get_piv_tile_info<0x1000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_piv_tilemap[2] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wgp_state::get_piv_tile_info<0x2000>)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_piv_xoffs = piv_xoffs; m_piv_yoffs = piv_yoffs; diff --git a/src/mame/video/williams.cpp b/src/mame/video/williams.cpp index 60cc6e03f24..e7bdd55087b 100644 --- a/src/mame/video/williams.cpp +++ b/src/mame/video/williams.cpp @@ -188,7 +188,7 @@ VIDEO_START_MEMBER(williams2_state,williams2) blitter_init(m_blitter_config, nullptr); /* create the tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(williams2_state::get_tile_info),this), TILEMAP_SCAN_COLS, 24,16, 128,16); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(williams2_state::get_tile_info)), TILEMAP_SCAN_COLS, 24,16, 128,16); m_bg_tilemap->set_scrolldx(2, 0); state_save_register(); diff --git a/src/mame/video/wrally.cpp b/src/mame/video/wrally.cpp index c3a96bc6fb7..1607483b1f9 100644 --- a/src/mame/video/wrally.cpp +++ b/src/mame/video/wrally.cpp @@ -56,8 +56,8 @@ TILE_GET_INFO_MEMBER(wrally_state::get_tile_info) void wrally_state::video_start() { - m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info<0>),this),TILEMAP_SCAN_ROWS,16,16,64,32); - m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wrally_state::get_tile_info<1>),this),TILEMAP_SCAN_ROWS,16,16,64,32); + m_tilemap[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wrally_state::get_tile_info<0>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); + m_tilemap[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wrally_state::get_tile_info<1>)), TILEMAP_SCAN_ROWS, 16,16, 64,32); m_tilemap[0]->set_transmask(0,0xff01,0x00ff); /* this layer is split in two (pens 1..7, pens 8-15) */ m_tilemap[1]->set_transparent_pen(0); diff --git a/src/mame/video/wswan.cpp b/src/mame/video/wswan.cpp index 3787167960c..258925e2058 100644 --- a/src/mame/video/wswan.cpp +++ b/src/mame/video/wswan.cpp @@ -23,10 +23,16 @@ DEFINE_DEVICE_TYPE(WSWAN_VIDEO, wswan_video_device, "wswan_video", "Bandai Wonde wswan_video_device::wswan_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, WSWAN_VIDEO, tag, owner, clock) , device_video_interface(mconfig, *this) + , m_set_irq_cb(*this) + , m_snd_dma_cb(*this) , m_vdp_type(VDP_TYPE_WSWAN) { } +wswan_video_device::~wswan_video_device() +{ +} + void wswan_video_device::common_save() { @@ -88,8 +94,8 @@ void wswan_video_device::device_start() m_timer->adjust(attotime::from_ticks(256, 3072000), 0, attotime::from_ticks(256, 3072000)); // bind callbacks - m_set_irq_cb.bind_relative_to(*owner()); - m_snd_dma_cb.bind_relative_to(*owner()); + m_set_irq_cb.resolve(); + m_snd_dma_cb.resolve(); if (m_vdp_type == VDP_TYPE_WSC) { diff --git a/src/mame/video/wswan.h b/src/mame/video/wswan.h index 93bbaa76f44..a7df4401e77 100644 --- a/src/mame/video/wswan.h +++ b/src/mame/video/wswan.h @@ -27,22 +27,21 @@ enum #define WSWAN_Y_PIXELS (18*8) - -typedef device_delegate<void (int irq)> wswan_video_irq_cb_delegate; -#define WSWAN_VIDEO_IRQ_CB_MEMBER(_name) void _name(int irq) - -typedef device_delegate<void (void)> wswan_video_dmasnd_cb_delegate; -#define WSWAN_VIDEO_DMASND_CB_MEMBER(_name) void _name(void) +#define WSWAN_VIDEO_IRQ_CB_MEMBER(_name) void _name(int irq) +#define WSWAN_VIDEO_DMASND_CB_MEMBER(_name) void _name() class wswan_video_device : public device_t, public device_video_interface { public: + typedef device_delegate<void (int irq)> irq_cb_delegate; + typedef device_delegate<void ()> dmasnd_cb_delegate; + wswan_video_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - ~wswan_video_device() {} + ~wswan_video_device(); // static configuration - template <typename... T> void set_irq_callback(T &&... args) { m_set_irq_cb = wswan_video_irq_cb_delegate(std::forward<T>(args)...); } - template <typename... T> void set_dmasnd_callback(T &&... args) { m_snd_dma_cb = wswan_video_dmasnd_cb_delegate(std::forward<T>(args)...); } + template <typename... T> void set_irq_callback(T &&... args) { m_set_irq_cb.set(std::forward<T>(args)...); } + template <typename... T> void set_dmasnd_callback(T &&... args) { m_snd_dma_cb.set(std::forward<T>(args)...); } void set_vdp_type(int type) { m_vdp_type = type; } uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -119,8 +118,8 @@ protected: int m_pal[16][16]; uint8_t m_regs[256]; - wswan_video_irq_cb_delegate m_set_irq_cb; - wswan_video_dmasnd_cb_delegate m_snd_dma_cb; + irq_cb_delegate m_set_irq_cb; + dmasnd_cb_delegate m_snd_dma_cb; int m_vdp_type; // timer IDs diff --git a/src/mame/video/wwfsstar.cpp b/src/mame/video/wwfsstar.cpp index 8bfa8604d18..aeee79c0ffe 100644 --- a/src/mame/video/wwfsstar.cpp +++ b/src/mame/video/wwfsstar.cpp @@ -204,10 +204,10 @@ void wwfsstar_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec void wwfsstar_state::video_start() { - m_fg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wwfsstar_state::get_fg0_tile_info),this),TILEMAP_SCAN_ROWS, 8, 8,32,32); + m_fg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wwfsstar_state::get_fg0_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_fg0_tilemap->set_transparent_pen(0); - m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(wwfsstar_state::get_bg0_tile_info),this),tilemap_mapper_delegate(FUNC(wwfsstar_state::bg0_scan),this), 16, 16,32,32); + m_bg0_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(wwfsstar_state::get_bg0_tile_info)), tilemap_mapper_delegate(*this, FUNC(wwfsstar_state::bg0_scan)), 16, 16, 32, 32); m_fg0_tilemap->set_transparent_pen(0); save_item(NAME(m_vblank)); diff --git a/src/mame/video/x68k.cpp b/src/mame/video/x68k.cpp index 9ef89bea9da..a5b68eb5f17 100644 --- a/src/mame/video/x68k.cpp +++ b/src/mame/video/x68k.cpp @@ -611,10 +611,10 @@ void x68k_state::video_start() m_gfxdecode->gfx(gfx_index)->set_colors(32); /* Tilemaps */ - m_bg0_8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(x68k_state::get_bg0_tile),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_bg1_8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(x68k_state::get_bg1_tile),this),TILEMAP_SCAN_ROWS,8,8,64,64); - m_bg0_16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(x68k_state::get_bg0_tile_16),this),TILEMAP_SCAN_ROWS,16,16,64,64); - m_bg1_16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(x68k_state::get_bg1_tile_16),this),TILEMAP_SCAN_ROWS,16,16,64,64); + m_bg0_8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(x68k_state::get_bg0_tile)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg1_8 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(x68k_state::get_bg1_tile)), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_bg0_16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(x68k_state::get_bg0_tile_16)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); + m_bg1_16 = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(x68k_state::get_bg1_tile_16)), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); m_bg0_8->set_transparent_pen(0); m_bg1_8->set_transparent_pen(0); diff --git a/src/mame/video/xain.cpp b/src/mame/video/xain.cpp index e400dee7cf8..70b9af7f601 100644 --- a/src/mame/video/xain.cpp +++ b/src/mame/video/xain.cpp @@ -75,9 +75,9 @@ TILE_GET_INFO_MEMBER(xain_state::get_char_tile_info) void xain_state::video_start() { - m_bg_tilemaps[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xain_state::get_bg_tile_info<0>), this), tilemap_mapper_delegate(FUNC(xain_state::back_scan), this), 16,16,32,32); - m_bg_tilemaps[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xain_state::get_bg_tile_info<1>), this), tilemap_mapper_delegate(FUNC(xain_state::back_scan), this), 16,16,32,32); - m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xain_state::get_char_tile_info), this), TILEMAP_SCAN_ROWS, 8,8,32,32); + m_bg_tilemaps[0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xain_state::get_bg_tile_info<0>)), tilemap_mapper_delegate(*this, FUNC(xain_state::back_scan)), 16, 16, 32, 32); + m_bg_tilemaps[1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xain_state::get_bg_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(xain_state::back_scan)), 16, 16, 32, 32); + m_char_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xain_state::get_char_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemaps[0]->set_transparent_pen(0); m_bg_tilemaps[1]->set_transparent_pen(0); diff --git a/src/mame/video/xevious.cpp b/src/mame/video/xevious.cpp index ba83d17d6b4..c290a0b84f8 100644 --- a/src/mame/video/xevious.cpp +++ b/src/mame/video/xevious.cpp @@ -142,8 +142,8 @@ TILE_GET_INFO_MEMBER(xevious_state::get_bg_tile_info) VIDEO_START_MEMBER(xevious_state,xevious) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xevious_state::get_bg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xevious_state::get_fg_tile_info),this),TILEMAP_SCAN_ROWS,8,8,64,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xevious_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xevious_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); m_bg_tilemap->set_scrolldx(-20,288+27); m_bg_tilemap->set_scrolldy(-16,-16); diff --git a/src/mame/video/xorworld.cpp b/src/mame/video/xorworld.cpp index 46ed0f62593..54c4b98f969 100644 --- a/src/mame/video/xorworld.cpp +++ b/src/mame/video/xorworld.cpp @@ -77,7 +77,7 @@ TILE_GET_INFO_MEMBER(xorworld_state::get_bg_tile_info) void xorworld_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(xorworld_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xorworld_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } diff --git a/src/mame/video/xxmissio.cpp b/src/mame/video/xxmissio.cpp index 4c4c551620d..92ef34dbf5c 100644 --- a/src/mame/video/xxmissio.cpp +++ b/src/mame/video/xxmissio.cpp @@ -63,8 +63,8 @@ TILE_GET_INFO_MEMBER(xxmissio_state::get_fg_tile_info) void xxmissio_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xxmissio_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xxmissio_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xxmissio_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xxmissio_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 16, 8, 32, 32); m_bg_tilemap->set_scroll_cols(1); m_bg_tilemap->set_scroll_rows(1); diff --git a/src/mame/video/xyonix.cpp b/src/mame/video/xyonix.cpp index d5e9d38fdd5..48c33a51b10 100644 --- a/src/mame/video/xyonix.cpp +++ b/src/mame/video/xyonix.cpp @@ -51,7 +51,7 @@ WRITE8_MEMBER(xyonix_state::vidram_w) void xyonix_state::video_start() { - m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(xyonix_state::get_tile_info),this), TILEMAP_SCAN_ROWS, 4, 8, 80, 32); + m_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(xyonix_state::get_tile_info)), TILEMAP_SCAN_ROWS, 4, 8, 80, 32); } uint32_t xyonix_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) diff --git a/src/mame/video/ygv608.cpp b/src/mame/video/ygv608.cpp index 5f7860b5a81..fa0d6f4393d 100644 --- a/src/mame/video/ygv608.cpp +++ b/src/mame/video/ygv608.cpp @@ -359,21 +359,21 @@ void ygv608_device::device_start() save_item(NAME(m_namcond1_gfxbank)); /* create tilemaps of all sizes and combinations */ - m_tilemap_A_cache_8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 32,32); - m_tilemap_A_cache_8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 64,32); - m_tilemap_A_cache_8[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 32,64); + m_tilemap_A_cache_8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 32,32); + m_tilemap_A_cache_8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 64,32); + m_tilemap_A_cache_8[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 32,64); - m_tilemap_A_cache_16[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 32,32); - m_tilemap_A_cache_16[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 64,32); - m_tilemap_A_cache_16[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_A_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 32,64); + m_tilemap_A_cache_16[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 32,32); + m_tilemap_A_cache_16[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 64,32); + m_tilemap_A_cache_16[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_A_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 32,64); - m_tilemap_B_cache_8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 32,32); - m_tilemap_B_cache_8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 64,32); - m_tilemap_B_cache_8[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_8),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 8,8, 32,64); + m_tilemap_B_cache_8[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 32,32); + m_tilemap_B_cache_8[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 64,32); + m_tilemap_B_cache_8[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_8)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 8,8, 32,64); - m_tilemap_B_cache_16[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 32,32); - m_tilemap_B_cache_16[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 64,32); - m_tilemap_B_cache_16[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(FUNC(ygv608_device::get_tile_info_B_16),this), tilemap_mapper_delegate(FUNC(ygv608_device::get_tile_offset),this), 16,16, 32,64); + m_tilemap_B_cache_16[0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 32,32); + m_tilemap_B_cache_16[1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 64,32); + m_tilemap_B_cache_16[2] = &machine().tilemap().create(*this, tilemap_get_info_delegate(*this, FUNC(ygv608_device::get_tile_info_B_16)), tilemap_mapper_delegate(*this, FUNC(ygv608_device::get_tile_offset)), 16,16, 32,64); m_tilemap_A = nullptr; m_tilemap_B = nullptr; diff --git a/src/mame/video/yiear.cpp b/src/mame/video/yiear.cpp index 3e8c3526f0f..7adbafbd09a 100644 --- a/src/mame/video/yiear.cpp +++ b/src/mame/video/yiear.cpp @@ -101,7 +101,7 @@ TILE_GET_INFO_MEMBER(yiear_state::get_bg_tile_info) void yiear_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(yiear_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(yiear_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); } void yiear_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) diff --git a/src/mame/video/yunsun16.cpp b/src/mame/video/yunsun16.cpp index 5815c073320..bdec312cf33 100644 --- a/src/mame/video/yunsun16.cpp +++ b/src/mame/video/yunsun16.cpp @@ -69,10 +69,10 @@ TILE_GET_INFO_MEMBER(yunsun16_state::get_tile_info) void yunsun16_state::video_start() { m_tilemap[0] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info<0>),this),tilemap_mapper_delegate(FUNC(yunsun16_state::tilemap_scan_pages),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(yunsun16_state::get_tile_info<0>)), tilemap_mapper_delegate(*this, FUNC(yunsun16_state::tilemap_scan_pages)), 16, 16, 0x40, 0x40); m_tilemap[1] = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsun16_state::get_tile_info<1>),this),tilemap_mapper_delegate(FUNC(yunsun16_state::tilemap_scan_pages),this), + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(yunsun16_state::get_tile_info<1>)), tilemap_mapper_delegate(*this, FUNC(yunsun16_state::tilemap_scan_pages)), 16, 16, 0x40, 0x40); m_tilemap[0]->set_scrolldx(-0x34, 0); diff --git a/src/mame/video/yunsung8.cpp b/src/mame/video/yunsung8.cpp index ca18599aa09..cd0514df32b 100644 --- a/src/mame/video/yunsung8.cpp +++ b/src/mame/video/yunsung8.cpp @@ -172,8 +172,8 @@ TILE_GET_INFO_MEMBER(yunsung8_state::get_fg_tile_info) void yunsung8_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsung8_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, DIM_NX_0, DIM_NY_0 ); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(yunsung8_state::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, DIM_NX_1, DIM_NY_1 ); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(yunsung8_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, DIM_NX_0, DIM_NY_0 ); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(yunsung8_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, DIM_NX_1, DIM_NY_1 ); m_fg_tilemap->set_transparent_pen(0); } diff --git a/src/mame/video/zac2650.cpp b/src/mame/video/zac2650.cpp index 7283d1291cf..f028a23c792 100644 --- a/src/mame/video/zac2650.cpp +++ b/src/mame/video/zac2650.cpp @@ -120,7 +120,7 @@ TILE_GET_INFO_MEMBER(zac2650_state::get_bg_tile_info) void zac2650_state::video_start() { m_bg_tilemap = &machine().tilemap().create( - *m_gfxdecode, tilemap_get_info_delegate(FUNC(zac2650_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, + *m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zac2650_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 24, 24, 32, 32); m_screen->register_screen_bitmap(m_bitmap); diff --git a/src/mame/video/zaccaria.cpp b/src/mame/video/zaccaria.cpp index 99e898b0c27..98786d730ff 100644 --- a/src/mame/video/zaccaria.cpp +++ b/src/mame/video/zaccaria.cpp @@ -128,7 +128,7 @@ TILE_GET_INFO_MEMBER(zaccaria_state::get_tile_info) void zaccaria_state::video_start() { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(zaccaria_state::get_tile_info),this),TILEMAP_SCAN_ROWS,8,8,32,32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zaccaria_state::get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); } diff --git a/src/mame/video/zaxxon.cpp b/src/mame/video/zaxxon.cpp index ae7be184bf3..b4475bd71ef 100644 --- a/src/mame/video/zaxxon.cpp +++ b/src/mame/video/zaxxon.cpp @@ -114,7 +114,7 @@ TILE_GET_INFO_MEMBER(zaxxon_state::congo_get_fg_tile_info) * *************************************/ -void zaxxon_state::video_start_common(tilemap_get_info_delegate fg_tile_info) +void zaxxon_state::video_start_common(tilemap_get_info_delegate &&fg_tile_info) { /* reset globals */ m_bg_enable = 0; @@ -126,14 +126,14 @@ void zaxxon_state::video_start_common(tilemap_get_info_delegate fg_tile_info) m_congo_color_bank = 0; memset(m_congo_custom, 0, sizeof(m_congo_custom)); - /* create a background and foreground tilemap */ - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(zaxxon_state::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8,8, 32,512); - m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, fg_tile_info, TILEMAP_SCAN_ROWS, 8,8, 32,32); + // create a background and foreground tilemap + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zaxxon_state::get_bg_tile_info)), TILEMAP_SCAN_ROWS, 8,8, 32,512); + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, std::move(fg_tile_info), TILEMAP_SCAN_ROWS, 8,8, 32,32); - /* configure the foreground tilemap */ + // configure the foreground tilemap m_fg_tilemap->set_transparent_pen(0); - /* register for save states */ + // register for save states save_item(NAME(m_bg_enable)); save_item(NAME(m_bg_color)); save_item(NAME(m_bg_position)); @@ -144,13 +144,13 @@ void zaxxon_state::video_start_common(tilemap_get_info_delegate fg_tile_info) void zaxxon_state::video_start() { - video_start_common(tilemap_get_info_delegate(FUNC(zaxxon_state::zaxxon_get_fg_tile_info),this)); + video_start_common(tilemap_get_info_delegate(*this, FUNC(zaxxon_state::zaxxon_get_fg_tile_info))); } VIDEO_START_MEMBER(zaxxon_state,razmataz) { - video_start_common(tilemap_get_info_delegate(FUNC(zaxxon_state::razmataz_get_fg_tile_info),this)); + video_start_common(tilemap_get_info_delegate(*this, FUNC(zaxxon_state::razmataz_get_fg_tile_info))); } @@ -164,7 +164,7 @@ VIDEO_START_MEMBER(zaxxon_state,congo) save_item(NAME(m_congo_color_bank)); save_item(NAME(m_congo_custom)); - video_start_common(tilemap_get_info_delegate(FUNC(zaxxon_state::congo_get_fg_tile_info),this)); + video_start_common(tilemap_get_info_delegate(*this, FUNC(zaxxon_state::congo_get_fg_tile_info))); } diff --git a/src/mame/video/zerozone.cpp b/src/mame/video/zerozone.cpp index d7b5fb3e85b..59a6c2545eb 100644 --- a/src/mame/video/zerozone.cpp +++ b/src/mame/video/zerozone.cpp @@ -38,7 +38,7 @@ void zerozone_state::video_start() { // i'm not 100% sure it should be opaque, pink title screen looks strange in las vegas girls // but if its transparent other things look incorrect - m_zz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(zerozone_state::get_zerozone_tile_info),this), TILEMAP_SCAN_COLS, 8, 8, 64, 32); + m_zz_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(zerozone_state::get_zerozone_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64, 32); } uint32_t zerozone_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) |