Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/engine/overworld/healing_machine.asm
1271 views
1
AnimateHealingMachine:
2
ld de, PokeCenterFlashingMonitorAndHealBall
3
ld hl, vChars0 tile $7c
4
lb bc, BANK(PokeCenterFlashingMonitorAndHealBall), 3 ; should be 2
5
call CopyVideoData
6
ld hl, wUpdateSpritesEnabled
7
ld a, [hl]
8
push af
9
ld [hl], $ff
10
push hl
11
ldh a, [rOBP1]
12
push af
13
ld a, $e0
14
ldh [rOBP1], a
15
ld hl, wShadowOAMSprite33
16
ld de, PokeCenterOAMData
17
call CopyHealingMachineOAM
18
ld a, 4
19
ld [wAudioFadeOutControl], a
20
ld a, SFX_STOP_ALL_MUSIC
21
ld [wNewSoundID], a
22
call PlaySound
23
.waitLoop
24
ld a, [wAudioFadeOutControl]
25
and a ; is fade-out finished?
26
jr nz, .waitLoop ; if not, check again
27
ld a, [wPartyCount]
28
ld b, a
29
.partyLoop
30
call CopyHealingMachineOAM
31
ld a, SFX_HEALING_MACHINE
32
call PlaySound
33
ld c, 30
34
call DelayFrames
35
dec b
36
jr nz, .partyLoop
37
ld a, [wAudioROMBank]
38
cp BANK("Audio Engine 3")
39
ld [wAudioSavedROMBank], a
40
jr nz, .next
41
ld a, SFX_STOP_ALL_MUSIC
42
ld [wNewSoundID], a
43
call PlaySound
44
ld a, BANK(Music_PkmnHealed)
45
ld [wAudioROMBank], a
46
.next
47
ld a, MUSIC_PKMN_HEALED
48
ld [wNewSoundID], a
49
call PlaySound
50
ld d, $28
51
call FlashSprite8Times
52
.waitLoop2
53
ld a, [wChannelSoundIDs]
54
cp MUSIC_PKMN_HEALED ; is the healed music still playing?
55
jr z, .waitLoop2 ; if so, check gain
56
ld c, 32
57
call DelayFrames
58
pop af
59
ldh [rOBP1], a
60
pop hl
61
pop af
62
ld [hl], a
63
jp UpdateSprites
64
65
PokeCenterFlashingMonitorAndHealBall:
66
INCBIN "gfx/overworld/heal_machine.2bpp"
67
68
PokeCenterOAMData:
69
; heal machine monitor
70
dbsprite 6, 4, 4, 4, $7c, OAM_PAL1
71
; poke balls 1-6
72
dbsprite 6, 5, 0, 3, $7d, OAM_PAL1
73
dbsprite 7, 5, 0, 3, $7d, OAM_PAL1 | OAM_XFLIP
74
dbsprite 6, 6, 0, 0, $7d, OAM_PAL1
75
dbsprite 7, 6, 0, 0, $7d, OAM_PAL1 | OAM_XFLIP
76
dbsprite 6, 6, 0, 5, $7d, OAM_PAL1
77
dbsprite 7, 6, 0, 5, $7d, OAM_PAL1 | OAM_XFLIP
78
79
; d = value to xor with palette
80
FlashSprite8Times:
81
ld b, 8
82
.loop
83
ldh a, [rOBP1]
84
xor d
85
ldh [rOBP1], a
86
ld c, 10
87
call DelayFrames
88
dec b
89
jr nz, .loop
90
ret
91
92
CopyHealingMachineOAM:
93
; copy one OAM entry and advance the pointers
94
REPT 4
95
ld a, [de]
96
inc de
97
ld [hli], a
98
ENDR
99
ret
100
101