summaryrefslogtreecommitdiff
path: root/items
diff options
context:
space:
mode:
authorentrpntr <entrpntr@gmail.com>2020-03-17 16:20:00 -0400
committerentrpntr <entrpntr@gmail.com>2020-03-17 16:20:00 -0400
commite67786a7a26ae7531301e928870b204043fb8a6a (patch)
tree579c9e876fa2cd46c13ecceed0e8f0358e347131 /items
parentc248b30aa7487b51a9182a833b1db29f14a7267c (diff)
Cleanup of files for banks $02 and $03 for main.asm.
Diffstat (limited to 'items')
-rwxr-xr-xitems/item_effects.asm2897
1 files changed, 0 insertions, 2897 deletions
diff --git a/items/item_effects.asm b/items/item_effects.asm
deleted file mode 100755
index 274b8468..00000000
--- a/items/item_effects.asm
+++ /dev/null
@@ -1,2897 +0,0 @@
-_DoItemEffect:: ; e7a6 (3:67a6)
- ld a, [wCurItem]
- ld [wd151], a
- call GetItemName
- call CopyName1
- ld a, $1
- ld [wFieldMoveSucceeded], a
- ld a, [wCurItem]
- dec a
- ld hl, .ItemEffects
- rst JumpTable
- ret
-
-.ItemEffects
- dw MasterBall
- dw UltraBall
- dw Brightpowder
- dw GreatBall
- dw PokeBall
- dw TownMap
- dw Bicycle
- dw MoonStone
- dw Antidote
- dw BurnHeal
- dw IceHeal
- dw Awakening
- dw ParlyzHeal
- dw FullRestore
- dw MaxPotion
- dw HyperPotion
- dw SuperPotion
- dw Potion
- dw EscapeRope
- dw Repel
- dw MaxElixer
- dw FireStone
- dw Thunderstone
- dw WaterStone
- dw Item19
- dw HPUp
- dw Protein
- dw Iron
- dw Carbos
- dw LuckyPunch
- dw Calcium
- dw RareCandy
- dw XAccuracy
- dw LeafStone
- dw MetalPowder
- dw Nugget
- dw PokeDoll
- dw FullHeal
- dw Revive
- dw MaxRevive
- dw GuardSpec
- dw SuperRepel
- dw MaxRepel
- dw DireHit
- dw Item2D
- dw FreshWater
- dw SodaPop
- dw Lemonade
- dw XAttack
- dw Item32
- dw XDefend
- dw XSpeed
- dw XSpecial
- dw CoinCase
- dw ItemfinderEffect
- dw PokeFlute
- dw ExpShare
- dw OldRod
- dw GoodRod
- dw SilverLeaf
- dw SuperRod
- dw PPUp
- dw Ether
- dw MaxEther
- dw Elixer
- dw RedScale
- dw Secretpotion
- dw SSTicket
- dw MysteryEgg
- dw Item47
- dw SilverWing
- dw MoomooMilk
- dw QuickClaw
- dw Psncureberry
- dw GoldLeaf
- dw SoftSand
- dw SharpBeak
- dw Przcureberry
- dw BurntBerry
- dw IceBerry
- dw PoisonBarb
- dw KingsRock
- dw BitterBerry
- dw MintBerry
- dw RedApricorn
- dw Tinymushroom
- dw BigMushroom
- dw Silverpowder
- dw BluApricorn
- dw Item5A
- dw AmuletCoin
- dw YlwApricorn
- dw GrnApricorn
- dw CleanseTag
- dw MysticWater
- dw Twistedspoon
- dw WhtApricorn
- dw Blackbelt
- dw BlkApricorn
- dw Item64
- dw PnkApricorn
- dw Blackglasses
- dw Slowpoketail
- dw PinkBow
- dw Stick
- dw SmokeBall
- dw Nevermeltice
- dw Magnet
- dw Miracleberry
- dw Pearl
- dw BigPearl
- dw Everstone
- dw SpellTag
- dw Ragecandybar
- dw Item73
- dw Item74
- dw MiracleSeed
- dw ThickClub
- dw FocusBand
- dw Item78
- dw Energypowder
- dw EnergyRoot
- dw HealPowder
- dw RevivalHerb
- dw HardStone
- dw LuckyEgg
- dw CardKey
- dw MachinePart
- dw Item81
- dw LostItem
- dw Stardust
- dw StarPiece
- dw BasementKey
- dw Pass
- dw Item87
- dw Item88
- dw Item89
- dw Charcoal
- dw BerryJuice
- dw ScopeLens
- dw Item8D
- dw Item8E
- dw MetalCoat
- dw DragonFang
- dw Item91
- dw Leftovers
- dw Item93
- dw Item94
- dw Item95
- dw Mysteryberry
- dw DragonScale
- dw BerserkGene
- dw Item99
- dw Item9A
- dw Item9B
- dw SacredAsh
- dw HeavyBall
- dw FlowerMail
- dw LevelBall
- dw LureBall
- dw FastBall
- dw ItemA2
- dw LightBall
- dw FriendBall
- dw MoonBall
- dw LoveBall
- dw NormalBox
- dw GorgeousBox
- dw SunStone
- dw PolkadotBow
- dw ItemAB
- dw UpGrade
- dw Berry
- dw GoldBerry
- dw Squirtbottle
- dw ItemB0
- dw ParkBall
- dw RainbowWing
- dw ItemB3
-
-FastBall: ; e926
-FriendBall: ; e926
-GreatBall: ; e926
-HeavyBall: ; e926
-LevelBall: ; e926
-LoveBall: ; e926
-LureBall: ; e926
-MasterBall: ; e926
-MoonBall: ; e926
-ParkBall: ; e926
-PokeBall: ; e926
-UltraBall: ; e926
- ld a, [wBattleMode]
- dec a
- jp nz, Functionf7e7
- ld a, [wPartyCount]
- cp PARTY_LENGTH
- jr nz, .room_in_party_or_pc
- ld a, $1
- call OpenSRAM
- ld a, [$ad6c]
- cp $14
- call CloseSRAM
- jp z, FailToUseBall
-.room_in_party_or_pc
- xor a
- ld [wWildMon], a
- ld a, [wCurItem]
- cp PARK_BALL
- call nz, ReturnToBattle_UseBall
- ld hl, wOptions
- res NO_TEXT_SCROLL, [hl]
- ld hl, Text_UsedItem ; $7884
- call PrintText
- ld a, [wd114]
- ld b, a
- ld a, [wBattleType]
- cp BATTLETYPE_TUTORIAL
- jp z, .catch_without_fail
- ld a, [wCurItem]
- cp MASTER_BALL
- jp z, .catch_without_fail
- ld a, [wCurItem]
- ld c, a
- ld hl, BallMultiplierFunctionTable ; $6c73
-.get_multiplier_loop
- ld a, [hli]
- cp $ff
- jr z, .skip_or_return_from_ball_fn
- cp c
- jr z, .call_ball_function
- inc hl
- inc hl
- jr .get_multiplier_loop
-
-.call_ball_function
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, .skip_or_return_from_ball_fn
- push de
- jp hl
-
-.skip_or_return_from_ball_fn
- ld a, [wCurItem]
- cp LEVEL_BALL
- ld a, b
- jp z, .skip_hp_calc
- ld a, b
- ldh [hPrintNum4], a
- ld hl, wEnemyMonHP
- ld b, [hl]
- inc hl
- ld c, [hl]
- inc hl
- ld d, [hl]
- inc hl
- ld e, [hl]
-; (3 * MaxHP - 2 * CurHP) / (3 * MaxHP) * level
- sla c
- rl b
- ld h, d
- ld l, e
- add hl, de
- add hl, de
- ld d, h
- ld e, l
-; This routine is buggy. The intention is to get de, the Max HP score,
-; to be an 8-bit number. To do this, we divide both bc and de by 4.
-; It only does this division once, and doesn't check to make sure that
-; e is not zero. In addition to passing along a divide-by-zero error,
-; this could also cause an unusually small denominator to be passed,
-; sending the resulting catch rate through the floor.
- ld a, d
- and a
- jr z, .okay_hp_div
- srl d
- rr e
- srl d
- rr e
- srl b
- rr c
- srl b
- rr c
- ld a, c
- and a
- jr nz, .okay_hp_div
- ld c, $1
-.okay_hp_div
- ld b, e
-
- push bc
- ld a, b
- sub c
- ldh [hMultiplier], a
- xor a
- ldh [hDividend + 0], a
- ldh [hMultiplicand + 0], a
- ldh [hMultiplicand + 1], a
- call Multiply
- pop bc
-
- ld a, b
- ldh [hDivisor], a
- ld b, $4
- call Divide
-
- ldh a, [hQuotient + 2]
- and a
- jr nz, .statuscheck
- ld a, 1
-.statuscheck
-; This routine is buggy. It was intended that SLP and FRZ provide a higher
-; catch rate than BRN/PSN/PAR, which in turn provide a higher catch rate than
-; no status effect at all. But instead, it makes BRN/PSN/PAR provide no
-; benefit.
-; Uncomment the line below to fix this.
- ld b, a
- ld a, [wEnemyMonStatus]
- and 1 << FRZ | SLP
- ld c, $a
- jr nz, .add_status
- ; ld a, [wEnemyMonStatus]
- and a
- ld c, $5
- jr nz, .add_status
- ld c, $0
-.add_status
- ld a, b
- add c
- jr nc, .max_catch_rate
- ld a, $ff
-.max_catch_rate
- ld d, a
- push de
-
- ; BUG: farcall overwrites a,
- ; and GetItemHeldEffect takes b anyway.
-
- ; This is probably the reason
- ; the HELD_CATCH_CHANCE effect
- ; is never used.
-
- ; Uncomment the line below to fix.
-
- ld a, [wBattleMonItem]
- ; ld b, a
- farcall GetItemHeldEffect ; d:7e9b
- ld a, b
- cp HELD_CATCH_CHANCE
- pop de
- ld a, d
- jr nz, .skip_hp_calc
- add c
- jr nc, .skip_hp_calc
- ld a, $ff
-.skip_hp_calc
- ld b, a
- ld [wCurHPAnimMaxHP], a
- call Random
- cp b
- ld a, $0
- jr z, .catch_without_fail
- jr nc, .asm_ea23
-.catch_without_fail
- ld a, [wEnemyMonSpecies]
-.asm_ea23
- ld [wWildMon], a
- ld c, 20
- call DelayFrames
- ld a, [wCurItem]
- cp POKE_BALL + 1
- jr c, .asm_ea34
- ld a, $5
-.asm_ea34
- ld [wcb67], a
- ld de, ANIM_THROW_POKE_BALL
- ld a, e
- ld [wcf3e], a
- ld a, d
- ld [wcf3f], a
- xor a
- ldh [hBattleTurn], a
- ld [wBuffer2], a
- ld [wcf46], a
- predef PlayBattleAnim
- ld a, [wWildMon]
- and a
- jr nz, .caught
- ld a, [wBuffer2]
- cp $1
- ld hl, Text_ThePokemonBrokeFree ; $6e09
- jp z, .break_free
- cp $2
- ld hl, Text_AppearedToBeCaught ; $6e0e
- jp z, .break_free
- cp $3
- ld hl, Text_AarghAlmostHadIt ; $6e13
- jp z, .break_free
- cp $4
- ld hl, Text_ShootItWasSoCloseToo ; $6e18
- jp z, .break_free
-.caught
- ld hl, wEnemyMonStatus
- ld a, [hli]
- push af
- inc hl
- ld a, [hli]
- push af
- ld a, [hl]
- push af
- push hl
- ld hl, wEnemyMonItem
- ld a, [hl]
- push af
- push hl
- ld hl, wEnemySubStatus5
- ld a, [hl]
- push af
- set SUBSTATUS_TRANSFORMED, [hl]
- bit SUBSTATUS_TRANSFORMED, a
- jr nz, .ditto
- jr .not_ditto
-
-.ditto
- ld a, DITTO
- ld [wTempEnemyMonSpecies], a
- jr .load_data
-
-.not_ditto
- set SUBSTATUS_TRANSFORMED, [hl]
- ld hl, wcbd0
- ld a, [wEnemyMonDVs]
- ld [hli], a
- ld a, [wEnemyMonMovesEnd + 1]
- ld [hl], a
-.load_data
- ld a, [wTempEnemyMonSpecies]
- ld [wCurPartySpecies], a
- ld a, [wEnemyMonLevel]
- ld [wCurPartyLevel], a
- farcall LoadEnemyMon
- pop af
- ld [wEnemySubStatus5], 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, wEnemySubStatus5
- bit SUBSTATUS_TRANSFORMED, [hl]
- jr nz, .transformed
- ld hl, wWildMonMoves
- ld de, wEnemyMonMoves
- ld bc, NUM_MOVES
- call CopyBytes
- ld hl, wWildMonPP
- ld de, wEnemyMonPP
- ld bc, NUM_MOVES
- call CopyBytes
-.transformed
- ld a, [wEnemyMonSpecies]
- ld [wWildMon], a
- ld [wCurPartySpecies], a
- ld [wd151], a
- ld a, [wBattleType]
- cp BATTLETYPE_TUTORIAL
- jp z, .finish_tutorial
- ld hl, Text_GotchaMonWasCaught ; $6e1d
- call PrintText
- call ClearSprites
- ld a, [wd151]
- dec a
- call CheckCaughtMon
- ld a, c
- push af
- ld a, [wd151]
- dec a
- call SetSeenAndCaughtMon
- pop af
- and a
- jr nz, .skip_dex
- call CheckReceivedDex
- jr z, .skip_dex
- ld hl, Text_MonNewlyAddedToPokedex ; $6e44
- call PrintText
- call ClearSprites
- ld a, [wEnemyMonSpecies]
- ld [wd151], a
- predef NewPokedexEntry
-.skip_dex
- ld a, [wBattleType]
- cp BATTLETYPE_CONTEST
- jp z, .catch_bug_contest_mon
- ld a, [wPartyCount]
- cp PARTY_LENGTH
- jr z, .send_mon_to_pc
- xor a
- ld [wMonType], a
- call ClearSprites
- predef TryAddMonToParty
- ld a, [wCurItem]
- cp FRIEND_BALL
- jr nz, .skip_party_mon_friend_ball
- ld a, [wPartyCount]
- dec a
- ld hl, wPartyMon1Happiness
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld a, FRIEND_BALL_HAPPINESS
- ld [hl], a
-.skip_party_mon_friend_ball
- ld hl, Text_AskNicknameNewlyCaughtMon ; $6e49
- call PrintText
- ld a, [wCurPartySpecies]
- ld [wd151], a
- call GetPokemonName
- call YesNoBox
- jp c, .end_ball_function
- ld a, [wPartyCount]
- dec a
- ld [wCurPartyMon], a
- ld hl, wPartyMon1Nickname
- ld bc, MON_NAME_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- push de
- xor a
- ld [wMonType], a
- ld b, $0
- farcall NamingScreen
- call RotateThreePalettesRight
- call Functiond9e
- pop hl
- ld de, wStringBuffer1
- call InitName
- jp .end_ball_function
-
-.send_mon_to_pc
- call ClearSprites
- predef SendMonIntoBox
- ld a, BANK(sBoxCount)
- call OpenSRAM
- ld a, [sBoxCount]
- cp MONS_PER_BOX
- jr nz, .not_full_yet
- ld hl, wBattleResult
- set 7, [hl]
-.not_full_yet
- ld a, [wCurItem]
- cp FRIEND_BALL
- jr nz, .skip_box_mon_friend_ball
- ld a, FRIEND_BALL_HAPPINESS
- ld [sBoxMon1Happiness], a
-.skip_box_mon_friend_ball
- call CloseSRAM
- ld hl, Text_AskNicknameNewlyCaughtMon ; $6e49
- call PrintText
- ld a, [wCurPartySpecies]
- ld [wd151], a
- call GetPokemonName
- call YesNoBox
- jr c, .init_name_in_sram
- xor a
- ld [wCurPartyMon], a
- ld a, $2
- ld [wMonType], a
- ld de, wMonOrItemNameBuffer
- ld b, $0
- farcall NamingScreen
- ld a, $1
- call OpenSRAM
- ld hl, wMonOrItemNameBuffer
- ld de, sBoxMonNicknames
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- ld hl, sBoxMonNicknames
- ld de, wStringBuffer1
- call InitName
- call CloseSRAM
-.init_name_in_sram
- ld a, $1
- call OpenSRAM
- ld hl, sBoxMonNicknames
- ld de, wMonOrItemNameBuffer
- ld bc, MON_NAME_LENGTH
- call CopyBytes
- call CloseSRAM
- ld hl, Text_SentToBillsPC ; $6e3f
- call PrintText
- call RotateThreePalettesRight
- call Functiond9e
- jr .end_ball_function
-
-.catch_bug_contest_mon
- farcall BugContest_SetCaughtContestMon ; same bank
- jr .end_ball_function
-
-.finish_tutorial
- ld hl, Text_GotchaMonWasCaught ; $6e1d
-.break_free
- call PrintText
- call ClearSprites
-.end_ball_function
- ld a, [wBattleType]
- cp BATTLETYPE_TUTORIAL
- ret z
- cp BATTLETYPE_DEBUG
- ret z
- cp BATTLETYPE_CONTEST
- jr z, .used_park_ball
- ld a, [wWildMon]
- and a
- jr z, .toss
- call ClearBGPalettes
- call ClearTilemap
-.toss
- ld hl, wNumItems
- inc a
- ld [wItemQuantityChangeBuffer], a
- jp TossItem
-
-.used_park_ball
- ld hl, wParkBallsRemaining
- dec [hl]
- ret
-
-BallMultiplierFunctionTable: ; ec73
- dbw ULTRA_BALL, UltraBallMultiplier
- dbw GREAT_BALL, GreatBallMultiplier
- dbw SAFARI_BALL, SafariBallMultiplier ; Safari Ball, leftover from RBY
- dbw HEAVY_BALL, HeavyBallMultiplier
- dbw LEVEL_BALL, LevelBallMultiplier
- dbw LURE_BALL, LureBallMultiplier
- dbw FAST_BALL, FastBallMultiplier
- dbw MOON_BALL, MoonBallMultiplier
- dbw LOVE_BALL, LoveBallMultiplier
- dbw PARK_BALL, ParkBallMultiplier
- db $ff
-
-UltraBallMultiplier:
- sla b
- ret nc
- ld b, $ff
- ret
-
-GreatBallMultiplier:
-SafariBallMultiplier:
-ParkBallMultiplier:
- ld a, b
- srl a
- add b
- ld b, a
- ret nc
- ld b, $ff
- ret
-
-HeavyBallMultiplier:
- ld a, [wEnemyMon]
- dec a
- ld hl, PokedexDataPointerTable
- ld e, a
- ld d, $0
- add hl, de
- add hl, de
- rlca
- rlca
- and $3
- add BANK("Pokedex Entries 001-064")
- ld d, a
- ld a, BANK(PokedexDataPointerTable)
- call GetFarHalfword
-.loop
- ld a, d
- call GetFarByte
- inc hl
- cp "@"
- jr nz, .loop
- ld a, d
- 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 .sub_bc
- srl b
- rr c
- call .sub_bc
- ld a, h
- pop bc
- jr .compare
-
-.sub_bc
- push bc
- ld a, b
- cpl
- ld b, a
- ld a, c
- cpl
- ld c, a
- inc bc
- add hl, bc
- pop bc
- ret
-
-.compare
- ld c, a
- cp 1024 >> 8 ; 102.4 kg
- jr c, .lightmon
- ld hl, .WeightsTable ; $6d18
-.lookup
- ld a, c
- cp [hl]
- jr c, .heavymon
- inc hl
- inc hl
- jr .lookup
-
-.heavymon
- inc hl
- ld a, b
- add [hl]
- ld b, a
- ret nc
- ld b, $ff
- ret
-
-.lightmon
- ld a, b
- sub 20
- ld b, a
- ret nc
- ld b, $1
- ret
-
-.WeightsTable
-; weight factor, boost
- db 2048 >> 8, 0
- db 3072 >> 8, 20
- db 4096 >> 8, 30
- db 65280 >> 8, 40
-
-LureBallMultiplier:
- ld a, [wBattleType]
- cp BATTLETYPE_FISH
- ret nz
- ld a, b
- add a
- jr c, .asm_ed2d
- add b
- jr nc, .asm_ed2f
-.asm_ed2d
- ld a, $ff
-.asm_ed2f
- ld b, a
- ret
-
-MoonBallMultiplier:
-; This function is buggy.
-; Intent: multiply catch rate by 4 if mon evolves with moon stone
-; Reality: no boost
- push bc
- ld a, [wTempEnemyMonSpecies]
- dec a
- ld c, a
- ld b, $0
- ld hl, EvosAttacksPointers ; $67bd
- add hl, bc
- add hl, bc
- ld a, BANK(EvosAttacksPointers) ; $10
- call GetFarHalfword
- pop bc
- push bc
- ld a, BANK(EvosAttacksPointers) ; $10
- call GetFarByte
- cp EVOLVE_ITEM
- pop bc
- ret nz
- inc hl
- inc hl
- inc hl
-; Moon Stone's constant from Pokémon Red is used.
-; No Pokémon evolve with Burn Heal,
-; so Moon Balls always have a catch rate of 1×.
- push bc
- ld a, BANK(EvosAttacksPointers) ; $10
- call GetFarByte
- cp MOON_STONE_RED ; BURN_HEAL
- pop bc
- ret nz
- sla b
- jr c, .max
- sla b
- jr nc, .done
-.max
- ld b, $ff
-.done
- ret
-
-LoveBallMultiplier:
-; This function is buggy.
-; Intent: multiply catch rate by 8 if mons are of same species, different sex
-; Reality: multiply catch rate by 8 if mons are of same species, same sex
- ld a, [wTempEnemyMonSpecies]
- ld c, a
- ld a, [wd0ee]
- cp c
- ret nz
- push bc
- ld a, [wd0ee]
- ld [wCurPartySpecies], a
- xor a
- ld [wMonType], a
- ld a, [wCurBattleMon]
- ld [wCurPartyMon], a
- farcall GetGender ; 14:52f1
- jr c, .asm_edba
- ld d, $0
- jr nz, .asm_ed8d
- inc d
-.asm_ed8d
- push de
- ld a, [wTempEnemyMonSpecies]
- ld [wCurPartySpecies], a
- ld a, $4
- ld [wMonType], a
- farcall GetGender ; 14:52f1
- jr c, .asm_edb9
- ld d, $0
- jr nz, .asm_eda6
- inc d
-.asm_eda6
- ld a, d
- pop de
- cp d
- pop bc
- ret nz ; for the intended effect, this should be “ret z”
- sla b
- jr c, .asm_edb6
- sla b
- jr c, .asm_edb6
- sla b
- ret nc
-.asm_edb6
- ld b, $ff
- ret
-
-.asm_edb9
- pop de
-.asm_edba
- pop bc
- ret
-
-FastBallMultiplier:
-; This function is buggy.
-; Intent: multiply catch rate by 4 if enemy mon is in one of the three
-; FleeMons tables.
-; Reality: multiply catch rate by 4 if enemy mon is one of the first three in
-; the first FleeMons table.
- ld a, [wTempEnemyMonSpecies]
- ld c, a
- ld hl, FleeMons
- ld d, $3
-.asm_edc5
- ld a, BANK(FleeMons)
- call GetFarByte
- inc hl
- cp $ff
- jr z, .asm_eddc
- cp c
- jr nz, .asm_eddc ; for the intended effect, this should be “jr nz, .loop”
- sla b
- jr c, .asm_edd9
- sla b
- ret nc
-.asm_edd9
- ld b, $ff
- ret
-
-.asm_eddc
- dec d
- jr nz, .asm_edc5
- ret
-
-LevelBallMultiplier:
-; multiply catch rate by 8 if player mon level / 4 > enemy mon level
-; multiply catch rate by 4 if player mon level / 2 > enemy mon level
-; multiply catch rate by 2 if player mon level > enemy mon level
- ld a, [wBattleMonLevel]
- ld c, a
- ld a, [wEnemyMonLevel]
- cp c
- ret nc
- sla b
- jr c, .asm_edfc
- srl c
- cp c
- ret nc
- sla b
- jr c, .asm_edfc
- srl c
- cp c
- ret nc
- sla b
- ret nc
-.asm_edfc
- ld b, $ff
- ret
-
-; These two texts were carried over from gen 1.
-; They are not used in gen 2, and are dummied out.
-
-Text_ThisMonCantBeCaught:
- text_far Text_ThisMonCantBeCaught_
- db "@"
-
-Text_YouMissedThePokemon:
- text_far Text_YouMissedThePokemon_
- db "@"
-
-Text_ThePokemonBrokeFree:
- text_far Text_ThePokemonBrokeFree_
- db "@"
-
-Text_AppearedToBeCaught:
- text_far Text_AppearedToBeCaught_
- db "@"
-
-Text_AarghAlmostHadIt:
- text_far Text_AarghAlmostHadIt_
- db "@"
-
-Text_ShootItWasSoCloseToo:
- text_far Text_ShootItWasSoCloseToo_
- db "@"
-
-Text_GotchaMonWasCaught:
- text_far Text_GotchaMonWasCaught_
- text_asm
- call WaitSFX
- push bc
- ld de, MUSIC_NONE
- call PlayMusic
- call DelayFrame
- ld de, MUSIC_CAPTURE
- call PlayMusic
- pop bc
- ld hl, Text_CaughtMonWaitbutton
- ret
-
-Text_CaughtMonWaitbutton:
- text_far Text_Promptbutton_2
- db "@"
-
-Text_SentToBillsPC:
- text_far Text_SentToBillsPC_
- db "@"
-
-Text_MonNewlyAddedToPokedex:
- text_far Text_MonNewlyAddedToPokedex_
- db "@"
-
-Text_AskNicknameNewlyCaughtMon:
- text_far Text_AskNicknameNewlyCaughtMon_
- db "@"
-
-ReturnToBattle_UseBall: ; ee4e (3:6e4e)
- farcall ReturnToBattle_UseBall_ ; 9:7307
- ret
-
-TownMap: ; ee55 (3:6e55)
- farcall TownMap_ ; 24:5a4f
- ret
-
-Bicycle: ; ee5c
- farcall BicycleFunction ; same bank
- ret
-
-FireStone: ; ee63
-LeafStone: ; ee63
-MoonStone: ; ee63
-SunStone: ; ee63
-Thunderstone: ; ee63
-WaterStone: ; ee63
- ld b, PARTYMENUACTION_EVO_STONE
- call Functionf24f
- jp c, .cancel
- ld a, MON_ITEM
- call GetPartyParamLocation
- ld a, [hl]
- cp EVERSTONE
- jr z, .failed
- ld a, $1
- ld [wd0d2], a
- farcall EvolvePokemon ; 10:61db
- ld a, [wd154]
- and a
- jr z, .failed
- jp Functionf7dc
-
-.failed
- call Functionf839
-.cancel
- xor a
- ld [wFieldMoveSucceeded], a
- ret
-
-
-Calcium: ; ee91
-Carbos: ; ee91
-HPUp: ; ee91
-Iron: ; ee91
-Protein: ; ee91
- ld b, PARTYMENUACTION_HEALING_ITEM
- call Functionf24f
- jp c, Functioneef3
- call Functionef49
- call Functionef2d
- ld a, MON_STAT_EXP
- call GetPartyParamLocation
- add hl, bc
- ld a, [hl]
- cp 100
- jr nc, Functioneed7
- add 10
- ld [hl], a
- call Functioneee0
- call Functionef2d
- ld hl, StatStrings
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, wStringBuffer2
- ld bc, ITEM_NAME_LENGTH
- call CopyBytes
- call Functionf7c7
- ld hl, Text_StatRoseFromVitamin ; $6efa
- call PrintText
- ld c, HAPPINESS_USEDITEM
- farcall ChangeHappiness
- jp Functionf7dc
-
-Functioneed7:
- ld hl, Text_WontHaveAnyEffect ; $7866
- call PrintText
- jp ClearPalettes
-
-Functioneee0: ; eee0 (3:6ee0)
- ld a, MON_MAXHP
- call GetPartyParamLocation
- ld d, h
- ld e, l
- ld a, MON_STAT_EXP - 1
- call GetPartyParamLocation
- ld b, $1
- predef_jump CalcMonStats
-
-Functioneef3: ; eef3 (3:6ef3)
- xor a
- ld [wFieldMoveSucceeded], a
- jp ClearPalettes
-
-Text_StatRoseFromVitamin:
- text_far Text_StatRoseFromVitamin_
- db "@"
-
-StatStrings:
- 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@"
-
-Functionef2d: ; ef2d (3:6f2d)
- ld a, [wCurItem]
- ld hl, StatOffsets
-.asm_ef33
- cp [hl]
- inc hl
- jr z, .asm_ef3a
- inc hl
- jr .asm_ef33
-
-.asm_ef3a
- ld a, [hl]
- ld c, a
- ld b, $0
- ret
-
-StatOffsets:
- db HP_UP, MON_HP_EXP - MON_STAT_EXP
- db PROTEIN, MON_ATK_EXP - MON_STAT_EXP
- db IRON, MON_DEF_EXP - MON_STAT_EXP
- db CARBOS, MON_SPD_EXP - MON_STAT_EXP
- db CALCIUM, MON_SPC_EXP - MON_STAT_EXP
-
-Functionef49: ; ef49 (3:6f49)
- ld a, [wCurPartySpecies]
- ld [wCurSpecies], a
- ld [wd151], a
- ld a, $1f
- call GetPartyParamLocation
- ld a, [hl]
- ld [wCurPartyLevel], a
- call GetBaseData
- ld a, [wCurPartyMon]
- ld hl, wPartyMonNicknames
- call GetNick
- ret
-
-RareCandy: ; ef68 (3:6f68)
- ld b, PARTYMENUACTION_HEALING_ITEM
- call Functionf24f
- jp c, Functioneef3
- call Functionef49
- ld a, MON_LEVEL
- call GetPartyParamLocation
- ld a, [hl]
- cp MAX_LEVEL
- jp nc, Functioneed7
- inc a
- ld [hl], a
- ld [wCurPartyLevel], a
- push de
- ld d, a
- farcall CalcExpAtLevel
- pop de
- ld a, $8
- call GetPartyParamLocation
- ldh a, [hQuotient]
- ld [hli], a
- ldh a, [hPrintNum3]
- ld [hli], a
- ldh a, [hPrintNum4]
- ld [hl], a
- ld a, $24
- call GetPartyParamLocation
- ld a, [hli]
- ld b, a
- ld c, [hl]
- push bc
- call Functioneee0
- 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
- ld c, $1
- farcall ChangeHappiness
- ld a, PARTYMENUTEXT_LEVEL_UP
- call Functionf2a0
- xor a
- ld [wMonType], a
- predef CopyMonToTempMon
- hlcoord 9, 0
- ld b, 10
- ld c, 9
- call Textbox
- hlcoord 11, 1
- ld bc, $4
- predef PrintTempMonStats
- call WaitPressAorB_BlinkCursor
- xor a
- ld [wMonType], a
- ld a, [wCurPartySpecies]
- ld [wd151], a
- predef LearnLevelMoves
- xor a
- ld [wd0d2], a
- farcall EvolvePokemon
- jp Functionf7dc
-
-HealPowder: ; f003 (3:7003)
- ld b, $1
- call Functionf24f
- jp c, Functionf2f4
- call Functionf030
- cp $0
- jr nz, .asm_f01f
- ld c, $f
- farcall ChangeHappiness
- call Functionf81d
- ld a, $0
-.asm_f01f
- jp Functionf0f4
-
-Antidote: ; f022
-Awakening: ; f022
-BurnHeal: ; f022
-BurntBerry: ; f022
-FullHeal: ; f022
-IceBerry: ; f022
-IceHeal: ; f022
-MintBerry: ; f022
-Miracleberry: ; f022
-ParlyzHeal: ; f022
-Przcureberry: ; f022
-Psncureberry: ; f022
- ld b, $1
- call Functionf24f
- jp c, Functionf2f4
-Functionf02a:
- call Functionf030
- jp Functionf0f4
-
-Functionf030: ; f030 (3:7030)
- call Functionf363
- ld a, $1
- ret z
- call Functionf0ae
- ld a, MON_STATUS
- call GetPartyParamLocation
- ld a, [hl]
- and c
- jr nz, .asm_f04a
- call Functionf05f
- ld a, $1
- ret nc
- ld b, PARTYMENUTEXT_HEAL_CONFUSION
-.asm_f04a
- xor a
- ld [hl], a
- ld a, b
- ld [wPartyMenuActionText], a
- call Functionf086
- call Functionf7c7
- call Functionf2cf
- call Functionf7dc
- ld a, $0
- ret
-
-Functionf05f: ; f05f (3:705f)
- call Functionf2fc
- jr nc, .asm_f072
- ld a, [wPlayerSubStatus3]
- bit SUBSTATUS_CONFUSED, a
- jr z, .asm_f072
- ld a, c
- cp $ff
- jr nz, .asm_f072
- scf
- ret
-
-.asm_f072
- and a
- ret
-
-RestoreBattlemonHP:
- call Functionf2fc
- ret nc
- ld a, $22
- call GetPartyParamLocation
- ld a, [hli]
- ld [wBattleMonHP], a
- ld a, [hld]
- ld [wBattleMonHP + 1], a
- ret
-
-Functionf086: ; f086 (3:7086)
- call Functionf2fc
- ret nc
- xor a
- ld [wBattleMonStatus], a
- ld hl, wPlayerSubStatus5
- res 0, [hl]
- ld hl, wPlayerSubStatus1
- res 0, [hl]
- call Functionf0ae
- ld a, c
- cp $ff
- jr nz, .asm_f0a5
- ld hl, wPlayerSubStatus3
- res 7, [hl]
-.asm_f0a5
- push bc
- farcall CalcPlayerStats ; d:66f6
- pop bc
- ret
-
-Functionf0ae: ; f0ae (3:70ae)
- push hl
- ld a, [wCurItem]
- ld hl, .healingactions ; $70c7
- ld bc, $3
-.asm_f0b8
- cp [hl]
- jr z, .asm_f0be
- add hl, bc
- jr .asm_f0b8
-
-.asm_f0be
- inc hl
- ld b, [hl]
- inc hl
- ld a, [hl]
- ld c, a
- cp $ff
- pop hl
- ret
-
-.healingactions
- db ANTIDOTE, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
- db BURN_HEAL, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
- db ICE_HEAL, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
- db AWAKENING, PARTYMENUTEXT_HEAL_SLP, SLP
- db PARLYZ_HEAL, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
- db FULL_HEAL, PARTYMENUTEXT_HEAL_ALL, %11111111
- db FULL_RESTORE, PARTYMENUTEXT_HEAL_ALL, %11111111
- db HEAL_POWDER, PARTYMENUTEXT_HEAL_ALL, %11111111
- db PSNCUREBERRY, PARTYMENUTEXT_HEAL_PSN, 1 << PSN
- db PRZCUREBERRY, PARTYMENUTEXT_HEAL_PAR, 1 << PAR
- db BURNT_BERRY, PARTYMENUTEXT_HEAL_FRZ, 1 << FRZ
- db ICE_BERRY, PARTYMENUTEXT_HEAL_BRN, 1 << BRN
- db MINT_BERRY, PARTYMENUTEXT_HEAL_SLP, SLP
- db MIRACLEBERRY, PARTYMENUTEXT_HEAL_ALL, %11111111
- db -1, 0, 0
-
-Functionf0f4: ; f0f4 (3:70f4)
- ld hl, .Jumptable ; $70f9
- rst JumpTable
- ret
-
-.Jumptable:
- dw Functionf2f8
- dw Functionf2ef
- dw Functionf2f4
-
-RevivalHerb: ; f0ff
- ld b, $1
- call Functionf24f
- jp c, Functionf2f4
- call Functionf12c
- cp $0
- jr nz, .asm_f11b
- ld c, $11
- farcall ChangeHappiness
- call Functionf81d
- ld a, $0
-.asm_f11b
- jp Functionf0f4
-
-MaxRevive: ; f11e
-Revive: ; f11e
- ld b, $1
- call Functionf24f
- jp c, Functionf2f4
- call Functionf12c
- jp Functionf0f4
-
-Functionf12c: ; f12c (3:712c)
- call Functionf363
- ld a, $1
- ret nz
- ld a, [wBattleMode]
- and a
- jr z, .asm_f15a
- ld a, [wCurPartyMon]
- ld c, a
- ld d, $0
- ld hl, wcbda
- ld b, CHECK_FLAG
- predef SmallFarFlagAction
- ld a, c
- and a
- jr z, .asm_f15a
- ld a, [wCurPartyMon]
- ld c, a
- ld hl, wcb42
- ld b, SET_FLAG
- predef SmallFarFlagAction
-.asm_f15a
- xor a
- ld [wLowHealthAlarm], a
- ld a, [wCurItem]
- cp REVIVE
- jr z, .asm_f16a
- call Functionf319
- jr .asm_f16d
-
-.asm_f16a
- call Functionf310
-.asm_f16d
- call Functionf231
- ld a, $f7
- ld [wPartyMenuActionText], a
- call Functionf2cf
- call Functionf7dc
- ld a, $0
- ret
-
-FullRestore: ; f17e (3:717e)
- ld b, $1
- call Functionf24f
- jp c, Functionf2f4
- call Functionf363
- jp z, Functionf2ef
- call CalculateCurHPAnimRemainingHP
- jr c, .asm_f194
- jp Functionf02a
-
-.asm_f194
- call Functionf19a
- jp Functionf0f4
-
-Functionf19a: ; f19a (3:719a)
- xor a
- ld [wLowHealthAlarm], a
- call Functionf319
- ld a, $20
- call GetPartyParamLocation
- xor a
- ld [hli], a
- ld [hl], a
- call Functionf086
- call RestoreBattlemonHP
- call Functionf231
- ld a, $f5
- ld [wPartyMenuActionText], a
- call Functionf2cf
- call Functionf7dc
- ld a, $0
- ret
-
-BitterBerry: ; f1c0
- ld hl, wPlayerSubStatus3
- bit 7, [hl]
- ld a, $1
- jr z, .asm_f1d9
- res 7, [hl]
- xor a
- ldh [hBattleTurn], a
- call Functionf7d0
- ld hl, ConfusedNoMoreText
- call StdBattleTextbox
- ld a, $0
-.asm_f1d9
- jp Functionf0f4
-
-Berry: ; f1dc
-BerryJuice: ; f1dc
-FreshWater: ; f1dc
-GoldBerry: ; f1dc
-HyperPotion: ; f1dc
-Lemonade: ; f1dc
-MaxPotion: ; f1dc
-MoomooMilk: ; f1dc
-Potion: ; f1dc
-Ragecandybar: ; f1dc
-SodaPop: ; f1dc
-SuperPotion: ; f1dc
- call Functionf1ff
- jp Functionf0f4
-
-Energypowder: ; f1e2 (3:71e2)
- ld c, $f
- jr asm_f1e8
-
-EnergyRoot: ; f1e6 (3:71e6)
- ld c, $10
-asm_f1e8
- push bc
- call Functionf1ff
- pop bc
- cp $0
- jr nz, .asm_f1fc
- farcall ChangeHappiness
- call Functionf81d
- ld a, $0
-.asm_f1fc
- jp Functionf0f4
-
-Functionf1ff: ; f1ff (3:71ff)
- ld b, PARTYMENUACTION_HEALING_ITEM
- call Functionf24f
- ld a, $2
- ret c
- call Functionf363
- ld a, $1
- ret z
- call CalculateCurHPAnimRemainingHP
- ld a, $1
- ret nc
- xor a
- ld [wLowHealthAlarm], a
- call Functionf3eb
- call Functionf327
- call RestoreBattlemonHP
- call Functionf231
- ld a, PARTYMENUTEXT_HEAL_HP
- ld [wPartyMenuActionText], a
- call Functionf2cf
- call Functionf7dc
- ld a, $0
- ret
-
-Functionf231: ; f231 (3:7231)
- push de
- ld de, $4
- call WaitPlaySFX
- pop de
- ld a, [wCurPartyMon]
- hlcoord 11, 0
- ld bc, $28
- call AddNTimes
- ld a, $2
- ld [wWhichHPBar], a
- predef_jump AnimateHPBar
-
-Functionf24f: ; f24f (3:724f)
- call Functionf261
- ret c
- ld a, [wCurPartySpecies]
- cp EGG
- jr nz, .asm_f25f
- call Functionf82f
- scf
- ret
-
-.asm_f25f
- and a
- ret
-
-Functionf261: ; f261 (3:7261)
- ld a, b
- ld [wPartyMenuActionText], a
- push hl
- push de
- push bc
- call ClearBGPalettes
- call Functionf272
- pop bc
- pop de
- pop hl
- ret
-
-Functionf272: ; f272 (3:7272)
- farcall LoadPartyMenuGFX
- farcall InitPartyMenuWithCancel
- farcall InitPartyMenuGFX
- farcall WritePartyMenuTilemap
- farcall PrintPartyMenuText
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- farcall PartyMenuSelect
- ret
-
-Functionf2a0: ; f2a0 (3:72a0)
- ld [wPartyMenuActionText], a
- ld a, [wCurPartySpecies]
- push af
- ld a, [wCurPartyMon]
- push af
- push hl
- push de
- push bc
- farcall WritePartyMenuTilemap
- farcall PrintPartyMenuActionText
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- pop bc
- pop de
- pop hl
- pop af
- ld [wCurPartyMon], a
- pop af
- ld [wCurPartySpecies], a
- ret
-
-Functionf2cf: ; f2cf (3:72cf)
- xor a
- ldh [hBGMapMode], a
- hlcoord 0, 0
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- ld a, " "
- call ByteFill
- ld a, [wPartyMenuActionText]
- call Functionf2a0
- ld a, $1
- ldh [hBGMapMode], a
- ld c, 50
- call DelayFrames
- jp WaitPressAorB_BlinkCursor
-
-Functionf2ef: ; f2ef (3:72ef)
- call Functionf839
- jr Functionf2f8
-
-Functionf2f4: ; f2f4 (3:72f4)
- xor a
- ld [wFieldMoveSucceeded], a
-Functionf2f8: ; f2f8 (3:72f8)
- call ClearPalettes
- ret
-
-Functionf2fc: ; f2fc (3:72fc)
- ld a, [wBattleMode]
- and a
- ret z
- ld a, [wCurPartyMon]
- push hl
- ld hl, wCurBattleMon
- cp [hl]
- pop hl
- jr nz, .asm_f30e
- scf
- ret
-
-.asm_f30e
- xor a
- ret
-
-Functionf310: ; f310 (3:7310)
- call GetCurHPAnimMaxHP
- srl d
- rr e
- jr asm_f31c
-
-Functionf319: ; f319 (3:7319)
- call GetCurHPAnimMaxHP
-asm_f31c
- ld a, MON_HP
- call GetPartyParamLocation
- ld [hl], d
- inc hl
- ld [hl], e
- jp CopyCurHPToAnimBufferNewHP
-
-Functionf327: ; f327 (3:7327)
- ld a, $23
- call GetPartyParamLocation
- ld a, [hl]
- add e
- ld [hld], a
- ld a, [hl]
- adc d
- ld [hl], a
- jr c, .asm_f34b
- call CopyCurHPToAnimBufferNewHP
- ld a, MON_HP + 1
- call GetPartyParamLocation
- ld d, h
- ld e, l
- ld a, MON_MAXHP + 1
- call GetPartyParamLocation
- ld a, [de]
- sub [hl]
- dec de
- dec hl
- ld a, [de]
- sbc [hl]
- jr c, .asm_f34e
-.asm_f34b
- call Functionf319
-.asm_f34e
- ret
-
-Functionf34f: ; f34f (3:734f)
- ld a, MON_HP + 1
- call GetPartyParamLocation
- ld a, [hl]
- sub e
- ld [hld], a
- ld a, [hl]
- sbc d
- ld [hl], a
- jr nc, .asm_f35f
- xor a
- ld [hld], a
- ld [hl], a
-.asm_f35f
- call CopyCurHPToAnimBufferNewHP
- ret
-
-Functionf363: ; f363 (3:7363)
- push de
- call CopyMaxHPToAnimBufferMaxHP
- call CopyCurHPToAnimBufferOldHP
- call GetCurHPAnimOldHP
- ld a, d
- or e
- pop de
- ret
-
-CalculateCurHPAnimRemainingHP: ; f371 (3:7371)
- call GetCurHPAnimOldHP
- ld h, d
- ld l, e
- call GetCurHPAnimMaxHP
- ld a, l
- sub e
- ld a, h
- sbc d
- ret
-
-CopyCurHPToAnimBufferNewHP: ; f37e (3:737e)
- ld a, MON_HP
- call GetPartyParamLocation
- ld a, [hli]
- ld [wCurHPAnimNewHP + 1], a
- ld a, [hl]
- ld [wCurHPAnimNewHP], a
- ret
-
-SetCurHPAnimNewHP:
- ld a, d
- ld [wCurHPAnimNewHP + 1], a
- ld a, e
- ld [wCurHPAnimNewHP], a
- ret
-
-GetCurHPAnimNewHP:
- ld a, [wCurHPAnimNewHP + 1]
- ld d, a
- ld a, [wCurHPAnimNewHP]
- ld e, a
- ret
-
-CopyCurHPToAnimBufferOldHP: ; f39e (3:739e)
- ld a, MON_HP
- call GetPartyParamLocation
- ld a, [hli]
- ld [wCurHPAnimOldHP + 1], a
- ld a, [hl]
- ld [wCurHPAnimOldHP], a
- ret
-
-GetCurHPAnimOldHP: ; f3ac (3:73ac)
- ld a, [wCurHPAnimOldHP + 1]
- ld d, a
- ld a, [wCurHPAnimOldHP]
- ld e, a
- ret
-
-CopyMaxHPToAnimBufferMaxHP: ; f3b5 (3:73b5)
- push hl
- ld a, MON_MAXHP
- call GetPartyParamLocation
- ld a, [hli]
- ld [wCurHPAnimMaxHP + 1], a
- ld a, [hl]
- ld [wCurHPAnimMaxHP], a
- pop hl
- ret
-
-GetCurHPAnimMaxHP: ; f3c5 (3:73c5)
- ld a, [wCurHPAnimMaxHP + 1]
- ld d, a
- ld a, [wCurHPAnimMaxHP]
- ld e, a
- ret
-
-GetOneFifthMaxHP: ; f3ce (3:73ce)
- push bc
- ld a, MON_MAXHP
- call GetPartyParamLocation
- ld a, [hli]
- ldh [hDividend + 0], a
- ld a, [hl]
- ldh [hDividend + 1], a
- ld a, 5
- ldh [hDivisor], a
- ld b, 2
- call Divide
- ldh a, [hQuotient + 1]
- ld d, a
- ldh a, [hQuotient + 2]
- ld e, a
- pop bc
- ret
-
-Functionf3eb: ; f3eb (3:73eb)
- push hl
- ld a, [wCurItem]
- ld hl, HealingItemParameters
- ld d, a
-.asm_f3f3
- ld a, [hli]
- cp -1
- jr z, .asm_f3ff
- cp d
- jr z, .asm_f400
- inc hl
- inc hl
- jr .asm_f3f3
-
-.asm_f3ff
- scf
-.asm_f400
- ld e, [hl]
- inc hl
- ld d, [hl]
- pop hl
- ret
-
-HealingItemParameters:
- 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
-
-Softboiled_MilkDrinkFunction:
- ld a, [wPartyMenuCursor]
- dec a
- ld b, a
- call Functionf46f
- jr c, .asm_f469
- ld a, b
- ld [wCurPartyMon], a
- call Functionf363
- call GetOneFifthMaxHP
- call Functionf34f
- push bc
- call Functionf231
- pop bc
- call GetOneFifthMaxHP
- ld a, c
- ld [wCurPartyMon], a
- call Functionf363
- call Functionf327
-.asm_f45d
- call Functionf231
- ld a, PARTYMENUTEXT_HEAL_HP
- call Functionf2a0
- call JoyWaitAorB
-.asm_f469
- ld a, b
- inc a
- ld [wPartyMenuCursor], a
- ret
-
-Functionf46f: ; f46f (3:746f)
- push bc
- ld a, $1
- ld [wPartyMenuActionText], a
- call Functionf272
- pop bc
- jr c, .asm_f494
- ld a, [wPartyMenuCursor]
- dec a
- ld c, a
- ld a, b
- cp c
- jr z, .asm_f496
- ld a, c
- ld [wCurPartyMon], a
- call Functionf363
- jr z, .asm_f496
- call CalculateCurHPAnimRemainingHP
- jr nc, .asm_f496
- xor a
- ret
-
-.asm_f494
- scf
- ret
-
-.asm_f496
- push bc
- ld hl, Text_MilkDrinkCantBeUsed
- call MenuTextboxBackup
- pop bc
- jr Functionf46f
-
-Text_MilkDrinkCantBeUsed:
- text_far Text_MilkDrinkCantBeUsed_
- db "@"
-
-EscapeRope: ; f4a5 (3:74a5)
- xor a
- ld [wFieldMoveSucceeded], a
- farcall EscapeRopeFunction ; same bank
- ld a, [wFieldMoveSucceeded]
- cp $1
- call z, Functionf7dc
- ret
-
-SuperRepel: ; f4b8 (3:74b8)
- ld b, 200
- jr asm_f4c2
-
-MaxRepel: ; f4bc (3:74bc)
- ld b, 250
- jr asm_f4c2
-
-Repel: ; f4c0 (3:74c0)
- ld b, 100
-asm_f4c2
- ld a, [wRepelSteps]
- and a
- ld hl, Text_RepelsEffectsStillLinger
- jp nz, PrintText
- ld a, b
- ld [wRepelSteps], a
- jp Functionf7d0
-
-Text_RepelsEffectsStillLinger:
- text_far Text_RepelUsedEarlierIsStillInEffect
- db "@"
-
-XAccuracy: ; f4d8 (3:74d8)
- ld hl, wPlayerSubStatus4
- bit SUBSTATUS_X_ACCURACY, [hl]
- jp nz, Functionf811
- set SUBSTATUS_X_ACCURACY, [hl]
- jp Functionf7d0
-
-PokeDoll: ; f4e5 (3:74e5)
- ld a, [wBattleMode]
- dec a
- jr nz, .asm_f4f6
- inc a
- ld [wd11c], a
- inc a
- ld [wBattleResult], a
- jp Functionf7d0
-
-.asm_f4f6
- xor a
- ld [wFieldMoveSucceeded], a
- ret
-
-GuardSpec: ; f4fb (3:74fb)
- ld hl, wPlayerSubStatus4
- bit SUBSTATUS_MIST, [hl]
- jp nz, Functionf811
- set SUBSTATUS_MIST, [hl]
- jp Functionf7d0
-
-DireHit: ; f508 (3:7508)
- ld hl, wPlayerSubStatus4
- bit SUBSTATUS_FOCUS_ENERGY, [hl]
- jp nz, Functionf811
- set SUBSTATUS_FOCUS_ENERGY, [hl]
- jp Functionf7d0
-
-XAttack: ; f515
-XDefend: ; f515
-XSpecial: ; f515
-XSpeed: ; f515
- call Functionf7d0
- ld a, [wCurItem]
- ld hl, .x_item_table
-.asm_f51e
- cp [hl]
- jr z, .asm_f525
- inc hl
- inc hl
- jr .asm_f51e
-
-.asm_f525
- inc hl
- ld b, [hl]
- xor a
- ldh [hBattleTurn], a
- ld [wcb45], a
- ld [wcbeb], a
- farcall CheckIfStatCanBeRaised
- call WaitSFX
- farcall BattleCommand_StatUpMessage
- farcall BattleCommand_StatUpFailText
- ld a, [wCurBattleMon]
- ld [wCurPartyMon], a
- ld c, HAPPINESS_USEDXITEM
- farcall ChangeHappiness
- ret
-
-.x_item_table
- db X_ATTACK, ATTACK
- db X_DEFEND, DEFENSE
- db X_SPEED, SPEED
- db X_SPECIAL, SP_ATTACK
-
-PokeFlute: ; f55c (3:755c)
- ld a, [wBattleMode]
- and a
- jr nz, .dummy
-.dummy
-
- xor a
- ld [wceed], a
-
- ld b, $ff ^ SLP
-
- ld hl, wPartyMon1Status
- call .CureSleep
-
- ld a, [wBattleMode]
- cp $1
- jr z, .skip_otrainer
- ld hl, wOTPartyMon1Status
- call .CureSleep
-.skip_otrainer
-
- ld hl, wBattleMonStatus
- ld a, [hl]
- and b
- ld [hl], a
- ld hl, wEnemyMonStatus
- ld a, [hl]
- and b
- ld [hl], a
-
- ld a, [wceed]
- and a
- ld hl, Text_NowThatsACatchyTune ; $75bc
- jp z, PrintText
- ld hl, Text_PlayedThePokeFlute ; $75c6
- call PrintText
-
- ld a, [wLowHealthAlarm]
- and $80
- jr nz, .dummy2
-.dummy2
- ld hl, Text_AllSleepingMonWokeUp ; $75c1
- jp PrintText
-
-.CureSleep: ; f5a4 (3:75a4)
- ld de, PARTYMON_STRUCT_LENGTH
- ld c, PARTY_LENGTH
-
-.loop
- ld a, [hl]
- push af
- and SLP
- jr z, .not_asleep
- ld a, 1
- ld [wceed], a
-.not_asleep
- pop af
- and b
- ld [hl], a
- add hl, de
- dec c
- jr nz, .loop
- ret
-
-Text_NowThatsACatchyTune:
- text_far Text_NowThatsACatchyTune_
- db "@"
-
-Text_AllSleepingMonWokeUp:
- text_far Text_AllSleepingMonWokeUp_
- db "@"
-
-Text_PlayedThePokeFlute:
- text_far Text_PlayedThePokeFlute_
- text_asm
- ld a, [wBattleMode]
- and a
- jr nz, .asm_f5dc
- push de
- ld de, SFX_POKEFLUTE
- call WaitPlaySFX
- call WaitSFX
- pop de
-.asm_f5dc
- ld hl, .terminator
- ret
-
-.terminator db "@"
-
-CoinCase: ; f5e1 (3:75e1)
- ld hl, Text_CoinCase
- jp MenuTextboxWaitButton
-
-Text_CoinCase:
- text_far Text_CoinCase_
- db "@"
-
-OldRod: ; f5ec (3:75ec)
- ld e, $0
- jr UseRod
-
-GoodRod: ; f5f0 (3:75f0)
- ld e, $1
- jr UseRod
-
-SuperRod: ; f5f4 (3:75f4)
- ld e, $2
- jr UseRod
-
-UseRod:
- farcall FishingRodFunction ; same bank
- ret
-
-ItemfinderEffect: ; f5ff (3:75ff)
- farcall ItemFinder
- ret
-
-Elixer: ; f606
-Ether: ; f606
-MaxElixer: ; f606
-MaxEther: ; f606
-Mysteryberry: ; f606
-PPUp: ; f606 (3:7606)
- ld a, [wCurItem]
- ld [wMovementBufferCount], a
-.asm_f60c
- ld b, $1
- call Functionf24f
- jp c, Functionf727
-.asm_f614
- ld a, [wMovementBufferCount]
- cp MAX_ELIXER
- jp z, Functionf6f6
- cp ELIXER
- jp z, Functionf6f6
- ld hl, Text_RaiseThePPOfWhichMove
- ld a, [wMovementBufferCount]
- cp PP_UP
- jr z, .asm_f62e
- ld hl, Text_RestoreThePPOfWhichMove
-.asm_f62e
- call PrintText
- ld a, [wcfc7]
- push af
- xor a
- ld [wcfc7], a
- ld a, $2
- ld [wd11f], a
- ld a, $f
- ld hl, $62f3
- rst FarCall
- pop bc
- ld a, b
- ld [wcfc7], a
- jr nz, .asm_f60c
- ld hl, wPartyMon1Moves
- ld bc, $30
- call Functionf9aa
- push hl
- ld a, [hl]
- ld [wd151], a
- call GetMoveName
- call CopyName1
- pop hl
- ld a, [wceed]
- cp PP_UP
- jp nz, Functionf6ee
- ld a, [hl]
- cp $a6
- jr z, .asm_f676
- ld bc, $15
- add hl, bc
- ld a, [hl]
- cp $c0
- jr c, .asm_f67e
-.asm_f676
- ld hl, Text_PPIsMaxedOut ; $7776
- call PrintText
- jr .asm_f614
-
-.asm_f67e
- ld a, [hl]
- add $40
- ld [hl], a
- ld a, $1
- ld [wd151], a
- call Functionf893
- call Functionf7c7
- ld hl, Text_PPsIncreased ; $777b
- call PrintText
-asm_f693
- call ClearPalettes
- jp Functionf7dc
-
-asm_f699
- ld a, [wBattleMode]
- and a
- jr z, .asm_f6b3
- ld a, [wCurPartyMon]
- ld b, a
- ld a, [wCurBattleMon]
- cp b
- jr nz, .asm_f6b3
- ld a, [wPlayerSubStatus5]
- bit SUBSTATUS_TRANSFORMED, a
- jr nz, .asm_f6b3
- call Functionf6be
-.asm_f6b3
- call Functionf7c7
- ld hl, Text_PPWasRestored
- call PrintText
- jr asm_f693
-
-Functionf6be: ; f6be (3:76be)
- ld a, [wCurPartyMon]
- ld hl, wPartyMon1Moves
- ld bc, $30
- call AddNTimes
- ld de, wBattleMonMoves
- ld b, $4
-.asm_f6cf
- ld a, [de]
- and a
- jr z, .asm_f6ed
- cp [hl]
- jr nz, .asm_f6e8
- push hl
- push de
- push bc
- inc de
- inc de
- inc de
- inc de
- inc de
- inc de
- ld bc, $15
- add hl, bc
- ld a, [hl]
- ld [de], a
- pop bc
- pop de
- pop hl
-.asm_f6e8
- inc hl
- inc de
- dec b
- jr nz, .asm_f6cf
-.asm_f6ed
- ret
-
-Functionf6ee: ; f6ee (3:76ee)
- call Functionf72f
- jr nz, asm_f699
- jp Functionf724
-
-Functionf6f6: ; f6f6 (3:76f6)
- xor a
- ld hl, wMenuCursorY
- ld [hli], a
- ld [hl], a
- ld b, $4
-.asm_f6fe
- push bc
- ld hl, wPartyMon1Moves
- ld bc, $30
- call Functionf9aa
- ld a, [hl]
- and a
- jr z, .asm_f715
- call Functionf72f
- jr z, .asm_f715
- ld hl, wcee1
- inc [hl]
-.asm_f715
- ld hl, wMenuCursorY
- inc [hl]
- pop bc
- dec b
- jr nz, .asm_f6fe
- ld a, [wcee1]
- and a
- jp nz, asm_f699
-Functionf724: ; f724 (3:7724)
- call Functionf839
-Functionf727: ; f727 (3:7727)
- call ClearPalettes
- xor a
- ld [wFieldMoveSucceeded], a
- ret
-
-Functionf72f: ; f72f (3:772f)
- xor a
- ld [wMonType], a
- call GetMaxPPOfMove
- ld hl, wPartyMon1PP
- ld bc, $30
- call Functionf9aa
- ld a, [wd151]
- ld b, a
- ld a, [hl]
- and $3f
- cp b
- jr nc, .asm_f76a
- ld a, [wceed]
- cp MAX_ELIXER
- jr z, .asm_f764
- cp $40
- jr z, .asm_f764
- ld c, $5
- cp $96
- jr z, .asm_f75c
- ld c, $a
-.asm_f75c
- ld a, [hl]
- and $3f
- add c
- cp b
- jr nc, .asm_f764
- ld b, a
-.asm_f764
- ld a, [hl]
- and $c0
- or b
- ld [hl], a
- ret
-
-.asm_f76a
- xor a
- ret
-
-Text_RaiseThePPOfWhichMove:
- text_far Text_RaiseThePPOfWhichMove_
- db "@"
-
-Text_RestoreThePPOfWhichMove:
- text_far Text_RestoreThePPOfWhichMove_
- db "@"
-
-Text_PPIsMaxedOut:
- text_far Text_PPIsMaxedOut_
- db "@"
-
-Text_PPsIncreased:
- text_far Text_PPsIncreased_
- db "@"
-
-Text_PPWasRestored:
- text_far Text_PPWasRestored_
- db "@"
-
-Squirtbottle: ; f785 (3:7785)
- farcall SquirtbottleFunction ; 14:4763
- ret
-
-CardKey: ; f78c (3:778c)
- farcall CardKeyFunction ; 14:47ac
- ret
-
-BasementKey: ; f793 (3:7793)
- farcall BasementKeyFunction ; 14:47e7
- ret
-
-SacredAsh: ; f79a (3:779a)
- farcall SacredAshFunction ; 14:4819
- ld a, [wFieldMoveSucceeded]
- cp $1
- ret nz
- call Functionf7dc
- ret
-
-NormalBox: ; f7aa (3:77aa)
- ld c, DECOFLAG_SILVER_TROPHY_DOLL
- jr asm_f7b0
-
-GorgeousBox: ; f7ae (3:77ae)
- ld c, DECOFLAG_GOLD_TROPHY_DOLL
-asm_f7b0
- farcall ReceiveDecorationC ; 9:70d5
- ld hl, Text_TrophyInside ; $77bf
- call PrintText
- jp Functionf7dc
-
-Text_TrophyInside:
- text_far Text_TrophyInside_
- db "@"
-
-AmuletCoin: ; f7c4
-BerserkGene: ; f7c4
-BigMushroom: ; f7c4
-BigPearl: ; f7c4
-Blackbelt: ; f7c4
-Blackglasses: ; f7c4
-BlkApricorn: ; f7c4
-BluApricorn: ; f7c4
-Brightpowder: ; f7c4
-Charcoal: ; f7c4
-CleanseTag: ; f7c4
-DragonFang: ; f7c4
-DragonScale: ; f7c4
-Everstone: ; f7c4
-ExpShare: ; f7c4
-FlowerMail: ; f7c4
-FocusBand: ; f7c4
-GoldLeaf: ; f7c4
-GrnApricorn: ; f7c4
-HardStone: ; f7c4
-Item19: ; f7c4
-Item2D: ; f7c4
-Item32: ; f7c4
-Item47: ; f7c4
-Item5A: ; f7c4
-Item64: ; f7c4
-Item73: ; f7c4
-Item74: ; f7c4
-Item78: ; f7c4
-Item81: ; f7c4
-Item87: ; f7c4
-Item88: ; f7c4
-Item89: ; f7c4
-Item8D: ; f7c4
-Item8E: ; f7c4
-Item91: ; f7c4
-Item93: ; f7c4
-Item94: ; f7c4
-Item95: ; f7c4
-Item99: ; f7c4
-Item9A: ; f7c4
-Item9B: ; f7c4
-ItemA2: ; f7c4
-ItemAB: ; f7c4
-ItemB0: ; f7c4
-ItemB3: ; f7c4
-KingsRock: ; f7c4
-Leftovers: ; f7c4
-LightBall: ; f7c4
-LostItem: ; f7c4
-LuckyEgg: ; f7c4
-LuckyPunch: ; f7c4
-MachinePart: ; f7c4
-Magnet: ; f7c4
-MetalCoat: ; f7c4
-MetalPowder: ; f7c4
-MiracleSeed: ; f7c4
-MysteryEgg: ; f7c4
-MysticWater: ; f7c4
-Nevermeltice: ; f7c4
-Nugget: ; f7c4
-Pass: ; f7c4
-Pearl: ; f7c4
-PinkBow: ; f7c4
-PnkApricorn: ; f7c4
-PoisonBarb: ; f7c4
-PolkadotBow: ; f7c4
-QuickClaw: ; f7c4
-RainbowWing: ; f7c4
-RedApricorn: ; f7c4
-RedScale: ; f7c4
-SSTicket: ; f7c4
-ScopeLens: ; f7c4
-Secretpotion: ; f7c4
-SharpBeak: ; f7c4
-SilverLeaf: ; f7c4
-SilverWing: ; f7c4
-Silverpowder: ; f7c4
-Slowpoketail: ; f7c4
-SmokeBall: ; f7c4
-SoftSand: ; f7c4
-SpellTag: ; f7c4
-StarPiece: ; f7c4
-Stardust: ; f7c4
-Stick: ; f7c4
-ThickClub: ; f7c4
-Tinymushroom: ; f7c4
-Twistedspoon: ; f7c4
-UpGrade: ; f7c4
-WhtApricorn: ; f7c4
-YlwApricorn: ; f7c4
- jp Functionf834
-
-Functionf7c7: ; f7c7 (3:77c7)
- push de
- ld de, SFX_FULL_HEAL
- call WaitPlaySFX
- pop de
- ret
-
-Functionf7d0: ; f7d0 (3:77d0)
- ld hl, Text_UsedItem
- call PrintText
- call Functionf7c7
- call WaitPressAorB_BlinkCursor
-Functionf7dc: ; f7dc (3:77dc)
- ld hl, wTMsHMsEnd
- ld a, $1
- ld [wItemQuantityChangeBuffer], a
- jp TossItem
-
-Functionf7e7: ; f7e7 (3:77e7)
- call ReturnToBattle_UseBall
- ld de, Start
- ld a, e
- ld [wcf3e], a
- ld a, d
- ld [wcf3f], a
- xor a
- ld [wcb67], a
- ldh [hBattleTurn], a
- ld [wcf46], a
- predef PlayBattleAnim
- ld hl, Text_BlockedTheBall
- call PrintText
- ld hl, Text_DontBeAThief
- call PrintText
- jr Functionf7dc
-
-Functionf811: ; f811 (3:7811)
- ld hl, Text_WontHaveAnyEffect
- call PrintText
- ld a, $2
- ld [wFieldMoveSucceeded], a
- ret
-
-Functionf81d: ; f81d (3:781d)
- ld hl, Text_LooksBitter
- jp PrintText
-
-FailToUseBall: ; f823 (3:7823)
- ld hl, Text_CantUseBallBoxIsFull
- call PrintText
- ld a, $2
- ld [wFieldMoveSucceeded], a
- ret
-
-Functionf82f: ; f82f (3:782f)
- ld hl, Text_CantUseOnEgg
- jr asm_f84b
-
-Functionf834: ; f834 (3:7834)
- ld hl, Text_IsntTheTimeToUseThat
- jr asm_f84b
-
-Functionf839: ; f839 (3:7839)
- ld hl, Text_WontHaveAnyEffect
- jr asm_f84b
-
-Functionf83e:
- ld hl, Text_BelongsToSomeoneElse
- jr asm_f84b
-
-Functionf843:
- ld hl, Text_CyclingIsntAllowed
- jr asm_f84b
-
-Functionf848:
- ld hl, Text_CantGetOnYourItemNow
-asm_f84b
- xor a
- ld [wFieldMoveSucceeded], a
- jp PrintText
-
-Text_LooksBitter:
- text_far Text_LooksBitter_
- db "@"
-
-Text_CantUseOnEgg:
- text_far Text_CantUseOnEgg_
- db "@"
-
-Text_IsntTheTimeToUseThat:
- text_far Text_IsntTheTimeToUseThat_
- db "@"
-
-Text_BelongsToSomeoneElse:
- text_far Text_BelongsToSomeoneElse_
- db "@"
-
-Text_WontHaveAnyEffect:
- text_far Text_WontHaveAnyEffect_
- db "@"
-
-Text_BlockedTheBall:
- text_far Text_BlockedTheBall_
- db "@"
-
-Text_DontBeAThief:
- text_far Text_DontBeAThief_
- db "@"
-
-Text_CyclingIsntAllowed:
- text_far Text_CyclingIsntAllowed_
- db "@"
-
-Text_CantGetOnYourItemNow:
- text_far Text_CantGetOnYourItemNow_
- db "@"
-
-Text_CantUseBallBoxIsFull:
- text_far Text_CantUseBallBoxIsFull_
- db "@"
-
-Text_UsedItem:
- text_far Text_UsedItem_
- db "@"
-
-Text_GotOnItem:
- text_far Text_GotOnItem_
- db "@"
-
-Text_GotOffItem:
- text_far Text_GotOffItem_
- db "@"
-
-Functionf893: ; f893 (3:7893)
- ld a, $2
- call GetPartyParamLocation
- push hl
- ld de, wBuffer1
- predef FillPP
- pop hl
- ld bc, $15
- add hl, bc
- ld de, wCurHPAnimMaxHP
- ld b, $0
-.asm_f8ab
- inc b
- ld a, b
- cp $5
- ret z
- ld a, [wd151]
- dec a
- jr nz, .asm_f8bd
- ld a, [wMenuCursorY]
- inc a
- cp b
- jr nz, .asm_f8c4
-.asm_f8bd
- ld a, [hl]
- and $c0
- ld a, [de]
- call nz, Functionf8c8
-.asm_f8c4
- inc hl
- inc de
- jr .asm_f8ab
-
-Functionf8c8: ; f8c8 (3:78c8)
- push bc
- ; Divide the base PP by 5.
- ld a, [de]
- ldh [hDividend + 3], a
- xor a
- ldh [hDividend], a
- ldh [hDividend + 1], a
- ldh [hDividend + 2], a
- ld a, 5
- ldh [hDivisor], a
- ld b, 4
- call Divide
- ; Get the number of PP, which are bits 6 and 7 of the PP value stored in RAM.
- ld a, [hl]
- ld b, a
- swap a
- and $f
- srl a
- srl a
- ld c, a
- ; If this value is 0, we are done
- and a
- jr z, .asm_f8fd
-.asm_f8ea
- ldh a, [hPrintNum4]
- cp $8
- jr c, .asm_f8f2
- ld a, $7
-.asm_f8f2
- add b
- ld b, a
- ld a, [wd151]
- dec a
- jr z, .asm_f8fd
- dec c
- jr nz, .asm_f8ea
-.asm_f8fd
- ld [hl], b
- pop bc
- ret
-
-Functionf900: ; f900 (3:7900)
- ld a, $17
- call GetPartyParamLocation
- push hl
- ld a, $2
- call GetPartyParamLocation
- pop de
- xor a
- ld [wMenuCursorY], a
- ld [wMonType], a
- ld c, $4
-.asm_f915
- ld a, [hli]
- and a
- ret z
- push hl
- push de
- push bc
- call GetMaxPPOfMove
- pop bc
- pop de
- ld a, [de]
- and $c0
- ld b, a
- ld a, [wd151]
- add b
- ld [de], a
- inc de
- ld hl, wMenuCursorY
- inc [hl]
- pop hl
- dec c
- jr nz, .asm_f915
- ret
-
-GetMaxPPOfMove: ; f933 (3:7933)
- ld a, [wStringBuffer1]
- push af
- ld a, [wStringBuffer1 + 1]
- push af
- ld a, [wMonType]
- and a
- ld hl, wPartyMon1Moves
- ld bc, $30
- jr z, .asm_f961
- ld hl, wOTPartyMon1Moves
- dec a
- jr z, .asm_f961
- ld hl, wTempMonMoves
- dec a
- jr z, .asm_f95c
- ld hl, wTempMonMoves
- dec a
- jr z, .asm_f95c
- ld hl, wBattleMonMoves
-.asm_f95c
- call Functionf9b0
- jr .asm_f964
-
-.asm_f961
- call Functionf9aa
-.asm_f964
- ld a, [hl]
- dec a
- push hl
- ld hl, Moves + MOVE_PP
- ld bc, $7
- call AddNTimes
- ld a, BANK(Moves)
- call GetFarByte
- ld b, a
- ld de, wStringBuffer1
- ld [de], a
- pop hl
- push bc
- ld bc, $15
- ld a, [wMonType]
- cp $4
- jr nz, .asm_f989
- ld bc, $6
-.asm_f989
- add hl, bc
- ld a, [hl]
- and $c0
- pop bc
- or b
- ld hl, wStringBuffer1 + 1
- ld [hl], a
- xor a
- ld [wd151], a
- ld a, b
- call Functionf8c8
- ld a, [hl]
- and $3f
- ld [wd151], a
- pop af
- ld [wStringBuffer1 + 1], a
-.asm_f9a3
- pop af
- ld [wStringBuffer1], a
- ret
-
-Functionf9aa: ; f9aa (3:79aa)
- ld a, [wCurPartyMon]
- call AddNTimes
-Functionf9b0: ; f9b0 (3:79b0)
- ld a, [wMenuCursorY]
- ld c, a
- ld b, $0
- add hl, bc
- ret
-
-GetPokeballWobble:
- ld a, [wBuffer2]
- inc a
- ld [wBuffer2], a
- cp $4
- jr z, .asm_f9e3
- ld a, [wWildMon]
- and a
- ld c, $0
- ret nz
- ld hl, PokeballWobbleProbabilities
- ld a, [wCurHPAnimMaxHP]
- ld b, a
-.asm_f9d1
- ld a, [hli]
- cp b
- jr nc, .asm_f9d8
- inc hl
- jr .asm_f9d1
-
-.asm_f9d8
- ld b, [hl]
- call Random
- cp b
- ld c, $0
- ret c
- ld c, $2
- ret
-
-.asm_f9e3
- ld a, [wWildMon]
- and a
- ld c, $1
- ret nz
- ld c, $2
- ret
-
-PokeballWobbleProbabilities:
- db 1, 63
- db 2, 75
- db 3, 84
- db 4, 90
- db 5, 95
- db 7, 103
- db 10, 113
- db 15, 126
- db 20, 134
- db 30, 149
- db 40, 160
- db 50, 169
- db 60, 177
- db 80, 191
- db 100, 201
- db 120, 211
- db 140, 220
- db 160, 227
- db 180, 234
- db 200, 240
- db 220, 246
- db 240, 251
- db 254, 253
- db 255, 255