summaryrefslogtreecommitdiff
path: root/engine/evolution.asm
blob: 76537530d705e4873d299d53f1ee9085c04b5b00 (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
EvolveMon: ; 7bde9 (1e:7de9)
	push hl
	push de
	push bc
	ld a, [wcf91]
	push af
	ld a, [wd0b5]
	push af
	xor a
	ld [wLowHealthAlarm], a
	ld [wc02a], a
	dec a
	ld [wc0ee], a
	call PlaySound
	ld a, $1
	ld [H_AUTOBGTRANSFERENABLED], a
	ld a, (SFX_08_3c - SFX_Headers_08) / 3
	call PlaySound
	call Delay3
	xor a
	ld [H_AUTOBGTRANSFERENABLED], a
	ld [hTilesetType], a
	ld a, [wHPBarMaxHP]
	ld [wcf1d], a
	ld c, $0
	call EvolutionSetWholeScreenPalette
	ld a, [wHPBarMaxHP + 1]
	ld [wcf91], a
	ld [wd0b5], a
	call Func_7beb9
	ld de, vFrontPic
	ld hl, vBackPic
	ld bc, 7 * 7
	call CopyVideoData
	ld a, [wHPBarMaxHP]
	ld [wcf91], a
	ld [wd0b5], a
	call Func_7beb9
	ld a, $1
	ld [H_AUTOBGTRANSFERENABLED], a
	ld a, [wHPBarMaxHP]
	call PlayCry
	call WaitForSoundToFinish
	ld c, BANK(Music_SafariZone)
	ld a, MUSIC_SAFARI_ZONE
	call PlayMusic
	ld c, 80
	call DelayFrames
	ld c, $1
	call EvolutionSetWholeScreenPalette
	ld bc, $110
.asm_7be63
	push bc
	call Func_7befa
	jr c, .asm_7bea9
	call Func_7bec2
	pop bc
	inc b
	dec c
	dec c
	jr nz, .asm_7be63
	xor a
	ld [wHPBarOldHP + 1], a
	ld a, $31
	ld [wHPBarOldHP], a
	call Func_7bed6
	ld a, [wHPBarMaxHP + 1]
.asm_7be81
	ld [wcf1d], a
	ld a, $ff
	ld [wc0ee], a
	call PlaySound
	ld a, [wcf1d]
	call PlayCry
	ld c, $0
	call EvolutionSetWholeScreenPalette
	pop af
	ld [wd0b5], a
	pop af
	ld [wcf91], a
	pop bc
	pop de
	pop hl
	ld a, [wHPBarOldHP + 1]
	and a
	ret z
	scf
	ret
.asm_7bea9
	pop bc
	ld a, $1
	ld [wHPBarOldHP + 1], a
	ld a, [wHPBarMaxHP]
	jr .asm_7be81

EvolutionSetWholeScreenPalette: ; 7beb4 (1e:7eb4)
	ld b, $b
	jp GoPAL_SET

Func_7beb9: ; 7beb9 (1e:7eb9)
	call GetMonHeader
	hlCoord 7, 2
	jp LoadFlippedFrontSpriteByMonIndex

Func_7bec2: ; 7bec2 (1e:7ec2)
	ld a, $31
	ld [wHPBarOldHP], a
	call Func_7bed6
	ld a, $cf
	ld [wHPBarOldHP], a
	call Func_7bed6
	dec b
	jr nz, Func_7bec2
	ret

Func_7bed6: ; 7bed6 (1e:7ed6)
	push bc
	xor a
	ld [H_AUTOBGTRANSFERENABLED], a
	hlCoord 7, 2
	ld bc, $707
	ld de, $d
.asm_7bee3
	push bc
.asm_7bee4
	ld a, [wHPBarOldHP]
	add [hl]
	ld [hli], a
	dec c
	jr nz, .asm_7bee4
	pop bc
	add hl, de
	dec b
	jr nz, .asm_7bee3
	ld a, $1
	ld [H_AUTOBGTRANSFERENABLED], a
	call Delay3
	pop bc
	ret

Func_7befa: ; 7befa (1e:7efa)
	call DelayFrame
	push bc
	call JoypadLowSensitivity
	ld a, [hJoy5]
	pop bc
	and $2
	jr nz, .asm_7bf0d
.asm_7bf08
	dec c
	jr nz, Func_7befa
	and a
	ret
.asm_7bf0d
	ld a, [wccd4]
	and a
	jr nz, .asm_7bf08
	scf
	ret