summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/seta.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/seta.cpp')
-rw-r--r--src/mame/drivers/seta.cpp357
1 files changed, 191 insertions, 166 deletions
diff --git a/src/mame/drivers/seta.cpp b/src/mame/drivers/seta.cpp
index 77a9f9d089b..ee64888df9b 100644
--- a/src/mame/drivers/seta.cpp
+++ b/src/mame/drivers/seta.cpp
@@ -1577,11 +1577,11 @@ WRITE16_MEMBER(seta_state::sub_ctrl_w)
break;
case 4/2: // not sure
- if (ACCESSING_BITS_0_7) if(m_soundlatch != nullptr) m_soundlatch->write(space, 0, data & 0xff);
+ if (ACCESSING_BITS_0_7) if(m_soundlatch[0] != nullptr) m_soundlatch[0]->write(space, 0, data & 0xff);
break;
case 6/2: // not sure
- if (ACCESSING_BITS_0_7) if(m_soundlatch2 != nullptr) m_soundlatch2->write(space, 0, data & 0xff);
+ if (ACCESSING_BITS_0_7) if(m_soundlatch[1] != nullptr) m_soundlatch[1]->write(space, 0, data & 0xff);
break;
}
@@ -1625,6 +1625,19 @@ WRITE_LINE_MEMBER(seta_state::screen_vblank_seta_buffer_sprites)
}
+/*
+
+ VRAM Handler
+
+*/
+template<int Layer>
+WRITE16_MEMBER(seta_state::vram_w)
+{
+ COMBINE_DATA(&m_vram[Layer][offset]);
+ m_tilemap[Layer][(offset >> 12) & 1]->mark_tile_dirty(offset & 0x7ff);
+}
+
+
/***************************************************************************
@@ -1690,9 +1703,9 @@ ADDRESS_MAP_START(seta_state::tndrcade_map)
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("paletteram") // 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(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?
@@ -1716,9 +1729,9 @@ ADDRESS_MAP_START(seta_state::downtown_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM
+ 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
@@ -1741,9 +1754,9 @@ ADDRESS_MAP_START(seta_state::calibr50_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM
+ 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
@@ -1752,12 +1765,12 @@ ADDRESS_MAP_START(seta_state::calibr50_map)
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(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("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sub CPU
-/**/AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? $4000
+ 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
@@ -1781,12 +1794,12 @@ READ16_MEMBER(seta_state::usclssic_dsw_r)
CUSTOM_INPUT_MEMBER(seta_state::usclssic_trackball_x_r)
{
- return (m_usclssic_port_select ? m_track2_x : m_track1_x)->read();
+ return m_track_x[m_usclssic_port_select ? 1 : 0]->read();
}
CUSTOM_INPUT_MEMBER(seta_state::usclssic_trackball_y_r)
{
- return (m_usclssic_port_select ? m_track2_y : m_track1_y)->read();
+ return m_track_y[m_usclssic_port_select ? 1 : 0]->read();
}
@@ -1813,19 +1826,19 @@ ADDRESS_MAP_START(seta_state::usclssic_map)
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(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("paletteram") // Palette
+ 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("soundlatch", generic_latch_8_device, write, 0x00ff) // To Sub CPU
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM
+ 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
@@ -1843,13 +1856,13 @@ ADDRESS_MAP_START(seta_state::atehate_map)
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("paletteram") // Palette
+ 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(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
@@ -1869,17 +1882,17 @@ ADDRESS_MAP_START(seta_state::blandia_map)
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("paletteram") // Palette
+ 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(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_2") // VRAM 2&3 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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 // ?
@@ -1904,17 +1917,17 @@ ADDRESS_MAP_START(seta_state::blandiap_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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 // ?
@@ -1975,17 +1988,17 @@ ADDRESS_MAP_START(seta_state::wrofaero_map)
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("paletteram") // Palette
+ AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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
#if __uPD71054_TIMER
@@ -2022,20 +2035,20 @@ ADDRESS_MAP_START(seta_state::zingzipbl_map)
//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("paletteram") // Palette
+ AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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(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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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
#if __uPD71054_TIMER
@@ -2059,16 +2072,16 @@ ADDRESS_MAP_START(seta_state::jjsquawb_map)
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("paletteram") // Palette
+ AM_RANGE(0x70b400, 0x70bfff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x70c000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0
- AM_RANGE(0x804000, 0x807fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2
+ 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_2") // VRAM 2&3 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)
-// AM_RANGE(0xa80000, 0xa80001) AM_RAM // ? 0x4000
+// 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
#if __uPD71054_TIMER
@@ -2098,10 +2111,10 @@ ADDRESS_MAP_START(seta_state::orbs_map)
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("paletteram") // Palette
+ 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(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
@@ -2179,10 +2192,10 @@ ADDRESS_MAP_START(seta_state::keroppi_map)
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("paletteram") // Palette
+ 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(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
@@ -2210,10 +2223,10 @@ ADDRESS_MAP_START(seta_state::blockcar_map)
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("paletteram") // Palette
+ 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(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
@@ -2232,10 +2245,10 @@ ADDRESS_MAP_START(seta_state::blockcarb_map)
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("paletteram") // Palette
+ 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(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
@@ -2253,14 +2266,14 @@ ADDRESS_MAP_START(seta_state::daioh_map)
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("paletteram") // Palette
+ AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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)
@@ -2287,14 +2300,14 @@ ADDRESS_MAP_START(seta_state::daiohp_map)
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("paletteram") // Palette
+ AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x701000, 0x70ffff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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)
@@ -2321,16 +2334,16 @@ ADDRESS_MAP_START(seta_state::drgnunit_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM
+ 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(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
@@ -2495,7 +2508,7 @@ ADDRESS_MAP_START(setaroul_state::setaroul_map)
AM_RANGE(0xdc0000, 0xdc3fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0")
+ 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)
@@ -2521,17 +2534,17 @@ ADDRESS_MAP_START(seta_state::extdwnhl_map)
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("paletteram") // Palette
+ AM_RANGE(0x600400, 0x600fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x601000, 0x610bff) AM_RAM //
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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
@@ -2554,14 +2567,14 @@ ADDRESS_MAP_START(seta_state::kamenrid_map)
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("paletteram") // Palette
+ AM_RANGE(0x700400, 0x700fff) AM_RAM AM_SHARE("paletteram1") // Palette
AM_RANGE(0x701000, 0x703fff) AM_RAM // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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
@@ -2583,11 +2596,11 @@ ADDRESS_MAP_START(seta_state::madshark_map)
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("paletteram") // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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)
@@ -2623,14 +2636,14 @@ ADDRESS_MAP_START(seta_state::magspeed_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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
@@ -2660,10 +2673,10 @@ ADDRESS_MAP_START(seta_state::krzybowl_map)
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("paletteram") // Palette
+ 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(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
@@ -2696,15 +2709,15 @@ ADDRESS_MAP_START(seta_state::msgundam_map)
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("paletteram") // Palette
+ 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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0xa80000, 0xa83fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2") // VRAM 2&3 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
@@ -2726,15 +2739,15 @@ ADDRESS_MAP_START(seta_state::oisipuzl_map)
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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // 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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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("paletteram") // Palette
+ AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette
ADDRESS_MAP_END
@@ -2755,15 +2768,15 @@ ADDRESS_MAP_START(seta_state::triplfun_map)
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(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // 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_2") // VRAM 2&3 Ctrl
-/**/AM_RANGE(0xa00000, 0xa005ff) AM_RAM AM_DEVREADWRITE("spritegen", seta001_device, spriteylow_r16, spriteylow_w16) // Sprites Y
+ 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(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("paletteram") // Palette
+ AM_RANGE(0xc00400, 0xc00fff) AM_RAM AM_SHARE("paletteram1") // Palette
ADDRESS_MAP_END
@@ -2803,10 +2816,10 @@ 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(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("paletteram") // Palette
+ 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
@@ -2839,15 +2852,15 @@ ADDRESS_MAP_START(seta_state::thunderl_map)
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("paletteram") // Palette
+ 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(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)
@@ -2863,15 +2876,15 @@ ADDRESS_MAP_START(seta_state::thunderlbl_map)
// 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("paletteram") // Palette
+ 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("soundlatch", generic_latch_8_device, write, 0xff00) // P3 (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(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)
@@ -2890,16 +2903,16 @@ ADDRESS_MAP_START(seta_state::wiggie_map)
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("paletteram") // Palette
+ 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("soundlatch", generic_latch_8_device, write, 0xff00)
+ 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(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)
@@ -2909,7 +2922,7 @@ 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("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xa000, 0xa000) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
ADDRESS_MAP_END
@@ -2920,7 +2933,7 @@ ADDRESS_MAP_END
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("paletteram") // Palette
+ 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
@@ -2931,7 +2944,7 @@ ADDRESS_MAP_START(seta_state::umanclub_map)
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(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
@@ -2944,7 +2957,7 @@ ADDRESS_MAP_END
WRITE8_MEMBER(seta_state::utoukond_sound_control_w)
{
if (!BIT(data, 6))
- m_soundlatch->acknowledge_w(space, 0, 0);
+ m_soundlatch[0]->acknowledge_w(space, 0, 0);
// other bits used for banking? (low nibble seems to always be 2)
}
@@ -2957,15 +2970,15 @@ ADDRESS_MAP_START(seta_state::utoukond_map)
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("paletteram") // Palette
- AM_RANGE(0x800000, 0x803fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
- AM_RANGE(0x880000, 0x883fff) AM_RAM_WRITE(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2&3
+ 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_2")// VRAM 2&3 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("soundlatch", generic_latch_8_device, write, 0x00ff)
+ AM_RANGE(0xc00000, 0xc00001) AM_DEVWRITE8("soundlatch1", generic_latch_8_device, write, 0x00ff)
AM_RANGE(0xe00000, 0xe00001) AM_WRITENOP // ? ack
ADDRESS_MAP_END
@@ -3001,7 +3014,7 @@ ADDRESS_MAP_START(seta_state::pairlove_map)
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("paletteram") // Palette
+ 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
@@ -3023,13 +3036,13 @@ ADDRESS_MAP_START(seta_state::crazyfgt_map)
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("paletteram") // Palette
+ 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(seta_vram_2_w) AM_SHARE("vram_2") // VRAM 2
- AM_RANGE(0x880000, 0x883fff) AM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0
- AM_RANGE(0x900000, 0x900005) AM_RAM AM_SHARE("vctrl_2") // VRAM 2&3 Ctrl
+ 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)
@@ -3216,7 +3229,7 @@ ADDRESS_MAP_START(jockeyc_state::jockeyc_map)
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ 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
AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
@@ -3298,7 +3311,7 @@ ADDRESS_MAP_START(jockeyc_state::inttoote_map)
AM_RANGE(0x900000, 0x903fff) AM_DEVREADWRITE("x1snd", x1_010_device, word_r, word_w) // Sound
AM_RANGE(0xa00000, 0xa00005) AM_WRITEONLY AM_SHARE("vctrl_0") // VRAM 0&1 Ctrl
- AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(seta_vram_0_w) AM_SHARE("vram_0") // VRAM 0&1
+ AM_RANGE(0xb00000, 0xb03fff) AM_RAM_WRITE(vram_w<0>) AM_SHARE("vram_0") // VRAM 0&1
AM_RANGE(0xc00000, 0xc00001) AM_RAM // ? 0x4000
@@ -3340,7 +3353,7 @@ 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)
- //AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
+ //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
@@ -3361,7 +3374,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(seta_state::twineagl_sub_map)
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
+ 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
@@ -3403,7 +3416,7 @@ READ8_MEMBER(seta_state::downtown_ip_r)
ADDRESS_MAP_START(seta_state::downtown_sub_map)
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
+ 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
@@ -3431,7 +3444,7 @@ WRITE8_MEMBER(seta_state::calibr50_sub_bankswitch_w)
// Bit 3: NMICLR
if (!BIT(data, 3))
- m_soundlatch->acknowledge_w(space, 0, 0);
+ m_soundlatch[0]->acknowledge_w(space, 0, 0);
// Bit 2: IRQCLR
if (!BIT(data, 2))
@@ -3442,13 +3455,13 @@ WRITE8_MEMBER(seta_state::calibr50_sub_bankswitch_w)
WRITE8_MEMBER(seta_state::calibr50_soundlatch2_w)
{
- m_soundlatch2->write(space,0,data);
+ m_soundlatch[1]->write(space,0,data);
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("soundlatch", generic_latch_8_device, read) // From Main CPU
+ 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
@@ -3462,7 +3475,7 @@ ADDRESS_MAP_END
ADDRESS_MAP_START(seta_state::metafox_sub_map)
AM_RANGE(0x0000, 0x01ff) AM_RAM // RAM
- AM_RANGE(0x0800, 0x0800) AM_DEVREAD("soundlatch", generic_latch_8_device, read) //
+ 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
@@ -3490,7 +3503,7 @@ 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("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xc0, 0xc0) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
ADDRESS_MAP_END
@@ -7836,7 +7849,7 @@ MACHINE_CONFIG_START(seta_state::twineagl)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
@@ -7882,7 +7895,7 @@ MACHINE_CONFIG_START(seta_state::downtown)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
@@ -7966,7 +7979,7 @@ MACHINE_CONFIG_START(seta_state::usclssic)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("sub", INPUT_LINE_NMI))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
@@ -8024,7 +8037,7 @@ MACHINE_CONFIG_START(seta_state::calibr50)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("sub", INPUT_LINE_NMI))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
@@ -8074,7 +8087,7 @@ MACHINE_CONFIG_START(seta_state::metafox)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_8_ADD("soundlatch2")
MCFG_SOUND_ADD("x1snd", X1_010, 16000000) /* 16 MHz */
@@ -8252,7 +8265,7 @@ ADDRESS_MAP_START(seta_state::blockcarb_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("soundlatch", generic_latch_8_device, read)
+// AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
ADDRESS_MAP_END
MACHINE_CONFIG_START(seta_state::blockcarb)
@@ -9261,7 +9274,7 @@ 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("soundlatch", generic_latch_8_device, read)
+ AM_RANGE(0xc0, 0xc0) AM_MIRROR(0x3f) AM_DEVREAD("soundlatch1", generic_latch_8_device, read)
ADDRESS_MAP_END
@@ -9283,7 +9296,7 @@ MACHINE_CONFIG_START(seta_state::thunderlbl)
MCFG_YM2151_ADD("ymsnd", 10000000/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MACHINE_CONFIG_END
@@ -9322,7 +9335,7 @@ MACHINE_CONFIG_START(seta_state::wiggie)
MCFG_OKIM6295_ADD("oki", 1000000, PIN7_HIGH)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MACHINE_CONFIG_END
@@ -9438,7 +9451,7 @@ MACHINE_CONFIG_START(seta_state::utoukond)
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
- MCFG_GENERIC_LATCH_8_ADD("soundlatch")
+ MCFG_GENERIC_LATCH_8_ADD("soundlatch1")
MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("audiocpu", 0))
MCFG_GENERIC_LATCH_SEPARATE_ACKNOWLEDGE(true)
@@ -11769,6 +11782,10 @@ WRITE16_MEMBER(seta_state::downtown_protection_w)
DRIVER_INIT_MEMBER(seta_state,downtown)
{
DRIVER_INIT_CALL(bank6502);
+
+ m_downtown_protection = make_unique_clear<uint16_t[]>(0x200/2);
+ save_pointer(NAME(m_downtown_protection.get()),0x200/2);
+
m_maincpu->space(AS_PROGRAM).install_readwrite_handler(0x200000, 0x2001ff, read16_delegate(FUNC(seta_state::downtown_protection_r),this), write16_delegate(FUNC(seta_state::downtown_protection_w),this));
}
@@ -11877,6 +11894,14 @@ DRIVER_INIT_MEMBER(seta_state,rezon)
m_maincpu->space(AS_PROGRAM).nop_read(0x500006, 0x500007); // irq ack?
}
+DRIVER_INIT_MEMBER(seta_state,pairlove)
+{
+ m_pairslove_protram = make_unique_clear<uint16_t[]>(0x200/2);
+ m_pairslove_protram_old = make_unique_clear<uint16_t[]>(0x200/2);
+ save_pointer(NAME(m_pairslove_protram.get()), 0x200/2);
+ save_pointer(NAME(m_pairslove_protram_old.get()), 0x200/2);
+}
+
DRIVER_INIT_MEMBER(seta_state,wiggie)
{
uint8_t *src;
@@ -11979,7 +12004,7 @@ GAME( 1992, rezont, rezon, rezon, rezont, seta_state, rezon,
GAME( 1991, stg, 0, drgnunit, stg, seta_state, 0, ROT270, "Athena / Tecmo", "Strike Gunner S.T.G", 0 )
-GAME( 1991, pairlove, 0, pairlove, pairlove, seta_state, 0, ROT270, "Athena", "Pairs Love", 0 )
+GAME( 1991, pairlove, 0, pairlove, pairlove, seta_state, pairlove, ROT270, "Athena", "Pairs Love", 0 )
GAME( 1992, blandia, 0, blandia, blandia, seta_state, blandia, ROT0, "Allumer", "Blandia", MACHINE_IMPERFECT_GRAPHICS )
GAME( 1992, blandiap, blandia, blandiap, blandia, seta_state, 0, ROT0, "Allumer", "Blandia (prototype)", MACHINE_IMPERFECT_GRAPHICS )