stage1 namcoc65 / c68 devicification (#3974)

* stage1 namcoc65 / c68 devicification

* progress (c68 button mappings currently incorrect)

* silly (nw)
This commit is contained in:
David Haywood 2018-09-07 20:47:29 +01:00 committed by R. Belmont
parent bb0e5c9b7c
commit 3120dba77d
10 changed files with 778 additions and 464 deletions

View File

@ -2832,6 +2832,10 @@ files {
MAME_DIR .. "src/mame/machine/namco53.h",
MAME_DIR .. "src/mame/machine/namco62.cpp",
MAME_DIR .. "src/mame/machine/namco62.h",
MAME_DIR .. "src/mame/machine/namco65.cpp",
MAME_DIR .. "src/mame/machine/namco65.h",
MAME_DIR .. "src/mame/machine/namco68.cpp",
MAME_DIR .. "src/mame/machine/namco68.h",
MAME_DIR .. "src/mame/machine/namcomcu.cpp",
MAME_DIR .. "src/mame/machine/namcomcu.h",
MAME_DIR .. "src/mame/machine/namcoio_gearbox.cpp",

View File

@ -575,12 +575,6 @@ WRITE8_MEMBER(namcos2_state::dpram_byte_w)
m_dpram[offset] = data;
}
READ8_MEMBER(namcos2_state::ack_mcu_vbl_r)
{
m_c68->set_input_line(m37450_device::M3745X_INT1_LINE, CLEAR_LINE);
return 0;
}
/*************************************************************/
/* SHARED 68000 CPU Memory declarations */
/*************************************************************/
@ -774,61 +768,6 @@ void namcos2_state::sound_default_am(address_map &map)
map(0xd000, 0xffff).rom();
}
/*************************************************************/
/* 68705 IO CPU Memory declarations */
/*************************************************************/
void namcos2_state::mcu_default_am(address_map &map)
{
/* input ports and dips are mapped here */
map(0x0000, 0x003f).ram(); /* Fill in register to stop logging */
map(0x0000, 0x0000).nopr(); /* Keep logging quiet */
map(0x0001, 0x0001).portr("MCUB");
map(0x0002, 0x0002).portr("MCUC");
map(0x0003, 0x0003).rw(FUNC(namcos2_state::namcos2_mcu_port_d_r), FUNC(namcos2_state::namcos2_mcu_port_d_w));
map(0x0007, 0x0007).portr("MCUH");
map(0x0010, 0x0010).rw(FUNC(namcos2_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos2_state::namcos2_mcu_analog_ctrl_w));
map(0x0011, 0x0011).rw(FUNC(namcos2_state::namcos2_mcu_analog_port_r), FUNC(namcos2_state::namcos2_mcu_analog_port_w));
map(0x0040, 0x01bf).ram();
map(0x01c0, 0x1fff).rom();
map(0x2000, 0x2000).portr("DSW");
map(0x3000, 0x3000).portr("MCUDI0");
map(0x3001, 0x3001).portr("MCUDI1");
map(0x3002, 0x3002).portr("MCUDI2");
map(0x3003, 0x3003).portr("MCUDI3");
map(0x5000, 0x57ff).rw(FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
map(0x6000, 0x6fff).nopr(); /* watchdog */
map(0x8000, 0xffff).rom();
}
/*************************************************************/
/* 37450 (C68) IO CPU Memory declarations */
/*************************************************************/
READ8_MEMBER(namcos2_state::c68_p5_r)
{
return (m_player_mux) ? ioport("MCUB2")->read() : ioport("MCUB")->read();
}
WRITE8_MEMBER(namcos2_state::c68_p3_w)
{
m_player_mux = (data & 0x80) ? 1 : 0;
}
void namcos2_state::c68_default_am(address_map &map)
{
/* input ports and dips are mapped here */
map(0x2000, 0x2000).portr("DSW");
map(0x3000, 0x3000).portr("MCUDI0");
map(0x3001, 0x3001).portr("MCUDI1");
map(0x3002, 0x3002).portr("MCUDI2");
map(0x3003, 0x3003).portr("MCUDI3");
map(0x5000, 0x57ff).rw(FUNC(namcos2_state::dpram_byte_r), FUNC(namcos2_state::dpram_byte_w)).share("dpram");
map(0x6000, 0x6fff).r(FUNC(namcos2_state::ack_mcu_vbl_r)); // VBL ack
map(0x8000, 0xffff).rom().region("c68", 0);
}
/*************************************************************/
/* */
/* NAMCO SYSTEM 2 PORT MACROS */
@ -1724,6 +1663,53 @@ void namcos2_state::configure_c148_standard(machine_config &config)
m_slave_intc->link_c148_device(m_master_intc);
}
void namcos2_state::configure_c65_standard(machine_config &config)
{
NAMCOC65(config, m_c65, C65_CPU_CLOCK);
m_c65->in_pb_callback().set_ioport("MCUB");
m_c65->in_pc_callback().set_ioport("MCUC");
m_c65->in_ph_callback().set_ioport("MCUH");
m_c65->in_pdsw_callback().set_ioport("DSW");
m_c65->di0_in_cb().set_ioport("MCUDI0");
m_c65->di1_in_cb().set_ioport("MCUDI1");
m_c65->di2_in_cb().set_ioport("MCUDI2");
m_c65->di3_in_cb().set_ioport("MCUDI3");
m_c65->an0_in_cb().set_ioport("AN0");
m_c65->an1_in_cb().set_ioport("AN1");
m_c65->an2_in_cb().set_ioport("AN2");
m_c65->an3_in_cb().set_ioport("AN3");
m_c65->an4_in_cb().set_ioport("AN4");
m_c65->an5_in_cb().set_ioport("AN5");
m_c65->an6_in_cb().set_ioport("AN6");
m_c65->an7_in_cb().set_ioport("AN7");
m_c65->dp_in_callback().set(FUNC(namcos2_state::dpram_byte_r));
m_c65->dp_out_callback().set(FUNC(namcos2_state::dpram_byte_w));
}
void namcos2_state::configure_c68_standard(machine_config &config)
{
NAMCOC68(config, m_c68new, C68_CPU_CLOCK);
m_c68new->in_pb_callback().set_ioport("MCUB");
m_c68new->in_pb2_callback().set_ioport("MCUB2");
m_c68new->in_pc_callback().set_ioport("MCUC");
m_c68new->in_ph_callback().set_ioport("MCUH");
m_c68new->in_pdsw_callback().set_ioport("DSW");
m_c68new->di0_in_cb().set_ioport("MCUDI0");
m_c68new->di1_in_cb().set_ioport("MCUDI1");
m_c68new->di2_in_cb().set_ioport("MCUDI2");
m_c68new->di3_in_cb().set_ioport("MCUDI3");
m_c68new->an0_in_cb().set_ioport("AN0");
m_c68new->an1_in_cb().set_ioport("AN1");
m_c68new->an2_in_cb().set_ioport("AN2");
m_c68new->an3_in_cb().set_ioport("AN3");
m_c68new->an4_in_cb().set_ioport("AN4");
m_c68new->an5_in_cb().set_ioport("AN5");
m_c68new->an6_in_cb().set_ioport("AN6");
m_c68new->an7_in_cb().set_ioport("AN7");
m_c68new->dp_in_callback().set(FUNC(namcos2_state::dpram_byte_r));
m_c68new->dp_out_callback().set(FUNC(namcos2_state::dpram_byte_w));
}
// TODO: temp
TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline)
{
@ -1734,6 +1720,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline)
{
m_master_intc->vblank_irq_trigger();
m_slave_intc->vblank_irq_trigger();
if (m_c65)
m_c65->ext_interrupt(HOLD_LINE);
if (m_c68new)
m_c68new->ext_interrupt(ASSERT_LINE);
}
if(scanline == cur_posirq)
@ -1758,9 +1750,7 @@ MACHINE_CONFIG_START(namcos2_state::base)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(12000)) /* CPU slices per frame */
@ -1836,9 +1826,7 @@ MACHINE_CONFIG_START(namcos2_state::gollygho)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -1873,6 +1861,8 @@ MACHINE_CONFIG_START(namcos2_state::gollygho)
MCFG_SOUND_ROUTE(1, "rspeaker", 0.80)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(namcos2_state::finallap)
MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */
MCFG_DEVICE_PROGRAM_MAP(master_finallap_am)
@ -1886,9 +1876,7 @@ MACHINE_CONFIG_START(namcos2_state::finallap)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -1948,9 +1936,7 @@ MACHINE_CONFIG_START(namcos2_state::sgunner)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -2000,14 +1986,7 @@ MACHINE_CONFIG_START(namcos2_state::sgunner2)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("c68", M37450, C68_CPU_CLOCK) /* C68 @ 8.192MHz (49.152MHz OSC/6) - I/O handling */
MCFG_M3745X_ADC14_CALLBACKS(IOPORT("AN0"), IOPORT("AN1"), IOPORT("AN2"), IOPORT("AN3"))
MCFG_M3745X_ADC58_CALLBACKS(IOPORT("AN4"), IOPORT("AN5"), IOPORT("AN6"), IOPORT("AN7"))
MCFG_M3745X_PORT3_CALLBACKS(IOPORT("MCUH"), WRITE8(*this, namcos2_state, c68_p3_w)) // coins/test/service
MCFG_M3745X_PORT5_CALLBACKS(READ8(*this, namcos2_state, c68_p5_r), NOOP) // muxed player 1/2
MCFG_M3745X_PORT6_CALLBACKS(IOPORT("MCUC"), NOOP) // unused in sgunner2
MCFG_DEVICE_PROGRAM_MAP(c68_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_assert) // 37450 maps INT1 to irq0 as it's the first external interrupt on that chip
configure_c68_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -2057,9 +2036,7 @@ MACHINE_CONFIG_START(namcos2_state::luckywld)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -2112,9 +2089,7 @@ MACHINE_CONFIG_START(namcos2_state::metlhawk)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos2_shared_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705, C65_CPU_CLOCK) /* 2.048MHz (49.152MHz OSC/24) - I/O handling */
MCFG_DEVICE_PROGRAM_MAP(mcu_default_am)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos2_shared_state, irq0_line_hold)
configure_c65_standard(config);
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */
@ -2209,9 +2184,8 @@ ROM_START( assault )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65b.bin", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
@ -2263,9 +2237,8 @@ ROM_START( assaultj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65b.bin", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
@ -2317,9 +2290,8 @@ ROM_START( assaultp )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65b.bin", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "atobj0.bin", 0x000000, CRC(22240076) SHA1(916fc0e6b338a6dda84399df910c3c9463e6b915) )
@ -2371,9 +2343,8 @@ ROM_START( burnforc )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bu_obj-0.bin", 0x000000, 0x80000, CRC(24c919a1) SHA1(ddf5bfbf1bbe2a10d6708b618b77f1d6d7862372) )
@ -2423,9 +2394,8 @@ ROM_START( burnforco )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bu_obj-0.bin", 0x000000, 0x80000, CRC(24c919a1) SHA1(ddf5bfbf1bbe2a10d6708b618b77f1d6d7862372) )
@ -2476,9 +2446,8 @@ ROM_START( cosmogng )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "co1obj0.bin", 0x000000, 0x80000, CRC(5df8ce0c) SHA1(afb9fb6e048af5aed8976192b847c0674c5e5ce1) )
@ -2522,9 +2491,8 @@ ROM_START( cosmogngj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "co1obj0.bin", 0x000000, 0x80000, CRC(5df8ce0c) SHA1(afb9fb6e048af5aed8976192b847c0674c5e5ce1) )
@ -2568,9 +2536,8 @@ ROM_START( dirtfoxj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "df1_obj0.bin", 0x000000, 0x80000, CRC(b6bd1a68) SHA1(38677b54cd257411db499ba03b9176422797bf64) )
@ -2621,9 +2588,8 @@ ROM_START( dsaber )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_LOAD( "do1 snd1.snd1", 0x030000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
@ -2672,9 +2638,8 @@ ROM_START( dsabera )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_LOAD( "do1 snd1.snd1", 0x030000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
@ -2722,9 +2687,8 @@ ROM_START( dsaberj )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_LOAD( "do1 snd1.snd1", 0x030000, 0x020000, CRC(c4ca6f3f) SHA1(829a053451be07b296fb4d97818d59eb1e68c807) )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "do obj-0a.obj0", 0x000000, 0x80000, CRC(f08c6648) SHA1(ac5221ba159f2390060cbbb7d9cd8148c7bb4a02) )
@ -2771,9 +2735,8 @@ ROM_START( finallap )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
@ -2826,9 +2789,8 @@ ROM_START( finallapd )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
@ -2881,9 +2843,8 @@ ROM_START( finallapc )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
@ -2936,9 +2897,8 @@ ROM_START( finallapjc )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
@ -2991,9 +2951,8 @@ ROM_START( finallapjb )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* no external MCU ROM? previously loaded type C, but the game predates it */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_FILL( 0, 0x200000, 0xff )
@ -3045,9 +3004,8 @@ ROM_START( finalap2 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) )
@ -3102,9 +3060,8 @@ ROM_START( finalap2j )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) )
@ -3160,9 +3117,8 @@ ROM_START( finalap3 ) // this set displays MOTION (Ver. 3) in the test mode menu
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
@ -3221,9 +3177,8 @@ ROM_START( finalap3a )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
@ -3285,9 +3240,8 @@ ROM_START( finalap3j )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
@ -3345,11 +3299,8 @@ ROM_START( finalap3jc )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* M37450S2FP I/O MCU */
/* The M37450 is unemulated so we're using the C65/6805 program instead.
This particular M37450 variant has no internal ROM. */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
@ -3406,9 +3357,8 @@ ROM_START( finalap3bl ) // bootleg set
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fltobj0", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) )
@ -3466,9 +3416,8 @@ ROM_START( finehour )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fh1_ob0.bin", 0x000000, 0x80000, CRC(b1fd86f1) SHA1(5504ca1a83c329a19d5632b9ac40cfa7e8ced304) )
@ -3680,9 +3629,8 @@ ROM_START( fourtrax )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fx_obj-0.4c", 0x000000, 0x040000, CRC(1aa60ffa) SHA1(1fa625a52c763b8db718af14e9f3cc3e076ff83b) )
@ -3745,9 +3693,8 @@ ROM_START( fourtraxa )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "fx_obj-0.4c", 0x000000, 0x040000, CRC(1aa60ffa) SHA1(1fa625a52c763b8db718af14e9f3cc3e076ff83b) )
@ -3812,9 +3759,8 @@ ROM_START( marvland )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_256K( "mv1-obj0.bin", 0x000000, CRC(73a29361) SHA1(fc8ac9a063c1f18ae619ddca3062491774c86040) )
@ -3863,9 +3809,8 @@ ROM_START( marvlandj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_256K( "mv1-obj0.bin", 0x000000, CRC(73a29361) SHA1(fc8ac9a063c1f18ae619ddca3062491774c86040) )
@ -3912,9 +3857,8 @@ ROM_START( metlhawk )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites */
ROM_LOAD32_BYTE( "mhobj-4.5c", 0x000000, 0x40000, CRC(e3590e1a) SHA1(9afffa54a63e676f5d78a01c76ca50cd795dd6e9) )
@ -3983,9 +3927,8 @@ ROM_START( metlhawkj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x200000, "gfx1", 0 ) /* Sprites */
ROM_LOAD32_BYTE( "mhobj-4.5c", 0x000000, 0x40000, CRC(e3590e1a) SHA1(9afffa54a63e676f5d78a01c76ca50cd795dd6e9) )
@ -4054,9 +3997,8 @@ ROM_START( mirninja )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65b.bin", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65b.bin", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "mn_obj0.bin", 0x000000, CRC(6bd1e290) SHA1(11e5f7adef0d7a519246c6d88f9371e49a6b49e9) )
@ -4109,9 +4051,8 @@ ROM_START( ordyne )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2_c65b.3f", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2_c65b.3f", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "or_obj-0.obj0", 0x000000, CRC(67b2b9e4) SHA1(4e589c28ed23224e40d3c68055ada0136cbf94cb) )
@ -4168,9 +4109,8 @@ ROM_START( ordyneje )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2_c65b.3f", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2_c65b.3f", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "or_obj-0.obj0", 0x000000, CRC(67b2b9e4) SHA1(4e589c28ed23224e40d3c68055ada0136cbf94cb) )
@ -4227,9 +4167,8 @@ ROM_START( ordynej )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2_c65b.3f", 0x008000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2_c65b.3f", 0x000000, 0x008000, CRC(e9f2922a) SHA1(5767d2f85e1eb3de19192e73b02221f28b1fbb83) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_128K( "or_obj-0.obj0", 0x000000, CRC(67b2b9e4) SHA1(4e589c28ed23224e40d3c68055ada0136cbf94cb) )
@ -4286,9 +4225,8 @@ ROM_START( phelios )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2_c65c.3f", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2_c65c.3f", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_256K( "ps_obj-0.obj0", 0x000000, CRC(f323db2b) SHA1(fa3c42c618da06af161ad3f8aa1283e9c4bd63c0) )
@ -4344,9 +4282,8 @@ ROM_START( pheliosj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2_c65c.3f", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2_c65c.3f", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_256K( "ps_obj-0.obj0", 0x000000, CRC(f323db2b) SHA1(fa3c42c618da06af161ad3f8aa1283e9c4bd63c0) )
@ -4403,9 +4340,8 @@ ROM_START( rthun2 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_LOAD( "rst1_snd1.bin", 0x030000, 0x020000, CRC(00445a4f) SHA1(2e136e3c38e4a1b69f80a19e07555f3269b7beb1) )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "rst1_obj0.bin", 0x000000, 0x80000, CRC(e5cb82c1) SHA1(2dc1922ecfd9e52af8c4a1edac1df343be64b499) )
@ -4449,9 +4385,8 @@ ROM_START( rthun2j )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_LOAD( "rst1_snd1.bin", 0x030000, 0x020000, CRC(00445a4f) SHA1(2e136e3c38e4a1b69f80a19e07555f3269b7beb1) )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "rst1_obj0.bin", 0x000000, 0x80000, CRC(e5cb82c1) SHA1(2dc1922ecfd9e52af8c4a1edac1df343be64b499) )
@ -4502,9 +4437,8 @@ ROM_START( sgunner )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c68.3f", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sn_obj0.8c", 0x000000, 0x80000, CRC(bbae38f7) SHA1(7a40ade13307791f5c5d300882f9a38e18c411d6) )
@ -4553,9 +4487,8 @@ ROM_START( sgunnerj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c68.3f", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sn_obj0.8c", 0x000000, 0x80000, CRC(bbae38f7) SHA1(7a40ade13307791f5c5d300882f9a38e18c411d6) )
@ -4604,8 +4537,8 @@ ROM_START( sgunner2 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x8000, "c68", 0 ) /* C68 (M37450) I/O MCU program */
ROM_LOAD( "sys2_c68.3f", 0x000000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c68mcu:external", ROMREGION_ERASE00 ) /* C68 (M37450) I/O MCU program */
/* external ROM not populated, unclear how it would map */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sns_obj0.bin", 0x000000, 0x80000, CRC(c762445c) SHA1(108170c9a5c82c23c1ac09f91195137ca05989f4) )
@ -4658,12 +4591,8 @@ ROM_START( sgunner2j )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c68", 0 ) /* C68 (M37450) I/O MCU program */
ROM_LOAD( "sys2_c68.3f", 0x000000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c68mcu:external", ROMREGION_ERASE00 ) /* C68 (M37450) I/O MCU program */
/* external ROM not populated, unclear how it would map */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sns_obj0.bin", 0x000000, 0x80000, CRC(c762445c) SHA1(108170c9a5c82c23c1ac09f91195137ca05989f4) )
@ -4716,9 +4645,8 @@ ROM_START( sws )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ss1_obj0.5b", 0x000000, 0x80000, CRC(9bd6add1) SHA1(34595987670d7f64ba18a840e98667b96ae5e4bf) )
@ -4760,9 +4688,8 @@ ROM_START( sws92 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sss_obj0.bin", 0x000000, 0x80000, CRC(375e8f1f) SHA1(b737bcceb498a66593d06ef102958bea90032106) )
@ -4806,9 +4733,8 @@ ROM_START( sws92g )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sss_obj0.bin", 0x000000, 0x80000, CRC(375e8f1f) SHA1(b737bcceb498a66593d06ef102958bea90032106) )
@ -4854,9 +4780,8 @@ ROM_START( sws93 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "sst_obj0.bin", 0x000000, 0x80000, CRC(4089dfd7) SHA1(d37fb08d03a4d3f87b10a8e73bbb1817543396ff) )
@ -4900,9 +4825,8 @@ ROM_START( suzuka8h )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "eh1-obj0.bin", 0x000000, 0x80000, CRC(864b6816) SHA1(72d831b631afb2848578bd49cd7d3e12a78644b4) )
@ -4952,9 +4876,8 @@ ROM_START( suzuka8hj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* not sure */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "eh1-obj0.bin", 0x000000, 0x80000, CRC(864b6816) SHA1(72d831b631afb2848578bd49cd7d3e12a78644b4) )
@ -5004,10 +4927,8 @@ ROM_START( suzuk8h2 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
/*There is no C65 on the board. There is C68 instead */
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c68.3f", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ehs1-obj0.3p", 0x000000, 0x80000, CRC(a0acf307) SHA1(6d79d2dd00da4f8f0462245f42a9d88b6ad632b1) )
@ -5064,10 +4985,8 @@ ROM_START( suzuk8h2j )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c68.3f", 0x008000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
/*There is no C65 on the board. There is C68 instead */
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c68.3f", 0x000000, 0x008000, BAD_DUMP CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) /* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ehs1-obj0.3p", 0x000000, 0x80000, CRC(a0acf307) SHA1(6d79d2dd00da4f8f0462245f42a9d88b6ad632b1) )
@ -5124,9 +5043,8 @@ ROM_START( valkyrie )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
NAMCOS2_GFXROM_LOAD_256K( "wdobj0.bin", 0x000000, CRC(e8089451) SHA1(f4d05df0015de01ec570f5f89ea11592204e4fe2) )
@ -5183,9 +5101,8 @@ ROM_START( kyukaidk )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ky1_o0.bin", 0x000000, 0x80000, CRC(ebec5132) SHA1(8d2dec3f1cd27c203899bb715a9983fff7ab820d) )
@ -5233,9 +5150,8 @@ ROM_START( kyukaidko )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "ky1_o0.bin", 0x000000, 0x80000, CRC(ebec5132) SHA1(8d2dec3f1cd27c203899bb715a9983fff7ab820d) )
@ -5283,9 +5199,8 @@ ROM_START( gollygho )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x0000, 0x2000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "gl1edr0c.ic7", 0x8000, 0x8000, CRC(db60886f) SHA1(a1183c058c0470a4ef8b0f69a3637b1640c5b5a4) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "gl1edr0c.ic7", 0x0000, 0x8000, CRC(db60886f) SHA1(a1183c058c0470a4ef8b0f69a3637b1640c5b5a4) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "gl1obj0.5b", 0x000000, 0x40000, CRC(6809d267) SHA1(8a0f636067974e51659bd05a3c17819c630d70e3) )
@ -5332,9 +5247,8 @@ ROM_START( bubbletr ) /* All labels were hand written and included the rom size,
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x0000, 0x2000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "bt1edr0a.ic7", 0x8000, 0x8000, CRC(155b02fc) SHA1(191683c19f756ac150b8e037f46a6daca1a082fa) ) /* dated 4/24 */
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "bt1edr0a.ic7", 0x0000, 0x8000, CRC(155b02fc) SHA1(191683c19f756ac150b8e037f46a6daca1a082fa) ) /* dated 4/24 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bt1-obj0.5b", 0x000000, 0x80000, CRC(16b5dc04) SHA1(57cc4b7907442f922102fbd61e470c149f0379ac) ) /* dated 4/24 */
@ -5381,9 +5295,8 @@ ROM_START( bubbletrj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x0000, 0x2000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "bt1edr0a.ic7", 0x8000, 0x8000, CRC(155b02fc) SHA1(191683c19f756ac150b8e037f46a6daca1a082fa) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "bt1edr0a.ic7", 0x0000, 0x8000, CRC(155b02fc) SHA1(191683c19f756ac150b8e037f46a6daca1a082fa) )
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "bt1-obj0.5b", 0x000000, 0x80000, CRC(16b5dc04) SHA1(57cc4b7907442f922102fbd61e470c149f0379ac) )
@ -5538,9 +5451,8 @@ ROM_START( luckywld )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
/* MCU code only, C68PRG socket is unpopulated on real Lucky & Wild PCB */
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "lw1obj0.3p", 0x000000, 0x80000, CRC(21485830) SHA1(e55a1f6df90c17b9c49e2b08c423b9be86996659) )
@ -5604,9 +5516,8 @@ ROM_START( luckywldj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "c68.3d", 0x000000, 0x002000, BAD_DUMP CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
/* MCU code only, C68PRG socket is unpopulated on real Lucky & Wild PCB */
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
/* should be c68 */
ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */
ROM_LOAD( "lw1obj0.3p", 0x000000, 0x80000, CRC(21485830) SHA1(e55a1f6df90c17b9c49e2b08c423b9be86996659) )

View File

@ -1552,26 +1552,27 @@ void namcos21_state::sound_map(address_map &map)
/* I/O HD63705 MCU Memory declarations */
/*************************************************************/
void namcos21_state::mcu_map(address_map &map)
void namcos21_state::configure_c65_namcos21(machine_config &config)
{
map(0x0000, 0x003f).ram();
map(0x0000, 0x0000).nopr();
map(0x0001, 0x0001).portr("PORTB"); /* p1,p2 start */
map(0x0002, 0x0002).portr("PORTC"); /* coins */
map(0x0003, 0x0003).rw(FUNC(namcos21_state::namcos2_mcu_port_d_r), FUNC(namcos21_state::namcos2_mcu_port_d_w));
map(0x0007, 0x0007).portr("PORTH"); /* fire buttons */
map(0x0010, 0x0010).rw(FUNC(namcos21_state::namcos2_mcu_analog_ctrl_r), FUNC(namcos21_state::namcos2_mcu_analog_ctrl_w));
map(0x0011, 0x0011).rw(FUNC(namcos21_state::namcos2_mcu_analog_port_r), FUNC(namcos21_state::namcos2_mcu_analog_port_w));
map(0x0040, 0x01bf).ram();
map(0x01c0, 0x1fff).rom();
map(0x2000, 0x2000).portr("DSW");
map(0x3000, 0x3000).portr("DIAL0");
map(0x3001, 0x3001).portr("DIAL1");
map(0x3002, 0x3002).portr("DIAL2");
map(0x3003, 0x3003).portr("DIAL3");
map(0x5000, 0x57ff).rw(FUNC(namcos21_state::namcos2_dualportram_byte_r), FUNC(namcos21_state::namcos2_dualportram_byte_w)).share("mpdualportram");
map(0x6000, 0x6fff).nopr(); /* watchdog */
map(0x8000, 0xffff).rom();
NAMCOC65(config, m_c65, 2048000);
m_c65->in_pb_callback().set_ioport("PORTB");
m_c65->in_pc_callback().set_ioport("PORTC");
m_c65->in_ph_callback().set_ioport("PORTH");
m_c65->in_pdsw_callback().set_ioport("DSW");
m_c65->di0_in_cb().set_ioport("DIAL0");
m_c65->di1_in_cb().set_ioport("DIAL1");
m_c65->di2_in_cb().set_ioport("DIAL2");
m_c65->di3_in_cb().set_ioport("DIAL3");
m_c65->an0_in_cb().set_ioport("AN0");
m_c65->an1_in_cb().set_ioport("AN1");
m_c65->an2_in_cb().set_ioport("AN2");
m_c65->an3_in_cb().set_ioport("AN3");
m_c65->an4_in_cb().set_ioport("AN4");
m_c65->an5_in_cb().set_ioport("AN5");
m_c65->an6_in_cb().set_ioport("AN6");
m_c65->an7_in_cb().set_ioport("AN7");
m_c65->dp_in_callback().set(FUNC(namcos21_state::namcos2_dualportram_byte_r));
m_c65->dp_out_callback().set(FUNC(namcos21_state::namcos2_dualportram_byte_w));
}
@ -1891,6 +1892,9 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos21_state::screen_scanline)
m_slave_intc->vblank_irq_trigger();
if(m_gpu_intc)
m_gpu_intc->vblank_irq_trigger();
if (m_c65)
m_c65->ext_interrupt(HOLD_LINE);
}
if(m_gpu_intc != nullptr)
@ -1924,9 +1928,7 @@ MACHINE_CONFIG_START(namcos21_state::namcos21)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705,2048000) /* IO */
MCFG_DEVICE_PROGRAM_MAP(mcu_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos21_state, irq0_line_hold)
configure_c65_namcos21(config);
MCFG_DEVICE_ADD("dspmaster", TMS32025,24000000) /* 24 MHz? overclocked */
MCFG_DEVICE_PROGRAM_MAP(master_dsp_program)
@ -1991,9 +1993,7 @@ MACHINE_CONFIG_START(namcos21_state::driveyes)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705,2048000) /* IO */
MCFG_DEVICE_PROGRAM_MAP(mcu_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos21_state, irq0_line_hold)
configure_c65_namcos21(config);
MCFG_DEVICE_ADD("dsp", TMS32025,24000000*2) /* 24 MHz? overclocked */
MCFG_DEVICE_PROGRAM_MAP(winrun_dsp_program)
@ -2052,9 +2052,7 @@ MACHINE_CONFIG_START(namcos21_state::winrun)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq0_line_hold, 2*60)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos21_state, irq1_line_hold, 120)
MCFG_DEVICE_ADD("mcu", HD63705,2048000) /* IO */
MCFG_DEVICE_PROGRAM_MAP(mcu_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", namcos21_state, irq0_line_hold)
configure_c65_namcos21(config);
MCFG_DEVICE_ADD("dsp", TMS32025,24000000) /* 24 MHz? overclocked */
MCFG_DEVICE_PROGRAM_MAP(winrun_dsp_program)
@ -2116,9 +2114,8 @@ ROM_START( aircomb )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2177,9 +2174,8 @@ ROM_START( aircombj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2238,9 +2234,8 @@ ROM_START( cybsled )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2297,9 +2292,8 @@ ROM_START( cybsledj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2365,9 +2359,8 @@ We load the "r" set, then load set2's sound CPU code over it to keep the "r" rom
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dsp", ROMREGION_ERASEFF ) /* C67 - DSP */
@ -2414,9 +2407,8 @@ ROM_START( starblad )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2467,9 +2459,8 @@ ROM_START( starbladj )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2520,9 +2511,8 @@ ROM_START( solvalou )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x010000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dspmaster", 0 ) /* Master DSP */
ROM_LOAD( "c67.bin", 0, 0x2000, CRC(6bd8988e) SHA1(c9ec18d5f88d53976b94444eedc64d5568155958) )
@ -2571,9 +2561,8 @@ ROM_START( winrun )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dsp", ROMREGION_ERASEFF ) /* DSP */
@ -2637,9 +2626,8 @@ ROM_START( winrungp )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dsp", ROMREGION_ERASEFF ) /* DSP */
@ -2686,9 +2674,8 @@ ROM_START( winrun91 )
ROM_CONTINUE( 0x010000, 0x01c000 )
ROM_RELOAD( 0x010000, 0x020000 )
ROM_REGION( 0x10000, "mcu", 0 ) /* I/O MCU */
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_LOAD( "sys2c65c.bin", 0x008000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */
ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) )
ROM_REGION( 0x20000, "dsp", ROMREGION_ERASEFF ) /* DSP */

View File

@ -18,6 +18,8 @@
#include "sound/c140.h"
#include "video/c45.h"
#include "video/namco_c116.h"
#include "machine/namco65.h"
#include "machine/namco68.h"
#include "cpu/m6502/m3745x.h"
#include "emupal.h"
@ -112,7 +114,6 @@ public:
, m_dspslave(*this, "dspslave")
, m_gametype(0)
, m_c140(*this, "c140")
, m_c68(*this, "c68")
, m_c116(*this, "c116")
, m_master_intc(*this, "master_intc")
, m_slave_intc(*this, "slave_intc")
@ -127,6 +128,8 @@ public:
, m_audiocpu(*this, "audiocpu")
, m_slave(*this, "slave")
, m_mcu(*this, "mcu")
, m_c65(*this, "c65mcu")
, m_c68new(*this, "c68mcu")
, m_gfxdecode(*this, "gfxdecode")
, m_screen(*this, "screen")
, m_palette(*this, "palette")
@ -139,7 +142,6 @@ public:
protected:
optional_device<c140_device> m_c140;
optional_device<m37450_device> m_c68;
optional_device<namco_c116_device> m_c116;
optional_device<namco_c148_device> m_master_intc;
optional_device<namco_c148_device> m_slave_intc;
@ -149,9 +151,6 @@ protected:
// game type helpers
bool is_system21();
int m_mcu_analog_ctrl;
int m_mcu_analog_data;
int m_mcu_analog_complete;
std::unique_ptr<uint8_t[]> m_eeprom;
DECLARE_WRITE8_MEMBER(sound_reset_w);
@ -266,18 +265,15 @@ protected:
DECLARE_WRITE8_MEMBER( namcos2_68k_eeprom_w );
DECLARE_READ8_MEMBER( namcos2_68k_eeprom_r );
DECLARE_WRITE8_MEMBER( namcos2_mcu_port_d_w );
DECLARE_READ8_MEMBER( namcos2_mcu_port_d_r );
DECLARE_WRITE8_MEMBER( namcos2_mcu_analog_ctrl_w );
DECLARE_READ8_MEMBER( namcos2_mcu_analog_ctrl_r );
DECLARE_WRITE8_MEMBER( namcos2_mcu_analog_port_w );
DECLARE_READ8_MEMBER( namcos2_mcu_analog_port_r );
DECLARE_WRITE8_MEMBER( namcos2_sound_bankselect_w );
required_device<cpu_device> m_maincpu;
optional_device<cpu_device> m_audiocpu;
optional_device<cpu_device> m_slave;
optional_device<cpu_device> m_mcu;
optional_device<namcoc65_device> m_c65;
optional_device<namcoc68_device> m_c68new;
optional_device<gfxdecode_device> m_gfxdecode;
optional_device<screen_device> m_screen;
required_device<palette_device> m_palette;
@ -297,6 +293,8 @@ public:
void configure_c116_standard(machine_config &config);
void configure_c148_standard(machine_config &config);
void configure_c65_standard(machine_config &config);
void configure_c68_standard(machine_config &config);
void metlhawk(machine_config &config);
void gollygho(machine_config &config);
void assaultp(machine_config &config);
@ -345,13 +343,10 @@ public:
void init_rthun2();
private:
DECLARE_READ8_MEMBER(c68_p5_r);
DECLARE_WRITE8_MEMBER(c68_p3_w);
DECLARE_READ16_MEMBER(dpram_word_r);
DECLARE_WRITE16_MEMBER(dpram_word_w);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_READ8_MEMBER(ack_mcu_vbl_r);
virtual void video_start() override;
void video_start_finallap();
@ -407,7 +402,6 @@ private:
void RozCB_luckywld(uint16_t code, int *tile, int *mask, int which);
void RozCB_metlhawk(uint16_t code, int *tile, int *mask, int which);
void c68_default_am(address_map &map);
void common_default_am(address_map &map);
void common_finallap_am(address_map &map);
void common_luckywld_am(address_map &map);
@ -418,7 +412,7 @@ private:
void master_luckywld_am(address_map &map);
void master_metlhawk_am(address_map &map);
void master_sgunner_am(address_map &map);
void mcu_default_am(address_map &map);
void namcos2_68k_default_cpu_board_am(address_map &map);
void slave_default_am(address_map &map);
void slave_finallap_am(address_map &map);

View File

@ -204,6 +204,7 @@ private:
void render_slave_output(uint16_t data);
void winrun_flush_poly();
void init(int game_type);
void configure_c65_namcos21(machine_config &config);
void common_map(address_map &map);
void driveyes_common_map(address_map &map);
void driveyes_master_map(address_map &map);

View File

@ -0,0 +1,208 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, K.Wilkins
/*
TODO:
output support, Golly Ghost is currently hacking this based on DPRAM in the namcos2.cpp driver side!
some of this can likely be moved into the actual MCU core too
*/
#include "emu.h"
#include "machine/namco65.h"
DEFINE_DEVICE_TYPE(NAMCOC65, namcoc65_device, "namcoc65", "Namco C65 I/O")
namcoc65_device::namcoc65_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, NAMCOC65, tag, owner, clock),
m_mcu(*this, "mcu"),
m_in_pb_cb(*this),
m_in_pc_cb(*this),
m_in_ph_cb(*this),
m_in_pdsw_cb(*this),
m_port_analog_in_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
m_port_dial_in_cb{{*this}, {*this}, {*this}, {*this}},
m_dp_in(*this),
m_dp_out(*this)
{
}
ROM_START( namcoc65 )
ROM_REGION( 0x2000, "mcu", 0 )
ROM_LOAD( "sys2mcpu.bin", 0x000000, 0x002000, CRC(a342a97e) SHA1(2c420d34dba21e409bf78ddca710fc7de65a6642) )
ROM_END
WRITE8_MEMBER( namcoc65_device::namcos2_mcu_port_d_w )
{
/* Undefined operation on write */
}
READ8_MEMBER(namcoc65_device::namcos2_mcu_port_d_r)
{
/* Provides a digital version of the analog ports */
int threshold = 0x7f;
int data = 0;
/* Read/convert the bits one at a time */
if (m_port_analog_in_cb[0]() > threshold) data |= 0x01;
if (m_port_analog_in_cb[1]() > threshold) data |= 0x02;
if (m_port_analog_in_cb[2]() > threshold) data |= 0x04;
if (m_port_analog_in_cb[3]() > threshold) data |= 0x08;
if (m_port_analog_in_cb[4]() > threshold) data |= 0x10;
if (m_port_analog_in_cb[5]() > threshold) data |= 0x20;
if (m_port_analog_in_cb[6]() > threshold) data |= 0x40;
if (m_port_analog_in_cb[7]() > threshold) data |= 0x80;
/* Return the result */
return data;
}
READ8_MEMBER(namcoc65_device::namcos2_mcu_analog_ctrl_r)
{
int data = 0;
/* ADEF flag is only cleared AFTER a read from control THEN a read from DATA */
if (m_mcu_analog_complete == 2) m_mcu_analog_complete = 1;
if (m_mcu_analog_complete) data |= 0x80;
/* Mask on the lower 6 register bits, Irq EN/Channel/Clock */
data |= m_mcu_analog_ctrl & 0x3f;
/* Return the value */
return data;
}
WRITE8_MEMBER( namcoc65_device::namcos2_mcu_analog_port_w )
{
}
READ8_MEMBER(namcoc65_device::namcos2_mcu_analog_port_r)
{
if (m_mcu_analog_complete == 1) m_mcu_analog_complete = 0;
return m_mcu_analog_data;
}
WRITE8_MEMBER(namcoc65_device::namcos2_mcu_analog_ctrl_w)
{
m_mcu_analog_ctrl = data & 0xff;
/* Check if this is a start of conversion */
/* Input ports 2 through 9 are the analog channels */
if (data & 0x40)
{
/* Set the conversion complete flag */
m_mcu_analog_complete = 2;
/* We convert instantly, good eh! (not really) */
switch ((data >> 2) & 0x07)
{
case 0:
m_mcu_analog_data = m_port_analog_in_cb[0]();
break;
case 1:
m_mcu_analog_data = m_port_analog_in_cb[1]();
break;
case 2:
m_mcu_analog_data = m_port_analog_in_cb[2]();
break;
case 3:
m_mcu_analog_data = m_port_analog_in_cb[3]();
break;
case 4:
m_mcu_analog_data = m_port_analog_in_cb[4]();
break;
case 5:
m_mcu_analog_data = m_port_analog_in_cb[5]();
break;
case 6:
m_mcu_analog_data = m_port_analog_in_cb[6]();
break;
case 7:
m_mcu_analog_data = m_port_analog_in_cb[7]();
break;
default:
//output().set_value("anunk",data);
break;
}
/* If the interrupt enable bit is set trigger an A/D IRQ */
if (data & 0x20)
{
m_mcu->pulse_input_line(HD63705_INT_ADCONV, m_mcu->minimum_quantum_time());
}
}
}
READ8_MEMBER(namcoc65_device::dpram_byte_r)
{
return m_dp_in(offset);
}
WRITE8_MEMBER(namcoc65_device::dpram_byte_w)
{
m_dp_out(offset,data);
}
void namcoc65_device::mcu_map(address_map &map)
{
map(0x0000, 0x003f).ram(); /* Fill in register to stop logging */
map(0x0000, 0x0000).nopr(); /* Keep logging quiet */
map(0x0001, 0x0001).r(FUNC(namcoc65_device::mcub_r)); /* Usually P1/P2 direction inputs (UDL) + start buttons */
map(0x0002, 0x0002).r(FUNC(namcoc65_device::mcuc_r)); /* Usually coins + start */
map(0x0003, 0x0003).rw(FUNC(namcoc65_device::namcos2_mcu_port_d_r), FUNC(namcoc65_device::namcos2_mcu_port_d_w));
map(0x0007, 0x0007).r(FUNC(namcoc65_device::mcuh_r)); /* Usually P1/P2 direction input (R) + Buttons 1,2,3 */
map(0x0010, 0x0010).rw(FUNC(namcoc65_device::namcos2_mcu_analog_ctrl_r), FUNC(namcoc65_device::namcos2_mcu_analog_ctrl_w));
map(0x0011, 0x0011).rw(FUNC(namcoc65_device::namcos2_mcu_analog_port_r), FUNC(namcoc65_device::namcos2_mcu_analog_port_w));
map(0x0040, 0x01bf).ram();
map(0x01c0, 0x1fff).rom(); /* internal ROM */
map(0x2000, 0x2000).r(FUNC(namcoc65_device::mcudsw_r)); /* Dipswitch, including service mode */
map(0x3000, 0x3000).r(FUNC(namcoc65_device::mcudi0_r));
map(0x3001, 0x3001).r(FUNC(namcoc65_device::mcudi1_r));
map(0x3002, 0x3002).r(FUNC(namcoc65_device::mcudi2_r));
map(0x3003, 0x3003).r(FUNC(namcoc65_device::mcudi3_r));
map(0x5000, 0x57ff).rw(FUNC(namcoc65_device::dpram_byte_r), FUNC(namcoc65_device::dpram_byte_w));
map(0x6000, 0x6fff).nopr(); /* watchdog */
map(0x8000, 0xffff).rom().region("external", 0);; /* external ROM socket */
}
void namcoc65_device::device_add_mconfig(machine_config &config)
{
HD63705(config, m_mcu, DERIVED_CLOCK(1, 1));
m_mcu->set_addrmap(AS_PROGRAM, &mcu_map);
}
void namcoc65_device::device_resolve_objects()
{
m_in_pb_cb.resolve_safe(0xff);
m_in_pc_cb.resolve_safe(0xff);
m_in_ph_cb.resolve_safe(0xff);
m_in_pdsw_cb.resolve_safe(0xff);
for (auto &cb : m_port_analog_in_cb)
cb.resolve_safe(0xff);
for (auto &cb : m_port_dial_in_cb)
cb.resolve_safe(0xff);
m_dp_in.resolve_safe(0xff);
m_dp_out.resolve_safe();
}
void namcoc65_device::device_start()
{
}
void namcoc65_device::device_reset()
{
m_mcu_analog_ctrl = 0;
m_mcu_analog_data = 0xaa;
m_mcu_analog_complete = 0;
}
const tiny_rom_entry *namcoc65_device::device_rom_region() const
{
return ROM_NAME(namcoc65);
}

View File

@ -0,0 +1,95 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
#ifndef MAME_MACHINE_NAMCO65_H
#define MAME_MACHINE_NAMCO65_H
#pragma once
#include "machine/bankdev.h"
#include "cpu/m6805/m6805.h"
DECLARE_DEVICE_TYPE(NAMCOC65, namcoc65_device)
class namcoc65_device : public device_t
{
public:
// construction/destruction
namcoc65_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
auto in_pb_callback() { return m_in_pb_cb.bind(); }
auto in_pc_callback() { return m_in_pc_cb.bind(); }
auto in_ph_callback() { return m_in_ph_cb.bind(); }
auto in_pdsw_callback() { return m_in_pdsw_cb.bind(); }
auto an0_in_cb() { return m_port_analog_in_cb[0].bind(); }
auto an1_in_cb() { return m_port_analog_in_cb[1].bind(); }
auto an2_in_cb() { return m_port_analog_in_cb[2].bind(); }
auto an3_in_cb() { return m_port_analog_in_cb[3].bind(); }
auto an4_in_cb() { return m_port_analog_in_cb[4].bind(); }
auto an5_in_cb() { return m_port_analog_in_cb[5].bind(); }
auto an6_in_cb() { return m_port_analog_in_cb[6].bind(); }
auto an7_in_cb() { return m_port_analog_in_cb[7].bind(); }
auto di0_in_cb() { return m_port_dial_in_cb[0].bind(); }
auto di1_in_cb() { return m_port_dial_in_cb[1].bind(); }
auto di2_in_cb() { return m_port_dial_in_cb[2].bind(); }
auto di3_in_cb() { return m_port_dial_in_cb[3].bind(); }
auto dp_in_callback() { return m_dp_in.bind(); }
auto dp_out_callback() { return m_dp_out.bind(); }
void ext_interrupt(int state) { m_mcu->set_input_line(0, state); }
void ext_reset(int state) { m_mcu->set_input_line(INPUT_LINE_RESET, state); }
protected:
void mcu_map(address_map &map);
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_reset() override;
private:
required_device<hd63705_device> m_mcu;
devcb_read8 m_in_pb_cb;
devcb_read8 m_in_pc_cb;
devcb_read8 m_in_ph_cb;
devcb_read8 m_in_pdsw_cb;
devcb_read8 m_port_analog_in_cb[8];
devcb_read8 m_port_dial_in_cb[4];
devcb_read8 m_dp_in;
devcb_write8 m_dp_out;
DECLARE_READ8_MEMBER(namcos2_mcu_port_d_r);
DECLARE_WRITE8_MEMBER(namcos2_mcu_port_d_w);
DECLARE_READ8_MEMBER(namcos2_mcu_analog_port_r );
DECLARE_WRITE8_MEMBER(namcos2_mcu_analog_port_w);
DECLARE_READ8_MEMBER(namcos2_mcu_analog_ctrl_r);
DECLARE_WRITE8_MEMBER(namcos2_mcu_analog_ctrl_w);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_READ8_MEMBER(mcub_r) { return m_in_pb_cb(); }
DECLARE_READ8_MEMBER(mcuc_r) { return m_in_pc_cb(); }
DECLARE_READ8_MEMBER(mcuh_r) { return m_in_ph_cb(); }
DECLARE_READ8_MEMBER(mcudsw_r) { return m_in_pdsw_cb(); }
DECLARE_READ8_MEMBER(mcudi0_r) { return m_port_dial_in_cb[0](); }
DECLARE_READ8_MEMBER(mcudi1_r) { return m_port_dial_in_cb[1](); }
DECLARE_READ8_MEMBER(mcudi2_r) { return m_port_dial_in_cb[2](); }
DECLARE_READ8_MEMBER(mcudi3_r) { return m_port_dial_in_cb[3](); }
int m_mcu_analog_ctrl;
int m_mcu_analog_data;
int m_mcu_analog_complete;
};
#endif // MAME_MACHINE_NAMCO65_H

View File

@ -0,0 +1,118 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood, K.Wilkins
/*
TODO:
output support, Golly Ghost is currently hacking this based on DPRAM in the namcos2.cpp driver side!
some of this can likely be moved into the actual MCU core too
*/
#include "emu.h"
#include "machine/namco68.h"
DEFINE_DEVICE_TYPE(NAMCOC68, namcoc68_device, "namcoc68", "Namco C68 I/O")
namcoc68_device::namcoc68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, NAMCOC68, tag, owner, clock),
m_mcu(*this, "mcu"),
m_in_pb_cb(*this),
m_in_pb2_cb(*this),
m_in_pc_cb(*this),
m_in_ph_cb(*this),
m_in_pdsw_cb(*this),
m_port_analog_in_cb{{*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}, {*this}},
m_port_dial_in_cb{{*this}, {*this}, {*this}, {*this}},
m_dp_in(*this),
m_dp_out(*this)
{
}
ROM_START( namcoc68 )
ROM_REGION( 0x8000, "mcu", 0 )
ROM_LOAD( "c68.3d", 0x000000, 0x008000, CRC(ca64550a) SHA1(38d1ad1b1287cadef0c999aff9357927315f8e6b) )
ROM_END
READ8_MEMBER(namcoc68_device::c68_p5_r)
{
return (m_player_mux) ? m_in_pb2_cb() : m_in_pb_cb();
}
WRITE8_MEMBER(namcoc68_device::c68_p3_w)
{
m_player_mux = (data & 0x80) ? 1 : 0;
}
READ8_MEMBER(namcoc68_device::ack_mcu_vbl_r)
{
m_mcu->set_input_line(m37450_device::M3745X_INT1_LINE, CLEAR_LINE);
return 0;
}
READ8_MEMBER(namcoc68_device::dpram_byte_r)
{
return m_dp_in(offset);
}
WRITE8_MEMBER(namcoc68_device::dpram_byte_w)
{
m_dp_out(offset,data);
}
void namcoc68_device::c68_default_am(address_map &map)
{
/* input ports and dips are mapped here */
map(0x2000, 0x2000).r(FUNC(namcoc68_device::mcudsw_r));
map(0x3000, 0x3000).r(FUNC(namcoc68_device::mcudi0_r));
map(0x3001, 0x3001).r(FUNC(namcoc68_device::mcudi1_r));
map(0x3002, 0x3002).r(FUNC(namcoc68_device::mcudi2_r));
map(0x3003, 0x3003).r(FUNC(namcoc68_device::mcudi3_r));
map(0x5000, 0x57ff).rw(FUNC(namcoc68_device::dpram_byte_r), FUNC(namcoc68_device::dpram_byte_w));
map(0x6000, 0x6fff).r(FUNC(namcoc68_device::ack_mcu_vbl_r)); // VBL ack
map(0x8000, 0xffff).rom().region("mcu", 0);
}
void namcoc68_device::device_add_mconfig(machine_config &config)
{
m3745x_device* device = &M37450(config, m_mcu, DERIVED_CLOCK(1, 1)); // ugly, needs modernizing
MCFG_M3745X_ADC14_CALLBACKS(READ8(*this, namcoc68_device, mcuan0_r), READ8(*this, namcoc68_device, mcuan1_r), READ8(*this, namcoc68_device, mcuan2_r), READ8(*this, namcoc68_device, mcuan3_r))
MCFG_M3745X_ADC58_CALLBACKS(READ8(*this, namcoc68_device, mcuan4_r), READ8(*this, namcoc68_device, mcuan5_r), READ8(*this, namcoc68_device, mcuan6_r), READ8(*this, namcoc68_device, mcuan7_r))
MCFG_M3745X_PORT3_CALLBACKS(READ8(*this, namcoc68_device, mcuh_r), WRITE8(*this, namcoc68_device, c68_p3_w)) // coins/test/service
MCFG_M3745X_PORT5_CALLBACKS(READ8(*this, namcoc68_device, c68_p5_r), NOOP) // muxed player 1/2
MCFG_M3745X_PORT6_CALLBACKS(READ8(*this, namcoc68_device, mcuc_r), NOOP) // unused in sgunner2
MCFG_DEVICE_PROGRAM_MAP(c68_default_am)
}
void namcoc68_device::device_resolve_objects()
{
m_in_pb_cb.resolve_safe(0xff);
m_in_pb2_cb.resolve_safe(0xff);
m_in_pc_cb.resolve_safe(0xff);
m_in_ph_cb.resolve_safe(0xff);
m_in_pdsw_cb.resolve_safe(0xff);
for (auto &cb : m_port_analog_in_cb)
cb.resolve_safe(0xff);
for (auto &cb : m_port_dial_in_cb)
cb.resolve_safe(0xff);
m_dp_in.resolve_safe(0xff);
m_dp_out.resolve_safe();
}
void namcoc68_device::device_start()
{
}
void namcoc68_device::device_reset()
{
m_player_mux = 0;
}
const tiny_rom_entry *namcoc68_device::device_rom_region() const
{
return ROM_NAME(namcoc68);
}

104
src/mame/machine/namco68.h Normal file
View File

@ -0,0 +1,104 @@
// license:BSD-3-Clause
// copyright-holders:David Haywood
#ifndef MAME_MACHINE_NAMCO68_H
#define MAME_MACHINE_NAMCO68_H
#pragma once
#include "machine/bankdev.h"
#include "cpu/m6502/m3745x.h"
DECLARE_DEVICE_TYPE(NAMCOC68, namcoc68_device)
class namcoc68_device : public device_t
{
public:
// construction/destruction
namcoc68_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
auto in_pb_callback() { return m_in_pb_cb.bind(); }
auto in_pb2_callback() { return m_in_pb2_cb.bind(); }
auto in_pc_callback() { return m_in_pc_cb.bind(); }
auto in_ph_callback() { return m_in_ph_cb.bind(); }
auto in_pdsw_callback() { return m_in_pdsw_cb.bind(); }
auto an0_in_cb() { return m_port_analog_in_cb[0].bind(); }
auto an1_in_cb() { return m_port_analog_in_cb[1].bind(); }
auto an2_in_cb() { return m_port_analog_in_cb[2].bind(); }
auto an3_in_cb() { return m_port_analog_in_cb[3].bind(); }
auto an4_in_cb() { return m_port_analog_in_cb[4].bind(); }
auto an5_in_cb() { return m_port_analog_in_cb[5].bind(); }
auto an6_in_cb() { return m_port_analog_in_cb[6].bind(); }
auto an7_in_cb() { return m_port_analog_in_cb[7].bind(); }
auto di0_in_cb() { return m_port_dial_in_cb[0].bind(); }
auto di1_in_cb() { return m_port_dial_in_cb[1].bind(); }
auto di2_in_cb() { return m_port_dial_in_cb[2].bind(); }
auto di3_in_cb() { return m_port_dial_in_cb[3].bind(); }
auto dp_in_callback() { return m_dp_in.bind(); }
auto dp_out_callback() { return m_dp_out.bind(); }
void ext_interrupt(int state) { m_mcu->set_input_line(0, state); } // 37450 maps INT1 to irq0 as it's the first external interrupt on that chip
void ext_reset(int state) { m_mcu->set_input_line(INPUT_LINE_RESET, state); }
protected:
void c68_default_am(address_map &map);
virtual void device_add_mconfig(machine_config &config) override;
virtual void device_resolve_objects() override;
virtual void device_start() override;
virtual const tiny_rom_entry *device_rom_region() const override;
virtual void device_reset() override;
private:
required_device<m37450_device> m_mcu;
devcb_read8 m_in_pb_cb;
devcb_read8 m_in_pb2_cb;
devcb_read8 m_in_pc_cb;
devcb_read8 m_in_ph_cb;
devcb_read8 m_in_pdsw_cb;
devcb_read8 m_port_analog_in_cb[8];
devcb_read8 m_port_dial_in_cb[4];
devcb_read8 m_dp_in;
devcb_write8 m_dp_out;
DECLARE_READ8_MEMBER(c68_p5_r);
DECLARE_WRITE8_MEMBER(c68_p3_w);
DECLARE_READ8_MEMBER(ack_mcu_vbl_r);
DECLARE_READ8_MEMBER(dpram_byte_r);
DECLARE_WRITE8_MEMBER(dpram_byte_w);
DECLARE_READ8_MEMBER(mcub_r) { return m_in_pb_cb(); }
DECLARE_READ8_MEMBER(mcub2_r) { return m_in_pb2_cb(); }
DECLARE_READ8_MEMBER(mcuc_r) { return m_in_pc_cb(); }
DECLARE_READ8_MEMBER(mcuh_r) { return m_in_ph_cb(); }
DECLARE_READ8_MEMBER(mcudsw_r) { return m_in_pdsw_cb(); }
DECLARE_READ8_MEMBER(mcudi0_r) { return m_port_dial_in_cb[0](); }
DECLARE_READ8_MEMBER(mcudi1_r) { return m_port_dial_in_cb[1](); }
DECLARE_READ8_MEMBER(mcudi2_r) { return m_port_dial_in_cb[2](); }
DECLARE_READ8_MEMBER(mcudi3_r) { return m_port_dial_in_cb[3](); }
DECLARE_READ8_MEMBER(mcuan0_r) { return m_port_analog_in_cb[0](); }
DECLARE_READ8_MEMBER(mcuan1_r) { return m_port_analog_in_cb[1](); }
DECLARE_READ8_MEMBER(mcuan2_r) { return m_port_analog_in_cb[2](); }
DECLARE_READ8_MEMBER(mcuan3_r) { return m_port_analog_in_cb[3](); }
DECLARE_READ8_MEMBER(mcuan4_r) { return m_port_analog_in_cb[4](); }
DECLARE_READ8_MEMBER(mcuan5_r) { return m_port_analog_in_cb[5](); }
DECLARE_READ8_MEMBER(mcuan6_r) { return m_port_analog_in_cb[6](); }
DECLARE_READ8_MEMBER(mcuan7_r) { return m_port_analog_in_cb[7](); }
uint8_t m_player_mux;
};
#endif // MAME_MACHINE_NAMCO68_H

View File

@ -107,14 +107,23 @@ WRITE8_MEMBER(namcos2_shared_state::system_reset_w)
void namcos2_shared_state::reset_all_subcpus(int state)
{
m_slave->set_input_line(INPUT_LINE_RESET, state);
if (m_c68)
if (m_c68new)
{
m_c68->set_input_line(INPUT_LINE_RESET, state);
m_c68new->ext_reset(state);
}
else
else if (m_mcu)
{
m_mcu->set_input_line(INPUT_LINE_RESET, state);
}
else if (m_c65)
{
m_c65->ext_reset(state);
}
else
{
logerror("no MCU to reset?\n");
}
switch( m_gametype )
{
case NAMCOS21_SOLVALOU:
@ -144,10 +153,6 @@ MACHINE_RESET_MEMBER(namcos2_shared_state, namcos2)
// address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &audio_space = m_audiocpu->space(AS_PROGRAM);
m_mcu_analog_ctrl = 0;
m_mcu_analog_data = 0xaa;
m_mcu_analog_complete = 0;
/* Initialise the bank select in the sound CPU */
namcos2_sound_bankselect_w(audio_space, 0, 0); /* Page in bank 0 */
@ -438,116 +443,3 @@ WRITE8_MEMBER( namcos2_shared_state::namcos2_sound_bankselect_w )
int bank = ( data >> 4 ) % max; /* 991104.CAB */
membank(BANKED_SOUND_ROM)->set_base(&RAM[ 0x10000 + ( 0x4000 * bank ) ] );
}
/**************************************************************/
/* */
/* 68705 IO CPU Support functions */
/* */
/**************************************************************/
WRITE8_MEMBER( namcos2_shared_state::namcos2_mcu_analog_ctrl_w )
{
m_mcu_analog_ctrl = data & 0xff;
/* Check if this is a start of conversion */
/* Input ports 2 through 9 are the analog channels */
if(data & 0x40)
{
/* Set the conversion complete flag */
m_mcu_analog_complete = 2;
/* We convert instantly, good eh! */
switch((data>>2) & 0x07)
{
case 0:
m_mcu_analog_data=ioport("AN0")->read();
break;
case 1:
m_mcu_analog_data=ioport("AN1")->read();
break;
case 2:
m_mcu_analog_data=ioport("AN2")->read();
break;
case 3:
m_mcu_analog_data=ioport("AN3")->read();
break;
case 4:
m_mcu_analog_data=ioport("AN4")->read();
break;
case 5:
m_mcu_analog_data=ioport("AN5")->read();
break;
case 6:
m_mcu_analog_data=ioport("AN6")->read();
break;
case 7:
m_mcu_analog_data=ioport("AN7")->read();
break;
default:
output().set_value("anunk",data);
}
#if 0
/* Perform the offset handling on the input port */
/* this converts it to a twos complement number */
if( m_gametype == NAMCOS2_DIRT_FOX ||
m_gametype == NAMCOS2_DIRT_FOX_JP )
{
m_mcu_analog_data ^= 0x80;
}
#endif
/* If the interrupt enable bit is set trigger an A/D IRQ */
if(data & 0x20)
{
m_mcu->pulse_input_line(HD63705_INT_ADCONV, m_mcu->minimum_quantum_time());
}
}
}
READ8_MEMBER( namcos2_shared_state::namcos2_mcu_analog_ctrl_r )
{
int data=0;
/* ADEF flag is only cleared AFTER a read from control THEN a read from DATA */
if(m_mcu_analog_complete==2) m_mcu_analog_complete=1;
if(m_mcu_analog_complete) data|=0x80;
/* Mask on the lower 6 register bits, Irq EN/Channel/Clock */
data|=m_mcu_analog_ctrl&0x3f;
/* Return the value */
return data;
}
WRITE8_MEMBER( namcos2_shared_state::namcos2_mcu_analog_port_w )
{
}
READ8_MEMBER( namcos2_shared_state::namcos2_mcu_analog_port_r )
{
if(m_mcu_analog_complete==1) m_mcu_analog_complete=0;
return m_mcu_analog_data;
}
WRITE8_MEMBER( namcos2_shared_state::namcos2_mcu_port_d_w )
{
/* Undefined operation on write */
}
READ8_MEMBER( namcos2_shared_state::namcos2_mcu_port_d_r )
{
/* Provides a digital version of the analog ports */
int threshold = 0x7f;
int data = 0;
/* Read/convert the bits one at a time */
if(ioport("AN0")->read() > threshold) data |= 0x01;
if(ioport("AN1")->read() > threshold) data |= 0x02;
if(ioport("AN2")->read() > threshold) data |= 0x04;
if(ioport("AN3")->read() > threshold) data |= 0x08;
if(ioport("AN4")->read() > threshold) data |= 0x10;
if(ioport("AN5")->read() > threshold) data |= 0x20;
if(ioport("AN6")->read() > threshold) data |= 0x40;
if(ioport("AN7")->read() > threshold) data |= 0x80;
/* Return the result */
return data;
}