今回は、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を鳴らしたい」です。