INCLUDE "data/map_songs.asm" INCLUDE "data/map_header_pointers.asm" 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 call IsStarterPikachuInOurParty 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 + $f0 ld a,[wYCoord] add $4 ld e,a ld a,[wXCoord] 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_fccb2 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,[wCurMap] 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,[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 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,[wCurMap] cp VIRIDIAN_FOREST_EXIT jr z,.asm_fc673 cp VIRIDIAN_FOREST_ENTRANCE jr z,.asm_fc67c ld a,[wCurMap] 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,[wCurMap] 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_UP jr z,.asm_fc6b9 jr .asm_fc6bd .asm_fc6b0 ld a,[wSpriteStateData1 + $9] cp SPRITE_FACING_UP 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 Func_fc6c5:: ; fc6c5 (3f:46c5) push hl ld hl,wd430 set 2,[hl] pop hl ret Func_fc6cd:: ; fc6cd (3f:46cd) push hl ld hl,wd430 res 2,[hl] pop hl ret Func_fc6d5:: ; fc6d5 (3f:46d5) call Func_fc6cd call Func_fc727 ret nc push bc 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] and $7f cp $a 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 jp hl PointerTable_fc710: ; fc710 (3f:4710) dw Func_fc793 dw Func_fc7aa dw Func_fc803 dw asm_fc9c3 dw asm_fca1c dw asm_fc9ee dw asm_fc87f dw asm_fc904 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] and a jr nz,.asm_fc739 push bc push hl call Func_fc534 pop hl pop bc .asm_fc739 scf ret .asm_fc73b ld hl,wSpriteStateData1 + $f2 ld [hl],$ff dec hl 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] xor $4 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 call Func_fca99 ret asm_fc76a: ; fc76a (3f:476a) xor a ld hl,$7 add hl,bc ld [hli],a ld [hl],a call Func_fca99 call Func_fc82e 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 call Func_fcba1 ret Func_fc793: ; fc793 (3f:4793) call Func_fcba1 push bc callab InitializeSpriteScreenPosition pop bc ld hl,$2 add hl,bc ld [hl],$ff dec hl ld [hl],$1 ret Func_fc7aa: ; fc7aa (3f:47aa) call Func_fcc92 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] inc de ld hl,$9 add hl,bc ld [hl],a ld a,[de] inc de ld hl,$5 add hl,bc ld [hl],a dec hl dec hl ld a,[de] ld [hl],a inc de ld a,[de] ld hl,$1 add hl,bc ld [hl],a cp $4 jp z,Func_fca0a call Func_fcd17 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 Func_fc803: ; fc803 (3f:4803) call Func_fcae2 ret c ld hl,wSpriteStateData2 - wSpriteStateData1 add hl,bc dec [hl] jr nz,.asm_fc823 push hl call Func_fccee pop hl cp $5 jr nc,Func_fc842 ld [hl],$20 call Random and $c 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 call Func_fca99 ret Func_fc82e: ; fc82e (3f:482e) 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 ret Func_fc842: ; fc842 (3f:4842) ld hl,$0 push af call Random 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 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 xor a 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 call Func_fc82e jr c,Func_fc8c7 call Func_fc6c5 ld hl,$4 add hl,bc ld a,[hl] sub e ld e,a inc hl inc hl ld a,[hl] sub d 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 adc $0 ld h,a ld a,[hli] ld [wd432],a add e ld e,a ld a,[hl] ld [wd433],a add d 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 dec [hl] ret nz jp Func_fc835 Func_fc8c7: ; fc8c7 (3f:48c7) ld hl,$4 add hl,bc ld a,[hl] sub e ld [hl],a inc hl inc hl ld a,[hl] sub d 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 Func_fc8f8: ; fc8f8 (3f:48f8) 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 call Func_fc6c5 ld hl,$7 add hl,bc ld a,[hl] inc a cp $8 ld [hl],a jr nz,.asm_fc91f xor a ld [hli],a ld a,[hl] inc a and %11 ld [hl],a .asm_fc91f call Func_fca99 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 asm_fc937: ; fc937 (3f:4937) call Func_fc82e jp c,Func_fc835 call Func_fc6c5 ld hl,$7 add hl,bc ld a,[hl] inc a cp $8 ld [hl],a jr nz,.asm_fc951 xor a ld [hli],a ld a,[hl] xor $1 ld [hl],a .asm_fc951 call Func_fca99 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 asm_fc969: ; fc969 (3f:4969) call Func_fc82e jp c,Func_fc835 call Func_fc6c5 ld hl,$7 add hl,bc ld a,[hl] inc a cp $8 ld [hl],a jr nz,.asm_fc988 xor a ld [hl],a ld hl,$9 add hl,bc ld a,[hl] call Func_fc994 ld [hl],a .asm_fc988 call Func_fca99 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 .loop ld a,[hli] cp d jr nz,.loop ld a,[hl] pop hl ret Func_fc9a0: ; fc9a0 (3f:49a0) push hl ld hl,Pointer_fc9ac_End ld d,a .loop ld a,[hld] cp d 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 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 call Func_fca38 asm_fc9c3: ; fc9c3 (3f:49c3) call Func_fca4b call Func_fca7e call Func_fca99 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 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 call Func_fca38 asm_fc9ee: ; fc9ee (3f:49ee) call asm_fca59 call Func_fca7e call Func_fca99 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 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 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 dec [hl] ret nz call Func_fca75 call Func_fccb2 ld hl,$1 add hl,bc ld [hl],$1 ret Func_fca38: ; fca38 (3f:4a38) 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] add e ld [hli],a ld a,[hl] add d ld [hl],a ret Func_fca4b: ; fca4b (3f:4a4b) ld a,[wWalkBikeSurfState] cp $1 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] add a add a add [hl] ld [hli],a ld a,[hli] add a add a add [hl] ld [hl],a ret Func_fca68: ; fca68 (3f:4a68) ld hl,$3 add hl,bc ld a,[hli] add a add [hl] ld [hli],a ld a,[hli] add a add [hl] ld [hli],a ret Func_fca75: ; fca75 (3f:4a75) ld hl,$3 add hl,bc xor a ld [hli],a inc hl ld [hl],a ret Func_fca7e: ; fca7e (3f:4a7e) call Func_fcdad ld d,$2 jr nc,.asm_fca87 ld d,$5 .asm_fca87 ld hl,$7 add hl,bc ld a,[hl] inc a cp d jr nz,.asm_fca91 xor a .asm_fca91 ld [hli],a ret nz ld a,[hl] inc a and $3 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] 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] or d 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 or [hl] ld d,a .asm_fcacb ld hl,$2 add hl,bc ld [hl],d ret .asm_fcad1 ld hl,$2 add hl,bc ld [hl],$ff ret .asm_fcad8 ld a,[wSpriteStateData1 + $2] and $f or d ld [wSpriteStateData1 + $f2],a ret Func_fcae2: ; fcae2 (3f:4ae2) ld hl,$104 add hl,bc ld a,[wYCoord] add $4 cp [hl] jr nz,.asm_fcaff inc hl ld a,[wXCoord] add $4 cp [hl] jr nz,.asm_fcaff ld hl,$2 add hl,bc ld [hl],$ff scf ret .asm_fcaff and a ret Func_fcb01: ; fcb01 (3f:4b01) push bc push de push hl ld bc,wSpriteStateData1 + $f0 ld a,[wXCoord] add $4 ld d,a ld a,[wYCoord] add $4 ld e,a ld hl,$104 add hl,bc ld a,[hl] sub e and a jr z,.asm_fcb30 cp $ff jr z,.asm_fcb26 cp $1 jr z,.asm_fcb26 jr .asm_fcb48 .asm_fcb26 ld hl,$105 add hl,bc ld a,[hl] sub d jr z,.asm_fcb43 jr .asm_fcb48 .asm_fcb30 ld hl,$105 add hl,bc ld a,[hl] sub d cp $ff jr z,.asm_fcb43 cp $1 jr z,.asm_fcb43 and a jr z,.asm_fcb43 jr .asm_fcb48 .asm_fcb43 pop hl pop de pop bc scf ret .asm_fcb48 pop hl pop de pop bc xor a ret Func_fcb4d: ; fcb4d (3f:4b4d) call Func_fcb52 ld e,a ret Func_fcb52: ; fcb52 (3f:4b52) ld bc,wSpriteStateData1 + $f0 ld a,[wXCoord] add $4 ld d,a ld a,[wYCoord] add $4 ld e,a ld hl,$104 add hl,bc ld a,[hl] cp e jr z,Func_fcb71 jr nc,.asm_fcb6e ld a,$4 ret .asm_fcb6e ld a,$0 ret Func_fcb71: ; fcb71 (3f:4b71) ld hl,$105 add hl,bc ld a,[hl] cp d jr z,.asm_fcb81 jr nc,.asm_fcb7e ld a,$8 ret .asm_fcb7e ld a,$c ret .asm_fcb81 ld a,$ff ret Func_fcb84: ; fcb84 (3f:4b84) push bc ld hl,wd437 ld [hl],$ff inc hl ld bc,$10 xor a call FillMemory pop bc ret Func_fcb94: ; fcb94 (3f:4b94) ld hl,wd437 inc [hl] ld e,[hl] ld d,0 ld hl,wd438 add hl,de ld [hl],a ret Func_fcba1: ; fcba1 (3f:4ba1) call Func_fcb84 call Func_fcbac ret c call Func_fcb94 ret Func_fcbac: ; fcbac (3f:4bac) ld bc,wSpriteStateData1 + $f0 ld hl,$104 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 and a ret .asm_fcbc6 ld a,$1 and a ret .asm_fcbca call Func_fcc01 jr c,.asm_fcbd3 ld a,$6 and a ret .asm_fcbd3 ld a,$2 and a ret .asm_fcbd7 ld hl,$105 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 and a ret .asm_fcbee ld a,$4 and a ret .asm_fcbf2 call Func_fcc01 jr c,.asm_fcbfb ld a,$7 and a ret .asm_fcbfb ld a,$3 and a ret .asm_fcbff scf ret Func_fcc01: ; fcc01 (3f:4c01) jr nc,.asm_fcc05 cpl inc a .asm_fcc05 cp $2 ret Func_fcc08:: ; fcc08 (3f:4c08) call Func_fcc23 ret nc ld a,[wd736] bit 6,a jr nz,.asm_fcc1b call Func_fcc42 ret c call Func_fcb94 ret .asm_fcc1b call Func_fcc64 ret c call Func_fcb94 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] and a 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 scf ret .asm_fcc58 ld a,$2 ret .asm_fcc5b ld a,$1 ret .asm_fcc5e ld a,$3 ret .asm_fcc61 ld a,$4 ret Func_fcc64: ; fcc64 (3f:4c64) ld hl,wd430 bit 6,[hl] jr z,.asm_fcc6e res 6,[hl] ret .asm_fcc6e 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 scf ret .asm_fcc86 ld a,$6 ret .asm_fcc89 ld a,$5 ret .asm_fcc8c ld a,$7 ret .asm_fcc8f ld a,$8 ret Func_fcc92: ; fcc92 (3f:4c92) ld hl,wd437 ld a,[hl] cp $ff jr z,.asm_fccb0 and a jr z,.asm_fccb0 dec [hl] ld e,a ld d,0 ld hl,wd438 add hl,de inc e ld a,$ff .asm_fcca8 ld d,[hl] ldd [hl],a ld a,d dec e jr nz,.asm_fcca8 and a ret .asm_fccb0 scf ret Func_fccb2:: ; fccb2 (3f:4cb2) call Func_fcd01 and a jr z,.asm_fccbf dec a and $3 add a add a jr .asm_fccea .asm_fccbf ld a,[wYCoord] add $4 ld d,a ld a,[wXCoord] add $4 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 .asm_fccea .asm_fccd9 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 .asm_fccea .asm_fcce7 ld a,[wSpriteStateData1 + $9] .asm_fccea ld [wSpriteStateData1 + $f9],a ret Func_fccee: ; fccee (3f:4cee) ld hl,wd437 ld a,[hl] cp $ff jr z,.asm_fccff ld e,a ld d,0 ld hl,wd438 add hl,de ld a,[hl] ret .asm_fccff xor a ret Func_fcd01: ; fcd01 (3f:4d01) ld hl,wd437 ld a,[hl] cp $ff 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] ret .asm_fcd15 xor a ret Func_fcd17: ; fcd17 (3f:4d17) ld a,[wd437] cp $ff ret z cp $2 jr nc,.asm_fcd23 and a ret .asm_fcd23 scf ret Func_fcd25: ; fcd25 (3f:4d25) ld h,wSpriteStateData2 / $100 ld a,[H_CURRENTSPRITEOFFSET] add $4 ld l,a ld b,[hl] ld a,[wYCoord] cp b jr z,.asm_fcd3a jr nc,.asm_fcd63 add $8 cp b jr c,.asm_fcd63 .asm_fcd3a inc l ld b,[hl] ld a,[wXCoord] cp b jr z,.asm_fcd49 jr nc,.asm_fcd63 add $9 cp b jr c,.asm_fcd63 .asm_fcd49 call Func_fcd83 ld d,$60 ld a,[hli] ld e,a cp d jr nc,.asm_fcd63 ld a,[hld] cp d jr nc,.asm_fcd63 ld bc,-20 add hl,bc ld a,[hli] cp d jr nc,.asm_fcd63 ld a,[hl] cp d jr c,.asm_fcd6f .asm_fcd63 ld h,wSpriteStateData1 / $100 ld a,[H_CURRENTSPRITEOFFSET] add $2 ld l,a ld [hl],$ff scf jr .asm_fcd82 .asm_fcd6f ld h,wSpriteStateData2 / $100 ld a,[H_CURRENTSPRITEOFFSET] add $7 ld l,a ld a,[wGrassTile] cp e ld a,$0 jr nz,.asm_fcd80 ld a,$80 .asm_fcd80 ld [hl],a and a .asm_fcd82 ret Func_fcd83: ; fcd83 (3f:4d83) ld h,wSpriteStateData1 / $100 ld a,[H_CURRENTSPRITEOFFSET] add $4 ld l,a ld a,[hli] add $4 and $f0 srl a ld c,a ld b,$0 inc l ld a,[hl] add $2 srl a srl a srl a add SCREEN_WIDTH ld d,0 ld e,a ld hl,wTileMap rept 5 add hl,bc endr add hl,de ret Func_fcdad: ; fcdad (3f:4dad) push bc push af ld a,[wPikachuHappiness] cp $50 pop bc ld a,b pop bc ret IsStarterPikachuInOurParty:: ; fcdb8 (3f:4db8) ld hl,wPartySpecies ld de,wPartyMon1OTID ld bc,wPartyMonOT push hl .loop pop hl ld a,[hli] push hl inc a jr z,.noPlayerPikachu cp PIKACHU + 1 jr nz,.curMonNotPlayerPikachu ld h,d ld l,e ld a,[wPlayerID] cp [hl] jr nz,.curMonNotPlayerPikachu inc hl ld a,[wPlayerID+1] cp [hl] jr nz,.curMonNotPlayerPikachu push de push bc ld hl,wPlayerName ld d,$6 ; possible player length - 1 .nameCompareLoop dec d jr z,.sameOT ld a,[bc] inc bc cp [hl] inc hl 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 jr .loop .sameOT pop bc pop de 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? 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 jr asm_fce21 IsThisPartymonStarterPikachu_Party:: ; fce18 (3f:4e18) IsThisPartymonStarterPikachu:: ld hl,wPartyMon1 ld bc,wPartyMon2 - wPartyMon1 ld de,wPartyMonOT asm_fce21: ; fce21 (3f:4e21) ld a,[wWhichPokemon] call AddNTimes ld a,[hl] cp PIKACHU jr nz,.notPlayerPikachu ld bc,wPartyMon1OTID - wPartyMon1 add hl,bc ld a,[wPlayerID] cp [hl] jr nz,.notPlayerPikachu inc hl ld a,[wPlayerID+1] cp [hl] jr nz,.notPlayerPikachu ld h,d ld l,e ld a,[wWhichPokemon] ld bc,NAME_LENGTH call AddNTimes ld de,wPlayerName ld b,$6 .loop dec b jr z,.isPlayerPikachu ld a,[de] inc de cp [hl] inc hl 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 cp $80 ld a,[wPikachuMood] jr c,.asm_fce6c cp d jr c,.asm_fce6e ret .asm_fce6c cp d ret c .asm_fce6e 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 .loop inc hl ld a,[hl] cp $ff 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 call AddNTimes ld a,[hli] or [hl] ld d,a inc hl inc hl ld a,[hl] and a jr nz,.asm_fcea7 jr .asm_fcea9 .asm_fce9e ld a,[wWhichPokemon] inc 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 push hl .loop pop hl ld a,[hli] push hl inc a jr z,.noSurfingPlayerPikachu cp PIKACHU+1 jr nz,.curMonNotSurfingPlayerPikachu ld h,d ld l,e push hl push bc ld b,NUM_MOVES .moveSearchLoop ld a,[hli] cp SURF jr z,.foundSurfingPikachu dec b jr nz,.moveSearchLoop pop bc pop hl jr .curMonNotSurfingPlayerPikachu .foundSurfingPikachu pop bc pop hl inc hl inc hl inc hl inc hl ld a,[wPlayerID] cp [hl] jr nz,.curMonNotSurfingPlayerPikachu inc hl ld a,[wPlayerID+1] cp [hl] jr nz,.curMonNotSurfingPlayerPikachu push de push bc ld hl,wPlayerName ld d,$6 .nameCompareLoop dec d jr z,.foundSurfingPlayerPikachu ld a,[bc] inc bc cp [hl] inc hl 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 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 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 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" 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"