1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
; copy b bytes of data from hl to de, but only during hblank
HblankCopyDataHLtoDE:
push bc
.loop
ei
di
ldh a, [rSTAT] ;
and STAT_LCDC_STATUS ;
jr nz, .loop ; assert hblank
ld a, [hl]
ld [de], a
ldh a, [rSTAT] ;
and STAT_LCDC_STATUS ;
jr nz, .loop ; assert still in hblank
ei
inc hl
inc de
dec b
jr nz, .loop
pop bc
ret
; copy c bytes of data from de to hl, but only during hblank
HblankCopyDataDEtoHL:
push bc
.loop
ei
di
ldh a, [rSTAT] ;
and STAT_LCDC_STATUS ;
jr nz, .loop ; assert hblank
ld a, [de]
ld [hl], a
ldh a, [rSTAT] ;
and STAT_LCDC_STATUS ;
jr nz, .loop ; assert still in hblank
ei
inc hl
inc de
dec c
jr nz, .loop
pop bc
ret
|