mirror of https://github.com/pret/pokecrystal.git
3313 lines
44 KiB
NASM
3313 lines
44 KiB
NASM
_DoItemEffect:: ; e722
|
|
ld a, [CurItem]
|
|
ld [$d265], a
|
|
call GetItemName
|
|
call CopyName1
|
|
ld a, 1
|
|
ld [$d0ec], a
|
|
ld a, [CurItem]
|
|
dec a
|
|
ld hl, ItemEffects
|
|
rst JumpTable
|
|
ret
|
|
; e73c
|
|
|
|
|
|
ItemEffects: ; e73c
|
|
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 Itemfinder
|
|
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 ClearBell
|
|
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 GsBall
|
|
dw BlueCard
|
|
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 EggTicket
|
|
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
|
|
; e8a2
|
|
|
|
|
|
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 20
|
|
call CloseSRAM
|
|
jp z, Ball_BoxIsFullMessage
|
|
|
|
.asm_e8c0
|
|
xor a
|
|
ld [$c64e], a
|
|
ld a, [CurItem]
|
|
cp PARK_BALL
|
|
call nz, Functionedfa
|
|
|
|
ld hl, Options
|
|
res 4, [hl]
|
|
ld hl, UsedItemText
|
|
call PrintText
|
|
|
|
ld a, [EnemyMonCatchRate]
|
|
ld b, a
|
|
ld a, [BattleType]
|
|
cp BATTLETYPE_TUTORIAL
|
|
jp z, .asm_e99c
|
|
ld a, [CurItem]
|
|
cp MASTER_BALL
|
|
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, EnemyMonHP
|
|
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 [Buffer1], 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
|
|
predef PlayBattleAnim
|
|
|
|
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, [EnemyMonDVs]
|
|
ld [hli], a
|
|
ld a, [EnemyMonDVs + 1]
|
|
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, EnemyMonMoves
|
|
ld bc, NUM_MOVES
|
|
call CopyBytes
|
|
|
|
ld hl, $c739
|
|
ld de, EnemyMonPP
|
|
ld bc, NUM_MOVES
|
|
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
|
|
predef Functionfb877
|
|
|
|
.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
|
|
|
|
predef Functiond88c
|
|
|
|
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, PartyMonNicknames
|
|
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
|
|
|
|
predef Functionde6e
|
|
|
|
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, UnknownText_0xedeb
|
|
call PrintText
|
|
|
|
call Function4b6
|
|
call Functione51
|
|
jr .asm_ebe2
|
|
|
|
.asm_ebd1
|
|
callba Functione6ce
|
|
jr .asm_ebe2
|
|
|
|
.asm_ebd9
|
|
ld hl, UnknownText_0xedc9
|
|
|
|
.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
|
|
|
|
GLOBAL PokedexEntries1
|
|
GLOBAL PokedexEntries2
|
|
GLOBAL PokedexEntries3
|
|
GLOBAL PokedexEntries4
|
|
|
|
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
|
|
|
|
GLOBAL EvosAttacks
|
|
GLOBAL EvosAttacksPointers
|
|
|
|
push bc
|
|
ld a, [TempEnemyMonSpecies]
|
|
dec a
|
|
ld c, a
|
|
ld b, 0
|
|
ld hl, EvosAttacksPointers
|
|
add hl, bc
|
|
add hl, bc
|
|
ld a, BANK(EvosAttacksPointers)
|
|
call GetFarHalfword
|
|
pop bc
|
|
|
|
push bc
|
|
ld a, BANK(EvosAttacks)
|
|
call GetFarByte
|
|
cp EVOLVE_ITEM
|
|
pop bc
|
|
ret nz
|
|
|
|
inc hl
|
|
inc hl
|
|
inc hl
|
|
|
|
; It appears that 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 1x.
|
|
push bc
|
|
ld a, BANK(EvosAttacks)
|
|
call GetFarByte
|
|
cp MOON_STONE + 2 ; BURN_HEAL
|
|
pop bc
|
|
ret nz
|
|
|
|
sla b
|
|
jr c, .max
|
|
sla b
|
|
jr nc, .done
|
|
.max
|
|
ld b, $ff
|
|
.done
|
|
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
|
|
|
|
TownMap: ; 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 WontHaveAnyEffectMessage
|
|
|
|
.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, WontHaveAnyEffectText
|
|
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
|
|
predef_jump Functione167
|
|
; 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, PartyMon1SpcExp - 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, PartyMonNicknames
|
|
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 MAX_LEVEL
|
|
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
|
|
predef Function5084a
|
|
|
|
hlcoord 9, 0
|
|
ld b, 10
|
|
ld c, 9
|
|
call TextBox
|
|
|
|
hlcoord 11, 1
|
|
ld bc, $0004
|
|
predef Function50b7b
|
|
|
|
call Functiona80
|
|
|
|
xor a
|
|
ld [MonType], a
|
|
ld a, [CurPartySpecies]
|
|
ld [$d265], a
|
|
predef LearnLevelMoves
|
|
|
|
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 LooksBitterMessage
|
|
|
|
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 Function365d7
|
|
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 LooksBitterMessage
|
|
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
|
|
predef FlagPredef
|
|
ld a, c
|
|
and a
|
|
jr z, .asm_f104
|
|
|
|
ld a, [CurPartyMon]
|
|
ld c, a
|
|
ld hl, $c664
|
|
ld b, SET_FLAG
|
|
predef FlagPredef
|
|
|
|
.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 LooksBitterMessage
|
|
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
|
|
hlcoord 11, 0
|
|
ld bc, $28
|
|
call AddNTimes
|
|
ld a, $2
|
|
ld [$d10a], a
|
|
predef_jump Functionc6e0
|
|
|
|
; 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 CantUseOnEggMessage
|
|
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 WontHaveAnyEffectMessage
|
|
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, UnknownText_0xf44a
|
|
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, WontHaveAnyEffect_NotUsedMessage
|
|
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, WontHaveAnyEffect_NotUsedMessage
|
|
set 1, [hl]
|
|
jp Functionf789
|
|
; f4b8
|
|
|
|
|
|
DireHit: ; f4b8
|
|
ld hl, PlayerSubStatus4
|
|
bit 2, [hl]
|
|
jp nz, WontHaveAnyEffect_NotUsedMessage
|
|
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 Function361ef
|
|
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
|
|
|
|
|
|
PokeFlute: ; 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, PartyMon1Moves
|
|
ld bc, PartyMon2 - PartyMon1
|
|
call AddNTimes
|
|
ld de, BattleMonMoves
|
|
ld b, NUM_MOVES
|
|
.asm_f688
|
|
ld a, [de]
|
|
and a
|
|
jr z, .asm_f6a6
|
|
cp [hl]
|
|
jr nz, .asm_f6a1
|
|
push hl
|
|
push de
|
|
push bc
|
|
rept NUM_MOVES + 2 ; BattleMonPP - BattleMonMoves
|
|
inc de
|
|
endr
|
|
ld bc, PartyMon1PP - PartyMon1Moves
|
|
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, NUM_MOVES
|
|
.asm_f6b7
|
|
push bc
|
|
ld hl, PartyMon1Moves
|
|
ld bc, PartyMon2 - PartyMon1
|
|
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 WontHaveAnyEffectMessage
|
|
|
|
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, PartyMon2 - PartyMon1
|
|
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 IsntTheTimeMessage
|
|
; f780
|
|
|
|
|
|
Functionf780: ; f780
|
|
push de
|
|
ld de, SFX_FULL_HEAL
|
|
call WaitPlaySFX
|
|
pop de
|
|
ret
|
|
; f789
|
|
|
|
Functionf789: ; f789
|
|
ld hl, UsedItemText
|
|
call PrintText
|
|
call Functionf780
|
|
call Functiona80
|
|
; fallthrough
|
|
; f795
|
|
|
|
Functionf795: ; f795
|
|
ld hl, NumItems
|
|
ld a, 1
|
|
ld [$d10c], a
|
|
jp TossItem
|
|
; f7a0
|
|
|
|
Functionf7a0: ; f7a0
|
|
call Functionedfa
|
|
ld de, ANIM_THROW_POKE_BALL
|
|
ld a, e
|
|
ld [FXAnimIDLo], a
|
|
ld a, d
|
|
ld [FXAnimIDHi], a
|
|
xor a
|
|
ld [$c689], a
|
|
ld [hBattleTurn], a
|
|
ld [$cfca], a
|
|
predef PlayBattleAnim
|
|
ld hl, BlockedTheBallText
|
|
call PrintText
|
|
ld hl, DontBeAThiefText
|
|
call PrintText
|
|
jr Functionf795
|
|
; f7ca
|
|
|
|
WontHaveAnyEffect_NotUsedMessage: ; f7ca
|
|
ld hl, WontHaveAnyEffectText
|
|
call PrintText
|
|
|
|
; Item wasn't used.
|
|
ld a, $2
|
|
ld [$d0ec], a
|
|
ret
|
|
; f7d6
|
|
|
|
LooksBitterMessage: ; f7d6
|
|
ld hl, LooksBitterText
|
|
jp PrintText
|
|
; f7dc
|
|
|
|
Ball_BoxIsFullMessage: ; f7dc
|
|
ld hl, Ball_BoxIsFullText
|
|
call PrintText
|
|
|
|
; Item wasn't used.
|
|
ld a, $2
|
|
ld [$d0ec], a
|
|
ret
|
|
; f7e8
|
|
|
|
CantUseOnEggMessage: ; f7e8
|
|
ld hl, CantUseOnEggText
|
|
jr CantUseItemMessage
|
|
|
|
IsntTheTimeMessage: ; f7ed
|
|
ld hl, IsntTheTimeText
|
|
jr CantUseItemMessage
|
|
|
|
WontHaveAnyEffectMessage: ; f7f2
|
|
ld hl, WontHaveAnyEffectText
|
|
jr CantUseItemMessage
|
|
|
|
BelongsToSomeoneElseMessage: ; f7f7
|
|
ld hl, BelongsToSomeoneElseText
|
|
jr CantUseItemMessage
|
|
|
|
CyclingIsntAllowedMessage: ; f7fc
|
|
ld hl, CyclingIsntAllowedText
|
|
jr CantUseItemMessage
|
|
|
|
CantGetOnYourBikeMessage: ; f801
|
|
ld hl, CantGetOnYourBikeText
|
|
|
|
CantUseItemMessage: ; f804
|
|
; Item couldn't be used.
|
|
xor a
|
|
ld [$d0ec], a
|
|
jp PrintText
|
|
; f80b
|
|
|
|
LooksBitterText: ; 0xf80b
|
|
; It looks bitter…
|
|
text_jump UnknownText_0x1c5d3e
|
|
db "@"
|
|
; 0xf810
|
|
|
|
CantUseOnEggText: ; 0xf810
|
|
; That can't be used on an EGG.
|
|
text_jump UnknownText_0x1c5d50
|
|
db "@"
|
|
; 0xf815
|
|
|
|
IsntTheTimeText: ; 0xf815
|
|
; OAK: ! This isn't the time to use that!
|
|
text_jump UnknownText_0x1c5d6e
|
|
db "@"
|
|
; 0xf81a
|
|
|
|
BelongsToSomeoneElseText: ; 0xf81a
|
|
; That belongs to someone else!
|
|
text_jump UnknownText_0x1c5d97
|
|
db "@"
|
|
; 0xf81f
|
|
|
|
WontHaveAnyEffectText: ; 0xf81f
|
|
; It won't have any effect.
|
|
text_jump UnknownText_0x1c5db6
|
|
db "@"
|
|
; 0xf824
|
|
|
|
BlockedTheBallText: ; 0xf824
|
|
; The trainer blocked the BALL!
|
|
text_jump UnknownText_0x1c5dd0
|
|
db "@"
|
|
; 0xf829
|
|
|
|
DontBeAThiefText: ; 0xf829
|
|
; Don't be a thief!
|
|
text_jump UnknownText_0x1c5def
|
|
db "@"
|
|
; 0xf82e
|
|
|
|
CyclingIsntAllowedText: ; 0xf82e
|
|
; Cycling isn't allowed here.
|
|
text_jump UnknownText_0x1c5e01
|
|
db "@"
|
|
; 0xf833
|
|
|
|
CantGetOnYourBikeText: ; 0xf833
|
|
; Can't get on your @ now.
|
|
text_jump UnknownText_0x1c5e1d
|
|
db "@"
|
|
; 0xf838
|
|
|
|
Ball_BoxIsFullText: ; 0xf838
|
|
; The #MON BOX is full. That can't be used now.
|
|
text_jump UnknownText_0x1c5e3a
|
|
db "@"
|
|
; 0xf83d
|
|
|
|
UsedItemText: ; 0xf83d
|
|
; used the@ .
|
|
text_jump UnknownText_0x1c5e68
|
|
db "@"
|
|
; 0xf842
|
|
|
|
GotOnTheItemText: ; 0xf842
|
|
; got on the@ .
|
|
text_jump UnknownText_0x1c5e7b
|
|
db "@"
|
|
; 0xf847
|
|
|
|
GotOffTheItemText: ; 0xf847
|
|
; got off@ the @ .
|
|
text_jump UnknownText_0x1c5e90
|
|
db "@"
|
|
; 0xf84c
|
|
|
|
|
|
Functionf84c: ; f84c
|
|
ld a, PartyMon1Moves - PartyMon1
|
|
call GetPartyParamLocation
|
|
push hl
|
|
ld de, Buffer1
|
|
predef FillPP
|
|
pop hl
|
|
ld bc, PartyMon1PP - PartyMon1Moves
|
|
add hl, bc
|
|
ld de, Buffer1
|
|
ld b, 0
|
|
.asm_f864
|
|
inc b
|
|
ld a, b
|
|
cp NUM_MOVES + 1
|
|
ret z
|
|
ld a, [$d265]
|
|
dec a
|
|
jr nz, .asm_f876
|
|
ld a, [$cfa9]
|
|
inc a
|
|
cp b
|
|
jr nz, .asm_f87d
|
|
|
|
.asm_f876
|
|
ld a, [hl]
|
|
and $c0
|
|
ld a, [de]
|
|
call nz, Functionf881
|
|
|
|
.asm_f87d
|
|
inc hl
|
|
inc de
|
|
jr .asm_f864
|
|
; f881
|
|
|
|
|
|
|
|
Functionf881: ; f881
|
|
push bc
|
|
ld a, [de]
|
|
ld [hDividend + 3], a
|
|
xor a
|
|
ld [hDividend], a
|
|
ld [hDividend + 1], a
|
|
ld [hDividend + 2], a
|
|
ld a, 5
|
|
ld [hDivisor], a
|
|
ld b, 4
|
|
call Divide
|
|
ld a, [hl]
|
|
ld b, a
|
|
swap a
|
|
and $f
|
|
srl a
|
|
srl a
|
|
ld c, a
|
|
and a
|
|
jr z, .asm_f8b6
|
|
.asm_f8a3
|
|
ld a, [$ffb6]
|
|
cp $8
|
|
jr c, .asm_f8ab
|
|
ld a, $7
|
|
|
|
.asm_f8ab
|
|
add b
|
|
ld b, a
|
|
ld a, [$d265]
|
|
dec a
|
|
jr z, .asm_f8b6
|
|
dec c
|
|
jr nz, .asm_f8a3
|
|
|
|
.asm_f8b6
|
|
ld [hl], b
|
|
pop bc
|
|
ret
|
|
; f8b9
|
|
|
|
Functionf8b9: ; f8b9
|
|
ld a, PartyMon1PP - PartyMon1
|
|
call GetPartyParamLocation
|
|
push hl
|
|
ld a, PartyMon1Moves - PartyMon1
|
|
call GetPartyParamLocation
|
|
pop de
|
|
xor a
|
|
ld [$cfa9], a
|
|
ld [MonType], a
|
|
ld c, NUM_MOVES
|
|
.loop
|
|
ld a, [hli]
|
|
and a
|
|
ret z
|
|
push hl
|
|
push de
|
|
push bc
|
|
call Functionf8ec
|
|
pop bc
|
|
pop de
|
|
ld a, [de]
|
|
and $c0
|
|
ld b, a
|
|
ld a, [$d265]
|
|
add b
|
|
ld [de], a
|
|
inc de
|
|
ld hl, $cfa9
|
|
inc [hl]
|
|
pop hl
|
|
dec c
|
|
jr nz, .loop
|
|
ret
|
|
; f8ec
|
|
|
|
|
|
Functionf8ec: ; f8ec
|
|
ld a, [StringBuffer1 + 0]
|
|
push af
|
|
ld a, [StringBuffer1 + 1]
|
|
push af
|
|
|
|
ld a, [MonType]
|
|
and a
|
|
|
|
ld hl, PartyMon1Moves
|
|
ld bc, PartyMon2 - PartyMon1
|
|
jr z, .asm_f91a
|
|
|
|
ld hl, OTPartyMon1Moves
|
|
dec a
|
|
jr z, .asm_f91a
|
|
|
|
ld hl, TempMonMoves
|
|
dec a
|
|
jr z, .asm_f915
|
|
|
|
ld hl, TempMonMoves
|
|
dec a
|
|
jr z, .asm_f915
|
|
|
|
ld hl, BattleMonMoves
|
|
|
|
.asm_f915
|
|
call Functionf969
|
|
jr .asm_f91d
|
|
|
|
.asm_f91a
|
|
call Functionf963
|
|
|
|
.asm_f91d
|
|
ld a, [hl]
|
|
dec a
|
|
|
|
push hl
|
|
ld hl, Moves + MOVE_PP
|
|
ld bc, MOVE_LENGTH
|
|
call AddNTimes
|
|
ld a, BANK(Moves)
|
|
call GetFarByte
|
|
ld b, a
|
|
ld de, StringBuffer1
|
|
ld [de], a
|
|
pop hl
|
|
|
|
push bc
|
|
ld bc, PartyMon1PP - PartyMon1Moves
|
|
ld a, [MonType]
|
|
cp WILDMON
|
|
jr nz, .asm_f942
|
|
ld bc, EnemyMonPP - EnemyMonMoves
|
|
.asm_f942
|
|
add hl, bc
|
|
ld a, [hl]
|
|
and $c0
|
|
pop bc
|
|
|
|
or b
|
|
ld hl, $d074
|
|
ld [hl], a
|
|
xor a
|
|
ld [$d265], a
|
|
ld a, b
|
|
call Functionf881
|
|
ld a, [hl]
|
|
and $3f
|
|
ld [$d265], a
|
|
|
|
pop af
|
|
ld [StringBuffer1 + 1], a
|
|
pop af
|
|
ld [StringBuffer1 + 0], a
|
|
ret
|
|
; f963
|
|
|
|
Functionf963: ; f963
|
|
ld a, [CurPartyMon]
|
|
call AddNTimes
|
|
|
|
Functionf969: ; f969
|
|
ld a, [$cfa9]
|
|
ld c, a
|
|
ld b, 0
|
|
add hl, bc
|
|
ret
|
|
; f971
|
|
|