mirror of
https://github.com/holub/mame
synced 2025-04-28 03:02:52 +03:00
roadriot: Add ADC0809 device (nw)
This commit is contained in:
parent
d88486fa8f
commit
08db73db57
@ -43,7 +43,6 @@ void atarig42_state::machine_start()
|
||||
{
|
||||
atarigen_state::machine_start();
|
||||
|
||||
save_item(NAME(m_analog_data));
|
||||
save_item(NAME(m_sloop_bank));
|
||||
save_item(NAME(m_sloop_next_bank));
|
||||
save_item(NAME(m_sloop_offset));
|
||||
@ -65,25 +64,22 @@ void atarig42_state::machine_reset()
|
||||
*
|
||||
*************************************/
|
||||
|
||||
READ16_MEMBER(atarig42_state::special_port2_r)
|
||||
WRITE8_MEMBER(atarig42_state::a2d_select_w)
|
||||
{
|
||||
int temp = ioport("IN2")->read();
|
||||
temp ^= 0x0008; /* A2D.EOC always high for now */
|
||||
return temp;
|
||||
if (m_adc.found())
|
||||
m_adc->address_offset_start_w(space, offset, 0);
|
||||
}
|
||||
|
||||
|
||||
WRITE16_MEMBER(atarig42_state::a2d_select_w)
|
||||
READ8_MEMBER(atarig42_state::a2d_data_r)
|
||||
{
|
||||
static const char *const portnames[] = { "A2D0", "A2D1" };
|
||||
if (!m_adc.found())
|
||||
return 0xff;
|
||||
|
||||
m_analog_data = ioport(portnames[offset != 0])->read();
|
||||
}
|
||||
|
||||
|
||||
READ16_MEMBER(atarig42_state::a2d_data_r)
|
||||
{
|
||||
return m_analog_data << 8;
|
||||
uint8_t result = m_adc->data_r(space, 0);
|
||||
if (!machine().side_effects_disabled())
|
||||
m_adc->address_offset_start_w(space, offset, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@ -325,9 +321,9 @@ void atarig42_state::main_map(address_map &map)
|
||||
map(0x000000, 0x080001).rom();
|
||||
map(0xe00000, 0xe00001).portr("IN0");
|
||||
map(0xe00002, 0xe00003).portr("IN1");
|
||||
map(0xe00010, 0xe00011).r(this, FUNC(atarig42_state::special_port2_r));
|
||||
map(0xe00010, 0xe00011).portr("IN2");
|
||||
map(0xe00012, 0xe00013).portr("jsa:JSAIII");
|
||||
map(0xe00020, 0xe00027).rw(this, FUNC(atarig42_state::a2d_data_r), FUNC(atarig42_state::a2d_select_w));
|
||||
map(0xe00020, 0xe0002f).rw(this, FUNC(atarig42_state::a2d_data_r), FUNC(atarig42_state::a2d_select_w)).umask16(0xff00);
|
||||
map(0xe00031, 0xe00031).r(m_jsa, FUNC(atari_jsa_iii_device::main_response_r));
|
||||
map(0xe00041, 0xe00041).w(m_jsa, FUNC(atari_jsa_iii_device::main_command_w));
|
||||
map(0xe00050, 0xe00051).w(this, FUNC(atarig42_state::io_latch_w));
|
||||
@ -367,7 +363,8 @@ static INPUT_PORTS_START( roadriot )
|
||||
PORT_BIT( 0xffff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("IN2") /* e00010 */
|
||||
PORT_BIT( 0x000f, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0007, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
PORT_BIT( 0x0008, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("adc", adc0808_device, eoc_r)
|
||||
PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_ATARI_JSA_SOUND_TO_MAIN_READY("jsa")
|
||||
PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_ATARI_JSA_MAIN_TO_SOUND_READY("jsa")
|
||||
PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
|
||||
@ -424,12 +421,6 @@ static INPUT_PORTS_START( guardian )
|
||||
PORT_SERVICE( 0x0040, IP_ACTIVE_LOW )
|
||||
PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_VBLANK("screen")
|
||||
PORT_BIT( 0xff00, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("A2D0") /* analog 0 */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
|
||||
PORT_START("A2D1") /* analog 1 */
|
||||
PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
@ -529,6 +520,10 @@ MACHINE_CONFIG_START(atarig42_state::atarig42)
|
||||
MCFG_CPU_ADD("maincpu", M68000, ATARI_CLOCK_14MHz)
|
||||
MCFG_CPU_PROGRAM_MAP(main_map)
|
||||
|
||||
MCFG_DEVICE_ADD("adc", ADC0809, ATARI_CLOCK_14MHz / 16)
|
||||
MCFG_ADC0808_IN0_CB(IOPORT("A2D0"))
|
||||
MCFG_ADC0808_IN1_CB(IOPORT("A2D1"))
|
||||
|
||||
MCFG_EEPROM_2816_ADD("eeprom")
|
||||
MCFG_EEPROM_28XX_LOCK_AFTER_WRITE(true)
|
||||
|
||||
@ -575,6 +570,8 @@ MACHINE_CONFIG_START(atarig42_0x400_state::atarig42_0x400)
|
||||
|
||||
/* ASIC65 */
|
||||
MCFG_ASIC65_ADD("asic65", ASIC65_GUARDIANS)
|
||||
|
||||
MCFG_DEVICE_REMOVE("adc")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
#include "machine/atarigen.h"
|
||||
#include "video/atarirle.h"
|
||||
#include "cpu/m68000/m68000.h"
|
||||
#include "machine/adc0808.h"
|
||||
#include "machine/asic65.h"
|
||||
|
||||
class atarig42_state : public atarigen_state
|
||||
@ -26,6 +27,7 @@ public:
|
||||
m_alpha_tilemap(*this, "alpha"),
|
||||
m_rle(*this, "rle"),
|
||||
m_asic65(*this, "asic65"),
|
||||
m_adc(*this, "adc"),
|
||||
m_mo_command(*this, "mo_command")
|
||||
{ }
|
||||
|
||||
@ -34,9 +36,8 @@ protected:
|
||||
virtual void machine_reset() override;
|
||||
virtual void update_interrupts() override;
|
||||
virtual void scanline_update(screen_device &screen, int scanline) override;
|
||||
DECLARE_READ16_MEMBER(special_port2_r);
|
||||
DECLARE_WRITE16_MEMBER(a2d_select_w);
|
||||
DECLARE_READ16_MEMBER(a2d_data_r);
|
||||
DECLARE_WRITE8_MEMBER(a2d_select_w);
|
||||
DECLARE_READ8_MEMBER(a2d_data_r);
|
||||
DECLARE_WRITE16_MEMBER(io_latch_w);
|
||||
DECLARE_WRITE16_MEMBER(mo_command_w);
|
||||
TILE_GET_INFO_MEMBER(get_alpha_tile_info);
|
||||
@ -53,6 +54,7 @@ protected:
|
||||
required_device<tilemap_device> m_alpha_tilemap;
|
||||
required_device<atari_rle_objects_device> m_rle;
|
||||
required_device<asic65_device> m_asic65;
|
||||
optional_device<adc0808_device> m_adc;
|
||||
|
||||
uint16_t m_playfield_base;
|
||||
|
||||
@ -62,7 +64,6 @@ protected:
|
||||
uint16_t m_playfield_xscroll;
|
||||
uint16_t m_playfield_yscroll;
|
||||
|
||||
uint8_t m_analog_data;
|
||||
required_shared_ptr<uint16_t> m_mo_command;
|
||||
|
||||
int m_sloop_bank;
|
||||
|
Loading…
Reference in New Issue
Block a user