summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/missile.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/missile.cpp')
-rw-r--r--src/mame/drivers/missile.cpp96
1 files changed, 51 insertions, 45 deletions
diff --git a/src/mame/drivers/missile.cpp b/src/mame/drivers/missile.cpp
index 0d0ea8e9cbe..210f31039bd 100644
--- a/src/mame/drivers/missile.cpp
+++ b/src/mame/drivers/missile.cpp
@@ -361,47 +361,24 @@ class missile_state : public driver_device
{
public:
missile_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this,"maincpu"),
- m_videoram(*this, "videoram"),
- m_watchdog(*this, "watchdog"),
- m_pokey(*this, "pokey"),
- m_in0(*this, "IN0"),
- m_in1(*this, "IN1"),
- m_r10(*this, "R10"),
- m_r8(*this, "R8"),
- m_track0_x(*this, "TRACK0_X"),
- m_track0_y(*this, "TRACK0_Y"),
- m_track1_x(*this, "TRACK1_X"),
- m_track1_y(*this, "TRACK1_Y"),
- m_screen(*this, "screen"),
- m_palette(*this, "palette")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this,"maincpu")
+ , m_videoram(*this, "videoram")
+ , m_watchdog(*this, "watchdog")
+ , m_pokey(*this, "pokey")
+ , m_in0(*this, "IN0")
+ , m_in1(*this, "IN1")
+ , m_r10(*this, "R10")
+ , m_r8(*this, "R8")
+ , m_track0_x(*this, "TRACK0_X")
+ , m_track0_y(*this, "TRACK0_Y")
+ , m_track1_x(*this, "TRACK1_X")
+ , m_track1_y(*this, "TRACK1_Y")
+ , m_screen(*this, "screen")
+ , m_palette(*this, "palette")
+ , m_led(*this, "led%u", 0U)
{ }
- required_device<m6502_device> m_maincpu;
- required_shared_ptr<uint8_t> m_videoram;
- required_device<watchdog_timer_device> m_watchdog;
- optional_device<pokey_device> m_pokey;
- required_ioport m_in0;
- required_ioport m_in1;
- required_ioport m_r10;
- required_ioport m_r8;
- required_ioport m_track0_x;
- required_ioport m_track0_y;
- required_ioport m_track1_x;
- required_ioport m_track1_y;
- required_device<screen_device> m_screen;
- required_device<palette_device> m_palette;
-
- const uint8_t *m_mainrom;
- const uint8_t *m_writeprom;
- emu_timer *m_irq_timer;
- emu_timer *m_cpu_timer;
- uint8_t m_irq_state;
- uint8_t m_ctrld;
- uint8_t m_flipscreen;
- uint64_t m_madsel_lastcycles;
-
DECLARE_WRITE8_MEMBER(missile_w);
DECLARE_READ8_MEMBER(missile_r);
DECLARE_WRITE8_MEMBER(bootleg_w);
@@ -409,8 +386,6 @@ public:
DECLARE_CUSTOM_INPUT_MEMBER(get_vblank);
void init_missilem();
void init_suprmatk();
- virtual void machine_start() override;
- virtual void machine_reset() override;
uint32_t screen_update_missile(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
inline int scanline_to_v(int scanline);
@@ -428,6 +403,35 @@ public:
void missilea(machine_config &config);
void bootleg_main_map(address_map &map);
void main_map(address_map &map);
+
+protected:
+ virtual void machine_start() override;
+ virtual void machine_reset() override;
+
+ required_device<m6502_device> m_maincpu;
+ required_shared_ptr<uint8_t> m_videoram;
+ required_device<watchdog_timer_device> m_watchdog;
+ optional_device<pokey_device> m_pokey;
+ required_ioport m_in0;
+ required_ioport m_in1;
+ required_ioport m_r10;
+ required_ioport m_r8;
+ required_ioport m_track0_x;
+ required_ioport m_track0_y;
+ required_ioport m_track1_x;
+ required_ioport m_track1_y;
+ required_device<screen_device> m_screen;
+ required_device<palette_device> m_palette;
+ output_finder<2> m_led;
+
+ const uint8_t *m_mainrom;
+ const uint8_t *m_writeprom;
+ emu_timer *m_irq_timer;
+ emu_timer *m_cpu_timer;
+ uint8_t m_irq_state;
+ uint8_t m_ctrld;
+ uint8_t m_flipscreen;
+ uint64_t m_madsel_lastcycles;
};
@@ -529,6 +533,8 @@ TIMER_CALLBACK_MEMBER(missile_state::adjust_cpu_speed)
void missile_state::machine_start()
{
+ m_led.resolve();
+
/* initialize globals */
m_mainrom = memregion("maincpu")->base();
m_writeprom = memregion("proms")->base();
@@ -742,8 +748,8 @@ WRITE8_MEMBER(missile_state::missile_w)
machine().bookkeeping().coin_counter_w(0, data & 0x20);
machine().bookkeeping().coin_counter_w(1, data & 0x10);
machine().bookkeeping().coin_counter_w(2, data & 0x08);
- output().set_led_value(1, ~data & 0x04);
- output().set_led_value(0, ~data & 0x02);
+ m_led[1] = BIT(~data, 2);
+ m_led[0] = BIT(~data, 1);
m_ctrld = data & 1;
}
@@ -855,8 +861,8 @@ WRITE8_MEMBER(missile_state::bootleg_w)
machine().bookkeeping().coin_counter_w(0, data & 0x20);
machine().bookkeeping().coin_counter_w(1, data & 0x10);
machine().bookkeeping().coin_counter_w(2, data & 0x08);
- output().set_led_value(1, ~data & 0x04);
- output().set_led_value(0, ~data & 0x02);
+ m_led[1] = BIT(~data, 2);
+ m_led[0] = BIT(~data, 1);
m_ctrld = data & 1;
}