aboutsummaryrefslogtreecommitdiffstats
path: root/engine/battle/ghost_marowak_anim.asm
diff options
context:
space:
mode:
authorxCrystal <rgr.crystal@gmail.com>2015-04-01 17:03:05 +0200
committerxCrystal <rgr.crystal@gmail.com>2015-04-01 17:05:51 +0200
commit10211cc461b35140c815e18e95f7070eb0dcc586 (patch)
treea3ccfaf788d8b7cb7e743125bfceb3785a1b0d19 /engine/battle/ghost_marowak_anim.asm
parentRename battle files and split move effects Part 4 (diff)
downloadpokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.tar.gz
pokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.tar.xz
pokeyellow-10211cc461b35140c815e18e95f7070eb0dcc586.zip
Rename battle files and split move effects Part 5
15.asm, 16.asm, 1a.asm, 1c.asm
Diffstat (limited to 'engine/battle/ghost_marowak_anim.asm')
-rw-r--r--engine/battle/ghost_marowak_anim.asm89
1 files changed, 89 insertions, 0 deletions
diff --git a/engine/battle/ghost_marowak_anim.asm b/engine/battle/ghost_marowak_anim.asm
new file mode 100644
index 00000000..73d3bcc2
--- /dev/null
+++ b/engine/battle/ghost_marowak_anim.asm
@@ -0,0 +1,89 @@
+MarowakAnim: ; 708ca (1c:48ca)
+; 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
+ hlCoord 12, 0
+ ld bc, $707
+ 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 [wHPBarMaxHP], a
+ ld a, $1
+ ld [H_WHOSETURN], a
+ callab Func_79793
+ ; 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: ; 7092a (1c:492a)
+ ld de, vFrontPic
+ ld hl, vSprites
+ ld bc, 7 * 7
+ call CopyVideoData
+ ld a, $10
+ ld [W_BASECOORDY], a
+ ld a, $70
+ ld [W_BASECOORDX], a
+ ld hl, wOAMBuffer
+ ld bc, $606
+ ld d, $8
+.oamLoop
+ push bc
+ ld a, [W_BASECOORDY]
+ ld e, a
+.oamInnerLoop
+ ld a, e
+ add $8
+ ld e, a
+ ld [hli], a
+ ld a, [W_BASECOORDX]
+ 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, [W_BASECOORDX]
+ add $8
+ ld [W_BASECOORDX], a
+ pop bc
+ dec b
+ jr nz, .oamLoop
+ ret