mirror of
https://github.com/pret/pokeyellow.git
synced 2026-05-09 12:22:04 -05:00
98 lines
1.3 KiB
NASM
98 lines
1.3 KiB
NASM
ReadJoypad_:: ; c000 (3:4000)
|
|
; Poll joypad input.
|
|
; Unlike the hardware register, button
|
|
; presses are indicated by a set bit.
|
|
ld a, [hReadJoypad]
|
|
and a
|
|
ret nz
|
|
|
|
ld a, 1 << 5 ; select direction keys
|
|
;ld c, 0
|
|
|
|
ld [rJOYP], a
|
|
ld a, [rJOYP]
|
|
ld a, [rJOYP]
|
|
cpl
|
|
and %1111
|
|
swap a
|
|
ld b, a
|
|
|
|
ld a, 1 << 4 ; select button keys
|
|
ld [rJOYP], a
|
|
rept 6
|
|
ld a, [rJOYP]
|
|
endr
|
|
cpl
|
|
and %1111
|
|
or b
|
|
|
|
ld [hJoyInput], a
|
|
|
|
ld a, 1 << 4 + 1 << 5 ; deselect keys
|
|
ld [rJOYP], a
|
|
ret
|
|
|
|
|
|
_Joypad:: ; c02d (3:402d)
|
|
; hJoyReleased: (hJoyLast ^ hJoyInput) & hJoyLast
|
|
; hJoyPressed: (hJoyLast ^ hJoyInput) & hJoyInput
|
|
|
|
ld a, [hJoyInput]
|
|
ld b,a
|
|
and $4F
|
|
cp A_BUTTON + B_BUTTON + SELECT + START ; soft reset
|
|
jp z, TrySoftReset
|
|
|
|
ld a, [hJoyLast]
|
|
ld e, a
|
|
xor b
|
|
ld d, a
|
|
and e
|
|
ld [hJoyReleased], a
|
|
ld a, d
|
|
and b
|
|
ld [hJoyPressed], a
|
|
ld a, b
|
|
ld [hJoyLast], a
|
|
|
|
ld a, [wd730]
|
|
bit 5, a
|
|
jr nz, DiscardButtonPresses
|
|
|
|
ld a, [hJoyLast]
|
|
ld [hJoyHeld], a
|
|
|
|
ld a, [wJoyIgnore]
|
|
and a
|
|
ret z
|
|
|
|
cpl
|
|
ld b, a
|
|
ld a, [hJoyHeld]
|
|
and b
|
|
ld [hJoyHeld], a
|
|
ld a, [hJoyPressed]
|
|
and b
|
|
ld [hJoyPressed], a
|
|
ret
|
|
|
|
DiscardButtonPresses:
|
|
xor a
|
|
ld [hJoyHeld], a
|
|
ld [hJoyPressed], a
|
|
ld [hJoyReleased], a
|
|
ret
|
|
|
|
TrySoftReset:
|
|
call DelayFrame
|
|
|
|
; deselect (redundant)
|
|
ld a, $30
|
|
ld [rJOYP], a
|
|
|
|
ld hl, hSoftReset
|
|
dec [hl]
|
|
jp z, SoftReset
|
|
|
|
jp Joypad
|