Merge pull request #4973 from cam900/tc0110pcr_dipalette

tc0110pcr.cpp : Updates
This commit is contained in:
R. Belmont 2019-05-08 09:51:24 -04:00 committed by GitHub
commit 3d16b045b9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 190 additions and 204 deletions

View File

@ -877,22 +877,21 @@ void asuka_state::bonzeadv(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1); screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1);
screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv)); screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv));
screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka)); screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", "palette", gfx_asuka); GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PALETTE(config, "palette").set_entries(4096);
PC090OJ(config, m_pc090oj, 0); PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8); m_pc090oj->set_offsets(0, 8);
m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette_tag("palette"); m_pc090oj->set_palette_tag(m_tc0110pcr);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -936,23 +935,22 @@ void asuka_state::asuka(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(asuka_state::screen_update_asuka)); screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka)); screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", "palette", gfx_asuka); GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PALETTE(config, "palette").set_entries(4096);
PC090OJ(config, m_pc090oj, 0); PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8); m_pc090oj->set_offsets(0, 8);
m_pc090oj->set_usebuffer(1); m_pc090oj->set_usebuffer(1);
m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette_tag("palette"); m_pc090oj->set_palette_tag(m_tc0110pcr);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -1008,24 +1006,23 @@ void asuka_state::cadash(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv)); screen.set_screen_update(FUNC(asuka_state::screen_update_bonzeadv));
screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka)); screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", "palette", gfx_asuka); GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PALETTE(config, "palette").set_entries(4096);
PC090OJ(config, m_pc090oj, 0); PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8); m_pc090oj->set_offsets(0, 8);
m_pc090oj->set_usebuffer(1); m_pc090oj->set_usebuffer(1);
m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette_tag("palette"); m_pc090oj->set_palette_tag(m_tc0110pcr);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(1, 0); m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -1069,23 +1066,22 @@ void asuka_state::mofflott(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(asuka_state::screen_update_asuka)); screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka)); screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", "palette", gfx_asuka); GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PALETTE(config, "palette").set_entries(4096); /* only Mofflott uses full palette space */
PC090OJ(config, m_pc090oj, 0); PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8); m_pc090oj->set_offsets(0, 8);
m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette_tag("palette"); m_pc090oj->set_palette_tag(m_tc0110pcr);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(1, 0); m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();
@ -1137,23 +1133,22 @@ void asuka_state::eto(machine_config &config)
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(asuka_state::screen_update_asuka)); screen.set_screen_update(FUNC(asuka_state::screen_update_asuka));
screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka)); screen.screen_vblank().set(FUNC(asuka_state::screen_vblank_asuka));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, "gfxdecode", "palette", gfx_asuka); GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka);
PALETTE(config, "palette").set_entries(4096);
PC090OJ(config, m_pc090oj, 0); PC090OJ(config, m_pc090oj, 0);
m_pc090oj->set_offsets(0, 8); m_pc090oj->set_offsets(0, 8);
m_pc090oj->set_gfxdecode_tag("gfxdecode"); m_pc090oj->set_gfxdecode_tag("gfxdecode");
m_pc090oj->set_palette_tag("palette"); m_pc090oj->set_palette_tag(m_tc0110pcr);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(1, 0); m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "mono").front_center(); SPEAKER(config, "mono").front_center();

View File

@ -218,24 +218,23 @@ void galastrm_state::galastrm(machine_config &config)
m_screen->set_size(64*8, 50*8); m_screen->set_size(64*8, 50*8);
m_screen->set_visarea(0+96, 40*8-1+96, 3*8+60, 32*8-1+60); m_screen->set_visarea(0+96, 40*8-1+96, 3*8+60, 32*8-1+60);
m_screen->set_screen_update(FUNC(galastrm_state::screen_update)); m_screen->set_screen_update(FUNC(galastrm_state::screen_update));
m_screen->set_palette(m_palette); m_screen->set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_galastrm); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_galastrm);
PALETTE(config, m_palette).set_entries(4096);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(0); m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_offsets(-48, -56); m_tc0100scn->set_offsets(-48, -56);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
TC0480SCP(config, m_tc0480scp, 0); TC0480SCP(config, m_tc0480scp, 0);
m_tc0480scp->set_gfx_region(1); m_tc0480scp->set_gfx_region(1);
m_tc0480scp->set_palette(m_palette); m_tc0480scp->set_palette(m_tc0110pcr);
m_tc0480scp->set_offsets(-40, -3); m_tc0480scp->set_offsets(-40, -3);
m_tc0480scp->set_gfxdecode_tag(m_gfxdecode); m_tc0480scp->set_gfxdecode_tag(m_gfxdecode);
TC0110PCR(config, m_tc0110pcr, 0, m_palette); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
TAITO_EN(config, "taito_en", 0); TAITO_EN(config, "taito_en", 0);

View File

@ -610,9 +610,13 @@ static const gfx_layout charlayout =
32*8 /* every sprite takes 32 consecutive bytes */ 32*8 /* every sprite takes 32 consecutive bytes */
}; };
static GFXDECODE_START( gfx_ninjaw ) static GFXDECODE_START( gfx_ninjaw_1 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */ GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 256 ) /* scr tiles (screen 1) */ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 256 ) /* scr tiles (screen 1) */
GFXDECODE_END
static GFXDECODE_START( gfx_ninjaw_23 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 256 ) /* scr tiles (screens 2+) */ GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 256 ) /* scr tiles (screens 2+) */
GFXDECODE_END GFXDECODE_END
@ -743,10 +747,9 @@ void ninjaw_state::ninjaw(machine_config &config)
tc0040ioc.read_7_callback().set_ioport("IN2"); tc0040ioc.read_7_callback().set_ioport("IN2");
/* video hardware */ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjaw); GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw_1);
PALETTE(config, m_palette).set_entries(4096); GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw_23);
PALETTE(config, "palette2").set_entries(4096); GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw_23);
PALETTE(config, "palette3").set_entries(4096);
config.set_default_layout(layout_ninjaw); config.set_default_layout(layout_ninjaw);
@ -756,7 +759,7 @@ void ninjaw_state::ninjaw(machine_config &config)
lscreen.set_size(36*8, 32*8); lscreen.set_size(36*8, 32*8);
lscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); lscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
lscreen.set_screen_update(FUNC(ninjaw_state::screen_update_left)); lscreen.set_screen_update(FUNC(ninjaw_state::screen_update_left));
lscreen.set_palette(m_palette); lscreen.set_palette(m_tc0110pcr[0]);
screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER)); screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER));
mscreen.set_refresh_hz(60); mscreen.set_refresh_hz(60);
@ -764,7 +767,7 @@ void ninjaw_state::ninjaw(machine_config &config)
mscreen.set_size(36*8, 32*8); mscreen.set_size(36*8, 32*8);
mscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); mscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
mscreen.set_screen_update(FUNC(ninjaw_state::screen_update_middle)); mscreen.set_screen_update(FUNC(ninjaw_state::screen_update_middle));
mscreen.set_palette("palette2"); mscreen.set_palette(m_tc0110pcr[1]);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER)); screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
rscreen.set_refresh_hz(60); rscreen.set_refresh_hz(60);
@ -772,37 +775,37 @@ void ninjaw_state::ninjaw(machine_config &config)
rscreen.set_size(36*8, 32*8); rscreen.set_size(36*8, 32*8);
rscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); rscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
rscreen.set_screen_update(FUNC(ninjaw_state::screen_update_right)); rscreen.set_screen_update(FUNC(ninjaw_state::screen_update_right));
rscreen.set_palette("palette3"); rscreen.set_palette(m_tc0110pcr[2]);
TC0100SCN(config, m_tc0100scn[0], 0); TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_offsets(22, 0); m_tc0100scn[0]->set_offsets(22, 0);
m_tc0100scn[0]->set_multiscr_xoffs(0); m_tc0100scn[0]->set_multiscr_xoffs(0);
m_tc0100scn[0]->set_multiscr_hack(0); m_tc0100scn[0]->set_multiscr_hack(0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]);
m_tc0100scn[0]->set_palette(m_palette); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette); TC0110PCR(config, m_tc0110pcr[0], 0);
TC0100SCN(config, m_tc0100scn[1], 0); TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2); m_tc0100scn[1]->set_gfx_region(1);
m_tc0100scn[1]->set_offsets(22, 0); m_tc0100scn[1]->set_offsets(22, 0);
m_tc0100scn[1]->set_multiscr_xoffs(2); m_tc0100scn[1]->set_multiscr_xoffs(2);
m_tc0100scn[1]->set_multiscr_hack(1); m_tc0100scn[1]->set_multiscr_hack(1);
m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]);
m_tc0100scn[1]->set_palette("palette2"); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]);
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2"); TC0110PCR(config, m_tc0110pcr[1], 0);
TC0100SCN(config, m_tc0100scn[2], 0); TC0100SCN(config, m_tc0100scn[2], 0);
m_tc0100scn[2]->set_gfx_region(2); m_tc0100scn[2]->set_gfx_region(1);
m_tc0100scn[2]->set_offsets(22, 0); m_tc0100scn[2]->set_offsets(22, 0);
m_tc0100scn[2]->set_multiscr_xoffs(4); m_tc0100scn[2]->set_multiscr_xoffs(4);
m_tc0100scn[2]->set_multiscr_hack(1); m_tc0100scn[2]->set_multiscr_hack(1);
m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode[2]);
m_tc0100scn[2]->set_palette("palette3"); m_tc0100scn[2]->set_palette(m_tc0110pcr[2]);
TC0110PCR(config, m_tc0110pcr[2], 0, "palette3"); TC0110PCR(config, m_tc0110pcr[2], 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -856,10 +859,9 @@ void ninjaw_state::darius2(machine_config &config)
tc0040ioc.read_7_callback().set_ioport("IN2"); tc0040ioc.read_7_callback().set_ioport("IN2");
/* video hardware */ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ninjaw); GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw_1);
PALETTE(config, m_palette).set_entries(4096); GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw_23);
PALETTE(config, "palette2").set_entries(4096); GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw_23);
PALETTE(config, "palette3").set_entries(4096);
config.set_default_layout(layout_ninjaw); config.set_default_layout(layout_ninjaw);
@ -869,7 +871,7 @@ void ninjaw_state::darius2(machine_config &config)
lscreen.set_size(36*8, 32*8); lscreen.set_size(36*8, 32*8);
lscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); lscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
lscreen.set_screen_update(FUNC(ninjaw_state::screen_update_left)); lscreen.set_screen_update(FUNC(ninjaw_state::screen_update_left));
lscreen.set_palette(m_palette); lscreen.set_palette(m_tc0110pcr[0]);
screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER)); screen_device &mscreen(SCREEN(config, "mscreen", SCREEN_TYPE_RASTER));
mscreen.set_refresh_hz(60); mscreen.set_refresh_hz(60);
@ -877,7 +879,7 @@ void ninjaw_state::darius2(machine_config &config)
mscreen.set_size(36*8, 32*8); mscreen.set_size(36*8, 32*8);
mscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); mscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
mscreen.set_screen_update(FUNC(ninjaw_state::screen_update_middle)); mscreen.set_screen_update(FUNC(ninjaw_state::screen_update_middle));
mscreen.set_palette("palette2"); mscreen.set_palette(m_tc0110pcr[1]);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER)); screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
rscreen.set_refresh_hz(60); rscreen.set_refresh_hz(60);
@ -885,37 +887,37 @@ void ninjaw_state::darius2(machine_config &config)
rscreen.set_size(36*8, 32*8); rscreen.set_size(36*8, 32*8);
rscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1); rscreen.set_visarea(0*8, 36*8-1, 3*8, 31*8-1);
rscreen.set_screen_update(FUNC(ninjaw_state::screen_update_right)); rscreen.set_screen_update(FUNC(ninjaw_state::screen_update_right));
rscreen.set_palette("palette3"); rscreen.set_palette(m_tc0110pcr[2]);
TC0100SCN(config, m_tc0100scn[0], 0); TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_offsets(22, 0); m_tc0100scn[0]->set_offsets(22, 0);
m_tc0100scn[0]->set_multiscr_xoffs(0); m_tc0100scn[0]->set_multiscr_xoffs(0);
m_tc0100scn[0]->set_multiscr_hack(0); m_tc0100scn[0]->set_multiscr_hack(0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]);
m_tc0100scn[0]->set_palette(m_palette); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette); TC0110PCR(config, m_tc0110pcr[0], 0);
TC0100SCN(config, m_tc0100scn[1], 0); TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2); m_tc0100scn[1]->set_gfx_region(1);
m_tc0100scn[1]->set_offsets(22, 0); m_tc0100scn[1]->set_offsets(22, 0);
m_tc0100scn[1]->set_multiscr_xoffs(2); m_tc0100scn[1]->set_multiscr_xoffs(2);
m_tc0100scn[1]->set_multiscr_hack(1); m_tc0100scn[1]->set_multiscr_hack(1);
m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]);
m_tc0100scn[1]->set_palette("palette2"); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]);
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2"); TC0110PCR(config, m_tc0110pcr[1], 0);
TC0100SCN(config, m_tc0100scn[2], 0); TC0100SCN(config, m_tc0100scn[2], 0);
m_tc0100scn[2]->set_gfx_region(2); m_tc0100scn[2]->set_gfx_region(1);
m_tc0100scn[2]->set_offsets(22, 0); m_tc0100scn[2]->set_offsets(22, 0);
m_tc0100scn[2]->set_multiscr_xoffs(4); m_tc0100scn[2]->set_multiscr_xoffs(4);
m_tc0100scn[2]->set_multiscr_hack(1); m_tc0100scn[2]->set_multiscr_hack(1);
m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode[2]);
m_tc0100scn[2]->set_palette("palette3"); m_tc0100scn[2]->set_palette(m_tc0110pcr[2]);
TC0110PCR(config, m_tc0110pcr[2], 0, "palette3"); TC0110PCR(config, m_tc0110pcr[2], 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();

View File

@ -623,19 +623,18 @@ void othunder_state::othunder(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(othunder_state::screen_update)); screen.set_screen_update(FUNC(othunder_state::screen_update));
screen.set_palette(m_palette); screen.set_palette(m_tc0110pcr);
screen.screen_vblank().set(FUNC(othunder_state::vblank_w)); screen.screen_vblank().set(FUNC(othunder_state::vblank_w));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_othunder); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_othunder);
PALETTE(config, m_palette).set_entries(4096);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(4, 0); m_tc0100scn->set_offsets(4, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, m_palette); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "speaker").front_center(); SPEAKER(config, "speaker").front_center();

View File

@ -2939,9 +2939,18 @@ void taitof2_state::taito_f2_te7750(machine_config &config)
te7750.in_port9_cb().set_ioport("IN4"); te7750.in_port9_cb().set_ioport("IN4");
} }
void taitof2_state::taito_f2_tc0110pcr(machine_config &config)
{
TC0110PCR(config, m_tc0110pcr, 0);
m_gfxdecode->set_palette(m_tc0110pcr);
m_screen->set_palette(m_tc0110pcr);
}
void taitof2_state::finalb(machine_config &config) void taitof2_state::finalb(machine_config &config)
{ {
taito_f2_tc0220ioc(config); taito_f2_tc0220ioc(config);
taito_f2_tc0110pcr(config);
config.device_remove("palette");
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::finalb_map); m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::finalb_map);
@ -2955,9 +2964,7 @@ void taitof2_state::finalb(machine_config &config)
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(1, 0); m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
} }
void taitof2_state::dondokod(machine_config &config) void taitof2_state::dondokod(machine_config &config)
@ -3074,6 +3081,8 @@ void taitof2_state::cameltry(machine_config &config)
void taitof2_state::qtorimon(machine_config &config) void taitof2_state::qtorimon(machine_config &config)
{ {
taito_f2_tc0220ioc(config); taito_f2_tc0220ioc(config);
taito_f2_tc0110pcr(config);
config.device_remove("palette");
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::qtorimon_map); m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::qtorimon_map);
@ -3085,9 +3094,7 @@ void taitof2_state::qtorimon(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
} }
void taitof2_state::liquidk(machine_config &config) void taitof2_state::liquidk(machine_config &config)
@ -3114,6 +3121,8 @@ void taitof2_state::liquidk(machine_config &config)
void taitof2_state::quizhq(machine_config &config) void taitof2_state::quizhq(machine_config &config)
{ {
taito_f2(config); taito_f2(config);
taito_f2_tc0110pcr(config);
config.device_remove("palette");
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::quizhq_map); m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::quizhq_map);
@ -3125,9 +3134,7 @@ void taitof2_state::quizhq(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
} }
void taitof2_state::ssi(machine_config &config) void taitof2_state::ssi(machine_config &config)
@ -3199,6 +3206,8 @@ void taitof2_state::growl(machine_config &config)
void taitof2_state::mjnquest(machine_config &config) void taitof2_state::mjnquest(machine_config &config)
{ {
taito_f2(config); taito_f2(config);
taito_f2_tc0110pcr(config);
config.device_remove("palette");
/* basic machine hardware */ /* basic machine hardware */
m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::mjnquest_map); m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::mjnquest_map);
@ -3209,10 +3218,8 @@ void taitof2_state::mjnquest(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette(m_palette); m_tc0100scn->set_palette(m_tc0110pcr);
m_tc0100scn->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb), this); m_tc0100scn->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb), this);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
} }
void taitof2_state::footchmp(machine_config &config) void taitof2_state::footchmp(machine_config &config)

View File

@ -3194,21 +3194,20 @@ void taitoz_state::contcirc(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1); screen.set_visarea(0*8, 40*8-1, 3*8, 31*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_contcirc)); screen.set_screen_update(FUNC(taitoz_state::screen_update_contcirc));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_taitoz);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0150ROD(config, m_tc0150rod, 0); TC0150ROD(config, m_tc0150rod, 0);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "front").front_center(); SPEAKER(config, "front").front_center();
@ -3265,21 +3264,20 @@ void taitoz_state::chasehq(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_chasehq)); screen.set_screen_update(FUNC(taitoz_state::screen_update_chasehq));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_chasehq); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_chasehq);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0150ROD(config, m_tc0150rod, 0); TC0150ROD(config, m_tc0150rod, 0);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "front").front_center(); SPEAKER(config, "front").front_center();
@ -3338,21 +3336,20 @@ void taitoz_state::enforce(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 31*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 31*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_contcirc)); screen.set_screen_update(FUNC(taitoz_state::screen_update_contcirc));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_taitoz);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0150ROD(config, m_tc0150rod, 0); TC0150ROD(config, m_tc0150rod, 0);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -3572,21 +3569,20 @@ void taitoz_state::nightstr(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_chasehq)); screen.set_screen_update(FUNC(taitoz_state::screen_update_chasehq));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_chasehq); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_chasehq);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0150ROD(config, m_tc0150rod, 0); TC0150ROD(config, m_tc0150rod, 0);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "front").front_center(); SPEAKER(config, "front").front_center();
@ -3645,21 +3641,20 @@ void taitoz_state::aquajack(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_aquajack)); screen.set_screen_update(FUNC(taitoz_state::screen_update_aquajack));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_taitoz);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz)
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0150ROD(config, m_tc0150rod, 0); TC0150ROD(config, m_tc0150rod, 0);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -3723,18 +3718,17 @@ void taitoz_state::spacegun(machine_config &config)
screen.set_size(40*8, 32*8); screen.set_size(40*8, 32*8);
screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); screen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
screen.set_screen_update(FUNC(taitoz_state::screen_update_spacegun)); screen.set_screen_update(FUNC(taitoz_state::screen_update_spacegun));
screen.set_palette("palette"); screen.set_palette(m_tc0110pcr);
GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_taitoz);
PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096);
TC0100SCN(config, m_tc0100scn, 0); TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_offsets(4, 0); m_tc0100scn->set_offsets(4, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette("palette"); m_tc0100scn->set_palette(m_tc0110pcr);
TC0110PCR(config, m_tc0110pcr, 0, "palette"); TC0110PCR(config, m_tc0110pcr, 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();

View File

@ -398,9 +398,13 @@ static const gfx_layout charlayout =
32*8 /* every sprite takes 32 consecutive bytes */ 32*8 /* every sprite takes 32 consecutive bytes */
}; };
static GFXDECODE_START( gfx_warriorb ) static GFXDECODE_START( gfx_warriorb_1 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */ GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 256 ) /* scr tiles (screen 1) */ GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 256 ) /* scr tiles (screen 1) */
GFXDECODE_END
static GFXDECODE_START( gfx_warriorb_2 )
GFXDECODE_ENTRY( "gfx2", 0, tilelayout, 0, 256 ) /* sprites */
GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 256 ) /* scr tiles (screen 2) */ GFXDECODE_ENTRY( "gfx3", 0, charlayout, 0, 256 ) /* scr tiles (screen 2) */
GFXDECODE_END GFXDECODE_END
@ -440,9 +444,8 @@ void warriorb_state::darius2d(machine_config &config)
m_tc0220ioc->read_7_callback().set_ioport("IN2"); m_tc0220ioc->read_7_callback().set_ioport("IN2");
/* video hardware */ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_warriorb); GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb_1);
PALETTE(config, m_palette).set_entries(4096); GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb_2);
PALETTE(config, "palette2").set_entries(4096);
config.set_default_layout(layout_dualhsxs); config.set_default_layout(layout_dualhsxs);
@ -452,15 +455,15 @@ void warriorb_state::darius2d(machine_config &config)
lscreen.set_size(40*8, 32*8); lscreen.set_size(40*8, 32*8);
lscreen.set_visarea(0*8, 40*8-1, 3*8, 32*8-1); lscreen.set_visarea(0*8, 40*8-1, 3*8, 32*8-1);
lscreen.set_screen_update(FUNC(warriorb_state::screen_update_left)); lscreen.set_screen_update(FUNC(warriorb_state::screen_update_left));
lscreen.set_palette(m_palette); lscreen.set_palette(m_tc0110pcr[0]);
TC0100SCN(config, m_tc0100scn[0], 0); TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_offsets(4, 0); m_tc0100scn[0]->set_offsets(4, 0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]);
m_tc0100scn[0]->set_palette(m_palette); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette); TC0110PCR(config, m_tc0110pcr[0], 0);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER)); screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
rscreen.set_refresh_hz(60); rscreen.set_refresh_hz(60);
@ -468,16 +471,16 @@ void warriorb_state::darius2d(machine_config &config)
rscreen.set_size(40*8, 32*8); rscreen.set_size(40*8, 32*8);
rscreen.set_visarea(0*8, 40*8-1, 3*8, 32*8-1); rscreen.set_visarea(0*8, 40*8-1, 3*8, 32*8-1);
rscreen.set_screen_update(FUNC(warriorb_state::screen_update_right)); rscreen.set_screen_update(FUNC(warriorb_state::screen_update_right));
rscreen.set_palette("palette2"); rscreen.set_palette(m_tc0110pcr[1]);
TC0100SCN(config, m_tc0100scn[1], 0); TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2); m_tc0100scn[1]->set_gfx_region(1);
m_tc0100scn[1]->set_offsets(4, 0); m_tc0100scn[1]->set_offsets(4, 0);
m_tc0100scn[1]->set_multiscr_hack(1); m_tc0100scn[1]->set_multiscr_hack(1);
m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]);
m_tc0100scn[1]->set_palette("palette2"); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]);
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2"); TC0110PCR(config, m_tc0110pcr[1], 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
@ -521,9 +524,8 @@ void warriorb_state::warriorb(machine_config &config)
m_tc0510nio->read_7_callback().set_ioport("IN2"); m_tc0510nio->read_7_callback().set_ioport("IN2");
/* video hardware */ /* video hardware */
GFXDECODE(config, m_gfxdecode, m_palette, gfx_warriorb); GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb_1);
PALETTE(config, m_palette).set_entries(4096); GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb_2);
PALETTE(config, "palette2").set_entries(4096);
config.set_default_layout(layout_dualhsxs); config.set_default_layout(layout_dualhsxs);
@ -533,15 +535,15 @@ void warriorb_state::warriorb(machine_config &config)
lscreen.set_size(40*8, 32*8); lscreen.set_size(40*8, 32*8);
lscreen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); lscreen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
lscreen.set_screen_update(FUNC(warriorb_state::screen_update_left)); lscreen.set_screen_update(FUNC(warriorb_state::screen_update_left));
lscreen.set_palette(m_palette); lscreen.set_palette(m_tc0110pcr[0]);
TC0100SCN(config, m_tc0100scn[0], 0); TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_offsets(4, 0); m_tc0100scn[0]->set_offsets(4, 0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]);
m_tc0100scn[0]->set_palette(m_palette); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette); TC0110PCR(config, m_tc0110pcr[0], 0);
screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER)); screen_device &rscreen(SCREEN(config, "rscreen", SCREEN_TYPE_RASTER));
rscreen.set_refresh_hz(60); rscreen.set_refresh_hz(60);
@ -549,17 +551,17 @@ void warriorb_state::warriorb(machine_config &config)
rscreen.set_size(40*8, 32*8); rscreen.set_size(40*8, 32*8);
rscreen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1); rscreen.set_visarea(0*8, 40*8-1, 2*8, 32*8-1);
rscreen.set_screen_update(FUNC(warriorb_state::screen_update_right)); rscreen.set_screen_update(FUNC(warriorb_state::screen_update_right));
rscreen.set_palette("palette2"); rscreen.set_palette(m_tc0110pcr[1]);
TC0100SCN(config, m_tc0100scn[1], 0); TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2); m_tc0100scn[1]->set_gfx_region(1);
m_tc0100scn[1]->set_offsets(4, 0); m_tc0100scn[1]->set_offsets(4, 0);
m_tc0100scn[1]->set_multiscr_xoffs(1); m_tc0100scn[1]->set_multiscr_xoffs(1);
m_tc0100scn[1]->set_multiscr_hack(1); m_tc0100scn[1]->set_multiscr_hack(1);
m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]);
m_tc0100scn[1]->set_palette("palette2"); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]);
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2"); TC0110PCR(config, m_tc0110pcr[1], 0);
/* sound hardware */ /* sound hardware */
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();

View File

@ -53,8 +53,7 @@ public:
m_tc0110pcr(*this, "tc0110pcr"), m_tc0110pcr(*this, "tc0110pcr"),
m_tc0480scp(*this, "tc0480scp"), m_tc0480scp(*this, "tc0480scp"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode"),
m_screen(*this, "screen"), m_screen(*this, "screen")
m_palette(*this, "palette")
{ } { }
void galastrm(machine_config &config); void galastrm(machine_config &config);
@ -75,7 +74,6 @@ private:
required_device<tc0480scp_device> m_tc0480scp; required_device<tc0480scp_device> m_tc0480scp;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<palette_device> m_palette;
struct gs_tempsprite struct gs_tempsprite
{ {

View File

@ -30,8 +30,7 @@ public:
m_tc0110pcr(*this, "tc0110pcr_%u", 1), m_tc0110pcr(*this, "tc0110pcr_%u", 1),
m_2610_l(*this, "2610.%u.l", 1), m_2610_l(*this, "2610.%u.l", 1),
m_2610_r(*this, "2610.%u.r", 1), m_2610_r(*this, "2610.%u.r", 1),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode_%u", 1),
m_palette(*this, "palette"),
m_spriteram(*this, "spriteram"), m_spriteram(*this, "spriteram"),
m_z80bank(*this, "z80bank") m_z80bank(*this, "z80bank")
{ } { }
@ -48,8 +47,7 @@ private:
required_device_array<tc0110pcr_device, 3> m_tc0110pcr; required_device_array<tc0110pcr_device, 3> m_tc0110pcr;
required_device_array<filter_volume_device, 2> m_2610_l; required_device_array<filter_volume_device, 2> m_2610_l;
required_device_array<filter_volume_device, 2> m_2610_r; required_device_array<filter_volume_device, 2> m_2610_r;
required_device<gfxdecode_device> m_gfxdecode; required_device_array<gfxdecode_device, 3> m_gfxdecode;
required_device<palette_device> m_palette;
/* memory pointers */ /* memory pointers */
required_shared_ptr<uint16_t> m_spriteram; required_shared_ptr<uint16_t> m_spriteram;
@ -74,8 +72,8 @@ private:
uint32_t screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_middle(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void postload(); void postload();
void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs ); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs, int chip);
void parse_control( ); void parse_control();
uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip); uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
void darius2_master_map(address_map &map); void darius2_master_map(address_map &map);
void darius2_slave_map(address_map &map); void darius2_slave_map(address_map &map);

View File

@ -38,8 +38,7 @@ public:
m_2610_1r(*this, "2610.1r"), m_2610_1r(*this, "2610.1r"),
m_2610_2l(*this, "2610.2l"), m_2610_2l(*this, "2610.2l"),
m_2610_2r(*this, "2610.2r"), m_2610_2r(*this, "2610.2r"),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode")
m_palette(*this, "palette")
{ } { }
void othunder(machine_config &config); void othunder(machine_config &config);
@ -97,7 +96,6 @@ private:
required_device<filter_volume_device> m_2610_2l; required_device<filter_volume_device> m_2610_2l;
required_device<filter_volume_device> m_2610_2r; required_device<filter_volume_device> m_2610_2r;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
}; };
#endif // MAME_INCLUDES_OTHUNDER_H #endif // MAME_INCLUDES_OTHUNDER_H

View File

@ -49,6 +49,7 @@ public:
void taito_f2_tc0220ioc(machine_config &config); void taito_f2_tc0220ioc(machine_config &config);
void taito_f2_tc0510nio(machine_config &config); void taito_f2_tc0510nio(machine_config &config);
void taito_f2_te7750(machine_config &config); void taito_f2_te7750(machine_config &config);
void taito_f2_tc0110pcr(machine_config &config);
void taito_f2(machine_config &config); void taito_f2(machine_config &config);
void thundfox(machine_config &config); void thundfox(machine_config &config);
void dinorex(machine_config &config); void dinorex(machine_config &config);
@ -170,7 +171,7 @@ protected:
optional_device<tc0510nio_device> m_tc0510nio; optional_device<tc0510nio_device> m_tc0510nio;
required_device<gfxdecode_device> m_gfxdecode; required_device<gfxdecode_device> m_gfxdecode;
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<palette_device> m_palette; optional_device<palette_device> m_palette;
DECLARE_WRITE8_MEMBER(coin_nibble_w); DECLARE_WRITE8_MEMBER(coin_nibble_w);
DECLARE_WRITE16_MEMBER(growl_coin_word_w); DECLARE_WRITE16_MEMBER(growl_coin_word_w);

View File

@ -27,8 +27,7 @@ public:
m_tc0510nio(*this, "tc0510nio"), m_tc0510nio(*this, "tc0510nio"),
m_2610_l(*this, "2610.%u.l", 1), m_2610_l(*this, "2610.%u.l", 1),
m_2610_r(*this, "2610.%u.r", 1), m_2610_r(*this, "2610.%u.r", 1),
m_gfxdecode(*this, "gfxdecode"), m_gfxdecode(*this, "gfxdecode_%u", 1),
m_palette(*this, "palette"),
m_spriteram(*this, "spriteram"), m_spriteram(*this, "spriteram"),
m_z80bank(*this, "z80bank") { } m_z80bank(*this, "z80bank") { }
@ -45,8 +44,7 @@ private:
optional_device<tc0510nio_device> m_tc0510nio; optional_device<tc0510nio_device> m_tc0510nio;
required_device_array<filter_volume_device, 2> m_2610_l; required_device_array<filter_volume_device, 2> m_2610_l;
required_device_array<filter_volume_device, 2> m_2610_r; required_device_array<filter_volume_device, 2> m_2610_r;
required_device<gfxdecode_device> m_gfxdecode; required_device_array<gfxdecode_device, 2> m_gfxdecode;
required_device<palette_device> m_palette;
/* memory pointers */ /* memory pointers */
required_shared_ptr<uint16_t> m_spriteram; required_shared_ptr<uint16_t> m_spriteram;
@ -67,7 +65,7 @@ private:
uint32_t screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_left(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_right(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs ); void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs, int chip);
uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip); uint32_t update_screen(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int xoffs, int chip);
void darius2d_map(address_map &map); void darius2d_map(address_map &map);

View File

@ -7,7 +7,7 @@
SPRITE DRAW ROUTINE SPRITE DRAW ROUTINE
************************************************************/ ************************************************************/
void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs ) void ninjaw_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int primask, int x_offs, int y_offs, int chip)
{ {
int offs, data, tilenum, color, flipx, flipy; int offs, data, tilenum, color, flipx, flipy;
int x, y, priority, curx, cury; int x, y, priority, curx, cury;
@ -69,7 +69,7 @@ void ninjaw_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect
cury = y; cury = y;
code = tilenum; code = tilenum;
m_gfxdecode->gfx(0)->transpen(bitmap,cliprect, m_gfxdecode[chip]->gfx(0)->transpen(bitmap,cliprect,
code, color, code, color,
flipx, flipy, flipx, flipy,
curx, cury, 0); curx, cury, 0);
@ -104,15 +104,15 @@ uint32_t ninjaw_state::update_screen(screen_device &screen, bitmap_ind16 &bitmap
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */ /* Ensure screen blanked even when bottom layers not drawn due to disable bit */
if (nodraw) if (nodraw)
bitmap.fill(m_palette->black_pen(), cliprect); bitmap.fill(m_tc0110pcr[chip]->black_pen(), cliprect);
/* Sprites can be under/over the layer below text layer */ /* Sprites can be under/over the layer below text layer */
draw_sprites(bitmap, cliprect, 1, xoffs, 8); // draw sprites with priority 1 which are under the mid layer draw_sprites(bitmap, cliprect, 1, xoffs, 8, chip); // draw sprites with priority 1 which are under the mid layer
// draw middle layer // draw middle layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 0); tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 0);
draw_sprites(bitmap,cliprect,0,xoffs,8); // draw sprites with priority 0 which are over the mid layer draw_sprites(bitmap, cliprect, 0, xoffs, 8, chip); // draw sprites with priority 0 which are over the mid layer
// draw top(text) layer // draw top(text) layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 0); tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 0);

View File

@ -15,17 +15,15 @@ The data bus is 16 bits wide.
#include "emu.h" #include "emu.h"
#include "tc0110pcr.h" #include "tc0110pcr.h"
#define TC0110PCR_RAM_SIZE 0x2000
DEFINE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device, "tc0110pcr", "Taito TC0110PCR") DEFINE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device, "tc0110pcr", "Taito TC0110PCR")
tc0110pcr_device::tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) tc0110pcr_device::tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, TC0110PCR, tag, owner, clock) : device_t(mconfig, TC0110PCR, tag, owner, clock)
, device_palette_interface(mconfig, *this)
, m_ram(nullptr) , m_ram(nullptr)
, m_type(0) , m_type(0)
, m_addr(0) , m_addr(0)
, m_palette(*this, finder_base::DUMMY_TAG)
{ {
} }
@ -66,12 +64,11 @@ void tc0110pcr_device::device_post_load()
void tc0110pcr_device::restore_colors() void tc0110pcr_device::restore_colors()
{ {
int i, color, r = 0, g = 0, b = 0; for (int i = 0; i < (256 * 16); i++)
for (i = 0; i < (256 * 16); i++)
{ {
color = m_ram[i]; const u16 color = m_ram[i];
u8 r = 0, g = 0, b = 0;
switch (m_type) switch (m_type)
{ {
case 0x00: case 0x00:
@ -99,12 +96,12 @@ void tc0110pcr_device::restore_colors()
} }
} }
m_palette->set_pen_color(i, rgb_t(r, g, b)); set_pen_color(i, rgb_t(r, g, b));
} }
} }
READ16_MEMBER(tc0110pcr_device::word_r ) u16 tc0110pcr_device::word_r(offs_t offset)
{ {
switch (offset) switch (offset)
{ {
@ -117,7 +114,7 @@ READ16_MEMBER(tc0110pcr_device::word_r )
} }
} }
WRITE16_MEMBER(tc0110pcr_device::word_w ) void tc0110pcr_device::word_w(offs_t offset, u16 data)
{ {
switch (offset) switch (offset)
{ {
@ -130,7 +127,7 @@ WRITE16_MEMBER(tc0110pcr_device::word_w )
case 1: case 1:
m_ram[m_addr] = data & 0xffff; m_ram[m_addr] = data & 0xffff;
m_palette->set_pen_color(m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10)); set_pen_color(m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
break; break;
default: default:
@ -139,7 +136,7 @@ WRITE16_MEMBER(tc0110pcr_device::word_w )
} }
} }
WRITE16_MEMBER(tc0110pcr_device::step1_word_w ) void tc0110pcr_device::step1_word_w(offs_t offset, u16 data)
{ {
switch (offset) switch (offset)
{ {
@ -151,7 +148,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_word_w )
case 1: case 1:
m_ram[m_addr] = data & 0xffff; m_ram[m_addr] = data & 0xffff;
m_palette->set_pen_color(m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10)); set_pen_color(m_addr, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
break; break;
default: default:
@ -160,7 +157,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_word_w )
} }
} }
WRITE16_MEMBER(tc0110pcr_device::step1_rbswap_word_w ) void tc0110pcr_device::step1_rbswap_word_w(offs_t offset, u16 data)
{ {
m_type = 1; /* xRRRRRGGGGGBBBBB */ m_type = 1; /* xRRRRRGGGGGBBBBB */
@ -174,7 +171,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_rbswap_word_w )
case 1: case 1:
m_ram[m_addr] = data & 0xffff; m_ram[m_addr] = data & 0xffff;
m_palette->set_pen_color(m_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0)); set_pen_color(m_addr, pal5bit(data >> 10), pal5bit(data >> 5), pal5bit(data >> 0));
break; break;
default: default:
@ -183,7 +180,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_rbswap_word_w )
} }
} }
WRITE16_MEMBER(tc0110pcr_device::step1_4bpg_word_w ) void tc0110pcr_device::step1_4bpg_word_w(offs_t offset, u16 data)
{ {
m_type = 2; /* xxxxBBBBGGGGRRRR */ m_type = 2; /* xxxxBBBBGGGGRRRR */
@ -197,7 +194,7 @@ WRITE16_MEMBER(tc0110pcr_device::step1_4bpg_word_w )
case 1: case 1:
m_ram[m_addr] = data & 0xffff; m_ram[m_addr] = data & 0xffff;
m_palette->set_pen_color(m_addr, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8)); set_pen_color(m_addr, pal4bit(data >> 0), pal4bit(data >> 4), pal4bit(data >> 8));
break; break;
default: default:

View File

@ -8,22 +8,16 @@
#include "emupal.h" #include "emupal.h"
class tc0110pcr_device : public device_t class tc0110pcr_device : public device_t, public device_palette_interface
{ {
public: public:
template <typename T> tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, T &&palette_tag) tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
: tc0110pcr_device(mconfig, tag, owner, clock)
{
m_palette.set_tag(std::forward<T>(palette_tag));
}
tc0110pcr_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); u16 word_r(offs_t offset);
void word_w(offs_t offset, u16 data); /* color index goes up in step of 2 */
DECLARE_READ16_MEMBER( word_r ); void step1_word_w(offs_t offset, u16 data); /* color index goes up in step of 1 */
DECLARE_WRITE16_MEMBER( word_w ); /* color index goes up in step of 2 */ void step1_rbswap_word_w(offs_t offset, u16 data); /* swaps red and blue components */
DECLARE_WRITE16_MEMBER( step1_word_w ); /* color index goes up in step of 1 */ void step1_4bpg_word_w(offs_t offset, u16 data); /* only 4 bits per color gun */
DECLARE_WRITE16_MEMBER( step1_rbswap_word_w ); /* swaps red and blue components */
DECLARE_WRITE16_MEMBER( step1_4bpg_word_w ); /* only 4 bits per color gun */
void restore_colors(); void restore_colors();
@ -33,11 +27,15 @@ protected:
virtual void device_reset() override; virtual void device_reset() override;
virtual void device_post_load() override; virtual void device_post_load() override;
// device_palette_interface overrides
virtual u32 palette_entries() const override { return TC0110PCR_RAM_SIZE; }
private: private:
static const unsigned TC0110PCR_RAM_SIZE = 0x2000 / 2;
std::unique_ptr<uint16_t[]> m_ram; std::unique_ptr<uint16_t[]> m_ram;
int m_type; int m_type;
int m_addr; int m_addr;
required_device<palette_device> m_palette;
}; };
DECLARE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device) DECLARE_DEVICE_TYPE(TC0110PCR, tc0110pcr_device)

View File

@ -8,7 +8,7 @@
SPRITE DRAW ROUTINE SPRITE DRAW ROUTINE
************************************************************/ ************************************************************/
void warriorb_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs ) void warriorb_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int x_offs, int y_offs, int chip)
{ {
int offs, data, data2, tilenum, color, flipx, flipy; int offs, data, data2, tilenum, color, flipx, flipy;
int x, y, priority, pri_mask; int x, y, priority, pri_mask;
@ -54,7 +54,7 @@ void warriorb_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,
if (x > 0x3c0) x -= 0x400; if (x > 0x3c0) x -= 0x400;
if (y > 0x180) y -= 0x200; if (y > 0x180) y -= 0x200;
m_gfxdecode->gfx(0)->prio_transpen(bitmap,cliprect, m_gfxdecode[chip]->gfx(0)->prio_transpen(bitmap,cliprect,
tilenum, tilenum,
color, color,
flipx,flipy, flipx,flipy,
@ -93,13 +93,13 @@ uint32_t warriorb_state::update_screen(screen_device &screen, bitmap_ind16 &bitm
/* Ensure screen blanked even when bottom layers not drawn due to disable bit */ /* Ensure screen blanked even when bottom layers not drawn due to disable bit */
if (nodraw) if (nodraw)
bitmap.fill(m_palette->black_pen(), cliprect); bitmap.fill(m_tc0110pcr[chip]->black_pen(), cliprect);
// draw middle layer // draw middle layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 1); tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 1);
/* Sprites can be under/over the layer below text layer */ /* Sprites can be under/over the layer below text layer */
draw_sprites(screen, bitmap, cliprect, xoffs * chip, 8); // draw sprites draw_sprites(screen, bitmap, cliprect, xoffs * chip, 8, chip); // draw sprites
// draw top(text) layer // draw top(text) layer
tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 0); tc0100scn->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 0);