From 422c6c0d602f39b45b5e39fde95364a9853a9b59 Mon Sep 17 00:00:00 2001 From: Aaron Giles Date: Sun, 2 Aug 2009 21:33:05 +0000 Subject: [PATCH] Hooked up Cobra Command sound ROM. [Jim Hernandez, Aaron Giles] Also: From: Xander [xander85@operamail.com] Sent: Thursday, July 30, 2009 4:55 AM To: submit@mamedev.org Subject: cobram3 dip switch (bugs 3352, 3354) Fixed cobram3 dip switch. Xander --- src/mame/audio/gottlieb.c | 1 + src/mame/drivers/gottlieb.c | 80 +++++++++++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/src/mame/audio/gottlieb.c b/src/mame/audio/gottlieb.c index 0a107b03d30..afa7cef376e 100644 --- a/src/mame/audio/gottlieb.c +++ b/src/mame/audio/gottlieb.c @@ -300,6 +300,7 @@ static SOUND_START( gottlieb1 ) { score_sample = 7; random_offset = 0; + dac_data[0] = dac_data[1] = 0xff; state_save_register_global_array(machine, votrax_queue); state_save_register_global(machine, votrax_queuepos); diff --git a/src/mame/drivers/gottlieb.c b/src/mame/drivers/gottlieb.c index 96a94ab007e..715e22def92 100644 --- a/src/mame/drivers/gottlieb.c +++ b/src/mame/drivers/gottlieb.c @@ -1462,6 +1462,61 @@ static INPUT_PORTS_START( mach3 ) PORT_INCLUDE(gottlieb2_sound) INPUT_PORTS_END +static INPUT_PORTS_START( cobram3 ) + PORT_START("DSW") + PORT_DIPNAME( 0x01, 0x01, DEF_STR( Coinage ) ) + PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C ) ) + PORT_DIPNAME( 0x02, 0x02, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x02, DEF_STR( On ) ) + PORT_DIPNAME( 0x08, 0x00, DEF_STR( Lives ) ) + PORT_DIPSETTING( 0x00, "3" ) + PORT_DIPSETTING( 0x08, "5" ) + PORT_DIPNAME( 0x14, 0x00, "1st Bonus / 2nd Bonus" ) + PORT_DIPSETTING( 0x00, "20000 / None" ) + PORT_DIPSETTING( 0x10, "15000 / 30000" ) + PORT_DIPSETTING( 0x04, "20000 / 40000" ) + PORT_DIPSETTING( 0x14, "30000 / 50000" ) + PORT_DIPNAME( 0x20, 0x00, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x20, DEF_STR( Difficult ) ) + PORT_DIPNAME( 0x40, 0x00, "Random 1st Level") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x40, DEF_STR( On ) ) + PORT_DIPNAME( 0x80, 0x00, "Self Test") + PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x80, DEF_STR( On ) ) + + PORT_START("IN1") + PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) + PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_SERVICE ) PORT_NAME("Select in Service Mode") PORT_CODE(KEYCODE_F1) + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_COIN1 ) + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN2 ) + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_TILT ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_START1 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_START2 ) + + PORT_START("IN2") /* trackball H not used */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN3") /* trackball V not used */ + PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_START("IN4") + PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY + PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY + PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY + PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) + PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_BUTTON2 ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) + + PORT_INCLUDE(gottlieb2_sound) +INPUT_PORTS_END + static INPUT_PORTS_START( usvsthem ) PORT_START("DSW") @@ -1950,6 +2005,7 @@ static MACHINE_DRIVER_START( qbert ) MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_DRIVER_END + static MACHINE_DRIVER_START( screwloo ) MDRV_IMPORT_FROM(gottlieb2) @@ -1957,6 +2013,17 @@ static MACHINE_DRIVER_START( screwloo ) MACHINE_DRIVER_END +static MACHINE_DRIVER_START( cobram3 ) + MDRV_IMPORT_FROM(g2laser) + + /* sound hardware */ + MDRV_SOUND_MODIFY("dac1") + MDRV_SOUND_ROUTES_RESET() + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) +MACHINE_DRIVER_END + + + /************************************* * * ROM definitions @@ -2412,8 +2479,11 @@ ROM_START( cobram3 ) ROM_LOAD( "bh01", 0xc000, 0x2000, CRC(7d86ab08) SHA1(26b7eb089ca3fe3f8b1531316ce8f95e33b380e5) ) ROM_LOAD( "bh00", 0xe000, 0x2000, CRC(c19ad038) SHA1(4d20ae70d8ad1eaa61cb91d7a0cff6932fce30d2) ) - ROM_REGION( 0x10000, "audiocpu", ROMREGION_ERASE00 ) - ROM_REGION( 0x10000, "speech", ROMREGION_ERASE00 ) + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "m3drom1.bin", 0xd000, 0x1000, CRC(a6e29212) SHA1(a73aafc2efa99e9ae0aecbb6075a10f7178ac938) ) + + ROM_REGION( 0x10000, "speech", 0 ) + ROM_LOAD( "bh04", 0xe000, 0x2000, CRC(c3f61bc9) SHA1(d02374e6e29238def0cfb01c96c78b206f24d77e) ) ROM_REGION( 0x2000, "bgtiles", 0 ) ROM_LOAD( "bh09", 0x0000, 0x1000, CRC(8c5dfac0) SHA1(5be28f807c4eb9df76a8f7519086ae57953d8c6f) ) @@ -2565,18 +2635,22 @@ static DRIVER_INIT( stooges ) memory_install_write8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x05803, 0x05803, 0, 0x07f8, stooges_output_w); } + static DRIVER_INIT( screwloo ) { gottlieb_gfxcharlo = 0; gottlieb_gfxcharhi = 1; } + static DRIVER_INIT( vidvince ) { gottlieb_gfxcharlo = 1; gottlieb_gfxcharhi = 0; } + + /************************************* * * Game drivers @@ -2605,7 +2679,7 @@ GAME( 1984, curvebal, 0, gottlieb1, curvebal, romtiles, ROT270, "Mylstar /* games using rev 2 sound board */ GAME( 1983, screwloo, 0, screwloo, screwloo, screwloo, ROT0, "Mylstar", "Screw Loose (prototype)", 0 ) GAME( 1983, mach3, 0, g2laser, mach3, romtiles, ROT0, "Mylstar", "M.A.C.H. 3", 0 ) -GAME( 1984, cobram3, cobra, g2laser, mach3, romtiles, ROT0, "Data East","Cobra Command (M.A.C.H. 3 hardware)", 0 ) +GAME( 1984, cobram3, cobra, cobram3, mach3, romtiles, ROT0, "Data East","Cobra Command (M.A.C.H. 3 hardware)", 0 ) GAME( 1984, usvsthem, 0, g2laser, usvsthem, romtiles, ROT0, "Mylstar", "Us vs. Them", 0 ) GAME( 1984, 3stooges, 0, gottlieb2, 3stooges, stooges, ROT0, "Mylstar", "The Three Stooges In Brides Is Brides", 0 ) GAME( 1984, vidvince, 0, gottlieb2, vidvince, vidvince, ROT0, "Mylstar", "Video Vince and the Game Factory (prototype)", GAME_IMPERFECT_GRAPHICS ) // sprite wrapping issues