summaryrefslogtreecommitdiff
path: root/engine/pokemon/evolve.asm
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-06-17 17:02:45 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-06-17 17:02:45 -0400
commit451f529b0d6311fc0b6c507d8ccb5336e2984889 (patch)
treeb2c5643d6973e79c02f3e7aba7d9e86702c51870 /engine/pokemon/evolve.asm
parent993f87a852974b000a0ec770cfd53afb392136ce (diff)
Harmonize engine/{movie, pokemon} with pokecrystal
To do: engine/{menus, overworld}
Diffstat (limited to 'engine/pokemon/evolve.asm')
-rw-r--r--engine/pokemon/evolve.asm287
1 files changed, 3 insertions, 284 deletions
diff --git a/engine/pokemon/evolve.asm b/engine/pokemon/evolve.asm
index 5c6d68b0..e538a040 100644
--- a/engine/pokemon/evolve.asm
+++ b/engine/pokemon/evolve.asm
@@ -241,15 +241,15 @@ EvolveAfterBattle_MasterLoop:
push hl
ld hl, EvolvedIntoText
call PrintTextboxText
- push de
+ push de
ld de, MUSIC_NONE
call PlayMusic
ld de, SFX_CAUGHT_MON
call PlaySFX
call WaitSFX
-
pop de
+
ld c, 40
call DelayFrames
@@ -601,288 +601,7 @@ EvoFlagAction:
pop de
ret
-EvolutionAnimation:
- push hl
- push de
- push bc
- ld a, [wCurSpecies]
- push af
- ldh a, [rOBP0]
- push af
- ld a, %11100100
- ldh [rOBP0], a
-
- ld de, MUSIC_NONE
- call PlayMusic
-
- callfar ClearSpriteAnims
-
- ld de, .GFX
- ld hl, vTiles0
- lb bc, BANK(.GFX), 8
- call Request2bpp
- xor a
- ld [wLowHealthAlarm], a
-
- ld a, 1
- ldh [hBGMapMode], a
-
- call WaitBGMap
- xor a
- ldh [hBGMapMode], a
-
- ld a, [wEvolutionOldSpecies]
- ld [wPlayerHPPal], a
- ld c, 0
- call .GetSGBLayout
-
- ld a, [wEvolutionNewSpecies]
- ld [wCurPartySpecies], a
- ld [wCurSpecies], a
- call .PlaceFrontpic
-
- ld de, vTiles2
- ld hl, vTiles2 tile $31
- ld bc, 7 * 7
- call Request2bpp
-
- ld a, [wEvolutionOldSpecies]
- ld [wCurPartySpecies], a
- ld [wCurSpecies], a
- call .PlaceFrontpic
-
- ld a, 1
- ldh [hBGMapMode], a
-
- ld a, [wEvolutionOldSpecies]
- call PlayMonCry
-
- ld de, MUSIC_EVOLUTION
- call PlayMusic
-
- ld c, 80
- call DelayFrames
-
- ld c, 1
- call .GetSGBLayout
-
-.AnimationSequence:
- call ClearJoypad
- lb bc, 1, 16 ; flash b times, wait c frames in between
-.loop
- push bc
- call .WaitFrames_CheckPressedB
- jr c, .cancel
- call .Flash
- pop bc
- inc b
- dec c
- dec c
- jr nz, .loop
-
- xor a
- ld [wEvolutionCanceled], a
-
- ld a, 49
- ld [wEvolutionPicOffset], a
- call .ReplaceFrontpic
-
- ld a, [wEvolutionNewSpecies]
-.return:
- ld [wPlayerHPPal], a
-
- ld c, 0
- call .GetSGBLayout
- call .PlayEvolvedSFX
-
- callfar ClearSpriteAnims
-
- ld a, [wPlayerHPPal]
- call PlayMonCry
-
- pop af
- ldh [rOBP0], a
- pop af
- ld [wCurSpecies], a
- pop bc
- pop de
- pop hl
-
- ld a, [wEvolutionCanceled]
- and a
- ret z
-
- scf
- ret
-
-.cancel:
- pop bc
- ld a, 1
- ld [wEvolutionCanceled], a
-
- ld a, [wEvolutionOldSpecies]
- jr .return
-
-.GetSGBLayout:
- ld b, SCGB_EVOLUTION
- jp GetSGBLayout
-
-.PlaceFrontpic:
- call GetBaseData
- hlcoord 7, 2
- jp PrepMonFrontpic
-
-.Flash:
- ld a, 7 * 7 ; previous stage
- ld [wEvolutionPicOffset], a
- call .ReplaceFrontpic
- ld a, -7 * 7 ; new stage
- ld [wEvolutionPicOffset], a
- call .ReplaceFrontpic
- dec b
- jr nz, .Flash
- ret
-
-.ReplaceFrontpic:
- push bc
- xor a
- ldh [hBGMapMode], a
- hlcoord 7, 2
- lb bc, 7, 7
- ld de, SCREEN_WIDTH - 7
-.loop1
- push bc
-.loop2
- ld a, [wEvolutionPicOffset]
- add [hl]
- ld [hli], a
- dec c
- jr nz, .loop2
- pop bc
- add hl, de
- dec b
- jr nz, .loop1
- ld a, $1
- ldh [hBGMapMode], a
- call WaitBGMap
- pop bc
- ret
-
-.WaitFrames_CheckPressedB:
- call DelayFrame
- push bc
- call JoyTextDelay
- ldh a, [hJoyDown]
- pop bc
- and B_BUTTON
- jr nz, .pressed_b
-.loop3
- dec c
- jr nz, .WaitFrames_CheckPressedB
- and a
- ret
-
-.pressed_b
- ld a, [wForceEvolution]
- and a
- jr nz, .loop3
- scf
- ret
-
-.PlayEvolvedSFX:
- ld a, [wEvolutionCanceled]
- and a
- ret nz
- ld de, SFX_EVOLVED
- call PlaySFX
- ld hl, wJumptableIndex
- ld a, [hl]
- push af
- ld [hl], $0
-.loop4
- call .balls_of_light
- jr nc, .done
- call .AnimateBallsOfLight
- jr .loop4
-
-.done
- ld c, 32
-.loop5
- call .AnimateBallsOfLight
- dec c
- jr nz, .loop5
- pop af
- ld [wJumptableIndex], a
- ret
-
-.balls_of_light
- ld hl, wJumptableIndex
- ld a, [hl]
- cp 32
- ret nc
- ld d, a
- inc [hl]
- and $1
- jr nz, .done_balls
- ld e, $0
- call .GenerateBallOfLight
- ld e, $10
- call .GenerateBallOfLight
-
-.done_balls
- scf
- ret
-
-.GenerateBallOfLight:
- push de
- depixel 9, 11
- ld a, SPRITE_ANIM_INDEX_EVOLUTION_BALL_OF_LIGHT
- call InitSpriteAnimStruct
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- ld a, [wJumptableIndex]
- and %1110
- sla a
- pop de
- add e
- ld [hl], a
- ld hl, SPRITEANIMSTRUCT_TILE_ID
- add hl, bc
- ld [hl], $0
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], $10
- ret
-
-.AnimateBallsOfLight:
- push bc
- callfar PlaySpriteAnimations
- ; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES
- ldh a, [hVBlankCounter]
- and %1110
- srl a
- inc a
- inc a
- and $7
- ld b, a
- ld hl, wVirtualOAMSprite00Attributes
- ld c, NUM_SPRITE_OAM_STRUCTS
-.loop6
- ld a, [hl]
- or b
- ld [hli], a ; attributes
-rept SPRITEOAMSTRUCT_LENGTH - 1
- inc hl
-endr
- dec c
- jr nz, .loop6
- pop bc
- call DelayFrame
- ret
-
-.GFX:
-INCBIN "gfx/evo/bubble_large.2bpp"
-INCBIN "gfx/evo/bubble.2bpp"
+INCLUDE "engine/movie/evolution_animation.asm"
GetPreEvolution:
; Find the first mon to evolve into wCurPartySpecies.