2023-10-13 09:20:28 +00:00
|
|
|
IF !DEF(INPUT_ASM)
|
|
|
|
DEF INPUT_ASM EQU 1
|
|
|
|
|
|
|
|
|
|
|
|
SECTION "Input Variables", HRAM
|
|
|
|
hUpState:: ds 1
|
|
|
|
hDownState:: ds 1
|
|
|
|
hLeftState:: ds 1
|
|
|
|
hRightState:: ds 1
|
|
|
|
hAState:: ds 1
|
|
|
|
hBState:: ds 1
|
|
|
|
hStartState:: ds 1
|
|
|
|
hSelectState:: ds 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SECTION "Input Functions", ROM0
|
|
|
|
InputInit::
|
|
|
|
xor a, a
|
|
|
|
ldh [hUpState], a
|
|
|
|
ldh [hDownState], a
|
|
|
|
ldh [hLeftState], a
|
|
|
|
ldh [hRightState], a
|
|
|
|
ldh [hAState], a
|
|
|
|
ldh [hBState], a
|
|
|
|
ldh [hStartState], a
|
|
|
|
ldh [hSelectState], a
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
GetInput::
|
|
|
|
; Get the button state.
|
|
|
|
.btns
|
|
|
|
ld a, P1F_GET_BTN
|
|
|
|
ldh [rP1], a
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ld b, a
|
|
|
|
|
|
|
|
.readA
|
|
|
|
bit 0, b ; A
|
|
|
|
jr nz, .clearA
|
|
|
|
.setA
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hAState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readB
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hAState], a
|
|
|
|
jr .readB
|
|
|
|
.clearA
|
|
|
|
xor a, a
|
|
|
|
ldh [hAState], a
|
|
|
|
|
|
|
|
.readB
|
|
|
|
bit 1, b ; B
|
|
|
|
jr nz, .clearB
|
|
|
|
.setB
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hBState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readSelect
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hBState], a
|
|
|
|
jr .readSelect
|
|
|
|
.clearB
|
|
|
|
xor a, a
|
|
|
|
ldh [hBState], a
|
|
|
|
|
|
|
|
.readSelect
|
|
|
|
bit 2, b ; Select
|
|
|
|
jr nz, .clearSelect
|
|
|
|
.setSelect
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hSelectState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readStart
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hSelectState], a
|
|
|
|
jr .readStart
|
|
|
|
.clearSelect
|
|
|
|
xor a, a
|
|
|
|
ldh [hSelectState], a
|
|
|
|
|
|
|
|
.readStart
|
|
|
|
bit 3, b ; Start
|
|
|
|
jr nz, .clearStart
|
|
|
|
.setStart
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hStartState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .dpad
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hStartState], a
|
|
|
|
jr .dpad
|
|
|
|
.clearStart
|
|
|
|
xor a, a
|
|
|
|
ldh [hStartState], a
|
|
|
|
|
|
|
|
|
|
|
|
; Get the dpad state.
|
|
|
|
.dpad
|
|
|
|
ld a, P1F_GET_DPAD
|
|
|
|
ldh [rP1], a
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ldh a, [rP1]
|
|
|
|
ld b, a
|
|
|
|
|
|
|
|
.readUp
|
|
|
|
bit 2, b ; Up
|
|
|
|
jr nz, .clearUp
|
|
|
|
.setUp
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hUpState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readDown
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hUpState], a
|
|
|
|
jr .readDown
|
|
|
|
.clearUp
|
|
|
|
xor a, a
|
|
|
|
ldh [hUpState], a
|
|
|
|
|
|
|
|
.readDown
|
|
|
|
bit 3, b ; Down
|
|
|
|
jr nz, .clearDown
|
|
|
|
.setDown
|
2023-10-13 09:30:55 +00:00
|
|
|
ldh a, [hDownState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readLeft
|
|
|
|
inc a
|
2023-10-13 09:20:28 +00:00
|
|
|
ldh [hDownState], a
|
|
|
|
jr .readLeft
|
|
|
|
.clearDown
|
|
|
|
xor a, a
|
|
|
|
ldh [hDownState], a
|
|
|
|
|
|
|
|
.readLeft
|
|
|
|
bit 1, b ; Left
|
|
|
|
jr nz, .clearLeft
|
|
|
|
.setLeft
|
|
|
|
ldh a, [hLeftState]
|
|
|
|
cp $FF
|
|
|
|
jr z, .readRight
|
|
|
|
inc a
|
|
|
|
ldh [hLeftState], a
|
|
|
|
jr .readRight
|
|
|
|
.clearLeft
|
|
|
|
xor a, a
|
|
|
|
ldh [hLeftState], a
|
|
|
|
|
|
|
|
.readRight
|
|
|
|
bit 0, b ; Right
|
|
|
|
jr nz, .clearRight
|
|
|
|
.setRight
|
|
|
|
ldh a, [hRightState]
|
|
|
|
cp $FF
|
|
|
|
ret z
|
|
|
|
inc a
|
|
|
|
ldh [hRightState], a
|
|
|
|
ret
|
|
|
|
.clearRight
|
|
|
|
xor a, a
|
|
|
|
ldh [hRightState], a
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
|
|
ENDC
|