summaryrefslogtreecommitdiff
path: root/src/engine/intro.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/intro.asm')
-rw-r--r--src/engine/intro.asm114
1 files changed, 114 insertions, 0 deletions
diff --git a/src/engine/intro.asm b/src/engine/intro.asm
new file mode 100644
index 0000000..8a16b3a
--- /dev/null
+++ b/src/engine/intro.asm
@@ -0,0 +1,114 @@
+PlayIntroSequence:
+ call DisableLCD
+ farcall Func_10a9b
+ farcall Func_10000
+ call Func_3ca0
+ ld hl, HandleAllSpriteAnimations
+ call SetDoFrameFunction
+ call LoadTitleScreenSprites
+
+ ld a, LOW(IntroSequence)
+ ld [wSequenceCmdPtr + 0], a
+ ld a, HIGH(IntroSequence)
+ ld [wSequenceCmdPtr + 1], a
+
+ xor a
+ ld [wd317], a
+ ld [wIntroSequencePalsNeedUpdate], a
+ ld [wSequenceDelay], a
+ farcall FlashWhiteScreen
+
+.loop_cmds
+ call DoFrameIfLCDEnabled
+ call UpdateRNGSources
+ ldh a, [hKeysPressed]
+ and A_BUTTON | START
+ jr nz, .jump_to_title_screen
+ ld a, [wIntroSequencePalsNeedUpdate]
+ or a
+ jr z, .no_pal_update
+ farcall Func_10d74
+.no_pal_update
+ call ExecuteIntroSequenceCmd
+ ld a, [wSequenceDelay]
+ cp $ff
+ jr nz, .loop_cmds
+ jr .asm_1d39f
+
+.jump_to_title_screen
+ call AssertSongFinished
+ or a
+ jr nz, .asm_1d39f
+ call DisableLCD
+ ld a, MUSIC_TITLESCREEN
+ call PlaySong
+ lb bc, 0, 0
+ ld a, SCENE_TITLE_SCREEN
+ call LoadScene
+ call IntroSequenceEmptyFunc
+.asm_1d39f
+ call Func_3ca0
+ call .ShowPressStart
+ call EnableLCD
+ ret
+
+.ShowPressStart
+ ld a, SPRITE_PRESS_START
+ farcall CreateSpriteAndAnimBufferEntry
+ ld c, SPRITE_ANIM_COORD_X
+ call GetSpriteAnimBufferProperty
+ ld a, 48
+ ld [hli], a ; x
+ ld a, 112
+ ld [hl], a ; y
+ ld c, SPRITE_ANIM_190
+ ld a, [wConsole]
+ cp CONSOLE_CGB
+ jr nz, .asm_1d3c5
+ ld c, SPRITE_ANIM_191
+.asm_1d3c5
+ ld a, c
+ ld bc, 60
+ farcall Func_12ac9
+ ret
+
+LoadTitleScreenSprites:
+ xor a
+ ld [wd4ca], a
+ ld [wd4cb], a
+ ld a, PALETTE_30
+ farcall LoadPaletteData
+
+ ld bc, 0
+ ld de, wTitleScreenSprites
+.loop_load_sprites
+ push bc
+ push de
+ ld hl, .TitleScreenSpriteList
+ add hl, bc
+ ld a, [hl]
+ farcall CreateSpriteAndAnimBufferEntry
+ ld a, [wWhichSprite]
+ ld [de], a
+ call GetFirstSpriteAnimBufferProperty
+ inc hl
+ ld a, [hl] ; SPRITE_ANIM_ATTRIBUTES
+ or c
+ ld [hl], a
+ pop de
+ pop bc
+ inc de
+ inc c
+ ld a, c
+ cp $7
+ jr c, .loop_load_sprites
+ ret
+
+.TitleScreenSpriteList
+ db SPRITE_GRASS
+ db SPRITE_FIRE
+ db SPRITE_WATER
+ db SPRITE_COLORLESS
+ db SPRITE_LIGHTNING
+ db SPRITE_PSYCHIC
+ db SPRITE_FIGHTING