devcb: add remove function to unset a devcb

This commit is contained in:
hap 2025-04-14 15:48:35 +02:00
parent 64efa5635d
commit a389a3393e
7 changed files with 18 additions and 6 deletions

View File

@ -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<nop_creator>());
}
void remove()
{
set_used();
m_target.m_creators.clear();
}
private:
void set_used() { assert(!m_used); m_used = true; }

View File

@ -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");
}

View File

@ -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
}

View File

@ -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_device>("gfxdecode")->set_info(gfx_atm);

View File

@ -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_device>("gfxdecode")->set_info(gfx_pentagon);

View File

@ -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_device>("gfxdecode")->set_info(gfx_scorpion);

View File

@ -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_device>("gfxdecode")->set_info(specpls3);