summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/simpsons.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/simpsons.cpp')
-rw-r--r--src/mame/drivers/simpsons.cpp88
1 files changed, 46 insertions, 42 deletions
diff --git a/src/mame/drivers/simpsons.cpp b/src/mame/drivers/simpsons.cpp
index 138a1f78967..99e338da0ed 100644
--- a/src/mame/drivers/simpsons.cpp
+++ b/src/mame/drivers/simpsons.cpp
@@ -115,39 +115,42 @@ Notes:
***************************************************************************/
-ADDRESS_MAP_START(simpsons_state::main_map)
- AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x0000, 0x0fff) AM_DEVICE("bank0000", address_map_bank_device, amap8)
- AM_RANGE(0x2000, 0x3fff) AM_DEVICE("bank2000", address_map_bank_device, amap8)
- AM_RANGE(0x1f80, 0x1f80) AM_READ_PORT("COIN")
- AM_RANGE(0x1f81, 0x1f81) AM_READ_PORT("TEST")
- AM_RANGE(0x1f90, 0x1f90) AM_READ_PORT("P1")
- AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P2")
- AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P3")
- AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("P4")
- AM_RANGE(0x1fa0, 0x1fa7) AM_DEVWRITE("k053246", k053247_device, k053246_w)
- AM_RANGE(0x1fb0, 0x1fbf) AM_DEVWRITE("k053251", k053251_device, write)
- AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w)
- AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w)
- AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r)
- AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE("k053260", k053260_device, main_read, main_write)
- AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD("k053246", k053247_device, k053246_r)
- AM_RANGE(0x1fca, 0x1fca) AM_DEVREAD("watchdog", watchdog_timer_device, reset_r)
- AM_RANGE(0x4000, 0x5fff) AM_RAM
- AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
- AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("maincpu", 0x78000)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(simpsons_state::bank0000_map)
- AM_RANGE(0x0000, 0x0fff) AM_DEVREADWRITE("k052109", k052109_device, read, write)
- AM_RANGE(0x1000, 0x1fff) AM_RAM_DEVWRITE("palette", palette_device, write8) AM_SHARE("palette")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(simpsons_state::bank2000_map)
- AM_RANGE(0x0000, 0x1fff) AM_READWRITE(simpsons_k052109_r, simpsons_k052109_w)
- AM_RANGE(0x2000, 0x2fff) AM_READWRITE(simpsons_k053247_r, simpsons_k053247_w)
- AM_RANGE(0x3000, 0x3fff) AM_RAM
-ADDRESS_MAP_END
+void simpsons_state::main_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x0000, 0x0fff).m(m_bank0000, FUNC(address_map_bank_device::amap8));
+ map(0x2000, 0x3fff).m(m_bank2000, FUNC(address_map_bank_device::amap8));
+ map(0x1f80, 0x1f80).portr("COIN");
+ map(0x1f81, 0x1f81).portr("TEST");
+ map(0x1f90, 0x1f90).portr("P1");
+ map(0x1f91, 0x1f91).portr("P2");
+ map(0x1f92, 0x1f92).portr("P3");
+ map(0x1f93, 0x1f93).portr("P4");
+ map(0x1fa0, 0x1fa7).w(m_k053246, FUNC(k053247_device::k053246_w));
+ map(0x1fb0, 0x1fbf).w(m_k053251, FUNC(k053251_device::write));
+ map(0x1fc0, 0x1fc0).w(this, FUNC(simpsons_state::simpsons_coin_counter_w));
+ map(0x1fc2, 0x1fc2).w(this, FUNC(simpsons_state::simpsons_eeprom_w));
+ map(0x1fc4, 0x1fc4).r(this, FUNC(simpsons_state::simpsons_sound_interrupt_r));
+ map(0x1fc6, 0x1fc7).rw("k053260", FUNC(k053260_device::main_read), FUNC(k053260_device::main_write));
+ map(0x1fc8, 0x1fc9).r(m_k053246, FUNC(k053247_device::k053246_r));
+ map(0x1fca, 0x1fca).r("watchdog", FUNC(watchdog_timer_device::reset_r));
+ map(0x4000, 0x5fff).ram();
+ map(0x6000, 0x7fff).bankr("bank1");
+ map(0x8000, 0xffff).rom().region("maincpu", 0x78000);
+}
+
+void simpsons_state::bank0000_map(address_map &map)
+{
+ map(0x0000, 0x0fff).rw(m_k052109, FUNC(k052109_device::read), FUNC(k052109_device::write));
+ map(0x1000, 0x1fff).ram().w("palette", FUNC(palette_device::write8)).share("palette");
+}
+
+void simpsons_state::bank2000_map(address_map &map)
+{
+ map(0x0000, 0x1fff).rw(this, FUNC(simpsons_state::simpsons_k052109_r), FUNC(simpsons_state::simpsons_k052109_w));
+ map(0x2000, 0x2fff).rw(this, FUNC(simpsons_state::simpsons_k053247_r), FUNC(simpsons_state::simpsons_k053247_w));
+ map(0x3000, 0x3fff).ram();
+}
WRITE8_MEMBER(simpsons_state::z80_bankswitch_w)
{
@@ -186,15 +189,16 @@ WRITE8_MEMBER(simpsons_state::z80_arm_nmi_w)
timer_set(attotime::from_usec(25), TIMER_NMI); /* kludge until the K053260 is emulated correctly */
}
-ADDRESS_MAP_START(simpsons_state::z80_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
- AM_RANGE(0xf000, 0xf7ff) AM_RAM
- AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write)
- AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
- AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_device, read, write)
- AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
-ADDRESS_MAP_END
+void simpsons_state::z80_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank2");
+ map(0xf000, 0xf7ff).ram();
+ map(0xf800, 0xf801).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
+ map(0xfa00, 0xfa00).w(this, FUNC(simpsons_state::z80_arm_nmi_w));
+ map(0xfc00, 0xfc2f).rw("k053260", FUNC(k053260_device::read), FUNC(k053260_device::write));
+ map(0xfe00, 0xfe00).w(this, FUNC(simpsons_state::z80_bankswitch_w));
+}
/***************************************************************************