ジョイパッド

目次

アーキテクチャ

アクセス方法

ジョイパッドには次のような手順でアクセスを行います。

  1. I/O【$4016】のbit0をセットする。
  2. I/O【$4016】のbit0をクリアする。
  3. 入力をチェックしたいボタンになるまで1P側はI/O【$4016】、2P側はI/O【$4017】を連続で読み込む。
  4. 読み込んだ値のbit0が0なら入力無し、1なら入力ありと言う事になる。

入力の検出

読み込み回数とボタン関係

例えばI/O【$4016】から4回ロードを繰り返すした後、読み出したデータの0bitがセットされていれば1P側のスタートボタンが押されていたと言う事です。読み込み回数とボタン関係は次のような表になります。

  1. A
  2. B
  3. セレクトボタン
  4. スタートボタン

I/Oポート

$4016 (ジョイパッド1レジスタ)

1P側のジョイパッドの状態を取得、または拡張パッドの設定を行います。
読み込み

位置 内容 クリア時 セット時
7-5 未使用
4 Zapperスプライト スプライト未検出 スプライト検出
3 Zapperトリガ 入力なし 入力あり
2-1 拡張ポートから読み込んだデータ データ値
0 ボタン入力情報 入力なし 入力あり

書き込み

位置 内容 クリア時 セット時
7-3 未使用
2-1 拡張ポートへ書き込むデータ データ値
0 入力情報のセット クリア リセット

$4017 (ジョイパッド2レジスタ)

2P側のジョイパッドの状態を取得、または拡張パッドの設定を行います。
読み込み

位置 内容 クリア時 セット時
7-5 未使用
4 Zapperスプライト スプライト未検出 スプライト検出
3 Zapperトリガ 入力なし 入力あり
2-1 拡張ポートから読み込んだデータ データ値
0 ボタン入力情報 入力なし 入力あり

書き込み

位置 内容 クリア時 セット時
7-3 未使用
2-1 拡張ポートへ書き込むデータ データ値
0 入力情報のセット クリア リセット