Input devices: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Other I/O devices: more orphans)
(→‎Usage of port pins by hardware type: Removes read clock signal from controllers that likely don't actually use it.)
 
(2 intermediate revisions by the same user not shown)
Line 57: Line 57:
{| class="wikitable"
{| class="wikitable"
|-
|-
!rowspan="2" style="text-align: right;" valign="bottom"|signal
|style="text-align: left;"|type
!colspan="3" style="border-left: 2px solid black;"|output
!colspan="3" style="border-left: 2px solid black;"|output
!colspan="6" style="border-left: 2px solid black;"|Joypad 1
!colspan="6" style="border-left: 2px solid black;"|Joypad 1
Line 63: Line 63:
!style="border-left: 2px solid black;"|audio output
!style="border-left: 2px solid black;"|audio output
|-
|-
|style="text-align: left;"|signal
!style="border-left: 2px solid black;"|OUT2
!style="border-left: 2px solid black;"|OUT2
!OUT1
!OUT1
Line 82: Line 83:
|access method
|access method
|colspan="3" style="text-align: center; border-left: 2px solid black;"|write $4016
|colspan="3" style="text-align: center; border-left: 2px solid black;"|write $4016
|style="border-left: 2px solid black;"|<ref>/OE1 is activated by reading $4016</ref>
|style="border-left: 2px solid black;"|<ref>/OE1 is activated by reading $4016.</ref>
|colspan="5" style="text-align: center; border-left: 2px solid gray;"|read $4016
|colspan="5" style="text-align: center; border-left: 2px solid gray;"|read $4016
|style="border-left: 2px solid black;"|<ref>/OE2 is activated by reading $4017</ref>
|style="border-left: 2px solid black;"|<ref>/OE2 is activated by reading $4017.</ref>
|colspan="5" style="text-align: center; border-left: 2px solid gray;"|read $4017
|colspan="5" style="text-align: center; border-left: 2px solid gray;"|read $4017
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
!style="text-align: left;"|available at
!style="text-align: left; border-top: 2px solid black;"|available on these ports
!colspan="3" style="border-left: 2px solid black;"|  
!colspan="3" style="border-left: 2px solid black; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
!colspan="5" style="border-left: 2px solid gray;"|  
!colspan="5" style="border-left: 2px solid gray; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
!colspan="5" style="border-left: 2px solid gray;"|  
!colspan="5" style="border-left: 2px solid gray; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
|-
|-
|NES [[Controller port pinout|controller port]] 1
|Controller port 1 (AV Famicom)
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid gray;"|  
|yes
|  
|  
|  
|  
|yes
|  
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 114: Line 115:
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|Famicom controller 1 internal connection
|Controller port 1 (Famicom (internal))
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|  
|  
|yes
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 132: Line 133:
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|AV Famicom controller port 1
|[[Controller port pinout|Controller port]] 1 (NES)
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|D4
|D3
|  
|  
|  
|  
|  
|D0
|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 150: Line 151:
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Controller port pinout|controller port]] 2
|Controller port 2 (AV Famicom)
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 160: Line 161:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid gray;"|  
|yes
|  
|  
|  
|  
|  
|yes
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|Famicom controller 2 internal connection
|Controller port 2 (Famicom (internal))
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|yes
|D2
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|  
|  
|yes
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|AV Famicom controller port 2
|[[Controller port pinout|Controller port]] 2 (NES)
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 196: Line 197:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|D4
|D3
|  
|  
|  
|  
|  
|D0
|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Expansion port#NES|expansion port]]
|[[Expansion port#Famicom|Expansion port]] (Famicom)
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|OUT2
|yes
|OUT1
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|yes
|yes
|yes
|yes
|yes
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid gray;"|yes
|yes
|yes
|yes
|yes
|style="border-left: 2px solid black;"|yes
|-
|Famicom [[Expansion port#Famicom|expansion port]]
|style="border-left: 2px solid black;"|yes
|yes
|yes
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|yes
|D1
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid gray;"|D4
|yes
|D3
|yes
|D2
|yes
|D1
|yes
|D0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black; text-align: center;"|AUDIO
|-
|[[Expansion port#NES|Expansion port]] (NES)
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|D0
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|D0
|style="border-left: 2px solid black; text-align: center;"|AUDIO
|-
|-
!style="text-align: left;"|used by
!style="text-align: left; border-top: 2px solid black;"|used by these devices
!colspan="3" style="border-left: 2px solid black;"|  
!colspan="3" style="border-left: 2px solid black; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
!colspan="5" style="border-left: 2px solid gray;"|  
!colspan="5" style="border-left: 2px solid gray; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
!colspan="5" style="border-left: 2px solid gray;"|  
!colspan="5" style="border-left: 2px solid gray; border-top: 2px solid black;"|  
!style="border-left: 2px solid black;"|  
!style="border-left: 2px solid black; border-top: 2px solid black;"|  
|-
|-
|[[Standard controller|Controller]] 1
|[[Standard controller|Controller]] (port 1)<ref name="port">Controllers using NES ports can be plugged into either port, using that port's /OE and data lines. However, games may expect a controller to only be in a specific port.</ref>
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|  
|  
|yes
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 266: Line 267:
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|[[Standard controller|Controller]] 2
|[[Standard controller|Controller]] (port 2)<ref name="port" />
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|<ref>$4016 D2 is used by Famicom controller 2 for microphone input.</ref>
|
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|  
|  
|yes
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|Famicom expansion [[Standard controller|controller]] 1
|[[Standard controller|Controller]] (Famicom controller 2)<ref>The Famicom controller 2 has a microphone that sends audio input over $4016 D2. This is not affected by OUT0 nor /OE2.</ref>
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|
|D2
|
|
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|yes
|  
|  
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|[[Standard controller|Controller]] (expansion port)
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|D1
|  
|  
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|
|  
|  
|style="border-left: 2px solid black;"|<ref>A Famicom expansion controller may connect the audio output signal to a headphone jack (for example: IQ502 joypad).</ref>
|
|
|
|style="border-left: 2px solid black; text-align: center;"|AUDIO<ref>A Famicom expansion controller may connect the audio output signal to a headphone jack (for example: IQ502 joypad).</ref>
|-
|-
|Famicom expansion [[Standard controller|controller]] 2
|[[Arkanoid controller]] (port 2)<ref name="port" />
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 312: Line 331:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|D4
|D3
|  
|  
|  
|  
|yes
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Four Score]] controller 1 & 3
|[[Arkanoid controller]] (expansion port)
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|  
|  
|yes
|  
|style="border-left: 2px solid black;"|yes
|D1
|
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|D1
|  
|  
|yes
|style="border-left: 2px solid black;"|
|-
|[[Arkanoid controller#Arkanoid II expansion port|Arkanoid II controller]] (2 controllers)
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|D1
|  
|  
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|D4
|D3
|
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Four Score]] controller 2 & 4
|[[Bandai Hyper Shot]]
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|
|
|D1
|
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|
|
|  
|  
|yes
|style="border-left: 2px solid black; text-align: center;"|AUDIO
|-
|[[Exciting Boxing Punching Bag]]
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|OUT1
|
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|
|  
|  
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|
|-
|[[FAM-NET Keyboard]]
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|  
|  
|yes
|  
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|[[Four Score|Hori 4 Players Adapter]] controller 1 & 3
|[[Power Pad#Family Trainer Mat|Family Trainer Mat]]
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|  
|  
|yes
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid gray;"|
|  
|  
|  
|  
|yes
|  
|  
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|
|style="border-left: 2px solid black;"|
|-
|[[Family BASIC Keyboard]]
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 371: Line 456:
|  
|  
|  
|  
|
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|[[Four Score|Hori 4 Players Adapter]] controller 2 & 4
|[[Famicom 3D System]]
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|OUT1
|  
|  
|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 384: Line 475:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|yes
|  
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Zapper]] in port 2
|[[Famicom Network Controller|Famicom Network System controller]]
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|
|
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
Line 402: Line 499:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|
|-
|Four player adapter ([[Four Score]])
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|yes
|
|yes
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|  
|  
|  
|  
|  
|  
|D0
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|
|
|
|
|D0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|Famicom [[Zapper]]
|Four player adapter ([[Four Score|Hori 4 Players Adapter]])
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|
|
|D1
|
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|
|
|
|D1
|
|style="border-left: 2px solid black;"|
|-
|[[Hori Track]]
|style="border-left: 2px solid black;"|
|  
|  
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|
|
|
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|
|  
|  
|  
|  
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|yes
|-
|yes
|[[Jissen Mahjong controller]]
|style="border-left: 2px solid black;"|OUT2
|OUT1
|OUT0
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|  
|  
|
|  
|  
|  
|  
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|
|  
|  
|style="border-left: 2px solid black;"|<ref>A Famicom zapper may use the audio output signal to emit gunshot sounds (for example: Casel Zapper).</ref>
|
|D1
|
|style="border-left: 2px solid black;"|  
|-
|-
|NES [[Power Pad]] in port 2
|[[Konami Hyper Shot]]
|style="border-left: 2px solid black;"|OUT2
|OUT1
|
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|
|
|
|
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|D1
|  
|  
|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|[[Oeka Kids tablet]]
|style="border-left: 2px solid black;"|
|OUT1
|OUT0
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|
|
|
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|
|D3
|D2
|  
|  
|  
|  
|style="border-left: 2px solid black;"|
|-
|[[Coconuts Japan Pachinko Controller|Pachinko controller]]
|style="border-left: 2px solid black;"|
|  
|  
|style="border-left: 2px solid black;"|yes
|OUT0
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid black;"|/OE1
|yes
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|
|
|
|
|style="border-left: 2px solid black;"|
|-
|-
|[[Power Pad#Family Trainer Mat|Family Trainer Mat]]
|[[Party Tap]]
|style="border-left: 2px solid black;"|yes
|yes
|yes
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|
|OUT0
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|
|  
|  
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|D4
|D3
|D2
|  
|  
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|yes
|yes
|yes
|yes
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|
|-
|-
|NES [[Arkanoid controller]] in port 2
|[[Power Pad]] (port 2)<ref name="port" />
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|  
|  
|yes
|OUT0
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 474: Line 655:
|  
|  
|  
|  
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid gray;"|D4
|yes
|D3
|  
|  
|  
|  
Line 482: Line 663:
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|Famicom [[Arkanoid controller]]
|[[Port test controller]]
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|D4
|D3
|
|
|yes
|  
|D0
|style="border-left: 2px solid black;"|/OE2
|style="border-left: 2px solid gray;"|D4
|D3
|
|
|D0
|style="border-left: 2px solid black;"|
|-
|[[TV-NET controller]]
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|
|
|D1
|
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|yes
|  
|  
|style="border-left: 2px solid black;"|yes
|
|style="border-left: 2px solid black;"|
|-
|[[TV-NET Rank 2 controller]]
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
|  
|  
|  
|  
|yes
|D1
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|
|
|
|
|
|style="border-left: 2px solid black;"|
|-
|-
|[[Family BASIC Keyboard]]
|[[Zapper]] (port 2)
|style="border-left: 2px solid black;"|yes
|style="border-left: 2px solid black;"|  
|yes
|  
|yes
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|  
Line 511: Line 728:
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|yes
|style="border-left: 2px solid gray;"|D4
|yes
|D3
|yes
|  
|yes
|  
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|-
|-
|[[Famicom 3D glasses]]
|[[Zapper]] (expansion port)
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|yes
|  
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
Line 529: Line 746:
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid gray;"|  
|style="border-left: 2px solid gray;"|D4
|D3
|
|
|
|style="border-left: 2px solid black; text-align: center;"|<ref>The Casel Zapper plays audio when the trigger is pulled, but this is done entirely by the controller independent of the console's audio out.</ref>
|-
|[[Zapper]] (Vs. System) (port 1)<ref name="port" />
|style="border-left: 2px solid black;"|
|
|OUT0
|style="border-left: 2px solid black;"|/OE1
|style="border-left: 2px solid gray;"|
|  
|  
|  
|  
|  
|D0
|style="border-left: 2px solid black;"|
|style="border-left: 2px solid gray;"|
|
|  
|  
|
|  
|  
|style="border-left: 2px solid black;"|  
|style="border-left: 2px solid black;"|
|}
|}


<references/>
<references/>

Latest revision as of 07:11, 20 January 2024

The NES has two general-purpose controller ports on the front of the console, as well as a (rarely used) 48-pin expansion port underneath.

The Famicom's standard controllers are hardwired to the front of the unit, and a special 15-pin expansion port is commonly used for third-party controllers. The AV Famicom, however, features detachable controllers using the same ports as the NES.

The NES and Famicom have a set of I/O ports used for controllers and other peripherals, consisting of the following:

  • One output port, 3 bits wide, accessible by writing the bottom 3 bits of $4016.
    • The values latched by $4016/write appear on the OUT0-OUT2 output pins of the 2A03/07, where OUT0 is routed to the controller ports and OUT0-OUT2 to the expansion port on the NES.
  • Two input ports, each 5 bits wide, accessible by reading the bottom 5 bits of $4016 and $4017. Reading $4016 and $4017 activates the /OE1 and /OE2 signals, respectively, which are routed to the controller ports and the expansion port.
    • On the NES, only D0, D3, and D4 are connected to both controller ports, while all of D0-D4 are connected to the expansion port.
    • On the original Famicom, the two ports differ: $4016 D0 and D2 and $4017 D0 are permanently connected to both controllers, while $4016 D1 and all of $4017's D0-D4 are connected to the expansion port.
    • On the AV Famicom, only D0 is connected to the controller ports. The expansion port is unchanged.

Programmer's reference

Hardware

Other I/O devices

Usage of port pins by hardware type

type output Joypad 1 Joypad 2 audio output
signal OUT2 OUT1 OUT0 /OE1 D4 D3 D2 D1 D0 /OE2 D4 D3 D2 D1 D0 AUDIO
access method write $4016 [1] read $4016 [2] read $4017
available on these ports
Controller port 1 (AV Famicom) OUT0 /OE1 D0
Controller port 1 (Famicom (internal)) OUT0 /OE1 D0
Controller port 1 (NES) OUT0 /OE1 D4 D3 D0
Controller port 2 (AV Famicom) OUT0 /OE2 D0
Controller port 2 (Famicom (internal)) OUT0 D2 /OE2 D0
Controller port 2 (NES) OUT0 /OE2 D4 D3 D0
Expansion port (Famicom) OUT2 OUT1 OUT0 /OE1 D1 /OE2 D4 D3 D2 D1 D0 AUDIO
Expansion port (NES) OUT2 OUT1 OUT0 /OE1 D4 D3 D2 D1 D0 /OE2 D4 D3 D2 D1 D0 AUDIO
used by these devices
Controller (port 1)[3] OUT0 /OE1 D0
Controller (port 2)[3] OUT0 /OE2 D0
Controller (Famicom controller 2)[4] OUT0 D2 /OE2 D0
Controller (expansion port) OUT0 /OE1 D1 AUDIO[5]
Arkanoid controller (port 2)[3] OUT0 /OE2 D4 D3
Arkanoid controller (expansion port) OUT0 D1 /OE2 D1
Arkanoid II controller (2 controllers) OUT0 D1 /OE2 D4 D3 D1
Bandai Hyper Shot OUT2 OUT1 OUT0 /OE1 D1 D4 D3 AUDIO
Exciting Boxing Punching Bag OUT1 D4 D3 D2 D1
FAM-NET Keyboard OUT2 OUT1 OUT0 D4 D3 D2 D1
Family Trainer Mat OUT2 OUT1 OUT0 D4 D3 D2 D1
Family BASIC Keyboard OUT2 OUT1 OUT0 D4 D3 D2 D1
Famicom 3D System OUT1
Famicom Network System controller OUT0 /OE1 D1
Four player adapter (Four Score) OUT0 /OE1 D0 /OE2 D0
Four player adapter (Hori 4 Players Adapter) OUT0 /OE1 D1 /OE2 D1
Hori Track OUT0 /OE2 D1
Jissen Mahjong controller OUT2 OUT1 OUT0 /OE2 D1
Konami Hyper Shot OUT2 OUT1 D4 D3 D2 D1
Oeka Kids tablet OUT1 OUT0 D3 D2
Pachinko controller OUT0 /OE1 D1
Party Tap OUT0 /OE2 D4 D3 D2
Power Pad (port 2)[3] OUT0 /OE2 D4 D3
Port test controller OUT0 /OE1 D4 D3 D0 /OE2 D4 D3 D0
TV-NET controller OUT0 /OE1 D1
TV-NET Rank 2 controller OUT0 /OE1 D1
Zapper (port 2) D4 D3
Zapper (expansion port) D4 D3 [6]
Zapper (Vs. System) (port 1)[3] OUT0 /OE1 D0
  1. /OE1 is activated by reading $4016.
  2. /OE2 is activated by reading $4017.
  3. 3.0 3.1 3.2 3.3 3.4 Controllers using NES ports can be plugged into either port, using that port's /OE and data lines. However, games may expect a controller to only be in a specific port.
  4. The Famicom controller 2 has a microphone that sends audio input over $4016 D2. This is not affected by OUT0 nor /OE2.
  5. A Famicom expansion controller may connect the audio output signal to a headphone jack (for example: IQ502 joypad).
  6. The Casel Zapper plays audio when the trigger is pulled, but this is done entirely by the controller independent of the console's audio out.