summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/nova2001.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/nova2001.cpp')
-rw-r--r--src/mame/drivers/nova2001.cpp228
1 files changed, 118 insertions, 110 deletions
diff --git a/src/mame/drivers/nova2001.cpp b/src/mame/drivers/nova2001.cpp
index b30fe4a05e6..6ff82bbd80a 100644
--- a/src/mame/drivers/nova2001.cpp
+++ b/src/mame/drivers/nova2001.cpp
@@ -180,116 +180,124 @@ MACHINE_START_MEMBER(nova2001_state,ninjakun)
*
*************************************/
-ADDRESS_MAP_START(nova2001_state::nova2001_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa000, 0xa7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xa800, 0xafff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xb000, 0xb7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xb800, 0xbfff) AM_WRITE(nova2001_flipscreen_w)
- AM_RANGE(0xc000, 0xc000) AM_DEVREADWRITE("ay1", ay8910_device, data_r, data_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREADWRITE("ay2", ay8910_device, data_r, data_w)
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xc003, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xc004, 0xc004) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0xc006, 0xc006) AM_READ_PORT("IN0")
- AM_RANGE(0xc007, 0xc007) AM_READ_PORT("IN1")
- AM_RANGE(0xc00e, 0xc00e) AM_READ_PORT("IN2")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::ninjakun_cpu1_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu1_io_A002_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(pkunwar_flipscreen_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::ninjakun_cpu2_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x7fff) AM_ROM AM_REGION("maincpu", 0x2000)
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xa000, 0xa000) AM_READ_PORT("IN0")
- AM_RANGE(0xa001, 0xa001) AM_READ_PORT("IN1")
- AM_RANGE(0xa002, 0xa002) AM_READ_PORT("IN2") AM_WRITE(ninjakun_cpu2_io_A002_w)
- AM_RANGE(0xa003, 0xa003) AM_WRITE(nova2001_flipscreen_w)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xd000, 0xd7ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xd800, 0xd9ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe3ff) AM_RAM AM_SHARE("share2") /* swapped wrt CPU1 */
- AM_RANGE(0xe400, 0xe7ff) AM_RAM AM_SHARE("share1") /* swapped wrt CPU1 */
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::pkunwar_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xa000, 0xa001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xa001, 0xa001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xa002, 0xa003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xa003, 0xa003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::pkunwar_io)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(pkunwar_flipscreen_w)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nova2001_state::raiders5_cpu1_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(nova2001_fg_videoram_w) AM_SHARE("fg_videoram")
- AM_RANGE(0x9000, 0x97ff) AM_READWRITE(ninjakun_bg_videoram_r, ninjakun_bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xa000, 0xa000) AM_WRITE(nova2001_scroll_x_w)
- AM_RANGE(0xa001, 0xa001) AM_WRITE(nova2001_scroll_y_w)
- AM_RANGE(0xa002, 0xa002) AM_WRITE(pkunwar_flipscreen_w)
- AM_RANGE(0xc000, 0xc001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0xc001, 0xc001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xc002, 0xc003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0xc003, 0xc003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xd000, 0xd1ff) AM_RAM_WRITE(ninjakun_paletteram_w) AM_SHARE("palette")
- AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::raiders5_cpu2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x8000, 0x8001) AM_DEVWRITE("ay1", ay8910_device, address_data_w)
- AM_RANGE(0x8001, 0x8001) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0x8002, 0x8003) AM_DEVWRITE("ay2", ay8910_device, address_data_w)
- AM_RANGE(0x8003, 0x8003) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0x9000, 0x9000) AM_READNOP /* unknown */
- AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
- AM_RANGE(0xc000, 0xc000) AM_READNOP /* unknown */
- AM_RANGE(0xc800, 0xc800) AM_READNOP /* unknown */
- AM_RANGE(0xd000, 0xd000) AM_READNOP /* unknown */
- AM_RANGE(0xe000, 0xe000) AM_WRITE(nova2001_scroll_x_w)
- AM_RANGE(0xe001, 0xe001) AM_WRITE(nova2001_scroll_y_w)
- AM_RANGE(0xe002, 0xe002) AM_WRITE(pkunwar_flipscreen_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nova2001_state::raiders5_io)
- AM_RANGE(0x00, 0x00) AM_READNOP /* unknown */
-ADDRESS_MAP_END
+void nova2001_state::nova2001_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa000, 0xa7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xa800, 0xafff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
+ map(0xb000, 0xb7ff).ram().share("spriteram");
+ map(0xb800, 0xbfff).w(this, FUNC(nova2001_state::nova2001_flipscreen_w));
+ map(0xc000, 0xc000).rw("ay1", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xc001, 0xc001).rw("ay2", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
+ map(0xc002, 0xc002).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xc003, 0xc003).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xc004, 0xc004).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0xc006, 0xc006).portr("IN0");
+ map(0xc007, 0xc007).portr("IN1");
+ map(0xc00e, 0xc00e).portr("IN2");
+ map(0xe000, 0xe7ff).ram();
+}
+
+
+void nova2001_state::ninjakun_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).rom();
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1");
+ map(0xa002, 0xa002).portr("IN2").w(this, FUNC(nova2001_state::ninjakun_cpu1_io_A002_w));
+ map(0xa003, 0xa003).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xd9ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
+ map(0xe000, 0xe3ff).ram().share("share1");
+ map(0xe400, 0xe7ff).ram().share("share2");
+}
+
+void nova2001_state::ninjakun_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x7fff).rom().region("maincpu", 0x2000);
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xa000, 0xa000).portr("IN0");
+ map(0xa001, 0xa001).portr("IN1");
+ map(0xa002, 0xa002).portr("IN2").w(this, FUNC(nova2001_state::ninjakun_cpu2_io_A002_w));
+ map(0xa003, 0xa003).w(this, FUNC(nova2001_state::nova2001_flipscreen_w));
+ map(0xc000, 0xc7ff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0xc800, 0xcfff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
+ map(0xd000, 0xd7ff).ram().share("spriteram");
+ map(0xd800, 0xd9ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
+ map(0xe000, 0xe3ff).ram().share("share2"); /* swapped wrt CPU1 */
+ map(0xe400, 0xe7ff).ram().share("share1"); /* swapped wrt CPU1 */
+}
+
+
+void nova2001_state::pkunwar_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("spriteram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_bg_videoram_w)).share("bg_videoram");
+ map(0xa000, 0xa001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xa001, 0xa001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xa002, 0xa003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xa003, 0xa003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xc000, 0xc7ff).ram();
+ map(0xe000, 0xffff).rom();
+}
+
+void nova2001_state::pkunwar_io(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+}
+
+
+void nova2001_state::raiders5_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("spriteram");
+ map(0x8800, 0x8fff).ram().w(this, FUNC(nova2001_state::nova2001_fg_videoram_w)).share("fg_videoram");
+ map(0x9000, 0x97ff).rw(this, FUNC(nova2001_state::ninjakun_bg_videoram_r), FUNC(nova2001_state::ninjakun_bg_videoram_w)).share("bg_videoram");
+ map(0xa000, 0xa000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xa001, 0xa001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w));
+ map(0xa002, 0xa002).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+ map(0xc000, 0xc001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0xc001, 0xc001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xc002, 0xc003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0xc003, 0xc003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xd000, 0xd1ff).ram().w(this, FUNC(nova2001_state::ninjakun_paletteram_w)).share("palette");
+ map(0xe000, 0xe7ff).ram().share("share1");
+}
+
+void nova2001_state::raiders5_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x8000, 0x8001).w("ay1", FUNC(ay8910_device::address_data_w));
+ map(0x8001, 0x8001).r("ay1", FUNC(ay8910_device::data_r));
+ map(0x8002, 0x8003).w("ay2", FUNC(ay8910_device::address_data_w));
+ map(0x8003, 0x8003).r("ay2", FUNC(ay8910_device::data_r));
+ map(0x9000, 0x9000).nopr(); /* unknown */
+ map(0xa000, 0xa7ff).ram().share("share1");
+ map(0xc000, 0xc000).nopr(); /* unknown */
+ map(0xc800, 0xc800).nopr(); /* unknown */
+ map(0xd000, 0xd000).nopr(); /* unknown */
+ map(0xe000, 0xe000).w(this, FUNC(nova2001_state::nova2001_scroll_x_w));
+ map(0xe001, 0xe001).w(this, FUNC(nova2001_state::nova2001_scroll_y_w));
+ map(0xe002, 0xe002).w(this, FUNC(nova2001_state::pkunwar_flipscreen_w));
+}
+
+void nova2001_state::raiders5_io(address_map &map)
+{
+ map(0x00, 0x00).nopr(); /* unknown */
+}