gbdk-2020 | GameBoy Development Kit |
| download: https://git.y1.nz/archives/gbdk.tar.gz | |
| README | Files | Log | Refs | LICENSE |
gbdk-lib/libc/targets/sm83/delay.s
1 .include "global.s"
2
3 .area _HOME
4
5 ;; Delay DE milliseconds
6 ;;
7 ;; Entry conditions
8 ;; DE = number of milliseconds to delay (1 to 65536, 0 = 65536)
9 ;;
10 ;; Register used: AF, DE
11 ;;
12 ;; One millisecond last for 1048.576 M-cycles on normal speed mode
13 ;; This has been rounded to 1048.000 M-cycles
14 ;; One millisecond last for 2097.152 M-cycles on double speed mode
15 ;; This has been rounded to 2097.000 M-cycles
16 loop:
17 ; on normal speed mode each iteration lasts for 6 + 1028 + 3 + 1 + 3 + 2 + 2 + 3 = 1048 cycles
18 ; on double speed mode each iteration lasts for 6 + 3 + 1 + 6 + 1046 + 2 + 1 + 1 + 3 = 2097 cycles
19 call delay_1028
20 _delay::
21 .delay::
22
23 ldh a, (.KEY1)
24 add a
25 call c, delay_1046
26
27 dec de
28
29 ld a, e
30 or d
31 jr nz, loop
32 nop
33
34 delay_1028:
35 ; waits for 2 + 147 * 7 = 1031 cycles
36 ld a, #171
37 L0:
38 dec a
39 ret z
40 L1:
41 jr L0
42 delay_1046:
43 ; waits for 2 + 3 + 3 + 6 * 173 = 1046 cycles
44 ld a, #173
45 jr L1
This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.