diff options
Diffstat (limited to 'src/mame/drivers/bwidow.cpp')
-rw-r--r-- | src/mame/drivers/bwidow.cpp | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/src/mame/drivers/bwidow.cpp b/src/mame/drivers/bwidow.cpp index eb41b77ea1d..c71167bfae6 100644 --- a/src/mame/drivers/bwidow.cpp +++ b/src/mame/drivers/bwidow.cpp @@ -225,7 +225,6 @@ #include "machine/watchdog.h" #include "video/vector.h" #include "video/avgdvg.h" -#include "machine/atari_vg.h" #include "sound/pokey.h" #include "sound/discrete.h" @@ -359,6 +358,36 @@ WRITE8_MEMBER(bwidow_state::spacduel_coin_counter_w) /************************************* * + * High score EAROM + * + *************************************/ + +READ8_MEMBER(bwidow_state::earom_read) +{ + return m_earom->data(); +} + +WRITE8_MEMBER(bwidow_state::earom_write) +{ + m_earom->set_address(offset & 0x3f); + m_earom->set_data(data); +} + +WRITE8_MEMBER(bwidow_state::earom_control_w) +{ + // CK = DB0, C1 = /DB2, C2 = DB1, CS1 = DB3, /CS2 = GND + m_earom->set_control(BIT(data, 3), 1, !BIT(data, 2), BIT(data, 1)); + m_earom->set_clk(BIT(data, 0)); +} + +void bwidow_state::machine_reset() +{ + earom_control_w(machine().dummy_space(), 0, 0); +} + + +/************************************* + * * Interrupt ack * *************************************/ @@ -382,7 +411,7 @@ void bwidow_state::bwidow_map(address_map &map) map(0x2800, 0x5fff).rom(); map(0x6000, 0x67ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); map(0x6800, 0x6fff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); - map(0x7000, 0x7000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x7000, 0x7000).r(FUNC(bwidow_state::earom_read)); map(0x7800, 0x7800).portr("IN0"); map(0x8000, 0x8000).portr("IN3"); map(0x8800, 0x8800).portr("IN4"); @@ -390,8 +419,8 @@ void bwidow_state::bwidow_map(address_map &map) map(0x8840, 0x8840).w("avg", FUNC(avg_device::go_w)); map(0x8880, 0x8880).w("avg", FUNC(avg_device::reset_w)); map(0x88c0, 0x88c0).w(FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ - map(0x8900, 0x8900).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); - map(0x8940, 0x897f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x8900, 0x8900).w(FUNC(bwidow_state::earom_control_w)); + map(0x8940, 0x897f).w(FUNC(bwidow_state::earom_write)); map(0x8980, 0x89ed).nopw(); /* watchdog clear */ map(0x9000, 0xffff).rom(); } @@ -410,9 +439,9 @@ void bwidow_state::bwidowp_map(address_map &map) map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000); map(0x4800, 0x6fff).rom(); map(0x6000, 0x6000).w(FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ - map(0x8000, 0x803f).w("earom", FUNC(atari_vg_earom_device::write)); - map(0x8800, 0x8800).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); - map(0x9000, 0x9000).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x8000, 0x803f).w(FUNC(bwidow_state::earom_write)); + map(0x8800, 0x8800).w(FUNC(bwidow_state::earom_control_w)); + map(0x9000, 0x9000).r(FUNC(bwidow_state::earom_read)); map(0x9800, 0x9800).nopw(); /* ? written once at startup */ map(0xa000, 0xffff).rom(); } @@ -423,14 +452,14 @@ void bwidow_state::spacduel_map(address_map &map) map(0x0800, 0x0800).portr("IN0"); map(0x0900, 0x0907).r(FUNC(bwidow_state::spacduel_IN3_r)); /* IN1 */ map(0x0905, 0x0906).nopw(); /* ignore? */ - map(0x0a00, 0x0a00).r("earom", FUNC(atari_vg_earom_device::read)); + map(0x0a00, 0x0a00).r(FUNC(bwidow_state::earom_read)); map(0x0c00, 0x0c00).w(FUNC(bwidow_state::spacduel_coin_counter_w)); /* coin out */ map(0x0c80, 0x0c80).w("avg", FUNC(avg_device::go_w)); map(0x0d00, 0x0d00).nopw(); /* watchdog clear */ map(0x0d80, 0x0d80).w("avg", FUNC(avg_device::reset_w)); map(0x0e00, 0x0e00).w(FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */ - map(0x0e80, 0x0e80).w("earom", FUNC(atari_vg_earom_device::ctrl_w)); - map(0x0f00, 0x0f3f).w("earom", FUNC(atari_vg_earom_device::write)); + map(0x0e80, 0x0e80).w(FUNC(bwidow_state::earom_control_w)); + map(0x0f00, 0x0f3f).w(FUNC(bwidow_state::earom_write)); map(0x1000, 0x10ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)); map(0x1400, 0x14ff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)); map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000); @@ -741,7 +770,7 @@ MACHINE_CONFIG_START(bwidow_state::bwidow) MCFG_DEVICE_PROGRAM_MAP(bwidow_map) MCFG_DEVICE_PERIODIC_INT_DRIVER(bwidow_state, irq0_line_assert, CLOCK_3KHZ / 12) - MCFG_ATARIVGEAROM_ADD("earom") + MCFG_DEVICE_ADD("earom", ER2055) /* video hardware */ MCFG_VECTOR_ADD("vector") |