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
|
SoftReset::
call StopAllSounds
call GBPalWhiteOut
ld c, 32
call DelayFrames
; fallthrough
Init::
; Program init.
rLCDC_DEFAULT EQU %11100011
; * LCD enabled
; * Window tile map at $9C00
; * Window display enabled
; * BG and window tile data at $8800
; * BG tile map at $9800
; * 8x8 OBJ size
; * OBJ display enabled
; * BG display enabled
di
xor a
ldh [rIF], a
ldh [rIE], a
ldh [rSCX], a
ldh [rSCY], a
ldh [rSB], a
ldh [rSC], a
ldh [rWX], a
ldh [rWY], a
ldh [rTMA], a
ldh [rTAC], a
ldh [rBGP], a
ldh [rOBP0], a
ldh [rOBP1], a
ld a, rLCDC_ENABLE_MASK
ldh [rLCDC], a
call DisableLCD
ld sp, wStack
ld hl, WRAM0_Begin
ld bc, WRAM1_End - WRAM0_Begin
.loop
ld [hl], 0
inc hl
dec bc
ld a, b
or c
jr nz, .loop
call ClearVram
ld hl, HRAM_Begin
ld bc, HRAM_End - HRAM_Begin - 1
call FillMemory
call ClearSprites
ld a, BANK(WriteDMACodeToHRAM)
ldh [hLoadedROMBank], a
ld [MBC1RomBank], a
call WriteDMACodeToHRAM
xor a
ldh [hTileAnimations], a
ldh [rSTAT], a
ldh [hSCX], a
ldh [hSCY], a
ldh [rIF], a
ld [wc0f3], a
ld [wc0f3 + 1], a
ld a, 1 << VBLANK + 1 << TIMER + 1 << SERIAL
ldh [rIE], a
ld a, 144 ; move the window off-screen
ldh [hWY], a
ldh [rWY], a
ld a, 7
ldh [rWX], a
ld a, CONNECTION_NOT_ESTABLISHED
ldh [hSerialConnectionStatus], a
ld h, HIGH(vBGMap0)
call ClearBgMap
ld h, HIGH(vBGMap1)
call ClearBgMap
ld a, rLCDC_DEFAULT
ldh [rLCDC], a
ld a, 16
ldh [hSoftReset], a
call StopAllSounds
ei
predef LoadSGB
ld a, BANK(SFX_Shooting_Star)
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
ld a, $9c
ldh [hAutoBGTransferDest + 1], a
xor a
ldh [hAutoBGTransferDest], a
dec a
ld [wUpdateSpritesEnabled], a
predef PlayIntro
call DisableLCD
call ClearVram
call GBPalNormal
call ClearSprites
ld a, rLCDC_DEFAULT
ldh [rLCDC], a
jp SetDefaultNamesBeforeTitlescreen
ClearVram::
ld hl, VRAM_Begin
ld bc, VRAM_End - VRAM_Begin
xor a
jp FillMemory
StopAllSounds::
ld a, BANK("Audio Engine 1")
ld [wAudioROMBank], a
ld [wAudioSavedROMBank], a
xor a
ld [wAudioFadeOutControl], a
ld [wNewSoundID], a
ld [wLastMusicSoundID], a
jp StopAllMusic
|