trunk/src/mame/drivers/8080bw.c
| r19430 | r19431 | |
| 643 | 643 | /* Preliminary emulation. PCB was working fine, but */ |
| 644 | 644 | /* it's not certain that this is a good dump */ |
| 645 | 645 | /* */ |
| 646 | | /* Ports 41 and 48 output 0 at start, not used again */ |
| 647 | | /* Sounds could be memory-mapped? */ |
| 648 | | /* Seems to be no watchdog reset line */ |
| 649 | | /* Diplocs need confirming */ |
| 650 | | /* Couldn't confirm 2500 for extra life, game too hard*/ |
| 651 | | /* Always in cocktail mode but flipscreen bit not found*/ |
| 646 | /* TODO: */ |
| 647 | /* - port $41 write is unknown, $44 read is unknown, */ |
| 648 | /* port $48 no function/unused? */ |
| 649 | /* - dip settings/locs need confirming */ |
| 650 | /* - it doesn't have a mb14241 video shifter? */ |
| 651 | /* - using space invaders audio as placeholder until */ |
| 652 | /* more is known about the sound hw */ |
| 653 | /* - always in cocktail mode but flipscreen not found */ |
| 652 | 654 | /* */ |
| 653 | 655 | /*******************************************************/ |
| 654 | 656 | |
| 655 | 657 | static INPUT_PORTS_START( spacecom ) |
| 656 | | PORT_START("IN0") // 5-pos dipsw at ic79 (row F) - means 3 bits are for something else, which? |
| 657 | | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1") |
| 658 | PORT_START("IN0") // 5-pos dipsw at ic79 (row F) |
| 659 | PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) |
| 658 | 660 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 659 | 661 | PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) |
| 660 | | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2") |
| 662 | PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) |
| 661 | 663 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 662 | 664 | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 663 | | PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) ) PORT_DIPLOCATION("SW1:3") |
| 665 | PORT_DIPNAME( 0x04, 0x00, DEF_STR( Lives ) ) |
| 664 | 666 | PORT_DIPSETTING( 0x00, "3" ) |
| 665 | 667 | PORT_DIPSETTING( 0x04, "5" ) |
| 666 | | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") |
| 668 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) |
| 667 | 669 | PORT_DIPSETTING( 0x00, "2500" ) // not confirmed |
| 668 | 670 | PORT_DIPSETTING( 0x08, "1500" ) |
| 669 | | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:5") |
| 671 | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 670 | 672 | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 671 | 673 | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 672 | 674 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| r19430 | r19431 | |
| 690 | 692 | |
| 691 | 693 | static ADDRESS_MAP_START( spacecom_io_map, AS_IO, 8, _8080bw_state ) |
| 692 | 694 | AM_RANGE(0x41, 0x41) AM_READ_PORT("IN0") |
| 693 | | AM_RANGE(0x42, 0x42) AM_READ_PORT("IN1") AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_count_w) |
| 694 | | AM_RANGE(0x44, 0x44) AM_DEVREAD_LEGACY("mb14241", mb14241_shift_result_r) AM_DEVWRITE_LEGACY("mb14241", mb14241_shift_data_w) |
| 695 | | //AM_RANGE(0x48, 0x48) AM_WRITE(watchdog_reset_w) |
| 695 | AM_RANGE(0x42, 0x42) AM_READ_PORT("IN1") AM_WRITE(invaders_audio_1_w) |
| 696 | AM_RANGE(0x44, 0x44) AM_READNOP AM_WRITE(invaders_audio_2_w) |
| 696 | 697 | ADDRESS_MAP_END |
| 697 | 698 | |
| 698 | 699 | MACHINE_CONFIG_DERIVED_CLASS( spacecom, invaders, _8080bw_state ) |
| r19430 | r19431 | |
| 700 | 701 | /* basic machine hardware */ |
| 701 | 702 | MCFG_CPU_MODIFY("maincpu") |
| 702 | 703 | MCFG_CPU_IO_MAP(spacecom_io_map) |
| 704 | |
| 705 | // assume there is no watchdog |
| 703 | 706 | MCFG_WATCHDOG_VBLANK_INIT(0) |
| 704 | 707 | MCFG_WATCHDOG_TIME_INIT(attotime::from_usec(0)) |
| 705 | 708 | MACHINE_CONFIG_END |
| 706 | 709 | |
| 710 | DRIVER_INIT_MEMBER(_8080bw_state, spacecom) |
| 711 | { |
| 712 | UINT8 *ROM = machine().root_device().memregion("maincpu")->base(); |
| 707 | 713 | |
| 714 | // bad byte: should be push a at RST 10h |
| 715 | ROM[0x10] = 0xf5; |
| 716 | } |
| 708 | 717 | |
| 718 | |
| 719 | |
| 709 | 720 | /*******************************************************/ |
| 710 | 721 | /* */ |
| 711 | 722 | /* Zenitone Microsec "Invaders Revenge" */ |
| r19430 | r19431 | |
| 2933 | 2944 | |
| 2934 | 2945 | ROM_START( spacecom ) |
| 2935 | 2946 | ROM_REGION( 0x10000, "maincpu", 0 ) |
| 2936 | | ROM_LOAD( "1f.ic67", 0x0000, 0x0400, CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) ) |
| 2947 | ROM_LOAD( "1f.ic67", 0x0000, 0x0400, BAD_DUMP CRC(703f2cbe) SHA1(b183f9fbedd8658399555c0ba21ecab6370e86cb) ) |
| 2937 | 2948 | ROM_LOAD( "2g.ic82", 0x0400, 0x0400, CRC(7269b719) SHA1(6fd5879a6f2a5b1d38c7f00996037418df9491d3) ) |
| 2938 | 2949 | ROM_LOAD( "3f.ic68", 0x0800, 0x0400, CRC(6badac4f) SHA1(7b998d8fb21d143f26d605fe2a7dbbe1cf65210f) ) |
| 2939 | 2950 | ROM_LOAD( "4g.ic83", 0x0c00, 0x0400, CRC(75b59ea7) SHA1(e00eb4a9cf662c84e18fc9efc29cedebf0c5af67) ) |
| r19430 | r19431 | |
| 2941 | 2952 | ROM_LOAD( "6g.ic84", 0x1400, 0x0400, CRC(de383625) SHA1(7ec0d7171e771c4b43e026f3f50a88d8ab2236bb) ) |
| 2942 | 2953 | ROM_LOAD( "7f.ic70", 0x1800, 0x0400, CRC(5a23dbc8) SHA1(4d193bb7b38fb7ccd57d2c72463a3fe123dbca58) ) |
| 2943 | 2954 | ROM_LOAD( "8g.ic85", 0x1c00, 0x0400, CRC(a5a467e3) SHA1(ef591059e55d21f14baa8af1f1324a9bc2ada8c4) ) |
| 2944 | | ROM_FILL(0x10, 1, 0xF5) // fix bad byte |
| 2945 | 2955 | ROM_END |
| 2946 | 2956 | |
| 2947 | 2957 | ROM_START( sinvzen ) |
| r19430 | r19431 | |
| 4110 | 4120 | GAMEL(1980?,sinvzen, invaders, invaders, spaceatt, driver_device, 0, ROT270, "Taito / Zenitone-Microsec Ltd.", "Super Invaders (Zenitone-Microsec)", GAME_SUPPORTS_SAVE, layout_invaders ) // unclassified, licensed or bootleg? |
| 4111 | 4121 | GAMEL(1978, spaceatt, invaders, invaders, sicv, driver_device, 0, ROT270, "bootleg (Video Games GmbH)", "Space Attack (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) |
| 4112 | 4122 | GAMEL(1980, spaceat2, invaders, invaders, spaceatt, driver_device, 0, ROT270, "bootleg (Video Games UK)", "Space Attack II (bootleg of Super Invaders)", GAME_SUPPORTS_SAVE, layout_invaders ) // bootleg of Zenitone-Microsec Super Invaders |
| 4113 | | GAMEL(1979, spacecom, invaders, spacecom, spacecom, driver_device, 0, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_SUPPORTS_SAVE | GAME_NOT_WORKING, layout_spacecom ) // not working: need to investigate it more, could be bad dump? |
| 4123 | GAMEL(1979, spacecom, invaders, spacecom, spacecom, _8080bw_state, spacecom, ROT270, "bootleg", "Space Combat (bootleg of Space Invaders)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE, layout_spacecom ) |
| 4114 | 4124 | GAME( 1978, spacerng, invaders, spacerng, sitv, driver_device, 0, ROT90, "bootleg (Leisure Time Electronics)", "Space Ranger (bootleg of Space Invaders)", GAME_WRONG_COLORS | GAME_SUPPORTS_SAVE | GAME_IMPERFECT_SOUND ) // many modifications |
| 4115 | 4125 | GAMEL(19??, invasion, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg (Sidam)", "Invasion (Sidam)", GAME_SUPPORTS_SAVE, layout_invaders ) |
| 4116 | 4126 | GAMEL(19??, invasiona, invaders, invaders, invasion, driver_device, 0, ROT270, "bootleg", "Invasion (bootleg set 1, normal graphics)", GAME_SUPPORTS_SAVE, layout_invaders ) // has Sidam replaced with 'Ufo Monster Attack' and standard GFX |