trunk/src/mame/layout/wico.lay
| r18240 | r18241 | |
| 1 | | <!-- g627.lay --> |
| 1 | <!-- wico.lay --> |
| 2 | 2 | |
| 3 | | <!-- 2012-09-11: Initial version. [Robbbert] --> |
| 3 | <!-- 2012-10-02: Initial version. [Robbbert] --> |
| 4 | 4 | |
| 5 | 5 | <mamelayout version="2"> |
| 6 | 6 | |
| 7 | | <element name="digit" defstate="0"> |
| 7 | <element name="diag" defstate="0"> |
| 8 | 8 | <led7seg> |
| 9 | 9 | <color red="1.0" green="0.0" blue="0.0" /> |
| 10 | 10 | </led7seg> |
| 11 | 11 | </element> |
| 12 | <element name="digit" defstate="0"> |
| 13 | <led14seg> |
| 14 | <color red="0.0" green="0.75" blue="1.0" /> |
| 15 | </led14seg> |
| 16 | </element> |
| 12 | 17 | |
| 13 | 18 | <element name="background"> |
| 14 | 19 | <rect> |
| r18240 | r18241 | |
| 18 | 23 | </element> |
| 19 | 24 | <element name="P0"><text string="Ball / Match"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 20 | 25 | <element name="P1"><text string="Credits"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 21 | | <element name="P3"><text string="East"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 22 | | <element name="P4"><text string="North"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 23 | | <element name="P5"><text string="West"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 24 | | <element name="P6"><text string="South"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 26 | <element name="P2"><text string="Diagnostic"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 27 | <element name="P3"><text string="Player 1"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 28 | <element name="P4"><text string="Player 2"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 29 | <element name="P5"><text string="Player 3"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 30 | <element name="P6"><text string="Player 4"><color red="1.0" green="1.0" blue="1.0" /></text></element> |
| 25 | 31 | |
| 26 | 32 | <view name="Default Layout"> |
| 27 | 33 | |
| 28 | 34 | <!-- Background --> |
| 29 | 35 | <backdrop element="background"> |
| 30 | | <bounds left="0" top="20" right="274" bottom="394" /> |
| 36 | <bounds left="0" top="20" right="318" bottom="394" /> |
| 31 | 37 | </backdrop> |
| 32 | 38 | |
| 33 | | <!-- LEDs --> |
| 39 | <!-- Flourescent Displays --> |
| 34 | 40 | |
| 35 | 41 | <!-- Player 1 Score --> |
| 36 | 42 | |
| 37 | | <bezel name="digit0" element="digit"> |
| 43 | <bezel name="digit10" element="digit"> |
| 38 | 44 | <bounds left="10" top="45" right="44" bottom="84" /> |
| 39 | 45 | </bezel> |
| 40 | | <bezel name="digit1" element="digit"> |
| 46 | <bezel name="digit11" element="digit"> |
| 41 | 47 | <bounds left="54" top="45" right="88" bottom="84" /> |
| 42 | 48 | </bezel> |
| 43 | | <bezel name="digit2" element="digit"> |
| 49 | <bezel name="digit12" element="digit"> |
| 44 | 50 | <bounds left="98" top="45" right="132" bottom="84" /> |
| 45 | 51 | </bezel> |
| 46 | | <bezel name="digit3" element="digit"> |
| 52 | <bezel name="digit13" element="digit"> |
| 47 | 53 | <bounds left="142" top="45" right="176" bottom="84" /> |
| 48 | 54 | </bezel> |
| 49 | | <bezel name="digit4" element="digit"> |
| 55 | <bezel name="digit14" element="digit"> |
| 50 | 56 | <bounds left="186" top="45" right="220" bottom="84" /> |
| 51 | 57 | </bezel> |
| 52 | | <bezel name="digit5" element="digit"> |
| 58 | <bezel name="digit15" element="digit"> |
| 53 | 59 | <bounds left="230" top="45" right="264" bottom="84" /> |
| 54 | 60 | </bezel> |
| 61 | <bezel name="digit16" element="digit"> |
| 62 | <bounds left="274" top="45" right="308" bottom="84" /> |
| 63 | </bezel> |
| 55 | 64 | |
| 56 | 65 | <!-- Player 2 Score --> |
| 57 | | <bezel name="digit10" element="digit"> |
| 66 | <bezel name="digit30" element="digit"> |
| 58 | 67 | <bounds left="10" top="105" right="44" bottom="144" /> |
| 59 | 68 | </bezel> |
| 60 | | <bezel name="digit11" element="digit"> |
| 69 | <bezel name="digit31" element="digit"> |
| 61 | 70 | <bounds left="54" top="105" right="88" bottom="144" /> |
| 62 | 71 | </bezel> |
| 63 | | <bezel name="digit12" element="digit"> |
| 72 | <bezel name="digit32" element="digit"> |
| 64 | 73 | <bounds left="98" top="105" right="132" bottom="144" /> |
| 65 | 74 | </bezel> |
| 66 | | <bezel name="digit13" element="digit"> |
| 75 | <bezel name="digit33" element="digit"> |
| 67 | 76 | <bounds left="142" top="105" right="176" bottom="144" /> |
| 68 | 77 | </bezel> |
| 69 | | <bezel name="digit14" element="digit"> |
| 78 | <bezel name="digit34" element="digit"> |
| 70 | 79 | <bounds left="186" top="105" right="220" bottom="144" /> |
| 71 | 80 | </bezel> |
| 72 | | <bezel name="digit15" element="digit"> |
| 81 | <bezel name="digit35" element="digit"> |
| 73 | 82 | <bounds left="230" top="105" right="264" bottom="144" /> |
| 74 | 83 | </bezel> |
| 84 | <bezel name="digit36" element="digit"> |
| 85 | <bounds left="274" top="105" right="308" bottom="144" /> |
| 86 | </bezel> |
| 75 | 87 | |
| 76 | 88 | <!-- Player 3 Score --> |
| 77 | 89 | <bezel name="digit20" element="digit"> |
| r18240 | r18241 | |
| 92 | 104 | <bezel name="digit25" element="digit"> |
| 93 | 105 | <bounds left="230" top="165" right="264" bottom="204" /> |
| 94 | 106 | </bezel> |
| 107 | <bezel name="digit26" element="digit"> |
| 108 | <bounds left="274" top="165" right="308" bottom="204" /> |
| 109 | </bezel> |
| 95 | 110 | |
| 96 | 111 | <!-- Player 4 Score --> |
| 97 | | <bezel name="digit30" element="digit"> |
| 112 | <bezel name="digit40" element="digit"> |
| 98 | 113 | <bounds left="10" top="225" right="44" bottom="264" /> |
| 99 | 114 | </bezel> |
| 100 | | <bezel name="digit31" element="digit"> |
| 115 | <bezel name="digit41" element="digit"> |
| 101 | 116 | <bounds left="54" top="225" right="88" bottom="264" /> |
| 102 | 117 | </bezel> |
| 103 | | <bezel name="digit32" element="digit"> |
| 118 | <bezel name="digit42" element="digit"> |
| 104 | 119 | <bounds left="98" top="225" right="132" bottom="264" /> |
| 105 | 120 | </bezel> |
| 106 | | <bezel name="digit33" element="digit"> |
| 121 | <bezel name="digit43" element="digit"> |
| 107 | 122 | <bounds left="142" top="225" right="176" bottom="264" /> |
| 108 | 123 | </bezel> |
| 109 | | <bezel name="digit34" element="digit"> |
| 124 | <bezel name="digit44" element="digit"> |
| 110 | 125 | <bounds left="186" top="225" right="220" bottom="264" /> |
| 111 | 126 | </bezel> |
| 112 | | <bezel name="digit35" element="digit"> |
| 127 | <bezel name="digit45" element="digit"> |
| 113 | 128 | <bounds left="230" top="225" right="264" bottom="264" /> |
| 114 | 129 | </bezel> |
| 130 | <bezel name="digit46" element="digit"> |
| 131 | <bounds left="274" top="225" right="308" bottom="264" /> |
| 132 | </bezel> |
| 115 | 133 | |
| 116 | 134 | <!-- Credits and Balls --> |
| 117 | | <bezel name="digit50" element="digit"> |
| 135 | <bezel name="digit0" element="digit"> |
| 118 | 136 | <bounds left="10" top="345" right="44" bottom="384" /> |
| 119 | 137 | </bezel> |
| 120 | | <bezel name="digit51" element="digit"> |
| 138 | <bezel name="digit1" element="digit"> |
| 121 | 139 | <bounds left="54" top="345" right="88" bottom="384" /> |
| 122 | 140 | </bezel> |
| 123 | | <bezel name="digit52" element="digit"> |
| 141 | <bezel name="digit2" element="digit"> |
| 124 | 142 | <bounds left="98" top="345" right="132" bottom="384" /> |
| 125 | 143 | </bezel> |
| 126 | | <bezel name="digit53" element="digit"> |
| 144 | <bezel name="digit3" element="digit"> |
| 127 | 145 | <bounds left="142" top="345" right="176" bottom="384" /> |
| 128 | 146 | </bezel> |
| 129 | | <bezel name="digit54" element="digit"> |
| 147 | <bezel name="digit4" element="digit"> |
| 130 | 148 | <bounds left="186" top="345" right="220" bottom="384" /> |
| 131 | 149 | </bezel> |
| 132 | | <bezel name="digit55" element="digit"> |
| 150 | <bezel name="digit5" element="digit"> |
| 133 | 151 | <bounds left="230" top="345" right="264" bottom="384" /> |
| 134 | 152 | </bezel> |
| 135 | | <bezel element="P0"><bounds left="200" right="258" top="330" bottom="342" /></bezel> |
| 153 | <bezel name="digit9" element="diag"> |
| 154 | <bounds left="274" top="345" right="308" bottom="384" /> |
| 155 | </bezel> |
| 156 | <bezel element="P0"><bounds left="100" right="180" top="330" bottom="342" /></bezel> |
| 136 | 157 | <bezel element="P1"><bounds left="30" right="88" top="330" bottom="342" /></bezel> |
| 137 | | <bezel element="P3"><bounds left="100" right="180" top="30" bottom="42" /></bezel> |
| 138 | | <bezel element="P4"><bounds left="100" right="180" top="90" bottom="102" /></bezel> |
| 139 | | <bezel element="P5"><bounds left="100" right="180" top="150" bottom="162" /></bezel> |
| 140 | | <bezel element="P6"><bounds left="100" right="180" top="210" bottom="222" /></bezel> |
| 158 | <bezel element="P2"><bounds left="260" right="318" top="330" bottom="342" /></bezel> |
| 159 | <bezel element="P3"><bounds left="120" right="200" top="30" bottom="42" /></bezel> |
| 160 | <bezel element="P4"><bounds left="120" right="200" top="90" bottom="102" /></bezel> |
| 161 | <bezel element="P5"><bounds left="120" right="200" top="150" bottom="162" /></bezel> |
| 162 | <bezel element="P6"><bounds left="120" right="200" top="210" bottom="222" /></bezel> |
| 141 | 163 | </view> |
| 142 | 164 | </mamelayout> |
trunk/src/mame/drivers/wico.c
| r18240 | r18241 | |
| 6 | 6 | Schematic and PinMAME used as references. |
| 7 | 7 | Code for the interrupts/timers was derived from PinMAME. |
| 8 | 8 | |
| 9 | Af-Tor was the first pinball to use alphanumeric displays. |
| 10 | Each display has 12 segments, but are programmed with 8-bit codes. |
| 11 | This makes some of the letters look rather odd, but it is still |
| 12 | readable. |
| 9 | 13 | |
| 14 | a a |
| 15 | _ _ |
| 16 | f/_/_/ b g = 2 middle horizontal segments |
| 17 | e/_/_/ c h = 2 middle vertical segments |
| 18 | d d |
| 19 | |
| 20 | |
| 21 | ToDo: |
| 22 | - Outhole doesn't work |
| 23 | - Add mechanical sounds |
| 24 | - Fix failures in test mode |
| 25 | - Find and add Clear and Advance buttons (behind front door) |
| 26 | |
| 27 | |
| 10 | 28 | ***************************************************************************/ |
| 11 | 29 | |
| 12 | 30 | #include "machine/genpin.h" |
| r18240 | r18241 | |
| 54 | 72 | bool m_disp_on; |
| 55 | 73 | bool m_diag_on; |
| 56 | 74 | UINT8 m_firqtimer; |
| 57 | | UINT8 m_digit; |
| 58 | | public: |
| 59 | | DECLARE_DRIVER_INIT(wico); |
| 60 | 75 | }; |
| 61 | 76 | |
| 62 | 77 | // housekeeping cpu |
| r18240 | r18241 | |
| 198 | 213 | PORT_DIPNAME( 0x40, 0x00, "Fast Ride Lights Extra Ball" ) |
| 199 | 214 | PORT_DIPSETTING( 0x00, "2" ) |
| 200 | 215 | PORT_DIPSETTING( 0x40, "3" ) |
| 201 | | PORT_DIPNAME( 0x80, 0x80, "Free Play" ) |
| 216 | PORT_DIPNAME( 0x80, 0x00, "Free Play" ) |
| 202 | 217 | PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) |
| 203 | 218 | PORT_DIPSETTING( 0x80, DEF_STR( On ) ) |
| 204 | 219 | PORT_START("XD") |
| r18240 | r18241 | |
| 285 | 300 | m_zcen = 0; |
| 286 | 301 | m_gten = 0; |
| 287 | 302 | m_firqtimer = 0; |
| 288 | | m_digit = 0; |
| 289 | 303 | m_disp_on = 0; |
| 290 | 304 | m_diag_on = 0; |
| 291 | 305 | } |
| 292 | 306 | |
| 293 | | DRIVER_INIT_MEMBER(wico_state,wico) |
| 294 | | { |
| 295 | | } |
| 296 | | |
| 297 | 307 | // diagnostic display off |
| 298 | 308 | WRITE8_MEMBER( wico_state::dled0_w ) |
| 299 | 309 | { |
| r18240 | r18241 | |
| 313 | 323 | UINT8 segments = 0; |
| 314 | 324 | if (m_diag_on) |
| 315 | 325 | segments = patterns[data>>4]; |
| 316 | | output_set_digit_value(41, segments); |
| 326 | output_set_digit_value(9, segments); |
| 327 | m_disp_on = BIT(data, 0); |
| 317 | 328 | } |
| 318 | 329 | |
| 319 | 330 | // reset digit/scan counter |
| 320 | 331 | WRITE8_MEMBER( wico_state::muxld_w ) |
| 321 | 332 | { |
| 322 | | m_digit = 0; |
| 323 | 333 | } |
| 324 | 334 | |
| 325 | 335 | // enable zero-crossing interrupt |
| r18240 | r18241 | |
| 346 | 356 | // write digits in main display |
| 347 | 357 | READ8_MEMBER( wico_state::lampst_r ) |
| 348 | 358 | { |
| 349 | | UINT8 i; |
| 359 | int i, j; |
| 350 | 360 | for (i = 0; i < 5; i++) |
| 351 | | output_set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), m_shared_ram[0x7f9 + i]); |
| 361 | { |
| 362 | if (m_disp_on) |
| 363 | j = m_shared_ram[0x7f9 + i]; |
| 364 | else |
| 365 | j = 0; |
| 366 | output_set_digit_value(i * 10 + (m_shared_ram[0x96] & 7), BITSWAP16(j, 8, 8, 8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 3, 2, 1, 0)); |
| 367 | } |
| 352 | 368 | return 0xff; |
| 353 | 369 | } |
| 354 | 370 | |
| r18240 | r18241 | |
| 426 | 442 | / Big Top (1977) |
| 427 | 443 | /-------------------------------------------------------------------*/ |
| 428 | 444 | |
| 429 | | GAME(1984, aftor, 0, wico, wico, wico_state, wico, ROT0, "Wico", "Af-Tor", GAME_IS_SKELETON_MECHANICAL) |
| 445 | GAME(1984, aftor, 0, wico, wico, driver_device, 0, ROT0, "Wico", "Af-Tor", GAME_MECHANICAL) |