aboutsummaryrefslogtreecommitdiff
path: root/modes/titlescreen.gbasm
blob: 64e6aee991eeb702d544fc5052f2828b06c5c689 (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
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
Title_Screen:
	.ASSERT bank(.) bank(=Title_Screen_Sprite_Data)
	.ASSERT bank(.) bank(=Title_Screen_Sprite_Data.end)

	.LOAD_MUSIC =_music_TitleScreen
	.CALL_SAVE_BANK =Start_Music
	LD A, $01
	LD $mem_sound_flags, A

	LD HL, $9010
	LD DE, ptr(=Title_Screen_Sprite_Data)
	LD BC, $07f0
	CALL =memcpy

	LD HL, $8C00
	LD DE, =Title_Screen_Sprite_Data+$07f0
	LD BC, =Title_Screen_Sprite_Data.end-=Title_Screen_Sprite_Data-$07f0
	CALL =memcpy

	LD HL, $8800
	LD DE, ptr(=Font_Data)
	LD BC, =Font_Data.end-=Font_Data
	CALL =memcpy

	.draw_picture:
		LD HL, $9842
		LD C, $01
		.draw_picture.loop16times:
		LD B, $10
		.draw_picture.loop:
			LD A, C
			LD (HL+), A
			DEC B
			INC C
			LD A, C
			CP $80
			JR NZ, =.skip_font_skip
			LD C, $C0
			.skip_font_skip:
			LD A, B
			CP $00
			JR NZ, =.draw_picture.loop
		LD A, L
		ADD $10
		LD L, A
		LD A, H
		ADC $00
		LD H, A
		LD A, H
		CP $99
		JR NZ, =.draw_picture.loop16times
		LD A, L
		CP $A2
		JR NZ, =.draw_picture.loop16times
	

	LD A, $00
	LD $reg_viewport_x, A
	LD $reg_viewport_y, A
	LD A, $lcdc_mapbg_tilemap
	LD $reg_lcd_controller, A

	LD A, $00
	.blink:
		.blink.loop1:
			CALL =Check_Frame_stuff
			INC A
			CP $48
			JR NZ =.blink.loop1
		CALL =.blink.draw_text
		LD A, $00
		.blink.loop2:
			CALL =Check_Frame_stuff
			INC A
			CP $48
			JR NZ =.blink.loop2
		CALL =.blink.undraw_text
		LD A, $00
		JR =.blink

		.blink.draw_text:
			PUSH BC
			LD HL, $99C4
			LD BC, =Press_Txt
			CALL =Print_str
			INC HL
			INC HL
			LD BC, =Start_Txt
			CALL =Print_str
			POP BC
			RET
		
		.blink.undraw_text:
			PUSH BC
			LD HL, $99C4
			LD BC, $000C
			CALL =bzero
			POP BC
			RET

Check_Frame_stuff:
	PUSH AF
	PUSH BC
	PUSH DE
	PUSH HL
	CALL =RNG_Step
	CALL =Pad_Button_Check
	.CALL_SAVE_BANK =Play_Music
	POP HL
	POP DE
	POP BC
	LD A, $mem_button_action
	BIT 3, A
	JR NZ, =Title_Screen_Start_Pressed

	POP AF
	CALL =Next_VBlank_Wait
	RET

Title_Screen_Start_Pressed:
	LD A, $00
	LD $mem_sound_flags, A
	CALL =Reset_Music_Channels

	; Magic sound effect stuff
	LD ($20), A
	LD A, $f2
	LD ($21), A
	LD A, $01
	LD ($22), A
	LD A, $80
	LD ($23), A

	LD A, $00
	.loop:
		CALL =Next_VBlank_Wait
		INC A
		CP $05
		JR NZ =.loop
	LD A, $reg_bg_palette
	CP $00
	SLA A
	SLA A
	LD $reg_bg_palette, A
	JR NZ, =Title_Screen_Start_Pressed

	LD A, $00
	.loop2:
		CALL =Next_VBlank_Wait
		INC A
		CP $30
		JR NZ =.loop2

	CALL =Next_VBlank_Wait
	LD A, $00
	LD $reg_lcd_controller, A

	CALL =Load_Tile

	JP =New_Dungeon