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
|