summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/sfbonus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/sfbonus.cpp')
-rw-r--r--src/mame/drivers/sfbonus.cpp92
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;