INCLUDE "hardware.inc"
|
|
INCLUDE "input.inc"
|
|
|
|
Section "Player Data", WRAM0
|
|
|
|
playerWorldX: dw
|
|
playerWorldY: dw
|
|
|
|
; Sprite data
|
|
playerSprite:
|
|
playerScreenY: db
|
|
playerScreenX: db
|
|
playerTileIndex: db
|
|
playerFlags: db
|
|
|
|
Section "Player Code", ROM0
|
|
|
|
spriteData:
|
|
INCBIN "png/player.2bpp"
|
|
|
|
Player_Init::
|
|
ld a, 8
|
|
ld hl, _OAM + 1
|
|
ld [hl], a
|
|
|
|
ld bc, _VRAM8000
|
|
ld hl, spriteData
|
|
ld d, 16
|
|
call memcpy
|
|
|
|
ld hl, _OAM
|
|
ld a, 144-8
|
|
ld [hli], a
|
|
ld a, 8
|
|
ld [hli], a
|
|
xor a
|
|
ld [hli], a
|
|
ld [hli], a
|
|
|
|
ld bc, _OAMRAM
|
|
ld hl, _OAM
|
|
ld d, 4
|
|
call memcpy
|
|
|
|
ret
|
|
|
|
Player_Update::
|
|
ld hl, keys
|
|
ld b, [hl]
|
|
|
|
; check for move right
|
|
ld a, b
|
|
and BTN_RIGHT
|
|
jr z, .left
|
|
|
|
ld hl, _OAM + 1
|
|
inc [hl]
|
|
|
|
.left:
|
|
; check for move left
|
|
ld a, b
|
|
and BTN_LEFT
|
|
jr z, .done
|
|
|
|
ld hl, _OAM + 1
|
|
dec [hl]
|
|
|
|
.done:
|
|
ret
|