summaryrefslogtreecommitdiff
path: root/src/engine/intro.asm
blob: 8a16b3ab185bb67148cdbf47346b8bfb8170c100 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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