Four player adapters: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Output ($4016/$4017 read): link "bit deletion" because I'm about to cite this page in an update to an answer on Arqade (gaming.stackexchange.com))
(They're building a compatibility list at https://forums.nesdev.com/viewtopic.php?p=204677#p204677)
Line 7: Line 7:
D3 and D4 are not connected on the Four Score, so accessories like the [[Zapper]] and [[Power Pad]] will not work.
D3 and D4 are not connected on the Four Score, so accessories like the [[Zapper]] and [[Power Pad]] will not work.


== Protocol ==
=== Input ($4016 write) ===
=== Input ($4016 write) ===


Line 40: Line 41:
Controllers #3, #4, and the two signatures are only sent when the Four Score switch is in the 4 player position.  When the switch is in the 2 player position those reads get the same result as a normal controller, either $00 or $FF depending on the controller.
Controllers #3, #4, and the two signatures are only sent when the Four Score switch is in the 4 player position.  When the switch is in the 2 player position those reads get the same result as a normal controller, either $00 or $FF depending on the controller.


=== Building new hardware from scratch ===
== Hardware ==


If you find yourself in the situation where you want to use the Four Score electrical interface for a project, but don't want to use up a four score, you can simply use six shift registers instead. Daisy-chain three shift registers together:
If you find yourself in the situation where you want to use the Four Score electrical interface for a project, but don't want to use up a Four Score, you can simply use six shift registers instead. Daisy-chain three shift registers together:


If using 4021s:
If using 4021s:
Line 77: Line 78:
* 3xx becomes 4xx
* 3xx becomes 4xx
* IC3 pins denoted with ¹ and ² are swapped
* IC3 pins denoted with ¹ and ² are swapped
== Compatible games ==
From [http://bootgod.dyndns.org:7777/search.php?peripherals_op=OR&peripherals%5B%5D=fourplayer&group=groupid NesCartDB]:
*''Gauntlet II''
*''Greg Norman's Golf Power''
*''Harlem Globetrotters''
*''Indy Heat''
*''Kings of the Beach''
*''Kunio-kun no Nekketsu Soccer League''
*''M.U.L.E.''
*''Magic Johnson's Fast Break''
*''Monster Truck Rally''
*''NES Play Action Football''
*''A Nightmare on Elm Street''
*''Nintendo World Cup'' (and multicarts that contain it)
*''R.C. Pro-Am II''
*''Roundball: 2-on-2 Challenge''
*''Smash T.V.'' (twin-stick for 2 players)
*''Spot''
*''Super Jeopardy!''
*''Super Off Road''
*''Super Spike V'Ball''
*''Swords and Serpents''
*''Top Players' Tennis''
Homebrew games:
*''Double Action Blaster Guys'' becomes ''Quadruple Action Blaster Guys'' when Four Score is connected
*''Spacey McRacey''
*''Super PakPak''
Tech demos:
*Eighty
*allpads

Revision as of 01:03, 17 September 2017

The NES Four Score and NES Satellite accessories allow four NES controllers to be connected to the NES's two controller ports. Controllers connected to this accessory are read using the same process as the standard controller. After the normal 8 reads from one port to get one controller data, 8 more are done to get another controller.

Note that the NES Four Score is not compatible with the Famicom 4-Players adapter, which connects the 3rd and 4th players to the 2s bit instead of the 1s bit; that functionality is described in greater detail on the standard controller article.

D3 and D4 are not connected on the Four Score, so accessories like the Zapper and Power Pad will not work.

Protocol

Input ($4016 write)

7  bit  0
---- ----
xxxx xxxS
        |
        +- Controller shift register strobe

Writing 1 to this bit will record the state of each button on the controller. Writing 0 afterwards will allow the buttons to be read back, one at a time.


Output ($4016/$4017 read)

7  bit  0
---- ----
xxxx xxxD
        |
        +- Serial controller data
  1. Read $4016 8 times to get the 8 buttons for controller #1.
  2. Read $4016 8 more times to get the buttons for controller #3.
  3. Read $4016 8 more times to get the signature, $10.
  4. Read $4017 8 times to get the 8 buttons for controller #2.
  5. Read $4017 8 more times to get the buttons for controller #4.
  6. Read $4017 8 more times to get the signature, $20.

Button status for each controller is returned in the following order, as on the standard controller: A, B, Select, Start, Up, Down, Left, Right. 1 if pressed, 0 if not pressed.

The $10 and $20 signatures are sent most significant bit first. They can be used to detect 1. whether the Four Score switch is in the 4 player position and 2. whether a DMC sample fetch caused a bit deletion.

Controllers #3, #4, and the two signatures are only sent when the Four Score switch is in the 4 player position. When the switch is in the 2 player position those reads get the same result as a normal controller, either $00 or $FF depending on the controller.

Hardware

If you find yourself in the situation where you want to use the Four Score electrical interface for a project, but don't want to use up a Four Score, you can simply use six shift registers instead. Daisy-chain three shift registers together:

If using 4021s:

           IC1                 IC2                 IC3
          .-\/-.              .-\/-.              .-\/-.
       1A |1 16| Vcc       3A |1 16| Vcc      Vcc |1 16| Vcc
       nc |2 15| 1B        nc |2 15| 3B        nc |2 15| Vcc
NES P1 D0 |3 14| 1Sl       ZZ |3 14| 3Sl       YY |3 14| Vcc¹
      1Up |4 13| 1St      3Up |4 13| 3St      Vcc |4 13| Gnd²
      1Dn |5 12| nc       3Dn |5 12| nc       Vcc |5 12| nc
      1Lt |6 11| from ZZ  3Lt |6 11| from YY  Vcc |6 11| Gnd
      1Rt |7 10| NES CLK  3Rt |7 10| NES CLK  Vcc |7 10| NES CLK
      Gnd |8  9| NES OUT  Gnd |8  9| NES OUT  Gnd |8  9| NES OUT
          '----'              '----'              '----'

If using 74'165s:

         IC1                   IC2                 IC3
        .-\/-.                .-\/-.              .-\/-.
NES OUT |1 16| Vcc    NES OUT |1 16| Vcc  NES OUT |1 16| Vcc
NES CLK |2 15| Gnd    NES CLK |2 15| Gnd  NES CLK |2 15| Gnd
    1St |3 14| 1Up        3St |3 14| 3Up     ²Gnd |3 14| Vcc
    1Sl |4 13| 1Dn        3Sl |4 13| 3Dn     ¹Vcc |4 13| Vcc
     1B |5 12| 1Lt         3B |5 12| 3Lt      Vcc |5 12| Vcc
     1A |6 11| 1Rt         3A |6 11| 3Rt      Vcc |6 11| Vcc
     nc |7 10| from ZZ     nc |7 10| from YY   nc |7 10| Gnd
    Gnd |8  9| NES P1 D0  Gnd |8  9| ZZ       Gnd |8  9| YY
        '----'                '----'              '----'

For players 2 and 4, repeat the above, but change:

  • NES P1 D0 becomes NES P2 D0
  • 1xx becomes 2xx
  • 3xx becomes 4xx
  • IC3 pins denoted with ¹ and ² are swapped

Compatible games

From NesCartDB:

  • Gauntlet II
  • Greg Norman's Golf Power
  • Harlem Globetrotters
  • Indy Heat
  • Kings of the Beach
  • Kunio-kun no Nekketsu Soccer League
  • M.U.L.E.
  • Magic Johnson's Fast Break
  • Monster Truck Rally
  • NES Play Action Football
  • A Nightmare on Elm Street
  • Nintendo World Cup (and multicarts that contain it)
  • R.C. Pro-Am II
  • Roundball: 2-on-2 Challenge
  • Smash T.V. (twin-stick for 2 players)
  • Spot
  • Super Jeopardy!
  • Super Off Road
  • Super Spike V'Ball
  • Swords and Serpents
  • Top Players' Tennis

Homebrew games:

  • Double Action Blaster Guys becomes Quadruple Action Blaster Guys when Four Score is connected
  • Spacey McRacey
  • Super PakPak

Tech demos:

  • Eighty
  • allpads