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) |