trunk/src/mame/drivers/s3.c
| r32394 | r32395 | |
| 2 | 2 | // copyright-holders:Robbbert |
| 3 | 3 | /*********************************************************************************** |
| 4 | 4 | |
| 5 | | PINBALL |
| 6 | | Williams System 3 |
| 5 | PINBALL |
| 6 | Williams System 3 |
| 7 | 7 | |
| 8 | | Typical of Williams hardware: Motorola 8-bit CPUs, and lots of PIAs. |
| 8 | Typical of Williams hardware: Motorola 8-bit CPUs, and lots of PIAs. |
| 9 | 9 | |
| 10 | | Schematic and PinMAME used as references. |
| 10 | Schematic and PinMAME used as references. |
| 11 | 11 | |
| 12 | | Written during October 2012 [Robbbert] |
| 12 | Written during October 2012 [Robbbert] |
| 13 | 13 | |
| 14 | | When first used, the nvram gets initialised but is otherwise unusable. A reboot |
| 15 | | will get it going. |
| 14 | When first used, the nvram gets initialised but is otherwise unusable. A reboot |
| 15 | will get it going. |
| 16 | 16 | |
| 17 | | By pressing 4, you can select a different set of sounds. This is switch SW2 on |
| 18 | | the real board. |
| 17 | By pressing 4, you can select a different set of sounds. This is switch SW2 on |
| 18 | the real board. |
| 19 | 19 | |
| 20 | Each game has its own switches, you need to know the outhole and slam-tilt ones. |
| 21 | Note that T is also a tilt, but it may take 3 hits to activate it. |
| 22 | |
| 23 | Game Tilt Outhole |
| 24 | ----------------------------- |
| 25 | Hot Tip S A |
| 26 | Lucky Seven = M |
| 27 | World Cup J H |
| 28 | Contact , V |
| 29 | Disco Enter N |
| 30 | Phoenix M Left |
| 31 | Pokerino , X |
| 32 | |
| 33 | |
| 20 | 34 | ToDo: |
| 21 | 35 | - Mechanical |
| 22 | 36 | |
| r32394 | r32395 | |
| 111 | 125 | |
| 112 | 126 | static INPUT_PORTS_START( s3 ) |
| 113 | 127 | PORT_START("X0") |
| 114 | | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 128 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 115 | 129 | |
| 116 | 130 | PORT_START("X1") |
| 117 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_TILT ) |
| 118 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) |
| 119 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START ) |
| 120 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN3 ) |
| 121 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN2 ) |
| 122 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN1 ) |
| 123 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) |
| 124 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) |
| 131 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_TILT ) // 3 touches before it tilts |
| 132 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) |
| 133 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_START ) |
| 134 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_COIN3 ) |
| 135 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_COIN2 ) |
| 136 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_COIN1 ) |
| 137 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) |
| 138 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) |
| 125 | 139 | |
| 126 | 140 | PORT_START("X2") |
| 127 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 128 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
| 129 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
| 130 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
| 131 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_G) |
| 132 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_H) |
| 133 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_J) |
| 134 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_K) |
| 141 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_A) |
| 142 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_S) |
| 143 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_D) |
| 144 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_F) |
| 145 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_G) |
| 146 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_H) |
| 147 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_J) |
| 148 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_K) |
| 135 | 149 | |
| 136 | 150 | PORT_START("X4") |
| 137 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_L) |
| 138 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Z) |
| 139 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_C) |
| 140 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_V) |
| 141 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_B) |
| 142 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_N) |
| 143 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_M) |
| 144 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) |
| 151 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_L) |
| 152 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Z) |
| 153 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_C) |
| 154 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_V) |
| 155 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_B) |
| 156 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_N) |
| 157 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_M) |
| 158 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COMMA) // 1 touch tilt |
| 145 | 159 | |
| 146 | 160 | PORT_START("X8") |
| 147 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) |
| 148 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) |
| 149 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
| 150 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) |
| 151 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_X) |
| 152 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) |
| 153 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) |
| 154 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
| 161 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_STOP) |
| 162 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_SLASH) |
| 163 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_COLON) |
| 164 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_QUOTE) |
| 165 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_X) |
| 166 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_MINUS) |
| 167 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_EQUALS) |
| 168 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSPACE) |
| 155 | 169 | |
| 156 | 170 | PORT_START("X10") |
| 157 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) |
| 158 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) |
| 159 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) |
| 160 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) |
| 161 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT) |
| 162 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT) |
| 163 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_UP) |
| 164 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN) |
| 171 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_OPENBRACE) |
| 172 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_CLOSEBRACE) |
| 173 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_BACKSLASH) |
| 174 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_ENTER) |
| 175 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_LEFT) |
| 176 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_RIGHT) |
| 177 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_UP) |
| 178 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_DOWN) |
| 165 | 179 | |
| 166 | 180 | PORT_START("X20") |
| 167 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Q) |
| 168 | | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_W) |
| 169 | | PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_E) |
| 170 | | PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_R) |
| 171 | | PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_Y) |
| 172 | | PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_U) |
| 173 | | PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_I) |
| 174 | | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_O) |
| 181 | PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Q) |
| 182 | PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_W) |
| 183 | PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_E) |
| 184 | PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_R) |
| 185 | PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_Y) |
| 186 | PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_U) |
| 187 | PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_I) |
| 188 | PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_CODE(KEYCODE_O) |
| 175 | 189 | |
| 176 | 190 | PORT_START("X40") |
| 177 | | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 191 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 178 | 192 | |
| 179 | 193 | PORT_START("X80") |
| 180 | | PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 194 | PORT_BIT( 0xff, IP_ACTIVE_HIGH, IPT_UNKNOWN ) |
| 181 | 195 | |
| 182 | 196 | PORT_START("SND") |
| 183 | 197 | PORT_BIT( 0xbf, IP_ACTIVE_LOW, IPT_UNUSED ) |
| r32394 | r32395 | |
| 476 | 490 | MCFG_PIA_READPB_HANDLER(READ8(s3_state, dac_r)) |
| 477 | 491 | MCFG_PIA_READCB1_HANDLER(READLINE(s3_state, pias_cb1_r)) |
| 478 | 492 | MCFG_PIA_WRITEPA_HANDLER(WRITE8(s3_state, dac_w)) |
| 479 | | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line)) |
| 480 | | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line)) |
| 493 | MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("audiocpu", m6800_cpu_device, irq_line)) |
| 494 | MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("audiocpu", m6800_cpu_device, irq_line)) |
| 481 | 495 | MACHINE_CONFIG_END |
| 482 | 496 | |
| 483 | 497 | |