diff --git a/src/mame/drivers/mcr3.cpp b/src/mame/drivers/mcr3.cpp index 1c3f5fdcb41..ba1aba9366a 100644 --- a/src/mame/drivers/mcr3.cpp +++ b/src/mame/drivers/mcr3.cpp @@ -439,14 +439,11 @@ WRITE8_MEMBER(mcr3_state::spyhunt_op4_w) } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp0_w) { output().set_value("lamp0", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp1_w) { output().set_value("lamp1", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp2_w) { output().set_value("lamp2", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp3_w) { output().set_value("lamp3", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp4_w) { output().set_value("lamp4", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp5_w) { output().set_value("lamp5", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp6_w) { output().set_value("lamp6", state); } -WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp7_w) { output().set_value("lamp7", state); } +template +WRITE_LINE_MEMBER(mcr3_state::spyhunt_lamp_w) +{ + m_spyhunt_lamp[n] = state; +} @@ -1197,14 +1194,14 @@ static MACHINE_CONFIG_DERIVED( mcrsc_csd, mcrscroll ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) MCFG_DEVICE_ADD("lamplatch", CD4099, 0) // U1 on Lamp Driver Board - MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp0_w)) - MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp1_w)) - MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp2_w)) - MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp3_w)) - MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp4_w)) - MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp5_w)) - MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp6_w)) - MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp7_w)) + MCFG_ADDRESSABLE_LATCH_Q0_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<0>)) + MCFG_ADDRESSABLE_LATCH_Q1_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<1>)) + MCFG_ADDRESSABLE_LATCH_Q2_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<2>)) + MCFG_ADDRESSABLE_LATCH_Q3_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<3>)) + MCFG_ADDRESSABLE_LATCH_Q4_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<4>)) + MCFG_ADDRESSABLE_LATCH_Q5_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<5>)) + MCFG_ADDRESSABLE_LATCH_Q6_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<6>)) + MCFG_ADDRESSABLE_LATCH_Q7_OUT_CB(WRITELINE(mcr3_state, spyhunt_lamp_w<7>)) MACHINE_CONFIG_END @@ -1642,6 +1639,8 @@ DRIVER_INIT_MEMBER(mcr3_state,spyhunt) machine().device("ssio")->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr3_state::spyhunt_ip2_r),this)); machine().device("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr3_state::spyhunt_op4_w),this)); + m_spyhunt_lamp.resolve(); + m_spyhunt_sprite_color_mask = 0x00; m_spyhunt_scroll_offset = 16; } @@ -1664,6 +1663,8 @@ DRIVER_INIT_MEMBER(mcr3_state,turbotag) machine().device("ssio")->set_custom_input(2, 0xff, read8_delegate(FUNC(mcr3_state::turbotag_ip2_r),this)); machine().device("ssio")->set_custom_output(4, 0xff, write8_delegate(FUNC(mcr3_state::spyhunt_op4_w),this)); + m_spyhunt_lamp.resolve(); + m_spyhunt_sprite_color_mask = 0x00; m_spyhunt_scroll_offset = 88; diff --git a/src/mame/includes/mcr3.h b/src/mame/includes/mcr3.h index 64465be848a..31893abb3a2 100644 --- a/src/mame/includes/mcr3.h +++ b/src/mame/includes/mcr3.h @@ -18,12 +18,14 @@ public: m_spyhunt_alpharam(*this, "spyhunt_alpha"), m_maxrpm_adc(*this, "adc"), m_lamplatch(*this, "lamplatch"), + m_spyhunt_lamp(*this, "lamp%u", 0U), m_screen(*this, "screen") { } optional_shared_ptr m_spyhunt_alpharam; optional_device m_maxrpm_adc; optional_device m_lamplatch; + output_finder<8> m_spyhunt_lamp; required_device m_screen; uint8_t m_input_mux; @@ -63,14 +65,7 @@ public: DECLARE_READ8_MEMBER(spyhunt_ip1_r); DECLARE_READ8_MEMBER(spyhunt_ip2_r); DECLARE_WRITE8_MEMBER(spyhunt_op4_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp0_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp1_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp2_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp3_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp4_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp5_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp6_w); - DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp7_w); + template DECLARE_WRITE_LINE_MEMBER(spyhunt_lamp_w); DECLARE_READ8_MEMBER(turbotag_ip2_r); DECLARE_READ8_MEMBER(turbotag_kludge_r); DECLARE_DRIVER_INIT(crater);