summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ddenlovr.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/ddenlovr.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/ddenlovr.cpp')
-rw-r--r--src/mame/drivers/ddenlovr.cpp139
1 files changed, 72 insertions, 67 deletions
diff --git a/src/mame/drivers/ddenlovr.cpp b/src/mame/drivers/ddenlovr.cpp
index a161e905b00..a3022d7498d 100644
--- a/src/mame/drivers/ddenlovr.cpp
+++ b/src/mame/drivers/ddenlovr.cpp
@@ -168,73 +168,15 @@ class ddenlovr_state : public dynax_state
{
public:
ddenlovr_state(const machine_config &mconfig, device_type type, const char *tag)
- : dynax_state(mconfig, type, tag),
- m_protection1(*this, "protection1"),
- m_protection2(*this, "protection2"),
- m_soundlatch(*this, "soundlatch") { }
+ : dynax_state(mconfig, type, tag)
+ , m_protection1(*this, "protection1")
+ , m_protection2(*this, "protection2")
+ , m_soundlatch(*this, "soundlatch")
+ , m_led(*this, "led%u", 0U)
+ { }
void set_blitter_irq(write_line_delegate &&handler) { m_blitter_irq_handler = std::move(handler); }
- write_line_delegate m_blitter_irq_handler;
-
- optional_shared_ptr<uint16_t> m_protection1;
- optional_shared_ptr<uint16_t> m_protection2;
-
- optional_device<generic_latch_8_device> m_soundlatch;
-
- std::unique_ptr<uint8_t[]> m_ddenlovr_pixmap[8];
-
- /* blitter (TODO: merge with the dynax.h, where possible) */
- int m_extra_layers;
- int m_ddenlovr_dest_layer;
- int m_ddenlovr_blit_flip;
- int m_ddenlovr_blit_x;
- int m_ddenlovr_blit_y;
- int m_ddenlovr_blit_address;
- int m_ddenlovr_blit_pen;
- int m_ddenlovr_blit_pen_mode;
- int m_ddenlovr_blitter_irq_flag;
- int m_ddenlovr_blitter_irq_enable;
- int m_ddenlovr_rect_width;
- int m_ddenlovr_rect_height;
- int m_ddenlovr_clip_width;
- int m_ddenlovr_clip_height;
- int m_ddenlovr_line_length;
- int m_ddenlovr_clip_ctrl;
- int m_ddenlovr_clip_x;
- int m_ddenlovr_clip_y;
- int m_ddenlovr_scroll[8*2];
- int m_ddenlovr_priority;
- int m_ddenlovr_priority2;
- int m_ddenlovr_bgcolor;
- int m_ddenlovr_bgcolor2;
- int m_ddenlovr_layer_enable;
- int m_ddenlovr_layer_enable2;
- int m_ddenlovr_palette_base[8];
- int m_ddenlovr_palette_mask[8];
- int m_ddenlovr_transparency_pen[8];
- int m_ddenlovr_transparency_mask[8];
- int m_ddenlovr_blit_latch;
- int m_ddenlovr_blit_pen_mask; // not implemented
- int m_ddenlovr_blit_rom_bits; // usually 8, 16 in hanakanz
- const int *m_ddenlovr_blit_commands;
- int m_ddenlovr_blit_regs[2];
-
- /* ddenlovr misc (TODO: merge with dynax.h, where possible) */
- uint8_t m_palram[0x200];
- int m_okibank;
- uint8_t m_prot_val;
- uint16_t m_prot_16;
- uint16_t m_quiz365_protection[2];
-
- uint16_t m_mmpanic_leds; /* A led for each of the 9 buttons */
- uint8_t m_funkyfig_lockout;
- uint8_t m_romdata[2];
- int m_palette_index;
- uint8_t m_hginga_rombank;
- uint8_t m_mjflove_irq_cause;
- uint8_t m_daimyojn_palette_sel;
-
DECLARE_MACHINE_START(ddenlovr);
DECLARE_MACHINE_RESET(ddenlovr);
DECLARE_VIDEO_START(ddenlovr);
@@ -532,6 +474,67 @@ public:
void sryudens_map(address_map &map);
void sryudens_portmap(address_map &map);
void ultrchmp_map(address_map &map);
+
+protected:
+ write_line_delegate m_blitter_irq_handler;
+
+ optional_shared_ptr<uint16_t> m_protection1;
+ optional_shared_ptr<uint16_t> m_protection2;
+ optional_device<generic_latch_8_device> m_soundlatch;
+ output_finder<2> m_led;
+ std::unique_ptr<uint8_t[]> m_ddenlovr_pixmap[8];
+
+ /* blitter (TODO: merge with the dynax.h, where possible) */
+ int m_extra_layers;
+ int m_ddenlovr_dest_layer;
+ int m_ddenlovr_blit_flip;
+ int m_ddenlovr_blit_x;
+ int m_ddenlovr_blit_y;
+ int m_ddenlovr_blit_address;
+ int m_ddenlovr_blit_pen;
+ int m_ddenlovr_blit_pen_mode;
+ int m_ddenlovr_blitter_irq_flag;
+ int m_ddenlovr_blitter_irq_enable;
+ int m_ddenlovr_rect_width;
+ int m_ddenlovr_rect_height;
+ int m_ddenlovr_clip_width;
+ int m_ddenlovr_clip_height;
+ int m_ddenlovr_line_length;
+ int m_ddenlovr_clip_ctrl;
+ int m_ddenlovr_clip_x;
+ int m_ddenlovr_clip_y;
+ int m_ddenlovr_scroll[8*2];
+ int m_ddenlovr_priority;
+ int m_ddenlovr_priority2;
+ int m_ddenlovr_bgcolor;
+ int m_ddenlovr_bgcolor2;
+ int m_ddenlovr_layer_enable;
+ int m_ddenlovr_layer_enable2;
+ int m_ddenlovr_palette_base[8];
+ int m_ddenlovr_palette_mask[8];
+ int m_ddenlovr_transparency_pen[8];
+ int m_ddenlovr_transparency_mask[8];
+ int m_ddenlovr_blit_latch;
+ int m_ddenlovr_blit_pen_mask; // not implemented
+ int m_ddenlovr_blit_rom_bits; // usually 8, 16 in hanakanz
+ const int *m_ddenlovr_blit_commands;
+ int m_ddenlovr_blit_regs[2];
+
+ /* ddenlovr misc (TODO: merge with dynax.h, where possible) */
+ uint8_t m_palram[0x200];
+ int m_okibank;
+ uint8_t m_prot_val;
+ uint16_t m_prot_16;
+ uint16_t m_quiz365_protection[2];
+
+ uint16_t m_mmpanic_leds; /* A led for each of the 9 buttons */
+ uint8_t m_funkyfig_lockout;
+ uint8_t m_romdata[2];
+ int m_palette_index;
+ uint8_t m_hginga_rombank;
+ uint8_t m_mjflove_irq_cause;
+ uint8_t m_daimyojn_palette_sel;
+
};
VIDEO_START_MEMBER(ddenlovr_state,ddenlovr)
@@ -2386,7 +2389,7 @@ WRITE_LINE_MEMBER(ddenlovr_state::mmpanic_blitter_irq)
void ddenlovr_state::mmpanic_update_leds()
{
- output().set_led_value(0, m_mmpanic_leds);
+ m_led[0] = m_mmpanic_leds;
}
/* leds 1-8 */
@@ -2409,7 +2412,7 @@ WRITE8_MEMBER(ddenlovr_state::mmpanic_lockout_w)
{
machine().bookkeeping().coin_counter_w(0, (~data) & 0x01);
machine().bookkeeping().coin_lockout_w(0, (~data) & 0x02);
- output().set_led_value(1, (~data) & 0x04);
+ m_led[1] = BIT(~data, 2);
}
}
@@ -3896,7 +3899,7 @@ WRITE8_MEMBER(ddenlovr_state::mjgnight_coincounter_w)
{
m_prot_val = data;
- output().set_led_value(0, data & 0x01); // led? 1 in-game, 0 in service mode / while booting
+ m_led[0] = BIT(data, 0); // led? 1 in-game, 0 in service mode / while booting
machine().bookkeeping().coin_counter_w(0, data & 0x04); // coin-out
machine().bookkeeping().coin_counter_w(1, data & 0x08); // coin-in
@@ -9573,6 +9576,8 @@ INPUT_PORTS_END
MACHINE_START_MEMBER(ddenlovr_state,ddenlovr)
{
+ m_led.resolve();
+
save_item(NAME(m_input_sel));
save_item(NAME(m_dsw_sel));
save_item(NAME(m_keyb));