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/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.