diff options
Diffstat (limited to 'src/mame/drivers/twincobr.cpp')
-rw-r--r-- | src/mame/drivers/twincobr.cpp | 99 |
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)); +} /***************************************************************************** |