https://gbdev.io/gb-asm-tutorial/part2/input.html
十字キーで動かせるように
Main:
ld a, [rLY]
cp 144
jp nc, Main
WaitVBlank2:
ld a, [rLY]
cp 144
jp c, WaitVBlank2
; Check the current keys every frame and move left or right.
call UpdateKeys
; First, check if the left button is pressed.
CheckLeft:
ld a, [wCurKeys]
and a, PADF_LEFT
jp z, CheckRight
Left:
; Move the paddle one pixel to the left.
ld a, [_OAMRAM + 1]
dec a
; If we've already hit the edge of the playfield, don't move.
cp a, 15
jp z, Main
ld [_OAMRAM + 1], a
jp Main
; Then check the right button.
CheckRight:
ld a, [wCurKeys]
and a, PADF_RIGHT
jp z, Main
Right:
; Move the paddle one pixel to the right.
ld a, [_OAMRAM + 1]
inc a
; If we've already hit the edge of the playfield, don't move.
cp a, 105
jp z, Main
ld [_OAMRAM + 1], a
jp Main
すみません、入力キーに応じてオブジェクトの座標を変更する処理がまだでしたので
メインループが上のようになりました。
前回、定義しました UpdateKeys でキーの状態を取得します。wCurKeys に
押したキーが入っているので、オブジェクトのX座標を変更します。
左端と右端に到達しましたら、Main ループに戻ります。
めっちゃ簡単。無事パッドで動くようになりました。
次回
今度こそボールを表示していきます。ボールの座標からタイルマップのアドレスを取得し、衝突判定するようです。
余談
メルカリで買った実機とどきました。めっちゃちっちゃい!感動!