trunk/src/mame/drivers/8080bw.c
| r18468 | r18469 | |
| 1 | | /****************************************************************************/ |
| 2 | | /* */ |
| 3 | | /* 8080bw.c */ |
| 4 | | /* */ |
| 5 | | /* Michael Strutts, Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni */ |
| 6 | | /* Lee Taylor, Valerio Verrando, Marco Cassili, Zsolt Vasvari and others */ |
| 7 | | /* */ |
| 8 | | /* */ |
| 9 | | /* Notes: */ |
| 10 | | /* ----- */ |
| 11 | | /* */ |
| 12 | | /* - Space Invaders Deluxe still says Space Invaders Part II, */ |
| 13 | | /* because according to KLOV, Midway was only allowed to make minor */ |
| 14 | | /* modifications of the Taito code. */ |
| 15 | | /* */ |
| 16 | | /* - DIP Locations verified from manual for: */ |
| 17 | | /* -sitv */ |
| 18 | | /* -sicv */ |
| 19 | | /* -invadpt2 */ |
| 20 | | /* -lrescue */ |
| 21 | | /* -invasion */ |
| 22 | | /* */ |
| 23 | | /* - The Taito Space invaders hardware comes on at least five board types; |
| 1 | /***************************************************************************** |
| 2 | |
| 3 | 8080bw.c |
| 4 | |
| 5 | Michael Strutts, Nicola Salmoria, Tormod Tjaberg, Mirko Buffoni |
| 6 | Lee Taylor, Valerio Verrando, Marco Cassili, Zsolt Vasvari and others |
| 7 | |
| 8 | |
| 9 | Notes: |
| 10 | ----- |
| 11 | |
| 12 | - Space Invaders Deluxe still says Space Invaders Part II, |
| 13 | because according to KLOV, Midway was only allowed to make minor |
| 14 | modifications of the Taito code. |
| 15 | |
| 16 | - DIP settings/locations verified from manual for: |
| 17 | sitv, sicv, invadpt2, lrescue, invasion, invrvnge |
| 18 | |
| 19 | - The Taito Space invaders hardware comes on at least five board types; |
| 24 | 20 | The Taito manufactured ones are: |
| 25 | 21 | * The "L-shaped" PCB set, Upright, B&W only |
| 26 | 22 | * Three pcbs in a stack, often called the '3 layer pcb set' (most common) |
| r18468 | r18469 | |
| 104 | 100 | UV1, UV2, UV3, UV4, UV5, UV6, UV7, UV8, UV9, UV10 w/proms - undumped (probably same as pvxx set just split differently) |
| 105 | 101 | PV01, PV02, PV03, PV04, PV05 w/proms - invadpt2 |
| 106 | 102 | |
| 107 | | - Midway PCB sets: (cursory descripton) |
| 108 | | NOTE: The discrete components, particularly for the shot sound, differ between Taito and Midway audio daughterboards. |
| 109 | | TODO: figure out the difference between the Taito and Midway discrete boards and emulate them both properly. Figure out what the current discrete setup is trying to emulate. |
| 110 | | * All Midway Space Invaders games ([Space Invader Upright], [Space Invader Cocktail], [Deluxe Space Invaders Upright], [Deluxe Space Invaders Cocktail], and [Space Invaders II]) use the same 8080 mainboard, with no emulation-relevant differences between revisions. |
| 111 | | * [Space Invaders II] from Midway (only produced as a cocktail) uses an extra sound board for the simultaneous 2 player head-to-head sounds. |
| 112 | | TODO: remove Space Invader 'invaders' set from mw8080bw.c, it does not belong there at all |
| 103 | - Midway PCB sets: (cursory descripton) |
| 104 | * All Midway Space Invaders games ([Space Invader Upright], [Space Invader Cocktail], |
| 105 | [Deluxe Space Invaders Upright], [Deluxe Space Invaders Cocktail], and [Space Invaders II]) |
| 106 | use the same 8080 mainboard, with no emulation-relevant differences between revisions. |
| 107 | * [Space Invaders II] from Midway (only produced as a cocktail) uses |
| 108 | an extra sound board for the simultaneous 2 player head-to-head sounds. |
| 113 | 109 | |
| 114 | | - Taito-USA-made 'trimline' PCBS do not match the taito pcbs either. |
| 115 | | */ |
| 116 | | /* To Do: */ |
| 117 | | /* ----- */ |
| 118 | | /* */ |
| 119 | | /* - Space Chaser (schaser) */ |
| 120 | | /* 1. The "missile" sound is incorrect. This is how it should be: */ |
| 121 | | /* It should be a constant "klunkity-klunk", and should only be */ |
| 122 | | /* heard while missiles are seen to be moving. When the red */ |
| 123 | | /* missiles speed up, there should be more "klunks per second" */ |
| 124 | | /* with the pitch staying constant. */ |
| 125 | | /* 8/8/8 D.R. - Who says? According to the schematic the sounds are */ |
| 126 | | /* correct. Make a video showing otherwise or trace SX0 & SX1 on */ |
| 127 | | /* a real PCB to find the difference. */ |
| 128 | | /* Currently it beeps every time a player eats a dot. Seems right. */ |
| 129 | | /* 2. If "Hard" mode is selected, numerous bugs appear which */ |
| 130 | | /* could be either an emulation fault or a bad rom. Some */ |
| 131 | | /* bugs are: */ |
| 132 | | /* a. Graphic error halfway up the left side */ |
| 133 | | /* b. Score adds or subtracts random amounts */ |
| 134 | | /* c. Score not cleared when starting a new game */ |
| 135 | | /* d. Game begins on the wrong level */ |
| 136 | | /* */ |
| 137 | | /* - Space War (Sanritsu) */ |
| 138 | | /* */ |
| 139 | | /* 1. I seem to recall that the flashing ufo had its own sample */ |
| 140 | | /* sound, a sort of rattling noise. Unable to find evidence */ |
| 141 | | /* of this (so far). */ |
| 142 | | /* */ |
| 143 | | /* */ |
| 144 | | /* Change Log: */ |
| 145 | | /* ---------- */ |
| 146 | | /* */ |
| 147 | | /* 24 Dec 1998 - added sitv [LT] */ |
| 148 | | /* */ |
| 149 | | /* 21 Nov 1999 - added spacewar3 [LT] */ |
| 150 | | /* */ |
| 151 | | /* 26 May 2001 - added galxwars */ |
| 152 | | /* galxwar2 (galxwars2) */ |
| 153 | | /* jspectr2 (jspecter2) */ |
| 154 | | /* ozmawar2 (ozmawars2) */ |
| 155 | | /* spaceatt */ |
| 156 | | /* sstrangr */ |
| 157 | | /* */ |
| 158 | | /* 26 May 2001 - changed galxwars input port so the new sets work */ |
| 159 | | /* */ |
| 160 | | /* 30 Jul 2001 - added sstrngr2 */ |
| 161 | | /* */ |
| 162 | | /* 17 Jul 2006 - schaser - connect up prom - fix dipswitches */ |
| 163 | | /* schasrcv (schasercv) - allow bottom line to show on screen */ |
| 164 | | /* */ |
| 165 | | /* */ |
| 166 | | /* 10 Sep 2006 - invadpt2 - add name reset button */ |
| 167 | | /* spcewars - add bitstream circuit, fix dipswitches */ |
| 168 | | /* */ |
| 169 | | /* */ |
| 170 | | /* 13 Dec 2006 - add PRELIMINARY sound support and documentation to: */ |
| 171 | | /* rollingc, spcenctr, gunfight, m4, gmissile, */ |
| 172 | | /* schasrcv (schasercv), 280zzzap, lagunar, lupin3, phantom2, */ |
| 173 | | /* blueshrk, desertgu, ballbomb, yosakdon/yosakdoa (yosakdona)*/ |
| 174 | | /* shuttlei, invrvnge/invrvnga (invrvngea). */ |
| 175 | | /* Documented indianbt sound. Removed NO_SOUND flag from */ |
| 176 | | /* cosmo and dogpatch as the sound was already working. */ |
| 177 | | /* [Robert] */ |
| 178 | | /* */ |
| 179 | | /* 02 May 2007 - Major clean-up of driver and video system */ |
| 180 | | /* */ |
| 181 | | /****************************************************************************/ |
| 110 | - Taito-USA-made 'trimline' PCBS do not match the taito pcbs either. |
| 182 | 111 | |
| 112 | |
| 113 | To Do: |
| 114 | ----- |
| 115 | |
| 116 | - Midway PCB sets |
| 117 | * The discrete components, particularly for the shot sound, differ |
| 118 | between Taito and Midway audio daughterboards. |
| 119 | + Figure out the difference between the Taito and Midway discrete |
| 120 | boards and emulate them both properly. |
| 121 | + Figure out what the current discrete setup is trying to emulate. |
| 122 | * Remove Space Invaders 'invaders' set from mw8080bw.c, it does not belong |
| 123 | there at all |
| 124 | |
| 125 | - Space Chaser (schaser) |
| 126 | 1. The "missile" sound is incorrect. This is how it should be: |
| 127 | It should be a constant "klunkity-klunk", and should only be |
| 128 | heard while missiles are seen to be moving. When the red |
| 129 | missiles speed up, there should be more "klunks per second" |
| 130 | with the pitch staying constant. |
| 131 | 8/8/8 D.R. - Who says? According to the schematic the sounds are |
| 132 | correct. Make a video showing otherwise or trace SX0 & SX1 on |
| 133 | a real PCB to find the difference. |
| 134 | Currently it beeps every time a player eats a dot. Seems right. |
| 135 | 2. If "Hard" mode is selected, numerous bugs appear which |
| 136 | could be either an emulation fault or a bad rom. Some |
| 137 | bugs are: |
| 138 | a. Graphic error halfway up the left side |
| 139 | b. Score adds or subtracts random amounts |
| 140 | c. Score not cleared when starting a new game |
| 141 | d. Game begins on the wrong level |
| 142 | |
| 143 | - Space War (Sanritsu) |
| 144 | * I seem to recall that the flashing ufo had its own sample |
| 145 | sound, a sort of rattling noise. Unable to find evidence |
| 146 | of this (so far). |
| 147 | |
| 148 | *****************************************************************************/ |
| 149 | |
| 183 | 150 | #include "emu.h" |
| 184 | 151 | #include "cpu/m6800/m6800.h" |
| 185 | 152 | #include "cpu/i8085/i8085.h" |
| r18468 | r18469 | |
| 638 | 605 | |
| 639 | 606 | static INPUT_PORTS_START( invrvnge ) |
| 640 | 607 | PORT_START("IN0") |
| 641 | | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 642 | | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 643 | | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 644 | | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 645 | | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 646 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 647 | | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 648 | | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 608 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 609 | PORT_DIPNAME( 0x06, 0x06, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5,6") |
| 610 | PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) |
| 611 | PORT_DIPSETTING( 0x02, DEF_STR( Hard ) ) |
| 612 | PORT_DIPSETTING( 0x04, DEF_STR( Harder ) ) |
| 613 | PORT_DIPSETTING( 0x06, DEF_STR( Hardest ) ) |
| 614 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // must be low or game won't boot [code: 0x1a9-1af] |
| 615 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 616 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 617 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 618 | PORT_DIPNAME( 0x80, 0x80, "Fuel Destroyed by Comet" ) PORT_DIPLOCATION("SW1:7") |
| 619 | PORT_DIPSETTING( 0x00, "3" ) |
| 620 | PORT_DIPSETTING( 0x80, "6" ) |
| 649 | 621 | |
| 650 | 622 | PORT_START("IN1") |
| 651 | 623 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) |
| r18468 | r18469 | |
| 653 | 625 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START1 ) |
| 654 | 626 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 655 | 627 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) |
| 656 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY |
| 628 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY |
| 657 | 629 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY |
| 658 | 630 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 659 | 631 | |
| r18468 | r18469 | |
| 667 | 639 | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("SW1:4") |
| 668 | 640 | PORT_DIPSETTING( 0x00, "1500" ) |
| 669 | 641 | PORT_DIPSETTING( 0x08, "2000" ) |
| 670 | | |
| 671 | | #if 0 |
| 672 | | PORT_DIPNAME( 0x30, 0x30, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:5,6") |
| 673 | | PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) |
| 674 | | PORT_DIPSETTING( 0x10, DEF_STR( Hard ) ) |
| 675 | | PORT_DIPSETTING( 0x20, DEF_STR( Harder ) ) |
| 676 | | PORT_DIPSETTING( 0x30, DEF_STR( Hardest ) ) |
| 677 | | PORT_DIPNAME( 0x40, 0x40, "Fuel Destroyed by Comet" ) PORT_DIPLOCATION("SW1:7") |
| 678 | | PORT_DIPSETTING( 0x00, "3" ) |
| 679 | | PORT_DIPSETTING( 0x40, "6" ) |
| 680 | | #else |
| 681 | 642 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2) |
| 682 | | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) |
| 643 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_2WAY PORT_PLAYER(2) |
| 683 | 644 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_2WAY PORT_PLAYER(2) |
| 684 | | #endif |
| 685 | | |
| 686 | | |
| 687 | 645 | PORT_DIPNAME( 0x80, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SW1:8") |
| 688 | 646 | PORT_DIPSETTING( 0x80, DEF_STR( 2C_1C ) ) // 1 play 10p, 2 play 20p, 6 play 50p |
| 689 | 647 | PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) // 1 play 20p, 2 play 40p, 3 play 50p |