From 56ab0a1e692b3181b780a51f3673f18f4e7a6bfa Mon Sep 17 00:00:00 2001 From: cam900 Date: Tue, 11 Jun 2019 14:45:38 +0900 Subject: tc0100scn.cpp : Updates Internalize gfx, Add color base for when color base is differs undrfire.cpp : Reduce unnecessary lines --- src/mame/drivers/asuka.cpp | 29 -------- src/mame/drivers/galastrm.cpp | 6 +- src/mame/drivers/groundfx.cpp | 66 ++--------------- src/mame/drivers/ninjaw.cpp | 39 ++-------- src/mame/drivers/othunder.cpp | 5 +- src/mame/drivers/taito_f2.cpp | 102 +++----------------------- src/mame/drivers/taito_z.cpp | 35 ++------- src/mame/drivers/undrfire.cpp | 114 ++++++++--------------------- src/mame/drivers/warriorb.cpp | 26 ++----- src/mame/drivers/wgp.cpp | 11 +-- src/mame/includes/groundfx.h | 4 +- src/mame/includes/undrfire.h | 6 +- src/mame/video/groundfx.cpp | 14 ++-- src/mame/video/taito_z.cpp | 4 +- src/mame/video/tc0100scn.cpp | 166 ++++++++++++++++++++++++++++++++---------- src/mame/video/tc0100scn.h | 58 ++++++++++++--- src/mame/video/undrfire.cpp | 26 +++---- src/mame/video/wgp.cpp | 2 +- 18 files changed, 272 insertions(+), 441 deletions(-) diff --git a/src/mame/drivers/asuka.cpp b/src/mame/drivers/asuka.cpp index 57424f25b38..871aa31f7b8 100644 --- a/src/mame/drivers/asuka.cpp +++ b/src/mame/drivers/asuka.cpp @@ -755,15 +755,6 @@ static INPUT_PORTS_START( eto ) INPUT_PORTS_END -/************************************************************** - GFX DECODING -**************************************************************/ - -static GFXDECODE_START( gfx_asuka ) - GFXDECODE_ENTRY( "tc0100scn", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* SCR */ -GFXDECODE_END - - /*********************************************************** MACHINE DRIVERS ***********************************************************/ @@ -845,16 +836,12 @@ void asuka_state::bonzeadv(machine_config &config) screen.screen_vblank().set(FUNC(asuka_state::screen_vblank)); screen.set_palette(m_tc0110pcr); - GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka); - PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); - m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); @@ -903,8 +890,6 @@ void asuka_state::asuka(machine_config &config) screen.screen_vblank().set(FUNC(asuka_state::screen_vblank)); screen.set_palette(m_tc0110pcr); - GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka); - PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_usebuffer(true); @@ -912,8 +897,6 @@ void asuka_state::asuka(machine_config &config) m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); - m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); @@ -974,8 +957,6 @@ void asuka_state::cadash(machine_config &config) screen.screen_vblank().set(FUNC(asuka_state::screen_vblank)); screen.set_palette(m_tc0110pcr); - GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka); - PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_usebuffer(true); @@ -983,9 +964,7 @@ void asuka_state::cadash(machine_config &config) m_pc090oj->set_colpri_callback(FUNC(asuka_state::bonzeadv_colpri_cb), this); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); m_tc0100scn->set_offsets(1, 0); - m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); @@ -1034,17 +1013,13 @@ void asuka_state::mofflott(machine_config &config) screen.screen_vblank().set(FUNC(asuka_state::screen_vblank)); screen.set_palette(m_tc0110pcr); - GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka); - PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); m_tc0100scn->set_offsets(1, 0); - m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); @@ -1101,17 +1076,13 @@ void asuka_state::eto(machine_config &config) screen.screen_vblank().set(FUNC(asuka_state::screen_vblank)); screen.set_palette(m_tc0110pcr); - GFXDECODE(config, "gfxdecode", m_tc0110pcr, gfx_asuka); - PC090OJ(config, m_pc090oj, 0); m_pc090oj->set_offsets(0, 8); m_pc090oj->set_palette(m_tc0110pcr); m_pc090oj->set_colpri_callback(FUNC(asuka_state::asuka_colpri_cb), this); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); m_tc0100scn->set_offsets(1, 0); - m_tc0100scn->set_gfxdecode_tag("gfxdecode"); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); diff --git a/src/mame/drivers/galastrm.cpp b/src/mame/drivers/galastrm.cpp index 02d0c4d5062..1779b9ada61 100644 --- a/src/mame/drivers/galastrm.cpp +++ b/src/mame/drivers/galastrm.cpp @@ -165,7 +165,7 @@ static const gfx_layout tile16x16_layout = }; static GFXDECODE_START( gfx_galastrm ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 4096/16 ) + GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 4096/16 ) GFXDECODE_END @@ -210,9 +210,7 @@ void galastrm_state::galastrm(machine_config &config) GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_galastrm); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(0); // TODO : no ROMs? m_tc0100scn->set_offsets(-48, -56); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0480SCP(config, m_tc0480scp, 0); @@ -238,6 +236,8 @@ ROM_START( galastrm ) ROM_LOAD16_BYTE( "c99_23.ic8", 0x100000, 0x20000, CRC(5718ee92) SHA1(33cfa60c5bceb1525498f27b598067d2dc620431) ) ROM_LOAD16_BYTE( "c99_22.ic7", 0x100001, 0x20000, CRC(b90f7c42) SHA1(e2fa9ee10ad61ae1a672c3357c0072b79ec7fbcb) ) + ROM_REGION( 0x100, "tc0100scn", ROMREGION_ERASE00 ) // no roms for tc0100scn, dummy + ROM_REGION( 0x200000, "tc0480scp", 0 ) ROM_LOAD32_WORD( "c99-05.ic1", 0x000000, 0x100000, CRC(a91ffba4) SHA1(467af9646ddad5fbb520b6bc13517ed4deacf479) ) /* SCR 16x16 tiles */ ROM_LOAD32_WORD( "c99-06.ic2", 0x000002, 0x100000, CRC(812ed3ae) SHA1(775904dd42643d0e3a30890590d5f8eac1fe78db) ) diff --git a/src/mame/drivers/groundfx.cpp b/src/mame/drivers/groundfx.cpp index 5cca976c7bf..f6dc60eea9c 100644 --- a/src/mame/drivers/groundfx.cpp +++ b/src/mame/drivers/groundfx.cpp @@ -138,8 +138,8 @@ void groundfx_state::groundfx_map(address_map &map) map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::ram_r), FUNC(tc0480scp_device::ram_w)); /* tilemaps */ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_r), FUNC(tc0480scp_device::ctrl_w)); // debugging - map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* 6bpp tilemaps */ - map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w)); + map(0x900000, 0x90ffff).rw(m_tc0620scc, FUNC(tc0620scc_device::ram_r), FUNC(tc0620scc_device::ram_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0620scc, FUNC(tc0620scc_device::ctrl_r), FUNC(tc0620scc_device::ctrl_w)); map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); map(0xb00000, 0xb003ff).ram(); // ?? single bytes, blending ?? map(0xc00000, 0xc00007).nopr(); /* Network? */ @@ -194,21 +194,8 @@ static const gfx_layout tile16x16_layout = 16*16 /* every sprite takes 128 consecutive bytes */ }; -static const gfx_layout layout_scc_6bpp_hi = -{ - 8,8, - RGN_FRAC(1,1), - 2, - { STEP2(0,1) }, - { STEP8(0,2) }, - { STEP8(0,8*2) }, - 8*8*2 -}; - static GFXDECODE_START( gfx_groundfx ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 4096, 512 ) - GFXDECODE_ENTRY( "tc0100scn", 0x0, gfx_8x8x4_packed_msb, 0, 512 ) // low 4bpp of 6bpp scc tiles - GFXDECODE_ENTRY( "tc0100scn:hi_gfx", 0x0, layout_scc_6bpp_hi, 0, 512 ) // hi 2bpp of 6bpp scc tiles + GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 4096, 512 ) GFXDECODE_END @@ -260,11 +247,9 @@ void groundfx_state::groundfx(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_groundfx); PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384); - TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_offsets(50, 8); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); - m_tc0100scn->set_palette(m_palette); + TC0620SCC(config, m_tc0620scc, 0); + m_tc0620scc->set_offsets(50, 8); + m_tc0620scc->set_palette(m_palette); TC0480SCP(config, m_tc0480scp, 0); m_tc0480scp->set_palette(m_palette); @@ -301,11 +286,11 @@ ROM_START( groundfx ) ROM_LOAD16_WORD_SWAP( "d51-06.50", 0x600000, 0x200000, CRC(d33ce2a0) SHA1(92c4504344672ea798cd6dd34f4b46848bf9f82b) ) ROM_LOAD16_WORD_SWAP( "d51-07.51", 0x800000, 0x200000, CRC(24b2f97d) SHA1(6980e67b435d189ce897c0301e0411763410ab47) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d51-10.95", 0x000001, 0x100000, CRC(d5910604) SHA1(8efe13884cfdef208394ddfe19f43eb1b9f78ff3) ) /* SCC 8x8 tiles, 4bpp */ ROM_LOAD16_BYTE( "d51-11.96", 0x000000, 0x100000, CRC(fee5f5c6) SHA1(1be88747f9c71c348dd61a8f0040007df3a3e6a6) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d51-12.97", 0x000000, 0x100000, CRC(d630287b) SHA1(2fa09e1821b7280d193ca9a2a270759c3c3189d1) ) /* SCC 8x8 tiles, 2bpp */ ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -344,41 +329,6 @@ void groundfx_state::init_groundfx() { /* Speedup handlers */ m_maincpu->space(AS_PROGRAM).install_read_handler(0x20b574, 0x20b577, read32_delegate(FUNC(groundfx_state::irq_speedup_r),this)); - - /* make SCC tile GFX format suitable for gfxdecode */ - gfx_element *gx0 = m_gfxdecode->gfx(1); - gfx_element *gx1 = m_gfxdecode->gfx(2); - - // allocate memory for the assembled data - u8 *srcdata = auto_alloc_array(machine(), u8, gx0->elements() * gx0->width() * gx0->height()); - - // loop over elements - u8 *dest = srcdata; - for (int c = 0; c < gx0->elements(); c++) - { - const u8 *c0base = gx0->get_data(c); - const u8 *c1base = gx1->get_data(c); - - // loop over height - for (int y = 0; y < gx0->height(); y++) - { - const u8 *c0 = c0base; - const u8 *c1 = c1base; - - for (int x = 0; x < gx0->width(); x++) - { - u8 hipix = *c1++; - *dest++ = (*c0++ & 0xf) | ((hipix << 4) & 0x30); - } - c0base += gx0->rowbytes(); - c1base += gx1->rowbytes(); - } - } - - gx0->set_raw_layout(srcdata, gx0->width(), gx0->height(), gx0->elements(), 8 * gx0->width(), 8 * gx0->width() * gx0->height()); - gx0->set_granularity(64); - m_gfxdecode->set_gfx(2, nullptr); - m_tc0100scn->update_granularity(); } diff --git a/src/mame/drivers/ninjaw.cpp b/src/mame/drivers/ninjaw.cpp index f5eda7d6f8f..88341fe35d8 100644 --- a/src/mame/drivers/ninjaw.cpp +++ b/src/mame/drivers/ninjaw.cpp @@ -596,19 +596,8 @@ static const gfx_layout tilelayout = 128*8 /* every sprite takes 128 consecutive bytes */ }; -static GFXDECODE_START( gfx_ninjaw_1 ) - GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 1) */ -GFXDECODE_END - -static GFXDECODE_START( gfx_ninjaw_2 ) - GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_2", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 2) */ -GFXDECODE_END - -static GFXDECODE_START( gfx_ninjaw_3 ) - GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_3", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 3) */ +static GFXDECODE_START( gfx_ninjaw ) + GFXDECODE_ENTRY( "sprites", 0, tilelayout, 0, 256 ) /* sprites */ GFXDECODE_END @@ -737,9 +726,9 @@ void ninjaw_state::ninjaw(machine_config &config) tc0040ioc.read_7_callback().set_ioport("IN2"); /* video hardware */ - GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw_1); - GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw_2); - GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw_3); + GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw); + GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw); + GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw); config.set_default_layout(layout_ninjaw); @@ -768,31 +757,25 @@ void ninjaw_state::ninjaw(machine_config &config) rscreen.set_palette(m_tc0110pcr[2]); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(22, 0); m_tc0100scn[0]->set_multiscr_xoffs(0); m_tc0100scn[0]->set_multiscr_hack(0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]); TC0110PCR(config, m_tc0110pcr[0], 0); TC0100SCN(config, m_tc0100scn[1], 0); - m_tc0100scn[1]->set_gfx_region(1); m_tc0100scn[1]->set_offsets(22, 0); m_tc0100scn[1]->set_multiscr_xoffs(2); m_tc0100scn[1]->set_multiscr_hack(1); - m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]); TC0110PCR(config, m_tc0110pcr[1], 0); TC0100SCN(config, m_tc0100scn[2], 0); - m_tc0100scn[2]->set_gfx_region(1); m_tc0100scn[2]->set_offsets(22, 0); m_tc0100scn[2]->set_multiscr_xoffs(4); m_tc0100scn[2]->set_multiscr_hack(1); - m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode[2]); m_tc0100scn[2]->set_palette(m_tc0110pcr[2]); TC0110PCR(config, m_tc0110pcr[2], 0); @@ -849,9 +832,9 @@ void ninjaw_state::darius2(machine_config &config) tc0040ioc.read_7_callback().set_ioport("IN2"); /* video hardware */ - GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw_1); - GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw_2); - GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw_3); + GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_ninjaw); + GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_ninjaw); + GFXDECODE(config, m_gfxdecode[2], m_tc0110pcr[2], gfx_ninjaw); config.set_default_layout(layout_ninjaw); @@ -880,31 +863,25 @@ void ninjaw_state::darius2(machine_config &config) rscreen.set_palette(m_tc0110pcr[2]); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(22, 0); m_tc0100scn[0]->set_multiscr_xoffs(0); m_tc0100scn[0]->set_multiscr_hack(0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]); TC0110PCR(config, m_tc0110pcr[0], 0); TC0100SCN(config, m_tc0100scn[1], 0); - m_tc0100scn[1]->set_gfx_region(1); m_tc0100scn[1]->set_offsets(22, 0); m_tc0100scn[1]->set_multiscr_xoffs(2); m_tc0100scn[1]->set_multiscr_hack(1); - m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]); TC0110PCR(config, m_tc0110pcr[1], 0); TC0100SCN(config, m_tc0100scn[2], 0); - m_tc0100scn[2]->set_gfx_region(1); m_tc0100scn[2]->set_offsets(22, 0); m_tc0100scn[2]->set_multiscr_xoffs(4); m_tc0100scn[2]->set_multiscr_hack(1); - m_tc0100scn[2]->set_gfxdecode_tag(m_gfxdecode[2]); m_tc0100scn[2]->set_palette(m_tc0110pcr[2]); TC0110PCR(config, m_tc0110pcr[2], 0); diff --git a/src/mame/drivers/othunder.cpp b/src/mame/drivers/othunder.cpp index 26ebdcc476a..6a082473be4 100644 --- a/src/mame/drivers/othunder.cpp +++ b/src/mame/drivers/othunder.cpp @@ -562,8 +562,7 @@ static const gfx_layout tile16x8_layout = }; static GFXDECODE_START( gfx_othunder ) - GFXDECODE_ENTRY( "sprites", 0, tile16x8_layout, 0, 256 ) /* sprite parts */ - GFXDECODE_ENTRY( "tc0100scn", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* sprites & playfield */ + GFXDECODE_ENTRY( "sprites", 0, tile16x8_layout, 0, 256 ) /* sprite parts */ GFXDECODE_END @@ -618,9 +617,7 @@ void othunder_state::othunder(machine_config &config) GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_othunder); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_offsets(4, 0); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); diff --git a/src/mame/drivers/taito_f2.cpp b/src/mame/drivers/taito_f2.cpp index efb9fe2b856..5fdd5257d23 100644 --- a/src/mame/drivers/taito_f2.cpp +++ b/src/mame/drivers/taito_f2.cpp @@ -2703,29 +2703,12 @@ static const gfx_layout layout_6bpp_hi = }; static GFXDECODE_START( gfx_taitof2 ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ + GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ GFXDECODE_END static GFXDECODE_START( gfx_finalb ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) // low 4bpp of 6bpp sprites - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ - GFXDECODE_ENTRY( "sprites_hi", 0, layout_6bpp_hi, 0, 256 ) // hi 2bpp of 6bpp sprites -GFXDECODE_END - -static GFXDECODE_START( gfx_thundfox ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ - GFXDECODE_ENTRY( "tc0100scn_2", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ -GFXDECODE_END - -static GFXDECODE_START( gfx_yuyugogo ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x1, 0, 256 ) /* playfield */ -GFXDECODE_END - -static GFXDECODE_START( gfx_deadconx ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ + GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) // low 4bpp of 6bpp sprites + GFXDECODE_ENTRY( "sprites_hi", 0, layout_6bpp_hi, 0, 256 ) // hi 2bpp of 6bpp sprites GFXDECODE_END static const gfx_layout footchmpbl_tilelayout = @@ -2878,9 +2861,7 @@ void taitof2_state::finalb(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(1, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_tc0110pcr); } @@ -2892,15 +2873,12 @@ void taitof2_state::dondokod(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::dondokod_map); /* video hardware */ - m_gfxdecode->set_info(gfx_taitof2); MCFG_VIDEO_START_OVERRIDE(taitof2_state,dondokod) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri_roz)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0280GRD(config, m_tc0280grd, 0); @@ -2928,9 +2906,7 @@ void taitof2_state::megab(machine_config &config) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -2944,27 +2920,22 @@ void taitof2_state::thundfox(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::thundfox_map); /* video hardware */ - m_gfxdecode->set_info(gfx_thundfox); MCFG_VIDEO_START_OVERRIDE(taitof2_state,thundfox) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_thundfox)); m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed_thundfox)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); m_tc0100scn[0]->set_offsets_flip(5, 0); m_tc0100scn[0]->set_offsets_fliptx(4, 1); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0100SCN(config, m_tc0100scn[1], 0); - m_tc0100scn[1]->set_gfx_region(2); m_tc0100scn[1]->set_offsets(3, 0); m_tc0100scn[1]->set_offsets_flip(5, 0); m_tc0100scn[1]->set_offsets_fliptx(4, 1); m_tc0100scn[1]->set_multiscr_xoffs(tc0100scn_device::SINGLE_VDU); m_tc0100scn[1]->set_multiscr_hack(1); - m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[1]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -2978,14 +2949,11 @@ void taitof2_state::cameltry(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::cameltry_map); /* video hardware */ - m_gfxdecode->set_info(gfx_taitof2); MCFG_VIDEO_START_OVERRIDE(taitof2_state,dondokod) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri_roz)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0280GRD(config, m_tc0280grd, 0); @@ -3005,12 +2973,10 @@ void taitof2_state::qtorimon(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::qtorimon_map); /* video hardware */ - m_gfxdecode->set_info(gfx_yuyugogo); m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); + m_tc0100scn[0]->set_gfxlayout(TC0100SCN_LAYOUT_1BPP); m_tc0100scn[0]->set_palette(m_tc0110pcr); } @@ -3027,9 +2993,7 @@ void taitof2_state::liquidk(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3045,12 +3009,10 @@ void taitof2_state::quizhq(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::quizhq_map); /* video hardware */ - m_gfxdecode->set_info(gfx_yuyugogo); m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); + m_tc0100scn[0]->set_gfxlayout(TC0100SCN_LAYOUT_1BPP); m_tc0100scn[0]->set_palette(m_tc0110pcr); } @@ -3069,9 +3031,7 @@ void taitof2_state::ssi(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed_thundfox)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); } @@ -3090,9 +3050,7 @@ void taitof2_state::gunfront(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3112,9 +3070,7 @@ void taitof2_state::growl(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3133,8 +3089,6 @@ void taitof2_state::mjnquest(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitof2_state,mjnquest) TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_tc0110pcr); m_tc0100scn[0]->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb), this); } @@ -3147,7 +3101,6 @@ void taitof2_state::footchmp(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::footchmp_map); /* video hardware */ - m_gfxdecode->set_info(gfx_deadconx); MCFG_VIDEO_START_OVERRIDE(taitof2_state,footchmp) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_deadconx)); m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_full_buffer_delayed)); @@ -3178,7 +3131,6 @@ void taitof2_state::hthero(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::footchmp_map); /* video hardware */ - m_gfxdecode->set_info(gfx_deadconx); MCFG_VIDEO_START_OVERRIDE(taitof2_state,hthero) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_deadconx)); m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_full_buffer_delayed)); @@ -3206,10 +3158,8 @@ void taitof2_state::koshien(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(1, 0); m_tc0100scn[0]->set_offsets_flip(2, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3225,14 +3175,12 @@ void taitof2_state::yuyugogo(machine_config &config) m_palette->set_format(palette_device::RGBx_444, 4096); /* video hardware */ - m_gfxdecode->set_info(gfx_yuyugogo); MCFG_VIDEO_START_OVERRIDE(taitof2_state,yuyugogo) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_yesnoj)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); + m_tc0100scn[0]->set_gfxlayout(TC0100SCN_LAYOUT_1BPP); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); } @@ -3258,9 +3206,7 @@ void taitof2_state::ninjak(machine_config &config) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(1, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3278,11 +3224,9 @@ void taitof2_state::solfigtr(machine_config &config) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); m_tc0100scn[0]->set_offsets_flip(6, 0); m_tc0100scn[0]->set_offsets_fliptx(6, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3299,8 +3243,6 @@ void taitof2_state::qzquest(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); } @@ -3312,14 +3254,11 @@ void taitof2_state::pulirula(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::pulirula_map); /* video hardware */ - m_gfxdecode->set_info(gfx_taitof2); MCFG_VIDEO_START_OVERRIDE(taitof2_state,pulirula) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri_roz)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0430GRW(config, m_tc0430grw, 0); @@ -3337,7 +3276,6 @@ void taitof2_state::metalb(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::metalb_map); /* video hardware */ - m_gfxdecode->set_info(gfx_deadconx); m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 8192); MCFG_VIDEO_START_OVERRIDE(taitof2_state,metalb) @@ -3365,11 +3303,9 @@ void taitof2_state::qzchikyu(machine_config &config) m_screen->screen_vblank().set(FUNC(taitof2_state::screen_vblank_partial_buffer_delayed_qzchikyu)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(0, 0); m_tc0100scn[0]->set_offsets_flip(-4, 0); m_tc0100scn[0]->set_offsets_fliptx(-11, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); } @@ -3381,16 +3317,14 @@ void taitof2_state::yesnoj(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::yesnoj_map); /* video hardware */ - m_gfxdecode->set_info(gfx_yuyugogo); m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); MCFG_VIDEO_START_OVERRIDE(taitof2_state,yesnoj) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_yesnoj)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); + m_tc0100scn[0]->set_gfxlayout(TC0100SCN_LAYOUT_1BPP); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC8521(config, "rtc", XTAL(32'768)); @@ -3404,7 +3338,6 @@ void taitof2_state::deadconx(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::deadconx_map); /* video hardware */ - m_gfxdecode->set_info(gfx_deadconx); m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); MCFG_VIDEO_START_OVERRIDE(taitof2_state,deadconx) @@ -3427,7 +3360,6 @@ void taitof2_state::deadconxj(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::deadconx_map); /* video hardware */ - m_gfxdecode->set_info(gfx_deadconx); MCFG_VIDEO_START_OVERRIDE(taitof2_state,deadconxj) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_deadconx)); @@ -3454,9 +3386,7 @@ void taitof2_state::dinorex(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3476,9 +3406,7 @@ void taitof2_state::qjinsei(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3498,9 +3426,7 @@ void taitof2_state::qcrayon(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3520,9 +3446,7 @@ void taitof2_state::qcrayon2(machine_config &config) m_palette->set_format(palette_device::RRRRGGGGBBBBRGBx, 4096); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0360PRI(config, m_tc0360pri, 0); @@ -3536,15 +3460,11 @@ void taitof2_state::driftout(machine_config &config) m_maincpu->set_addrmap(AS_PROGRAM, &taitof2_state::driftout_map); /* video hardware */ - m_gfxdecode->set_info(gfx_taitof2); - MCFG_VIDEO_START_OVERRIDE(taitof2_state,driftout) m_screen->set_screen_update(FUNC(taitof2_state::screen_update_pri_roz)); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0430GRW(config, m_tc0430grw, 0); @@ -3588,9 +3508,7 @@ void taitof2_state::cameltrya(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitof2_state,dondokod) TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0280GRD(config, m_tc0280grd, 0); @@ -3652,9 +3570,7 @@ void taitof2_state::driveout(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitof2_state,driftout) TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(3, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn[0]->set_palette(m_palette); TC0430GRW(config, m_tc0430grw, 0); @@ -5373,7 +5289,7 @@ void taitof2_state::init_finalb() { /* convert from 2bits into 4bits format */ gfx_element *gx0 = m_gfxdecode->gfx(0); - gfx_element *gx1 = m_gfxdecode->gfx(2); + gfx_element *gx1 = m_gfxdecode->gfx(1); // allocate memory for the assembled data u8 *srcdata = auto_alloc_array(machine(), u8, gx0->elements() * gx0->width() * gx0->height()); @@ -5404,7 +5320,7 @@ void taitof2_state::init_finalb() gx0->set_raw_layout(srcdata, gx0->width(), gx0->height(), gx0->elements(), 8 * gx0->width(), 8 * gx0->width() * gx0->height()); gx0->set_colors(4096 / 64); gx0->set_granularity(64); - m_gfxdecode->set_gfx(2, nullptr); + m_gfxdecode->set_gfx(1, nullptr); } void taitof2_state::init_cameltry() diff --git a/src/mame/drivers/taito_z.cpp b/src/mame/drivers/taito_z.cpp index 9610e574786..0d837c828ec 100644 --- a/src/mame/drivers/taito_z.cpp +++ b/src/mame/drivers/taito_z.cpp @@ -3051,21 +3051,12 @@ static const gfx_layout tile16x16_layout = }; static GFXDECODE_START( gfx_taitoz ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x8_layout, 0, 256 ) /* sprite parts */ - GFXDECODE_ENTRY( "tc0100scn", 0x0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ + GFXDECODE_ENTRY( "sprites", 0x0, tile16x8_layout, 0, 256 ) /* sprite parts */ GFXDECODE_END -/* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx - slot, so 2nd batch of obj must be placed third */ - static GFXDECODE_START( gfx_chasehq ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ - GFXDECODE_ENTRY( "tc0100scn", 0x0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ - GFXDECODE_ENTRY( "sprites2", 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ -GFXDECODE_END - -static GFXDECODE_START( gfx_dblaxle ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x8_layout, 0, 256 ) /* sprite parts */ + GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ + GFXDECODE_ENTRY( "sprites2", 0x0, tile16x16_layout, 0, 256 ) /* sprite parts */ GFXDECODE_END @@ -3176,8 +3167,6 @@ void taitoz_state::contcirc(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0150ROD(config, m_tc0150rod, 0); @@ -3245,8 +3234,6 @@ void taitoz_state::chasehq(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0150ROD(config, m_tc0150rod, 0); @@ -3314,8 +3301,6 @@ void taitoz_state::enforce(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0150ROD(config, m_tc0150rod, 0); @@ -3381,8 +3366,6 @@ void taitoz_state::bshark_base(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette("palette"); TC0150ROD(config, m_tc0150rod, 0); @@ -3464,8 +3447,6 @@ void taitoz_state::sci(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette("palette"); TC0150ROD(config, m_tc0150rod, 0); @@ -3538,8 +3519,6 @@ void taitoz_state::nightstr(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0150ROD(config, m_tc0150rod, 0); @@ -3607,8 +3586,6 @@ void taitoz_state::aquajack(machine_config &config) MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0150ROD(config, m_tc0150rod, 0); @@ -3679,9 +3656,7 @@ void taitoz_state::spacegun(machine_config &config) GFXDECODE(config, m_gfxdecode, m_tc0110pcr, gfx_taitoz); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); m_tc0100scn->set_offsets(4, 0); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_tc0110pcr); TC0110PCR(config, m_tc0110pcr, 0); @@ -3739,7 +3714,7 @@ void taitoz_state::dblaxle(machine_config &config) screen.set_screen_update(FUNC(taitoz_state::screen_update_dblaxle)); screen.set_palette("palette"); - GFXDECODE(config, m_gfxdecode, "palette", gfx_dblaxle); + GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096); MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) @@ -3806,7 +3781,7 @@ void taitoz_state::racingb(machine_config &config) screen.set_screen_update(FUNC(taitoz_state::screen_update_racingb)); screen.set_palette("palette"); - GFXDECODE(config, m_gfxdecode, "palette", gfx_dblaxle); + GFXDECODE(config, m_gfxdecode, "palette", gfx_taitoz); PALETTE(config, "palette").set_format(palette_device::xBGR_555, 4096); MCFG_VIDEO_START_OVERRIDE(taitoz_state,taitoz) diff --git a/src/mame/drivers/undrfire.cpp b/src/mame/drivers/undrfire.cpp index 9ba9e0ca685..f30f431b1cc 100644 --- a/src/mame/drivers/undrfire.cpp +++ b/src/mame/drivers/undrfire.cpp @@ -330,8 +330,8 @@ void undrfire_state::undrfire_map(address_map &map) map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::ram_r), FUNC(tc0480scp_device::ram_w)); /* tilemaps */ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_r), FUNC(tc0480scp_device::ctrl_w)); - map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* 6bpp tilemaps */ - map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w)); + map(0x900000, 0x90ffff).rw(m_tc0620scc, FUNC(tc0620scc_device::ram_r), FUNC(tc0620scc_device::ram_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0620scc, FUNC(tc0620scc_device::ctrl_r), FUNC(tc0620scc_device::ctrl_w)); map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); map(0xb00000, 0xb003ff).ram(); /* single bytes, blending ??? */ map(0xd00000, 0xd00003).w(FUNC(undrfire_state::rotate_control_w)); /* perhaps port based rotate control? */ @@ -350,8 +350,8 @@ void undrfire_state::cbombers_cpua_map(address_map &map) map(0x700000, 0x7007ff).rw("taito_en:dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w)); map(0x800000, 0x80ffff).rw(m_tc0480scp, FUNC(tc0480scp_device::ram_r), FUNC(tc0480scp_device::ram_w)); /* tilemaps */ map(0x830000, 0x83002f).rw(m_tc0480scp, FUNC(tc0480scp_device::ctrl_r), FUNC(tc0480scp_device::ctrl_w)); - map(0x900000, 0x90ffff).rw(m_tc0100scn, FUNC(tc0100scn_device::ram_r), FUNC(tc0100scn_device::ram_w)); /* 6bpp tilemaps */ - map(0x920000, 0x92000f).rw(m_tc0100scn, FUNC(tc0100scn_device::ctrl_r), FUNC(tc0100scn_device::ctrl_w)); + map(0x900000, 0x90ffff).rw(m_tc0620scc, FUNC(tc0620scc_device::ram_r), FUNC(tc0620scc_device::ram_w)); /* 6bpp tilemaps */ + map(0x920000, 0x92000f).rw(m_tc0620scc, FUNC(tc0620scc_device::ctrl_r), FUNC(tc0620scc_device::ctrl_w)); map(0xa00000, 0xa0ffff).ram().w(m_palette, FUNC(palette_device::write32)).share("palette"); map(0xb00000, 0xb0000f).ram(); /* TC0360PRI */ map(0xc00000, 0xc00007).ram(); /* LAN controller? */ @@ -497,21 +497,8 @@ static const gfx_layout tile16x16_layout = 16*16 /* every sprite takes 128 consecutive bytes */ }; -static const gfx_layout layout_scc_6bpp_hi = -{ - 8,8, - RGN_FRAC(1,1), - 2, - { STEP2(0,1) }, - { STEP8(0,2) }, - { STEP8(0,8*2) }, - 8*8*2 -}; - static GFXDECODE_START( gfx_undrfire ) - GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 512 ) - GFXDECODE_ENTRY( "tc0100scn", 0x0, gfx_8x8x4_packed_msb, 0, 512 ) // low 4bpp of 6bpp scc tiles - GFXDECODE_ENTRY( "tc0100scn:hi_gfx", 0x0, layout_scc_6bpp_hi, 0, 512 ) // hi 2bpp of 6bpp scc tiles + GFXDECODE_ENTRY( "sprites", 0x0, tile16x16_layout, 0, 512 ) GFXDECODE_END /*********************************************************** @@ -557,11 +544,9 @@ void undrfire_state::undrfire(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_undrfire); PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384); - TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_offsets(50, 8); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); - m_tc0100scn->set_palette(m_palette); + TC0620SCC(config, m_tc0620scc, 0); + m_tc0620scc->set_offsets(50, 8); + m_tc0620scc->set_palette(m_palette); TC0480SCP(config, m_tc0480scp, 0); m_tc0480scp->set_palette(m_palette); @@ -616,11 +601,9 @@ void undrfire_state::cbombers(machine_config &config) GFXDECODE(config, m_gfxdecode, m_palette, gfx_undrfire); PALETTE(config, m_palette).set_format(palette_device::xRGB_888, 16384); - TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_offsets(50, 8); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); - m_tc0100scn->set_palette(m_palette); + TC0620SCC(config, m_tc0620scc, 0); + m_tc0620scc->set_offsets(50, 8); + m_tc0620scc->set_palette(m_palette); TC0480SCP(config, m_tc0480scp, 0); m_tc0480scp->set_palette(m_palette); @@ -659,11 +642,11 @@ ROM_START( undrfire ) ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) ) ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 4bpp */ ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d67-12", 0x000000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) ) /* PIV 8x8 tiles, 2bpp */ ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -700,11 +683,11 @@ ROM_START( undrfireu ) ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) ) ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 4bpp */ ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d67-12", 0x000000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) ) /* PIV 8x8 tiles, 2bpp */ ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -740,11 +723,11 @@ ROM_START( undrfirej ) ROM_LOAD16_WORD_SWAP( "d67-06", 0x600000, 0x200000, CRC(a2a63488) SHA1(a1ed140cc3757c3c05a0a822089c6efc83bf4805) ) ROM_LOAD16_WORD_SWAP( "d67-07", 0x800000, 0x200000, CRC(189c0ee5) SHA1(de85b39dc67f31ef80800ff6ec9a391652eb12e4) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d67-10", 0x000001, 0x100000, CRC(d79e6ce9) SHA1(8b38302971816d599cdaa3279cb6395441373c6f) ) /* PIV 8x8 tiles, 4bpp */ ROM_LOAD16_BYTE( "d67-11", 0x000000, 0x100000, CRC(7a401bb3) SHA1(47257a6a4b37ec1ceb4e974b776ee3ea30db06fa) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d67-12", 0x000000, 0x100000, CRC(67b16fec) SHA1(af0f9f50516331780ef6cfab1e12a23edf87daa7) ) /* PIV 8x8 tiles, 2bpp */ ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -789,11 +772,11 @@ ROM_START( cbombers ) ROM_LOAD16_WORD_SWAP( "d83_14.ic44", 0xb00000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) ) ROM_LOAD16_WORD_SWAP( "d83_15.ic42", 0xe00000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d83_16.ic19", 0x000001, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) ) ROM_LOAD16_BYTE( "d83_17.ic5", 0x000000, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d83_18.ic6", 0x000000, 0x100000, CRC(87979155) SHA1(0ffafa970f9f9c98f8938104b97e63d2b5757804) ) ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -844,11 +827,11 @@ ROM_START( cbombersj ) ROM_LOAD16_WORD_SWAP( "d83_14.ic44", 0xb00000, 0x100000, CRC(8b6f4f12) SHA1(6a28004d287f00627622376aa3d6704f2684a6f3) ) ROM_LOAD16_WORD_SWAP( "d83_15.ic42", 0xe00000, 0x100000, CRC(1b71175e) SHA1(60ad38ce97fd7995ff2f29d6b1a3b873dc2f0eb3) ) - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "d83_16.ic19", 0x000001, 0x100000, CRC(d364cf1e) SHA1(ee43f50edf50ec840acfb98b1314140ee9693839) ) ROM_LOAD16_BYTE( "d83_17.ic5", 0x000000, 0x100000, CRC(0ffe737c) SHA1(5923a4edf9d0c8339f793840c2bdc691e2c651e6) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "d83_18.ic6", 0x000000, 0x100000, CRC(87979155) SHA1(0ffafa970f9f9c98f8938104b97e63d2b5757804) ) ROM_REGION16_LE( 0x80000, "spritemap", 0 ) @@ -930,13 +913,13 @@ ROM_START( cbombersp ) ROM_LOAD16_BYTE( "ic80_d511.bin", 0x0b00000, 0x80000, CRC(37da5baf) SHA1(a78ac413de08a1ff70ab14561b75df633a9e5be8) ) // bp 4 ROM_LOAD16_BYTE( "ic82_3d3d.bin", 0x0e00000, 0x80000, CRC(3e62970e) SHA1(82970accb4ce29034e7b97b74c831ec0314c5a8f) ) // bp 5 - ROM_REGION( 0x200000, "tc0100scn", 0 ) + ROM_REGION( 0x200000, "tc0620scc", 0 ) ROM_LOAD16_BYTE( "ic44_scc1.bin", 0x000000, 0x080000, CRC(868d0d3d) SHA1(29251d545548856296b5ae32a96f2eeef2418dc4) ) ROM_LOAD16_BYTE( "ic43_scc4.bin", 0x000001, 0x080000, CRC(2f170ee4) SHA1(2b8f07186c9f7589e1af131b8c377443a29bd149) ) ROM_LOAD16_BYTE( "ic58_f357.bin", 0x100000, 0x080000, CRC(16486967) SHA1(c2fd6c9f21232656b52ab589ac61f94aa728524e) ) ROM_LOAD16_BYTE( "ic57_1a62.bin", 0x100001, 0x080000, CRC(afd45e35) SHA1(6d7c0729c7d2b204473679b97923130e289f429d) ) - ROM_REGION( 0x100000, "tc0100scn:hi_gfx", 0 ) + ROM_REGION( 0x100000, "tc0620scc:hi_gfx", 0 ) ROM_LOAD ( "ic45_5cc2.bin", 0x000000, 0x080000, CRC(7ae48d63) SHA1(2a8b291f0a683ed5b0c39d221737956b6fc72fa5) ) ROM_LOAD ( "ic59_7cce.bin", 0x080000, 0x080000, CRC(ee762199) SHA1(d56e96feeedba8b77f8f18cb380d2902ca3f1e50) ) @@ -967,48 +950,9 @@ ROM_START( cbombersp ) ROM_END -void undrfire_state::driver_init() -{ - /* make SCC tile GFX format suitable for gfxdecode */ - gfx_element *gx0 = m_gfxdecode->gfx(1); - gfx_element *gx1 = m_gfxdecode->gfx(2); - - // allocate memory for the assembled data - u8 *srcdata = auto_alloc_array(machine(), u8, gx0->elements() * gx0->width() * gx0->height()); - - // loop over elements - u8 *dest = srcdata; - for (int c = 0; c < gx0->elements(); c++) - { - const u8 *c0base = gx0->get_data(c); - const u8 *c1base = gx1->get_data(c); - - // loop over height - for (int y = 0; y < gx0->height(); y++) - { - const u8 *c0 = c0base; - const u8 *c1 = c1base; - - for (int x = 0; x < gx0->width(); x++) - { - u8 hipix = *c1++; - *dest++ = (*c0++ & 0xf) | ((hipix << 4) & 0x30); - } - c0base += gx0->rowbytes(); - c1base += gx1->rowbytes(); - } - } - - gx0->set_raw_layout(srcdata, gx0->width(), gx0->height(), gx0->elements(), 8 * gx0->width(), 8 * gx0->width() * gx0->height()); - gx0->set_granularity(64); - m_gfxdecode->set_gfx(2, nullptr); - m_tc0100scn->update_granularity(); -} - - -GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 ) -GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito America Corporation", "Under Fire (US)", 0 ) -GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, driver_init, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 ) -GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) -GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) -GAMEL(1994, cbombersp, cbombers, cbombers, cbombers, undrfire_state, driver_init, ROT0, "Taito Corporation", "Chase Bombers (Japan Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) +GAME( 1993, undrfire, 0, undrfire, undrfire, undrfire_state, empty_init, ROT0, "Taito Corporation Japan", "Under Fire (World)", 0 ) +GAME( 1993, undrfireu, undrfire, undrfire, undrfire, undrfire_state, empty_init, ROT0, "Taito America Corporation", "Under Fire (US)", 0 ) +GAME( 1993, undrfirej, undrfire, undrfire, undrfire, undrfire_state, empty_init, ROT0, "Taito Corporation", "Under Fire (Japan)", 0 ) +GAMEL(1994, cbombers, 0, cbombers, cbombers, undrfire_state, empty_init, ROT0, "Taito Corporation Japan", "Chase Bombers (World)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) +GAMEL(1994, cbombersj, cbombers, cbombers, cbombers, undrfire_state, empty_init, ROT0, "Taito Corporation", "Chase Bombers (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) +GAMEL(1994, cbombersp, cbombers, cbombers, cbombers, undrfire_state, empty_init, ROT0, "Taito Corporation", "Chase Bombers (Japan Prototype)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NODEVICE_LAN, layout_cbombers ) diff --git a/src/mame/drivers/warriorb.cpp b/src/mame/drivers/warriorb.cpp index 4187d6f0f57..31a24cdc428 100644 --- a/src/mame/drivers/warriorb.cpp +++ b/src/mame/drivers/warriorb.cpp @@ -376,14 +376,8 @@ INPUT_PORTS_END GFX DECODING ***********************************************************/ -static GFXDECODE_START( gfx_warriorb_1 ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_1", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 1) */ -GFXDECODE_END - -static GFXDECODE_START( gfx_warriorb_2 ) - GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn_2", 0, gfx_8x8x4_packed_msb, 0, 256 ) /* scr tiles (screen 2) */ +static GFXDECODE_START( gfx_warriorb ) + GFXDECODE_ENTRY( "sprites", 0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ GFXDECODE_END /*********************************************************** @@ -422,8 +416,8 @@ void warriorb_state::darius2d(machine_config &config) m_tc0220ioc->read_7_callback().set_ioport("IN2"); /* video hardware */ - GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb_1); - GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb_2); + GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb); + GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb); config.set_default_layout(layout_dualhsxs); @@ -436,9 +430,7 @@ void warriorb_state::darius2d(machine_config &config) lscreen.set_palette(m_tc0110pcr[0]); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(4, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]); TC0110PCR(config, m_tc0110pcr[0], 0); @@ -452,10 +444,8 @@ void warriorb_state::darius2d(machine_config &config) rscreen.set_palette(m_tc0110pcr[1]); TC0100SCN(config, m_tc0100scn[1], 0); - m_tc0100scn[1]->set_gfx_region(1); m_tc0100scn[1]->set_offsets(4, 0); m_tc0100scn[1]->set_multiscr_hack(1); - m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]); TC0110PCR(config, m_tc0110pcr[1], 0); @@ -502,8 +492,8 @@ void warriorb_state::warriorb(machine_config &config) m_tc0510nio->read_7_callback().set_ioport("IN2"); /* video hardware */ - GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb_1); - GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb_2); + GFXDECODE(config, m_gfxdecode[0], m_tc0110pcr[0], gfx_warriorb); + GFXDECODE(config, m_gfxdecode[1], m_tc0110pcr[1], gfx_warriorb); config.set_default_layout(layout_dualhsxs); @@ -516,9 +506,7 @@ void warriorb_state::warriorb(machine_config &config) lscreen.set_palette(m_tc0110pcr[0]); TC0100SCN(config, m_tc0100scn[0], 0); - m_tc0100scn[0]->set_gfx_region(1); m_tc0100scn[0]->set_offsets(4, 0); - m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode[0]); m_tc0100scn[0]->set_palette(m_tc0110pcr[0]); TC0110PCR(config, m_tc0110pcr[0], 0); @@ -532,11 +520,9 @@ void warriorb_state::warriorb(machine_config &config) rscreen.set_palette(m_tc0110pcr[1]); TC0100SCN(config, m_tc0100scn[1], 0); - m_tc0100scn[1]->set_gfx_region(1); m_tc0100scn[1]->set_offsets(4, 0); m_tc0100scn[1]->set_multiscr_xoffs(1); m_tc0100scn[1]->set_multiscr_hack(1); - m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode[1]); m_tc0100scn[1]->set_palette(m_tc0110pcr[1]); TC0110PCR(config, m_tc0110pcr[1], 0); diff --git a/src/mame/drivers/wgp.cpp b/src/mame/drivers/wgp.cpp index 943ea93b9b2..9bfe2c258c5 100644 --- a/src/mame/drivers/wgp.cpp +++ b/src/mame/drivers/wgp.cpp @@ -637,8 +637,7 @@ void wgp_state::cpu2_map(address_map &map) map(0x140000, 0x143fff).ram().share("sharedram"); map(0x200001, 0x200001).w(m_tc0140syt, FUNC(tc0140syt_device::master_port_w)); map(0x200003, 0x200003).rw(m_tc0140syt, FUNC(tc0140syt_device::master_comm_r), FUNC(tc0140syt_device::master_comm_w)); -// AM_RANGE(0x380000, 0x383fff) AM_READONLY // LAN RAM -// AM_RANGE(0x380000, 0x383fff) AM_WRITEONLY // LAN RAM +// map(0x380000, 0x383fff).ram(); // LAN RAM map(0x380000, 0x380001).r(FUNC(wgp_state::lan_status_r)); // ?? // a lan input area is read somewhere above the status // (make the status return 0 and log)... @@ -831,11 +830,9 @@ INPUT_PORTS_END GFX DECODING ***********************************************************/ -/* taitoic.c TC0100SCN routines expect scr stuff to be in second gfx slot */ static GFXDECODE_START( gfx_wgp ) - GFXDECODE_ENTRY( "sprites", 0x0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ - GFXDECODE_ENTRY( "tc0100scn", 0x0, gfx_8x8x4_packed_msb, 0, 256 ) /* playfield */ - GFXDECODE_ENTRY( "piv", 0x0, gfx_16x16x4_packed_lsb, 0, 256 ) /* piv */ + GFXDECODE_ENTRY( "sprites", 0x0, gfx_16x16x4_packed_lsb, 0, 256 ) /* sprites */ + GFXDECODE_ENTRY( "piv", 0x0, gfx_16x16x4_packed_lsb, 0, 256 ) /* piv */ GFXDECODE_END @@ -916,8 +913,6 @@ void wgp_state::wgp(machine_config &config) PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 4096); TC0100SCN(config, m_tc0100scn, 0); - m_tc0100scn->set_gfx_region(1); - m_tc0100scn->set_gfxdecode_tag(m_gfxdecode); m_tc0100scn->set_palette(m_palette); /* sound hardware */ diff --git a/src/mame/includes/groundfx.h b/src/mame/includes/groundfx.h index a27818aa1c8..3211364b61b 100644 --- a/src/mame/includes/groundfx.h +++ b/src/mame/includes/groundfx.h @@ -27,7 +27,7 @@ public: m_ram(*this, "ram"), m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), - m_tc0100scn(*this, "tc0100scn"), + m_tc0620scc(*this, "tc0620scc"), m_tc0480scp(*this, "tc0480scp"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), @@ -45,7 +45,7 @@ private: required_shared_ptr m_spriteram; required_device m_maincpu; - required_device m_tc0100scn; + required_device m_tc0620scc; required_device m_tc0480scp; required_device m_gfxdecode; required_device m_palette; diff --git a/src/mame/includes/undrfire.h b/src/mame/includes/undrfire.h index af0e5494806..081cef08770 100644 --- a/src/mame/includes/undrfire.h +++ b/src/mame/includes/undrfire.h @@ -17,7 +17,7 @@ public: driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), m_subcpu(*this, "sub"), - m_tc0100scn(*this, "tc0100scn"), + m_tc0620scc(*this, "tc0620scc"), m_tc0480scp(*this, "tc0480scp"), m_eeprom(*this, "eeprom"), m_ram(*this, "ram"), @@ -35,8 +35,6 @@ public: void undrfire(machine_config &config); void cbombers(machine_config &config); - void driver_init() override; - protected: enum { @@ -58,7 +56,7 @@ private: required_device m_maincpu; optional_device m_subcpu; - required_device m_tc0100scn; + required_device m_tc0620scc; required_device m_tc0480scp; required_device m_eeprom; optional_shared_ptr m_ram; diff --git a/src/mame/video/groundfx.cpp b/src/mame/video/groundfx.cpp index 59d70f2cd5b..b418d9d8df8 100644 --- a/src/mame/video/groundfx.cpp +++ b/src/mame/video/groundfx.cpp @@ -194,7 +194,7 @@ u32 groundfx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c u8 layer[5]; u8 scclayer[3]; - m_tc0100scn->tilemap_update(); + m_tc0620scc->tilemap_update(); m_tc0480scp->tilemap_update(); const u16 priority = m_tc0480scp->get_bg_priority(); @@ -205,15 +205,15 @@ u32 groundfx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[4] = 4; /* text layer always over bg layers */ - scclayer[0] = m_tc0100scn->bottomlayer(); + scclayer[0] = m_tc0620scc->bottomlayer(); scclayer[1] = scclayer[0]^1; scclayer[2] = 2; screen.priority().fill(0, cliprect); bitmap.fill(0, cliprect); /* wrong color? */ - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); /* BIG HACK! @@ -231,14 +231,14 @@ u32 groundfx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c it's contents the usual way. */ - if (m_tc0100scn->ram_r(0x4090 / 2) || m_tc0100scn->ram_r(0x4092 / 2) || + if (m_tc0620scc->ram_r(0x4090 / 2) || m_tc0620scc->ram_r(0x4092 / 2) || ((m_tc0480scp->ram_r(0x20 / 2) == 0x24) && (m_tc0480scp->ram_r(0x22 / 2) == 0x0866))) /* Anything in text layer - really stupid hack */ { m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[1], 0, 2); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8); - //m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, 0, scclayer[2], 0, 0); + //m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, 0, scclayer[2], 0, 0); if ((m_tc0480scp->ram_r(0x20 / 2) != 0x24) && (m_tc0480scp->ram_r(0x22 / 2) != 0x0866)) /* Stupid hack for start of race */ m_tc0480scp->tilemap_draw(screen, bitmap, m_hack_cliprect, layer[0], 0, 0); @@ -251,7 +251,7 @@ u32 groundfx_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[2], 0, 4); m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[3], 0, 8); - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); draw_sprites(screen, bitmap, cliprect, 0, 44, -574); } diff --git a/src/mame/video/taito_z.cpp b/src/mame/video/taito_z.cpp index bc68aa27369..f228c6c1017 100644 --- a/src/mame/video/taito_z.cpp +++ b/src/mame/video/taito_z.cpp @@ -351,7 +351,7 @@ void taitoz_state::chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind1 flipy = !flipy; } - m_gfxdecode->gfx(2)->prio_zoom_transpen(bitmap,cliprect, + m_gfxdecode->gfx(1)->prio_zoom_transpen(bitmap,cliprect, code, color, flipx,flipy, @@ -394,7 +394,7 @@ void taitoz_state::chasehq_draw_sprites_16x16(screen_device &screen, bitmap_ind1 flipy = !flipy; } - m_gfxdecode->gfx(2)->prio_zoom_transpen(bitmap,cliprect, + m_gfxdecode->gfx(1)->prio_zoom_transpen(bitmap,cliprect, code, color, flipx,flipy, diff --git a/src/mame/video/tc0100scn.cpp b/src/mame/video/tc0100scn.cpp index d40cef83a33..0238be3d35e 100644 --- a/src/mame/video/tc0100scn.cpp +++ b/src/mame/video/tc0100scn.cpp @@ -150,10 +150,12 @@ the wide tilemap mode) #define TC0100SCN_TOTAL_CHARS 256 DEFINE_DEVICE_TYPE(TC0100SCN, tc0100scn_device, "tc0100scn", "Taito TC0100SCN") +DEFINE_DEVICE_TYPE(TC0620SCC, tc0620scc_device, "tc0620scc", "Taito TC0620SCC") -tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) - : device_t(mconfig, TC0100SCN, tag, owner, clock) +tc0100scn_base_device::tc0100scn_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock) + : device_t(mconfig, type, tag, owner, clock) , device_gfx_interface(mconfig, *this) + , m_gfxlayout(TC0100SCN_LAYOUT_DEFAULT) , m_ram(nullptr) , m_bgscroll_ram(nullptr) , m_fgscroll_ram(nullptr) @@ -165,7 +167,6 @@ tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *ta , m_tx_colbank(0) , m_dblwidth(0) , m_dirty(false) - , m_gfxnum(0) , m_x_offset(0) , m_y_offset(0) , m_flip_xoffs(0) @@ -174,16 +175,56 @@ tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *ta , m_flip_text_yoffs(0) , m_multiscrn_xoffs(0) , m_multiscrn_hack(0) - , m_gfxdecode(*this, finder_base::DUMMY_TAG) + , m_col_base(0) { std::fill(std::begin(m_bg_colbank), std::end(m_bg_colbank), 0); } +tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : tc0100scn_base_device(mconfig, TC0100SCN, tag, owner, clock) +{ +} + +tc0620scc_device::tc0620scc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : tc0100scn_base_device(mconfig, TC0620SCC, tag, owner, clock) +{ +} + +/************************************* + * + * Graphics definitions + * + *************************************/ + +GFXDECODE_MEMBER(tc0100scn_device::gfxinfo_default) + GFXDECODE_DEVICE(DEVICE_SELF, 0, gfx_8x8x4_packed_msb, 0, 256) +GFXDECODE_END + +GFXDECODE_MEMBER(tc0100scn_device::gfxinfo_1bpp) + GFXDECODE_DEVICE(DEVICE_SELF, 0, gfx_8x8x1, 0, 256) +GFXDECODE_END + +static const gfx_layout layout_scc_6bpp_hi = +{ + 8,8, + RGN_FRAC(1,1), + 6, + { STEP2(0,1)/**/,0,0,0,0/**/ }, + { STEP8(0,2) }, + { STEP8(0,8*2) }, + 8*8*2 +}; + +GFXDECODE_MEMBER(tc0620scc_device::gfxinfo_6bpp) + GFXDECODE_DEVICE(DEVICE_SELF, 0, gfx_8x8x4_packed_msb, 0, 256) // low 4bpp of 6bpp tiles + GFXDECODE_DEVICE("hi_gfx", 0, layout_scc_6bpp_hi, 0, 256) // hi 2bpp of 6bpp tiles +GFXDECODE_END + //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- -void tc0100scn_device::device_start() +void tc0100scn_base_device::device_start() { // bind callbacks m_tc0100scn_cb.bind_relative_to(*owner()); @@ -199,9 +240,6 @@ void tc0100scn_device::device_start() 16*8 /* every sprite takes 16 consecutive bytes */ }; - if(!m_gfxdecode->started()) - throw device_missing_dependencies(); - int xd, yd; /* Set up clipping for multi-TC0100SCN games. We assume @@ -210,14 +248,14 @@ void tc0100scn_device::device_start() we're safe as it uses single width tilemaps. */ /* Single width versions */ - m_tilemap[0][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&tc0100scn_device::get_bg_tile_info<0x00000, 0>, "bg0_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&tc0100scn_device::get_bg_tile_info<0x04000, 1>, "bg1_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); - m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_device::get_tx_tile_info<0x02000, 0>, "txt_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[0][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>, "bg0_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[1][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>, "bg1_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); + m_tilemap[2][0] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_tx_tile_info<0x02000, 1>, "txt_std", this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64); /* Double width versions */ - m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&tc0100scn_device::get_bg_tile_info<0x00000, 0>, "bg0_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(&tc0100scn_device::get_bg_tile_info<0x04000, 1>, "bg1_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); - m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_device::get_tx_tile_info<0x09000, 1>, "txt_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); + m_tilemap[0][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x00000, 0>, "bg0_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[1][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_bg_tile_info<0x04000, 1>, "bg1_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64); + m_tilemap[2][1] = &machine().tilemap().create(*this, tilemap_get_info_delegate(&tc0100scn_base_device::get_tx_tile_info<0x09000, 2>, "txt_wide", this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32); m_tilemap[0][0]->set_transparent_pen(0); m_tilemap[1][0]->set_transparent_pen(0); @@ -266,12 +304,13 @@ void tc0100scn_device::device_start() set_layer_ptrs(); /* create the char set (gfx will then be updated dynamically from RAM) */ - set_gfx(0, std::make_unique(&palette(), charlayout, (u8 *)&m_ram[0x6000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0)); - set_gfx(1, std::make_unique(&palette(), charlayout, (u8 *)&m_ram[0x11000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0)); + gfx(0)->set_colorbase(m_col_base); + set_gfx(1, std::make_unique(&palette(), charlayout, (u8 *)&m_ram[0x6000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base)); + set_gfx(2, std::make_unique(&palette(), charlayout, (u8 *)&m_ram[0x11000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base)); - gfx_element *bg_gfx = m_gfxdecode->gfx(m_gfxnum); - gfx_element *txt0 = gfx(0); - gfx_element *txt1 = gfx(1); + gfx_element *bg_gfx = gfx(0); + gfx_element *txt0 = gfx(1); + gfx_element *txt1 = gfx(2); if (bg_gfx->granularity() == 2) /* Yuyugogo, Yesnoj */ bg_gfx->set_granularity(16); @@ -287,11 +326,62 @@ void tc0100scn_device::device_start() save_item(NAME(m_dblwidth)); } +void tc0100scn_device::device_start() +{ + switch (m_gfxlayout) + { + case TC0100SCN_LAYOUT_DEFAULT: + default: + decode_gfx(gfxinfo_default); + break; + case TC0100SCN_LAYOUT_1BPP: + decode_gfx(gfxinfo_1bpp); + break; + } + tc0100scn_base_device::device_start(); +} + +void tc0620scc_device::device_start() +{ + decode_gfx(gfxinfo_6bpp); + /* make SCC tile GFX format suitable for gfxdecode */ + gfx_element *gx0 = gfx(0); + gfx_element *gx1 = gfx(1); + + // allocate memory for the assembled data + u8 *srcdata = auto_alloc_array(machine(), u8, gx0->elements() * gx0->width() * gx0->height()); + + // loop over elements + u8 *dest = srcdata; + for (int c = 0; c < gx0->elements(); c++) + { + const u8 *c0base = gx0->get_data(c); + const u8 *c1base = gx1->get_data(c); + + // loop over height + for (int y = 0; y < gx0->height(); y++) + { + const u8 *c0 = c0base; + const u8 *c1 = c1base; + + for (int x = 0; x < gx0->width(); x++) + *dest++ = (*c0++ & 0xf) | (*c1++ & 0x30); + + c0base += gx0->rowbytes(); + c1base += gx1->rowbytes(); + } + } + + gx0->set_raw_layout(srcdata, gx0->width(), gx0->height(), gx0->elements(), 8 * gx0->width(), 8 * gx0->width() * gx0->height()); + gx0->set_granularity(64); + tc0100scn_base_device::device_start(); +} + //------------------------------------------------- // device_reset - device-specific reset //------------------------------------------------- -void tc0100scn_device::device_reset() +void tc0100scn_base_device::device_reset() { m_dblwidth = 0; @@ -305,7 +395,7 @@ void tc0100scn_device::device_reset() *****************************************************************************/ template -TILE_GET_INFO_MEMBER(tc0100scn_device::get_bg_tile_info) +TILE_GET_INFO_MEMBER(tc0100scn_base_device::get_bg_tile_info) { u32 code = m_ram[(2 * tile_index) + 1 + Offset]; const u16 attr = m_ram[(2 * tile_index) + Offset]; @@ -315,14 +405,14 @@ TILE_GET_INFO_MEMBER(tc0100scn_device::get_bg_tile_info) if (!m_tc0100scn_cb.isnull()) m_tc0100scn_cb(&code, &color); - SET_TILE_INFO_MEMBER(m_gfxnum, + SET_TILE_INFO_MEMBER(0, code, ((color + m_bg_colbank[Colbank]) & 0xff), TILE_FLIPYX((attr & 0xc000) >> 14)); } template -TILE_GET_INFO_MEMBER(tc0100scn_device::get_tx_tile_info) +TILE_GET_INFO_MEMBER(tc0100scn_base_device::get_tx_tile_info) { int attr = m_ram[Offset + tile_index]; @@ -332,20 +422,20 @@ TILE_GET_INFO_MEMBER(tc0100scn_device::get_tx_tile_info) TILE_FLIPYX((attr & 0xc000) >> 14)); } -void tc0100scn_device::set_colbanks( int bg0, int bg1, int tx ) +void tc0100scn_base_device::set_colbanks( int bg0, int bg1, int tx ) { m_bg_colbank[0] = bg0; m_bg_colbank[1] = bg1; m_tx_colbank = tx; } -void tc0100scn_device::tilemap_set_dirty() +void tc0100scn_base_device::tilemap_set_dirty() { if (!m_dirty) m_dirty = true; } -void tc0100scn_device::set_layer_ptrs() +void tc0100scn_base_device::set_layer_ptrs() { if (!m_dblwidth) { @@ -361,7 +451,7 @@ void tc0100scn_device::set_layer_ptrs() } } -void tc0100scn_device::restore_scroll() +void tc0100scn_base_device::restore_scroll() { int flip; @@ -388,7 +478,7 @@ void tc0100scn_device::restore_scroll() // device_post_load - device-specific postload //------------------------------------------------- -void tc0100scn_device::device_post_load() +void tc0100scn_base_device::device_post_load() { set_layer_ptrs(); restore_scroll(); @@ -401,12 +491,12 @@ void tc0100scn_device::device_post_load() m_tilemap[2][1]->mark_all_dirty(); } -u16 tc0100scn_device::ram_r(offs_t offset) +u16 tc0100scn_base_device::ram_r(offs_t offset) { return m_ram[offset]; } -void tc0100scn_device::ram_w(offs_t offset, u16 data, u16 mem_mask) +void tc0100scn_base_device::ram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_ram[offset]); /* Double-width tilemaps have a different memory map */ @@ -422,7 +512,7 @@ void tc0100scn_device::ram_w(offs_t offset, u16 data, u16 mem_mask) } else if (offset < 0x3800) { - gfx(0)->mark_dirty((offset - 0x3000) / 8); + gfx(1)->mark_dirty((offset - 0x3000) / 8); m_tilemap[0][1]->mark_tile_dirty(offset / 2); } else if (offset < 0x4000) @@ -435,18 +525,18 @@ void tc0100scn_device::ram_w(offs_t offset, u16 data, u16 mem_mask) else if (offset < 0x8000) m_tilemap[1][1]->mark_tile_dirty((offset & 0x3fff) / 2); else if (offset >= 0x8800 && offset < 0x9000) - gfx(1)->mark_dirty((offset - 0x8800) / 8); + gfx(2)->mark_dirty((offset - 0x8800) / 8); else if (offset >= 0x9000) m_tilemap[2][1]->mark_tile_dirty((offset & 0x0fff)); } -u16 tc0100scn_device::ctrl_r(offs_t offset) +u16 tc0100scn_base_device::ctrl_r(offs_t offset) { return m_ctrl[offset]; } -void tc0100scn_device::ctrl_w(offs_t offset, u16 data, u16 mem_mask) +void tc0100scn_base_device::ctrl_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_ctrl[offset]); @@ -511,7 +601,7 @@ void tc0100scn_device::ctrl_w(offs_t offset, u16 data, u16 mem_mask) } -void tc0100scn_device::tilemap_update() +void tc0100scn_base_device::tilemap_update() { if (m_dirty) { @@ -536,7 +626,7 @@ void tc0100scn_device::tilemap_update() m_tilemap[1][m_dblwidth]->set_scrollx((j + m_fgscrolly) & 0x1ff, m_fgscrollx - m_fgscroll_ram[j]); } -void tc0100scn_device::tilemap_draw_fg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, u8 priority, u8 pmask ) +void tc0100scn_base_device::tilemap_draw_fg( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, u8 priority, u8 pmask ) { const bitmap_ind16 &src_bitmap = tmap->pixmap(); int width_mask, height_mask, x, y, p; @@ -582,7 +672,7 @@ void tc0100scn_device::tilemap_draw_fg( screen_device &screen, bitmap_ind16 &bit } } -int tc0100scn_device::tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, u8 priority, u8 pmask ) +int tc0100scn_base_device::tilemap_draw( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, u8 priority, u8 pmask ) { int disable = m_ctrl[6] & 0xf7; rectangle clip = cliprect; @@ -614,7 +704,7 @@ if (disable != 0 && disable != 3 && disable != 7) return 0; } -int tc0100scn_device::bottomlayer() +int tc0100scn_base_device::bottomlayer() { return (m_ctrl[6] & 0x8) >> 3; } diff --git a/src/mame/video/tc0100scn.h b/src/mame/video/tc0100scn.h index 3a8c2f521e1..3e68339a606 100644 --- a/src/mame/video/tc0100scn.h +++ b/src/mame/video/tc0100scn.h @@ -7,18 +7,25 @@ #include "emupal.h" +enum { + TC0100SCN_LAYOUT_DEFAULT = 0, + TC0100SCN_LAYOUT_1BPP +}; + +enum { + TC0620SCC_LAYOUT_DEFAULT = 0 // default TC0620SCC layout is 6bpp +}; + typedef device_delegate tc0100scn_cb_delegate; #define TC0100SCN_CB_MEMBER(_name) void _name(u32 *code, u16 *color) -class tc0100scn_device : public device_t, public device_gfx_interface +class tc0100scn_base_device : public device_t, public device_gfx_interface { public: - tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); - // configuration - template void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward(tag)); } + void set_gfxlayout(int layout) { m_gfxlayout = layout; } + void set_color_base(u16 base) { m_col_base = base; } template void set_tile_callback(T &&... args) { m_tc0100scn_cb = tc0100scn_cb_delegate(std::forward(args)...); } - void set_gfx_region(int gfxregion) { m_gfxnum = gfxregion; } void set_multiscr_xoffs(int xoffs) { m_multiscrn_xoffs = xoffs; } void set_multiscr_hack(int hack) { m_multiscrn_hack = hack; } void set_offsets(int x_offset, int y_offset) @@ -36,11 +43,6 @@ public: m_flip_text_xoffs = x_offset; m_flip_text_yoffs = y_offset; } - void update_granularity() - { - if (gfx(0)) gfx(0)->set_granularity(m_gfxdecode->gfx(m_gfxnum)->granularity()); - if (gfx(1)) gfx(1)->set_granularity(m_gfxdecode->gfx(m_gfxnum)->granularity()); - } static constexpr unsigned SINGLE_VDU = 1024; // for set_multiscr_xoffs @@ -62,11 +64,14 @@ public: int bottomlayer(); protected: + tc0100scn_base_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock); + // device-level overrides virtual void device_start() override; virtual void device_reset() override; virtual void device_post_load() override; + int m_gfxlayout; private: // internal state tc0100scn_cb_delegate m_tc0100scn_cb; @@ -87,14 +92,13 @@ private: int m_dblwidth; bool m_dirty; - int m_gfxnum; int m_x_offset, m_y_offset; int m_flip_xoffs, m_flip_yoffs; int m_flip_text_xoffs, m_flip_text_yoffs; int m_multiscrn_xoffs; int m_multiscrn_hack; - required_device m_gfxdecode; + u16 m_col_base; template TILE_GET_INFO_MEMBER(get_bg_tile_info); template TILE_GET_INFO_MEMBER(get_tx_tile_info); @@ -104,6 +108,36 @@ private: void restore_scroll(); }; +class tc0100scn_device : public tc0100scn_base_device +{ +public: + tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + +protected: + // device-level overrides + virtual void device_start() override; + +private: + // decoding info + DECLARE_GFXDECODE_MEMBER(gfxinfo_default); + DECLARE_GFXDECODE_MEMBER(gfxinfo_1bpp); +}; + +class tc0620scc_device : public tc0100scn_base_device +{ +public: + tc0620scc_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock); + +protected: + // device-level overrides + virtual void device_start() override; + +private: + // decoding info + DECLARE_GFXDECODE_MEMBER(gfxinfo_6bpp); +}; + DECLARE_DEVICE_TYPE(TC0100SCN, tc0100scn_device) +DECLARE_DEVICE_TYPE(TC0620SCC, tc0620scc_device) #endif // MAME_VIDEO_TC0100SCN_H diff --git a/src/mame/video/undrfire.cpp b/src/mame/video/undrfire.cpp index e33886662df..d0f07471fd7 100644 --- a/src/mame/video/undrfire.cpp +++ b/src/mame/video/undrfire.cpp @@ -328,7 +328,6 @@ u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 & { u8 layer[5]; u8 scclayer[3]; - u16 priority; #ifdef MAME_DEBUG if (machine().input().code_pressed_once (KEYCODE_X)) @@ -367,10 +366,10 @@ u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 & } #endif - m_tc0100scn->tilemap_update(); + m_tc0620scc->tilemap_update(); m_tc0480scp->tilemap_update(); - priority = m_tc0480scp->get_bg_priority(); + const u16 priority = m_tc0480scp->get_bg_priority(); layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */ layer[1] = (priority & 0x0f00) >> 8; @@ -378,7 +377,7 @@ u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 & layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[4] = 4; /* text layer always over bg layers */ - scclayer[0] = m_tc0100scn->bottomlayer(); + scclayer[0] = m_tc0620scc->bottomlayer(); scclayer[1] = scclayer[0] ^ 1; scclayer[2] = 2; @@ -392,8 +391,8 @@ u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 & pointless - it's always hidden by other layers. Does it serve some blending pupose ? */ - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); #ifdef MAME_DEBUG if (m_dislayer[layer[0]]==0) @@ -435,7 +434,7 @@ u32 undrfire_state::screen_update_undrfire(screen_device &screen, bitmap_ind16 & #ifdef MAME_DEBUG if (m_dislayer[5]==0) #endif - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */ + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */ m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */ @@ -468,7 +467,6 @@ u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 & { u8 layer[5]; u8 scclayer[3]; - u16 priority; #ifdef MAME_DEBUG if (machine().input().code_pressed_once (KEYCODE_X)) @@ -507,10 +505,10 @@ u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 & } #endif - m_tc0100scn->tilemap_update(); + m_tc0620scc->tilemap_update(); m_tc0480scp->tilemap_update(); - priority = m_tc0480scp->get_bg_priority(); + const u16 priority = m_tc0480scp->get_bg_priority(); layer[0] = (priority & 0xf000) >> 12; /* tells us which bg layer is bottom */ layer[1] = (priority & 0x0f00) >> 8; @@ -518,7 +516,7 @@ u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 & layer[3] = (priority & 0x000f) >> 0; /* tells us which is top */ layer[4] = 4; /* text layer always over bg layers */ - scclayer[0] = m_tc0100scn->bottomlayer(); + scclayer[0] = m_tc0620scc->bottomlayer(); scclayer[1] = scclayer[0] ^ 1; scclayer[2] = 2; @@ -533,8 +531,8 @@ u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 & serve some blending pupose ? */ // TODO : Wrong; TC0360PRI isn't hooked up - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[0], TILEMAP_DRAW_OPAQUE, 0); + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[1], 0, 0); #ifdef MAME_DEBUG if (m_dislayer[layer[0]]==0) @@ -576,7 +574,7 @@ u32 undrfire_state::screen_update_cbombers(screen_device &screen, bitmap_ind16 & #ifdef MAME_DEBUG if (m_dislayer[5]==0) #endif - m_tc0100scn->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */ + m_tc0620scc->tilemap_draw(screen, bitmap, cliprect, scclayer[2], 0, 0); /* TC0620SCC text layer */ m_tc0480scp->tilemap_draw(screen, bitmap, cliprect, layer[4], 0, 0); /* TC0480SCP text layer */ diff --git a/src/mame/video/wgp.cpp b/src/mame/video/wgp.cpp index 10fcf1e2b3f..8db3cb04cef 100644 --- a/src/mame/video/wgp.cpp +++ b/src/mame/video/wgp.cpp @@ -14,7 +14,7 @@ TILE_GET_INFO_MEMBER(wgp_state::get_piv_tile_info) const u16 tilenum = m_pivram[tile_index + Offset]; /* 3 blocks of $2000 */ const u16 attr = m_pivram[tile_index + Offset + 0x8000]; /* 3 blocks of $2000 */ - SET_TILE_INFO_MEMBER(2, + SET_TILE_INFO_MEMBER(1, tilenum & 0x3fff, (attr & 0x3f), /* attr & 0x1 ?? */ TILE_FLIPYX((attr & 0xc0) >> 6)); -- cgit v1.2.3