summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/mitchell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/mitchell.cpp')
-rw-r--r--src/mame/drivers/mitchell.cpp210
1 files changed, 110 insertions, 100 deletions
diff --git a/src/mame/drivers/mitchell.cpp b/src/mame/drivers/mitchell.cpp
index 18c14d502fa..390b0f5413b 100644
--- a/src/mame/drivers/mitchell.cpp
+++ b/src/mame/drivers/mitchell.cpp
@@ -315,70 +315,76 @@ WRITE8_MEMBER(mitchell_state::input_w)
*
*************************************/
-ADDRESS_MAP_START(mitchell_state::mgakuen_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_RAM_DEVWRITE("palette", palette_device, write8) /* palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(mgakuen_videoram_r, mgakuen_videoram_w) AM_SHARE("videoram") /* char RAM */
- AM_RANGE(0xe000, 0xefff) AM_RAM /* Work RAM */
- AM_RANGE(0xf000, 0xffff) AM_READWRITE(mgakuen_objram_r, mgakuen_objram_w) /* OBJ RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::mitchell_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r,pang_paletteram_w) /* Banked palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r,pang_colorram_w) AM_SHARE("colorram") /* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r,pang_videoram_w) AM_SHARE("videoram")/* Banked char / OBJ RAM */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::decrypted_opcodes_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROMBANK("bank0d")
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1d")
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::mitchell_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(pang_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x00, 0x02) AM_READ(input_r) /* The Mahjong games and Block Block need special input treatment */
- AM_RANGE(0x01, 0x01) AM_WRITE(input_w)
- AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("ymsnd", ym2413_device, data_port_w)
- AM_RANGE(0x04, 0x04) AM_DEVWRITE("ymsnd", ym2413_device, register_port_w)
- AM_RANGE(0x05, 0x05) AM_READ(pang_port5_r) AM_DEVWRITE("oki", okim6295_device, write)
- AM_RANGE(0x06, 0x06) AM_NOP /* watchdog? IRQ ack? video buffering? */
- AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */
- AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w)
-ADDRESS_MAP_END
+void mitchell_state::mgakuen_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).ram().w(m_palette, FUNC(palette_device::write8)); /* palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::mgakuen_videoram_r), FUNC(mitchell_state::mgakuen_videoram_w)).share("videoram"); /* char RAM */
+ map(0xe000, 0xefff).ram(); /* Work RAM */
+ map(0xf000, 0xffff).rw(this, FUNC(mitchell_state::mgakuen_objram_r), FUNC(mitchell_state::mgakuen_objram_w)); /* OBJ RAM */
+}
+
+void mitchell_state::mitchell_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1");
+ map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram"); /* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram");/* Banked char / OBJ RAM */
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::decrypted_opcodes_map(address_map &map)
+{
+ map(0x0000, 0x7fff).bankr("bank0d");
+ map(0x8000, 0xbfff).bankr("bank1d");
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::mitchell_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(mitchell_state::pang_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r)); /* The Mahjong games and Block Block need special input treatment */
+ map(0x01, 0x01).w(this, FUNC(mitchell_state::input_w));
+ map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).w("ymsnd", FUNC(ym2413_device::data_port_w));
+ map(0x04, 0x04).w("ymsnd", FUNC(ym2413_device::register_port_w));
+ map(0x05, 0x05).r(this, FUNC(mitchell_state::pang_port5_r)).w(m_oki, FUNC(okim6295_device::write));
+ map(0x06, 0x06).noprw(); /* watchdog? IRQ ack? video buffering? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */
+ map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w));
+ map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w));
+ map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w));
+}
/* spangbl */
-ADDRESS_MAP_START(mitchell_state::spangbl_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") AM_WRITENOP
- AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(pang_paletteram_r, pang_paletteram_w) /* Banked palette RAM */
- AM_RANGE(0xc800, 0xcfff) AM_READWRITE(pang_colorram_r, pang_colorram_w) AM_SHARE("colorram")/* Attribute RAM */
- AM_RANGE(0xd000, 0xdfff) AM_READWRITE(pang_videoram_r, pang_videoram_w) AM_SHARE("videoram") /* Banked char / OBJ RAM */
- AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("nvram") /* Work RAM */
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::spangbl_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x02) AM_READ(input_r)
- AM_RANGE(0x00, 0x00) AM_WRITE(pangbl_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x02, 0x02) AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_DEVWRITE("soundlatch", generic_latch_8_device, write)
- AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0")
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0x07, 0x07) AM_WRITE(pang_video_bank_w) /* Video RAM bank register */
- AM_RANGE(0x08, 0x08) AM_WRITE(eeprom_cs_w)
- AM_RANGE(0x10, 0x10) AM_WRITE(eeprom_clock_w)
- AM_RANGE(0x18, 0x18) AM_WRITE(eeprom_serial_w)
-ADDRESS_MAP_END
+void mitchell_state::spangbl_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("bank1").nopw();
+ map(0xc000, 0xc7ff).rw(this, FUNC(mitchell_state::pang_paletteram_r), FUNC(mitchell_state::pang_paletteram_w)); /* Banked palette RAM */
+ map(0xc800, 0xcfff).rw(this, FUNC(mitchell_state::pang_colorram_r), FUNC(mitchell_state::pang_colorram_w)).share("colorram");/* Attribute RAM */
+ map(0xd000, 0xdfff).rw(this, FUNC(mitchell_state::pang_videoram_r), FUNC(mitchell_state::pang_videoram_w)).share("videoram"); /* Banked char / OBJ RAM */
+ map(0xe000, 0xffff).ram().share("nvram"); /* Work RAM */
+}
+
+void mitchell_state::spangbl_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x02).r(this, FUNC(mitchell_state::input_r));
+ map(0x00, 0x00).w(this, FUNC(mitchell_state::pangbl_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x02, 0x02).w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).w(m_soundlatch, FUNC(generic_latch_8_device::write));
+ map(0x05, 0x05).portr("SYS0");
+ map(0x06, 0x06).nopw(); /* watchdog? irq ack? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::pang_video_bank_w)); /* Video RAM bank register */
+ map(0x08, 0x08).w(this, FUNC(mitchell_state::eeprom_cs_w));
+ map(0x10, 0x10).w(this, FUNC(mitchell_state::eeprom_clock_w));
+ map(0x18, 0x18).w(this, FUNC(mitchell_state::eeprom_serial_w));
+}
WRITE8_MEMBER(mitchell_state::sound_bankswitch_w)
{
@@ -387,25 +393,27 @@ WRITE8_MEMBER(mitchell_state::sound_bankswitch_w)
m_soundbank->set_entry(data & 7);
}
-ADDRESS_MAP_START(mitchell_state::spangbl_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym2413_device, write)
- AM_RANGE(0xf000, 0xf4ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(mitchell_state::pangba_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("soundbank")
- AM_RANGE(0xe000, 0xe000) AM_WRITE(sound_bankswitch_w)
- AM_RANGE(0xe400, 0xe400) AM_DEVWRITE("adpcm_select", ls157_device, ba_w)
- AM_RANGE(0xec00, 0xec01) AM_DEVWRITE("ymsnd", ym3812_device, write)
- AM_RANGE(0xf000, 0xf4ff) AM_RAM
- AM_RANGE(0xf800, 0xf800) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void mitchell_state::spangbl_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w));
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym2413_device::write));
+ map(0xf000, 0xf4ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
+
+void mitchell_state::pangba_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0xbfff).bankr("soundbank");
+ map(0xe000, 0xe000).w(this, FUNC(mitchell_state::sound_bankswitch_w));
+ map(0xe400, 0xe400).w(m_adpcm_select, FUNC(ls157_device::ba_w));
+ map(0xec00, 0xec01).w("ymsnd", FUNC(ym3812_device::write));
+ map(0xf000, 0xf4ff).ram();
+ map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
/**** Monsters World ****/
@@ -414,13 +422,14 @@ WRITE8_MEMBER(mitchell_state::oki_banking_w)
m_oki->set_rom_bank(data & 3);
}
-ADDRESS_MAP_START(mitchell_state::mstworld_sound_map)
- AM_RANGE(0x0000, 0x7fff) AM_ROM
- AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0x9000, 0x9000) AM_WRITE(oki_banking_w)
- AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write)
- AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch", generic_latch_8_device, read)
-ADDRESS_MAP_END
+void mitchell_state::mstworld_sound_map(address_map &map)
+{
+ map(0x0000, 0x7fff).rom();
+ map(0x8000, 0x87ff).ram();
+ map(0x9000, 0x9000).w(this, FUNC(mitchell_state::oki_banking_w));
+ map(0x9800, 0x9800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xa000, 0xa000).r(m_soundlatch, FUNC(generic_latch_8_device::read));
+}
WRITE8_MEMBER(mitchell_state::mstworld_sound_w)
{
@@ -428,18 +437,19 @@ WRITE8_MEMBER(mitchell_state::mstworld_sound_w)
m_audiocpu->set_input_line(0, HOLD_LINE);
}
-ADDRESS_MAP_START(mitchell_state::mstworld_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_READ_PORT("IN0") AM_WRITE(mstworld_gfxctrl_w) /* Palette bank, layer enable, coin counters, more */
- AM_RANGE(0x01, 0x01) AM_READ_PORT("IN1")
- AM_RANGE(0x02, 0x02) AM_READ_PORT("IN2") AM_WRITE(pang_bankswitch_w) /* Code bank register */
- AM_RANGE(0x03, 0x03) AM_READ_PORT("DSW0") AM_WRITE(mstworld_sound_w) /* write to sound cpu */
- AM_RANGE(0x04, 0x04) AM_READ_PORT("DSW1") /* dips? */
- AM_RANGE(0x05, 0x05) AM_READ_PORT("SYS0") /* special? */
- AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2") /* dips? */
- AM_RANGE(0x06, 0x06) AM_WRITENOP /* watchdog? irq ack? */
- AM_RANGE(0x07, 0x07) AM_WRITE(mstworld_video_bank_w) /* Video RAM bank register */
-ADDRESS_MAP_END
+void mitchell_state::mstworld_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).portr("IN0").w(this, FUNC(mitchell_state::mstworld_gfxctrl_w)); /* Palette bank, layer enable, coin counters, more */
+ map(0x01, 0x01).portr("IN1");
+ map(0x02, 0x02).portr("IN2").w(this, FUNC(mitchell_state::pang_bankswitch_w)); /* Code bank register */
+ map(0x03, 0x03).portr("DSW0").w(this, FUNC(mitchell_state::mstworld_sound_w)); /* write to sound cpu */
+ map(0x04, 0x04).portr("DSW1"); /* dips? */
+ map(0x05, 0x05).portr("SYS0"); /* special? */
+ map(0x06, 0x06).portr("DSW2"); /* dips? */
+ map(0x06, 0x06).nopw(); /* watchdog? irq ack? */
+ map(0x07, 0x07).w(this, FUNC(mitchell_state::mstworld_video_bank_w)); /* Video RAM bank register */
+}
/*************************************