From 3f9d74d78e8209af8c20a2efc89f3cf87d95ab21 Mon Sep 17 00:00:00 2001 From: Dirk Best Date: Mon, 2 Apr 2018 11:53:13 +0200 Subject: lockon: Use ADC0808 device --- src/mame/drivers/lockon.cpp | 26 +++++++------------------- src/mame/includes/lockon.h | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/mame/drivers/lockon.cpp b/src/mame/drivers/lockon.cpp index 17af04ba09a..598f0847375 100644 --- a/src/mame/drivers/lockon.cpp +++ b/src/mame/drivers/lockon.cpp @@ -16,6 +16,7 @@ #include "cpu/nec/nec.h" #include "cpu/z80/z80.h" +#include "machine/adc0808.h" #include "sound/2203intf.h" #include "sound/flt_vol.h" #include "speaker.h" @@ -200,7 +201,7 @@ void lockon_state::sound_prg(address_map &map) map.unmap_value_high(); map(0x0000, 0x6fff).rom(); map(0x7000, 0x7000).w(this, FUNC(lockon_state::sound_vol)); - map(0x7400, 0x7403).r(this, FUNC(lockon_state::adc_r)).nopw(); + map(0x7400, 0x7407).rw("adc", FUNC(adc0808_device::data_r), FUNC(adc0808_device::address_offset_start_w)); map(0x7800, 0x7fff).mirror(0x8000).ram(); } @@ -331,24 +332,6 @@ static INPUT_PORTS_START( lockone ) INPUT_PORTS_END -/************************************* - * - * M58990P ADC - * - *************************************/ - -READ8_MEMBER(lockon_state::adc_r) -{ - switch (offset) - { - case 0: return ioport("ADC_BANK")->read(); - case 1: return ioport("ADC_PITCH")->read(); - case 2: return ioport("ADC_MISSILE")->read(); - case 3: return ioport("ADC_HOVER")->read(); - default: return 0; - } -} - /************************************* * * Graphics definitions @@ -504,6 +487,11 @@ MACHINE_CONFIG_START(lockon_state::lockon) MCFG_WATCHDOG_TIME_INIT(PERIOD_OF_555_ASTABLE(10000, 4700, 10000e-12) * 4096) MCFG_QUANTUM_TIME(attotime::from_hz(600)) + MCFG_DEVICE_ADD("adc", M58990P, 1000000) // unknown clock (needs to be faster than 640khz for the wait loop) + MCFG_ADC0808_IN0_CB(IOPORT("ADC_BANK")) + MCFG_ADC0808_IN1_CB(IOPORT("ADC_PITCH")) + MCFG_ADC0808_IN2_CB(IOPORT("ADC_MISSILE")) + MCFG_ADC0808_IN3_CB(IOPORT("ADC_HOVER")) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK) diff --git a/src/mame/includes/lockon.h b/src/mame/includes/lockon.h index 16f93ebcbf4..a016410984e 100644 --- a/src/mame/includes/lockon.h +++ b/src/mame/includes/lockon.h @@ -46,6 +46,14 @@ public: m_screen(*this, "screen"), m_palette(*this, "palette") { } + void lockon(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: /* memory pointers */ required_shared_ptr m_char_ram; required_shared_ptr m_hud_ram; @@ -120,25 +128,20 @@ public: DECLARE_WRITE16_MEMBER(main_z80_w); DECLARE_WRITE16_MEMBER(inten_w); DECLARE_WRITE16_MEMBER(emres_w); - DECLARE_READ8_MEMBER(adc_r); DECLARE_WRITE8_MEMBER(sound_vol); DECLARE_WRITE8_MEMBER(ym2203_out_b); TILE_GET_INFO_MEMBER(get_lockon_tile_info); - virtual void machine_start() override; - virtual void machine_reset() override; - virtual void video_start() override; DECLARE_PALETTE_INIT(lockon); uint32_t screen_update_lockon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_lockon); TIMER_CALLBACK_MEMBER(cursor_callback); TIMER_CALLBACK_MEMBER(bufend_callback); - void scene_draw( ); - void ground_draw( ); - void objects_draw( ); + void scene_draw(); + void ground_draw(); + void objects_draw(); void rotate_draw( bitmap_ind16 &bitmap, const rectangle &cliprect ); void hud_draw( bitmap_ind16 &bitmap, const rectangle &cliprect ); DECLARE_WRITE_LINE_MEMBER(ym2203_irq); - void lockon(machine_config &config); void ground_v30(address_map &map); void main_v30(address_map &map); void object_v30(address_map &map); -- cgit v1.2.3