mirror of
https://github.com/mamedev/mame.git
synced 2024-11-18 10:06:19 +01:00
Merge pull request #5207 from cam900/tc0100scn_gfx
tc0100scn.cpp : Updates
This commit is contained in:
commit
61e5786702
18 changed files with 272 additions and 441 deletions
|
@ -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);
|
||||
|
|
|
@ -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) )
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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 )
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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<u32> m_spriteram;
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<tc0100scn_device> m_tc0100scn;
|
||||
required_device<tc0620scc_device> m_tc0620scc;
|
||||
required_device<tc0480scp_device> m_tc0480scp;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
|
|
@ -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<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_subcpu;
|
||||
required_device<tc0100scn_device> m_tc0100scn;
|
||||
required_device<tc0620scc_device> m_tc0620scc;
|
||||
required_device<tc0480scp_device> m_tc0480scp;
|
||||
required_device<eeprom_serial_93cxx_device> m_eeprom;
|
||||
optional_shared_ptr<u32> m_ram;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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<gfx_element>(&palette(), charlayout, (u8 *)&m_ram[0x6000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0));
|
||||
set_gfx(1, std::make_unique<gfx_element>(&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<gfx_element>(&palette(), charlayout, (u8 *)&m_ram[0x6000 / 2], NATIVE_ENDIAN_VALUE_LE_BE(8,0), 64, m_col_base));
|
||||
set_gfx(2, std::make_unique<gfx_element>(&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<unsigned Offset, unsigned Colbank>
|
||||
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<unsigned Offset, unsigned Gfx>
|
||||
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;
|
||||
}
|
||||
|
|
|
@ -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<void (u32 *code, u16 *color)> 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 <typename T> void set_gfxdecode_tag(T &&tag) { m_gfxdecode.set_tag(std::forward<T>(tag)); }
|
||||
void set_gfxlayout(int layout) { m_gfxlayout = layout; }
|
||||
void set_color_base(u16 base) { m_col_base = base; }
|
||||
template <typename... T> void set_tile_callback(T &&... args) { m_tc0100scn_cb = tc0100scn_cb_delegate(std::forward<T>(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<gfxdecode_device> m_gfxdecode;
|
||||
u16 m_col_base;
|
||||
|
||||
template<unsigned Offset, unsigned Colbank> TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
template<unsigned Offset, unsigned Gfx> 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
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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));
|
||||
|
|
Loading…
Reference in a new issue