From ea7f1e3bd977d12929e3cf5674f168143d5791bf Mon Sep 17 00:00:00 2001 From: David Haywood Date: Sun, 9 Sep 2018 13:47:13 +0100 Subject: use c68 for more games, fix what looks like more cam900 damage (luckywld) due to bad ram size assumptions. (#3976) * use c68 for more games, fix what looks like more cam900 damage (luckywld) due to bad ram size assumptions. * fix crash I introduced by trying things in a slightly different way * change comment (nw) * some cleanup (nw) * give dirtfox a calibrated default (nw) * better served with a logerror, not popmessage (nw) --- src/mame/drivers/namcos2.cpp | 257 +++++++++++++++++++------------------------ 1 file changed, 112 insertions(+), 145 deletions(-) (limited to 'src/mame/drivers/namcos2.cpp') diff --git a/src/mame/drivers/namcos2.cpp b/src/mame/drivers/namcos2.cpp index 79f101200bf..98e19793b16 100644 --- a/src/mame/drivers/namcos2.cpp +++ b/src/mame/drivers/namcos2.cpp @@ -542,6 +542,7 @@ WRITE16_MEMBER(namcos2_state::dpram_word_w) { m_dpram[offset] = data&0xff; + // TODO : This is a hack! should be output ports MCU side, not probing into DPRAM content if( m_gametype==NAMCOS2_GOLLY_GHOST ) { switch( offset ) @@ -1372,57 +1373,6 @@ static INPUT_PORTS_START( sgunner ) NAMCOS2_MCU_DIAL_DEFAULT INPUT_PORTS_END -static INPUT_PORTS_START( sgunner2 ) - PORT_START("MCUB") /* M37450 - PORT 5 (multiplexed) */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) - - PORT_START("MCUB2") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_PLAYER(2) - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) - PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) - - PORT_START("MCUC") /* M37450 - PORT 6 */ - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) - - PORT_START("AN0") /* M37450 - 8 CHANNEL ANALOG - CHANNEL 0 */ - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("AN1") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("AN2") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("AN3") - PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) - PORT_START("AN4") - PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) - PORT_START("AN5") - PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2) - PORT_START("AN6") - PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) - PORT_START("AN7") - PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(8) PORT_PLAYER(2) - - PORT_START("MCUH") /* M37450 - PORT 3 */ - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN2 ) - PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 ) PORT_NAME("Service Button") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE1 ) - PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) - - NAMCOS2_MCU_DIPSW_DEFAULT - NAMCOS2_MCU_DIAL_DEFAULT -INPUT_PORTS_END static INPUT_PORTS_START( dirtfox ) PORT_START("MCUB") /* 63B05Z0 - PORT B */ @@ -1688,26 +1638,25 @@ void namcos2_state::configure_c65_standard(machine_config &config) 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)); + NAMCOC68(config, m_c68, C68_CPU_CLOCK); + m_c68->in_pb_callback().set_ioport("MCUB"); + m_c68->in_pc_callback().set_ioport("MCUC"); + m_c68->in_ph_callback().set_ioport("MCUH"); + m_c68->in_pdsw_callback().set_ioport("DSW"); + m_c68->di0_in_cb().set_ioport("MCUDI0"); + m_c68->di1_in_cb().set_ioport("MCUDI1"); + m_c68->di2_in_cb().set_ioport("MCUDI2"); + m_c68->di3_in_cb().set_ioport("MCUDI3"); + m_c68->an0_in_cb().set_ioport("AN0"); + m_c68->an1_in_cb().set_ioport("AN1"); + m_c68->an2_in_cb().set_ioport("AN2"); + m_c68->an3_in_cb().set_ioport("AN3"); + m_c68->an4_in_cb().set_ioport("AN4"); + m_c68->an5_in_cb().set_ioport("AN5"); + m_c68->an6_in_cb().set_ioport("AN6"); + m_c68->an7_in_cb().set_ioport("AN7"); + m_c68->dp_in_callback().set(FUNC(namcos2_state::dpram_byte_r)); + m_c68->dp_out_callback().set(FUNC(namcos2_state::dpram_byte_w)); } // TODO: temp @@ -1716,16 +1665,20 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline) int scanline = param; int cur_posirq = get_pos_irq_scanline(); + if (scanline == 200) // triggering this a bit before Vblank allows the Assault Plus mode select screen to work without overclocking the IO MCU, exact timings unknown. + { + if (m_c65) + m_c65->ext_interrupt(HOLD_LINE); + + if (m_c68) + m_c68->ext_interrupt(ASSERT_LINE); + } + if(scanline == 240) { 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) @@ -1737,7 +1690,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(namcos2_state::screen_scanline) } } -MACHINE_CONFIG_START(namcos2_state::base) +MACHINE_CONFIG_START(namcos2_state::base_noio) MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_DEVICE_PROGRAM_MAP(master_default_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1750,8 +1703,6 @@ 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) - configure_c65_standard(config); - MCFG_QUANTUM_TIME(attotime::from_hz(12000)) /* CPU slices per frame */ MCFG_MACHINE_START_OVERRIDE(namcos2_state,namcos2) @@ -1785,6 +1736,17 @@ MACHINE_CONFIG_START(namcos2_state::base) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END + +MACHINE_CONFIG_START(namcos2_state::base) + base_noio(config); + configure_c65_standard(config); +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(namcos2_state::base_c68) + base_noio(config); + configure_c68_standard(config); +MACHINE_CONFIG_END + /* adjusted machine driver start */ MACHINE_CONFIG_START(namcos2_state::base2) base(config); @@ -1863,7 +1825,7 @@ MACHINE_CONFIG_END -MACHINE_CONFIG_START(namcos2_state::finallap) +MACHINE_CONFIG_START(namcos2_state::finallap_noio) MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_DEVICE_PROGRAM_MAP(master_finallap_am) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", namcos2_state, screen_scanline, "screen", 0, 1) @@ -1876,8 +1838,6 @@ 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) - configure_c65_standard(config); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */ MCFG_MACHINE_START_OVERRIDE(namcos2_state,namcos2) @@ -1916,13 +1876,29 @@ MACHINE_CONFIG_START(namcos2_state::finallap) MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) MACHINE_CONFIG_END +MACHINE_CONFIG_START(namcos2_state::finallap) + finallap_noio(config); + configure_c65_standard(config); +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(namcos2_state::finallap_c68) + finallap_noio(config); + configure_c68_standard(config); +MACHINE_CONFIG_END + + // finalap2 has different mangle MACHINE_CONFIG_START(namcos2_state::finalap2) finallap(config); + MCFG_VIDEO_START_OVERRIDE(namcos2_state, finalap2) +MACHINE_CONFIG_END +MACHINE_CONFIG_START(namcos2_state::finalap3) + finallap_c68(config); MCFG_VIDEO_START_OVERRIDE(namcos2_state, finalap2) MACHINE_CONFIG_END + MACHINE_CONFIG_START(namcos2_state::sgunner) MCFG_DEVICE_ADD("maincpu", M68000, M68K_CPU_CLOCK) /* 12.288MHz (49.152MHz OSC/4) */ MCFG_DEVICE_PROGRAM_MAP(master_sgunner_am) @@ -2036,7 +2012,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) - configure_c65_standard(config); + configure_c68_standard(config); MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* CPU slices per frame */ @@ -2570,6 +2546,9 @@ ROM_START( dirtfoxj ) ROM_REGION( 0x100000, "c140", 0 ) /* Sound voices */ ROM_LOAD( "df1_voi1.bin", 0x000000, 0x080000, CRC(15053904) SHA1(b8ca7e5e53249dbee8284ce1e5c0e6438e64b2cf) ) + + ROM_REGION( 0x2000, "nvram", 0 ) /* default settings, including calibration */ + ROM_LOAD( "nvram", 0x000000, 0x2000, CRC(4b9f7b06) SHA1(384496d2d80a48d31084dc316ebae3a5c1aa1ab9) ) ROM_END /* DRAGON SABER */ @@ -3005,7 +2984,7 @@ ROM_START( finalap2 ) ROM_RELOAD( 0x010000, 0x020000 ) 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_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */ ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) ) @@ -3061,7 +3040,7 @@ ROM_START( finalap2j ) ROM_RELOAD( 0x010000, 0x020000 ) 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_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */ ROM_LOAD( "fl2obj0", 0x000000, 0x80000, CRC(3657dd7a) SHA1(8f286ec0642b09ff42bf0dbd784ae257d4ab278a) ) @@ -3117,8 +3096,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( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) ) @@ -3177,8 +3156,8 @@ ROM_START( finalap3a ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) ) @@ -3240,8 +3219,8 @@ ROM_START( finalap3j ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) ) @@ -3299,8 +3278,8 @@ ROM_START( finalap3jc ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "flt_obj-0.4c", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) ) @@ -3357,8 +3336,8 @@ ROM_START( finalap3bl ) // bootleg set ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "fltobj0", 0x000000, 0x80000, CRC(eab19ec6) SHA1(2859e88b94aa873f3b6ba22790f2211f3e172dd1) ) @@ -4438,7 +4417,7 @@ ROM_START( sgunner ) ROM_RELOAD( 0x010000, 0x020000 ) 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_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */ ROM_LOAD( "sn_obj0.8c", 0x000000, 0x80000, CRC(bbae38f7) SHA1(7a40ade13307791f5c5d300882f9a38e18c411d6) ) @@ -4488,7 +4467,7 @@ ROM_START( sgunnerj ) ROM_RELOAD( 0x010000, 0x020000 ) 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_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) ROM_REGION( 0x400000, "gfx1", 0 ) /* Sprites */ ROM_LOAD( "sn_obj0.8c", 0x000000, 0x80000, CRC(bbae38f7) SHA1(7a40ade13307791f5c5d300882f9a38e18c411d6) ) @@ -4645,8 +4624,8 @@ ROM_START( sws ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "ss1_obj0.5b", 0x000000, 0x80000, CRC(9bd6add1) SHA1(34595987670d7f64ba18a840e98667b96ae5e4bf) ) @@ -4688,8 +4667,8 @@ ROM_START( sws92 ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "sss_obj0.bin", 0x000000, 0x80000, CRC(375e8f1f) SHA1(b737bcceb498a66593d06ef102958bea90032106) ) @@ -4733,8 +4712,8 @@ ROM_START( sws92g ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "sss_obj0.bin", 0x000000, 0x80000, CRC(375e8f1f) SHA1(b737bcceb498a66593d06ef102958bea90032106) ) @@ -4780,8 +4759,8 @@ ROM_START( sws93 ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - ROM_LOAD( "sys2c65c.bin", 0x000000, 0x008000, CRC(a5b2a4ff) SHA1(068bdfcc71a5e83706e8b23330691973c1c214dc) ) + 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( "sst_obj0.bin", 0x000000, 0x80000, CRC(4089dfd7) SHA1(d37fb08d03a4d3f87b10a8e73bbb1817543396ff) ) @@ -4825,8 +4804,8 @@ ROM_START( suzuka8h ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - 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( 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( "eh1-obj0.bin", 0x000000, 0x80000, CRC(864b6816) SHA1(72d831b631afb2848578bd49cd7d3e12a78644b4) ) @@ -4876,8 +4855,8 @@ ROM_START( suzuka8hj ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - 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( 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( "eh1-obj0.bin", 0x000000, 0x80000, CRC(864b6816) SHA1(72d831b631afb2848578bd49cd7d3e12a78644b4) ) @@ -4927,8 +4906,8 @@ ROM_START( suzuk8h2 ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - 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( 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( "ehs1-obj0.3p", 0x000000, 0x80000, CRC(a0acf307) SHA1(6d79d2dd00da4f8f0462245f42a9d88b6ad632b1) ) @@ -4985,8 +4964,8 @@ ROM_START( suzuk8h2j ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - 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( 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( "ehs1-obj0.3p", 0x000000, 0x80000, CRC(a0acf307) SHA1(6d79d2dd00da4f8f0462245f42a9d88b6ad632b1) ) @@ -5451,8 +5430,8 @@ ROM_START( luckywld ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "lw1obj0.3p", 0x000000, 0x80000, CRC(21485830) SHA1(e55a1f6df90c17b9c49e2b08c423b9be86996659) ) @@ -5516,8 +5495,8 @@ ROM_START( luckywldj ) ROM_CONTINUE( 0x010000, 0x01c000 ) ROM_RELOAD( 0x010000, 0x020000 ) - ROM_REGION( 0x8000, "c65mcu:external", ROMREGION_ERASE00 ) /* I/O MCU */ - /* should be c68 */ + 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( "lw1obj0.3p", 0x000000, 0x80000, CRC(21485830) SHA1(e55a1f6df90c17b9c49e2b08c423b9be86996659) ) @@ -5582,20 +5561,6 @@ void namcos2_state::init_assaultp() m_gametype = NAMCOS2_ASSAULT_PLUS; } -void namcos2_state::init_assaultp_hack() -{ - // HACK! - // boost the MCU speed to avoid a race condition which causes - // the mode select menu to vanish before you have a chance to use - // it. It probably needs better RAM access timing etc. - // - // This is used in conjunction with the interleave increase in the - // MACHINE_DRIVER - m_mcu->set_clock_scale(4.0f); - - init_assaultp(); -} - void namcos2_state::init_burnforc() { m_gametype = NAMCOS2_BURNING_FORCE; @@ -5812,7 +5777,7 @@ GAMEL( 1987, finallapjb, finallap, finallap, finallap, namcos2_state, init_final GAME( 1988, assault, 0, base2, assault, namcos2_state, init_assault, ROT90, "Namco", "Assault (Rev B)", 0 ) GAME( 1988, assaultj, assault, base2, assault, namcos2_state, init_assaultj, ROT90, "Namco", "Assault (Japan)", 0 ) -GAME( 1988, assaultp, assault, assaultp, assault, namcos2_state, init_assaultp_hack, ROT90, "Namco", "Assault Plus (Japan)", 0) +GAME( 1988, assaultp, assault, assaultp, assault, namcos2_state, init_assaultp, ROT90, "Namco", "Assault Plus (Japan)", 0) GAME( 1988, metlhawk, 0, metlhawk, metlhawk, namcos2_state, init_metlhawk, ROT90, "Namco", "Metal Hawk (Rev C)", 0 ) GAME( 1988, metlhawkj, metlhawk, metlhawk, metlhawk, namcos2_state, init_metlhawk, ROT90, "Namco", "Metal Hawk (Japan, Rev F)", 0 ) @@ -5859,20 +5824,22 @@ GAME( 1990, rthun2j, rthun2, base3, base, namcos2_state, init_rthun GAME( 1990, sgunner, 0, sgunner, sgunner, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner (Rev B)", 0 ) GAME( 1990, sgunnerj, sgunner, sgunner, sgunner, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner (Japan)", 0 ) -GAME( 1991, sgunner2, 0, sgunner2, sgunner2, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner 2 (US)", 0 ) -GAME( 1991, sgunner2j, sgunner2, sgunner2, sgunner2, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner 2 (Japan, Rev A)", 0 ) +// The C68 I/O MCU contains a 1991 copyright, so anything after this point is potentially using that instead of C65, games before this point can't be using it + +GAME( 1991, sgunner2, 0, sgunner2, sgunner, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner 2 (US)", 0 ) +GAME( 1991, sgunner2j, sgunner2, sgunner2, sgunner, namcos2_state, init_sgunner2, ROT0, "Namco", "Steel Gunner 2 (Japan, Rev A)", 0 ) GAME( 1991, cosmogng, 0, base, base, namcos2_state, init_cosmogng, ROT90, "Namco", "Cosmo Gang the Video (US)", 0 ) GAME( 1991, cosmogngj, cosmogng, base, base, namcos2_state, init_cosmogng, ROT90, "Namco", "Cosmo Gang the Video (Japan)", 0 ) -GAME( 1992, bubbletr, 0, gollygho, bubbletr, namcos2_state, init_bubbletr, ROT180, "Namco", "Bubble Trouble (World, Rev B)", MACHINE_REQUIRES_ARTWORK ) -GAME( 1992, bubbletrj, bubbletr, gollygho, bubbletr, namcos2_state, init_bubbletr, ROT180, "Namco", "Bubble Trouble (Japan, Rev C)", MACHINE_REQUIRES_ARTWORK ) +GAME( 1992, bubbletr, 0, gollygho, bubbletr, namcos2_state, init_bubbletr, ROT180, "Namco", "Bubble Trouble - Golly Ghost 2 (World, Rev B)", MACHINE_REQUIRES_ARTWORK ) +GAME( 1992, bubbletrj, bubbletr, gollygho, bubbletr, namcos2_state, init_bubbletr, ROT180, "Namco", "Bubble Trouble - Golly Ghost 2 (Japan, Rev C)", MACHINE_REQUIRES_ARTWORK ) -GAMEL( 1992, finalap3, 0, finalap2, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (World, Rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) -GAMEL( 1992, finalap3a, finalap3, finalap2, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (World, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) -GAMEL( 1992, finalap3j, finalap3, finalap2, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) -GAMEL( 1992, finalap3jc, finalap3, finalap2, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (Japan, Rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) -GAMEL( 1992, finalap3bl, finalap3, finalap2, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) +GAMEL( 1992, finalap3, 0, finalap3, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (World, Rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) +GAMEL( 1992, finalap3a, finalap3, finalap3, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (World, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) +GAMEL( 1992, finalap3j, finalap3, finalap3, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) +GAMEL( 1992, finalap3jc, finalap3, finalap3, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (Japan, Rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) +GAMEL( 1992, finalap3bl, finalap3, finalap3, finalap3, namcos2_state, init_finalap3, ROT0, "Namco", "Final Lap 3 (bootleg)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN, layout_finallap ) GAME( 1992, luckywld, 0, luckywld, luckywld, namcos2_state, init_luckywld, ROT0, "Namco", "Lucky & Wild", 0 ) GAME( 1992, luckywldj, luckywld, luckywld, luckywld, namcos2_state, init_luckywld, ROT0, "Namco", "Lucky & Wild (Japan)", 0 ) @@ -5880,12 +5847,12 @@ GAME( 1992, luckywldj, luckywld, luckywld, luckywld, namcos2_state, init_lucky GAME( 1992, suzuka8h, 0, luckywld, suzuka, namcos2_state, init_suzuka8h, ROT0, "Namco", "Suzuka 8 Hours (World, Rev C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN ) GAME( 1992, suzuka8hj, suzuka8h, luckywld, suzuka, namcos2_state, init_suzuka8h, ROT0, "Namco", "Suzuka 8 Hours (Japan, Rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN ) -GAME( 1992, sws, 0, base, base, namcos2_state, init_sws, ROT0, "Namco", "Super World Stadium (Japan)", 0 ) +GAME( 1992, sws, 0, base_c68, base, namcos2_state, init_sws, ROT0, "Namco", "Super World Stadium (Japan)", 0 ) -GAME( 1992, sws92, 0, base, base, namcos2_state, init_sws92, ROT0, "Namco", "Super World Stadium '92 (Japan)", 0 ) -GAME( 1992, sws92g, sws92, base, base, namcos2_state, init_sws92g, ROT0, "Namco", "Super World Stadium '92 Gekitouban (Japan)", 0 ) +GAME( 1992, sws92, 0, base_c68, base, namcos2_state, init_sws92, ROT0, "Namco", "Super World Stadium '92 (Japan)", 0 ) +GAME( 1992, sws92g, sws92, base_c68, base, namcos2_state, init_sws92g, ROT0, "Namco", "Super World Stadium '92 Gekitouban (Japan)", 0 ) GAME( 1993, suzuk8h2, 0, luckywld, suzuka, namcos2_state, init_suzuk8h2, ROT0, "Namco", "Suzuka 8 Hours 2 (World, Rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN ) GAME( 1993, suzuk8h2j, suzuk8h2, luckywld, suzuka, namcos2_state, init_suzuk8h2, ROT0, "Namco", "Suzuka 8 Hours 2 (Japan, Rev B)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND | MACHINE_NODEVICE_LAN ) -GAME( 1993, sws93, 0, base, base, namcos2_state, init_sws93, ROT0, "Namco", "Super World Stadium '93 (Japan)", 0 ) +GAME( 1993, sws93, 0, base_c68, base, namcos2_state, init_sws93, ROT0, "Namco", "Super World Stadium '93 (Japan)", 0 ) -- cgit v1.2.3