diff options
Diffstat (limited to 'engine/evolution_animation.asm')
-rwxr-xr-x | engine/evolution_animation.asm | 457 |
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 |