summaryrefslogtreecommitdiff
path: root/home/joypad.asm
diff options
context:
space:
mode:
authorTauwasser <Tauwasser@tauwasser.eu>2018-06-01 01:26:26 +0200
committerTauwasser <Tauwasser@tauwasser.eu>2018-06-01 01:26:41 +0200
commit66e714913c3ed0bcb1c8d9ee9c004960b711a8ac (patch)
treec9c4d961883f220a29abca51826e863e7bc3a2bb /home/joypad.asm
parent513028a98e6225e39c53ea64e4f9c483b3abd55b (diff)
home: disassemble vblank and associated functions
Signed-off-by: Tauwasser <Tauwasser@tauwasser.eu>
Diffstat (limited to 'home/joypad.asm')
-rw-r--r--home/joypad.asm51
1 files changed, 51 insertions, 0 deletions
diff --git a/home/joypad.asm b/home/joypad.asm
new file mode 100644
index 0000000..80371b7
--- /dev/null
+++ b/home/joypad.asm
@@ -0,0 +1,51 @@
+INCLUDE "constants.asm"
+
+SECTION "Joypad functions", ROM0[$07FE]
+
+Joypad:: ; 7fe (0:7fe)
+ ld a, [$d4ab]
+ and $d0
+ ret nz
+ ld a, 1 << 5 ; select direction keys
+ ldh [rJOYP], a
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ cpl
+ and $0f
+ swap a
+ ld b, a
+ ld a, 1 << 4 ; select button keys
+ ldh [rJOYP], a
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ ldh a, [rJOYP]
+ cpl
+ and $0f
+ or b
+ ld b, a
+ ld a, (1 << 5 | 1 << 4) ; port reset
+ ldh [rJOYP], a
+ ldh a, [hJoypadDown]
+ ld e, a
+ xor b
+ ld d, a
+ and e
+ ldh [hJoypadReleased], a
+ ld a, d
+ and b
+ ldh [hJoypadPressed], a
+ ld c, a
+ ldh a, [hJoypadSum]
+ or c
+ ldh [hJoypadSum], a
+ ld a, b
+ ldh [hJoypadDown], a
+ ldh [hJoypadDown2], a
+ and $0f
+ cp $0f
+ jp z, Reset
+ ret
+; 0x84a \ No newline at end of file