aboutsummaryrefslogtreecommitdiffstats
path: root/engine/bank3f.asm
diff options
context:
space:
mode:
authorluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
committerluckytyphlosion <alan.rj.huang@gmail.com>2016-05-30 18:20:41 -0400
commit3330662296eabb6b3b7f0eed1c79003c8873c712 (patch)
treedae9a2f40425a236a3ef6ecce453cf16b4359c26 /engine/bank3f.asm
parentBank7 misc functions (diff)
parentDigletts Cave Route 11 Entrance (diff)
downloadpokeyellow-3330662296eabb6b3b7f0eed1c79003c8873c712.tar.gz
pokeyellow-3330662296eabb6b3b7f0eed1c79003c8873c712.tar.xz
pokeyellow-3330662296eabb6b3b7f0eed1c79003c8873c712.zip
Merge pull request #9 from PikalaxALT/master
Disassemble banks 3A, 3F, and all outdoor maps
Diffstat (limited to 'engine/bank3f.asm')
-rw-r--r--engine/bank3f.asm2428
1 files changed, 960 insertions, 1468 deletions
diff --git a/engine/bank3f.asm b/engine/bank3f.asm
index 92e6d857..c31fc986 100644
--- a/engine/bank3f.asm
+++ b/engine/bank3f.asm
@@ -4,50 +4,51 @@ INCLUDE "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
+ ld a, [wPikachuOverworldStateFlags]
+ bit 5, a
+ jr nz, .hide ; 3f:44f8
+ ld a, [wPikachuOverworldStateFlags]
+ bit 7, a
+ jr nz, .hide
call IsStarterPikachuInOurParty
- jr nc,.asm_fc4f8
- ld a,[wWalkBikeSurfState]
+ jr nc, .hide
+ ld a, [wWalkBikeSurfState]
and a
- jr nz,.asm_fc4f8
+ jr nz, .hide
scf
ret
-.asm_fc4f8
+
+.hide
and a
ret
-
+
Func_fc4fa:: ; fc4fa (3f:44fa)
- ld hl,wd430
- bit 4,[hl]
- res 4,[hl]
- jr nz,.asm_fc515
- call Func_1542
+ ld hl, wPikachuOverworldStateFlags
+ bit 4, [hl]
+ res 4, [hl]
+ jr nz, .asm_fc515
+ call ResetPikachuAsleep
call Func_fc523
- ld a,$ff
- ld [wSpriteStateData1 + $f2],a
- call Func_fcb84
+ ld a, $ff
+ ld [wSpriteStateData1 + $f2], a
+ call ClearPikachuFollowCommandBuffer
call Func_fc5bc
ret
-
+
.asm_fc515
call Func_fc53f
xor a
- ld [wd431],a
- ld a,[wSpriteStateData1 + $9]
- ld [wSpriteStateData1 + $f9],a
+ ld [wd431], a
+ ld a, [wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9], a
ret
-
+
Func_fc523:: ; fc523 (3f:4523)
- ld hl,wSpriteStateData1 + $f0
+ ld hl, wSpriteStateData1 + $f0
call Func_fc52c
- ld hl,wSpriteStateData2 + $f0
+ ld hl, wSpriteStateData2 + $f0
Func_fc52c:: ; fc52c (3f:4523)
- ld bc,$10
+ ld bc, $10
xor a
call FillMemory
ret
@@ -56,251 +57,274 @@ Func_fc534:: ; fc534 (3f:4534)
call Func_fc53f
call Func_fc5bc
xor a
- ld [wd431],a
+ ld [wd431], a
ret
-
+
Func_fc53f:: ; fc53f (3f:453f)
- ld bc,wSpriteStateData1 + $f0
- ld a,[wYCoord]
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wYCoord]
add $4
- ld e,a
- ld a,[wXCoord]
+ ld e, a
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wd431]
+ ld d, a
+ ld a, [wd431]
and a
- jr z,.asm_fc5aa
+ jr z, .asm_fc5aa
cp $1
- jr z,.asm_fc59e
+ jr z, .asm_fc59e
cp $2
- jr z,.asm_fc584
+ jr z, .asm_fc584
cp $3
- jr z,.asm_fc5aa
+ jr z, .asm_fc5aa
cp $4
- jr z,.asm_fc5a4
+ jr z, .asm_fc5a4
cp $5
- jr z,.asm_fc5a7
+ jr z, .asm_fc5a7
cp $6
- jr z,.asm_fc5a1
+ jr z, .asm_fc5a1
cp $7
- jr z,.asm_fc572
+ jr z, .asm_fc572
jr .asm_fc59e
-
+
.asm_fc572
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
- jr z,.asm_fc5a4
- cp SPRITE_FACING_UP
- jr z,.asm_fc5a7
+ jr z, .asm_fc5a4
+ cp SPRITE_FACING_UP
+ jr z, .asm_fc5a7
cp SPRITE_FACING_LEFT
- jr z,.asm_fc5a1
+ jr z, .asm_fc5a1
cp SPRITE_FACING_RIGHT
- jr z,.asm_fc59e
+ jr z, .asm_fc59e
.asm_fc584
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a
- jr nz,.asm_fc58d
+ jr nz, .asm_fc58d
dec e
jr .asm_fc5aa
+
.asm_fc58d
cp SPRITE_FACING_UP
- jr nz,.asm_fc594
+ jr nz, .asm_fc594
inc e
jr .asm_fc5aa
+
.asm_fc594
cp SPRITE_FACING_LEFT
- jr nz,.asm_fc59b
+ 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
+ ld hl, $104
+ add hl, bc
+ ld [hl], e
inc hl
- ld [hl],d
+ ld [hl], d
inc hl
Func_fc4b2:: ; fc4b2 (3f:44b2)
- ld [hl],$fe
+ ld [hl], $fe
push hl
- ld hl,wd472
- set 5,[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]
+ ld a, $49
+ ld [wSpriteStateData1 + $f0], a
+ ld a, $ff
+ ld [wSpriteStateData1 + $f2], a
+ ld a, [wd431]
and a
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $1
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $3
- jr z,.asm_fc5eb
+ jr z, .asm_fc5eb
cp $4
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $6
- jr z,.asm_fc5e4
+ jr z, .asm_fc5e4
cp $7
- jr z,.asm_fc5f1
+ jr z, .asm_fc5f1
call Func_fccb2
ret
-
+
.asm_fc5e4
- ld a,[wSpriteStateData1 + $9]
- ld [wSpriteStateData1 + $f9],a
+ ld a, [wSpriteStateData1 + $9]
+ ld [wSpriteStateData1 + $f9], a
ret
+
.asm_fc5eb
- ld a,$0
- ld [wSpriteStateData1 + $f9],a
+ ld a, $0
+ ld [wSpriteStateData1 + $f9], a
ret
+
.asm_fc5f1
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
xor $4
- ld [wSpriteStateData1 + $f9],a
+ ld [wSpriteStateData1 + $f9], a
ret
Func_fc5fa:: ; fc5fa (3f:45fa)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp OAKS_LAB
- jr z,.asm_fc63d
+ jr z, .asm_fc63d
cp ROUTE_22_GATE
- jr z,.asm_fc62d
+ jr z, .asm_fc62d
cp MT_MOON_2
- jr z,.asm_fc635
+ jr z, .asm_fc635
cp ROCK_TUNNEL_1
- jr z,.asm_fc645
- ld a,[wCurMap]
- ld hl,Pointer_fc64b
+ jr z, .asm_fc645
+ ld a, [wCurMap]
+ ld hl, Pointer_fc64b
call Func_1568 ; similar to IsInArray, but not the same
- jr c,.asm_fc639
- ld a,[wCurMap]
- ld hl,Pointer_fc653
+ jr c, .asm_fc639
+ ld a, [wCurMap]
+ ld hl, Pointer_fc653
call Func_1568
- jr nc,.asm_fc641
- ld a,[wSpriteStateData1 + $9]
+ jr nc, .asm_fc641
+ ld a, [wSpriteStateData1 + $9]
and a
- jr nz,.asm_fc641
- ld a,$3
+ jr nz, .asm_fc641
+ ld a, $3
jr .asm_fc647
-
+
.asm_fc62d
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a
- jr z,.asm_fc645
+ jr z, .asm_fc645
jr .asm_fc641
+
.asm_fc635
- ld a,$3
+ ld a, $3
jr .asm_fc647
+
.asm_fc639
- ld a,$4
+ ld a, $4
jr .asm_fc647
+
.asm_fc63d
- ld a,$6
+ ld a, $6
jr .asm_fc647
+
.asm_fc641
- ld a,$1
+ ld a, $1
jr .asm_fc647
+
.asm_fc645
- ld a,$3
+ ld a, $3
.asm_fc647
- ld [wd431],a
+ ld [wd431], a
ret
Pointer_fc64b:: ; fc64b (3f:464b)
- db $c2,$4c,$4f,$ba,$be,$b8,$54,$ff
-
+ db $c2, $4c, $4f, $ba, $be, $b8, $54, $ff
+
Pointer_fc653:: ; fc653 (3f:4653)
- db $2f,$e6,$3e,$5e,$80,$31,$a4,$ff
+ db $2f, $e6, $3e, $5e, $80, $31, $a4, $ff
Func_fc65b:: ; fc65b (3f:465b)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp VIRIDIAN_FOREST_EXIT
- jr z,.asm_fc673
+ jr z, .asm_fc673
cp VIRIDIAN_FOREST_ENTRANCE
- jr z,.asm_fc67c
- ld a,[wCurMap]
- ld hl,Pointer_fc68e
+ jr z, .asm_fc67c
+ ld a, [wCurMap]
+ ld hl, Pointer_fc68e
call Func_1568
- jr c,.asm_fc688
+ jr c, .asm_fc688
jr .asm_fc684
+
.asm_fc673
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc688
+ jr z, .asm_fc688
jr .asm_fc684
+
.asm_fc67c
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
and a ; SPRITE_FACING_DOWN
- jr z,.asm_fc684
+ jr z, .asm_fc684
jr .asm_fc688
+
.asm_fc684
- ld a,$0
+ ld a, $0
jr .asm_fc68a
+
.asm_fc688
- ld a,$1
+ ld a, $1
.asm_fc68a
- ld [wd431],a
+ ld [wd431], a
ret
-
+
Pointer_fc68e:: ; fc68e (3f:468e)
- db $33,$dd,$df,$e0,$e1,$de,$ec,$7f,$a8,$a9,$aa,$ff
-
+ db $33, $dd, $df, $e0, $e1, $de, $ec, $7f, $a8, $a9, $aa, $ff
+
Func_fc69a:: ; fc69a (3f:469a)
- ld a,[wCurMap]
+ ld a, [wCurMap]
cp ROUTE_22_GATE
- jr z,.asm_fc6a7
+ jr z, .asm_fc6a7
cp ROUTE_2_GATE
- jr z,.asm_fc6b0
+ jr z, .asm_fc6b0
jr .asm_fc6bd
+
.asm_fc6a7
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc6b9
+ jr z, .asm_fc6b9
jr .asm_fc6bd
+
.asm_fc6b0
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
cp SPRITE_FACING_UP
- jr z,.asm_fc6b9
+ jr z, .asm_fc6b9
jr .asm_fc6bd
+
.asm_fc6b9
- ld a,$1
+ ld a, $1
jr .asm_fc6c1
+
.asm_fc6bd
- ld a,$3
+ ld a, $3
jr .asm_fc6c1
+
.asm_fc6c1
- ld [wd431],a
+ ld [wd431], a
ret
Func_fc6c5:: ; fc6c5 (3f:46c5)
push hl
- ld hl,wd430
- set 2,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ set 2, [hl]
pop hl
ret
Func_fc6cd:: ; fc6cd (3f:46cd)
push hl
- ld hl,wd430
- res 2,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ res 2, [hl]
pop hl
ret
@@ -312,32 +336,32 @@ Func_fc6d5:: ; fc6d5 (3f:46d5)
call Func_fcd25
pop bc
ret c
- ld bc,wSpriteStateData1 + $f0
- ld hl,$1
- add hl,bc
- bit 7,[hl]
- jp nz,asm_fc745
- ld a,[wFontLoaded]
- bit 0,a
- jp nz,asm_fc76a
- call Func_154a
- jp nz,asm_fc76a
- ld a,[hl]
+ ld bc, wSpriteStateData1 + $f0
+ ld hl, $1
+ add hl, bc
+ bit 7, [hl]
+ jp nz, asm_fc745
+ ld a, [wFontLoaded]
+ bit 0, a
+ jp nz, asm_fc76a
+ call CheckPikachuAsleep
+ jp nz, asm_fc76a
+ ld a, [hl]
and $7f
cp $a
- jr c,.asm_fc704
+ jr c, .asm_fc704
xor a
.asm_fc704
add a
- ld e,a
- ld d,0
- ld hl,PointerTable_fc710
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld e, a
+ ld d, 0
+ ld hl, PointerTable_fc710
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
jp hl
-
+
PointerTable_fc710: ; fc710 (3f:4710)
dw Func_fc793
dw Func_fc7aa
@@ -350,16 +374,16 @@ PointerTable_fc710: ; fc710 (3f:4710)
dw asm_fc937
dw asm_fc969
dw Func_fc726
-
+
Func_fc726: ; fc726 (3f:4726)
ret
Func_fc727: ; fc727 (3f:4727)
call Func_fc4dd
- jr nc,.asm_fc73b
- ld a,[wSpriteStateData1 + $f1]
+ jr nc, .asm_fc73b
+ ld a, [wSpriteStateData1 + $f1]
and a
- jr nz,.asm_fc739
+ jr nz, .asm_fc739
push bc
push hl
call Func_fc534
@@ -368,54 +392,57 @@ Func_fc727: ; fc727 (3f:4727)
.asm_fc739
scf
ret
+
.asm_fc73b
- ld hl,wSpriteStateData1 + $f2
- ld [hl],$ff
+ ld hl, wSpriteStateData1 + $f2
+ ld [hl], $ff
dec hl
- ld [hl],$0
+ ld [hl], $0
xor a
ret
+
asm_fc745: ; fc745 (3f:4745)
- ld hl,$1
- add hl,bc
- res 7,[hl]
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],a
- call Func_154a
- jr nz,.asm_fc75f
- ld a,[wSpriteStateData1 + $9]
+ ld hl, $1
+ add hl, bc
+ res 7, [hl]
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], a
+ call CheckPikachuAsleep
+ jr nz, .asm_fc75f
+ ld a, [wSpriteStateData1 + $9]
xor $4
- ld hl,$9
- add hl,bc
- ld [hl],a
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
.asm_fc75f
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
ret
+
asm_fc76a: ; fc76a (3f:476a)
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
call Func_fc82e
- jr c,.asm_fc783
+ jr c, .asm_fc783
push bc
callab InitializeSpriteScreenPosition
pop bc
.asm_fc783
- ld hl,$1
- add hl,bc
- ld [hl],$1
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$0
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $0
call Func_fcba1
ret
@@ -424,562 +451,566 @@ Func_fc793: ; fc793 (3f:4793)
push bc
callab InitializeSpriteScreenPosition
pop bc
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
dec hl
- ld [hl],$1
+ ld [hl], $1
ret
Func_fc7aa: ; fc7aa (3f:47aa)
call Func_fcc92
- jp c,Func_fc803
+ jp c, Func_fc803
dec a
- ld l,a
- ld h,$0
- add hl,hl
- add hl,hl
- ld de,Pointer_fc7e3
- add hl,de
- ld d,h
- ld e,l
- ld a,[de]
+ ld l, a
+ ld h, $0
+ add hl, hl
+ add hl, hl
+ ld de, Pointer_fc7e3
+ add hl, de
+ ld d, h
+ ld e, l
+ ld a, [de]
inc de
- ld hl,$9
- add hl,bc
- ld [hl],a
- ld a,[de]
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
+ ld a, [de]
inc de
- ld hl,$5
- add hl,bc
- ld [hl],a
+ ld hl, $5
+ add hl, bc
+ ld [hl], a
dec hl
dec hl
- ld a,[de]
- ld [hl],a
+ ld a, [de]
+ ld [hl], a
inc de
- ld a,[de]
- ld hl,$1
- add hl,bc
- ld [hl],a
+ ld a, [de]
+ ld hl, $1
+ add hl, bc
+ ld [hl], a
cp $4
- jp z,Func_fca0a
+ jp z, Func_fca0a
call Func_fcd17
- jp c,Func_fc9df
+ jp c, Func_fc9df
jp Func_fc9b4
Pointer_fc7e3: ; fc7e3 (3f:47e3)
- db $0,$0
- db $1,$3
- db $4,$0
- db $ff,$3
- db $8,$ff
- db $0,$3
- db $c,$1
- db $0,$3
- db $0,$0
- db $1,$4
- db $4,$0
- db $ff,$4
- db $8,$ff
- db $0,$4
- db $c,$1
- db $0,$4
-
+ db $0, $0
+ db $1, $3
+ db $4, $0
+ db $ff, $3
+ db $8, $ff
+ db $0, $3
+ db $c, $1
+ db $0, $3
+ db $0, $0
+ db $1, $4
+ db $4, $0
+ db $ff, $4
+ db $8, $ff
+ db $0, $4
+ db $c, $1
+ db $0, $4
+
Func_fc803: ; fc803 (3f:4803)
call Func_fcae2
ret c
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
- jr nz,.asm_fc823
+ jr nz, .asm_fc823
push hl
call Func_fccee
pop hl
cp $5
- jr nc,Func_fc842
- ld [hl],$20
+ jr nc, Func_fc842
+ ld [hl], $20
call Random
and $c
- ld hl,$9
- add hl,bc
- ld [hl],a
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
.asm_fc823
xor a
- ld hl,$7
- add hl,bc
- ld [hli],a
- ld [hl],a
+ ld hl, $7
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
call Func_fca99
ret
Func_fc82e: ; fc82e (3f:482e)
- ld a,[wWalkCounter]
+ ld a, [wWalkCounter]
and a
ret z
scf
ret
Func_fc835: ; fc835 (3f:4835)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$10
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $10
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fc842: ; fc842 (3f:4842)
- ld hl,$0
+ ld hl, $0
push af
call Random
- ld a,[hRandomAdd]
+ ld a, [hRandomAdd]
and %11
- ld e,a
- ld d,$0
- ld hl,PointerTable_fc85a
- add hl,de
- add hl,de
- ld a,[hli]
- ld h,[hl]
- ld l,a
+ ld e, a
+ ld d, $0
+ ld hl, PointerTable_fc85a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
pop af
jp hl
-
+
PointerTable_fc85a: ; fc85a (3f:485a)
dw Func_fc862
dw Func_fc8f8
dw Func_fc92b
dw Func_fc95d
-
+
Func_fc862: ; fc862 (3f:4862)
dec a
add a
add a
and $c
- ld hl,$9
- add hl,bc
- ld [hl],a
- ld hl,$1
- add hl,bc
- ld [hl],$6
+ ld hl, $9
+ add hl, bc
+ ld [hl], a
+ ld hl, $1
+ add hl, bc
+ ld [hl], $6
xor a
- ld [wd432],a
- ld [wd433],a
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$11
+ ld [wd432], a
+ ld [wd433], a
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $11
asm_fc87f: ; fc87f (3f:487f)
- ld a,[wd432]
- ld e,a
- ld a,[wd433]
- ld d,a
+ ld a, [wd432]
+ ld e, a
+ ld a, [wd433]
+ ld d, a
call Func_fc82e
- jr c,Func_fc8c7
+ jr c, Func_fc8c7
call Func_fc6c5
- ld hl,$4
- add hl,bc
- ld a,[hl]
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
sub e
- ld e,a
+ ld e, a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
sub d
- ld d,a
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld a,[hl]
+ ld d, a
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld a, [hl]
dec a
add a
add $d6
- ld l,a
- ld a,$48
+ ld l, a
+ ld a, $48
adc $0
- ld h,a
- ld a,[hli]
- ld [wd432],a
+ ld h, a
+ ld a, [hli]
+ ld [wd432], a
add e
- ld e,a
- ld a,[hl]
- ld [wd433],a
+ ld e, a
+ ld a, [hl]
+ ld [wd433], a
add d
- ld d,a
- ld hl,$4
- add hl,bc
- ld [hl],e
+ ld d, a
+ ld hl, $4
+ add hl, bc
+ ld [hl], e
inc hl
inc hl
- ld [hl],d
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld [hl], d
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc8c7: ; fc8c7 (3f:48c7)
- ld hl,$4
- add hl,bc
- ld a,[hl]
+ ld hl, $4
+ add hl, bc
+ ld a, [hl]
sub e
- ld [hl],a
+ ld [hl], a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
sub d
- ld [hl],a
+ ld [hl], a
jp Func_fc835
Pointer_fc8d6: ; fc8d6 (3f:48d6)
- db $0,$0,$fe,$1,$fc
- db $2,$fe,$3,$0,$4
- db $fe,$3,$fc,$2,$fe
- db $1,$0,$0,$fe,$ff
- db $fc,$fe,$fe,$fd,$0
- db $fc,$fe,$fd,$fc,$fe
- db $fe,$ff,$00,$00
-
+ db $0, $0, $fe, $1, $fc
+ db $2, $fe, $3, $0, $4
+ db $fe, $3, $fc, $2, $fe
+ db $1, $0, $0, $fe, $ff
+ db $fc, $fe, $fe, $fd, $0
+ db $fc, $fe, $fd, $fc, $fe
+ db $fe, $ff, $00, $00
+
Func_fc8f8: ; fc8f8 (3f:48f8)
- ld hl,$1
- add hl,bc
- ld [hl],$7
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$30
+ ld hl, $1
+ add hl, bc
+ ld [hl], $7
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $30
asm_fc904: ; fc904 (3f:4904)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc91f
+ ld [hl], a
+ jr nz, .asm_fc91f
xor a
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
inc a
and %11
- ld [hl],a
+ ld [hl], a
.asm_fc91f
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc92b: ; fc92b (3f:492b)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$20
- ld hl,$1
- add hl,bc
- ld [hl],$8
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $20
+ ld hl, $1
+ add hl, bc
+ ld [hl], $8
asm_fc937: ; fc937 (3f:4937)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc951
+ ld [hl], a
+ jr nz, .asm_fc951
xor a
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
xor $1
- ld [hl],a
+ ld [hl], a
.asm_fc951
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc95d: ; fc95d (3f:495d)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$20
- ld hl,$1
- add hl,bc
- ld [hl],$9
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $20
+ ld hl, $1
+ add hl, bc
+ ld [hl], $9
asm_fc969: ; fc969 (3f:4969)
call Func_fc82e
- jp c,Func_fc835
+ jp c, Func_fc835
call Func_fc6c5
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp $8
- ld [hl],a
- jr nz,.asm_fc988
+ ld [hl], a
+ jr nz, .asm_fc988
xor a
- ld [hl],a
- ld hl,$9
- add hl,bc
- ld a,[hl]
+ ld [hl], a
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
call Func_fc994
- ld [hl],a
+ ld [hl], a
.asm_fc988
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
jp Func_fc835
-
+
Func_fc994: ; fc994 (3f:4994)
push hl
- ld hl,Pointer_fc9ac
- ld d,a
+ ld hl, Pointer_fc9ac
+ ld d, a
.loop
- ld a,[hli]
+ ld a, [hli]
cp d
- jr nz,.loop
- ld a,[hl]
+ jr nz, .loop
+ ld a, [hl]
pop hl
ret
-
+
Func_fc9a0: ; fc9a0 (3f:49a0)
push hl
- ld hl,Pointer_fc9ac_End
- ld d,a
+ ld hl, Pointer_fc9ac_End
+ ld d, a
.loop
- ld a,[hld]
+ ld a, [hld]
cp d
- jr nz,.loop
- ld a,[hl]
+ jr nz, .loop
+ ld a, [hl]
pop hl
ret
-
+
Pointer_fc9ac: ; fc9ac (3f:49ac)
- db SPRITE_FACING_DOWN,SPRITE_FACING_LEFT,SPRITE_FACING_UP,SPRITE_FACING_RIGHT
- db SPRITE_FACING_DOWN,SPRITE_FACING_LEFT,SPRITE_FACING_UP,SPRITE_FACING_RIGHT
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
+ db SPRITE_FACING_DOWN, SPRITE_FACING_LEFT, SPRITE_FACING_UP, SPRITE_FACING_RIGHT
Pointer_fc9ac_End:
Func_fc9b4: ; fc9b4 (3f:49b4)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$8
- ld hl,$1
- add hl,bc
- ld [hl],$3
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $8
+ ld hl, $1
+ add hl, bc
+ ld [hl], $3
call Func_fca38
asm_fc9c3: ; fc9c3 (3f:49c3)
call Func_fca4b
call Func_fca7e
call Func_fca99
- ld hl,$100
- add hl,bc
+ ld hl, $100
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fc9df: ; fc9df (3f:49df)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$4
- ld hl,$1
- add hl,bc
- ld [hl],$5
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $4
+ ld hl, $1
+ add hl, bc
+ ld [hl], $5
call Func_fca38
asm_fc9ee: ; fc9ee (3f:49ee)
call asm_fca59
call Func_fca7e
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fca0a: ; fca0a (3f:4a0a)
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
- ld [hl],$8
- ld hl,$1
- add hl,bc
- ld [hl],$4
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
+ ld [hl], $8
+ ld hl, $1
+ add hl, bc
+ ld [hl], $4
call Func_fca38
call Func_fca38
asm_fca1c: ; fca1c (3f:4a1c)
call asm_fca59
call Func_fca7e
call Func_fca99
- ld hl,wSpriteStateData2 - wSpriteStateData1
- add hl,bc
+ ld hl, wSpriteStateData2 - wSpriteStateData1
+ add hl, bc
dec [hl]
ret nz
call Func_fca75
call Func_fccb2
- ld hl,$1
- add hl,bc
- ld [hl],$1
+ ld hl, $1
+ add hl, bc
+ ld [hl], $1
ret
-
+
Func_fca38: ; fca38 (3f:4a38)
- ld hl,$3
- add hl,bc
- ld e,[hl]
+ ld hl, $3
+ add hl, bc
+ ld e, [hl]
inc hl
inc hl
- ld d,[hl]
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld d, [hl]
+ ld hl, $104
+ add hl, bc
+ ld a, [hl]
add e
- ld [hli],a
- ld a,[hl]
+ ld [hli], a
+ ld a, [hl]
add d
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca4b: ; fca4b (3f:4a4b)
- ld a,[wWalkBikeSurfState]
+ ld a, [wWalkBikeSurfState]
cp $1
- jr nz,Func_fca68
- ld a,[wd736]
- bit 6,a
- jr nz,Func_fca68
+ jr nz, Func_fca68
+ ld a, [wd736]
+ bit 6, a
+ jr nz, Func_fca68
asm_fca59: ; fca59 (3f:4a59)
- ld hl,$3
- add hl,bc
- ld a,[hli]
+ ld hl, $3
+ add hl, bc
+ ld a, [hli]
add a
add a
add [hl]
- ld [hli],a
- ld a,[hli]
+ ld [hli], a
+ ld a, [hli]
add a
add a
add [hl]
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca68: ; fca68 (3f:4a68)
- ld hl,$3
- add hl,bc
- ld a,[hli]
+ ld hl, $3
+ add hl, bc
+ ld a, [hli]
add a
add [hl]
- ld [hli],a
- ld a,[hli]
+ ld [hli], a
+ ld a, [hli]
add a
add [hl]
- ld [hli],a
+ ld [hli], a
ret
-
+
Func_fca75: ; fca75 (3f:4a75)
- ld hl,$3
- add hl,bc
+ ld hl, $3
+ add hl, bc
xor a
- ld [hli],a
+ ld [hli], a
inc hl
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca7e: ; fca7e (3f:4a7e)
call Func_fcdad
- ld d,$2
- jr nc,.asm_fca87
- ld d,$5
+ ld d, $2
+ jr nc, .asm_fca87
+ ld d, $5
.asm_fca87
- ld hl,$7
- add hl,bc
- ld a,[hl]
+ ld hl, $7
+ add hl, bc
+ ld a, [hl]
inc a
cp d
- jr nz,.asm_fca91
+ jr nz, .asm_fca91
xor a
.asm_fca91
- ld [hli],a
+ ld [hli], a
ret nz
- ld a,[hl]
+ ld a, [hl]
inc a
and $3
- ld [hl],a
+ ld [hl], a
ret
-
+
Func_fca99: ; fca99 (3f:4a99)
- ld a,[wd430]
- bit 3,a
- jr nz,.asm_fcad1
- ld hl,$10e
- add hl,bc
- ld a,[hl]
+ ld a, [wPikachuOverworldStateFlags]
+ bit 3, a
+ jr nz, .asm_fcad1
+ ld hl, $10e
+ add hl, bc
+ ld a, [hl]
dec a
swap a
- ld d,a
- ld a,[wd736]
- bit 7,a
- jr nz,.asm_fcad8
- ld hl,$9
- add hl,bc
- ld a,[hl]
+ ld d, a
+ ld a, [wd736]
+ bit 7, a
+ jr nz, .asm_fcad8
+ ld hl, $9
+ add hl, bc
+ ld a, [hl]
or d
- ld d,a
- ld a,[wFontLoaded]
- bit 0,a
- jr z,.asm_fcac4
+ ld d, a
+ ld a, [wFontLoaded]
+ bit 0, a
+ jr z, .asm_fcac4
call Func_fcae2
ret c
jr .asm_fcacb
+
.asm_fcac4
- ld hl,$8
- add hl,bc
- ld a,d
+ ld hl, $8
+ add hl, bc
+ ld a, d
or [hl]
- ld d,a
+ ld d, a
.asm_fcacb
- ld hl,$2
- add hl,bc
- ld [hl],d
+ ld hl, $2
+ add hl, bc
+ ld [hl], d
ret
+
.asm_fcad1
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
ret
+
.asm_fcad8
- ld a,[wSpriteStateData1 + $2]
+ ld a, [wSpriteStateData1 + $2]
and $f
or d
- ld [wSpriteStateData1 + $f2],a
+ ld [wSpriteStateData1 + $f2], a
ret
-
+
Func_fcae2: ; fcae2 (3f:4ae2)
- ld hl,$104
- add hl,bc
- ld a,[wYCoord]
+ ld hl, $104
+ add hl, bc
+ ld a, [wYCoord]
add $4
cp [hl]
- jr nz,.asm_fcaff
+ jr nz, .asm_fcaff
inc hl
- ld a,[wXCoord]
+ ld a, [wXCoord]
add $4
cp [hl]
- jr nz,.asm_fcaff
- ld hl,$2
- add hl,bc
- ld [hl],$ff
+ jr nz, .asm_fcaff
+ ld hl, $2
+ add hl, bc
+ ld [hl], $ff
scf
ret
+
.asm_fcaff
and a
ret
@@ -988,49 +1019,53 @@ Func_fcb01: ; fcb01 (3f:4b01)
push bc
push de
push hl
- ld bc,wSpriteStateData1 + $f0
- ld a,[wXCoord]
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wYCoord]
+ ld d, a
+ ld a, [wYCoord]
add $4
- ld e,a
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld e, a
+ ld hl, $104
+ add hl, bc
+ ld a, [hl]
sub e
and a
- jr z,.asm_fcb30
+ jr z, .asm_fcb30
cp $ff
- jr z,.asm_fcb26
+ jr z, .asm_fcb26
cp $1
- jr z,.asm_fcb26
+ jr z, .asm_fcb26
jr .asm_fcb48
+
.asm_fcb26
- ld hl,$105
- add hl,bc
- ld a,[hl]
+ ld hl, $105
+ add hl, bc
+ ld a, [hl]
sub d
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
jr .asm_fcb48
+
.asm_fcb30
- ld hl,$105
- add hl,bc
- ld a,[hl]
+ ld hl, $105
+ add hl, bc
+ ld a, [hl]
sub d
cp $ff
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
cp $1
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
and a
- jr z,.asm_fcb43
+ jr z, .asm_fcb43
jr .asm_fcb48
+
.asm_fcb43
pop hl
pop de
pop bc
scf
ret
+
.asm_fcb48
pop hl
pop de
@@ -1038,258 +1073,281 @@ Func_fcb01: ; fcb01 (3f:4b01)
xor a
ret
-Func_fcb4d: ; fcb4d (3f:4b4d)
- call Func_fcb52
- ld e,a
+GetPikachuFacingDirectionAndReturnToE: ; fcb4d (3f:4b4d)
+ call GetPikachuFacingDirection
+ ld e, a
ret
-
-Func_fcb52: ; fcb52 (3f:4b52)
- ld bc,wSpriteStateData1 + $f0
- ld a,[wXCoord]
+
+GetPikachuFacingDirection: ; fcb52 (3f:4b52)
+ ld bc, wSpriteStateData1 + $f0
+ ld a, [wXCoord]
add $4
- ld d,a
- ld a,[wYCoord]
+ ld d, a
+ ld a, [wYCoord]
add $4
- ld e,a
- ld hl,$104
- add hl,bc
- ld a,[hl]
+ ld e, a
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ add hl, bc
+ ld a, [hl]
cp e
- jr z,Func_fcb71
- jr nc,.asm_fcb6e
- ld a,$4
+ jr z, .asm_fcb71
+ jr nc, .asm_fcb6e
+ ld a, SPRITE_FACING_UP
ret
+
.asm_fcb6e
- ld a,$0
+ ld a, SPRITE_FACING_DOWN
ret
-
-Func_fcb71: ; fcb71 (3f:4b71)
- ld hl,$105
- add hl,bc
- ld a,[hl]
+
+.asm_fcb71
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 5
+ add hl, bc
+ ld a, [hl]
cp d
- jr z,.asm_fcb81
- jr nc,.asm_fcb7e
- ld a,$8
+ jr z, .asm_fcb81
+ jr nc, .asm_fcb7e
+ ld a, SPRITE_FACING_LEFT
ret
+
.asm_fcb7e
- ld a,$c
+ ld a, SPRITE_FACING_RIGHT
ret
+
.asm_fcb81
- ld a,$ff
+ ld a, $ff ; standing
ret
-Func_fcb84: ; fcb84 (3f:4b84)
+ClearPikachuFollowCommandBuffer: ; fcb84 (3f:4b84)
push bc
- ld hl,wd437
- ld [hl],$ff
+ ld hl, wPikachuFollowCommandBufferSize
+ ld [hl], $ff
inc hl
- ld bc,$10
+ ld bc, $10
xor a
call FillMemory
pop bc
ret
-
-Func_fcb94: ; fcb94 (3f:4b94)
- ld hl,wd437
+
+AppendPikachuFollowCommandToBuffer: ; fcb94 (3f:4b94)
+ ld hl, wPikachuFollowCommandBufferSize
inc [hl]
- ld e,[hl]
- ld d,0
- ld hl,wd438
- add hl,de
- ld [hl],a
+ ld e, [hl]
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld [hl], a
ret
-
+
Func_fcba1: ; fcba1 (3f:4ba1)
- call Func_fcb84
- call Func_fcbac
+ call ClearPikachuFollowCommandBuffer
+ call GetPikachuFollowCommand
ret c
- call Func_fcb94
+ call AppendPikachuFollowCommandToBuffer
ret
-
-Func_fcbac: ; fcbac (3f:4bac)
- ld bc,wSpriteStateData1 + $f0
- ld hl,$104
- add hl,bc
- ld a,[wYCoord]
+
+GetPikachuFollowCommand: ; fcbac (3f:4bac)
+ ld bc, wSpriteStateData1 + $f0
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 4
+ add hl, bc
+ ld a, [wYCoord]
add $4
sub [hl]
- jr z,.asm_fcbd7
- jr c,.asm_fcbca
- call Func_fcc01
- jr c,.asm_fcbc6
- ld a,$5
+ jr z, .checkXCoord
+ jr c, .pikaAbovePlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return1
+ ld a, $5
and a
ret
-.asm_fcbc6
- ld a,$1
+
+.return1
+ ld a, $1
and a
ret
-.asm_fcbca
- call Func_fcc01
- jr c,.asm_fcbd3
- ld a,$6
+
+.pikaAbovePlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return2
+ ld a, $6
and a
ret
-.asm_fcbd3
- ld a,$2
+
+.return2
+ ld a, $2
and a
ret
-.asm_fcbd7
- ld hl,$105
- add hl,bc
- ld a,[wXCoord]
+
+.checkXCoord
+ ld hl, wSpriteStateData2 - wSpriteStateData1 + 5
+ add hl, bc
+ ld a, [wXCoord]
add $4
sub [hl]
- jr z,.asm_fcbff
- jr c,.asm_fcbf2
- call Func_fcc01
- jr c,.asm_fcbee
- ld a,$8
+ jr z, .pikachuOnTopOfPlayer
+ jr c, .pikaToLeftOfPlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return4
+ ld a, $8
and a
ret
-.asm_fcbee
- ld a,$4
+
+.return4
+ ld a, $4
and a
ret
-.asm_fcbf2
- call Func_fcc01
- jr c,.asm_fcbfb
- ld a,$7
+
+.pikaToLeftOfPlayer
+ call CheckAbsoluteValueLessThan2
+ jr c, .return3
+ ld a, $7
and a
ret
-.asm_fcbfb
- ld a,$3
+
+.return3
+ ld a, $3
and a
ret
-.asm_fcbff
+
+.pikachuOnTopOfPlayer
scf
ret
-
-Func_fcc01: ; fcc01 (3f:4c01)
- jr nc,.asm_fcc05
+
+CheckAbsoluteValueLessThan2: ; fcc01 (3f:4c01)
+ jr nc, .positive
cpl
inc a
-.asm_fcc05
+.positive
cp $2
ret
-
+
Func_fcc08:: ; fcc08 (3f:4c08)
call Func_fcc23
ret nc
- ld a,[wd736]
- bit 6,a
- jr nz,.asm_fcc1b
+ ld a, [wd736]
+ bit 6, a
+ jr nz, .asm_fcc1b
call Func_fcc42
ret c
- call Func_fcb94
+ call AppendPikachuFollowCommandToBuffer
ret
+
.asm_fcc1b
call Func_fcc64
ret c
- call Func_fcb94
+ call AppendPikachuFollowCommandToBuffer
ret
-
+
Func_fcc23: ; fcc23 (3f:4c28)
- ld a,[wd430]
- bit 5,a
- jr nz,.asm_fcc40
- ld a,[wd430]
- bit 7,a
- jr nz,.asm_fcc40
- ld a,[wd472]
- bit 7,a
- jr z,.asm_fcc40
- ld a,[wWalkBikeSurfState]
+ ld a, [wPikachuOverworldStateFlags]
+ bit 5, a
+ jr nz, .asm_fcc40
+ ld a, [wPikachuOverworldStateFlags]
+ bit 7, a
+ jr nz, .asm_fcc40
+ ld a, [wd472]
+ bit 7, a
+ jr z, .asm_fcc40
+ ld a, [wWalkBikeSurfState]
and a
- jr nz,.asm_fcc40
+ jr nz, .asm_fcc40
scf
ret
+
.asm_fcc40
and a
ret
-
+
Func_fcc42: ; fcc42 (3f:4c42)
xor a
- ld a,[wPlayerDirection]
- bit 3,a
- jr nz,.asm_fcc58
- bit 2,a
- jr nz,.asm_fcc5b
- bit 1,a
- jr nz,.asm_fcc5e
- bit 0,a
- jr nz,.asm_fcc61
+ ld a, [wPlayerDirection]
+ bit 3, a
+ jr nz, .asm_fcc58
+ bit 2, a
+ jr nz, .asm_fcc5b
+ bit 1, a
+ jr nz, .asm_fcc5e
+ bit 0, a
+ jr nz, .asm_fcc61
scf
ret
+
.asm_fcc58
- ld a,$2
+ ld a, $2
ret
+
.asm_fcc5b
- ld a,$1
+ ld a, $1
ret
+
.asm_fcc5e
- ld a,$3
+ ld a, $3
ret
+
.asm_fcc61
- ld a,$4
+ ld a, $4
ret
-
+
Func_fcc64: ; fcc64 (3f:4c64)
- ld hl,wd430
- bit 6,[hl]
- jr z,.asm_fcc6e
- res 6,[hl]
+ ld hl, wPikachuOverworldStateFlags
+ bit 6, [hl]
+ jr z, .asm_fcc6e
+ res 6, [hl]
ret
+
.asm_fcc6e
- set 6,[hl]
+ set 6, [hl]
xor a
- ld a,[wPlayerDirection]
- bit 3,a
- jr nz,.asm_fcc86
- bit 2,a
- jr nz,.asm_fcc89
- bit 1,a
- jr nz,.asm_fcc8c
- bit 0,a
- jr nz,.asm_fcc8f
+ ld a, [wPlayerDirection]
+ bit 3, a
+ jr nz, .asm_fcc86
+ bit 2, a
+ jr nz, .asm_fcc89
+ bit 1, a
+ jr nz, .asm_fcc8c
+ bit 0, a
+ jr nz, .asm_fcc8f
scf
ret
+
.asm_fcc86
- ld a,$6
+ ld a, $6
ret
+
.asm_fcc89
- ld a,$5
+ ld a, $5
ret
+
.asm_fcc8c
- ld a,$7
+ ld a, $7
ret
+
.asm_fcc8f
- ld a,$8
+ ld a, $8
ret
Func_fcc92: ; fcc92 (3f:4c92)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fccb0
+ jr z, .asm_fccb0
and a
- jr z,.asm_fccb0
+ jr z, .asm_fccb0
dec [hl]
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
inc e
- ld a,$ff
+ ld a, $ff
.asm_fcca8
- ld d,[hl]
- ldd [hl],a
- ld a,d
+ ld d, [hl]
+ ldd [hl], a
+ ld a, d
dec e
- jr nz,.asm_fcca8
+ jr nz, .asm_fcca8
and a
ret
+
.asm_fccb0
scf
ret
@@ -1297,384 +1355,399 @@ Func_fcc92: ; fcc92 (3f:4c92)
Func_fccb2:: ; fccb2 (3f:4cb2)
call Func_fcd01
and a
- jr z,.asm_fccbf
+ jr z, .asm_fccbf
dec a
and $3
add a
add a
jr .asm_fccea
+
.asm_fccbf
- ld a,[wYCoord]
+ ld a, [wYCoord]
add $4
- ld d,a
- ld a,[wXCoord]
+ ld d, a
+ ld a, [wXCoord]
add $4
- ld e,a
- ld a,[wSpriteStateData2 + $f4]
+ ld e, a
+ ld a, [wSpriteStateData2 + $f4]
cp d
- jr z,.asm_fccd9
- ld a,SPRITE_FACING_DOWN
- jr c,.asm_fccea
- ld a,SPRITE_FACING_UP
+ jr z, .asm_fccd9
+ ld a, SPRITE_FACING_DOWN
+ jr c, .asm_fccea
+ ld a, SPRITE_FACING_UP
jr .asm_fccea
+
.asm_fccd9
- ld a,[wSpriteStateData2 + $f5]
+ ld a, [wSpriteStateData2 + $f5]
cp e
- jr z,.asm_fcce7
- ld a,SPRITE_FACING_RIGHT
- jr c,.asm_fccea
- ld a,SPRITE_FACING_LEFT
+ jr z, .asm_fcce7
+ ld a, SPRITE_FACING_RIGHT
+ jr c, .asm_fccea
+ ld a, SPRITE_FACING_LEFT
jr .asm_fccea
+
.asm_fcce7
- ld a,[wSpriteStateData1 + $9]
+ ld a, [wSpriteStateData1 + $9]
.asm_fccea
- ld [wSpriteStateData1 + $f9],a
+ ld [wSpriteStateData1 + $f9], a
ret
-
+
Func_fccee: ; fccee (3f:4cee)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fccff
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
- ld a,[hl]
+ jr z, .asm_fccff
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld a, [hl]
ret
+
.asm_fccff
xor a
ret
-
+
Func_fcd01: ; fcd01 (3f:4d01)
- ld hl,wd437
- ld a,[hl]
+ ld hl, wPikachuFollowCommandBufferSize
+ ld a, [hl]
cp $ff
- jr z,.asm_fcd15
+ jr z, .asm_fcd15
and a
- jr z,.asm_fcd15
- ld e,a
- ld d,0
- ld hl,wd438
- add hl,de
- ld a,[hl]
+ jr z, .asm_fcd15
+ ld e, a
+ ld d, 0
+ ld hl, wPikachuFollowCommandBuffer
+ add hl, de
+ ld a, [hl]
ret
+
.asm_fcd15
xor a
ret
-
+
Func_fcd17: ; fcd17 (3f:4d17)
- ld a,[wd437]
+ ld a, [wPikachuFollowCommandBufferSize]
cp $ff
ret z
cp $2
- jr nc,.asm_fcd23
+ jr nc, .asm_fcd23
and a
ret
+
.asm_fcd23
scf
ret
-
+
Func_fcd25: ; fcd25 (3f:4d25)
- ld h,wSpriteStateData2 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData2 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $4
- ld l,a
- ld b,[hl]
- ld a,[wYCoord]
+ ld l, a
+ ld b, [hl]
+ ld a, [wYCoord]
cp b
- jr z,.asm_fcd3a
- jr nc,.asm_fcd63
+ jr z, .asm_fcd3a
+ jr nc, .asm_fcd63
add $8
cp b
- jr c,.asm_fcd63
+ jr c, .asm_fcd63
.asm_fcd3a
inc l
- ld b,[hl]
- ld a,[wXCoord]
+ ld b, [hl]
+ ld a, [wXCoord]
cp b
- jr z,.asm_fcd49
- jr nc,.asm_fcd63
+ jr z, .asm_fcd49
+ jr nc, .asm_fcd63
add $9
cp b
- jr c,.asm_fcd63
+ jr c, .asm_fcd63
.asm_fcd49
call Func_fcd83
- ld d,$60
- ld a,[hli]
- ld e,a
+ ld d, $60
+ ld a, [hli]
+ ld e, a
cp d
- jr nc,.asm_fcd63
- ld a,[hld]
+ jr nc, .asm_fcd63
+ ld a, [hld]
cp d
- jr nc,.asm_fcd63
- ld bc,-20
- add hl,bc
- ld a,[hli]
+ jr nc, .asm_fcd63
+ ld bc, -20
+ add hl, bc
+ ld a, [hli]
cp d
- jr nc,.asm_fcd63
- ld a,[hl]
+ jr nc, .asm_fcd63
+ ld a, [hl]
cp d
- jr c,.asm_fcd6f
+ jr c, .asm_fcd6f
.asm_fcd63
- ld h,wSpriteStateData1 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData1 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $2
- ld l,a
- ld [hl],$ff
+ ld l, a
+ ld [hl], $ff
scf
jr .asm_fcd82
+
.asm_fcd6f
- ld h,wSpriteStateData2 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData2 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $7
- ld l,a
- ld a,[wGrassTile]
+ ld l, a
+ ld a, [wGrassTile]
cp e
- ld a,$0
- jr nz,.asm_fcd80
- ld a,$80
+ ld a, $0
+ jr nz, .asm_fcd80
+ ld a, $80
.asm_fcd80
- ld [hl],a
+ ld [hl], a
and a
.asm_fcd82
ret
-
+
Func_fcd83: ; fcd83 (3f:4d83)
- ld h,wSpriteStateData1 / $100
- ld a,[H_CURRENTSPRITEOFFSET]
+ ld h, wSpriteStateData1 / $100
+ ld a, [H_CURRENTSPRITEOFFSET]
add $4
- ld l,a
- ld a,[hli]
+ ld l, a
+ ld a, [hli]
add $4
and $f0
srl a
- ld c,a
- ld b,$0
+ ld c, a
+ ld b, $0
inc l
- ld a,[hl]
+ ld a, [hl]
add $2
srl a
srl a
srl a
add SCREEN_WIDTH
- ld d,0
- ld e,a
- ld hl,wTileMap
+ ld d, 0
+ ld e, a
+ ld hl, wTileMap
rept 5
- add hl,bc
+ add hl, bc
endr
- add hl,de
+ add hl, de
ret
-
+
Func_fcdad: ; fcdad (3f:4dad)
push bc
push af
- ld a,[wPikachuHappiness]
+ ld a, [wPikachuHappiness]
cp $50
pop bc
- ld a,b
+ ld a, b
pop bc
ret
IsStarterPikachuInOurParty:: ; fcdb8 (3f:4db8)
- ld hl,wPartySpecies
- ld de,wPartyMon1OTID
- ld bc,wPartyMonOT
+ ld hl, wPartySpecies
+ ld de, wPartyMon1OTID
+ ld bc, wPartyMonOT
push hl
.loop
pop hl
- ld a,[hli]
+ ld a, [hli]
push hl
inc a
- jr z,.noPlayerPikachu
+ jr z, .noPlayerPikachu
cp PIKACHU + 1
- jr nz,.curMonNotPlayerPikachu
- ld h,d
- ld l,e
- ld a,[wPlayerID]
+ jr nz, .curMonNotPlayerPikachu
+ ld h, d
+ ld l, e
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.curMonNotPlayerPikachu
+ jr nz, .curMonNotPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.curMonNotPlayerPikachu
+ jr nz, .curMonNotPlayerPikachu
push de
push bc
- ld hl,wPlayerName
- ld d,$6 ; possible player length - 1
+ ld hl, wPlayerName
+ ld d, $6 ; possible player length - 1
.nameCompareLoop
dec d
- jr z,.sameOT
- ld a,[bc]
+ jr z, .sameOT
+ ld a, [bc]
inc bc
cp [hl]
inc hl
- jr z,.nameCompareLoop
+ jr z, .nameCompareLoop
pop bc
pop de
.curMonNotPlayerPikachu
- ld hl,wPartyMon2 - wPartyMon1
- add hl,de
- ld d,h
- ld e,l
- ld hl,NAME_LENGTH
- add hl,bc
- ld b,h
- ld c,l
+ ld hl, wPartyMon2 - wPartyMon1
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, NAME_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
jr .loop
+
.sameOT
pop bc
pop de
- ld h,d
- ld l,e
- ld bc,-NAME_LENGTH
- add hl,bc
- ld a,[hli]
+ ld h, d
+ ld l, e
+ ld bc, -NAME_LENGTH
+ add hl, bc
+ ld a, [hli]
or [hl]
- jr z,.noPlayerPikachu ; XXX how is this determined?
+ jr z, .noPlayerPikachu ; XXX how is this determined?
pop hl
scf
ret
+
.noPlayerPikachu
pop hl
and a
ret
IsThisPartymonStarterPikachu_Box:: ; fce0d (3f:4e0d)
- ld hl,wBoxMon1
- ld bc,wBoxMon2 - wBoxMon1
- ld de,wBoxMonOT
+ ld hl, wBoxMon1
+ ld bc, wBoxMon2 - wBoxMon1
+ ld de, wBoxMonOT
jr asm_fce21
IsThisPartymonStarterPikachu_Party:: ; fce18 (3f:4e18)
IsThisPartymonStarterPikachu::
- ld hl,wPartyMon1
- ld bc,wPartyMon2 - wPartyMon1
- ld de,wPartyMonOT
+ ld hl, wPartyMon1
+ ld bc, wPartyMon2 - wPartyMon1
+ ld de, wPartyMonOT
asm_fce21: ; fce21 (3f:4e21)
- ld a,[wWhichPokemon]
+ ld a, [wWhichPokemon]
call AddNTimes
- ld a,[hl]
+ ld a, [hl]
cp PIKACHU
- jr nz,.notPlayerPikachu
- ld bc,wPartyMon1OTID - wPartyMon1
- add hl,bc
- ld a,[wPlayerID]
+ jr nz, .notPlayerPikachu
+ ld bc, wPartyMon1OTID - wPartyMon1
+ add hl, bc
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.notPlayerPikachu
+ jr nz, .notPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.notPlayerPikachu
- ld h,d
- ld l,e
- ld a,[wWhichPokemon]
- ld bc,NAME_LENGTH
+ jr nz, .notPlayerPikachu
+ ld h, d
+ ld l, e
+ ld a, [wWhichPokemon]
+ ld bc, NAME_LENGTH
call AddNTimes
- ld de,wPlayerName
- ld b,$6
+ ld de, wPlayerName
+ ld b, $6
.loop
dec b
- jr z,.isPlayerPikachu
- ld a,[de]
+ jr z, .isPlayerPikachu
+ ld a, [de]
inc de
cp [hl]
inc hl
- jr z,.loop
+ jr z, .loop
.notPlayerPikachu
and a
ret
+
.isPlayerPikachu
scf
ret
-
+
Func_fce5a:: ; fce5a (3f:4e5a)
push de
call IsStarterPikachuInOurParty
pop de
ret nc
- ld a,d
+ ld a, d
cp $80
- ld a,[wPikachuMood]
- jr c,.asm_fce6c
+ ld a, [wPikachuMood]
+ jr c, .asm_fce6c
cp d
- jr c,.asm_fce6e
+ jr c, .asm_fce6e
ret
+
.asm_fce6c
cp d
ret c
.asm_fce6e
- ld a,d
- ld [wPikachuMood],a
+ ld a, d
+ ld [wPikachuMood], a
ret
Func_fce73:: ; fce73 (3f:4e73)
; function to test if a pokemon is alive?
xor a
- ld [wWhichPokemon],a
- ld hl,wPartyCount
+ ld [wWhichPokemon], a
+ ld hl, wPartyCount
.loop
inc hl
- ld a,[hl]
+ ld a, [hl]
cp $ff
- jr z,.asm_fcea9
+ jr z, .asm_fcea9
push hl
call IsThisPartymonStarterPikachu_Party
pop hl
- jr nc,.asm_fce9e
- ld a,[wWhichPokemon]
- ld hl,wPartyMon1HP
- ld bc,wPartyMon2 - wPartyMon1
+ jr nc, .asm_fce9e
+ ld a, [wWhichPokemon]
+ ld hl, wPartyMon1HP
+ ld bc, wPartyMon2 - wPartyMon1
call AddNTimes
- ld a,[hli]
+ ld a, [hli]
or [hl]
- ld d,a
+ ld d, a
inc hl
inc hl
- ld a,[hl]
+ ld a, [hl]
and a
- jr nz,.asm_fcea7
+ jr nz, .asm_fcea7
jr .asm_fcea9
+
.asm_fce9e
- ld a,[wWhichPokemon]
+ ld a, [wWhichPokemon]
inc a
- ld [wWhichPokemon],a
+ ld [wWhichPokemon], a
jr .loop
+
.asm_fcea7
scf
ret
+
.asm_fcea9
and a
ret
-Func_fceab:: ; fceab (3f:4eab)
- ld hl,wPartySpecies
- ld de,wPartyMon1Moves
- ld bc,wPartyMonOT
+IsSurfingPikachuInThePlayersParty:: ; fceab (3f:4eab)
+ ld hl, wPartySpecies
+ ld de, wPartyMon1Moves
+ ld bc, wPartyMonOT
push hl
.loop
pop hl
- ld a,[hli]
+ ld a, [hli]
push hl
inc a
- jr z,.noSurfingPlayerPikachu
+ jr z, .noSurfingPlayerPikachu
cp PIKACHU+1
- jr nz,.curMonNotSurfingPlayerPikachu
- ld h,d
- ld l,e
+ jr nz, .curMonNotSurfingPlayerPikachu
+ ld h, d
+ ld l, e
push hl
push bc
- ld b,NUM_MOVES
+ ld b, NUM_MOVES
.moveSearchLoop
- ld a,[hli]
+ ld a, [hli]
cp SURF
- jr z,.foundSurfingPikachu
+ jr z, .foundSurfingPikachu
dec b
- jr nz,.moveSearchLoop
+ jr nz, .moveSearchLoop
pop bc
pop hl
jr .curMonNotSurfingPlayerPikachu
+
.foundSurfingPikachu
pop bc
pop hl
@@ -1682,635 +1755,54 @@ Func_fceab:: ; fceab (3f:4eab)
inc hl
inc hl
inc hl
- ld a,[wPlayerID]
+ ld a, [wPlayerID]
cp [hl]
- jr nz,.curMonNotSurfingPlayerPikachu
+ jr nz, .curMonNotSurfingPlayerPikachu
inc hl
- ld a,[wPlayerID+1]
+ ld a, [wPlayerID+1]
cp [hl]
- jr nz,.curMonNotSurfingPlayerPikachu
+ jr nz, .curMonNotSurfingPlayerPikachu
push de
push bc
- ld hl,wPlayerName
- ld d,$6
+ ld hl, wPlayerName
+ ld d, $6
.nameCompareLoop
dec d
- jr z,.foundSurfingPlayerPikachu
- ld a,[bc]
+ jr z, .foundSurfingPlayerPikachu
+ ld a, [bc]
inc bc
cp [hl]
inc hl
- jr z,.nameCompareLoop
+ jr z, .nameCompareLoop
pop bc
pop de
.curMonNotSurfingPlayerPikachu
- ld hl,wPartyMon2 - wPartyMon1
- add hl,de
- ld d,h
- ld e,l
- ld hl,NAME_LENGTH
- add hl,bc
- ld b,h
- ld c,l
+ ld hl, wPartyMon2 - wPartyMon1
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, NAME_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
jr .loop
+
.foundSurfingPlayerPikachu
pop bc
pop de
pop hl
scf
ret
+
.noSurfingPlayerPikachu
pop hl
and a
ret
-IsPlayerTalkingToPikachu:: ; fcf0c (3f:4f0c)
- ld a, [wd436]
- and a
- ret z
- ld a, [hSpriteIndexOrTextID]
- cp $f
- ret nz
- call InitializePikachuTextID
- xor a
- ld [hSpriteIndexOrTextID], a
- ld [wd436], a
- ret
-
-InitializePikachuTextID: ; fcf20 (3f:4f20)
- ld a, $d4 ; display
- ld [hSpriteIndexOrTextID], a
- xor a
- ld [wPlayerMovingDirection], a
- ld a, $1
- ld [wAutoTextBoxDrawingControl], a
- call DisplayTextID
- xor a
- ld [wAutoTextBoxDrawingControl], a
- ret
+INCLUDE "engine/pikachu_pic_animation.asm"
-DoStarterPikachuEmotions: ; fcf35 (3f:4f35)
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- ld e, [hl]
- inc hl
- ld d, [hl]
-.loop
- ld a, [de]
- inc de
- cp $ff
- jr z, .done
- ld c, a
- ld b, $0
- ld hl, Jumptable_fcf54
- add hl, bc
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- jr .loop
-.done
- ret
-
-Jumptable_fcf54: ; fcf54 (3f:4f54)
- dw Func_fcf6a
- dw Func_fcf6b
- dw Func_fcf77
- dw Func_fcf8d
- dw Func_fcfb0
- dw Func_fd9d0
- dw Func_fcfc7
- dw Func_fcfbe
- dw Func_fcfe8
- dw Func_fcfe9
- dw Func_fcf6a
-
-Func_fcf6a: ; fcf6a (3f:4f6a)
- ret
-
-Func_fcf6b: ; fcf6b (3f:4f6b)
- ld a, [de]
- ld l, a
- inc de
- ld a, [de]
- ld h, a
- inc de
- push de
- call PrintText
- pop de
+Func_fe66e:
ret
-
-Func_fcf77: ; fcf77 (3f:4f77)
- ld a, [de]
- inc de
- push de
- ld e, a
- nop
- call Func_fcf81
- pop de
- ret
-
-Func_fcf81: ; fcf81 (3f:4f81)
- cp $ff
- ret z
- callab PlayPikachuSoundClip
- ret
-
-Func_fcf8d: ; fcf8d (3f:4f8d)
- ld a, [wUpdateSpritesEnabled]
- push af
- ld a, $ff
- ld [wUpdateSpritesEnabled], a
- ld a, [de]
- inc de
- push de
- call Func_fcfa2
- pop de
- pop af
- ld [wUpdateSpritesEnabled], a
- ret
-
-Func_fcfa2: ; fcfa2 (3f:4fa2)
- ld [wWhichEmotionBubble], a
- ld a, $f
- ld [wEmotionBubbleSpriteIndex], a
- predef EmotionBubble
- ret
-
-Func_fcfb0: ; fcfb0 (3f:4fb0)
- ld a, [de]
- inc de
- ld l, a
- ld a, [de]
- inc de
- ld h, a
- push de
- ld b, $3f
- call Func_fd2a1
- pop de
- ret
-
-Func_fcfbe: ; fcfbe (3f:4fbe)
- ld a, [de]
- inc de
- push de
- ld c, a
- call DelayFrames
- pop de
- ret
-
-Func_fcfc7: ; fcfc7 (3f:4fc7)
- ld a, [de]
- inc de
- push de
- ld e, a
- ld d, $0
- ld hl, Jumptable_fcfda
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call JumpToAddress
- pop de
- ret
-
-Jumptable_fcfda:
- dw Func_fd8ab
- dw LoadFontTilePatterns
- dw Func_fd8f8
- dw WaitForTextScrollButtonPress
- dw Func_fd8d4
- dw Func_fd8e1
- dw Func_fd8ee
-
-Func_fcfe8: ; fcfe8 (3f:4fe8)
- ret
-
-Func_fcfe9: ; fcfe9 (3f:4fe9)
- push de
- call Func_fcff2
- call UpdateSprites
- pop de
- ret
-
-Func_fcff2: ; fcff2 (3f:4ff2)
- ld a, [wSpriteStateData1 + $9]
- xor $4
- ld [wSpriteStateData1 + $f9], a
- ret
-
-Func_fcffb: ; fcffb (3f:4ffb)
-; Inexplicably empty.
- rept 5
- nop
- endr
- ret
-
-Func_fd001:: ; fd001 (3f:5001)
- ld a, e
- jr asm_fd00f
-
-Func_fd004:: ; fd004 (3f:5004)
- call Func_fd05e
- jr c, asm_fd00f
- call Func_fd978
- call Func_fcffb
-asm_fd00f: ; fd00f (3f:500f)
- ld [wExpressionNumber], a
- ld hl, PikachuEmotionTable
- call DoStarterPikachuEmotions
- ret
-
-PikachuEmotionTable: ; fd019 (3f:4019)
- dw PikachuEmotion0_fd115
- dw PikachuEmotion1_fd141
- dw PikachuEmotion2_fd116
- dw PikachuEmotion3_fd160
- dw PikachuEmotion4_fd136
- dw PikachuEmotion5_fd14d
- dw PikachuEmotion6_fd153
- dw PikachuEmotion7_fd128
- dw PikachuEmotion8_fd147
- dw PikachuEmotion9_fd166
- dw PikachuEmotion10_fd11e
- dw PikachuEmotion11_fd173
- dw PikachuEmotion12_fd17a
- dw PikachuEmotion13_fd180
- dw PikachuEmotion14_fd189
- dw PikachuEmotion15_fd191
- dw PikachuEmotion16_fd197
- dw PikachuEmotion17_fd19d
- dw PikachuEmotion18_fd1a3
- dw PikachuEmotion19_fd1a9
- dw PikachuEmotion20_fd1b1
- dw PikachuEmotion21_fd1b9
- dw PikachuEmotion22_fd1c1
- dw PikachuEmotion23_fd1c7
- dw PikachuEmotion24_fd1cf
- dw PikachuEmotion25_fd1d7
- dw PikachuEmotion26_fd1df
- dw PikachuEmotion27_fd1eb
- dw PikachuEmotion28_fd1f1
- dw PikachuEmotion29_fd1f7
- dw PikachuEmotion30_fd1fc
- dw PikachuEmotion31_fd20a
- dw PikachuEmotion32_fd213
- dw PikachuEmotion33_fd05d
-
-PikachuEmotion33_fd05d: ; fd05d (3f:505d)
- db $ff
-
-Func_fd05e: ; fd05e (3f:505e)
- ld a, [wCurMap]
- cp POKEMON_FAN_CLUB
- jr nz, .notFanClub
- ld hl, wPreventBlackout
- bit 7, [hl]
- ld a, $1d
- jr z, .asm_fd0c9
- call Func_154a
- ld a, $1e
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notFanClub
- ld a, [wCurMap]
- cp PEWTER_POKECENTER
- jr nz, .notPewterPokecenter
- call Func_154a
- ld a, $1a
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.notPewterPokecenter
- callab Func_f24ae
- ld a, e
- cp $ff
- jr nz, .asm_fd0c9
- jr .asm_fd096
-.asm_fd096
- call IsPlayerPikachuAsleepInParty
- ld a, $b
- jr c, .asm_fd0c9
- callab Func_fce73 ; same bank
- ld a, $1c
- jr c, .asm_fd0c9
- ld a, [wCurMap]
- cp POKEMONTOWER_1
- jr c, .notInLavenderTower
- cp POKEMONTOWER_7 + 1
- ld a, $16
- jr c, .asm_fd0c9
-.notInLavenderTower
- ld a, [wd49c]
- and a
- jr z, .asm_fd0c7
- dec a
- ld c, a
- ld b, $0
- ld hl, Pointer_fd0cb
- add hl, bc
- ld a, [hl]
- jr .asm_fd0c9
-.asm_fd0c7
- and a
- ret
-.asm_fd0c9
- scf
- ret
-
-Pointer_fd0cb:
- db $12,$15,$17,$18,$19
-
-IsPlayerPikachuAsleepInParty:: ; fd0d0 (3f:50d0)
- xor a
- ld [wWhichPokemon], a
-.loop
- ld a, [wWhichPokemon]
- ld c, a
- ld b, $0
- ld hl, wPartySpecies
- add hl, bc
- ld a, [hl]
- cp $ff
- jr z, .done
- cp PIKACHU
- jr nz, .curMonNotStarterPikachu
- callab IsThisPartymonStarterPikachu
- jr nc, .curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- ld hl, wPartyMon1Status
- ld bc, wPartyMon2 - wPartyMon1
- call AddNTimes
- ld a, [hl]
- and SLP
- jr z, .done
- jr .curMonSleepingPikachu
-.curMonNotStarterPikachu
- ld a, [wWhichPokemon]
- cp PARTY_LENGTH - 1
- jr z, .done
- inc a
- ld [wWhichPokemon], a
- jr .loop
-.curMonSleepingPikachu
- scf
- ret
-.done
- and a
- ret
-
-PikachuEmotion0_fd115: ; fd115 (3f:5115)
- db $ff
-
-PikachuEmotion2_fd116: ; fd116 (3f:5116)
- pikaemotion_dummy2
- pikaemotion_emotebubble SMILE_BUBBLE
- pikaemotion_pcm $22
- pikaemotion_5 $2
- db $ff
-
-PikachuEmotion10_fd11e: ; fd11e (3f:511e)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion7_fd128: ; fd128 (3f:5128)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd224
- pikaemotion_pcm $0
- pikaemotion_4 Pointer_fd224
- pikaemotion_5 $7
- db $ff
-
-PikachuEmotion4_fd136: ; fd136 (3f:5136)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd230
- pikaemotion_pcm $1c
- pikaemotion_5 $4
- db $ff
-
-PikachuEmotion1_fd141: ; fd141 (3f:5141)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $1
- db $ff
-
-PikachuEmotion8_fd147: ; fd147 (3f:5147)
- pikaemotion_dummy2
- pikaemotion_pcm $26
- pikaemotion_5 $8
- db $ff
-
-PikachuEmotion5_fd14d: ; fd14d (3f:514d)
- pikaemotion_dummy2
- pikaemotion_pcm $1e
- pikaemotion_5 $5
- db $ff
-
-PikachuEmotion6_fd153: ; fd153 (3f:5153)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm $ff
- pikaemotion_4 Pointer_fd21e
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $6
- db $ff
-
-PikachuEmotion3_fd160: ; fd160 (3f:5160)
- pikaemotion_dummy2
- pikaemotion_pcm $27
- pikaemotion_5 $3
- db $ff
-
-PikachuEmotion9_fd166: ; fd166 (3f:5166)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_pcm $5
- pikaemotion_4 Pointer_fd218
- pikaemotion_emotebubble SKULL_BUBBLE
- pikaemotion_5 $9
- db $ff
-
-PikachuEmotion11_fd173: ; fd173 (3f:5173)
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm $24
- pikaemotion_5 $b
- db $ff
-
-PikachuEmotion12_fd17a: ; fd17a (3f:517a)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $c
- db $ff
-
-PikachuEmotion13_fd180: ; fd180 (3f:5180)
- pikaemotion_dummy2
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADEXTRAPIKASPRITES
- pikaemotion_4 Pointer_fd21e
- pikaemotion_5 $d
- db $ff
-
-PikachuEmotion14_fd189: ; fd189 (3f:5189)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm $9
- pikaemotion_5 $e
- db $ff
-
-PikachuEmotion15_fd191: ; fd191 (3f:5191)
- pikaemotion_dummy2
- pikaemotion_pcm $21
- pikaemotion_5 $f
- db $ff
-
-PikachuEmotion16_fd197: ; fd197 (3f:5197)
- pikaemotion_dummy2
- pikaemotion_pcm $20
- pikaemotion_5 $10
- db $ff
-
-PikachuEmotion17_fd19d: ; fd19d (3f:519d)
- pikaemotion_dummy2
- pikaemotion_pcm $c
- pikaemotion_5 $11
- db $ff
-
-PikachuEmotion18_fd1a3: ; fd1a3 (3f:51a3)
- pikaemotion_dummy2
- pikaemotion_pcm $ff
- pikaemotion_5 $12
- db $ff
-
-PikachuEmotion19_fd1a9: ; fd1a9 (3f:51a9)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $20
- pikaemotion_5 $13
- db $ff
-
-PikachuEmotion20_fd1b1: ; fd1b1 (3f:51b1)
- pikaemotion_dummy2
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $14
- db $ff
-
-PikachuEmotion21_fd1b9: ; fd1b9 (3f:51b9)
- pikaemotion_dummy2
- pikaemotion_emotebubble FISH_BUBBLE
- pikaemotion_pcm $ff
- pikaemotion_5 $15
- db $ff
-
-PikachuEmotion22_fd1c1: ; fd1c1 (3f:51c1)
- pikaemotion_dummy2
- pikaemotion_pcm $3
- pikaemotion_5 $16
- db $ff
-
-PikachuEmotion23_fd1c7: ; fd1c7 (3f:51c7)
- pikaemotion_dummy2
- pikaemotion_pcm $12
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- db $ff
-
-PikachuEmotion24_fd1cf: ; fd1cf (3f:51cf)
- pikaemotion_dummy2
- pikaemotion_emotebubble EXCLAMATION_BUBBLE
- pikaemotion_pcm $ff
- pikaemotion_5 $18
- db $ff
-
-PikachuEmotion25_fd1d7: ; fd1d7 (3f:51d7)
- pikaemotion_dummy2
- pikaemotion_emotebubble BOLT_BUBBLE
- pikaemotion_pcm $22
- pikaemotion_5 $19
- db $ff
-
-PikachuEmotion26_fd1df: ; fd1df (3f:51df)
- pikaemotion_dummy2
- pikaemotion_emotebubble ZZZ_BUBBLE
- pikaemotion_pcm $24
- pikaemotion_5 $1a
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKPEWTERCENTER
- db $ff
-
-PikachuEmotion27_fd1eb: ; fd1eb (3f:51eb)
- pikaemotion_dummy2
- pikaemotion_pcm $8
- pikaemotion_5 $1b
- db $ff
-
-PikachuEmotion28_fd1f1: ; fd1f1 (3f:51f1)
- pikaemotion_dummy2
- pikaemotion_pcm $e
- pikaemotion_5 $1c
- db $ff
-
-PikachuEmotion29_fd1f7: ; fd1f7 (3f:51f7)
- pikaemotion_pcm $4
- pikaemotion_5 $a
- db $ff
-
-PikachuEmotion30_fd1fc: ; fd1fc (3f:51fc)
- pikaemotion_9
- pikaemotion_emotebubble HEART_BUBBLE
- pikaemotion_pcm $4
- pikaemotion_5 $14
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_LOADFONT
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKLAVENDERTOWER
- db $ff
-
-PikachuEmotion31_fd20a: ; fd20a (3f:520a)
- pikaemotion_pcm $12
- pikaemotion_5 $17
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_SHOWMAPVIEW
- pikaemotion_subcmd PIKAEMOTION_SUBCMD_CHECKBILLSHOUSE
- db $ff
-
-PikachuEmotion32_fd213: ; fd213 (3f:5213)
- pikaemotion_pcm $19
- pikaemotion_5 $17
- db $ff
-
-Pointer_fd218: ; fd218 (3f:5218)
- dr $fd218,$fd21e
-Pointer_fd21e: ; fd21e (3f:521e)
- dr $fd21e,$fd224
-Pointer_fd224: ; fd224 (3f:5224)
- dr $fd224,$fd230
-Pointer_fd230: ; fd230 (3f:5230)
- dr $fd230,$fd252
-Func_fd252: ; fd252 (3f:5252)
- dr $fd252,$fd2a1
-Func_fd2a1:: ; fd2a1 (3f:52a1)
- dr $fd2a1,$fd8ab
-Func_fd8ab: ; fd8ab (3f:58ab)
- dr $fd8ab,$fd8d4
-Func_fd8d4: ; fd8d4 (3f:58d4)
- dr $fd8d4,$fd8e1
-Func_fd8e1: ; fd8e1 (3f:58e1)
- dr $fd8e1,$fd8ee
-Func_fd8ee: ; fd8ee (3f:58ee)
- dr $fd8ee,$fd8f8
-Func_fd8f8: ; fd8f8 (3f:58f8)
- dr $fd8f8,$fd978
-Func_fd978: ; fd978 (3f:5978)
- dr $fd978,$fd9d0
-Func_fd9d0: ; fd9d0 (3f:59d0)
- dr $fd9d0,$fe66f
OfficerJennySprite: INCBIN "gfx/sprites/officer_jenny.2bpp"
PikachuSprite: INCBIN "gfx/sprites/pikachu.2bpp"
@@ -2322,4 +1814,4 @@ 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" \ No newline at end of file
+JamesSprite: INCBIN "gfx/sprites/james.2bpp"