summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/tsamurai.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tsamurai.cpp')
-rw-r--r--src/mame/drivers/tsamurai.cpp297
1 files changed, 155 insertions, 142 deletions
diff --git a/src/mame/drivers/tsamurai.cpp b/src/mame/drivers/tsamurai.cpp
index 21bbdc4154b..24f67c7db49 100644
--- a/src/mame/drivers/tsamurai.cpp
+++ b/src/mame/drivers/tsamurai.cpp
@@ -143,83 +143,88 @@ WRITE_LINE_MEMBER(tsamurai_state::coin2_counter_w)
}
-ADDRESS_MAP_START(tsamurai_state::main_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+void tsamurai_state::main_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
/* protection? - there are writes as well...*/
- AM_RANGE(0xd803, 0xd803) AM_READ(tsamurai_unknown_d803_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
- AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
- AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
-
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe440, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
-
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP
- AM_RANGE(0xf401, 0xf401) AM_WRITE(sound_command1_w)
- AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
-
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::m660_map)
- AM_RANGE(0x0000, 0xbfff) AM_ROM
- AM_RANGE(0xc000, 0xcfff) AM_RAM
+ map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::tsamurai_unknown_d803_r));
+ map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r));
+ map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r));
+ map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r));
+
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram");
+ map(0xe440, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf3ff).ram().share("spriteram");
+
+ map(0xf400, 0xf400).nopw();
+ map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::sound_command1_w));
+ map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w));
+
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w));
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w));
+ map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w));
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::m660_map(address_map &map)
+{
+ map(0x0000, 0xbfff).rom();
+ map(0xc000, 0xcfff).ram();
/* protection? - there are writes as well...*/
- AM_RANGE(0xd803, 0xd803) AM_READ(m660_unknown_d803_r)
- AM_RANGE(0xd806, 0xd806) AM_READ(unknown_d806_r)
- AM_RANGE(0xd900, 0xd900) AM_READ(unknown_d900_r)
- AM_RANGE(0xd938, 0xd938) AM_READ(unknown_d938_r)
-
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM_WRITE(fg_colorram_w) AM_SHARE("colorram")
- AM_RANGE(0xe440, 0xe7ff) AM_RAM
- AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(bg_videoram_w) AM_SHARE("bg_videoram")
- AM_RANGE(0xf000, 0xf3ff) AM_RAM AM_SHARE("spriteram")
-
- AM_RANGE(0xf400, 0xf400) AM_WRITENOP/* This is always written with F401, F402 & F403 data */
- AM_RANGE(0xf401, 0xf401) AM_WRITE(m660_sound_command3_w)
- AM_RANGE(0xf402, 0xf402) AM_WRITE(sound_command2_w)
- AM_RANGE(0xf403, 0xf403) AM_WRITE(sound_command1_w)
-
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2") AM_WRITE(bgcolor_w)
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM") AM_WRITE(scrolly_w)
- AM_RANGE(0xf803, 0xf803) AM_WRITE(scrollx_w)
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
-
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::z80_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::z80_m660_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITENOP /* ? */
- AM_RANGE(0x01, 0x01) AM_WRITENOP /* Written continuously. Increments with level. */
- AM_RANGE(0x02, 0x02) AM_WRITENOP /* Always follows above with 0x01 data */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::vsgongf_audio_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+ map(0xd803, 0xd803).r(this, FUNC(tsamurai_state::m660_unknown_d803_r));
+ map(0xd806, 0xd806).r(this, FUNC(tsamurai_state::unknown_d806_r));
+ map(0xd900, 0xd900).r(this, FUNC(tsamurai_state::unknown_d900_r));
+ map(0xd938, 0xd938).r(this, FUNC(tsamurai_state::unknown_d938_r));
+
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().w(this, FUNC(tsamurai_state::fg_colorram_w)).share("colorram");
+ map(0xe440, 0xe7ff).ram();
+ map(0xe800, 0xefff).ram().w(this, FUNC(tsamurai_state::bg_videoram_w)).share("bg_videoram");
+ map(0xf000, 0xf3ff).ram().share("spriteram");
+
+ map(0xf400, 0xf400).nopw();/* This is always written with F401, F402 & F403 data */
+ map(0xf401, 0xf401).w(this, FUNC(tsamurai_state::m660_sound_command3_w));
+ map(0xf402, 0xf402).w(this, FUNC(tsamurai_state::sound_command2_w));
+ map(0xf403, 0xf403).w(this, FUNC(tsamurai_state::sound_command1_w));
+
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2").w(this, FUNC(tsamurai_state::bgcolor_w));
+ map(0xf802, 0xf802).portr("SYSTEM").w(this, FUNC(tsamurai_state::scrolly_w));
+ map(0xf803, 0xf803).w(this, FUNC(tsamurai_state::scrollx_w));
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::z80_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
+
+void tsamurai_state::z80_m660_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).nopw(); /* ? */
+ map(0x01, 0x01).nopw(); /* Written continuously. Increments with level. */
+ map(0x02, 0x02).nopw(); /* Always follows above with 0x01 data */
+}
+
+void tsamurai_state::vsgongf_audio_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
READ8_MEMBER(tsamurai_state::sound_command1_r)
{
@@ -237,58 +242,64 @@ READ8_MEMBER(tsamurai_state::m660_sound_command3_r)
}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound1_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(sound_command1_r)
- AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x7f00, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound1_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command1_r));
+ map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */
+ map(0x6002, 0x6002).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x7f00, 0x7fff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound2_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x6000) AM_READ(sound_command2_r)
- AM_RANGE(0x6001, 0x6001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x6002, 0x6002) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x7f00, 0x7fff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound2_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x6000).r(this, FUNC(tsamurai_state::sound_command2_r));
+ map(0x6001, 0x6001).nopw(); /* ? - probably clear IRQ */
+ map(0x6002, 0x6002).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x7f00, 0x7fff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound1_m660_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(sound_command1_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac1", dac_byte_interface, write)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound1_m660_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command1_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0xc002, 0xc002).w("dac1", FUNC(dac_byte_interface::write));
+ map(0x8000, 0x87ff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound2_m660_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(sound_command2_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0xc002, 0xc002) AM_DEVWRITE("dac2", dac_byte_interface, write)
- AM_RANGE(0x8000, 0x87ff) AM_RAM
-ADDRESS_MAP_END
+void tsamurai_state::sound2_m660_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::sound_command2_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0xc002, 0xc002).w("dac2", FUNC(dac_byte_interface::write));
+ map(0x8000, 0x87ff).ram();
+}
/*******************************************************************************/
-ADDRESS_MAP_START(tsamurai_state::sound3_m660_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xc000, 0xc000) AM_READ(m660_sound_command3_r)
- AM_RANGE(0xc001, 0xc001) AM_WRITENOP /* ? - probably clear IRQ */
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xfffc, 0xffff) AM_RAM /* CPU writes here - music data */
-ADDRESS_MAP_END
+void tsamurai_state::sound3_m660_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xc000, 0xc000).r(this, FUNC(tsamurai_state::m660_sound_command3_r));
+ map(0xc001, 0xc001).nopw(); /* ? - probably clear IRQ */
+ map(0x8000, 0x87ff).ram();
+ map(0xfffc, 0xffff).ram(); /* CPU writes here - music data */
+}
-ADDRESS_MAP_START(tsamurai_state::sound3_m660_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVWRITE("aysnd", ay8910_device, address_data_w)
-ADDRESS_MAP_END
+void tsamurai_state::sound3_m660_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).w("aysnd", FUNC(ay8910_device::address_data_w));
+}
/*******************************************************************************/
@@ -332,36 +343,38 @@ WRITE8_MEMBER(tsamurai_state::vsgongf_sound_command_w)
m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE);
}
-ADDRESS_MAP_START(tsamurai_state::vsgongf_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0xa003, 0xa003) AM_READONLY
- AM_RANGE(0xa006, 0xa006) AM_READ(vsgongf_a006_r) /* protection */
- AM_RANGE(0xa100, 0xa100) AM_READ(vsgongf_a100_r) /* protection */
- AM_RANGE(0xc000, 0xc7ff) AM_RAM /* work ram */
- AM_RANGE(0xe000, 0xe3ff) AM_RAM_WRITE(fg_videoram_w) AM_SHARE("videoram")
- AM_RANGE(0xe400, 0xe43f) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xe440, 0xe47b) AM_RAM
- AM_RANGE(0xe800, 0xe800) AM_WRITE(vsgongf_sound_command_w)
- AM_RANGE(0xec00, 0xec06) AM_WRITEONLY
- AM_RANGE(0xf000, 0xf000) AM_WRITE(vsgongf_color_w)
- AM_RANGE(0xf400, 0xf400) AM_WRITEONLY /* vreg? always 0 */
- AM_RANGE(0xf800, 0xf800) AM_READ_PORT("P1")
- AM_RANGE(0xf801, 0xf801) AM_READ_PORT("P2")
- AM_RANGE(0xf802, 0xf802) AM_READ_PORT("SYSTEM")
- AM_RANGE(0xf804, 0xf804) AM_READ_PORT("DSW1")
- AM_RANGE(0xf805, 0xf805) AM_READ_PORT("DSW2")
- AM_RANGE(0xf800, 0xf800) AM_WRITENOP
- AM_RANGE(0xf801, 0xf801) AM_WRITENOP /* vreg? always 0 */
- AM_RANGE(0xf803, 0xf803) AM_WRITENOP /* vreg? always 0 */
- AM_RANGE(0xfc00, 0xfc07) AM_DEVWRITE("mainlatch", ls259_device, write_d0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tsamurai_state::sound_vsgongf_map)
- AM_RANGE(0x0000, 0x3fff) AM_ROM
- AM_RANGE(0x6000, 0x63ff) AM_RAM /* work RAM */
- AM_RANGE(0x8000, 0x8000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) AM_WRITE(vsgongf_sound_nmi_enable_w) /* NMI enable */
- AM_RANGE(0xa000, 0xa000) AM_DEVWRITE("dac", dac_byte_interface, write)
-ADDRESS_MAP_END
+void tsamurai_state::vsgongf_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0xa003, 0xa003).readonly();
+ map(0xa006, 0xa006).r(this, FUNC(tsamurai_state::vsgongf_a006_r)); /* protection */
+ map(0xa100, 0xa100).r(this, FUNC(tsamurai_state::vsgongf_a100_r)); /* protection */
+ map(0xc000, 0xc7ff).ram(); /* work ram */
+ map(0xe000, 0xe3ff).ram().w(this, FUNC(tsamurai_state::fg_videoram_w)).share("videoram");
+ map(0xe400, 0xe43f).ram().share("spriteram");
+ map(0xe440, 0xe47b).ram();
+ map(0xe800, 0xe800).w(this, FUNC(tsamurai_state::vsgongf_sound_command_w));
+ map(0xec00, 0xec06).writeonly();
+ map(0xf000, 0xf000).w(this, FUNC(tsamurai_state::vsgongf_color_w));
+ map(0xf400, 0xf400).writeonly(); /* vreg? always 0 */
+ map(0xf800, 0xf800).portr("P1");
+ map(0xf801, 0xf801).portr("P2");
+ map(0xf802, 0xf802).portr("SYSTEM");
+ map(0xf804, 0xf804).portr("DSW1");
+ map(0xf805, 0xf805).portr("DSW2");
+ map(0xf800, 0xf800).nopw();
+ map(0xf801, 0xf801).nopw(); /* vreg? always 0 */
+ map(0xf803, 0xf803).nopw(); /* vreg? always 0 */
+ map(0xfc00, 0xfc07).w("mainlatch", FUNC(ls259_device::write_d0));
+}
+
+void tsamurai_state::sound_vsgongf_map(address_map &map)
+{
+ map(0x0000, 0x3fff).rom();
+ map(0x6000, 0x63ff).ram(); /* work RAM */
+ map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w(this, FUNC(tsamurai_state::vsgongf_sound_nmi_enable_w)); /* NMI enable */
+ map(0xa000, 0xa000).w("dac", FUNC(dac_byte_interface::write));
+}
/*******************************************************************************/