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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
|
INCLUDE "engine/bank3f/data/map_songs.asm"
INCLUDE "engine/bank3f/data/map_header_pointers.asm"
INCLUDE "engine/bank3f/data/map_header_banks.asm"
Func_fc4dd:: ; fc4dd (3f:44dd)
; possibly to test if pika should be out?
ld a,[wd430]
bit 5,a
jr nz,.asm_fc4f8 ; 3f:44f8
ld a,[wd430]
bit 7,a
jr nz,.asm_fc4f8
call Func_fcdb8
jr nc,.asm_fc4f8
ld a,[wWalkBikeSurfState]
and a
jr nz,.asm_fc4f8
scf
ret
.asm_fc4f8
and a
ret
Func_fc4fa:: ; fc4fa (3f:44fa)
ld hl,wd430
bit 4,[hl]
res 4,[hl]
jr nz,.asm_fc515
call Func_1542
call Func_fc523
ld a,$ff
ld [wSpriteStateData1 + $f2],a
call Func_fcb84
call Func_fc5bc
ret
.asm_fc515
call Func_fc53f
xor a
ld [wd431],a
ld a,[wSpriteStateData1 + $9]
ld [wSpriteStateData1 + $f9],a
ret
Func_fc523:: ; fc523 (3f:4523)
ld hl,wSpriteStateData1 + $f0
call Func_fc52c
ld hl,wSpriteStateData2 + $f0
Func_fc52c:: ; fc52c (3f:4523)
ld bc,$10
xor a
call FillMemory
ret
Func_fc534:: ; fc534 (3f:4534)
call Func_fc53f
call Func_fc5bc
xor a
ld [wd431],a
ret
Func_fc53f:: ; fc53f (3f:453f)
ld bc,wSpriteStateData1 + $10
ld a,[W_YCOORD]
add $4
ld e,a
ld a,[W_XCOORD]
add $4
ld d,a
ld a,[wd431]
and a
jr z,.asm_fc5aa
cp $1
jr z,.asm_fc59e
cp $2
jr z,.asm_fc584
cp $3
jr z,.asm_fc5aa
cp $4
jr z,.asm_fc5a4
cp $5
jr z,.asm_fc5a7
cp $6
jr z,.asm_fc5a1
cp $7
jr z,.asm_fc572
jr .asm_fc59e
.asm_fc572
ld a,[wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
jr z,.asm_fc5a4
cp SPRITE_FACING_UP
jr z,.asm_fc5a7
cp SPRITE_FACING_LEFT
jr z,.asm_fc5a1
cp SPRITE_FACING_RIGHT
jr z,.asm_fc59e
.asm_fc584
ld a,[wSpriteStateData1 + $9]
and a
jr nz,.asm_fc58d
dec e
jr .asm_fc5aa
.asm_fc58d
cp SPRITE_FACING_UP
jr nz,.asm_fc594
inc e
jr .asm_fc5aa
.asm_fc594
cp SPRITE_FACING_LEFT
jr nz,.asm_fc59b
inc d
jr .asm_fc5aa
.asm_fc59b
dec d
jr .asm_fc5aa
.asm_fc59e
inc d
jr .asm_fc5aa
.asm_fc5a1
dec d
jr .asm_fc5aa
.asm_fc5a4
inc e
jr .asm_fc5aa
.asm_fc5a7
dec e
jr .asm_fc5aa ; useless jr
.asm_fc5aa
ld hl,$104
add hl,bc
ld [hl],e
inc hl
ld [hl],d
inc hl
Func_fc4b2:: ; fc4b2 (3f:44b2)
ld [hl],$fe
push hl
ld hl,wd472
set 5,[hl]
pop hl
ret
Func_fc5bc:: ; fc5bc (3f:45bc)
ld a,$49
ld [wSpriteStateData1 + $f0],a
ld a,$ff
ld [wSpriteStateData1 + $f2],a
ld a,[wd431]
and a
jr z,.asm_fc5e4
cp $1
jr z,.asm_fc5e4
cp $3
jr z,.asm_fc5eb
cp $4
jr z,.asm_fc5e4
cp $6
jr z,.asm_fc5e4
cp $7
jr z,.asm_fc5f1
call Func_fc4b2
ret
.asm_fc5e4
ld a,[wSpriteStateData1 + $9]
ld [wSpriteStateData1 + $f9],a
ret
.asm_fc5eb
ld a,$0
ld [wSpriteStateData1 + $f9],a
ret
.asm_fc5f1
ld a,[wSpriteStateData1 + $9]
xor $4
ld [wSpriteStateData1 + $f9],a
ret
Func_fc5fa:: ; fc5fa (3f:45fa)
ld a,[W_CURMAP]
cp OAKS_LAB
jr z,.asm_fc63d
cp ROUTE_22_GATE
jr z,.asm_fc62d
cp MT_MOON_2
jr z,.asm_fc635
cp ROCK_TUNNEL_1
jr z,.asm_fc645
ld a,[W_CURMAP]
ld hl,Pointer_fc46b
call Func_1568 ; similar to IsInArray, but not the same
jr c,.asm_fc639
ld a,[W_CURMAP]
ld hl,Pointer_fc653
call Func_1568
jr nc,.asm_fc641
ld a,[wSpriteStateData1 + $9]
and a
jr nz,.asm_fc641
ld a,$3
jr .asm_fc647
.asm_fc62d
ld a,[wSpriteStateData1 + $9]
and a
jr z,.asm_fc645
jr .asm_fc641
.asm_fc635
ld a,$3
jr .asm_fc647
.asm_fc639
ld a,$4
jr .asm_fc647
.asm_fc63d
ld a,$6
jr .asm_fc647
.asm_fc641
ld a,$1
jr .asm_fc647
.asm_fc645
ld a,$3
.asm_fc647
ld [wd431],a
ret
Pointer_fc64b:: ; fc64b (3f:464b)
db $c2,$4c,$4f,$ba,$be,$b8,$54,$ff
Pointer_fc653:: ; fc653 (3f:4653)
db $2f,$e6,$3e,$5e,$80,$31,$a4,$ff
Func_fc65b:: ; fc65b (3f:465b)
ld a,[W_CURMAP]
cp VIRIDIAN_FOREST_EXIT
jr z,.asm_fc673
cp VIRIDIAN_FOREST_ENTRANCE
jr z,.asm_fc67c
ld a,[W_CURMAP]
ld hl,Pointer_fc68e
call Func_1568
jr c,.asm_fc688
jr .asm_fc684
.asm_fc673
ld a,[wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
jr z,.asm_fc688
jr .asm_fc684
.asm_fc67c
ld a,[wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
jr z,.asm_fc684
jr asm_fc688
.asm_fc684
ld a,$0
jr .asm_fc68a
.asm_fc688
ld a,$1
.asm_fc68a
ld [wd431],a
ret
Pointer_fc68e:: ; fc68e (3f:468e)
db $33,$dd,$df,$e0,$e1,$de,$ec,$7f,$a8,$a9,$aa,$ff
Func_fc69a:: ; fc69a (3f:469a)
ld a,[W_CURMAP]
cp ROUTE_22_GATE
jr z,.asm_fc6a7
cp ROUTE_2_GATE
jr z,.asm_fc6b0
jr .asm_fc6bd
.asm_fc6a7
ld a,[wSpriteStateData1 + $9]
cp SPRITE_FACING_DOWN
jr z,.asm_fc6b9
jr .asm_fc6bd
.asm_fc6b0
ld a,[wSpriteStateData1 + $9]
cp SPRITE_FACING_DOWN
jr z,.asm_fc6b9
jr .asm_fc6bd
.asm_fc6b9
ld a,$1
jr .asm_fc6c1
.asm_fc6bd
ld a,$3
jr .asm_fc6c1
.asm_fc6c1
ld [wd431],a
ret
INCBIN "baserom.gbc",$fc6c5,$fe66f - $fc6c5
OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp"
PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp"
SandshrewSprite: INCBIN "gfx/sprites/sandshrew.2bpp"
OddishSprite: INCBIN "gfx/sprites/oddish.2bpp"
BulbasaurSprite: INCBIN "gfx/sprites/bulbasaur.2bpp"
JigglypuffSprite: INCBIN "gfx/sprites/jigglypuff.2bpp"
Clefairy2Sprite: INCBIN "gfx/sprites/clefairy2.2bpp"
ChanseySprite: INCBIN "gfx/sprites/chansey.2bpp"
SurfingPikachuSprite: INCBIN "gfx/sprites/surfing_pikachu.2bpp"
JessieSprite: INCBIN "gfx/sprites/jessie.2bpp"
JamesSprite: INCBIN "gfx/sprites/james.2bpp"
|