summaryrefslogtreecommitdiff
path: root/engine/health.asm
blob: a94a3ec308ef9366baeb3f9511903778904f1352 (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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
HealParty: ; c69d (3:469d)
	xor a
	ld [wCurPartyMon], a
	ld hl, wPartySpecies
.asm_c6a4
	ld a, [hli]
	cp $ff
	jr z, .asm_c6bb
	cp $fd
	jr z, .asm_c6b2
	push hl
	call Functionc6bc
	pop hl
.asm_c6b2
	ld a, [wCurPartyMon]
	inc a
	ld [wCurPartyMon], a
	jr .asm_c6a4

.asm_c6bb
	ret

Functionc6bc: ; c6bc (3:46bc)
	ld a, $0
	call GetPartyParamLocation
	ld d, h
	ld e, l
	ld hl, $20
	add hl, de
	xor a
	ld [hli], a
	ld [hl], a
	ld hl, $24
	add hl, de
	ld b, h
	ld c, l
	dec bc
	dec bc
	ld a, [hli]
	ld [bc], a
	inc bc
	ld a, [hl]
	ld [bc], a
	farcall Functionf900
	ret

ComputeHPBarPixels:
; e = bc * (6 * 8) / de
	ld a, b
	or c
	jr z, .asm_c722
	push hl
	xor a
	ldh [hMultiplicand + 0], a
	ld a, b
	ldh [hMultiplicand + 1], a
	ld a, c
	ldh [hMultiplicand + 2], a
	ld a, 6 * 8
	ldh [hMultiplier], a
	call Multiply
	; We need de to be under 256 because hDivisor is only 1 byte.
	ld a, d
	and a
	jr z, .asm_c711
	; divide de and hProduct by 4
	srl d
	rr e
	srl d
	rr e
	ldh a, [hProduct + 2]
	ld b, a
	ldh a, [hProduct + 3]
	srl b
	rr a
	srl b
	rr a
	ldh [hDividend + 3], a
	ld a, b
	ldh [hDividend + 2], a
.asm_c711
	ld a, e
	ldh [hPrintNum5], a
	ld b, $4
	call Divide
	ldh a, [hPrintNum4]
	ld e, a
	pop hl
	and a
	ret nz
	ld e, $1
	ret

.asm_c722
	ld e, $0
	ret

AnimateHPBar: ; c725 (3:4725)
	call WaitBGMap
	call AnimateHPBar_
	call WaitBGMap
	ret