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 +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(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(0x200/2); + m_pairslove_protram_old = make_unique_clear(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 m_subcpu; required_device m_seta001; optional_device m_x1; - optional_device m_soundlatch; - optional_device m_soundlatch2; + optional_device_array m_soundlatch; optional_device m_upd4701; optional_device m_buttonmux; optional_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 m_sharedram; optional_shared_ptr m_vregs; - optional_shared_ptr m_vram_0; - optional_shared_ptr m_vctrl_0; - optional_shared_ptr m_vram_2; - optional_shared_ptr m_vctrl_2; - optional_shared_ptr m_paletteram; - optional_shared_ptr m_paletteram2; + optional_shared_ptr_array m_vram; + optional_shared_ptr_array m_vctrl; + optional_shared_ptr_array m_paletteram; optional_memory_bank m_subbank; @@ -111,10 +99,7 @@ public: required_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 m_pairslove_protram; + std::unique_ptr m_pairslove_protram_old; + std::unique_ptr 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 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 TILE_GET_INFO_MEMBER(twineagl_get_tile_info); + template 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 +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 +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)) + for (layer = 0; layer < 2; layer++) { - 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) - { - 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,60 +856,50 @@ 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)*/ ); - - x_1 += 0x10 - m_global_offsets->tilemap_offs[flip ? 1 : 0]; - y_1 -= (256 - vis_dimy)/2; - if (flip) + if (m_tilemap[layer][0]) { - x_1 = -x_1 - 512; - y_1 = y_1 - vis_dimy; + 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; + } + + 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[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); - - order = m_vregs[ 2/2 ]; } + if (m_tilemap[1][0]) + order = m_vregs[ 2/2 ]; + #ifdef MAME_DEBUG if (screen.machine().input().code_pressed(KEYCODE_Z)) @@ -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); } }