trunk/src/mame/drivers/sbrkout.c
| r242596 | r242597 | |
| 6 | 6 | |
| 7 | 7 | Games supported: |
| 8 | 8 | * Super Breakout |
| 9 | | * Super Breakout (Canyon and Vertical Breakout, prototype) - built from original source code |
| 9 | * Super Breakout (Canyon and Vertical Breakout, prototype) |
| 10 | * Super Breakout (Cocktail, prototype) |
| 10 | 11 | |
| 11 | 12 | Known issues: |
| 12 | 13 | * none at this time |
| r242596 | r242597 | |
| 59 | 60 | UINT8 m_pot_trigger[2]; |
| 60 | 61 | DECLARE_WRITE8_MEMBER(irq_ack_w); |
| 61 | 62 | DECLARE_READ8_MEMBER(switches_r); |
| 63 | DECLARE_READ8_MEMBER(sbrkoutct_switches_r); |
| 62 | 64 | DECLARE_WRITE8_MEMBER(pot_mask1_w); |
| 63 | 65 | DECLARE_WRITE8_MEMBER(pot_mask2_w); |
| 64 | 66 | DECLARE_WRITE8_MEMBER(start_1_led_w); |
| 65 | 67 | DECLARE_WRITE8_MEMBER(start_2_led_w); |
| 66 | 68 | DECLARE_WRITE8_MEMBER(serve_led_w); |
| 69 | DECLARE_WRITE8_MEMBER(serve_2_led_w); |
| 67 | 70 | DECLARE_WRITE8_MEMBER(coincount_w); |
| 68 | 71 | DECLARE_READ8_MEMBER(sync_r); |
| 69 | 72 | DECLARE_READ8_MEMBER(sync2_r); |
| r242596 | r242597 | |
| 212 | 215 | return result; |
| 213 | 216 | } |
| 214 | 217 | |
| 218 | READ8_MEMBER(sbrkout_state::sbrkoutct_switches_r) |
| 219 | { |
| 220 | UINT8 result = 0xff; |
| 215 | 221 | |
| 222 | switch( offset ) |
| 223 | { |
| 224 | case 0x28: result = ioport("SELECT")->read(); break; |
| 225 | case 0x2e: result = ioport("SERVE")->read(); break; |
| 226 | case 0x2f: result = ioport("SERVE2")->read(); break; |
| 227 | case 0x30: result = (ioport("DIPS")->read() & 0x03) << 6; break; |
| 228 | case 0x31: result = (ioport("DIPS")->read() & 0x0c) << 4; break; |
| 229 | case 0x32: result = ioport("DIPS")->read() & 0xc0; break; |
| 230 | case 0x33: result = (ioport("DIPS")->read() & 0x30) << 2; break; |
| 231 | default: logerror("Unknown port read %x\n", offset); break; |
| 232 | } |
| 233 | return result; |
| 234 | } |
| 235 | |
| 216 | 236 | void sbrkout_state::update_nmi_state() |
| 217 | 237 | { |
| 218 | 238 | if ((m_pot_trigger[0] & ~m_pot_mask[0]) | (m_pot_trigger[1] & ~m_pot_mask[1])) |
| r242596 | r242597 | |
| 275 | 295 | output_set_led_value(0, ~offset & 1); |
| 276 | 296 | } |
| 277 | 297 | |
| 298 | WRITE8_MEMBER(sbrkout_state::serve_2_led_w) |
| 299 | { |
| 300 | output_set_led_value(1, ~offset & 1); |
| 301 | } |
| 278 | 302 | |
| 279 | 303 | WRITE8_MEMBER(sbrkout_state::coincount_w) |
| 280 | 304 | { |
| r242596 | r242597 | |
| 387 | 411 | AM_RANGE(0x2800, 0x3fff) AM_ROM |
| 388 | 412 | ADDRESS_MAP_END |
| 389 | 413 | |
| 414 | static ADDRESS_MAP_START( sbrkoutct_main_map, AS_PROGRAM, 8, sbrkout_state ) |
| 415 | ADDRESS_MAP_GLOBAL_MASK(0x3fff) |
| 416 | AM_RANGE(0x0000, 0x007f) AM_MIRROR(0x380) AM_RAMBANK("bank1") |
| 417 | AM_RANGE(0x0400, 0x07ff) AM_RAM_WRITE(sbrkout_videoram_w) AM_SHARE("videoram") |
| 418 | AM_RANGE(0x0800, 0x083f) AM_READ(sbrkoutct_switches_r) |
| 419 | AM_RANGE(0x0840, 0x0840) AM_MIRROR(0x003f) AM_READ_PORT("COIN") |
| 420 | AM_RANGE(0x0880, 0x0880) AM_MIRROR(0x003f) AM_READ_PORT("START") |
| 421 | AM_RANGE(0x08c0, 0x08c0) AM_MIRROR(0x003f) AM_READ_PORT("SERVICE") |
| 422 | AM_RANGE(0x0c00, 0x0c00) AM_MIRROR(0x03ff) AM_READ(sync_r) |
| 423 | AM_RANGE(0x0c10, 0x0c11) AM_MIRROR(0x000e) AM_WRITE(serve_led_w) |
| 424 | AM_RANGE(0x0c20, 0x0c21) AM_MIRROR(0x000e) AM_WRITE(serve_2_led_w) |
| 425 | AM_RANGE(0x0c30, 0x0c31) AM_MIRROR(0x000e) AM_WRITE(start_1_led_w) |
| 426 | AM_RANGE(0x0c40, 0x0c41) AM_MIRROR(0x000e) AM_WRITE(start_2_led_w) |
| 427 | AM_RANGE(0x0c50, 0x0c51) AM_MIRROR(0x000e) AM_WRITE(pot_mask1_w) |
| 428 | AM_RANGE(0x0c60, 0x0c61) AM_MIRROR(0x000e) AM_WRITE(pot_mask2_w) |
| 429 | AM_RANGE(0x0c70, 0x0c71) AM_MIRROR(0x000e) AM_WRITE(coincount_w) |
| 430 | AM_RANGE(0x0c80, 0x0c80) AM_MIRROR(0x007f) AM_WRITE(watchdog_reset_w) |
| 431 | AM_RANGE(0x0e00, 0x0e00) AM_MIRROR(0x007f) AM_WRITE(irq_ack_w) |
| 432 | AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x03ff) AM_READ(sync2_r) |
| 433 | AM_RANGE(0x2800, 0x3fff) AM_ROM |
| 434 | ADDRESS_MAP_END |
| 390 | 435 | |
| 391 | 436 | |
| 392 | 437 | /************************************* |
| r242596 | r242597 | |
| 475 | 520 | PORT_CONFSETTING( 0x02, "Vertical" ) |
| 476 | 521 | INPUT_PORTS_END |
| 477 | 522 | |
| 523 | static INPUT_PORTS_START( sbrkoutct ) |
| 524 | PORT_INCLUDE(sbrkout) |
| 525 | |
| 526 | PORT_START("SERVE2") |
| 527 | PORT_BIT( 0x7f, IP_ACTIVE_LOW, IPT_UNUSED ) |
| 528 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 529 | |
| 530 | PORT_MODIFY("SELECT") |
| 531 | PORT_CONFNAME(0x80, 0x00, "Game Select" ) |
| 532 | PORT_CONFSETTING( 0x00, DEF_STR( Off ) ) |
| 533 | PORT_CONFSETTING( 0x80, DEF_STR( On ) ) |
| 534 | INPUT_PORTS_END |
| 535 | |
| 478 | 536 | /************************************* |
| 479 | 537 | * |
| 480 | 538 | * Graphics definitions |
| r242596 | r242597 | |
| 543 | 601 | MACHINE_CONFIG_END |
| 544 | 602 | |
| 545 | 603 | |
| 604 | static MACHINE_CONFIG_DERIVED(sbrkoutct, sbrkout) |
| 605 | MCFG_CPU_MODIFY("maincpu") |
| 606 | MCFG_CPU_PROGRAM_MAP(sbrkoutct_main_map) |
| 607 | MACHINE_CONFIG_END |
| 546 | 608 | |
| 547 | 609 | /************************************* |
| 548 | 610 | * |
| r242596 | r242597 | |
| 598 | 660 | ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ |
| 599 | 661 | ROM_END |
| 600 | 662 | |
| 601 | | ROM_START( sbrkoutc ) |
| 663 | ROM_START( sbrkoutc ) // built from original Atari source code |
| 602 | 664 | ROM_REGION( 0x4000, "maincpu", 0 ) |
| 603 | 665 | ROM_LOAD( "a33443.bin", 0x2800, 0x1800, CRC(bf418976) SHA1(d766e220a284a7b9caf876207e8191aff0497a03) ) |
| 604 | 666 | |
| r242596 | r242597 | |
| 614 | 676 | ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ |
| 615 | 677 | ROM_END |
| 616 | 678 | |
| 679 | ROM_START( sbrkoutct ) // built from original Atari source code |
| 680 | ROM_REGION( 0x4000, "maincpu", 0 ) |
| 681 | ROM_LOAD( "034555-01.c1", 0x2800, 0x0800, CRC(2da82521) SHA1(1f53e549676052647486cea6738c5c7a45133538) ) |
| 682 | ROM_LOAD( "034556-01.d11", 0x3000, 0x0800, CRC(5a6497ae) SHA1(96c2a136fb1e649e2db17bcb12bdc2a8d250a63e) ) |
| 683 | ROM_LOAD( "034557-01.ef1", 0x3800, 0x0800, CRC(b6b3b07b) SHA1(c4d2cdcca89c2944afd4a4ed0bb5003b3eca4c7e) ) |
| 617 | 684 | |
| 685 | ROM_REGION( 0x0400, "gfx1", 0 ) |
| 686 | ROM_LOAD( "034559-01.r4", 0x0000, 0x0200, CRC(84368539) SHA1(50b2c3f443346e3a355492ed1f7ec0a8cc6364d4) ) |
| 687 | ROM_LOAD( "034558-01.p4", 0x0200, 0x0200, CRC(cc0f81f2) SHA1(a2180280991c9cf43f4e941d9ba4fe5654d1af65) ) |
| 688 | |
| 689 | ROM_REGION( 0x0020, "gfx2", 0 ) |
| 690 | ROM_LOAD( "033282.k6", 0x0000, 0x0020, CRC(6228736b) SHA1(bc176261dba11521df19d545ce604f8cc294287a) ) |
| 691 | |
| 692 | ROM_REGION( 0x0120, "proms", 0 ) |
| 693 | ROM_LOAD( "006400.m2", 0x0000, 0x0100, CRC(b8094b4c) SHA1(82dc6799a19984f3b204ee3aeeb007e55afc8be3) ) /* sync (not used) */ |
| 694 | ROM_LOAD( "006401.e2", 0x0100, 0x0020, CRC(857df8db) SHA1(06313d5bde03220b2bc313d18e50e4bb1d0cfbbb) ) /* memory mapper */ |
| 695 | ROM_END |
| 696 | |
| 618 | 697 | /************************************* |
| 619 | 698 | * |
| 620 | 699 | * Game drivers |
| 621 | 700 | * |
| 622 | 701 | *************************************/ |
| 623 | 702 | |
| 624 | | GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 625 | | GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 626 | | GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, driver_device, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 703 | GAMEL( 1978, sbrkout, 0, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 04)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 704 | GAMEL( 1978, sbrkout3, sbrkout, sbrkout, sbrkout, driver_device, 0, ROT270, "Atari", "Super Breakout (rev 03)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 705 | GAMEL( 1978, sbrkoutc, sbrkout, sbrkout, sbrkoutc, driver_device, 0, ROT270, "Atari", "Super Breakout (Canyon and Vertical Breakout, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |
| 706 | GAMEL( 1978, sbrkoutct, sbrkout, sbrkoutct, sbrkoutct, driver_device, 0, ROT270, "Atari", "Super Breakout (Cocktail, prototype)", GAME_SUPPORTS_SAVE, layout_sbrkout ) |