mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
taito_l: split giant state class up into family tree, reduce tagmap lookups
This commit is contained in:
parent
936498261b
commit
d3b9d5482f
@ -69,8 +69,6 @@ puzznici note
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
char const *const bankname[] = { "bank2", "bank3", "bank4", "bank5" };
|
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
void (taitol_state::*notifier)(int);
|
void (taitol_state::*notifier)(int);
|
||||||
@ -118,23 +116,9 @@ void taitol_state::state_register()
|
|||||||
save_item(NAME(m_irq_enable));
|
save_item(NAME(m_irq_enable));
|
||||||
save_item(NAME(m_cur_rambank));
|
save_item(NAME(m_cur_rambank));
|
||||||
save_item(NAME(m_cur_rombank));
|
save_item(NAME(m_cur_rombank));
|
||||||
save_item(NAME(m_cur_rombank2));
|
|
||||||
|
|
||||||
save_item(NAME(m_adpcm_pos));
|
|
||||||
save_item(NAME(m_adpcm_data));
|
|
||||||
save_item(NAME(m_trackx));
|
|
||||||
save_item(NAME(m_tracky));
|
|
||||||
save_item(NAME(m_mux_ctrl));
|
|
||||||
save_item(NAME(m_extport));
|
|
||||||
save_item(NAME(m_last_irq_level));
|
save_item(NAME(m_last_irq_level));
|
||||||
save_item(NAME(m_high));
|
save_item(NAME(m_high));
|
||||||
save_item(NAME(m_high2));
|
|
||||||
|
|
||||||
save_item(NAME(m_mcu_pos));
|
|
||||||
save_item(NAME(m_mcu_reply_len));
|
|
||||||
save_item(NAME(m_last_data_adr));
|
|
||||||
save_item(NAME(m_last_data));
|
|
||||||
save_item(NAME(m_cur_bank));
|
|
||||||
|
|
||||||
save_item(NAME(m_bankc));
|
save_item(NAME(m_bankc));
|
||||||
save_item(NAME(m_horshoes_gfxbank));
|
save_item(NAME(m_horshoes_gfxbank));
|
||||||
@ -142,6 +126,56 @@ void taitol_state::state_register()
|
|||||||
save_item(NAME(m_flipscreen));
|
save_item(NAME(m_flipscreen));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void taitol_2cpu_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_mux_ctrl));
|
||||||
|
}
|
||||||
|
|
||||||
|
void taitol_3cpu_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_2cpu_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_cur_rombank2));
|
||||||
|
save_item(NAME(m_high2));
|
||||||
|
save_item(NAME(m_cur_audio_bnk));
|
||||||
|
}
|
||||||
|
|
||||||
|
void champwr_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_3cpu_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_adpcm_pos));
|
||||||
|
save_item(NAME(m_adpcm_data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void taitol_1cpu_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_extport));
|
||||||
|
}
|
||||||
|
|
||||||
|
void puzznic_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_1cpu_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_mcu_pos));
|
||||||
|
save_item(NAME(m_mcu_reply_len));
|
||||||
|
save_item(NAME(m_last_data_adr));
|
||||||
|
save_item(NAME(m_last_data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void horshoes_state::state_register()
|
||||||
|
{
|
||||||
|
taitol_1cpu_state::state_register();
|
||||||
|
|
||||||
|
save_item(NAME(m_trackx));
|
||||||
|
save_item(NAME(m_tracky));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
MACHINE_START_MEMBER(taitol_state, taito_l)
|
MACHINE_START_MEMBER(taitol_state, taito_l)
|
||||||
{
|
{
|
||||||
save_item(NAME(m_rambanks));
|
save_item(NAME(m_rambanks));
|
||||||
@ -163,28 +197,16 @@ void taitol_state::taito_machine_reset()
|
|||||||
m_cur_rambank[i] = 0x80;
|
m_cur_rambank[i] = 0x80;
|
||||||
m_current_notifier[i] = &taitol_state::palette_notifier;
|
m_current_notifier[i] = &taitol_state::palette_notifier;
|
||||||
m_current_base[i] = m_palette_ram;
|
m_current_base[i] = m_palette_ram;
|
||||||
membank(bankname[i])->set_base(m_current_base[i]);
|
m_ram_bnks[i]->set_base(m_current_base[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cur_rombank = m_cur_rombank2 = 0;
|
m_cur_rombank = 0;
|
||||||
membank("bank1")->set_base(memregion("maincpu")->base());
|
m_main_bnk->set_base(&m_main_prg[0]);
|
||||||
|
|
||||||
m_gfxdecode->gfx(2)->set_source(m_rambanks);
|
m_gfxdecode->gfx(2)->set_source(m_rambanks);
|
||||||
|
|
||||||
m_adpcm_pos = 0;
|
|
||||||
m_adpcm_data = -1;
|
|
||||||
m_trackx = m_tracky = 0;
|
|
||||||
m_mux_ctrl = 0;
|
|
||||||
m_extport = 0;
|
|
||||||
m_last_irq_level = 0;
|
m_last_irq_level = 0;
|
||||||
m_high = 0;
|
m_high = 0;
|
||||||
m_high2 = 0;
|
|
||||||
|
|
||||||
m_mcu_reply = puzznic_mcu_reply;
|
|
||||||
|
|
||||||
m_mcu_pos = m_mcu_reply_len = 0;
|
|
||||||
m_last_data_adr = m_last_data = 0;
|
|
||||||
m_cur_bank = 1;
|
|
||||||
|
|
||||||
/* video related */
|
/* video related */
|
||||||
m_bankc[0] = m_bankc[1] = m_bankc[2] = m_bankc[3] = 0;
|
m_bankc[0] = m_bankc[1] = m_bankc[2] = m_bankc[3] = 0;
|
||||||
@ -193,54 +215,60 @@ void taitol_state::taito_machine_reset()
|
|||||||
m_flipscreen = 0;
|
m_flipscreen = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void taitol_2cpu_state::taito_machine_reset()
|
||||||
MACHINE_RESET_MEMBER(taitol_state,fhawk)
|
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taitol_state::taito_machine_reset();
|
||||||
m_porte0_tag = nullptr;
|
|
||||||
m_porte1_tag = nullptr;
|
m_mux_ctrl = 0;
|
||||||
m_portf0_tag = nullptr;
|
|
||||||
m_portf1_tag = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,raimais)
|
void taitol_3cpu_state::taito_machine_reset()
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taitol_2cpu_state::taito_machine_reset();
|
||||||
m_porte0_tag = nullptr;
|
|
||||||
m_porte1_tag = nullptr;
|
m_cur_rombank2 = 0;
|
||||||
m_portf0_tag = nullptr;
|
m_high2 = 0;
|
||||||
m_portf1_tag = nullptr;
|
m_cur_audio_bnk = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,champwr)
|
void champwr_state::taito_machine_reset()
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taitol_3cpu_state::taito_machine_reset();
|
||||||
m_porte0_tag = nullptr;
|
|
||||||
m_porte1_tag = nullptr;
|
m_adpcm_pos = 0;
|
||||||
m_portf0_tag = nullptr;
|
m_adpcm_data = -1;
|
||||||
m_portf1_tag = nullptr;
|
}
|
||||||
|
|
||||||
|
void taitol_1cpu_state::taito_machine_reset()
|
||||||
|
{
|
||||||
|
taitol_state::taito_machine_reset();
|
||||||
|
|
||||||
|
m_extport = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void puzznic_state::taito_machine_reset()
|
||||||
|
{
|
||||||
|
taitol_1cpu_state::taito_machine_reset();
|
||||||
|
|
||||||
|
m_mcu_reply = puzznic_mcu_reply;
|
||||||
|
m_mcu_pos = m_mcu_reply_len = 0;
|
||||||
|
m_last_data_adr = m_last_data = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void horshoes_state::taito_machine_reset()
|
||||||
|
{
|
||||||
|
taitol_1cpu_state::taito_machine_reset();
|
||||||
|
|
||||||
|
m_trackx = m_tracky = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,kurikint)
|
MACHINE_RESET_MEMBER(taitol_state, taito_l)
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = nullptr;
|
|
||||||
m_porte1_tag = nullptr;
|
|
||||||
m_portf0_tag = nullptr;
|
|
||||||
m_portf1_tag = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,evilston)
|
MACHINE_RESET_MEMBER(taitol_1cpu_state, puzznic)
|
||||||
{
|
|
||||||
taito_machine_reset();
|
|
||||||
m_porte0_tag = nullptr;
|
|
||||||
m_porte1_tag = nullptr;
|
|
||||||
m_portf0_tag = nullptr;
|
|
||||||
m_portf1_tag = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,puzznic)
|
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = "DSWA";
|
m_porte0_tag = "DSWA";
|
||||||
@ -249,7 +277,7 @@ MACHINE_RESET_MEMBER(taitol_state,puzznic)
|
|||||||
m_portf1_tag = "IN1";
|
m_portf1_tag = "IN1";
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,plotting)
|
MACHINE_RESET_MEMBER(taitol_1cpu_state, plotting)
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = "DSWA";
|
m_porte0_tag = "DSWA";
|
||||||
@ -258,7 +286,7 @@ MACHINE_RESET_MEMBER(taitol_state,plotting)
|
|||||||
m_portf1_tag = "IN1";
|
m_portf1_tag = "IN1";
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,palamed)
|
MACHINE_RESET_MEMBER(taitol_1cpu_state, palamed)
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = "DSWA";
|
m_porte0_tag = "DSWA";
|
||||||
@ -267,7 +295,7 @@ MACHINE_RESET_MEMBER(taitol_state,palamed)
|
|||||||
m_portf1_tag = nullptr;
|
m_portf1_tag = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,cachat)
|
MACHINE_RESET_MEMBER(taitol_1cpu_state, cachat)
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = "DSWA";
|
m_porte0_tag = "DSWA";
|
||||||
@ -276,7 +304,7 @@ MACHINE_RESET_MEMBER(taitol_state,cachat)
|
|||||||
m_portf1_tag = nullptr;
|
m_portf1_tag = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
MACHINE_RESET_MEMBER(taitol_state,horshoes)
|
MACHINE_RESET_MEMBER(horshoes_state, horshoes)
|
||||||
{
|
{
|
||||||
taito_machine_reset();
|
taito_machine_reset();
|
||||||
m_porte0_tag = "DSWA";
|
m_porte0_tag = "DSWA";
|
||||||
@ -296,7 +324,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(taitol_state::vbl_interrupt)
|
|||||||
int scanline = param;
|
int scanline = param;
|
||||||
|
|
||||||
/* kludge to make plgirls boot */
|
/* kludge to make plgirls boot */
|
||||||
if (m_maincpu->state_int(Z80_IM) != 2)
|
if (m_main_cpu->state_int(Z80_IM) != 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// What is really generating interrupts 0 and 1 is still to be found
|
// What is really generating interrupts 0 and 1 is still to be found
|
||||||
@ -304,17 +332,17 @@ TIMER_DEVICE_CALLBACK_MEMBER(taitol_state::vbl_interrupt)
|
|||||||
if (scanline == 120 && (m_irq_enable & 1))
|
if (scanline == 120 && (m_irq_enable & 1))
|
||||||
{
|
{
|
||||||
m_last_irq_level = 0;
|
m_last_irq_level = 0;
|
||||||
m_maincpu->set_input_line(0, HOLD_LINE);
|
m_main_cpu->set_input_line(0, HOLD_LINE);
|
||||||
}
|
}
|
||||||
else if (scanline == 0 && (m_irq_enable & 2))
|
else if (scanline == 0 && (m_irq_enable & 2))
|
||||||
{
|
{
|
||||||
m_last_irq_level = 1;
|
m_last_irq_level = 1;
|
||||||
m_maincpu->set_input_line(0, HOLD_LINE);
|
m_main_cpu->set_input_line(0, HOLD_LINE);
|
||||||
}
|
}
|
||||||
else if (scanline == 240 && (m_irq_enable & 4))
|
else if (scanline == 240 && (m_irq_enable & 4))
|
||||||
{
|
{
|
||||||
m_last_irq_level = 2;
|
m_last_irq_level = 2;
|
||||||
m_maincpu->set_input_line(0, HOLD_LINE);
|
m_main_cpu->set_input_line(0, HOLD_LINE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -336,7 +364,7 @@ WRITE8_MEMBER(taitol_state::irq_enable_w)
|
|||||||
|
|
||||||
// fix Plotting test mode
|
// fix Plotting test mode
|
||||||
if ((m_irq_enable & (1 << m_last_irq_level)) == 0)
|
if ((m_irq_enable & (1 << m_last_irq_level)) == 0)
|
||||||
m_maincpu->set_input_line(0, CLEAR_LINE);
|
m_main_cpu->set_input_line(0, CLEAR_LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::irq_enable_r)
|
READ8_MEMBER(taitol_state::irq_enable_r)
|
||||||
@ -357,11 +385,11 @@ WRITE8_MEMBER(taitol_state::rombankswitch_w)
|
|||||||
|
|
||||||
//logerror("robs %d, %02x (%04x)\n", offset, data, space.device().safe_pc());
|
//logerror("robs %d, %02x (%04x)\n", offset, data, space.device().safe_pc());
|
||||||
m_cur_rombank = data;
|
m_cur_rombank = data;
|
||||||
membank("bank1")->set_base(memregion("maincpu")->base() + 0x2000 * m_cur_rombank);
|
m_main_bnk->set_base(&m_main_prg[0x2000 * m_cur_rombank]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::rombank2switch_w)
|
WRITE8_MEMBER(taitol_3cpu_state::rombank2switch_w)
|
||||||
{
|
{
|
||||||
data &= 0xf;
|
data &= 0xf;
|
||||||
|
|
||||||
@ -376,7 +404,7 @@ WRITE8_MEMBER(taitol_state::rombank2switch_w)
|
|||||||
//logerror("robs2 %02x (%04x)\n", data, space.device().safe_pc());
|
//logerror("robs2 %02x (%04x)\n", data, space.device().safe_pc());
|
||||||
|
|
||||||
m_cur_rombank2 = data;
|
m_cur_rombank2 = data;
|
||||||
membank("bank6")->set_base(memregion("slave")->base() + 0x4000 * m_cur_rombank2);
|
m_slave_bnk->set_base(&m_slave_prg[0x4000 * m_cur_rombank2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,7 +413,7 @@ READ8_MEMBER(taitol_state::rombankswitch_r)
|
|||||||
return m_cur_rombank;
|
return m_cur_rombank;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::rombank2switch_r)
|
READ8_MEMBER(taitol_3cpu_state::rombank2switch_r)
|
||||||
{
|
{
|
||||||
return m_cur_rombank2;
|
return m_cur_rombank2;
|
||||||
}
|
}
|
||||||
@ -395,7 +423,7 @@ WRITE8_MEMBER(taitol_state::rambankswitch_w)
|
|||||||
if (m_cur_rambank[offset] != data)
|
if (m_cur_rambank[offset] != data)
|
||||||
{
|
{
|
||||||
m_cur_rambank[offset] = data;
|
m_cur_rambank[offset] = data;
|
||||||
//logerror("rabs %d, %02x (%04x)\n", offset, data, space.device().safe_pc());
|
//logerror("rabs %d, %02x (%04x)\n", offset, data, space.device().safe_pc());
|
||||||
if (data >= 0x14 && data <= 0x1f)
|
if (data >= 0x14 && data <= 0x1f)
|
||||||
{
|
{
|
||||||
data -= 0x14;
|
data -= 0x14;
|
||||||
@ -413,7 +441,7 @@ WRITE8_MEMBER(taitol_state::rambankswitch_w)
|
|||||||
m_current_notifier[offset] = nullptr;
|
m_current_notifier[offset] = nullptr;
|
||||||
m_current_base[offset] = m_empty_ram;
|
m_current_base[offset] = m_empty_ram;
|
||||||
}
|
}
|
||||||
membank(bankname[offset])->set_base(m_current_base[offset]);
|
m_ram_bnks[offset]->set_base(m_current_base[offset]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -452,7 +480,7 @@ WRITE8_MEMBER(taitol_state::bank3_w)
|
|||||||
bank_w(space, offset, data, 3);
|
bank_w(space, offset, data, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::control2_w)
|
WRITE8_MEMBER(taitol_2cpu_state::control2_w)
|
||||||
{
|
{
|
||||||
machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
|
machine().bookkeeping().coin_lockout_w(0, ~data & 0x01);
|
||||||
machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
|
machine().bookkeeping().coin_lockout_w(1, ~data & 0x02);
|
||||||
@ -460,24 +488,23 @@ WRITE8_MEMBER(taitol_state::control2_w)
|
|||||||
machine().bookkeeping().coin_counter_w(1, data & 0x08);
|
machine().bookkeeping().coin_counter_w(1, data & 0x08);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::portA_r)
|
READ8_MEMBER(taitol_1cpu_state::portA_r)
|
||||||
{
|
{
|
||||||
return ioport((m_extport == 0) ? m_porte0_tag : m_porte1_tag)->read();
|
return ioport((m_extport == 0) ? m_porte0_tag : m_porte1_tag)->read();
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::portB_r)
|
READ8_MEMBER(taitol_1cpu_state::portB_r)
|
||||||
{
|
{
|
||||||
return ioport((m_extport == 0) ? m_portf0_tag : m_portf1_tag)->read();
|
return ioport((m_extport == 0) ? m_portf0_tag : m_portf1_tag)->read();
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::extport_select_and_ym2203_r)
|
READ8_MEMBER(taitol_1cpu_state::extport_select_and_ym2203_r)
|
||||||
{
|
{
|
||||||
ym2203_device *ym2203 = machine().device<ym2203_device>("ymsnd");
|
|
||||||
m_extport = (offset >> 1) & 1;
|
m_extport = (offset >> 1) & 1;
|
||||||
return ym2203->read(space, offset & 1);
|
return m_ymsnd->read(space, offset & 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::mcu_data_w)
|
WRITE8_MEMBER(puzznic_state::mcu_data_w)
|
||||||
{
|
{
|
||||||
m_last_data = data;
|
m_last_data = data;
|
||||||
m_last_data_adr = space.device().safe_pc();
|
m_last_data_adr = space.device().safe_pc();
|
||||||
@ -496,7 +523,7 @@ WRITE8_MEMBER(taitol_state::mcu_control_w)
|
|||||||
// logerror("mcu control %02x (%04x)\n", data, space.device().safe_pc());
|
// logerror("mcu control %02x (%04x)\n", data, space.device().safe_pc());
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::mcu_data_r)
|
READ8_MEMBER(puzznic_state::mcu_data_r)
|
||||||
{
|
{
|
||||||
// logerror("mcu read (%04x) [%02x, %04x]\n", space.device().safe_pc(), last_data, last_data_adr);
|
// logerror("mcu read (%04x) [%02x, %04x]\n", space.device().safe_pc(), last_data, last_data_adr);
|
||||||
if (m_mcu_pos == m_mcu_reply_len)
|
if (m_mcu_pos == m_mcu_reply_len)
|
||||||
@ -518,27 +545,27 @@ WRITE8_MEMBER(taitol_state::sound_w)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::mux_r)
|
READ8_MEMBER(taitol_2cpu_state::mux_r)
|
||||||
{
|
{
|
||||||
switch (m_mux_ctrl)
|
switch (m_mux_ctrl)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
return ioport("DSWA")->read();
|
return m_dswa->read();
|
||||||
case 1:
|
case 1:
|
||||||
return ioport("DSWB")->read();
|
return m_dswb->read();
|
||||||
case 2:
|
case 2:
|
||||||
return ioport("IN0")->read();
|
return m_in0->read();
|
||||||
case 3:
|
case 3:
|
||||||
return ioport("IN1")->read();
|
return m_in1->read();
|
||||||
case 7:
|
case 7:
|
||||||
return ioport("IN2")->read();
|
return m_in2->read();
|
||||||
default:
|
default:
|
||||||
logerror("Mux read from unknown port %d (%04x)\n", m_mux_ctrl, space.device().safe_pc());
|
logerror("Mux read from unknown port %d (%04x)\n", m_mux_ctrl, space.device().safe_pc());
|
||||||
return 0xff;
|
return 0xff;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::mux_w)
|
WRITE8_MEMBER(taitol_2cpu_state::mux_w)
|
||||||
{
|
{
|
||||||
switch (m_mux_ctrl)
|
switch (m_mux_ctrl)
|
||||||
{
|
{
|
||||||
@ -550,13 +577,13 @@ WRITE8_MEMBER(taitol_state::mux_w)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::mux_ctrl_w)
|
WRITE8_MEMBER(taitol_2cpu_state::mux_ctrl_w)
|
||||||
{
|
{
|
||||||
m_mux_ctrl = data;
|
m_mux_ctrl = data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
WRITE_LINE_MEMBER(taitol_state::champwr_msm5205_vck)
|
WRITE_LINE_MEMBER(champwr_state::msm5205_vck)
|
||||||
{
|
{
|
||||||
if (m_adpcm_data != -1)
|
if (m_adpcm_data != -1)
|
||||||
{
|
{
|
||||||
@ -565,70 +592,70 @@ WRITE_LINE_MEMBER(taitol_state::champwr_msm5205_vck)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_adpcm_data = memregion("adpcm")->base()[m_adpcm_pos];
|
m_adpcm_data = m_adpcm_rgn[m_adpcm_pos];
|
||||||
m_adpcm_pos = (m_adpcm_pos + 1) & 0x1ffff;
|
m_adpcm_pos = (m_adpcm_pos + 1) & 0x1ffff;
|
||||||
m_msm->data_w(m_adpcm_data >> 4);
|
m_msm->data_w(m_adpcm_data >> 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::champwr_msm5205_lo_w)
|
WRITE8_MEMBER(champwr_state::msm5205_lo_w)
|
||||||
{
|
{
|
||||||
m_adpcm_pos = (m_adpcm_pos & 0xff00ff) | (data << 8);
|
m_adpcm_pos = (m_adpcm_pos & 0xff00ff) | (data << 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::champwr_msm5205_hi_w)
|
WRITE8_MEMBER(champwr_state::msm5205_hi_w)
|
||||||
{
|
{
|
||||||
m_adpcm_pos = ((m_adpcm_pos & 0x00ffff) | (data << 16)) & 0x1ffff;
|
m_adpcm_pos = ((m_adpcm_pos & 0x00ffff) | (data << 16)) & 0x1ffff;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::champwr_msm5205_start_w)
|
WRITE8_MEMBER(champwr_state::msm5205_start_w)
|
||||||
{
|
{
|
||||||
m_msm->reset_w(0);
|
m_msm->reset_w(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::champwr_msm5205_stop_w)
|
WRITE8_MEMBER(champwr_state::msm5205_stop_w)
|
||||||
{
|
{
|
||||||
m_msm->reset_w(1);
|
m_msm->reset_w(1);
|
||||||
m_adpcm_pos &= 0x1ff00;
|
m_adpcm_pos &= 0x1ff00;
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::champwr_msm5205_volume_w)
|
WRITE8_MEMBER(champwr_state::msm5205_volume_w)
|
||||||
{
|
{
|
||||||
m_msm->set_output_gain(0, data / 255.0);
|
m_msm->set_output_gain(0, data / 255.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_tracky_reset_r)
|
READ8_MEMBER(horshoes_state::tracky_reset_r)
|
||||||
{
|
{
|
||||||
/* reset the trackball counter */
|
/* reset the trackball counter */
|
||||||
m_tracky = ioport("AN0")->read();
|
m_tracky = m_analog0->read();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_trackx_reset_r)
|
READ8_MEMBER(horshoes_state::trackx_reset_r)
|
||||||
{
|
{
|
||||||
/* reset the trackball counter */
|
/* reset the trackball counter */
|
||||||
m_trackx = ioport("AN1")->read();
|
m_trackx = m_analog1->read();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_tracky_lo_r)
|
READ8_MEMBER(horshoes_state::tracky_lo_r)
|
||||||
{
|
{
|
||||||
return (ioport("AN0")->read() - m_tracky) & 0xff;
|
return (m_analog0->read() - m_tracky) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_tracky_hi_r)
|
READ8_MEMBER(horshoes_state::tracky_hi_r)
|
||||||
{
|
{
|
||||||
return (ioport("AN0")->read() - m_tracky) >> 8;
|
return (m_analog0->read() - m_tracky) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_trackx_lo_r)
|
READ8_MEMBER(horshoes_state::trackx_lo_r)
|
||||||
{
|
{
|
||||||
return (ioport("AN1")->read() - m_trackx) & 0xff;
|
return (m_analog1->read() - m_trackx) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
READ8_MEMBER(taitol_state::horshoes_trackx_hi_r)
|
READ8_MEMBER(horshoes_state::trackx_hi_r)
|
||||||
{
|
{
|
||||||
return (ioport("AN1")->read() - m_trackx) >> 8;
|
return (m_analog1->read() - m_trackx) >> 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -652,13 +679,13 @@ READ8_MEMBER(taitol_state::horshoes_trackx_hi_r)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( fhawk_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( fhawk_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0xa000, 0xbfff) AM_RAM
|
AM_RANGE(0xa000, 0xbfff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( fhawk_2_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( fhawk_2_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank6")
|
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank6")
|
||||||
AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
|
AM_RANGE(0xc000, 0xc000) AM_WRITE(rombank2switch_w)
|
||||||
@ -674,7 +701,7 @@ static ADDRESS_MAP_START( fhawk_2_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("share1")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( fhawk_3_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( fhawk_3_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
||||||
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
||||||
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
||||||
@ -684,7 +711,7 @@ static ADDRESS_MAP_START( fhawk_3_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( raimais_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( raimais_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
|
||||||
AM_RANGE(0x8800, 0x8800) AM_READWRITE(mux_r, mux_w)
|
AM_RANGE(0x8800, 0x8800) AM_READWRITE(mux_r, mux_w)
|
||||||
@ -694,22 +721,19 @@ static ADDRESS_MAP_START( raimais_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
AM_RANGE(0xa000, 0xbfff) AM_RAM
|
AM_RANGE(0xa000, 0xbfff) AM_RAM
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( raimais_2_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( raimais_2_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||||
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
||||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::sound_bankswitch_w)
|
WRITE8_MEMBER(taitol_2cpu_state::sound_bankswitch_w)
|
||||||
{
|
{
|
||||||
u8 *RAM = memregion("audiocpu")->base();
|
m_audio_bnk->set_base(&m_audio_prg[(data & 0x03) * 0x4000]);
|
||||||
int banknum = data & 0x03;
|
|
||||||
|
|
||||||
membank ("bank7")->set_base (&RAM [(banknum * 0x4000)]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static ADDRESS_MAP_START( raimais_3_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( raimais_3_map, AS_PROGRAM, 8, taitol_3cpu_state )
|
||||||
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
||||||
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
||||||
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
||||||
@ -724,13 +748,13 @@ static ADDRESS_MAP_START( raimais_3_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( champwr_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( champwr_map, AS_PROGRAM, 8, champwr_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
||||||
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("share1")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( champwr_2_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( champwr_2_map, AS_PROGRAM, 8, champwr_state )
|
||||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank6")
|
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank6")
|
||||||
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xc000, 0xdfff) AM_RAM AM_SHARE("share1")
|
||||||
@ -746,22 +770,22 @@ static ADDRESS_MAP_START( champwr_2_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w)
|
AM_RANGE(0xf000, 0xf000) AM_READWRITE(rombank2switch_r, rombank2switch_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( champwr_3_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( champwr_3_map, AS_PROGRAM, 8, champwr_state )
|
||||||
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
AM_RANGE(0x0000, 0x3fff) AM_ROM
|
||||||
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
AM_RANGE(0x4000, 0x7fff) AM_ROMBANK("bank7")
|
||||||
AM_RANGE(0x8000, 0x8fff) AM_RAM
|
AM_RANGE(0x8000, 0x8fff) AM_RAM
|
||||||
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
|
AM_RANGE(0x9000, 0x9001) AM_DEVREADWRITE("ymsnd", ym2203_device, read, write)
|
||||||
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
|
AM_RANGE(0xa000, 0xa000) AM_READNOP AM_DEVWRITE("tc0140syt", tc0140syt_device, slave_port_w)
|
||||||
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
|
AM_RANGE(0xa001, 0xa001) AM_DEVREADWRITE("tc0140syt", tc0140syt_device, slave_comm_r, slave_comm_w)
|
||||||
AM_RANGE(0xb000, 0xb000) AM_WRITE(champwr_msm5205_hi_w)
|
AM_RANGE(0xb000, 0xb000) AM_WRITE(msm5205_hi_w)
|
||||||
AM_RANGE(0xc000, 0xc000) AM_WRITE(champwr_msm5205_lo_w)
|
AM_RANGE(0xc000, 0xc000) AM_WRITE(msm5205_lo_w)
|
||||||
AM_RANGE(0xd000, 0xd000) AM_WRITE(champwr_msm5205_start_w)
|
AM_RANGE(0xd000, 0xd000) AM_WRITE(msm5205_start_w)
|
||||||
AM_RANGE(0xe000, 0xe000) AM_WRITE(champwr_msm5205_stop_w)
|
AM_RANGE(0xe000, 0xe000) AM_WRITE(msm5205_stop_w)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( kurikint_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( kurikint_map, AS_PROGRAM, 8, taitol_2cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
||||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
|
||||||
@ -769,7 +793,7 @@ static ADDRESS_MAP_START( kurikint_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
AM_RANGE(0xa801, 0xa801) AM_WRITE(mux_ctrl_w) AM_READNOP // Watchdog or interrupt ack (value ignored)
|
AM_RANGE(0xa801, 0xa801) AM_WRITE(mux_ctrl_w) AM_READNOP // Watchdog or interrupt ack (value ignored)
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( kurikint_2_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( kurikint_2_map, AS_PROGRAM, 8, taitol_2cpu_state )
|
||||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||||
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
||||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
||||||
@ -786,7 +810,7 @@ ADDRESS_MAP_END
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( puzznic_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( puzznic_map, AS_PROGRAM, 8, puzznic_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
|
AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
|
||||||
@ -797,7 +821,7 @@ static ADDRESS_MAP_START( puzznic_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
/* bootleg, doesn't have the MCU */
|
/* bootleg, doesn't have the MCU */
|
||||||
static ADDRESS_MAP_START( puzznici_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( puzznici_map, AS_PROGRAM, 8, taitol_1cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
|
AM_RANGE(0xa800, 0xa800) AM_READNOP // Watchdog
|
||||||
@ -809,7 +833,7 @@ static ADDRESS_MAP_START( puzznici_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( plotting_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( plotting_map, AS_PROGRAM, 8, taitol_1cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_WRITENOP // Watchdog or interrupt ack
|
AM_RANGE(0xa800, 0xa800) AM_WRITENOP // Watchdog or interrupt ack
|
||||||
@ -817,7 +841,7 @@ static ADDRESS_MAP_START( plotting_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( palamed_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( palamed_map, AS_PROGRAM, 8, taitol_1cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN0")
|
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN0")
|
||||||
@ -829,7 +853,7 @@ static ADDRESS_MAP_START( palamed_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( cachat_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( cachat_map, AS_PROGRAM, 8, taitol_1cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN0")
|
AM_RANGE(0xa800, 0xa800) AM_READ_PORT("IN0")
|
||||||
@ -842,21 +866,21 @@ static ADDRESS_MAP_START( cachat_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( horshoes_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( horshoes_map, AS_PROGRAM, 8, horshoes_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
COMMON_SINGLE_MAP
|
COMMON_SINGLE_MAP
|
||||||
AM_RANGE(0xa800, 0xa800) AM_READ(horshoes_tracky_lo_r)
|
AM_RANGE(0xa800, 0xa800) AM_READ(tracky_lo_r)
|
||||||
AM_RANGE(0xa802, 0xa802) AM_READ(horshoes_tracky_reset_r)
|
AM_RANGE(0xa802, 0xa802) AM_READ(tracky_reset_r)
|
||||||
AM_RANGE(0xa803, 0xa803) AM_READ(horshoes_trackx_reset_r)
|
AM_RANGE(0xa803, 0xa803) AM_READ(trackx_reset_r)
|
||||||
AM_RANGE(0xa804, 0xa804) AM_READ(horshoes_tracky_hi_r)
|
AM_RANGE(0xa804, 0xa804) AM_READ(tracky_hi_r)
|
||||||
AM_RANGE(0xa808, 0xa808) AM_READ(horshoes_trackx_lo_r)
|
AM_RANGE(0xa808, 0xa808) AM_READ(trackx_lo_r)
|
||||||
AM_RANGE(0xa80c, 0xa80c) AM_READ(horshoes_trackx_hi_r)
|
AM_RANGE(0xa80c, 0xa80c) AM_READ(trackx_hi_r)
|
||||||
AM_RANGE(0xb801, 0xb801) AM_READNOP // Watchdog or interrupt ack
|
AM_RANGE(0xb801, 0xb801) AM_READNOP // Watchdog or interrupt ack
|
||||||
AM_RANGE(0xb802, 0xb802) AM_WRITE(horshoes_bankg_w)
|
AM_RANGE(0xb802, 0xb802) AM_WRITE(bankg_w)
|
||||||
AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP
|
AM_RANGE(0xbc00, 0xbc00) AM_WRITENOP
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( evilston_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( evilston_map, AS_PROGRAM, 8, taitol_2cpu_state )
|
||||||
COMMON_BANKS_MAP
|
COMMON_BANKS_MAP
|
||||||
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
AM_RANGE(0x8000, 0x9fff) AM_RAM
|
||||||
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xa000, 0xa7ff) AM_RAM AM_SHARE("share1")
|
||||||
@ -868,7 +892,7 @@ static ADDRESS_MAP_START( evilston_map, AS_PROGRAM, 8, taitol_state )
|
|||||||
AM_RANGE(0xa807, 0xa807) AM_READ_PORT("IN2")
|
AM_RANGE(0xa807, 0xa807) AM_READ_PORT("IN2")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( evilston_2_map, AS_PROGRAM, 8, taitol_state )
|
static ADDRESS_MAP_START( evilston_2_map, AS_PROGRAM, 8, taitol_2cpu_state )
|
||||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||||
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
AM_RANGE(0xc000, 0xdfff) AM_RAM
|
||||||
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
AM_RANGE(0xe000, 0xe7ff) AM_RAM AM_SHARE("share1")
|
||||||
@ -951,7 +975,6 @@ static INPUT_PORTS_START( raimais )
|
|||||||
PORT_START("IN0")
|
PORT_START("IN0")
|
||||||
TAITO_JOY_UDLR_2_BUTTONS( 1 )
|
TAITO_JOY_UDLR_2_BUTTONS( 1 )
|
||||||
|
|
||||||
|
|
||||||
PORT_START("IN1")
|
PORT_START("IN1")
|
||||||
TAITO_JOY_UDLR_2_BUTTONS( 2 )
|
TAITO_JOY_UDLR_2_BUTTONS( 2 )
|
||||||
|
|
||||||
@ -1711,27 +1734,26 @@ static GFXDECODE_START( taito_l )
|
|||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::portA_w)
|
WRITE8_MEMBER(taitol_3cpu_state::portA_w)
|
||||||
{
|
{
|
||||||
if (m_cur_bank != (data & 0x03))
|
if (m_cur_audio_bnk != (data & 0x03))
|
||||||
{
|
{
|
||||||
int bankaddress;
|
int bankaddress;
|
||||||
u8 *RAM = memregion("audiocpu")->base();
|
|
||||||
|
|
||||||
m_cur_bank = data & 0x03;
|
m_cur_audio_bnk = data & 0x03;
|
||||||
bankaddress = m_cur_bank * 0x4000;
|
bankaddress = m_cur_audio_bnk * 0x4000;
|
||||||
membank("bank7")->set_base(&RAM[bankaddress]);
|
m_audio_bnk->set_base(&m_audio_prg[bankaddress]);
|
||||||
//logerror ("YM2203 bank change val=%02x pc=%04x\n", m_cur_bank, space.device().safe_pc() );
|
//logerror ("YM2203 bank change val=%02x pc=%04x\n", m_cur_audio_bnk, space.device().safe_pc() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( fhawk, taitol_state )
|
static MACHINE_CONFIG_START( fhawk, taitol_3cpu_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
||||||
MCFG_CPU_PROGRAM_MAP(fhawk_map)
|
MCFG_CPU_PROGRAM_MAP(fhawk_map)
|
||||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback)
|
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
|
||||||
|
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
||||||
|
|
||||||
@ -1744,8 +1766,8 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
|
|||||||
|
|
||||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(taitol_state,taito_l)
|
MCFG_MACHINE_START_OVERRIDE(taitol_state, taito_l)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,fhawk)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -1760,14 +1782,14 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
|
|||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
||||||
MCFG_PALETTE_ADD("palette", 256)
|
MCFG_PALETTE_ADD("palette", 256)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
|
MCFG_VIDEO_START_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
|
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_12MHz/4) /* verified on pcb */
|
||||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||||
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitol_state, portA_w))
|
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitol_3cpu_state, portA_w))
|
||||||
MCFG_SOUND_ROUTE(0, "mono", 0.20)
|
MCFG_SOUND_ROUTE(0, "mono", 0.20)
|
||||||
MCFG_SOUND_ROUTE(1, "mono", 0.20)
|
MCFG_SOUND_ROUTE(1, "mono", 0.20)
|
||||||
MCFG_SOUND_ROUTE(2, "mono", 0.20)
|
MCFG_SOUND_ROUTE(2, "mono", 0.20)
|
||||||
@ -1779,7 +1801,7 @@ static MACHINE_CONFIG_START( fhawk, taitol_state )
|
|||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( champwr, fhawk )
|
static MACHINE_CONFIG_DERIVED_CLASS( champwr, fhawk, champwr_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
@ -1791,16 +1813,14 @@ static MACHINE_CONFIG_DERIVED( champwr, fhawk )
|
|||||||
MCFG_CPU_MODIFY("slave")
|
MCFG_CPU_MODIFY("slave")
|
||||||
MCFG_CPU_PROGRAM_MAP(champwr_2_map)
|
MCFG_CPU_PROGRAM_MAP(champwr_2_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,champwr)
|
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SOUND_MODIFY("ymsnd")
|
MCFG_SOUND_MODIFY("ymsnd")
|
||||||
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||||
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitol_state, portA_w))
|
MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(taitol_3cpu_state, portA_w))
|
||||||
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(taitol_state, champwr_msm5205_volume_w))
|
MCFG_AY8910_PORT_B_WRITE_CB(WRITE8(champwr_state, msm5205_volume_w))
|
||||||
|
|
||||||
MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz)
|
MCFG_SOUND_ADD("msm", MSM5205, XTAL_384kHz)
|
||||||
MCFG_MSM5205_VCLK_CB(WRITELINE(taitol_state, champwr_msm5205_vck)) /* VCK function */
|
MCFG_MSM5205_VCLK_CB(WRITELINE(champwr_state, msm5205_vck)) /* VCK function */
|
||||||
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */
|
MCFG_MSM5205_PRESCALER_SELECTOR(MSM5205_S48_4B) /* 8 kHz */
|
||||||
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
@ -1819,8 +1839,6 @@ static MACHINE_CONFIG_DERIVED( raimais, fhawk )
|
|||||||
MCFG_CPU_MODIFY("slave")
|
MCFG_CPU_MODIFY("slave")
|
||||||
MCFG_CPU_PROGRAM_MAP(raimais_2_map)
|
MCFG_CPU_PROGRAM_MAP(raimais_2_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,raimais)
|
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SOUND_REPLACE("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb (8Mhz OSC is also for the 2nd z80) */
|
MCFG_SOUND_REPLACE("ymsnd", YM2610, XTAL_8MHz) /* verified on pcb (8Mhz OSC is also for the 2nd z80) */
|
||||||
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
MCFG_YM2610_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
|
||||||
@ -1830,12 +1848,12 @@ static MACHINE_CONFIG_DERIVED( raimais, fhawk )
|
|||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( kurikint, taitol_state )
|
static MACHINE_CONFIG_START( kurikint, taitol_2cpu_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
||||||
MCFG_CPU_PROGRAM_MAP(kurikint_map)
|
MCFG_CPU_PROGRAM_MAP(kurikint_map)
|
||||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback)
|
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
|
||||||
|
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
||||||
|
|
||||||
@ -1845,8 +1863,8 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
|
|||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(taitol_state,taito_l)
|
MCFG_MACHINE_START_OVERRIDE(taitol_state, taito_l)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,kurikint)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -1861,7 +1879,7 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
|
|||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
||||||
MCFG_PALETTE_ADD("palette", 256)
|
MCFG_PALETTE_ADD("palette", 256)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
|
MCFG_VIDEO_START_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
@ -1874,19 +1892,16 @@ static MACHINE_CONFIG_START( kurikint, taitol_state )
|
|||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
|
static MACHINE_CONFIG_START( plotting, taitol_1cpu_state )
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( plotting, taitol_state )
|
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* verified freq on pin122 of TC0090LVC cpu */
|
||||||
MCFG_CPU_PROGRAM_MAP(plotting_map)
|
MCFG_CPU_PROGRAM_MAP(plotting_map)
|
||||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback)
|
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(taitol_state,taito_l)
|
MCFG_MACHINE_START_OVERRIDE(taitol_state, taito_l)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,plotting)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, plotting)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -1901,14 +1916,14 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
|
|||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
||||||
MCFG_PALETTE_ADD("palette", 256)
|
MCFG_PALETTE_ADD("palette", 256)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
|
MCFG_VIDEO_START_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
|
|
||||||
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_13_33056MHz/4) /* verified on pcb */
|
MCFG_SOUND_ADD("ymsnd", YM2203, XTAL_13_33056MHz/4) /* verified on pcb */
|
||||||
MCFG_AY8910_PORT_A_READ_CB(READ8(taitol_state, portA_r))
|
MCFG_AY8910_PORT_A_READ_CB(READ8(taitol_1cpu_state, portA_r))
|
||||||
MCFG_AY8910_PORT_B_READ_CB(READ8(taitol_state, portB_r))
|
MCFG_AY8910_PORT_B_READ_CB(READ8(taitol_1cpu_state, portB_r))
|
||||||
MCFG_SOUND_ROUTE(0, "mono", 0.20)
|
MCFG_SOUND_ROUTE(0, "mono", 0.20)
|
||||||
MCFG_SOUND_ROUTE(1, "mono", 0.20)
|
MCFG_SOUND_ROUTE(1, "mono", 0.20)
|
||||||
MCFG_SOUND_ROUTE(2, "mono", 0.20)
|
MCFG_SOUND_ROUTE(2, "mono", 0.20)
|
||||||
@ -1916,13 +1931,13 @@ static MACHINE_CONFIG_START( plotting, taitol_state )
|
|||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( puzznic, plotting )
|
static MACHINE_CONFIG_DERIVED_CLASS( puzznic, plotting, puzznic_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(puzznic_map)
|
MCFG_CPU_PROGRAM_MAP(puzznic_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,puzznic)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, puzznic)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( puzznici, plotting )
|
static MACHINE_CONFIG_DERIVED( puzznici, plotting )
|
||||||
@ -1931,17 +1946,17 @@ static MACHINE_CONFIG_DERIVED( puzznici, plotting )
|
|||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(puzznici_map)
|
MCFG_CPU_PROGRAM_MAP(puzznici_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,puzznic)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, puzznic)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
static MACHINE_CONFIG_DERIVED( horshoes, plotting )
|
static MACHINE_CONFIG_DERIVED_CLASS( horshoes, plotting, horshoes_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(horshoes_map)
|
MCFG_CPU_PROGRAM_MAP(horshoes_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,horshoes)
|
MCFG_MACHINE_RESET_OVERRIDE(horshoes_state, horshoes)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -1951,7 +1966,7 @@ static MACHINE_CONFIG_DERIVED( palamed, plotting )
|
|||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(palamed_map)
|
MCFG_CPU_PROGRAM_MAP(palamed_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,palamed)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, palamed)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
|
|
||||||
@ -1961,15 +1976,15 @@ static MACHINE_CONFIG_DERIVED( cachat, plotting )
|
|||||||
MCFG_CPU_MODIFY("maincpu")
|
MCFG_CPU_MODIFY("maincpu")
|
||||||
MCFG_CPU_PROGRAM_MAP(cachat_map)
|
MCFG_CPU_PROGRAM_MAP(cachat_map)
|
||||||
|
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,cachat)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_1cpu_state, cachat)
|
||||||
MACHINE_CONFIG_END
|
MACHINE_CONFIG_END
|
||||||
|
|
||||||
static MACHINE_CONFIG_START( evilston, taitol_state )
|
static MACHINE_CONFIG_START( evilston, taitol_2cpu_state )
|
||||||
|
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* not verified */
|
MCFG_CPU_ADD("maincpu", Z80, XTAL_13_33056MHz/2) /* not verified */
|
||||||
MCFG_CPU_PROGRAM_MAP(evilston_map)
|
MCFG_CPU_PROGRAM_MAP(evilston_map)
|
||||||
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state,irq_callback)
|
MCFG_CPU_IRQ_ACKNOWLEDGE_DRIVER(taitol_state, irq_callback)
|
||||||
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", taitol_state, vbl_interrupt, "screen", 0, 1)
|
||||||
|
|
||||||
MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/3) /* not verified */
|
MCFG_CPU_ADD("audiocpu", Z80, XTAL_12MHz/3) /* not verified */
|
||||||
@ -1979,8 +1994,8 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
|
|||||||
|
|
||||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
MCFG_QUANTUM_TIME(attotime::from_hz(6000))
|
||||||
|
|
||||||
MCFG_MACHINE_START_OVERRIDE(taitol_state,taito_l)
|
MCFG_MACHINE_START_OVERRIDE(taitol_state, taito_l)
|
||||||
MCFG_MACHINE_RESET_OVERRIDE(taitol_state,evilston)
|
MCFG_MACHINE_RESET_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
@ -1995,7 +2010,7 @@ static MACHINE_CONFIG_START( evilston, taitol_state )
|
|||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", taito_l)
|
||||||
MCFG_PALETTE_ADD("palette", 256)
|
MCFG_PALETTE_ADD("palette", 256)
|
||||||
|
|
||||||
MCFG_VIDEO_START_OVERRIDE(taitol_state,taitol)
|
MCFG_VIDEO_START_OVERRIDE(taitol_state, taito_l)
|
||||||
|
|
||||||
/* sound hardware */
|
/* sound hardware */
|
||||||
MCFG_SPEAKER_STANDARD_MONO("mono")
|
MCFG_SPEAKER_STANDARD_MONO("mono")
|
||||||
@ -2560,22 +2575,21 @@ ROM_END
|
|||||||
|
|
||||||
|
|
||||||
// bits 7..0 => bits 0..7
|
// bits 7..0 => bits 0..7
|
||||||
DRIVER_INIT_MEMBER(taitol_state,plottinga)
|
DRIVER_INIT_MEMBER(taitol_1cpu_state, plottinga)
|
||||||
{
|
{
|
||||||
u8 tab[256];
|
u8 tab[256];
|
||||||
u8 *p;
|
u8 *p;
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < 256; i++)
|
for (int i = 0; i < 256; i++)
|
||||||
{
|
{
|
||||||
int j, v = 0;
|
int v = 0;
|
||||||
for (j = 0; j < 8; j++)
|
for (int j = 0; j < 8; j++)
|
||||||
if (i & (1 << j))
|
if (i & (1 << j))
|
||||||
v |= 1 << (7 - j);
|
v |= 1 << (7 - j);
|
||||||
tab[i] = v;
|
tab[i] = v;
|
||||||
}
|
}
|
||||||
p = memregion("maincpu")->base();
|
p = memregion("maincpu")->base();
|
||||||
for (i = 0; i < 0x10000; i++)
|
for (int i = 0; i < 0x10000; i++)
|
||||||
{
|
{
|
||||||
*p = tab[*p];
|
*p = tab[*p];
|
||||||
p++;
|
p++;
|
||||||
@ -2600,7 +2614,7 @@ GAME( 1988, kurikintj, kurikint, kurikint, kurikintj, driver_device, 0,
|
|||||||
GAME( 1988, kurikinta, kurikint, kurikint, kurikinta, driver_device, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World, prototype?)", 0 )
|
GAME( 1988, kurikinta, kurikint, kurikint, kurikinta, driver_device, 0, ROT0, "Taito Corporation Japan", "Kuri Kinton (World, prototype?)", 0 )
|
||||||
|
|
||||||
GAME( 1989, plotting, 0, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 1)", 0 )
|
GAME( 1989, plotting, 0, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 1)", 0 )
|
||||||
GAME( 1989, plottinga, plotting, plotting, plotting, taitol_state, plottinga, ROT0, "Taito Corporation Japan", "Plotting (World set 2, protected)", 0 )
|
GAME( 1989, plottinga, plotting, plotting, plotting, taitol_1cpu_state, plottinga, ROT0, "Taito Corporation Japan", "Plotting (World set 2, protected)", 0 )
|
||||||
GAME( 1989, plottingb, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 3, earliest version)", 0 )
|
GAME( 1989, plottingb, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation Japan", "Plotting (World set 3, earliest version)", 0 )
|
||||||
GAME( 1989, plottingu, plotting, plotting, plottingu, driver_device, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 )
|
GAME( 1989, plottingu, plotting, plotting, plottingu, driver_device, 0, ROT0, "Taito America Corporation", "Plotting (US)", 0 )
|
||||||
GAME( 1989, flipull, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation", "Flipull (Japan)", 0 )
|
GAME( 1989, flipull, plotting, plotting, plotting, driver_device, 0, ROT0, "Taito Corporation", "Flipull (Japan)", 0 )
|
||||||
|
@ -8,12 +8,13 @@ class taitol_state : public driver_device
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
taitol_state(const machine_config &mconfig, device_type type, const char *tag)
|
taitol_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag),
|
: driver_device(mconfig, type, tag)
|
||||||
m_maincpu(*this, "maincpu"),
|
, m_main_cpu(*this, "maincpu")
|
||||||
m_audiocpu(*this, "audiocpu"),
|
, m_main_prg(*this, "maincpu")
|
||||||
m_msm(*this, "msm"),
|
, m_main_bnk(*this, "bank1")
|
||||||
m_gfxdecode(*this, "gfxdecode"),
|
, m_ram_bnks(*this, "bank%u", 2)
|
||||||
m_palette(*this, "palette")
|
, m_gfxdecode(*this, "gfxdecode")
|
||||||
|
, m_palette(*this, "palette")
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,38 +38,11 @@ public:
|
|||||||
u8 *m_current_base[4];
|
u8 *m_current_base[4];
|
||||||
|
|
||||||
int m_cur_rombank;
|
int m_cur_rombank;
|
||||||
int m_cur_rombank2;
|
|
||||||
int m_cur_rambank[4];
|
int m_cur_rambank[4];
|
||||||
int m_irq_adr_table[3];
|
int m_irq_adr_table[3];
|
||||||
int m_irq_enable;
|
int m_irq_enable;
|
||||||
int m_adpcm_pos;
|
|
||||||
int m_adpcm_data;
|
|
||||||
int m_trackx;
|
|
||||||
int m_tracky;
|
|
||||||
int m_mux_ctrl;
|
|
||||||
int m_extport;
|
|
||||||
int m_last_irq_level;
|
int m_last_irq_level;
|
||||||
int m_high;
|
int m_high;
|
||||||
int m_high2;
|
|
||||||
int m_last_data_adr;
|
|
||||||
int m_last_data;
|
|
||||||
int m_cur_bank;
|
|
||||||
|
|
||||||
const u8 *m_mcu_reply;
|
|
||||||
int m_mcu_pos;
|
|
||||||
int m_mcu_reply_len;
|
|
||||||
|
|
||||||
const char *m_porte0_tag;
|
|
||||||
const char *m_porte1_tag;
|
|
||||||
const char *m_portf0_tag;
|
|
||||||
const char *m_portf1_tag;
|
|
||||||
|
|
||||||
/* devices */
|
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
optional_device<cpu_device> m_audiocpu;
|
|
||||||
optional_device<msm5205_device> m_msm;
|
|
||||||
required_device<gfxdecode_device> m_gfxdecode;
|
|
||||||
required_device<palette_device> m_palette;
|
|
||||||
|
|
||||||
/* memory buffers */
|
/* memory buffers */
|
||||||
u8 m_rambanks[0x1000 * 12];
|
u8 m_rambanks[0x1000 * 12];
|
||||||
@ -79,60 +53,25 @@ public:
|
|||||||
DECLARE_WRITE8_MEMBER(irq_enable_w);
|
DECLARE_WRITE8_MEMBER(irq_enable_w);
|
||||||
DECLARE_READ8_MEMBER(irq_enable_r);
|
DECLARE_READ8_MEMBER(irq_enable_r);
|
||||||
DECLARE_WRITE8_MEMBER(rombankswitch_w);
|
DECLARE_WRITE8_MEMBER(rombankswitch_w);
|
||||||
DECLARE_WRITE8_MEMBER(rombank2switch_w);
|
|
||||||
DECLARE_READ8_MEMBER(rombankswitch_r);
|
DECLARE_READ8_MEMBER(rombankswitch_r);
|
||||||
DECLARE_READ8_MEMBER(rombank2switch_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(rambankswitch_w);
|
DECLARE_WRITE8_MEMBER(rambankswitch_w);
|
||||||
DECLARE_READ8_MEMBER(rambankswitch_r);
|
DECLARE_READ8_MEMBER(rambankswitch_r);
|
||||||
DECLARE_WRITE8_MEMBER(bank0_w);
|
DECLARE_WRITE8_MEMBER(bank0_w);
|
||||||
DECLARE_WRITE8_MEMBER(bank1_w);
|
DECLARE_WRITE8_MEMBER(bank1_w);
|
||||||
DECLARE_WRITE8_MEMBER(bank2_w);
|
DECLARE_WRITE8_MEMBER(bank2_w);
|
||||||
DECLARE_WRITE8_MEMBER(bank3_w);
|
DECLARE_WRITE8_MEMBER(bank3_w);
|
||||||
DECLARE_WRITE8_MEMBER(control2_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(mcu_data_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(mcu_control_w);
|
DECLARE_WRITE8_MEMBER(mcu_control_w);
|
||||||
DECLARE_READ8_MEMBER(mcu_data_r);
|
|
||||||
DECLARE_READ8_MEMBER(mcu_control_r);
|
DECLARE_READ8_MEMBER(mcu_control_r);
|
||||||
DECLARE_READ8_MEMBER(mux_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(mux_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(mux_ctrl_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(champwr_msm5205_lo_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(champwr_msm5205_hi_w);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_tracky_reset_r);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_trackx_reset_r);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_tracky_lo_r);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_tracky_hi_r);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_trackx_lo_r);
|
|
||||||
DECLARE_READ8_MEMBER(horshoes_trackx_hi_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(horshoes_bankg_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(taitol_bankc_w);
|
DECLARE_WRITE8_MEMBER(taitol_bankc_w);
|
||||||
DECLARE_READ8_MEMBER(taitol_bankc_r);
|
DECLARE_READ8_MEMBER(taitol_bankc_r);
|
||||||
DECLARE_WRITE8_MEMBER(taitol_control_w);
|
DECLARE_WRITE8_MEMBER(taitol_control_w);
|
||||||
DECLARE_READ8_MEMBER(taitol_control_r);
|
DECLARE_READ8_MEMBER(taitol_control_r);
|
||||||
DECLARE_READ8_MEMBER(portA_r);
|
|
||||||
DECLARE_READ8_MEMBER(portB_r);
|
|
||||||
DECLARE_READ8_MEMBER(extport_select_and_ym2203_r);
|
|
||||||
DECLARE_WRITE8_MEMBER(champwr_msm5205_start_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(champwr_msm5205_stop_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(champwr_msm5205_volume_w);
|
|
||||||
DECLARE_WRITE8_MEMBER(portA_w);
|
|
||||||
DECLARE_DRIVER_INIT(plottinga);
|
|
||||||
TILE_GET_INFO_MEMBER(get_bg18_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg18_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_bg19_tile_info);
|
TILE_GET_INFO_MEMBER(get_bg19_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(get_ch1a_tile_info);
|
TILE_GET_INFO_MEMBER(get_ch1a_tile_info);
|
||||||
DECLARE_MACHINE_START(taito_l);
|
DECLARE_MACHINE_START(taito_l);
|
||||||
DECLARE_MACHINE_RESET(fhawk);
|
DECLARE_VIDEO_START(taito_l);
|
||||||
DECLARE_VIDEO_START(taitol);
|
DECLARE_MACHINE_RESET(taito_l);
|
||||||
DECLARE_MACHINE_RESET(kurikint);
|
|
||||||
DECLARE_MACHINE_RESET(plotting);
|
|
||||||
DECLARE_MACHINE_RESET(evilston);
|
|
||||||
DECLARE_MACHINE_RESET(champwr);
|
|
||||||
DECLARE_MACHINE_RESET(raimais);
|
|
||||||
DECLARE_MACHINE_RESET(puzznic);
|
|
||||||
DECLARE_MACHINE_RESET(horshoes);
|
|
||||||
DECLARE_MACHINE_RESET(palamed);
|
|
||||||
DECLARE_MACHINE_RESET(cachat);
|
|
||||||
u32 screen_update_taitol(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
u32 screen_update_taitol(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void screen_eof_taitol(screen_device &screen, bool state);
|
void screen_eof_taitol(screen_device &screen, bool state);
|
||||||
TIMER_DEVICE_CALLBACK_MEMBER(vbl_interrupt);
|
TIMER_DEVICE_CALLBACK_MEMBER(vbl_interrupt);
|
||||||
@ -149,10 +88,223 @@ public:
|
|||||||
void taitol_bg19_m(int offset);
|
void taitol_bg19_m(int offset);
|
||||||
void taitol_char1a_m(int offset);
|
void taitol_char1a_m(int offset);
|
||||||
void taitol_obj1b_m(int offset);
|
void taitol_obj1b_m(int offset);
|
||||||
void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void palette_notifier(int addr);
|
void palette_notifier(int addr);
|
||||||
void state_register();
|
|
||||||
void taito_machine_reset();
|
|
||||||
void bank_w(address_space &space, offs_t offset, u8 data, int banknum);
|
void bank_w(address_space &space, offs_t offset, u8 data, int banknum);
|
||||||
DECLARE_WRITE_LINE_MEMBER(champwr_msm5205_vck);
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register();
|
||||||
|
virtual void taito_machine_reset();
|
||||||
|
|
||||||
|
required_device<cpu_device> m_main_cpu;
|
||||||
|
required_region_ptr<u8> m_main_prg;
|
||||||
|
required_memory_bank m_main_bnk;
|
||||||
|
required_memory_bank_array<4> m_ram_bnks;
|
||||||
|
required_device<gfxdecode_device> m_gfxdecode;
|
||||||
|
required_device<palette_device> m_palette;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class taitol_2cpu_state : public taitol_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
taitol_2cpu_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_state(mconfig, type, tag)
|
||||||
|
, m_audio_cpu(*this, "audiocpu")
|
||||||
|
, m_audio_prg(*this, "audiocpu")
|
||||||
|
, m_audio_bnk(*this, "bank7")
|
||||||
|
, m_dswa(*this, "DSWA")
|
||||||
|
, m_dswb(*this, "DSWB")
|
||||||
|
, m_in0(*this, "IN0")
|
||||||
|
, m_in1(*this, "IN1")
|
||||||
|
, m_in2(*this, "IN2")
|
||||||
|
, m_mux_ctrl(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(control2_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(sound_bankswitch_w);
|
||||||
|
DECLARE_READ8_MEMBER(mux_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(mux_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(mux_ctrl_w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
required_device<cpu_device> m_audio_cpu;
|
||||||
|
required_region_ptr<u8> m_audio_prg;
|
||||||
|
required_memory_bank m_audio_bnk;
|
||||||
|
|
||||||
|
required_ioport m_dswa;
|
||||||
|
required_ioport m_dswb;
|
||||||
|
required_ioport m_in0;
|
||||||
|
required_ioport m_in1;
|
||||||
|
required_ioport m_in2;
|
||||||
|
|
||||||
|
u8 m_mux_ctrl;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class taitol_3cpu_state : public taitol_2cpu_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
taitol_3cpu_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_2cpu_state(mconfig, type, tag)
|
||||||
|
, m_slave_prg(*this, "slave")
|
||||||
|
, m_slave_bnk(*this, "bank6")
|
||||||
|
, m_cur_rombank2(0)
|
||||||
|
, m_high2(0)
|
||||||
|
, m_cur_audio_bnk(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(rombank2switch_w);
|
||||||
|
DECLARE_READ8_MEMBER(rombank2switch_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(portA_w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
required_region_ptr<u8> m_slave_prg;
|
||||||
|
required_memory_bank m_slave_bnk;
|
||||||
|
|
||||||
|
u8 m_cur_rombank2;
|
||||||
|
u8 m_high2;
|
||||||
|
u8 m_cur_audio_bnk;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class champwr_state : public taitol_3cpu_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
champwr_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_3cpu_state(mconfig, type, tag)
|
||||||
|
, m_msm(*this, "msm")
|
||||||
|
, m_adpcm_rgn(*this, "adpcm")
|
||||||
|
, m_adpcm_pos(0)
|
||||||
|
, m_adpcm_data(-1)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_WRITE_LINE_MEMBER(msm5205_vck);
|
||||||
|
|
||||||
|
DECLARE_WRITE8_MEMBER(msm5205_lo_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(msm5205_hi_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(msm5205_start_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(msm5205_stop_w);
|
||||||
|
DECLARE_WRITE8_MEMBER(msm5205_volume_w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
required_device<msm5205_device> m_msm;
|
||||||
|
required_region_ptr<u8> m_adpcm_rgn;
|
||||||
|
|
||||||
|
int m_adpcm_pos;
|
||||||
|
int m_adpcm_data;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class taitol_1cpu_state : public taitol_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
taitol_1cpu_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_state(mconfig, type, tag)
|
||||||
|
, m_ymsnd(*this, "ymsnd")
|
||||||
|
, m_porte0_tag(nullptr)
|
||||||
|
, m_porte1_tag(nullptr)
|
||||||
|
, m_portf0_tag(nullptr)
|
||||||
|
, m_portf1_tag(nullptr)
|
||||||
|
, m_extport(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_READ8_MEMBER(portA_r);
|
||||||
|
DECLARE_READ8_MEMBER(portB_r);
|
||||||
|
DECLARE_READ8_MEMBER(extport_select_and_ym2203_r);
|
||||||
|
|
||||||
|
DECLARE_DRIVER_INIT(plottinga);
|
||||||
|
|
||||||
|
DECLARE_MACHINE_RESET(plotting);
|
||||||
|
DECLARE_MACHINE_RESET(puzznic);
|
||||||
|
DECLARE_MACHINE_RESET(palamed);
|
||||||
|
DECLARE_MACHINE_RESET(cachat);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
required_device<ym2203_device> m_ymsnd;
|
||||||
|
|
||||||
|
char const *m_porte0_tag;
|
||||||
|
char const *m_porte1_tag;
|
||||||
|
char const *m_portf0_tag;
|
||||||
|
char const *m_portf1_tag;
|
||||||
|
|
||||||
|
int m_extport;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class puzznic_state : public taitol_1cpu_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
puzznic_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_1cpu_state(mconfig, type, tag)
|
||||||
|
, m_mcu_reply(nullptr)
|
||||||
|
, m_mcu_pos(0)
|
||||||
|
, m_mcu_reply_len(0)
|
||||||
|
, m_last_data_adr(0)
|
||||||
|
, m_last_data(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_READ8_MEMBER(mcu_data_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(mcu_data_w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
u8 const * m_mcu_reply;
|
||||||
|
int m_mcu_pos;
|
||||||
|
int m_mcu_reply_len;
|
||||||
|
int m_last_data_adr;
|
||||||
|
int m_last_data;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class horshoes_state : public taitol_1cpu_state
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
horshoes_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
|
: taitol_1cpu_state(mconfig, type, tag)
|
||||||
|
, m_analog0(*this, "AN0")
|
||||||
|
, m_analog1(*this, "AN1")
|
||||||
|
, m_trackx(0)
|
||||||
|
, m_tracky(0)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
DECLARE_READ8_MEMBER(tracky_reset_r);
|
||||||
|
DECLARE_READ8_MEMBER(trackx_reset_r);
|
||||||
|
DECLARE_READ8_MEMBER(tracky_lo_r);
|
||||||
|
DECLARE_READ8_MEMBER(tracky_hi_r);
|
||||||
|
DECLARE_READ8_MEMBER(trackx_lo_r);
|
||||||
|
DECLARE_READ8_MEMBER(trackx_hi_r);
|
||||||
|
DECLARE_WRITE8_MEMBER(bankg_w);
|
||||||
|
|
||||||
|
DECLARE_MACHINE_RESET(horshoes);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void state_register() override;
|
||||||
|
virtual void taito_machine_reset() override;
|
||||||
|
|
||||||
|
required_ioport m_analog0;
|
||||||
|
required_ioport m_analog1;
|
||||||
|
|
||||||
|
int m_trackx;
|
||||||
|
int m_tracky;
|
||||||
};
|
};
|
||||||
|
@ -56,7 +56,7 @@ TILE_GET_INFO_MEMBER(taitol_state::get_ch1a_tile_info)
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
VIDEO_START_MEMBER(taitol_state,taitol)
|
VIDEO_START_MEMBER(taitol_state, taito_l)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -83,7 +83,7 @@ VIDEO_START_MEMBER(taitol_state,taitol)
|
|||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
WRITE8_MEMBER(taitol_state::horshoes_bankg_w)
|
WRITE8_MEMBER(horshoes_state::bankg_w)
|
||||||
{
|
{
|
||||||
if (m_horshoes_gfxbank != data)
|
if (m_horshoes_gfxbank != data)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user