0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゲームボーイ RGBDS 開発メモ 第9回 チュートリアルを読んでいく (Input(2))

Last updated at Posted at 2025-01-02

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 ループに戻ります。

めっちゃ簡単。無事パッドで動くようになりました。

次回

今度こそボールを表示していきます。ボールの座標からタイルマップのアドレスを取得し、衝突判定するようです。

余談

メルカリで買った実機とどきました。めっちゃちっちゃい!感動!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?