You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

60 lines
918 B

INCLUDE "hardware.inc"
Section "Input Data", WRAM0
lastKeys:: db
keys:: db
Section "Input Code", ROM0
; Initialize input
; NOTE: Inline if needed
Keys_Init::
ld hl, lastKeys
xor a
ld [hl+], a
ld [hl], a
; Update the input state
Keys_Update::
ld a, P1F_GET_BTN
ld [rP1], a
; wait a few cycles
ld a, [rP1]
ld a, [rP1]
; extract btn bits into top of B
cpl
and $f
swap a
ld b, a
ld a, P1F_GET_DPAD
ld [rP1], a
; wait more cycles
ld a, [rP1]
ld a, [rP1]
ld a, [rP1]
ld a, [rP1]
ld a, [rP1]
ld a, [rP1]
; extract dpad bits into bottom of B
cpl
and $f
or b
ld b, a
; swap to use flag macros from hardware.inc
; TODO: optimize this code to avoid swap (very small win)
swap b
; lastKeys <- keys ; keys <- B
ld hl, keys
ld a, [hl]
ld [hl], b
dec hl
ld [hl], a
ret