summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/namcos2.cpp
diff options
context:
space:
mode:
author David Haywood <hazemamewip@hotmail.com>2018-09-09 13:47:13 +0100
committer R. Belmont <rb6502@users.noreply.github.com>2018-09-09 08:47:13 -0400
commitea7f1e3bd977d12929e3cf5674f168143d5791bf (patch)
tree5320a5f03b92b5a1e2bd73cee87c3de735050515 /src/mame/drivers/namcos2.cpp
parent6153de028a36fb3dd785146bf4350777e39f92a4 (diff)
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)
Diffstat (limited to 'src/mame/drivers/namcos2.cpp')
-rw-r--r--src/mame/drivers/namcos2.cpp257
1 files changed, 112 insertions, 145 deletions
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 )