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
|
MOVE_GENGAR_RIGHT EQU $00
MOVE_GENGAR_LEFT EQU $01
MOVE_NIDORINO_RIGHT EQU $ff
PlayIntro: ; 41997 (10:5997)
xor a
ld [hJoyHeld], a
inc a
ld [H_AUTOBGTRANSFERENABLED], a
call PlayShootingStar
callab PlayIntroScene ; 3e:582d
xor a
ld [hSCX], a
ld [H_AUTOBGTRANSFERENABLED], a
call ClearSprites
call DelayFrame
ret
InitIntroNidorinoOAM: ; 419b4 (10:59b4)
ld hl, wOAMBuffer
ld d, 0
.loop
push bc
ld a, [wBaseCoordY]
ld e, a
.innerLoop
ld a, e
add 8
ld e, a
ld [hli], a ; Y
ld a, [wBaseCoordX]
ld [hli], a ; X
ld a, d
ld [hli], a ; tile
ld a, $80
ld [hli], a ; attributes
inc d
dec c
jr nz, .innerLoop
ld a, [wBaseCoordX]
add 8
ld [wBaseCoordX], a
pop bc
dec b
jr nz, .loop
ret
IntroClearScreen: ; 419dd (10:59dd)
ld hl, vBGMap1
ld bc, $240
jr IntroClearCommon
IntroClearMiddleOfScreen: ; 419e5 (10:59e5)
; clear the area of the tile map between the black bars on the top and bottom
coord hl, 0, 4
ld bc, SCREEN_WIDTH * 10
IntroClearCommon: ; 419eb (10:59eb)
ld [hl], $0
inc hl
dec bc
ld a, b
or c
jr nz, IntroClearCommon
ret
IntroPlaceBlackTiles: ; 419f4 (10:59f4)
ld a, $1
.loop
ld [hli], a
dec c
jr nz, .loop
ret
CopyTileIDsFromList_ZeroBaseTileID: ; 419fb (10:59fb)
ld c, 0
predef_jump CopyTileIDsFromList
PlayShootingStar: ; 41a02 (10:5a02)
ld b, SET_PAL_GAME_FREAK_INTRO
call RunPaletteCommand
callba LoadCopyrightAndTextBoxTiles
ld a, %11100100
ld [rBGP], a
call UpdateGBCPal_BGP
ld c, 180
call DelayFrames
call ClearScreen
call DisableLCD
xor a
ld [wCurOpponent], a
call IntroDrawBlackBars
; write the black and white tiles
ld hl, vChars2
ld bc, $10
xor a
call FillMemory
ld hl, vChars2 + $10
ld bc, $10
ld a, $ff
call FillMemory
; copy gamefreak logo and others
ld hl, GameFreakIntro
ld de, vChars2 + $600
ld bc, GameFreakIntroEnd - GameFreakIntro
ld a, BANK(GameFreakIntro)
call FarCopyData
ld hl, GameFreakIntro
ld de, vChars1
ld bc, GameFreakIntroEnd - GameFreakIntro
ld a, BANK(GameFreakIntro)
call FarCopyData
call EnableLCD
ld hl, rLCDC
res 5, [hl]
set 3, [hl]
ld c, 64
call DelayFrames
callba AnimateShootingStar
push af
pop af
jr c, .next ; skip the delay if the user interrupted the animation
ld c, 40
call DelayFrames
.next
call IntroClearMiddleOfScreen
call ClearSprites
jp Delay3
IntroDrawBlackBars: ; 41a82 (10:5a82)
; clear the screen and draw black bars on the top and bottom
call IntroClearScreen
coord hl, 0, 0
ld c, SCREEN_WIDTH * 4
call IntroPlaceBlackTiles
coord hl, 0, 14
ld c, SCREEN_WIDTH * 4
call IntroPlaceBlackTiles
ld hl, vBGMap1
ld c, $80
call IntroPlaceBlackTiles
ld hl, vBGMap1 + $1c0
ld c, $80
jp IntroPlaceBlackTiles
EmptyFunc4: ; 41aa5 (10:5aa5)
ret
GameFreakIntro: ; 41959 (10:5aa6)
INCBIN "gfx/gamefreak_intro.2bpp"
INCBIN "gfx/gamefreak_logo.2bpp"
ds $10 ; blank tile
GameFreakIntroEnd:
|