lockon: Use ADC0808 device

This commit is contained in:
Dirk Best 2018-04-02 11:53:13 +02:00
parent 99d90963c8
commit 3f9d74d78e
2 changed files with 18 additions and 27 deletions

View File

@ -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)

View File

@ -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<uint16_t> m_char_ram;
required_shared_ptr<uint16_t> 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);