From 03baaf7e99f162a7b2d1d19a58b685c00d1c9fef Mon Sep 17 00:00:00 2001 From: mariuszw Date: Sat, 27 Dec 2014 12:47:53 +0100 Subject: New clones added -------------------- Super Breakout (Cocktail, prototype) [Mariusz Wojcieszek] --- src/mame/drivers/sbrkout.c | 90 +++++++++++++++++++++++++++++++++++++++++++--- src/mame/mame.lst | 1 + 2 files changed, 86 insertions(+), 5 deletions(-) diff --git a/src/mame/drivers/sbrkout.c b/src/mame/drivers/sbrkout.c index d60c3bba6a4..4f1c871a93e 100644 --- a/src/mame/drivers/sbrkout.c +++ b/src/mame/drivers/sbrkout.c @@ -6,7 +6,8 @@ Games supported: * Super Breakout - * Super Breakout (Canyon and Vertical Breakout, prototype) - built from original source code + * Super Breakout (Canyon and Vertical Breakout, prototype) + * Super Breakout (Cocktail, prototype) Known issues: * none at this time @@ -59,11 +60,13 @@ public: UINT8 m_pot_trigger[2]; DECLARE_WRITE8_MEMBER(irq_ack_w); DECLARE_READ8_MEMBER(switches_r); + DECLARE_READ8_MEMBER(sbrkoutct_switches_r); DECLARE_WRITE8_MEMBER(pot_mask1_w); DECLARE_WRITE8_MEMBER(pot_mask2_w); DECLARE_WRITE8_MEMBER(start_1_led_w); DECLARE_WRITE8_MEMBER(start_2_led_w); DECLARE_WRITE8_MEMBER(serve_led_w); + DECLARE_WRITE8_MEMBER(serve_2_led_w); DECLARE_WRITE8_MEMBER(coincount_w); DECLARE_READ8_MEMBER(sync_r); DECLARE_READ8_MEMBER(sync2_r); @@ -212,6 +215,23 @@ READ8_MEMBER(sbrkout_state::switches_r) return result; } +READ8_MEMBER(sbrkout_state::sbrkoutct_switches_r) +{ + UINT8 result = 0xff; + + switch( offset ) + { + case 0x28: result = ioport("SELECT")->read(); break; + case 0x2e: result = ioport("SERVE")->read(); break; + case 0x2f: result = ioport("SERVE2")->read(); break; + case 0x30: result = (ioport("DIPS")->read() & 0x03) << 6; break; + case 0x31: result = (ioport("DIPS")->read() & 0x0c) << 4; break; + case 0x32: result = ioport("DIPS")->read() & 0xc0; break; + case 0x33: result = (ioport("DIPS")->read() & 0x30) << 2; break; + default: logerror("Unknown port read %x\n", offset); break; + } + return result; +} void sbrkout_state::update_nmi_state() { @@ -275,6 +295,10 @@ WRITE8_MEMBER(sbrkout_state::serve_led_w) output_set_led_value(0, ~offset & 1); } +WRITE8_MEMBER(sbrkout_state::serve_2_led_w) +{ + output_set_led_value(1, ~offset & 1); +} WRITE8_MEMBER(sbrkout_state::coincount_w) { @@ -387,6 +411,27 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, sbrkout_state ) AM_RANGE(0x2800, 0x3fff) AM_ROM ADDRESS_MAP_END +static ADDRESS_MAP_START( sbrkoutct_main_map, AS_PROGRAM, 8, sbrkout_state ) + ADDRESS_MAP_GLOBAL_MASK(0x3fff) + AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1") + AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_SHARE("videoram") + AM_RANGE(0x0800, 0x083f) AM_READ(sbrkoutct_switches_r) + AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN") + AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START") + AM_RANGE(0x08c0, 0x08c0) AM_MIRROR(0x003f) AM_READ_PORT("SERVICE") + AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ(sync_r) + AM_RANGE(0x0c10, 0x0c11) AM_MIRROR(0x000e) AM_WRITE(serve_led_w) + AM_RANGE(0x0c20, 0x0c21) AM_MIRROR(0x000e) AM_WRITE(serve_2_led_w) + AM_RANGE(0x0c30, 0x0c31) AM_MIRROR(0x000e) AM_WRITE(start_1_led_w) + AM_RANGE(0x0c40, 0x0c41) AM_MIRROR(0x000e) AM_WRITE(start_2_led_w) + AM_RANGE(0x0c50, 0x0c51) AM_MIRROR(0x000e) AM_WRITE(pot_mask1_w) + AM_RANGE(0x0c60, 0x0c61) AM_MIRROR(0x000e) AM_WRITE(pot_mask2_w) + AM_RANGE(0x0c70, 0x0c71) AM_MIRROR(0x000e) AM_WRITE(coincount_w) + AM_RANGE(0x0c80, 0x0c80) AM_MIRROR(0x007f) AM_WRITE(watchdog_reset_w) + AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE(irq_ack_w) + AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ(sync2_r) + AM_RANGE(0x2800, 0x3fff) AM_ROM +ADDRESS_MAP_END /************************************* @@ -475,6 +520,19 @@ static INPUT_PORTS_START( sbrkoutc ) PORT_CONFSETTING( 0x02, "Vertical" ) INPUT_PORTS_END +static INPUT_PORTS_START( sbrkoutct ) + PORT_INCLUDE(sbrkout) + + PORT_START("SERVE2") + PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) + + PORT_MODIFY("SELECT") + PORT_CONFNAME(0x80, 0x00, "Game Select" ) + PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) + PORT_CONFSETTING( 0x80, DEF_STR( On ) ) +INPUT_PORTS_END + /************************************* * * Graphics definitions @@ -543,6 +601,10 @@ static MACHINE_CONFIG_START( sbrkout, sbrkout_state ) MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED(sbrkoutct, sbrkout) + MCFG_CPU_MODIFY("maincpu") + MCFG_CPU_PROGRAM_MAP(sbrkoutct_main_map) +MACHINE_CONFIG_END /************************************* * @@ -598,7 +660,7 @@ ROM_START( sbrkout3 ) // rev 03; main cpu roms are on 1024x4bit (82s137 or equiv ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ ROM_END -ROM_START( sbrkoutc ) +ROM_START( sbrkoutc ) // built from original Atari source code ROM_REGION( 0x4000, "maincpu", 0 ) ROM_LOAD( "a33443.bin", 0x2800, 0x1800, CRC(bf418976) SHA1(d766e220a284a7b9caf876207e8191aff0497a03) ) @@ -614,6 +676,23 @@ ROM_START( sbrkoutc ) ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ ROM_END +ROM_START( sbrkoutct ) // built from original Atari source code + ROM_REGION( 0x4000, "maincpu", 0 ) + ROM_LOAD( "034555-01.c1", 0x2800, 0x0800, CRC(2da82521) SHA1(1f53e549676052647486cea6738c5c7a45133538) ) + ROM_LOAD( "034556-01.d11", 0x3000, 0x0800, CRC(5a6497ae) SHA1(96c2a136fb1e649e2db17bcb12bdc2a8d250a63e) ) + ROM_LOAD( "034557-01.ef1", 0x3800, 0x0800, CRC(b6b3b07b) SHA1(c4d2cdcca89c2944afd4a4ed0bb5003b3eca4c7e) ) + + ROM_REGION( 0x0400, "gfx1", 0 ) + ROM_LOAD( "034559-01.r4", 0x0000, 0x0200, CRC(84368539) SHA1(50b2c3f443346e3a355492ed1f7ec0a8cc6364d4) ) + ROM_LOAD( "034558-01.p4", 0x0200, 0x0200, CRC(cc0f81f2) SHA1(a2180280991c9cf43f4e941d9ba4fe5654d1af65) ) + + ROM_REGION( 0x0020, "gfx2", 0 ) + ROM_LOAD( "033282.k6", 0x0000, 0x0020, CRC(6228736b) SHA1(bc176261dba11521df19d545ce604f8cc294287a) ) + + ROM_REGION( 0x0120, "proms", 0 ) + ROM_LOAD( "006400.m2", 0x0000, 0x0100, CRC(b8094b4c) SHA1(82dc6799a19984f3b204ee3aeeb007e55afc8be3) ) /* sync (not used) */ + ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ +ROM_END /************************************* * @@ -621,6 +700,7 @@ ROM_END * *************************************/ -GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout ) -GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout ) -GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, driver_device, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, driver_device, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) +GAMEL( 1978, sbrkoutct, sbrkout, sbrkoutct, sbrkoutct, driver_device, 0, ROT270, "Atari", "Super Breakout (Cocktail, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 49894e15b35..846f27922b0 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -6887,6 +6887,7 @@ skydiver // 009787 1978/06 [6800] sbrkout3 // 033442-033452 1978/09 [6502] sbrkout // 033453-033455 1978/09 [6502] sbrkoutc // unrealeased proto +sbrkoutct // 034555-034559 proto ???? [6502] atarifb // 033xxx 1978/10 [6502] atarifb1 // 033xxx 1978/10 [6502] atarifb2 // 035330-035350 ??? [6502] -- cgit v1.2.3