ref: 2172461a60604d4ae1dfbcca9159ba91531cf328
dir: /items/item_effects.asm/
MasterBall: UltraBall: GreatBall: PokeBall: HeavyBall: LevelBall: LureBall: FastBall: FriendBall: MoonBall: LoveBall: ParkBall: ; e8a2 ld a, [IsInBattle] dec a jp nz, Functionf7a0 ld a, [PartyCount] cp 6 jr nz, .asm_e8c0 ld a, $1 call GetSRAMBank ld a, [$ad10] cp $14 call CloseSRAM jp z, Functionf7dc .asm_e8c0 xor a ld [$c64e], a ld a, [CurItem] cp $b1 call nz, Functionedfa ld hl, Options res 4, [hl] ld hl, UnknownText_0xf83d call PrintText ld a, [EnemyMonCatchRate] ld b, a ld a, [BattleType] cp $3 jp z, .asm_e99c ld a, [CurItem] cp $1 jp z, .asm_e99c ld a, [CurItem] ld c, a ld hl, Table_0xec0a .asm_e8f2 ld a, [hli] cp $ff jr z, .asm_e906 cp c jr z, .asm_e8fe inc hl inc hl jr .asm_e8f2 .asm_e8fe ld a, [hli] ld h, [hl] ld l, a ld de, .asm_e906 push de jp [hl] .asm_e906 ld a, [CurItem] cp LEVEL_BALL ld a, b jp z, .asm_e98e ld a, b ld [$ffb6], a ld hl, EnemyMonHPHi ld b, [hl] inc hl ld c, [hl] inc hl ld d, [hl] inc hl ld e, [hl] sla c rl b ld h, d ld l, e add hl, de add hl, de ld d, h ld e, l ld a, d and a jr z, .asm_e940 srl d rr e srl d rr e srl b rr c srl b rr c ld a, c and a jr nz, .asm_e940 ld c, $1 .asm_e940 ld b, e push bc ld a, b sub c ld [hMultiplier], a xor a ld [hProduct], a ld [hMultiplicand], a ld [$ffb5], a call Multiply pop bc ld a, b ld [hMultiplier], a ld b, $4 call Divide ld a, [$ffb6] and a jr nz, .asm_e960 ld a, $1 .asm_e960 ld b, a ld a, [EnemyMonStatus] and 1 << FRZ | SLP ld c, 10 jr nz, .asm_e971 and a ld c, 5 jr nz, .asm_e971 ld c, 0 .asm_e971 ld a, b add c jr nc, .asm_e977 ld a, $ff .asm_e977 ld d, a push de ld a, [BattleMonItem] callba GetItem ld a, b cp $46 pop de ld a, d jr nz, .asm_e98e add c jr nc, .asm_e98e ld a, $ff .asm_e98e ld b, a ld [MagikarpLength], a call Random cp b ld a, 0 jr z, .asm_e99c jr nc, .asm_e99f .asm_e99c ld a, [EnemyMonSpecies] .asm_e99f ld [$c64e], a ld c, 20 call DelayFrames ld a, [CurItem] cp $6 jr c, .asm_e9b0 ld a, POKE_BALL .asm_e9b0 ld [$c689], a ld de, ANIM_THROW_POKE_BALL ld a, e ld [FXAnimIDLo], a ld a, d ld [FXAnimIDHi], a xor a ld [hBattleTurn], a ld [Buffer2], a ld [$cfca], a ld a, $37 call Predef ld a, [$c64e] and a jr nz, .asm_e9f5 ld a, [Buffer2] cp $1 ld hl, UnknownText_0xedb5 jp z, .asm_ebdc cp $2 ld hl, UnknownText_0xedba jp z, .asm_ebdc cp $3 ld hl, UnknownText_0xedbf jp z, .asm_ebdc cp $4 ld hl, UnknownText_0xedc4 jp z, .asm_ebdc .asm_e9f5 ld hl, EnemyMonStatus ld a, [hli] push af inc hl ld a, [hli] push af ld a, [hl] push af push hl ld hl, EnemyMonItem ld a, [hl] push af push hl ld hl, EnemySubStatus5 ld a, [hl] push af set 3, [hl] bit 3, a jr nz, .asm_ea13 jr .asm_ea1a .asm_ea13 ld a, DITTO ld [TempEnemyMonSpecies], a jr .asm_ea27 .asm_ea1a set 3, [hl] ld hl, $c6f2 ld a, [EnemyMonAtkDefDV] ld [hli], a ld a, [EnemyMonSpdSpclDV] ld [hl], a .asm_ea27 ld a, [TempEnemyMonSpecies] ld [CurPartySpecies], a ld a, [EnemyMonLevel] ld [CurPartyLevel], a callba LoadEnemyMon pop af ld [EnemySubStatus5], a pop hl pop af ld [hl], a pop hl pop af ld [hld], a pop af ld [hld], a dec hl pop af ld [hl], a ld hl, EnemySubStatus5 bit 3, [hl] jr nz, .asm_ea67 ld hl, $c735 ld de, EnemyMonMove1 ld bc, $0004 call CopyBytes ld hl, $c739 ld de, EnemyMonPPMove1 ld bc, $0004 call CopyBytes .asm_ea67 ld a, [EnemyMonSpecies] ld [$c64e], a ld [CurPartySpecies], a ld [$d265], a ld a, [BattleType] cp $3 jp z, .asm_ebd9 callba Function10607f ld hl, UnknownText_0xedc9 call PrintText call ClearSprites ld a, [$d265] dec a call CheckCaughtMon ld a, c push af ld a, [$d265] dec a call SetSeenAndCaughtMon pop af and a jr nz, .asm_eab7 call Function2ead jr z, .asm_eab7 ld hl, UnknownText_0xedf0 call PrintText call ClearSprites ld a, [EnemyMonSpecies] ld [$d265], a ld a, $43 call Predef .asm_eab7 ld a, [BattleType] cp $6 jp z, .asm_ebd1 cp $b jr nz, .asm_eac8 ld hl, $d0ee set 6, [hl] .asm_eac8 ld a, [PartyCount] cp 6 jr z, .asm_eb3c xor a ld [MonType], a call ClearSprites ld a, $6 call Predef callba Function4db49 ld a, [CurItem] cp FRIEND_BALL jr nz, .asm_eaf8 ld a, [PartyCount] dec a ld hl, PartyMon1Happiness ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, 200 ld [hl], a .asm_eaf8 ld hl, UnknownText_0xedf5 call PrintText ld a, [CurPartySpecies] ld [$d265], a call GetPokemonName call YesNoBox jp c, .asm_ebe2 ld a, [PartyCount] dec a ld [CurPartyMon], a ld hl, PartyMon1Nickname ld bc, PKMN_NAME_LENGTH call AddNTimes ld d, h ld e, l push de xor a ld [MonType], a ld b, 0 callba Function116c1 call Function4b6 call Functione51 pop hl ld de, StringBuffer1 call InitName jp .asm_ebe2 .asm_eb3c call ClearSprites ld a, $9 call Predef callba Function4db83 ld a, $1 call GetSRAMBank ld a, [$ad10] cp $14 jr nz, .asm_eb5b ld hl, $d0ee set 7, [hl] .asm_eb5b ld a, [CurItem] cp FRIEND_BALL jr nz, .asm_eb67 ld a, 200 ld [$ad41], a .asm_eb67 call CloseSRAM ld hl, UnknownText_0xedf5 call PrintText ld a, [CurPartySpecies] ld [$d265], a call GetPokemonName call YesNoBox jr c, .asm_ebaf xor a ld [CurPartyMon], a ld a, BOXMON ld [MonType], a ld de, $d050 ld b, $0 callba Function116c1 ld a, $1 call GetSRAMBank ld hl, $d050 ld de, $b082 ld bc, $000b call CopyBytes ld hl, $b082 ld de, StringBuffer1 call InitName call CloseSRAM .asm_ebaf ld a, $1 call GetSRAMBank ld hl, $b082 ld de, $d050 ld bc, $000b call CopyBytes call CloseSRAM ld hl, $6deb call PrintText call Function4b6 call Functione51 jr .asm_ebe2 .asm_ebd1 callba Functione6ce jr .asm_ebe2 .asm_ebd9 ld hl, $6dc9 .asm_ebdc call PrintText call ClearSprites .asm_ebe2 ld a, [BattleType] cp BATTLETYPE_TUTORIAL ret z cp 2 ret z cp 6 jr z, .asm_ec05 ld a, [$c64e] and a jr z, .asm_ebfb call WhiteBGMap call ClearTileMap .asm_ebfb ld hl, NumItems inc a ld [$d10c], a jp TossItem .asm_ec05 ld hl, $dc79 dec [hl] ret ; ec0a Table_0xec0a: ; ec0a dbw ULTRA_BALL, Function_0xec29 dbw GREAT_BALL, Function_0xec2f dbw MOON_STONE, Function_0xec2f dbw HEAVY_BALL, Function_0xec50 dbw LEVEL_BALL, Function_0xed8c dbw LURE_BALL, Function_0xeccc dbw FAST_BALL, Function_0xed68 dbw MOON_BALL, Function_0xecdd dbw LOVE_BALL, Function_0xed12 dbw PARK_BALL, Function_0xec2f db $ff ; ec29 Function_0xec29: ; ec29 sla b ret nc ld b, $ff ret ; ec2f Function_0xec2f: ; ec2f ld a, b srl a add b ld b, a ret nc ld b, $ff ret ; ec38 GetPokedexEntryBank: ; ec38 push hl push de ld a, [EnemyMonSpecies] rlca rlca and 3 ld hl, .PokedexEntryBanks ld d, 0 ld e, a add hl, de ld a, [hl] pop de pop hl ret .PokedexEntryBanks db BANK(PokedexEntries1) db BANK(PokedexEntries2) db BANK(PokedexEntries3) db BANK(PokedexEntries4) ; ec50 Function_0xec50: ; ec50 ld a, [EnemyMonSpecies] ld hl, PokedexDataPointerTable dec a ld e, a ld d, 0 add hl, de add hl, de ld a, BANK(PokedexDataPointerTable) call GetFarHalfword .SkipText call GetPokedexEntryBank call GetFarByte inc hl cp "@" jr nz, .SkipText call GetPokedexEntryBank push bc inc hl inc hl call GetFarHalfword srl h rr l ld b, h ld c, l srl b rr c srl b rr c srl b rr c srl b rr c call .asm_ec99 srl b rr c call .asm_ec99 ld a, h pop bc jr .asm_eca4 .asm_ec99 push bc ld a, b cpl ld b, a ld a, c cpl ld c, a inc bc add hl, bc pop bc ret .asm_eca4 ld c, a cp $4 jr c, .asm_ecbc ld hl, .table_ecc4 .asm_ecac ld a, c cp [hl] jr c, .asm_ecb4 inc hl inc hl jr .asm_ecac .asm_ecb4 inc hl ld a, b add [hl] ld b, a ret nc ld b, $ff ret .asm_ecbc ld a, b sub 20 ld b, a ret nc ld b, $1 ret .table_ecc4 db 8, 0 db 12, 20 db 16, 30 db 255, 40 ; eccc Function_0xeccc: ; eccc ld a, [BattleType] cp $4 ret nz ld a, b add a jr c, .asm_ecd9 add b jr nc, .asm_ecdb .asm_ecd9 ld a, $ff .asm_ecdb ld b, a ret ; ecdd Function_0xecdd: ; ecdd push bc ld a, [TempEnemyMonSpecies] dec a ld c, a ld b, $0 ld hl, $65b1 add hl, bc add hl, bc ld a, $10 call GetFarHalfword pop bc push bc ld a, $10 call GetFarByte cp $2 pop bc ret nz inc hl inc hl inc hl push bc ld a, $10 call GetFarByte cp $a pop bc ret nz sla b jr c, .asm_ed0f sla b jr nc, .asm_ed11 .asm_ed0f ld b, $ff .asm_ed11 ret ; ed12 Function_0xed12: ; ed12 ld a, [TempEnemyMonSpecies] ld c, a ld a, [TempBattleMonSpecies] cp c ret nz push bc ld a, [TempBattleMonSpecies] ld [CurPartySpecies], a xor a ld [MonType], a ld a, [CurBattleMon] ld [CurPartyMon], a callba GetGender jr c, .asm_ed66 ld d, 0 jr nz, .asm_ed39 inc d .asm_ed39 push de ld a, [TempEnemyMonSpecies] ld [CurPartySpecies], a ld a, WILDMON ld [MonType], a callba GetGender jr c, .asm_ed65 ld d, 0 jr nz, .asm_ed52 inc d .asm_ed52 ld a, d pop de cp d pop bc ret nz sla b jr c, .asm_ed62 sla b jr c, .asm_ed62 sla b ret nc .asm_ed62 ld b, $ff ret .asm_ed65 pop de .asm_ed66 pop bc ret ; ed68 Function_0xed68: ; ed68 ld a, [TempEnemyMonSpecies] ld c, a ld hl, FleeMons ld d, 3 .loop ld a, BANK(FleeMons) call GetFarByte inc hl cp -1 jr z, .next cp c jr nz, .next sla b jr c, .max sla b ret nc .max ld b, $ff ret .next dec d jr nz, .loop ret ; ed8c Function_0xed8c: ; ed8c ld a, [BattleMonLevel] ld c, a ld a, [EnemyMonLevel] cp c ret nc sla b jr c, .asm_eda8 srl c cp c ret nc sla b jr c, .asm_eda8 srl c cp c ret nc sla b ret nc .asm_eda8 ld b, $ff ret ; edab UnknownText_0xedab: ; 0xedab ; It dodged the thrown BALL! This #MON can't be caught! text_jump UnknownText_0x1c5a5a db "@" ; 0xedb0 UnknownText_0xedb0: ; 0xedb0 ; You missed the #MON! text_jump UnknownText_0x1c5a90 db "@" ; 0xedb5 UnknownText_0xedb5: ; 0xedb5 ; Oh no! The #MON broke free! text_jump UnknownText_0x1c5aa6 db "@" ; 0xedba UnknownText_0xedba: ; 0xedba ; Aww! It appeared to be caught! text_jump UnknownText_0x1c5ac3 db "@" ; 0xedbf UnknownText_0xedbf: ; 0xedbf ; Aargh! Almost had it! text_jump UnknownText_0x1c5ae3 db "@" ; 0xedc4 UnknownText_0xedc4: ; 0xedc4 ; Shoot! It was so close too! text_jump UnknownText_0x1c5afa db "@" ; 0xedc9 UnknownText_0xedc9: ; 0xedc9 ; Gotcha! @ was caught!@ @ text_jump UnknownText_0x1c5b17 start_asm ; 0xedce Functionedce: ; edce call WaitSFX push bc ld de, MUSIC_NONE call PlayMusic call DelayFrame ld de, MUSIC_CAPTURE call PlayMusic pop bc ld hl, UnknownText_0xede6 ret ; ede6 UnknownText_0xede6: ; 0xede6 ; @ text_jump UnknownText_0x1c5b35 db "@" ; 0xedeb UnknownText_0xedeb: ; 0xedeb ; was sent to BILL's PC. text_jump UnknownText_0x1c5b38 db "@" ; 0xedf0 UnknownText_0xedf0: ; 0xedf0 ; 's data was newly added to the #DEX.@ @ text_jump UnknownText_0x1c5b53 db "@" ; 0xedf5 UnknownText_0xedf5: ; 0xedf5 ; Give a nickname to @ ? text_jump UnknownText_0x1c5b7f db "@" ; 0xedfa ; known jump sources: e8c9 (3:68c9), f7a0 (3:77a0) Functionedfa: ; edfa (3:6dfa) callba Function2715c ret Item06: ; ee01 callba Function91ae1 ret ; ee08 Bicycle: ; ee08 callba Functiond0b3 ret ; ee0f MoonStone: FireStone: Thunderstone: WaterStone: LeafStone: SunStone: ; ee0f ld b, $5 call Functionf1f9 jp c, .asm_ee38 ld a, PartyMon1Item - PartyMon1 call GetPartyParamLocation ld a, [hl] cp EVERSTONE jr z, .asm_ee35 ld a, $1 ld [$d1e9], a callba Function421d8 ld a, [$d268] and a jr z, .asm_ee35 jp Functionf795 .asm_ee35 call Functionf7f2 .asm_ee38 xor a ld [$d0ec], a ret ; ee3d HpUp: Protein: Iron: Carbos: Calcium: ; ee3d ld b, $1 call Functionf1f9 jp c, Functionee9f call Functioneef5 call Functioneed9 ld a, PartyMon1StatExp - PartyMon1 call GetPartyParamLocation add hl, bc ld a, [hl] cp 100 jr nc, Functionee83 add 10 ld [hl], a call Functionee8c call Functioneed9 ld hl, Strings_eeab add hl, bc ld a, [hli] ld h, [hl] ld l, a ld de, StringBuffer2 ld bc, $000d call CopyBytes call Functionf780 ld hl, UnknownText_0xeea6 call PrintText ld c, $2 callba ChangeHappiness jp Functionf795 Functionee83: ; ee83 ld hl, UnknownText_0xf81f call PrintText jp ClearPalettes ; ee8c Functionee8c: ; ee8c ld a, PartyMon1MaxHP - PartyMon1 call GetPartyParamLocation ld d, h ld e, l ld a, PartyMon1HPExp - 1 - PartyMon1 call GetPartyParamLocation ld b, $1 ld a, $c jp Predef ; ee9f Functionee9f: ; ee9f xor a ld [$d0ec], a jp ClearPalettes ; eea6 UnknownText_0xeea6: ; 0xeea6 ; 's @ rose. text_jump UnknownText_0x1c5b9a db "@" ; 0xeeab Strings_eeab: ; eeab dw .health dw .attack dw .defense dw .speed dw .special .health db "HEALTH@" .attack db "ATTACK@" .defense db "DEFENSE@" .speed db "SPEED@" .special db "SPECIAL@" ; eed9 Functioneed9: ; eed9 ld a, [CurItem] ld hl, Table_eeeb .next cp [hl] inc hl jr z, .asm_eee6 inc hl jr .next .asm_eee6 ld a, [hl] ld c, a ld b, 0 ret ; eeeb Table_eeeb: ; eeeb db HP_UP, PartyMon1HPExp - PartyMon1StatExp db PROTEIN, PartyMon1AtkExp - PartyMon1StatExp db IRON, PartyMon1DefExp - PartyMon1StatExp db CARBOS, PartyMon1SpdExp - PartyMon1StatExp db CALCIUM, PartyMon1SpclExp - PartyMon1StatExp ; eef5 Functioneef5: ; eef5 ld a, [CurPartySpecies] ld [CurSpecies], a ld [$d265], a ld a, PartyMon1Level - PartyMon1 call GetPartyParamLocation ld a, [hl] ld [CurPartyLevel], a call GetBaseData ld a, [CurPartyMon] ld hl, PartyMon1Nickname call GetNick ret ; 0xef14 RareCandy: ; ef14 ld b, $1 call Functionf1f9 jp c, Functionee9f call Functioneef5 ld a, PartyMon1Level - PartyMon1 call GetPartyParamLocation ld a, [hl] cp 100 jp nc, Functionee83 inc a ld [hl], a ld [CurPartyLevel], a push de ld d, a callba Function50e47 pop de ld a, $8 call GetPartyParamLocation ld a, [hMultiplicand] ld [hli], a ld a, [$ffb5] ld [hli], a ld a, [$ffb6] ld [hl], a ld a, $24 call GetPartyParamLocation ld a, [hli] ld b, a ld c, [hl] push bc call Functionee8c ld a, $25 call GetPartyParamLocation pop bc ld a, [hld] sub c ld c, a ld a, [hl] sbc b ld b, a dec hl ld a, [hl] add c ld [hld], a ld a, [hl] adc b ld [hl], a callba Function2709e ld a, $f8 call Functionf24a xor a ld [MonType], a ld a, $1f call Predef ld hl, $c4a9 ld b, $a ld c, $9 call $0fe8 ld hl, $c4bf ld bc, $0004 ld a, $28 call Predef call $0a80 xor a ld [MonType], a ld a, [CurPartySpecies] ld [$d265], a ld a, $1a call Predef xor a ld [$d1e9], a callba Function421d8 jp Functionf795 ; efad HealPowder: ; efad ld b, $1 call Functionf1f9 jp c, Functionf29e call Functionefda cp $0 jr nz, .asm_efc9 ld c, $f callba ChangeHappiness call Functionf7d6 ld a, $0 .asm_efc9 jp Functionf09e ; efcc Antidote: BurnHeal: IceHeal: Awakening: ParlyzHeal: FullHeal: Psncureberry: Przcureberry: BurntBerry: IceBerry: MintBerry: Miracleberry: ; efcc ld b, $1 call Functionf1f9 jp c, Functionf29e Functionefd4: ; efd4 call Functionefda jp Functionf09e ; efda ; known jump sources: efb5 (3:6fb5), efd4 (3:6fd4) Functionefda: ; efda (3:6fda) call Functionf30d ld a, $1 ret z call Functionf058 ld a, $20 call GetPartyParamLocation ld a, [hl] and c jr nz, .asm_eff4 call Functionf009 ld a, $1 ret nc ld b, $f9 .asm_eff4 xor a ld [hl], a ld a, b ld [PartyMenuActionText], a ; $d141 call Functionf030 call Functionf780 call Functionf279 call Functionf795 ld a, $0 ret ; known jump sources: efec (3:6fec) Functionf009: ; f009 (3:7009) call Functionf2a6 jr nc, .asm_f01c ld a, [PlayerSubStatus3] ; $c66a bit 7, a jr z, .asm_f01c ld a, c cp $ff jr nz, .asm_f01c scf ret .asm_f01c and a ret ; known jump sources: f156 (3:7156), f1c7 (3:71c7) Functionf01e: ; f01e (3:701e) call Functionf2a6 ret nc ld a, $22 call GetPartyParamLocation ld a, [hli] ld [BattleMonHP], a ; $c63c ld a, [hld] ld [$c63d], a ret ; known jump sources: effa (3:6ffa), f153 (3:7153) Functionf030: ; f030 (3:7030) call Functionf2a6 ret nc xor a ld [BattleMonStatus], a ; $c63a ld hl, PlayerSubStatus5 ; $c66c res 0, [hl] ld hl, PlayerSubStatus1 ; $c668 res 0, [hl] call Functionf058 ld a, c cp $ff jr nz, .asm_f04f ld hl, PlayerSubStatus3 ; $c66a res 7, [hl] .asm_f04f push bc callba Function0x365d7 pop bc ret ; known jump sources: efe0 (3:6fe0), f042 (3:7042) Functionf058: ; f058 (3:7058) push hl ld a, [CurItem] ; $d106 ld hl, Table_f071 ld bc, 3 .next cp [hl] jr z, .asm_f068 add hl, bc jr .next .asm_f068 inc hl ld b, [hl] inc hl ld a, [hl] ld c, a cp %11111111 pop hl ret ; f071 (3:7071) Table_f071: ; f071 ; item, party menu action text, status db ANTIDOTE, $f0, 1 << PSN db BURN_HEAL, $f1, 1 << BRN db ICE_HEAL, $f2, 1 << FRZ db AWAKENING, $f3, SLP db PARLYZ_HEAL, $f4, 1 << PAR db FULL_HEAL, $f6, %11111111 db FULL_RESTORE, $f6, %11111111 db HEAL_POWDER, $f6, %11111111 db PSNCUREBERRY, $f0, 1 << PSN db PRZCUREBERRY, $f4, 1 << PAR db BURNT_BERRY, $f2, 1 << FRZ db ICE_BERRY, $f1, 1 << BRN db MINT_BERRY, $f3, SLP db MIRACLEBERRY, $f6, %11111111 db -1, 0, 0 ; f09e ; known jump sources: efc9 (3:6fc9), efd7 (3:6fd7), f0c5 (3:70c5), f0d3 (3:70d3), f141 (3:7141), f183 (3:7183), f189 (3:7189), f1a6 (3:71a6) Functionf09e: ; f09e (3:709e) ld hl, Jumptable_f0a3 rst JumpTable ret ; no known jump sources Jumptable_f0a3: ; f0a3 (3:70a3) dw Functionf2a2 dw Functionf299 dw Functionf29e RevivalHerb: ; f0a9 ld b, $1 call Functionf1f9 jp c, Functionf29e call Functionf0d6 cp 0 jr nz, .asm_f0c5 ld c, $11 callba ChangeHappiness call Functionf7d6 ld a, 0 .asm_f0c5 jp Functionf09e ; f0c8 Revive: MaxRevive: ; f0c8 ld b, $1 call Functionf1f9 jp c, Functionf29e call Functionf0d6 jp Functionf09e ; f0d6 Functionf0d6: ; f0d6 call Functionf30d ld a, 1 ret nz ld a, [IsInBattle] and a jr z, .asm_f104 ld a, [CurPartyMon] ld c, a ld d, 0 ld hl, $c6fc ld b, CHECK_FLAG ld a, PREDEF_FLAG call Predef ld a, c and a jr z, .asm_f104 ld a, [CurPartyMon] ld c, a ld hl, $c664 ld b, SET_FLAG ld a, PREDEF_FLAG call Predef .asm_f104 xor a ld [Danger], a ld a, [CurItem] cp REVIVE jr z, .asm_f114 call Functionf2c3 jr .asm_f117 .asm_f114 call Functionf2ba .asm_f117 call Functionf1db ld a, $f7 ld [PartyMenuActionText], a call Functionf279 call Functionf795 ld a, 0 ret ; f128 FullRestore: ; f128 ld b, 1 call Functionf1f9 jp c, Functionf29e call Functionf30d jp z, Functionf299 call Functionf31b jr c, .asm_f13e jp Functionefd4 .asm_f13e call Functionf144 jp Functionf09e ; f144 Functionf144: ; f144 xor a ld [Danger], a call Functionf2c3 ld a, PartyMon1Status - PartyMon1 call GetPartyParamLocation xor a ld [hli], a ld [hl], a call Functionf030 call Functionf01e call Functionf1db ld a, $f5 ld [PartyMenuActionText], a call Functionf279 call Functionf795 ld a, 0 ret ; f16a BitterBerry: ; f16a ld hl, PlayerSubStatus3 bit SUBSTATUS_CONFUSED, [hl] ld a, 1 jr z, .done res SUBSTATUS_CONFUSED, [hl] xor a ld [hBattleTurn], a call Functionf789 ld hl, ConfusedNoMoreText call StdBattleTextBox ld a, 0 .done jp Functionf09e ; f186 MaxPotion: HyperPotion: SuperPotion: Potion: FreshWater: SodaPop: Lemonade: MoomooMilk: Ragecandybar: BerryJuice: Berry: GoldBerry: ; f186 call Functionf1a9 jp Functionf09e ; f18c Energypowder: ; f18c ld c, $f jr Functionf192 ; f190 EnergyRoot: ; f190 ld c, $10 ; f192 Functionf192: ; f192 push bc call Functionf1a9 pop bc cp 0 jr nz, .asm_f1a6 callba ChangeHappiness call Functionf7d6 ld a, 0 .asm_f1a6 jp Functionf09e ; f1a9 ; known jump sources: f186 (3:7186), f193 (3:7193) Functionf1a9: ; f1a9 (3:71a9) ld b, 1 call Functionf1f9 ld a, 2 ret c call Functionf30d ld a, 1 ret z call Functionf31b ld a, 1 ret nc xor a ld [Danger], a ; $c2a6 call Functionf395 call Functionf2d1 call Functionf01e call Functionf1db ld a, $f5 ld [PartyMenuActionText], a ; $d141 call Functionf279 call Functionf795 ld a, 0 ret ; known jump sources: f117 (3:7117), f159 (3:7159), f1ca (3:71ca), f3f7 (3:73f7), f408 (3:7408) Functionf1db: ; f1db (3:71db) push de ld de, SFX_POTION call WaitPlaySFX pop de ld a, [CurPartyMon] ; $d109 ld hl, $c4ab ld bc, $28 call AddNTimes ld a, $2 ld [$d10a], a ld a, $b jp Predef ; known jump sources: ee11 (3:6e11), ee3f (3:6e3f), ef16 (3:6f16), efaf (3:6faf), efce (3:6fce), f0ab (3:70ab), f0ca (3:70ca), f12a (3:712a), f1ab (3:71ab), f5c7 (3:75c7) Functionf1f9: ; f1f9 (3:71f9) call Functionf20b ret c ld a, [CurPartySpecies] ; $d108 cp EGG jr nz, .asm_f209 call Functionf7e8 scf ret .asm_f209 and a ret ; known jump sources: f1f9 (3:71f9) Functionf20b: ; f20b (3:720b) ld a, b ld [PartyMenuActionText], a ; $d141 push hl push de push bc call WhiteBGMap call Functionf21c pop bc pop de pop hl ret ; known jump sources: f215 (3:7215), f41f (3:741f) Functionf21c: ; f21c (3:721c) callba Function5004f callba Function50405 callba Function503e0 callba WritePartyMenuTilemap callba PrintPartyMenuText call WaitBGMap call Function32f9 call DelayFrame callba PartyMenuSelect ret ; known jump sources: ef6d (3:6f6d), f28a (3:728a), f40d (3:740d) Functionf24a: ; f24a (3:724a) ld [PartyMenuActionText], a ; $d141 ld a, [CurPartySpecies] ; $d108 push af ld a, [CurPartyMon] ; $d109 push af push hl push de push bc callba WritePartyMenuTilemap callba Function50566 call WaitBGMap call Function32f9 call DelayFrame pop bc pop de pop hl pop af ld [CurPartyMon], a ; $d109 pop af ld [CurPartySpecies], a ; $d108 ret ; known jump sources: f000 (3:7000), f11f (3:711f), f161 (3:7161), f1d2 (3:71d2) Functionf279: ; f279 (3:7279) xor a ld [hBGMapMode], a ; $ff00+$d4 ld hl, TileMap ; $c4a0 (aliases: SpritesEnd) ld bc, TileMapEnd - TileMap ld a, " " call ByteFill ld a, [PartyMenuActionText] ; $d141 call Functionf24a ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 ld c, $32 call DelayFrames jp Functiona80 ; known jump sources: f133 (3:7133) Functionf299: ; f299 (3:7299) call Functionf7f2 jr Functionf2a2 ; known jump sources: efb2 (3:6fb2), efd1 (3:6fd1), f0ae (3:70ae), f0cd (3:70cd), f12d (3:712d) Functionf29e: ; f29e (3:729e) xor a ld [$d0ec], a ; known jump sources: f29c (3:729c) Functionf2a2: ; f2a2 (3:72a2) call ClearPalettes ret ; known jump sources: f009 (3:7009), f01e (3:701e), f030 (3:7030) Functionf2a6: ; f2a6 (3:72a6) ld a, [IsInBattle] ; $d22d (aliases: EnemyMonEnd) and a ret z ld a, [CurPartyMon] ; $d109 push hl ld hl, CurBattleMon ; $d0d4 cp [hl] pop hl jr nz, .asm_f2b8 scf ret .asm_f2b8 xor a ret ; known jump sources: f114 (3:7114) Functionf2ba: ; f2ba (3:72ba) call Functionf36f srl d rr e jr asm_f2c6 ; known jump sources: f10f (3:710f), f148 (3:7148), f2f5 (3:72f5) Functionf2c3: ; f2c3 (3:72c3) call Functionf36f asm_f2c6: ; f2c6 (3:72c6) ld a, $22 call GetPartyParamLocation ld [hl], d inc hl ld [hl], e jp Functionf328 ; known jump sources: f1c4 (3:71c4), f405 (3:7405) Functionf2d1: ; f2d1 (3:72d1) ld a, $23 call GetPartyParamLocation ld a, [hl] add e ld [hld], a ld a, [hl] adc d ld [hl], a jr c, .asm_f2f5 call Functionf328 ld a, $23 call GetPartyParamLocation ld d, h ld e, l ld a, $25 call GetPartyParamLocation ld a, [de] sub [hl] dec de dec hl ld a, [de] sbc [hl] jr c, .asm_f2f8 .asm_f2f5 call Functionf2c3 .asm_f2f8 ret ; known jump sources: f3f3 (3:73f3) Functionf2f9: ; f2f9 (3:72f9) ld a, $23 call GetPartyParamLocation ld a, [hl] sub e ld [hld], a ld a, [hl] sbc d ld [hl], a jr nc, .asm_f309 xor a ld [hld], a ld [hl], a .asm_f309 call Functionf328 ret ; known jump sources: efda (3:6fda), f0d6 (3:70d6), f130 (3:7130), f1b1 (3:71b1), f3ed (3:73ed), f402 (3:7402), f432 (3:7432) Functionf30d: ; f30d (3:730d) push de call Functionf35f call Functionf348 call Functionf356 ld a, d or e pop de ret ; known jump sources: f136 (3:7136), f1b7 (3:71b7), f437 (3:7437) Functionf31b: ; f31b (3:731b) call Functionf356 ld h, d ld l, e call Functionf36f ld a, l sub e ld a, h sbc d ret ; known jump sources: f2ce (3:72ce), f2de (3:72de), f309 (3:7309) Functionf328: ; f328 (3:7328) ld a, $22 call GetPartyParamLocation ld a, [hli] ld [$d1ef], a ld a, [hl] ld [$d1ee], a ret ; f336 (3:7336) Functionf336: ; f336 ld a, d ld [$d1ef], a ld a, e ld [$d1ee], a ret ; f33f Functionf33f: ; f33f ld a, [$d1ef] ld d, a ld a, [$d1ee] ld e, a ret ; f348 ; known jump sources: f311 (3:7311) Functionf348: ; f348 (3:7348) ld a, $22 call GetPartyParamLocation ld a, [hli] ld [$d1ed], a ld a, [hl] ld [$d1ec], a ret ; known jump sources: f314 (3:7314), f31b (3:731b) Functionf356: ; f356 (3:7356) ld a, [$d1ed] ld d, a ld a, [$d1ec] ld e, a ret ; known jump sources: f30e (3:730e) Functionf35f: ; f35f (3:735f) push hl ld a, $24 call GetPartyParamLocation ld a, [hli] ld [Buffer2], a ; $d1eb (aliases: MovementType) ld a, [hl] ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) pop hl ret ; known jump sources: f2ba (3:72ba), f2c3 (3:72c3), f320 (3:7320) Functionf36f: ; f36f (3:736f) ld a, [Buffer2] ; $d1eb (aliases: MovementType) ld d, a ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength) ld e, a ret ; known jump sources: f3f0 (3:73f0), f3fb (3:73fb) Functionf378: ; f378 (3:7378) push bc ld a, $24 call GetPartyParamLocation ld a, [hli] ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) ld a, [hl] ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) ld a, $5 ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier) ld b, $2 call Divide ld a, [$FF00+$b5] ld d, a ld a, [$FF00+$b6] ld e, a pop bc ret ; known jump sources: f1c1 (3:71c1) Functionf395: ; f395 (3:7395) push hl ld a, [CurItem] ; $d106 ld hl, Tablef3af ld d, a .next ld a, [hli] cp -1 jr z, .asm_f3a9 cp d jr z, .done inc hl inc hl jr .next .asm_f3a9 scf .done ld e, [hl] inc hl ld d, [hl] pop hl ret ; f3af (3:73af) Tablef3af: ; f3af dbw FRESH_WATER, 50 dbw SODA_POP, 60 dbw LEMONADE, 80 dbw HYPER_POTION, 200 dbw SUPER_POTION, 50 dbw POTION, 20 dbw MAX_POTION, 999 dbw FULL_RESTORE, 999 dbw MOOMOO_MILK, 100 dbw BERRY, 10 dbw GOLD_BERRY, 30 dbw ENERGYPOWDER, 50 dbw ENERGY_ROOT, 200 dbw RAGECANDYBAR, 20 dbw BERRY_JUICE, 20 dbw -1, 0 ; f3df Functionf3df: ; f3df (3:73df) ld a, [$d0d8] dec a ld b, a call Functionf419 jr c, .asm_f413 ld a, b ld [CurPartyMon], a ; $d109 call Functionf30d call Functionf378 call Functionf2f9 push bc call Functionf1db pop bc call Functionf378 ld a, c ld [CurPartyMon], a ; $d109 call Functionf30d call Functionf2d1 call Functionf1db ld a, $f5 call Functionf24a call Functiona36 .asm_f413 ld a, b inc a ld [$d0d8], a ret ; known jump sources: f3e4 (3:73e4), f448 (3:7448) Functionf419: ; f419 (3:7419) push bc ld a, $1 ld [PartyMenuActionText], a ; $d141 call Functionf21c pop bc jr c, .asm_f43e ld a, [$d0d8] dec a ld c, a ld a, b cp c jr z, .asm_f440 ld a, c ld [CurPartyMon], a ; $d109 call Functionf30d jr z, .asm_f440 call Functionf31b jr nc, .asm_f440 xor a ret .asm_f43e scf ret .asm_f440 push bc ld hl, $744a call Function1d67 pop bc jr Functionf419 ; f44a (3:744a) UnknownText_0xf44a: ; 0xf44a ; That can't be used on this #MON. text_jump UnknownText_0x1c5bac db "@" ; 0xf44f EscapeRope: ; f44f xor a ld [$d0ec], a callba Functioncb95 ld a, [$d0ec] cp 1 call z, Functionf795 ret ; f462 SuperRepel: ; f462 ld b, 200 jr Function_0xf46c ; f466 MaxRepel: ; f466 ld b, 250 jr Function_0xf46c ; f466 Repel: ; f46a ld b, 100 ; f46c Function_0xf46c: ; f46c ld a, [$dca1] and a ld hl, UnknownText_0xf47d jp nz, PrintText ld a, b ld [$dca1], a jp Functionf789 ; f47d UnknownText_0xf47d: ; 0xf47d ; The REPEL used earlier is still in effect. text_jump UnknownText_0x1c5bcd db "@" ; 0xf482 XAccuracy: ; f482 ld hl, PlayerSubStatus4 bit 0, [hl] jp nz, Functionf7ca set 0, [hl] jp Functionf789 ; f48f PokeDoll: ; f48f ld a, [IsInBattle] dec a jr nz, .asm_f4a6 inc a ld [$d232], a ld a, [$d0ee] and $c0 or $2 ld [$d0ee], a jp Functionf789 .asm_f4a6 xor a ld [$d0ec], a ret ; f4ab GuardSpec: ; f4ab ld hl, PlayerSubStatus4 bit 1, [hl] jp nz, Functionf7ca set 1, [hl] jp Functionf789 ; f4b8 DireHit: ; f4b8 ld hl, PlayerSubStatus4 bit 2, [hl] jp nz, Functionf7ca set 2, [hl] jp Functionf789 ; f4c5 XAttack: XDefend: XSpeed: XSpecial: ; f4c5 call Functionf789 ld a, [CurItem] ld hl, Tablef504 .asm_f4ce cp [hl] jr z, .asm_f4d5 inc hl inc hl jr .asm_f4ce .asm_f4d5 inc hl ld b, [hl] xor a ld [hBattleTurn], a ld [AttackMissed], a ld [$c70d], a callba Function0x361ef call WaitSFX callba BattleCommand8c callba BattleCommand8e ld a, [CurBattleMon] ld [CurPartyMon], a ld c, $3 callba ChangeHappiness ret ; f504 Tablef504: ; f504 db X_ATTACK, 0 db X_DEFEND, 1 db X_SPEED, 2 db X_SPECIAL, 3 ; f50c Item38: ; f50c ld a, [IsInBattle] and a jr nz, .asm_f512 .asm_f512 xor a ld [$d002], a ld b, $f8 ld hl, PartyMon1Status call .asm_f554 ld a, [IsInBattle] cp $1 jr z, .asm_f52b ld hl, OTPartyMon1Status call .asm_f554 .asm_f52b ld hl, BattleMonStatus ld a, [hl] and b ld [hl], a ld hl, EnemyMonStatus ld a, [hl] and b ld [hl], a ld a, [$d002] and a ld hl, UnknownText_0xf56c jp z, PrintText ld hl, UnknownText_0xf576 call PrintText ld a, [Danger] and $80 jr nz, .asm_f54e .asm_f54e ld hl, UnknownText_0xf571 jp PrintText .asm_f554 ld de, $0030 ld c, $6 .asm_f559 ld a, [hl] push af and $7 jr z, .asm_f564 ld a, $1 ld [$d002], a .asm_f564 pop af and b ld [hl], a add hl, de dec c jr nz, .asm_f559 ret ; f56c UnknownText_0xf56c: ; 0xf56c ; Played the # FLUTE. Now, that's a catchy tune! text_jump UnknownText_0x1c5bf9 db "@" ; 0xf571 UnknownText_0xf571: ; 0xf571 ; All sleeping #MON woke up. text_jump UnknownText_0x1c5c28 db "@" ; 0xf576 UnknownText_0xf576: ; 0xf576 ; played the # FLUTE.@ @ text_jump UnknownText_0x1c5c44 start_asm ; 0xf57b Function_0xf57b: ; f57b ld a, [IsInBattle] and a jr nz, .asm_f58c push de ld de, SFX_POKEFLUTE call WaitPlaySFX call WaitSFX pop de .asm_f58c jp Function13e0 ; f58f BlueCard: ; f58f ld hl, .bluecardtext jp Function2012 .bluecardtext text_jump UnknownText_0x1c5c5e db "@" ; f59a CoinCase: ; f59a ld hl, .coincasetext jp Function2012 .coincasetext text_jump UnknownText_0x1c5c7b db "@" ; f5a5 OldRod: ; f5a5 ld e, $0 jr Function_0xf5b1 ; f5a9 GoodRod: ; f5a9 ld e, $1 jr Function_0xf5b1 ; f5ad SuperRod: ; f5ad ld e, $2 jr Function_0xf5b1 ; f5b1 Function_0xf5b1: ; f5b1 callba Functioncf8e ret ; f5b8 Itemfinder: ; f5b8 callba Function12580 ret ; f5bf MaxElixer: PpUp: Ether: MaxEther: Elixer: Mysteryberry: ; f5bf ld a, [CurItem] ld [$d002], a .asm_f5c5 ld b, $1 call Functionf1f9 jp c, Functionf6e0 .asm_f5cd ld a, [$d002] cp MAX_ELIXER jp z, Functionf6af cp ELIXER jp z, Functionf6af ld hl, UnknownText_0xf725 ld a, [$d002] cp PP_UP jr z, .asm_f5e7 ld hl, UnknownText_0xf72a .asm_f5e7 call PrintText ld a, [CurMoveNum] push af xor a ld [CurMoveNum], a ld a, $2 ld [$d235], a callba Function3e4bc pop bc ld a, b ld [CurMoveNum], a jr nz, .asm_f5c5 ld hl, PartyMon1Moves ld bc, PartyMon2 - PartyMon1 call Functionf963 push hl ld a, [hl] ld [$d265], a call GetMoveName call CopyName1 pop hl ld a, [$d002] cp PP_UP jp nz, Functionf6a7 ld a, [hl] cp $a6 jr z, .asm_f62f ld bc, $0015 add hl, bc ld a, [hl] cp $c0 jr c, .asm_f637 .asm_f62f ld hl, UnknownText_0xf72f call PrintText jr .asm_f5cd .asm_f637 ld a, [hl] add $40 ld [hl], a ld a, $1 ld [$d265], a call Functionf84c call Functionf780 ld hl, UnknownText_0xf734 call PrintText Functionf64c: ; f64c call ClearPalettes jp Functionf795 ; f652 Functionf652: ; f652 ld a, [IsInBattle] and a jr z, .asm_f66c ld a, [CurPartyMon] ld b, a ld a, [CurBattleMon] cp b jr nz, .asm_f66c ld a, [PlayerSubStatus5] bit 3, a jr nz, .asm_f66c call .asm_f677 .asm_f66c call Functionf780 ld hl, UnknownText_0xf739 call PrintText jr Functionf64c .asm_f677 ld a, [CurPartyMon] ld hl, PartyMon1Move1 ld bc, $0030 call AddNTimes ld de, BattleMonMove1 ld b, $4 .asm_f688 ld a, [de] and a jr z, .asm_f6a6 cp [hl] jr nz, .asm_f6a1 push hl push de push bc inc de inc de inc de inc de inc de inc de ld bc, $0015 add hl, bc ld a, [hl] ld [de], a pop bc pop de pop hl .asm_f6a1 inc hl inc de dec b jr nz, .asm_f688 .asm_f6a6 ret ; f6a7 Functionf6a7: ; f6a7 call Functionf6e8 jr nz, Functionf652 jp Functionf6dd ; f6af Functionf6af: ; f6af xor a ld hl, $cfa9 ld [hli], a ld [hl], a ld b, $4 .asm_f6b7 push bc ld hl, PartyMon1Move1 ld bc, $0030 call Functionf963 ld a, [hl] and a jr z, .asm_f6ce call Functionf6e8 jr z, .asm_f6ce ld hl, $cfaa inc [hl] .asm_f6ce ld hl, $cfa9 inc [hl] pop bc dec b jr nz, .asm_f6b7 ld a, [$cfaa] and a jp nz, Functionf652 Functionf6dd: ; f6dd call Functionf7f2 Functionf6e0: ; f6e0 call ClearPalettes xor a ld [$d0ec], a ret ; f6e8 Functionf6e8: ; f6e8 xor a ld [MonType], a call Functionf8ec ld hl, PartyMon1PP ld bc, $0030 call Functionf963 ld a, [$d265] ld b, a ld a, [hl] and $3f cp b jr nc, .asm_f723 ld a, [$d002] cp MAX_ELIXER jr z, .asm_f71d cp MAX_ETHER jr z, .asm_f71d ld c, 5 cp MYSTERYBERRY jr z, .asm_f715 ld c, 10 .asm_f715 ld a, [hl] and $3f add c cp b jr nc, .asm_f71d ld b, a .asm_f71d ld a, [hl] and $c0 or b ld [hl], a ret .asm_f723 xor a ret ; f725 UnknownText_0xf725: ; 0xf725 ; Raise the PP of which move? text_jump UnknownText_0x1c5c8a db "@" ; 0xf72a UnknownText_0xf72a: ; 0xf72a ; Restore the PP of which move? text_jump UnknownText_0x1c5ca7 db "@" ; 0xf72f UnknownText_0xf72f: ; 0xf72f ; 's PP is maxed out. text_jump UnknownText_0x1c5cc6 db "@" ; 0xf734 UnknownText_0xf734: ; 0xf734 ; 's PP increased. text_jump UnknownText_0x1c5cdd db "@" ; 0xf739 UnknownText_0xf739: ; 0xf739 ; PP was restored. text_jump UnknownText_0x1c5cf1 db "@" ; 0xf73e Squirtbottle: ; f73e callba _Squirtbottle ret ; f745 CardKey: ; f745 callba _CardKey ret ; f74c BasementKey: ; f74c callba _BasementKey ret ; f753 SacredAsh: ; f753 callba _SacredAsh ld a, [$d0ec] cp $1 ret nz call Functionf795 ret ; f763 NormalBox: ; f763 ld c, $2c jr Function_0xf769 ; f767 GorgeousBox: ; f767 ld c, $2b ; f769 Function_0xf769: ; f769 callba Function26f02 ld hl, UnknownText_0xf778 call PrintText jp Functionf795 ; f778 UnknownText_0xf778: ; 0xf778 text_jump UnknownText_0x1c5d03 db "@" ; 0xf77d Brightpowder: Item19: LuckyPunch: MetalPowder: Nugget: Item2D: Item32: ExpShare: SilverLeaf: RedScale: Secretpotion: SSTicket: MysteryEgg: ClearBell: SilverWing: QuickClaw: GoldLeaf: SoftSand: SharpBeak: PoisonBarb: KingsRock: RedApricorn: Tinymushroom: BigMushroom: Silverpowder: BluApricorn: Item5A: AmuletCoin: YlwApricorn: GrnApricorn: CleanseTag: MysticWater: Twistedspoon: WhtApricorn: Blackbelt: BlkApricorn: Item64: PnkApricorn: Blackglasses: Slowpoketail: PinkBow: Stick: SmokeBall: Nevermeltice: Magnet: Pearl: BigPearl: Everstone: SpellTag: GsBall: MiracleSeed: ThickClub: FocusBand: Item78: HardStone: LuckyEgg: MachinePart: EggTicket: LostItem: Stardust: StarPiece: Pass: Item87: Item88: Item89: Charcoal: ScopeLens: Item8D: Item8E: MetalCoat: DragonFang: Item91: Leftovers: Item93: Item94: Item95: DragonScale: BerserkGene: Item99: Item9A: Item9B: FlowerMail: ItemA2: LightBall: PolkadotBow: ItemAB: UpGrade: ItemB0: RainbowWing: ItemB3: ; f77d jp Functionf7ed ; f780