summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/shangha3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/shangha3.cpp')
-rw-r--r--src/mame/drivers/shangha3.cpp129
1 files changed, 67 insertions, 62 deletions
diff --git a/src/mame/drivers/shangha3.cpp b/src/mame/drivers/shangha3.cpp
index 05a4d7f998d..87ca8d70ca2 100644
--- a/src/mame/drivers/shangha3.cpp
+++ b/src/mame/drivers/shangha3.cpp
@@ -115,68 +115,73 @@ WRITE16_MEMBER(shangha3_state::irq_ack_w)
m_maincpu->set_input_line(4, CLEAR_LINE);
}
-ADDRESS_MAP_START(shangha3_state::shangha3_map)
- AM_RANGE(0x000000, 0x07ffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
- AM_RANGE(0x20000c, 0x20000d) AM_WRITE(shangha3_coinctrl_w)
- AM_RANGE(0x20001e, 0x20001f) AM_DEVREAD8("aysnd", ym2149_device, data_r, 0x00ff)
- AM_RANGE(0x20002e, 0x20002f) AM_DEVWRITE8("aysnd", ym2149_device, data_w, 0x00ff)
- AM_RANGE(0x20003e, 0x20003f) AM_DEVWRITE8("aysnd", ym2149_device, address_w, 0x00ff)
- AM_RANGE(0x20004e, 0x20004f) AM_READWRITE(shangha3_prot_r,shangha3_prot_w)
- AM_RANGE(0x20006e, 0x20006f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::heberpop_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x200000, 0x200001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x200002, 0x200003) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x200004, 0x200005) AM_READ_PORT("DSW")
- AM_RANGE(0x200008, 0x200009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x20000a, 0x20000b) AM_WRITE(irq_ack_w)
- AM_RANGE(0x20000c, 0x20000d) AM_WRITE(heberpop_coinctrl_w)
- AM_RANGE(0x20000e, 0x20000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
- AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::blocken_map)
- AM_RANGE(0x000000, 0x0fffff) AM_ROM
- AM_RANGE(0x100000, 0x100001) AM_READ_PORT("INPUTS")
- AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") AM_WRITENOP // w -> unknown purpose
- AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW")
- AM_RANGE(0x100008, 0x100009) AM_WRITE(blitter_go_w)
- AM_RANGE(0x10000a, 0x10000b) AM_READNOP AM_WRITE(irq_ack_w) // r -> unknown purpose (value doesn't matter, left-over?)
- AM_RANGE(0x10000c, 0x10000d) AM_WRITE(blocken_coinctrl_w)
- AM_RANGE(0x10000e, 0x10000f) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0x200000, 0x200fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("ram") /* gfx & work ram */
- AM_RANGE(0x340000, 0x340001) AM_WRITE(flipscreen_w)
- AM_RANGE(0x360000, 0x360001) AM_WRITE(gfxlist_addr_w)
- AM_RANGE(0x800000, 0xb7ffff) AM_ROM AM_REGION("gfx1", 0)
-ADDRESS_MAP_END
-
-
-ADDRESS_MAP_START(shangha3_state::heberpop_sound_map)
- AM_RANGE(0x0000, 0xf7ff) AM_ROM
- AM_RANGE(0xf800, 0xffff) AM_RAM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(shangha3_state::heberpop_sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write)
- AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void shangha3_state::shangha3_map(address_map &map)
+{
+ map(0x000000, 0x07ffff).rom();
+ map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x200001).portr("INPUTS");
+ map(0x200002, 0x200003).portr("SYSTEM");
+ map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w));
+ map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::shangha3_coinctrl_w));
+ map(0x20001f, 0x20001f).r("aysnd", FUNC(ym2149_device::data_r));
+ map(0x20002f, 0x20002f).w("aysnd", FUNC(ym2149_device::data_w));
+ map(0x20003f, 0x20003f).w("aysnd", FUNC(ym2149_device::address_w));
+ map(0x20004e, 0x20004f).rw(this, FUNC(shangha3_state::shangha3_prot_r), FUNC(shangha3_state::shangha3_prot_w));
+ map(0x20006f, 0x20006f).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+}
+
+void shangha3_state::heberpop_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x200000, 0x200001).portr("INPUTS");
+ map(0x200002, 0x200003).portr("SYSTEM");
+ map(0x200004, 0x200005).portr("DSW");
+ map(0x200008, 0x200009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x20000a, 0x20000b).w(this, FUNC(shangha3_state::irq_ack_w));
+ map(0x20000c, 0x20000d).w(this, FUNC(shangha3_state::heberpop_coinctrl_w));
+ map(0x20000f, 0x20000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+ map(0x800000, 0xb7ffff).rom().region("gfx1", 0);
+}
+
+void shangha3_state::blocken_map(address_map &map)
+{
+ map(0x000000, 0x0fffff).rom();
+ map(0x100000, 0x100001).portr("INPUTS");
+ map(0x100002, 0x100003).portr("SYSTEM").nopw(); // w -> unknown purpose
+ map(0x100004, 0x100005).portr("DSW");
+ map(0x100008, 0x100009).w(this, FUNC(shangha3_state::blitter_go_w));
+ map(0x10000a, 0x10000b).nopr().w(this, FUNC(shangha3_state::irq_ack_w)); // r -> unknown purpose (value doesn't matter, left-over?)
+ map(0x10000c, 0x10000d).w(this, FUNC(shangha3_state::blocken_coinctrl_w));
+ map(0x10000f, 0x10000f).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x200000, 0x200fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x300000, 0x30ffff).ram().share("ram"); /* gfx & work ram */
+ map(0x340000, 0x340001).w(this, FUNC(shangha3_state::flipscreen_w));
+ map(0x360000, 0x360001).w(this, FUNC(shangha3_state::gfxlist_addr_w));
+ map(0x800000, 0xb7ffff).rom().region("gfx1", 0);
+}
+
+
+void shangha3_state::heberpop_sound_map(address_map &map)
+{
+ map(0x0000, 0xf7ff).rom();
+ map(0xf800, 0xffff).ram();
+}
+
+void shangha3_state::heberpop_sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
+ map(0x80, 0x80).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xc0, 0xc0).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
static INPUT_PORTS_START( shangha3 )