Input devices: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
(Reworks the signal table to be better organized and easier to read. Adds more devices. Fixes the zapper audio signal.) |
(Fixes content accidentally removed in previous edit.) |
||
Line 1: | Line 1: | ||
The NES has two [[Controller port pinout|general-purpose controller ports]] on the front of the console, as well as a (rarely used) [[NES_expansion_port_pinout|48-pin expansion port]] underneath. | |||
The Famicom's standard controllers are hardwired to the front of the unit, and a special [[Famicom expansion port pinout|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 [[CPU_pin_out_and_signal_description|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 [[CPU_pin_out_and_signal_description|/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 == | |||
* [[Controller reading]] | |||
== Hardware == | |||
* [[Controller port pinout]] | |||
* Controllers | |||
** '''NES [[Standard controller]]''' | |||
** [[Arkanoid controller]] | |||
** [[Bandai Hyper Shot]] | |||
** [[Coconuts Pachinko]] | |||
** [[Doremikko Keyboard]] | |||
** [[Exciting Boxing Punching Bag]] | |||
** [[Family BASIC Keyboard]] | |||
** [[Four Score|Four Score, NES Satellite]] 4-player adapters | |||
** [[Hori 4 Players Adapter]] for Famicom | |||
** [[Jissen Mahjong controller]] | |||
** [[Konami Hyper Shot]] | |||
** [[Miracle Piano]] | |||
** [[Mouse]] (SNES Mouse, Subor Mouse) | |||
** [[Oeka Kids tablet]] | |||
** [[Partytap]] | |||
** [[Pokkun Moguraa Mat]] | |||
** [[Power Glove]] | |||
** [[Power Pad]] | |||
** [[RacerMate Bicycle]] | |||
** [[SNES controller]] | |||
** [[Top Rider Bike]] | |||
** [[U-Force]] | |||
** [[Virtual Boy controller]] | |||
** [[Zapper]] lightgun | |||
* [[Infrared controllers]] | |||
== Other I/O devices == | |||
* [[Famicom 3D glasses]] | |||
* [[Family BASIC Data Recorder]] | |||
* [[R.O.B.]] | |||
* [[Battle Box]] | |||
* [[Turbo File]] | |||
* [[Barcode Battler]] | |||
* [[TV-NET Rank 2 controller]] | |||
* [[FAM-NET Keyboard]] | |||
* [[Family Computer Network Adapter]] | |||
* [[Super Famicom NTT Data Keypad]] | |||
== Usage of port pins by hardware type == | == Usage of port pins by hardware type == | ||
{| class="wikitable" | {| class="wikitable" |
Revision as of 05:24, 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
- Controller port pinout
- Controllers
- NES Standard controller
- Arkanoid controller
- Bandai Hyper Shot
- Coconuts Pachinko
- Doremikko Keyboard
- Exciting Boxing Punching Bag
- Family BASIC Keyboard
- Four Score, NES Satellite 4-player adapters
- Hori 4 Players Adapter for Famicom
- Jissen Mahjong controller
- Konami Hyper Shot
- Miracle Piano
- Mouse (SNES Mouse, Subor Mouse)
- Oeka Kids tablet
- Partytap
- Pokkun Moguraa Mat
- Power Glove
- Power Pad
- RacerMate Bicycle
- SNES controller
- Top Rider Bike
- U-Force
- Virtual Boy controller
- Zapper lightgun
- Infrared controllers
Other I/O devices
- Famicom 3D glasses
- Family BASIC Data Recorder
- R.O.B.
- Battle Box
- Turbo File
- Barcode Battler
- TV-NET Rank 2 controller
- FAM-NET Keyboard
- Family Computer Network Adapter
- Super Famicom NTT Data Keypad
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 | /OE2 | 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 | /OE2 | 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 |
- ↑ /OE1 is activated by reading $4016.
- ↑ /OE2 is activated by reading $4017.
- ↑ 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.
- ↑ The Famicom controller 2 has a microphone that sends audio input over $4016 D2. This is not affected by OUT0 nor /OE2.
- ↑ A Famicom expansion controller may connect the audio output signal to a headphone jack (for example: IQ502 joypad).
- ↑ 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.