93 lines
1.3 KiB
NASM
93 lines
1.3 KiB
NASM
INCLUDE "hardware.inc"
|
|
|
|
Section "Joypad memory", HRAM
|
|
; Bits 0..7 are A, B, Select, Start, Right, Left, Up, Down
|
|
JoypadDown: ds 1
|
|
JoypadPressed: ds 1
|
|
|
|
SECTION "Update joypad", ROM0
|
|
UpdateJoypad:
|
|
; read directions
|
|
ld a, P1F_5
|
|
ldh [rP1], a
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
and a, $0F
|
|
swap a ; move into high nibble
|
|
ld b, a
|
|
|
|
; read buttons
|
|
ld a, P1F_4
|
|
ldh [rP1], a
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
ldh a, [rP1]
|
|
and a, $0F
|
|
|
|
; merge directions and buttons
|
|
; complement so that active buttons read as 1
|
|
or a, b
|
|
cpl
|
|
|
|
; backup all buttons in B
|
|
ld b, a
|
|
|
|
; store just pressed buttons
|
|
ldh a, [JoypadPressed]
|
|
cpl
|
|
and a, b
|
|
ldh [JoypadDown], a
|
|
|
|
; store currently pressed buttons
|
|
ld a, b
|
|
ldh [JoypadPressed], a
|
|
|
|
; reset joypad
|
|
ld a, $30
|
|
ldh [rP1], a
|
|
ret
|
|
|
|
Section "Edit memory", HRAM
|
|
SelectX: ds 1
|
|
SelectY: ds 1
|
|
|
|
EXPORT InitEdit
|
|
SECTION "Init edit", ROM0
|
|
InitEdit:
|
|
ld a, 20
|
|
ldh [SelectX], a
|
|
ld a, 18
|
|
ldh [SelectY], a
|
|
xor a
|
|
ldh [JoypadDown], a
|
|
ldh [JoypadPressed], a
|
|
ret
|
|
|
|
|
|
EXPORT EditOldBuffer
|
|
SECTION "Edit old buffer", ROM0
|
|
EditOldBuffer:
|
|
call UpdateJoypad
|
|
|
|
ldh a, [JoypadDown]
|
|
and a, %1000
|
|
ret z
|
|
|
|
.loop
|
|
halt
|
|
xor a
|
|
ldh a, [rIF]
|
|
|
|
call UpdateJoypad
|
|
ldh a, [JoypadDown]
|
|
and a, %1000
|
|
ret nz
|
|
|
|
jr .loop
|
|
|
|
|
|
|
|
|