今回は、Laboratoryテーマ13「「GRAPH」キーが押されたか調べたい」です。
こちらも簡単なので、サクッと説明。
ゲームのコントローラーとしてキーボードを使う時、ジョイスティックのBボタンに該当するキーとして、「GRAPH」キーが良く利用されます。
ジョイスティックのAボタンに該当するキーは間違いなく「スペースバー」と思われますので、その横にある「GRAPH」キーが押しやすいのでしょう。(私はそう。)
今回も前回紹介したBIOSに、リアルタイムなキーボード入力状況を得るサブルーチンがありますので、そちらの機能を紹介します。
ただ、前回の「Ctrl」+「STOP」ように「GRAPH」キーの押下だけを判定するBIOSではないので、少し知識が必要です。
ラベル名 | アドレス | 変化するレジスタ | 使い方 |
SNSMAT | &H0141 | AF、C | 調べたいキーのある下表【キーマトリクス】の行をAレジスタに入れコールすると、Aレジスタの押されているキーに対応するビットが「0」、押されていないキーに対応するビットは「1」になる。 |
【キーマトリクス】
ビット | |||||||||
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||
行 | 0 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
1 | + | [ | @ | ¥ | ^ | - | 9 | 8 | |
2 | B | A | _ | / | > | < | ] | * | |
3 | J | I | H | G | F | E | D | C | |
4 | R | Q | P | O | N | M | L | K | |
5 | Z | Y | X | W | V | U | T | S | |
6 | F3 | F2 | F1 | かな | CAPS | GRAPH | Ctrl | SHIFT | |
7 | RET | SEL | BS | STOP | TAB | ESC | F5 | F4 | |
8 | → | ↓ | ↑ | ← | DEL | INS | CLS | SPACE | |
9 | 4 | 3 | 2 | 1 | 0 | / | + | * | |
10 | . | , | - | 9 | 8 | 7 | 6 | 5 |
※ 9〜10行はテンキーです。
例えば、「GRAPH」キーが押されたか調べたければ、【キーマトリクス】表の「GRAPH」キーのある行は「6」になるので、「6」をAレジスタに入れてコールすると、Aレジスタの第2ビットが「GRAPH」キーが押されていれば「0」、押されていなければ「1」になります。
これまでの私自作のゲームでも、それなりに使っています。
プログラムはBボタン(「GRAPH」ボタン)が押されたら下の処理へ、押されていなければ空欄に指定したアドレスへ飛びます。
押しっぱなしは、不可です。
変数は赤アドレス(&HE013)は、ジョイスティック
緑アドレス(&HE00D)は、Bボタン押し続け不可フラグです。
黄色がBIOSコール(&H0141)。
コール前の&H06が行aAコール後の&H04が第2ビット判定です。
では、次回はLaboratoryテーマ14「簡単にBGMを鳴らしたい」です。