trunk/src/mame/drivers/gp_2.c
| r31405 | r31406 | |
| 1 | | /* |
| 1 | /***************************************************************************************** |
| 2 | |
| 3 | PINBALL |
| 2 | 4 | Game Plan MPU-2 |
| 3 | | */ |
| 4 | 5 | |
| 6 | When first turned on, you need to press 9 to enter the setup program, then keep |
| 7 | pressing 9 until 06 shows in the credits display. Press the credit button to set |
| 8 | the first high score at which a free credit is awarded. Then press 9 to set the |
| 9 | 2nd high score, then 9 to set the 3rd high score. Keep pressing 9 until you exit |
| 10 | back to normal operation. If this setup is not done, each player will get 3 free |
| 11 | games at the start of ball 1. |
| 5 | 12 | |
| 6 | | #include "emu.h" |
| 13 | All the Z80 "maincpu" code is copied from gp_1.c |
| 14 | Any bug fixes need to be applied both here and there. |
| 15 | |
| 16 | |
| 17 | ToDo: |
| 18 | - The earlier sets have a sound board with 3x SN76477 and lots of discrete circuitry (not emulated) |
| 19 | - The later sets (with sound roms) have a sound board with a MC6808 and 6821PIA (not emulated) |
| 20 | - Each machine has its own set of inputs (not emulated) |
| 21 | |
| 22 | |
| 23 | ******************************************************************************************/ |
| 24 | |
| 25 | |
| 26 | #include "machine/genpin.h" |
| 7 | 27 | #include "cpu/z80/z80.h" |
| 28 | #include "cpu/z80/z80daisy.h" |
| 29 | #include "machine/i8255.h" |
| 30 | #include "machine/z80ctc.h" |
| 31 | #include "machine/nvram.h" |
| 32 | #include "gp_2.lh" |
| 8 | 33 | |
| 9 | | class gp_2_state : public driver_device |
| 34 | class gp_2_state : public genpin_class |
| 10 | 35 | { |
| 11 | 36 | public: |
| 12 | 37 | gp_2_state(const machine_config &mconfig, device_type type, const char *tag) |
| 13 | | : driver_device(mconfig, type, tag), |
| 14 | | m_maincpu(*this, "maincpu") |
| 38 | : genpin_class(mconfig, type, tag) |
| 39 | , m_maincpu(*this, "maincpu") |
| 40 | , m_ctc(*this, "ctc") |
| 41 | , m_io_dsw0(*this, "DSW0") |
| 42 | , m_io_dsw1(*this, "DSW1") |
| 43 | , m_io_dsw2(*this, "DSW2") |
| 44 | , m_io_dsw3(*this, "DSW3") |
| 45 | , m_io_x7(*this, "X7") |
| 46 | , m_io_x8(*this, "X8") |
| 47 | , m_io_x9(*this, "X9") |
| 48 | , m_io_xa(*this, "XA") |
| 49 | , m_io_xb(*this, "XB") |
| 15 | 50 | { } |
| 16 | 51 | |
| 17 | | protected: |
| 18 | | |
| 19 | | // devices |
| 52 | DECLARE_DRIVER_INIT(gp_2); |
| 53 | DECLARE_WRITE8_MEMBER(porta_w); |
| 54 | DECLARE_WRITE8_MEMBER(portc_w); |
| 55 | DECLARE_READ8_MEMBER(portb_r); |
| 56 | TIMER_DEVICE_CALLBACK_MEMBER(zero_timer); |
| 57 | private: |
| 58 | UINT8 m_u14; |
| 59 | UINT8 m_digit; |
| 60 | UINT8 m_segment[16]; |
| 61 | virtual void machine_reset(); |
| 20 | 62 | required_device<cpu_device> m_maincpu; |
| 21 | | |
| 22 | | // driver_device overrides |
| 23 | | virtual void machine_reset(); |
| 24 | | public: |
| 25 | | DECLARE_DRIVER_INIT(gp_2); |
| 63 | required_device<z80ctc_device> m_ctc; |
| 64 | required_ioport m_io_dsw0; |
| 65 | required_ioport m_io_dsw1; |
| 66 | required_ioport m_io_dsw2; |
| 67 | required_ioport m_io_dsw3; |
| 68 | required_ioport m_io_x7; |
| 69 | required_ioport m_io_x8; |
| 70 | required_ioport m_io_x9; |
| 71 | required_ioport m_io_xa; |
| 72 | required_ioport m_io_xb; |
| 26 | 73 | }; |
| 27 | 74 | |
| 28 | 75 | |
| 29 | 76 | static ADDRESS_MAP_START( gp_2_map, AS_PROGRAM, 8, gp_2_state ) |
| 30 | | AM_RANGE(0x0000, 0xffff) AM_NOP |
| 77 | AM_RANGE(0x0000, 0x3fff) AM_ROM AM_REGION("roms", 0) |
| 78 | AM_RANGE(0x8c00, 0x8dff) AM_RAM AM_SHARE("nvram") |
| 31 | 79 | ADDRESS_MAP_END |
| 32 | 80 | |
| 81 | static ADDRESS_MAP_START( gp_2_io, AS_IO, 8, gp_2_state ) |
| 82 | ADDRESS_MAP_GLOBAL_MASK(0x0f) |
| 83 | AM_RANGE(0x04, 0x07) AM_DEVREADWRITE("ppi", i8255_device, read, write) |
| 84 | AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ctc", z80ctc_device, read, write) |
| 85 | ADDRESS_MAP_END |
| 86 | |
| 87 | static INPUT_PORTS_START( gp_1 ) |
| 88 | PORT_START("DSW0") |
| 89 | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1") |
| 90 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 91 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 92 | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 93 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 94 | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 95 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 96 | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 97 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 98 | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 99 | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 100 | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 101 | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 102 | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 103 | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 104 | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 105 | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 106 | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 107 | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 108 | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 109 | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 110 | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 111 | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 112 | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 113 | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 114 | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 115 | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 116 | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 117 | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 118 | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 119 | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 120 | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 121 | PORT_DIPNAME( 0x20, 0x00, "S06") |
| 122 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 123 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 124 | PORT_DIPNAME( 0x40, 0x00, "S07") |
| 125 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 126 | PORT_DIPSETTING( 0x40, DEF_STR( On )) |
| 127 | PORT_DIPNAME( 0x80, 0x00, "Free Play") |
| 128 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 129 | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 130 | |
| 131 | PORT_START("DSW1") |
| 132 | PORT_DIPNAME( 0x0f, 0x00, "Coin Slot 2") // S09-12 determine coinage for slot 2 |
| 133 | PORT_DIPSETTING( 0x00, "Same as Slot 1") |
| 134 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C )) |
| 135 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C )) |
| 136 | PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C )) |
| 137 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C )) |
| 138 | PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C )) |
| 139 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C )) |
| 140 | PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C )) |
| 141 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_8C )) |
| 142 | PORT_DIPSETTING( 0x09, DEF_STR( 1C_9C )) |
| 143 | PORT_DIPSETTING( 0x0a, "1 coin 10 credits") |
| 144 | PORT_DIPSETTING( 0x0b, "1 coin 11 credits") |
| 145 | PORT_DIPSETTING( 0x0c, "1 coin 12 credits") |
| 146 | PORT_DIPSETTING( 0x0d, "1 coin 13 credits") |
| 147 | PORT_DIPSETTING( 0x0e, "1 coin 14 credits") |
| 148 | PORT_DIPSETTING( 0x0f, "1 coin 15 credits") |
| 149 | PORT_DIPNAME( 0x10, 0x00, "S13") |
| 150 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 151 | PORT_DIPSETTING( 0x10, DEF_STR( On )) |
| 152 | PORT_DIPNAME( 0x20, 0x00, "S14") |
| 153 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 154 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 155 | PORT_DIPNAME( 0x40, 0x00, "S15") |
| 156 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 157 | PORT_DIPSETTING( 0x40, DEF_STR( On )) |
| 158 | PORT_DIPNAME( 0x80, 0x00, "Play Tunes") |
| 159 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 160 | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 161 | |
| 162 | PORT_START("DSW2") |
| 163 | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3") |
| 164 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 165 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 166 | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 167 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 168 | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 169 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 170 | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 171 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 172 | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 173 | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 174 | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 175 | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 176 | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 177 | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 178 | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 179 | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 180 | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 181 | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 182 | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 183 | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 184 | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 185 | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 186 | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 187 | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 188 | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 189 | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 190 | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 191 | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 192 | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 193 | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 194 | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 195 | PORT_DIPNAME( 0x20, 0x00, "S22") |
| 196 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 197 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 198 | PORT_DIPNAME( 0x40, 0x00, "S23") |
| 199 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 200 | PORT_DIPSETTING( 0x40, DEF_STR( On )) |
| 201 | PORT_DIPNAME( 0x80, 0x00, "S24") |
| 202 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 203 | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 204 | |
| 205 | PORT_START("DSW3") |
| 206 | PORT_DIPNAME( 0x07, 0x07, "Max number of credits") |
| 207 | PORT_DIPSETTING( 0x00, "5" ) |
| 208 | PORT_DIPSETTING( 0x01, "10") |
| 209 | PORT_DIPSETTING( 0x02, "15") |
| 210 | PORT_DIPSETTING( 0x03, "20") |
| 211 | PORT_DIPSETTING( 0x04, "25") |
| 212 | PORT_DIPSETTING( 0x05, "30") |
| 213 | PORT_DIPSETTING( 0x06, "35") |
| 214 | PORT_DIPSETTING( 0x07, "40") |
| 215 | PORT_DIPNAME( 0x08, 0x08, "Balls") |
| 216 | PORT_DIPSETTING( 0x00, "3") |
| 217 | PORT_DIPSETTING( 0x08, "5") |
| 218 | PORT_DIPNAME( 0x10, 0x10, "Award") |
| 219 | PORT_DIPSETTING( 0x00, "Extra Ball") |
| 220 | PORT_DIPSETTING( 0x10, "Replay") |
| 221 | PORT_DIPNAME( 0x20, 0x20, "Match") |
| 222 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 223 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 224 | PORT_DIPNAME( 0xC0, 0x80, "Credits for exceeding high score") |
| 225 | PORT_DIPSETTING( 0x00, "0") |
| 226 | PORT_DIPSETTING( 0x40, "1") |
| 227 | PORT_DIPSETTING( 0x80, "2") |
| 228 | PORT_DIPSETTING( 0xC0, "3") |
| 229 | |
| 230 | PORT_START("X7") |
| 231 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("Accounting Reset") // This pushbutton on the MPU board is called "S33" |
| 232 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) |
| 233 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt") |
| 234 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 235 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) |
| 236 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 ) |
| 237 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| 238 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT ) |
| 239 | |
| 240 | PORT_START("X8") |
| 241 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L and R Target") PORT_CODE(KEYCODE_A) |
| 242 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner C") PORT_CODE(KEYCODE_S) |
| 243 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X) |
| 244 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner B") PORT_CODE(KEYCODE_D) |
| 245 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Slingshot") PORT_CODE(KEYCODE_F) |
| 246 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Special when lit") PORT_CODE(KEYCODE_G) |
| 247 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Slingshot") PORT_CODE(KEYCODE_H) |
| 248 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Extra when lit") PORT_CODE(KEYCODE_J) |
| 249 | |
| 250 | PORT_START("X9") |
| 251 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Spinner") PORT_CODE(KEYCODE_K) |
| 252 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("1000 and advance") PORT_CODE(KEYCODE_L) |
| 253 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 254 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Advance and Change") PORT_CODE(KEYCODE_Z) |
| 255 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Bumper") PORT_CODE(KEYCODE_C) |
| 256 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Bumper") PORT_CODE(KEYCODE_V) |
| 257 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Spinner") PORT_CODE(KEYCODE_B) |
| 258 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner A") PORT_CODE(KEYCODE_N) |
| 259 | |
| 260 | PORT_START("XA") |
| 261 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("1000 Rollover") PORT_CODE(KEYCODE_M) |
| 262 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) |
| 263 | PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 264 | |
| 265 | PORT_START("XB") |
| 266 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 267 | INPUT_PORTS_END |
| 268 | |
| 33 | 269 | static INPUT_PORTS_START( gp_2 ) |
| 270 | PORT_START("DSW0") |
| 271 | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 1") |
| 272 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 273 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 274 | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 275 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 276 | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 277 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 278 | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 279 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 280 | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 281 | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 282 | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 283 | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 284 | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 285 | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 286 | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 287 | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 288 | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 289 | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 290 | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 291 | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 292 | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 293 | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 294 | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 295 | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 296 | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 297 | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 298 | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 299 | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 300 | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 301 | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 302 | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 303 | PORT_DIPNAME( 0x60, 0x00, "Special lights at") |
| 304 | PORT_DIPSETTING( 0x60, "60000") |
| 305 | PORT_DIPSETTING( 0x40, "90000") |
| 306 | PORT_DIPSETTING( 0x20, "120000") |
| 307 | PORT_DIPSETTING( 0x00, "150000") |
| 308 | PORT_DIPNAME( 0x80, 0x00, "Free Play") |
| 309 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 310 | PORT_DIPSETTING( 0x80, DEF_STR( On )) |
| 311 | |
| 312 | PORT_START("DSW1") |
| 313 | PORT_DIPNAME( 0x0f, 0x00, "Coin Slot 2") // S09-12 determine coinage for slot 2 |
| 314 | PORT_DIPSETTING( 0x00, "Same as Slot 1") |
| 315 | PORT_DIPSETTING( 0x01, DEF_STR( 1C_1C )) |
| 316 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C )) |
| 317 | PORT_DIPSETTING( 0x03, DEF_STR( 1C_3C )) |
| 318 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C )) |
| 319 | PORT_DIPSETTING( 0x05, DEF_STR( 1C_5C )) |
| 320 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_6C )) |
| 321 | PORT_DIPSETTING( 0x07, DEF_STR( 1C_7C )) |
| 322 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_8C )) |
| 323 | PORT_DIPSETTING( 0x09, DEF_STR( 1C_9C )) |
| 324 | PORT_DIPSETTING( 0x0a, "1 coin 10 credits") |
| 325 | PORT_DIPSETTING( 0x0b, "1 coin 11 credits") |
| 326 | PORT_DIPSETTING( 0x0c, "1 coin 12 credits") |
| 327 | PORT_DIPSETTING( 0x0d, "1 coin 13 credits") |
| 328 | PORT_DIPSETTING( 0x0e, "1 coin 14 credits") |
| 329 | PORT_DIPSETTING( 0x0f, "1 coin 15 credits") |
| 330 | PORT_DIPNAME( 0x10, 0x10, "Music") |
| 331 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 332 | PORT_DIPSETTING( 0x10, DEF_STR( On )) |
| 333 | PORT_DIPNAME( 0x20, 0x20, "Extra Ball") |
| 334 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 335 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 336 | PORT_DIPNAME( 0x40, 0x40, "Remember Saucer Values") |
| 337 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 338 | PORT_DIPSETTING( 0x40, DEF_STR( On )) |
| 339 | PORT_DIPNAME( 0x80, 0x80, "Extra Ball lights at") |
| 340 | PORT_DIPSETTING( 0x80, "100000") |
| 341 | PORT_DIPSETTING( 0x00, "150000") |
| 342 | |
| 343 | PORT_START("DSW2") |
| 344 | PORT_DIPNAME( 0x1f, 0x02, "Coin Slot 3") |
| 345 | PORT_DIPSETTING( 0x00, DEF_STR( 2C_3C )) // same as 01 |
| 346 | PORT_DIPSETTING( 0x02, DEF_STR( 1C_1C )) |
| 347 | PORT_DIPSETTING( 0x03, DEF_STR( 2C_1C )) |
| 348 | PORT_DIPSETTING( 0x04, DEF_STR( 1C_2C )) |
| 349 | PORT_DIPSETTING( 0x05, DEF_STR( 2C_2C )) |
| 350 | PORT_DIPSETTING( 0x06, DEF_STR( 1C_3C )) |
| 351 | PORT_DIPSETTING( 0x07, DEF_STR( 2C_3C )) |
| 352 | PORT_DIPSETTING( 0x08, DEF_STR( 1C_4C )) |
| 353 | PORT_DIPSETTING( 0x09, DEF_STR( 2C_4C )) |
| 354 | PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C )) |
| 355 | PORT_DIPSETTING( 0x0b, DEF_STR( 2C_5C )) |
| 356 | PORT_DIPSETTING( 0x0c, DEF_STR( 1C_6C )) |
| 357 | PORT_DIPSETTING( 0x0d, DEF_STR( 2C_6C )) |
| 358 | PORT_DIPSETTING( 0x0e, DEF_STR( 1C_7C )) |
| 359 | PORT_DIPSETTING( 0x0f, DEF_STR( 2C_7C )) |
| 360 | PORT_DIPSETTING( 0x10, DEF_STR( 1C_8C )) |
| 361 | PORT_DIPSETTING( 0x11, DEF_STR( 2C_8C )) |
| 362 | PORT_DIPSETTING( 0x12, DEF_STR( 1C_9C )) |
| 363 | PORT_DIPSETTING( 0x13, "2 coins 9 credits") |
| 364 | PORT_DIPSETTING( 0x14, "1 coin 10 credits") |
| 365 | PORT_DIPSETTING( 0x15, "2 coins 10 credits") |
| 366 | PORT_DIPSETTING( 0x16, "1 coin 11 credits") |
| 367 | PORT_DIPSETTING( 0x17, "2 coins 11 credits") |
| 368 | PORT_DIPSETTING( 0x18, "1 coin 12 credits") |
| 369 | PORT_DIPSETTING( 0x19, "2 coins 12 credits") |
| 370 | PORT_DIPSETTING( 0x1a, "1 coin 13 credits") |
| 371 | PORT_DIPSETTING( 0x1b, "2 coins 13 credits") |
| 372 | PORT_DIPSETTING( 0x1c, "1 coin 14 credits") |
| 373 | PORT_DIPSETTING( 0x1d, "2 coins 14 credits") |
| 374 | PORT_DIPSETTING( 0x1e, "1 coin 15 credits") |
| 375 | PORT_DIPSETTING( 0x1f, "2 coins 15 credits") |
| 376 | PORT_DIPNAME( 0x20, 0x00, "Remember Bonus Multiplier") |
| 377 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 378 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 379 | PORT_DIPNAME( 0xc0, 0x80, "Balls") |
| 380 | PORT_DIPSETTING( 0x00, "1") |
| 381 | PORT_DIPSETTING( 0x40, "2") |
| 382 | PORT_DIPSETTING( 0x80, "3") |
| 383 | PORT_DIPSETTING( 0xc0, "5") |
| 384 | |
| 385 | PORT_START("DSW3") |
| 386 | PORT_DIPNAME( 0x01, 0x00, "Remember Special and Extra Ball lanes") |
| 387 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 388 | PORT_DIPSETTING( 0x01, DEF_STR( On )) |
| 389 | PORT_DIPNAME( 0x06, 0x04, "Max number of credits") |
| 390 | PORT_DIPSETTING( 0x00, "10") |
| 391 | PORT_DIPSETTING( 0x02, "20") |
| 392 | PORT_DIPSETTING( 0x04, "30") |
| 393 | PORT_DIPSETTING( 0x06, "40") |
| 394 | PORT_DIPNAME( 0x18, 0x18, "Award") |
| 395 | PORT_DIPSETTING( 0x00, DEF_STR( None )) |
| 396 | PORT_DIPSETTING( 0x08, "50000 points") |
| 397 | PORT_DIPSETTING( 0x10, "Extra Ball") |
| 398 | PORT_DIPSETTING( 0x18, "Replay") |
| 399 | PORT_DIPNAME( 0x20, 0x20, "Match") |
| 400 | PORT_DIPSETTING( 0x00, DEF_STR( Off )) |
| 401 | PORT_DIPSETTING( 0x20, DEF_STR( On )) |
| 402 | PORT_DIPNAME( 0xC0, 0x80, "Credits for exceeding high score") |
| 403 | PORT_DIPSETTING( 0x00, "0") |
| 404 | PORT_DIPSETTING( 0x40, "1") |
| 405 | PORT_DIPSETTING( 0x80, "2") |
| 406 | PORT_DIPSETTING( 0xC0, "3") |
| 407 | |
| 408 | // From here is unique per machine, not yet emulated |
| 409 | PORT_START("X7") |
| 410 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_SERVICE2 ) PORT_NAME("Accounting Reset") // This pushbutton on the MPU board is called "S33" |
| 411 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_START1 ) |
| 412 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_TILT1 ) PORT_NAME("Slam Tilt") |
| 413 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 414 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) |
| 415 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN3 ) |
| 416 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| 417 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_TILT ) |
| 418 | |
| 419 | PORT_START("X8") |
| 420 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L and R Target") PORT_CODE(KEYCODE_A) |
| 421 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner C") PORT_CODE(KEYCODE_S) |
| 422 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Outhole") PORT_CODE(KEYCODE_X) |
| 423 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner B") PORT_CODE(KEYCODE_D) |
| 424 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Slingshot") PORT_CODE(KEYCODE_F) |
| 425 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Special when lit") PORT_CODE(KEYCODE_G) |
| 426 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Slingshot") PORT_CODE(KEYCODE_H) |
| 427 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Extra when lit") PORT_CODE(KEYCODE_J) |
| 428 | |
| 429 | PORT_START("X9") |
| 430 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Spinner") PORT_CODE(KEYCODE_K) |
| 431 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("1000 and advance") PORT_CODE(KEYCODE_L) |
| 432 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 433 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Advance and Change") PORT_CODE(KEYCODE_Z) |
| 434 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Bumper") PORT_CODE(KEYCODE_C) |
| 435 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("R. Bumper") PORT_CODE(KEYCODE_V) |
| 436 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("L. Spinner") PORT_CODE(KEYCODE_B) |
| 437 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Spinner A") PORT_CODE(KEYCODE_N) |
| 438 | |
| 439 | PORT_START("XA") |
| 440 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("1000 Rollover") PORT_CODE(KEYCODE_M) |
| 441 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_SERVICE1 ) |
| 442 | PORT_BIT( 0xfc, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 443 | |
| 444 | PORT_START("XB") |
| 445 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNUSED ) |
| 34 | 446 | INPUT_PORTS_END |
| 35 | 447 | |
| 448 | READ8_MEMBER( gp_2_state::portb_r ) |
| 449 | { |
| 450 | switch (m_u14) |
| 451 | { |
| 452 | case 7: |
| 453 | return m_io_x7->read(); |
| 454 | case 8: |
| 455 | return m_io_x8->read(); |
| 456 | case 9: |
| 457 | return m_io_x9->read(); |
| 458 | case 10: |
| 459 | return m_io_xa->read(); |
| 460 | case 11: |
| 461 | return m_io_xb->read(); |
| 462 | case 12: |
| 463 | return m_io_dsw0->read(); |
| 464 | case 13: |
| 465 | return m_io_dsw1->read(); |
| 466 | case 14: |
| 467 | return m_io_dsw2->read(); |
| 468 | case 15: |
| 469 | return m_io_dsw3->read(); |
| 470 | } |
| 471 | return 0; |
| 472 | } |
| 473 | |
| 474 | WRITE8_MEMBER( gp_2_state::porta_w ) |
| 475 | { |
| 476 | m_u14 = data >> 4; |
| 477 | if ((data > 0x0f) && (data < 0x30)) |
| 478 | { |
| 479 | switch (data) |
| 480 | { |
| 481 | case 0x10: // chime c |
| 482 | m_samples->start(0, 3); |
| 483 | break; |
| 484 | case 0x11: // chime b |
| 485 | m_samples->start(0, 2); |
| 486 | break; |
| 487 | case 0x12: // knocker |
| 488 | m_samples->start(0, 6); |
| 489 | break; |
| 490 | case 0x13: // not used |
| 491 | case 0x14: // not used |
| 492 | break; |
| 493 | case 0x15: // chime a |
| 494 | m_samples->start(0, 1); |
| 495 | break; |
| 496 | case 0x16: // chime d |
| 497 | m_samples->start(0, 4); |
| 498 | break; |
| 499 | case 0x17: // outhole |
| 500 | case 0x18: // r sling |
| 501 | case 0x19: // l sling |
| 502 | m_samples->start(0, 5); |
| 503 | break; |
| 504 | case 0x1a: // c kickout |
| 505 | m_samples->start(0, 5); |
| 506 | break; |
| 507 | case 0x1b: // r bumper |
| 508 | m_samples->start(0, 0); |
| 509 | break; |
| 510 | case 0x1c: // a kickout |
| 511 | m_samples->start(0, 5); |
| 512 | break; |
| 513 | case 0x1d: // l bumper |
| 514 | m_samples->start(0, 0); |
| 515 | break; |
| 516 | case 0x1e: // a kickout |
| 517 | m_samples->start(0, 5); |
| 518 | break; |
| 519 | case 0x1f: // not used |
| 520 | break; |
| 521 | } |
| 522 | } |
| 523 | |
| 524 | static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67,0x58,0x4c,0x62,0x69,0x78,0 }; // 7448 |
| 525 | if (m_digit == 7) |
| 526 | m_segment[m_u14] = data & 15; |
| 527 | else |
| 528 | if (m_u14 == 7) |
| 529 | { |
| 530 | output_set_digit_value(m_digit, patterns[m_segment[7]]); |
| 531 | output_set_digit_value(m_digit+8, patterns[m_segment[8]]); |
| 532 | output_set_digit_value(m_digit+16, patterns[m_segment[9]]); |
| 533 | output_set_digit_value(m_digit+24, patterns[m_segment[10]]); |
| 534 | output_set_digit_value(m_digit+32, patterns[m_segment[11]]); |
| 535 | } |
| 536 | } |
| 537 | |
| 538 | WRITE8_MEMBER( gp_2_state::portc_w ) |
| 539 | { |
| 540 | output_set_value("led0", BIT(data, 3)); |
| 541 | m_digit = data & 7; |
| 542 | } |
| 543 | |
| 36 | 544 | void gp_2_state::machine_reset() |
| 37 | 545 | { |
| 546 | m_u14 = 0; |
| 547 | m_digit = 0xff; |
| 38 | 548 | } |
| 39 | 549 | |
| 40 | | DRIVER_INIT_MEMBER(gp_2_state,gp_2) |
| 550 | // zero-cross detection |
| 551 | TIMER_DEVICE_CALLBACK_MEMBER( gp_2_state::zero_timer ) |
| 41 | 552 | { |
| 553 | m_ctc->trg2(0); |
| 554 | m_ctc->trg2(1); |
| 42 | 555 | } |
| 43 | 556 | |
| 557 | static const z80_daisy_config daisy_chain[] = |
| 558 | { |
| 559 | { "ctc" }, |
| 560 | { NULL } |
| 561 | }; |
| 562 | |
| 44 | 563 | static MACHINE_CONFIG_START( gp_2, gp_2_state ) |
| 45 | 564 | /* basic machine hardware */ |
| 46 | 565 | MCFG_CPU_ADD("maincpu", Z80, 2457600) |
| 47 | 566 | MCFG_CPU_PROGRAM_MAP(gp_2_map) |
| 567 | MCFG_CPU_IO_MAP(gp_2_io) |
| 568 | MCFG_CPU_CONFIG(daisy_chain) |
| 569 | |
| 570 | MCFG_NVRAM_ADD_0FILL("nvram") |
| 571 | |
| 572 | /* Video */ |
| 573 | MCFG_DEFAULT_LAYOUT(layout_gp_2) |
| 574 | |
| 575 | /* Sound */ |
| 576 | MCFG_FRAGMENT_ADD( genpin_audio ) |
| 577 | |
| 578 | /* Devices */ |
| 579 | MCFG_DEVICE_ADD("ppi", I8255A, 0 ) |
| 580 | MCFG_I8255_OUT_PORTA_CB(WRITE8(gp_2_state, porta_w)) |
| 581 | MCFG_I8255_IN_PORTB_CB(READ8(gp_2_state, portb_r)) |
| 582 | MCFG_I8255_OUT_PORTC_CB(WRITE8(gp_2_state, portc_w)) |
| 583 | |
| 584 | MCFG_DEVICE_ADD("ctc", Z80CTC, 2457600 ) |
| 585 | MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // Todo: absence of ints will cause a watchdog reset |
| 586 | MCFG_TIMER_DRIVER_ADD_PERIODIC("gp1", gp_2_state, zero_timer, attotime::from_hz(120)) // mains freq*2 |
| 48 | 587 | MACHINE_CONFIG_END |
| 49 | 588 | |
| 50 | 589 | /*------------------------------------------------------------------- |
| 51 | 590 | / Agents 777 (November 1984) - Model #770 |
| 52 | 591 | /-------------------------------------------------------------------*/ |
| 53 | 592 | ROM_START(agent777) |
| 54 | | ROM_REGION(0x10000, "maincpu", 0) |
| 593 | ROM_REGION(0x4000, "roms", 0) |
| 55 | 594 | ROM_LOAD( "770a", 0x0000, 0x0800, CRC(fc4eebcd) SHA1(742a201e89c1357d2a1f24b0acf3b78ffec96c74)) |
| 56 | 595 | ROM_LOAD( "770b", 0x0800, 0x0800, CRC(ea62aece) SHA1(32be10bc76a59e03c3fd3294daefc8d28c20386a)) |
| 57 | 596 | ROM_LOAD( "770c", 0x1000, 0x0800, CRC(59280db7) SHA1(8f199be7bfbc01466541c07dc4c365e20055a66c)) |
| 597 | |
| 58 | 598 | ROM_REGION(0x10000, "cpu2", 0) |
| 59 | 599 | ROM_LOAD ("770snd", 0x3800, 0x0800, CRC(e4e66c9f) SHA1(f373facefb18c64377da47308a8bbd5fc80e9c2d)) |
| 60 | 600 | ROM_CONTINUE(0x7800, 0x0800) |
| r31405 | r31406 | |
| 65 | 605 | / Andromeda (August 1985) - Model #850 |
| 66 | 606 | /-------------------------------------------------------------------*/ |
| 67 | 607 | ROM_START(andromep) |
| 68 | | ROM_REGION(0x10000, "maincpu", 0) |
| 608 | ROM_REGION(0x4000, "roms", 0) |
| 69 | 609 | ROM_LOAD( "850.a", 0x0000, 0x1000, CRC(67ed03ee) SHA1(efe7c495766ffb73545a77ab24f02925ac0395f1)) |
| 70 | 610 | ROM_LOAD( "850.b", 0x1000, 0x1000, CRC(37c244e8) SHA1(5cef0a1a6f2c34f2d01bdd12ce11da40c8be4296)) |
| 611 | |
| 71 | 612 | ROM_REGION(0x10000, "cpu2", 0) |
| 72 | 613 | ROM_LOAD("850.snd", 0x3800, 0x0800, CRC(18e084a6) SHA1(56efbabe60305f168ca479295577bff7f3a4dace)) |
| 73 | 614 | ROM_RELOAD(0x7800, 0x0800) |
| r31405 | r31406 | |
| 75 | 616 | ROM_END |
| 76 | 617 | |
| 77 | 618 | ROM_START(andromepa) |
| 78 | | ROM_REGION(0x10000, "maincpu", 0) |
| 619 | ROM_REGION(0x4000, "roms", 0) |
| 79 | 620 | ROM_LOAD( "850.a", 0x0000, 0x1000, CRC(67ed03ee) SHA1(efe7c495766ffb73545a77ab24f02925ac0395f1)) |
| 80 | 621 | ROM_LOAD( "850b.rom", 0x1000, 0x1000, CRC(fc1829a5) SHA1(9761543d17c0a5c08b0fec45c35648ce769a3463)) |
| 622 | |
| 81 | 623 | ROM_REGION(0x10000, "cpu2", 0) |
| 82 | 624 | ROM_LOAD("850.snd", 0x3800, 0x0800, CRC(18e084a6) SHA1(56efbabe60305f168ca479295577bff7f3a4dace)) |
| 83 | 625 | ROM_RELOAD(0x7800, 0x0800) |
| r31405 | r31406 | |
| 88 | 630 | / Attila the Hun (April 1984) - Model #260 |
| 89 | 631 | /-------------------------------------------------------------------*/ |
| 90 | 632 | ROM_START(attila) |
| 91 | | ROM_REGION(0x10000, "maincpu", 0) |
| 633 | ROM_REGION(0x4000, "roms", 0) |
| 92 | 634 | ROM_LOAD( "260.a", 0x0000, 0x0800, CRC(b31c11d8) SHA1(d3f2ad84cc28e99acb54349b232dbf8abdf15b21)) |
| 93 | 635 | ROM_LOAD( "260.b", 0x0800, 0x0800, CRC(e8cca86d) SHA1(ed0797175a573537be2d5119ad68b1847e49e578)) |
| 94 | 636 | ROM_LOAD( "260.c", 0x1000, 0x0800, CRC(206605c3) SHA1(14f61a2f43c29370bcb6db29969e8dfcfe3da1ab)) |
| 637 | |
| 95 | 638 | ROM_REGION(0x10000, "cpu2", 0) |
| 96 | 639 | ROM_LOAD ("260.snd", 0x3800, 0x0800, CRC(21e6b188) SHA1(84148942e6007d49bb4085ec3678954d48e4439e)) |
| 97 | 640 | ROM_CONTINUE(0x7800, 0x0800) |
| r31405 | r31406 | |
| 102 | 645 | / Captain Hook (April 1985) - Model #780 |
| 103 | 646 | /-------------------------------------------------------------------*/ |
| 104 | 647 | ROM_START(cpthook) |
| 105 | | ROM_REGION(0x10000, "maincpu", 0) |
| 648 | ROM_REGION(0x4000, "roms", 0) |
| 106 | 649 | ROM_LOAD( "780.a", 0x0000, 0x0800, CRC(6bd5a495) SHA1(8462e0c68176daee6b23dce9091f5aee99e62631)) |
| 107 | 650 | ROM_LOAD( "780.b", 0x0800, 0x0800, CRC(3d1c5555) SHA1(ecb0d40f5e6e37acfc8589816e24b26525273393)) |
| 108 | 651 | ROM_LOAD( "780.c", 0x1000, 0x0800, CRC(e54bc51f) SHA1(3480e0cdd43f9ac3fda8cd466b2f039210525e8b)) |
| 652 | |
| 109 | 653 | ROM_REGION(0x10000, "cpu2", 0) |
| 110 | 654 | ROM_LOAD ("780.snd", 0x3800, 0x0800, CRC(95af3392) SHA1(73a2b583b7fc423c2e4390667aebc90ad41f4f93)) |
| 111 | 655 | ROM_CONTINUE(0x7800, 0x0800) |
| r31405 | r31406 | |
| 116 | 660 | / Cyclopes (November 1985) - Model #800 |
| 117 | 661 | /-------------------------------------------------------------------*/ |
| 118 | 662 | ROM_START(cyclopes) |
| 119 | | ROM_REGION(0x10000, "maincpu", 0) |
| 663 | ROM_REGION(0x4000, "roms", 0) |
| 120 | 664 | ROM_LOAD( "800.a", 0x0000, 0x1000, CRC(3e9628e5) SHA1(4dad9e082a9f4140162bc155f2b0f0a948ba012f)) |
| 121 | 665 | ROM_LOAD( "800.b", 0x1000, 0x1000, CRC(3f945c46) SHA1(25eb543e0b0edcd0a0dcf8e4aa1405cda55ebe2e)) |
| 122 | 666 | ROM_LOAD( "800.c", 0x2000, 0x1000, CRC(7ea18e65) SHA1(e86d82e3ba659499dfbf14920b196252784724f7)) |
| 667 | |
| 123 | 668 | ROM_REGION(0x10000, "cpu2", 0) |
| 124 | 669 | ROM_LOAD ("800.snd", 0x3800, 0x0800, CRC(290db3d2) SHA1(a236594f7a89969981bd5707d6dfbb5120fb8f46)) |
| 125 | 670 | ROM_CONTINUE(0x7800, 0x0800) |
| r31405 | r31406 | |
| 130 | 675 | / Global Warfare (June 1981) - Model #240 |
| 131 | 676 | /-------------------------------------------------------------------*/ |
| 132 | 677 | ROM_START(gwarfare) |
| 133 | | ROM_REGION(0x10000, "maincpu", 0) |
| 678 | ROM_REGION(0x4000, "roms", 0) |
| 134 | 679 | ROM_LOAD( "240a.716", 0x0000, 0x0800, CRC(30206428) SHA1(7a9029e4fd4c4c00da3256ed06464c0bd8022168)) |
| 135 | 680 | ROM_LOAD( "240b.716", 0x0800, 0x0800, CRC(a54eb15d) SHA1(b9235bd188c1251eb213789800b7686b5e3c557f)) |
| 136 | 681 | ROM_LOAD( "240c.716", 0x1000, 0x0800, CRC(60d115a8) SHA1(e970fdd7cbbb2c81ab8c8209edfb681798c683b9)) |
| 682 | |
| 137 | 683 | ROM_REGION(0x10000, "cpu2", 0) |
| 138 | 684 | ROM_LOAD("gw240bot.rom", 0x3800, 0x0800, CRC(3245a206) SHA1(b321b2d276fbd74199eff2d8c0d1b8a2f5c93604)) |
| 139 | 685 | ROM_RELOAD(0xf800, 0x0800) |
| r31405 | r31406 | |
| 144 | 690 | / Lady Sharpshooter (May 1985) - Cocktail Model #830 |
| 145 | 691 | /-------------------------------------------------------------------*/ |
| 146 | 692 | ROM_START(ladyshot) |
| 147 | | ROM_REGION(0x10000, "maincpu", 0) |
| 693 | ROM_REGION(0x4000, "roms", 0) |
| 148 | 694 | ROM_LOAD( "830a.716", 0x0000, 0x0800, CRC(c055b993) SHA1(a9a7156e5ec0a32db1ffe36b3c6280953a2606ff)) |
| 149 | 695 | ROM_LOAD( "830b.716", 0x0800, 0x0800, CRC(1e3308ea) SHA1(a5955a6a15b33c4cf35105ab524a8e7e03d748b6)) |
| 150 | 696 | ROM_LOAD( "830c.716", 0x1000, 0x0800, CRC(f5e1db15) SHA1(e8168ab37ba30211045fc96b23dad5f06592b38d)) |
| 697 | |
| 151 | 698 | ROM_REGION(0x10000, "cpu2", 0) |
| 152 | 699 | ROM_LOAD ("830.snd", 0x3800, 0x0800, NO_DUMP) |
| 153 | 700 | ROM_CONTINUE(0x7800, 0x0800) |
| 154 | 701 | ROM_RELOAD (0xf000, 0x1000) |
| 155 | 702 | ROM_END |
| 703 | |
| 156 | 704 | ROM_START(ladyshota) |
| 157 | | ROM_REGION(0x10000, "maincpu", 0) |
| 705 | ROM_REGION(0x4000, "roms", 0) |
| 158 | 706 | ROM_LOAD( "830a2.716", 0x0000, 0x0800, CRC(2c1f1629) SHA1(9233ce4328d779ff6548cdd5d6819cd368bef313)) |
| 159 | 707 | ROM_LOAD( "830b2.716", 0x0800, 0x0800, CRC(2105a538) SHA1(0360d3e740d8b6f816cfe7fe1fb32ac476251b9f)) |
| 160 | 708 | ROM_LOAD( "830c2.716", 0x1000, 0x0800, CRC(2d96bdde) SHA1(7c03a29a91f03fba9ed5e53a93335113a7cbafb3)) |
| 709 | |
| 161 | 710 | ROM_REGION(0x10000, "cpu2", 0) |
| 162 | 711 | ROM_LOAD ("830.snd", 0x3800, 0x0800, NO_DUMP) |
| 163 | 712 | ROM_CONTINUE(0x7800, 0x0800) |
| r31405 | r31406 | |
| 165 | 714 | ROM_END |
| 166 | 715 | |
| 167 | 716 | /*------------------------------------------------------------------- |
| 168 | | / Loch Ness Monster (November 1985) - Model #??? |
| 717 | / Loch Ness Monster (November 1985) - Model #??? (prototype only) |
| 169 | 718 | /-------------------------------------------------------------------*/ |
| 170 | 719 | |
| 171 | 720 | /*------------------------------------------------------------------- |
| 172 | | / Mike Bossy (January 1982) - Model #??? |
| 721 | / Mike Bossy (January 1982) - Model #??? (prototype only) |
| 173 | 722 | /-------------------------------------------------------------------*/ |
| 723 | // These roms are widely available on the net, but is not complete (1800-1FFF is missing) |
| 724 | // ROM_LOAD( "mb_a.716", 0x0000, 0x0800, CRC(a811f936) SHA1(f44fed7acd26a621f105925d52405e985d0b5e5d) ) |
| 725 | // ROM_LOAD( "mb_b.716", 0x0800, 0x0800, CRC(75ec7247) SHA1(10fa1e3ac2adbd7b24744a4fb0149bcc74df6b4c) ) |
| 726 | // ROM_LOAD( "mb_c.716", 0x1000, 0x0800, CRC(75dc73c4) SHA1(79fadec7650a1419f47b22875dee6f678114b439) ) |
| 727 | |
| 174 | 728 | ROM_START(mbossy) |
| 175 | | ROM_REGION(0x10000, "maincpu", 0) |
| 729 | ROM_REGION(0x4000, "roms", 0) |
| 176 | 730 | ROM_LOAD( "mb_a.716", 0x0000, 0x0800, NO_DUMP) |
| 177 | 731 | ROM_LOAD( "mb_b.716", 0x0800, 0x0800, NO_DUMP) |
| 178 | 732 | ROM_LOAD( "mb_c.716", 0x1000, 0x0800, NO_DUMP) |
| 733 | |
| 179 | 734 | ROM_REGION(0x10000, "cpu2", 0) |
| 180 | 735 | ROM_LOAD("mb.u9", 0x3800, 0x0800, CRC(dfa98db5) SHA1(65361630f530383e67837c428050bcdb15373c0b)) |
| 181 | 736 | ROM_RELOAD(0xf800, 0x0800) |
| r31405 | r31406 | |
| 186 | 741 | / Old Coney Island! (December 1979) - Model #180 |
| 187 | 742 | /-------------------------------------------------------------------*/ |
| 188 | 743 | ROM_START(coneyis) |
| 189 | | ROM_REGION(0x10000, "maincpu", 0) |
| 744 | ROM_REGION(0x4000, "roms", 0) |
| 190 | 745 | ROM_LOAD( "130a.716", 0x0000, 0x0800, CRC(dc402b37) SHA1(90c46391a1e5f000f3b235d580463bf96b45bd3e)) |
| 191 | 746 | ROM_LOAD( "130b.716", 0x0800, 0x0800, CRC(19a86f5e) SHA1(bc4a87314fc9c4e74e492c3f6e44d5d6cae72939)) |
| 192 | 747 | ROM_LOAD( "130c.716", 0x1000, 0x0800, CRC(b956f67b) SHA1(ff64383d7f59e9bbec588553e35a21fb94c7203b)) |
| r31405 | r31406 | |
| 196 | 751 | / Pinball Lizard (June / July 1980) - Model #210 |
| 197 | 752 | /-------------------------------------------------------------------*/ |
| 198 | 753 | ROM_START(lizard) |
| 199 | | ROM_REGION(0x10000, "maincpu", 0) |
| 754 | ROM_REGION(0x4000, "roms", 0) |
| 200 | 755 | ROM_LOAD( "130a.716", 0x0000, 0x0800, CRC(dc402b37) SHA1(90c46391a1e5f000f3b235d580463bf96b45bd3e)) |
| 201 | 756 | ROM_LOAD( "130b.716", 0x0800, 0x0800, CRC(19a86f5e) SHA1(bc4a87314fc9c4e74e492c3f6e44d5d6cae72939)) |
| 202 | 757 | ROM_LOAD( "130c.716", 0x1000, 0x0800, CRC(b956f67b) SHA1(ff64383d7f59e9bbec588553e35a21fb94c7203b)) |
| 758 | |
| 203 | 759 | ROM_REGION(0x10000, "cpu2", 0) |
| 204 | 760 | ROM_LOAD("lizard.u9", 0x3800, 0x0800, CRC(2d121b24) SHA1(55c16951538229571165c35a353da53e22d11f81)) |
| 205 | 761 | ROM_RELOAD(0xf800, 0x0800) |
| r31405 | r31406 | |
| 210 | 766 | / Sharp Shooter II (November 1983) - Model #730 |
| 211 | 767 | /-------------------------------------------------------------------*/ |
| 212 | 768 | ROM_START(sshootr2) |
| 213 | | ROM_REGION(0x10000, "maincpu", 0) |
| 769 | ROM_REGION(0x4000, "roms", 0) |
| 214 | 770 | ROM_LOAD( "130a.716", 0x0000, 0x0800, CRC(dc402b37) SHA1(90c46391a1e5f000f3b235d580463bf96b45bd3e)) |
| 215 | 771 | ROM_LOAD( "130b.716", 0x0800, 0x0800, CRC(19a86f5e) SHA1(bc4a87314fc9c4e74e492c3f6e44d5d6cae72939)) |
| 216 | 772 | ROM_LOAD( "730c", 0x1000, 0x0800, CRC(d1af712b) SHA1(9dce2ec1c2d9630a29dd21f4685c09019e59b147)) |
| 773 | |
| 217 | 774 | ROM_REGION(0x10000, "cpu2", 0) |
| 218 | 775 | ROM_LOAD("730u9.snd", 0x3800, 0x0800, CRC(dfa98db5) SHA1(65361630f530383e67837c428050bcdb15373c0b)) |
| 219 | 776 | ROM_RELOAD(0xf800, 0x0800) |
| r31405 | r31406 | |
| 224 | 781 | / Sharpshooter (May 1979) - Model #130 |
| 225 | 782 | /-------------------------------------------------------------------*/ |
| 226 | 783 | ROM_START(sshootep) |
| 227 | | ROM_REGION(0x10000, "maincpu", 0) |
| 784 | ROM_REGION(0x4000, "roms", 0) |
| 228 | 785 | ROM_LOAD( "130a.716", 0x0000, 0x0800, CRC(dc402b37) SHA1(90c46391a1e5f000f3b235d580463bf96b45bd3e)) |
| 229 | 786 | ROM_LOAD( "130b.716", 0x0800, 0x0800, CRC(19a86f5e) SHA1(bc4a87314fc9c4e74e492c3f6e44d5d6cae72939)) |
| 230 | 787 | ROM_LOAD( "130c.716", 0x1000, 0x0800, CRC(b956f67b) SHA1(ff64383d7f59e9bbec588553e35a21fb94c7203b)) |
| r31405 | r31406 | |
| 234 | 791 | / Super Nova (May 1982) - Model #150 |
| 235 | 792 | /-------------------------------------------------------------------*/ |
| 236 | 793 | ROM_START(suprnova) |
| 237 | | ROM_REGION(0x10000, "maincpu", 0) |
| 794 | ROM_REGION(0x4000, "roms", 0) |
| 238 | 795 | ROM_LOAD( "130a.716", 0x0000, 0x0800, CRC(dc402b37) SHA1(90c46391a1e5f000f3b235d580463bf96b45bd3e)) |
| 239 | 796 | ROM_LOAD( "150b.716", 0x0800, 0x0800, CRC(8980a8bb) SHA1(129816fe85681b760307a713c667737a750b0c04)) |
| 240 | 797 | ROM_LOAD( "150c.716", 0x1000, 0x0800, CRC(6fe08f96) SHA1(1309619a2400674fa1d05dc9214fdb85419fd1c3)) |
| 241 | 798 | ROM_END |
| 242 | 799 | |
| 243 | | /*------------------------------------------------------------------- |
| 244 | | / Vegas (August 1979) - Cocktail Model #140 |
| 245 | | /-------------------------------------------------------------------*/ |
| 246 | | ROM_START(vegasgp) |
| 247 | | ROM_REGION(0x10000, "maincpu", 0) |
| 248 | | ROM_LOAD( "140a.12", 0x0000, 0x0800, CRC(2c00bc19) SHA1(521d4b44f46dea0a08e90cd3aea5799462215863)) |
| 249 | | ROM_LOAD( "140b.13", 0x0800, 0x0800, CRC(cf26d67b) SHA1(05481e880e23a7bc1d1716b52ac1effc0db437f2)) |
| 250 | | ROM_END |
| 800 | // GP1 dips |
| 801 | GAME(1979, sshootep, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharpshooter", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 802 | GAME(1979, coneyis, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Old Coney Island!", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 803 | GAME(1980, lizard, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Pinball Lizard", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 804 | GAME(1982, suprnova, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Super Nova", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 805 | GAME(1983, sshootr2, 0, gp_2, gp_1, driver_device, 0, ROT0, "Game Plan", "Sharp Shooter II", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 251 | 806 | |
| 807 | // GP2 dips |
| 808 | GAME(1981, gwarfare, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Global Warfare", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 809 | GAME(1982, mbossy, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Mike Bossy", GAME_IS_SKELETON_MECHANICAL) |
| 810 | GAME(1984, attila, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Attila The Hun", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 252 | 811 | |
| 253 | | GAME(1984, agent777, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Agents 777", GAME_IS_SKELETON_MECHANICAL) |
| 254 | | GAME(1985, andromep, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Andromeda (set 1)", GAME_IS_SKELETON_MECHANICAL) |
| 255 | | GAME(1985, andromepa, andromep, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Andromeda (set 2)", GAME_IS_SKELETON_MECHANICAL) |
| 256 | | GAME(1984, attila, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Attila The Hun", GAME_IS_SKELETON_MECHANICAL) |
| 257 | | GAME(1985, cpthook, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Captain Hook", GAME_IS_SKELETON_MECHANICAL) |
| 258 | | GAME(1985, cyclopes, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Cyclopes", GAME_IS_SKELETON_MECHANICAL) |
| 259 | | GAME(1981, gwarfare, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Global Warfare", GAME_IS_SKELETON_MECHANICAL) |
| 260 | | GAME(1985, ladyshot, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Lady Sharpshooter", GAME_IS_SKELETON_MECHANICAL) |
| 261 | | GAME(1985, ladyshota, ladyshot, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Lady Sharpshooter (alternate set)", GAME_IS_SKELETON_MECHANICAL) |
| 262 | | GAME(1982, mbossy, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Mike Bossy", GAME_IS_SKELETON_MECHANICAL) |
| 263 | | GAME(1979, coneyis, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Old Coney Island!", GAME_IS_SKELETON_MECHANICAL) |
| 264 | | GAME(1980, lizard, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Pinball Lizard", GAME_IS_SKELETON_MECHANICAL) |
| 265 | | GAME(1983, sshootr2, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Sharp Shooter II", GAME_IS_SKELETON_MECHANICAL) |
| 266 | | GAME(1979, sshootep, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Sharpshooter", GAME_IS_SKELETON_MECHANICAL) |
| 267 | | GAME(1982, suprnova, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Super Nova", GAME_IS_SKELETON_MECHANICAL) |
| 268 | | GAME(1979, vegasgp, 0, gp_2, gp_2, gp_2_state, gp_2, ROT0, "Game Plan", "Vegas (Game Plan)", GAME_IS_SKELETON_MECHANICAL) |
| 812 | // revolving match |
| 813 | GAME(1984, agent777, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Agents 777", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 814 | GAME(1985, cpthook, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Captain Hook", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 815 | GAME(1985, ladyshot, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 1)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 816 | GAME(1985, ladyshota, ladyshot, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Lady Sharpshooter (set 2)", GAME_MECHANICAL | GAME_IMPERFECT_SOUND ) |
| 817 | |
| 818 | // credit (start) button not working |
| 819 | GAME(1985, andromep, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 1)", GAME_IS_SKELETON_MECHANICAL) |
| 820 | GAME(1985, andromepa, andromep, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Andromeda (set 2)", GAME_IS_SKELETON_MECHANICAL) |
| 821 | GAME(1985, cyclopes, 0, gp_2, gp_2, driver_device, 0, ROT0, "Game Plan", "Cyclopes", GAME_IS_SKELETON_MECHANICAL) |