diff options
Diffstat (limited to 'src/mame/drivers/sfbonus.cpp')
-rw-r--r-- | src/mame/drivers/sfbonus.cpp | 92 |
1 files changed, 48 insertions, 44 deletions
diff --git a/src/mame/drivers/sfbonus.cpp b/src/mame/drivers/sfbonus.cpp index 65ac67f2b56..6ee05fbe6e3 100644 --- a/src/mame/drivers/sfbonus.cpp +++ b/src/mame/drivers/sfbonus.cpp @@ -286,8 +286,8 @@ MH86171 Color Palette RAMDAC class sfbonus_state : public driver_device { public: - sfbonus_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag), + sfbonus_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -297,34 +297,9 @@ public: m_2801_regs(*this, "2801_regs"), m_2c01_regs(*this, "2c01_regs"), m_3000_regs(*this, "3000_regs"), - m_3800_regs(*this, "3800_regs") - { - } - - required_device<cpu_device> m_maincpu; - required_device<gfxdecode_device> m_gfxdecode; - required_device<palette_device> m_palette; - - required_shared_ptr<uint8_t> m_nvram; - required_shared_ptr<uint8_t> m_1800_regs; - required_shared_ptr<uint8_t> m_vregs; - required_shared_ptr<uint8_t> m_2801_regs; - required_shared_ptr<uint8_t> m_2c01_regs; - required_shared_ptr<uint8_t> m_3000_regs; - required_shared_ptr<uint8_t> m_3800_regs; - - std::unique_ptr<bitmap_ind16> m_temp_reel_bitmap; - tilemap_t *m_tilemap; - tilemap_t *m_reel_tilemap; - tilemap_t *m_reel2_tilemap; - tilemap_t *m_reel3_tilemap; - tilemap_t *m_reel4_tilemap; - std::unique_ptr<uint8_t[]> m_tilemap_ram; - std::unique_ptr<uint8_t[]> m_reel_ram; - std::unique_ptr<uint8_t[]> m_reel2_ram; - std::unique_ptr<uint8_t[]> m_reel3_ram; - std::unique_ptr<uint8_t[]> m_reel4_ram; - std::unique_ptr<uint8_t[]> m_videoram; + m_3800_regs(*this, "3800_regs"), + m_lamp(*this, "lamp%u", 0U) + { } DECLARE_WRITE8_MEMBER(sfbonus_videoram_w); DECLARE_WRITE8_MEMBER(sfbonus_bank_w); @@ -467,14 +442,43 @@ public: TILE_GET_INFO_MEMBER(get_sfbonus_reel2_tile_info); TILE_GET_INFO_MEMBER(get_sfbonus_reel3_tile_info); TILE_GET_INFO_MEMBER(get_sfbonus_reel4_tile_info); - virtual void machine_reset() override; - virtual void video_start() override; void draw_reel_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int category); uint32_t screen_update_sfbonus(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void sfbonus(machine_config &config); void ramdac_map(address_map &map); void sfbonus_io(address_map &map); void sfbonus_map(address_map &map); + +protected: + virtual void machine_start() override { m_lamp.resolve(); } + virtual void machine_reset() override; + virtual void video_start() override; + + required_device<cpu_device> m_maincpu; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + + required_shared_ptr<uint8_t> m_nvram; + required_shared_ptr<uint8_t> m_1800_regs; + required_shared_ptr<uint8_t> m_vregs; + required_shared_ptr<uint8_t> m_2801_regs; + required_shared_ptr<uint8_t> m_2c01_regs; + required_shared_ptr<uint8_t> m_3000_regs; + required_shared_ptr<uint8_t> m_3800_regs; + + std::unique_ptr<bitmap_ind16> m_temp_reel_bitmap; + tilemap_t *m_tilemap; + tilemap_t *m_reel_tilemap; + tilemap_t *m_reel2_tilemap; + tilemap_t *m_reel3_tilemap; + tilemap_t *m_reel4_tilemap; + std::unique_ptr<uint8_t[]> m_tilemap_ram; + std::unique_ptr<uint8_t[]> m_reel_ram; + std::unique_ptr<uint8_t[]> m_reel2_ram; + std::unique_ptr<uint8_t[]> m_reel3_ram; + std::unique_ptr<uint8_t[]> m_reel4_ram; + std::unique_ptr<uint8_t[]> m_videoram; + output_finder<6> m_lamp; }; @@ -1189,22 +1193,22 @@ uint32_t sfbonus_state::screen_update_sfbonus(screen_device &screen, bitmap_ind1 || (ipt == INPUT_PORTS_NAME(amcoe2_poker))) { // based on pirpok2 - output().set_lamp_value(0, (m_1800_regs[6] & 0x1) >> 0); - output().set_lamp_value(1, (m_1800_regs[6] & 0x4) >> 2); - output().set_lamp_value(2, (m_1800_regs[5] & 0x4) >> 2); - output().set_lamp_value(3, (m_1800_regs[5] & 0x1) >> 0); - output().set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2); - output().set_lamp_value(5, (m_1800_regs[4] & 0x1) >> 0); + m_lamp[0] = BIT(m_1800_regs[6], 0); + m_lamp[1] = BIT(m_1800_regs[6], 2); + m_lamp[2] = BIT(m_1800_regs[5], 2); + m_lamp[3] = BIT(m_1800_regs[5], 0); + m_lamp[4] = BIT(m_1800_regs[4], 2); + m_lamp[5] = BIT(m_1800_regs[4], 0); } else if ((ipt == INPUT_PORTS_NAME(amcoe1_reels3)) || (ipt == INPUT_PORTS_NAME(amcoe1_reels4)) || (ipt == INPUT_PORTS_NAME(amcoe1_poker))) { - output().set_lamp_value(0, (m_1800_regs[0] & 0x2) >> 1); - output().set_lamp_value(1, (m_1800_regs[4] & 0x2) >> 1); - output().set_lamp_value(2, (m_1800_regs[3] & 0x2) >> 1); - output().set_lamp_value(3, (m_1800_regs[6] & 0x4) >> 2); - output().set_lamp_value(4, (m_1800_regs[4] & 0x4) >> 2); - output().set_lamp_value(5, (m_1800_regs[3] & 0x4) >> 2); + m_lamp[0] = BIT(m_1800_regs[0], 1); + m_lamp[1] = BIT(m_1800_regs[4], 1); + m_lamp[2] = BIT(m_1800_regs[3], 1); + m_lamp[3] = BIT(m_1800_regs[6], 2); + m_lamp[4] = BIT(m_1800_regs[4], 2); + m_lamp[5] = BIT(m_1800_regs[3], 2); } return 0; |