summaryrefslogtreecommitdiff
path: root/engine/evolution_animation.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/evolution_animation.asm')
-rwxr-xr-xengine/evolution_animation.asm457
1 files changed, 457 insertions, 0 deletions
diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm
new file mode 100755
index 000000000..69e7aec4c
--- /dev/null
+++ b/engine/evolution_animation.asm
@@ -0,0 +1,457 @@
+EvolutionAnimation: ; 4e5e1
+ push hl
+ push de
+ push bc
+ ld a, [CurSpecies]
+ push af
+ ld a, [rOBP0]
+ push af
+ ld a, [BaseDexNo]
+ push af
+
+ call _EvolutionAnimation
+
+ pop af
+ ld [BaseDexNo], a
+ pop af
+ ld [rOBP0], a
+ pop af
+ ld [CurSpecies], a
+ pop bc
+ pop de
+ pop hl
+
+ ld a, [wd1ed]
+ and a
+ ret z
+
+ scf
+ ret
+; 4e607
+
+_EvolutionAnimation: ; 4e607
+ ld a, $e4
+ ld [rOBP0], a
+
+ ld de, MUSIC_NONE
+ call PlayMusic
+
+ callba Function8cf53
+
+ ld de, EvolutionGFX
+ ld hl, VTiles0
+ lb bc, BANK(EvolutionGFX), 8
+ call Request2bpp
+
+ xor a
+ ld [Danger], a
+ call WaitBGMap
+ xor a
+ ld [hBGMapMode], a
+ ld a, [Buffer1]
+ ld [PlayerHPPal], a
+
+ ld c, $0
+ call Function4e703
+ ld a, [Buffer1]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call Function4e708
+
+ ld de, VTiles2
+ ld hl, VTiles2 tile $31
+ ld bc, $31
+ call Request2bpp
+
+ ld a, $31
+ ld [wd1ec], a
+ call Evolution_FlashFrontpics
+ ld a, [Buffer2]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call Function4e711
+ ld a, [Buffer1]
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+
+ ld a, $1
+ ld [hBGMapMode], a
+ call Function4e794
+ jr c, .skip_cry
+
+ ld a, [Buffer1]
+ call PlayCry
+
+.skip_cry
+ ld de, MUSIC_EVOLUTION
+ call PlayMusic
+
+ ld c, 80
+ call DelayFrames
+
+ ld c, $1
+ call Function4e703
+ call Function4e726
+ jr c, .pressed_b
+
+ ld a, $cf
+ ld [wd1ec], a
+
+ call Evolution_FlashFrontpics
+ xor a
+ ld [wd1ed], a
+
+ ld a, [Buffer2]
+ ld [PlayerHPPal], a
+
+ ld c, $0
+ call Function4e703
+ call Function4e7a6
+ callba Function8cf53
+ call Function4e794
+ jr c, .asm_4e6de
+
+ ld a, [wc2c6]
+ push af
+ ld a, $1
+ ld [wc2c6], a
+ ld a, [CurPartySpecies]
+ push af
+
+ ld a, [PlayerHPPal]
+ ld [CurPartySpecies], a
+ hlcoord 7, 2
+ ld d, $0
+ ld e, ANIM_MON_EVOLVE
+ predef AnimateFrontpic
+
+ pop af
+ ld [CurPartySpecies], a
+ pop af
+ ld [wc2c6], a
+ ret
+
+.asm_4e6de
+ ret
+
+.pressed_b
+ ld a, $1
+ ld [wd1ed], a
+
+ ld a, [Buffer1]
+ ld [PlayerHPPal], a
+
+ ld c, $0
+ call Function4e703
+ call Function4e7a6
+ callba Function8cf53
+ call Function4e794
+ ret c
+
+ ld a, [PlayerHPPal]
+ call PlayCry
+ ret
+; 4e703
+
+Function4e703: ; 4e703
+ ld b, $b
+ jp GetSGBLayout
+; 4e708
+
+Function4e708: ; 4e708
+ call GetBaseData
+ hlcoord 7, 2
+ jp PrepMonFrontpic
+; 4e711
+
+Function4e711: ; 4e711
+ call GetBaseData
+ ld a, $1
+ ld [wc2c6], a
+ ld de, VTiles2
+ predef Function5108b
+ xor a
+ ld [wc2c6], a
+ ret
+; 4e726
+
+Function4e726: ; 4e726
+ call ClearJoypad
+ lb bc, 1, 14
+.loop
+ push bc
+ call Evolution_CheckPressedB
+ pop bc
+ jr c, .pressed_b
+ push bc
+ call Evolution_NextFrame
+ pop bc
+ inc b
+rept 2
+ dec c
+endr
+ jr nz, .loop
+ and a
+ ret
+
+.pressed_b
+ scf
+ ret
+; 4e741
+
+Evolution_NextFrame: ; 4e741
+.loop
+ ld a, -49
+ ld [wd1ec], a
+ call Evolution_FlashFrontpics
+ ld a, 49
+ ld [wd1ec], a
+ call Evolution_FlashFrontpics
+ dec b
+ jr nz, .loop
+ ret
+; 4e755
+
+Evolution_FlashFrontpics: ; 4e755
+ push bc
+ xor a
+ ld [hBGMapMode], a
+ hlcoord 7, 2
+ lb bc, 7, 7
+ ld de, $d
+.loop1
+ push bc
+.loop2
+ ld a, [wd1ec]
+ add [hl]
+ ld [hli], a
+ dec c
+ jr nz, .loop2
+ pop bc
+ add hl, de
+ dec b
+ jr nz, .loop1
+ ld a, $1
+ ld [hBGMapMode], a
+ call WaitBGMap
+ pop bc
+ ret
+; 4e779
+
+Evolution_CheckPressedB: ; 4e779
+.loop
+ call DelayFrame
+ push bc
+ call JoyTextDelay
+ ld a, [hJoyDown]
+ pop bc
+ and B_BUTTON
+ jr nz, .pressed_b
+.loop2
+ dec c
+ jr nz, .loop
+ and a
+ ret
+
+.pressed_b
+ ld a, [wd1e9]
+ and a
+ jr nz, .loop2
+ scf
+ ret
+; 4e794
+
+Function4e794: ; 4e794
+ ld a, [CurPartyMon]
+ ld hl, PartyMon1Species
+ call GetPartyLocation
+ ld b, h
+ ld c, l
+ callba CheckFaintedFrzSlp
+ ret
+; 4e7a6
+
+Function4e7a6: ; 4e7a6
+ ld a, [wd1ed]
+ and a
+ ret nz
+ ld de, SFX_EVOLVED
+ call PlaySFX
+ ld hl, wJumptableIndex
+ ld a, [hl]
+ push af
+ ld [hl], $0
+.asm_4e7b8
+ call Function4e7cf
+ jr nc, .asm_4e7c2
+ call Function4e80c
+ jr .asm_4e7b8
+
+.asm_4e7c2
+ ld c, $20
+.asm_4e7c4
+ call Function4e80c
+ dec c
+ jr nz, .asm_4e7c4
+ pop af
+ ld [wJumptableIndex], a
+ ret
+; 4e7cf
+
+Function4e7cf: ; 4e7cf
+ ld hl, wJumptableIndex
+ ld a, [hl]
+ cp $20
+ ret nc
+ ld d, a
+ inc [hl]
+ and $1
+ jr nz, .asm_4e7e6
+ ld e, $0
+ call Function4e7e8
+ ld e, $10
+ call Function4e7e8
+
+.asm_4e7e6
+ scf
+ ret
+; 4e7e8
+
+Function4e7e8: ; 4e7e8
+ push de
+ ld de, $4858
+ ld a, $13
+ call Function3b2a
+ ld hl, $b
+ add hl, bc
+ ld a, [wJumptableIndex]
+ and $e
+ sla a
+ pop de
+ add e
+ ld [hl], a
+ ld hl, $3
+ add hl, bc
+ ld [hl], $0
+ ld hl, $c
+ add hl, bc
+ ld [hl], $10
+ ret
+; 4e80c
+
+Function4e80c: ; 4e80c
+ push bc
+ callab Function8cf69
+ ld a, [hVBlankCounter]
+ and $e
+ srl a
+rept 2
+ inc a
+endr
+ and $7
+ ld b, a
+ ld hl, Sprites + 3
+ ld c, $28
+.asm_4e823
+ ld a, [hl]
+ or b
+ ld [hli], a
+rept 3
+ inc hl
+endr
+ dec c
+ jr nz, .asm_4e823
+ pop bc
+ call DelayFrame
+ ret
+; 4e831
+
+
+EvolutionGFX:
+INCBIN "gfx/evo/bubble_large.2bpp"
+INCBIN "gfx/evo/bubble.2bpp"
+
+Function4e881: ; 4e881
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ ld hl, VBGMap0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ ld hl, UnknownText_0x4e8bd
+ call PrintText
+ call Function3200
+ call SetPalettes
+ ret
+; 4e8bd
+
+UnknownText_0x4e8bd: ; 0x4e8bd
+ ; SAVING RECORD… DON'T TURN OFF!
+ text_jump UnknownText_0x1bd39e
+ db "@"
+; 0x4e8c2
+
+
+Function4e8c2: ; 4e8c2
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ ld hl, VBGMap0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ ld hl, wd000
+ ld c, $40
+.asm_4e8ee
+ ld a, -1
+ ld [hli], a
+ ld a, " "
+ ld [hli], a
+ dec c
+ jr nz, .asm_4e8ee
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ call Function3200
+ call SetPalettes
+ ret
+; 4e906
+
+Function4e906: ; 4e906
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, w6_d000
+ ld bc, w6_d400 - w6_d000
+ ld a, " "
+ call ByteFill
+ ld hl, VBGMap0
+ ld de, w6_d000
+ ld b, $0
+ ld c, $40
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 4e929