diff options
Diffstat (limited to 'src/mame/drivers/xexex.cpp')
-rw-r--r-- | src/mame/drivers/xexex.cpp | 86 |
1 files changed, 44 insertions, 42 deletions
diff --git a/src/mame/drivers/xexex.cpp b/src/mame/drivers/xexex.cpp index 0f9e81c6d56..f2e24ba08d5 100644 --- a/src/mame/drivers/xexex.cpp +++ b/src/mame/drivers/xexex.cpp @@ -334,59 +334,61 @@ TIMER_DEVICE_CALLBACK_MEMBER(xexex_state::xexex_interrupt) } -ADDRESS_MAP_START(xexex_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x08ffff) AM_RAM AM_SHARE("workram") // work RAM +void xexex_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x08ffff).ram().share("workram"); // work RAM #if XE_SKIPIDLE - AM_RANGE(0x080014, 0x080015) AM_READ(xexex_waitskip_r) // helps sound CPU by giving back control as early as possible + map(0x080014, 0x080015).r(this, FUNC(xexex_state::xexex_waitskip_r)); // helps sound CPU by giving back control as early as possible #endif - AM_RANGE(0x090000, 0x097fff) AM_RAM AM_SHARE("spriteram") // K053247 sprite RAM - AM_RANGE(0x098000, 0x09ffff) AM_READWRITE(spriteram_mirror_r, spriteram_mirror_w) // K053247 sprite RAM mirror read - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVWRITE("k056832", k056832_device, word_w) // VACSET (K054157) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVWRITE("k053246", k053247_device, k053246_word_w) // OBJSET1 - AM_RANGE(0x0c4000, 0x0c4001) AM_DEVREAD("k053246", k053247_device, k053246_word_r) // Passthrough to sprite roms - AM_RANGE(0x0c6000, 0x0c7fff) AM_DEVREADWRITE("k053250", k053250_device, ram_r, ram_w) // K053250 "road" RAM - AM_RANGE(0x0c8000, 0x0c800f) AM_DEVREADWRITE("k053250", k053250_device, reg_r, reg_w) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVWRITE("k054338", k054338_device, word_w) // CLTC - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVWRITE("k053251", k053251_device, lsb_w) // priority encoder + map(0x090000, 0x097fff).ram().share("spriteram"); // K053247 sprite RAM + map(0x098000, 0x09ffff).rw(this, FUNC(xexex_state::spriteram_mirror_r), FUNC(xexex_state::spriteram_mirror_w)); // K053247 sprite RAM mirror read + map(0x0c0000, 0x0c003f).w(m_k056832, FUNC(k056832_device::word_w)); // VACSET (K054157) + map(0x0c2000, 0x0c2007).w(m_k053246, FUNC(k053247_device::k053246_word_w)); // OBJSET1 + map(0x0c4000, 0x0c4001).r(m_k053246, FUNC(k053247_device::k053246_word_r)); // Passthrough to sprite roms + map(0x0c6000, 0x0c7fff).rw(m_k053250, FUNC(k053250_device::ram_r), FUNC(k053250_device::ram_w)); // K053250 "road" RAM + map(0x0c8000, 0x0c800f).rw(m_k053250, FUNC(k053250_device::reg_r), FUNC(k053250_device::reg_w)); + map(0x0ca000, 0x0ca01f).w(m_k054338, FUNC(k054338_device::word_w)); // CLTC + map(0x0cc000, 0x0cc01f).w(m_k053251, FUNC(k053251_device::lsb_w)); // priority encoder // AM_RANGE(0x0d0000, 0x0d001f) AM_DEVREADWRITE8("k053252", k053252_device, read, write, 0x00ff) // CCU - AM_RANGE(0x0d4000, 0x0d4001) AM_WRITE(sound_irq_w) - AM_RANGE(0x0d6000, 0x0d601f) AM_DEVICE8("k054321", k054321_device, main_map, 0x00ff) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVWRITE("k056832", k056832_device, b_word_w) // VSCCS regs - AM_RANGE(0x0da000, 0x0da001) AM_READ_PORT("P1") - AM_RANGE(0x0da002, 0x0da003) AM_READ_PORT("P2") - AM_RANGE(0x0dc000, 0x0dc001) AM_READ_PORT("SYSTEM") - AM_RANGE(0x0dc002, 0x0dc003) AM_READ_PORT("EEPROM") - AM_RANGE(0x0de000, 0x0de001) AM_READWRITE(control2_r, control2_w) - AM_RANGE(0x100000, 0x17ffff) AM_ROM - AM_RANGE(0x180000, 0x181fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x182000, 0x183fff) AM_DEVREADWRITE("k056832", k056832_device, ram_word_r, ram_word_w) - AM_RANGE(0x190000, 0x191fff) AM_DEVREAD("k056832", k056832_device, rom_word_r) // Passthrough to tile roms - AM_RANGE(0x1a0000, 0x1a1fff) AM_DEVREAD("k053250", k053250_device, rom_r) - AM_RANGE(0x1b0000, 0x1b1fff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") + map(0x0d4000, 0x0d4001).w(this, FUNC(xexex_state::sound_irq_w)); + map(0x0d6000, 0x0d601f).m(m_k054321, FUNC(k054321_device::main_map)).umask16(0x00ff); + map(0x0d8000, 0x0d8007).w(m_k056832, FUNC(k056832_device::b_word_w)); // VSCCS regs + map(0x0da000, 0x0da001).portr("P1"); + map(0x0da002, 0x0da003).portr("P2"); + map(0x0dc000, 0x0dc001).portr("SYSTEM"); + map(0x0dc002, 0x0dc003).portr("EEPROM"); + map(0x0de000, 0x0de001).rw(this, FUNC(xexex_state::control2_r), FUNC(xexex_state::control2_w)); + map(0x100000, 0x17ffff).rom(); + map(0x180000, 0x181fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x182000, 0x183fff).rw(m_k056832, FUNC(k056832_device::ram_word_r), FUNC(k056832_device::ram_word_w)); + map(0x190000, 0x191fff).r(m_k056832, FUNC(k056832_device::rom_word_r)); // Passthrough to tile roms + map(0x1a0000, 0x1a1fff).r(m_k053250, FUNC(k053250_device::rom_r)); + map(0x1b0000, 0x1b1fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); #if XE_DEBUG - AM_RANGE(0x0c0000, 0x0c003f) AM_DEVREAD("k056832", k056832_device, word_r) - AM_RANGE(0x0c2000, 0x0c2007) AM_DEVREAD("k053246", k053247_device, k053246_reg_word_r) - AM_RANGE(0x0ca000, 0x0ca01f) AM_DEVREAD("k054338", k054338_device, word_r) - AM_RANGE(0x0cc000, 0x0cc01f) AM_DEVREAD("k053251", k053251_device, lsb_r) - AM_RANGE(0x0d8000, 0x0d8007) AM_DEVREAD("k056832", k056832_device, b_word_r) + map(0x0c0000, 0x0c003f).r(m_k056832, FUNC(k056832_device::word_r)); + map(0x0c2000, 0x0c2007).r(m_k053246, FUNC(k053247_device::k053246_reg_word_r)); + map(0x0ca000, 0x0ca01f).r(m_k054338, FUNC(k054338_device::word_r)); + map(0x0cc000, 0x0cc01f).r(m_k053251, FUNC(k053251_device::lsb_r)); + map(0x0d8000, 0x0d8007).r(m_k056832, FUNC(k056832_device::b_word_r)); #endif -ADDRESS_MAP_END +} -ADDRESS_MAP_START(xexex_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(0xec00, 0xec01) 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 +void xexex_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(0xec00, 0xec01).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(xexex_state::sound_bankswitch_w)); +} static INPUT_PORTS_START( xexex ) |