Previous 199869 Revisions Next

r20655 Friday 1st February, 2013 at 19:35:26 UTC by Wilbert Pol
(MESS) vc4000.c: Reduce tagmap lookups (nw)
[src/mess/drivers]vc4000.c
[src/mess/includes]vc4000.h
[src/mess/video]vc4000.c

trunk/src/mess/includes/vc4000.h
r20654r20655
7272{
7373public:
7474   vc4000_state(const machine_config &mconfig, device_type type, const char *tag)
75      : driver_device(mconfig, type, tag),
76   m_cass(*this, CASSETTE_TAG)
75      : driver_device(mconfig, type, tag)
76      , m_cass(*this, CASSETTE_TAG)
77      , m_maincpu(*this, "maincpu")
78      , m_keypad1_1(*this, "KEYPAD1_1")
79      , m_keypad1_2(*this, "KEYPAD1_2")
80      , m_keypad1_3(*this, "KEYPAD1_3")
81      , m_panel(*this, "PANEL")
82      , m_keypad2_1(*this, "KEYPAD2_1")
83      , m_keypad2_2(*this, "KEYPAD2_2")
84      , m_keypad2_3(*this, "KEYPAD2_3")
85#ifndef ANALOG_HACK
86      , m_io_joy1_x(*this, "JOY1_X")
87      , m_io_joy1_y(*this, "JOY1_Y")
88      , m_io_joy2_x(*this, "JOY2_X")
89      , m_io_joy2_y(*this, "JOY2_Y")
90#else
91      , m_joys(*this, "JOYS")
92      , m_config(*this, "CONFIG")
93#endif
7794   { }
7895
7996   DECLARE_WRITE8_MEMBER(vc4000_sound_ctl);
r20654r20655
98115   virtual void palette_init();
99116   UINT32 screen_update_vc4000(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
100117   INTERRUPT_GEN_MEMBER(vc4000_video_line);
118
119protected:
120   required_device<cpu_device> m_maincpu;
121   required_ioport m_keypad1_1;
122   required_ioport m_keypad1_2;
123   required_ioport m_keypad1_3;
124   required_ioport m_panel;
125   required_ioport m_keypad2_1;
126   required_ioport m_keypad2_2;
127   required_ioport m_keypad2_3;
128#ifndef ANALOG_HACK
129   required_ioport m_io_joy1_x;
130   required_ioport m_io_joy1_y;
131   required_ioport m_io_joy2_x;
132   required_ioport m_io_joy2_y;
133#else
134   required_ioport m_joys;
135   required_ioport m_config;
136#endif
101137};
102138
103139/*----------- defined in audio/vc4000.c -----------*/
trunk/src/mess/video/vc4000.c
r20654r20655
115115
116116#ifndef ANALOG_HACK
117117   case 0xcc:
118      if (!activeS2650_FO)) data=ioport("JOY1_X")->read();
119      else data=ioport("JOY1_Y")->read();
118      if (!activeS2650_FO)) data = m_io_joy1_x->read();
119      else data = m_io_joy1_y->read();
120120      break;
121121   case 0xcd:
122      if (!activecpu_get_reg(S2650_FO)) data=ioport("JOY2_X")->read();
123      else data=ioport("JOY2_Y")->read();
122      if (!activecpu_get_reg(S2650_FO)) data = m_io_joy2_x->read();
123      else data = m_io_joy2_y->read();
124124      break;
125125#else
126126
127127   case 0xcc:      /* left joystick */
128      if (ioport("CONFIG")->read()&1)
128      if (m_config->read()&1)
129129      {       /* paddle */
130         if (!machine().device("maincpu")->state().state_int(S2650_FO))
130         if (!m_maincpu->state_int(S2650_FO))
131131         {
132            data = ioport("JOYS")->read() & 0x03;
132            data = m_joys->read() & 0x03;
133133            switch (data)
134134            {
135135            case 0x01:
r20654r20655
147147         }
148148         else
149149         {
150            data = ioport("JOYS")->read() & 0x0c;
150            data = m_joys->read() & 0x0c;
151151            switch (data)
152152            {
153153            case 0x08:
r20654r20655
166166      }
167167      else
168168      {       /* buttons */
169         if (!machine().device("maincpu")->state().state_int(S2650_FO))
169         if (!m_maincpu->state_int(S2650_FO))
170170         {
171            data = ioport("JOYS")->read() & 0x03;
171            data = m_joys->read() & 0x03;
172172            switch (data)
173173            {
174174            case 0x01:
r20654r20655
184184         }
185185         else
186186         {
187            data = ioport("JOYS")->read() & 0x0c;
187            data = m_joys->read() & 0x0c;
188188            switch (data)
189189            {
190190            case 0x08:
r20654r20655
202202      break;
203203
204204   case 0xcd:      /* right joystick */
205      if (ioport("CONFIG")->read()&1)
205      if (m_config->read()&1)
206206      {
207         if (!machine().device("maincpu")->state().state_int(S2650_FO))
207         if (!m_maincpu->state_int(S2650_FO))
208208         {
209            data = ioport("JOYS")->read() & 0x30;
209            data = m_joys->read() & 0x30;
210210            switch (data)
211211            {
212212            case 0x10:
r20654r20655
224224         }
225225         else
226226         {
227            data = ioport("JOYS")->read() & 0xc0;
227            data = m_joys->read() & 0xc0;
228228            switch (data)
229229            {
230230            case 0x80:
r20654r20655
243243      }
244244      else
245245      {
246         if (!machine().device("maincpu")->state().state_int(S2650_FO))
246         if (!m_maincpu->state_int(S2650_FO))
247247         {
248            data = ioport("JOYS")->read() & 0x30;
248            data = m_joys->read() & 0x30;
249249            switch (data)
250250            {
251251            case 0x10:
r20654r20655
261261         }
262262         else
263263         {
264            data = ioport("JOYS")->read() & 0xc0;
264            data = m_joys->read() & 0xc0;
265265            switch (data)
266266            {
267267            case 0x80:
r20654r20655
593593
594594   if (m_irq_pause>10)
595595   {
596      machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
596      m_maincpu->set_input_line(0, CLEAR_LINE);
597597      m_irq_pause = 0;
598598   }
599599
r20654r20655
639639      (m_video.sprites[1].finished_now) |
640640      (m_video.sprites[0].finished_now)) && (!m_irq_pause))
641641      {
642         machine().device("maincpu")->execute().set_input_line_and_vector(0, ASSERT_LINE, 3);
642         m_maincpu->set_input_line_and_vector(0, ASSERT_LINE, 3);
643643         m_irq_pause=1;
644644      }
645645}
trunk/src/mess/drivers/vc4000.c
r20654r20655
114114   switch(offset & 0x0f)
115115   {
116116   case 0x08:
117      data = ioport("KEYPAD1_1")->read();
117      data = m_keypad1_1->read();
118118      break;
119119   case 0x09:
120      data = ioport("KEYPAD1_2")->read();
120      data = m_keypad1_2->read();
121121      break;
122122   case 0x0a:
123      data = ioport("KEYPAD1_3")->read();
123      data = m_keypad1_3->read();
124124      break;
125125   case 0x0b:
126      data = ioport("PANEL")->read();
126      data = m_panel->read();
127127      break;
128128   case 0x0c:
129      data = ioport("KEYPAD2_1")->read();
129      data = m_keypad2_1->read();
130130      break;
131131   case 0x0d:
132      data = ioport("KEYPAD2_2")->read();
132      data = m_keypad2_2->read();
133133      break;
134134   case 0x0e:
135      data = ioport("KEYPAD2_3")->read();
135      data = m_keypad2_3->read();
136136      break;
137137   }
138138   return data;

Previous 199869 Revisions Next


© 1997-2024 The MAME Team