gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
gbdk-lib/libc/targets/sm83/pad_ex.s
1 .include "global.s"
2
3 .MLT_REQ = 0x11
4
5 .area _HOME
6
7 _joypad_init::
8 call .sgb_check
9 ld a, e
10 inc e
11 or a
12
13 jr Z, 1$
14
15 ldhl sp, #0x02
16 ld e, (hl)
17
18 add sp, #-0x10
19 ldhl sp, #0
20 ld c, #0x10
21 xor a
22 rst 0x28
23
24 ldhl sp, #0
25 ld a, #((.MLT_REQ << 3) | 1)
26 ld (hl+), a
27
28 ld a, e
29
30 cp a, #0x02
31 jr Z, 3$
32 cp a, #0x04
33 jr Z, 4$
34 jr 5$
35
36 3$:
37 ld a, #0x01
38 ld (hl-), a
39 call .sgb_transfer
40 ld e, #0x02
41 jr 2$
42
43 4$:
44 ld a, #0x03
45 ld (hl-), a
46 call .sgb_transfer
47 ld e, #0x04
48 jr 2$
49 5$:
50 ld a, #0x00
51 ld (hl-), a
52 call .sgb_transfer
53 ld e, #0x01
54 2$:
55 add sp, #0x10
56 1$:
57 ldhl sp, #3
58 ld a, (hl+)
59 ld h, (hl)
60 ld l, a
61 ld a, e
62 ld (hl+), a
63 xor a
64 ld (hl+), a
65 ld (hl+), a
66 ld (hl+), a
67 ld (hl), a
68 ret
69
70 _joypad_ex::
71 .joypad_ex::
72 ld a, (de)
73 inc de
74 or a
75 jr z, 2$
76
77 dec a
78 and #3
79 inc a
80 2$:
81 push bc
82 ld b, a
83 1$:
84 ld a, #(.P14 | .P15)
85 ldh (#.P1), a
86 ldh a, (#.P1)
87 ldh a, (#.P1)
88 ldh a, (#.P1)
89 ldh a, (#.P1)
90 and #0x0f
91 sub #0x0f
92 cpl
93 inc a ; A contains joypad number
94
95 and #0x03 ; buffer overrun protection
96
97 add e ; HL = DE + A
98 ld l, a
99 adc d
100 sub l
101 ld h, a
102
103 ld a, #.P15
104 ldh (#.P1), a
105 ldh a, (#.P1)
106 ldh a, (#.P1)
107 and #0x0f
108 ld c, a
109 ld a, #.P14
110 ldh (#.P1), a
111 ldh a, (#.P1)
112 ldh a, (#.P1)
113 ldh a, (#.P1)
114 ldh a, (#.P1)
115 ldh a, (#.P1)
116 ldh a, (#.P1)
117 and #0x0f
118 swap a
119 or c
120 cpl
121 ld (hl), a
122
123 dec b
124 jr nz, 1$
125 pop bc
126
127 ret
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.