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
|
SoftReset::
call StopAllSounds
call GBPalWhiteOut
ld c, 32
call DelayFrames
; fallthrough
Init::
; Program init.
; * 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
DEF rLCDC_DEFAULT EQU (1 << rLCDC_ENABLE) | (1 << rLCDC_WINDOW_TILEMAP) | (1 << rLCDC_WINDOW_ENABLE) | (1 << rLCDC_SPRITES_ENABLE) | (1 << rLCDC_BG_PRIORITY)
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, 1 << rLCDC_ENABLE
ldh [rLCDC], a
call DisableLCD
ld sp, wStack
ld hl, STARTOF(WRAM0)
ld bc, SIZEOF(WRAM0)
.loop
ld [hl], 0
inc hl
dec bc
ld a, b
or c
jr nz, .loop
call ClearVram
ld hl, STARTOF(HRAM)
ld bc, SIZEOF(HRAM)
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 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 PrepareTitleScreen
ClearVram::
ld hl, STARTOF(VRAM)
ld bc, SIZEOF(VRAM)
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
dec a
jp PlaySound
|