Merge pull request #4863 from cam900/tc0100scn_intgfx

tc0100scn.cpp : Updates
This commit is contained in:
R. Belmont 2019-04-06 12:22:23 -04:00 committed by GitHub
commit 39dd5bd55c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 145 additions and 237 deletions

View File

@ -889,9 +889,8 @@ void asuka_state::bonzeadv(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");
@ -950,9 +949,8 @@ void asuka_state::asuka(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");
@ -1023,10 +1021,9 @@ void asuka_state::cadash(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");
@ -1084,10 +1081,9 @@ void asuka_state::mofflott(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");
@ -1153,10 +1149,9 @@ void asuka_state::eto(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag("gfxdecode");
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");

View File

@ -225,10 +225,9 @@ void galastrm_state::galastrm(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(0);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(-48, -56);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0480SCP(config, m_tc0480scp, 0);
m_tc0480scp->set_gfx_region(1);

View File

@ -275,10 +275,9 @@ void groundfx_state::groundfx(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(2);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(50, 8);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0480SCP(config, m_tc0480scp, 0);
m_tc0480scp->set_gfx_region(1);

View File

@ -776,34 +776,31 @@ void ninjaw_state::ninjaw(machine_config &config)
TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_tx_region(3);
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);
m_tc0100scn[0]->set_palette_tag(m_palette);
m_tc0100scn[0]->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette);
TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2);
m_tc0100scn[1]->set_tx_region(3);
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);
m_tc0100scn[1]->set_palette_tag("palette2");
m_tc0100scn[1]->set_palette("palette2");
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2");
TC0100SCN(config, m_tc0100scn[2], 0);
m_tc0100scn[2]->set_gfx_region(2);
m_tc0100scn[2]->set_tx_region(3);
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);
m_tc0100scn[2]->set_palette_tag("palette3");
m_tc0100scn[2]->set_palette("palette3");
TC0110PCR(config, m_tc0110pcr[2], 0, "palette3");
@ -892,34 +889,31 @@ void ninjaw_state::darius2(machine_config &config)
TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_tx_region(3);
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);
m_tc0100scn[0]->set_palette_tag(m_palette);
m_tc0100scn[0]->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette);
TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2);
m_tc0100scn[1]->set_tx_region(3);
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);
m_tc0100scn[1]->set_palette_tag("palette2");
m_tc0100scn[1]->set_palette("palette2");
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2");
TC0100SCN(config, m_tc0100scn[2], 0);
m_tc0100scn[2]->set_gfx_region(2);
m_tc0100scn[2]->set_tx_region(3);
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);
m_tc0100scn[2]->set_palette_tag("palette3");
m_tc0100scn[2]->set_palette("palette3");
TC0110PCR(config, m_tc0110pcr[2], 0, "palette3");

View File

@ -631,10 +631,9 @@ void othunder_state::othunder(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(4, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);

View File

@ -2953,10 +2953,9 @@ void taitof2_state::finalb(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
}
@ -2976,10 +2975,9 @@ void taitof2_state::dondokod(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0280GRD(config, m_tc0280grd, 0);
m_tc0280grd->set_gfx_region(2);
@ -3007,10 +3005,9 @@ void taitof2_state::megab(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3030,23 +3027,21 @@ void taitof2_state::thundfox(machine_config &config)
TC0100SCN(config, m_tc0100scn_1, 0);
m_tc0100scn_1->set_gfx_region(1);
m_tc0100scn_1->set_tx_region(3);
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_gfxdecode_tag(m_gfxdecode);
m_tc0100scn_1->set_palette_tag(m_palette);
m_tc0100scn_1->set_palette(m_palette);
TC0100SCN(config, m_tc0100scn_2, 0);
m_tc0100scn_2->set_gfx_region(2);
m_tc0100scn_2->set_tx_region(4);
m_tc0100scn_2->set_offsets(3, 0);
m_tc0100scn_2->set_offsets_flip(5, 0);
m_tc0100scn_2->set_offsets_fliptx(4, 1);
m_tc0100scn_2->set_multiscr_xoffs(tc0100scn_device::SINGLE_VDU);
m_tc0100scn_2->set_multiscr_hack(1);
m_tc0100scn_2->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn_2->set_palette_tag(m_palette);
m_tc0100scn_2->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3065,10 +3060,9 @@ void taitof2_state::cameltry(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0280GRD(config, m_tc0280grd, 0);
m_tc0280grd->set_gfx_region(2);
@ -3090,9 +3084,8 @@ void taitof2_state::qtorimon(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
}
@ -3111,10 +3104,9 @@ void taitof2_state::liquidk(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3132,9 +3124,8 @@ void taitof2_state::quizhq(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
}
@ -3155,10 +3146,9 @@ void taitof2_state::ssi(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
}
void taitof2_state::gunfront(machine_config &config)
@ -3177,10 +3167,9 @@ void taitof2_state::gunfront(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3200,10 +3189,9 @@ void taitof2_state::growl(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3220,9 +3208,8 @@ void taitof2_state::mjnquest(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
m_tc0100scn->set_tile_callback(FUNC(taitof2_state::mjnquest_tmap_cb), this);
TC0110PCR(config, m_tc0110pcr, 0, m_palette);
@ -3299,11 +3286,10 @@ void taitof2_state::koshien(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_offsets_flip(2, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3324,10 +3310,9 @@ void taitof2_state::yuyugogo(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
}
void taitof2_state::ninjak(machine_config &config)
@ -3353,10 +3338,9 @@ void taitof2_state::ninjak(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(1, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3374,12 +3358,11 @@ void taitof2_state::solfigtr(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_offsets_flip(6, 0);
m_tc0100scn->set_offsets_fliptx(6, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3396,9 +3379,8 @@ void taitof2_state::qzquest(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
}
void taitof2_state::pulirula(machine_config &config)
@ -3415,10 +3397,9 @@ void taitof2_state::pulirula(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0430GRW(config, m_tc0430grw, 0);
m_tc0430grw->set_gfx_region(2);
@ -3466,12 +3447,11 @@ void taitof2_state::qzchikyu(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(0, 0);
m_tc0100scn->set_offsets_flip(-4, 0);
m_tc0100scn->set_offsets_fliptx(-11, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
}
void taitof2_state::yesnoj(machine_config &config)
@ -3490,10 +3470,9 @@ void taitof2_state::yesnoj(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC8521(config, "rtc", XTAL(32'768));
}
@ -3561,10 +3540,9 @@ void taitof2_state::dinorex(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3584,10 +3562,9 @@ void taitof2_state::qjinsei(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3607,10 +3584,9 @@ void taitof2_state::qcrayon(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3630,10 +3606,9 @@ void taitof2_state::qcrayon2(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0360PRI(config, m_tc0360pri, 0);
}
@ -3653,10 +3628,9 @@ void taitof2_state::driftout(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0430GRW(config, m_tc0430grw, 0);
m_tc0430grw->set_gfx_region(2);
@ -3702,10 +3676,9 @@ void taitof2_state::cameltrya(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0280GRD(config, m_tc0280grd, 0);
m_tc0280grd->set_gfx_region(2);
@ -3769,10 +3742,9 @@ void taitof2_state::driveout(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(3, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0430GRW(config, m_tc0430grw, 0);
m_tc0430grw->set_gfx_region(2);

View File

@ -3203,9 +3203,8 @@ void taitoz_state::contcirc(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3275,9 +3274,8 @@ void taitoz_state::chasehq(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3349,9 +3347,8 @@ void taitoz_state::enforce(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3420,9 +3417,8 @@ void taitoz_state::bshark_base(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3507,9 +3503,8 @@ void taitoz_state::sci(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3586,9 +3581,8 @@ void taitoz_state::nightstr(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3660,9 +3654,8 @@ void taitoz_state::aquajack(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0150ROD(config, m_tc0150rod, 0);
@ -3737,10 +3730,9 @@ void taitoz_state::spacegun(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(2);
m_tc0100scn->set_offsets(4, 0);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag("palette");
m_tc0100scn->set_palette("palette");
TC0110PCR(config, m_tc0110pcr, 0, "palette");

View File

@ -601,10 +601,9 @@ void undrfire_state::undrfire(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(2);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(50, 8);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0480SCP(config, m_tc0480scp, 0);
m_tc0480scp->set_gfx_region(1);
@ -663,10 +662,9 @@ void undrfire_state::cbombers(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(2);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_offsets(50, 8);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
TC0480SCP(config, m_tc0480scp, 0);
m_tc0480scp->set_gfx_region(1);

View File

@ -456,10 +456,9 @@ void warriorb_state::darius2d(machine_config &config)
TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_tx_region(3);
m_tc0100scn[0]->set_offsets(4, 0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn[0]->set_palette_tag(m_palette);
m_tc0100scn[0]->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette);
@ -473,11 +472,10 @@ void warriorb_state::darius2d(machine_config &config)
TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2);
m_tc0100scn[1]->set_tx_region(3);
m_tc0100scn[1]->set_offsets(4, 0);
m_tc0100scn[1]->set_multiscr_hack(1);
m_tc0100scn[1]->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn[1]->set_palette_tag("palette2");
m_tc0100scn[1]->set_palette("palette2");
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2");
@ -539,10 +537,9 @@ void warriorb_state::warriorb(machine_config &config)
TC0100SCN(config, m_tc0100scn[0], 0);
m_tc0100scn[0]->set_gfx_region(1);
m_tc0100scn[0]->set_tx_region(3);
m_tc0100scn[0]->set_offsets(4, 0);
m_tc0100scn[0]->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn[0]->set_palette_tag(m_palette);
m_tc0100scn[0]->set_palette(m_palette);
TC0110PCR(config, m_tc0110pcr[0], 0, m_palette);
@ -556,12 +553,11 @@ void warriorb_state::warriorb(machine_config &config)
TC0100SCN(config, m_tc0100scn[1], 0);
m_tc0100scn[1]->set_gfx_region(2);
m_tc0100scn[1]->set_tx_region(3);
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);
m_tc0100scn[1]->set_palette_tag("palette2");
m_tc0100scn[1]->set_palette("palette2");
TC0110PCR(config, m_tc0110pcr[1], 0, "palette2");

View File

@ -950,9 +950,8 @@ void wgp_state::wgp(machine_config &config)
TC0100SCN(config, m_tc0100scn, 0);
m_tc0100scn->set_gfx_region(1);
m_tc0100scn->set_tx_region(3);
m_tc0100scn->set_gfxdecode_tag(m_gfxdecode);
m_tc0100scn->set_palette_tag(m_palette);
m_tc0100scn->set_palette(m_palette);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();

View File

@ -144,43 +144,39 @@ the wide tilemap mode)
#include "tc0100scn.h"
#include "screen.h"
#include <algorithm>
#define TC0100SCN_RAM_SIZE 0x14000 /* enough for double-width tilemaps */
#define TC0100SCN_TOTAL_CHARS 256
DEFINE_DEVICE_TYPE(TC0100SCN, tc0100scn_device, "tc0100scn", "Taito TC0100SCN")
tc0100scn_device::tc0100scn_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
: device_t(mconfig, TC0100SCN, tag, owner, clock),
m_ram(nullptr),
m_bg_ram(nullptr),
m_fg_ram(nullptr),
m_tx_ram(nullptr),
m_char_ram(nullptr),
m_bgscroll_ram(nullptr),
m_fgscroll_ram(nullptr),
m_colscroll_ram(nullptr),
m_bgscrollx(0),
m_bgscrolly(0),
m_fgscrollx(0),
m_fgscrolly(0),
m_bg0_colbank(0),
m_bg1_colbank(0),
m_tx_colbank(0),
m_dblwidth(0),
m_dirty(false),
m_gfxnum(0),
m_txnum(0),
m_x_offset(0),
m_y_offset(0),
m_flip_xoffs(0),
m_flip_yoffs(0),
m_flip_text_xoffs(0),
m_flip_text_yoffs(0),
m_multiscrn_xoffs(0),
m_multiscrn_hack(0),
m_gfxdecode(*this, finder_base::DUMMY_TAG),
m_palette(*this, finder_base::DUMMY_TAG)
: device_t(mconfig, TC0100SCN, tag, owner, clock)
, device_gfx_interface(mconfig, *this)
, m_ram(nullptr)
, m_bgscroll_ram(nullptr)
, m_fgscroll_ram(nullptr)
, m_colscroll_ram(nullptr)
, m_bgscrollx(0)
, m_bgscrolly(0)
, m_fgscrollx(0)
, m_fgscrolly(0)
, 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)
, m_flip_yoffs(0)
, m_flip_text_xoffs(0)
, m_flip_text_yoffs(0)
, m_multiscrn_xoffs(0)
, m_multiscrn_hack(0)
, m_gfxdecode(*this, finder_base::DUMMY_TAG)
{
std::fill(std::begin(m_bg_colbank), std::end(m_bg_colbank), 0);
}
//-------------------------------------------------
@ -192,7 +188,7 @@ void tc0100scn_device::device_start()
// bind callbacks
m_tc0100scn_cb.bind_relative_to(*owner());
static const gfx_layout tc0100scn_charlayout =
static const gfx_layout charlayout =
{
8,8, /* 8*8 characters */
256, /* 256 characters */
@ -214,14 +210,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(FUNC(tc0100scn_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemap[1][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0100scn_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
m_tilemap[2][0] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0100scn_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 64);
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);
/* Double width versions */
m_tilemap[0][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0100scn_device::get_bg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
m_tilemap[1][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0100scn_device::get_fg_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 64);
m_tilemap[2][1] = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(FUNC(tc0100scn_device::get_tx_tile_info),this), TILEMAP_SCAN_ROWS, 8, 8, 128, 32);
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][0]->set_transparent_pen(0);
m_tilemap[1][0]->set_transparent_pen(0);
@ -270,15 +266,18 @@ void tc0100scn_device::device_start()
set_layer_ptrs();
/* create the char set (gfx will then be updated dynamically from RAM) */
m_gfxdecode->set_gfx(m_txnum, std::make_unique<gfx_element>(m_palette, tc0100scn_charlayout, (u8 *)m_char_ram, NATIVE_ENDIAN_VALUE_LE_BE(8,0), 256, 0));
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_element *gfx = m_gfxdecode->gfx(m_gfxnum);
gfx_element *txt = m_gfxdecode->gfx(m_txnum);
gfx_element *bg_gfx = m_gfxdecode->gfx(m_gfxnum);
gfx_element *txt0 = gfx(0);
gfx_element *txt1 = gfx(1);
if (gfx->granularity() == 2) /* Yuyugogo, Yesnoj */
gfx->set_granularity(16);
if (bg_gfx->granularity() == 2) /* Yuyugogo, Yesnoj */
bg_gfx->set_granularity(16);
txt->set_granularity(gfx->granularity());
txt0->set_granularity(bg_gfx->granularity());
txt1->set_granularity(bg_gfx->granularity());
set_colbanks(0, 0, 0); /* standard values, only Wgp & multiscreen games change them */
/* we call this here, so that they can be modified at video_start*/
@ -305,10 +304,11 @@ void tc0100scn_device::device_reset()
DEVICE HANDLERS
*****************************************************************************/
void tc0100scn_device::common_get_tile_info( tile_data &tileinfo, int tile_index, u16 *ram, int colbank )
template<unsigned Offset, unsigned Colbank>
TILE_GET_INFO_MEMBER(tc0100scn_device::get_bg_tile_info)
{
u32 code = ram[2 * tile_index + 1];
const u16 attr = ram[2 * tile_index];
u32 code = m_ram[(2 * tile_index) + 1 + Offset];
const u16 attr = m_ram[(2 * tile_index) + Offset];
u16 color = attr & 0xff;
/* Mahjong Quest (F2 system) inexplicably has a banking feature */
@ -317,25 +317,16 @@ void tc0100scn_device::common_get_tile_info( tile_data &tileinfo, int tile_index
SET_TILE_INFO_MEMBER(m_gfxnum,
code,
((attr + colbank) & 0xff),
((color + m_bg_colbank[Colbank]) & 0xff),
TILE_FLIPYX((attr & 0xc000) >> 14));
}
TILE_GET_INFO_MEMBER(tc0100scn_device::get_bg_tile_info)
{
common_get_tile_info(tileinfo, tile_index, m_bg_ram, m_bg0_colbank);
}
TILE_GET_INFO_MEMBER(tc0100scn_device::get_fg_tile_info)
{
common_get_tile_info(tileinfo, tile_index, m_fg_ram, m_bg1_colbank);
}
template<unsigned Offset, unsigned Gfx>
TILE_GET_INFO_MEMBER(tc0100scn_device::get_tx_tile_info)
{
int attr = m_tx_ram[tile_index];
int attr = m_ram[Offset + tile_index];
SET_TILE_INFO_MEMBER(m_txnum,
SET_TILE_INFO_MEMBER(Gfx,
attr & 0x00ff,
((attr & 0x3f00) >> 8) + m_tx_colbank,
TILE_FLIPYX((attr & 0xc000) >> 14));
@ -343,8 +334,8 @@ TILE_GET_INFO_MEMBER(tc0100scn_device::get_tx_tile_info)
void tc0100scn_device::set_colbanks( int bg0, int bg1, int tx )
{
m_bg0_colbank = bg0;
m_bg1_colbank = bg1;
m_bg_colbank[0] = bg0;
m_bg_colbank[1] = bg1;
m_tx_colbank = tx;
}
@ -358,33 +349,18 @@ void tc0100scn_device::set_layer_ptrs()
{
if (!m_dblwidth)
{
m_bg_ram = m_ram.get() + 0x0;
m_tx_ram = m_ram.get() + 0x4000 /2;
m_char_ram = m_ram.get() + 0x6000 /2;
m_fg_ram = m_ram.get() + 0x8000 /2;
m_bgscroll_ram = m_ram.get() + 0xc000 /2;
m_fgscroll_ram = m_ram.get() + 0xc400 /2;
m_colscroll_ram = m_ram.get() + 0xe000 /2;
}
else
{
m_bg_ram = m_ram.get() + 0x0;
m_fg_ram = m_ram.get() + 0x08000 /2;
m_bgscroll_ram = m_ram.get() + 0x10000 /2;
m_fgscroll_ram = m_ram.get() + 0x10400 /2;
m_colscroll_ram = m_ram.get() + 0x10800 /2;
m_char_ram = m_ram.get() + 0x11000 /2;
m_tx_ram = m_ram.get() + 0x12000 /2;
}
}
void tc0100scn_device::dirty_tilemaps()
{
m_tilemap[0][m_dblwidth]->mark_all_dirty();
m_tilemap[1][m_dblwidth]->mark_all_dirty();
m_tilemap[2][m_dblwidth]->mark_all_dirty();
}
void tc0100scn_device::restore_scroll()
{
int flip;
@ -417,8 +393,6 @@ void tc0100scn_device::device_post_load()
set_layer_ptrs();
restore_scroll();
m_gfxdecode->gfx(m_txnum)->set_source((u8 *)m_char_ram);
m_tilemap[0][0]->mark_all_dirty();
m_tilemap[1][0]->mark_all_dirty();
m_tilemap[2][0]->mark_all_dirty();
@ -435,28 +409,36 @@ u16 tc0100scn_device::ram_r(offs_t offset)
void tc0100scn_device::ram_w(offs_t offset, u16 data, u16 mem_mask)
{
COMBINE_DATA(&m_ram[offset]);
if (!m_dblwidth)
/* Double-width tilemaps have a different memory map */
if (offset < 0x2000)
{
if (offset < 0x2000)
m_tilemap[0][0]->mark_tile_dirty(offset / 2);
else if (offset < 0x3000)
m_tilemap[2][0]->mark_tile_dirty((offset & 0x0fff));
else if (offset < 0x3800)
m_gfxdecode->gfx(m_txnum)->mark_dirty((offset - 0x3000) / 8);
else if (offset >= 0x4000 && offset < 0x6000)
m_tilemap[1][0]->mark_tile_dirty((offset & 0x1fff) / 2);
m_tilemap[0][0]->mark_tile_dirty(offset / 2);
m_tilemap[0][1]->mark_tile_dirty(offset / 2);
}
else /* Double-width tilemaps have a different memory map */
else if (offset < 0x3000)
{
if (offset < 0x4000)
m_tilemap[0][1]->mark_tile_dirty(offset / 2);
else if (offset >= 0x4000 && offset < 0x8000)
m_tilemap[1][1]->mark_tile_dirty((offset & 0x3fff) / 2);
else if (offset >= 0x8800 && offset < 0x9000)
m_gfxdecode->gfx(m_txnum)->mark_dirty((offset - 0x8800) / 8);
else if (offset >= 0x9000)
m_tilemap[2][1]->mark_tile_dirty((offset & 0x0fff));
m_tilemap[2][0]->mark_tile_dirty((offset & 0x0fff));
m_tilemap[0][1]->mark_tile_dirty(offset / 2);
}
else if (offset < 0x3800)
{
gfx(0)->mark_dirty((offset - 0x3000) / 8);
m_tilemap[0][1]->mark_tile_dirty(offset / 2);
}
else if (offset < 0x4000)
m_tilemap[0][1]->mark_tile_dirty(offset / 2);
else if (offset < 0x6000)
{
m_tilemap[1][0]->mark_tile_dirty((offset & 0x1fff) / 2);
m_tilemap[1][1]->mark_tile_dirty((offset & 0x3fff) / 2);
}
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);
else if (offset >= 0x9000)
m_tilemap[2][1]->mark_tile_dirty((offset & 0x0fff));
}
u16 tc0100scn_device::ctrl_r(offs_t offset)
@ -507,12 +489,6 @@ void tc0100scn_device::ctrl_w(offs_t offset, u16 data, u16 mem_mask)
{
/* Reinitialise layer pointers */
set_layer_ptrs();
/* and ensure full redraw of the tilemaps */
dirty_tilemaps();
/* reset the pointer to the text characters (and dirty them all) */
m_gfxdecode->gfx(m_txnum)->set_source((u8 *)m_char_ram);
}
break;
@ -560,7 +536,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, u32 priority, u8 pmask )
void tc0100scn_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;
@ -577,8 +553,9 @@ void tc0100scn_device::tilemap_draw_fg( screen_device &screen, bitmap_ind16 &bit
//We use cliprect.max_y and cliprect.max_x to support games which use more than 1 screen
src_y += cliprect.top();
// Row offsets are 'screen space' 0-255 regardless of Y scroll
for (y = 0; y <= cliprect.max_y; y++)
for (y = cliprect.top(); y <= cliprect.bottom(); y++)
{
src_x = (m_fgscrollx - m_fgscroll_ram[(y + scrolly_delta) & 0x1ff] + scrollx_delta + cliprect.min_x) & width_mask;
if (m_ctrl[0x7] & 1) // Flipscreen
@ -605,7 +582,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, u32 priority, u8 pmask )
int tc0100scn_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;

View File

@ -10,17 +10,15 @@
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
class tc0100scn_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)); }
template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
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_tx_region(int txregion) { m_txnum = txregion; }
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)
@ -51,7 +49,7 @@ public:
void ctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0);
void tilemap_update();
int tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, u32 priority, u8 pmask = 0xff);
int tilemap_draw(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int flags, u8 priority, u8 pmask = 0xff);
void tilemap_set_dirty();
/* returns 0 or 1 depending on the lowest priority tilemap set in the internal
@ -71,10 +69,6 @@ private:
u16 m_ctrl[8];
std::unique_ptr<u16[]> m_ram;
u16 * m_bg_ram;
u16 * m_fg_ram;
u16 * m_tx_ram;
u16 * m_char_ram;
u16 * m_bgscroll_ram;
u16 * m_fgscroll_ram;
u16 * m_colscroll_ram;
@ -84,12 +78,11 @@ private:
/* We keep two tilemaps for each of the 3 actual tilemaps: one at standard width, one double */
tilemap_t *m_tilemap[3][2];
s32 m_bg0_colbank, m_bg1_colbank, m_tx_colbank;
s32 m_bg_colbank[2], m_tx_colbank;
int m_dblwidth;
bool m_dirty;
int m_gfxnum;
int m_txnum;
int m_x_offset, m_y_offset;
int m_flip_xoffs, m_flip_yoffs;
int m_flip_text_xoffs, m_flip_text_yoffs;
@ -97,17 +90,12 @@ private:
int m_multiscrn_hack;
required_device<gfxdecode_device> m_gfxdecode;
required_device<palette_device> m_palette;
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
TILE_GET_INFO_MEMBER(get_tx_tile_info);
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);
void common_get_tile_info(tile_data &tileinfo, int tile_index, u16 *ram, int colbank);
void tilemap_draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, u32 priority, u8 pmask = 0xff);
void tilemap_draw_fg(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, tilemap_t* tmap, int flags, u8 priority, u8 pmask = 0xff);
void set_layer_ptrs();
void dirty_tilemaps();
void restore_scroll();
};