git.y1.nz

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.