diff options
Diffstat (limited to 'src/mame/drivers/xmen.cpp')
-rw-r--r-- | src/mame/drivers/xmen.cpp | 111 |
1 files changed, 57 insertions, 54 deletions
diff --git a/src/mame/drivers/xmen.cpp b/src/mame/drivers/xmen.cpp index ea32ba47552..825f4944f3b 100644 --- a/src/mame/drivers/xmen.cpp +++ b/src/mame/drivers/xmen.cpp @@ -77,57 +77,60 @@ WRITE8_MEMBER(xmen_state::sound_bankswitch_w) } -ADDRESS_MAP_START(xmen_state::main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("k053246", k053247_device, k053247_word_r, k053247_word_w) - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) - AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) - AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") - AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM") - AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r) - AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */ - AM_RANGE(0x18c000, 0x197fff) AM_DEVREADWRITE("k052109", k052109_device, lsb_r, lsb_w) - AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w) -ADDRESS_MAP_END - -ADDRESS_MAP_START(xmen_state::sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("z80bank") - AM_RANGE(0xc000, 0xdfff) AM_RAM - AM_RANGE(0xe000, 0xe22f) AM_DEVREADWRITE("k054539", k054539_device, read, write) - AM_RANGE(0xe800, 0xe801) AM_MIRROR(0x0400) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xf000, 0xf003) AM_DEVICE("k054321", k054321_device, sound_map) - AM_RANGE(0xf800, 0xf800) AM_WRITE(sound_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(xmen_state::_6p_main_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM - AM_RANGE(0x080000, 0x0fffff) AM_ROM - AM_RANGE(0x100000, 0x100fff) AM_RAM AM_SHARE("spriteramleft") /* sprites (screen 1) */ - AM_RANGE(0x101000, 0x101fff) AM_RAM - AM_RANGE(0x102000, 0x102fff) AM_RAM AM_SHARE("spriteramright") /* sprites (screen 2) */ - AM_RANGE(0x103000, 0x103fff) AM_RAM /* 6p - a buffer? */ - AM_RANGE(0x104000, 0x104fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") - AM_RANGE(0x108000, 0x108001) AM_WRITE(eeprom_w) - AM_RANGE(0x108020, 0x108027) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) /* sprites */ - AM_RANGE(0x108040, 0x10805f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x108060, 0x10807f) AM_DEVWRITE("k053251", k053251_device, lsb_w) - AM_RANGE(0x10a000, 0x10a001) AM_READ_PORT("P2_P4") AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x10a002, 0x10a003) AM_READ_PORT("P1_P3") - AM_RANGE(0x10a004, 0x10a005) AM_READ_PORT("EEPROM") - AM_RANGE(0x10a006, 0x10a007) AM_READ_PORT("P5_P6") - AM_RANGE(0x10a00c, 0x10a00d) AM_DEVREAD("k053246", k053247_device, k053246_word_r) /* sprites */ - AM_RANGE(0x110000, 0x113fff) AM_RAM /* main RAM */ +void xmen_state::main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x0fffff).rom(); + map(0x100000, 0x100fff).rw(m_k053246, FUNC(k053247_device::k053247_word_r), FUNC(k053247_device::k053247_word_w)); + map(0x101000, 0x101fff).ram(); + map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w)); + map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w)); + map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x10a002, 0x10a003).portr("P1_P3"); + map(0x10a004, 0x10a005).portr("EEPROM"); + map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r)); + map(0x110000, 0x113fff).ram(); /* main RAM */ + map(0x18c000, 0x197fff).rw(m_k052109, FUNC(k052109_device::lsb_r), FUNC(k052109_device::lsb_w)); + map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w)); +} + +void xmen_state::sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xbfff).bankr("z80bank"); + map(0xc000, 0xdfff).ram(); + map(0xe000, 0xe22f).rw(m_k054539, FUNC(k054539_device::read), FUNC(k054539_device::write)); + map(0xe800, 0xe801).mirror(0x0400).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xf000, 0xf003).m(m_k054321, FUNC(k054321_device::sound_map)); + map(0xf800, 0xf800).w(this, FUNC(xmen_state::sound_bankswitch_w)); +} + + +void xmen_state::_6p_main_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); + map(0x080000, 0x0fffff).rom(); + map(0x100000, 0x100fff).ram().share("spriteramleft"); /* sprites (screen 1) */ + map(0x101000, 0x101fff).ram(); + map(0x102000, 0x102fff).ram().share("spriteramright"); /* sprites (screen 2) */ + map(0x103000, 0x103fff).ram(); /* 6p - a buffer? */ + map(0x104000, 0x104fff).ram().w("palette", FUNC(palette_device::write16)).share("palette"); + map(0x108000, 0x108001).w(this, FUNC(xmen_state::eeprom_w)); + map(0x108020, 0x108027).w(m_k053246, FUNC(k053247_device::k053246_word_w)); /* sprites */ + map(0x108040, 0x10805f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x108060, 0x10807f).w(m_k053251, FUNC(k053251_device::lsb_w)); + map(0x10a000, 0x10a001).portr("P2_P4").w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x10a002, 0x10a003).portr("P1_P3"); + map(0x10a004, 0x10a005).portr("EEPROM"); + map(0x10a006, 0x10a007).portr("P5_P6"); + map(0x10a00c, 0x10a00d).r(m_k053246, FUNC(k053247_device::k053246_word_r)); /* sprites */ + map(0x110000, 0x113fff).ram(); /* main RAM */ /* AM_RANGE(0x18c000, 0x197fff) AM_DEVWRITE("k052109", k052109_device, lsb_w) AM_SHARE("tilemapleft") */ - AM_RANGE(0x18c000, 0x197fff) AM_RAM AM_SHARE("tilemapleft") /* left tilemap (p1,p2,p3 counters) */ - AM_RANGE(0x18fa00, 0x18fa01) AM_WRITE(xmen_18fa00_w) + map(0x18c000, 0x197fff).ram().share("tilemapleft"); /* left tilemap (p1,p2,p3 counters) */ + map(0x18fa00, 0x18fa01).w(this, FUNC(xmen_state::xmen_18fa00_w)); /* AM_RANGE(0x1ac000, 0x1af7ff) AM_READONLY AM_RANGE(0x1ac000, 0x1af7ff) AM_WRITEONLY @@ -138,7 +141,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1b4000, 0x1b77ff) AM_READONLY AM_RANGE(0x1b4000, 0x1b77ff) AM_WRITEONLY */ - AM_RANGE(0x1ac000, 0x1b7fff) AM_RAM AM_SHARE("tilemapright") /* right tilemap */ + map(0x1ac000, 0x1b7fff).ram().share("tilemapright"); /* right tilemap */ /* what are the regions below buffers? (used by hw or software?) */ /* @@ -148,7 +151,7 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1d0000, 0x1d37ff) AM_READONLY AM_RANGE(0x1d0000, 0x1d37ff) AM_WRITEONLY */ - AM_RANGE(0x1cc000, 0x1d7fff) AM_RAM /* tilemap ? */ + map(0x1cc000, 0x1d7fff).ram(); /* tilemap ? */ /* whats the stuff below, buffers? */ /* @@ -159,8 +162,8 @@ ADDRESS_MAP_START(xmen_state::_6p_main_map) AM_RANGE(0x1f4000, 0x1f77ff) AM_READONLY AM_RANGE(0x1f4000, 0x1f77ff) AM_WRITEONLY */ - AM_RANGE(0x1ec000, 0x1f7fff) AM_RAM /* tilemap ? */ -ADDRESS_MAP_END + map(0x1ec000, 0x1f7fff).ram(); /* tilemap ? */ +} static INPUT_PORTS_START( xmen ) |