diff options
Diffstat (limited to 'src/mame/drivers/namcos11.cpp')
-rw-r--r-- | src/mame/drivers/namcos11.cpp | 144 |
1 files changed, 75 insertions, 69 deletions
diff --git a/src/mame/drivers/namcos11.cpp b/src/mame/drivers/namcos11.cpp index ed257fda765..7a33f11b913 100644 --- a/src/mame/drivers/namcos11.cpp +++ b/src/mame/drivers/namcos11.cpp @@ -464,75 +464,81 @@ WRITE16_MEMBER( namcos11_state::c76_shared_w ) COMBINE_DATA( &m_sharedram.target()[ offset ] ); } -ADDRESS_MAP_START(namcos11_state::namcos11_map) - AM_RANGE(0x1fa04000, 0x1fa0ffff) AM_READWRITE16(c76_shared_r, c76_shared_w, 0xffffffff) /* shared ram with C76 */ - AM_RANGE(0x1fa20000, 0x1fa2001f) AM_DEVREADWRITE16("keycus", ns11_keycus_device, read, write, 0xffffffff) - AM_RANGE(0x1fa30000, 0x1fa30fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0x00ff00ff) /* eeprom */ - AM_RANGE(0x1fb00000, 0x1fb00003) AM_WRITENOP /* ?? */ - AM_RANGE(0x1fbf6000, 0x1fbf6003) AM_WRITENOP /* ?? */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::rom8_map) - AM_IMPORT_FROM(namcos11_map) - - AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1") - AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2") - AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3") - AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4") - AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5") - AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6") - AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7") - AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8") - AM_RANGE(0x1fa10020, 0x1fa1002f) AM_WRITE16(rom8_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::rom8_64_map) - AM_IMPORT_FROM(namcos11_map) - - AM_RANGE(0x1f000000, 0x1f0fffff) AM_ROMBANK("bank1") - AM_RANGE(0x1f100000, 0x1f1fffff) AM_ROMBANK("bank2") - AM_RANGE(0x1f200000, 0x1f2fffff) AM_ROMBANK("bank3") - AM_RANGE(0x1f300000, 0x1f3fffff) AM_ROMBANK("bank4") - AM_RANGE(0x1f400000, 0x1f4fffff) AM_ROMBANK("bank5") - AM_RANGE(0x1f500000, 0x1f5fffff) AM_ROMBANK("bank6") - AM_RANGE(0x1f600000, 0x1f6fffff) AM_ROMBANK("bank7") - AM_RANGE(0x1f700000, 0x1f7fffff) AM_ROMBANK("bank8") - AM_RANGE(0x1f080000, 0x1f080003) AM_WRITE16(rom8_64_upper_w, 0xffffffff) - AM_RANGE(0x1fa10020, 0x1fa1002f) AM_READNOP AM_WRITE16(rom8_64_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::ptblank2ua_map) - AM_IMPORT_FROM(rom8_64_map) - - AM_RANGE(0x1f780000, 0x1f78000f) AM_READ16(lightgun_r, 0xffffffff) - AM_RANGE(0x1f788000, 0x1f788003) AM_WRITE16(lightgun_w, 0xffffffff) -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::c76_map) - AM_RANGE(0x002000, 0x002fff) AM_DEVREADWRITE("c352", c352_device, read, write) - AM_RANGE(0x001000, 0x001001) AM_READ_PORT("PLAYER4") - AM_RANGE(0x001002, 0x001003) AM_READ_PORT("SWITCH") - AM_RANGE(0x001004, 0x001005) AM_READ_PORT("PLAYER1") - AM_RANGE(0x001006, 0x001007) AM_READ_PORT("PLAYER2") - AM_RANGE(0x004000, 0x00bfff) AM_RAM AM_SHARE("sharedram") - AM_RANGE(0x080000, 0x0fffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x280000, 0x2fffff) AM_ROM AM_REGION("c76", 0) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP - AM_RANGE(0x301000, 0x301001) AM_WRITENOP -ADDRESS_MAP_END - -ADDRESS_MAP_START(namcos11_state::c76_io_map) - AM_RANGE(M37710_ADC0_H, M37710_ADC7_H) AM_READNOP - AM_RANGE(M37710_ADC0_L, M37710_ADC0_L) AM_READ_PORT("ADC0") - AM_RANGE(M37710_ADC1_L, M37710_ADC1_L) AM_READ_PORT("ADC1") - AM_RANGE(M37710_ADC2_L, M37710_ADC2_L) AM_READ_PORT("ADC2") - AM_RANGE(M37710_ADC3_L, M37710_ADC3_L) AM_READ_PORT("ADC3") - AM_RANGE(M37710_ADC4_L, M37710_ADC4_L) AM_READ_PORT("ADC4") - AM_RANGE(M37710_ADC5_L, M37710_ADC5_L) AM_READ_PORT("ADC5") - AM_RANGE(M37710_ADC6_L, M37710_ADC6_L) AM_READ_PORT("ADC6") - AM_RANGE(M37710_ADC7_L, M37710_ADC7_L) AM_READ_PORT("ADC7") -ADDRESS_MAP_END +void namcos11_state::namcos11_map(address_map &map) +{ + map(0x1fa04000, 0x1fa0ffff).rw(this, FUNC(namcos11_state::c76_shared_r), FUNC(namcos11_state::c76_shared_w)); /* shared ram with C76 */ + map(0x1fa20000, 0x1fa2001f).rw("keycus", FUNC(ns11_keycus_device::read), FUNC(ns11_keycus_device::write)); + map(0x1fa30000, 0x1fa30fff).rw("at28c16", FUNC(at28c16_device::read), FUNC(at28c16_device::write)).umask32(0x00ff00ff); /* eeprom */ + map(0x1fb00000, 0x1fb00003).nopw(); /* ?? */ + map(0x1fbf6000, 0x1fbf6003).nopw(); /* ?? */ +} + +void namcos11_state::rom8_map(address_map &map) +{ + namcos11_map(map); + + map(0x1f000000, 0x1f0fffff).bankr("bank1"); + map(0x1f100000, 0x1f1fffff).bankr("bank2"); + map(0x1f200000, 0x1f2fffff).bankr("bank3"); + map(0x1f300000, 0x1f3fffff).bankr("bank4"); + map(0x1f400000, 0x1f4fffff).bankr("bank5"); + map(0x1f500000, 0x1f5fffff).bankr("bank6"); + map(0x1f600000, 0x1f6fffff).bankr("bank7"); + map(0x1f700000, 0x1f7fffff).bankr("bank8"); + map(0x1fa10020, 0x1fa1002f).w(this, FUNC(namcos11_state::rom8_w)); +} + +void namcos11_state::rom8_64_map(address_map &map) +{ + namcos11_map(map); + + map(0x1f000000, 0x1f0fffff).bankr("bank1"); + map(0x1f100000, 0x1f1fffff).bankr("bank2"); + map(0x1f200000, 0x1f2fffff).bankr("bank3"); + map(0x1f300000, 0x1f3fffff).bankr("bank4"); + map(0x1f400000, 0x1f4fffff).bankr("bank5"); + map(0x1f500000, 0x1f5fffff).bankr("bank6"); + map(0x1f600000, 0x1f6fffff).bankr("bank7"); + map(0x1f700000, 0x1f7fffff).bankr("bank8"); + map(0x1f080000, 0x1f080003).w(this, FUNC(namcos11_state::rom8_64_upper_w)); + map(0x1fa10020, 0x1fa1002f).nopr().w(this, FUNC(namcos11_state::rom8_64_w)); +} + +void namcos11_state::ptblank2ua_map(address_map &map) +{ + rom8_64_map(map); + + map(0x1f780000, 0x1f78000f).r(this, FUNC(namcos11_state::lightgun_r)); + map(0x1f788000, 0x1f788003).w(this, FUNC(namcos11_state::lightgun_w)); +} + +void namcos11_state::c76_map(address_map &map) +{ + map(0x002000, 0x002fff).rw("c352", FUNC(c352_device::read), FUNC(c352_device::write)); + map(0x001000, 0x001001).portr("PLAYER4"); + map(0x001002, 0x001003).portr("SWITCH"); + map(0x001004, 0x001005).portr("PLAYER1"); + map(0x001006, 0x001007).portr("PLAYER2"); + map(0x004000, 0x00bfff).ram().share("sharedram"); + map(0x080000, 0x0fffff).rom().region("c76", 0); + map(0x200000, 0x27ffff).rom().region("c76", 0); + map(0x280000, 0x2fffff).rom().region("c76", 0); + map(0x300000, 0x300001).nopw(); + map(0x301000, 0x301001).nopw(); +} + +void namcos11_state::c76_io_map(address_map &map) +{ + map(M37710_ADC0_H, M37710_ADC7_H).nopr(); + map(M37710_ADC0_L, M37710_ADC0_L).portr("ADC0"); + map(M37710_ADC1_L, M37710_ADC1_L).portr("ADC1"); + map(M37710_ADC2_L, M37710_ADC2_L).portr("ADC2"); + map(M37710_ADC3_L, M37710_ADC3_L).portr("ADC3"); + map(M37710_ADC4_L, M37710_ADC4_L).portr("ADC4"); + map(M37710_ADC5_L, M37710_ADC5_L).portr("ADC5"); + map(M37710_ADC6_L, M37710_ADC6_L).portr("ADC6"); + map(M37710_ADC7_L, M37710_ADC7_L).portr("ADC7"); +} READ16_MEMBER(namcos11_state::c76_speedup_r) { |