From a389a3393e934f3a6f338bade49fb29faf9953ba Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 14 Apr 2025 15:48:35 +0200 Subject: [PATCH] devcb: add remove function to unset a devcb --- src/emu/devcb.h | 12 ++++++++++++ src/mame/capcom/1943.cpp | 2 +- src/mame/cinematronics/cinemat_a.cpp | 2 +- src/mame/sinclair/atm.cpp | 2 +- src/mame/sinclair/pentagon.cpp | 2 +- src/mame/sinclair/scorpion.cpp | 2 +- src/mame/sinclair/specpls3.cpp | 2 +- 7 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/emu/devcb.h b/src/emu/devcb.h index be62d8b6365..d2ee406aa60 100644 --- a/src/emu/devcb.h +++ b/src/emu/devcb.h @@ -756,6 +756,12 @@ private: auto set_constant(Result val) { return set([val] () { return val; }); } auto append_constant(Result val) { return append([val] () { return val; }); } + void remove() + { + set_used(); + m_target.m_creators.clear(); + } + private: void set_used() { assert(!m_used); m_used = true; } @@ -2152,6 +2158,12 @@ private: m_target.m_creators.emplace_back(std::make_unique()); } + void remove() + { + set_used(); + m_target.m_creators.clear(); + } + private: void set_used() { assert(!m_used); m_used = true; } diff --git a/src/mame/capcom/1943.cpp b/src/mame/capcom/1943.cpp index 7edf6ff5d4c..7a1d9f55ee4 100644 --- a/src/mame/capcom/1943.cpp +++ b/src/mame/capcom/1943.cpp @@ -322,7 +322,7 @@ void _1943_state::_1943b(machine_config &config) _1943(config); m_maincpu->set_addrmap(AS_PROGRAM, &_1943_state::c1943b_map); - m_screen->screen_vblank().set_nop(); + m_screen->screen_vblank().remove(); config.device_remove("mcu"); } diff --git a/src/mame/cinematronics/cinemat_a.cpp b/src/mame/cinematronics/cinemat_a.cpp index 4103cbe4ec6..2091e7ff2b1 100644 --- a/src/mame/cinematronics/cinemat_a.cpp +++ b/src/mame/cinematronics/cinemat_a.cpp @@ -478,5 +478,5 @@ void qb3_state::sound_reset() void qb3_state::qb3_sound(machine_config &config) { demon_sound(config); - m_outlatch->q_out_cb<4>().set_nop(); // not mapped through LS259 + m_outlatch->q_out_cb<4>().remove(); // not mapped through LS259 } diff --git a/src/mame/sinclair/atm.cpp b/src/mame/sinclair/atm.cpp index 1a355649658..fddfa0ddb24 100644 --- a/src/mame/sinclair/atm.cpp +++ b/src/mame/sinclair/atm.cpp @@ -503,7 +503,7 @@ void atm_state::atm(machine_config &config) m_maincpu->set_addrmap(AS_IO, &atm_state::atm_io); m_maincpu->set_addrmap(AS_OPCODES, &atm_state::atm_switch); m_maincpu->set_vblank_int("screen", FUNC(atm_state::atm_interrupt)); - m_maincpu->nomreq_cb().set_nop(); + m_maincpu->nomreq_cb().remove(); m_screen->set_raw(X1_128_SINCLAIR / 5, 448, 312, {get_screen_area().left() - 40, get_screen_area().right() + 40, get_screen_area().top() - 40, get_screen_area().bottom() + 40}); subdevice("gfxdecode")->set_info(gfx_atm); diff --git a/src/mame/sinclair/pentagon.cpp b/src/mame/sinclair/pentagon.cpp index 8cbc4e7daa5..25313d44b9b 100644 --- a/src/mame/sinclair/pentagon.cpp +++ b/src/mame/sinclair/pentagon.cpp @@ -196,7 +196,7 @@ void pentagon_state::pentagon(machine_config &config) m_maincpu->set_addrmap(AS_IO, &pentagon_state::pentagon_io); m_maincpu->set_addrmap(AS_OPCODES, &pentagon_state::pentagon_switch); m_maincpu->set_vblank_int("screen", FUNC(pentagon_state::pentagon_interrupt)); - m_maincpu->nomreq_cb().set_nop(); + m_maincpu->nomreq_cb().remove(); m_screen->set_raw(14_MHz_XTAL / 2, 448, 320, {get_screen_area().left() - 48, get_screen_area().right() + 48, get_screen_area().top() - 48, get_screen_area().bottom() + 48}); subdevice("gfxdecode")->set_info(gfx_pentagon); diff --git a/src/mame/sinclair/scorpion.cpp b/src/mame/sinclair/scorpion.cpp index 901f420beb1..9ca8a898f40 100644 --- a/src/mame/sinclair/scorpion.cpp +++ b/src/mame/sinclair/scorpion.cpp @@ -505,7 +505,7 @@ void scorpion_state::scorpion(machine_config &config) m_maincpu->set_m1_map(&scorpion_state::scorpion_switch); m_maincpu->set_io_map(&scorpion_state::scorpion_io); m_maincpu->set_vblank_int("screen", FUNC(scorpion_state::scorpion_interrupt)); - m_maincpu->nomreq_cb().set_nop(); + m_maincpu->nomreq_cb().remove(); subdevice("gfxdecode")->set_info(gfx_scorpion); diff --git a/src/mame/sinclair/specpls3.cpp b/src/mame/sinclair/specpls3.cpp index 2a0a062a0ca..f83bcc196d8 100644 --- a/src/mame/sinclair/specpls3.cpp +++ b/src/mame/sinclair/specpls3.cpp @@ -409,7 +409,7 @@ void specpls3_state::spectrum_plus2(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &specpls3_state::plus3_mem); m_maincpu->set_addrmap(AS_IO, &specpls3_state::plus3_io); - m_maincpu->nomreq_cb().set_nop(); + m_maincpu->nomreq_cb().remove(); subdevice("gfxdecode")->set_info(specpls3);