summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/nemesis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/nemesis.cpp')
-rw-r--r--src/mame/drivers/nemesis.cpp668
1 files changed, 342 insertions, 326 deletions
diff --git a/src/mame/drivers/nemesis.cpp b/src/mame/drivers/nemesis.cpp
index 64746092fc4..0aaad50890c 100644
--- a/src/mame/drivers/nemesis.cpp
+++ b/src/mame/drivers/nemesis.cpp
@@ -251,271 +251,282 @@ WRITE8_MEMBER(nemesis_state::city_sound_bank_w)
}
-ADDRESS_MAP_START(nemesis_state::nemesis_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::gx400_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
- AM_RANGE(0x010000, 0x01ffff) AM_RAM
- AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
- AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x057000, 0x057fff) AM_RAM /* needed for twinbee */
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x07ffff) AM_RAM /* WORK RAM */
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::konamigt_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x040000, 0x04ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c400, 0x05c401) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05cc06, 0x05cc07) AM_READ_PORT("TEST")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
- AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::rf2_gx400_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM /* ROM BIOS */
- AM_RANGE(0x010000, 0x01ffff) AM_RAM
- AM_RANGE(0x020000, 0x027fff) AM_READWRITE(gx400_sharedram_word_r, gx400_sharedram_word_w)
- AM_RANGE(0x030000, 0x03ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x050000, 0x051fff) AM_RAM
- AM_RANGE(0x050000, 0x0503ff) AM_SHARE("xscroll1")
- AM_RANGE(0x050400, 0x0507ff) AM_SHARE("xscroll2")
- AM_RANGE(0x050f00, 0x050f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x050f80, 0x050fff) AM_SHARE("yscroll1")
- AM_RANGE(0x052000, 0x052fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x053000, 0x053fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x054000, 0x054fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x055000, 0x055fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x056000, 0x056fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x05a000, 0x05afff) AM_RAM_WRITE(nemesis_palette_word_w) AM_SHARE("paletteram")
- AM_RANGE(0x05c000, 0x05c001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x05c402, 0x05c403) AM_READ_PORT("DSW0")
- AM_RANGE(0x05c404, 0x05c405) AM_READ_PORT("DSW1")
- AM_RANGE(0x05c406, 0x05c407) AM_READ_PORT("TEST")
- AM_RANGE(0x05c800, 0x05c801) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x05cc00, 0x05cc01) AM_READ_PORT("IN0")
- AM_RANGE(0x05cc02, 0x05cc03) AM_READ_PORT("IN1")
- AM_RANGE(0x05cc04, 0x05cc05) AM_READ_PORT("IN2")
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("outlatch", ls259_device, write_d0, 0xff00)
- AM_RANGE(0x05e000, 0x05e00f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff)
- AM_RANGE(0x060000, 0x067fff) AM_RAM /* WORK RAM */
- AM_RANGE(0x070000, 0x070001) AM_READ(konamigt_input_word_r)
- AM_RANGE(0x080000, 0x0bffff) AM_ROM
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(nemesis_state::sound_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x4000, 0x47ff) AM_RAM
- AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w)
- AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w)
- AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w)
- AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::gx400_sound_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x4000, 0x7fff) AM_RAM AM_SHARE("gx400_shared")
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("voiceram")
- AM_RANGE(0xa000, 0xafff) AM_DEVWRITE("k005289", k005289_device, ld1_w)
- AM_RANGE(0xc000, 0xcfff) AM_DEVWRITE("k005289", k005289_device, ld2_w)
- AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0xe001, 0xe001) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xe003, 0xe003) AM_DEVWRITE("k005289", k005289_device, tg1_w)
- AM_RANGE(0xe004, 0xe004) AM_DEVWRITE("k005289", k005289_device, tg2_w)
- AM_RANGE(0xe005, 0xe005) AM_DEVWRITE("ay2", ay8910_device, address_w)
- AM_RANGE(0xe006, 0xe006) AM_DEVWRITE("ay1", ay8910_device, address_w)
- AM_RANGE(0xe007, 0xe007) AM_SELECT(0x1ff8) AM_WRITE(nemesis_filter_w)
- AM_RANGE(0xe030, 0xe030) AM_WRITE(gx400_speech_start_w)
- AM_RANGE(0xe086, 0xe086) AM_DEVREAD("ay1", ay8910_device, data_r)
- AM_RANGE(0xe106, 0xe106) AM_DEVWRITE("ay1", ay8910_device, data_w)
- AM_RANGE(0xe205, 0xe205) AM_DEVREAD("ay2", ay8910_device, data_r)
- AM_RANGE(0xe405, 0xe405) AM_DEVWRITE("ay2", ay8910_device, data_w)
-ADDRESS_MAP_END
+void nemesis_state::nemesis_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c400, 0x05c401).portr("DSW0");
+ map(0x05c402, 0x05c403).portr("DSW1");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05cc06, 0x05cc07).portr("TEST");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+}
+
+void nemesis_state::gx400_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); /* ROM BIOS */
+ map(0x010000, 0x01ffff).ram();
+ map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w));
+ map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x057000, 0x057fff).ram(); /* needed for twinbee */
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c402, 0x05c403).portr("DSW0");
+ map(0x05c404, 0x05c405).portr("DSW1");
+ map(0x05c406, 0x05c407).portr("TEST");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x07ffff).ram(); /* WORK RAM */
+ map(0x080000, 0x0bffff).rom();
+}
+
+void nemesis_state::konamigt_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x040000, 0x04ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c400, 0x05c401).portr("DSW0");
+ map(0x05c402, 0x05c403).portr("DSW1");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05cc06, 0x05cc07).portr("TEST");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+ map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r));
+}
+
+void nemesis_state::rf2_gx400_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom(); /* ROM BIOS */
+ map(0x010000, 0x01ffff).ram();
+ map(0x020000, 0x027fff).rw(this, FUNC(nemesis_state::gx400_sharedram_word_r), FUNC(nemesis_state::gx400_sharedram_word_w));
+ map(0x030000, 0x03ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x050000, 0x051fff).ram();
+ map(0x050000, 0x0503ff).share("xscroll1");
+ map(0x050400, 0x0507ff).share("xscroll2");
+ map(0x050f00, 0x050f7f).share("yscroll2");
+ map(0x050f80, 0x050fff).share("yscroll1");
+ map(0x052000, 0x052fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x053000, 0x053fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x054000, 0x054fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x055000, 0x055fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x056000, 0x056fff).ram().share("spriteram");
+ map(0x05a000, 0x05afff).ram().w(this, FUNC(nemesis_state::nemesis_palette_word_w)).share("paletteram");
+ map(0x05c001, 0x05c001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x05c402, 0x05c403).portr("DSW0");
+ map(0x05c404, 0x05c405).portr("DSW1");
+ map(0x05c406, 0x05c407).portr("TEST");
+ map(0x05c800, 0x05c801).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x05cc00, 0x05cc01).portr("IN0");
+ map(0x05cc02, 0x05cc03).portr("IN1");
+ map(0x05cc04, 0x05cc05).portr("IN2");
+ map(0x05e000, 0x05e00f).w("outlatch", FUNC(ls259_device::write_d0)).umask16(0xff00);
+ map(0x05e000, 0x05e00f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff);
+ map(0x060000, 0x067fff).ram(); /* WORK RAM */
+ map(0x070000, 0x070001).r(this, FUNC(nemesis_state::konamigt_input_word_r));
+ map(0x080000, 0x0bffff).rom();
+}
+
+
+void nemesis_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x4000, 0x47ff).ram();
+ map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w));
+ map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w));
+ map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w));
+ map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w));
+ map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w));
+ map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w));
+}
+
+void nemesis_state::gx400_sound_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x4000, 0x7fff).ram().share("gx400_shared");
+ map(0x8000, 0x87ff).ram().share("voiceram");
+ map(0xa000, 0xafff).w(m_k005289, FUNC(k005289_device::ld1_w));
+ map(0xc000, 0xcfff).w(m_k005289, FUNC(k005289_device::ld2_w));
+ map(0xe000, 0xe000).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0xe001, 0xe001).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xe003, 0xe003).w(m_k005289, FUNC(k005289_device::tg1_w));
+ map(0xe004, 0xe004).w(m_k005289, FUNC(k005289_device::tg2_w));
+ map(0xe005, 0xe005).w("ay2", FUNC(ay8910_device::address_w));
+ map(0xe006, 0xe006).w("ay1", FUNC(ay8910_device::address_w));
+ map(0xe007, 0xe007).select(0x1ff8).w(this, FUNC(nemesis_state::nemesis_filter_w));
+ map(0xe030, 0xe030).w(this, FUNC(nemesis_state::gx400_speech_start_w));
+ map(0xe086, 0xe086).r("ay1", FUNC(ay8910_device::data_r));
+ map(0xe106, 0xe106).w("ay1", FUNC(ay8910_device::data_w));
+ map(0xe205, 0xe205).r("ay2", FUNC(ay8910_device::data_r));
+ map(0xe405, 0xe405).w("ay2", FUNC(ay8910_device::data_w));
+}
// gx400 voice data is not in a ROM but in sound RAM at $8000
-ADDRESS_MAP_START(nemesis_state::gx400_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x7ff)
- AM_RANGE(0x000, 0x7ff) AM_RAM AM_SHARE("voiceram")
-ADDRESS_MAP_END
+void nemesis_state::gx400_vlm_map(address_map &map)
+{
+ map.global_mask(0x7ff);
+ map(0x000, 0x7ff).ram().share("voiceram");
+}
/******************************************************************************/
-ADDRESS_MAP_START(nemesis_state::salamand_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
- AM_RANGE(0x190000, 0x191fff) AM_RAM
- AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2")
- AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1")
- AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1")
- AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::blkpnthr_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x080000, 0x081fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x090000, 0x097fff) AM_RAM
- AM_RANGE(0x0a0000, 0x0a0001) AM_RAM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0c2002, 0x0c2003) AM_READ_PORT("IN1")
- AM_RANGE(0x0c2004, 0x0c2005) AM_READ_PORT("IN2")
- AM_RANGE(0x0c2006, 0x0c2007) AM_READ_PORT("DSW1")
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1") AM_MIRROR(0x4000) /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2") AM_MIRROR(0x4000)
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x181fff) AM_RAM
- AM_RANGE(0x180000, 0x1803ff) AM_SHARE("xscroll1")
- AM_RANGE(0x180400, 0x1807ff) AM_SHARE("xscroll2")
- AM_RANGE(0x180f00, 0x180f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x180f80, 0x180fff) AM_SHARE("yscroll1")
- AM_RANGE(0x190000, 0x190fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::citybomb_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x080000, 0x087fff) AM_RAM
- AM_RANGE(0x0e0000, 0x0e1fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0f0000, 0x0f0001) AM_READ_PORT("DSW1")
- AM_RANGE(0x0f0002, 0x0f0003) AM_READ_PORT("IN2")
- AM_RANGE(0x0f0004, 0x0f0005) AM_READ_PORT("IN1")
- AM_RANGE(0x0f0006, 0x0f0007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x0f0008, 0x0f0009) AM_READ_PORT("DSW0")
- AM_RANGE(0x0f0010, 0x0f0011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0f0018, 0x0f0019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x0f0020, 0x0f0021) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control? */
- AM_RANGE(0x0f8000, 0x0f8001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x100000, 0x1bffff) AM_ROM
- AM_RANGE(0x200000, 0x20ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x210000, 0x210fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x211000, 0x211fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x212000, 0x212fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x213000, 0x213fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x300000, 0x301fff) AM_RAM
- AM_RANGE(0x300000, 0x3003ff) AM_SHARE("xscroll1")
- AM_RANGE(0x300400, 0x3007ff) AM_SHARE("xscroll2")
- AM_RANGE(0x300f00, 0x300f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x300f80, 0x300fff) AM_SHARE("yscroll1")
- AM_RANGE(0x310000, 0x310fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::nyanpani_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0x040000, 0x047fff) AM_RAM
- AM_RANGE(0x060000, 0x061fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x070000, 0x070001) AM_READ_PORT("DSW1")
- AM_RANGE(0x070002, 0x070003) AM_READ_PORT("IN2")
- AM_RANGE(0x070004, 0x070005) AM_READ_PORT("IN1")
- AM_RANGE(0x070006, 0x070007) AM_READ_PORT("IN0") /* Coins, start buttons, test mode */
- AM_RANGE(0x070008, 0x070009) AM_READ_PORT("DSW0")
- AM_RANGE(0x070010, 0x070011) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x070018, 0x070019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* probably */
- AM_RANGE(0x078000, 0x078001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x100000, 0x13ffff) AM_ROM
- AM_RANGE(0x200000, 0x200fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1") /* VRAM */
- AM_RANGE(0x201000, 0x201fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2")
- AM_RANGE(0x202000, 0x202fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x203000, 0x203fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x210000, 0x21ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x300000, 0x300fff) AM_RAM AM_SHARE("spriteram") /* more sprite ram ??? */
- AM_RANGE(0x310000, 0x311fff) AM_RAM
- AM_RANGE(0x310000, 0x3103ff) AM_SHARE("xscroll1")
- AM_RANGE(0x310400, 0x3107ff) AM_SHARE("xscroll2")
- AM_RANGE(0x310f00, 0x310f7f) AM_SHARE("yscroll2")
- AM_RANGE(0x310f80, 0x310fff) AM_SHARE("yscroll1")
-ADDRESS_MAP_END
+void nemesis_state::salamand_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x087fff).ram();
+ map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0c2002, 0x0c2003).portr("IN1");
+ map(0x0c2004, 0x0c2005).portr("IN2");
+ map(0x0c2006, 0x0c2007).portr("DSW1");
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x180fff).ram().share("spriteram"); /* more sprite ram ??? */
+ map(0x190000, 0x191fff).ram();
+ map(0x190000, 0x1903ff).share("xscroll2");
+ map(0x190400, 0x1907ff).share("xscroll1");
+ map(0x190f00, 0x190f7f).share("yscroll1");
+ map(0x190f80, 0x190fff).share("yscroll2");
+}
+
+void nemesis_state::blkpnthr_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x080000, 0x081fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x090000, 0x097fff).ram();
+ map(0x0a0000, 0x0a0001).ram().w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0c2000, 0x0c2001).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0c2002, 0x0c2003).portr("IN1");
+ map(0x0c2004, 0x0c2005).portr("IN2");
+ map(0x0c2006, 0x0c2007).portr("DSW1");
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1").mirror(0x4000); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2").mirror(0x4000);
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x181fff).ram();
+ map(0x180000, 0x1803ff).share("xscroll1");
+ map(0x180400, 0x1807ff).share("xscroll2");
+ map(0x180f00, 0x180f7f).share("yscroll2");
+ map(0x180f80, 0x180fff).share("yscroll1");
+ map(0x190000, 0x190fff).ram().share("spriteram"); /* more sprite ram ??? */
+}
+
+void nemesis_state::citybomb_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x080000, 0x087fff).ram();
+ map(0x0e0000, 0x0e1fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0f0000, 0x0f0001).portr("DSW1");
+ map(0x0f0002, 0x0f0003).portr("IN2");
+ map(0x0f0004, 0x0f0005).portr("IN1");
+ map(0x0f0006, 0x0f0007).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x0f0008, 0x0f0009).portr("DSW0");
+ map(0x0f0011, 0x0f0011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0f0018, 0x0f0019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x0f0020, 0x0f0021).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control? */
+ map(0x0f8000, 0x0f8001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x100000, 0x1bffff).rom();
+ map(0x200000, 0x20ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x210000, 0x210fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x211000, 0x211fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x212000, 0x212fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x213000, 0x213fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x300000, 0x301fff).ram();
+ map(0x300000, 0x3003ff).share("xscroll1");
+ map(0x300400, 0x3007ff).share("xscroll2");
+ map(0x300f00, 0x300f7f).share("yscroll2");
+ map(0x300f80, 0x300fff).share("yscroll1");
+ map(0x310000, 0x310fff).ram().share("spriteram"); /* more sprite ram ??? */
+}
+
+void nemesis_state::nyanpani_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0x040000, 0x047fff).ram();
+ map(0x060000, 0x061fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x070000, 0x070001).portr("DSW1");
+ map(0x070002, 0x070003).portr("IN2");
+ map(0x070004, 0x070005).portr("IN1");
+ map(0x070006, 0x070007).portr("IN0"); /* Coins, start buttons, test mode */
+ map(0x070008, 0x070009).portr("DSW0");
+ map(0x070011, 0x070011).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x070018, 0x070019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* probably */
+ map(0x078000, 0x078001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x100000, 0x13ffff).rom();
+ map(0x200000, 0x200fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1"); /* VRAM */
+ map(0x201000, 0x201fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2");
+ map(0x202000, 0x202fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x203000, 0x203fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x210000, 0x21ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x300000, 0x300fff).ram().share("spriteram"); /* more sprite ram ??? */
+ map(0x310000, 0x311fff).ram();
+ map(0x310000, 0x3103ff).share("xscroll1");
+ map(0x310400, 0x3107ff).share("xscroll2");
+ map(0x310f00, 0x310f7f).share("yscroll2");
+ map(0x310f80, 0x310fff).share("yscroll1");
+}
READ8_MEMBER(nemesis_state::wd_r)
{
@@ -523,75 +534,80 @@ READ8_MEMBER(nemesis_state::wd_r)
return m_frame_counter;
}
-ADDRESS_MAP_START(nemesis_state::sal_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xd000, 0xd000) AM_DEVWRITE("vlm", vlm5030_device, data_w)
- AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
- AM_RANGE(0xf000, 0xf000) AM_WRITE(salamand_speech_start_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::salamand_vlm_map)
- ADDRESS_MAP_GLOBAL_MASK(0x3fff)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::blkpnthr_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xe000, 0xe000) AM_READ(wd_r) /* watchdog?? */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(nemesis_state::city_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9800, 0x987f) AM_DEVREADWRITE("k051649", k051649_device, k051649_waveform_r, k051649_waveform_w)
- AM_RANGE(0x9880, 0x9889) AM_DEVWRITE("k051649", k051649_device, k051649_frequency_w)
- AM_RANGE(0x988a, 0x988e) AM_DEVWRITE("k051649", k051649_device, k051649_volume_w)
- AM_RANGE(0x988f, 0x988f) AM_DEVWRITE("k051649", k051649_device, k051649_keyonoff_w)
- AM_RANGE(0x98e0, 0x98ff) AM_DEVREADWRITE("k051649", k051649_device, k051649_test_r, k051649_test_w)
- AM_RANGE(0xa000, 0xa001) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0xb000, 0xb00d) AM_DEVREADWRITE("k007232", k007232_device, read, write)
- AM_RANGE(0xc000, 0xc000) AM_WRITE(city_sound_bank_w) /* 7232 bankswitch */
- AM_RANGE(0xd000, 0xd000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void nemesis_state::sal_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xd000, 0xd000).w(m_vlm, FUNC(vlm5030_device::data_w));
+ map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */
+ map(0xf000, 0xf000).w(this, FUNC(nemesis_state::salamand_speech_start_w));
+}
+
+void nemesis_state::salamand_vlm_map(address_map &map)
+{
+ map.global_mask(0x3fff);
+ map(0x0000, 0x3fff).rom();
+}
+
+void nemesis_state::blkpnthr_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0xa000, 0xa000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xe000, 0xe000).r(this, FUNC(nemesis_state::wd_r)); /* watchdog?? */
+}
+
+void nemesis_state::city_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9800, 0x987f).rw("k051649", FUNC(k051649_device::k051649_waveform_r), FUNC(k051649_device::k051649_waveform_w));
+ map(0x9880, 0x9889).w("k051649", FUNC(k051649_device::k051649_frequency_w));
+ map(0x988a, 0x988e).w("k051649", FUNC(k051649_device::k051649_volume_w));
+ map(0x988f, 0x988f).w("k051649", FUNC(k051649_device::k051649_keyonoff_w));
+ map(0x98e0, 0x98ff).rw("k051649", FUNC(k051649_device::k051649_test_r), FUNC(k051649_device::k051649_test_w));
+ map(0xa000, 0xa001).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0xb000, 0xb00d).rw(m_k007232, FUNC(k007232_device::read), FUNC(k007232_device::write));
+ map(0xc000, 0xc000).w(this, FUNC(nemesis_state::city_sound_bank_w)); /* 7232 bankswitch */
+ map(0xd000, 0xd000).r("soundlatch", FUNC(generic_latch_8_device::read));
+}
/******************************************************************************/
-ADDRESS_MAP_START(nemesis_state::hcrash_map)
- AM_RANGE(0x000000, 0x00ffff) AM_ROM
- AM_RANGE(0x040000, 0x05ffff) AM_ROM
- AM_RANGE(0x080000, 0x083fff) AM_RAM
- AM_RANGE(0x090000, 0x091fff) AM_DEVREADWRITE8("palette", palette_device, read8, write8, 0x00ff) AM_SHARE("palette")
- AM_RANGE(0x0a0000, 0x0a0001) AM_WRITE(salamand_control_port_word_w) /* irq enable, flipscreen, etc. */
- AM_RANGE(0x0c0000, 0x0c0001) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("DSW0")
- AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("DSW1")
- AM_RANGE(0x0c0006, 0x0c0007) AM_READ_PORT("TEST")
- AM_RANGE(0x0c0008, 0x0c0009) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) /* watchdog probably */
- AM_RANGE(0x0c000a, 0x0c000b) AM_READ_PORT("IN0")
- AM_RANGE(0x0c2000, 0x0c2001) AM_READ(konamigt_input_word_r) /* Konami GT control */
- AM_RANGE(0x0c2800, 0x0c280f) AM_DEVWRITE8("intlatch", ls259_device, write_d0, 0x00ff) // ???
- AM_RANGE(0x0c4000, 0x0c4001) AM_READ_PORT("IN1") AM_WRITE(selected_ip_word_w)
- AM_RANGE(0x0c4002, 0x0c4003) AM_READ(selected_ip_word_r) AM_WRITENOP /* WEC Le Mans 24 control. latches the value read previously */
- AM_RANGE(0x100000, 0x100fff) AM_RAM_WRITE(nemesis_videoram2_word_w) AM_SHARE("videoram2") /* VRAM */
- AM_RANGE(0x101000, 0x101fff) AM_RAM_WRITE(nemesis_videoram1_word_w) AM_SHARE("videoram1")
- AM_RANGE(0x102000, 0x102fff) AM_RAM_WRITE(nemesis_colorram2_word_w) AM_SHARE("colorram2")
- AM_RANGE(0x103000, 0x103fff) AM_RAM_WRITE(nemesis_colorram1_word_w) AM_SHARE("colorram1")
- AM_RANGE(0x120000, 0x12ffff) AM_RAM_WRITE(nemesis_charram_word_w) AM_SHARE("charram")
- AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0x190000, 0x191fff) AM_RAM
- AM_RANGE(0x190000, 0x1903ff) AM_SHARE("xscroll2")
- AM_RANGE(0x190400, 0x1907ff) AM_SHARE("xscroll1")
- AM_RANGE(0x190f00, 0x190f7f) AM_SHARE("yscroll1")
- AM_RANGE(0x190f80, 0x190fff) AM_SHARE("yscroll2")
-ADDRESS_MAP_END
+void nemesis_state::hcrash_map(address_map &map)
+{
+ map(0x000000, 0x00ffff).rom();
+ map(0x040000, 0x05ffff).rom();
+ map(0x080000, 0x083fff).ram();
+ map(0x090000, 0x091fff).rw(m_palette, FUNC(palette_device::read8), FUNC(palette_device::write8)).umask16(0x00ff).share("palette");
+ map(0x0a0000, 0x0a0001).w(this, FUNC(nemesis_state::salamand_control_port_word_w)); /* irq enable, flipscreen, etc. */
+ map(0x0c0001, 0x0c0001).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x0c0002, 0x0c0003).portr("DSW0");
+ map(0x0c0004, 0x0c0005).portr("DSW1");
+ map(0x0c0006, 0x0c0007).portr("TEST");
+ map(0x0c0008, 0x0c0009).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); /* watchdog probably */
+ map(0x0c000a, 0x0c000b).portr("IN0");
+ map(0x0c2000, 0x0c2001).r(this, FUNC(nemesis_state::konamigt_input_word_r)); /* Konami GT control */
+ map(0x0c2800, 0x0c280f).w("intlatch", FUNC(ls259_device::write_d0)).umask16(0x00ff); // ???
+ map(0x0c4000, 0x0c4001).portr("IN1").w(this, FUNC(nemesis_state::selected_ip_word_w));
+ map(0x0c4002, 0x0c4003).r(this, FUNC(nemesis_state::selected_ip_word_r)).nopw(); /* WEC Le Mans 24 control. latches the value read previously */
+ map(0x100000, 0x100fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram2_word_w)).share("videoram2"); /* VRAM */
+ map(0x101000, 0x101fff).ram().w(this, FUNC(nemesis_state::nemesis_videoram1_word_w)).share("videoram1");
+ map(0x102000, 0x102fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram2_word_w)).share("colorram2");
+ map(0x103000, 0x103fff).ram().w(this, FUNC(nemesis_state::nemesis_colorram1_word_w)).share("colorram1");
+ map(0x120000, 0x12ffff).ram().w(this, FUNC(nemesis_state::nemesis_charram_word_w)).share("charram");
+ map(0x180000, 0x180fff).ram().share("spriteram");
+ map(0x190000, 0x191fff).ram();
+ map(0x190000, 0x1903ff).share("xscroll2");
+ map(0x190400, 0x1907ff).share("xscroll1");
+ map(0x190f00, 0x190f7f).share("yscroll1");
+ map(0x190f80, 0x190fff).share("yscroll2");
+}
/******************************************************************************/