diff options
Diffstat (limited to 'engine/bank3f.asm')
-rw-r--r-- | engine/bank3f.asm | 1802 |
1 files changed, 4 insertions, 1798 deletions
diff --git a/engine/bank3f.asm b/engine/bank3f.asm index 85674ec4..23eadbb1 100644 --- a/engine/bank3f.asm +++ b/engine/bank3f.asm @@ -1,1804 +1,10 @@ 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, [wPikachuOverworldStateFlags] - bit 5, a - jr nz, .hide ; 3f:44f8 - ld a, [wPikachuOverworldStateFlags] - bit 7, a - jr nz, .hide - call IsStarterPikachuInOurParty - jr nc, .hide - ld a, [wWalkBikeSurfState] - and a - jr nz, .hide - scf - ret - -.hide - and a - ret - -Func_fc4fa:: ; fc4fa (3f:44fa) - ld hl, wPikachuOverworldStateFlags - bit 4, [hl] - res 4, [hl] - jr nz, .asm_fc515 - call EnablePikachuFollowingPlayer - call Func_fc523 - 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 - 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, wPikachuOverworldStateFlags - set 2, [hl] - pop hl - ret - -Func_fc6cd:: ; fc6cd (3f:46cd) - push hl - ld hl, wPikachuOverworldStateFlags - 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 CheckPikachuFollowingPlayer - 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 CheckPikachuFollowingPlayer - 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, [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] - 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 - -GetPikachuFacingDirectionAndReturnToE: ; fcb4d (3f:4b4d) - call GetPikachuFacingDirection - ld e, a - ret - -GetPikachuFacingDirection: ; 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, wSpriteStateData2 - wSpriteStateData1 + 4 - add hl, bc - ld a, [hl] - cp e - jr z, .asm_fcb71 - jr nc, .asm_fcb6e - ld a, SPRITE_FACING_UP - ret - -.asm_fcb6e - ld a, SPRITE_FACING_DOWN - ret - -.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, SPRITE_FACING_LEFT - ret - -.asm_fcb7e - ld a, SPRITE_FACING_RIGHT - ret - -.asm_fcb81 - ld a, $ff ; standing - ret - -ClearPikachuFollowCommandBuffer: ; fcb84 (3f:4b84) - push bc - ld hl, wPikachuFollowCommandBufferSize - ld [hl], $ff - inc hl - ld bc, $10 - xor a - call FillMemory - pop bc - ret - -AppendPikachuFollowCommandToBuffer: ; fcb94 (3f:4b94) - ld hl, wPikachuFollowCommandBufferSize - inc [hl] - ld e, [hl] - ld d, 0 - ld hl, wPikachuFollowCommandBuffer - add hl, de - ld [hl], a - ret - -Func_fcba1: ; fcba1 (3f:4ba1) - call ClearPikachuFollowCommandBuffer - call GetPikachuFollowCommand - ret c - call AppendPikachuFollowCommandToBuffer - ret - -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, .checkXCoord - jr c, .pikaAbovePlayer - call CheckAbsoluteValueLessThan2 - jr c, .return1 - ld a, $5 - and a - ret - -.return1 - ld a, $1 - and a - ret - -.pikaAbovePlayer - call CheckAbsoluteValueLessThan2 - jr c, .return2 - ld a, $6 - and a - ret - -.return2 - ld a, $2 - and a - ret - -.checkXCoord - ld hl, wSpriteStateData2 - wSpriteStateData1 + 5 - add hl, bc - ld a, [wXCoord] - add $4 - sub [hl] - jr z, .pikachuOnTopOfPlayer - jr c, .pikaToLeftOfPlayer - call CheckAbsoluteValueLessThan2 - jr c, .return4 - ld a, $8 - and a - ret - -.return4 - ld a, $4 - and a - ret - -.pikaToLeftOfPlayer - call CheckAbsoluteValueLessThan2 - jr c, .return3 - ld a, $7 - and a - ret - -.return3 - ld a, $3 - and a - ret - -.pikachuOnTopOfPlayer - scf - ret - -CheckAbsoluteValueLessThan2: ; fcc01 (3f:4c01) - jr nc, .positive - cpl - inc a -.positive - 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 AppendPikachuFollowCommandToBuffer - ret - -.asm_fcc1b - call Func_fcc64 - ret c - call AppendPikachuFollowCommandToBuffer - ret - -Func_fcc23: ; fcc23 (3f:4c28) - 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 - 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, wPikachuOverworldStateFlags - 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, wPikachuFollowCommandBufferSize - 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, wPikachuFollowCommandBuffer - 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, wPikachuFollowCommandBufferSize - ld a, [hl] - cp $ff - 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, wPikachuFollowCommandBufferSize - ld a, [hl] - cp $ff - jr z, .asm_fcd15 - and a - 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, [wPikachuFollowCommandBufferSize] - 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 Pikachu 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 - -IsSurfingPikachuInThePlayersParty:: ; 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 - +INCLUDE "engine/pikachu_follow.asm" +INCLUDE "engine/pikachu_status.asm" +INCLUDE "engine/pikachu_emotions.asm" +INCLUDE "engine/pikachu_movement.asm" INCLUDE "engine/pikachu_pic_animation.asm" Func_fe66e: |