summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/smsmcorp.cpp
diff options
context:
space:
mode:
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
commit2beba4ce73fad917c7159a39939bace54f76494b (patch)
treee9d33c059bc5045f13d0c1748f0a044650370b8d /src/mame/drivers/smsmcorp.cpp
parentacf93837ac21b2b0bb003d1649b893200c269812 (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.cpp51
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));