ジョイパッド
目次
アーキテクチャ
アクセス方法
ジョイパッドには次のような手順でアクセスを行います。
- I/O【$4016】のbit0をセットする。
- I/O【$4016】のbit0をクリアする。
- 入力をチェックしたいボタンになるまで1P側はI/O【$4016】、2P側はI/O【$4017】を連続で読み込む。
- 読み込んだ値のbit0が0なら入力無し、1なら入力ありと言う事になる。
入力の検出
読み込み回数とボタン関係
例えばI/O【$4016】から4回ロードを繰り返すした後、読み出したデータの0bitがセットされていれば1P側のスタートボタンが押されていたと言う事です。読み込み回数とボタン関係は次のような表になります。
- A
- B
- セレクトボタン
- スタートボタン
- 上
- 下
- 左
- 右
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 | 入力情報のセット | クリア | リセット |