diff options
author | wilbertpol <wilbertpol@users.noreply.github.com> | 2018-05-20 19:27:20 +0200 |
---|---|---|
committer | R. Belmont <rb6502@users.noreply.github.com> | 2018-05-20 13:27:20 -0400 |
commit | 2beba4ce73fad917c7159a39939bace54f76494b (patch) | |
tree | e9d33c059bc5045f13d0c1748f0a044650370b8d /src/mame/drivers/smsmcorp.cpp | |
parent | acf93837ac21b2b0bb003d1649b893200c269812 (diff) |
Replace set_led_value and set_lamp_value with output_finders. [Wilbe… (#3592)
* Replace set_led_value and set_lamp_value with output_finders. [Wilbert Pol]
* segaufo: keep the 2 bit lamp outputs
Diffstat (limited to 'src/mame/drivers/smsmcorp.cpp')
-rw-r--r-- | src/mame/drivers/smsmcorp.cpp | 51 |
1 files changed, 29 insertions, 22 deletions
diff --git a/src/mame/drivers/smsmcorp.cpp b/src/mame/drivers/smsmcorp.cpp index ade4e98837e..b3d81843332 100644 --- a/src/mame/drivers/smsmcorp.cpp +++ b/src/mame/drivers/smsmcorp.cpp @@ -227,15 +227,13 @@ U145 1Brown PAL14H4CN class smsmfg_state : public driver_device { public: - smsmfg_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + smsmfg_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), - m_screen(*this, "screen") { } + m_screen(*this, "screen"), + m_lamp(*this, "lamp%u", 0U) + { } - uint8_t m_communication_port[4]; - uint8_t m_communication_port_status; - bitmap_ind16 m_bitmap; - uint8_t m_vid_regs[7]; DECLARE_WRITE8_MEMBER(bankswitch_w); DECLARE_READ8_MEMBER(link_r); DECLARE_WRITE8_MEMBER(link_w); @@ -246,18 +244,26 @@ public: DECLARE_READ8_MEMBER(ppi0_c_r); DECLARE_WRITE8_MEMBER(ppi0_a_w); DECLARE_WRITE8_MEMBER(ppi0_b_w); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; DECLARE_MACHINE_START(sureshot); uint32_t screen_update_sms(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - required_device<cpu_device> m_maincpu; - required_device<screen_device> m_screen; void sureshot(machine_config &config); void sms(machine_config &config); void sms_map(address_map &map); void sub_map(address_map &map); void sureshot_map(address_map &map); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + + uint8_t m_communication_port[4]; + uint8_t m_communication_port_status; + bitmap_ind16 m_bitmap; + uint8_t m_vid_regs[7]; + required_device<cpu_device> m_maincpu; + required_device<screen_device> m_screen; + output_finder<10> m_lamp; }; @@ -409,20 +415,20 @@ READ8_MEMBER(smsmfg_state::ppi0_c_r) WRITE8_MEMBER(smsmfg_state::ppi0_a_w) { //popmessage("Lamps: %d %d %d %d %d %d %d", BIT(data,7), BIT(data,6), BIT(data,5), BIT(data,4), BIT(data,3), BIT(data,2), BIT(data,1) ); - output().set_lamp_value(0, !BIT(data,7)); /* Display Light 1 */ - output().set_lamp_value(1, !BIT(data,6)); /* Display Light 2 */ - output().set_lamp_value(2, !BIT(data,5)); /* Display Light 3 */ - output().set_lamp_value(3, !BIT(data,4)); /* Display Light 4 */ - output().set_lamp_value(4, !BIT(data,3)); /* Display Light 5 */ - output().set_lamp_value(5, !BIT(data,2)); /* Bet Light */ - output().set_lamp_value(6, !BIT(data,1)); /* Deal Light */ - output().set_lamp_value(7, !BIT(data,0)); /* Draw Light */ + m_lamp[0] = BIT(~data, 7); /* Display Light 1 */ + m_lamp[1] = BIT(~data, 6); /* Display Light 2 */ + m_lamp[2] = BIT(~data, 5); /* Display Light 3 */ + m_lamp[3] = BIT(~data, 4); /* Display Light 4 */ + m_lamp[4] = BIT(~data, 3); /* Display Light 5 */ + m_lamp[5] = BIT(~data, 2); /* Bet Light */ + m_lamp[6] = BIT(~data, 1); /* Deal Light */ + m_lamp[7] = BIT(~data, 0); /* Draw Light */ } WRITE8_MEMBER(smsmfg_state::ppi0_b_w) { - output().set_lamp_value(8, !BIT(data,7)); /* Stand Light */ - output().set_lamp_value(9, !BIT(data,6)); /* Cancel Light */ + m_lamp[8] = BIT(~data, 7); /* Stand Light */ + m_lamp[9] = BIT(~data, 6); /* Cancel Light */ machine().bookkeeping().coin_counter_w(0, BIT(data,1)); machine().bookkeeping().coin_lockout_w(0, BIT(data,5)); @@ -524,6 +530,7 @@ void smsmfg_state::sub_map(address_map &map) void smsmfg_state::machine_start() { + m_lamp.resolve(); membank("bank1")->configure_entries(0, 16, memregion("questions")->base(), 0x4000); save_item(NAME(m_communication_port_status)); |