Previous 199869 Revisions Next

r20482 Saturday 26th January, 2013 at 11:47:03 UTC by Wilbert Pol
(MESS) supercon.c: Cleanups. It seems this driver regressed somewhere between 0.147 and now. (nw)
[src/mess/drivers]supercon.c

trunk/src/mess/drivers/supercon.c
r20481r20482
2727{
2828public:
2929   supercon_state(const machine_config &mconfig, device_type type, const char *tag)
30      : driver_device(mconfig, type, tag),
31   m_maincpu(*this, "maincpu"),
32   m_beep(*this, BEEPER_TAG)
30      : driver_device(mconfig, type, tag)
31      , m_maincpu(*this, "maincpu")
32      , m_beep(*this, BEEPER_TAG)
33      , m_b_white(*this, "B_WHITE")
34      , m_b_black(*this, "B_BLACK")
35      , m_b_clr(*this, "B_CLR")
36      , m_status_1(*this, "STATUS_1")
37      , m_status_2(*this, "STATUS_2")
38      , m_status_3(*this, "STATUS_3")
39      , m_status_4(*this, "STATUS_4")
40      , m_status_5(*this, "STATUS_5")
41      , m_status_6(*this, "STATUS_6")
42      , m_status_7(*this, "STATUS_7")
43      , m_status_8(*this, "STATUS_8")
44      , m_board_1(*this, "BOARD_1")
45      , m_board_2(*this, "BOARD_2")
46      , m_board_3(*this, "BOARD_3")
47      , m_board_4(*this, "BOARD_4")
48      , m_board_5(*this, "BOARD_5")
49      , m_board_6(*this, "BOARD_6")
50      , m_board_7(*this, "BOARD_7")
51      , m_board_8(*this, "BOARD_8")
3352   { }
3453
3554   required_device<cpu_device> m_maincpu;
r20481r20482
7493   TIMER_CALLBACK_MEMBER(mouse_click);
7594   TIMER_CALLBACK_MEMBER(update_irq);
7695   TIMER_DEVICE_CALLBACK_MEMBER(update_artwork);
96   void board_presave();
97   void board_postload();
98
99protected:
100   required_ioport m_b_white;
101   required_ioport m_b_black;
102   required_ioport m_b_clr;
103   required_ioport m_status_1;
104   required_ioport m_status_2;
105   required_ioport m_status_3;
106   required_ioport m_status_4;
107   required_ioport m_status_5;
108   required_ioport m_status_6;
109   required_ioport m_status_7;
110   required_ioport m_status_8;
111   required_ioport m_board_1;
112   required_ioport m_board_2;
113   required_ioport m_board_3;
114   required_ioport m_board_4;
115   required_ioport m_board_5;
116   required_ioport m_board_6;
117   required_ioport m_board_7;
118   required_ioport m_board_8;
119   void mouse_update();
77120};
78121
79122
r20481r20482
202245   }
203246}
204247
205static void mouse_update(running_machine &machine)
248void supercon_state::mouse_update()
206249{
207   supercon_state *state = machine.driver_data<supercon_state>();
208250   UINT8 port_input; // m_left;
209251   int i;
210252
211253/* border pieces and moving piece */
212254
213   port_input=machine.root_device().ioport("B_WHITE")->read();
255   port_input = m_b_white->read();
214256   if (port_input)
215257   {
216      i=get_first_bit(port_input);
217      state->m_moving_piece=state->m_border_pieces[i];
218      output_set_value("MOVING",state->m_moving_piece);
258      i = get_first_bit(port_input);
259      m_moving_piece = m_border_pieces[i];
260      output_set_value("MOVING", m_moving_piece);
219261      return;
220262   }
221263
222264
223   port_input=machine.root_device().ioport("B_BLACK")->read();
265   port_input = m_b_black->read();
224266   if (port_input)
225267   {
226      i=get_first_bit(port_input);
227      state->m_moving_piece=state->m_border_pieces[6+i];
228      output_set_value("MOVING",state->m_moving_piece);
268      i = get_first_bit(port_input);
269      m_moving_piece = m_border_pieces[6+i];
270      output_set_value("MOVING", m_moving_piece);
229271      return;
230272   }
231273
232274
233   port_input=machine.root_device().ioport("B_CLR")->read();
275   port_input = m_b_clr->read();
234276   if (port_input)
235277   {
236      if (state->m_moving_piece)
278      if (m_moving_piece)
237279      {
238         state->m_moving_piece=0;
239         output_set_value("MOVING",state->m_moving_piece);
280         m_moving_piece=0;
281         output_set_value("MOVING", m_moving_piece);
240282         return;
241283      }
242284   }
r20481r20482
332374   if (i==NOT_VALID)
333375      return 0xff;
334376
335   key_data=ioport(status_lines[i])->read();
377   switch ( i )
378   {
379      case 0: m_status_1->read(); break;
380      case 1: m_status_2->read(); break;
381      case 2: m_status_3->read(); break;
382      case 3: m_status_4->read(); break;
383      case 4: m_status_5->read(); break;
384      case 5: m_status_6->read(); break;
385      case 6: m_status_7->read(); break;
386      case 7: m_status_8->read(); break;
387   }
336388
337389   if (key_data != 0xc0)
338390   {
r20481r20482
388440      output_set_value("MOVING",m_moving_piece);
389441   }
390442
391   key_data=ioport(board_lines[i_18])->read();
443   switch ( i_18 )
444   {
445      case 0: m_board_1->read(); break;
446      case 1: m_board_2->read(); break;
447      case 2: m_board_3->read(); break;
448      case 3: m_board_4->read(); break;
449      case 4: m_board_5->read(); break;
450      case 5: m_board_6->read(); break;
451      case 6: m_board_7->read(); break;
452      case 7: m_board_8->read(); break;
453   }
392454
393455   if (key_data != 0xff)
394456   {
r20481r20482
511573
512574TIMER_DEVICE_CALLBACK_MEMBER(supercon_state::update_artwork)
513575{
514   mouse_update(machine());
576   mouse_update();
515577}
516578
517579TIMER_CALLBACK_MEMBER(supercon_state::update_irq)
518580{
519   machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
520   machine().device("maincpu")->execute().set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
581   m_maincpu->set_input_line(M6502_IRQ_LINE, ASSERT_LINE);
582   m_maincpu->set_input_line(M6502_IRQ_LINE, CLEAR_LINE);
521583}
522584
523585/* Save state call backs */
524586
525static void board_presave(supercon_state *state)
587void supercon_state::board_presave()
526588{
527   int i;
528   for (i=0;i<64;i++)
529      state->m_save_board[i]=state->m_board[i];
589   for (int i=0;i<64;i++)
590   {
591      m_save_board[i] = m_board[i];
592   }
530593}
531594
532static void board_postload(supercon_state *state)
595void supercon_state::board_postload()
533596{
534   int i;
535   for (i=0;i<64;i++)
536      state->m_board[i]=state->m_save_board[i];
597   for (int i=0;i<64;i++)
598   {
599      m_board[i] = m_save_board[i];
600   }
537601
538   state->set_pieces();
602   set_pieces();
539603}
540604
541605void supercon_state::machine_start()
r20481r20482
544608   m_timer_update_irq->adjust( attotime::zero, 0, attotime::from_hz(1000) );
545609   m_timer_mouse_click =  machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(supercon_state::mouse_click),this),NULL);
546610   save_item(NAME(m_save_board));
547   machine().save().register_postload(save_prepost_delegate(FUNC(board_postload),this));
548   machine().save().register_presave(save_prepost_delegate(FUNC(board_presave),this));
611   machine().save().register_postload(save_prepost_delegate(FUNC(supercon_state::board_postload),this));
612   machine().save().register_presave(save_prepost_delegate(FUNC(supercon_state::board_presave),this));
549613}
550614
551615void supercon_state::machine_reset()

Previous 199869 Revisions Next


© 1997-2024 The MAME Team