summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/contra.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/contra.cpp')
-rw-r--r--src/mame/drivers/contra.cpp90
1 files changed, 46 insertions, 44 deletions
diff --git a/src/mame/drivers/contra.cpp b/src/mame/drivers/contra.cpp
index 86075041e3d..360a3ce00d7 100644
--- a/src/mame/drivers/contra.cpp
+++ b/src/mame/drivers/contra.cpp
@@ -55,50 +55,52 @@ WRITE8_MEMBER(contra_state::contra_coin_counter_w)
}
-ADDRESS_MAP_START(contra_state::contra_map)
- AM_RANGE(0x0000, 0x0007) AM_WRITE(contra_K007121_ctrl_0_w)
- AM_RANGE(0x0010, 0x0010) AM_READ_PORT("SYSTEM")
- AM_RANGE(0x0011, 0x0011) AM_READ_PORT("P1")
- AM_RANGE(0x0012, 0x0012) AM_READ_PORT("P2")
-
- AM_RANGE(0x0014, 0x0014) AM_READ_PORT("DSW1")
- AM_RANGE(0x0015, 0x0015) AM_READ_PORT("DSW2")
- AM_RANGE(0x0016, 0x0016) AM_READ_PORT("DSW3")
-
- AM_RANGE(0x0018, 0x0018) AM_WRITE(contra_coin_counter_w)
- AM_RANGE(0x001a, 0x001a) AM_WRITE(contra_sh_irqtrigger_w)
- AM_RANGE(0x001c, 0x001c) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x001e, 0x001e) AM_WRITENOP /* ? */
- AM_RANGE(0x0060, 0x0067) AM_WRITE(contra_K007121_ctrl_1_w)
-
- AM_RANGE(0x0c00, 0x0cff) AM_RAM_DEVWRITE("palette", palette_device, write_indirect) AM_SHARE("palette")
-
- AM_RANGE(0x1000, 0x1fff) AM_RAM
-
- AM_RANGE(0x2000, 0x5fff) AM_READONLY
- AM_RANGE(0x2000, 0x23ff) AM_WRITE(contra_fg_cram_w) AM_SHARE("fg_cram")
- AM_RANGE(0x2400, 0x27ff) AM_WRITE(contra_fg_vram_w) AM_SHARE("fg_vram")
- AM_RANGE(0x2800, 0x2bff) AM_WRITE(contra_text_cram_w) AM_SHARE("tx_cram")
- AM_RANGE(0x2c00, 0x2fff) AM_WRITE(contra_text_vram_w) AM_SHARE("tx_vram")
- AM_RANGE(0x3000, 0x37ff) AM_WRITEONLY AM_SHARE("spriteram")/* 2nd bank is at 0x5000 */
- AM_RANGE(0x3800, 0x3fff) AM_WRITEONLY // second sprite buffer
- AM_RANGE(0x4000, 0x43ff) AM_WRITE(contra_bg_cram_w) AM_SHARE("bg_cram")
- AM_RANGE(0x4400, 0x47ff) AM_WRITE(contra_bg_vram_w) AM_SHARE("bg_vram")
- AM_RANGE(0x4800, 0x5fff) AM_WRITEONLY
-
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x7000, 0x7000) AM_WRITE(contra_bankswitch_w)
-
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(contra_state::sound_map)
- AM_RANGE(0x0000, 0x0000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
- AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0x4000, 0x4000) AM_WRITENOP /* read triggers irq reset and latch read (in the hardware only). */
- AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void contra_state::contra_map(address_map &map)
+{
+ map(0x0000, 0x0007).w(this, FUNC(contra_state::contra_K007121_ctrl_0_w));
+ map(0x0010, 0x0010).portr("SYSTEM");
+ map(0x0011, 0x0011).portr("P1");
+ map(0x0012, 0x0012).portr("P2");
+
+ map(0x0014, 0x0014).portr("DSW1");
+ map(0x0015, 0x0015).portr("DSW2");
+ map(0x0016, 0x0016).portr("DSW3");
+
+ map(0x0018, 0x0018).w(this, FUNC(contra_state::contra_coin_counter_w));
+ map(0x001a, 0x001a).w(this, FUNC(contra_state::contra_sh_irqtrigger_w));
+ map(0x001c, 0x001c).w("soundlatch", FUNC(generic_latch_8_device::write));
+ map(0x001e, 0x001e).nopw(); /* ? */
+ map(0x0060, 0x0067).w(this, FUNC(contra_state::contra_K007121_ctrl_1_w));
+
+ map(0x0c00, 0x0cff).ram().w(m_palette, FUNC(palette_device::write_indirect)).share("palette");
+
+ map(0x1000, 0x1fff).ram();
+
+ map(0x2000, 0x5fff).readonly();
+ map(0x2000, 0x23ff).w(this, FUNC(contra_state::contra_fg_cram_w)).share("fg_cram");
+ map(0x2400, 0x27ff).w(this, FUNC(contra_state::contra_fg_vram_w)).share("fg_vram");
+ map(0x2800, 0x2bff).w(this, FUNC(contra_state::contra_text_cram_w)).share("tx_cram");
+ map(0x2c00, 0x2fff).w(this, FUNC(contra_state::contra_text_vram_w)).share("tx_vram");
+ map(0x3000, 0x37ff).writeonly().share("spriteram");/* 2nd bank is at 0x5000 */
+ map(0x3800, 0x3fff).writeonly(); // second sprite buffer
+ map(0x4000, 0x43ff).w(this, FUNC(contra_state::contra_bg_cram_w)).share("bg_cram");
+ map(0x4400, 0x47ff).w(this, FUNC(contra_state::contra_bg_vram_w)).share("bg_vram");
+ map(0x4800, 0x5fff).writeonly();
+
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x7000, 0x7000).w(this, FUNC(contra_state::contra_bankswitch_w));
+
+ map(0x8000, 0xffff).rom();
+}
+
+void contra_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x0000).r("soundlatch", FUNC(generic_latch_8_device::read));
+ map(0x2000, 0x2001).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0x4000, 0x4000).nopw(); /* read triggers irq reset and latch read (in the hardware only). */
+ map(0x6000, 0x67ff).ram();
+ map(0x8000, 0xffff).rom();
+}