mirror of
https://github.com/holub/mame
synced 2025-07-05 18:08:04 +03:00
commit
94de598e97
@ -3550,8 +3550,8 @@ files {
|
||||
MAME_DIR .. "src/mame/video/bublbobl.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/buggychl.cpp",
|
||||
MAME_DIR .. "src/mame/includes/buggychl.h",
|
||||
MAME_DIR .. "src/mame/machine/buggychl.cpp",
|
||||
MAME_DIR .. "src/mame/machine/buggychl.h",
|
||||
MAME_DIR .. "src/mame/machine/taito68705interface.cpp",
|
||||
MAME_DIR .. "src/mame/machine/taito68705interface.h",
|
||||
MAME_DIR .. "src/mame/video/buggychl.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/capr1.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/caprcyc.cpp",
|
||||
@ -3612,7 +3612,6 @@ files {
|
||||
MAME_DIR .. "src/mame/drivers/lgp.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/lkage.cpp",
|
||||
MAME_DIR .. "src/mame/includes/lkage.h",
|
||||
MAME_DIR .. "src/mame/machine/lkage.cpp",
|
||||
MAME_DIR .. "src/mame/video/lkage.cpp",
|
||||
MAME_DIR .. "src/mame/drivers/lsasquad.cpp",
|
||||
MAME_DIR .. "src/mame/includes/lsasquad.h",
|
||||
|
@ -628,8 +628,8 @@ WRITE8_MEMBER(fortyl_state::to_main_w)
|
||||
static ADDRESS_MAP_START( 40love_map, AS_PROGRAM, 8, fortyl_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x87ff) AM_RAM /* M5517P on main board */
|
||||
AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_mcu_r, buggychl_mcu_w)
|
||||
AM_RANGE(0x8801, 0x8801) AM_DEVREAD("bmcu", buggychl_mcu_device, buggychl_mcu_status_r) AM_WRITE(pix1_mcu_w) //pixel layer related
|
||||
AM_RANGE(0x8800, 0x8800) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0x8801, 0x8801) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_status_r) AM_WRITE(pix1_mcu_w) //pixel layer related
|
||||
AM_RANGE(0x8802, 0x8802) AM_WRITE(bank_select_w)
|
||||
AM_RANGE(0x8803, 0x8803) AM_READWRITE(pix2_r, pix2_w) //pixel layer related
|
||||
AM_RANGE(0x8804, 0x8804) AM_READWRITE(from_snd_r, sound_command_w)
|
||||
@ -1011,8 +1011,6 @@ MACHINE_RESET_MEMBER(fortyl_state,common)
|
||||
|
||||
MACHINE_RESET_MEMBER(fortyl_state,40love)
|
||||
{
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
MACHINE_RESET_CALL_MEMBER(common);
|
||||
}
|
||||
|
||||
@ -1046,9 +1044,7 @@ static MACHINE_CONFIG_START( 40love, fortyl_state )
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(fortyl_state, irq0_line_hold, 2*60) /* source/number of IRQs is unknown */
|
||||
|
||||
MCFG_CPU_ADD("mcu",M68705,18432000/6) /* OK */
|
||||
MCFG_CPU_PROGRAM_MAP(buggychl_mcu_map)
|
||||
MCFG_DEVICE_ADD("bmcu", BUGGYCHL_MCU, 0)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, 18432000/6) /* OK */
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* high interleave to ensure proper synchronization of CPUs */
|
||||
MCFG_MACHINE_START_OVERRIDE(fortyl_state,40love)
|
||||
@ -1107,9 +1103,7 @@ static MACHINE_CONFIG_START( undoukai, fortyl_state )
|
||||
MCFG_CPU_PROGRAM_MAP(sound_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(fortyl_state, irq0_line_hold, 2*60) /* source/number of IRQs is unknown */
|
||||
|
||||
// MCFG_CPU_ADD("mcu",M68705,18432000/6)
|
||||
// MCFG_CPU_PROGRAM_MAP(buggychl_mcu_map)
|
||||
// MCFG_DEVICE_ADD("bmcu", BUGGYCHL_MCU, 0)
|
||||
// MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, 18432000/6)
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(fortyl_state,undoukai)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(fortyl_state,undoukai) /* init machine */
|
||||
@ -1175,7 +1169,7 @@ ROM_START( 40love )
|
||||
ROM_LOAD( "a30-12.u38", 0x8000, 0x2000, CRC(f7afd475) SHA1(dd09d5ca7fec5e0454f9efb8ebc722561010f124) )
|
||||
ROM_LOAD( "a30-13.u39", 0xa000, 0x2000, CRC(e806630f) SHA1(09022aae88ea0171a0aacf3260fa3a95e8faeb21) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a30-14" , 0x0000, 0x0800, CRC(c4690279) SHA1(60bc77e03b9be434bb97a374a2fedeb8d049a660) )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx1", 0 )
|
||||
|
@ -346,8 +346,8 @@ static ADDRESS_MAP_START( bigevglf_sub_portmap, AS_IO, 8, bigevglf_state )
|
||||
AM_RANGE(0x06, 0x06) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0x07, 0x07) AM_READNOP
|
||||
AM_RANGE(0x08, 0x08) AM_WRITE(beg_port08_w) /* muxed port select + other unknown stuff */
|
||||
AM_RANGE(0x0b, 0x0b) AM_READ(bigevglf_mcu_r)
|
||||
AM_RANGE(0x0c, 0x0c) AM_WRITE(bigevglf_mcu_w)
|
||||
AM_RANGE(0x0b, 0x0b) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_r)
|
||||
AM_RANGE(0x0c, 0x0c) AM_DEVWRITE("bmcu", taito68705_mcu_device, mcu_w)
|
||||
AM_RANGE(0x0e, 0x0e) AM_WRITENOP /* 0-enable MCU, 1-keep reset line ASSERTED; D0 goes to the input of ls74 and the /Q of this ls74 goes to reset line on 68705 */
|
||||
AM_RANGE(0x10, 0x17) AM_WRITE(beg13_a_clr_w)
|
||||
AM_RANGE(0x18, 0x1f) AM_WRITE(beg13_b_set_w)
|
||||
@ -376,20 +376,6 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, bigevglf_state )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/*********************************************************************************/
|
||||
/* MCU */
|
||||
|
||||
static ADDRESS_MAP_START( m68705_map, AS_PROGRAM, 8, bigevglf_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(bigevglf_68705_port_a_r, bigevglf_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(bigevglf_68705_port_b_r, bigevglf_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READWRITE(bigevglf_68705_port_c_r, bigevglf_68705_port_c_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(bigevglf_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(bigevglf_68705_ddr_b_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_WRITE(bigevglf_68705_ddr_c_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static const gfx_layout gfxlayout =
|
||||
@ -424,20 +410,10 @@ void bigevglf_state::machine_start()
|
||||
save_item(NAME(m_from_sound));
|
||||
save_item(NAME(m_sound_state));
|
||||
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
|
||||
save_item(NAME(m_mcu_coin_bit5));
|
||||
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_port_c_in));
|
||||
save_item(NAME(m_port_c_out));
|
||||
save_item(NAME(m_ddr_c));
|
||||
save_item(NAME(m_from_mcu));
|
||||
|
||||
}
|
||||
|
||||
void bigevglf_state::machine_reset()
|
||||
@ -457,20 +433,7 @@ void bigevglf_state::machine_reset()
|
||||
m_from_sound = 0;
|
||||
m_sound_state = 0;
|
||||
|
||||
m_main_sent = 0;
|
||||
m_mcu_sent = 0;
|
||||
m_mcu_coin_bit5 = 0;
|
||||
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_port_c_in = 0;
|
||||
m_port_c_out = 0;
|
||||
m_ddr_c = 0;
|
||||
m_from_mcu = 0;
|
||||
}
|
||||
|
||||
|
||||
@ -493,8 +456,7 @@ static MACHINE_CONFIG_START( bigevglf, bigevglf_state )
|
||||
2 irqs/frame give good music tempo but also SOUND ERROR in test mode,
|
||||
4 irqs/frame give SOUND OK in test mode but music seems to be running too fast */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705,2000000) /* ??? */
|
||||
MCFG_CPU_PROGRAM_MAP(m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU_BEG, 2000000) /* ??? */
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* 10 CPU slices per frame - interleaving is forced on the fly */
|
||||
|
||||
@ -559,7 +521,7 @@ ROM_START( bigevglf )
|
||||
ROM_LOAD( "a67-17", 0x4000, 0x4000, CRC(9f57deae) SHA1(dbdb3d77c3de0113ef6671aec854e4e44ee162ef))
|
||||
ROM_LOAD( "a67-18", 0x8000, 0x4000, CRC(40d54fed) SHA1(bfa0922809bffafec15d3ef59ac8b8ad653860a1))
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a67_19-1", 0x0000, 0x0800, CRC(25691658) SHA1(aabf47abac43abe2ffed18ead1cb94e587149e6e))
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", 0 )
|
||||
@ -590,7 +552,7 @@ ROM_START( bigevglfj )
|
||||
ROM_LOAD( "a67-17", 0x4000, 0x4000, CRC(9f57deae) SHA1(dbdb3d77c3de0113ef6671aec854e4e44ee162ef))
|
||||
ROM_LOAD( "a67-18", 0x8000, 0x4000, CRC(40d54fed) SHA1(bfa0922809bffafec15d3ef59ac8b8ad653860a1))
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a67_19-1", 0x0000, 0x0800, CRC(25691658) SHA1(aabf47abac43abe2ffed18ead1cb94e587149e6e))
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", 0 )
|
||||
|
@ -120,8 +120,8 @@ static ADDRESS_MAP_START( bking3_io_map, AS_IO, 8, bking_state )
|
||||
// AM_RANGE(0x0c, 0x0c) AM_WRITE(bking_eport2_w) this is not shown to be connected anywhere
|
||||
AM_RANGE(0x0d, 0x0d) AM_WRITE(bking_hitclr_w)
|
||||
AM_RANGE(0x07, 0x1f) AM_READ(bking_pos_r)
|
||||
AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_mcu_r, buggychl_mcu_w)
|
||||
AM_RANGE(0x4f, 0x4f) AM_DEVREAD("bmcu", buggychl_mcu_device, buggychl_mcu_status_r) AM_WRITE(unk_w)
|
||||
AM_RANGE(0x2f, 0x2f) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0x4f, 0x4f) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_status_r) AM_WRITE(unk_w)
|
||||
AM_RANGE(0x60, 0x60) AM_READ(bking3_extrarom_r)
|
||||
AM_RANGE(0x6f, 0x6f) AM_READWRITE(bking3_ext_check_r, bking3_addr_h_w)
|
||||
AM_RANGE(0x8f, 0x8f) AM_WRITE(bking3_addr_l_w)
|
||||
@ -140,68 +140,6 @@ static ADDRESS_MAP_START( bking_audio_map, AS_PROGRAM, 8, bking_state )
|
||||
AM_RANGE(0xe000, 0xefff) AM_ROM /* Space for diagnostic ROM */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
#if 0
|
||||
READ8_MEMBER(bking_state::bking3_68705_port_a_r)
|
||||
{
|
||||
//printf("port_a_r = %02X\n",(m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a));
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bking_state::bking3_68705_port_a_w)
|
||||
{
|
||||
m_port_a_out = data;
|
||||
// printf("port_a_out = %02X\n",data);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bking_state::bking3_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(bking_state::bking3_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bking_state::bking3_68705_port_b_w)
|
||||
{
|
||||
// if(data != 0xff)
|
||||
// printf("port_b_out = %02X\n",data);
|
||||
|
||||
if (~data & 0x02)
|
||||
{
|
||||
m_port_a_in = from_main;
|
||||
if (main_sent) m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
main_sent = 0;
|
||||
}
|
||||
|
||||
if (~data & 0x04)
|
||||
{
|
||||
/* 68705 is writing data for the Z80 */
|
||||
from_mcu = m_port_a_out;
|
||||
mcu_sent = 1;
|
||||
}
|
||||
|
||||
if(data != 0xff && data != 0xfb && data != 0xfd)
|
||||
printf("port_b_w = %X\n",data);
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bking_state::bking3_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(bking_state::bking3_68705_port_c_r)
|
||||
{
|
||||
int port_c_in = 0;
|
||||
if (main_sent) port_c_in |= 0x01;
|
||||
if (!mcu_sent) port_c_in |= 0x02;
|
||||
//logerror("%04x: 68705 port C read %02x\n",space.device().safe_pc(),port_c_in);
|
||||
return port_c_in;
|
||||
}
|
||||
#endif
|
||||
|
||||
static INPUT_PORTS_START( bking )
|
||||
PORT_START("IN0")
|
||||
@ -440,8 +378,6 @@ void bking_state::machine_reset()
|
||||
|
||||
MACHINE_RESET_MEMBER(bking_state,bking3)
|
||||
{
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
bking_state::machine_reset();
|
||||
|
||||
/* misc */
|
||||
@ -505,9 +441,7 @@ static MACHINE_CONFIG_DERIVED( bking3, bking )
|
||||
MCFG_CPU_MODIFY("main_cpu")
|
||||
MCFG_CPU_IO_MAP(bking3_io_map)
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705, XTAL_3MHz) /* xtal is 3MHz, divided by 4 internally */
|
||||
MCFG_CPU_PROGRAM_MAP(buggychl_mcu_map)
|
||||
MCFG_DEVICE_ADD("bmcu", BUGGYCHL_MCU, 0)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, XTAL_3MHz) /* xtal is 3MHz, divided by 4 internally */
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(bking_state,bking3)
|
||||
MCFG_MACHINE_RESET_OVERRIDE(bking_state,bking3)
|
||||
@ -774,7 +708,7 @@ ROM_START( bking3 )
|
||||
ROM_LOAD( "a24-19.4d", 0x1000, 0x1000, CRC(817f9c2a) SHA1(7365ecf2700e1fd13016408f5493f8d51aab5bbd) )
|
||||
ROM_LOAD( "a24-20.4b", 0x2000, 0x1000, CRC(0e9e16d6) SHA1(43c69602a8d9c34c527ce54472db84168acc4ef4) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a24_22.ic17", 0x000000, 0x000800, CRC(27c497d5) SHA1(c6c72bbf0537da53148fa0a56d412ab46129d29c) ) //M68705P5S uC 3MHz xtal
|
||||
|
||||
ROM_REGION( 0x6000, "gfx1", 0 ) /* Tiles */
|
||||
|
@ -389,9 +389,19 @@ static ADDRESS_MAP_START( tokio_map, AS_PROGRAM, 8, bublbobl_state )
|
||||
AM_RANGE(0xfb00, 0xfb00) AM_WRITE(tokio_videoctrl_w)
|
||||
AM_RANGE(0xfb80, 0xfb80) AM_WRITE(bublbobl_nmitrigger_w)
|
||||
AM_RANGE(0xfc00, 0xfc00) AM_READWRITE(bublbobl_sound_status_r, bublbobl_sound_command_w)
|
||||
AM_RANGE(0xfe00, 0xfe00) AM_READWRITE(tokio_mcu_r, tokio_mcu_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tokio_map_mcu, AS_PROGRAM, 8, bublbobl_state )
|
||||
AM_IMPORT_FROM(tokio_map)
|
||||
AM_RANGE(0xfe00, 0xfe00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tokio_map_bootleg, AS_PROGRAM, 8, bublbobl_state )
|
||||
AM_IMPORT_FROM(tokio_map)
|
||||
AM_RANGE(0xfe00, 0xfe00) AM_READ( tokiob_mcu_r )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( tokio_slave_map, AS_PROGRAM, 8, bublbobl_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0x97ff) AM_RAM AM_SHARE("share1")
|
||||
@ -619,7 +629,7 @@ static INPUT_PORTS_START( dland )
|
||||
PORT_DIPSETTING( 0x20, "100 (Cheat)")
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tokio )
|
||||
static INPUT_PORTS_START( tokio_base )
|
||||
PORT_START("DSW0")
|
||||
PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW A:1")
|
||||
PORT_DIPSETTING( 0x00, DEF_STR( Upright ) )
|
||||
@ -669,8 +679,8 @@ static INPUT_PORTS_START( tokio )
|
||||
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE1 )
|
||||
PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) PORT_IMPULSE(1)
|
||||
PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) PORT_IMPULSE(1)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bublbobl_state,tokio_main_sent_r, nullptr)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_CUSTOM_MEMBER(DEVICE_SELF, bublbobl_state,tokio_mcu_sent_r, nullptr)
|
||||
PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_SPECIAL ) // see INPUT_PORTS_START( tokio )
|
||||
PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_SPECIAL ) // see INPUT_PORTS_START( tokio )
|
||||
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
|
||||
@ -695,7 +705,13 @@ static INPUT_PORTS_START( tokio )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( tokio )
|
||||
PORT_INCLUDE( tokio_base )
|
||||
|
||||
PORT_MODIFY("IN0")
|
||||
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER("bmcu", taito68705_mcu_device, main_sent_r, nullptr)
|
||||
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM_MEMBER("bmcu", taito68705_mcu_device, mcu_sent_r, nullptr)
|
||||
INPUT_PORTS_END
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -744,15 +760,6 @@ MACHINE_RESET_MEMBER(bublbobl_state,common)
|
||||
MACHINE_START_MEMBER(bublbobl_state,tokio)
|
||||
{
|
||||
MACHINE_START_CALL_MEMBER(common);
|
||||
|
||||
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
save_item(NAME(m_from_mcu_latch));
|
||||
save_item(NAME(m_to_mcu_latch));
|
||||
save_item(NAME(m_old_portB));
|
||||
}
|
||||
|
||||
|
||||
@ -767,7 +774,7 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz
|
||||
MCFG_CPU_PROGRAM_MAP(tokio_map)
|
||||
MCFG_CPU_PROGRAM_MAP(tokio_map_mcu)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", bublbobl_state, irq0_line_hold)
|
||||
|
||||
MCFG_CPU_ADD("slave", Z80, MAIN_XTAL/4) // 6 MHz
|
||||
@ -777,12 +784,7 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
|
||||
MCFG_CPU_ADD("audiocpu", Z80, MAIN_XTAL/8) // 3 MHz
|
||||
MCFG_CPU_PROGRAM_MAP(tokio_sound_map) // NMIs are triggered by the main CPU, IRQs are triggered by the YM2203
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705_NEW, MAIN_XTAL/8) // 3 Mhz
|
||||
MCFG_M68705_PORTA_R_CB(READ8(bublbobl_state, tokio_mcu_porta_r))
|
||||
MCFG_M68705_PORTA_W_CB(WRITE8(bublbobl_state, tokio_mcu_porta_w))
|
||||
MCFG_M68705_PORTB_W_CB(WRITE8(bublbobl_state, tokio_mcu_portb_w))
|
||||
MCFG_M68705_PORTC_R_CB(READ8(bublbobl_state, tokio_mcu_portc_r))
|
||||
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MAIN_XTAL/8) // 3 Mhz
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
@ -816,9 +818,16 @@ static MACHINE_CONFIG_START( tokio, bublbobl_state )
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tokiob, tokio )
|
||||
MCFG_DEVICE_REMOVE("mcu")
|
||||
|
||||
MCFG_DEVICE_REMOVE("maincpu")
|
||||
MCFG_DEVICE_REMOVE("bmcu")
|
||||
|
||||
MCFG_CPU_ADD("maincpu", Z80, MAIN_XTAL/4) // 6 MHz
|
||||
MCFG_CPU_PROGRAM_MAP(tokio_map_bootleg)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", bublbobl_state, irq0_line_hold)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
|
||||
MACHINE_START_MEMBER(bublbobl_state,bublbobl)
|
||||
{
|
||||
MACHINE_START_CALL_MEMBER(common);
|
||||
@ -999,7 +1008,7 @@ ROM_START( tokio ) // newer japan set, has -1 revision of roms 02, 03 and 06
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
|
||||
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
|
||||
@ -1042,7 +1051,7 @@ ROM_START( tokioo ) // older japan set, has older roms 02, 03, 06
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
|
||||
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
|
||||
@ -1085,7 +1094,7 @@ ROM_START( tokiou )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* audio CPU */
|
||||
ROM_LOAD( "a71-07.ic10", 0x0000, 0x08000, CRC(f298cc7b) SHA1(ebf5c804aa07b7f198ec3e1f8d1e111cd89ebdf3) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller (68705P5) */
|
||||
ROM_LOAD( "a71__24.ic57", 0x0000, 0x0800, CRC(0f4b25de) SHA1(e2d82aa8d8cc6a86aaf5715ef9cb62f526fd5b11) )
|
||||
|
||||
ROM_REGION( 0x80000, "gfx1", ROMREGION_INVERT ) /* gfx roms, on gfx board */
|
||||
@ -1871,12 +1880,7 @@ DRIVER_INIT_MEMBER(bublbobl_state,tokio)
|
||||
m_video_enable = 1;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(bublbobl_state,tokiob)
|
||||
{
|
||||
DRIVER_INIT_CALL(tokio);
|
||||
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xfe00, 0xfe00, read8_delegate(FUNC(bublbobl_state::tokiob_mcu_r),this) );
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(bublbobl_state,dland)
|
||||
{
|
||||
@ -1902,7 +1906,7 @@ DRIVER_INIT_MEMBER(bublbobl_state,dland)
|
||||
GAME( 1986, tokio, 0, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (newer)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, tokioo, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito Corporation", "Tokio / Scramble Formation (older)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, tokiou, tokio, tokio, tokio, bublbobl_state, tokio, ROT90, "Taito America Corporation (Romstar license)", "Tokio / Scramble Formation (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, tokiob, tokio, tokiob, tokio, bublbobl_state, tokiob, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, tokiob, tokio, tokiob, tokio_base, bublbobl_state, tokio, ROT90, "bootleg", "Tokio / Scramble Formation (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
||||
GAME( 1986, bublbobl, 0, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, bublbobl1, bublbobl, bublbobl, bublbobl, bublbobl_state, bublbobl, ROT0, "Taito Corporation", "Bubble Bobble (Japan, Ver 0.0)", MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -140,8 +140,8 @@ static ADDRESS_MAP_START( buggychl_map, AS_PROGRAM, 8, buggychl_state )
|
||||
AM_RANGE(0xd200, 0xd200) AM_WRITE(bankswitch_w)
|
||||
AM_RANGE(0xd300, 0xd300) AM_DEVWRITE("watchdog", watchdog_timer_device, reset_w)
|
||||
AM_RANGE(0xd303, 0xd303) AM_WRITE(buggychl_sprite_lookup_bank_w)
|
||||
AM_RANGE(0xd400, 0xd400) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_mcu_r, buggychl_mcu_w)
|
||||
AM_RANGE(0xd401, 0xd401) AM_DEVREAD("bmcu", buggychl_mcu_device, buggychl_mcu_status_r)
|
||||
AM_RANGE(0xd400, 0xd400) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0xd401, 0xd401) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_status_r)
|
||||
AM_RANGE(0xd500, 0xd57f) AM_WRITEONLY AM_SHARE("spriteram")
|
||||
AM_RANGE(0xd600, 0xd600) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0xd601, 0xd601) AM_READ_PORT("DSW2")
|
||||
@ -347,8 +347,6 @@ void buggychl_state::machine_start()
|
||||
|
||||
void buggychl_state::machine_reset()
|
||||
{
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_sound_nmi_enable = 0;
|
||||
m_pending_nmi = 0;
|
||||
m_sl_bank = 0;
|
||||
@ -370,9 +368,8 @@ static MACHINE_CONFIG_START( buggychl, buggychl_state )
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(buggychl_state, irq0_line_hold, 60*60) /* irq is timed, tied to the cpu clock and not to vblank */
|
||||
/* nmi is caused by the main cpu */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705,8000000/2) /* 4 MHz */
|
||||
MCFG_CPU_PROGRAM_MAP(buggychl_mcu_map)
|
||||
MCFG_DEVICE_ADD("bmcu", BUGGYCHL_MCU, 0)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,8000000/2) /* 4 MHz */
|
||||
|
||||
|
||||
MCFG_WATCHDOG_ADD("watchdog")
|
||||
|
||||
@ -438,7 +435,7 @@ ROM_START( buggychl )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound Z80 */
|
||||
ROM_LOAD( "a22-24.28", 0x00000, 0x4000, CRC(1e7f841f) SHA1(2dc0787b08d32acb78291b689c02dbb83d04d08c) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 8k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 8k for the microcontroller */
|
||||
ROM_LOAD( "a22-19.31", 0x00000, 0x0800, CRC(06a71df0) SHA1(28183e6769e1471e7f28dc2a9f5b54e14b7ef339) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", 0 ) /* sprites */
|
||||
@ -468,7 +465,7 @@ ROM_START( buggychlt )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* sound Z80 */
|
||||
ROM_LOAD( "a22-24.28", 0x00000, 0x4000, CRC(1e7f841f) SHA1(2dc0787b08d32acb78291b689c02dbb83d04d08c) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 8k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 8k for the microcontroller */
|
||||
ROM_LOAD( "a22-19.31", 0x00000, 0x0800, CRC(06a71df0) SHA1(28183e6769e1471e7f28dc2a9f5b54e14b7ef339) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", 0 ) /* sprites */
|
||||
|
@ -70,7 +70,7 @@ static ADDRESS_MAP_START( flstory_map, AS_PROGRAM, 8, flstory_state )
|
||||
AM_RANGE(0x0000, 0xbfff) AM_ROM
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(flstory_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0xc800, 0xcfff) AM_RAM /* unknown */
|
||||
AM_RANGE(0xd000, 0xd000) AM_READWRITE(flstory_mcu_r, flstory_mcu_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_WRITENOP /* watchdog? */
|
||||
AM_RANGE(0xd002, 0xd002) AM_WRITENOP /* coin lock out? */
|
||||
AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
|
||||
@ -81,7 +81,7 @@ static ADDRESS_MAP_START( flstory_map, AS_PROGRAM, 8, flstory_state )
|
||||
AM_RANGE(0xd802, 0xd802) AM_READ_PORT("DSW2")
|
||||
AM_RANGE(0xd803, 0xd803) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xd804, 0xd804) AM_READ_PORT("P1")
|
||||
AM_RANGE(0xd805, 0xd805) AM_READ(flstory_mcu_status_r)
|
||||
AM_RANGE(0xd805, 0xd805) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_status_r)
|
||||
AM_RANGE(0xd806, 0xd806) AM_READ_PORT("P2")
|
||||
// AM_RANGE(0xda00, 0xda00) AM_WRITEONLY
|
||||
AM_RANGE(0xdc00, 0xdc9f) AM_RAM AM_SHARE("spriteram")
|
||||
@ -441,17 +441,6 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, flstory_state )
|
||||
AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostics ROM */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( flstory_m68705_map, AS_PROGRAM, 8, flstory_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(flstory_68705_port_a_r, flstory_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(flstory_68705_port_b_r, flstory_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READWRITE(flstory_68705_port_c_r, flstory_68705_port_c_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(flstory_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(flstory_68705_ddr_b_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_WRITE(flstory_68705_ddr_c_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
@ -992,22 +981,12 @@ void flstory_state::machine_start()
|
||||
save_item(NAME(m_snd_ctrl2));
|
||||
save_item(NAME(m_snd_ctrl3));
|
||||
/* mcu */
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_port_c_in));
|
||||
save_item(NAME(m_port_c_out));
|
||||
save_item(NAME(m_ddr_c));
|
||||
save_item(NAME(m_mcu_select));
|
||||
save_item(NAME(m_from_mcu));
|
||||
}
|
||||
|
||||
|
||||
|
||||
MACHINE_RESET_MEMBER(flstory_state,flstory)
|
||||
{
|
||||
MACHINE_RESET_CALL_MEMBER(ta7630);
|
||||
@ -1026,20 +1005,8 @@ MACHINE_RESET_MEMBER(flstory_state,flstory)
|
||||
m_snd_ctrl2 = 0;
|
||||
m_snd_ctrl3 = 0;
|
||||
/* mcu */
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
m_mcu_sent = 0;
|
||||
m_main_sent = 0;
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_port_c_in = 0;
|
||||
m_port_c_out = 0;
|
||||
m_ddr_c = 0;
|
||||
m_mcu_select = 0;
|
||||
m_from_mcu = 0;
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( flstory, flstory_state )
|
||||
@ -1054,8 +1021,7 @@ static MACHINE_CONFIG_START( flstory, flstory_state )
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(flstory_state, irq0_line_hold, 2*60) /* IRQ generated by ??? */
|
||||
/* NMI generated by the main CPU */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705, XTAL_18_432MHz/6) /* verified on pcb */
|
||||
MCFG_CPU_PROGRAM_MAP(flstory_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, XTAL_18_432MHz/6) /* verified on pcb */
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
@ -1316,7 +1282,7 @@ ROM_START( flstory )
|
||||
ROM_LOAD( "snd.22", 0x0000, 0x2000, CRC(d58b201d) SHA1(1c9c2936ec95a8fa920d58668bea420c5e15008f) )
|
||||
ROM_LOAD( "snd.23", 0x2000, 0x2000, CRC(25e7fd9d) SHA1(b9237459e3d8acf8502a693914e50714a37d515e) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a45.mcu", 0x0000, 0x0800, CRC(5378253c) SHA1(e1ae1ab01e470b896c1d74ad4088928602a21a1b) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1340,7 +1306,7 @@ ROM_START( flstoryj )
|
||||
ROM_LOAD( "a45_12.8", 0x0000, 0x2000, CRC(d6f593fb) SHA1(8551ef22c2cdd9df8d7949a178883f56ea56a4a2) )
|
||||
ROM_LOAD( "a45_13.9", 0x2000, 0x2000, CRC(451f92f9) SHA1(f4196e6d3420983b74001303936d086a48b10827) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a45.mcu", 0x0000, 0x0800, CRC(5378253c) SHA1(e1ae1ab01e470b896c1d74ad4088928602a21a1b) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1367,7 +1333,7 @@ ROM_START( onna34ro )
|
||||
ROM_LOAD( "a52-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) )
|
||||
ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) )
|
||||
|
||||
ROM_REGION( 0x0800, "cpu2", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a52-17.54c", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1394,7 +1360,7 @@ ROM_START( onna34roa )
|
||||
ROM_LOAD( "a52-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) )
|
||||
ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) )
|
||||
|
||||
ROM_REGION( 0x0800, "cpu2", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a52-17.54c", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1509,7 +1475,7 @@ ROM_START( victnine )
|
||||
ROM_LOAD( "a16-16.38", 0x8000, 0x2000, CRC(9395351b) SHA1(8f97bdf03dec47bcaaa62fb66c545566776116be) )
|
||||
ROM_LOAD( "a16-17.39", 0xa000, 0x2000, CRC(872270b3) SHA1(2298cb8ced6c3e9afb430faab1b38ba8f2fa93b5) )
|
||||
|
||||
ROM_REGION( 0x0800, "cpu2", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a16-18.mcu", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x10000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1578,7 +1544,7 @@ ROM_START( rumba )
|
||||
ROM_LOAD( "a23_09.bin", 0x2000, 0x2000, CRC(d0a101d3) SHA1(c92bb1ce67bec394fd8ce303d9e61eac12493b5d) )
|
||||
ROM_LOAD( "a23_10.bin", 0x4000, 0x2000, CRC(f9447bd4) SHA1(68c02249ca0e5b923cddb4bff8d090963b9c78e4) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a23-11.mc68705p5s", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x8000, "gfx1", ROMREGION_INVERT )
|
||||
|
@ -139,7 +139,6 @@ static ADDRESS_MAP_START( lkage_map, AS_PROGRAM, 8, lkage_state )
|
||||
AM_RANGE(0xf000, 0xf003) AM_RAM AM_SHARE("vreg") /* video registers */
|
||||
AM_RANGE(0xf060, 0xf060) AM_WRITE(lkage_sound_command_w)
|
||||
AM_RANGE(0xf061, 0xf061) AM_WRITENOP AM_READ(sound_status_r)
|
||||
AM_RANGE(0xf062, 0xf062) AM_READWRITE(lkage_mcu_r,lkage_mcu_w)
|
||||
AM_RANGE(0xf063, 0xf063) AM_WRITENOP /* pulsed; nmi on sound cpu? */
|
||||
AM_RANGE(0xf080, 0xf080) AM_READ_PORT("DSW1")
|
||||
AM_RANGE(0xf081, 0xf081) AM_READ_PORT("DSW2")
|
||||
@ -147,7 +146,6 @@ static ADDRESS_MAP_START( lkage_map, AS_PROGRAM, 8, lkage_state )
|
||||
AM_RANGE(0xf083, 0xf083) AM_READ_PORT("SYSTEM")
|
||||
AM_RANGE(0xf084, 0xf084) AM_READ_PORT("P1")
|
||||
AM_RANGE(0xf086, 0xf086) AM_READ_PORT("P2")
|
||||
AM_RANGE(0xf087, 0xf087) AM_READ(lkage_mcu_status_r)
|
||||
AM_RANGE(0xf0a0, 0xf0a3) AM_RAM /* unknown */
|
||||
AM_RANGE(0xf0c0, 0xf0c5) AM_RAM AM_SHARE("scroll")
|
||||
AM_RANGE(0xf0e1, 0xf0e1) AM_WRITENOP /* pulsed */
|
||||
@ -156,6 +154,18 @@ static ADDRESS_MAP_START( lkage_map, AS_PROGRAM, 8, lkage_state )
|
||||
AM_RANGE(0xf400, 0xffff) AM_RAM_WRITE(lkage_videoram_w) AM_SHARE("videoram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( lkage_map_mcu, AS_PROGRAM, 8, lkage_state )
|
||||
AM_IMPORT_FROM(lkage_map)
|
||||
AM_RANGE(0xf062, 0xf062) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0xf087, 0xf087) AM_DEVREAD("bmcu", taito68705_mcu_device, mcu_status_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( lkage_map_boot, AS_PROGRAM, 8, lkage_state )
|
||||
AM_IMPORT_FROM(lkage_map)
|
||||
AM_RANGE(0xf062, 0xf062) AM_READWRITE(fake_mcu_r,fake_mcu_w)
|
||||
AM_RANGE(0xf087, 0xf087) AM_READ(fake_status_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
READ8_MEMBER(lkage_state::port_fetch_r)
|
||||
{
|
||||
@ -166,17 +176,6 @@ static ADDRESS_MAP_START( lkage_io_map, AS_IO, 8, lkage_state )
|
||||
AM_RANGE(0x4000, 0x7fff) AM_READ(port_fetch_r)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( lkage_m68705_map, AS_PROGRAM, 8, lkage_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(lkage_68705_port_a_r,lkage_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(lkage_68705_port_b_r,lkage_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READWRITE(lkage_68705_port_c_r,lkage_68705_port_c_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(lkage_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(lkage_68705_ddr_b_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_WRITE(lkage_68705_ddr_c_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
/***************************************************************************/
|
||||
|
||||
@ -489,20 +488,6 @@ void lkage_state::machine_start()
|
||||
save_item(NAME(m_mcu_val));
|
||||
save_item(NAME(m_sound_nmi_enable));
|
||||
save_item(NAME(m_pending_nmi));
|
||||
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_port_c_in));
|
||||
save_item(NAME(m_port_c_out));
|
||||
save_item(NAME(m_ddr_c));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
}
|
||||
|
||||
void lkage_state::machine_reset()
|
||||
@ -514,26 +499,13 @@ void lkage_state::machine_reset()
|
||||
m_sound_nmi_enable = 0;
|
||||
m_pending_nmi = 0;
|
||||
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_port_c_in = 0;
|
||||
m_port_c_out = 0;
|
||||
m_ddr_c = 0;
|
||||
m_mcu_sent = 0;
|
||||
m_main_sent = 0;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
}
|
||||
|
||||
static MACHINE_CONFIG_START( lkage, lkage_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, MAIN_CPU_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_map)
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_map_mcu)
|
||||
MCFG_CPU_IO_MAP(lkage_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", lkage_state, irq0_line_hold)
|
||||
|
||||
@ -541,8 +513,7 @@ static MACHINE_CONFIG_START( lkage, lkage_state )
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_sound_map)
|
||||
/* IRQs are triggered by the YM2203 */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705,MCU_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,MCU_CLOCK)
|
||||
|
||||
|
||||
/* video hardware */
|
||||
@ -583,7 +554,7 @@ static MACHINE_CONFIG_START( lkageb, lkage_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80,MAIN_CPU_CLOCK)
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_map)
|
||||
MCFG_CPU_PROGRAM_MAP(lkage_map_boot)
|
||||
MCFG_CPU_IO_MAP(lkage_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", lkage_state, irq0_line_hold)
|
||||
|
||||
@ -633,7 +604,7 @@ ROM_START( lkage )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound CPU) */
|
||||
ROM_LOAD( "a54-04.54", 0x0000, 0x8000, CRC(541faf9a) SHA1(b142ff3bd198f700697ec06ea92db3109ab5818e) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_REGION( 0x10000, "bmcu:mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_LOAD( "a54-09.53", 0x0000, 0x0800, CRC(0e8b8846) SHA1(a4a105462b0127229bb7edfadd2e581c7e40f1cc) )
|
||||
|
||||
ROM_REGION( 0x4000, "user1", 0 ) /* data */
|
||||
@ -663,7 +634,7 @@ ROM_START( lkageo )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound CPU) */
|
||||
ROM_LOAD( "a54-04.54", 0x0000, 0x8000, CRC(541faf9a) SHA1(b142ff3bd198f700697ec06ea92db3109ab5818e) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_REGION( 0x10000, "bmcu:mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_LOAD( "a54-09.53", 0x0000, 0x0800, CRC(0e8b8846) SHA1(a4a105462b0127229bb7edfadd2e581c7e40f1cc) )
|
||||
|
||||
ROM_REGION( 0x4000, "user1", 0 ) /* data */
|
||||
@ -693,7 +664,7 @@ ROM_START( lkageoo )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound CPU) */
|
||||
ROM_LOAD( "a54-04.54", 0x0000, 0x8000, CRC(541faf9a) SHA1(b142ff3bd198f700697ec06ea92db3109ab5818e) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_REGION( 0x10000, "bmcu:mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_LOAD( "a54-09.53", 0x0000, 0x0800, CRC(0e8b8846) SHA1(a4a105462b0127229bb7edfadd2e581c7e40f1cc) )
|
||||
|
||||
ROM_REGION( 0x4000, "user1", 0 ) /* data */
|
||||
@ -876,7 +847,7 @@ ROM_START( bygone )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound CPU) */
|
||||
ROM_LOAD( "a53_07.ic54", 0x0000, 0x8000, CRC(72f69a77) SHA1(dfc1050a4123b3c83ae733ece1b6fe2836beb901) )
|
||||
|
||||
ROM_REGION( 0x10000, "mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_REGION( 0x10000, "bmcu:mcu", 0 ) /* 68705 MCU code */
|
||||
ROM_LOAD( "a51_09.ic53", 0x0000, 0x0800, CRC(0e8b8846) SHA1(a4a105462b0127229bb7edfadd2e581c7e40f1cc) ) /* the same as lkage */
|
||||
|
||||
ROM_REGION( 0x4000, "user1", 0 ) /* data */
|
||||
@ -945,13 +916,6 @@ DRIVER_INIT_MEMBER(lkage_state,lkage)
|
||||
m_sprite_dx=0;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(lkage_state,lkageb)
|
||||
{
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xf062, 0xf062, read8_delegate(FUNC(lkage_state::fake_mcu_r),this));
|
||||
m_maincpu->space(AS_PROGRAM).install_read_handler(0xf087, 0xf087, read8_delegate(FUNC(lkage_state::fake_status_r),this));
|
||||
m_maincpu->space(AS_PROGRAM).install_write_handler(0xf062, 0xf062, write8_delegate(FUNC(lkage_state::fake_mcu_w),this));
|
||||
m_sprite_dx=0;
|
||||
}
|
||||
|
||||
DRIVER_INIT_MEMBER(lkage_state,bygone)
|
||||
{
|
||||
@ -961,7 +925,7 @@ DRIVER_INIT_MEMBER(lkage_state,bygone)
|
||||
GAME( 1984, lkage, 0, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (older)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageoo, lkage, lkage, lkage, lkage_state, lkage, ROT0, "Taito Corporation", "The Legend of Kage (oldest)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, lkageb, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 1)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb2, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 2)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, lkageb3, lkage, lkageb, lkageb, lkage_state, lkage, ROT0, "bootleg", "The Legend of Kage (bootleg set 3)", MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1985, bygone, 0, lkage, bygone, lkage_state, bygone, ROT0, "Taito Corporation", "Bygone (prototype)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_COCKTAIL | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -185,7 +185,7 @@ static ADDRESS_MAP_START( lsasquad_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
|
||||
AM_RANGE(0xec00, 0xec00) AM_READWRITE(lsasquad_sound_result_r,lsasquad_sound_command_w)
|
||||
AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r)
|
||||
AM_RANGE(0xee00, 0xee00) AM_READWRITE(lsasquad_mcu_r,lsasquad_mcu_w)
|
||||
AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( lsasquad_sound_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
@ -200,16 +200,6 @@ static ADDRESS_MAP_START( lsasquad_sound_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
AM_RANGE(0xe000, 0xefff) AM_ROM /* space for diagnostic ROM? */
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( lsasquad_m68705_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(lsasquad_68705_port_a_r,lsasquad_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(lsasquad_68705_port_b_r,lsasquad_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READ(lsasquad_mcu_status_r)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(lsasquad_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(lsasquad_68705_ddr_b_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
static ADDRESS_MAP_START( storming_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
@ -392,7 +382,7 @@ static ADDRESS_MAP_START( daikaiju_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
AM_RANGE(0xea00, 0xea00) AM_WRITE(lsasquad_bankswitch_w)
|
||||
AM_RANGE(0xec00, 0xec00) AM_WRITE(lsasquad_sound_command_w)
|
||||
AM_RANGE(0xec01, 0xec01) AM_READ(lsasquad_sound_status_r)
|
||||
AM_RANGE(0xee00, 0xee00) AM_READWRITE(lsasquad_mcu_r, lsasquad_mcu_w)
|
||||
AM_RANGE(0xee00, 0xee00) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( daikaiju_sound_map, AS_PROGRAM, 8, lsasquad_state )
|
||||
@ -549,16 +539,6 @@ MACHINE_START_MEMBER(lsasquad_state,lsasquad)
|
||||
|
||||
membank("bank1")->configure_entries(0, 8, &ROM[0x10000], 0x2000);
|
||||
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
|
||||
save_item(NAME(m_sound_pending));
|
||||
save_item(NAME(m_sound_nmi_enable));
|
||||
@ -574,17 +554,6 @@ MACHINE_RESET_MEMBER(lsasquad_state,lsasquad)
|
||||
m_pending_nmi = 0;
|
||||
m_sound_cmd = 0;
|
||||
m_sound_result = 0;
|
||||
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_mcu_sent = 0;
|
||||
m_main_sent = 0;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
}
|
||||
|
||||
/* Note: lsasquad clock values are not verified */
|
||||
@ -598,8 +567,8 @@ static MACHINE_CONFIG_START( lsasquad, lsasquad_state )
|
||||
MCFG_CPU_ADD("audiocpu", Z80, MASTER_CLOCK / 8)
|
||||
MCFG_CPU_PROGRAM_MAP(lsasquad_sound_map)
|
||||
/* IRQs are triggered by the YM2203 */
|
||||
MCFG_CPU_ADD("mcu", M68705, MASTER_CLOCK / 8)
|
||||
MCFG_CPU_PROGRAM_MAP(lsasquad_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MASTER_CLOCK / 8)
|
||||
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(30000)) /* 500 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
@ -641,7 +610,7 @@ static MACHINE_CONFIG_DERIVED( storming, lsasquad )
|
||||
MCFG_CPU_MODIFY("maincpu")
|
||||
MCFG_CPU_PROGRAM_MAP(storming_map)
|
||||
|
||||
MCFG_DEVICE_REMOVE("mcu")
|
||||
MCFG_DEVICE_REMOVE("bmcu")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
|
||||
@ -655,8 +624,7 @@ static MACHINE_CONFIG_START( daikaiju, lsasquad_state )
|
||||
MCFG_CPU_PROGRAM_MAP(daikaiju_sound_map)
|
||||
/* IRQs are triggered by the YM2203 */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705, MASTER_CLOCK / 8)
|
||||
MCFG_CPU_PROGRAM_MAP(lsasquad_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, MASTER_CLOCK / 8)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(30000)) /* 500 CPU slices per frame - an high value to ensure proper */
|
||||
/* synchronization of the CPUs */
|
||||
@ -710,7 +678,7 @@ ROM_START( lsasquad )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "a64-04.44", 0x0000, 0x8000, CRC(c238406a) SHA1(bb8f9d952c4568edb375328a1f9f6681a1bb5907) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a64-05.35", 0x0000, 0x0800, CRC(572677b9) SHA1(e098d5d842bcc81221ba56652a7019505d8be082) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -787,7 +755,7 @@ ROM_START( daikaiju )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* 64k for the second CPU */
|
||||
ROM_LOAD( "a74_04.ic44", 0x0000, 0x8000, CRC(98a6a703) SHA1(0c169a7a5f8b26606f67ee7f14bd487951536ac5) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a74_05.ic35", 0x0000, 0x0800, CRC(d66df06f) SHA1(6a61eb15aef7f3b7a66ec9d87c0bdd731d6cb079) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
|
@ -311,7 +311,7 @@ static ADDRESS_MAP_START( nycaptor_master_map, AS_PROGRAM, 8, nycaptor_state )
|
||||
AM_RANGE(0x0000, 0x7fff) AM_ROM
|
||||
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
|
||||
AM_RANGE(0xc000, 0xc7ff) AM_RAM_WRITE(nycaptor_videoram_w) AM_SHARE("videoram")
|
||||
AM_RANGE(0xd000, 0xd000) AM_READWRITE(nycaptor_mcu_r, nycaptor_mcu_w)
|
||||
AM_RANGE(0xd000, 0xd000) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_RANGE(0xd001, 0xd001) AM_WRITE(sub_cpu_halt_w)
|
||||
AM_RANGE(0xd002, 0xd002) AM_READWRITE(nycaptor_generic_control_r, nycaptor_generic_control_w) /* bit 3 - memory bank at 0x8000-0xbfff */
|
||||
AM_RANGE(0xd400, 0xd400) AM_READWRITE(from_snd_r, sound_command_w)
|
||||
@ -368,18 +368,6 @@ static ADDRESS_MAP_START( nycaptor_sound_map, AS_PROGRAM, 8, nycaptor_state )
|
||||
AM_RANGE(0xe000, 0xefff) AM_NOP
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( nycaptor_m68705_map, AS_PROGRAM, 8, nycaptor_state )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_READWRITE(nycaptor_68705_port_a_r, nycaptor_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_READWRITE(nycaptor_68705_port_b_r, nycaptor_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_READWRITE(nycaptor_68705_port_c_r, nycaptor_68705_port_c_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_WRITE(nycaptor_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_WRITE(nycaptor_68705_ddr_b_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_WRITE(nycaptor_68705_ddr_c_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
/* Cycle Shooting */
|
||||
|
||||
@ -755,19 +743,7 @@ void nycaptor_state::machine_start()
|
||||
save_item(NAME(m_palette_bank));
|
||||
save_item(NAME(m_gfxctrl));
|
||||
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_port_c_in));
|
||||
save_item(NAME(m_port_c_out));
|
||||
save_item(NAME(m_ddr_c));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
|
||||
}
|
||||
|
||||
void nycaptor_state::machine_reset()
|
||||
@ -783,19 +759,6 @@ void nycaptor_state::machine_reset()
|
||||
m_palette_bank = 0;
|
||||
m_gfxctrl = 0;
|
||||
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_port_c_in = 0;
|
||||
m_port_c_out = 0;
|
||||
m_ddr_c = 0;
|
||||
m_mcu_sent = 0;
|
||||
m_main_sent = 0;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
|
||||
memset(m_vol_ctrl, 0, sizeof(m_vol_ctrl));
|
||||
}
|
||||
@ -815,8 +778,7 @@ static MACHINE_CONFIG_START( nycaptor, nycaptor_state )
|
||||
MCFG_CPU_PROGRAM_MAP(nycaptor_sound_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(nycaptor_state, irq0_line_hold, 2*60) /* IRQ generated by ??? */
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705,2000000)
|
||||
MCFG_CPU_PROGRAM_MAP(nycaptor_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,2000000)
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */
|
||||
|
||||
@ -882,8 +844,7 @@ static MACHINE_CONFIG_START( cyclshtg, nycaptor_state )
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(nycaptor_state, irq0_line_hold, 2*60)
|
||||
|
||||
#ifdef USE_MCU
|
||||
MCFG_CPU_ADD("mcu", M68705,2000000)
|
||||
MCFG_CPU_PROGRAM_MAP(nycaptor_m68705_map)
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,2000000)
|
||||
#endif
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(60))
|
||||
@ -1018,7 +979,7 @@ ROM_START( nycaptor )
|
||||
ROM_LOAD( "a50_15", 0x0000, 0x4000, CRC(f8a604e5) SHA1(8fae920fd09584b5e5ccd0db8b8934b393a23d50) )
|
||||
ROM_LOAD( "a50_16", 0x4000, 0x4000, CRC(fc24e11d) SHA1(ce1a1d7b809fa0f5f5e7a462047374b1b3f621c6) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a50_17", 0x0000, 0x0800, CRC(69fe08dc) SHA1(9bdac3e835f63bbb8806892169d89f43d447df21) )
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
@ -1048,7 +1009,7 @@ ROM_START( cyclshtg )
|
||||
ROM_LOAD( "a80_16.i26", 0x0000, 0x4000, CRC(ce171a48) SHA1(e5ae9bb22f58c8857737bc6f5317866819a4e4d1) )
|
||||
ROM_LOAD( "a80_17.i25", 0x4000, 0x4000, CRC(a90b7bbc) SHA1(bd5c96861a59a1f84bb5032775b1c70efdb7066f) )
|
||||
|
||||
ROM_REGION( 0x0800, "cpu3", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a80_18", 0x0000, 0x0800, NO_DUMP ) /* Missing */
|
||||
|
||||
ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT )
|
||||
|
@ -290,11 +290,15 @@ static ADDRESS_MAP_START( tigerh_map, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w)
|
||||
AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w)
|
||||
AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w)
|
||||
AM_RANGE(0xe803, 0xe803) AM_READWRITE(tigerh_mcu_r, tigerh_mcu_w)
|
||||
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tigerh_map_mcu, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_IMPORT_FROM( tigerh_map )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( tigerhb1_map, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe803, 0xe803) AM_READWRITE(tigerhb1_prot_r, tigerhb1_prot_w)
|
||||
AM_IMPORT_FROM( tigerh_map )
|
||||
@ -317,11 +321,15 @@ static ADDRESS_MAP_START( slapfigh_map, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe800, 0xe800) AM_WRITE(scrollx_lo_w)
|
||||
AM_RANGE(0xe801, 0xe801) AM_WRITE(scrollx_hi_w)
|
||||
AM_RANGE(0xe802, 0xe802) AM_WRITE(scrolly_w)
|
||||
AM_RANGE(0xe803, 0xe803) AM_READWRITE(tigerh_mcu_r, tigerh_mcu_w)
|
||||
AM_RANGE(0xf000, 0xf7ff) AM_RAM_WRITE(fixram_w) AM_SHARE("fixvideoram")
|
||||
AM_RANGE(0xf800, 0xffff) AM_RAM_WRITE(fixcol_w) AM_SHARE("fixcolorram")
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( slapfigh_map_mcu, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe803, 0xe803) AM_DEVREADWRITE("bmcu", taito68705_mcu_device, mcu_r, mcu_w)
|
||||
AM_IMPORT_FROM( slapfigh_map )
|
||||
ADDRESS_MAP_END
|
||||
|
||||
static ADDRESS_MAP_START( slapfighb1_map, AS_PROGRAM, 8, slapfght_state )
|
||||
AM_RANGE(0xe803, 0xe803) AM_NOP // no MCU
|
||||
AM_IMPORT_FROM( slapfigh_map )
|
||||
@ -733,13 +741,7 @@ void slapfght_state::machine_start()
|
||||
m_main_irq_enabled = false;
|
||||
m_sound_nmi_enabled = false;
|
||||
|
||||
m_mcu_sent = false;
|
||||
m_main_sent = false;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
m_from_mcu_latch = 0;
|
||||
m_to_mcu_latch = 0;
|
||||
m_old_portB = 0;
|
||||
|
||||
|
||||
m_getstar_status = 0;
|
||||
m_getstar_sequence_index = 0;
|
||||
@ -758,14 +760,6 @@ void slapfght_state::machine_start()
|
||||
save_item(NAME(m_main_irq_enabled));
|
||||
save_item(NAME(m_sound_nmi_enabled));
|
||||
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
|
||||
save_item(NAME(m_from_mcu_latch));
|
||||
save_item(NAME(m_to_mcu_latch));
|
||||
save_item(NAME(m_old_portB));
|
||||
|
||||
save_item(NAME(m_getstar_status));
|
||||
save_item(NAME(m_getstar_sequence_index));
|
||||
@ -791,7 +785,7 @@ void slapfght_state::machine_reset()
|
||||
MACHINE_RESET_MEMBER(slapfght_state,getstar)
|
||||
{
|
||||
// don't boot the mcu since we don't have a dump yet
|
||||
m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||
// m_mcu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
|
||||
|
||||
machine_reset();
|
||||
}
|
||||
@ -978,7 +972,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu", Z80, XTAL_36MHz/6) // 6MHz
|
||||
MCFG_CPU_PROGRAM_MAP(tigerh_map)
|
||||
MCFG_CPU_PROGRAM_MAP(tigerh_map_mcu)
|
||||
MCFG_CPU_IO_MAP(tigerh_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", slapfght_state, vblank_irq)
|
||||
|
||||
@ -986,13 +980,7 @@ static MACHINE_CONFIG_START( tigerh, slapfght_state )
|
||||
MCFG_CPU_PROGRAM_MAP(tigerh_sound_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 360) // music speed, verified with pcb recording
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705_NEW, XTAL_36MHz/12) // 3MHz
|
||||
MCFG_M68705_PORTA_R_CB(READ8(slapfght_state, tigerh_mcu_porta_r))
|
||||
MCFG_M68705_PORTA_W_CB(WRITE8(slapfght_state, tigerh_mcu_porta_w))
|
||||
MCFG_M68705_PORTB_W_CB(WRITE8(slapfght_state, tigerh_mcu_portb_w))
|
||||
MCFG_M68705_PORTC_R_CB(READ8(slapfght_state, tigerh_mcu_portc_r))
|
||||
|
||||
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU_TIGER, XTAL_36MHz/12) // 3MHz
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
@ -1033,7 +1021,7 @@ static MACHINE_CONFIG_DERIVED( tigerhb1, tigerh )
|
||||
MCFG_CPU_PROGRAM_MAP(tigerhb1_map)
|
||||
MCFG_CPU_IO_MAP(tigerhb_io_map)
|
||||
|
||||
MCFG_DEVICE_REMOVE("mcu")
|
||||
MCFG_DEVICE_REMOVE("bmcu")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( tigerhb2, tigerhb1 )
|
||||
@ -1048,7 +1036,7 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
|
||||
|
||||
/* basic machine hardware */
|
||||
MCFG_CPU_ADD("maincpu",Z80, XTAL_36MHz/6) // 6MHz
|
||||
MCFG_CPU_PROGRAM_MAP(slapfigh_map)
|
||||
MCFG_CPU_PROGRAM_MAP(slapfigh_map_mcu)
|
||||
MCFG_CPU_IO_MAP(slapfigh_io_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", slapfght_state, vblank_irq)
|
||||
|
||||
@ -1056,11 +1044,8 @@ static MACHINE_CONFIG_START( slapfigh, slapfght_state )
|
||||
MCFG_CPU_PROGRAM_MAP(tigerh_sound_map)
|
||||
MCFG_CPU_PERIODIC_INT_DRIVER(slapfght_state, sound_nmi, 180)
|
||||
|
||||
MCFG_CPU_ADD("mcu", M68705_NEW, XTAL_36MHz/12) // 3MHz
|
||||
MCFG_M68705_PORTA_R_CB(READ8(slapfght_state, tigerh_mcu_porta_r))
|
||||
MCFG_M68705_PORTA_W_CB(WRITE8(slapfght_state, tigerh_mcu_porta_w))
|
||||
MCFG_M68705_PORTB_W_CB(WRITE8(slapfght_state, slapfght_mcu_portb_w))
|
||||
MCFG_M68705_PORTC_R_CB(READ8(slapfght_state, slapfght_mcu_portc_r))
|
||||
MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU_SLAP, XTAL_36MHz/12) // 3MHz
|
||||
MCFG_TAITO_M68705_EXTENSION_CB(WRITE8(slapfght_state, scroll_from_mcu_w))
|
||||
|
||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||
|
||||
@ -1101,7 +1086,7 @@ static MACHINE_CONFIG_DERIVED( slapfighb1, slapfigh )
|
||||
MCFG_CPU_PROGRAM_MAP(slapfighb1_map)
|
||||
MCFG_CPU_IO_MAP(slapfighb1_io_map)
|
||||
|
||||
MCFG_DEVICE_REMOVE("mcu")
|
||||
MCFG_DEVICE_REMOVE("bmcu")
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
static MACHINE_CONFIG_DERIVED( slapfighb2, slapfighb1 )
|
||||
@ -1118,6 +1103,9 @@ static MACHINE_CONFIG_DERIVED( getstar, slapfigh )
|
||||
MCFG_CPU_PROGRAM_MAP(getstar_map)
|
||||
MCFG_CPU_IO_MAP(getstar_io_map)
|
||||
|
||||
MCFG_DEVICE_MODIFY("bmcu:mcu")
|
||||
MCFG_DEVICE_DISABLE()
|
||||
|
||||
MCFG_MACHINE_RESET_OVERRIDE(slapfght_state, getstar)
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
@ -1302,7 +1290,7 @@ ROM_START( tigerh )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "a47_03.12d", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a47_14.6a", 0x0000, 0x0800, CRC(4042489f) SHA1(b977e0821b6b1aa5a0a0f349cd78150af1a231df) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
@ -1339,7 +1327,7 @@ ROM_START( tigerhj )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "a47_03.12d", 0x0000, 0x2000, CRC(d105260f) SHA1(f6a0e393e29354bb37fb723828f3267d030a45ea) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a47_14.6a", 0x0000, 0x0800, CRC(4042489f) SHA1(b977e0821b6b1aa5a0a0f349cd78150af1a231df) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
@ -1561,7 +1549,7 @@ ROM_START( alcon )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "a77_02.12d", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a77_13.6a", 0x0000, 0x0800, CRC(a70c81d9) SHA1(f155ffd25a946b0459216a8f80ded16e6e2f9258) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
@ -1595,7 +1583,7 @@ ROM_START( slapfigh )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "a77_02.12d", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a77_13.6a", 0x0000, 0x0800, CRC(a70c81d9) SHA1(f155ffd25a946b0459216a8f80ded16e6e2f9258) )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
@ -1637,7 +1625,7 @@ ROM_START( slapfigha )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "a76_03.12d", 0x0000, 0x2000, CRC(87f4705a) SHA1(a90d5644ce268f3321047a4f96df96ac294d2f1b) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 )
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 )
|
||||
ROM_LOAD( "a76_14.6a", 0x0000, 0x0800, NO_DUMP ) /* A77 MCU not compatible with this set */
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 )
|
||||
@ -1899,7 +1887,7 @@ ROM_START( grdian )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Region 3 - sound cpu code */
|
||||
ROM_LOAD( "a68-03.12d", 0x0000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "a68_14.6a", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 ) /* Region 1 - temporary for gfx */
|
||||
@ -1933,7 +1921,7 @@ ROM_START( getstarj )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 ) /* Region 3 - sound cpu code */
|
||||
ROM_LOAD( "a68-03.12d", 0x00000, 0x2000, CRC(18daa44c) SHA1(1a3d22a186c591321d1b836ee30d89fba4771122) )
|
||||
|
||||
ROM_REGION( 0x0800, "mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "68705.6a", 0x0000, 0x0800, NO_DUMP )
|
||||
|
||||
ROM_REGION( 0x04000, "gfx1", 0 ) /* Region 1 - temporary for gfx */
|
||||
|
@ -1,7 +1,7 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Jarek Burczynski
|
||||
|
||||
#include "machine/buggychl.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/msm5232.h"
|
||||
|
||||
@ -18,7 +18,6 @@ public:
|
||||
m_mcu_ram(*this, "mcu_ram"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
@ -75,8 +74,7 @@ public:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<buggychl_mcu_device> m_bmcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<msm5232_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
@ -1,6 +1,7 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Jarek Burczynski, Tomasz Slanina
|
||||
#include "sound/msm5232.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class bigevglf_state : public driver_device
|
||||
{
|
||||
@ -11,7 +12,7 @@ public:
|
||||
m_spriteram1(*this, "spriteram1"),
|
||||
m_spriteram2(*this, "spriteram2"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
@ -38,18 +39,6 @@ public:
|
||||
uint8_t m_sound_state;
|
||||
|
||||
/* MCU related */
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
uint8_t m_port_c_in;
|
||||
uint8_t m_port_c_out;
|
||||
uint8_t m_ddr_c;
|
||||
int m_mcu_coin_bit5;
|
||||
|
||||
/* misc */
|
||||
@ -59,7 +48,7 @@ public:
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
DECLARE_WRITE8_MEMBER(beg_banking_w);
|
||||
DECLARE_WRITE8_MEMBER(beg_fromsound_w);
|
||||
DECLARE_READ8_MEMBER(beg_fromsound_r);
|
||||
|
@ -1,7 +1,7 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Mike Balfour, Zsolt Vasvari
|
||||
|
||||
#include "machine/buggychl.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
#include "machine/gen_latch.h"
|
||||
|
||||
class bking_state : public driver_device
|
||||
@ -11,7 +11,6 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_playfield_ram(*this, "playfield_ram"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
@ -51,22 +50,12 @@ public:
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<buggychl_mcu_device> m_bmcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
|
||||
#if 0
|
||||
/* 68705 */
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
#endif
|
||||
DECLARE_READ8_MEMBER(bking_sndnmi_disable_r);
|
||||
DECLARE_WRITE8_MEMBER(bking_sndnmi_enable_w);
|
||||
DECLARE_WRITE8_MEMBER(bking_soundlatch_w);
|
||||
|
@ -2,6 +2,7 @@
|
||||
// copyright-holders:Chris Moore, Nicola Salmoria
|
||||
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class bublbobl_state : public driver_device
|
||||
{
|
||||
@ -17,13 +18,6 @@ public:
|
||||
m_videoram(*this, "videoram"),
|
||||
m_objectram(*this, "objectram"),
|
||||
m_mcu_sharedram(*this, "mcu_sharedram"),
|
||||
m_mcu_sent(false),
|
||||
m_main_sent(false),
|
||||
m_from_main(0),
|
||||
m_from_mcu(0),
|
||||
m_from_mcu_latch(0),
|
||||
m_to_mcu_latch(0),
|
||||
m_old_portB(0),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
@ -73,14 +67,6 @@ public:
|
||||
/* Bobble Bobble */
|
||||
int m_ic43_a;
|
||||
int m_ic43_b;
|
||||
/* Tokio */
|
||||
bool m_mcu_sent;
|
||||
bool m_main_sent;
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
uint8_t m_from_mcu_latch;
|
||||
uint8_t m_to_mcu_latch;
|
||||
uint8_t m_old_portB;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
@ -95,8 +81,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(tokio_bankswitch_w);
|
||||
DECLARE_WRITE8_MEMBER(tokio_videoctrl_w);
|
||||
DECLARE_WRITE8_MEMBER(bublbobl_nmitrigger_w);
|
||||
DECLARE_READ8_MEMBER(tokio_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(tokio_mcu_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(tokiob_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(bublbobl_sound_command_w);
|
||||
@ -132,20 +116,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(bublbobl_68705_port_b_w);
|
||||
DECLARE_WRITE8_MEMBER(bublbobl_68705_ddr_b_w);
|
||||
|
||||
|
||||
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(tokio_mcu_sent_r);
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(tokio_main_sent_r);
|
||||
|
||||
|
||||
DECLARE_READ8_MEMBER(tokio_mcu_porta_r);
|
||||
DECLARE_READ8_MEMBER(tokio_mcu_portc_r);
|
||||
DECLARE_WRITE8_MEMBER(tokio_mcu_porta_w);
|
||||
DECLARE_WRITE8_MEMBER(tokio_mcu_portb_w);
|
||||
|
||||
|
||||
DECLARE_DRIVER_INIT(tokiob);
|
||||
DECLARE_DRIVER_INIT(tokio);
|
||||
DECLARE_DRIVER_INIT(dland);
|
||||
DECLARE_DRIVER_INIT(bublbobl);
|
||||
|
@ -4,7 +4,7 @@
|
||||
buggychl
|
||||
*/
|
||||
|
||||
#include "machine/buggychl.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/msm5232.h"
|
||||
|
||||
@ -20,7 +20,6 @@ public:
|
||||
m_scrollh(*this, "scrollh"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
@ -53,8 +52,7 @@ public:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_mcu;
|
||||
required_device<buggychl_mcu_device> m_bmcu;
|
||||
required_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<msm5232_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/msm5232.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class flstory_state : public driver_device
|
||||
{
|
||||
@ -15,7 +16,7 @@ public:
|
||||
m_workram(*this, "workram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -46,26 +47,14 @@ public:
|
||||
uint8_t m_snd_ctrl2;
|
||||
uint8_t m_snd_ctrl3;
|
||||
|
||||
/* protection */
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
uint8_t m_port_c_in;
|
||||
uint8_t m_port_c_out;
|
||||
uint8_t m_ddr_c;
|
||||
/* protection sims */
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_select;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<msm5232_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -89,18 +78,6 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(nmi_enable_w);
|
||||
DECLARE_READ8_MEMBER(rumba_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(rumba_mcu_w);
|
||||
DECLARE_READ8_MEMBER(flstory_68705_port_a_r);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_port_a_w);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_ddr_a_w);
|
||||
DECLARE_READ8_MEMBER(flstory_68705_port_b_r);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_port_b_w);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_ddr_b_w);
|
||||
DECLARE_READ8_MEMBER(flstory_68705_port_c_r);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_port_c_w);
|
||||
DECLARE_WRITE8_MEMBER(flstory_68705_ddr_c_w);
|
||||
DECLARE_WRITE8_MEMBER(flstory_mcu_w);
|
||||
DECLARE_READ8_MEMBER(flstory_mcu_r);
|
||||
DECLARE_READ8_MEMBER(flstory_mcu_status_r);
|
||||
DECLARE_WRITE8_MEMBER(onna34ro_mcu_w);
|
||||
DECLARE_READ8_MEMBER(onna34ro_mcu_r);
|
||||
DECLARE_READ8_MEMBER(onna34ro_mcu_status_r);
|
||||
|
@ -2,6 +2,7 @@
|
||||
// copyright-holders:Phil Stroffolino
|
||||
|
||||
#include "machine/gen_latch.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class lkage_state : public driver_device
|
||||
{
|
||||
@ -14,7 +15,7 @@ public:
|
||||
m_videoram(*this, "videoram"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
m_soundlatch(*this, "soundlatch") { }
|
||||
@ -38,21 +39,6 @@ public:
|
||||
int m_sound_nmi_enable;
|
||||
int m_pending_nmi;
|
||||
|
||||
/* mcu */
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
uint8_t m_port_c_in;
|
||||
uint8_t m_port_c_out;
|
||||
uint8_t m_ddr_c;
|
||||
|
||||
/* lkageb fake mcu */
|
||||
uint8_t m_mcu_val;
|
||||
int m_mcu_ready; /* cpu data/mcu ready status */
|
||||
@ -60,7 +46,7 @@ public:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
required_device<generic_latch_8_device> m_soundlatch;
|
||||
@ -73,22 +59,10 @@ public:
|
||||
DECLARE_READ8_MEMBER(fake_mcu_r);
|
||||
DECLARE_WRITE8_MEMBER(fake_mcu_w);
|
||||
DECLARE_READ8_MEMBER(fake_status_r);
|
||||
DECLARE_READ8_MEMBER(lkage_68705_port_a_r);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_port_a_w);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_ddr_a_w);
|
||||
DECLARE_READ8_MEMBER(lkage_68705_port_b_r);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_port_b_w);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_ddr_b_w);
|
||||
DECLARE_READ8_MEMBER(lkage_68705_port_c_r);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_port_c_w);
|
||||
DECLARE_WRITE8_MEMBER(lkage_68705_ddr_c_w);
|
||||
DECLARE_WRITE8_MEMBER(lkage_mcu_w);
|
||||
DECLARE_READ8_MEMBER(lkage_mcu_r);
|
||||
DECLARE_READ8_MEMBER(lkage_mcu_status_r);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(lkage_videoram_w);
|
||||
DECLARE_DRIVER_INIT(bygone);
|
||||
DECLARE_DRIVER_INIT(lkage);
|
||||
DECLARE_DRIVER_INIT(lkageb);
|
||||
TILE_GET_INFO_MEMBER(get_bg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_fg_tile_info);
|
||||
TILE_GET_INFO_MEMBER(get_tx_tile_info);
|
||||
|
@ -1,5 +1,6 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Nicola Salmoria
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class lsasquad_state : public driver_device
|
||||
{
|
||||
@ -12,7 +13,7 @@ public:
|
||||
m_priority_prom(*this, "prio_prom"),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette") { }
|
||||
|
||||
@ -29,22 +30,11 @@ public:
|
||||
int m_sound_cmd;
|
||||
int m_sound_result;
|
||||
|
||||
/* mcu */
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
|
||||
/* devices */
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
||||
@ -58,14 +48,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(lsasquad_sound_status_r);
|
||||
DECLARE_READ8_MEMBER(daikaiju_sh_sound_command_r);
|
||||
DECLARE_READ8_MEMBER(daikaiju_sound_status_r);
|
||||
DECLARE_READ8_MEMBER(lsasquad_68705_port_a_r);
|
||||
DECLARE_WRITE8_MEMBER(lsasquad_68705_port_a_w);
|
||||
DECLARE_WRITE8_MEMBER(lsasquad_68705_ddr_a_w);
|
||||
DECLARE_READ8_MEMBER(lsasquad_68705_port_b_r);
|
||||
DECLARE_WRITE8_MEMBER(lsasquad_68705_port_b_w);
|
||||
DECLARE_WRITE8_MEMBER(lsasquad_68705_ddr_b_w);
|
||||
DECLARE_WRITE8_MEMBER(lsasquad_mcu_w);
|
||||
DECLARE_READ8_MEMBER(lsasquad_mcu_r);
|
||||
|
||||
DECLARE_READ8_MEMBER(lsasquad_mcu_status_r);
|
||||
DECLARE_READ8_MEMBER(daikaiju_mcu_status_r);
|
||||
DECLARE_WRITE8_MEMBER(unk);
|
||||
|
@ -1,7 +1,7 @@
|
||||
// license:GPL-2.0+
|
||||
// copyright-holders:Jarek Burczynski
|
||||
|
||||
#include "machine/buggychl.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/msm5232.h"
|
||||
|
||||
@ -58,7 +58,7 @@ public:
|
||||
/* devices */
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
optional_device<buggychl_mcu_device> m_bmcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<msm5232_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
|
@ -3,6 +3,7 @@
|
||||
|
||||
#include "machine/gen_latch.h"
|
||||
#include "sound/msm5232.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class nycaptor_state : public driver_device
|
||||
{
|
||||
@ -16,7 +17,7 @@ public:
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_subcpu(*this, "sub"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_msm(*this, "msm"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -36,21 +37,6 @@ public:
|
||||
uint8_t m_char_bank;
|
||||
uint8_t m_palette_bank;
|
||||
|
||||
/* mcu */
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
uint8_t m_port_c_in;
|
||||
uint8_t m_port_c_out;
|
||||
uint8_t m_ddr_c;
|
||||
|
||||
/* misc */
|
||||
int m_generic_control_reg;
|
||||
int m_sound_nmi_enable;
|
||||
@ -64,7 +50,7 @@ public:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<cpu_device> m_subcpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<msm5232_device> m_msm;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -88,17 +74,7 @@ public:
|
||||
DECLARE_READ8_MEMBER(cyclshtg_mcu_status_r1);
|
||||
DECLARE_WRITE8_MEMBER(cyclshtg_generic_control_w);
|
||||
DECLARE_READ8_MEMBER(unk_r);
|
||||
DECLARE_READ8_MEMBER(nycaptor_68705_port_a_r);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_port_a_w);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_ddr_a_w);
|
||||
DECLARE_READ8_MEMBER(nycaptor_68705_port_b_r);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_port_b_w);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_ddr_b_w);
|
||||
DECLARE_READ8_MEMBER(nycaptor_68705_port_c_r);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_port_c_w);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_68705_ddr_c_w);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_mcu_w);
|
||||
DECLARE_READ8_MEMBER(nycaptor_mcu_r);
|
||||
|
||||
DECLARE_READ8_MEMBER(nycaptor_mcu_status_r1);
|
||||
DECLARE_READ8_MEMBER(nycaptor_mcu_status_r2);
|
||||
DECLARE_WRITE8_MEMBER(nycaptor_videoram_w);
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "video/bufsprite.h"
|
||||
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
class slapfght_state : public driver_device
|
||||
{
|
||||
@ -17,7 +17,7 @@ public:
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_audiocpu(*this, "audiocpu"),
|
||||
m_mcu(*this, "mcu"),
|
||||
m_bmcu(*this, "bmcu"),
|
||||
m_gfxdecode(*this, "gfxdecode"),
|
||||
m_screen(*this, "screen"),
|
||||
m_palette(*this, "palette"),
|
||||
@ -31,7 +31,7 @@ public:
|
||||
// devices, memory pointers
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
optional_device<cpu_device> m_mcu;
|
||||
optional_device<taito68705_mcu_device> m_bmcu;
|
||||
required_device<gfxdecode_device> m_gfxdecode;
|
||||
required_device<screen_device> m_screen;
|
||||
required_device<palette_device> m_palette;
|
||||
@ -61,15 +61,6 @@ public:
|
||||
bool m_main_irq_enabled;
|
||||
bool m_sound_nmi_enabled;
|
||||
|
||||
bool m_mcu_sent;
|
||||
bool m_main_sent;
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
|
||||
uint8_t m_from_mcu_latch;
|
||||
uint8_t m_to_mcu_latch;
|
||||
uint8_t m_old_portB;
|
||||
|
||||
int m_getstar_status;
|
||||
int m_getstar_sequence_index;
|
||||
int m_getstar_status_state;
|
||||
@ -79,6 +70,7 @@ public:
|
||||
uint8_t m_gs_e;
|
||||
uint8_t m_tigerhb_cmd;
|
||||
|
||||
DECLARE_READ8_MEMBER(tigerh_mcu_status_r);
|
||||
DECLARE_WRITE8_MEMBER(sound_reset_w);
|
||||
DECLARE_WRITE8_MEMBER(irq_enable_w);
|
||||
DECLARE_WRITE8_MEMBER(prg_bank_w);
|
||||
@ -94,19 +86,7 @@ public:
|
||||
DECLARE_WRITE8_MEMBER(flipscreen_w);
|
||||
DECLARE_WRITE8_MEMBER(palette_bank_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(tigerh_mcu_w);
|
||||
DECLARE_READ8_MEMBER(tigerh_mcu_r);
|
||||
DECLARE_READ8_MEMBER(tigerh_mcu_status_r);
|
||||
|
||||
DECLARE_READ8_MEMBER(tigerh_mcu_porta_r);
|
||||
DECLARE_WRITE8_MEMBER(tigerh_mcu_porta_w);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(tigerh_mcu_portb_w);
|
||||
DECLARE_WRITE8_MEMBER(slapfght_mcu_portb_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(tigerh_mcu_portc_r);
|
||||
DECLARE_READ8_MEMBER(slapfght_mcu_portc_r);
|
||||
|
||||
DECLARE_WRITE8_MEMBER(scroll_from_mcu_w);
|
||||
|
||||
DECLARE_READ8_MEMBER(getstar_mcusim_r);
|
||||
DECLARE_WRITE8_MEMBER(getstar_mcusim_w);
|
||||
|
@ -13,90 +13,14 @@
|
||||
#include "includes/bigevglf.h"
|
||||
|
||||
|
||||
READ8_MEMBER(bigevglf_state::bigevglf_68705_port_a_r)
|
||||
{
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_port_a_w)
|
||||
{
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(bigevglf_state::bigevglf_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_port_b_w)
|
||||
{
|
||||
if ((m_ddr_b & 0x02) && (~m_port_b_out & 0x02) && (data & 0x02)) /* positive going transition of the clock */
|
||||
{
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
m_main_sent = 0;
|
||||
|
||||
}
|
||||
if ((m_ddr_b & 0x04) && (~m_port_b_out & 0x04) && (data & 0x04) ) /* positive going transition of the clock */
|
||||
{
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 0;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(bigevglf_state::bigevglf_68705_port_c_r)
|
||||
{
|
||||
m_port_c_in = 0;
|
||||
if (m_main_sent)
|
||||
m_port_c_in |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
m_port_c_in |= 0x02;
|
||||
|
||||
return (m_port_c_out & m_ddr_c) | (m_port_c_in & ~m_ddr_c);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_port_c_w)
|
||||
{
|
||||
m_port_c_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_68705_ddr_c_w)
|
||||
{
|
||||
m_ddr_c = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bigevglf_state::bigevglf_mcu_w)
|
||||
{
|
||||
m_port_a_in = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(bigevglf_state::bigevglf_mcu_r)
|
||||
{
|
||||
m_mcu_sent = 1;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER(bigevglf_state::bigevglf_mcu_status_r)
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
if (!m_main_sent)
|
||||
if (!m_bmcu->get_main_sent())
|
||||
res |= 0x08;
|
||||
if (!m_mcu_sent)
|
||||
if (m_bmcu->get_mcu_sent())
|
||||
res |= 0x10;
|
||||
|
||||
return res;
|
||||
|
@ -58,99 +58,6 @@ WRITE8_MEMBER(bublbobl_state::bublbobl_nmitrigger_w)
|
||||
|
||||
|
||||
|
||||
CUSTOM_INPUT_MEMBER(bublbobl_state::tokio_mcu_sent_r)
|
||||
{
|
||||
if (m_mcu_sent) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(bublbobl_state::tokio_main_sent_r)
|
||||
{
|
||||
if (m_main_sent) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(bublbobl_state::tokio_mcu_r)
|
||||
{
|
||||
if (!m_mcu)
|
||||
return 0x00;
|
||||
|
||||
m_mcu_sent = false;
|
||||
|
||||
// printf("%s: tokio_mcu_r %02x\n", space.machine().describe_context(), m_from_mcu);
|
||||
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bublbobl_state::tokio_mcu_w)
|
||||
{
|
||||
if (!m_mcu)
|
||||
return;
|
||||
|
||||
// printf("%s: tokio_mcu_w %02x\n", space.machine().describe_context(), data);
|
||||
|
||||
m_from_main = data;
|
||||
m_main_sent = true;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(bublbobl_state::tokio_mcu_porta_r)
|
||||
{
|
||||
// printf("tokio_mcu_porta_r\n");
|
||||
return m_to_mcu_latch;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(bublbobl_state::tokio_mcu_porta_w)
|
||||
{
|
||||
// printf("tokio_mcu_porta_w %02x\n", data);
|
||||
m_from_mcu_latch = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(bublbobl_state::tokio_mcu_portc_r)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
|
||||
if (!m_main_sent)
|
||||
ret |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
ret |= 0x02;
|
||||
|
||||
ret ^= 0x3; // inverted logic compared to tigerh
|
||||
|
||||
// printf("%s: tokio_mcu_portc_r %02x\n", space.machine().describe_context(), ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(bublbobl_state::tokio_mcu_portb_w)
|
||||
{
|
||||
// printf("tokio_mcu_portb_w %02x\n", data);
|
||||
|
||||
if ((mem_mask & 0x02) && (~data & 0x02) && (m_old_portB & 0x02))
|
||||
{
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_to_mcu_latch = m_from_main;
|
||||
m_main_sent = false;
|
||||
}
|
||||
if ((mem_mask & 0x04) && (data & 0x04) && (~m_old_portB & 0x04))
|
||||
{
|
||||
m_from_mcu = m_from_mcu_latch;
|
||||
m_mcu_sent = true;
|
||||
// printf("sent %02x\n", m_from_mcu);
|
||||
}
|
||||
|
||||
m_old_portB = data;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,234 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ernesto Corvi, Nicola Salmoria
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/buggychl.h"
|
||||
|
||||
|
||||
const device_type BUGGYCHL_MCU = &device_creator<buggychl_mcu_device>;
|
||||
|
||||
buggychl_mcu_device::buggychl_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, BUGGYCHL_MCU, "M68705 MCU Simulation (Buggy Challenge)", tag, owner, clock, "buggychl_mcu", __FILE__),
|
||||
m_port_a_in(0),
|
||||
m_port_a_out(0),
|
||||
m_ddr_a(0),
|
||||
m_port_b_in(0),
|
||||
m_port_b_out(0),
|
||||
m_ddr_b(0),
|
||||
m_port_c_in(0),
|
||||
m_port_c_out(0),
|
||||
m_ddr_c(0),
|
||||
m_from_main(0),
|
||||
m_from_mcu(0),
|
||||
m_mcu_sent(0),
|
||||
m_main_sent(0)
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void buggychl_mcu_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void buggychl_mcu_device::device_start()
|
||||
{
|
||||
m_mcu = machine().device("mcu");
|
||||
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_port_a_in));
|
||||
save_item(NAME(m_port_a_out));
|
||||
save_item(NAME(m_ddr_a));
|
||||
save_item(NAME(m_port_b_in));
|
||||
save_item(NAME(m_port_b_out));
|
||||
save_item(NAME(m_ddr_b));
|
||||
save_item(NAME(m_port_c_in));
|
||||
save_item(NAME(m_port_c_out));
|
||||
save_item(NAME(m_ddr_c));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void buggychl_mcu_device::device_reset()
|
||||
{
|
||||
m_mcu_sent = 0;
|
||||
m_main_sent = 0;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
m_port_a_in = 0;
|
||||
m_port_a_out = 0;
|
||||
m_ddr_a = 0;
|
||||
m_port_b_in = 0;
|
||||
m_port_b_out = 0;
|
||||
m_ddr_b = 0;
|
||||
m_port_c_in = 0;
|
||||
m_port_c_out = 0;
|
||||
m_ddr_c = 0;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Buggy Challenge 68705 protection interface
|
||||
|
||||
This is accurate. FairyLand Story seems to be identical.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
READ8_MEMBER( buggychl_mcu_device::buggychl_68705_port_a_r )
|
||||
{
|
||||
//logerror("%04x: 68705 port A read %02x\n", m_mcu->safe_pc(), m_port_a_in);
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_port_a_w )
|
||||
{
|
||||
//logerror("%04x: 68705 port A write %02x\n", m_mcu->safe_pc(), data);
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_ddr_a_w )
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
* parts in [ ] are optional (not used by buggychl)
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 0 n.c.
|
||||
* 1 W IRQ ack and enable latch which holds data from main Z80 memory
|
||||
* 2 W loads latch to Z80
|
||||
* 3 W to Z80 BUSRQ (put it on hold?)
|
||||
* 4 W n.c.
|
||||
* 5 W [selects Z80 memory access direction (0 = write 1 = read)]
|
||||
* 6 W [loads the latch which holds the low 8 bits of the address of
|
||||
* the main Z80 memory location to access]
|
||||
* 7 W [loads the latch which holds the high 8 bits of the address of
|
||||
* the main Z80 memory location to access]
|
||||
*/
|
||||
|
||||
|
||||
READ8_MEMBER( buggychl_mcu_device::buggychl_68705_port_b_r )
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_port_b_w )
|
||||
{
|
||||
logerror("%04x: 68705 port B write %02x\n", m_mcu->safe_pc(), data);
|
||||
|
||||
if ((m_ddr_b & 0x02) && (~data & 0x02) && (m_port_b_out & 0x02))
|
||||
{
|
||||
m_port_a_in = m_from_main;
|
||||
if (m_main_sent)
|
||||
m_mcu->execute().set_input_line(0, CLEAR_LINE);
|
||||
m_main_sent = 0;
|
||||
logerror("read command %02x from main cpu\n", m_port_a_in);
|
||||
}
|
||||
if ((m_ddr_b & 0x04) && (data & 0x04) && (~m_port_b_out & 0x04))
|
||||
{
|
||||
logerror("send command %02x to main cpu\n", m_port_a_out);
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 1;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_ddr_b_w )
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Port C connections:
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 0 R 1 when pending command Z80->68705
|
||||
* 1 R 0 when pending command 68705->Z80
|
||||
*/
|
||||
|
||||
READ8_MEMBER( buggychl_mcu_device::buggychl_68705_port_c_r )
|
||||
{
|
||||
m_port_c_in = 0;
|
||||
if (m_main_sent)
|
||||
m_port_c_in |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
m_port_c_in |= 0x02;
|
||||
logerror("%04x: 68705 port C read %02x\n", m_mcu->safe_pc(), m_port_c_in);
|
||||
return (m_port_c_out & m_ddr_c) | (m_port_c_in & ~m_ddr_c);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_port_c_w )
|
||||
{
|
||||
logerror("%04x: 68705 port C write %02x\n", m_mcu->safe_pc(), data);
|
||||
m_port_c_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_68705_ddr_c_w )
|
||||
{
|
||||
m_ddr_c = data;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER( buggychl_mcu_device::buggychl_mcu_w )
|
||||
{
|
||||
logerror("%04x: mcu_w %02x\n", m_mcu->safe_pc(), data);
|
||||
m_from_main = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->execute().set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER( buggychl_mcu_device::buggychl_mcu_r )
|
||||
{
|
||||
logerror("%04x: mcu_r %02x\n", m_mcu->safe_pc(), m_from_mcu);
|
||||
m_mcu_sent = 0;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER( buggychl_mcu_device::buggychl_mcu_status_r )
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 1, mcu has sent data to the main cpu */
|
||||
//logerror("%04x: mcu_status_r\n",m_mcu->safe_pc());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
res |= 0x02;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
ADDRESS_MAP_START( buggychl_mcu_map, AS_PROGRAM, 8, buggychl_mcu_device )
|
||||
ADDRESS_MAP_GLOBAL_MASK(0x7ff)
|
||||
AM_RANGE(0x0000, 0x0000) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_68705_port_a_r, buggychl_68705_port_a_w)
|
||||
AM_RANGE(0x0001, 0x0001) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_68705_port_b_r, buggychl_68705_port_b_w)
|
||||
AM_RANGE(0x0002, 0x0002) AM_DEVREADWRITE("bmcu", buggychl_mcu_device, buggychl_68705_port_c_r, buggychl_68705_port_c_w)
|
||||
AM_RANGE(0x0004, 0x0004) AM_DEVWRITE("bmcu", buggychl_mcu_device, buggychl_68705_ddr_a_w)
|
||||
AM_RANGE(0x0005, 0x0005) AM_DEVWRITE("bmcu", buggychl_mcu_device, buggychl_68705_ddr_b_w)
|
||||
AM_RANGE(0x0006, 0x0006) AM_DEVWRITE("bmcu", buggychl_mcu_device, buggychl_68705_ddr_c_w)
|
||||
AM_RANGE(0x0010, 0x007f) AM_RAM
|
||||
AM_RANGE(0x0080, 0x07ff) AM_ROM
|
||||
ADDRESS_MAP_END
|
@ -1,48 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ernesto Corvi, Nicola Salmoria
|
||||
class buggychl_mcu_device : public device_t
|
||||
{
|
||||
public:
|
||||
buggychl_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
~buggychl_mcu_device() {}
|
||||
|
||||
DECLARE_WRITE8_MEMBER( buggychl_mcu_w );
|
||||
DECLARE_READ8_MEMBER( buggychl_mcu_r );
|
||||
DECLARE_READ8_MEMBER( buggychl_mcu_status_r );
|
||||
DECLARE_READ8_MEMBER( buggychl_68705_port_a_r );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_port_a_w );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_ddr_a_w );
|
||||
DECLARE_READ8_MEMBER( buggychl_68705_port_b_r );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_port_b_w );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_ddr_b_w );
|
||||
DECLARE_READ8_MEMBER( buggychl_68705_port_c_r );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_port_c_w );
|
||||
DECLARE_WRITE8_MEMBER( buggychl_68705_ddr_c_w );
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual void device_config_complete() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
private:
|
||||
// internal state
|
||||
uint8_t m_port_a_in;
|
||||
uint8_t m_port_a_out;
|
||||
uint8_t m_ddr_a;
|
||||
uint8_t m_port_b_in;
|
||||
uint8_t m_port_b_out;
|
||||
uint8_t m_ddr_b;
|
||||
uint8_t m_port_c_in;
|
||||
uint8_t m_port_c_out;
|
||||
uint8_t m_ddr_c;
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
int m_mcu_sent;
|
||||
int m_main_sent;
|
||||
device_t *m_mcu;
|
||||
};
|
||||
|
||||
ADDRESS_MAP_EXTERN( buggychl_mcu_map, 8 );
|
||||
|
||||
extern const device_type BUGGYCHL_MCU;
|
@ -12,131 +12,6 @@
|
||||
#include "emu.h"
|
||||
#include "includes/flstory.h"
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Fairy Land Story 68705 protection interface
|
||||
|
||||
The following is ENTIRELY GUESSWORK!!!
|
||||
|
||||
It seems, however, to be identical to Buggy Challenge.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
READ8_MEMBER(flstory_state::flstory_68705_port_a_r)
|
||||
{
|
||||
//logerror("%04x: 68705 port A read %02x\n", space.device().safe_pc(), m_port_a_in);
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_port_a_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port A write %02x\n", space.device().safe_pc(), data);
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 1 W when 1->0, enables latch which brings the command from main CPU (read from port A)
|
||||
* 2 W when 0->1, copies port A to the latch for the main CPU
|
||||
*/
|
||||
|
||||
READ8_MEMBER(flstory_state::flstory_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_port_b_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port B write %02x\n",space.device().safe_pc(),data);
|
||||
|
||||
if ((m_ddr_b & 0x02) && (~data & 0x02) && (m_port_b_out & 0x02))
|
||||
{
|
||||
m_port_a_in = m_from_main;
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
m_main_sent = 0;
|
||||
logerror("read command %02x from main cpu\n", m_port_a_in);
|
||||
}
|
||||
if ((m_ddr_b & 0x04) && (data & 0x04) && (~m_port_b_out & 0x04))
|
||||
{
|
||||
logerror("send command %02x to main cpu\n", m_port_a_out);
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 1;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(flstory_state::flstory_68705_port_c_r)
|
||||
{
|
||||
m_port_c_in = 0;
|
||||
if (m_main_sent)
|
||||
m_port_c_in |= 0x01;
|
||||
|
||||
if (!m_mcu_sent)
|
||||
m_port_c_in |= 0x02;
|
||||
|
||||
//logerror("%04x: 68705 port C read %02x\n", space.device().safe_pc(), port_c_in);
|
||||
return (m_port_c_out & m_ddr_c) | (m_port_c_in & ~m_ddr_c);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_port_c_w)
|
||||
{
|
||||
logerror("%04x: 68705 port C write %02x\n", space.device().safe_pc(), data);
|
||||
m_port_c_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_68705_ddr_c_w)
|
||||
{
|
||||
m_ddr_c = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::flstory_mcu_w)
|
||||
{
|
||||
logerror("%04x: mcu_w %02x\n", space.device().safe_pc(), data);
|
||||
m_from_main = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER(flstory_state::flstory_mcu_r)
|
||||
{
|
||||
logerror("%04x: mcu_r %02x\n",space.device().safe_pc(), m_from_mcu);
|
||||
m_mcu_sent = 0;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER(flstory_state::flstory_mcu_status_r)
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 1, mcu has sent data to the main cpu */
|
||||
//logerror("%04x: mcu_status_r\n", space.device().safe_pc());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
res |= 0x02;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(flstory_state::onna34ro_mcu_w)
|
||||
{
|
||||
uint16_t score_adr = m_workram[0x29e] * 0x100 + m_workram[0x29d];
|
||||
|
@ -1,141 +0,0 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Phil Stroffolino
|
||||
/***************************************************************************
|
||||
|
||||
machine.c
|
||||
|
||||
Functions to emulate general aspects of the machine (RAM, ROM, interrupts,
|
||||
I/O ports)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#include "emu.h"
|
||||
#include "includes/lkage.h"
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Legend of Kage 68705 protection interface
|
||||
|
||||
The following is ENTIRELY GUESSWORK!!!
|
||||
And moreover, the game seems to work anyway regardless of what the mcu returns.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
READ8_MEMBER(lkage_state::lkage_68705_port_a_r)
|
||||
{
|
||||
//logerror("%04x: 68705 port A read %02x\n", space.device().safe_pc(), m_port_a_in);
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_port_a_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port A write %02x\n", space.device().safe_pc(), data);
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 1 W when 1->0, enables latch which brings the command from main CPU (read from port A)
|
||||
* 2 W when 0->1, copies port A to the latch for the main CPU
|
||||
*/
|
||||
|
||||
READ8_MEMBER(lkage_state::lkage_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_port_b_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port B write %02x\n", space.device().safe_pc(), data);
|
||||
|
||||
if ((m_ddr_b & 0x02) && (~data & 0x02) && (m_port_b_out & 0x02))
|
||||
{
|
||||
m_port_a_in = m_from_main;
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_main_sent = 0;
|
||||
logerror("read command %02x from main cpu\n", m_port_a_in);
|
||||
}
|
||||
|
||||
if ((m_ddr_b & 0x04) && (data & 0x04) && (~m_port_b_out & 0x04))
|
||||
{
|
||||
logerror("send command %02x to main cpu\n", m_port_a_out);
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 1;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
READ8_MEMBER(lkage_state::lkage_68705_port_c_r)
|
||||
{
|
||||
m_port_c_in = 0;
|
||||
if (m_main_sent)
|
||||
m_port_c_in |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
m_port_c_in |= 0x02;
|
||||
|
||||
//logerror("%04x: 68705 port C read %02x\n", space.device().safe_pc(), m_port_c_in);
|
||||
return (m_port_c_out & m_ddr_c) | (m_port_c_in & ~m_ddr_c);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_port_c_w)
|
||||
{
|
||||
logerror("%04x: 68705 port C write %02x\n", space.device().safe_pc(), data);
|
||||
m_port_c_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_68705_ddr_c_w)
|
||||
{
|
||||
m_ddr_c = data;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(lkage_state::lkage_mcu_w)
|
||||
{
|
||||
logerror("%04x: mcu_w %02x\n", space.device().safe_pc(), data);
|
||||
m_from_main = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER(lkage_state::lkage_mcu_r)
|
||||
{
|
||||
logerror("%04x: mcu_r %02x\n", space.device().safe_pc(), m_from_mcu);
|
||||
m_mcu_sent = 0;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER(lkage_state::lkage_mcu_status_r)
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 1, mcu has sent data to the main cpu */
|
||||
//logerror("%04x: mcu_status_r\n", space.device().safe_pc());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
res |= 0x02;
|
||||
|
||||
return res;
|
||||
}
|
@ -86,91 +86,6 @@ READ8_MEMBER(lsasquad_state::daikaiju_sound_status_r)
|
||||
return m_sound_pending ^ 3;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
LSA Squad 68705 protection interface
|
||||
|
||||
The following is ENTIRELY GUESSWORK!!!
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
READ8_MEMBER(lsasquad_state::lsasquad_68705_port_a_r)
|
||||
{
|
||||
//logerror("%04x: 68705 port A read %02x\n", space.device().safe_pc(), m_port_a_in);
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lsasquad_state::lsasquad_68705_port_a_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port A write %02x\n", space.device().safe_pc(), data);
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lsasquad_state::lsasquad_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 1 W when 1->0, enables latch which brings the command from main CPU (read from port A)
|
||||
* 2 W when 0->1, copies port A to the latch for the main CPU
|
||||
*/
|
||||
|
||||
READ8_MEMBER(lsasquad_state::lsasquad_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lsasquad_state::lsasquad_68705_port_b_w)
|
||||
{
|
||||
//logerror("%04x: 68705 port B write %02x\n", space.device().safe_pc(), data);
|
||||
|
||||
if ((m_ddr_b & 0x02) && (~data & 0x02) && (m_port_b_out & 0x02))
|
||||
{
|
||||
m_port_a_in = m_from_main;
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
m_main_sent = 0;
|
||||
//logerror("read command %02x from main cpu\n", m_port_a_in);
|
||||
}
|
||||
|
||||
if ((m_ddr_b & 0x04) && (data & 0x04) && (~m_port_b_out & 0x04))
|
||||
{
|
||||
//logerror("send command %02x to main cpu\n", m_port_a_out);
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 1;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lsasquad_state::lsasquad_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(lsasquad_state::lsasquad_mcu_w)
|
||||
{
|
||||
//logerror("%04x: mcu_w %02x\n", space.device().safe_pc(), data);
|
||||
m_from_main = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER(lsasquad_state::lsasquad_mcu_r)
|
||||
{
|
||||
//logerror("%04x: mcu_r %02x\n", space.device().safe_pc(), m_from_mcu);
|
||||
m_mcu_sent = 0;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER(lsasquad_state::lsasquad_mcu_status_r)
|
||||
{
|
||||
int res = ioport("MCU")->read();
|
||||
@ -178,10 +93,13 @@ READ8_MEMBER(lsasquad_state::lsasquad_mcu_status_r)
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 0, mcu has sent data to the main cpu */
|
||||
//logerror("%04x: mcu_status_r\n",space.device().safe_pc());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
res |= 0x02;
|
||||
if (m_bmcu)
|
||||
{
|
||||
if (!m_bmcu->get_main_sent())
|
||||
res |= 0x01;
|
||||
if (!m_bmcu->get_mcu_sent())
|
||||
res |= 0x02;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
@ -193,10 +111,13 @@ READ8_MEMBER(lsasquad_state::daikaiju_mcu_status_r)
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 0, mcu has sent data to the main cpu */
|
||||
//logerror("%04x: mcu_status_r\n",space.device().safe_pc());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
res |= 0x02;
|
||||
if (m_bmcu)
|
||||
{
|
||||
if (!m_bmcu->get_main_sent())
|
||||
res |= 0x01;
|
||||
if (!m_bmcu->get_mcu_sent())
|
||||
res |= 0x02;
|
||||
}
|
||||
|
||||
res |= ((m_sound_pending & 0x02) ^ 2) << 3; //inverted flag
|
||||
m_sound_pending &= ~0x02;
|
||||
|
@ -12,105 +12,15 @@
|
||||
#include "emu.h"
|
||||
#include "includes/nycaptor.h"
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_68705_port_a_r)
|
||||
{
|
||||
return (m_port_a_out & m_ddr_a) | (m_port_a_in & ~m_ddr_a);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_port_a_w)
|
||||
{
|
||||
m_port_a_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_ddr_a_w)
|
||||
{
|
||||
m_ddr_a = data;
|
||||
}
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 1 W when 1->0, enables latch which brings the command from main CPU (read from port A)
|
||||
* 2 W when 0->1, copies port A to the latch for the main CPU
|
||||
*/
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_68705_port_b_r)
|
||||
{
|
||||
return (m_port_b_out & m_ddr_b) | (m_port_b_in & ~m_ddr_b);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_port_b_w)
|
||||
{
|
||||
if (BIT(m_ddr_b, 1) && BIT(~data, 1) && BIT(m_port_b_out, 1))
|
||||
{
|
||||
m_port_a_in = m_from_main;
|
||||
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
m_main_sent = 0;
|
||||
|
||||
}
|
||||
|
||||
if (BIT(m_ddr_b, 2) && BIT(data, 2) && BIT(~m_port_b_out, 2))
|
||||
{
|
||||
m_from_mcu = m_port_a_out;
|
||||
m_mcu_sent = 1;
|
||||
}
|
||||
|
||||
m_port_b_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_ddr_b_w)
|
||||
{
|
||||
m_ddr_b = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_68705_port_c_r)
|
||||
{
|
||||
m_port_c_in = 0;
|
||||
|
||||
if (m_main_sent)
|
||||
m_port_c_in |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
m_port_c_in |= 0x02;
|
||||
|
||||
return (m_port_c_out & m_ddr_c) | (m_port_c_in & ~m_ddr_c);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_port_c_w)
|
||||
{
|
||||
m_port_c_out = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_68705_ddr_c_w)
|
||||
{
|
||||
m_ddr_c = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(nycaptor_state::nycaptor_mcu_w)
|
||||
{
|
||||
m_from_main = data;
|
||||
m_main_sent = 1;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_mcu_r)
|
||||
{
|
||||
m_mcu_sent = 0;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_mcu_status_r1)
|
||||
{
|
||||
/* bit 1 = when 1, mcu has sent data to the main cpu */
|
||||
return m_mcu_sent ? 2 : 0;
|
||||
return m_bmcu->get_mcu_sent() ? 2 : 0;
|
||||
}
|
||||
|
||||
READ8_MEMBER(nycaptor_state::nycaptor_mcu_status_r2)
|
||||
{
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
return m_main_sent ? 0 : 1;
|
||||
return m_bmcu->get_main_sent() ? 0 : 1;
|
||||
}
|
||||
|
@ -12,26 +12,6 @@
|
||||
#include "includes/slapfght.h"
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Tiger Heli MCU
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
READ8_MEMBER(slapfght_state::tigerh_mcu_r)
|
||||
{
|
||||
m_mcu_sent = false;
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(slapfght_state::tigerh_mcu_w)
|
||||
{
|
||||
m_from_main = data;
|
||||
m_main_sent = true;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************/
|
||||
|
||||
READ8_MEMBER(slapfght_state::tigerh_mcu_status_r)
|
||||
@ -39,115 +19,24 @@ READ8_MEMBER(slapfght_state::tigerh_mcu_status_r)
|
||||
// d0 is vblank
|
||||
uint8_t res = m_screen->vblank() ? 1 : 0;
|
||||
|
||||
if (!m_main_sent)
|
||||
res |= 0x02;
|
||||
if (!m_mcu_sent)
|
||||
res |= 0x04;
|
||||
if (m_bmcu)
|
||||
{
|
||||
if (!m_bmcu->get_main_sent())
|
||||
res |= 0x02;
|
||||
if (!m_bmcu->get_mcu_sent())
|
||||
res |= 0x04;
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
MCU port handlers (general)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
READ8_MEMBER(slapfght_state::tigerh_mcu_porta_r)
|
||||
WRITE8_MEMBER(slapfght_state::scroll_from_mcu_w)
|
||||
{
|
||||
return m_to_mcu_latch;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(slapfght_state::tigerh_mcu_porta_w)
|
||||
{
|
||||
m_from_mcu_latch = data;
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
MCU port handlers (Tiger Heli)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(slapfght_state::tigerh_mcu_portb_w)
|
||||
{
|
||||
if ((mem_mask & 0x02) && (~data & 0x02) && (m_old_portB & 0x02))
|
||||
switch (offset)
|
||||
{
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_to_mcu_latch = m_from_main;
|
||||
m_main_sent = false;
|
||||
case 0x00: m_scrollx_lo = data; break;
|
||||
case 0x01: m_scrollx_hi = data; break;
|
||||
}
|
||||
if ((mem_mask & 0x04) && (data & 0x04) && (~m_old_portB & 0x04))
|
||||
{
|
||||
m_from_mcu = m_from_mcu_latch;
|
||||
m_mcu_sent = true;
|
||||
}
|
||||
|
||||
m_old_portB = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(slapfght_state::tigerh_mcu_portc_r)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
|
||||
if (!m_main_sent)
|
||||
ret |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
ret |= 0x02;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
MCU port handlers (Slap Fight)
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
WRITE8_MEMBER(slapfght_state::slapfght_mcu_portb_w)
|
||||
{
|
||||
if ((mem_mask & 0x02) && (~data & 0x02) && (m_old_portB & 0x02))
|
||||
{
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_to_mcu_latch = m_from_main;
|
||||
m_main_sent = false;
|
||||
}
|
||||
if ((mem_mask & 0x04) && (data & 0x04) && (~m_old_portB & 0x04))
|
||||
{
|
||||
m_from_mcu = m_from_mcu_latch;
|
||||
m_mcu_sent = true;
|
||||
}
|
||||
if ((mem_mask & 0x08) && (~data & 0x08) && (m_old_portB & 0x08))
|
||||
{
|
||||
m_scrollx_lo = m_from_mcu_latch;
|
||||
}
|
||||
if ((mem_mask & 0x10) && (~data & 0x10) && (m_old_portB & 0x10))
|
||||
{
|
||||
m_scrollx_hi = m_from_mcu_latch;
|
||||
}
|
||||
|
||||
m_old_portB = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER(slapfght_state::slapfght_mcu_portc_r)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
|
||||
if (!m_main_sent)
|
||||
ret |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
ret |= 0x02;
|
||||
|
||||
ret ^= 0x3; // inverted logic compared to tigerh
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
|
354
src/mame/machine/taito68705interface.cpp
Normal file
354
src/mame/machine/taito68705interface.cpp
Normal file
@ -0,0 +1,354 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood
|
||||
#include "emu.h"
|
||||
#include "cpu/z80/z80.h"
|
||||
#include "machine/taito68705interface.h"
|
||||
|
||||
/*
|
||||
Most Taito 68705s share a similar (often identical) hookup.
|
||||
This file encapsulates that.
|
||||
|
||||
used by:
|
||||
buggychl.cpp - buggychl
|
||||
bking.cpp - bking3
|
||||
40love.cpp - 40love
|
||||
bublbobl.cpp - tokio
|
||||
flstory.cpp - flstory
|
||||
nycaptor.cpp - nycaptor
|
||||
lsasquad.cpp - lsasquad
|
||||
- daikaiju
|
||||
lkage.cpp - lkage
|
||||
|
||||
and the following with slight changes:
|
||||
slapfght.cpp - tigerh (inverted status bits read on portC)
|
||||
- slapfght (extended outputs for scrolling)
|
||||
bigevglf.cpp - writes to mcu aren't latched(?)f
|
||||
|
||||
|
||||
not hooked up here, but possible (needs investigating)
|
||||
pitnrun.cpp - have more functionality on portB, currently using 'instant timers' for latches
|
||||
taitosj.cpp - ^^
|
||||
changela.cpp - ^^
|
||||
arkanoid.cpp - uses 68705 timers (they need to be moved to the 68705 core) and also some portB differences?
|
||||
xain.cpp - not a Taito game (licensed to Taito?) but MCU hookup looks almost the same
|
||||
renegade.cpp - ^^
|
||||
matmania.cpp - ^^
|
||||
|
||||
68705 sets in Taito drivers that are NOT suitable for hookup here?
|
||||
bublbobl.cpp - bub68705 - this is a bootleg, not an official Taito hookup
|
||||
mexico86.cpp - knightb, mexico86 - bootleg 68705s
|
||||
retofinv.cpp - the current MCU dump is a bootleg at least
|
||||
sqix.cpp - hotsmash - kaneko hookup, different from Taito ones.
|
||||
|
||||
there are other drivers (and games in existing drivers) that could hookup here, but currently lack MCU dumps.
|
||||
|
||||
*/
|
||||
|
||||
const device_type TAITO68705_MCU = &device_creator<taito68705_mcu_device>;
|
||||
const device_type TAITO68705_MCU_SLAP = &device_creator<taito68705_mcu_slap_device>;
|
||||
const device_type TAITO68705_MCU_TIGER = &device_creator<taito68705_mcu_tiger_device>;
|
||||
const device_type TAITO68705_MCU_BEG = &device_creator<taito68705_mcu_beg_device>;
|
||||
|
||||
taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, TAITO68705_MCU, "Taito M68705 MCU Interface", tag, owner, clock, "taito68705", __FILE__),
|
||||
m_mcu_sent(false),
|
||||
m_main_sent(false),
|
||||
m_from_main(0),
|
||||
m_from_mcu(0),
|
||||
m_from_mcu_latch(0),
|
||||
m_to_mcu_latch(0),
|
||||
m_old_portB(0),
|
||||
m_mcu(*this, "mcu")
|
||||
{
|
||||
}
|
||||
|
||||
taito68705_mcu_device::taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source)
|
||||
: device_t(mconfig, type, name, tag, owner, clock, shortname, source),
|
||||
m_mcu_sent(false),
|
||||
m_main_sent(false),
|
||||
m_from_main(0),
|
||||
m_from_mcu(0),
|
||||
m_from_mcu_latch(0),
|
||||
m_to_mcu_latch(0),
|
||||
m_old_portB(0),
|
||||
m_mcu(*this, "mcu")
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static MACHINE_CONFIG_FRAGMENT( taito68705 )
|
||||
MCFG_CPU_ADD("mcu", M68705_NEW, DERIVED_CLOCK(1,1))
|
||||
MCFG_M68705_PORTA_R_CB(READ8(taito68705_mcu_device, mcu_porta_r))
|
||||
MCFG_M68705_PORTA_W_CB(WRITE8(taito68705_mcu_device, mcu_porta_w))
|
||||
MCFG_M68705_PORTB_W_CB(WRITE8(taito68705_mcu_device, mcu_portb_w))
|
||||
MCFG_M68705_PORTC_R_CB(READ8(taito68705_mcu_device, mcu_portc_r))
|
||||
MACHINE_CONFIG_END
|
||||
|
||||
machine_config_constructor taito68705_mcu_device::device_mconfig_additions() const
|
||||
{
|
||||
return MACHINE_CONFIG_NAME( taito68705 );
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_config_complete - perform any
|
||||
// operations now that the configuration is
|
||||
// complete
|
||||
//-------------------------------------------------
|
||||
|
||||
void taito68705_mcu_device::device_config_complete()
|
||||
{
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void taito68705_mcu_device::device_start()
|
||||
{
|
||||
save_item(NAME(m_mcu_sent));
|
||||
save_item(NAME(m_main_sent));
|
||||
save_item(NAME(m_from_main));
|
||||
save_item(NAME(m_from_mcu));
|
||||
save_item(NAME(m_from_mcu_latch));
|
||||
save_item(NAME(m_to_mcu_latch));
|
||||
save_item(NAME(m_old_portB));
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void taito68705_mcu_device::device_reset()
|
||||
{
|
||||
m_mcu_sent = false;
|
||||
m_main_sent = false;
|
||||
m_from_main = 0;
|
||||
m_from_mcu = 0;
|
||||
m_from_mcu_latch = 0;
|
||||
m_to_mcu_latch = 0;
|
||||
m_old_portB = 0;
|
||||
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
}
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
||||
Buggy Challenge 68705 protection interface
|
||||
|
||||
This is accurate. FairyLand Story seems to be identical.
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
|
||||
/*
|
||||
* Port B connections:
|
||||
* parts in [ ] are optional (not used by buggychl)
|
||||
*
|
||||
* all bits are logical 1 when read (+5V pullup)
|
||||
*
|
||||
* 0 n.c.
|
||||
* 1 W IRQ ack and enable latch which holds data from main Z80 memory
|
||||
* 2 W loads latch to Z80
|
||||
* 3 W to Z80 BUSRQ (put it on hold?)
|
||||
* 4 W n.c.
|
||||
* 5 W [selects Z80 memory access direction (0 = write 1 = read)]
|
||||
* 6 W [loads the latch which holds the low 8 bits of the address of
|
||||
* the main Z80 memory location to access]
|
||||
* 7 W [loads the latch which holds the high 8 bits of the address of
|
||||
* the main Z80 memory location to access]
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
READ8_MEMBER(taito68705_mcu_device::mcu_r)
|
||||
{
|
||||
m_mcu_sent = false;
|
||||
|
||||
// logerror("%s: mcu_r %02x\n", space.machine().describe_context(), m_from_mcu);
|
||||
|
||||
return m_from_mcu;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_device::mcu_w)
|
||||
{
|
||||
// logerror("%s: mcu_w %02x\n", space.machine().describe_context(), data);
|
||||
|
||||
m_from_main = data;
|
||||
m_main_sent = true;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(taito68705_mcu_device::mcu_porta_r)
|
||||
{
|
||||
// logerror("mcu_porta_r\n");
|
||||
return m_to_mcu_latch;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_device::mcu_porta_w)
|
||||
{
|
||||
// logerror("mcu_porta_w %02x\n", data);
|
||||
m_from_mcu_latch = data;
|
||||
}
|
||||
|
||||
|
||||
READ8_MEMBER(taito68705_mcu_device::mcu_portc_r)
|
||||
{
|
||||
uint8_t ret = 0;
|
||||
|
||||
if (m_main_sent)
|
||||
ret |= 0x01;
|
||||
if (!m_mcu_sent)
|
||||
ret |= 0x02;
|
||||
|
||||
// logerror("%s: mcu_portc_r %02x\n", space.machine().describe_context(), ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_device::mcu_portb_w)
|
||||
{
|
||||
// logerror("mcu_portb_w %02x\n", data);
|
||||
|
||||
if ((mem_mask & 0x02) && (~data & 0x02) && (m_old_portB & 0x02))
|
||||
{
|
||||
if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
m_to_mcu_latch = m_from_main;
|
||||
m_main_sent = false;
|
||||
}
|
||||
if ((mem_mask & 0x04) && (data & 0x04) && (~m_old_portB & 0x04))
|
||||
{
|
||||
m_from_mcu = m_from_mcu_latch;
|
||||
m_mcu_sent = true;
|
||||
// logerror("sent %02x\n", m_from_mcu);
|
||||
}
|
||||
|
||||
m_old_portB = data;
|
||||
|
||||
}
|
||||
|
||||
/* Status readbacks for MAIN cpu - these hook up in various ways depending on the host (provide 2 lines instead?) */
|
||||
|
||||
READ8_MEMBER( taito68705_mcu_device::mcu_status_r )
|
||||
{
|
||||
int res = 0;
|
||||
|
||||
/* bit 0 = when 1, mcu is ready to receive data from main cpu */
|
||||
/* bit 1 = when 1, mcu has sent data to the main cpu */
|
||||
//logerror("%s: mcu_status_r\n",machine().describe_context());
|
||||
if (!m_main_sent)
|
||||
res |= 0x01;
|
||||
if (m_mcu_sent)
|
||||
res |= 0x02;
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(taito68705_mcu_device::mcu_sent_r)
|
||||
{
|
||||
if (!m_mcu_sent) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
CUSTOM_INPUT_MEMBER(taito68705_mcu_device::main_sent_r)
|
||||
{
|
||||
if (!m_main_sent) return 0;
|
||||
else return 1;
|
||||
}
|
||||
|
||||
/* The Slap Fight interface has some extensions, handle them here */
|
||||
|
||||
taito68705_mcu_slap_device::taito68705_mcu_slap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: taito68705_mcu_device(mconfig, TAITO68705_MCU_SLAP, "Taito M68705 MCU Interface (Slap Fight)", tag, owner, clock, "taito68705slap", __FILE__),
|
||||
m_extension_cb_w(*this)
|
||||
{
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_slap_device::mcu_portb_w)
|
||||
{
|
||||
if ((mem_mask & 0x08) && (~data & 0x08) && (m_old_portB & 0x08))
|
||||
{
|
||||
m_extension_cb_w(0,m_from_mcu_latch, 0xff); // m_scrollx_lo
|
||||
}
|
||||
if ((mem_mask & 0x10) && (~data & 0x10) && (m_old_portB & 0x10))
|
||||
{
|
||||
m_extension_cb_w(1,m_from_mcu_latch, 0xff); // m_scrollx_hi
|
||||
}
|
||||
|
||||
taito68705_mcu_device::mcu_portb_w(space,offset,data);
|
||||
}
|
||||
|
||||
void taito68705_mcu_slap_device::device_start()
|
||||
{
|
||||
taito68705_mcu_device::device_start();
|
||||
m_extension_cb_w.resolve_safe();
|
||||
}
|
||||
|
||||
|
||||
/* The Tiger Heli interface has some extensions, handle them here */
|
||||
|
||||
taito68705_mcu_tiger_device::taito68705_mcu_tiger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: taito68705_mcu_device(mconfig, TAITO68705_MCU_TIGER, "Taito M68705 MCU Interface (Tiger Heli)", tag, owner, clock, "taito68705tiger", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
READ8_MEMBER(taito68705_mcu_tiger_device::mcu_portc_r)
|
||||
{
|
||||
uint8_t ret = taito68705_mcu_device::mcu_portc_r(space,offset);
|
||||
|
||||
// Tiger Heli has these status bits inverted MCU-side
|
||||
ret ^= 0x3;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Big Event Golf has some things switched around, handle them here */
|
||||
|
||||
taito68705_mcu_beg_device::taito68705_mcu_beg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: taito68705_mcu_device(mconfig, TAITO68705_MCU_BEG, "Taito M68705 MCU Interface (Big Event Golf)", tag, owner, clock, "taito68705bigevglf", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_beg_device::mcu_portb_w)
|
||||
{
|
||||
// transitions are reversed
|
||||
if ((mem_mask & 0x02) && (data & 0x02) && (~m_old_portB & 0x02) ) /* positive going transition of the clock */
|
||||
{
|
||||
//if (m_main_sent)
|
||||
m_mcu->set_input_line(0, CLEAR_LINE);
|
||||
|
||||
//m_to_mcu_latch = m_from_main; // this is weird, no latching?!
|
||||
m_main_sent = false;
|
||||
}
|
||||
if ((mem_mask & 0x04) && (data & 0x04) && (~m_old_portB & 0x04) ) /* positive going transition of the clock */
|
||||
{
|
||||
m_from_mcu = m_from_mcu_latch;
|
||||
m_mcu_sent = true;
|
||||
// logerror("sent %02x\n", m_from_mcu);
|
||||
}
|
||||
|
||||
m_old_portB = data;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(taito68705_mcu_beg_device::mcu_w)
|
||||
{
|
||||
// logerror("%s: mcu_w %02x\n", space.machine().describe_context(), data);
|
||||
|
||||
m_to_mcu_latch = data; // this is weird, no latching?!
|
||||
m_main_sent = true;
|
||||
m_mcu->set_input_line(0, ASSERT_LINE);
|
||||
|
||||
}
|
||||
|
||||
|
86
src/mame/machine/taito68705interface.h
Normal file
86
src/mame/machine/taito68705interface.h
Normal file
@ -0,0 +1,86 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:Ernesto Corvi, Nicola Salmoria, David Haywood
|
||||
|
||||
#include "cpu/m6805/m6805.h"
|
||||
|
||||
class taito68705_mcu_device : public device_t
|
||||
{
|
||||
public:
|
||||
taito68705_mcu_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
taito68705_mcu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, u32 clock, const char *shortname, const char *source);
|
||||
|
||||
~taito68705_mcu_device() {}
|
||||
|
||||
virtual DECLARE_WRITE8_MEMBER( mcu_w );
|
||||
DECLARE_READ8_MEMBER( mcu_r );
|
||||
DECLARE_READ8_MEMBER( mcu_porta_r );
|
||||
virtual DECLARE_READ8_MEMBER( mcu_portc_r );
|
||||
DECLARE_WRITE8_MEMBER( mcu_porta_w );
|
||||
virtual DECLARE_WRITE8_MEMBER( mcu_portb_w );
|
||||
|
||||
DECLARE_READ8_MEMBER( mcu_status_r );
|
||||
DECLARE_CUSTOM_INPUT_MEMBER( mcu_sent_r );
|
||||
DECLARE_CUSTOM_INPUT_MEMBER( main_sent_r );
|
||||
|
||||
bool get_main_sent() { return m_main_sent; };
|
||||
bool get_mcu_sent() { return m_mcu_sent; };
|
||||
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
virtual machine_config_constructor device_mconfig_additions() const override;
|
||||
virtual void device_config_complete() override;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
|
||||
// internal state
|
||||
bool m_mcu_sent;
|
||||
bool m_main_sent;
|
||||
uint8_t m_from_main;
|
||||
uint8_t m_from_mcu;
|
||||
uint8_t m_from_mcu_latch;
|
||||
uint8_t m_to_mcu_latch;
|
||||
uint8_t m_old_portB;
|
||||
|
||||
required_device<cpu_device> m_mcu;
|
||||
};
|
||||
|
||||
extern const device_type TAITO68705_MCU;
|
||||
|
||||
#define MCFG_TAITO_M68705_EXTENSION_CB(_devcb) \
|
||||
taito68705_mcu_slap_device::set_extension_cb(*device, DEVCB_##_devcb);
|
||||
|
||||
class taito68705_mcu_slap_device : public taito68705_mcu_device
|
||||
{
|
||||
public:
|
||||
taito68705_mcu_slap_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
virtual DECLARE_WRITE8_MEMBER( mcu_portb_w ) override;
|
||||
|
||||
template<class _Object> static devcb_base &set_extension_cb(device_t &device, _Object object) { return downcast<taito68705_mcu_slap_device &>(device).m_extension_cb_w.set_callback(object); }
|
||||
|
||||
devcb_write8 m_extension_cb_w;
|
||||
|
||||
protected:
|
||||
virtual void device_start() override;
|
||||
};
|
||||
|
||||
extern const device_type TAITO68705_MCU_SLAP;
|
||||
|
||||
class taito68705_mcu_tiger_device : public taito68705_mcu_device
|
||||
{
|
||||
public:
|
||||
taito68705_mcu_tiger_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
virtual DECLARE_READ8_MEMBER( mcu_portc_r ) override;
|
||||
};
|
||||
|
||||
extern const device_type TAITO68705_MCU_TIGER;
|
||||
|
||||
class taito68705_mcu_beg_device : public taito68705_mcu_device
|
||||
{
|
||||
public:
|
||||
taito68705_mcu_beg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
virtual DECLARE_WRITE8_MEMBER(mcu_w) override;
|
||||
virtual DECLARE_WRITE8_MEMBER(mcu_portb_w) override;
|
||||
};
|
||||
|
||||
extern const device_type TAITO68705_MCU_BEG;
|
Loading…
Reference in New Issue
Block a user