Expansion port: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎NES: try to avoid somewhat-ambiguous "in" and "out" terms)
(→‎Extra notes: link to EXP pin explanation directly)
Line 89: Line 89:
** Because of this, a series 1kΩ resistor should be included to safely use the /IRQ signal in the expansion port.
** Because of this, a series 1kΩ resistor should be included to safely use the /IRQ signal in the expansion port.
** This resistor is enough to logically overcome the internal 10kΩ pull-up, and will also limit any ASIC's output-high current to 5mA if your expansion device tries to drive it low at the same time.
** This resistor is enough to logically overcome the internal 10kΩ pull-up, and will also limit any ASIC's output-high current to 5mA if your expansion device tries to drive it low at the same time.
* See [[Cartridge connector#Signal descriptions]] for notes about the ten EXP pins.
* See [[EXP pins]] for notes about the ten EXP pins.
* See [[Standard controller]] and [[Controller port pinout]] for more information about controller connections.
* See [[Standard controller]] and [[Controller port pinout]] for more information about controller connections.

Revision as of 01:18, 30 August 2022

Both the NES and Famicom have expansion ports that allow peripheral devices to be connected to the system.

See also: Input devices

Famicom

The Famicom has a 15-pin (male) port on the front edge of the console.

Because its two default controllers were not removable like the NES, peripheral devices had to be attached through this expansion port, rather than through a controller port as on the NES.

This was commonly used for third party controllers, usually as a substitute for the built-in controllers, but sometimes also as a 3rd and 4th player.

Pinout

( Female DA-15 on peripheral )

                /\
               |   \
        Gnd -- | 01  \
               |   09 | -> /OE for joypad 2 ($4017 read strobe)
      SOUND <- | 02   |
               |   10 | -> out 2 ($4016 write data, bit 2)
       /IRQ ?? | 03   |
               |   11 | -> out 1 ($4016 write data, bit 1)
joypad 2 D4 -> | 04   |
               |   12 | -> out 0 ($4016 write data, bit 0, strobe on pads)
joypad 2 D3 -> | 05   |
               |   13 | <- joypad 1 D1
joypad 2 D2 -> | 06   |
               |   14 | -> /OE for joypad 1 ($4016 read strobe)
joypad 2 D1 -> | 07   |
               |   15 | -- +5V
joypad 2 D0 ?? | 08  /
               |   /
                \/

Signal descriptions

Digital inputs to the Famicom
Joypad 1 D1, Joypad 2 D1-D4
Digital outputs from the Famicom
Out 0, 1, 2; /OE for both joypads
Depends on cart
/IRQ (Some games use a push/pull driver, which doesn't permit anything else to disagree)
Analog outputs
SOUND (In the original Famicom, before expansion audio is mixed in. In the AV Famicom, after expansion audio is mixed in.)
Depends on model
Joypad 2 D0 (In the original Famicom, permanently connected to player 2 controller, so an output. On the AV Famicom, the player 2 controller could be removed, and allow for this to be an input)

NES

The NES has a 48-pin card edge located on the underside of the NES, beneath a plastic tab which must be cut or broken to expose the connector. The thickness of the connector is exceptionally thick (2.6mm), thicker than standard PCB thicknesses.

Because the NES had controller ports on the front that allowed different devices to be plugged in, the expansion port was a kind of "back up plan" for Nintendo that was never used commercially.

Pinout

                                        +-------\
                                 +5V -- |01   48| -- +5V
                                 Gnd -- |02   47| -- Gnd
                     Audio mix input -> |03   46| -- NC
                                /NMI <> |04   45| -> out 2 ($4016 write data, bit 2)
                                 A15 <- |05   44| -> out 1 ($4016 write data, bit 1)
                                EXP9 ?? |06   43| -> out 0 ($4016 write data, bit 0, strobe on sticks)
                                EXP8 ?? |07   42| ?? EXP0
                                EXP7 ?? |08   41| ?? EXP1
                                EXP6 ?? |09   40| ?? EXP2
                                EXP5 ?? |10   39| ?? EXP3
($4017 read strobe) /OE for joypad 2 <- |11   38| ?? EXP4
                         joypad 1 D1 -> |12   37| -> /OE for joypad 1 ($4016 read strobe)
                         joypad 1 D3 xx |13   36| xx joypad 1 D4
                                /IRQ <> |14   35| xx joypad 1 D0
                         joypad 2 D2 -> |15   34| -> duplicate of pin 37
                         joypad 2 D3 xx |16   33| <- joypad 1 D2
                 duplicate of pin 11 <- |17   32| <> CPU D0
                         joypad 2 D4 xx |18   31| <> CPU D1
                         joypad 2 D0 xx |19   30| <> CPU D2
                         joypad 2 D1 -> |20   29| <> CPU D3
                           Video out <- |21   28| <> CPU D4
                     Amplified audio <- |22   27| <> CPU D5
       unregulated power adapter vdd -- |23   26| <> CPU D6
                     4.00MHz CIC CLK <- |24   25| <> CPU D7
                                        +-------/

Extra notes

  • All joypad input lines D0-4 are logically inverted before reaching the CPU. A high signal will be read as a 0 and vice versa.
  • xx in above pinout: Joypad 1 and 2 D0, D3, and D4 are available as an input if no peripheral is connected to the corresponding joystick port that uses those bits:
  • /NMI is open-collector.
  • /IRQ depends on the cartridge—most ASICs seem to use a push-pull driver instead of relying on the pull-up resistor inside the console.
    • Because of this, a series 1kΩ resistor should be included to safely use the /IRQ signal in the expansion port.
    • This resistor is enough to logically overcome the internal 10kΩ pull-up, and will also limit any ASIC's output-high current to 5mA if your expansion device tries to drive it low at the same time.
  • See EXP pins for notes about the ten EXP pins.
  • See Standard controller and Controller port pinout for more information about controller connections.