Famicom & NES controller shift register: Parallel-in, Serial-out

A project log for BlueRetro

Multiplayer Bluetooth controllers adapter for retro video game consoles

Jacques GagnonJacques Gagnon 07/26/2020 at 01:480 Comments

Just finished adding support for FC/NES pads, NES Four Score multitap and FC 4P adapter. SNES support will follow soon as it is pretty much the same thing but with more data.

It's great for Smash TV!!

You can play the 2 players 4 controllers mode using only 2 Bluetooth controller by mapping 2 pad on one!

See NES adapter cable schematic. Configuring multitap mode to Slot 1, Slot 2 or Dual enable the Four Score mode while selecting mode Alt enables the Famicom 4P mode (require DA-15 cable).

Nintendo PISO protocol

The protocol used by Nintendo is a standard Parallel-in, Serial-out shift register. Both controller ports share the same Latch (OUT0) that will reset the state of the controller back to output bit 0. Each port got one clock (CUP) signal that trigger controller to update data output to the next bit on the rising edge.

Sequential polling

For 2 players multiplayer the controller could be polled sequentially or simultaneously (interlaced) .

Simultaneous polling (interlaced)

Hori FC Trackball

The Hori trackball add two 4 bits axis (2nd byte) to the existing 8 buttons (1st byte). The trackball orientation (L/R) and speed setting (Lo/Hi) are reported in the third bytes.

Sample poll from Operation Wolf while trackball is configure as L orientation and Lo speed

While in the L orientation the 4 MSB of the 2nd byte are the Y axis and the 4 LSB are the X axis. Value on wire aren't inverted and are both two's complement sign 4 bits value.

3rd byte bit 7 is orientation: 0: L and 1: R. Bit 6 is speed: 0: Hi and 1: Lo.

Four Score multitap

The four score multitap was manufactured by Hori for Nintendo for the NES while a FC version with Hori branding was also offered in Japan (but it's wasn't the most popular one, see 4P adapter below).

The multitap serialize the 3rd and 4th player output on port 1 & 2 data line, respectively, following player 1 & 2 data. A third byte output a signature for detecting the multitap.

Four score sequential polling
Four score interlaced polling (Bomberman 2 (USA) only 3P)

Famicom 4P adapter

Most Famicom games that support 3P/4P do so by connecting one controller to the Famicom DA-15 port for 3P or using a 2-way breakout cable for 4P. The first two controller data come from each ports D0 (attach controller or NES port) while the last two come from the ports D1 (From DA-15). The games could sample both controller on the same port simultaneously but they look to do so sequentially while doing both port interlaced.

Bomberman 2 (FC)