diff options
Diffstat (limited to 'src/mame/drivers/ddragon3.cpp')
-rw-r--r-- | src/mame/drivers/ddragon3.cpp | 196 |
1 files changed, 101 insertions, 95 deletions
diff --git a/src/mame/drivers/ddragon3.cpp b/src/mame/drivers/ddragon3.cpp index dc92e9dbaea..fddd3b85eef 100644 --- a/src/mame/drivers/ddragon3.cpp +++ b/src/mame/drivers/ddragon3.cpp @@ -290,101 +290,107 @@ CUSTOM_INPUT_MEMBER(wwfwfest_state::dsw_c0_r) * *************************************/ -ADDRESS_MAP_START(ddragon3_state::ddragon3_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x000004, 0x000007) AM_WRITENOP - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w) - AM_RANGE(0x100000, 0x100001) AM_READ_PORT("P1_P2") - AM_RANGE(0x100002, 0x100003) AM_READ_PORT("SYSTEM") - AM_RANGE(0x100004, 0x100005) AM_READ_PORT("DSW") - AM_RANGE(0x100006, 0x100007) AM_READ_PORT("P3") - AM_RANGE(0x100000, 0x100001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x100002, 0x100003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x100004, 0x100005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x100006, 0x100007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140000, 0x1405ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x180000, 0x180fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddragon3_state::dd3b_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x0c0000, 0x0c000f) AM_WRITE(ddragon3_scroll_w) - AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(ddragon3_state::ctribe_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* Foreground (32x32 Tiles - 4 by per tile) */ - AM_RANGE(0x081000, 0x081fff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x082000, 0x0827ff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* Background (32x32 Tiles - 2 by per tile) */ - AM_RANGE(0x082800, 0x082fff) AM_RAM - AM_RANGE(0x0c0000, 0x0c000f) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w) - AM_RANGE(0x100000, 0x1005ff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") /* Palette RAM */ - AM_RANGE(0x140000, 0x140001) AM_WRITE(ddragon3_vreg_w) - AM_RANGE(0x140002, 0x140003) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0x140004, 0x140005) AM_WRITE(irq6_ack_w) - AM_RANGE(0x140006, 0x140007) AM_WRITE(irq5_ack_w) - AM_RANGE(0x140008, 0x140009) AM_DEVWRITE("spriteram", buffered_spriteram16_device, write) - AM_RANGE(0x180000, 0x180001) AM_READ_PORT("IN0") - AM_RANGE(0x180002, 0x180003) AM_READ_PORT("IN1") - AM_RANGE(0x180004, 0x180005) AM_READ_PORT("IN2") - AM_RANGE(0x180006, 0x180007) AM_READ_PORT("IN3") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* work RAM */ -ADDRESS_MAP_END - -ADDRESS_MAP_START(wwfwfest_state::main_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x0c0000, 0x0c1fff) AM_RAM_WRITE(wwfwfest_fg0_videoram_w) AM_SHARE("fg0_videoram") /* FG0 Ram - 4 bytes per tile */ - AM_RANGE(0x0c2000, 0x0c3fff) AM_RAM AM_SHARE("spriteram") /* SPR Ram */ - AM_RANGE(0x080000, 0x080fff) AM_RAM_WRITE(ddragon3_fg_videoram_w) AM_SHARE("fg_videoram") /* BG0 Ram - 4 bytes per tile */ - AM_RANGE(0x082000, 0x082fff) AM_RAM_WRITE(ddragon3_bg_videoram_w) AM_SHARE("bg_videoram") /* BG1 Ram - 2 bytes per tile */ - AM_RANGE(0x100000, 0x100007) AM_READWRITE(ddragon3_scroll_r, ddragon3_scroll_w) - AM_RANGE(0x10000a, 0x10000b) AM_WRITE(wwfwfest_flipscreen_w) - AM_RANGE(0x140000, 0x140003) AM_WRITE(wwfwfest_irq_ack_w) - AM_RANGE(0x14000c, 0x14000d) AM_WRITE(wwfwfest_soundwrite) - AM_RANGE(0x140010, 0x140011) AM_WRITE8(wwfwfest_priority_w, 0x00ff) - AM_RANGE(0x140020, 0x140021) AM_READ_PORT("P1") - AM_RANGE(0x140022, 0x140023) AM_READ_PORT("P2") - AM_RANGE(0x140024, 0x140025) AM_READ_PORT("P3") - AM_RANGE(0x140026, 0x140027) AM_READ_PORT("P4") - AM_RANGE(0x180000, 0x18ffff) AM_READWRITE(wwfwfest_paletteram_r,wwfwfest_paletteram_w) AM_SHARE("palette") - AM_RANGE(0x1c0000, 0x1c3fff) AM_RAM /* Work Ram */ -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon3_state::sound_map) - AM_RANGE(0x0000, 0xbfff) AM_ROM - AM_RANGE(0xc000, 0xc7ff) AM_RAM - AM_RANGE(0xc800, 0xc801) AM_DEVREADWRITE("ym2151", ym2151_device, read, write) - AM_RANGE(0xd800, 0xd800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xe000, 0xe000) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(0xe800, 0xe800) AM_WRITE(oki_bankswitch_w) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(ddragon3_state::ctribe_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8801) AM_DEVREADWRITE("ym2151", ym2151_device, status_r, write) - 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 ddragon3_state::ddragon3_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x000004, 0x000007).nopw(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x100001).portr("P1_P2"); + map(0x100002, 0x100003).portr("SYSTEM"); + map(0x100004, 0x100005).portr("DSW"); + map(0x100006, 0x100007).portr("P3"); + map(0x100000, 0x100001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x100003, 0x100003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x100004, 0x100005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x100006, 0x100007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140000, 0x1405ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x180000, 0x180fff).ram().share("spriteram"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void ddragon3_state::dd3b_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x081000, 0x081fff).ram().share("spriteram"); + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x0c0000, 0x0c000f).w(this, FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x180000, 0x180001).portr("IN0"); + map(0x180002, 0x180003).portr("IN1"); + map(0x180004, 0x180005).portr("IN2"); + map(0x180006, 0x180007).portr("IN3"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void ddragon3_state::ctribe_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x080000, 0x080fff).ram().w(this, FUNC(ddragon3_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* Foreground (32x32 Tiles - 4 by per tile) */ + map(0x081000, 0x081fff).ram().share("spriteram"); + map(0x082000, 0x0827ff).ram().w(this, FUNC(ddragon3_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* Background (32x32 Tiles - 2 by per tile) */ + map(0x082800, 0x082fff).ram(); + map(0x0c0000, 0x0c000f).rw(this, FUNC(ddragon3_state::ddragon3_scroll_r), FUNC(ddragon3_state::ddragon3_scroll_w)); + map(0x100000, 0x1005ff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); /* Palette RAM */ + map(0x140000, 0x140001).w(this, FUNC(ddragon3_state::ddragon3_vreg_w)); + map(0x140003, 0x140003).w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0x140004, 0x140005).w(this, FUNC(ddragon3_state::irq6_ack_w)); + map(0x140006, 0x140007).w(this, FUNC(ddragon3_state::irq5_ack_w)); + map(0x140008, 0x140009).w(m_spriteram, FUNC(buffered_spriteram16_device::write)); + map(0x180000, 0x180001).portr("IN0"); + map(0x180002, 0x180003).portr("IN1"); + map(0x180004, 0x180005).portr("IN2"); + map(0x180006, 0x180007).portr("IN3"); + map(0x1c0000, 0x1c3fff).ram(); /* work RAM */ +} + +void wwfwfest_state::main_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x0c0000, 0x0c1fff).ram().w(this, FUNC(wwfwfest_state::wwfwfest_fg0_videoram_w)).share("fg0_videoram"); /* FG0 Ram - 4 bytes per tile */ + map(0x0c2000, 0x0c3fff).ram().share("spriteram"); /* SPR Ram */ + map(0x080000, 0x080fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_fg_videoram_w)).share("fg_videoram"); /* BG0 Ram - 4 bytes per tile */ + map(0x082000, 0x082fff).ram().w(this, FUNC(wwfwfest_state::ddragon3_bg_videoram_w)).share("bg_videoram"); /* BG1 Ram - 2 bytes per tile */ + map(0x100000, 0x100007).rw(this, FUNC(wwfwfest_state::ddragon3_scroll_r), FUNC(wwfwfest_state::ddragon3_scroll_w)); + map(0x10000a, 0x10000b).w(this, FUNC(wwfwfest_state::wwfwfest_flipscreen_w)); + map(0x140000, 0x140003).w(this, FUNC(wwfwfest_state::wwfwfest_irq_ack_w)); + map(0x14000c, 0x14000d).w(this, FUNC(wwfwfest_state::wwfwfest_soundwrite)); + map(0x140011, 0x140011).w(this, FUNC(wwfwfest_state::wwfwfest_priority_w)); + map(0x140020, 0x140021).portr("P1"); + map(0x140022, 0x140023).portr("P2"); + map(0x140024, 0x140025).portr("P3"); + map(0x140026, 0x140027).portr("P4"); + map(0x180000, 0x18ffff).rw(this, FUNC(wwfwfest_state::wwfwfest_paletteram_r), FUNC(wwfwfest_state::wwfwfest_paletteram_w)).share("palette"); + map(0x1c0000, 0x1c3fff).ram(); /* Work Ram */ +} + + +void ddragon3_state::sound_map(address_map &map) +{ + map(0x0000, 0xbfff).rom(); + map(0xc000, 0xc7ff).ram(); + map(0xc800, 0xc801).rw("ym2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xd800, 0xd800).rw(m_oki, FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xe000, 0xe000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); + map(0xe800, 0xe800).w(this, FUNC(ddragon3_state::oki_bankswitch_w)); +} + + +void ddragon3_state::ctribe_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x8800, 0x8801).rw("ym2151", FUNC(ym2151_device::status_r), FUNC(ym2151_device::write)); + 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)); +} /************************************* * |