コントローラ

「コントローラ」の編集履歴(バックアップ)一覧はこちら

コントローラ」(2017/02/20 (月) 16:56:23) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

2つのコントローラポートと、底面に1つの拡張端子がある。 コントローラポートに繋ぐものとして次のような種類がある。 -[[ジョイパッド>#i435e246]] -[[マルチタップ>#a36d3ed6]] (MP5) コントローラを追加で4つまで繋げられるようにする -[[2 ボタンマウス>#be46b6b5]] -[[スーパースコープ>#i4e03d51]] (バズーカの形のガンコントローラ) -[[ガンコントローラ>#o393b389]] (Justifiers) ***コントローラポート [#ha03d31a] &ref(port.png,nolink); 注 : 図は海外版のものかもしれません。 ここに書かれている情報を元にしてコントローラポートに繋ぐ ハードウェアを作ろうとしないでください。 1: +5v (power) 2: Clock 3: Latch 4: Data1 5: Data2 6: IOBit 7: Ground 何も接続されていない時は、Data1, Data2 の読み込みデータが 0 になる。 ***ジョイパッド [#i435e246] ジョイパッド (普通のコントローラ) は、 Data1 から 16ビットのデータを返す。 ラッチされる度に順番はクリアされる(?) byetUDLRaxlr0000 b/y/a/x/l/r はボタンの記号と同じ。 'e' はセレクト、 't' はスタート。 U/D/L/R は十字キー。 普通のコントローラでは、十字キーの上と下、左と右は同時に押せなくなっている。 いくつかのゲームでは、これらの組み合わせで同時に押した場合、 クラッシュするか、動作がおかしくなる。 Data2, IOBit は接続されていない。 ***マウス [#be46b6b5] マウスは、Data1 から 32ビットのデータを返す。 00000000rlss0001 YyyyyyyyXxxxxxxx l/r はマウスのボタンを表す。 'ss' はスピードビットで、ラッチがアクティブになっていた間のクロック数を mod 3 して返す。 Y/X は方向ビット。セットされていたら上または左。 yyyyyyy/xxxxxxx はその方向への距離。 Data2, IOBit はたぶん接続されていない。 ***スーパースコープ [#i4e03d51] スーパースコープは Data1 から 8 ビットのデータを返す。 データ列 : fctp00on 'f' は Fire、 'c' は Cursor、 't' は Turbo、 'p' は Pause、 'o' は Offscreen、'n' は Noise を指す。 スーパースコープには 2 つのモードがある。 ***ガンコントローラ (Justifiers) [#o393b389] 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>IO ポート (メイン)/0x213F]] のビット 6 が使用される 。 Data2 はたぶん接続されていないが、確実なことは分からない。 ***マルチタップ (MP5) [#a36d3ed6] 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>IO ポート (メイン)/0x4200-0x421F#p4201]] のビット 6 をビット 7 の代わりに 使用する必要があり、ポート 1 のレジスタを ポート 2 の代わりに使用する必要もある。 2 つの MP5 を使用すると、8 人用のゲームを作ることもできる。 Latch がアクティブな時、Data2 からは 1 が、 Data1 からは 0 が読み込まれる。 MP5 の存在を検出するためにこの動作が使われることがある。 MP5 によって、この動作がオーバーライドされる。 IOBit が 0 から 1 に移行する場合、MP5 がすぐに反応しない。 2 と 3 を読んでから、4 と 5 を読むようにする方が、 逆の場合よりも良いだろう。
2つのコントローラポートと、底面に1つの拡張端子がある。 コントローラポートに繋ぐものとして次のような種類がある。 -[[ジョイパッド>#i435e246]] -[[マルチタップ>#a36d3ed6]] (MP5) コントローラを追加で4つまで繋げられるようにする -[[2 ボタンマウス>#be46b6b5]] -[[スーパースコープ>#i4e03d51]] (バズーカの形のガンコントローラ) -[[ガンコントローラ>#o393b389]] (Justifiers) ***コントローラポート [#ha03d31a] #ref(port.png); 注 : 図は海外版のものかもしれません。 ここに書かれている情報を元にしてコントローラポートに繋ぐ ハードウェアを作ろうとしないでください。 1: +5v (power) 2: Clock 3: Latch 4: Data1 5: Data2 6: IOBit 7: Ground 何も接続されていない時は、Data1, Data2 の読み込みデータが 0 になる。 ***ジョイパッド [#i435e246] ジョイパッド (普通のコントローラ) は、 Data1 から 16ビットのデータを返す。 ラッチされる度に順番はクリアされる(?) byetUDLRaxlr0000 b/y/a/x/l/r はボタンの記号と同じ。 'e' はセレクト、 't' はスタート。 U/D/L/R は十字キー。 普通のコントローラでは、十字キーの上と下、左と右は同時に押せなくなっている。 いくつかのゲームでは、これらの組み合わせで同時に押した場合、 クラッシュするか、動作がおかしくなる。 Data2, IOBit は接続されていない。 ***マウス [#be46b6b5] マウスは、Data1 から 32ビットのデータを返す。 00000000rlss0001 YyyyyyyyXxxxxxxx l/r はマウスのボタンを表す。 'ss' はスピードビットで、ラッチがアクティブになっていた間のクロック数を mod 3 して返す。 Y/X は方向ビット。セットされていたら上または左。 yyyyyyy/xxxxxxx はその方向への距離。 Data2, IOBit はたぶん接続されていない。 ***スーパースコープ [#i4e03d51] スーパースコープは Data1 から 8 ビットのデータを返す。 データ列 : fctp00on 'f' は Fire、 'c' は Cursor、 't' は Turbo、 'p' は Pause、 'o' は Offscreen、'n' は Noise を指す。 スーパースコープには 2 つのモードがある。 ***ガンコントローラ (Justifiers) [#o393b389] 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>IO ポート (メイン)/0x213F]] のビット 6 が使用される 。 Data2 はたぶん接続されていないが、確実なことは分からない。 ***マルチタップ (MP5) [#a36d3ed6] 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>IO ポート (メイン)/0x4200-0x421F#p4201]] のビット 6 をビット 7 の代わりに 使用する必要があり、ポート 1 のレジスタを ポート 2 の代わりに使用する必要もある。 2 つの MP5 を使用すると、8 人用のゲームを作ることもできる。 Latch がアクティブな時、Data2 からは 1 が、 Data1 からは 0 が読み込まれる。 MP5 の存在を検出するためにこの動作が使われることがある。 MP5 によって、この動作がオーバーライドされる。 IOBit が 0 から 1 に移行する場合、MP5 がすぐに反応しない。 2 と 3 を読んでから、4 と 5 を読むようにする方が、 逆の場合よりも良いだろう。

表示オプション

横に並べて表示:
変化行の前後のみ表示: