summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/twincobr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/twincobr.cpp')
-rw-r--r--src/mame/drivers/twincobr.cpp99
1 files changed, 52 insertions, 47 deletions
diff --git a/src/mame/drivers/twincobr.cpp b/src/mame/drivers/twincobr.cpp
index e7bd1c44342..276870da5cb 100644
--- a/src/mame/drivers/twincobr.cpp
+++ b/src/mame/drivers/twincobr.cpp
@@ -393,65 +393,70 @@ Shark Zame
/***************************** 68000 Memory Map *****************************/
-ADDRESS_MAP_START(twincobr_state::main_program_map)
- AM_RANGE(0x000000, 0x02ffff) AM_ROM
- AM_RANGE(0x030000, 0x033fff) AM_RAM /* 68K and DSP shared RAM */
- AM_RANGE(0x040000, 0x040fff) AM_RAM AM_SHARE("spriteram16")
- AM_RANGE(0x050000, 0x050dff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0x060000, 0x060001) AM_DEVWRITE8("crtc", mc6845_device, address_w, 0x00ff)
- AM_RANGE(0x060002, 0x060003) AM_DEVWRITE8("crtc", mc6845_device, register_w, 0x00ff)
- AM_RANGE(0x070000, 0x070003) AM_WRITE(twincobr_txscroll_w) /* text layer scroll */
- AM_RANGE(0x070004, 0x070005) AM_WRITE(twincobr_txoffs_w) /* offset in text video RAM */
- AM_RANGE(0x072000, 0x072003) AM_WRITE(twincobr_bgscroll_w) /* bg layer scroll */
- AM_RANGE(0x072004, 0x072005) AM_WRITE(twincobr_bgoffs_w) /* offset in bg video RAM */
- AM_RANGE(0x074000, 0x074003) AM_WRITE(twincobr_fgscroll_w) /* fg layer scroll */
- AM_RANGE(0x074004, 0x074005) AM_WRITE(twincobr_fgoffs_w) /* offset in fg video RAM */
- AM_RANGE(0x076000, 0x076003) AM_WRITE(twincobr_exscroll_w) /* Spare layer scroll */
- AM_RANGE(0x078000, 0x078001) AM_READ_PORT("DSWA")
- AM_RANGE(0x078002, 0x078003) AM_READ_PORT("DSWB")
- AM_RANGE(0x078004, 0x078005) AM_READ_PORT("P1")
- AM_RANGE(0x078006, 0x078007) AM_READ_PORT("P2")
- AM_RANGE(0x078008, 0x078009) AM_READ_PORT("VBLANK") /* V-Blank & FShark Coin/Start */
- AM_RANGE(0x07800a, 0x07800b) AM_DEVWRITE8("coinlatch", ls259_device, write_nibble_d0, 0x00ff) /* Flying Shark DSP Comms & coin stuff */
- AM_RANGE(0x07800c, 0x07800d) AM_DEVWRITE8("mainlatch", ls259_device, write_nibble_d0, 0x00ff) /* Twin Cobra DSP Comms & system control */
- AM_RANGE(0x07a000, 0x07afff) AM_READWRITE(twincobr_sharedram_r, twincobr_sharedram_w) /* 16-bit on 68000 side, 8-bit on Z80 side */
- AM_RANGE(0x07e000, 0x07e001) AM_READWRITE(twincobr_txram_r, twincobr_txram_w) /* data for text video RAM */
- AM_RANGE(0x07e002, 0x07e003) AM_READWRITE(twincobr_bgram_r, twincobr_bgram_w) /* data for bg video RAM */
- AM_RANGE(0x07e004, 0x07e005) AM_READWRITE(twincobr_fgram_r, twincobr_fgram_w) /* data for fg video RAM */
-ADDRESS_MAP_END
+void twincobr_state::main_program_map(address_map &map)
+{
+ map(0x000000, 0x02ffff).rom();
+ map(0x030000, 0x033fff).ram(); /* 68K and DSP shared RAM */
+ map(0x040000, 0x040fff).ram().share("spriteram16");
+ map(0x050000, 0x050dff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0x060001, 0x060001).w("crtc", FUNC(mc6845_device::address_w));
+ map(0x060003, 0x060003).w("crtc", FUNC(mc6845_device::register_w));
+ map(0x070000, 0x070003).w(this, FUNC(twincobr_state::twincobr_txscroll_w)); /* text layer scroll */
+ map(0x070004, 0x070005).w(this, FUNC(twincobr_state::twincobr_txoffs_w)); /* offset in text video RAM */
+ map(0x072000, 0x072003).w(this, FUNC(twincobr_state::twincobr_bgscroll_w)); /* bg layer scroll */
+ map(0x072004, 0x072005).w(this, FUNC(twincobr_state::twincobr_bgoffs_w)); /* offset in bg video RAM */
+ map(0x074000, 0x074003).w(this, FUNC(twincobr_state::twincobr_fgscroll_w)); /* fg layer scroll */
+ map(0x074004, 0x074005).w(this, FUNC(twincobr_state::twincobr_fgoffs_w)); /* offset in fg video RAM */
+ map(0x076000, 0x076003).w(this, FUNC(twincobr_state::twincobr_exscroll_w)); /* Spare layer scroll */
+ map(0x078000, 0x078001).portr("DSWA");
+ map(0x078002, 0x078003).portr("DSWB");
+ map(0x078004, 0x078005).portr("P1");
+ map(0x078006, 0x078007).portr("P2");
+ map(0x078008, 0x078009).portr("VBLANK"); /* V-Blank & FShark Coin/Start */
+ map(0x07800b, 0x07800b).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Flying Shark DSP Comms & coin stuff */
+ map(0x07800d, 0x07800d).w("mainlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra DSP Comms & system control */
+ map(0x07a000, 0x07afff).rw(this, FUNC(twincobr_state::twincobr_sharedram_r), FUNC(twincobr_state::twincobr_sharedram_w)); /* 16-bit on 68000 side, 8-bit on Z80 side */
+ map(0x07e000, 0x07e001).rw(this, FUNC(twincobr_state::twincobr_txram_r), FUNC(twincobr_state::twincobr_txram_w)); /* data for text video RAM */
+ map(0x07e002, 0x07e003).rw(this, FUNC(twincobr_state::twincobr_bgram_r), FUNC(twincobr_state::twincobr_bgram_w)); /* data for bg video RAM */
+ map(0x07e004, 0x07e005).rw(this, FUNC(twincobr_state::twincobr_fgram_r), FUNC(twincobr_state::twincobr_fgram_w)); /* data for fg video RAM */
+}
/***************************** Z80 Memory Map *******************************/
-ADDRESS_MAP_START(twincobr_state::sound_program_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("sharedram")
-ADDRESS_MAP_END
+void twincobr_state::sound_program_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram().share("sharedram");
+}
-ADDRESS_MAP_START(twincobr_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("ymsnd", ym3812_device, read, write)
- AM_RANGE(0x10, 0x10) AM_READ_PORT("SYSTEM") /* Twin Cobra - Coin/Start */
- AM_RANGE(0x20, 0x20) AM_DEVWRITE("coinlatch", ls259_device, write_nibble_d0) /* Twin Cobra coin count-lockout */
- AM_RANGE(0x40, 0x40) AM_READ_PORT("DSWA")
- AM_RANGE(0x50, 0x50) AM_READ_PORT("DSWB")
-ADDRESS_MAP_END
+void twincobr_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x01).rw("ymsnd", FUNC(ym3812_device::read), FUNC(ym3812_device::write));
+ map(0x10, 0x10).portr("SYSTEM"); /* Twin Cobra - Coin/Start */
+ map(0x20, 0x20).w("coinlatch", FUNC(ls259_device::write_nibble_d0)); /* Twin Cobra coin count-lockout */
+ map(0x40, 0x40).portr("DSWA");
+ map(0x50, 0x50).portr("DSWB");
+}
/***************************** TMS32010 Memory Map **************************/
-ADDRESS_MAP_START(twincobr_state::DSP_program_map)
- AM_RANGE(0x000, 0x7ff) AM_ROM
-ADDRESS_MAP_END
+void twincobr_state::DSP_program_map(address_map &map)
+{
+ map(0x000, 0x7ff).rom();
+}
/* $000 - 08F TMS32010 Internal Data RAM in Data Address Space */
-ADDRESS_MAP_START(twincobr_state::DSP_io_map)
- AM_RANGE(0, 0) AM_WRITE(twincobr_dsp_addrsel_w)
- AM_RANGE(1, 1) AM_READWRITE(twincobr_dsp_r, twincobr_dsp_w)
- AM_RANGE(2, 2) AM_READWRITE(fsharkbt_dsp_r, fsharkbt_dsp_w)
- AM_RANGE(3, 3) AM_WRITE(twincobr_dsp_bio_w)
-ADDRESS_MAP_END
+void twincobr_state::DSP_io_map(address_map &map)
+{
+ map(0, 0).w(this, FUNC(twincobr_state::twincobr_dsp_addrsel_w));
+ map(1, 1).rw(this, FUNC(twincobr_state::twincobr_dsp_r), FUNC(twincobr_state::twincobr_dsp_w));
+ map(2, 2).rw(this, FUNC(twincobr_state::fsharkbt_dsp_r), FUNC(twincobr_state::fsharkbt_dsp_w));
+ map(3, 3).w(this, FUNC(twincobr_state::twincobr_dsp_bio_w));
+}
/*****************************************************************************