Previous 199869 Revisions Next

r31686 Monday 18th August, 2014 at 00:16:16 UTC by Robbbert
by17,hankin,st_mp100,st_mp200: used same display method as by35.
[src/mame/drivers]by17.c by35.c hankin.c st_mp100.c st_mp200.c
[src/mame/layout]by17.lay st_mp100.lay st_mp200.lay

trunk/src/mame/layout/st_mp100.lay
r31685r31686
3737
3838      <!-- Player 1 Score -->
3939
40      <bezel name="digit0" element="digit">
40      <bezel name="digit5" element="digit">
4141         <bounds left="10" top="45" right="44" bottom="84" />
4242      </bezel>
43      <bezel name="digit5" element="digit">
43      <bezel name="digit4" element="digit">
4444         <bounds left="54" top="45" right="88" bottom="84" />
4545      </bezel>
46      <bezel name="digit4" element="digit">
46      <bezel name="digit3" element="digit">
4747         <bounds left="98" top="45" right="132" bottom="84" />
4848      </bezel>
49      <bezel name="digit3" element="digit">
49      <bezel name="digit2" element="digit">
5050         <bounds left="142" top="45" right="176" bottom="84" />
5151      </bezel>
52      <bezel name="digit2" element="digit">
52      <bezel name="digit1" element="digit">
5353         <bounds left="186" top="45" right="220" bottom="84" />
5454      </bezel>
55      <bezel name="digit1" element="digit">
55      <bezel name="digit0" element="digit">
5656         <bounds left="230" top="45" right="264" bottom="84" />
5757      </bezel>
5858
5959      <!-- Player 2 Score -->
60      <bezel name="digit10" element="digit">
60      <bezel name="digit15" element="digit">
6161         <bounds left="10" top="105" right="44" bottom="144" />
6262      </bezel>
63      <bezel name="digit15" element="digit">
63      <bezel name="digit14" element="digit">
6464         <bounds left="54" top="105" right="88" bottom="144" />
6565      </bezel>
66      <bezel name="digit14" element="digit">
66      <bezel name="digit13" element="digit">
6767         <bounds left="98" top="105" right="132" bottom="144" />
6868      </bezel>
69      <bezel name="digit13" element="digit">
69      <bezel name="digit12" element="digit">
7070         <bounds left="142" top="105" right="176" bottom="144" />
7171      </bezel>
72      <bezel name="digit12" element="digit">
72      <bezel name="digit11" element="digit">
7373         <bounds left="186" top="105" right="220" bottom="144" />
7474      </bezel>
75      <bezel name="digit11" element="digit">
75      <bezel name="digit10" element="digit">
7676         <bounds left="230" top="105" right="264" bottom="144" />
7777      </bezel>
7878
7979      <!-- Player 3 Score -->
80      <bezel name="digit20" element="digit">
80      <bezel name="digit25" element="digit">
8181         <bounds left="10" top="165" right="44" bottom="204" />
8282      </bezel>
83      <bezel name="digit25" element="digit">
83      <bezel name="digit24" element="digit">
8484         <bounds left="54" top="165" right="88" bottom="204" />
8585      </bezel>
86      <bezel name="digit24" element="digit">
86      <bezel name="digit23" element="digit">
8787         <bounds left="98" top="165" right="132" bottom="204" />
8888      </bezel>
89      <bezel name="digit23" element="digit">
89      <bezel name="digit22" element="digit">
9090         <bounds left="142" top="165" right="176" bottom="204" />
9191      </bezel>
92      <bezel name="digit22" element="digit">
92      <bezel name="digit21" element="digit">
9393         <bounds left="186" top="165" right="220" bottom="204" />
9494      </bezel>
95      <bezel name="digit21" element="digit">
95      <bezel name="digit20" element="digit">
9696         <bounds left="230" top="165" right="264" bottom="204" />
9797      </bezel>
9898
trunk/src/mame/layout/st_mp200.lay
r31685r31686
3737
3838      <!-- Player 1 Score -->
3939
40      <bezel name="digit0" element="digit">
40      <bezel name="digit6" element="digit">
4141         <bounds left="10" top="45" right="44" bottom="84" />
4242      </bezel>
43      <bezel name="digit6" element="digit">
43      <bezel name="digit5" element="digit">
4444         <bounds left="54" top="45" right="88" bottom="84" />
4545      </bezel>
46      <bezel name="digit5" element="digit">
46      <bezel name="digit4" element="digit">
4747         <bounds left="98" top="45" right="132" bottom="84" />
4848      </bezel>
49      <bezel name="digit4" element="digit">
49      <bezel name="digit3" element="digit">
5050         <bounds left="142" top="45" right="176" bottom="84" />
5151      </bezel>
52      <bezel name="digit3" element="digit">
52      <bezel name="digit2" element="digit">
5353         <bounds left="186" top="45" right="220" bottom="84" />
5454      </bezel>
55      <bezel name="digit2" element="digit">
55      <bezel name="digit1" element="digit">
5656         <bounds left="230" top="45" right="264" bottom="84" />
5757      </bezel>
58      <bezel name="digit1" element="digit">
58      <bezel name="digit0" element="digit">
5959         <bounds left="274" top="45" right="308" bottom="84" />
6060      </bezel>
6161
6262      <!-- Player 2 Score -->
63      <bezel name="digit10" element="digit">
63      <bezel name="digit16" element="digit">
6464         <bounds left="10" top="105" right="44" bottom="144" />
6565      </bezel>
66      <bezel name="digit16" element="digit">
66      <bezel name="digit15" element="digit">
6767         <bounds left="54" top="105" right="88" bottom="144" />
6868      </bezel>
69      <bezel name="digit15" element="digit">
69      <bezel name="digit14" element="digit">
7070         <bounds left="98" top="105" right="132" bottom="144" />
7171      </bezel>
72      <bezel name="digit14" element="digit">
72      <bezel name="digit13" element="digit">
7373         <bounds left="142" top="105" right="176" bottom="144" />
7474      </bezel>
75      <bezel name="digit13" element="digit">
75      <bezel name="digit12" element="digit">
7676         <bounds left="186" top="105" right="220" bottom="144" />
7777      </bezel>
78      <bezel name="digit12" element="digit">
78      <bezel name="digit11" element="digit">
7979         <bounds left="230" top="105" right="264" bottom="144" />
8080      </bezel>
81      <bezel name="digit11" element="digit">
81      <bezel name="digit10" element="digit">
8282         <bounds left="274" top="105" right="308" bottom="144" />
8383      </bezel>
8484
8585      <!-- Player 3 Score -->
86      <bezel name="digit20" element="digit">
86      <bezel name="digit26" element="digit">
8787         <bounds left="10" top="165" right="44" bottom="204" />
8888      </bezel>
89      <bezel name="digit26" element="digit">
89      <bezel name="digit25" element="digit">
9090         <bounds left="54" top="165" right="88" bottom="204" />
9191      </bezel>
92      <bezel name="digit25" element="digit">
92      <bezel name="digit24" element="digit">
9393         <bounds left="98" top="165" right="132" bottom="204" />
9494      </bezel>
95      <bezel name="digit24" element="digit">
95      <bezel name="digit23" element="digit">
9696         <bounds left="142" top="165" right="176" bottom="204" />
9797      </bezel>
98      <bezel name="digit23" element="digit">
98      <bezel name="digit22" element="digit">
9999         <bounds left="186" top="165" right="220" bottom="204" />
100100      </bezel>
101      <bezel name="digit22" element="digit">
101      <bezel name="digit21" element="digit">
102102         <bounds left="230" top="165" right="264" bottom="204" />
103103      </bezel>
104      <bezel name="digit21" element="digit">
104      <bezel name="digit20" element="digit">
105105         <bounds left="274" top="165" right="308" bottom="204" />
106106      </bezel>
107107
trunk/src/mame/layout/by17.lay
r31685r31686
5757      </bezel>
5858
5959      <!-- Player 2 Score -->
60      <bezel name="digit13" element="digit">
60      <bezel name="digit15" element="digit">
6161         <bounds left="10" top="105" right="44" bottom="144" />
6262      </bezel>
63      <bezel name="digit12" element="digit">
63      <bezel name="digit14" element="digit">
6464         <bounds left="54" top="105" right="88" bottom="144" />
6565      </bezel>
66      <bezel name="digit11" element="digit">
66      <bezel name="digit13" element="digit">
6767         <bounds left="98" top="105" right="132" bottom="144" />
6868      </bezel>
69      <bezel name="digit10" element="digit">
69      <bezel name="digit12" element="digit">
7070         <bounds left="142" top="105" right="176" bottom="144" />
7171      </bezel>
72      <bezel name="digit9" element="digit">
72      <bezel name="digit11" element="digit">
7373         <bounds left="186" top="105" right="220" bottom="144" />
7474      </bezel>
75      <bezel name="digit8" element="digit">
75      <bezel name="digit10" element="digit">
7676         <bounds left="230" top="105" right="264" bottom="144" />
7777      </bezel>
7878
7979      <!-- Player 3 Score -->
80      <bezel name="digit21" element="digit">
80      <bezel name="digit25" element="digit">
8181         <bounds left="10" top="165" right="44" bottom="204" />
8282      </bezel>
83      <bezel name="digit20" element="digit">
83      <bezel name="digit24" element="digit">
8484         <bounds left="54" top="165" right="88" bottom="204" />
8585      </bezel>
86      <bezel name="digit19" element="digit">
86      <bezel name="digit23" element="digit">
8787         <bounds left="98" top="165" right="132" bottom="204" />
8888      </bezel>
89      <bezel name="digit18" element="digit">
89      <bezel name="digit22" element="digit">
9090         <bounds left="142" top="165" right="176" bottom="204" />
9191      </bezel>
92      <bezel name="digit17" element="digit">
92      <bezel name="digit21" element="digit">
9393         <bounds left="186" top="165" right="220" bottom="204" />
9494      </bezel>
95      <bezel name="digit16" element="digit">
95      <bezel name="digit20" element="digit">
9696         <bounds left="230" top="165" right="264" bottom="204" />
9797      </bezel>
9898
9999      <!-- Player 4 Score -->
100      <bezel name="digit28" element="digit">
100      <bezel name="digit35" element="digit">
101101         <bounds left="10" top="225" right="44" bottom="264" />
102102      </bezel>
103      <bezel name="digit27" element="digit">
103      <bezel name="digit34" element="digit">
104104         <bounds left="54" top="225" right="88" bottom="264" />
105105      </bezel>
106      <bezel name="digit26" element="digit">
106      <bezel name="digit33" element="digit">
107107         <bounds left="98" top="225" right="132" bottom="264" />
108108      </bezel>
109      <bezel name="digit25" element="digit">
109      <bezel name="digit32" element="digit">
110110         <bounds left="142" top="225" right="176" bottom="264" />
111111      </bezel>
112      <bezel name="digit24" element="digit">
112      <bezel name="digit31" element="digit">
113113         <bounds left="186" top="225" right="220" bottom="264" />
114114      </bezel>
115      <bezel name="digit29" element="digit">
115      <bezel name="digit30" element="digit">
116116         <bounds left="230" top="225" right="264" bottom="264" />
117117      </bezel>
118118
119119      <!-- Credits and Balls -->
120      <bezel name="digit35" element="digit">
120      <bezel name="digit44" element="digit">
121121         <bounds left="10" top="345" right="44" bottom="384" />
122122      </bezel>
123      <bezel name="digit34" element="digit">
123      <bezel name="digit43" element="digit">
124124         <bounds left="54" top="345" right="88" bottom="384" />
125125      </bezel>
126      <bezel name="digit32" element="digit">
126      <bezel name="digit41" element="digit">
127127         <bounds left="186" top="345" right="220" bottom="384" />
128128      </bezel>
129      <bezel name="digit37" element="digit">
129      <bezel name="digit40" element="digit">
130130         <bounds left="230" top="345" right="264" bottom="384" />
131131      </bezel>
132132
trunk/src/mame/drivers/hankin.c
r31685r31686
77
88ToDo:
99- High score isn't saved or remembered
10- Display should be flouro blue 9-segment
10- Display should be flouro blue 12-segment
1111- Sound
1212- Mechanical
1313
r31685r31686
5252   TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
5353private:
5454   bool m_timer_x;
55   UINT8 m_ic10a;
56   UINT8 m_ic11a;
5557   bool m_ic11_ca2;
5658   bool m_ic10_cb2;
5759   UINT8 m_counter;
5860   UINT8 m_digit;
59   UINT8 m_segment;
60   UINT8 m_ic10a;
61   UINT8 m_ic11a;
61   UINT8 m_segment[5];
6262   virtual void machine_reset();
6363   required_device<m6802_cpu_device> m_maincpu;
6464   required_device<m6802_cpu_device> m_audiocpu;
r31685r31686
254254      if BIT(data, 7)
255255         m_digit = 0;
256256
257      m_counter++;
257      if (BIT(data, 0) && (m_counter > 8))
258      {
259         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
260         output_set_digit_value(m_digit, patterns[m_segment[0]]);
261         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
262         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
263         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
264         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
265      }
258266   }
259267}
260268
r31685r31686
298306
299307WRITE8_MEMBER( hankin_state::ic11_a_w )
300308{
301   static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
302309   m_ic11a = data;
303310
304311   if (!m_ic11_ca2)
305312   {
306      if (m_counter==3)
307         output_set_digit_value(m_digit, patterns[m_segment]);
308
309313      m_counter++;
310      m_segment = data >> 4;
311314
312      if (m_counter==4)
313         output_set_digit_value(10+m_digit, patterns[m_segment]);
315      if (m_counter==1)
316         m_segment[0] = data>>4;
314317      else
315      if (m_counter==6)
316         output_set_digit_value(20+m_digit, patterns[m_segment]);
318      if (m_counter==3)
319         m_segment[1] = data>>4;
317320      else
318      if (m_counter==8)
319         output_set_digit_value(30+m_digit, patterns[m_segment]);
321      if (m_counter==5)
322         m_segment[2] = data>>4;
320323      else
321      if (m_counter==10)
322         output_set_digit_value(40+m_digit, patterns[m_segment]);
324      if (m_counter==7)
325         m_segment[3] = data>>4;
326      else
327      if (m_counter==9)
328         m_segment[4] = data>>4;
323329   }
324330}
325331
trunk/src/mame/drivers/st_mp100.c
r31685r31686
6666   bool m_u11_timer;
6767   UINT8 m_digit;
6868   UINT8 m_counter;
69   UINT8 m_segment[5];
6970   virtual void machine_reset();
7071   required_device<m6800_cpu_device> m_maincpu;
7172   required_device<pia6821_device> m_pia_u10;
r31685r31686
519520
520521WRITE8_MEMBER( st_mp100_state::u10_a_w )
521522{
522   static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
523523   m_u10a = data;
524524
525525   if (!m_u10_ca2)
526526   {
527527      m_counter++;
528      UINT8 segment = data >> 4;
529528
530529      if (m_counter==1)
531         output_set_digit_value(m_digit, patterns[segment]);
532
530         m_segment[0] = data>>4;
531      else
533532      if (m_counter==3)
534         output_set_digit_value(10+m_digit, patterns[segment]);
533         m_segment[1] = data>>4;
535534      else
536535      if (m_counter==5)
537         output_set_digit_value(20+m_digit, patterns[segment]);
536         m_segment[2] = data>>4;
538537      else
539      if (m_counter==8)
540         output_set_digit_value(30+m_digit, patterns[segment]);
538      if (m_counter==7)
539         m_segment[3] = data>>4;
541540      else
542      if (m_counter==10)
543         output_set_digit_value(40+m_digit, patterns[segment]);
541      if (m_counter==9)
542         m_segment[4] = data>>4;
544543   }
545544}
546545
r31685r31686
612611      if BIT(data, 7)
613612         m_digit = 0;
614613
615      m_counter++;
614      if (BIT(data, 0) && (m_counter > 8))
615      {
616         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
617         output_set_digit_value(m_digit, patterns[m_segment[0]]);
618         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
619         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
620         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
621         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
622      }
616623   }
617624}
618625
trunk/src/mame/drivers/st_mp200.c
r31685r31686
7272   bool m_timer_x;
7373   bool m_u11_timer;
7474   bool m_su; // speech unit fitted yes/no
75   bool m_6d; // 6-digit display yes/no
75   bool m_7d; // 7-digit display yes/no
7676   UINT8 m_digit;
7777   UINT8 m_counter;
78   UINT8 m_segment[5];
7879   virtual void machine_reset();
7980   required_device<m6800_cpu_device> m_maincpu;
8081   optional_device<s14001a_device> m_s14001a;
r31685r31686
362363
363364WRITE8_MEMBER( st_mp200_state::u10_a_w )
364365{
365   static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
366366   m_u10a = data;
367367
368368   if (!m_u10_ca2)
369369   {
370370      m_counter++;
371      UINT8 segment = data >> 4;
372371
373      if (m_6d && !m_digit && (m_counter < 6))
374         m_digit = 6; // handle 6-digit display
375
376372      if (m_counter==1)
377         output_set_digit_value(m_digit, patterns[segment]);
373         m_segment[0] = data>>4;
378374      else
379375      if (m_counter==3)
380         output_set_digit_value(10+m_digit, patterns[segment]);
376         m_segment[1] = data>>4;
381377      else
382378      if (m_counter==5)
383         output_set_digit_value(20+m_digit, patterns[segment]);
379         m_segment[2] = data>>4;
384380      else
385      if (m_counter==8)
386         output_set_digit_value(30+m_digit, patterns[segment]);
381      if (m_counter==7)
382         m_segment[3] = data>>4;
387383      else
388      if (m_counter==10)
389         output_set_digit_value(40+m_digit, patterns[segment]);
384      if (m_counter==9)
385         m_segment[4] = data>>4;
390386   }
391387}
392388
r31685r31686
440436
441437   if (!m_u10_ca2)
442438   {
443      if BIT(data, 1)
439      if (m_7d & BIT(data, 1))
444440         m_digit = 6;
445441      else
446442      if BIT(data, 2)
r31685r31686
461457      if BIT(data, 7)
462458         m_digit = 0;
463459
464      m_counter++;
460      if (BIT(data, 0) && (m_counter > 8))
461      {
462         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
463         output_set_digit_value(m_digit, patterns[m_segment[0]]);
464         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
465         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
466         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
467         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
468      }
465469   }
466470}
467471
r31685r31686
531535
532536DRIVER_INIT_MEMBER( st_mp200_state, st_mp200 )
533537{
534   m_6d = 0;
538   m_7d = 1;
535539   m_su = 0;
536540}
537541
538542DRIVER_INIT_MEMBER( st_mp200_state, st_mp201 )
539543{
540   m_6d = 0;
544   m_7d = 1;
541545   m_su = 1;
542546}
543547
544548DRIVER_INIT_MEMBER( st_mp200_state, st_mp202 )
545549{
546   m_6d = 1;
550   m_7d = 0;
547551   m_su = 0;
548552}
549553
trunk/src/mame/drivers/by17.c
r31685r31686
4242      , m_io_x4(*this, "X4")
4343   { }
4444
45   DECLARE_DRIVER_INIT(by17);
4645   DECLARE_READ8_MEMBER(u10_a_r);
4746   DECLARE_WRITE8_MEMBER(u10_a_w);
4847   DECLARE_READ8_MEMBER(u10_b_r);
r31685r31686
5655   DECLARE_WRITE_LINE_MEMBER(u11_cb2_w);
5756   DECLARE_INPUT_CHANGED_MEMBER(activity_test);
5857   DECLARE_INPUT_CHANGED_MEMBER(self_test);
59   TIMER_DEVICE_CALLBACK_MEMBER(u10_timer);
58   TIMER_DEVICE_CALLBACK_MEMBER(timer_x);
6059   TIMER_DEVICE_CALLBACK_MEMBER(u11_timer);
6160private:
62   UINT8 m_u10;
63   UINT8 m_u10_a;
64   UINT8 m_u10_b;
65   UINT8 m_u11_a;
66   UINT8 m_u11_b;
61   UINT8 m_u10a;
62   UINT8 m_u10b;
63   UINT8 m_u11a;
64   UINT8 m_u11b;
6765   bool m_u10_ca2;
6866   bool m_u10_cb2;
69   bool m_u10_timer;
67   bool m_u11_cb2;
68   bool m_timer_x;
7069   bool m_u11_timer;
7170   UINT8 m_digit;
72   UINT8 m_segment;
71   UINT8 m_counter;
72   UINT8 m_segment[5];
7373   virtual void machine_reset();
7474   required_device<m6800_cpu_device> m_maincpu;
7575   required_device<pia6821_device> m_pia_u10;
r31685r31686
308308WRITE_LINE_MEMBER( by17_state::u10_ca2_w )
309309{
310310   m_u10_ca2 = state;
311   if (!state)
312      m_counter = 0;
311313}
312     
314
313315WRITE_LINE_MEMBER( by17_state::u10_cb2_w )
314316{
315317}
r31685r31686
321323
322324WRITE_LINE_MEMBER( by17_state::u11_cb2_w )
323325{
326   m_u11_cb2 = state;
324327}
325328
326329READ8_MEMBER( by17_state::u10_a_r )
327330{
328   return m_u10_a;
331   return m_u10a;
329332}
330333
331334WRITE8_MEMBER( by17_state::u10_a_w )
332335{
333   static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
334   m_segment = data >> 4;
335   m_u10_a = data;
336   m_u10 = (data & 15) | (BIT(m_u11_a, 0) << 4);
336   m_u10a = data;
337337
338338   if (!m_u10_ca2)
339339   {
340      if (!BIT(m_u10, 0))
341         output_set_digit_value(m_digit, patterns[m_segment]);
340      m_counter++;
341
342      if (m_counter==1)
343         m_segment[0] = data>>4;
342344      else
343      if (m_u10==0x1d)
344         output_set_digit_value(8+m_digit, patterns[m_segment]);
345      if (m_counter==3)
346         m_segment[1] = data>>4;
345347      else
346      if (m_u10==0x1b)
347         output_set_digit_value(16+m_digit, patterns[m_segment]);
348      if (m_counter==5)
349         m_segment[2] = data>>4;
348350      else
349      if (m_u10==0x07)
350         output_set_digit_value(24+m_digit, patterns[m_segment]);
351      if (m_counter==7)
352         m_segment[3] = data>>4;
351353      else
352      if (!BIT(m_u10, 4))
353         output_set_digit_value(32+m_digit, patterns[m_segment]);
354      if (m_counter==9)
355         m_segment[4] = data>>4;
354356   }
355357}
356358
r31685r31686
358360{
359361   UINT8 data = 0;
360362
361   if (BIT(m_u10_a, 0))
363   if (BIT(m_u10a, 0))
362364      data |= m_io_x0->read();
363365
364   if (BIT(m_u10_a, 1))
366   if (BIT(m_u10a, 1))
365367      data |= m_io_x1->read();
366368
367   if (BIT(m_u10_a, 2))
369   if (BIT(m_u10a, 2))
368370      data |= m_io_x2->read();
369371
370   if (BIT(m_u10_a, 3))
372   if (BIT(m_u10a, 3))
371373      data |= m_io_x3->read();
372374
373   if (BIT(m_u10_a, 4))
375   if (BIT(m_u10a, 4))
374376      data |= m_io_x4->read();
375377
376   if (BIT(m_u10_a, 5))
378   if (BIT(m_u10a, 5))
377379      data |= m_io_dsw0->read();
378380
379   if (BIT(m_u10_a, 6))
381   if (BIT(m_u10a, 6))
380382      data |= m_io_dsw1->read();
381383
382   if (BIT(m_u10_a, 7))
384   if (BIT(m_u10a, 7))
383385      data |= m_io_dsw2->read();
384386
385387   if (m_u10_cb2)
r31685r31686
390392
391393WRITE8_MEMBER( by17_state::u10_b_w )
392394{
393   m_u10_b = data;
395   m_u10b = data;
394396}
395397
396398READ8_MEMBER( by17_state::u11_a_r )
397399{
398   return m_u11_a;
400   return m_u11a;
399401}
400402
401403WRITE8_MEMBER( by17_state::u11_a_w )
402404{
403   m_u11_a = data;
405   m_u11a = data;
404406
405   m_digit = 0xff;
406   if BIT(data, 2)
407      m_digit = 4;
408   else
409   if BIT(data, 3)
410      m_digit = 3;
411   else
412   if BIT(data, 4)
413      m_digit = 2;
414   else
415   if BIT(data, 5)
416      m_digit = 1;
417   else
418   if BIT(data, 6)
419      m_digit = 0;
420   else
421   if BIT(data, 7)
422      m_digit = 5;
407   if (!m_u10_ca2)
408   {
409      if BIT(data, 2)
410         m_digit = 5;
411      else
412      if BIT(data, 3)
413         m_digit = 4;
414      else
415      if BIT(data, 4)
416         m_digit = 3;
417      else
418      if BIT(data, 5)
419         m_digit = 2;
420      else
421      if BIT(data, 6)
422         m_digit = 1;
423      else
424      if BIT(data, 7)
425         m_digit = 0;
426
427      if (BIT(data, 0) && (m_counter > 8))
428      {
429         static const UINT8 patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
430         output_set_digit_value(m_digit, patterns[m_segment[0]]);
431         output_set_digit_value(10+m_digit, patterns[m_segment[1]]);
432         output_set_digit_value(20+m_digit, patterns[m_segment[2]]);
433         output_set_digit_value(30+m_digit, patterns[m_segment[3]]);
434         output_set_digit_value(40+m_digit, patterns[m_segment[4]]);
435      }
436   }
423437}
424438
425439WRITE8_MEMBER( by17_state::u11_b_w )
426440{
427   m_u11_b = data;
428   switch (data & 15)
441   m_u11b = data;
442   if (!m_u11_cb2)
429443   {
430      case 0x0: // chime 10
431         m_samples->start(1, 1);
432         break;
433      case 0x1: // chime 100
434         m_samples->start(2, 2);
435         break;
436      case 0x2: // chime 1000
437         m_samples->start(3, 3);
438         break;
439      case 0x3: // chime 10000
440         m_samples->start(0, 4);
441         break;
442      case 0x4:
443         break;
444      case 0x5: // knocker
445         m_samples->start(0, 6);
446         break;
447      case 0x6: // outhole
448         m_samples->start(0, 5);
449         break;
450      // from here, vary per game
451      case 0x7:
452      case 0x8:
453      case 0x9:
454         break;
455      case 0xa:
456      case 0xb:
457      case 0xc: // bumpers
458         m_samples->start(0, 0);
459         break;
460      case 0xd:
461      case 0xe:
462      case 0xf:
463         break;
444      switch (data & 15)
445      {
446         case 0x0: // chime 10
447            m_samples->start(1, 1);
448            break;
449         case 0x1: // chime 100
450            m_samples->start(2, 2);
451            break;
452         case 0x2: // chime 1000
453            m_samples->start(3, 3);
454            break;
455         case 0x3: // chime 10000
456            m_samples->start(0, 4);
457            break;
458         case 0x4:
459            break;
460         case 0x5: // knocker
461            m_samples->start(0, 6);
462            break;
463         case 0x6: // outhole
464            m_samples->start(0, 5);
465            break;
466         // from here, vary per game
467         case 0x7:
468         case 0x8:
469         case 0x9:
470            break;
471         case 0xa:
472         case 0xb:
473         case 0xc: // bumpers
474            m_samples->start(0, 0);
475            break;
476         case 0xd:
477         case 0xe:
478         case 0xf:
479            break;
480      }
464481   }
465482}
466483
467484void by17_state::machine_reset()
468485{
469   m_u10_a = 0;
470   m_u10_b = 0;
486   m_u10a = 0;
487   m_u10b = 0;
471488   m_u10_cb2 = 0;
472   m_u11_a = 0;
473   m_u11_b = 0;
474   m_u10_timer = 0;
489   m_u11a = 0;
490   m_u11b = 0;
491   m_timer_x = 0;
475492   m_u11_timer = 0;
476493}
477494
478DRIVER_INIT_MEMBER( by17_state, by17 )
479{
480}
481
482495// zero-cross detection
483TIMER_DEVICE_CALLBACK_MEMBER( by17_state::u10_timer )
496TIMER_DEVICE_CALLBACK_MEMBER( by17_state::timer_x )
484497{
485   m_u10_timer ^= 1;
486   m_pia_u10->cb1_w(m_u10_timer);
498   m_timer_x ^= 1;
499   m_pia_u10->cb1_w(m_timer_x);
487500}
488501
489502// 555 timer for display refresh
r31685r31686
516529   MCFG_PIA_CB2_HANDLER(WRITELINE(by17_state, u10_cb2_w))
517530   MCFG_PIA_IRQA_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
518531   MCFG_PIA_IRQB_HANDLER(DEVWRITELINE("maincpu", m6800_cpu_device, irq_line))
519   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_z", by17_state, u10_timer, attotime::from_hz(120)) // mains freq*2
532   MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_x", by17_state, timer_x, attotime::from_hz(120)) // mains freq*2
520533
521534   MCFG_DEVICE_ADD("pia_u11", PIA6821, 0)
522535   MCFG_PIA_READPA_HANDLER(READ8(by17_state, u11_a_r))
r31685r31686
627640/---------------------------------------------------------------*/
628641
629642
630GAME( 1976, bowarrow, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Bow & Arrow (Prototype)", GAME_IS_SKELETON_MECHANICAL)
631GAME( 1977, freedom,  0,        by17, by17, by17_state, by17, ROT0, "Bally", "Freedom", GAME_MECHANICAL)
632GAME( 1977, nightrdr, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 21)", GAME_MECHANICAL)
633GAME( 1977, nightr20, nightrdr, by17, by17, by17_state, by17, ROT0, "Bally", "Night Rider (rev. 20)", GAME_MECHANICAL)
634GAME( 1978, blackjck, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Black Jack (Pinball)", GAME_MECHANICAL)
635GAME( 1977, evelknie, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Evel Knievel", GAME_MECHANICAL)
636GAME( 1978, matahari, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Mata Hari", GAME_MECHANICAL)
637GAME( 1977, eightbll, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Eight Ball", GAME_MECHANICAL)
638GAME( 1978, pwerplay, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Power Play (Pinball)", GAME_MECHANICAL)
639GAME( 1978, stk_sprs, 0,        by17, by17, by17_state, by17, ROT0, "Bally", "Strikes and Spares", GAME_MECHANICAL)
643GAME( 1976, bowarrow, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Bow & Arrow (Prototype)", GAME_IS_SKELETON_MECHANICAL)
644GAME( 1977, freedom,  0,        by17, by17, driver_device, 0, ROT0, "Bally", "Freedom", GAME_MECHANICAL)
645GAME( 1977, nightrdr, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 21)", GAME_MECHANICAL)
646GAME( 1977, nightr20, nightrdr, by17, by17, driver_device, 0, ROT0, "Bally", "Night Rider (rev. 20)", GAME_MECHANICAL)
647GAME( 1978, blackjck, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Black Jack (Pinball)", GAME_MECHANICAL)
648GAME( 1977, evelknie, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Evel Knievel", GAME_MECHANICAL)
649GAME( 1978, matahari, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Mata Hari", GAME_MECHANICAL)
650GAME( 1977, eightbll, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Eight Ball", GAME_MECHANICAL)
651GAME( 1978, pwerplay, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Power Play (Pinball)", GAME_MECHANICAL)
652GAME( 1978, stk_sprs, 0,        by17, by17, driver_device, 0, ROT0, "Bally", "Strikes and Spares", GAME_MECHANICAL)
trunk/src/mame/drivers/by35.c
r31685r31686
111111   bool m_u11_cb2;
112112   bool m_timer_x;
113113   bool m_u11_timer;
114   bool m_6d;
114   bool m_7d;
115115   UINT8 m_digit;
116116   UINT8 m_counter;
117117   UINT8 m_segment[5];
r31685r31686
449449
450450   if (!m_u10_ca2)
451451   {
452      if (!m_6d & BIT(data, 1))
452      if (m_7d & BIT(data, 1))
453453         m_digit = 6;
454454      else
455455      if BIT(data, 2)
r31685r31686
550550
551551DRIVER_INIT_MEMBER( by35_state, by35_6 )
552552{
553   m_6d = 1;
553   m_7d = 0;
554554}
555555
556556DRIVER_INIT_MEMBER( by35_state, by35_7 )
557557{
558   m_6d = 0;
558   m_7d = 1;
559559}
560560
561561// zero-cross detection

Previous 199869 Revisions Next


© 1997-2024 The MAME Team