123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- 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
|