summaryrefslogtreecommitdiff
path: root/engine/bcd.asm
blob: 6b561df115412b7f3825da5085926412028799bc (plain)
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
44
45
46
47
48
49
50
51
52
53
54
55
INCLUDE "constants.asm"

SECTION "engine/bcd.asm", ROMX

AddBCD:
	and a
	ld b, c
.add
	ld a, [de]
	adc [hl]
	daa
	ld [de], a
	dec de
	dec hl
	dec c
	jr nz, .add
	jr nc, .done

	ld a, $99
	inc de

.fill
	ld [de], a
	inc de
	dec b
	jr nz, .fill

.done
	ret


SubBCD:
	and a
	ld b, c
.sub
	ld a, [de]
	sbc [hl]
	daa
	ld [de], a
	dec de
	dec hl
	dec c
	jr nz, .sub
	jr nc, .done
	ld a, 0
	inc de

.fill
	ld [de], a
	inc de
	dec b
	jr nz, .fill
	scf
.done
	ret