チュートリアルを読みすすめていきます。
https://gbdev.io/gb-asm-tutorial/part2/functions.html
Function
やっと関数です。引数のような概念はなく、レジスタに必要なものをいれて呼び出します。
; Copy bytes from one area to another.
; @param de: Source
; @param hl: Destination
; @param bc: Length
Memcopy:
ld a, [de]
ld [hli], a
inc de
dec bc
ld a, b
or a, c
jp nz, Memcopy
ret
いままで、タイルなどのコピーのルーチンがすべてベタ書きでしたが、これでまとめられます。
ret
で呼び出した側に戻ります。
; Copy the tile data
ld de, Tiles
ld hl, $9000
ld bc, TilesEnd - Tiles
call Memcopy
callで呼ぶだけです。条件付きcallもあるみたい。
次回
次回はコントローラの値を取得します!