Previous 199869 Revisions Next

r23703 Friday 14th June, 2013 at 10:22:58 UTC by Fabio Priuli
(MESS) NES input cleanup, part 2 (Crazy Climber "controller" was just a set of sticks to
put on the standard controls and it was Japan-only + Famicom supported a single lightgun). nw.
[src/mess/drivers]nes.c
[src/mess/machine]nes.c

trunk/src/mess/machine/nes.c
r23702r23703
288288      ret |= ((m_in_1.i0 >> m_in_1.shift) & 0x01);
289289
290290   /* zapper */
291   if ((cfg & 0x00f0) == 0x0030)
291   if ((cfg & 0x00f0) == 0x0020)
292292   {
293293      int x = m_in_1.i1;  /* read Zapper x-position */
294294      int y = m_in_1.i2;  /* read Zapper y-position */
r23702r23703
360360      crosshair_set_screen(machine(), 0, CROSSHAIR_SCREEN_NONE);
361361   }
362362
363   if ((m_io_ctrlsel->read() & 0x00f0) == 0x0030)
363   if ((m_io_ctrlsel->read() & 0x00f0) == 0x0020)
364364   {
365365      /* enable lightpen crosshair */
366366      crosshair_set_screen(machine(), 1, CROSSHAIR_SCREEN_ALL);
r23702r23703
434434         m_in_0.i2 = m_io_zapper1_y->read();
435435         break;
436436         
437      case 0x06:  /* crazy climber controller */
437      case 0x06:  /* crazy climber controller (left stick) */
438438         m_in_0.i0 = m_io_cc_left->read();
439         m_in_1.i0 = m_io_cc_right->read();
440439         break;
441440   }
442441   
r23702r23703
447446         m_in_1.i0 = m_io_pad[1]->read();
448447         break;
449448         
450      case 0x03:  /* zapper 2 */
449      case 0x02:  /* zapper 2 */
451450         m_in_1.i0 = m_io_zapper2_t->read();
452451         m_in_1.i1 = m_io_zapper2_x->read();
453452         m_in_1.i2 = m_io_zapper2_y->read();
r23702r23703
457456         m_in_1.i0 = (UINT8) ((UINT8) m_io_paddle->read() + (UINT8)0x52) ^ 0xff;
458457         break;
459458         
459      case 0x06:  /* crazy climber controller (right stick) */
460         m_in_1.i0 = m_io_cc_right->read();
461         break;
462
460463      case 0x07: /* Mahjong Panel */
461464         if (data & 0xf8)
462465            logerror("Error: Mahjong panel read with mux data %02x\n", (data & 0xfe));
trunk/src/mess/drivers/nes.c
r23702r23703
5858ADDRESS_MAP_END
5959
6060
61static INPUT_PORTS_START( nes_controllers )
61static INPUT_PORTS_START( nes_pads12 )
6262   PORT_START("PAD1")  /* Joypad 1 */
6363   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P1 A") PORT_PLAYER(1)  PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0001)
6464   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P1 B") PORT_PLAYER(1)  PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0001)
r23702r23703
7979   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2)              PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0010)
8080   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2)             PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0010)
8181
82INPUT_PORTS_END
83
84static INPUT_PORTS_START( nes_pads34 )
8285   PORT_START("PAD3")  /* Joypad 3 */
8386   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_NAME("P3 A") PORT_PLAYER(3)  PORT_CONDITION("CTRLSEL", 0x0f00, EQUALS, 0x0100)
8487   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_NAME("P3 B") PORT_PLAYER(3)  PORT_CONDITION("CTRLSEL", 0x0f00, EQUALS, 0x0100)
r23702r23703
99102   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(4)              PORT_CONDITION("CTRLSEL", 0xf000, EQUALS, 0x1000)
100103   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(4)             PORT_CONDITION("CTRLSEL", 0xf000, EQUALS, 0x1000)
101104
105INPUT_PORTS_END
106
107static INPUT_PORTS_START( nes_zapper1 )
102108   PORT_START("ZAPPER1_X")  /* P1 zapper */
103109   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_MINMAX(0,255) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0002)
104110   PORT_START("ZAPPER1_Y")  /* P1 zapper */
105111   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_MINMAX(0,255) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0002)
106112   PORT_START("ZAPPER1_T")  /* P1 zapper trigger */
107113   PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("P1 Lightgun Trigger") PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0002)
114INPUT_PORTS_END
108115
116static INPUT_PORTS_START( nes_zapper2 )
109117   PORT_START("ZAPPER2_X")  /* P2 zapper */
110   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_MINMAX(0,255 ) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0030)
118   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_X) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_SENSITIVITY(70) PORT_KEYDELTA(30) PORT_MINMAX(0,255 ) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0020)
111119   PORT_START("ZAPPER2_Y")  /* P2 zapper */
112   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_MINMAX(0,255 ) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0030)
120   PORT_BIT( 0xff, 0x80, IPT_LIGHTGUN_Y) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_SENSITIVITY(50) PORT_KEYDELTA(30) PORT_MINMAX(0,255 ) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0020)
113121   PORT_START("ZAPPER2_T")  /* P2 zapper trigger */
114   PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("P2 Lightgun Trigger") PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0030)
122   PORT_BIT( 0x03, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_NAME("P2 Lightgun Trigger") PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0020)
123INPUT_PORTS_END
115124
125static INPUT_PORTS_START( nes_paddle )
116126   PORT_START("PADDLE")  /* Arkanoid paddle */
117127   PORT_BIT( 0xff, 0x7f, IPT_PADDLE) PORT_SENSITIVITY(25) PORT_KEYDELTA(3) PORT_MINMAX(0x62,0xf2) PORT_PLAYER(2) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0040)
128INPUT_PORTS_END
118129
130static INPUT_PORTS_START( nes_cclimb )
119131   PORT_START("CC_LEFT")
120132   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
121133   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
r23702r23703
127139   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKLEFT_RIGHT ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
128140
129141   PORT_START("CC_RIGHT")
130   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
131   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
132   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
133   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
134   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_PLAYER(1)   PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
135   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
136   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
137   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) PORT_PLAYER(1)PORT_CONDITION("CTRLSEL", 0x000f, EQUALS, 0x0006)
138
142   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
143   PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
144   PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
145   PORT_BIT( 0x08, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_PLAYER(1)             PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
146   PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_UP ) PORT_PLAYER(1)   PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
147   PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
148   PORT_BIT( 0x40, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_LEFT ) PORT_PLAYER(1) PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
149   PORT_BIT( 0x80, IP_ACTIVE_HIGH, IPT_JOYSTICKRIGHT_RIGHT ) PORT_PLAYER(1)PORT_CONDITION("CTRLSEL", 0x00f0, EQUALS, 0x0060)
139150INPUT_PORTS_END
140151
141152static INPUT_PORTS_START( fc_keyboard )
r23702r23703
392403INPUT_PORTS_END
393404
394405static INPUT_PORTS_START( nes )
395   PORT_INCLUDE( nes_controllers )
406   PORT_INCLUDE( nes_pads12 )
407   PORT_INCLUDE( nes_pads34 )
408   PORT_INCLUDE( nes_zapper1 )
409   PORT_INCLUDE( nes_zapper2 )
410   PORT_INCLUDE( nes_paddle )
396411
397412   PORT_START("CTRLSEL")  /* Select Controller Type */
398413   PORT_CONFNAME( 0x000f, 0x0001, "P1 Controller")
399414   PORT_CONFSETTING(  0x0000, "Unconnected" )
400415   PORT_CONFSETTING(  0x0001, "Gamepad" )
401416   PORT_CONFSETTING(  0x0002, "Zapper" )
402   PORT_CONFSETTING(  0x0006, "Crazy Climber pad" )
403417   PORT_CONFNAME( 0x00f0, 0x0010, "P2 Controller")
404418   PORT_CONFSETTING(  0x0000, "Unconnected" )
405419   PORT_CONFSETTING(  0x0010, "Gamepad" )
406   PORT_CONFSETTING(  0x0030, "Zapper" )
420   PORT_CONFSETTING(  0x0020, "Zapper" )
407421   PORT_CONFSETTING(  0x0040, "Arkanoid paddle" )
408422//  PORT_CONFSETTING(  0x0050, "Family Trainer" )
409423   PORT_CONFNAME( 0x0f00, 0x0000, "P3 Controller")
r23702r23703
423437INPUT_PORTS_END
424438
425439static INPUT_PORTS_START( famicom )
426   PORT_INCLUDE( nes )
440   PORT_INCLUDE( nes_pads12 )
441   PORT_INCLUDE( nes_pads34 )
442   PORT_INCLUDE( nes_zapper2 )
443   PORT_INCLUDE( nes_paddle )
444   // Crazy Climber is not really a separate controller, but a couple of small sticks to be
445   // put on top of d-pads of the regular controllers. Users should then control the game
446   // by using both controllers, turned 90 degrees, as a couple of dual sticks as in the arcade
447   PORT_INCLUDE( nes_cclimb )
427448   PORT_INCLUDE( fc_keyboard )
428449   PORT_INCLUDE( subor_keyboard )
429450   PORT_INCLUDE( mahjong_panel )
430451
431   PORT_MODIFY("CTRLSEL")  /* Select Controller Type */
452   PORT_START("CTRLSEL")  /* Select Controller Type */
432453   PORT_CONFNAME( 0x000f, 0x0001, "P1 Controller")
433454   PORT_CONFSETTING(  0x0000, "Unconnected" )
434455   PORT_CONFSETTING(  0x0001, "Gamepad" )
435   PORT_CONFSETTING(  0x0002, "Zapper" )
436   PORT_CONFSETTING(  0x0006, "Crazy Climber pad" )
456   PORT_CONFSETTING(  0x0006, "Crazy Climber pad (Left)" )
437457   PORT_CONFSETTING(  0x0008, "FC Keyboard" )
438458   PORT_CONFSETTING(  0x0009, "Subor Keyboard" )
439459   PORT_CONFNAME( 0x00f0, 0x0010, "P2 Controller")
440460   PORT_CONFSETTING(  0x0000, "Unconnected" )
441461   PORT_CONFSETTING(  0x0010, "Gamepad" )
442   PORT_CONFSETTING(  0x0030, "Zapper" )
462   PORT_CONFSETTING(  0x0020, "Light Gun" )
443463   PORT_CONFSETTING(  0x0040, "Arkanoid paddle" )
444464//  PORT_CONFSETTING(  0x0050, "Family Trainer" )
465   PORT_CONFSETTING(  0x0060, "Crazy Climber pad (Right)" )
445466   PORT_CONFSETTING(  0x0070, "Mahjong Panel" )
467   PORT_CONFNAME( 0x0f00, 0x0000, "P3 Controller")
468   PORT_CONFSETTING(  0x0000, "Unconnected" )
469   PORT_CONFSETTING(  0x0100, "Gamepad" )
470   PORT_CONFNAME( 0xf000, 0x0000, "P4 Controller")
471   PORT_CONFSETTING(  0x0000, "Unconnected" )
472   PORT_CONFSETTING(  0x1000, "Gamepad" )
446473
474   PORT_START("CONFIG")  /* configuration */
475   PORT_CONFNAME( 0x01, 0x00, "Draw Top/Bottom 8 Lines")
476   PORT_CONFSETTING(    0x01, DEF_STR(No) )
477   PORT_CONFSETTING(    0x00, DEF_STR(Yes) )
478   PORT_CONFNAME( 0x02, 0x00, "Enforce 8 Sprites/line")
479   PORT_CONFSETTING(    0x02, DEF_STR(No) )
480   PORT_CONFSETTING(    0x00, DEF_STR(Yes) )
481
447482   PORT_START("FLIPDISK") /* fake keys */
448483   PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_BUTTON3) PORT_NAME("Change Disk Side")
449484INPUT_PORTS_END

Previous 199869 Revisions Next


© 1997-2024 The MAME Team