2つのコントローラポートと、底面に1つの拡張端子がある。 コントローラポートに繋ぐものとして次のような種類がある。
注 : 図は海外版のものかもしれません。 ここに書かれている情報を元にしてコントローラポートに繋ぐ ハードウェアを作ろうとしないでください。
1: +5v (power) 2: Clock 3: Latch 4: Data1 5: Data2 6: IOBit 7: Ground
何も接続されていない時は、Data1, Data2 の読み込みデータが 0 になる。
ジョイパッド (普通のコントローラ) は、 Data1 から 16ビットのデータを返す。 ラッチされる度に順番はクリアされる(?)
byetUDLRaxlr0000
b/y/a/x/l/r はボタンの記号と同じ。 'e' はセレクト、 't' はスタート。 U/D/L/R は十字キー。 普通のコントローラでは、十字キーの上と下、左と右は同時に押せなくなっている。 いくつかのゲームでは、これらの組み合わせで同時に押した場合、 クラッシュするか、動作がおかしくなる。
Data2, IOBit は接続されていない。
マウスは、Data1 から 32ビットのデータを返す。
00000000rlss0001 YyyyyyyyXxxxxxxx
l/r はマウスのボタンを表す。 'ss' はスピードビットで、ラッチがアクティブになっていた間のクロック数を mod 3 して返す。 Y/X は方向ビット。セットされていたら上または左。 yyyyyyy/xxxxxxx はその方向への距離。
Data2, IOBit はたぶん接続されていない。
スーパースコープは Data1 から 8 ビットのデータを返す。
データ列 : fctp00on
'f' は Fire、 'c' は Cursor、 't' は Turbo、 'p' は Pause、 'o' は Offscreen、'n' は Noise を指す。
スーパースコープには 2 つのモードがある。
Justifier は Data1 から 48 ビットのデータを返す。 32 ビットのデータの後に 16 個の 1 を返す。 しかし、これは何か分からない。
データの順番 : 0000000000001110 01010101TtSsl000 1111111111111111
T/t はプレイヤー 1 / 2 のトリガーの状態を表す。 S/s はプレイヤー 1 / 2 のスタートボタンの状態を表す。 'l' は、どちらの銃が IOBit に接続されているのかを表し、 1 は銃 1 を、 0 は 銃 2 を指す。 'l' は、銃 2 が接続されていない時は反転する。
IOBit は スーパースコープのように使う。 しかし、2 個の銃が 1 つのポートに接続され、 どちらの銃が IOBit に接続されているかは Latch の度に変更される。 Justifier は Latch の前にトリガーが引かれるのを待たない。 電子銃が検知される度に Latch される。 Justifier がスクリーンに向いているか向いていないかを決定するために 0x213F のビット 6 が使用される 。
Data2 はたぶん接続されていないが、確実なことは分からない。
MP5 をSNESのコントローラポート (通常、ポート 2) に接続し、 4 つのコントローラをそこに接続することができる (2 ~ 5)。
IOBit が 1 の場合、Clock はパッド 2 と 3 を通る。 Data1 はパッド 2 の Data1 へ、 Data2 はパッド 3 の Data1 へそれぞれ接続される。 IOBit が 0 の場合、パッド 4 と 5 を使う。 どちらの場合も、Latch は全てのポートに通される。 たぶん、 IOBit は全てに通されることはない。
Clock は IOBit で選択されたところにのみ信号を通す。 最初の 2 つのパッドのみ読み込むことができ (自動ジョイパッド読み込みもそのようにする)、 IOBit を切り替えた時に他のパッドを手動で読み込むことができる。 たくさんのゲームで、3 人より多くのプレーヤーの処理の時に このようなことが行われている。
MP5 はポート 1 にも接続することができるが、 IOBit のセット用に、 0x4201 のビット 6 をビット 7 の代わりに 使用する必要があり、ポート 1 のレジスタを ポート 2 の代わりに使用する必要もある。 2 つの MP5 を使用すると、8 人用のゲームを作ることもできる。
Latch がアクティブな時、Data2 からは 1 が、 Data1 からは 0 が読み込まれる。 MP5 の存在を検出するためにこの動作が使われることがある。 MP5 によって、この動作がオーバーライドされる。
IOBit が 0 から 1 に移行する場合、MP5 がすぐに反応しない。 2 と 3 を読んでから、4 と 5 を読むようにする方が、 逆の場合よりも良いだろう。