summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/vsnes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vsnes.cpp')
-rw-r--r--src/mame/drivers/vsnes.cpp88
1 files changed, 46 insertions, 42 deletions
diff --git a/src/mame/drivers/vsnes.cpp b/src/mame/drivers/vsnes.cpp
index 371cc6a761b..1e72d26fdb2 100644
--- a/src/mame/drivers/vsnes.cpp
+++ b/src/mame/drivers/vsnes.cpp
@@ -195,27 +195,29 @@ WRITE8_MEMBER(vsnes_state::vsnes_coin_counter_1_w)
/******************************************************************************/
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu2_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram_1")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu2", ppu2c0x_device, read, write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_1_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_1_r, vsnes_in0_1_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_WRITE(vsnes_coin_counter_1_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra2")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vsnes_state::vsnes_cpu1_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram");
+ map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w));
+ map(0x6000, 0x7fff).bankrw("extra1");
+ map(0x8000, 0xffff).rom();
+}
+
+void vsnes_state::vsnes_cpu2_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram_1");
+ map(0x2000, 0x3fff).rw(m_ppu2, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_1_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_1_r), FUNC(vsnes_state::vsnes_in0_1_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).w(this, FUNC(vsnes_state::vsnes_coin_counter_1_w));
+ map(0x6000, 0x7fff).bankrw("extra2");
+ map(0x8000, 0xffff).rom();
+}
@@ -244,38 +246,40 @@ READ8_MEMBER(vsnes_state::vsnes_bootleg_z80_data_r)
// the bootleg still makes writes to the PSG addresses, it seems the Z80 should interpret them to play the sounds
-ADDRESS_MAP_START(vsnes_state::vsnes_cpu1_bootleg_map)
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x1800) AM_RAM AM_SHARE("work_ram")
- AM_RANGE(0x2000, 0x3fff) AM_DEVREADWRITE("ppu1", ppu2c0x_device, read, write)
- AM_RANGE(0x4000, 0x4017) AM_WRITE(bootleg_sound_write)
- AM_RANGE(0x4014, 0x4014) AM_WRITE(sprite_dma_0_w)
- AM_RANGE(0x4016, 0x4016) AM_READWRITE(vsnes_in0_r, vsnes_in0_w)
- AM_RANGE(0x4017, 0x4017) AM_READ(vsnes_in1_r) /* IN1 - input port 2 / PSG second control register */
- AM_RANGE(0x4020, 0x4020) AM_READWRITE(vsnes_coin_counter_r, vsnes_coin_counter_w)
- AM_RANGE(0x6000, 0x7fff) AM_RAMBANK("extra1")
- AM_RANGE(0x8000, 0xffff) AM_ROM
-ADDRESS_MAP_END
+void vsnes_state::vsnes_cpu1_bootleg_map(address_map &map)
+{
+ map(0x0000, 0x07ff).mirror(0x1800).ram().share("work_ram");
+ map(0x2000, 0x3fff).rw(m_ppu1, FUNC(ppu2c0x_device::read), FUNC(ppu2c0x_device::write));
+ map(0x4000, 0x4017).w(this, FUNC(vsnes_state::bootleg_sound_write));
+ map(0x4014, 0x4014).w(this, FUNC(vsnes_state::sprite_dma_0_w));
+ map(0x4016, 0x4016).rw(this, FUNC(vsnes_state::vsnes_in0_r), FUNC(vsnes_state::vsnes_in0_w));
+ map(0x4017, 0x4017).r(this, FUNC(vsnes_state::vsnes_in1_r)); /* IN1 - input port 2 / PSG second control register */
+ map(0x4020, 0x4020).rw(this, FUNC(vsnes_state::vsnes_coin_counter_r), FUNC(vsnes_state::vsnes_coin_counter_w));
+ map(0x6000, 0x7fff).bankrw("extra1");
+ map(0x8000, 0xffff).rom();
+}
READ8_MEMBER( vsnes_state::vsnes_bootleg_z80_latch_r )
{
return 0x00;
}
-ADDRESS_MAP_START(vsnes_state::vsnes_bootleg_z80_map)
- AM_RANGE(0x0000, 0x1fff) AM_ROM
- AM_RANGE(0x2000, 0x23ff) AM_RAM
+void vsnes_state::vsnes_bootleg_z80_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rom();
+ map(0x2000, 0x23ff).ram();
- AM_RANGE(0x4000, 0x4000) AM_READ( vsnes_bootleg_z80_data_r ) // read in IRQ & NMI
+ map(0x4000, 0x4000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_data_r)); // read in IRQ & NMI
- AM_RANGE(0x6000, 0x6000) AM_READ( vsnes_bootleg_z80_latch_r ) // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?)
- AM_RANGE(0x6001, 0x6001) AM_READ( vsnes_bootleg_z80_address_r ) // ^
+ map(0x6000, 0x6000).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_latch_r)); // read in NMI, not explicitly stored (purpose? maybe clear IRQ ?)
+ map(0x6001, 0x6001).r(this, FUNC(vsnes_state::vsnes_bootleg_z80_address_r)); // ^
- AM_RANGE(0x60FA, 0x60FA) AM_DEVWRITE("sn1", sn76489_device, write)
- AM_RANGE(0x60F9, 0x60F9) AM_DEVWRITE("sn2", sn76489_device, write)
- AM_RANGE(0x60FF, 0x60FF) AM_DEVWRITE("sn3", sn76489_device, write)
+ map(0x60FA, 0x60FA).w("sn1", FUNC(sn76489_device::write));
+ map(0x60F9, 0x60F9).w("sn2", FUNC(sn76489_device::write));
+ map(0x60FF, 0x60FF).w("sn3", FUNC(sn76489_device::write));
-ADDRESS_MAP_END
+}
/******************************************************************************/