summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cam900 <dbtlrchl@naver.com>2018-02-22 23:40:56 +0900
committer Vas Crabb <cuavas@users.noreply.github.com>2018-02-23 01:40:56 +1100
commit6f1b1596303141c56f8f76dc62f57f448c15c18f (patch)
treebfe092d8f2cd0d382c58b4e6f3b9ee065d70633a
parent9cd1af602e63476ace70a2451b8faded30679ce9 (diff)
seta : Cleanup Duplicates, Convert to unique_ptr when array size is >… (#3228)
* seta : Cleanup Duplicates, Convert to unique_ptr when array size is >=0x100 * seta : Fixes, More cleanups * seta : Fix compile * seta : Typo
-rw-r--r--src/mame/drivers/seta.cpp357
-rw-r--r--src/mame/includes/seta.h63
-rw-r--r--src/mame/video/seta.cpp277
3 files changed, 321 insertions, 376 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 )
diff --git a/src/mame/includes/seta.h b/src/mame/includes/seta.h
index 8ef859507d7..ab295fb0527 100644
--- a/src/mame/includes/seta.h
+++ b/src/mame/includes/seta.h
@@ -45,30 +45,24 @@ public:
m_subcpu(*this,"sub"),
m_seta001(*this, "spritegen"),
m_x1(*this, "x1snd"),
- m_soundlatch(*this, "soundlatch"),
- m_soundlatch2(*this, "soundlatch2"),
+ m_soundlatch(*this, "soundlatch%u", 1),
m_upd4701(*this, "upd4701"),
m_buttonmux(*this, "buttonmux"),
m_adc(*this, "adc"),
m_dsw(*this, "DSW"),
- m_rot(*this, {"ROT1", "ROT2"}),
+ m_rot(*this, "ROT%u", 1),
m_gun_inputs(*this, {"GUNX1", "GUNY1", "GUNX2", "GUNY2"}),
m_p1(*this, "P1"),
m_p2(*this, "P2"),
m_coins(*this, "COINS"),
m_extra_port(*this, "EXTRA"),
- m_track1_x(*this, "TRACK1_X"),
- m_track1_y(*this, "TRACK1_Y"),
- m_track2_x(*this, "TRACK2_X"),
- m_track2_y(*this, "TRACK2_Y"),
+ m_track_x(*this, "TRACK%u_X", 1),
+ m_track_y(*this, "TRACK%u_Y", 1),
m_sharedram(*this,"sharedram"),
m_vregs(*this,"vregs"),
- m_vram_0(*this,"vram_0"),
- m_vctrl_0(*this,"vctrl_0"),
- m_vram_2(*this,"vram_2"),
- m_vctrl_2(*this,"vctrl_2"),
- m_paletteram(*this,"paletteram"),
- m_paletteram2(*this,"paletteram2"),
+ m_vram(*this,"vram_%u", 0),
+ m_vctrl(*this,"vctrl_%u", 0),
+ m_paletteram(*this,"paletteram%u", 1),
m_subbank(*this,"subbank"),
m_gfxdecode(*this, "gfxdecode"),
m_palette(*this, "palette") { }
@@ -78,8 +72,7 @@ public:
optional_device<cpu_device> m_subcpu;
required_device<seta001_device> m_seta001;
optional_device<x1_010_device> m_x1;
- optional_device<generic_latch_8_device> m_soundlatch;
- optional_device<generic_latch_8_device> m_soundlatch2;
+ optional_device_array<generic_latch_8_device, 2> m_soundlatch;
optional_device<upd4701_device> m_upd4701;
optional_device<hc157_device> m_buttonmux;
optional_device<adc083x_device> m_adc;
@@ -91,19 +84,14 @@ public:
optional_ioport m_p2;
optional_ioport m_coins;
optional_ioport m_extra_port;
- optional_ioport m_track1_x;
- optional_ioport m_track1_y;
- optional_ioport m_track2_x;
- optional_ioport m_track2_y;
+ optional_ioport_array<2> m_track_x;
+ optional_ioport_array<2> m_track_y;
optional_shared_ptr<uint8_t> m_sharedram;
optional_shared_ptr<uint16_t> m_vregs;
- optional_shared_ptr<uint16_t> m_vram_0;
- optional_shared_ptr<uint16_t> m_vctrl_0;
- optional_shared_ptr<uint16_t> m_vram_2;
- optional_shared_ptr<uint16_t> m_vctrl_2;
- optional_shared_ptr<uint16_t> m_paletteram;
- optional_shared_ptr<uint16_t> m_paletteram2;
+ optional_shared_ptr_array<uint16_t, 2> m_vram;
+ optional_shared_ptr_array<uint16_t, 2> m_vctrl;
+ optional_shared_ptr_array<uint16_t, 2> m_paletteram;
optional_memory_bank m_subbank;
@@ -111,10 +99,7 @@ public:
required_device<palette_device> m_palette;
int m_tiles_offset;
- tilemap_t *m_tilemap_0;
- tilemap_t *m_tilemap_1; // Layer 0
- tilemap_t *m_tilemap_2;
- tilemap_t *m_tilemap_3; // Layer 1
+ tilemap_t *m_tilemap[2][2]; // Max 2 Layers, 2 Tilemap banks for each layers
int m_tilemaps_flip;
int m_samples_bank;
int m_color_mode_shift;
@@ -137,16 +122,15 @@ public:
uint16_t m_magspeed_lights[3];
- uint16_t m_pairslove_protram[0x200];
- uint16_t m_pairslove_protram_old[0x200];
- uint16_t m_downtown_protection[0x200/2];
+ std::unique_ptr<uint16_t[]> m_pairslove_protram;
+ std::unique_ptr<uint16_t[]> m_pairslove_protram_old;
+ std::unique_ptr<uint16_t[]> m_downtown_protection;
uint16_t m_kiwame_row_select;
DECLARE_READ16_MEMBER(metafox_protection_r);
DECLARE_WRITE16_MEMBER(seta_vregs_w);
- DECLARE_WRITE16_MEMBER(seta_vram_0_w);
- DECLARE_WRITE16_MEMBER(seta_vram_2_w);
+ template<int Layer> DECLARE_WRITE16_MEMBER(vram_w);
DECLARE_WRITE16_MEMBER(twineagl_tilebank_w);
DECLARE_WRITE16_MEMBER(timer_regs_w);
DECLARE_READ16_MEMBER(sharedram_68000_r);
@@ -200,12 +184,9 @@ public:
DECLARE_DRIVER_INIT(blandia);
DECLARE_DRIVER_INIT(kiwame);
DECLARE_DRIVER_INIT(eightfrc);
- TILE_GET_INFO_MEMBER(twineagl_get_tile_info_0);
- TILE_GET_INFO_MEMBER(twineagl_get_tile_info_1);
- TILE_GET_INFO_MEMBER(get_tile_info_0);
- TILE_GET_INFO_MEMBER(get_tile_info_1);
- TILE_GET_INFO_MEMBER(get_tile_info_2);
- TILE_GET_INFO_MEMBER(get_tile_info_3);
+ DECLARE_DRIVER_INIT(pairlove);
+ template<int Offset> TILE_GET_INFO_MEMBER(twineagl_get_tile_info);
+ template<int Layer, int Offset> TILE_GET_INFO_MEMBER(get_tile_info);
DECLARE_VIDEO_START(seta_no_layers);
DECLARE_VIDEO_START(kyustrkr_no_layers);
DECLARE_VIDEO_START(twineagl_1_layer);
@@ -244,8 +225,6 @@ public:
TIMER_DEVICE_CALLBACK_MEMBER(calibr50_interrupt);
TIMER_DEVICE_CALLBACK_MEMBER(crazyfgt_interrupt);
void seta_coin_lockout_w(int data);
- inline void twineagl_tile_info( tile_data &tileinfo, int tile_index, int offset );
- inline void get_tile_info( tile_data &tileinfo, int tile_index, int layer, int offset );
void set_pens();
void usclssic_set_pens();
void draw_tilemap_palette_effect(bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t *tilemap, int scrollx, int scrolly, int gfxnum, int flipscreen);
diff --git a/src/mame/video/seta.cpp b/src/mame/video/seta.cpp
index c0f1556cc1b..71bdfd58e2a 100644
--- a/src/mame/video/seta.cpp
+++ b/src/mame/video/seta.cpp
@@ -371,9 +371,10 @@ Offset + 0x4:
***************************************************************************/
-inline void seta_state::twineagl_tile_info( tile_data &tileinfo, int tile_index, int offset )
+template<int Offset>
+TILE_GET_INFO_MEMBER(seta_state::twineagl_get_tile_info)
{
- uint16_t *vram = m_vram_0 + offset;
+ uint16_t *vram = m_vram[0] + Offset;
uint16_t code = vram[ tile_index ];
uint16_t attr = vram[ tile_index + 0x800 ];
if ((code & 0x3e00) == 0x3e00)
@@ -381,15 +382,12 @@ inline void seta_state::twineagl_tile_info( tile_data &tileinfo, int tile_index,
SET_TILE_INFO_MEMBER(1, (code & 0x3fff), attr & 0x1f, TILE_FLIPXY((code & 0xc000) >> 14) );
}
-TILE_GET_INFO_MEMBER(seta_state::twineagl_get_tile_info_0){ twineagl_tile_info(tileinfo, tile_index, 0x0000 ); }
-TILE_GET_INFO_MEMBER(seta_state::twineagl_get_tile_info_1){ twineagl_tile_info(tileinfo, tile_index, 0x1000 ); }
-
-
-inline void seta_state::get_tile_info( tile_data &tileinfo, int tile_index, int layer, int offset )
+template<int Layer, int Offset>
+TILE_GET_INFO_MEMBER(seta_state::get_tile_info)
{
- int gfx = 1 + layer;
- uint16_t *vram = (layer == 0) ? m_vram_0 + offset : m_vram_2 + offset;
- uint16_t *vctrl = (layer == 0) ? m_vctrl_0 : m_vctrl_2;
+ int gfx = 1 + Layer;
+ uint16_t *vram = m_vram[Layer] + Offset;
+ uint16_t *vctrl = m_vctrl[Layer];
uint16_t code = vram[ tile_index ];
uint16_t attr = vram[ tile_index + 0x800 ];
@@ -399,35 +397,12 @@ inline void seta_state::get_tile_info( tile_data &tileinfo, int tile_index, int
}
else
{
- popmessage("Missing Color Mode = 1 for Layer = %d. Contact MAMETesters.",layer);
+ popmessage("Missing Color Mode = 1 for Layer = %d. Contact MAMETesters.",Layer);
}
SET_TILE_INFO_MEMBER(gfx, m_tiles_offset + (code & 0x3fff), attr & 0x1f, TILE_FLIPXY((code & 0xc000) >> 14) );
}
-TILE_GET_INFO_MEMBER(seta_state::get_tile_info_0){ get_tile_info(tileinfo, tile_index, 0, 0x0000 ); }
-TILE_GET_INFO_MEMBER(seta_state::get_tile_info_1){ get_tile_info(tileinfo, tile_index, 0, 0x1000 ); }
-TILE_GET_INFO_MEMBER(seta_state::get_tile_info_2){ get_tile_info(tileinfo, tile_index, 1, 0x0000 ); }
-TILE_GET_INFO_MEMBER(seta_state::get_tile_info_3){ get_tile_info(tileinfo, tile_index, 1, 0x1000 ); }
-
-
-WRITE16_MEMBER(seta_state::seta_vram_0_w)
-{
- COMBINE_DATA(&m_vram_0[offset]);
- if (offset & 0x1000)
- m_tilemap_1->mark_tile_dirty(offset & 0x7ff);
- else
- m_tilemap_0->mark_tile_dirty(offset & 0x7ff);
-}
-
-WRITE16_MEMBER(seta_state::seta_vram_2_w)
-{
- COMBINE_DATA(&m_vram_2[offset]);
- if (offset & 0x1000)
- m_tilemap_3->mark_tile_dirty(offset & 0x7ff);
- else
- m_tilemap_2->mark_tile_dirty(offset & 0x7ff);
-}
WRITE16_MEMBER(seta_state::twineagl_tilebank_w)
{
@@ -453,31 +428,30 @@ VIDEO_START_MEMBER(seta_state,seta_2_layers)
at any given time */
/* layer 0 */
- m_tilemap_0 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_0),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][0] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<0, 0x0000>, "layer1_bank0", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
- m_tilemap_1 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][1] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<0, 0x1000>, "layer1_bank1", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
/* layer 1 */
- m_tilemap_2 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_2),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[1][0] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<1, 0x0000>, "layer2_bank0", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
- m_tilemap_3 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_3),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[1][1] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<1, 0x1000>, "layer2_bank1", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
m_tilemaps_flip = 0;
m_color_mode_shift = 3;
- m_tilemap_0->set_transparent_pen(0);
- m_tilemap_1->set_transparent_pen(0);
- m_tilemap_2->set_transparent_pen(0);
- m_tilemap_3->set_transparent_pen(0);
+ for (int layer = 0; layer < 2; layer++)
+ for (int bank = 0; bank < 2; bank++)
+ m_tilemap[layer][bank]->set_transparent_pen(0);
}
VIDEO_START_MEMBER(seta_state,oisipuzl_2_layers)
@@ -499,18 +473,18 @@ VIDEO_START_MEMBER(seta_state,seta_1_layer)
at any given time */
/* layer 0 */
- m_tilemap_0 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_0),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][0] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<0, 0x0000>, "layer1_bank0", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
- m_tilemap_1 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::get_tile_info_1),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][1] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(&seta_state::get_tile_info<0, 0x1000>, "layer1_bank1", this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
m_color_mode_shift = 4;
-
- m_tilemap_0->set_transparent_pen(0);
- m_tilemap_1->set_transparent_pen(0);
+
+ for (int bank = 0; bank < 2; bank++)
+ m_tilemap[0][bank]->set_transparent_pen(0);
}
VIDEO_START_MEMBER(setaroul_state,setaroul_1_layer)
@@ -538,16 +512,16 @@ VIDEO_START_MEMBER(seta_state,twineagl_1_layer)
at any given time */
/* layer 0 */
- m_tilemap_0 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::twineagl_get_tile_info_0),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][0] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::twineagl_get_tile_info<0x0000>),this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
- m_tilemap_1 = &machine().tilemap().create(
- *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::twineagl_get_tile_info_1),this), TILEMAP_SCAN_ROWS,
+ m_tilemap[0][1] = &machine().tilemap().create(
+ *m_gfxdecode, tilemap_get_info_delegate(FUNC(seta_state::twineagl_get_tile_info<0x1000>),this), TILEMAP_SCAN_ROWS,
16,16, 64,32 );
-
- m_tilemap_0->set_transparent_pen(0);
- m_tilemap_1->set_transparent_pen(0);
+
+ for (int bank = 0; bank < 2; bank++)
+ m_tilemap[0][bank]->set_transparent_pen(0);
}
SETA001_SPRITE_GFXBANK_CB_MEMBER(seta_state::setac_gfxbank_callback)
@@ -561,10 +535,10 @@ SETA001_SPRITE_GFXBANK_CB_MEMBER(seta_state::setac_gfxbank_callback)
/* NO layers, only sprites */
VIDEO_START_MEMBER(seta_state,seta_no_layers)
{
- m_tilemap_0 = nullptr;
- m_tilemap_1 = nullptr;
- m_tilemap_2 = nullptr;
- m_tilemap_3 = nullptr;
+ m_tilemap[0][0] = nullptr;
+ m_tilemap[0][1] = nullptr;
+ m_tilemap[1][0] = nullptr;
+ m_tilemap[1][1] = nullptr;
m_tilemaps_flip = 0;
@@ -733,9 +707,9 @@ void seta_state::set_pens()
{
offs_t i;
- for (i = 0; i < m_paletteram.bytes() / 2; i++)
+ for (i = 0; i < m_paletteram[0].bytes() / 2; i++)
{
- uint16_t data = m_paletteram[i];
+ uint16_t data = m_paletteram[0][i];
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
@@ -745,18 +719,18 @@ void seta_state::set_pens()
m_palette->set_pen_color(i, color);
}
- if(m_paletteram2 != nullptr)
+ if(m_paletteram[1] != nullptr)
{
- for (i = 0; i < m_paletteram2.bytes() / 2; i++)
+ for (i = 0; i < m_paletteram[1].bytes() / 2; i++)
{
- uint16_t data = m_paletteram2[i];
+ uint16_t data = m_paletteram[1][i];
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
if (m_palette->indirect_entries() != 0)
- m_palette->set_indirect_color(i + m_paletteram.bytes() / 2, color);
+ m_palette->set_indirect_color(i + m_paletteram[0].bytes() / 2, color);
else
- m_palette->set_pen_color(i + m_paletteram.bytes() / 2, color);
+ m_palette->set_pen_color(i + m_paletteram[0].bytes() / 2, color);
}
}
}
@@ -768,7 +742,7 @@ void seta_state::usclssic_set_pens()
for (i = 0; i < 0x200; i++)
{
- uint16_t data = m_paletteram[i];
+ uint16_t data = m_paletteram[0][i];
rgb_t color = rgb_t(pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
@@ -854,7 +828,8 @@ uint32_t seta_state::screen_update_seta_no_layers(screen_device &screen, bitmap_
void seta_state::seta_layers_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int sprite_bank_size, int sprite_setac )
{
int layers_ctrl = -1;
- int enab_0, enab_1, x_0, x_1=0, y_0, y_1=0;
+ int bank[2], x[2], y[2];
+ int layer;
int order = 0;
int flip = m_seta001->is_flipped();
@@ -864,20 +839,16 @@ void seta_state::seta_layers_update(screen_device &screen, bitmap_ind16 &bitmap,
// check tilemaps color modes
- if(m_current_tilemap_mode[0] != (m_vctrl_0[ 4/2 ] & 0x10))
- {
- m_current_tilemap_mode[0] = m_vctrl_0[ 4/2 ] & 0x10;
- m_tilemap_0->mark_all_dirty();
- m_tilemap_1->mark_all_dirty();
- }
-
- if(m_tilemap_2 != nullptr && m_tilemap_3 != nullptr)
+ for (layer = 0; layer < 2; layer++)
{
- if(m_current_tilemap_mode[1] != (m_vctrl_2[ 4/2 ] & 0x10))
+ if(m_tilemap[layer][0])
{
- m_current_tilemap_mode[1] = m_vctrl_2[ 4/2 ] & 0x10;
- m_tilemap_2->mark_all_dirty();
- m_tilemap_3->mark_all_dirty();
+ if(m_current_tilemap_mode[layer] != (m_vctrl[layer][ 4/2 ] & 0x10))
+ {
+ m_current_tilemap_mode[layer] = m_vctrl[layer][ 4/2 ] & 0x10;
+ for (int bank = 0; bank < 2; bank++)
+ m_tilemap[layer][bank]->mark_all_dirty();
+ }
}
}
@@ -885,59 +856,49 @@ void seta_state::seta_layers_update(screen_device &screen, bitmap_ind16 &bitmap,
machine().tilemap().set_flip_all(flip ? (TILEMAP_FLIPX|TILEMAP_FLIPY) : 0 );
- x_0 = m_vctrl_0[ 0/2 ];
- y_0 = m_vctrl_0[ 2/2 ];
- enab_0 = m_vctrl_0[ 4/2 ];
-
- /* Only one tilemap per layer is enabled! */
- m_tilemap_0->enable((!(enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
- m_tilemap_1->enable(( (enab_0 & 0x0008)) /*&& (enab_0 & 0x0001)*/ );
-
- /* the hardware wants different scroll values when flipped */
-
- /* bg x scroll flip
- metafox 0000 025d = 0, $400-$1a3 = $400 - $190 - $13
- eightfrc ffe8 0272
- fff0 0260 = -$10, $400-$190 -$10
- ffe8 0272 = -$18, $400-$190 -$18 + $1a */
-
- x_0 += 0x10 - m_global_offsets->tilemap_offs[flip ? 1 : 0];
- y_0 -= (256 - vis_dimy)/2;
- if (flip)
+ for (layer = 0; layer < 2; layer++)
{
- x_0 = -x_0 - 512;
- y_0 = y_0 - vis_dimy;
- }
-
- m_tilemap_0->set_scrollx(0, x_0);
- m_tilemap_1->set_scrollx(0, x_0);
- m_tilemap_0->set_scrolly(0, y_0);
- m_tilemap_1->set_scrolly(0, y_0);
-
- if (m_tilemap_2)
- {
- x_1 = m_vctrl_2[ 0/2 ];
- y_1 = m_vctrl_2[ 2/2 ];
- enab_1 = m_vctrl_2[ 4/2 ];
-
- m_tilemap_2->enable((!(enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
- m_tilemap_3->enable(( (enab_1 & 0x0008)) /*&& (enab_1 & 0x0001)*/ );
+ if (m_tilemap[layer][0])
+ {
+ x[layer] = m_vctrl[layer][ 0/2 ];
+ y[layer] = m_vctrl[layer][ 2/2 ];
+ bank[layer] = m_vctrl[layer][ 4/2 ];
+ bank[layer] = (bank[layer] & 0x0008) ? 1 : 0; /*&& (bank[layer] & 0x0001)*/
+
+ /* Select tilemap bank, Only one tilemap bank per layer is enabled */
+ m_tilemap[layer][0]->enable((!bank[layer]));
+ m_tilemap[layer][1]->enable(( bank[layer]));
+
+ /* the hardware wants different scroll values when flipped */
+
+ /* bg x scroll flip
+ metafox 0000 025d = 0, $400-$1a3 = $400 - $190 - $13
+ eightfrc ffe8 0272
+ fff0 0260 = -$10, $400-$190 -$10
+ ffe8 0272 = -$18, $400-$190 -$18 + $1a */
+
+ x[layer] += 0x10 - m_global_offsets->tilemap_offs[flip ? 1 : 0];
+ y[layer] -= (256 - vis_dimy)/2;
+ if (flip)
+ {
+ x[layer] = -x[layer] - 512;
+ y[layer] = y[layer] - vis_dimy;
+ }
- x_1 += 0x10 - m_global_offsets->tilemap_offs[flip ? 1 : 0];
- y_1 -= (256 - vis_dimy)/2;
- if (flip)
+ m_tilemap[layer][0]->set_scrollx(0, x[layer]);
+ m_tilemap[layer][1]->set_scrollx(0, x[layer]);
+ m_tilemap[layer][0]->set_scrolly(0, y[layer]);
+ m_tilemap[layer][1]->set_scrolly(0, y[layer]);
+ }
+ else
{
- x_1 = -x_1 - 512;
- y_1 = y_1 - vis_dimy;
+ x[layer] = 0;
+ y[layer] = 0;
}
+ }
- m_tilemap_2->set_scrollx(0, x_1);
- m_tilemap_3->set_scrollx(0, x_1);
- m_tilemap_2->set_scrolly(0, y_1);
- m_tilemap_3->set_scrolly(0, y_1);
-
+ if (m_tilemap[1][0])
order = m_vregs[ 2/2 ];
- }
#ifdef MAME_DEBUG
@@ -948,10 +909,10 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
if (screen.machine().input().code_pressed(KEYCODE_A)) msk |= 8;
if (msk != 0) layers_ctrl &= msk;
- if (m_tilemap_2)
+ if (m_tilemap[1][0])
popmessage("VR:%04X-%04X-%04X L0:%04X L1:%04X",
- m_vregs[0], m_vregs[1], m_vregs[2], m_vctrl_0[4/2], m_vctrl_2[4/2]);
- else if (m_tilemap_0) popmessage("L0:%04X", m_vctrl_0[4/2]);
+ m_vregs[0], m_vregs[1], m_vregs[2], m_vctrl[0][4/2], m_vctrl[1][4/2]);
+ else if (m_tilemap[0][0]) popmessage("L0:%04X", m_vctrl[0][4/2]);
}
#endif
@@ -959,10 +920,9 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
if (order & 1) // swap the layers?
{
- if (m_tilemap_2)
+ if (m_tilemap[1][bank[1]])
{
- if (layers_ctrl & 2) m_tilemap_2->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- if (layers_ctrl & 2) m_tilemap_3->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 2) m_tilemap[1][bank[1]]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
}
if (order & 2) // layer-sprite priority?
@@ -974,8 +934,7 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
popmessage("Missing palette effect. Contact MAMETesters.");
}
- if (layers_ctrl & 1) m_tilemap_0->draw(screen, bitmap, cliprect, 0, 0);
- if (layers_ctrl & 1) m_tilemap_1->draw(screen, bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 1) m_tilemap[0][bank[0]]->draw(screen, bitmap, cliprect, 0, 0);
}
else
{
@@ -984,31 +943,22 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
popmessage("Missing palette effect. Contact MAMETesters.");
}
- if (layers_ctrl & 1) m_tilemap_0->draw(screen, bitmap, cliprect, 0, 0);
- if (layers_ctrl & 1) m_tilemap_1->draw(screen, bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 1) m_tilemap[0][bank[0]]->draw(screen, bitmap, cliprect, 0, 0);
if (layers_ctrl & 8) m_seta001->draw_sprites(screen, bitmap,cliprect,sprite_bank_size, sprite_setac);
}
}
else
{
- if (layers_ctrl & 1) m_tilemap_0->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
- if (layers_ctrl & 1) m_tilemap_1->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
+ if (layers_ctrl & 1) m_tilemap[0][bank[0]]->draw(screen, bitmap, cliprect, TILEMAP_DRAW_OPAQUE, 0);
if (order & 2) // layer-sprite priority?
{
if (layers_ctrl & 8) m_seta001->draw_sprites(screen, bitmap,cliprect,sprite_bank_size, sprite_setac);
- if((order & 4) && m_paletteram2 != nullptr)
+ if((order & 4) && m_paletteram[1] != nullptr)
{
- if(m_tilemap_2->enabled())
- {
- draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap_2, x_1, y_1, 2 + ((m_vctrl_2[ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
- }
- else
- {
- draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap_3, x_1, y_1, 2 + ((m_vctrl_2[ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
- }
+ draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap[1][bank[1]], x[1], y[1], 2 + ((m_vctrl[1][ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
}
else
{
@@ -1017,25 +967,17 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
popmessage("Missing palette effect. Contact MAMETesters.");
}
- if (m_tilemap_2)
+ if (m_tilemap[1][bank[1]])
{
- if (layers_ctrl & 2) m_tilemap_2->draw(screen, bitmap, cliprect, 0, 0);
- if (layers_ctrl & 2) m_tilemap_3->draw(screen, bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_tilemap[1][bank[1]]->draw(screen, bitmap, cliprect, 0, 0);
}
}
}
else
{
- if((order & 4) && m_paletteram2 != nullptr)
+ if((order & 4) && m_paletteram[1] != nullptr)
{
- if(m_tilemap_2->enabled())
- {
- draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap_2, x_1, y_1, 2 + ((m_vctrl_2[ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
- }
- else
- {
- draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap_3, x_1, y_1, 2 + ((m_vctrl_2[ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
- }
+ draw_tilemap_palette_effect(bitmap, cliprect, m_tilemap[1][bank[1]], x[1], y[1], 2 + ((m_vctrl[1][ 4/2 ] & 0x10) >> m_color_mode_shift), flip);
}
else
{
@@ -1044,10 +986,9 @@ if (screen.machine().input().code_pressed(KEYCODE_Z))
popmessage("Missing palette effect. Contact MAMETesters.");
}
- if (m_tilemap_2)
+ if (m_tilemap[1][bank[1]])
{
- if (layers_ctrl & 2) m_tilemap_2->draw(screen, bitmap, cliprect, 0, 0);
- if (layers_ctrl & 2) m_tilemap_3->draw(screen, bitmap, cliprect, 0, 0);
+ if (layers_ctrl & 2) m_tilemap[1][bank[1]]->draw(screen, bitmap, cliprect, 0, 0);
}
}