aboutsummaryrefslogtreecommitdiffstats
path: root/engine/movie/evolution.asm
diff options
context:
space:
mode:
authorRangi <35663410+Rangi42@users.noreply.github.com>2020-07-03 09:38:52 -0400
committerGitHub <noreply@github.com>2020-07-03 09:38:52 -0400
commitc85050497c1bd062e9cd40bf5b32fa3beca366cc (patch)
tree9593ddd3ab820223ab580d5fc0ae133b485b8315 /engine/movie/evolution.asm
parentActually run .travis/webhook.sh (diff)
parentAdd engine/movie/oak_speech/ subdirectory (diff)
downloadpokeyellow-c85050497c1bd062e9cd40bf5b32fa3beca366cc.tar.gz
pokeyellow-c85050497c1bd062e9cd40bf5b32fa3beca366cc.tar.xz
pokeyellow-c85050497c1bd062e9cd40bf5b32fa3beca366cc.zip
Merge pull request #256 from Rangi42/master
Add subdirectories to engine/ similar to pokecrystal
Diffstat (limited to 'engine/movie/evolution.asm')
-rwxr-xr-xengine/movie/evolution.asm160
1 files changed, 160 insertions, 0 deletions
diff --git a/engine/movie/evolution.asm b/engine/movie/evolution.asm
new file mode 100755
index 00000000..731735c5
--- /dev/null
+++ b/engine/movie/evolution.asm
@@ -0,0 +1,160 @@
+EvolveMon:
+ push hl
+ push de
+ push bc
+ ld a, [wcf91]
+ push af
+ ld a, [wd0b5]
+ push af
+ xor a
+ ld [wLowHealthAlarm], a
+ ld [wChannelSoundIDs + Ch5], a
+ dec a
+ ld [wNewSoundID], a
+ call PlaySound
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, SFX_TINK
+ call PlaySound
+ call Delay3
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld [hTilesetType], a
+ ld a, [wEvoOldSpecies]
+ ld [wWholeScreenPaletteMonSpecies], a
+ ld c, 0
+ call EvolutionSetWholeScreenPalette
+ ld a, [wEvoNewSpecies]
+ ld [wcf91], a
+ ld [wd0b5], a
+ call Evolution_LoadPic
+ ld de, vFrontPic
+ ld hl, vBackPic
+ ld bc, 7 * 7
+ call CopyVideoData
+ ld a, [wEvoOldSpecies]
+ ld [wcf91], a
+ ld [wd0b5], a
+ call Evolution_LoadPic
+ ld a, $1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ ld a, [wEvoOldSpecies]
+ call PlayCry
+ call WaitForSoundToFinish
+ ld c, BANK(Music_SafariZone)
+ ld a, MUSIC_SAFARI_ZONE
+ call PlayMusic
+ ld c, 80
+ call DelayFrames
+ ld c, 1 ; set PAL_BLACK instead of mon palette
+ call EvolutionSetWholeScreenPalette
+ lb bc, $1, $10
+.animLoop
+ push bc
+ call Evolution_CheckForCancel
+ jr c, .evolutionCancelled
+ call Evolution_BackAndForthAnim
+ pop bc
+ inc b
+ dec c
+ dec c
+ jr nz, .animLoop
+ xor a
+ ld [wEvoCancelled], a
+ ld a, $31
+ ld [wEvoMonTileOffset], a
+ call Evolution_ChangeMonPic ; show the new species pic
+ ld a, [wEvoNewSpecies]
+.done
+ ld [wWholeScreenPaletteMonSpecies], a
+ ld a, $ff
+ ld [wNewSoundID], a
+ call PlaySound
+ ld a, [wWholeScreenPaletteMonSpecies]
+ call PlayCry
+ ld c, 0
+ call EvolutionSetWholeScreenPalette
+ pop af
+ ld [wd0b5], a
+ pop af
+ ld [wcf91], a
+ pop bc
+ pop de
+ pop hl
+ ld a, [wEvoCancelled]
+ and a
+ ret z
+ scf
+ ret
+.evolutionCancelled
+ pop bc
+ ld a, 1
+ ld [wEvoCancelled], a
+ ld a, [wEvoOldSpecies]
+ jr .done
+
+EvolutionSetWholeScreenPalette:
+ ld b, SET_PAL_POKEMON_WHOLE_SCREEN
+ jp RunPaletteCommand
+
+Evolution_LoadPic:
+ call GetMonHeader
+ coord hl, 7, 2
+ jp LoadFlippedFrontSpriteByMonIndex
+
+Evolution_BackAndForthAnim:
+; show the mon change back and forth between the new and old species b times
+ ld a, $31
+ ld [wEvoMonTileOffset], a
+ call Evolution_ChangeMonPic
+ ld a, -$31
+ ld [wEvoMonTileOffset], a
+ call Evolution_ChangeMonPic
+ dec b
+ jr nz, Evolution_BackAndForthAnim
+ ret
+
+Evolution_ChangeMonPic:
+ push bc
+ xor a
+ ld [H_AUTOBGTRANSFERENABLED], a
+ coord hl, 7, 2
+ lb bc, 7, 7
+ ld de, SCREEN_WIDTH - 7
+.loop
+ push bc
+.innerLoop
+ ld a, [wEvoMonTileOffset]
+ add [hl]
+ ld [hli], a
+ dec c
+ jr nz, .innerLoop
+ pop bc
+ add hl, de
+ dec b
+ jr nz, .loop
+ ld a, 1
+ ld [H_AUTOBGTRANSFERENABLED], a
+ call Delay3
+ pop bc
+ ret
+
+Evolution_CheckForCancel:
+ call DelayFrame
+ push bc
+ call JoypadLowSensitivity
+ ld a, [hJoy5]
+ pop bc
+ and B_BUTTON
+ jr nz, .pressedB
+.notAllowedToCancel
+ dec c
+ jr nz, Evolution_CheckForCancel
+ and a
+ ret
+.pressedB
+ ld a, [wForceEvolution]
+ and a
+ jr nz, .notAllowedToCancel
+ scf
+ ret