diff options
Diffstat (limited to 'src/mame/drivers/namcos1.cpp')
-rw-r--r-- | src/mame/drivers/namcos1.cpp | 117 |
1 files changed, 61 insertions, 56 deletions
diff --git a/src/mame/drivers/namcos1.cpp b/src/mame/drivers/namcos1.cpp index d4085dacc2a..2bb8847bde0 100644 --- a/src/mame/drivers/namcos1.cpp +++ b/src/mame/drivers/namcos1.cpp @@ -339,7 +339,6 @@ C - uses sub board with support for player 3 and 4 controls #include "includes/namcos1.h" #include "cpu/m6809/m6809.h" -#include "cpu/m6800/m6801.h" #include "machine/nvram.h" #include "sound/volt_reg.h" #include "sound/ym2151.h" @@ -394,61 +393,67 @@ WRITE8_MEMBER(namcos1_state::dac_gain_w) -ADDRESS_MAP_START(namcos1_state::main_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, main_r, main_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::sub_map) - AM_RANGE(0x0000, 0xffff) AM_DEVREADWRITE("c117", namco_c117_device, sub_r, sub_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::virtual_map) - AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(_3dcs_w) - AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write) - AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") - AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w) - AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") - AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0) - AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */ - AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800) - AM_RANGE(0x300000, 0x307fff) AM_RAM - AM_RANGE(0x400000, 0x7fffff) AM_ROM AM_REGION("user1", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos1_state::sound_map) - AM_RANGE(0x0000, 0x3fff) AM_ROMBANK("soundbank") /* Banked ROMs */ - AM_RANGE(0x4000, 0x4001) AM_DEVREADWRITE("ymsnd", ym2151_device, status_r, write) - AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */ - AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram") - AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(sound_bankswitch_w) /* ROM bank selector */ - AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w) - AM_RANGE(0xe000, 0xe000) AM_WRITE(audiocpu_irq_ack_w) - AM_RANGE(0xc000, 0xffff) AM_ROM AM_REGION("audiocpu", 0) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(namcos1_state::mcu_map) - AM_RANGE(0x0000, 0x001f) AM_DEVREADWRITE("mcu", hd63701_cpu_device, m6801_io_r, m6801_io_w) - AM_RANGE(0x0080, 0x00ff) AM_RAM /* built in RAM */ - AM_RANGE(0x1000, 0x1003) AM_READ(dsw_r) - AM_RANGE(0x1400, 0x1400) AM_READ_PORT("CONTROL0") - AM_RANGE(0x1401, 0x1401) AM_READ_PORT("CONTROL1") - AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked external ROM */ - AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram") - AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */ - AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("dac0", dac_byte_interface, write) - AM_RANGE(0xd400, 0xd400) AM_DEVWRITE("dac1", dac_byte_interface, write) - AM_RANGE(0xd800, 0xd800) AM_WRITE(mcu_bankswitch_w) /* ROM bank selector */ - AM_RANGE(0xf000, 0xf000) AM_WRITE(mcu_irq_ack_w) - AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION("mcu", 0) /* internal ROM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos1_state::mcu_port_map) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(coin_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(dac_gain_w) -ADDRESS_MAP_END +void namcos1_state::main_map(address_map &map) +{ + map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::main_r), FUNC(namco_c117_device::main_w)); +} + +void namcos1_state::sub_map(address_map &map) +{ + map(0x0000, 0xffff).rw(m_c117, FUNC(namco_c117_device::sub_r), FUNC(namco_c117_device::sub_w)); +} + +void namcos1_state::virtual_map(address_map &map) +{ + map(0x2c0000, 0x2c1fff).w(this, FUNC(namcos1_state::_3dcs_w)); + map(0x2e0000, 0x2e7fff).rw(m_c116, FUNC(namco_c116_device::read), FUNC(namco_c116_device::write)); + map(0x2f0000, 0x2f7fff).ram().w(this, FUNC(namcos1_state::videoram_w)).share("videoram"); + map(0x2f8000, 0x2f9fff).rw(this, FUNC(namcos1_state::no_key_r), FUNC(namcos1_state::no_key_w)); + map(0x2fc000, 0x2fcfff).ram().w(this, FUNC(namcos1_state::spriteram_w)).share("spriteram"); + map(0x2fd000, 0x2fd01f).ram().share("pfcontrol").mirror(0xfe0); + map(0x2fe000, 0x2fe3ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0xc00); /* PSG ( Shared ) */ + map(0x2ff000, 0x2ff7ff).ram().share("triram").mirror(0x800); + map(0x300000, 0x307fff).ram(); + map(0x400000, 0x7fffff).rom().region("user1", 0); +} + + +void namcos1_state::sound_map(address_map &map) +{ + map(0x0000, 0x3fff).bankr("soundbank"); /* Banked ROMs */ + map(0x4000, 0x4001).rw("ymsnd", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write)); + map(0x5000, 0x53ff).rw("namco", FUNC(namco_cus30_device::namcos1_cus30_r), FUNC(namco_cus30_device::namcos1_cus30_w)).mirror(0x400); /* PSG ( Shared ) */ + map(0x7000, 0x77ff).ram().share("triram"); + map(0x8000, 0x9fff).ram(); /* Sound RAM 3 */ + map(0xc000, 0xc001).w(this, FUNC(namcos1_state::sound_bankswitch_w)); /* ROM bank selector */ + map(0xd001, 0xd001).w(m_c117, FUNC(namco_c117_device::sound_watchdog_w)); + map(0xe000, 0xe000).w(this, FUNC(namcos1_state::audiocpu_irq_ack_w)); + map(0xc000, 0xffff).rom().region("audiocpu", 0); +} + + +void namcos1_state::mcu_map(address_map &map) +{ + map(0x0000, 0x001f).rw(m_mcu, FUNC(hd63701_cpu_device::m6801_io_r), FUNC(hd63701_cpu_device::m6801_io_w)); + map(0x0080, 0x00ff).ram(); /* built in RAM */ + map(0x1000, 0x1003).r(this, FUNC(namcos1_state::dsw_r)); + map(0x1400, 0x1400).portr("CONTROL0"); + map(0x1401, 0x1401).portr("CONTROL1"); + map(0x4000, 0xbfff).bankr("mcubank"); /* banked external ROM */ + map(0xc000, 0xc7ff).ram().share("triram"); + map(0xc800, 0xcfff).ram().share("nvram"); /* EEPROM */ + map(0xd000, 0xd000).w(m_dac0, FUNC(dac_byte_interface::write)); + map(0xd400, 0xd400).w(m_dac1, FUNC(dac_byte_interface::write)); + map(0xd800, 0xd800).w(this, FUNC(namcos1_state::mcu_bankswitch_w)); /* ROM bank selector */ + map(0xf000, 0xf000).w(this, FUNC(namcos1_state::mcu_irq_ack_w)); + map(0xf000, 0xffff).rom().region("mcu", 0); /* internal ROM */ +} + +void namcos1_state::mcu_port_map(address_map &map) +{ + map(M6801_PORT1, M6801_PORT1).portr("COIN").w(this, FUNC(namcos1_state::coin_w)); + map(M6801_PORT2, M6801_PORT2).nopr().w(this, FUNC(namcos1_state::dac_gain_w)); +} // #define PRIORITY_EASINESS_TO_PLAY |