mirror of
https://github.com/pret/pokered.git
synced 2024-10-24 07:25:21 +00:00
89 lines
1.8 KiB
NASM
89 lines
1.8 KiB
NASM
MarowakAnim:
|
|
; animate the ghost being unveiled as a Marowak
|
|
ld a, $e4
|
|
ld [rOBP1], a
|
|
call CopyMonPicFromBGToSpriteVRAM ; cover the BG ghost pic with a sprite ghost pic that looks the same
|
|
; now that the ghost pic is being displayed using sprites, clear the ghost pic from the BG tilemap
|
|
coord hl, 12, 0
|
|
lb bc, 7, 7
|
|
call ClearScreenArea
|
|
call Delay3
|
|
xor a
|
|
ld [H_AUTOBGTRANSFERENABLED], a ; disable BG transfer so we don't see the Marowak too soon
|
|
; replace ghost pic with Marowak in BG
|
|
ld a, MAROWAK
|
|
ld [wChangeMonPicEnemyTurnSpecies], a
|
|
ld a, $1
|
|
ld [H_WHOSETURN], a
|
|
callab ChangeMonPic
|
|
; alternate between black and light grey 8 times.
|
|
; this makes the ghost's body appear to flash
|
|
ld d, $80
|
|
call FlashSprite8Times
|
|
.fadeOutGhostLoop
|
|
ld c, 10
|
|
call DelayFrames
|
|
ld a, [rOBP1]
|
|
sla a
|
|
sla a
|
|
ld [rOBP1], a
|
|
jr nz, .fadeOutGhostLoop
|
|
call ClearSprites
|
|
call CopyMonPicFromBGToSpriteVRAM ; copy Marowak pic from BG to sprite VRAM
|
|
ld b, $e4
|
|
.fadeInMarowakLoop
|
|
ld c, 10
|
|
call DelayFrames
|
|
ld a, [rOBP1]
|
|
srl b
|
|
rra
|
|
srl b
|
|
rra
|
|
ld [rOBP1], a
|
|
ld a, b
|
|
and a
|
|
jr nz, .fadeInMarowakLoop
|
|
ld a, $1
|
|
ld [H_AUTOBGTRANSFERENABLED], a ; enable BG transfer so the BG Marowak pic will be visible after the sprite one is cleared
|
|
call Delay3
|
|
jp ClearSprites
|
|
|
|
; copies a mon pic's from background VRAM to sprite VRAM and sets up OAM
|
|
CopyMonPicFromBGToSpriteVRAM:
|
|
ld de, vFrontPic
|
|
ld hl, vSprites
|
|
ld bc, 7 * 7
|
|
call CopyVideoData
|
|
ld a, $10
|
|
ld [wBaseCoordY], a
|
|
ld a, $70
|
|
ld [wBaseCoordX], a
|
|
ld hl, wOAMBuffer
|
|
lb bc, 6, 6
|
|
ld d, $8
|
|
.oamLoop
|
|
push bc
|
|
ld a, [wBaseCoordY]
|
|
ld e, a
|
|
.oamInnerLoop
|
|
ld a, e
|
|
add $8
|
|
ld e, a
|
|
ld [hli], a
|
|
ld a, [wBaseCoordX]
|
|
ld [hli], a
|
|
ld a, d
|
|
ld [hli], a
|
|
ld a, $10 ; use OBP1
|
|
ld [hli], a
|
|
inc d
|
|
dec c
|
|
jr nz, .oamInnerLoop
|
|
inc d
|
|
ld a, [wBaseCoordX]
|
|
add $8
|
|
ld [wBaseCoordX], a
|
|
pop bc
|
|
dec b
|
|
jr nz, .oamLoop
|
|
ret
|