shithub: pokecrystal

ref: ddfda26725e22efacb2a7a63ec31eec2dbd39916
dir: /items/item_effects.asm/

View raw version
MasterBall:
UltraBall:
GreatBall:
PokeBall:
HeavyBall:
LevelBall:
LureBall:
FastBall:
FriendBall:
MoonBall:
LoveBall:
ParkBall: ; e8a2
	ld a, [IsInBattle]
	dec a
	jp nz, $77a0
	ld a, [PartyCount]
	cp $6
	jr nz, .asm_e8c0
	ld a, $1
	call GetSRAMBank

	ld a, [$ad10]
	cp $14
	call CloseSRAM

	jp z, $77dc

.asm_e8c0
	xor a
	ld [$c64e], a
	ld a, [CurItem]
	cp $b1
	call nz, $6dfa

	ld hl, Options
	res 4, [hl]
	ld hl, $783d
	call $1057

	ld a, [EnemyMonCatchRate]
	ld b, a
	ld a, [BattleType]
	cp $3
	jp z, .asm_e99c
	ld a, [CurItem]
	cp $1
	jp z, .asm_e99c
	ld a, [CurItem]
	ld c, a
	ld hl, Table_0xec0a

.asm_e8f2
	ld a, [hli]
	cp $ff
	jr z, .asm_e906
	cp c
	jr z, .asm_e8fe
	inc hl
	inc hl
	jr .asm_e8f2

.asm_e8fe
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $6906
	push de
	jp [hl]

.asm_e906
	ld a, [CurItem]
	cp $9f
	ld a, b
	jp z, $698e
	ld a, b
	ld [$ffb6], a
	ld hl, EnemyMonHPHi
	ld b, [hl]
	inc hl
	ld c, [hl]
	inc hl
	ld d, [hl]
	inc hl
	ld e, [hl]
	sla c
	rl b
	ld h, d
	ld l, e
	add hl, de
	add hl, de
	ld d, h
	ld e, l
	ld a, d
	and a
	jr z, .asm_e940
	srl d
	rr e
	srl d
	rr e
	srl b
	rr c
	srl b
	rr c
	ld a, c
	and a
	jr nz, .asm_e940
	ld c, $1

.asm_e940
	ld b, e
	push bc
	ld a, b
	sub c
	ld [hMultiplier], a
	xor a
	ld [hProduct], a
	ld [hMultiplicand], a
	ld [$ffb5], a
	call Multiply

	pop bc
	ld a, b
	ld [hMultiplier], a
	ld b, $4
	call Divide

	ld a, [$ffb6]
	and a
	jr nz, .asm_e960
	ld a, $1

.asm_e960
	ld b, a
	ld a, [EnemyMonStatus]
	and $27
	ld c, $a
	jr nz, .asm_e971
	and a
	ld c, $5
	jr nz, .asm_e971
	ld c, $0

.asm_e971
	ld a, b
	add c
	jr nc, .asm_e977
	ld a, $ff

.asm_e977
	ld d, a
	push de
	ld a, [BattleMonItem]
	callba GetItem

	ld a, b
	cp $46
	pop de
	ld a, d
	jr nz, .asm_e98e
	add c
	jr nc, .asm_e98e
	ld a, $ff

.asm_e98e
	ld b, a
	ld [MagikarpLength], a
	call Random

	cp b
	ld a, $0
	jr z, .asm_e99c
	jr nc, .asm_e99f

.asm_e99c
	ld a, [EnemyMonSpecies]

.asm_e99f
	ld [$c64e], a
	ld c, $14
	call DelayFrames

	ld a, [CurItem]
	cp $6
	jr c, .asm_e9b0

	ld a, $5

.asm_e9b0
	ld [$c689], a
	ld de, $0100
	ld a, e
	ld [FXAnimIDLo], a
	ld a, d
	ld [FXAnimIDHi], a
	xor a
	ld [hBattleTurn], a
	ld [Buffer2], a
	ld [$cfca], a
	ld a, $37
	call Predef

	ld a, [$c64e]
	and a
	jr nz, .asm_e9f5
	ld a, [Buffer2]
	cp $1
	ld hl, $6db5
	jp z, $6bdc
	cp $2
	ld hl, $6dba
	jp z, $6bdc
	cp $3
	ld hl, $6dbf
	jp z, $6bdc
	cp $4
	ld hl, $6dc4
	jp z, $6bdc

.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, $84
	ld [TempEnemyMonSpecies], a
	jr .asm_ea27

.asm_ea1a
	set 3, [hl]
	ld hl, $c6f2
	ld a, [EnemyMonAtkDefDV]
	ld [hli], a
	ld a, [EnemyMonSpdSpclDV]
	ld [hl], a

.asm_ea27
	ld a, [TempEnemyMonSpecies]
	ld [CurPartySpecies], a
	ld a, [EnemyMonLevel]
	ld [CurPartyLevel], a
	callba LoadEnemyMon

	pop af
	ld [EnemySubStatus5], a
	pop hl
	pop af
	ld [hl], a
	pop hl
	pop af
	ld [hld], a
	pop af
	ld [hld], a
	dec hl
	pop af
	ld [hl], a
	ld hl, EnemySubStatus5
	bit 3, [hl]
	jr nz, .asm_ea67
	ld hl, $c735
	ld de, EnemyMonMove1
	ld bc, $0004
	call CopyBytes

	ld hl, $c739
	ld de, EnemyMonPPMove1
	ld bc, $0004
	call CopyBytes

.asm_ea67
	ld a, [EnemyMonSpecies]
	ld [$c64e], a
	ld [CurPartySpecies], a
	ld [$d265], a
	ld a, [BattleType]
	cp $3
	jp z, $6bd9
	callba Function10607f

	ld hl, $6dc9
	call $1057

	call ClearSprites

	ld a, [$d265]
	dec a
	call $3393

	ld a, c
	push af
	ld a, [$d265]
	dec a
	call $3380

	pop af
	and a
	jr nz, .asm_eab7
	call $2ead

	jr z, .asm_eab7
	ld hl, $6df0
	call $1057

	call ClearSprites

	ld a, [EnemyMonSpecies]
	ld [$d265], a
	ld a, $43
	call Predef

.asm_eab7
	ld a, [BattleType]
	cp $6
	jp z, $6bd1
	cp $b
	jr nz, .asm_eac8
	ld hl, $d0ee
	set 6, [hl]

.asm_eac8
	ld a, [PartyCount]
	cp $6
	jr z, .asm_eb3c
	xor a
	ld [MonType], a
	call ClearSprites

	ld a, $6
	call Predef

	callba Function4db49

	ld a, [CurItem]
	cp $a4
	jr nz, .asm_eaf8
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Happiness
	ld bc, $0030
	call AddNTimes

	ld a, $c8
	ld [hl], a

.asm_eaf8
	ld hl, $6df5
	call $1057

	ld a, [CurPartySpecies]
	ld [$d265], a
	call $343b

	call $1dcf

	jp c, $6be2

	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	ld hl, PartyMon1Nickname
	ld bc, $000b
	call AddNTimes

	ld d, h
	ld e, l
	push de
	xor a
	ld [MonType], a
	ld b, $0
	callba Function116c1

	call $04b6

	call $0e51

	pop hl
	ld de, StringBuffer1
	call InitName

	jp $6be2

.asm_eb3c
	call ClearSprites

	ld a, $9
	call Predef

	callba Function4db83

	ld a, $1
	call GetSRAMBank

	ld a, [$ad10]
	cp $14
	jr nz, .asm_eb5b
	ld hl, $d0ee
	set 7, [hl]

.asm_eb5b
	ld a, [CurItem]
	cp $a4
	jr nz, .asm_eb67
	ld a, $c8
	ld [$ad41], a

.asm_eb67
	call CloseSRAM

	ld hl, $6df5
	call $1057

	ld a, [CurPartySpecies]
	ld [$d265], a
	call $343b

	call $1dcf

	jr c, .asm_ebaf

	xor a
	ld [CurPartyMon], a
	ld a, BOXMON
	ld [MonType], a
	ld de, $d050
	ld b, $0
	callba Function116c1

	ld a, $1
	call GetSRAMBank

	ld hl, $d050
	ld de, $b082
	ld bc, $000b
	call CopyBytes

	ld hl, $b082
	ld de, StringBuffer1
	call InitName

	call CloseSRAM

.asm_ebaf
	ld a, $1
	call GetSRAMBank

	ld hl, $b082
	ld de, $d050
	ld bc, $000b
	call CopyBytes

	call CloseSRAM

	ld hl, $6deb
	call $1057

	call $04b6

	call $0e51

	jr .asm_ebe2

	callba Functione6ce

	jr .asm_ebe2

	ld hl, $6dc9
	call $1057

	call ClearSprites

.asm_ebe2
	ld a, [BattleType]
	cp $3
	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 $2f53

.asm_ec05
	ld hl, $dc79
	dec [hl]
	ret
; ec0a


Table_0xec0a: ; ec0a
	dbw ULTRA_BALL, Function_0xec29
	dbw GREAT_BALL, Function_0xec2f
	dbw MOON_STONE, Function_0xec2f
	dbw HEAVY_BALL, Function_0xec50
	dbw LEVEL_BALL, Function_0xed8c
	dbw LURE_BALL,  Function_0xeccc
	dbw FAST_BALL,  Function_0xed68
	dbw MOON_BALL,  Function_0xecdd
	dbw LOVE_BALL,  Function_0xed12
	dbw PARK_BALL,  Function_0xec2f
	db $ff
; ec29


Function_0xec29: ; ec29
	sla b
	ret nc
	ld b, $ff
	ret
; ec2f


Function_0xec2f: ; ec2f
	ld a, b
	srl a
	add b
	ld b, a
	ret nc
	ld b, $ff
	ret
; ec38


GetPokedexEntryBank: ; ec38
	push hl
	push de
	ld a, [EnemyMonSpecies]
	rlca
	rlca
	and 3
	ld hl, .PokedexEntryBanks
	ld d, 0
	ld e, a
	add hl, de
	ld a, [hl]
	pop de
	pop hl
	ret

.PokedexEntryBanks
	db BANK(PokedexEntries1)
	db BANK(PokedexEntries2)
	db BANK(PokedexEntries3)
	db BANK(PokedexEntries4)
; ec50

Function_0xec50: ; ec50
	ld a, [EnemyMonSpecies]
	ld hl, PokedexDataPointerTable
	dec a
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	ld a, BANK(PokedexDataPointerTable)
	call GetFarHalfword

.SkipText
	call GetPokedexEntryBank
	call GetFarByte
	inc hl
	cp "@"
	jr nz, .SkipText

	call GetPokedexEntryBank
	push bc
	inc hl
	inc hl
	call GetFarHalfword

	srl h
	rr l
	ld b, h
	ld c, l
	srl b
	rr c
	srl b
	rr c
	srl b
	rr c
	srl b
	rr c
	call .asm_ec99

	srl b
	rr c
	call .asm_ec99

	ld a, h
	pop bc
	jr .asm_eca4

.asm_ec99
	push bc
	ld a, b
	cpl
	ld b, a
	ld a, c
	cpl
	ld c, a
	inc bc
	add hl, bc
	pop bc
	ret

.asm_eca4
	ld c, a
	cp $4
	jr c, .asm_ecbc

	ld hl, .table_ecc4
.asm_ecac
	ld a, c
	cp [hl]
	jr c, .asm_ecb4
	inc hl
	inc hl
	jr .asm_ecac

.asm_ecb4
	inc hl
	ld a, b
	add [hl]
	ld b, a
	ret nc
	ld b, $ff
	ret

.asm_ecbc
	ld a, b
	sub 20
	ld b, a
	ret nc
	ld b, $1
	ret

.table_ecc4
	db 8, 0
	db 12, 20
	db 16, 30
	db 255, 40
; eccc


Function_0xeccc: ; eccc
	ld a, [BattleType]
	cp $4
	ret nz
	ld a, b
	add a
	jr c, .asm_ecd9

	add b
	jr nc, .asm_ecdb

.asm_ecd9
	ld a, $ff

.asm_ecdb
	ld b, a
	ret
; ecdd


Function_0xecdd: ; ecdd
	push bc
	ld a, [TempEnemyMonSpecies]
	dec a
	ld c, a
	ld b, $0
	ld hl, $65b1
	add hl, bc
	add hl, bc
	ld a, $10
	call GetFarHalfword

	pop bc
	push bc
	ld a, $10
	call GetFarByte

	cp $2
	pop bc
	ret nz
	inc hl
	inc hl
	inc hl
	push bc
	ld a, $10
	call GetFarByte

	cp $a
	pop bc
	ret nz
	sla b
	jr c, .asm_ed0f

	sla b
	jr nc, .asm_ed11

.asm_ed0f
	ld b, $ff

.asm_ed11
	ret
; ed12


Function_0xed12: ; ed12
	ld a, [TempEnemyMonSpecies]
	ld c, a
	ld a, [TempBattleMonSpecies]
	cp c
	ret nz

	push bc
	ld a, [TempBattleMonSpecies]
	ld [CurPartySpecies], a
	xor a
	ld [MonType], a
	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	callba GetGender
	jr c, .asm_ed66

	ld d, 0
	jr nz, .asm_ed39
	inc d
.asm_ed39

	push de
	ld a, [TempEnemyMonSpecies]
	ld [CurPartySpecies], a
	ld a, WILDMON
	ld [MonType], a
	callba GetGender
	jr c, .asm_ed65

	ld d, 0
	jr nz, .asm_ed52
	inc d
.asm_ed52

	ld a, d
	pop de
	cp d
	pop bc
	ret nz

	sla b
	jr c, .asm_ed62
	sla b
	jr c, .asm_ed62
	sla b
	ret nc
.asm_ed62
	ld b, $ff
	ret

.asm_ed65
	pop de

.asm_ed66
	pop bc
	ret
; ed68


Function_0xed68: ; ed68
	ld a, [TempEnemyMonSpecies]
	ld c, a
	ld hl, $459a
	ld d, $3

.asm_ed71
	ld a, $f
	call GetFarByte

	inc hl
	cp $ff
	jr z, .asm_ed88
	cp c
	jr nz, .asm_ed88
	sla b
	jr c, .asm_ed85

	sla b
	ret nc

.asm_ed85
	ld b, $ff
	ret

.asm_ed88
	dec d
	jr nz, .asm_ed71
	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


INCBIN "baserom.gbc", $edab, $edfa - $edab

; known jump sources: e8c9 (3:68c9), f7a0 (3:77a0)
Functionedfa: ; edfa (3:6dfa)
	callba Function2715c
	ret

Item06: ; ee01
	callba Function91ae1
	ret
; ee08


Bicycle: ; ee08
	callba Functiond0b3
	ret
; ee0f


MoonStone:
FireStone:
Thunderstone:
WaterStone:
LeafStone:
SunStone: ; ee0f
	ld b, $5
	call $71f9

	jp c, $6e38

	ld a, $1
	call GetPartyParamLocation

	ld a, [hl]
	cp $70
	jr z, .asm_ee35
	ld a, $1
	ld [$d1e9], a
	callba Function421d8

	ld a, [$d268]
	and a
	jr z, .asm_ee35
	jp $7795

.asm_ee35
	call $77f2

	xor a
	ld [$d0ec], a
	ret
; ee3d


HpUp:
Protein:
Iron:
Carbos:
Calcium: ; ee3d
	ld b, $1
	call $71f9

	jp c, $6e9f

	call $6ef5

	call $6ed9

	ld a, $b
	call GetPartyParamLocation

	add hl, bc
	ld a, [hl]
	cp $64
	jr nc, .asm_ee83
	add $a
	ld [hl], a
	call $6e8c

	call $6ed9

	ld hl, $6eab
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, StringBuffer2
	ld bc, $000d
	call CopyBytes

	call $7780

	ld hl, $6ea6
	call $1057

	ld c, $2
	callba ChangeHappiness

	jp $7795

.asm_ee83
	ld hl, $781f
	call $1057

	jp ClearPalettes
; ee8c


INCBIN "baserom.gbc", $ee8c, $ef14 - $ee8c


RareCandy: ; ef14
	ld b, $1
	call $71f9

	jp c, $6e9f

	call $6ef5

	ld a, $1f
	call GetPartyParamLocation

	ld a, [hl]
	cp $64
	jp nc, $6e83
	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 $6e8c

	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 $724a

	xor a
	ld [MonType], a
	ld a, $1f
	call Predef

	ld hl, $c4a9
	ld b, $a
	ld c, $9
	call $0fe8

	ld hl, $c4bf
	ld bc, $0004
	ld a, $28
	call Predef

	call $0a80

	xor a
	ld [MonType], a
	ld a, [CurPartySpecies]
	ld [$d265], a
	ld a, $1a
	call Predef

	xor a
	ld [$d1e9], a
	callba Function421d8

	jp $7795
; efad


HealPowder: ; efad
	ld b, $1
	call $71f9

	jp c, $729e

	call $6fda

	cp $0
	jr nz, .asm_efc9
	ld c, $f
	callba ChangeHappiness

	call $77d6

	ld a, $0

.asm_efc9
	jp $709e
; efcc


Antidote:
BurnHeal:
IceHeal:
Awakening:
ParlyzHeal:
FullHeal:
Psncureberry:
Przcureberry:
BurntBerry:
IceBerry:
MintBerry:
Miracleberry: ; efcc
	ld b, $1
	call $71f9

	jp c, $729e

	call $6fda

	jp $709e
; efda


; known jump sources: efb5 (3:6fb5), efd4 (3:6fd4)
Functionefda: ; efda (3:6fda)
	call Functionf30d
	ld a, $1
	ret z
	call Functionf058
	ld a, $20
	call GetPartyParamLocation
	ld a, [hl]
	and c
	jr nz, .asm_eff4
	call Functionf009
	ld a, $1
	ret nc
	ld b, $f9
.asm_eff4
	xor a
	ld [hl], a
	ld a, b
	ld [PartyMenuActionText], a ; $d141
	call Functionf030
	call Functionf780
	call Functionf279
	call Functionf795
	ld a, $0
	ret

; known jump sources: efec (3:6fec)
Functionf009: ; f009 (3:7009)
	call Functionf2a6
	jr nc, .asm_f01c
	ld a, [PlayerSubStatus3] ; $c66a
	bit 7, a
	jr z, .asm_f01c
	ld a, c
	cp $ff
	jr nz, .asm_f01c
	scf
	ret
.asm_f01c
	and a
	ret

; known jump sources: f156 (3:7156), f1c7 (3:71c7)
Functionf01e: ; f01e (3:701e)
	call Functionf2a6
	ret nc
	ld a, $22
	call GetPartyParamLocation
	ld a, [hli]
	ld [BattleMonHP], a ; $c63c
	ld a, [hld]
	ld [$c63d], a
	ret

; known jump sources: effa (3:6ffa), f153 (3:7153)
Functionf030: ; f030 (3:7030)
	call Functionf2a6
	ret nc
	xor a
	ld [BattleMonStatus], a ; $c63a
	ld hl, PlayerSubStatus5 ; $c66c
	res 0, [hl]
	ld hl, PlayerSubStatus1 ; $c668
	res 0, [hl]
	call Functionf058
	ld a, c
	cp $ff
	jr nz, .asm_f04f
	ld hl, PlayerSubStatus3 ; $c66a
	res 7, [hl]
.asm_f04f
	push bc
	callba Function0x365d7
	pop bc
	ret

; known jump sources: efe0 (3:6fe0), f042 (3:7042)
Functionf058: ; f058 (3:7058)
	push hl
	ld a, [CurItem] ; $d106
	ld hl, $7071
	ld bc, $3
.asm_f062
	cp [hl]
	jr z, .asm_f068
	add hl, bc
	jr .asm_f062
.asm_f068
	inc hl
	ld b, [hl]
	inc hl
	ld a, [hl]
	ld c, a
	cp $ff
	pop hl
	ret
; f071 (3:7071)

INCBIN "baserom.gbc",$f071,$f09e - $f071

; 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, $70a3
	rst $28
	ret

; no known jump sources
Jumptable_f0a3: ; f0a3 (3:70a3)
	dw Functionf2a2
	dw Functionf299
	dw Functionf29e


RevivalHerb: ; f0a9
	ld b, $1
	call $71f9

	jp c, $729e

	call $70d6

	cp $0
	jr nz, .asm_f0c5
	ld c, $11
	callba ChangeHappiness

	call $77d6

	ld a, $0

.asm_f0c5
	jp $709e
; f0c8


Revive:
MaxRevive: ; f0c8
	ld b, $1
	call $71f9

	jp c, $729e

	call $70d6

	jp $709e
; f0d6


INCBIN "baserom.gbc", $f0d6, $f128 - $f0d6


FullRestore: ; f128
	ld b, $1
	call $71f9

	jp c, $729e

	call $730d

	jp z, $7299
	call $731b

	jr c, .asm_f13e

	jp $6fd4

.asm_f13e
	call $7144

	jp $709e
; f144


INCBIN "baserom.gbc", $f144, $f16a - $f144


BitterBerry: ; f16a
	ld hl, PlayerSubStatus3
	bit 7, [hl]
	ld a, $1
	jr z, .asm_f183
	res 7, [hl]
	xor a
	ld [hBattleTurn], a
	call $7789

	ld hl, $4d81
	call StdBattleTextBox

	ld a, $0

.asm_f183
	jp $709e
; f186


MaxPotion:
HyperPotion:
SuperPotion:
Potion:
FreshWater:
SodaPop:
Lemonade:
MoomooMilk:
Ragecandybar:
BerryJuice:
Berry:
GoldBerry: ; f186
	call $71a9
	jp $709e
; f18c


Energypowder: ; f18c
	ld c, $f
	jr Function_0xf192
; f190

EnergyRoot: ; f190
	ld c, $10
; f192

Function_0xf192: ; f192
	push bc
	call $71a9

	pop bc
	cp $0
	jr nz, .asm_f1a6
	callba ChangeHappiness

	call $77d6

	ld a, $0

.asm_f1a6
	jp $709e
; 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, $4
	call WaitPlaySFX
	pop de
	ld a, [CurPartyMon] ; $d109
	ld hl, $c4ab
	ld bc, $28
	call AddNTimes
	ld a, $2
	ld [$d10a], a
	ld a, $b
	jp Predef

; known jump sources: ee11 (3:6e11), ee3f (3:6e3f), ef16 (3:6f16), efaf (3:6faf), efce (3:6fce), f0ab (3:70ab), f0ca (3:70ca), f12a (3:712a), f1ab (3:71ab), f5c7 (3:75c7)
Functionf1f9: ; f1f9 (3:71f9)
	call Functionf20b
	ret c
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr nz, .asm_f209
	call Functionf7e8
	scf
	ret
.asm_f209
	and a
	ret

; known jump sources: f1f9 (3:71f9)
Functionf20b: ; f20b (3:720b)
	ld a, b
	ld [PartyMenuActionText], a ; $d141
	push hl
	push de
	push bc
	call WhiteBGMap
	call Functionf21c
	pop bc
	pop de
	pop hl
	ret

; known jump sources: f215 (3:7215), f41f (3:741f)
Functionf21c: ; f21c (3:721c)
	callba Function5004f
	callba Function50405
	callba Function503e0
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9
	call DelayFrame
	callba PartyMenuSelect
	ret

; known jump sources: ef6d (3:6f6d), f28a (3:728a), f40d (3:740d)
Functionf24a: ; f24a (3:724a)
	ld [PartyMenuActionText], a ; $d141
	ld a, [CurPartySpecies] ; $d108
	push af
	ld a, [CurPartyMon] ; $d109
	push af
	push hl
	push de
	push bc
	callba WritePartyMenuTilemap
	callba Function50566
	call WaitBGMap
	call Function32f9
	call DelayFrame
	pop bc
	pop de
	pop hl
	pop af
	ld [CurPartyMon], a ; $d109
	pop af
	ld [CurPartySpecies], a ; $d108
	ret

; known jump sources: f000 (3:7000), f11f (3:711f), f161 (3:7161), f1d2 (3:71d2)
Functionf279: ; f279 (3:7279)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	ld a, [PartyMenuActionText] ; $d141
	call Functionf24a
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $32
	call DelayFrames
	jp Functiona80

; known jump sources: f133 (3:7133)
Functionf299: ; f299 (3:7299)
	call Functionf7f2
	jr Functionf2a2

; known jump sources: efb2 (3:6fb2), efd1 (3:6fd1), f0ae (3:70ae), f0cd (3:70cd), f12d (3:712d)
Functionf29e: ; f29e (3:729e)
	xor a
	ld [$d0ec], a

; known jump sources: f29c (3:729c)
Functionf2a2: ; f2a2 (3:72a2)
	call ClearPalettes
	ret

; known jump sources: f009 (3:7009), f01e (3:701e), f030 (3:7030)
Functionf2a6: ; f2a6 (3:72a6)
	ld a, [IsInBattle] ; $d22d (aliases: EnemyMonEnd)
	and a
	ret z
	ld a, [CurPartyMon] ; $d109
	push hl
	ld hl, CurBattleMon ; $d0d4
	cp [hl]
	pop hl
	jr nz, .asm_f2b8
	scf
	ret
.asm_f2b8
	xor a
	ret

; known jump sources: f114 (3:7114)
Functionf2ba: ; f2ba (3:72ba)
	call Functionf36f
	srl d
	rr e
	jr asm_f2c6

; known jump sources: f10f (3:710f), f148 (3:7148), f2f5 (3:72f5)
Functionf2c3: ; f2c3 (3:72c3)
	call Functionf36f
asm_f2c6: ; f2c6 (3:72c6)
	ld a, $22
	call GetPartyParamLocation
	ld [hl], d
	inc hl
	ld [hl], e
	jp Functionf328

; known jump sources: f1c4 (3:71c4), f405 (3:7405)
Functionf2d1: ; f2d1 (3:72d1)
	ld a, $23
	call GetPartyParamLocation
	ld a, [hl]
	add e
	ld [hld], a
	ld a, [hl]
	adc d
	ld [hl], a
	jr c, .asm_f2f5
	call Functionf328
	ld a, $23
	call GetPartyParamLocation
	ld d, h
	ld e, l
	ld a, $25
	call GetPartyParamLocation
	ld a, [de]
	sub [hl]
	dec de
	dec hl
	ld a, [de]
	sbc [hl]
	jr c, .asm_f2f8
.asm_f2f5
	call Functionf2c3
.asm_f2f8
	ret

; known jump sources: f3f3 (3:73f3)
Functionf2f9: ; f2f9 (3:72f9)
	ld a, $23
	call GetPartyParamLocation
	ld a, [hl]
	sub e
	ld [hld], a
	ld a, [hl]
	sbc d
	ld [hl], a
	jr nc, .asm_f309
	xor a
	ld [hld], a
	ld [hl], a
.asm_f309
	call Functionf328
	ret

; known jump sources: efda (3:6fda), f0d6 (3:70d6), f130 (3:7130), f1b1 (3:71b1), f3ed (3:73ed), f402 (3:7402), f432 (3:7432)
Functionf30d: ; f30d (3:730d)
	push de
	call Functionf35f
	call Functionf348
	call Functionf356
	ld a, d
	or e
	pop de
	ret

; known jump sources: f136 (3:7136), f1b7 (3:71b7), f437 (3:7437)
Functionf31b: ; f31b (3:731b)
	call Functionf356
	ld h, d
	ld l, e
	call Functionf36f
	ld a, l
	sub e
	ld a, h
	sbc d
	ret

; known jump sources: f2ce (3:72ce), f2de (3:72de), f309 (3:7309)
Functionf328: ; f328 (3:7328)
	ld a, $22
	call GetPartyParamLocation
	ld a, [hli]
	ld [$d1ef], a
	ld a, [hl]
	ld [$d1ee], a
	ret
; f336 (3:7336)

INCBIN "baserom.gbc",$f336,$f348 - $f336

; 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, $73af
	ld d, a
.asm_f39d
	ld a, [hli]
	cp $ff
	jr z, .asm_f3a9
	cp d
	jr z, .asm_f3aa
	inc hl
	inc hl
	jr .asm_f39d
.asm_f3a9
	scf
.asm_f3aa
	ld e, [hl]
	inc hl
	ld d, [hl]
	pop hl
	ret
; f3af (3:73af)

INCBIN "baserom.gbc",$f3af,$f3df - $f3af

Functionf3df: ; f3df (3:73df)
	ld a, [$d0d8]
	dec a
	ld b, a
	call Functionf419
	jr c, .asm_f413
	ld a, b
	ld [CurPartyMon], a ; $d109
	call Functionf30d
	call Functionf378
	call Functionf2f9
	push bc
	call Functionf1db
	pop bc
	call Functionf378
	ld a, c
	ld [CurPartyMon], a ; $d109
	call Functionf30d
	call Functionf2d1
	call Functionf1db
	ld a, $f5
	call Functionf24a
	call Functiona36
.asm_f413
	ld a, b
	inc a
	ld [$d0d8], a
	ret

; known jump sources: f3e4 (3:73e4), f448 (3:7448)
Functionf419: ; f419 (3:7419)
	push bc
	ld a, $1
	ld [PartyMenuActionText], a ; $d141
	call Functionf21c
	pop bc
	jr c, .asm_f43e
	ld a, [$d0d8]
	dec a
	ld c, a
	ld a, b
	cp c
	jr z, .asm_f440
	ld a, c
	ld [CurPartyMon], a ; $d109
	call Functionf30d
	jr z, .asm_f440
	call Functionf31b
	jr nc, .asm_f440
	xor a
	ret
.asm_f43e
	scf
	ret
.asm_f440
	push bc
	ld hl, $744a
	call Function1d67
	pop bc
	jr Functionf419
; f44a (3:744a)

INCBIN "baserom.gbc",$f44a,$f44f - $f44a

EscapeRope: ; f44f
	xor a
	ld [$d0ec], a
	callba Functioncb95

	ld a, [$d0ec]
	cp $1
	call z, $7795
	ret
; f462


SuperRepel: ; f462
	ld b, $c8
	jr Function_0xf46c
; f466

MaxRepel: ; f466
	ld b, $fa
	jr Function_0xf46c
; f466

Repel: ; f46a
	ld b, $64
; f46c

Function_0xf46c: ; f46c
	ld a, [$dca1]
	and a
	ld hl, $747d
	jp nz, $1057
	ld a, b
	ld [$dca1], a
	jp $7789
; f47d


INCBIN "baserom.gbc", $f47d, $f482 - $f47d


XAccuracy: ; f482
	ld hl, PlayerSubStatus4
	bit 0, [hl]
	jp nz, $77ca
	set 0, [hl]
	jp $7789
; 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 $7789

.asm_f4a6
	xor a
	ld [$d0ec], a
	ret
; f4ab


GuardSpec: ; f4ab
	ld hl, PlayerSubStatus4
	bit 1, [hl]
	jp nz, $77ca
	set 1, [hl]
	jp $7789
; f4b8


DireHit: ; f4b8
	ld hl, PlayerSubStatus4
	bit 2, [hl]
	jp nz, $77ca
	set 2, [hl]
	jp $7789
; f4c5


XAttack:
XDefend:
XSpeed:
XSpecial: ; f4c5
	call $7789

	ld a, [CurItem]
	ld hl, $7504

.asm_f4ce
	cp [hl]
	jr z, .asm_f4d5
	inc hl
	inc hl
	jr .asm_f4ce

.asm_f4d5
	inc hl
	ld b, [hl]
	xor a
	ld [hBattleTurn], a
	ld [AttackMissed], a
	ld [$c70d], a
	callba Function0x361ef

	call WaitSFX

	callba BattleCommand8c

	callba BattleCommand8e

	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	ld c, $3
	callba ChangeHappiness
	ret
; f504


INCBIN "baserom.gbc", $f504, $f50c - $f504


Item38: ; f50c
	ld a, [IsInBattle]
	and a
	jr nz, .asm_f512

.asm_f512
	xor a
	ld [DefaultFlypoint], 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, [DefaultFlypoint]
	and a
	ld hl, UnknownText_0xf56c
	jp z, $1057
	ld hl, UnknownText_0xf576
	call $1057

	ld a, [Danger]
	and $80
	jr nz, .asm_f54e

.asm_f54e
	ld hl, UnknownText_0xf571
	jp $1057


.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 [DefaultFlypoint], a

.asm_f564
	pop af
	and b
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_f559
	ret
; f56c


UnknownText_0xf56c: ; 0xf56c
	text_jump UnknownText_0x1c5bf9, BANK(UnknownText_0x1c5bf9)
	db "@"
; 0xf571

UnknownText_0xf571: ; 0xf571
	text_jump UnknownText_0x1c5c28, BANK(UnknownText_0x1c5c28)
	db "@"
; 0xf576

UnknownText_0xf576: ; 0xf576
	text_jump UnknownText_0x1c5c44, BANK(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 $13e0
; f58f


BlueCard: ; f58f
	ld hl, .bluecardtext
	jp $2012

.bluecardtext
	text_jump UnknownText_0x1c5c5e, BANK(UnknownText_0x1c5c5e)
	db "@"
; f59a


CoinCase: ; f59a
	ld hl, .coincasetext
	jp $2012

.coincasetext
	text_jump UnknownText_0x1c5c7b, BANK(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 [DefaultFlypoint], a

.asm_f5c5
	ld b, $1
	call $71f9

	jp c, $76e0

.asm_f5cd
	ld a, [DefaultFlypoint]
	cp $15
	jp z, $76af
	cp $41
	jp z, $76af
	ld hl, $7725
	ld a, [DefaultFlypoint]
	cp $3e
	jr z, .asm_f5e7
	ld hl, $772a

.asm_f5e7
	call $1057

	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, PartyMon1Move1
	ld bc, $0030
	call $7963

	push hl
	ld a, [hl]
	ld [$d265], a
	call $34f8

	call CopyName1

	pop hl
	ld a, [DefaultFlypoint]
	cp $3e
	jp nz, $76a7
	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, $772f
	call $1057

	jr .asm_f5cd

.asm_f637
	ld a, [hl]
	add $40
	ld [hl], a
	ld a, $1
	ld [$d265], a
	call $784c

	call $7780

	ld hl, $7734
	call $1057

	call ClearPalettes

	jp $7795
; f652


INCBIN "baserom.gbc", $f652, $f73e - $f652


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 $7795
	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 $1057

	jp $7795
; f778

UnknownText_0xf778: ; 0xf778
	text_jump UnknownText_0x1c5d03, BANK(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 $77ed
; f780