diff options
Diffstat (limited to 'src/mame/drivers/seta.cpp')
-rw-r--r-- | src/mame/drivers/seta.cpp | 1926 |
1 files changed, 989 insertions, 937 deletions
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp index ee64888df9b..6a67682a3c6 100644 --- a/src/mame/drivers/seta.cpp +++ b/src/mame/drivers/seta.cpp @@ -1698,22 +1698,23 @@ WRITE16_MEMBER(seta_state::ipl2_ack_w) writing to sharedram! */ -ADDRESS_MAP_START(seta_state::tndrcade_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x200001) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x280000, 0x280001) AM_WRITENOP // ? 0 / 1 (sub cpu related?) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 / 1 - AM_RANGE(0x380000, 0x3803ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? $4000 - AM_RANGE(0x600000, 0x6005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x600600, 0x600607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0x800000, 0x800007) AM_WRITE(sub_ctrl_w) // Sub CPU Control? - AM_RANGE(0xa00000, 0xa00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?) - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("share1") // RAM (Mirrored?) -ADDRESS_MAP_END +void seta_state::tndrcade_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x200001).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x280000, 0x280001).nopw(); // ? 0 / 1 (sub cpu related?) + map(0x300000, 0x300001).nopw(); // ? 0 / 1 + map(0x380000, 0x3803ff).ram().share("paletteram1"); // Palette + map(0x400000, 0x400001).nopw(); // ? $4000 + map(0x600000, 0x6005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x600600, 0x600607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0x800000, 0x800007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control? + map(0xa00000, 0xa00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().share("share1"); // RAM (Mirrored?) + map(0xffc000, 0xffffff).ram().share("share1"); // RAM (Mirrored?) +} /*************************************************************************** @@ -1721,59 +1722,61 @@ ADDRESS_MAP_END (with slight variations, and Meta Fox protection hooked in) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::downtown_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_NOP // watchdog? (twineagl) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // IRQ enable/acknowledge? - AM_RANGE(0x400000, 0x400007) AM_WRITE(twineagl_tilebank_w) // special tile banking to animate water in twineagl - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0xa00000, 0xa00007) AM_WRITE(sub_ctrl_w) // Sub CPU Control? - AM_RANGE(0xb00000, 0xb00fff) AM_READWRITE(sharedram_68000_r,sharedram_68000_w) // Shared RAM - AM_RANGE(0xc00000, 0xc00001) AM_WRITENOP // ? $4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xf00000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::downtown_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); // ROM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).noprw(); // watchdog? (twineagl) + map(0x300000, 0x300001).nopw(); // IRQ enable/acknowledge? + map(0x400000, 0x400007).w(this, FUNC(seta_state::twineagl_tilebank_w)); // special tile banking to animate water in twineagl + map(0x500000, 0x500001).nopw(); // ? + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0xa00000, 0xa00007).w(this, FUNC(seta_state::sub_ctrl_w)); // Sub CPU Control? + map(0xb00000, 0xb00fff).rw(this, FUNC(seta_state::sharedram_68000_r), FUNC(seta_state::sharedram_68000_w)); // Shared RAM + map(0xc00000, 0xc00001).nopw(); // ? $4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xf00000, 0xffffff).ram(); // RAM +} /*************************************************************************** Caliber 50 ***************************************************************************/ -ADDRESS_MAP_START(seta_state::calibr50_map) - AM_RANGE(0x000000, 0x09ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x100001) AM_READ(ipl2_ack_r) - AM_RANGE(0x200000, 0x200fff) AM_RAM // NVRAM - AM_RANGE(0x300000, 0x300001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x400000, 0x400001) AM_DEVREAD("watchdog", watchdog_timer_device, reset16_r) - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - - AM_RANGE(0x904000, 0x904fff) AM_RAM // - AM_RANGE(0xa00000, 0xa00001) AM_READ_PORT("P1") // X1-004 - AM_RANGE(0xa00002, 0xa00003) AM_READ_PORT("P2") // X1-004 - AM_RANGE(0xa00008, 0xa00009) AM_READ_PORT("COINS") // X1-004 - AM_RANGE(0xa00010, 0xa00017) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xa00018, 0xa00019) AM_DEVREAD8("upd4701", upd4701_device, reset_xy, 0x00ff) - - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD8("soundlatch2", generic_latch_8_device, read, 0x00ff) // From Sub CPU - AM_RANGE(0xb00000, 0xb00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000 - - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::calibr50_map(address_map &map) +{ + map(0x000000, 0x09ffff).rom(); // ROM + map(0x100000, 0x100001).r(this, FUNC(seta_state::ipl2_ack_r)); + map(0x200000, 0x200fff).ram(); // NVRAM + map(0x300000, 0x300001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x400000, 0x400001).r("watchdog", FUNC(watchdog_timer_device::reset16_r)); + map(0x500000, 0x500001).nopw(); // ? + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).writeonly().share("vctrl_0");// VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + + map(0x904000, 0x904fff).ram(); // + map(0xa00000, 0xa00001).portr("P1"); // X1-004 + map(0xa00002, 0xa00003).portr("P2"); // X1-004 + map(0xa00008, 0xa00009).portr("COINS"); // X1-004 + map(0xa00010, 0xa00017).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xa00019, 0xa00019).r(m_upd4701, FUNC(upd4701_device::reset_xy)); + + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb00001, 0xb00001).r("soundlatch2", FUNC(generic_latch_8_device::read)); // From Sub CPU + map(0xb00001, 0xb00001).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU + map(0xc00000, 0xc00001).ram(); // ? $4000 + + map(0xff0000, 0xffffff).ram(); // RAM +} /*************************************************************************** @@ -1821,84 +1824,87 @@ WRITE8_MEMBER(seta_state::usclssic_lockout_w) } -ADDRESS_MAP_START(seta_state::usclssic_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xff0000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x900000, 0x900001) AM_RAM // ? $4000 - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb40000, 0xb40007) AM_DEVREAD8("upd4701", upd4701_device, read_xy, 0x00ff) - AM_RANGE(0xb40000, 0xb40001) AM_WRITE8(usclssic_lockout_w, 0x00ff) // Coin Lockout + Tiles Banking - AM_RANGE(0xb4000a, 0xb4000b) AM_WRITE(ipl1_ack_w) - AM_RANGE(0xb40010, 0xb40011) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb40010, 0xb40011) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) // To Sub CPU - AM_RANGE(0xb40018, 0xb4001f) AM_READ(usclssic_dsw_r) // 2 DSWs - AM_RANGE(0xb40018, 0xb40019) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xb80000, 0xb80001) AM_READ(ipl2_ack_r) - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0xd04000, 0xd04fff) AM_RAM // - AM_RANGE(0xe00000, 0xe00fff) AM_RAM // NVRAM? (odd bytes) -ADDRESS_MAP_END +void seta_state::usclssic_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xff0000, 0xffffff).ram(); // RAM + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x900000, 0x900001).ram(); // ? $4000 + map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM Ctrl + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xb40000, 0xb40007).r(m_upd4701, FUNC(upd4701_device::read_xy)).umask16(0x00ff); + map(0xb40001, 0xb40001).w(this, FUNC(seta_state::usclssic_lockout_w)); // Coin Lockout + Tiles Banking + map(0xb4000a, 0xb4000b).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0xb40010, 0xb40011).portr("COINS"); // Coins + map(0xb40011, 0xb40011).w("soundlatch1", FUNC(generic_latch_8_device::write)); // To Sub CPU + map(0xb40018, 0xb4001f).r(this, FUNC(seta_state::usclssic_dsw_r)); // 2 DSWs + map(0xb40018, 0xb40019).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xb80000, 0xb80001).r(this, FUNC(seta_state::ipl2_ack_r)); + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0xd04000, 0xd04fff).ram(); // + map(0xe00000, 0xe00fff).ram(); // NVRAM? (odd bytes) +} /*************************************************************************** Athena no Hatena? ***************************************************************************/ -ADDRESS_MAP_START(seta_state::atehate_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x900000, 0x9fffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? watchdog ? - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? 0 (irq ack lev 2?) - AM_RANGE(0x500000, 0x500001) AM_WRITENOP // ? (end of lev 1: bit 4 goes 1,0,1) - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::atehate_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x900000, 0x9fffff).ram(); // RAM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).nopw(); // ? watchdog ? + map(0x300000, 0x300001).nopw(); // ? 0 (irq ack lev 2?) + map(0x500000, 0x500001).nopw(); // ? (end of lev 1: bit 4 goes 1,0,1) + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** Blandia ***************************************************************************/ -ADDRESS_MAP_START(seta_state::blandia_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero and blandia only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0xc000 - AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xa00000, 0xa00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xa80000, 0xa80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xb04000, 0xb0ffff) AM_RAM // (jjsquawk) - AM_RANGE(0xb80000, 0xb83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0xb84000, 0xb8ffff) AM_RAM // (jjsquawk) - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::blandia_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero and blandia only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x880000, 0x880001).ram(); // ? 0xc000 + map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xa00000, 0xa00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xa80000, 0xa80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xb04000, 0xb0ffff).ram(); // (jjsquawk) + map(0xb80000, 0xb83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0xb84000, 0xb8ffff).ram(); // (jjsquawk) + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** @@ -1906,34 +1912,35 @@ ADDRESS_MAP_END (with slight variations) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::blandiap_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x703c00, 0x7047ff) AM_RAM AM_SHARE("paletteram2") // 2nd Palette for the palette offset effect - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::blandiap_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM (main ram for zingzip, wrofaero writes to 20f000-20ffff) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x703c00, 0x7047ff).ram().share("paletteram2"); // 2nd Palette for the palette offset effect + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** @@ -1974,149 +1981,154 @@ READ16_MEMBER(seta_state::extra_r) return m_extra_port.read_safe(0xff); } -ADDRESS_MAP_START(seta_state::wrofaero_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ(extra_r) // Buttons 4,5,6 (Daioh only) - - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound +void seta_state::wrofaero_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram(); // RAM + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + map(0x500006, 0x500007).r(this, FUNC(seta_state::extra_r)); // Buttons 4,5,6 (Daioh only) + + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END + map(0xe00000, 0xe00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} -ADDRESS_MAP_START(seta_state::zombraid_map) - AM_IMPORT_FROM( wrofaero_map ) - AM_RANGE(0x300000, 0x30ffff) AM_RAM AM_SHARE("nvram") // actually 8K x8 SRAM - AM_RANGE(0xf00000, 0xf00001) AM_WRITE(zombraid_gun_w) - AM_RANGE(0xf00002, 0xf00003) AM_READ(zombraid_gun_r) -ADDRESS_MAP_END +void seta_state::zombraid_map(address_map &map) +{ + wrofaero_map(map); + map(0x300000, 0x30ffff).ram().share("nvram"); // actually 8K x8 SRAM + map(0xf00000, 0xf00001).w(this, FUNC(seta_state::zombraid_gun_w)); + map(0xf00002, 0xf00003).r(this, FUNC(seta_state::zombraid_gun_r)); +} READ16_MEMBER(seta_state::zingzipbl_unknown_r) { return 0x0000; } -ADDRESS_MAP_START(seta_state::zingzipbl_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) +void seta_state::zingzipbl_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) // AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 // AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400002, 0x400003) AM_READ(zingzipbl_unknown_r) // P2 + map(0x400002, 0x400003).r(this, FUNC(seta_state::zingzipbl_unknown_r)); // P2 // AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers //AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM // (rezon,jjsquawk) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - - AM_RANGE(0x902010, 0x902013) AM_READ(zingzipbl_unknown_r ) - - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_RAM // soundram on original + map(0x700000, 0x7003ff).ram(); // (rezon,jjsquawk) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // (jjsquawk) + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + + map(0x902010, 0x902013).r(this, FUNC(seta_state::zingzipbl_unknown_r)); + + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).ram(); // soundram on original #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::jjsquawb_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("workram") // RAM (pointer for zombraid crosshair hack) - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM (gundhara) - AM_RANGE(0x300000, 0x30ffff) AM_RAM // RAM (wrofaero only?) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // (gundhara) Coin Lockout + Video Registers - - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x70b3ff) AM_RAM // RZ: (rezon,jjsquawk) - AM_RANGE(0x70b400, 0x70bfff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x70c000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0 - AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // (jjsquawk) - AM_RANGE(0x908000, 0x908005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x909000, 0x909005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa0a000, 0xa0a5ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // RZ: Sprites Y - AM_RANGE(0xa0a600, 0xa0a607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} + +void seta_state::jjsquawb_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) + map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack) + map(0x210000, 0x21ffff).ram(); // RAM (gundhara) + map(0x300000, 0x30ffff).ram(); // RAM (wrofaero only?) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // (gundhara) Coin Lockout + Video Registers + + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x70b3ff).ram(); // RZ: (rezon,jjsquawk) + map(0x70b400, 0x70bfff).ram().share("paletteram1"); // Palette + map(0x70c000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0 + map(0x804000, 0x807fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2 + map(0x884000, 0x88ffff).ram(); // (jjsquawk) + map(0x908000, 0x908005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x909000, 0x909005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa0a000, 0xa0a5ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // RZ: Sprites Y + map(0xa0a600, 0xa0a607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); // AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb0c000, 0xb0ffff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // RZ: Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0xb0c000, 0xb0ffff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // RZ: Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound #if __uPD71054_TIMER - AM_RANGE(0xd00000, 0xd00007) AM_WRITE(timer_regs_w) // ? + map(0xd00000, 0xd00007).w(this, FUNC(seta_state::timer_regs_w)); // ? #else - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? + map(0xd00000, 0xd00007).nopw(); // ? #endif - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** Orbs ***************************************************************************/ -ADDRESS_MAP_START(seta_state::orbs_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READNOP // ? - AM_RANGE(0x200000, 0x200001) AM_READNOP // ? - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins +void seta_state::orbs_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).nopr(); // ? + map(0x200000, 0x200001).nopr(); // ? + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins //AM_RANGE(0x600000, 0x60000f) AM_READ(krzybowl_input_r ) // P1 - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** Kero Kero Keroppi no Issyoni Asobou @@ -2177,27 +2189,28 @@ WRITE16_MEMBER(seta_state::keroppi_prize_w) } } -ADDRESS_MAP_START(seta_state::keroppi_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READ(keroppi_protection_r) // - AM_RANGE(0x200000, 0x200001) AM_READ(keroppi_protection_init_r) // - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ(keroppi_coin_r) // Coins - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0x900000, 0x900001) AM_WRITENOP // ? - AM_RANGE(0x900002, 0x900003) AM_WRITE(keroppi_prize_w) // - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::keroppi_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).r(this, FUNC(seta_state::keroppi_protection_r)); // + map(0x200000, 0x200001).r(this, FUNC(seta_state::keroppi_protection_init_r)); // + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).r(this, FUNC(seta_state::keroppi_coin_r)); // Coins + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0x900000, 0x900001).nopw(); // ? + map(0x900002, 0x900003).w(this, FUNC(seta_state::keroppi_prize_w)); // + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} MACHINE_START_MEMBER(seta_state,keroppi) { @@ -2210,143 +2223,148 @@ MACHINE_START_MEMBER(seta_state,keroppi) ***************************************************************************/ /* similar to krzybowl */ -ADDRESS_MAP_START(seta_state::blockcar_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM - AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM? - AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM? - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::blockcarb_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf03fff) AM_RAM // RAM - AM_RANGE(0xf04000, 0xf041ff) AM_RAM // Backup RAM? - AM_RANGE(0xf05000, 0xf050ff) AM_RAM // Backup RAM? - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x500009) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff) - //AM_RANGE(0x50000c, 0x50000d) // ?? - AM_RANGE(0xa00000, 0xa03fff) AM_NOP // Sound - not on this bootleg - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::blockcar_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0xf00000, 0xf03fff).ram(); // RAM + map(0xf04000, 0xf041ff).ram(); // Backup RAM? + map(0xf05000, 0xf050ff).ram(); // Backup RAM? + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} + +void seta_state::blockcarb_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0xf00000, 0xf03fff).ram(); // RAM + map(0xf04000, 0xf041ff).ram(); // Backup RAM? + map(0xf05000, 0xf050ff).ram(); // Backup RAM? + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500009, 0x500009).w("oki", FUNC(okim6295_device::write)); + //map(0x50000c, 0x50000d); // ?? + map(0xa00000, 0xa03fff).noprw(); // Sound - not on this bootleg + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** Daioh ***************************************************************************/ -ADDRESS_MAP_START(seta_state::daioh_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x10ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6 - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // -ADDRESS_MAP_END +void seta_state::daioh_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x100000, 0x10ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6 + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xe00000, 0xe00001).nopw(); // +} /*************************************************************************** Daioh (location test version) ***************************************************************************/ -ADDRESS_MAP_START(seta_state::daiohp_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_MIRROR(0x080000) // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM AM_MIRROR(0x080000) // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_READ_PORT("EXTRA") // Buttons 4,5,6 - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r ) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x70ffff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_WRITENOP // ? - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? VBlank IRQ Ack - AM_RANGE(0xf00000, 0xf00001) AM_WRITENOP // ? Sound IRQ Ack -ADDRESS_MAP_END +void seta_state::daiohp_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom().mirror(0x080000); // ROM + map(0x100000, 0x17ffff).rom().mirror(0x080000); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500006, 0x500007).portr("EXTRA"); // Buttons 4,5,6 + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram(); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x70ffff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).nopw(); // ? + map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack + map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack +} /*************************************************************************** Dragon Unit, Quiz Kokology, Quiz Kokology 2, Strike Gunner ***************************************************************************/ -ADDRESS_MAP_START(seta_state::drgnunit_map) - AM_RANGE(0x000000, 0x0bffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM (qzkklogy) - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM (drgnunit,stg) - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // Watchdog - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x800005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0x900000, 0x903fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM - AM_RANGE(0x904000, 0x90ffff) AM_WRITENOP // unused (qzkklogy) - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb00006, 0xb00007) AM_READNOP // unused (qzkklogy) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::drgnunit_map(address_map &map) +{ + map(0x000000, 0x0bffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM (qzkklogy) + map(0xffc000, 0xffffff).ram(); // RAM (drgnunit,stg) + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).nopw(); // Watchdog + map(0x300000, 0x300001).nopw(); // ? IRQ Ack + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0x800000, 0x800005).ram().share("vctrl_0"); // VRAM Ctrl + map(0x900000, 0x903fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM + map(0x904000, 0x90ffff).nopw(); // unused (qzkklogy) + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb00006, 0xb00007).nopr(); // unused (qzkklogy) + map(0xc00000, 0xc00001).ram(); // ? $4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** The Roulette @@ -2479,136 +2497,142 @@ WRITE8_MEMBER(setaroul_state::led_w) show_outputs(); } -ADDRESS_MAP_START(setaroul_state::setaroul_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM +void setaroul_state::setaroul_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); - AM_RANGE(0x800000, 0x800003) AM_NOP // RS232C Auto Time Set: r/w + map(0x800000, 0x800003).noprw(); // RS232C Auto Time Set: r/w - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_SHARE("nvram") + map(0xc00000, 0xc03fff).ram().share("nvram"); - AM_RANGE(0xc40000, 0xc40001) AM_NOP // lev. 2/5 irq ack - AM_RANGE(0xc80000, 0xc80001) AM_NOP // lev. 4 irq ack + map(0xc40000, 0xc40001).noprw(); // lev. 2/5 irq ack + map(0xc80000, 0xc80001).noprw(); // lev. 4 irq ack - AM_RANGE(0xcc0000, 0xcc001f) AM_READWRITE(rtc_r, rtc_w) + map(0xcc0000, 0xcc001f).rw(this, FUNC(setaroul_state::rtc_r), FUNC(setaroul_state::rtc_w)); - AM_RANGE(0xd00000, 0xd00001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0xd00000, 0xd00001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0xd40000, 0xd40001) AM_READ_PORT("DSW1-A") AM_WRITE8(pay_w, 0x00ff) - AM_RANGE(0xd40002, 0xd40003) AM_READ_PORT("DSW1-B") + map(0xd40000, 0xd40001).portr("DSW1-A"); + map(0xd40001, 0xd40001).w(this, FUNC(setaroul_state::pay_w)); + map(0xd40002, 0xd40003).portr("DSW1-B"); - AM_RANGE(0xd40004, 0xd40005) AM_READ_PORT("DSW2-A") - AM_RANGE(0xd40006, 0xd40007) AM_READ_PORT("DSW2-B") + map(0xd40004, 0xd40005).portr("DSW2-A"); + map(0xd40006, 0xd40007).portr("DSW2-B"); - AM_RANGE(0xd40008, 0xd40009) AM_READ_PORT("COIN") AM_WRITE8(led_w, 0x00ff) - AM_RANGE(0xd4000a, 0xd4000b) AM_READ_PORT("DOOR") + map(0xd40008, 0xd40009).portr("COIN"); + map(0xd40009, 0xd40009).w(this, FUNC(setaroul_state::led_w)); + map(0xd4000a, 0xd4000b).portr("DOOR"); - AM_RANGE(0xd40010, 0xd40011) AM_READWRITE(inputs_r, mux_w) + map(0xd40010, 0xd40011).rw(this, FUNC(setaroul_state::inputs_r), FUNC(setaroul_state::mux_w)); - AM_RANGE(0xd40018, 0xd40019) AM_READ_PORT("DSW3") + map(0xd40018, 0xd40019).portr("DSW3"); - AM_RANGE(0xdc0000, 0xdc3fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0xdc0000, 0xdc3fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xe00000, 0xe03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") - AM_RANGE(0xe40000, 0xe40005) AM_RAM AM_SHARE("vctrl_0") // VRAM Ctrl - AM_RANGE(0xf00000, 0xf03fff) AM_READWRITE(spritecode_r, spritecode_w) - AM_RANGE(0xf40000, 0xf40bff) AM_WRITE(spriteylow_w) - AM_RANGE(0xf40c00, 0xf40c11) AM_WRITE(spritectrl_w) + map(0xe00000, 0xe03fff).ram().w(this, FUNC(setaroul_state::vram_w<0>)).share("vram_0"); + map(0xe40000, 0xe40005).ram().share("vctrl_0"); // VRAM Ctrl + map(0xf00000, 0xf03fff).rw(this, FUNC(setaroul_state::spritecode_r), FUNC(setaroul_state::spritecode_w)); + map(0xf40000, 0xf40bff).w(this, FUNC(setaroul_state::spriteylow_w)); + map(0xf40c00, 0xf40c11).w(this, FUNC(setaroul_state::spritectrl_w)); // AM_RANGE(0xf80000, 0xf80001) AM_WRITE // $40 at boot -ADDRESS_MAP_END +} /*************************************************************************** Extreme Downhill / Sokonuke ***************************************************************************/ -ADDRESS_MAP_START(seta_state::extdwnhl_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x210000, 0x21ffff) AM_RAM // RAM - AM_RANGE(0x220000, 0x23ffff) AM_RAM // RAM (sokonuke) - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400008, 0x40000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x40000c, 0x40000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF) - AM_RANGE(0x500000, 0x500003) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500004, 0x500007) AM_NOP // IRQ Ack (extdwnhl (R) & sokonuke (W)) - AM_RANGE(0x600400, 0x600fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x601000, 0x610bff) AM_RAM // - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x80ffff) AM_RAM // - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x88ffff) AM_RAM // - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb13fff) AM_RAM // - AM_RANGE(0xe00000, 0xe03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::extdwnhl_map(address_map &map) +{ + map.unmap_value_high(); + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x210000, 0x21ffff).ram(); // RAM + map(0x220000, 0x23ffff).ram(); // RAM (sokonuke) + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400008, 0x40000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x40000c, 0x40000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // Watchdog (extdwnhl (R) & sokonuke (W) MUST RETURN $FFFF) + map(0x500000, 0x500003).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500004, 0x500007).noprw(); // IRQ Ack (extdwnhl (R) & sokonuke (W)) + map(0x600400, 0x600fff).ram().share("paletteram1"); // Palette + map(0x601000, 0x610bff).ram(); // + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x80ffff).ram(); // + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x88ffff).ram(); // + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb13fff).ram(); // + map(0xe00000, 0xe03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** (Kamen) Masked Riders Club Battle Race / Mad Shark ***************************************************************************/ -ADDRESS_MAP_START(seta_state::kamenrid_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500007) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x500008, 0x500009) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x50000c, 0x50000d) AM_DEVREADWRITE("watchdog", watchdog_timer_device, reset16_r, reset16_w) // xx Watchdog? (sokonuke) - AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w) - AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x807fff) AM_RAM // tested - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x887fff) AM_RAM // tested - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::kamenrid_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500007).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x500008, 0x500009).portr("COINS"); // Coins + map(0x50000c, 0x50000d).rw("watchdog", FUNC(watchdog_timer_device::reset16_r), FUNC(watchdog_timer_device::reset16_w)); // xx Watchdog? (sokonuke) + map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w)); + map(0x700000, 0x7003ff).ram(); // Palette RAM (tested) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x703fff).ram(); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x807fff).ram(); // tested + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x887fff).ram(); // tested + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb07fff).ram(); // tested + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /* almost identical to kamenrid */ -ADDRESS_MAP_START(seta_state::madshark_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x600000, 0x600005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600004, 0x600005) AM_WRITE(ipl1_ack_w) - AM_RANGE(0x600006, 0x600007) AM_WRITE(ipl2_ack_w) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::madshark_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x600000, 0x600005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600004, 0x600005).w(this, FUNC(seta_state::ipl1_ack_w)); + map(0x600006, 0x600007).w(this, FUNC(seta_state::ipl2_ack_w)); + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} WRITE16_MEMBER(seta_state::magspeed_lights_w) @@ -2622,63 +2646,65 @@ WRITE16_MEMBER(seta_state::magspeed_lights_w) } /* almost identical to kamenrid */ -ADDRESS_MAP_START(seta_state::magspeed_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500008, 0x50000b) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x50000c, 0x50000d) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x500010, 0x500015) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x500018, 0x500019) AM_WRITE(ipl1_ack_w) // lev 2 irq ack? - AM_RANGE(0x50001c, 0x50001d) AM_WRITE(ipl2_ack_w) // lev 4 irq ack? - AM_RANGE(0x600000, 0x600005) AM_WRITE(magspeed_lights_w) // Lights - AM_RANGE(0x600006, 0x600007) AM_WRITENOP // ? - AM_RANGE(0x700000, 0x7003ff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette RAM (tested) - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x804000, 0x807fff) AM_RAM // tested - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x884000, 0x887fff) AM_RAM // tested - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? $4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xb04000, 0xb07fff) AM_RAM // tested - AM_RANGE(0xc00000, 0xc00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) - AM_RANGE(0xd00000, 0xd03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::magspeed_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x500008, 0x50000b).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x50000c, 0x50000d).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x500010, 0x500015).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x500018, 0x500019).w(this, FUNC(seta_state::ipl1_ack_w)); // lev 2 irq ack? + map(0x50001c, 0x50001d).w(this, FUNC(seta_state::ipl2_ack_w)); // lev 4 irq ack? + map(0x600000, 0x600005).w(this, FUNC(seta_state::magspeed_lights_w)); // Lights + map(0x600006, 0x600007).nopw(); // ? + map(0x700000, 0x7003ff).ram(); // Palette RAM (tested) + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x701000, 0x703fff).ram(); // Palette RAM (tested) + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x804000, 0x807fff).ram(); // tested + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x884000, 0x887fff).ram(); // tested + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? $4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xb04000, 0xb07fff).ram(); // tested + map(0xc00000, 0xc00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); + map(0xd00000, 0xd03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** Krazy Bowl ***************************************************************************/ -ADDRESS_MAP_START(seta_state::krzybowl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x100001) AM_READNOP // ? - AM_RANGE(0x200000, 0x200001) AM_READNOP // ? - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x600000, 0x600007) AM_DEVREAD8("upd1", upd4701_device, read_xy, 0x00ff) // P1 trackball - AM_RANGE(0x600008, 0x60000f) AM_DEVREAD8("upd2", upd4701_device, read_xy, 0x00ff) // P2 trackball - AM_RANGE(0x8000f0, 0x8000f1) AM_RAM // NVRAM - AM_RANGE(0x800100, 0x8001ff) AM_RAM // NVRAM - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) -ADDRESS_MAP_END +void seta_state::krzybowl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0xf00000, 0xf0ffff).ram(); // RAM + map(0x100000, 0x100001).nopr(); // ? + map(0x200000, 0x200001).nopr(); // ? + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).nopw(); // ? + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x600000, 0x600007).r("upd1", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P1 trackball + map(0x600008, 0x60000f).r("upd2", FUNC(upd4701_device::read_xy)).umask16(0x00ff); // P2 trackball + map(0x8000f0, 0x8000f1).ram(); // NVRAM + map(0x800100, 0x8001ff).ram(); // NVRAM + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); +} /*************************************************************************** @@ -2698,29 +2724,30 @@ WRITE16_MEMBER(seta_state::msgundam_vregs_w) /* Mirror RAM is necessary or startup, to clear Work RAM after the test */ -ADDRESS_MAP_START(seta_state::msgundam_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x1fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_MIRROR(0x70000) // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITE(ipl1_ack_w) // Lev 2 IRQ Ack - AM_RANGE(0x400004, 0x400005) AM_WRITE(ipl2_ack_w) // Lev 4 IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(msgundam_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x8005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0x800600, 0x800607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0x880000, 0x880001) AM_RAM // ? 0x4000 - AM_RANGE(0x900000, 0x903fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xa00000, 0xa03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0xb00000, 0xb00005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb80000, 0xb80005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00007) AM_DEVREADWRITE8("pit", pit8254_device, read, write, 0x00ff) -ADDRESS_MAP_END +void seta_state::msgundam_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x1fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram().mirror(0x70000); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).w(this, FUNC(seta_state::ipl1_ack_w)); // Lev 2 IRQ Ack + map(0x400004, 0x400005).w(this, FUNC(seta_state::ipl2_ack_w)); // Lev 4 IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::msgundam_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x8005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0x800600, 0x800607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0x880000, 0x880001).ram(); // ? 0x4000 + map(0x900000, 0x903fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xa00000, 0xa03fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xa80000, 0xa83fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0xb00000, 0xb00005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb80000, 0xb80005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00007).rw("pit", FUNC(pit8254_device::read), FUNC(pit8254_device::write)).umask16(0x00ff); +} /*************************************************************************** @@ -2728,27 +2755,28 @@ ADDRESS_MAP_END ***************************************************************************/ /* similar to wrofaero */ -ADDRESS_MAP_START(seta_state::oisipuzl_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x700000, 0x703fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette -ADDRESS_MAP_END +void seta_state::oisipuzl_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x700000, 0x703fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette +} /*************************************************************************** @@ -2757,27 +2785,28 @@ ADDRESS_MAP_END /* Same as oisipuzl but with the sound system replaced */ -ADDRESS_MAP_START(seta_state::triplfun_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x17ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? IRQ Ack - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x500006, 0x500007) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff) // tfun sound - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette -ADDRESS_MAP_END +void seta_state::triplfun_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x100000, 0x17ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? IRQ Ack + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x500007, 0x500007).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // tfun sound + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00400, 0xc00fff).ram().share("paletteram1"); // Palette +} /*************************************************************************** @@ -2812,19 +2841,20 @@ READ16_MEMBER(seta_state::kiwame_input_r) } } -ADDRESS_MAP_START(seta_state::kiwame_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("nvram") // RAM - AM_RANGE(0x800000, 0x803fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0x900000, 0x900001) AM_RAM // ? 0x4000 - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xd00000, 0xd00009) AM_READ(kiwame_input_r) // mahjong panel - AM_RANGE(0xe00000, 0xe00003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0xfffc00, 0xffffff) AM_DEVREADWRITE("tmp68301", tmp68301_device, regs_r, regs_w) -ADDRESS_MAP_END +void seta_state::kiwame_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram().share("nvram"); // RAM + map(0x800000, 0x803fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0x900000, 0x900001).ram(); // ? 0x4000 + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb003ff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xd00000, 0xd00009).r(this, FUNC(seta_state::kiwame_input_r)); // mahjong panel + map(0xe00000, 0xe00003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0xfffc00, 0xffffff).rw("tmp68301", FUNC(tmp68301_device::regs_r), FUNC(tmp68301_device::regs_w)); +} /*************************************************************************** @@ -2843,111 +2873,117 @@ WRITE16_MEMBER(seta_state::thunderl_protection_w) /* Similar to downtown etc. */ -ADDRESS_MAP_START(seta_state::thunderl_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? - AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END - - -ADDRESS_MAP_START(seta_state::thunderlbl_map) - AM_RANGE(0x000000, 0x00ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM -// AM_RANGE(0x100000, 0x103fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? -// AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins -// AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r ) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00) // P3 (wits) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END +void seta_state::thunderl_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM + map(0x100000, 0x103fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? + map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} + + +void seta_state::thunderlbl_map(address_map &map) +{ + map(0x000000, 0x00ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM +// map(0x100000, 0x103fff).rw("x1snd", FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? +// map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins +// map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} /*************************************************************************** Wiggie Waggie ***************************************************************************/ -ADDRESS_MAP_START(seta_state::wiggie_map) - AM_RANGE(0x000000, 0x01ffff) AM_ROM // ROM - AM_RANGE(0xffc000, 0xffffff) AM_RAM // RAM - AM_RANGE(0x100000, 0x103fff) AM_NOP // X1_010 is not used - AM_RANGE(0x200000, 0x200001) AM_READWRITE(ipl1_ack_r, ipl1_ack_w) - AM_RANGE(0x300000, 0x300001) AM_WRITENOP // ? - AM_RANGE(0x400000, 0x40ffff) AM_WRITE(thunderl_protection_w) // Protection (not in wits) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700000, 0x7003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xb00000, 0xb00001) AM_READ_PORT("P1") // P1 - AM_RANGE(0xb00002, 0xb00003) AM_READ_PORT("P2") // P2 - AM_RANGE(0xb00004, 0xb00005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0xb0000c, 0xb0000d) AM_READ(thunderl_protection_r) // Protection (not in wits) - AM_RANGE(0xb00008, 0xb00009) AM_READ_PORT("P3") // P3 (wits) - AM_RANGE(0xb00008, 0xb00009) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0xff00) - AM_RANGE(0xb0000a, 0xb0000b) AM_READ_PORT("P4") // P4 (wits) - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xe04000, 0xe07fff) AM_RAM // (wits) -ADDRESS_MAP_END - -ADDRESS_MAP_START(seta_state::wiggie_sound_map) - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x9800, 0x9800) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::wiggie_map(address_map &map) +{ + map(0x000000, 0x01ffff).rom(); // ROM + map(0xffc000, 0xffffff).ram(); // RAM + map(0x100000, 0x103fff).noprw(); // X1_010 is not used + map(0x200000, 0x200001).rw(this, FUNC(seta_state::ipl1_ack_r), FUNC(seta_state::ipl1_ack_w)); + map(0x300000, 0x300001).nopw(); // ? + map(0x400000, 0x40ffff).w(this, FUNC(seta_state::thunderl_protection_w)); // Protection (not in wits) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700000, 0x7003ff).ram().share("paletteram1"); // Palette + map(0xb00000, 0xb00001).portr("P1"); // P1 + map(0xb00002, 0xb00003).portr("P2"); // P2 + map(0xb00004, 0xb00005).portr("COINS"); // Coins + map(0xb0000c, 0xb0000d).r(this, FUNC(seta_state::thunderl_protection_r)); // Protection (not in wits) + map(0xb00008, 0xb00009).portr("P3"); // P3 (wits) + map(0xb00008, 0xb00008).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xb0000a, 0xb0000b).portr("P4"); // P4 (wits) + map(0xc00000, 0xc00001).ram(); // ? 0x4000 + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xe04000, 0xe07fff).ram(); // (wits) +} + +void seta_state::wiggie_sound_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x87ff).ram(); + map(0x9800, 0x9800).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); + map(0xa000, 0xa000).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} /*************************************************************************** Ultraman Club / SD Gundam Neo Battling ***************************************************************************/ -ADDRESS_MAP_START(seta_state::umanclub_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x300000, 0x3003ff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x300400, 0x300fff) AM_RAM // - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x400000, 0x400001) AM_WRITENOP // ? (end of lev 2) - AM_RANGE(0x400004, 0x400005) AM_WRITENOP // ? (end of lev 2) - AM_RANGE(0x500000, 0x500001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound -ADDRESS_MAP_END +void seta_state::umanclub_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x300000, 0x3003ff).ram().share("paletteram1"); // Palette + map(0x300400, 0x300fff).ram(); // + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x400000, 0x400001).nopw(); // ? (end of lev 2) + map(0x400004, 0x400005).nopw(); // ? (end of lev 2) + map(0x500000, 0x500001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).ram(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00000, 0xc03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound +} /*************************************************************************** @@ -2962,25 +2998,26 @@ WRITE8_MEMBER(seta_state::utoukond_sound_control_w) // other bits used for banking? (low nibble seems to always be 2) } -ADDRESS_MAP_START(seta_state::utoukond_map) - AM_RANGE(0x000000, 0x0fffff) AM_ROM // ROM - AM_RANGE(0x200000, 0x20ffff) AM_RAM // RAM - AM_RANGE(0x400000, 0x400001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x400002, 0x400003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x400004, 0x400005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x500000, 0x500005) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // ? Coin Lockout + Video Registers - AM_RANGE(0x600000, 0x600003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2&3 - AM_RANGE(0x900000, 0x900005) AM_WRITEONLY AM_SHARE("vctrl_0")// VRAM 0&1 Ctrl - AM_RANGE(0x980000, 0x980005) AM_WRITEONLY AM_SHARE("vctrl_1")// VRAM 2&3 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff) - AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? ack -ADDRESS_MAP_END +void seta_state::utoukond_map(address_map &map) +{ + map(0x000000, 0x0fffff).rom(); // ROM + map(0x200000, 0x20ffff).ram(); // RAM + map(0x400000, 0x400001).portr("P1"); // P1 + map(0x400002, 0x400003).portr("P2"); // P2 + map(0x400004, 0x400005).portr("COINS"); // Coins + map(0x500000, 0x500005).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // ? Coin Lockout + Video Registers + map(0x600000, 0x600003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette + map(0x800000, 0x803fff).ram().w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0x880000, 0x883fff).ram().w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2&3 + map(0x900000, 0x900005).writeonly().share("vctrl_0");// VRAM 0&1 Ctrl + map(0x980000, 0x980005).writeonly().share("vctrl_1");// VRAM 2&3 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xc00001, 0xc00001).w("soundlatch1", FUNC(generic_latch_8_device::write)); + map(0xe00000, 0xe00001).nopw(); // ? ack +} /*************************************************************************** Pairs Love @@ -3003,52 +3040,54 @@ WRITE16_MEMBER(seta_state::pairlove_prot_w) m_pairslove_protram[offset] = data; } -ADDRESS_MAP_START(seta_state::pairlove_map) - AM_RANGE(0x000000, 0x03ffff) AM_ROM // ROM - AM_RANGE(0x100000, 0x100001) AM_WRITENOP // ? 1 (start of interrupts, main loop: watchdog?) - AM_RANGE(0x200000, 0x200001) AM_WRITENOP // ? 0/1 (IRQ acknowledge?) - AM_RANGE(0x300000, 0x300003) AM_READ(seta_dsw_r) // DSW - AM_RANGE(0x400000, 0x400001) AM_RAM_WRITE(seta_vregs_w) AM_SHARE("vregs") // Coin Lockout + Sound Enable (bit 4?) - AM_RANGE(0x500000, 0x500001) AM_READ_PORT("P1") // P1 - AM_RANGE(0x500002, 0x500003) AM_READ_PORT("P2") // P2 - AM_RANGE(0x500004, 0x500005) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x900000, 0x9001ff) AM_READWRITE(pairlove_prot_r,pairlove_prot_w) - AM_RANGE(0xa00000, 0xa03fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound - AM_RANGE(0xb00000, 0xb00fff) AM_RAM AM_SHARE("paletteram1") // Palette - AM_RANGE(0xc00000, 0xc03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr - AM_RANGE(0xd00000, 0xd00001) AM_RAM // ? 0x4000 - AM_RANGE(0xe00000, 0xe005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xe00600, 0xe00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xf00000, 0xf0ffff) AM_RAM // RAM -ADDRESS_MAP_END +void seta_state::pairlove_map(address_map &map) +{ + map(0x000000, 0x03ffff).rom(); // ROM + map(0x100000, 0x100001).nopw(); // ? 1 (start of interrupts, main loop: watchdog?) + map(0x200000, 0x200001).nopw(); // ? 0/1 (IRQ acknowledge?) + map(0x300000, 0x300003).r(this, FUNC(seta_state::seta_dsw_r)); // DSW + map(0x400000, 0x400001).ram().w(this, FUNC(seta_state::seta_vregs_w)).share("vregs"); // Coin Lockout + Sound Enable (bit 4?) + map(0x500000, 0x500001).portr("P1"); // P1 + map(0x500002, 0x500003).portr("P2"); // P2 + map(0x500004, 0x500005).portr("COINS"); // Coins + map(0x900000, 0x9001ff).rw(this, FUNC(seta_state::pairlove_prot_r), FUNC(seta_state::pairlove_prot_w)); + map(0xa00000, 0xa03fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound + map(0xb00000, 0xb00fff).ram().share("paletteram1"); // Palette + map(0xc00000, 0xc03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr + map(0xd00000, 0xd00001).ram(); // ? 0x4000 + map(0xe00000, 0xe005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xe00600, 0xe00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xf00000, 0xf0ffff).ram(); // RAM +} /*************************************************************************** Crazy Fight ***************************************************************************/ -ADDRESS_MAP_START(seta_state::crazyfgt_map) - AM_RANGE(0x000000, 0x07ffff) AM_ROM - AM_RANGE(0x400000, 0x40ffff) AM_RAM - AM_RANGE(0x610000, 0x610001) AM_READ_PORT("COINS") - AM_RANGE(0x610002, 0x610003) AM_READ_PORT("UNK") - AM_RANGE(0x610004, 0x610005) AM_READ_PORT("INPUT") - AM_RANGE(0x610006, 0x610007) AM_WRITENOP - AM_RANGE(0x620000, 0x620003) AM_WRITENOP // protection - AM_RANGE(0x630000, 0x630003) AM_READ(seta_dsw_r) - AM_RANGE(0x640400, 0x640fff) AM_WRITEONLY AM_SHARE("paletteram1") // Palette - AM_RANGE(0x650000, 0x650003) AM_DEVWRITE8("ymsnd", ym3812_device, write, 0x00ff) - AM_RANGE(0x658000, 0x658001) AM_DEVWRITE8("oki", okim6295_device, write, 0x00ff) - AM_RANGE(0x670000, 0x670001) AM_READNOP // watchdog? - AM_RANGE(0x800000, 0x803fff) AM_WRITE(vram_w<1>) AM_SHARE("vram_1") // VRAM 2 - AM_RANGE(0x880000, 0x883fff) AM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0 - AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_1") // VRAM 2&3 Ctrl - AM_RANGE(0x980000, 0x980005) AM_RAM AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xa00600, 0xa00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) - AM_RANGE(0xa80000, 0xa80001) AM_WRITENOP // ? 0x4000 - AM_RANGE(0xb00000, 0xb03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr -ADDRESS_MAP_END +void seta_state::crazyfgt_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x400000, 0x40ffff).ram(); + map(0x610000, 0x610001).portr("COINS"); + map(0x610002, 0x610003).portr("UNK"); + map(0x610004, 0x610005).portr("INPUT"); + map(0x610006, 0x610007).nopw(); + map(0x620000, 0x620003).nopw(); // protection + map(0x630000, 0x630003).r(this, FUNC(seta_state::seta_dsw_r)); + map(0x640400, 0x640fff).writeonly().share("paletteram1"); // Palette + map(0x650000, 0x650003).w("ymsnd", FUNC(ym3812_device::write)).umask16(0x00ff); + map(0x658001, 0x658001).w("oki", FUNC(okim6295_device::write)); + map(0x670000, 0x670001).nopr(); // watchdog? + map(0x800000, 0x803fff).w(this, FUNC(seta_state::vram_w<1>)).share("vram_1"); // VRAM 2 + map(0x880000, 0x883fff).w(this, FUNC(seta_state::vram_w<0>)).share("vram_0"); // VRAM 0 + map(0x900000, 0x900005).ram().share("vctrl_1"); // VRAM 2&3 Ctrl + map(0x980000, 0x980005).ram().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xa00000, 0xa005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xa00600, 0xa00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); + map(0xa80000, 0xa80001).nopw(); // ? 0x4000 + map(0xb00000, 0xb03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr +} /*************************************************************************** @@ -3201,46 +3240,47 @@ READ16_MEMBER(jockeyc_state::trackball_r) return 0; } -ADDRESS_MAP_START(jockeyc_state::jockeyc_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) +void jockeyc_state::jockeyc_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) - AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, jockeyc_mux_w) - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(jockeyc_out_w) + map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::jockeyc_mux_w)); + map(0x200002, 0x200003).portr("COIN"); + map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::jockeyc_out_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0x300002, 0x300003) AM_NOP // clr.l $300000 (watchdog) + map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); + map(0x300002, 0x300003).noprw(); // clr.l $300000 (watchdog) - AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack - AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack - AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack - AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack + map(0x300010, 0x300011).nopw(); // lev1 ack + map(0x300020, 0x300021).nopw(); // lev2 ack + map(0x300040, 0x300041).nopw(); // lev4 ack + map(0x300060, 0x300061).nopw(); // lev6 ack #if JOCKEYC_HIDDEN_EDITOR - AM_RANGE(0x400000, 0x400007) AM_READ(trackball_r) + map(0x400000, 0x400007).r(this, FUNC(jockeyc_state::trackball_r)); #endif - AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3 - AM_RANGE(0x600000, 0x600001) AM_READ(comm_r) // comm data - AM_RANGE(0x600002, 0x600003) AM_READ(comm_r) // comm status (bits 0,4,5,6) + map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3 + map(0x600000, 0x600001).r(this, FUNC(jockeyc_state::comm_r)); // comm data + map(0x600002, 0x600003).r(this, FUNC(jockeyc_state::comm_r)); // comm status (bits 0,4,5,6) - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w) + map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w)); - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 - AM_RANGE(0xb04000, 0xb0ffff) AM_WRITENOP // likely left-over + map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 + map(0xb04000, 0xb0ffff).nopw(); // likely left-over - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 + map(0xc00000, 0xc00001).ram(); // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed) -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed) +} /*************************************************************************** @@ -3288,40 +3328,41 @@ READ16_MEMBER(jockeyc_state::inttoote_700000_r) return m_inttoote_700000[offset] & 0x3f; } -ADDRESS_MAP_START(jockeyc_state::inttoote_map) - AM_RANGE(0x000000, 0x1fffff) AM_ROM // ROM (up to 2MB) +void jockeyc_state::inttoote_map(address_map &map) +{ + map(0x000000, 0x1fffff).rom(); // ROM (up to 2MB) - AM_RANGE(0x200000, 0x200001) AM_READWRITE(mux_r, inttoote_mux_w) - AM_RANGE(0x200002, 0x200003) AM_READ_PORT("COIN") - AM_RANGE(0x200010, 0x200011) AM_READ_PORT("SERVICE") AM_WRITE(inttoote_out_w) + map(0x200000, 0x200001).rw(this, FUNC(jockeyc_state::mux_r), FUNC(jockeyc_state::inttoote_mux_w)); + map(0x200002, 0x200003).portr("COIN"); + map(0x200010, 0x200011).portr("SERVICE").w(this, FUNC(jockeyc_state::inttoote_out_w)); - AM_RANGE(0x300000, 0x300001) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + map(0x300000, 0x300001).w("watchdog", FUNC(watchdog_timer_device::reset16_w)); - AM_RANGE(0x300010, 0x300011) AM_WRITENOP // lev1 ack - AM_RANGE(0x300020, 0x300021) AM_WRITENOP // lev2 ack - AM_RANGE(0x300040, 0x300041) AM_WRITENOP // lev4 ack - AM_RANGE(0x300060, 0x300061) AM_WRITENOP // lev6 ack + map(0x300010, 0x300011).nopw(); // lev1 ack + map(0x300020, 0x300021).nopw(); // lev2 ack + map(0x300040, 0x300041).nopw(); // lev4 ack + map(0x300060, 0x300061).nopw(); // lev6 ack - AM_RANGE(0x500000, 0x500003) AM_READ(dsw_r) // DSW x 3 + map(0x500000, 0x500003).r(this, FUNC(jockeyc_state::dsw_r)); // DSW x 3 - AM_RANGE(0x700000, 0x700101) AM_RAM_READ(inttoote_700000_r) AM_SHARE("inttoote_700000") + map(0x700000, 0x700101).ram().r(this, FUNC(jockeyc_state::inttoote_700000_r)).share("inttoote_700000"); - AM_RANGE(0x800000, 0x80001f) AM_READWRITE(rtc_r, rtc_w) + map(0x800000, 0x80001f).rw(this, FUNC(jockeyc_state::rtc_r), FUNC(jockeyc_state::rtc_w)); - AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound + map(0x900000, 0x903fff).rw(m_x1, FUNC(x1_010_device::word_r), FUNC(x1_010_device::word_w)); // Sound - AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl - AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1 + map(0xa00000, 0xa00005).writeonly().share("vctrl_0"); // VRAM 0&1 Ctrl + map(0xb00000, 0xb03fff).ram().w(this, FUNC(jockeyc_state::vram_w<0>)).share("vram_0"); // VRAM 0&1 - AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000 + map(0xc00000, 0xc00001).ram(); // ? 0x4000 - AM_RANGE(0xd00000, 0xd005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y - AM_RANGE(0xd00600, 0xd00607) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritectrl_r16, spritectrl_w16) + map(0xd00000, 0xd005ff).ram().rw(m_seta001, FUNC(seta001_device::spriteylow_r16), FUNC(seta001_device::spriteylow_w16)); // Sprites Y + map(0xd00600, 0xd00607).ram().rw(m_seta001, FUNC(seta001_device::spritectrl_r16), FUNC(seta001_device::spritectrl_w16)); - AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spritecode_r16, spritecode_w16) // Sprites Code + X + Attr + map(0xe00000, 0xe03fff).ram().rw(m_seta001, FUNC(seta001_device::spritecode_r16), FUNC(seta001_device::spritecode_w16)); // Sprites Code + X + Attr - AM_RANGE(0xffc000, 0xffffff) AM_RAM AM_SHARE("nvram") // RAM (battery backed) -ADDRESS_MAP_END + map(0xffc000, 0xffffff).ram().share("nvram"); // RAM (battery backed) +} /*************************************************************************** @@ -3350,41 +3391,43 @@ WRITE8_MEMBER(seta_state::sub_bankswitch_lockout_w) READ8_MEMBER(seta_state::ff_r){return 0xff;} -ADDRESS_MAP_START(seta_state::tndrcade_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_READ(ff_r) // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom) +void seta_state::tndrcade_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r(this, FUNC(seta_state::ff_r)); // ? (bits 0/1/2/3: 1 -> do test 0-ff/100-1e0/5001-57ff/banked rom) //AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // //AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1 - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2 - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x2000, 0x2001) AM_DEVREADWRITE("ym1", ym2203_device, read, write) - AM_RANGE(0x3000, 0x3001) AM_DEVWRITE("ym2", ym3812_device, write) - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x6000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END + map(0x1000, 0x1000).portr("P1"); // P1 + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1001, 0x1001).portr("P2"); // P2 + map(0x1002, 0x1002).portr("COINS"); // Coins + map(0x2000, 0x2001).rw("ym1", FUNC(ym2203_device::read), FUNC(ym2203_device::write)); + map(0x3000, 0x3001).w("ym2", FUNC(ym3812_device::write)); + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x6000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** Twin Eagle ***************************************************************************/ -ADDRESS_MAP_START(seta_state::twineagl_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("P1") // P1 - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1001, 0x1001) AM_READ_PORT("P2") // P2 - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void seta_state::twineagl_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1000).portr("P1"); // P1 + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1001, 0x1001).portr("P2"); // P2 + map(0x1002, 0x1002).portr("COINS"); // Coins + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** @@ -3414,17 +3457,18 @@ READ8_MEMBER(seta_state::downtown_ip_r) return 0; } -ADDRESS_MAP_START(seta_state::downtown_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1007) AM_READ(downtown_ip_r) // Input Ports - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END +void seta_state::downtown_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1007).r(this, FUNC(seta_state::downtown_ip_r)); // Input Ports + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** @@ -3459,52 +3503,56 @@ WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w) m_subcpu->spin_until_time(attotime::from_usec(50)); // Allow the other cpu to reply } -ADDRESS_MAP_START(seta_state::calibr50_sub_map) - AM_RANGE(0x0000, 0x1fff) AM_DEVREADWRITE("x1snd", x1_010_device, read ,write) // Sound - AM_RANGE(0x4000, 0x4000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // From Main CPU - AM_RANGE(0x4000, 0x4000) AM_WRITE(calibr50_sub_bankswitch_w) // Bankswitching - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM - AM_RANGE(0xc000, 0xc000) AM_WRITE(calibr50_soundlatch2_w) // To Main CPU -ADDRESS_MAP_END +void seta_state::calibr50_sub_map(address_map &map) +{ + map(0x0000, 0x1fff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); // Sound + map(0x4000, 0x4000).r("soundlatch1", FUNC(generic_latch_8_device::read)); // From Main CPU + map(0x4000, 0x4000).w(this, FUNC(seta_state::calibr50_sub_bankswitch_w)); // Bankswitching + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM + map(0xc000, 0xc000).w(this, FUNC(seta_state::calibr50_soundlatch2_w)); // To Main CPU +} /*************************************************************************** Meta Fox ***************************************************************************/ -ADDRESS_MAP_START(seta_state::metafox_sub_map) - AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM - AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) // - AM_RANGE(0x0801, 0x0801) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) // - AM_RANGE(0x1000, 0x1000) AM_READ_PORT("COINS") // Coins - AM_RANGE(0x1000, 0x1000) AM_WRITE(sub_bankswitch_lockout_w) // ROM Bank + Coin Lockout - AM_RANGE(0x1002, 0x1002) AM_READ_PORT("P1") // P1 +void seta_state::metafox_sub_map(address_map &map) +{ + map(0x0000, 0x01ff).ram(); // RAM + map(0x0800, 0x0800).r("soundlatch1", FUNC(generic_latch_8_device::read)); // + map(0x0801, 0x0801).r("soundlatch2", FUNC(generic_latch_8_device::read)); // + map(0x1000, 0x1000).portr("COINS"); // Coins + map(0x1000, 0x1000).w(this, FUNC(seta_state::sub_bankswitch_lockout_w)); // ROM Bank + Coin Lockout + map(0x1002, 0x1002).portr("P1"); // P1 //AM_RANGE(0x1004, 0x1004) AM_READNOP // ? - AM_RANGE(0x1006, 0x1006) AM_READ_PORT("P2") // P2 - AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("sharedram") // Shared RAM - AM_RANGE(0x7000, 0x7fff) AM_ROM // ROM - AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("subbank") // Banked ROM - AM_RANGE(0xc000, 0xffff) AM_ROM // ROM -ADDRESS_MAP_END + map(0x1006, 0x1006).portr("P2"); // P2 + map(0x5000, 0x57ff).ram().share("sharedram"); // Shared RAM + map(0x7000, 0x7fff).rom(); // ROM + map(0x8000, 0xbfff).bankr("subbank"); // Banked ROM + map(0xc000, 0xffff).rom(); // ROM +} /*************************************************************************** Ultra Toukon Densetsu ***************************************************************************/ -ADDRESS_MAP_START(seta_state::utoukond_sound_map) - AM_RANGE(0x0000, 0xdfff) AM_ROM - AM_RANGE(0xe000, 0xefff) AM_RAM - AM_RANGE(0xf000, 0xffff) AM_DEVREADWRITE("x1snd", x1_010_device, read, write) -ADDRESS_MAP_END +void seta_state::utoukond_sound_map(address_map &map) +{ + map(0x0000, 0xdfff).rom(); + map(0xe000, 0xefff).ram(); + map(0xf000, 0xffff).rw(m_x1, FUNC(x1_010_device::read), FUNC(x1_010_device::write)); +} -ADDRESS_MAP_START(seta_state::utoukond_sound_io_map) - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) - AM_RANGE(0x80, 0x80) AM_WRITE(utoukond_sound_control_w) - AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::utoukond_sound_io_map(address_map &map) +{ + map.global_mask(0xff); + map(0x00, 0x03).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write)); + map(0x80, 0x80).w(this, FUNC(seta_state::utoukond_sound_control_w)); + map(0xc0, 0xc0).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} /*************************************************************************** @@ -8254,19 +8302,21 @@ MACHINE_CONFIG_START(seta_state::blockcar) MACHINE_CONFIG_END -ADDRESS_MAP_START(seta_state::blockcarb_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0xd000, 0xdfff) AM_RAM +void seta_state::blockcarb_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0xd000, 0xdfff).ram(); //AM_RANGE(0xf001, 0xf001) ?? -ADDRESS_MAP_END +} -ADDRESS_MAP_START(seta_state::blockcarb_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) +void seta_state::blockcarb_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); // AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) // AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +} MACHINE_CONFIG_START(seta_state::blockcarb) blockcar(config); @@ -9263,19 +9313,21 @@ MACHINE_CONFIG_START(seta_state::thunderl) MACHINE_CONFIG_END -ADDRESS_MAP_START(seta_state::thunderlbl_sound_map) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x7fff) AM_ROM - AM_RANGE(0x8000, 0xdfff) AM_ROM - AM_RANGE(0xf800, 0xffff) AM_RAM -ADDRESS_MAP_END +void seta_state::thunderlbl_sound_map(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x7fff).rom(); + map(0x8000, 0xdfff).rom(); + map(0xf800, 0xffff).ram(); +} -ADDRESS_MAP_START(seta_state::thunderlbl_sound_portmap) - ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xff) - AM_RANGE(0x00, 0x01) AM_MIRROR(0x3e) AM_DEVREADWRITE("ymsnd", ym2151_device, read, write) - AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read) -ADDRESS_MAP_END +void seta_state::thunderlbl_sound_portmap(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0xff); + map(0x00, 0x01).mirror(0x3e).rw("ymsnd", FUNC(ym2151_device::read), FUNC(ym2151_device::write)); + map(0xc0, 0xc0).mirror(0x3f).r("soundlatch1", FUNC(generic_latch_8_device::read)); +} MACHINE_CONFIG_START(seta_state::thunderlbl) |