Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pret
GitHub Repository: pret/pokered
Path: blob/master/engine/battle/ghost_marowak_anim.asm
1271 views
1
MarowakAnim:
2
; animate the ghost being unveiled as a Marowak
3
ld a, $e4
4
ldh [rOBP1], a
5
call CopyMonPicFromBGToSpriteVRAM ; cover the BG ghost pic with a sprite ghost pic that looks the same
6
; now that the ghost pic is being displayed using sprites, clear the ghost pic from the BG tilemap
7
hlcoord 12, 0
8
lb bc, 7, 7
9
call ClearScreenArea
10
call Delay3
11
xor a
12
ldh [hAutoBGTransferEnabled], a ; disable BG transfer so we don't see the Marowak too soon
13
; replace ghost pic with Marowak in BG
14
ld a, RESTLESS_SOUL
15
ld [wChangeMonPicEnemyTurnSpecies], a
16
ld a, $1
17
ldh [hWhoseTurn], a
18
callfar ChangeMonPic
19
; alternate between black and light gray 8 times.
20
; this makes the ghost's body appear to flash
21
ld d, $80
22
call FlashSprite8Times
23
.fadeOutGhostLoop
24
ld c, 10
25
call DelayFrames
26
ldh a, [rOBP1]
27
sla a
28
sla a
29
ldh [rOBP1], a
30
jr nz, .fadeOutGhostLoop
31
call ClearSprites
32
call CopyMonPicFromBGToSpriteVRAM ; copy Marowak pic from BG to sprite VRAM
33
ld b, $e4
34
.fadeInMarowakLoop
35
ld c, 10
36
call DelayFrames
37
ldh a, [rOBP1]
38
srl b
39
rra
40
srl b
41
rra
42
ldh [rOBP1], a
43
ld a, b
44
and a
45
jr nz, .fadeInMarowakLoop
46
ld a, $1
47
ldh [hAutoBGTransferEnabled], a ; enable BG transfer so the BG Marowak pic will be visible after the sprite one is cleared
48
call Delay3
49
jp ClearSprites
50
51
; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM
52
CopyMonPicFromBGToSpriteVRAM:
53
ld de, vFrontPic
54
ld hl, vSprites
55
ld bc, 7 * 7
56
call CopyVideoData
57
ld a, $10
58
ld [wBaseCoordY], a
59
ld a, $70
60
ld [wBaseCoordX], a
61
ld hl, wShadowOAM
62
lb bc, 6, 6
63
ld d, $8
64
.oamLoop
65
push bc
66
ld a, [wBaseCoordY]
67
ld e, a
68
.oamInnerLoop
69
ld a, e
70
add $8
71
ld e, a
72
ld [hli], a
73
ld a, [wBaseCoordX]
74
ld [hli], a
75
ld a, d
76
ld [hli], a
77
ld a, OAM_PAL1
78
ld [hli], a
79
inc d
80
dec c
81
jr nz, .oamInnerLoop
82
inc d
83
ld a, [wBaseCoordX]
84
add $8
85
ld [wBaseCoordX], a
86
pop bc
87
dec b
88
jr nz, .oamLoop
89
ret
90
91