shithub: pokecrystal

ref: 2ec12a22af7f54b927a51ee9802b7727ca755cdb
dir: /main.asm/

View raw version
INCLUDE "includes.asm"


SECTION "Hardware", ROM0

INCLUDE "rst.asm"
INCLUDE "interrupts.asm"


SECTION "Header", ROM0[$100]

Start:
	nop
	jp _Start


SECTION "Home", ROM0[$150]

INCLUDE "home/init.asm"
INCLUDE "home/vblank.asm"
INCLUDE "home/delay.asm"
INCLUDE "home/rtc.asm"
INCLUDE "home/fade.asm"
INCLUDE "home/lcd.asm"
INCLUDE "home/time.asm"
INCLUDE "home/serial.asm"
INCLUDE "home/joypad.asm"
INCLUDE "home/decompress.asm"
INCLUDE "home/palettes.asm"
INCLUDE "home/copy.asm"
INCLUDE "home/text.asm"
INCLUDE "home/video.asm"
INCLUDE "home/map_objects.asm"
INCLUDE "home/sine.asm"
INCLUDE "home/movement.asm"
INCLUDE "home/tilemap.asm"
INCLUDE "home/menu.asm"
INCLUDE "home/handshake.asm"
INCLUDE "home/game_time.asm"
INCLUDE "home/map.asm"


Function2d43: ; 2d43
; Inexplicably empty.
; Seen in PredefPointers.
	rept 16
	nop
	endr
	ret
; 2d54


INCLUDE "home/farcall.asm"
INCLUDE "home/predef.asm"
INCLUDE "home/window.asm"


Function2e4e: ; 2e4e
	scf
	ret
; 2e50


INCLUDE "home/flag.asm"


Function2ebb: ; 2ebb
	ld a, [$c2cc]
	bit 1, a
	ret z
	ld a, [hJoyDown]
	bit A_BUTTON, a
	ret
; 2ec6


Function2ec6: ; 2ec6
	xor a
	ret
; 2ec8

Function2ec8: ; 2ec8
	xor a
	dec a
	ret
; 2ecb

Function2ecb: ; 2ecb
	push hl
	ld hl, $c2cc
	bit 1, [hl]
	pop hl
	ret
; 2ed3


Function2ed3: ; 0x2ed3
; disables overworld sprite updating?
	xor a
	ld [$ffde], a
	ld a, [VramState]
	res 0, a
	ld [VramState], a
	ld a, $0
	ld [$c2ce], a
	ret
; 0x2ee4

Function2ee4: ; 2ee4
	ld a, $1
	ld [$c2ce], a
	ld a, [VramState]
	set 0, a
	ld [VramState], a
	ld a, $1
	ld [$ffde], a
	ret
; 2ef6


INCLUDE "home/string.asm"


IsInJohto: ; 2f17
; Return 0 if the player is in Johto, and 1 in Kanto.

	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation

	cp FAST_SHIP
	jr z, .Johto

	cp SPECIAL_MAP
	jr nz, .CheckRegion

	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a
	call GetWorldMapLocation

.CheckRegion
	cp KANTO_LANDMARK
	jr nc, .Kanto

.Johto
	xor a
	ret

.Kanto
	ld a, 1
	ret
; 2f3e


Function2f3e: ; 2f3e
	ret
; 2f3f


INCLUDE "home/item.asm"
INCLUDE "home/random.asm"
INCLUDE "home/sram.asm"


; Register aliases

_hl_: ; 2fec
	jp [hl]
; 2fed

_de_: ; 2fed
	push de
	ret
; 2fef


INCLUDE "home/double_speed.asm"


ClearSprites: ; 300b
; Erase OAM data
	ld hl, Sprites
	ld b, SpritesEnd - Sprites
	xor a
.loop
	ld [hli], a
	dec b
	jr nz, .loop
	ret
; 3016

HideSprites: ; 3016
; Set all OAM y-positions to 160 to hide them offscreen
	ld hl, Sprites
	ld de, 4 ; length of an OAM struct
	ld b, (SpritesEnd - Sprites) / 4 ; number of OAM structs
	ld a, 160 ; y
.loop
	ld [hl], a
	add hl, de
	dec b
	jr nz, .loop
	ret
; 3026


INCLUDE "home/copy2.asm"


Function309d: ; 309d
	ld a, [rSVBK]
	push af
	ld a, 2
	ld [rSVBK], a
	ld hl, TileMap
	ld de, $d000
	ld bc, 360
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 30b4

Function30b4: ; 30b4
	xor a
	ld [hBGMapMode], a
	call Function30bf
	ld a, 1
	ld [hBGMapMode], a
	ret
; 30bf

Function30bf: ; 30bf
	ld a, [rSVBK]
	push af
	ld a, 2
	ld [rSVBK], a
	ld hl, $d000
	ld de, TileMap
	ld bc, 360
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 30d6


CopyName1: ; 30d6
	ld hl, StringBuffer2

CopyName2: ; 30d9
.loop
	ld a, [de]
	inc de
	ld [hli], a
	cp "@"
	jr nz, .loop
	ret
; 30e1

IsInArray: ; 30e1
; Find value a for every de bytes in array hl.
; Return index in b and carry if found.

	ld b, 0
	ld c, a
.loop
	ld a, [hl]
	cp $ff
	jr z, .NotInArray
	cp c
	jr z, .InArray
	inc b
	add hl, de
	jr .loop

.NotInArray
	and a
	ret

.InArray
	scf
	ret
; 30f4

SkipNames: ; 0x30f4
; skips n names where n = a
	ld bc, $000b ; name length
	and a
	ret z
.loop
	add hl, bc
	dec a
	jr nz, .loop
	ret
; 0x30fe

AddNTimes: ; 0x30fe
; adds bc n times where n = a
	and a
	ret z
.loop
	add hl, bc
	dec a
	jr nz, .loop
	ret
; 0x3105


INCLUDE "home/math.asm"


PrintLetterDelay: ; 313d
; Wait before printing the next letter.

; The text speed setting in Options is actually a frame count:
; 	fast: 1 frame
; 	mid:  3 frames
; 	slow: 5 frames

; $cfcf[!0] and A or B override text speed with a one-frame delay.
; Options[4] and $cfcf[!1] disable the delay.

; delay off?
	ld a, [Options]
	bit 4, a
	ret nz

; non-scrolling text?
	ld a, [$cfcf]
	bit 1, a
	ret z

	push hl
	push de
	push bc

	ld hl, hOAMUpdate
	ld a, [hl]
	push af

; orginally turned oam update off...
;	ld a, 1
	ld [hl], a

; force fast scroll?
	ld a, [$cfcf]
	bit 0, a
	jr z, .fast

; text speed
	ld a, [Options]
	and %111
	jr .updatedelay

.fast
	ld a, 1

.updatedelay
	ld [TextDelayFrames], a

.checkjoypad
	call GetJoypadPublic

; input override
	ld a, [$c2d7]
	and a
	jr nz, .wait

; Wait one frame if holding A or B.
	ld a, [hJoyDown]
	bit 0, a ; A_BUTTON
	jr z, .checkb
	jr .delay
.checkb
	bit 1, a ; B_BUTTON
	jr z, .wait

.delay
	call DelayFrame
	jr .end

.wait
	ld a, [TextDelayFrames]
	and a
	jr nz, .checkjoypad

.end
	pop af
	ld [hOAMUpdate], a
	pop bc
	pop de
	pop hl
	ret
; 318c


CopyDataUntil: ; 318c
; Copy [hl .. bc) to [de .. de + bc - hl).

; In other words, the source data is
; from hl up to but not including bc,
; and the destination is de.

	ld a, [hli]
	ld [de], a
	inc de
	ld a, h
	cp b
	jr nz, CopyDataUntil
	ld a, l
	cp c
	jr nz, CopyDataUntil
	ret
; 0x3198


PrintNum: ; 3198
	ld a, [hROMBank]
	push af
	ld a, BANK(_PrintNum)
	rst Bankswitch

	call _PrintNum

	pop af
	rst Bankswitch
	ret
; 31a4


Function31a4: ; 31a4
	ld a, [hROMBank]
	push af
	ld a, BANK(Function1061ef)
	rst Bankswitch

	call Function1061ef

	pop af
	rst Bankswitch
	ret
; 31b0


FarPrintText: ; 31b0
	ld [hBuffer], a
	ld a, [hROMBank]
	push af
	ld a, [hBuffer]
	rst Bankswitch

	call PrintText

	pop af
	rst Bankswitch
	ret
; 31be


CallPointerAt: ; 31be
	ld a, [hROMBank]
	push af
	ld a, [hli]
	rst Bankswitch

	ld a, [hli]
	ld h, [hl]
	ld l, a

	call _hl_

	pop hl
	ld a, h
	rst Bankswitch
	ret
; 31cd


Function31cd: ; 31cd
; Push pointer hl in the current bank to $d0e8.
	ld a, [hROMBank]

Function31cf: ; 31cf
; Push pointer a:hl to $d0e8.
	ld [$d0e8], a
	ld a, l
	ld [$d0e9], a
	ld a, h
	ld [$d0ea], a
	ret
; 31db


StringCmp: ; 31db
; Compare c bytes at de and hl.
; Return z if they all match.
	ld a, [de]
	cp [hl]
	ret nz
	inc de
	inc hl
	dec c
	jr nz, StringCmp
	ret
; 0x31e4


CompareLong: ; 31e4
; Compare bc bytes at de and hl.
; Return carry if they all match.

	ld a, [de]
	cp [hl]
	jr nz, .Diff

	inc de
	inc hl
	dec bc

	ld a, b
	or c
	jr nz, CompareLong

	scf
	ret

.Diff
	and a
	ret
; 31f3


WhiteBGMap: ; 31f3
	call ClearPalettes
WaitBGMap: ; 31f6
; Tell VBlank to update BG Map
	ld a, 1 ; BG Map 0 tiles
	ld [hBGMapMode], a
; Wait for it to do its magic
	ld c, 4
	call DelayFrames
	ret
; 3200

Function3200: ; 0x3200
	ld a, [hCGB]
	and a
	jr z, .asm_320e
	ld a, 2
	ld [hBGMapMode], a
	ld c, 4
	call DelayFrames

.asm_320e
	ld a, 1
	ld [hBGMapMode], a
	ld c, 4
	call DelayFrames
	ret
; 0x3218


Function3218: ; 3218
	ld a, [hCGB]
	and a
	ret
; 321c


Function321c: ; 321c
	ld a, [hCGB]
	and a
	jr z, .asm_322e

	ld a, [$c2ce]
	cp 0
	jr z, .asm_322e

	ld a, 1
	ld [hBGMapMode], a
	jr Function323d

.asm_322e
	ld a, 1
	ld [hBGMapMode], a
	ld c, 4
	call DelayFrames
	ret
; 3238

Function3238: ; 3238
	ld a, [hCGB]
	and a
	jr z, WaitBGMap

Function323d: ; 323d
	jr Function3246
; 323f

Function323f: ; 323f
	callba Function104000
	ret
; 3246

Function3246: ; 3246
	ld a, [hBGMapMode]
	push af
	xor a
	ld [hBGMapMode], a
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
.asm_3252
	ld a, [rLY]
	cp $7f
	jr c, .asm_3252 ; 3256 $fa
	di
	ld a, $1
	ld [rVBK], a
	ld hl, AttrMap
	call Function327b
	ld a, $0
	ld [rVBK], a
	ld hl, TileMap
	call Function327b
.asm_326d
	ld a, [rLY]
	cp $7f
	jr c, .asm_326d ; 3271 $fa
	ei
	pop af
	ld [$ffde], a
	pop af
	ld [hBGMapMode], a
	ret
; 327b

Function327b: ; 327b
	ld [hSPBuffer], sp
	ld sp, hl
	ld a, [$ffd7]
	ld h, a
	ld l, $0
	ld a, $12
	ld [$ffd3], a
	ld b, $2
	ld c, $41
.asm_328c
	pop de

rept 9
.loop\@
	ld a, [$ff00+c]
	and b
	jr nz, .loop\@
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
endr

.asm_32de
	ld a, [$ff00+c]
	and b
	jr nz, .asm_32de
	ld [hl], e
	inc l
	ld [hl], d
	inc l

	ld de, $000c
	add hl, de
	ld a, [$ffd3]
	dec a
	ld [$ffd3], a
	jr nz, .asm_328c
	ld a, [hSPBuffer]
	ld l, a
	ld a, [$ffda]
	ld h, a
	ld sp, hl
	ret
; 32f9



Function32f9: ; 32f9
	ld a, [hCGB]
	and a
	jr nz, .asm_3309
	ld a, $e4
	ld [rBGP], a
	ld a, $d0
	ld [rOBP0], a
	ld [rOBP1], a
	ret

.asm_3309
	push de
	ld a, $e4
	call DmgToCgbBGPals
	ld de, $e4e4
	call DmgToCgbObjPals
	pop de
	ret
; 3317


ClearPalettes: ; 3317
; Make all palettes white

; CGB: make all the palette colors white
	ld a, [hCGB]
	and a
	jr nz, .cgb
	
; DMG: just change palettes to 0 (white)
	xor a
	ld [rBGP], a
	ld [rOBP0], a
	ld [rOBP1], a
	ret
	
.cgb
	ld a, [rSVBK]
	push af

	ld a, 5
	ld [rSVBK], a

; Fill BGPals and OBPals with $ffff (white)
	ld hl, BGPals
	ld bc, $80
	ld a, $ff
	call ByteFill

	pop af
	ld [rSVBK], a

; Request palette update
	ld a, 1
	ld [hCGBPalUpdate], a
	ret
; 333e


ClearSGB: ; 333e
	ld b, $ff

GetSGBLayout: ; 3340
; load sgb packets unless dmg

	ld a, [hCGB]
	and a
	jr nz, .dosgb
	
	ld a, [hSGB]
	and a
	ret z
	
.dosgb
	ld a, $31 ; LoadSGBLayout
	jp Predef
; 334e


SetHPPal: ; 334e
; Set palette for hp bar pixel length e at hl.
	call GetHPPal
	ld [hl], d
	ret
; 3353


GetHPPal: ; 3353
; Get palette for hp bar pixel length e in d.

	ld d, 0 ; green
	ld a, e
	cp 24
	ret nc
	inc d ; yellow
	cp 10
	ret nc
	inc d ; red
	ret
; 335f


CountSetBits: ; 0x335f
; Count the number of set bits in b bytes starting from hl.
; Return in a, c and [$d265].

	ld c, 0
.next
	ld a, [hli]
	ld e, a
	ld d, 8

.count
	srl e
	ld a, 0
	adc c
	ld c, a
	dec d
	jr nz, .count

	dec b
	jr nz, .next

	ld a, c
	ld [$d265], a
	ret
; 0x3376


GetWeekday: ; 3376
	ld a, [CurDay]
.mod
	sub 7
	jr nc, .mod
	add 7
	ret
; 3380


INCLUDE "home/pokedex_flags.asm"


NamesPointers: ; 33ab
	dbw BANK(PokemonNames), PokemonNames
	dbw BANK(MoveNames), MoveNames
	dbw 0, 0
	dbw BANK(ItemNames), ItemNames
	dbw 0, PartyMonOT
	dbw 0, OTPartyMonOT
	dbw BANK(TrainerClassNames), TrainerClassNames
	dbw $04, $4b52 ; ????
; 33c3


GetName: ; 33c3
; Return name CurSpecies from name list $cf61 in StringBuffer1.

	ld a, [hROMBank]
	push af
	push hl
	push bc
	push de

	ld a, [$cf61]
	cp 1 ; Pokemon names
	jr nz, .NotPokeName

	ld a, [CurSpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, 11
	add hl, de
	ld e, l
	ld d, h
	jr .done

.NotPokeName
	ld a, [$cf61]
	dec a
	ld e, a
	ld d, 0
	ld hl, NamesPointers
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	rst Bankswitch
	ld a, [hli]
	ld h, [hl]
	ld l, a

	ld a, [CurSpecies]
	dec a
	call GetNthString

	ld de, StringBuffer1
	ld bc, $000d
	call CopyBytes

.done
	ld a, e
	ld [$d102], a
	ld a, d
	ld [$d103], a

	pop de
	pop bc
	pop hl
	pop af
	rst Bankswitch
	ret
; 3411


GetNthString: ; 3411
; Return the address of the
; ath string starting from hl.

	and a
	ret z

	push bc
	ld b, a
	ld c, "@"
.readChar
	ld a, [hli]
	cp c
	jr nz, .readChar
	dec b
	jr nz, .readChar
	pop bc
	ret
; 3420


GetBasePokemonName: ; 3420
; Discards gender (Nidoran).

	push hl
	call GetPokemonName

	ld hl, StringBuffer1
.loop
	ld a, [hl]
	cp "@"
	jr z, .quit
	cp "♂"
	jr z, .end
	cp "♀"
	jr z, .end
	inc hl
	jr .loop
.end
	ld [hl], "@"
.quit
	pop hl
	ret

; 343b


GetPokemonName: ; 343b
; Get Pokemon name $d265.

	ld a, [hROMBank]
	push af
	push hl
	ld a, BANK(PokemonNames)
	rst Bankswitch

; Each name is ten characters
	ld a, [$d265]
	dec a
	ld d, 0
	ld e, a
	ld h, 0
	ld l, a
	add hl, hl
	add hl, hl
	add hl, de
	add hl, hl
	ld de, PokemonNames
	add hl, de

; Terminator
	ld de, StringBuffer1
	push de
	ld bc, PKMN_NAME_LENGTH - 1
	call CopyBytes
	ld hl, StringBuffer1 + PKMN_NAME_LENGTH - 1
	ld [hl], "@"
	pop de

	pop hl
	pop af
	rst Bankswitch
	ret
; 3468


GetItemName: ; 3468
; Get item name $d265.

	push hl
	push bc
	ld a, [$d265]

	cp TM_01
	jr nc, .TM

	ld [CurSpecies], a
	ld a, 4 ; Item names
	ld [$cf61], a
	call GetName
	jr .Copied
.TM
	call GetTMHMName
.Copied
	ld de, StringBuffer1
	pop bc
	pop hl
	ret
; 3487


GetTMHMName: ; 3487
; Get TM/HM name by item id $d265.

	push hl
	push de
	push bc
	ld a, [$d265]
	push af

; TM/HM prefix
	cp HM_01
	push af
	jr c, .TM

	ld hl, .HMText
	ld bc, .HMTextEnd - .HMText
	jr .asm_34a1

.TM
	ld hl, .TMText
	ld bc, .TMTextEnd - .TMText

.asm_34a1
	ld de, StringBuffer1
	call CopyBytes

; TM/HM number
	push de
	ld a, [$d265]
	ld c, a
	callab GetTMHMNumber
	pop de

; HM numbers start from 51, not 1
	pop af
	ld a, c
	jr c, .asm_34b9
	sub NUM_TMS

; Divide and mod by 10 to get the top and bottom digits respectively
.asm_34b9
	ld b, "0"
.mod10
	sub 10
	jr c, .asm_34c2
	inc b
	jr .mod10
.asm_34c2
	add 10

	push af
	ld a, b
	ld [de], a
	inc de
	pop af

	ld b, "0"
	add b
	ld [de], a

; End the string
	inc de
	ld a, "@"
	ld [de], a

	pop af
	ld [$d265], a
	pop bc
	pop de
	pop hl
	ret

.TMText
	db "TM"
.TMTextEnd
	db "@"

.HMText
	db "HM"
.HMTextEnd
	db "@"
; 34df


IsHM: ; 34df
	cp HM_01
	jr c, .NotHM
	scf
	ret
.NotHM
	and a
	ret
; 34e7


IsHMMove: ; 34e7
	ld hl, .HMMoves
	ld de, 1
	jp IsInArray

.HMMoves
	db CUT
	db FLY
	db SURF
	db STRENGTH
	db FLASH
	db WATERFALL
	db WHIRLPOOL
	db $ff
; 34f8


GetMoveName: ; 34f8
	push hl
; move name
	ld a, $2 ; move names
	ld [$cf61], a
; move id
	ld a, [$d265]
	ld [CurSpecies], a

	call GetName
	ld de, StringBuffer1
	pop hl
	ret
; 350c


Function350c: ; 350c
	call Function1c66
	ld a, [hROMBank]
	push af
	ld a, $9
	rst Bankswitch

	call Function245af
	call Function3524
	call Function245cb
	pop af
	rst Bankswitch

	ld a, [$cf73]
	ret
; 3524

Function3524: ; 3524
	ld hl, VramState
	bit 0, [hl]
	jp nz, UpdateTimePals
	jp Function32f9
; 352f

Function352f: ; 352f
	ld a, [$cf82]
	dec a
	ld b, a
	ld a, [$cf84]
	sub b
	ld d, a
	ld a, [$cf83]
	dec a
	ld c, a
	ld a, [$cf85]
	sub c
	ld e, a
	push de
	call GetTileCoord
	pop bc
	jp TextBox
; 354b

Function354b: ; 354b
	call DelayFrame
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	call Functiona57
	pop af
	ld [$ffaa], a
	ld a, [$ffa9]
	and $f0
	ld c, a
	ld a, [hJoyPressed]
	and $f
	or c
	ld c, a
	ret
; 3567


Function3567: ; 3567
	ld a, [hROMBank]
	push af
	call Function2c52
	call Function3574
	pop bc
	ld a, b
	rst Bankswitch

	ret
; 3574

Function3574: ; 3574
	ld hl, $0001
	add hl, de
	ld a, [hl]
	cp $ff
	jr z, .asm_3597
	ld l, a
	push hl
	call Function3599
	pop hl
	jr nc, .asm_3597
	ld d, a
	ld e, l
	call Function35de
	jr nc, .asm_3597
	call Function2631
	callba Function96c56
	scf
	ret

.asm_3597
	and a
	ret
; 3599

Function3599: ; 3599
	push de
	ld hl, $0010
	add hl, de
	ld a, [hl]
	ld hl, $0011
	add hl, de
	ld e, [hl]
	sub $4
	ld d, a
	ld a, e
	sub $4
	ld e, a
	call Function35b0
	pop de
	ret
; 35b0

Function35b0: ; 35b0
	ld hl, $dbfc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$dbfb]
	and a
	jr z, .asm_35d3
.asm_35bc
	push af
	ld a, [hl]
	cp e
	jr nz, .asm_35c8
	inc hl
	ld a, [hld]
	cp d
	jr nz, .asm_35c8
	jr .asm_35d5

.asm_35c8
	ld a, $5
	add l
	ld l, a
	jr nc, .asm_35cf
	inc h

.asm_35cf
	pop af
	dec a
	jr nz, .asm_35bc

.asm_35d3
	and a
	ret

.asm_35d5
	pop af
	ld d, a
	ld a, [$dbfb]
	sub d
	inc a
	scf
	ret
; 35de

Function35de: ; 35de
	inc e
	ld hl, $0001
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
.asm_35e6
	ld a, [hli]
	cp $ff
	jr z, .asm_35fc
	cp d
	jr nz, .asm_35f7
	ld a, [hli]
	cp e
	jr nz, .asm_35f8
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jr .asm_35fe

.asm_35f7
	inc hl

.asm_35f8
	inc hl
	inc hl
	jr .asm_35e6

.asm_35fc
	and a
	ret

.asm_35fe
	scf
	ret
; 3600


CheckTrainerBattle2: ; 3600

	ld a, [hROMBank]
	push af
	call Function2c52

	call CheckTrainerBattle

	pop bc
	ld a, b
	rst Bankswitch
	ret
; 360d


CheckTrainerBattle: ; 360d
; Check if any trainer on the map sees the player and wants to battle.

; Skip the player object.
	ld a, 1
	ld de, MapObjects + OBJECT_LENGTH

.loop

; Start a battle if the object:

	push af
	push de

; Has a sprite
	ld hl, $0001
	add hl, de
	ld a, [hl]
	and a
	jr z, .next

; Is a trainer
	ld hl, $0008
	add hl, de
	ld a, [hl]
	and $f
	cp $2
	jr nz, .next

; Is visible on the map
	ld hl, $0000
	add hl, de
	ld a, [hl]
	cp $ff
	jr z, .next

; Is facing the player...
	call Function1ae5
	call FacingPlayerDistance_bc
	jr nc, .next

; ...within their sight range
	ld hl, $0009
	add hl, de
	ld a, [hl]
	cp b
	jr c, .next

; And hasn't already been beaten
	push bc
	push de
	ld hl, $000a
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld b, CHECK_FLAG
	call EventFlagAction
	ld a, c
	pop de
	pop bc
	and a
	jr z, .asm_3666

.next
	pop de
	ld hl, OBJECT_LENGTH
	add hl, de
	ld d, h
	ld e, l

	pop af
	inc a
	cp NUM_OBJECTS
	jr nz, .loop
	xor a
	ret

.asm_3666
	pop de
	pop af
	ld [$ffe0], a
	ld a, b
	ld [$d03f], a
	ld a, c
	ld [MartPointer], a
	jr Function367e
; 3674

Function3674: ; 3674
	ld a, $1
	ld [$d03f], a
	ld a, $ff
	ld [MartPointer], a

Function367e: ; 367e
	call GetMapScriptHeaderBank
	ld [EngineBuffer1], a
	ld a, [$ffe0]
	call GetMapObject
	ld hl, $000a
	add hl, bc
	ld a, [EngineBuffer1]
	call GetFarHalfword
	ld de, $d041
	ld bc, $000d
	ld a, [EngineBuffer1]
	call FarCopyBytes
	xor a
	ld [$d04d], a
	scf
	ret
; 36a5


FacingPlayerDistance_bc: ; 36a5

	push de
	call FacingPlayerDistance
	ld b, d
	ld c, e
	pop de
	ret
; 36ad


FacingPlayerDistance: ; 36ad
; Return carry if the sprite at bc is facing the player,
; and its distance in d.

	ld hl, $0010 ; x
	add hl, bc
	ld d, [hl]

	ld hl, $0011 ; y
	add hl, bc
	ld e, [hl]

	ld a, [MapX]
	cp d
	jr z, .CheckY

	ld a, [MapY]
	cp e
	jr z, .CheckX

	and a
	ret

.CheckY
	ld a, [MapY]
	sub e
	jr z, .NotFacing
	jr nc, .Above

; Below
	cpl
	inc a
	ld d, a
	ld e, UP << 2
	jr .CheckFacing

.Above
	ld d, a
	ld e, DOWN << 2
	jr .CheckFacing

.CheckX
	ld a, [MapX]
	sub d
	jr z, .NotFacing
	jr nc, .Left

; Right
	cpl
	inc a
	ld d, a
	ld e, LEFT << 2
	jr .CheckFacing

.Left
	ld d, a
	ld e, RIGHT << 2

.CheckFacing
	call GetSpriteDirection
	cp e
	jr nz, .NotFacing
	scf
	ret

.NotFacing
	and a
	ret
; 36f5


Function36f5: ; 36f5
	push bc
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	call GetMapObject
	ld hl, $000a
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call GetMapScriptHeaderBank
	call GetFarHalfword
	ld d, h
	ld e, l
	push de
	ld b, $2
	call EventFlagAction
	pop de
	ld a, c
	and a
	pop bc
	ret
; 3718


Function3718: ; 3718
	ld a, [BattleType]
	cp $1
	jr .asm_3724

	ld hl, WalkingTile
	jr .asm_3731

.asm_3724
	ld a, [$d0ee]
	ld hl, WalkingTile
	and $f
	jr z, .asm_3731
	ld hl, $d049

.asm_3731
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call GetMapScriptHeaderBank
	call FarPrintText
	call WaitBGMap
	call Functiona80
	ret
; 3741



IsAPokemon: ; 3741
; Return carry if species a is not a Pokemon.
	and a
	jr z, .NotAPokemon
	cp EGG
	jr z, .Pokemon
	cp NUM_POKEMON + 1
	jr c, .Pokemon

.NotAPokemon
	scf
	ret

.Pokemon
	and a
	ret
; 3750


DrawHPBar: ; 3750
; Draw an HP bar d tiles long at hl
; Fill it up to e pixels

	push hl
	push de
	push bc

; Place 'HP:'
	ld a, $60
	ld [hli], a
	ld a, $61
	ld [hli], a

; Draw a template
	push hl
	ld a, $62 ; empty bar
.template
	ld [hli], a
	dec d
	jr nz, .template
	ld a, $6b ; bar end
	add b
	ld [hl], a
	pop hl

; Safety check # pixels
	ld a, e
	and a
	jr nz, .fill
	ld a, c
	and a
	jr z, .done
	ld e, 1

.fill
; Keep drawing tiles until pixel length is reached
	ld a, e
	sub TILE_WIDTH
	jr c, .lastbar

	ld e, a
	ld a, $6a ; full bar
	ld [hli], a
	ld a, e
	and a
	jr z, .done
	jr .fill

.lastbar
	ld a, $62  ; empty bar
	add e      ; + e
	ld [hl], a

.done
	pop bc
	pop de
	pop hl
	ret
; 3786


Function3786: ; 3786
	ld a, $1
	ld [$c2c6], a

Function378b: ; 378b
	ld a, [CurPartySpecies]
	call IsAPokemon
	jr c, .asm_37ad
	push hl
	ld de, VTiles2
	ld a, $3c
	call Predef
	pop hl
	xor a
	ld [$ffad], a
	ld bc, $0707
	ld a, $13
	call Predef
	xor a
	ld [$c2c6], a
	ret

.asm_37ad
	xor a
	ld [$c2c6], a
	inc a
	ld [CurPartySpecies], a
	ret
; 37b6

Function37b6: ; 37b6
	push af
	ld a, $1
	ld [$c2bc], a
	pop af
	call Function37e2
	call WaitSFX
	ret
; 37c4

Function37c4: ; 37c4
	push af
	ld a, $1
	ld [$c2bc], a
	pop af
	jp Function37e2
; 37ce

Function37ce: ; 37ce
	call Function37d5
	call WaitSFX
	ret
; 37d5

Function37d5: ; 37d5
	push af
	xor a
	ld [$c2bc], a
	ld [CryTracks], a
	pop af
	call Function37e2
	ret
; 37e2

Function37e2: ; 37e2
	push hl
	push de
	push bc
	call Function381e
	jr c, .asm_37ef
	ld e, c
	ld d, b
	call PlayCryHeader

.asm_37ef
	pop bc
	pop de
	pop hl
	ret
; 37f3

Function37f3: ; 37f3
	call Function381e
	ret c
	ld a, [hROMBank]
	push af
	ld a, $3c
	rst Bankswitch

	ld hl, $6787
	add hl, bc
	add hl, bc
	add hl, bc
	add hl, bc
	add hl, bc
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
	ld a, [hli]
	ld [CryPitch], a
	ld a, [hli]
	ld [CryEcho], a
	ld a, [hli]
	ld [CryLength], a
	ld a, [hl]
	ld [$c2b3], a
	pop af
	rst Bankswitch

	and a
	ret
; 381e

Function381e: ; 381e
	and a
	jr z, .asm_382b
	cp $fc
	jr nc, .asm_382b
	dec a
	ld c, a
	ld b, $0
	and a
	ret

.asm_382b
	scf
	ret
; 382d


PrintLevel: ; 382d
; Print TempMonLevel at hl

	ld a, [TempMonLevel]
	ld [hl], $6e ; ":L"
	inc hl

; How many digits?
	ld c, 2
	cp 100
	jr c, Function3842

; 3-digit numbers overwrite the :L.
	dec hl
	inc c
	jr Function3842
; 383d

Function383d: ; 383d
; Print :L and all 3 digits
	ld [hl], $6e
	inc hl
	ld c, 3
; 3842

Function3842: ; 3842
	ld [$d265], a
	ld de, $d265
	ld b,  %01000001 ; flags
	jp PrintNum
; 384d


Function384d: ; 384d
	ld hl, $d25e
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ret
; 3856


GetBaseData: ; 3856
	push bc
	push de
	push hl
	ld a, [hROMBank]
	push af
	ld a, BANK(BaseData)
	rst Bankswitch
	
; Egg doesn't have BaseData
	ld a, [CurSpecies]
	cp EGG
	jr z, .egg

; Get BaseData
	dec a
	ld bc, BaseData1 - BaseData0
	ld hl, BaseData
	call AddNTimes
	ld de, CurBaseData
	ld bc, BaseData1 - BaseData0
	call CopyBytes
	jr .end
	
.egg
; ????
	ld de, $7d9c
	
; Sprite dimensions
	ld b, $55 ; 5x5
	ld hl, BasePicSize
	ld [hl], b
	
; ????
	ld hl, BasePadding
	ld [hl], e
	inc hl
	ld [hl], d
	inc hl
	ld [hl], e
	inc hl
	ld [hl], d
	jr .end
	
.end
; Replace Pokedex # with species
	ld a, [CurSpecies]
	ld [BaseDexNo], a
	
	pop af
	rst Bankswitch
	pop hl
	pop de
	pop bc
	ret
; 389c


GetCurNick: ; 389c
	ld a, [CurPartyMon]
	ld hl, PartyMonNicknames

GetNick: ; 38a2
; Get nickname a from list hl.

	push hl
	push bc

	call SkipNames
	ld de, StringBuffer1

	push de
	ld bc, PKMN_NAME_LENGTH
	call CopyBytes
	pop de

	callab CheckNickErrors

	pop bc
	pop hl
	ret
; 38bb


PrintBCDNumber: ; 38bb
; function to print a BCD (Binary-coded decimal) number
; de = address of BCD number
; hl = destination address
; c = flags and length
; bit 7: if set, do not print leading zeroes
;        if unset, print leading zeroes
; bit 6: if set, left-align the string (do not pad empty digits with spaces)
;        if unset, right-align the string
; bit 5: if set, print currency symbol at the beginning of the string
;        if unset, do not print the currency symbol
; bits 0-4: length of BCD number in bytes
; Note that bits 5 and 7 are modified during execution. The above reflects
; their meaning at the beginning of the functions's execution.
	ld b, c ; save flags in b
	res 7, c
	res 6, c
	res 5, c ; c now holds the length
	bit 5, b
	jr z, .loop
	bit 7, b
	jr nz, .loop
	ld [hl], "¥"
	inc hl
.loop
	ld a, [de]
	swap a
	call PrintBCDDigit ; print upper digit
	ld a, [de]
	call PrintBCDDigit ; print lower digit
	inc de
	dec c
	jr nz, .loop
	bit 7, b ; were any non-zero digits printed?
	jr z, .done ; if so, we are done
.numberEqualsZero ; if every digit of the BCD number is zero
	bit 6, b ; left or right alignment?
	jr nz, .skipRightAlignmentAdjustment
	dec hl ; if the string is right-aligned, it needs to be moved back one space
.skipRightAlignmentAdjustment
	bit 5, b
	jr z, .skipCurrencySymbol
	ld [hl], "¥" ; currency symbol
	inc hl
.skipCurrencySymbol
	ld [hl], "0"
	call PrintLetterDelay
	inc hl
.done
	ret
; 0x38f2

PrintBCDDigit: ; 38f2
	and a, %00001111
	and a
	jr z, .zeroDigit
.nonzeroDigit
	bit 7, b ; have any non-space characters been printed?
	jr z, .outputDigit
; if bit 7 is set, then no numbers have been printed yet
	bit 5, b ; print the currency symbol?
	jr z, .skipCurrencySymbol
	ld [hl], "¥"
	inc hl
	res 5, b
.skipCurrencySymbol
	res 7, b ; unset 7 to indicate that a nonzero digit has been reached
.outputDigit
	add a, "0"
	ld [hli], a
	jp PrintLetterDelay
.zeroDigit
	bit 7, b ; either printing leading zeroes or already reached a nonzero digit?
	jr z, .outputDigit ; if so, print a zero digit
	bit 6, b ; left or right alignment?
	ret nz
	ld a, " "
	ld [hli], a ; if right-aligned, "print" a space by advancing the pointer
	ret
; 0x3917

GetPartyParamLocation: ; 3917
; Get the location of parameter a from CurPartyMon in hl
	push bc
	ld hl, PartyMons
	ld c, a
	ld b, $00
	add hl, bc
	ld a, [CurPartyMon]
	call GetPartyLocation
	pop bc
	ret
; 3927

GetPartyLocation: ; 3927
; Add the length of a PartyMon struct to hl a times.
	ld bc, PartyMon2 - PartyMon1
	jp AddNTimes
; 392d


Function392d: ; 392d
	push hl
	ld a, b
	dec a
	ld b, $0
	add hl, bc
	ld hl, $5424
	ld bc, $0020
	call AddNTimes
	ld a, $14
	call GetFarHalfword
	ld b, l
	ld c, h
	pop hl
	ret
; 3945


UserPartyAttr: ; 3945
	push af
	ld a, [hBattleTurn]
	and a
	jr nz, .asm_394e
	pop af
	jr BattlePartyAttr
.asm_394e
	pop af
	jr OTPartyAttr
; 3951


OpponentPartyAttr: ; 3951
	push af
	ld a, [hBattleTurn]
	and a
	jr z, .asm_395a
	pop af
	jr BattlePartyAttr
.asm_395a
	pop af
	jr OTPartyAttr
; 395d


BattlePartyAttr: ; 395d
; Get attribute a from the active BattleMon's party struct.
	push bc
	ld c, a
	ld b, 0
	ld hl, PartyMons
	add hl, bc
	ld a, [CurBattleMon]
	call GetPartyLocation
	pop bc
	ret
; 396d


OTPartyAttr: ; 396d
; Get attribute a from the active EnemyMon's party struct.
	push bc
	ld c, a
	ld b, 0
	ld hl, OTPartyMon1Species
	add hl, bc
	ld a, [CurOTMon]
	call GetPartyLocation
	pop bc
	ret
; 397d


ResetDamage: ; 397d
	xor a
	ld [CurDamage], a
	ld [CurDamage + 1], a
	ret
; 3985

SetPlayerTurn: ; 3985
	xor a
	ld [hBattleTurn], a
	ret
; 3989

SetEnemyTurn: ; 3989
	ld a, 1
	ld [hBattleTurn], a
	ret
; 398e


UpdateOpponentInParty: ; 398e
	ld a, [hBattleTurn]
	and a
	jr z, UpdateEnemyMonInParty
	jr UpdateBattleMonInParty
; 3995

UpdateUserInParty: ; 3995
	ld a, [hBattleTurn]
	and a
	jr z, UpdateBattleMonInParty
	jr UpdateEnemyMonInParty
; 399c

UpdateBattleMonInParty: ; 399c
; Update level, status, current HP

	ld a, [CurBattleMon]

Function399f: ; 399f
	ld hl, PartyMon1Level
	call GetPartyLocation

	ld d, h
	ld e, l
	ld hl, BattleMonLevel
	ld bc, BattleMonMaxHP - BattleMonLevel
	jp CopyBytes
; 39b0

UpdateEnemyMonInParty: ; 39b0
; Update level, status, current HP

; No wildmons.
	ld a, [IsInBattle]
	dec a
	ret z

	ld a, [CurOTMon]
	ld hl, OTPartyMon1Level
	call GetPartyLocation

	ld d, h
	ld e, l
	ld hl, EnemyMonLevel
	ld bc, EnemyMonMaxHP - EnemyMonLevel
	jp CopyBytes
; 39c9


RefreshBattleHuds: ; 39c9
	call UpdateBattleHuds
	ld c, 3
	call DelayFrames
	jp WaitBGMap
; 39d4

UpdateBattleHuds: ; 39d4
	callba Function3df48
	callba Function3e036
	ret
; 39e1


GetBattleVar: ; 39e1
; Preserves hl.
	push hl
	call _GetBattleVar
	pop hl
	ret
; 39e7

_GetBattleVar: ; 39e7
; Get variable from pair a, depending on whose turn it is.
; There are 21 variable pairs.

	push bc

	ld hl, .battlevarpairs
	ld c, a
	ld b, 0
	add hl, bc
	add hl, bc

	ld a, [hli]
	ld h, [hl]
	ld l, a

; Enemy turn uses the second byte instead.
; This lets battle variable calls be side-neutral.
	ld a, [hBattleTurn]
	and a
	jr z, .getvar
	inc hl
	
.getvar
; var id
	ld a, [hl]
	ld c, a
	ld b, 0

	ld hl, .vars
	add hl, bc
	add hl, bc

	ld a, [hli]
	ld h, [hl]
	ld l, a
	
	ld a, [hl]
	
	pop bc
	ret


.battlevarpairs
	dw .substatus1, .substatus2, .substatus3, .substatus4, .substatus5
	dw .substatus1opp, .substatus2opp, .substatus3opp, .substatus4opp, .substatus5opp
	dw .status, .statusopp, .animation, .effect, .power, .type
	dw .curmove, .lastcounter, .lastcounteropp, .lastmove, .lastmoveopp


	const_def
	const PLAYER_SUBSTATUS_1
	const ENEMY_SUBSTATUS_1
	const PLAYER_SUBSTATUS_2
	const ENEMY_SUBSTATUS_2
	const PLAYER_SUBSTATUS_3
	const ENEMY_SUBSTATUS_3
	const PLAYER_SUBSTATUS_4
	const ENEMY_SUBSTATUS_4
	const PLAYER_SUBSTATUS_5
	const ENEMY_SUBSTATUS_5
	const PLAYER_STATUS
	const ENEMY_STATUS
	const PLAYER_MOVE_ANIMATION
	const ENEMY_MOVE_ANIMATION
	const PLAYER_MOVE_EFFECT
	const ENEMY_MOVE_EFFECT
	const PLAYER_MOVE_POWER
	const ENEMY_MOVE_POWER
	const PLAYER_MOVE_TYPE
	const ENEMY_MOVE_TYPE
	const PLAYER_CUR_MOVE
	const ENEMY_CUR_MOVE
	const PLAYER_COUNTER_MOVE
	const ENEMY_COUNTER_MOVE
	const PLAYER_LAST_MOVE
	const ENEMY_LAST_MOVE


;                       player                     enemy
.substatus1     db PLAYER_SUBSTATUS_1,    ENEMY_SUBSTATUS_1
.substatus1opp  db ENEMY_SUBSTATUS_1,     PLAYER_SUBSTATUS_1
.substatus2     db PLAYER_SUBSTATUS_2,    ENEMY_SUBSTATUS_2
.substatus2opp  db ENEMY_SUBSTATUS_2,     PLAYER_SUBSTATUS_2
.substatus3     db PLAYER_SUBSTATUS_3,    ENEMY_SUBSTATUS_3
.substatus3opp  db ENEMY_SUBSTATUS_3,     PLAYER_SUBSTATUS_3
.substatus4     db PLAYER_SUBSTATUS_4,    ENEMY_SUBSTATUS_4
.substatus4opp  db ENEMY_SUBSTATUS_4,     PLAYER_SUBSTATUS_4
.substatus5     db PLAYER_SUBSTATUS_5,    ENEMY_SUBSTATUS_5
.substatus5opp  db ENEMY_SUBSTATUS_5,     PLAYER_SUBSTATUS_5
.status         db PLAYER_STATUS,         ENEMY_STATUS
.statusopp      db ENEMY_STATUS,          PLAYER_STATUS
.animation      db PLAYER_MOVE_ANIMATION, ENEMY_MOVE_ANIMATION
.effect         db PLAYER_MOVE_EFFECT,    ENEMY_MOVE_EFFECT
.power          db PLAYER_MOVE_POWER,     ENEMY_MOVE_POWER
.type           db PLAYER_MOVE_TYPE,      ENEMY_MOVE_TYPE
.curmove        db PLAYER_CUR_MOVE,       ENEMY_CUR_MOVE
.lastcounter    db PLAYER_COUNTER_MOVE,   ENEMY_COUNTER_MOVE
.lastcounteropp db ENEMY_COUNTER_MOVE,    PLAYER_COUNTER_MOVE
.lastmove       db PLAYER_LAST_MOVE,      ENEMY_LAST_MOVE
.lastmoveopp    db ENEMY_LAST_MOVE,       PLAYER_LAST_MOVE

.vars
	dw PlayerSubStatus1,     EnemySubStatus1
	dw PlayerSubStatus2,     EnemySubStatus2
	dw PlayerSubStatus3,     EnemySubStatus3
	dw PlayerSubStatus4,     EnemySubStatus4
	dw PlayerSubStatus5,     EnemySubStatus5
	dw BattleMonStatus,      EnemyMonStatus
	dw PlayerMoveAnimation,  EnemyMoveAnimation
	dw PlayerMoveEffect,     EnemyMoveEffect
	dw PlayerMovePower,      EnemyMovePower
	dw PlayerMoveType,       EnemyMoveType
	dw CurPlayerMove,        CurEnemyMove
	dw LastEnemyCounterMove, LastPlayerCounterMove
	dw LastPlayerMove,       LastEnemyMove
; 3a90


Function3a90: ; 3a90
	inc hl
	ld a, [hROMBank]
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld [hROMBank], a
	ld [MBC3RomBank], a
	ld a, e
	ld l, a
	ld a, d
	ld h, a
	ld de, $d00c
	ld bc, $0028
	call CopyBytes
	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a
	ret
; 3ab2


MobileTextBorder: ; 3ab2
; For mobile link battles only.
	ld a, [InLinkBattle]
	cp 4
	ret c
; Draw a cell phone icon at the top right corner of the border.
	ld hl, $c5a3 ; TileMap(19,12)
	ld [hl], $5e ; cell phone top
	ld hl, $c5b7 ; TileMap(19,13)
	ld [hl], $5f ; cell phone bottom
	ret
; 3ac3


BattleTextBox: ; 3ac3
; Open a textbox and print text at hl.
	push hl
	call SpeechTextBox
	call MobileTextBorder
	call Function1ad2
	call Function321c
	pop hl
	call PrintTextBoxText
	ret
; 3ad5


StdBattleTextBox: ; 3ad5
; Open a textbox and print battle text at 20:hl.

	ld a, [hROMBank]
	push af

	ld a, BANK(BattleText)
	rst Bankswitch

	call BattleTextBox

	pop af
	rst Bankswitch
	ret
; 3ae1


Function3ae1: ; 3ae1
	ld a, $32
	rst Bankswitch

	ld a, [hli]
	ld [$d410], a
	ld a, [hl]
	ld [$d411], a
	ld a, $33
	rst Bankswitch

	ret
; 3af0

Function3af0: ; 3af0
	push hl
	push de
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld a, $32
	rst Bankswitch

	ld a, [de]
	ld [$d417], a
	inc de
	ld a, $33
	rst Bankswitch

	ld [hl], d
	dec hl
	ld [hl], e
	pop de
	pop hl
	ld a, [$d417]
	ret
; 3b0c

Function3b0c: ; 3b0c
	ld a, [hLCDStatCustom]
	and a
	ret z

	ld a, $00
	ld [Requested2bppSource], a
	ld a, $d2
	ld [Requested2bppSource + 1], a

	ld a, $00
	ld [Requested2bppDest], a
	ld a, $d1
	ld [Requested2bppDest + 1], a

	ld a, $9
	ld [Requested2bpp], a
	ret
; 3b2a



Function3b2a: ; 3b2a
	ld [$c3b8], a
	ld a, [hROMBank]
	push af
	ld a, BANK(Function8cfd6)
	rst Bankswitch

	ld a, [$c3b8]
	call Function8cfd6
	pop af
	rst Bankswitch

	ret
; 3b3c


Function3b3c: ; 3b3c
	ld [$c3b8], a
	ld a, [hROMBank]
	push af
	ld a, BANK(Function8d120)
	rst Bankswitch

	ld a, [$c3b8]
	call Function8d120
	pop af
	rst Bankswitch

	ret
; 3b4e


SoundRestart: ; 3b4e

	push hl
	push de
	push bc
	push af

	ld a, [hROMBank]
	push af
	ld a, BANK(_SoundRestart)
	ld [hROMBank], a
	ld [MBC3RomBank], a

	call _SoundRestart

	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a

	pop af
	pop bc
	pop de
	pop hl
	ret
; 3b6a


UpdateSound: ; 3b6a

	push hl
	push de
	push bc
	push af

	ld a, [hROMBank]
	push af
	ld a, BANK(_UpdateSound)
	ld [hROMBank], a
	ld [MBC3RomBank], a

	call _UpdateSound

	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a

	pop af
	pop bc
	pop de
	pop hl
	ret
; 3b86


_LoadMusicByte: ; 3b86
; CurMusicByte = [a:de]

	ld [hROMBank], a
	ld [MBC3RomBank], a

	ld a, [de]
	ld [CurMusicByte], a
	ld a, BANK(LoadMusicByte)

	ld [hROMBank], a
	ld [MBC3RomBank], a
	ret
; 3b97


PlayMusic: ; 3b97
; Play music de.

	push hl
	push de
	push bc
	push af

	ld a, [hROMBank]
	push af
	ld a, BANK(_PlayMusic) ; and BANK(_SoundRestart)
	ld [hROMBank], a
	ld [MBC3RomBank], a

	ld a, e
	and a
	jr z, .nomusic

	call _PlayMusic
	jr .end

.nomusic
	call _SoundRestart

.end
	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3bbc


PlayMusic2: ; 3bbc
; Stop playing music, then play music de.

	push hl
	push de
	push bc
	push af

	ld a, [hROMBank]
	push af
	ld a, BANK(_PlayMusic)
	ld [hROMBank], a
	ld [MBC3RomBank], a

	push de
	ld de, MUSIC_NONE
	call _PlayMusic
	call DelayFrame
	pop de
	call _PlayMusic

	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a

	pop af
	pop bc
	pop de
	pop hl
	ret

; 3be3


PlayCryHeader: ; 3be3
; Play a cry given parameters in header de

	push hl
	push de
	push bc
	push af

; Save current bank
	ld a, [hROMBank]
	push af

; Cry headers are stuck in one bank.
	ld a, BANK(CryHeaders)
	ld [hROMBank], a
	ld [MBC3RomBank], a

; Each header is 6 bytes long:
	ld hl, CryHeaders
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de

	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl

	ld a, [hli]
	ld [CryPitch], a
	ld a, [hli]
	ld [CryEcho], a
	ld a, [hli]
	ld [CryLength], a
	ld a, [hl]
	ld [CryLength+1], a

	ld a, BANK(PlayCry)
	ld [hROMBank], a
	ld [MBC3RomBank], a

	call PlayCry

	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a
	
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3c23


PlaySFX: ; 3c23
; Play sound effect de.
; Sound effects are ordered by priority (lowest to highest)

	push hl
	push de
	push bc
	push af

; Is something already playing?
	call CheckSFX
	jr nc, .play
; Does it have priority?
	ld a, [CurSFX]
	cp e
	jr c, .quit

.play
	ld a, [hROMBank]
	push af
	ld a, BANK(_PlaySFX)
	ld [hROMBank], a
	ld [MBC3RomBank], a ; bankswitch

	ld a, e
	ld [CurSFX], a
	call _PlaySFX

	pop af
	ld [hROMBank], a
	ld [MBC3RomBank], a ; bankswitch
.quit
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3c4e


WaitPlaySFX: ; 3c4e
	call WaitSFX
	call PlaySFX
	ret
; 3c55


WaitSFX: ; 3c55
; infinite loop until sfx is done playing

	push hl
	
.loop
	; ch5 on?
	ld hl, Channel5 + Channel1Flags - Channel1
	bit 0, [hl]
	jr nz, .loop
	; ch6 on?
	ld hl, Channel6 + Channel1Flags - Channel1
	bit 0, [hl]
	jr nz, .loop
	; ch7 on?
	ld hl, Channel7 + Channel1Flags - Channel1
	bit 0, [hl]
	jr nz, .loop
	; ch8 on?
	ld hl, Channel8 + Channel1Flags - Channel1
	bit 0, [hl]
	jr nz, .loop
	
	pop hl
	ret
; 3c74

Function3c74: ; 3c74
	push hl
	ld hl, $c1cc
	bit 0, [hl]
	jr nz, .asm_3c94
	ld hl, $c1fe
	bit 0, [hl]
	jr nz, .asm_3c94
	ld hl, $c230
	bit 0, [hl]
	jr nz, .asm_3c94
	ld hl, $c262
	bit 0, [hl]
	jr nz, .asm_3c94
	pop hl
	scf
	ret

.asm_3c94
	pop hl
	and a
	ret
; 3c97

MaxVolume: ; 3c97
	ld a, $77 ; max
	ld [Volume], a
	ret
; 3c9d

LowVolume: ; 3c9d
	ld a, $33 ; 40%
	ld [Volume], a
	ret
; 3ca3

VolumeOff: ; 3ca3
	xor a
	ld [Volume], a
	ret
; 3ca8

Function3ca8: ; 3ca8
	ld a, $4
	ld [MusicFade], a
	ret
; 3cae

Function3cae: ; 3cae
	ld a, $84
	ld [MusicFade], a
	ret
; 3cb4

Function3cb4: ; 3cb4
.asm_3cb4
	and a
	ret z
	dec a
	call UpdateSound
	jr .asm_3cb4
; 3cbc

Function3cbc: ; 3cbc
	push hl
	push de
	push bc
	push af
	call Function3d97
	ld a, [CurMusic]
	cp e
	jr z, .asm_3cda
	ld a, $8
	ld [MusicFade], a
	ld a, e
	ld [MusicFadeIDLo], a
	ld a, d
	ld [MusicFadeIDHi], a
	ld a, e
	ld [CurMusic], a

.asm_3cda
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3cdf

Function3cdf: ; 3cdf
	push hl
	push de
	push bc
	push af
	call Function3d97
	ld a, [CurMusic]
	cp e
	jr z, .asm_3cfe
	push de
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	pop de
	ld a, e
	ld [CurMusic], a
	call PlayMusic

.asm_3cfe
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3d03

Function3d03: ; 3d03
	push hl
	push de
	push bc
	push af
	xor a
	ld [$c2c1], a
	ld de, MUSIC_BICYCLE
	ld a, [PlayerState]
	cp $1
	jr z, .asm_3d18
	call Function3d97
.asm_3d18
	push de
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	pop de
	ld a, e
	ld [CurMusic], a
	call PlayMusic
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3d2f

Function3d2f: ; 3d2f
	ld a, [$c2c1]
	and a
	jr z, Function3d47
	xor a
	ld [CurMusic], a
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	xor a
	ld [$c2c1], a
	ret
; 3d47

Function3d47: ; 3d47
	push hl
	push de
	push bc
	push af
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	ld a, [CurMusic]
	ld e, a
	ld d, 0
	call PlayMusic
	pop af
	pop bc
	pop de
	pop hl
	ret
; 3d62

Function3d62: ; 3d62
	ld a, [PlayerState]
	cp $4
	jr z, .asm_3d7b
	cp $8
	jr z, .asm_3d7b
	ld a, [StatusFlags2]
	bit 2, a
	jr nz, .asm_3d80
.asm_3d74
	and a
	ret

	ld de, $0013
	scf
	ret

.asm_3d7b
	ld de, $0021
	scf
	ret

.asm_3d80
	ld a, [MapGroup]
	cp $a
	jr nz, .asm_3d74
	ld a, [MapNumber]
	cp $f
	jr z, .asm_3d92
	cp $11
	jr nz, .asm_3d74

.asm_3d92
	ld de, $0058
	scf
	ret
; 3d97

Function3d97: ; 3d97
	call Function3d62
	ret c
	call Function2cbd
	ret
; 3d9f

Function3d9f: ; 3d9f
	ld a, $20
	ld [$c498], a
	ld [$c49c], a
	ld a, $50
	ld [$c499], a
	ld a, $58
	ld [$c49d], a
	xor a
	ld [$c49b], a
	ld [$c49f], a
	ld a, [$c296]
	cp $64
	jr nc, .asm_3dd5
	add $1
	daa
	ld b, a
	swap a
	and $f
	add $f6
	ld [$c49a], a
	ld a, b
	and $f
	add $f6
	ld [$c49e], a
	ret

.asm_3dd5
	ld a, $ff
	ld [$c49a], a
	ld [$c49e], a
	ret
; 3dde

CheckSFX: ; 3dde
; returns carry if sfx channels are active
	ld a, [$c1cc] ; 1
	bit 0, a
	jr nz, .quit
	ld a, [$c1fe] ; 2
	bit 0, a
	jr nz, .quit
	ld a, [$c230] ; 3
	bit 0, a
	jr nz, .quit
	ld a, [$c262] ; 4
	bit 0, a
	jr nz, .quit
	and a
	ret
.quit
	scf
	ret
; 3dfe

Function3dfe: ; 3dfe
	xor a
	ld [$c1cc], a
	ld [SoundInput], a
	ld [rNR10], a
	ld [rNR11], a
	ld [rNR12], a
	ld [rNR13], a
	ld [rNR14], a
	ret
; 3e10


ChannelsOff: ; 3e10
; Quickly turn off music channels
	xor a
	ld [Channel1Flags], a
	ld [$c136], a
	ld [$c168], a
	ld [$c19a], a
	ld [SoundInput], a
	ret
; 3e21

SFXChannelsOff: ; 3e21
; Quickly turn off sound effect channels
	xor a
	ld [$c1cc], a
	ld [$c1fe], a
	ld [$c230], a
	ld [$c262], a
	ld [SoundInput], a
	ret
; 3e32

Function3e32: ; 3e32
	cp $2
	ld [$c988], a
	ld a, l
	ld [$c986], a
	ld a, h
	ld [$c987], a
	jr nz, .asm_3e4f
	ld [$c982], a
	ld a, l
	ld [$c981], a
	ld hl, $c983
	ld a, c
	ld [hli], a
	ld a, b
	ld [hl], a

.asm_3e4f
	ld hl, $c822
	set 6, [hl]
	ld a, [hROMBank]
	push af
	ld a, BANK(Function110030)
	ld [$c981], a
	rst Bankswitch

	jp Function110030
; 3e60


Function3e60: ; 3e60
	ld [$c986], a
	ld a, l
	ld [$c987], a
	ld a, h
	ld [$c988], a
	pop bc
	ld a, b
	ld [$c981], a
	rst Bankswitch

	ld hl, $c822
	res 6, [hl]
	ld hl, $c987
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$c986]
	ret
; 3e80


Function3e80: ; 3e80
	ld a, [hROMBank]
	push af
	ld a, BANK(Function1116c5)
	ld [$c981], a
	rst Bankswitch

	call Function1116c5
	pop bc
	ld a, b
	ld [$c981], a
	rst Bankswitch

	ret
; 3e93


Timer: ; 3e93
	push af
	push bc
	push de
	push hl

	ld a, [$ffe9]
	and a
	jr z, .asm_3ed2

	xor a
	ld [rTAC], a

; Turn off timer interrupt
	ld a, [rIF]
	and 1 << VBLANK | 1 << LCD_STAT | 1 << SERIAL | 1 << JOYPAD
	ld [rIF], a

	ld a, [$c86a]
	or a
	jr z, .asm_3ed2

	ld a, [$c822]
	bit 1, a
	jr nz, .asm_3eca

	ld a, [rSC]
	and 1 << rSC_ON
	jr nz, .asm_3eca

	ld a, [hROMBank]
	push af
	ld a, BANK(Function1118de)
	ld [$c981], a
	rst Bankswitch

	call Function1118de

	pop bc
	ld a, b
	ld [$c981], a
	rst Bankswitch

.asm_3eca
	ld a, [rTMA]
	ld [rTIMA], a

	ld a, 1 << rTAC_ON | rTAC_65536_HZ
	ld [rTAC], a

.asm_3ed2
	pop hl
	pop de
	pop bc
	pop af
	reti
; 3ed7

Function3ed7: ; 3ed7
	ld [$dc02], a
	ld a, [hROMBank]
	push af
	ld a, BANK(Function114243)
	rst Bankswitch

	call Function114243
	pop bc
	ld a, b
	rst Bankswitch

	ld a, [$dc02]
	ret
; 3eea

Function3eea: ; 3eea
	push hl
	push bc
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	call Function3f35
	pop bc
	pop hl
	call Function3f47
	ret
; 3efd

Function3efd: ; 3efd
	push hl
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function3f0d
	pop hl
	call PrintTextBoxText
	ret
; 3f0d

Function3f0d: ; 3f0d
	push hl
	push bc
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	call Function3f35
	pop bc
	pop hl
	call TextBoxBorder
	ret
; 3f20

Function3f20: ; 3f20
	ld hl, AttrMap
	ld b, $6
	ld c, $14
	call Function3f35
	ld hl, TileMap
	ld b, $4
	ld c, $12
	call Function3f47
	ret
; 3f35

Function3f35: ; 3f35
	ld a, $6
	ld de, $0014
.asm_3f3a
	push bc
	push hl
.asm_3f3c
	ld [hli], a
	dec c
	jr nz, .asm_3f3c
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_3f3a
	ret
; 3f47

Function3f47: ; 3f47
	push bc
	call Function3f58
	pop bc
.asm_3f4c
	push bc
	call Function3f68
	pop bc
	dec b
	jr nz, .asm_3f4c
	call Function3f60
	ret
; 3f58

Function3f58: ; 3f58
	ld a, $63
	ld d, $62
	ld e, $64
	jr Function3f6e

Function3f60: ; 3f60
	ld a, $68
	ld d, $67
	ld e, $69
	jr Function3f6e

Function3f68: ; 3f68
	ld a, $7f
	ld d, $65
	ld e, $66

Function3f6e: ; 3f6e
	push hl
	ld [hl], d
	inc hl
.asm_3f71
	ld [hli], a
	dec c
	jr nz, .asm_3f71
	ld [hl], e
	pop hl
	ld de, $0014
	add hl, de
	ret
; 3f7c

Function3f7c: ; 3f7c
	call Function1cfd
	call Function1c53
	dec b
	dec c
	call Function3eea
	ret
; 3f88

Function3f88: ; 3f88
	ld hl, $d000
	ld b, $0
.asm_3f8d
	push bc
	ld c, $8
.asm_3f90
	ld a, [de]
	inc de
	cpl
	ld [hl], $0
	inc hl
	ld [hli], a
	dec c
	jr nz, .asm_3f90
	pop bc
	dec c
	jr nz, .asm_3f8d
	ret
; 3f9f

Function3f9f: ; 3f9f
	ld hl, $d000
.asm_3fa2
	push bc
	ld c, $8
.asm_3fa5
	ld a, [de]
	inc de
	inc de
	cpl
	ld [hl], $0
	inc hl
	ld [hli], a
	dec c
	jr nz, .asm_3fa5
	pop bc
	dec c
	jr nz, .asm_3fa2
	ret
; 3fb5


SECTION "bank1", ROMX, BANK[$1]


Function4000: ; 4000
	hlcoord 3, 10
	ld b, 1
	ld c, 11

	ld a, [IsInBattle]
	and a
	jr z, .asm_4012

	call TextBox
	jr .asm_4017

.asm_4012
	ld a, $10
	call Predef

.asm_4017
	hlcoord 4, 11
	ld de, .Waiting
	call PlaceString
	ld c, 50
	jp DelayFrames
; 4025

.Waiting ; 4025
	db "Waiting...!@"
; 4031

LoadPushOAM: ; 4031
	ld c, hPushOAM & $ff
	ld b, PushOAMEnd - PushOAM
	ld hl, PushOAM
.loop
	ld a, [hli]
	ld [$ff00+c], a
	inc c
	dec b
	jr nz, .loop
	ret
; 403f

PushOAM: ; 403f
	ld a, Sprites >> 8
	ld [rDMA], a
	ld a, $28
.loop
	dec a
	jr nz, .loop
	ret
PushOAMEnd
; 4049


Facings: ; 4049
	dw Facing00
	dw Facing01
	dw Facing02
	dw Facing03
	dw Facing04
	dw Facing05
	dw Facing06
	dw Facing07
	dw Facing08
	dw Facing09
	dw Facing10
	dw Facing11
	dw Facing12
	dw Facing13
	dw Facing14
	dw Facing15
	dw Facing16
	dw Facing17
	dw Facing18
	dw Facing19
	dw Facing20
	dw Facing21
	dw Facing22
	dw Facing23
	dw Facing24
	dw Facing25
	dw Facing26
	dw Facing27
	dw Facing28
	dw Facing29
	dw Facing30
	dw Facing31
FacingsEnd: dw 0

NUM_FACINGS EQU (FacingsEnd - Facings) / 2


; Tables used as a reference to transform OAM data.

; Format:
;	db y, x, attributes, tile index

; Attributes:
X_FLIP    EQU 1 << 5
Y_FLIP    EQU 1 << 6
BEHIND_BG EQU 1 << 7


Facing00:
Facing02:
Facing24:
Facing26: ; 408b
	db 4 ; #
	db  0,  0, 0, $00
	db  0,  8, 0, $01
	db  8,  0, 2, $02
	db  8,  8, 2, $03
; 409c

Facing01: ; 409c
	db 4 ; #
	db  0,  0, 0, $80
	db  0,  8, 0, $81
	db  8,  0, 2, $82
	db  8,  8, 2, $83
; 40ad

Facing03: ; 40ad
	db 4 ; #
	db  0,  8, X_FLIP, $80
	db  0,  0, X_FLIP, $81
	db  8,  8, 2 | X_FLIP, $82
	db  8,  0, 2 | X_FLIP, $83
; 40be

Facing04:
Facing06: ; 40be
	db 4 ; #
	db  0,  0, 0, $04
	db  0,  8, 0, $05
	db  8,  0, 2, $06
	db  8,  8, 2, $07
; 40cf

Facing05: ; 40cf
	db 4 ; #
	db  0,  0, 0, $84
	db  0,  8, 0, $85
	db  8,  0, 2, $86
	db  8,  8, 2, $87
; 40e0

Facing07: ; 40e0
	db 4 ; #
	db  0,  8, X_FLIP, $84
	db  0,  0, X_FLIP, $85
	db  8,  8, 2 | X_FLIP, $86
	db  8,  0, 2 | X_FLIP, $87
; 40f1

Facing08:
Facing10: ; 40f1
	db 4 ; #
	db  0,  0, 0, $08
	db  0,  8, 0, $09
	db  8,  0, 2, $0a
	db  8,  8, 2, $0b
; 4102

Facing12:
Facing14: ; 4102
	db 4 ; #
	db  0,  8, X_FLIP, $08
	db  0,  0, X_FLIP, $09
	db  8,  8, 2 | X_FLIP, $0a
	db  8,  0, 2 | X_FLIP, $0b
; 4113

Facing09:
Facing11: ; 4113
	db 4 ; #
	db  0,  0, 0, $88
	db  0,  8, 0, $89
	db  8,  0, 2, $8a
	db  8,  8, 2, $8b
; 4124

Facing13:
Facing15: ; 4124
	db 4 ; #
	db  0,  8, X_FLIP, $88
	db  0,  0, X_FLIP, $89
	db  8,  8, 2 | X_FLIP, $8a
	db  8,  0, 2 | X_FLIP, $8b
; 4135

Facing16: ; 4135
	db 5 ; #
	db  0,  0, 0, $00
	db  0,  8, 0, $01
	db  8,  0, 2, $02
	db  8,  8, 2, $03
	db 16,  0, 4, $fc
; 414a

Facing17: ; 414a
	db 5 ; #
	db  0,  0, 0, $04
	db  0,  8, 0, $05
	db  8,  0, 2, $06
	db  8,  8, 2, $07
	db -8,  0, 4, $fc
; 415f

Facing18: ; 415f
	db 5 ; #
	db  0,  0, 0, $08
	db  0,  8, 0, $09
	db  8,  0, 2, $0a
	db  8,  8, 2, $0b
	db  5, -8, 4 | X_FLIP, $fd
; 4174

Facing19: ; 4174
	db 5 ; #
	db  0,  8, X_FLIP, $08
	db  0,  0, X_FLIP, $09
	db  8,  8, 2 | X_FLIP, $0a
	db  8,  0, 2 | X_FLIP, $0b
	db  5, 16, 4, $fd
; 4189

Facing20: ; 4189
	db 4 ; #
	db  0,  0, 4, $f8
	db  0,  8, 4, $f9
	db  8,  0, 4, $fa
	db  8,  8, 4, $fb
; 419a

Facing21: ; 419a
	db 2 ; #
	db  0,  0, 4, $fc
	db  0,  8, 4 | X_FLIP, $fc
; 41a3

Facing23: ; 41a3
	db 16 ; #
	db  0,  0, 0, $00
	db  0,  8, 0, $01
	db  8,  0, 0, $02
	db  8,  8, 0, $03
	db 16,  0, 0, $04
	db 16,  8, 0, $05
	db 24,  0, 0, $06
	db 24,  8, 0, $07
	db  0, 24, X_FLIP, $00
	db  0, 16, X_FLIP, $01
	db  8, 24, X_FLIP, $02
	db  8, 16, X_FLIP, $03
	db 16, 24, X_FLIP, $04
	db 16, 16, X_FLIP, $05
	db 24, 24, X_FLIP, $06
	db 24, 16, X_FLIP, $07
; 41e4

Facing25: ; 41e4
	db 4 ; #
	db  0,  0, 0, $04
	db  0,  8, 0, $05
	db  8,  0, 0, $06
	db  8,  8, 0, $07
; 41f5

Facing27: ; 41f5
	db 4 ; #
	db  0,  8, X_FLIP, $04
	db  0,  0, X_FLIP, $05
	db  8,  8, X_FLIP, $06
	db  8,  0, X_FLIP, $07
; 4206

Facing22: ; 4206
	db 14 ; #
	db  0,  0, 0, $00
	db  0,  8, 0, $01
	db  8,  0, 0, $04
	db  8,  8, 0, $05
	db 16,  8, 0, $07
	db 24,  8, 0, $0a
	db  0, 24, 0, $03
	db  0, 16, 0, $02
	db  8, 24, X_FLIP, $02
	db  8, 16, 0, $06
	db 16, 24, 0, $09
	db 16, 16, 0, $08
	db 24, 24, X_FLIP, $04
	db 24, 16, 0, $0b
; 423f

Facing28: ; 423f
	db 4 ; #
	db  0,  0, 4, $fe
	db  0,  8, 4, $fe
	db  8,  0, 4, $fe
	db  8,  8, 4, $fe
; 4250

Facing29: ; 4250
	db 4 ; #
	db  0,  0, 4, $ff
	db  0,  8, 4, $ff
	db  8,  0, 4, $ff
	db  8,  8, 4, $ff
; 4261

Facing30: ; 4261
	db 2 ; #
	db  8,  0, 4, $fe
	db  8,  8, 4 | X_FLIP, $fe
; 426a

Facing31: ; 426a
	db 2 ; #
	db  9, -1, 4, $fe
	db  9,  9, 4 | X_FLIP, $fe
; 4273



Data4273: ; 4273
INCBIN "baserom.gbc",$4273,$4357 - $4273
; 4357


Function4357: ; 4357
	push bc
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	push af
	ld h, b
	ld l, c
	ld bc, $0028
	xor a
	call ByteFill
	pop af
	cp $ff
	jr z, .asm_4379
	bit 7, a
	jr nz, .asm_4379
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld [hl], $ff

.asm_4379
	pop bc
	ret
; 437b

Function437b: ; 437b
	call Function4386
	ret c
	call Function43f3
	call Function4427
	ret
; 4386

Function4386: ; 4386
	ld hl, $0005
	add hl, bc
	res 6, [hl]
	ld a, [XCoord]
	ld e, a
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43b2
	cp $c
	jr nc, .asm_43b2
	ld a, [YCoord]
	ld e, a
	ld hl, $0011
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43b2
	cp $b
	jr nc, .asm_43b2
	jr .asm_43dc

.asm_43b2
	ld hl, $0005
	add hl, bc
	set 6, [hl]
	ld a, [XCoord]
	ld e, a
	ld hl, $0014
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43de
	cp $c
	jr nc, .asm_43de
	ld a, [YCoord]
	ld e, a
	ld hl, $0015
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_43de
	cp $b
	jr nc, .asm_43de

.asm_43dc
	and a
	ret

.asm_43de
	ld hl, $0004
	add hl, bc
	bit 1, [hl]
	jr nz, .asm_43eb
	call Function4357
	scf
	ret

.asm_43eb
	ld hl, $0005
	add hl, bc
	set 6, [hl]
	and a
	ret
; 43f3

Function43f3: ; 43f3
	ld hl, $0009
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_4409
	ld hl, $0005
	add hl, bc
	bit 5, [hl]
	jr nz, .asm_4426
	cp $1
	jr z, .asm_4414
	jr .asm_4421

.asm_4409
	call Function47bc
	ld hl, $0005
	add hl, bc
	bit 5, [hl]
	jr nz, .asm_4426

.asm_4414
	call Function47dd
	ld hl, $0009
	add hl, bc
	ld a, [hl]
	and a
	ret z
	cp $1
	ret z

.asm_4421
	ld hl, Pointers4b45
	rst JumpTable
	ret

.asm_4426
	ret
; 4427

Function4427: ; 4427
	ld hl, $0004
	add hl, bc
	bit 0, [hl]
	jr nz, Function44a3

	ld hl, $0005
	add hl, bc
	bit 6, [hl]
	jr nz, Function44a3

	bit 5, [hl]
	jr nz, Function4448

	ld de, Pointers445f
	jr Function444d
; 4440

Function4440: ; 4440
	ld hl, $0004
	add hl, bc
	bit 0, [hl]
	jr nz, Function44a3
	; fallthrough
; 4448

Function4448: ; 4448
	ld de, Pointers445f + 2
	jr Function444d
; 444d

Function444d: ; 444d
	ld hl, $000b
	add hl, bc
	ld a, [hl]
	ld l, a
	ld h, 0
	add hl, hl
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call _hl_
	ret
; 445f

Pointers445f: ; 445f
	dw Function44a3
	dw Function44a3
	dw Function44b5
	dw Function44aa
	dw Function44c1
	dw Function44aa
	dw Function4508
	dw Function44aa
	dw Function4529
	dw Function44aa
	dw Function4539
	dw Function44a3
	dw Function456e
	dw Function456e
	dw Function457b
	dw Function44a3
	dw Function4582
	dw Function4582
	dw Function4589
	dw Function4589
	dw Function4590
	dw Function45a4
	dw Function45ab
	dw Function44aa
	dw Function45be
	dw Function45be
	dw Function45c5
	dw Function45c5
	dw Function45da
	dw Function44a3
	dw Function45ed
	dw Function44a3
	dw Function44e4
	dw Function44aa
; 44a3

Function44a3: ; 44a3
	ld hl, $000d
	add hl, bc
	ld [hl], $ff
	ret
; 44aa

Function44aa: ; 44aa
	call GetSpriteDirection
	or $0
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 44b5

Function44b5: ; 44b5
	ld hl, $000d
	add hl, bc
	ld a, [hl]
	and $1
	jr nz, Function44c1
	jp Function44aa
; 44c1

Function44c1: ; 44c1
	ld hl, $0004
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	inc a
	and $f
	ld [hl], a
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 44e4

Function44e4: ; 44e4
	ld hl, $0004
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	add $2
	and $f
	ld [hl], a
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 4508

Function4508: ; 4508
	ld hl, $0004
	add hl, bc
	bit 3, [hl]
	jp nz, Function44aa
	ld hl, $000c
	add hl, bc
	inc [hl]
	ld a, [hl]
	rrca
	rrca
	rrca
	and $3
	ld d, a
	call GetSpriteDirection
	or $0
	or d
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 4529

Function4529: ; 4529
	call Function453f
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	or $0
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 4539

Function4539: ; 4539
	call Function453f
	jp Function44a3
; 453f

Function453f: ; 453f
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	and $f0
	ld e, a
	ld a, [hl]
	inc a
	and $f
	ld d, a
	cp $4
	jr c, .asm_4558
	ld d, 0
	ld a, e
	add $10
	and $30
	ld e, a

.asm_4558
	ld a, d
	or e
	ld [hl], a
	swap e
	ld d, 0
	ld hl, .Directions
	add hl, de
	ld a, [hl]
	ld hl, $0008
	add hl, bc
	ld [hl], a
	ret
; 456a

.Directions ; 456a
	db $00, $0c, $04, $08
; 456e

Function456e: ; 456e
	call GetSpriteDirection
	rrca
	rrca
	add $10
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 457b

Function457b: ; 457b
	ld hl, $000d
	add hl, bc
	ld [hl], $15
	ret
; 4582

Function4582: ; 4582
	ld hl, $000d
	add hl, bc
	ld [hl], $14
	ret
; 4589

Function4589: ; 4589
	ld hl, $000d
	add hl, bc
	ld [hl], $17
	ret
; 4590

Function4590: ; 4590
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	inc a
	and $f
	ld [hl], a
	and $8
	jr z, Function45a4
	ld hl, $000d
	add hl, bc
	ld [hl], $4
	ret
; 45a4

Function45a4: ; 45a4
	ld hl, $000d
	add hl, bc
	ld [hl], $0
	ret
; 45ab

Function45ab: ; 45ab
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	inc a
	ld [hl], a
	and $c
	rrca
	rrca
	add $18
	ld hl, $000d
	add hl, bc
	ld [hl], a
	ret
; 45be

Function45be: ; 45be
	ld hl, $000d
	add hl, bc
	ld [hl], $16
	ret
; 45c5

Function45c5: ; 45c5
	ld a, [$d831]
	ld d, $17
	cp $33
	jr z, .asm_45d4
	cp $47
	jr z, .asm_45d4
	ld d, $16

.asm_45d4
	ld hl, $000d
	add hl, bc
	ld [hl], d
	ret
; 45da

Function45da: ; 45da
	ld hl, $000c
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld hl, $000d
	add hl, bc
	and $2
	ld a, $1c
	jr z, .asm_45eb
	inc a

.asm_45eb
	ld [hl], a
	ret
; 45ed

Function45ed: ; 45ed
	ld hl, $000c
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld hl, $000d
	add hl, bc
	and $4
	ld a, $1e
	jr z, .asm_45fe
	inc a

.asm_45fe
	ld [hl], a
	ret
; 4600

Function4600: ; 4600
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	ld hl, $0012
	add hl, bc
	ld [hl], a
	ld hl, $0011
	add hl, bc
	ld a, [hl]
	ld hl, $0013
	add hl, bc
	ld [hl], a
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	ld hl, $000f
	add hl, bc
	ld [hl], a
	call Function4661
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call Function4679
	ret
; 462a

Function462a: ; 462a
	ld hl, $0012
	add hl, bc
	ld a, [hl]
	ld hl, $0010
	add hl, bc
	ld [hl], a
	ld hl, $0013
	add hl, bc
	ld a, [hl]
	ld hl, $0011
	add hl, bc
	ld [hl], a
	ret
; 463f

Function463f: ; 463f
	ld hl, $0005
	add hl, bc
	bit 3, [hl]
	jr z, .asm_464f
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call Function4661

.asm_464f
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call Function4679
	ret c
	ld hl, $000f
	add hl, bc
	ld a, [hl]
	call Function4679
	ret
; 4661

Function4661: ; 4661
	call Function188e
	jr z, .asm_466b
	call Function1875
	jr c, .asm_4672

.asm_466b
	ld hl, $0005
	add hl, bc
	set 3, [hl]
	ret

.asm_4672
	ld hl, $0005
	add hl, bc
	res 3, [hl]
	ret
; 4679

Function4679: ; 4679
	and a
	ret
; 467b

Function467b: ; 467b
	xor a
	ld hl, $000c
	add hl, bc
	ld [hl], a
	ld hl, $001b
	add hl, bc
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ret
; 4690

Function4690: ; 4690
	ld hl, $0007
	add hl, bc
	ld [hl], a
	ld hl, $0004
	add hl, bc
	bit 2, [hl]
	jr nz, .asm_46a6

	add a
	add a
	and $c
	ld hl, $0008
	add hl, bc
	ld [hl], a

.asm_46a6
	; fallthrough
; 46a6

Function46a6: ; 46a6
	call Function46e9
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld a, d
	call Function4730
	ld hl, $0012
	add hl, bc
	add [hl]
	ld hl, $0010
	add hl, bc
	ld [hl], a
	ld d, a
	ld a, e
	call Function4730
	ld hl, $0013
	add hl, bc
	add [hl]
	ld hl, $0011
	add hl, bc
	ld [hl], a
	ld e, a
	push bc
	call Function2a3c
	pop bc
	ld hl, $000e
	add hl, bc
	ld [hl], a
	ret
; 46d7

Function46d7: ; 46d7
	call Function46e9
	ld hl, $0017
	add hl, bc
	ld a, [hl]
	add d
	ld [hl], a
	ld hl, $0018
	add hl, bc
	ld a, [hl]
	add e
	ld [hl], a
	ret
; 46e9

Function46e9: ; 46e9
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	and $f
	add a
	add a
	ld l, a
	ld h, 0
	ld de, StepVectors
	add hl, de
	ld d, [hl]
	inc hl
	ld e, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ret
; 4700

StepVectors: ; 4700
	;   x,  y, duration, speed
	; slow
	db  0,  1, $10, $01
	db  0, -1, $10, $01
	db -1,  0, $10, $01
	db  1,  0, $10, $01
	; normal
	db  0,  2, $08, $02
	db  0, -2, $08, $02
	db -2,  0, $08, $02
	db  2,  0, $08, $02
	; fast
	db  0,  4, $04, $04
	db  0, -4, $04, $04
	db -4,  0, $04, $04
	db  4,  0, $04, $04
; 4730

Function4730: ; 4730
	add a
	ret z
	ld a, 1
	ret nc
	ld a, -1
	ret
; 4738

Function4738: ; 4738
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	and $3
	ld [$d151], a
	call Function46d7
	ld a, [$d14e]
	add d
	ld [$d14e], a
	ld a, [$d14f]
	add e
	ld [$d14f], a
	ld hl, $d150
	set 5, [hl]
	ret
; 4759

Function4759: ; 4759
	push bc
	ld e, a
	ld d, 0
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	call GetMapObject
	add hl, de
	ld a, [hl]
	pop bc
	ret
; 4769

Function4769: ; 4769
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_477d
	push bc
	call GetMapObject
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	pop bc
	ret

.asm_477d
	ld a, $6
	ret
; 4780

Function4780: ; 4780
	ld hl, $001b
	add hl, bc
	ld [hl], $0
	ret
; 4787

Function4787: ; 4787
	ld hl, $001b
	add hl, bc
	inc [hl]
	ret
; 478d

Function478d: ; 478d
	ld hl, $001b
	add hl, bc
	dec [hl]
	ret
; 4793

Function4793: ; 4793
	ld hl, $001b
	add hl, bc
	ld a, [hl]
	pop hl
	rst JumpTable
	ret
; 479b

Function479b: ; 479b
	ld hl, $001c
	add hl, bc
	ld [hl], $0
	ret
; 47a2

Function47a2: ; 47a2
	ld hl, $001c
	add hl, bc
	inc [hl]
	ret
; 47a8

Function47a8: ; 47a8
	ld hl, $001c
	add hl, bc
	ld a, [hl]
	pop hl
	rst JumpTable
	ret
; 47b0

Function47b0: ; 47b0
	ld hl, $001c
	add hl, bc
	ld a, [hl]
	ret
; 47b6

Function47b6: ; 47b6
	ld hl, $001c
	add hl, bc
	ld [hl], a
	ret
; 47bc

Function47bc: ; 47bc
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	push bc
	call Function2a3c
	pop bc
	ld hl, $000e
	add hl, bc
	ld [hl], a
	call Function4600
	call Function467b
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 47dd

Function47dd: ; 47dd
	call Function479b
	call Function1a2f
	ld a, [hl]
	ld hl, .Pointers
	rst JumpTable
	ret
; 47e9

.Pointers ; 47e9
	dw Function4821
	dw Function4822
	dw Function482c
	dw Function4838
	dw Function4842
	dw Function4851
	dw Function4869
	dw Function487c
	dw Function4882
	dw Function4888
	dw Function488e
	dw Function4891
	dw Function4894
	dw Function4897
	dw Function489d
	dw Function48a0
	dw Function48a6
	dw Function48ac
	dw Function48ff
	dw Function49e5
	dw Function4a21
	dw Function4958
	dw Function496e
	dw Function4abc
	dw Function498d
	dw Function4984
	dw Function4a46
	dw Function4a89
; 4821

Function4821: ; 4821
	ret
; 4822

Function4822: ; 4822
	call Random
	ld a, [hRandomAdd]
	and 1
	jp Function4af0
; 482c

Function482c: ; 482c
	call Random
	ld a, [hRandomAdd]
	and 1
	or 2
	jp Function4af0
; 4838

Function4838: ; 4838
	call Random
	ld a, [hRandomAdd]
	and 3
	jp Function4af0
; 4842

Function4842: ; 4842
	call Random
	ld a, [hRandomAdd]
	and $c
	ld hl, $0008
	add hl, bc
	ld [hl], a
	jp Function4b1d
; 4851

Function4851: ; 4851
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	and $c
	ld d, a
	call Random
	ld a, [hRandomAdd]
	and $c
	cp d
	jr nz, .asm_4865
	xor $c

.asm_4865
	ld [hl], a
	jp Function4b26
; 4869

Function4869: ; 4869
	call Function462a
	call Function467b
	ld hl, $000b
	add hl, bc
	ld [hl], $1
	ld hl, $0009
	add hl, bc
	ld [hl], $5
	ret
; 487c

Function487c: ; 487c
	ld hl, Function5000
	jp Function5041
; 4882

Function4882: ; 4882
	ld hl, Function5015
	jp Function5041
; 4888

Function4888: ; 4888
	ld hl, Function5026
	jp Function5041
; 488e

Function488e: ; 488e
	jp Function5037
; 4891

Function4891: ; 4891
	jp Function5037
; 4894

Function4894: ; 4894
	jp Function5037
; 4897

Function4897: ; 4897
	ld hl, Function5000
	jp Function5041
; 489d

Function489d: ; 489d
	jp Function5037
; 48a0

Function48a0: ; 48a0
	ld hl, Function54e6
	jp Function5041
; 48a6

Function48a6: ; 48a6
	ld hl, Function500e
	jp Function5041
; 48ac

Function48ac: ; 48ac
	call Function4793
	dw Function48b3
	dw Function48f8
; 48b3

Function48b3: ; 48b3
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call CheckPitTile
	jr z, .asm_48f5
	ld hl, $0005
	add hl, bc
	bit 2, [hl]
	res 2, [hl]
	jr z, .asm_48ee
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	and $3
	or $0
	call Function4690
	call Function6ec1
	jr c, .asm_48eb
	ld de, SFX_STRENGTH
	call PlaySFX
	call Function5538
	call Function463f
	ld hl, $0009
	add hl, bc
	ld [hl], $f
	ret

.asm_48eb
	call Function462a

.asm_48ee
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ret

.asm_48f5
	call Function4787
	; fallthrough
; 48f8

Function48f8: ; 48f8
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ret
; 48ff

Function48ff: ; 48ff
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	push bc
	call Function1ae5
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_494a
	ld hl, $0012
	add hl, bc
	ld a, [hl]
	cp d
	jr z, .asm_492d
	jr c, .asm_4929
	ld a, $3
	jr .asm_493d

.asm_4929
	ld a, $2
	jr .asm_493d

.asm_492d
	ld hl, $0013
	add hl, bc
	ld a, [hl]
	cp e
	jr z, .asm_494a
	jr c, .asm_493b
	ld a, $0
	jr .asm_493d

.asm_493b
	ld a, $1

.asm_493d
	ld d, a
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	and $c
	or d
	pop bc
	jp Function5412

.asm_494a
	pop bc
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000b
	add hl, bc
	ld [hl], $1
	ret
; 4958

Function4958: ; 4958
	call Function467b
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000b
	add hl, bc
	ld [hl], $9
	ld hl, $0009
	add hl, bc
	ld [hl], $4
	ret
; 496e

Function496e: ; 496e
	call Function467b
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000b
	add hl, bc
	ld [hl], $a
	ld hl, $0009
	add hl, bc
	ld [hl], $4
	ret
; 4984

Function4984: ; 4984
	call Function4793
	dw Function4996
	dw Function499c
	dw Function49b8
; 498d

Function498d: ; 498d
	call Function4793
	dw Function4996
	dw Function499c
	dw Function49c4
; 4996

Function4996: ; 4996
	call Function467b
	call Function4787
	; fallthrough
; 499c

Function499c: ; 499c
	ld hl, $000b
	add hl, bc
	ld [hl], $1
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	ld a, $10
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld hl, $0009
	add hl, bc
	ld [hl], $3
	call Function4787
	ret
; 49b8

Function49b8: ; 49b8
	ld de, .data_49c0
	call Function49d0
	jr Function4984
; 49c0

.data_49c0 ; 49c0
	db $0c, $08, $00, $04
; 49c4

Function49c4: ; 49c4
	ld de, .data_49cc
	call Function49d0
	jr Function498d
; 49cc

.data_49cc ; 49cc
	db $08, $0c, $04, $00
; 49d0

Function49d0: ; 49d0
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	and $c
	rrca
	rrca
	push hl
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	pop hl
	ld [hl], a
	call Function478d
	ret
; 49e5

Function49e5: ; 49e5
	call Function4aa8
	ld hl, $000b
	add hl, bc
	ld [hl], $7
	ld hl, $000a
	add hl, de
	ld a, [hl]
	inc a
	add a
	add $0
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld hl, $0007
	add hl, de
	ld a, [hl]
	and 3
	ld d, $e
	cp 0
	jr z, .asm_4a0f
	cp 1
	jr z, .asm_4a0f
	ld d, $c

.asm_4a0f
	ld hl, $001a
	add hl, bc
	ld [hl], d
	ld hl, $0019
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $13
	ret
; 4a21

Function4a21: ; 4a21
	call Function467b
	call Function4aa8
	ld hl, $000b
	add hl, bc
	ld [hl], $8
	ld hl, $000a
	add hl, bc
	ld [hl], $0
	ld hl, $001a
	add hl, bc
	ld [hl], $f0
	ld hl, $0019
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $13
	ret
; 4a46

Function4a46: ; 4a46
	call Function467b
	call Function4aa8
	ld hl, $000b
	add hl, bc
	ld [hl], $e
	ld hl, $000a
	add hl, de
	ld a, [hl]
	inc a
	add a
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld hl, $0007
	add hl, de
	ld a, [hl]
	and 3
	ld e, a
	ld d, 0
	ld hl, .data_4a81
	add hl, de
	add hl, de
	ld d, [hl]
	inc hl
	ld e, [hl]
	ld hl, $0019
	add hl, bc
	ld [hl], d
	ld hl, $001a
	add hl, bc
	ld [hl], e
	ld hl, $0009
	add hl, bc
	ld [hl], $13
	ret
; 4a81

.data_4a81  ; 4a81
	;   x,  y
	db  0, -4
	db  0,  8
	db  6,  2
	db -6,  2
; 4a89

Function4a89: ; 4a89
	call Function467b
	call Function4aa8
	ld hl, $000b
	add hl, bc
	ld [hl], $f
	ld hl, $000a
	add hl, de
	ld a, [hl]
	add $ff
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld hl, $0009
	add hl, bc
	ld [hl], $13
	ret
; 4aa8

Function4aa8: ; 4aa8
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	push bc
	call Function1ae5
	ld d, b
	ld e, c
	pop bc
	ld hl, $001d
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ret
; 4abc

Function4abc: ; 4abc
	call Function467b
	ld hl, $000b
	add hl, bc
	ld [hl], $0
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	call Function4ade
	ld hl, $000a
	add hl, bc
	ld [hl], e
	ld hl, $001e
	add hl, bc
	ld [hl], a
	ld hl, $0009
	add hl, bc
	ld [hl], $15
	ret
; 4ade

Function4ade: ; 4ade
	ld d, a
	and $3f
	ld e, a
	ld a, d
	rlca
	rlca
	and $3
	ld d, a
	inc d
	ld a, $1
.asm_4aeb
	dec d
	ret z
	add a
	jr .asm_4aeb
; 4af0

Function4af0: ; 4af0
	call Function4690
	call Function6ec1
	jr c, Function4b17
	call Function463f
	ld hl, $000b
	add hl, bc
	ld [hl], $2
	ld hl, $d4cf
	ld a, [hConnectionStripLength]
	cp [hl]
	jr z, .asm_4b10
	ld hl, $0009
	add hl, bc
	ld [hl], $7
	ret

.asm_4b10
	ld hl, $0009
	add hl, bc
	ld [hl], $6
	ret

Function4b17: ; 4b17
	call Function467b
	call Function462a
	; fallthrough
; 4b1d

Function4b1d: ; 4b1d
	call Random
	ld a, [hRandomAdd]
	and $7f
	jr Function4b2d
; 4b26

Function4b26: ; 4b26
	call Random
	ld a, [hRandomAdd]
	and $1f
	; fallthrough
; 4b2d

Function4b2d: ; 4b2d
	ld hl, $000a
	add hl, bc
	ld [hl], a
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000b
	add hl, bc
	ld [hl], $1
	ld hl, $0009
	add hl, bc
	ld [hl], $3
	ret
; 4b45

Pointers4b45: ; 4b45
	dw Function47bc
	dw Function47dd
	dw Function4e2b
	dw Function4ddd
	dw Function4e21
	dw Function4e0c
	dw Function4e56
	dw Function4e47
	dw Function4b86
	dw Function4bbf
	dw Function4e83
	dw Function4dff
	dw Function4c18
	dw Function4c89
	dw Function4d14
	dw Function4ecd
	dw Function4d7e
	dw Function4daf
	dw Function4dc8
	dw Function4f04
	dw Function4f33
	dw Function4f33
	dw Function4f77
	dw Function4f7a
	dw Function4df0
	dw Function4f83
; 4b79

Function4b79: ; 4b79
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4b86

Function4b86: ; 4b86
	call Function47a8
	dw Function4b8d
	dw Function4ba9
; 4b8d

Function4b8d: ; 4b8d
	call Function46d7
	call UpdateJumpPosition
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	call Function46a6
	ld hl, $0005
	add hl, bc
	res 3, [hl]
	call Function47a2
	ret
; 4ba9

Function4ba9: ; 4ba9
	call Function46d7
	call UpdateJumpPosition
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4bbf

Function4bbf: ; 4bbf
	call Function47a8
	dw Function4bca
	dw Function4bd2
	dw Function4bf2
	dw Function4bfd
; 4bca

Function4bca: ; 4bca
	ld hl, $d150
	set 7, [hl]
	call Function47a2
;	fallthrough
; 4bd2

Function4bd2: ; 4bd2
	call UpdateJumpPosition
	call Function4738
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, $0005
	add hl, bc
	res 3, [hl]
	ld hl, $d150
	set 6, [hl]
	set 4, [hl]
	call Function47a2
	ret
; 4bf2

Function4bf2: ; 4bf2
	call Function46a6
	ld hl, $d150
	set 7, [hl]
	call Function47a2
;	fallthrough
; 4bfd

Function4bfd: ; 4bfd
	call UpdateJumpPosition
	call Function4738
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $d150
	set 6, [hl]
	call Function4600
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4c18

Function4c18: ; 4c18
	call Function47a8
	dw Function4c23
	dw Function4c32
	dw Function4c42
	dw Function4c5d
; 4c23

Function4c23: ; 4c23
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4c32

Function4c32: ; 4c32
	ld hl, $000b
	add hl, bc
	ld [hl], $4
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
	ret
; 4c42

Function4c42: ; 4c42
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $001f
	add hl, bc
	ld [hl], $10
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	ld hl, $0005
	add hl, bc
	res 3, [hl]
	call Function47a2
;	fallthrough
; 4c5d

Function4c5d: ; 4c5d
	ld hl, $000b
	add hl, bc
	ld [hl], $4
	ld hl, $001f
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, $001a
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4c89

Function4c89: ; 4c89
	call Function47a8
	dw Function4c9a
	dw Function4caa
	dw Function4cb3
	dw Function4cc9
	dw Function4ceb
	dw Function4cf5
	dw Function4d01
; 4c9a

Function4c9a: ; 4c9a
	ld hl, $000b
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4caa

Function4caa: ; 4caa
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4cb3

Function4cb3: ; 4cb3
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $001f
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4cc9

Function4cc9: ; 4cc9
	ld hl, $000b
	add hl, bc
	ld [hl], $4
	ld hl, $001f
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, $001a
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4ceb

Function4ceb: ; 4ceb
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
	ret
; 4cf5

Function4cf5: ; 4cf5
	ld hl, $000b
	add hl, bc
	ld [hl], $4
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
; 4d01

Function4d01: ; 4d01
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $001a
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4d14

Function4d14: ; 4d14
	call Function47a8
	dw Function4d1f
	dw Function4d2e
	dw Function4d4f
	dw Function4d6b
; 4d1f

Function4d1f: ; 4d1f
	ld hl, $000b
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4d2e

Function4d2e: ; 4d2e
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $000b
	add hl, bc
	ld [hl], $2
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $001f
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
;	fallthrough
; 4d4f

Function4d4f: ; 4d4f
	ld hl, $001f
	add hl, bc
	inc [hl]
	ld a, [hl]
	ld d, $60
	call Sine
	ld a, h
	sub $60
	ld hl, $001a
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
;	fallthrough
; 4d6b

Function4d6b: ; 4d6b
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $001a
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4d7e

Function4d7e: ; 4d7e
	call Function47a8
	dw Function4d85
	dw Function4d94
; 4d85

Function4d85: ; 4d85
	ld hl, $000a
	add hl, bc
	ld [hl], $8
	ld hl, $001a
	add hl, bc
	ld [hl], $0
	call Function47a2
	; fallthrough
; 4d94

Function4d94: ; 4d94
	ld hl, $001a
	add hl, bc
	ld a, [hl]
	xor 1
	ld [hl], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $001a
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4daf

Function4daf: ; 4daf
	call Function4db5
	jp Function4b79
; 4db5

Function4db5: ; 4db5
	ld hl, $000a
	add hl, bc
	ld a, [hl]
	and $1
	ld a, $1
	jr z, .asm_4dc2
	ld a, $0

.asm_4dc2
	ld hl, $000b
	add hl, bc
	ld [hl], a
	ret
; 4dc8

Function4dc8: ; 4dc8
	ld hl, $000a
	add hl, bc
	ld a, [hl]
	and $1
	ld a, $4
	jr z, .asm_4dd5
	ld a, $5

.asm_4dd5
	ld hl, $000b
	add hl, bc
	ld [hl], a
	jp Function4b79
; 4ddd

Function4ddd: ; 4ddd
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4df0

Function4df0: ; 4df0
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	jp Function4357
; 4dff

Function4dff: ; 4dff
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4e0c

Function4e0c: ; 4e0c
	call Function47a8
	dw Function4e13
	dw Function4e21
; 4e13

Function4e13: ; 4e13
	call Function4769
	call Function1a47
	ld hl, $0008
	add hl, bc
	ld [hl], a
	call Function47a2
	; fallthrough
; 4e21

Function4e21: ; 4e21
	call Function4fb2
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ret
; 4e2b

Function4e2b: ; 4e2b
	call Function4fb2
	call Function46d7
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4e47

Function4e47: ; 4e47
	call Function46d7
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function4600
	jp Function4b1d
; 4e56

Function4e56: ; 4e56
; AnimateStep?
	call Function47a8
	dw Function4e5d
	dw Function4e65
; 4e5d

Function4e5d: ; 4e5d
	ld hl, $d150
	set 7, [hl]
	call Function47a2
	; fallthrough
; 4e65

Function4e65: ; 4e65
	call Function4738
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $d150
	set 6, [hl]
	call Function4600
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4e83

Function4e83: ; 4e83
	call Function47a8
	dw Function4e8e
	dw Function4ea4
	dw Function4ead
	dw Function4ec0
; 4e8e

Function4e8e: ; 4e8e
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	ld [hl], $2
	ld hl, $000a
	add hl, bc
	ld [hl], $2
	call Function47a2
	; fallthrough
; 4ea4

Function4ea4: ; 4ea4
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	call Function47a2
	; fallthrough
; 4ead

Function4ead: ; 4ead
	ld hl, $001d
	add hl, bc
	ld a, [hl]
	ld hl, $0008
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	ld [hl], $2
	call Function47a2
	; fallthrough
; 4ec0

Function4ec0: ; 4ec0
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4ecd

Function4ecd: ; 4ecd
	call Function46d7
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	push bc
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	ld b, a
	callba Function807e
	pop bc
	ld hl, $0005
	add hl, bc
	res 2, [hl]
	call Function4600
	ld hl, $0007
	add hl, bc
	ld [hl], $ff
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4f04

Function4f04: ; 4f04
	ld hl, $001d
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $0000
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_4f30
	ld hl, $0017
	add hl, de
	ld a, [hl]
	ld hl, $0017
	add hl, bc
	ld [hl], a
	ld hl, $0018
	add hl, de
	ld a, [hl]
	ld hl, $0018
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ret nz

.asm_4f30
	jp Function4357
; 4f33

Function4f33: ; 4f33
	call Function47a8
	dw Function4f3a
	dw Function4f43
; 4f3a

Function4f3a: ; 4f3a
	xor a
	ld hl, $001d
	add hl, bc
	ld [hl], a
	call Function47a2
	; fallthrough
; 4f43

Function4f43: ; 4f43
	ld hl, $001d
	add hl, bc
	ld d, [hl]
	ld a, [$d14f]
	sub d
	ld [$d14f], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	jr z, .asm_4f68
	ld a, [hl]
	call Function4f6c
	ld hl, $001d
	add hl, bc
	ld [hl], a
	ld d, a
	ld a, [$d14f]
	add d
	ld [$d14f], a
	ret

.asm_4f68
	call Function4357
	ret
; 4f6c

Function4f6c: ; 4f6c
	ld hl, $001e
	add hl, bc
	and 1
	ld a, [hl]
	ret z
	cpl
	inc a
	ret
; 4f77

Function4f77: ; 4f77
	call Function47a8 ; ????
; 4f7a

Function4f7a: ; 4f7a
	call Function47a8
	dw Function4f83
	dw Function4f83
	dw Function4f83
; 4f83

Function4f83: ; 4f83
	call Function47a8
	dw Function4f8a
	dw Function4f99
; 4f8a

Function4f8a: ; 4f8a
	ld hl, $000b
	add hl, bc
	ld [hl], $10
	ld hl, $000a
	add hl, bc
	ld [hl], $10
	call Function47a2
; 4f99

Function4f99: ; 4f99
	ld hl, $000a
	add hl, bc
	dec [hl]
	ret nz
	ld hl, $001a
	add hl, bc
	ld [hl], $60
	ld hl, $000c
	add hl, bc
	ld [hl], $0
	ld hl, $0009
	add hl, bc
	ld [hl], $1
	ret
; 4fb2

Function4fb2: ; 4fb2
	ret
; 4fb3

Function4fb3: ; 4fb3
	ld hl, $001d
	add hl, bc
	inc [hl]
	ld a, [hl]
	srl a
	srl a
	and 7
	ld l, a
	ld h, 0
	ld de, .y
	add hl, de
	ld a, [hl]
	ld hl, $001a
	add hl, bc
	ld [hl], a
	ret
; 4fcd

.y ; 4fcd
	db 0, -1, -2, -3, -4, -3, -2, -1
; 4fd5

UpdateJumpPosition: ; 4fd5
	call Function46e9
	ld a, h
	ld hl, $001f
	add hl, bc
	ld e, [hl]
	add e
	ld [hl], a
	nop
	srl e
	ld d, 0
	ld hl, .y
	add hl, de
	ld a, [hl]
	ld hl, $001a
	add hl, bc
	ld [hl], a
	ret
; 4ff0

.y ; 4ff0
	db  -4,  -6,  -8, -10, -11, -12, -12, -12
	db -11, -10,  -9,  -8,  -6,  -4,   0,   0
; 5000

Function5000: ; 5000
	ld a, [$c2de]
	ld hl, $c2df
	ld [hl], a
	ld a, $3e
	ld [$c2de], a
	ld a, [hl]
	ret
; 500e

Function500e: ; 500e
	ld hl, $c2e3
	call Function1aae
	ret
; 5015

Function5015: ; 5015
	ld hl, $001b
	add hl, bc
	ld e, [hl]
	inc [hl]
	ld d, 0
	ld hl, $c2e2
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld a, [hl]
	ret
; 5026

Function5026: ; 5026
	ld hl, $001b
	add hl, bc
	ld e, [hl]
	inc [hl]
	ld d, 0
	ld hl, $c2e6
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld a, [hl]
	ret
; 5037

Function5037: ; 5037
	ld hl, Function503d
	jp Function5041
; 503d

Function503d: ; 503d
	ld a, [$c2e2]
	ret
; 5041

Function5041: ; 5041
	call Function5055
.asm_5044
	xor a
	ld [$c2ea], a
	call Function505e
	call Function506b
	ld a, [$c2ea]
	and a
	jr nz, .asm_5044
	ret
; 5055

Function5055: ; 5055
	ld a, l
	ld [$c2eb], a
	ld a, h
	ld [$c2ec], a
	ret
; 505e

Function505e: ; 505e
	ld hl, $c2eb
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 5065

Function5065: ; 5065
	ld a, $1
	ld [$c2ea], a
	ret
; 506b

Function506b: ; 506b
	push af
	call Function54b8
	pop af
	ld hl, MovementPointers
	rst JumpTable
	ret
; 5075


; 5075
INCLUDE "engine/movement.asm"
; 54b8


Function54b8: ; 54b8
	ld e, a
	ld a, [$d4ce]
	cp $ff
	ret z
	ld a, [$d4cd]
	ld d, a
	ld a, [hConnectionStripLength]
	cp d
	ret nz
	ld a, e
	cp $3e
	ret z
	cp $47
	ret z
	cp $4b
	ret z
	cp $50
	ret z
	cp $8
	ret c
	push af
	ld hl, $d4d0
	inc [hl]
	ld e, [hl]
	ld d, 0
	ld hl, $d4d1
	add hl, de
	pop af
	ld [hl], a
	ret
; 54e6

Function54e6: ; 54e6
	ld hl, $d4d0
	ld a, [hl]
	and a
	jr z, .asm_5503
	cp $ff
	jr z, .asm_5503
	dec [hl]
	ld e, a
	ld d, 0
	ld hl, $d4d1
	add hl, de
	inc e
	ld a, $ff
.asm_54fc
	ld d, [hl]
	ld [hld], a
	ld a, d
	dec e
	jr nz, .asm_54fc
	ret

.asm_5503
	call Function550a
	ret c
	ld a, $3e
	ret
; 550a

Function550a: ; 550a
	ld a, [$d4cd]
	cp $ff
	jr z, .asm_5520
	push bc
	call Function1ae5
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	pop bc
	and a
	jr z, .asm_5520
	and a
	ret

.asm_5520
	ld a, $ff
	ld [$d4ce], a
	ld a, $47
	scf
	ret
; 5529

Function5529: ; 5529
	push bc
	ld de, .data_5535
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5535
	db $00, $05, $1b
; 5538

Function5538: ; 5538
	push bc
	ld de, .data_5544
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5544
	db $00, $05, $22
; 5547

Function5547: ; 5547
	push bc
	ld de, .data_5553
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5553
	db $00, $05, $1c
; 5556

Function5556: ; 5556
	push bc
	ld de, .data_5562
	call Function55b9
	call Function55ac
	pop bc
	ret

.data_5562
	db $00, $06, $23
; 5565

Function5565: ; 5565
	push bc
	push af
	ld de, .data_5576
	call Function55b9
	pop af
	ld [$c2f5], a
	call Function55ac
	pop bc
	ret

.data_5576
	db $00, $05, $1d
; 5579

Function5579: ; 5579
	push bc
	ld a, [hConnectionStripLength]
	ld c, a
	call Function5582
	pop bc
	ret
; 5582

Function5582: ; 5582
	ld de, $d4d6
	ld a, $d
.asm_5587
	push af
	ld hl, $0004
	add hl, de
	bit 7, [hl]
	jr z, .asm_55a1
	ld hl, $0000
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_55a1
	push bc
	xor a
	ld bc, $0028
	call ByteFill
	pop bc

.asm_55a1
	ld hl, $0028
	add hl, de
	ld d, h
	ld e, l
	pop af
	dec a
	jr nz, .asm_5587
	ret
; 55ac

Function55ac: ; 55ac
	call Function1a13
	ret nc
	ld d, h
	ld e, l
	callba Function8286
	ret
; 55b9

Function55b9: ; 55b9
	ld hl, $c2f0
	ld [hl], $ff
	inc hl
	ld [hl], $ff
	inc hl
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hli], a
	ld a, [hConnectionStripLength]
	ld [hli], a
	push hl
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	pop hl
	ld [hl], d
	inc hl
	ld [hl], e
	inc hl
	ld [hl], $ff
	ret
; 55e0

Function55e0: ; 55e0
	ld a, [VramState]
	bit 0, a
	ret z
	ld bc, $d4d6
	xor a
.asm_55ea
	ld [hConnectionStripLength], a
	call Function1af1
	jr z, .asm_55f4
	call Function565c

.asm_55f4
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $d
	jr nz, .asm_55ea
	ret
; 5602

Function5602: ; 5602
	call Function5645
	ld a, $0
	call Function5629
	ld a, [$d459]
	bit 7, a
	jr z, .asm_5619
	ld a, [$ffe0]
	and a
	jr z, .asm_5619
	call Function5629

.asm_5619
	call Function5920
	ret
; 561d

Function561d: ; 561d
	call Function5645
	ld a, $0
	call Function5629
	call Function5920
	ret
; 5629

Function5629: ; 5629
	cp $10
	ret nc
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $ff
	ret z
	cp $d
	ret nc
	call Function1ae5
	call Function1af1
	ret z
	call Function5673
	ret
; 5645

Function5645: ; 5645
	xor a
	ld bc, $d4d6
.asm_5649
	ld [hConnectionStripLength], a
	call Function5680
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $d
	jr nz, .asm_5649
	ret
; 565c

Function565c: ; 565c
	push bc
	call Function56cd
	pop bc
	jr c, Function5680
	call Function56a3
	jr c, Function5680
	call Function5688
	callba Function4440
	xor a
	ret
; 5673

Function5673: ; 5673
	call Function56a3
	jr c, Function5680
	callba Function4440
	xor a
	ret
; 5680

Function5680: ; 5680
	ld hl, $000d
	add hl, bc
	ld [hl], $ff
	scf
	ret
; 5688

Function5688: ; 5688
	push bc
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	call Function2a3c
	pop bc
	ld hl, $000e
	add hl, bc
	ld [hl], a
	callba Function463f
	ret
; 56a3

Function56a3: ; 56a3
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	inc d
	inc e
	ld a, [XCoord]
	cp d
	jr z, .asm_56bc
	jr nc, .asm_56cb
	add $b
	cp d
	jr c, .asm_56cb

.asm_56bc
	ld a, [YCoord]
	cp e
	jr z, .asm_56c9
	jr nc, .asm_56cb
	add $a
	cp e
	jr c, .asm_56cb

.asm_56c9
	xor a
	ret

.asm_56cb
	scf
	ret
; 56cd

Function56cd: ; 56cd
	ld a, [$d14c]
	ld d, a
	ld hl, $0019
	add hl, bc
	ld a, [hl]
	ld hl, $0017
	add hl, bc
	add [hl]
	add d
	cp $f0
	jr nc, .asm_56e5
	cp $a0
	jp nc, .asm_5768

.asm_56e5
	and $7
	ld d, $2
	cp $4
	jr c, .asm_56ef
	ld d, $3

.asm_56ef
	ld a, [hl]
	srl a
	srl a
	srl a
	cp $14
	jr c, .asm_56fc
	sub $20

.asm_56fc
	ld [$ffbd], a
	ld a, [$d14d]
	ld e, a
	ld hl, $001a
	add hl, bc
	ld a, [hl]
	ld hl, $0018
	add hl, bc
	add [hl]
	add e
	cp $f0
	jr nc, .asm_5715
	cp $90
	jr nc, .asm_5768

.asm_5715
	and $7
	ld e, $2
	cp $4
	jr c, .asm_571f
	ld e, $3

.asm_571f
	ld a, [hl]
	srl a
	srl a
	srl a
	cp $12
	jr c, .asm_572c
	sub $20

.asm_572c
	ld [$ffbe], a
	ld hl, $0006
	add hl, bc
	bit 7, [hl]
	jr z, .asm_573e
	ld a, d
	add $2
	ld d, a
	ld a, e
	add $2
	ld e, a

.asm_573e
	ld a, d
	ld [$ffbf], a
.asm_5741
	ld a, [$ffbf]
	ld d, a
	ld a, [$ffbe]
	add e
	dec a
	cp $12
	jr nc, .asm_5763
	ld b, a
.asm_574d
	ld a, [$ffbd]
	add d
	dec a
	cp $14
	jr nc, .asm_5760
	ld c, a
	push bc
	call GetTileCoord
	pop bc
	ld a, [hl]
	cp $60
	jr nc, .asm_5768

.asm_5760
	dec d
	jr nz, .asm_574d

.asm_5763
	dec e
	jr nz, .asm_5741
	and a
	ret

.asm_5768
	scf
	ret
; 576a

Function576a: ; 576a
	call Function5771
	call Function5781
	ret
; 5771

Function5771: ; 5771
	xor a
	ld [$d14e], a
	ld [$d14f], a
	ld [$d150], a
	ld a, $ff
	ld [$d151], a
	ret
; 5781

Function5781: ; 5781
	ld bc, $d4d6
	xor a
.asm_5785
	ld [hConnectionStripLength], a
	call Function1af1
	jr z, .asm_578f
	call Function437b

.asm_578f
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $d
	jr nz, .asm_5785
	ret
; 579d

Function579d: ; 579d
	ld a, $3e
	ld [$c2de], a
	ld [$c2df], a
	xor a
	ld [$d04e], a
	ld [$d4e2], a
	call Function57bc
	callba Function149c6
	call c, Function57d9
	call Function57ca
	ret
; 57bc

Function57bc: ; 57bc
	ld hl, $d45b
	bit 7, [hl]
	jr nz, .asm_57c4
	ret

.asm_57c4
	ld a, $0
	ld [PlayerAction], a
	ret
; 57ca

Function57ca: ; 57ca
	ld hl, $d45b
	bit 5, [hl]
	ret z
	ld a, [$d45b]
	and $3
	add a
	add a
	jr Function57db
; 57d9

Function57d9: ; 57d9
	ld a, $0
	; fallthrough
; 57db

Function57db: ; 57db
	ld bc, $d4d6
	call Function1af8
	ret
; 57e2

Function57e2: ; 57e2
	ld a, d
	and $80
	ret z
	ld bc, $0000
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	or d
	ld [hl], a
	ld a, d
	swap a
	and $7
	ld d, a
	ld bc, $d4d6
	ld hl, $0006
	add hl, bc
	ld a, [hl]
	and $f8
	or d
	ld [hl], a
	ret
; 5803

Function5803: ; 5803
	push bc
	ld a, b
	call Function5815
	pop bc
	ret c
	ld a, c
	call Function582c
	callba Function848a
	ret
; 5815

Function5815: ; 5815
	call Function18de
	ret c
	ld a, [hConnectedMapWidth]
	ld [$d4cd], a
	ret
; 581f

Function581f: ; 581f
	call Function5826
	call Function5847
	ret
; 5826

Function5826: ; 5826
	ld a, $ff
	ld [$d4cd], a
	ret
; 582c

Function582c: ; 582c
	push af
	call Function5847
	pop af
	call Function18de
	ret c
	ld hl, $0003
	add hl, bc
	ld [hl], $13
	ld hl, $0009
	add hl, bc
	ld [hl], $0
	ld a, [hConnectedMapWidth]
	ld [$d4ce], a
	ret
; 5847

Function5847: ; 5847
	ld a, [$d4ce]
	cp $ff
	ret z
	call Function1ae5
	callba Function58e3
	ld a, $ff
	ld [$d4ce], a
	ret
; 585c

Function585c: ; 585c
	ld a, c
	call Function18de
	ret c
	push bc
	call Function587a
	pop bc
	ld hl, $0005
	add hl, bc
	res 5, [hl]
	xor a
	ret
; 586e

Function586e: ; 586e
	call Function18de
	ret c
	ld hl, $0005
	add hl, bc
	set 5, [hl]
	xor a
	ret
; 587a

Function587a: ; 587a
	ld bc, $d4d6
	xor a
.asm_587e
	push af
	call Function1af1
	jr z, .asm_588a
	ld hl, $0005
	add hl, bc
	set 5, [hl]

.asm_588a
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	pop af
	inc a
	cp $d
	jr nz, .asm_587e
	ret
; 5897

Function5897: ; 5897
	ld a, [$d4cd]
	cp $ff
	ret z
	push bc
	call Function1ae5
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	pop bc
	cp c
	ret nz
	ld a, [$d4ce]
	cp $ff
	ret z
	call Function1ae5
	ld hl, $0005
	add hl, bc
	res 5, [hl]
	ret
; 58b9

Function58b9: ; 58b9
	push bc
	ld bc, $d4d6
	xor a
.asm_58be
	push af
	call Function1af1
	jr z, .asm_58ca
	ld hl, $0005
	add hl, bc
	res 5, [hl]

.asm_58ca
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	pop af
	inc a
	cp $d
	jr nz, .asm_58be
	pop bc
	ret
; 58d8

Function58d8: ; 58d8
	call Function18de
	ret c
	ld hl, $0005
	add hl, bc
	res 5, [hl]
	ret
; 58e3

Function58e3: ; 58e3
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	cp $ff
	jp z, Function5903
	push bc
	call GetMapObject
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	pop bc
	ld hl, $0003
	add hl, bc
	ld [hl], a
	ld hl, $0009
	add hl, bc
	ld [hl], $0
	ret
; 5903

Function5903: ; 5903
	call GetSpriteDirection
	rrca
	rrca
	ld e, a
	ld d, 0
	ld hl, .data_591c
	add hl, de
	ld a, [hl]
	ld hl, $0003
	add hl, bc
	ld [hl], a
	ld hl, $0009
	add hl, bc
	ld [hl], $0
	ret

.data_591c
	db 6, 7, 8, 9
; 5920

Function5920: ; 5920
	ld a, [VramState]
	bit 0, a
	ret z
	xor a
	ld [$ffbd], a
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	call Function5991
	call Function593a
	pop af
	ld [hOAMUpdate], a
	ret
; 593a

Function593a: ; 593a
	ld a, [VramState]
	bit 1, a
	ld b, $a0
	jr z, .asm_5945
	ld b, $70

.asm_5945
	ld a, [$ffbd]
	cp b
	ret nc
	ld l, a
	ld h, $c4
	ld de, $0004
	ld a, b
	ld c, $a0
.asm_5952
	ld [hl], c
	add hl, de
	cp l
	jr nz, .asm_5952
	ret
; 5958

Function5958: ; 5958
	push hl
	push de
	push bc
	ld a, [$d14c]
	ld d, a
	ld a, [$d14d]
	ld e, a
	ld bc, $d4d6
	ld a, $d
.asm_5968
	push af
	call Function1af1
	jr z, .asm_597c
	ld hl, $0017
	add hl, bc
	ld a, [hl]
	add d
	ld [hl], a
	ld hl, $0018
	add hl, bc
	ld a, [hl]
	add e
	ld [hl], a

.asm_597c
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	pop af
	dec a
	jr nz, .asm_5968
	xor a
	ld [$d14c], a
	ld [$d14d], a
	pop bc
	pop de
	pop hl
	ret
; 5991

Function5991: ; 5991
	call Function59a4
	ld c, $30
	call Function59f3
	ld c, $20
	call Function59f3
	ld c, $10
	call Function59f3
	ret
; 59a4

Function59a4: ; 59a4
	xor a
	ld hl, $c2eb
	ld bc, $000d
	call ByteFill
	ld d, 0
	ld bc, $d4d6
	ld hl, $c2eb
.asm_59b6
	push hl
	call Function1af1
	jr z, .asm_59d9
	ld hl, $000d
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_59d9
	ld e, $10
	ld hl, $0005
	add hl, bc
	bit 0, [hl]
	jr nz, .asm_59e2
	ld e, $20
	bit 1, [hl]
	jr z, .asm_59e2
	ld e, $30
	jr .asm_59e2

.asm_59d9
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	jr .asm_59ec

.asm_59e2
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	ld a, d
	or e
	ld [hli], a

.asm_59ec
	inc d
	ld a, d
	cp $d
	jr nz, .asm_59b6
	ret
; 59f3

Function59f3: ; 59f3
	ld hl, $c2eb
.asm_59f6
	ld a, [hli]
	ld d, a
	and $f0
	ret z
	cp c
	jr nz, .asm_59f6
	push bc
	push hl
	ld a, d
	and $f
	call Function5ac2
	call Function5a0d
	pop hl
	pop bc
	jr .asm_59f6
; 5a0d

Function5a0d: ; 5a0d
	ld hl, $0002
	add hl, bc
	ld a, [hl]
	and $7f
	ld [$ffc1], a

	xor a
	bit 7, [hl]
	jr nz, .asm_5a1d
	or 8
.asm_5a1d

	ld hl, $0005
	add hl, bc
	ld e, [hl]
	bit 7, e
	jr z, .asm_5a28
	or $80
.asm_5a28

	bit 4, e
	jr z, .asm_5a2e
	or $10
.asm_5a2e

	ld hl, $0006
	add hl, bc
	ld d, a
	ld a, [hl]
	and 7
	or d
	ld d, a

	xor a
	bit 3, e
	jr z, .asm_5a3f
	or $80
.asm_5a3f
	ld [$ffc2], a

	ld hl, $0017
	add hl, bc
	ld a, [hl]

	ld hl, $0019
	add hl, bc
	add [hl]
	add 8
	ld e, a
	ld a, [$d14c]
	add e
	ld [$ffbf], a

	ld hl, $0018
	add hl, bc
	ld a, [hl]

	ld hl, $001a
	add hl, bc
	add [hl]

	add $c
	ld e, a
	ld a, [$d14d]
	add e
	ld [$ffc0], a

	ld hl, $000d
	add hl, bc
	ld a, [hl]
	cp -1
	jp z, .done
	cp NUM_FACINGS
	jp nc, .done

	ld l, a
	ld h, 0
	add hl, hl
	ld bc, Facings
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a

	ld a, [$ffbd]
	ld c, a
	ld b, Sprites / $100
	ld a, [hli]
	ld [$ffbe], a
	add c
	cp SpritesEnd % $100
	jr nc, .full

.addsprite
	ld a, [$ffc0]
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld a, [$ffbf]
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld e, [hl]
	inc hl

	ld a, [$ffc1]
	bit 2, e
	jr z, .asm_5aa3
	xor a
.asm_5aa3
	add [hl]
	inc hl

	ld [bc], a
	inc c

	ld a, e
	bit 1, a
	jr z, .asm_5aaf
	ld a, [$ffc2]
	or e
.asm_5aaf
	and $f0
	or d
	ld [bc], a
	inc c

	ld a, [$ffbe]
	dec a
	ld [$ffbe], a
	jr nz, .addsprite

	ld a, c
	ld [$ffbd], a

.done
	xor a
	ret

.full
	scf
	ret
; 5ac2

Function5ac2: ; 5ac2
	ld c, a
	ld b, 0
	ld hl, .Addresses
	add hl, bc
	add hl, bc
	ld c, [hl]
	inc hl
	ld b, [hl]
	ret
; 5ace

.Addresses ; 5ace
	dw PlayerStruct
	dw ObjectStruct1
	dw ObjectStruct2
	dw ObjectStruct3
	dw ObjectStruct4
	dw ObjectStruct5
	dw ObjectStruct6
	dw ObjectStruct7
	dw ObjectStruct8
	dw ObjectStruct9
	dw ObjectStruct10
	dw ObjectStruct11
	dw ObjectStruct12
; 5ae8


Function5ae8: ; 5ae8
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	ld de, MUSIC_MAIN_MENU
	ld a, e
	ld [CurMusic], a
	call PlayMusic
	callba MainMenu
	jp Function6219
; 5b04

Function5b04: ; 5b04
	ret
; 5b05

Function5b05: ; 5b05
	push de
	ld hl, .Days
	ld a, b
	call GetNthString
	ld d, h
	ld e, l
	pop hl
	call PlaceString
	ld h, b
	ld l, c
	ld de, .Day
	call PlaceString
	ret
; 5b1c

.Days ; 5b1c
	db "SUN@"
	db "MON@"
	db "TUES@"
	db "WEDNES@"
	db "THURS@"
	db "FRI@"
	db "SATUR@"
; 5b40

.Day ; 5b40
	db "DAY@"
; 5b44

Function5b44: ; 5b44
	xor a
	ld [$ffde], a
	call ClearTileMap
	call Functione5f
	call Functione51
	call Function1fbf
	ret
; 5b54

MysteryGift: ; 5b54
	call UpdateTime
	callba Function11548
	callba Function1048ba
	ret
; 5b64

OptionsMenu: ; 5b64
	callba _OptionsMenu
	ret
; 5b6b

NewGame: ; 5b6b
	xor a
	ld [$c2cc], a
	call Function5ba7
	call Function5b44
	call Function5b8f
	call OakSpeech
	call Function5d23
	ld a, $1
	ld [$c2d8], a
	ld a, $0
	ld [$d001], a
	ld a, $f1
	ld [$ff9f], a
	jp Function5e5d
; 5b8f

Function5b8f: ; 5b8f
	callba Function10632f
	jr c, .asm_5b9e
	callba Function48dcb
	ret

.asm_5b9e
	ld c, $0
	callba Function4802f
	ret
; 5ba7

Function5ba7: ; 5ba7
	xor a
	ld [hBGMapMode], a
	call Function5bae
	ret
; 5bae

Function5bae: ; 5bae

	ld hl, Sprites
	ld bc, Options - Sprites
	xor a
	call ByteFill

	ld hl, $d000
	ld bc, PlayerID - $d000
	xor a
	call ByteFill

	ld hl, PlayerID
	ld bc, $dff5 - PlayerID
	xor a
	call ByteFill

	ld a, [rLY]
	ld [$ffe3], a
	call DelayFrame
	ld a, [hRandomSub]
	ld [PlayerID], a

	ld a, [rLY]
	ld [$ffe3], a
	call DelayFrame
	ld a, [hRandomAdd]
	ld [PlayerID + 1], a

	call Random
	ld [$d84a], a
	call DelayFrame
	call Random
	ld [$d84b], a

	ld hl, PartyCount
	call Function5ca1

	xor a
	ld [$db72], a
	ld [$d4b4], a

	call Function5ca6

	ld a, 1
	call GetSRAMBank
	ld hl, BoxCount
	call Function5ca1
	call CloseSRAM
	
	ld hl, NumItems
	call Function5ca1

	ld hl, NumKeyItems
	call Function5ca1

	ld hl, NumBalls
	call Function5ca1

	ld hl, PCItems
	call Function5ca1

	xor a
	ld [RoamMon1Species], a
	ld [RoamMon2Species], a
	ld [RoamMon3Species], a
	ld a, -1
	ld [RoamMon1MapGroup], a
	ld [RoamMon2MapGroup], a
	ld [RoamMon3MapGroup], a
	ld [RoamMon1MapNumber], a
	ld [RoamMon2MapNumber], a
	ld [RoamMon3MapNumber], a

	ld a, 0
	call GetSRAMBank
	ld hl, $abe2
	xor a
	ld [hli], a
	dec a
	ld [hl], a
	call CloseSRAM

	call Function5d33
	call Function5cd3

	xor a
	ld [MonType], a

	ld [JohtoBadges], a
	ld [KantoBadges], a

	ld [Coins], a
	ld [Coins + 1], a

	ld [Money], a
	ld a, 3000 >> 8
	ld [Money + 1], a
	ld a, 3000 & $ff
	ld [Money + 2], a

	xor a
	ld [$dc17], a

	ld hl, $dc19
	ld [hl], $0
	inc hl
	ld [hl], $8
	inc hl
	ld [hl], $fc

	call Function5ce9

	callba Function26751

	callba Function44765

	callba Function1061c0

	call ResetGameTime
	ret
; 5ca1

Function5ca1: ; 5ca1
	xor a
	ld [hli], a
	dec a
	ld [hl], a
	ret
; 5ca6

Function5ca6: ; 5ca6
	ld hl, Box1Name
	ld c, $0
.asm_5cab
	push hl
	ld de, .Box
	call CopyName2
	dec hl
	ld a, c
	inc a
	cp $a
	jr c, .asm_5cbe
	sub $a
	ld [hl], $f7
	inc hl

.asm_5cbe
	add $f6
	ld [hli], a
	ld [hl], $50
	pop hl
	ld de, $0009
	add hl, de
	inc c
	ld a, c
	cp $e
	jr c, .asm_5cab
	ret

.Box
	db "BOX@"
; 5cd3

Function5cd3: ; 5cd3
	ld hl, $dfe8
	ld a, $3
	ld [hli], a
	ld a, $6
	ld [hli], a
	ld de, .Ralph
	call CopyName2
	ret
; 5ce3

.Ralph ; 5ce3
	db "RALPH@"
; 5ce9

Function5ce9: ; 5ce9
	ld hl, .Rival
	ld de, RivalName
	call .Copy

	ld hl, .Mom
	ld de, MomsName
	call .Copy

	ld hl, .Red
	ld de, RedsName
	call .Copy

	ld hl, .Green
	ld de, GreensName

.Copy
	ld bc, $000b
	call CopyBytes
	ret

.Rival
	db "???@"
.Red
	db "RED@"
.Green
	db "GREEN@"
.Mom
	db "MOM@"
; 5d23

Function5d23: ; 5d23
	call Function610f
	callba Function8029
	callba Function113d6
	ret
; 5d33

Function5d33: ; 5d33
	ld a, $0
	call GetSRAMBank
	ld a, [CurDay]
	inc a
	ld b, a
	ld a, [$ac68]
	cp b
	ld a, [$ac6a]
	ld c, a
	ld a, [$ac69]
	jr z, .asm_5d55
	ld a, b
	ld [$ac68], a
	call Random
	ld c, a
	call Random

.asm_5d55
	ld [$dc9f], a
	ld [$ac69], a
	ld a, c
	ld [$dca0], a
	ld [$ac6a], a
	jp CloseSRAM
; 5d65

Continue: ; 5d65
	callba Function14ea5
	jr c, .asm_5dd6
	callba Function150b9
	call Function1d6e
	call Function5e85
	ld a, $1
	ld [hBGMapMode], a
	ld c, $14
	call DelayFrames
	call Function5e34
	jr nc, .asm_5d8c
	call Function1c17
	jr .asm_5dd6

.asm_5d8c
	call Function5e48
	jr nc, .asm_5d96
	call Function1c17
	jr .asm_5dd6

.asm_5d96
	ld a, $8
	ld [MusicFade], a
	ld a, MUSIC_NONE % $100
	ld [MusicFadeIDLo], a
	ld a, MUSIC_NONE / $100
	ld [MusicFadeIDHi], a
	call WhiteBGMap
	call Function5df0
	call Function1c17
	call ClearTileMap
	ld c, $14
	call DelayFrames
	callba Function2a394
	callba Function105091
	callba Function140ae
	ld a, [$d4b5]
	cp $1
	jr z, .asm_5dd7
	ld a, $f2
	ld [$ff9f], a
	jp Function5e5d

.asm_5dd6
	ret

.asm_5dd7
	ld a, $e
	ld [$d001], a
	call Function5de7
	jp Function5e5d
; 5de2

Function5de2: ; 5de2
	ld a, $1a
	ld [$d001], a
; 5de7

Function5de7: ; 5de7
	xor a
	ld [$d4b5], a
	ld a, $f1
	ld [$ff9f], a
	ret
; 5df0

Function5df0: ; 5df0
	callba Function10632f
	ret nc
	ld hl, $d479
	bit 1, [hl]
	ret nz
	ld a, $5
	ld [MusicFade], a
	ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
	ld [MusicFadeIDLo], a
	ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
	ld [MusicFadeIDHi], a
	ld c, 20
	call DelayFrames
	ld c, $1
	callba Function4802f
	callba Function1509a
	ld a, $8
	ld [MusicFade], a
	ld a, MUSIC_NONE % $100
	ld [MusicFadeIDLo], a
	ld a, MUSIC_NONE / $100
	ld [MusicFadeIDHi], a
	ld c, 35
	call DelayFrames
	ret
; 5e34

Function5e34: ; 5e34
.asm_5e34
	call DelayFrame
	call GetJoypadPublic
	ld hl, hJoyPressed
	bit 0, [hl]
	jr nz, .asm_5e47
	bit 1, [hl]
	jr z, .asm_5e34
	scf
	ret

.asm_5e47
	ret
; 5e48

Function5e48: ; 5e48
	call Function6e3
	and $80
	jr z, .asm_5e5b
	callba Function20021
	ld a, c
	and a
	jr z, .asm_5e5b
	scf
	ret

.asm_5e5b
	xor a
	ret
; 5e5d

Function5e5d: ; 5e5d
.asm_5e5d
	xor a
	ld [$c2c1], a
	ld [InLinkBattle], a
	ld hl, GameTimerPause
	set 0, [hl]
	res 7, [hl]
	ld hl, $d83e
	set 1, [hl]
	callba Function966b0
	ld a, [$d4b5]
	cp $2
	jr z, .asm_5e80
	jp Reset

.asm_5e80
	call Function5de2
	jr .asm_5e5d
; 5e85

Function5e85: ; 5e85
	call Function6e3
	and $80
	jr z, .asm_5e93
	ld de, $0408
	call Function5eaf
	ret

.asm_5e93
	ld de, $0408
	call Function5e9f
	ret
; 5e9a

Function5e9a: ; 5e9a
	ld de, $0400
	jr Function5e9f
; 5e9f

Function5e9f: ; 5e9f
	call Function5ebf
	call Function5f1c
	call Function5f40
	call Functione5f
	call Function1ad2
	ret
; 5eaf

Function5eaf: ; 5eaf
	call Function5ebf
	call Function5f1c
	call Function5f48
	call Functione5f
	call Function1ad2
	ret
; 5ebf

Function5ebf: ; 5ebf
	xor a
	ld [hBGMapMode], a
	ld hl, MenuDataHeader_0x5ed9
	ld a, [StatusFlags]
	bit 0, a ; pokedex
	jr nz, .asm_5ecf
	ld hl, MenuDataHeader_0x5efb

.asm_5ecf
	call Function1e35
	call Function1cbb
	call Function1c89
	ret
; 5ed9

MenuDataHeader_0x5ed9: ; 5ed9
	db $40 ; flags
	db 00, 00 ; start coords
	db 09, 15 ; end coords
	dw MenuData2_0x5ee1
	db 1 ; default option
; 5ee1

MenuData2_0x5ee1: ; 5ee1
	db $00 ; flags
	db 4 ; items
	db "PLAYER@"
	db "BADGES@"
	db "#DEX@"
	db "TIME@"
; 5efb

MenuDataHeader_0x5efb: ; 5efb
	db $40 ; flags
	db 00, 00 ; start coords
	db 09, 15 ; end coords
	dw MenuData2_0x5f03
	db 1 ; default option
; 5f03

MenuData2_0x5f03: ; 5f03
	db $00 ; flags
	db 4 ; items
	db "PLAYER ", $52, "@"
	db "BADGES@"
	db " @"
	db "TIME@"
; 5f1c


Function5f1c: ; 5f1c
	call Function1cfd
	push hl
	ld de, $005d
	add hl, de
	call Function5f58
	pop hl
	push hl
	ld de, $0084
	add hl, de
	call Function5f6b
	pop hl
	push hl
	ld de, $0030
	add hl, de
	ld de, .Player
	call PlaceString
	pop hl
	ret

.Player
	db $52, "@"
; 5f40

Function5f40: ; 5f40
	ld de, $00a9
	add hl, de
	call Function5f84
	ret
; 5f48

Function5f48: ; 5f48
	ld de, $00a9
	add hl, de
	ld de, .text_5f53
	call PlaceString
	ret

.text_5f53
	db " ???@"
; 5f58

Function5f58: ; 5f58
	push hl
	ld hl, JohtoBadges
	ld b, $2
	call CountSetBits
	pop hl
	ld de, $d265
	ld bc, $0102
	jp PrintNum
; 5f6b

Function5f6b: ; 5f6b
	ld a, [StatusFlags]
	bit 0, a
	ret z
	push hl
	ld hl, PokedexCaught
	ld b, $20
	call CountSetBits
	pop hl
	ld de, $d265
	ld bc, $0103
	jp PrintNum
; 5f84

Function5f84: ; 5f84
	ld de, GameTimeHours
	ld bc, $0203
	call PrintNum
	ld [hl], $6d
	inc hl
	ld de, GameTimeMinutes
	ld bc, $8102
	jp PrintNum
; 5f99


OakSpeech: ; 0x5f99
	callba Function90672
	call Function4dd
	call ClearTileMap

	ld de, MUSIC_ROUTE_30
	call PlayMusic

	call Function4a3
	call Function4b6
	xor a
	ld [CurPartySpecies], a
	ld a, POKEMON_PROF
	ld [TrainerClass], a
	call Function619c

	ld b, $1c
	call GetSGBLayout
	call Function616a

	ld hl, OakText1
	call PrintText
	call Function4b6
	call ClearTileMap

	ld a, $c2
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	call GetBaseData

	hlcoord 6, 4
	call Function3786

	xor a
	ld [TempMonDVs], a
	ld [$d124], a

	ld b, $1c
	call GetSGBLayout
	call Function6182

	ld hl, OakText2
	call PrintText
	ld hl, OakText4
	call PrintText
	call Function4b6
	call ClearTileMap

	xor a
	ld [CurPartySpecies], a
	ld a, POKEMON_PROF
	ld [TrainerClass], a
	call Function619c

	ld b, $1c
	call GetSGBLayout
	call Function616a

	ld hl, OakText5
	call PrintText
	call Function4b6
	call ClearTileMap

	xor a
	ld [CurPartySpecies], a
	callba DrawIntroPlayerPic

	ld b, $1c
	call GetSGBLayout
	call Function616a

	ld hl, OakText6
	call PrintText
	call NamePlayer
	ld hl, OakText7
	call PrintText
	ret

OakText1: ; 0x6045
	TX_FAR _OakText1
	db "@"

OakText2: ; 0x604a
	TX_FAR _OakText2
	start_asm
	ld a,WOOPER
	call Function37ce
	call WaitSFX
	ld hl,OakText3
	ret

OakText3: ; 0x605b
	TX_FAR _OakText3
	db "@"

OakText4: ; 0x6060
	TX_FAR _OakText4
	db "@"

OakText5: ; 0x6065
	TX_FAR _OakText5
	db "@"

OakText6: ; 0x606a
	TX_FAR _OakText6
	db "@"

OakText7: ; 0x606f
	TX_FAR _OakText7
	db "@"

NamePlayer: ; 0x6074
	callba MovePlayerPicRight
	callba ShowPlayerNamingChoices
	ld a, [$cfa9]
	dec a
	jr z, .NewName
	call Function60fa
	callba Function8c1d
	callba MovePlayerPicLeft
	ret

.NewName
	ld b, 1
	ld de, PlayerName
	callba Function116c1

	call Function4b6
	call ClearTileMap

	call Functione5f
	call WaitBGMap

	xor a
	ld [CurPartySpecies], a
	callba DrawIntroPlayerPic

	ld b, $1c
	call GetSGBLayout
	call Function4f0

	ld hl, PlayerName
	ld de, .Chris
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_60cf
	ld de, .Kris
.asm_60cf
	call InitName
	ret

.Chris
	db "CHRIS@@@@@@"
.Kris
	db "KRIS@@@@@@@"
; 60e9

Function60e9: ; 60e9
	call LoadMenuDataHeader
	call Function1d81
	ld a, [$cfa9]
	dec a
	call Function1db8
	call Function1c17
	ret
; 60fa

Function60fa: ; 60fa
	ld a, $50
	ld bc, $000b
	ld hl, PlayerName
	call ByteFill
	ld hl, PlayerName
	ld de, StringBuffer2
	call CopyName2
	ret
; 610f

Function610f: ; 610f

	ld a, [hROMBank]
	push af

	ld a, 0 << 7 | 32 ; fade out
	ld [MusicFade], a
	ld de, MUSIC_NONE
	ld a, e
	ld [MusicFadeIDLo], a
	ld a, d
	ld [MusicFadeIDHi], a

	ld de, SFX_ESCAPE_ROPE
	call PlaySFX
	pop af
	rst Bankswitch

	ld c, 8
	call DelayFrames

	ld hl, $5249
	ld b, $13
	call Function61b4

	ld c, 8
	call DelayFrames

	ld hl, $52d9
	ld b, $13
	call Function61b4

	ld c, 8
	call DelayFrames

	ld hl, $c50a
	ld b, 7
	ld c, 7
	call ClearBox

	ld c, 3
	call DelayFrames

	call Function61cd
	call Functione5f

	ld c, 50
	call DelayFrames

	call Function4b6
	call ClearTileMap
	ret
; 616a

Function616a: ; 616a
	ld hl, IntroFadePalettes
	ld b, IntroFadePalettesEnd - IntroFadePalettes
.asm_616f
	ld a, [hli]
	call DmgToCgbBGPals
	ld c, 10
	call DelayFrames
	dec b
	jr nz, .asm_616f
	ret
; 617c

IntroFadePalettes: ; 0x617c
	db %01010100
	db %10101000
	db %11111100
	db %11111000
	db %11110100
	db %11100100
IntroFadePalettesEnd
; 6182

Function6182: ; 6182
	ld a, $77
	ld [hWX], a
	call DelayFrame
	ld a, $e4
	call DmgToCgbBGPals
.asm_618e
	call DelayFrame
	ld a, [hWX]
	sub $8
	cp $ff
	ret z
	ld [hWX], a
	jr .asm_618e
; 619c

Function619c: ; 619c
	ld de, VTiles2
	callba Function5120d
	xor a
	ld [$ffad], a
	ld hl, $c4f6
	ld bc, $0707
	ld a, $13
	call Predef
	ret
; 61b4

Function61b4: ; 61b4
	ld de, VTiles2
	ld c, $31
	ld a, $40
	call Predef
	xor a
	ld [$ffad], a
	ld hl, $c4f6
	ld bc, $0707
	ld a, $13
	call Predef
	ret
; 61cd

Function61cd: ; 61cd

	callba GetPlayerIcon
	ld c, $c
	ld hl, VTiles0
	call Request2bpp

	ld hl, Sprites
	ld de, .data_61fe
	ld a, [de]
	inc de

	ld c, a
.asm_61e4
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a

	ld b, 0
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_61f8
	ld b, 1
.asm_61f8
	ld a, b

	ld [hli], a
	dec c
	jr nz, .asm_61e4
	ret
; 61fe

.data_61fe ; 61fe
	db 4
	db $4c, $48, $00
	db $4c, $50, $01
	db $54, $48, $02
	db $54, $50, $03
; 620b


Function620b: ; 620b
	callab Functione4579
	jr c, Function6219
	callba Functione48ac

Function6219: ; 6219
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	call TitleScreen
	call DelayFrame
.asm_6226
	call Function627b
	jr nc, .asm_6226
	call ClearSprites
	call WhiteBGMap
	pop af
	ld [rSVBK], a
	ld hl, rLCDC
	res 2, [hl]
	call Functionfdb
	call Function3200
	xor a
	ld [hLCDStatCustom], a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	ld b, $8
	call GetSGBLayout
	call UpdateTimePals
	ld a, [$cf64]
	cp $5
	jr c, .asm_625e
	xor a
.asm_625e
	ld e, a
	ld d, 0
	ld hl, .data_626a
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 626a

.data_626a
	dw Function5ae8
	dw Function6389
	dw Function620b
	dw Function620b
	dw Function6392
; 6274


TitleScreen: ; 6274
	callba _TitleScreen
	ret
; 627b

Function627b: ; 627b
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_6290
	call Function62a3
	callba Function10eea7
	call DelayFrame
	and a
	ret

.asm_6290
	scf
	ret
; 6292

Function6292: ; 6292
	ld a, [$ff9b]
	and $7
	ret nz
	ld hl, $d15f
	ld a, [hl]
	dec a
	ld bc, $0028
	call ByteFill
	ret
; 62a3

Function62a3: ; 62a3
	ld e, a
	ld d, 0
	ld hl, .data_62af
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 62af

.data_62af
	dw TitleScreenEntrance
	dw Function62f6
	dw Function6304
	dw Function6375
; 62b7

Function62b7: ; 62b7
	ld hl, $cf63
	inc [hl]
	ret
; 62bc


TitleScreenEntrance: ; 62bc

; Animate the logo:
; Move each line by 4 pixels until our count hits 0.
	ld a, [hSCX]
	and a
	jr z, .done
	sub 4
	ld [hSCX], a

; Lay out a base (all lines scrolling together).
	ld e, a
	ld hl, LYOverrides
	ld bc, 8 * 10 ; logo height
	call ByteFill

; Alternate signage for each line's position vector.
; This is responsible for the interlaced effect.
	ld a, e
	xor $ff
	inc a

	ld b, 8 * 10 / 2 ; logo height / 2
	ld hl, $d101
.loop
	ld [hli], a
	inc hl
	dec b
	jr nz, .loop

	callba AnimateTitleCrystal
	ret

.done
; Next scene
	ld hl, $cf63
	inc [hl]
	xor a
	ld [hLCDStatCustom], a
	
; Play the title screen music.
	ld de, MUSIC_TITLE
	call PlayMusic

	ld a, $88
	ld [hWY], a
	ret
; 62f6


Function62f6: ; 62f6
	ld hl, $cf63
	inc [hl]
	ld hl, $cf65
	ld de, $1140
	ld [hl], e
	inc hl
	ld [hl], d
	ret
; 6304

Function6304: ; 6304
	ld hl, $cf65
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld a, e
	or d
	jr z, .asm_6355
	dec de
	ld [hl], d
	dec hl
	ld [hl], e
	call GetJoypadPublic
	ld hl, hJoyDown
	ld a, [hl]
	and $46
	cp $46
	jr z, .asm_634a
	ld a, [$ffeb]
	cp $34
	jr z, .asm_6332
	ld a, [hl]
	and $86
	cp $86
	jr nz, .asm_6340
	ld a, $34
	ld [$ffeb], a
	jr .asm_6340

.asm_6332
	bit 2, [hl]
	jr nz, .asm_6340
	xor a
	ld [$ffeb], a
	ld a, [hl]
	and $60
	cp $60
	jr z, .asm_636a

.asm_6340
	ld a, [hl]
	and $9
	jr nz, .asm_6346
	ret

.asm_6346
	ld a, $0
	jr .asm_634c

.asm_634a
	ld a, $1

.asm_634c
	ld [$cf64], a
	ld hl, $cf63
	set 7, [hl]
	ret

.asm_6355
	ld hl, $cf63
	inc [hl]
	xor a
	ld [MusicFadeIDLo], a
	ld [MusicFadeIDHi], a
	ld hl, MusicFade
	ld [hl], $8
	ld hl, $cf65
	inc [hl]
	ret

.asm_636a
	ld a, $4
	ld [$cf64], a
	ld hl, $cf63
	set 7, [hl]
	ret
; 6375

Function6375: ; 6375
	ld hl, $cf65
	inc [hl]
	ld a, [MusicFade]
	and a
	ret nz
	ld a, $2
	ld [$cf64], a
	ld hl, $cf63
	set 7, [hl]
	ret
; 6389

Function6389: ; 6389
	callba Function4d54c
	jp Init
; 6392

Function6392: ; 6392
	callba Function4d3b1
	jp Init
; 639b

Function639b: ; 639b
	ld a, [$cf65]
	and $3
	ret nz
	ld bc, $c3a4
	ld hl, $000a
	add hl, bc
	ld l, [hl]
	ld h, 0
	add hl, hl
	add hl, hl
	ld de, Data63ca
	add hl, de
	ld a, [$cf65]
	and $4
	srl a
	srl a
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	ld a, [hli]
	and a
	ret z
	ld e, a
	ld d, [hl]
	ld a, $1
	call Function3b2a
	ret
; 63ca

Data63ca: ; 63ca
INCBIN "baserom.gbc",$63ca,$63e2 - $63ca


Copyright: ; 63e2
	call ClearTileMap
	call Functione5f
	ld de, CopyrightGFX
	ld hl, VTiles2 + $600 ; tile $60
	ld bc, BANK(CopyrightGFX) << 8 + $1d
	call Request2bpp
	hlcoord 2, 7
	ld de, CopyrightString
	jp PlaceString
; 63fd

CopyrightString: ; 63fd
	; ©1995-2001 Nintendo
	db $60, $61, $62, $63, $64, $65, $66
	db $67, $68, $69, $6a, $6b, $6c

	db $4e

	; ©1995-2001 Creatures inc.
	db $60, $61, $62, $63, $64, $65, $66, $6d
	db $6e, $6f, $70, $71, $72, $7a, $7b, $7c

	db $4e

	; ©1995-2001 GAME FREAK inc.
	db $60, $61, $62, $63, $64, $65, $66, $73, $74
	db $75, $76, $77, $78, $79, $7a, $7b, $7c

	db "@"
; 642e

GameInit: ; 642e
	callba Function14f1c
	call Function1fbf
	call WhiteBGMap
	call ClearTileMap
	ld a, $98
	ld [$ffd7], a
	xor a
	ld [hBGMapAddress], a
	ld [hJoyDown], a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $90
	ld [hWY], a
	call WaitBGMap
	jp Function620b
; 6454

Function6454: ; 6454
	call DelayFrame
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	ld a, [hBGMapMode]
	push af
	xor a
	ld [hBGMapMode], a
	call Function6473
	pop af
	ld [hBGMapMode], a
	pop af
	ld [hOAMUpdate], a
	ld hl, VramState
	set 6, [hl]
	ret
; 6473

Function6473: ; 6473
	xor a
	ld [hLCDStatCustom], a
	ld [hBGMapMode], a
	ld a, $90
	ld [hWY], a
	call Function2173
	ld a, $9c
	call Function64b9
	call Function2e20
	callba Function49409
	callba Function96a4
	ld a, $1
	ld [hCGBPalUpdate], a
	xor a
	ld [hBGMapMode], a
	ld [hWY], a
	callba Function64db
	ld a, $98
	call Function64b9
	xor a
	ld [$d152], a
	ld a, $98
	ld [$d153], a
	xor a
	ld [hSCX], a
	ld [hSCY], a
	call Function5958
	ret
; 64b9

Function64b9: ; 64b9
	ld [$ffd7], a
	xor a
	ld [hBGMapAddress], a
	ret
; 64bf

Function64bf: ; 64bf
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	call Function64cd
	pop af
	ld [hOAMUpdate], a
	ret
; 64cd

Function64cd: ; 64cd
	call Functione5f
	ld a, $90
	ld [hWY], a
	call Function2e31
	call Functione51
	ret
; 64db

Function64db: ; 64db
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld a, $60
	ld hl, $d000
	ld bc, VBlank5
	call ByteFill
	ld a, $d0
	ld [rHDMA1], a
	ld a, $0
	ld [rHDMA2], a
	ld a, $18
	ld [rHDMA3], a
	ld a, $0
	ld [rHDMA4], a
	ld a, $3f
	ld [hDMATransfer], a
	call DelayFrame
	pop af
	ld [rSVBK], a
	ret
; 6508

Function6508: ; 6508
	call Function309d
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call GetNick
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $000b
	call CopyBytes

Function6520: ; 6520
	ld hl, PartyMon1Move1
	ld bc, $0030
	ld a, [CurPartyMon]
	call AddNTimes
	ld d, h
	ld e, l
	ld b, $4
.asm_6530
	ld a, [hl]
	and a
	jr z, .asm_6564
	inc hl
	dec b
	jr nz, .asm_6530
	push de
	call Function65d3
	pop de
	jp c, Function65b5
	push hl
	push de
	ld [$d265], a
	ld b, a
	ld a, [IsInBattle]
	and a
	jr z, .asm_6559
	ld a, [DisabledMove]
	cp b
	jr nz, .asm_6559
	xor a
	ld [DisabledMove], a
	ld [PlayerDisableCount], a

.asm_6559
	call GetMoveName
	ld hl, UnknownText_0x6684
	call PrintText
	pop de
	pop hl

.asm_6564
	ld a, [$d262]
	ld [hl], a
	ld bc, $0015
	add hl, bc
	push hl
	push de
	dec a
	ld hl, $5b00
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	pop de
	pop hl
	ld [hl], a
	ld a, [IsInBattle]
	and a
	jp z, Function65ca
	ld a, [CurPartyMon]
	ld b, a
	ld a, [CurBattleMon]
	cp b
	jp nz, Function65ca
	ld a, [PlayerSubStatus5]
	bit 3, a
	jp nz, Function65ca
	ld h, d
	ld l, e
	ld de, BattleMonMove1
	ld bc, $0004
	call CopyBytes
	ld bc, $0011
	add hl, bc
	ld de, BattleMonPPMove1
	ld bc, $0004
	call CopyBytes
	jp Function65ca
; 65b5

Function65b5: ; 65b5
	ld hl, UnknownText_0x6675
	call PrintText
	call Function1dcf
	jp c, Function6520
	ld hl, UnknownText_0x667a
	call PrintText
	ld b, $0
	ret
; 65ca

Function65ca: ; 65ca
	ld hl, UnknownText_0x666b
	call PrintText
	ld b, $1
	ret
; 65d3

Function65d3: ; 65d3
	push hl
	ld hl, UnknownText_0x667f
	call PrintText
	call Function1dcf
	pop hl
	ret c
	ld bc, $fffc
	add hl, bc
	push hl
	ld de, $d25e
	ld bc, $0004
	call CopyBytes
	pop hl
.asm_65ee
	push hl
	ld hl, UnknownText_0x6670
	call PrintText
	ld hl, $c4cd
	ld b, $8
	ld c, $d
	call TextBox
	ld hl, $c4f7
	ld a, $28
	ld [Buffer1], a
	ld a, $20
	call Predef
	ld a, $4
	ld [$cfa1], a
	ld a, $6
	ld [$cfa2], a
	ld a, [$d0eb]
	inc a
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld [$cfa9], a
	ld [$cfaa], a
	ld a, $3
	ld [$cfa8], a
	ld a, $20
	ld [$cfa5], a
	xor a
	ld [$cfa6], a
	ld a, $20
	ld [$cfa7], a
	call Function1bc9
	push af
	call Function30b4
	pop af
	pop hl
	bit 1, a
	jr nz, .asm_6669
	push hl
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	push af
	push bc
	call IsHMMove
	pop bc
	pop de
	ld a, d
	jr c, .asm_6660
	pop hl
	add hl, bc
	and a
	ret

.asm_6660
	ld hl, UnknownText_0x669a
	call PrintText
	pop hl
	jr .asm_65ee

.asm_6669
	scf
	ret
; 666b

UnknownText_0x666b: ; 666b
	text_jump UnknownText_0x1c5660, BANK(UnknownText_0x1c5660)
	db "@"
; 6670

UnknownText_0x6670: ; 6670
	text_jump UnknownText_0x1c5678, BANK(UnknownText_0x1c5678)
	db "@"
; 6675

UnknownText_0x6675: ; 6675
	text_jump UnknownText_0x1c5699, BANK(UnknownText_0x1c5699)
	db "@"
; 667a

UnknownText_0x667a: ; 667a
	text_jump UnknownText_0x1c56af, BANK(UnknownText_0x1c56af)
	db "@"
; 667f

UnknownText_0x667f: ; 667f
	text_jump UnknownText_0x1c56c9, BANK(UnknownText_0x1c56c9)
	db "@"
; 6684

UnknownText_0x6684: ; 6684
	text_jump UnknownText_0x1c5740, BANK(UnknownText_0x1c5740)
	start_asm
; 6689

; 6689
	push de
	ld de, SFX_SWITCH_POKEMON
	call PlaySFX
	pop de
	ld hl, UnknownText_0x6695
	ret
; 6695

UnknownText_0x6695: ; 6695
	text_jump UnknownText_0x1c574e, BANK(UnknownText_0x1c574e)
	db "@"
; 669a

UnknownText_0x669a: ; 669a
	text_jump UnknownText_0x1c5772, BANK(UnknownText_0x1c5772)
	db "@"
; 669f


CheckNickErrors: ; 669f
; error-check monster nick before use
; must be a peace offering to gamesharkers

; input: de = nick location

	push bc
	push de
	ld b, PKMN_NAME_LENGTH

.checkchar
; end of nick?
	ld a, [de]
	cp "@" ; terminator
	jr z, .end

; check if this char is a text command
	ld hl, .textcommands
	dec hl
.loop
; next entry
	inc hl
; reached end of commands table?
	ld a, [hl]
	cp a, $ff
	jr z, .done

; is the current char between this value (inclusive)...
	ld a, [de]
	cp [hl]
	inc hl
	jr c, .loop
; ...and this one?
	cp [hl]
	jr nc, .loop

; replace it with a "?"
	ld a, "?"
	ld [de], a
	jr .loop

.done
; next char
	inc de
; reached end of nick without finding a terminator?
	dec b
	jr nz, .checkchar

; change nick to "?@"
	pop de
	push de
	ld a, "?"
	ld [de], a
	inc de
	ld a, "@"
	ld [de], a
.end
; if the nick has any errors at this point it's out of our hands
	pop de
	pop bc
	ret
; 66cf

.textcommands ; 66cf
; table definining which characters
; are actually text commands
; format:
;       >=   <
	db $00, $05
	db $14, $19
	db $1d, $26
	db $35, $3a
	db $3f, $40
	db $49, $5d
	db $5e, $7f
	db $ff ; end
; 66de


_Multiply: ; 66de

; hMultiplier is one byte.
	ld a, 8
	ld b, a

	xor a
	ld [hMultiplicand - 1], a
	ld [hMathBuffer + 1], a
	ld [hMathBuffer + 2], a
	ld [hMathBuffer + 3], a
	ld [hMathBuffer + 4], a


.loop
	ld a, [hMultiplier]
	srl a
	ld [hMultiplier], a
	jr nc, .next

	ld a, [hMathBuffer + 4]
	ld c, a
	ld a, [hMultiplicand + 2]
	add c
	ld [hMathBuffer + 4], a

	ld a, [hMathBuffer + 3]
	ld c, a
	ld a, [hMultiplicand + 1]
	adc c
	ld [hMathBuffer + 3], a

	ld a, [hMathBuffer + 2]
	ld c, a
	ld a, [hMultiplicand + 0]
	adc c
	ld [hMathBuffer + 2], a

	ld a, [hMathBuffer + 1]
	ld c, a
	ld a, [hMultiplicand - 1]
	adc c
	ld [hMathBuffer + 1], a

.next
	dec b
	jr z, .done


; hMultiplicand <<= 1

	ld a, [hMultiplicand + 2]
	add a
	ld [hMultiplicand + 2], a

	ld a, [hMultiplicand + 1]
	rla
	ld [hMultiplicand + 1], a

	ld a, [hMultiplicand + 0]
	rla
	ld [hMultiplicand + 0], a

	ld a, [hMultiplicand - 1]
	rla
	ld [hMultiplicand - 1], a

	jr .loop


.done
	ld a, [hMathBuffer + 4]
	ld [hProduct + 3], a

	ld a, [hMathBuffer + 3]
	ld [hProduct + 2], a

	ld a, [hMathBuffer + 2]
	ld [hProduct + 1], a

	ld a, [hMathBuffer + 1]
	ld [hProduct + 0], a

	ret
; 673e


_Divide: ; 673e
	xor a
	ld [hMathBuffer + 0], a
	ld [hMathBuffer + 1], a
	ld [hMathBuffer + 2], a
	ld [hMathBuffer + 3], a
	ld [hMathBuffer + 4], a

	ld a, 9
	ld e, a

.loop
	ld a, [hMathBuffer + 0]
	ld c, a
	ld a, [hDividend + 1]
	sub c
	ld d, a

	ld a, [hDivisor]
	ld c, a
	ld a, [hDividend + 0]
	sbc c
	jr c, .asm_6767

	ld [hDividend + 0], a

	ld a, d
	ld [hDividend + 1], a

	ld a, [hMathBuffer + 4]
	inc a
	ld [hMathBuffer + 4], a

	jr .loop

.asm_6767
	ld a, b
	cp 1
	jr z, .done

	ld a, [hMathBuffer + 4]
	add a
	ld [hMathBuffer + 4], a

	ld a, [hMathBuffer + 3]
	rla
	ld [hMathBuffer + 3], a

	ld a, [hMathBuffer + 2]
	rla
	ld [hMathBuffer + 2], a

	ld a, [hMathBuffer + 1]
	rla
	ld [hMathBuffer + 1], a

	dec e
	jr nz, .asm_6798

	ld e, 8
	ld a, [hMathBuffer + 0]
	ld [hDivisor], a
	xor a
	ld [hMathBuffer + 0], a

	ld a, [hDividend + 1]
	ld [hDividend + 0], a

	ld a, [hDividend + 2]
	ld [hDividend + 1], a

	ld a, [hDividend + 3]
	ld [hDividend + 2], a

.asm_6798
	ld a, e
	cp 1
	jr nz, .asm_679e
	dec b

.asm_679e
	ld a, [hDivisor]
	srl a
	ld [hDivisor], a

	ld a, [hMathBuffer + 0]
	rr a
	ld [hMathBuffer + 0], a

	jr .loop

.done
	ld a, [hDividend + 1]
	ld [hDivisor], a

	ld a, [hMathBuffer + 4]
	ld [hDividend + 3], a

	ld a, [hMathBuffer + 3]
	ld [hDividend + 2], a

	ld a, [hMathBuffer + 2]
	ld [hDividend + 1], a

	ld a, [hMathBuffer + 1]
	ld [hDividend + 0], a

	ret
; 67c1


ItemAttributes: ; 67c1
INCLUDE "items/item_attributes.asm"
; 6ec1


Function6ec1: ; 6ec1

	ld hl, $0006
	add hl, bc
	bit 5, [hl]
	jr z, .asm_6ed9
	ld hl, $0004
	add hl, bc
	bit 4, [hl]
	push hl
	push bc
	call Function6f2c
	pop bc
	pop hl
	ret c
	jr .asm_6ee9

.asm_6ed9
	ld hl, $0004
	add hl, bc
	bit 4, [hl]
	jr nz, .asm_6ee9
	push hl
	push bc
	call Function6f07
	pop bc
	pop hl
	ret c

.asm_6ee9
	bit 6, [hl]
	jr nz, Function6ef5
	push hl
	push bc
	; fallthrough
; 6eef

DrawGraphic: ; 6eef
; input:
;   hl: draw location
;   b: height
;   c: width
;   d: tile to start drawing from
;   e: number of tiles to advance for each row
	call Function7009
	pop bc
	pop hl
	ret c
	; fallthrough
; 6ef5

Function6ef5: ; 6ef5
	bit 5, [hl]
	jr nz, .asm_6f05
	push hl
	call Function70a4
	pop hl
	ret c
	push hl
	call Function70ed
	pop hl
	ret c
.asm_6f05
	and a
	ret
; 6f07


Function6f07: ; 6f07
	call Function6f5f
	ret c
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	ld hl, $0006
	add hl, bc
	bit 7, [hl]
	jp nz, Function6fa1
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	ld d, a
	call GetTileCollision
	and a
	jr z, Function6f3e
	scf
	ret
; 6f2c

Function6f2c: ; 6f2c
	call Function6f5f
	ret c
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call GetTileCollision
	cp $1
	jr z, Function6f3e
	scf
	ret
; 6f3e

Function6f3e: ; 6f3e
	ld hl, $000e
	add hl, bc
	ld a, [hl]
	call Function6f7f
	ret nc
	push af
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	and 3
	ld e, a
	ld d, 0
	ld hl, .data_6f5b
	add hl, de
	pop af
	and [hl]
	ret z
	scf
	ret
; 6f5b

.data_6f5b
	db 1, 2, 8, 4
; 6f5f

Function6f5f: ; 6f5f
	ld hl, $000f
	add hl, bc
	ld a, [hl]
	call Function6f7f
	ret nc
	push af
	ld hl, $0007
	add hl, bc
	and 3
	ld e, a
	ld d, 0
	ld hl, .data_6f7b
	add hl, de
	pop af
	and [hl]
	ret z
	scf
	ret
; 6f7b

.data_6f7b
	db 2, 1, 4, 8
; 6f7f

Function6f7f: ; 6f7f
	ld d, a
	and $f0
	cp $b0
	jr z, .asm_6f8c
	cp $c0
	jr z, .asm_6f8c
	xor a
	ret

.asm_6f8c
	ld a, d
	and 7
	ld e, a
	ld d, 0
	ld hl, .data_6f99
	add hl, de
	ld a, [hl]
	scf
	ret
; 6f99

.data_6f99
	db 8, 4, 1, 2
	db 10, 6, 9, 5
; 6fa1

Function6fa1: ; 6fa1
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	and 3
	jr z, .asm_6fb2
	dec a
	jr z, .asm_6fb7
	dec a
	jr z, .asm_6fbb
	jr .asm_6fbf

.asm_6fb2
	inc e
	push de
	inc d
	jr .asm_6fc2

.asm_6fb7
	push de
	inc d
	jr .asm_6fc2

.asm_6fbb
	push de
	inc e
	jr .asm_6fc2

.asm_6fbf
	inc d
	push de
	inc e

.asm_6fc2
	call Function2a3c
	call GetTileCollision
	pop de
	and a
	jr nz, .asm_6fd7
	call Function2a3c
	call GetTileCollision
	and a
	jr nz, .asm_6fd7
	xor a
	ret

.asm_6fd7
	scf
	ret
; 6fd9



CheckFacingObject: ; 6fd9

	call GetFacingTileCoord

; Double the distance for counter tiles.
	call CheckCounterTile
	jr nz, .asm_6ff1

	ld a, [MapX]
	sub d
	cpl
	inc a
	add d
	ld d, a

	ld a, [MapY]
	sub e
	cpl
	inc a
	add e
	ld e, a

.asm_6ff1
	ld bc, $d4d6
	ld a, 0
	ld [hConnectionStripLength], a
	call Function7041
	ret nc
	ld hl, $0007
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_7007
	xor a
	ret

.asm_7007
	scf
	ret
; 7009


Function7009: ; 7009
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	jr Function7041
; 7015

Function7015: ; 7015
	ld a, [hConnectionStripLength]
	call Function1ae5
	call Function7021
	call Function7041
	ret

Function7021: ; 7021
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	call GetSpriteDirection
	and a
	jr z, .asm_703b
	cp $4
	jr z, .asm_703d
	cp $8
	jr z, .asm_703f
	inc d
	ret

.asm_703b
	inc e
	ret

.asm_703d
	dec e
	ret

.asm_703f
	dec d
	ret
; 7041

Function7041: ; 7041
	ld bc, $d4d6
	xor a
.asm_7045
	ld [hConnectedMapWidth], a
	call Function1af1
	jr z, .asm_7093
	ld hl, $0004
	add hl, bc
	bit 7, [hl]
	jr nz, .asm_7093
	ld hl, $0006
	add hl, bc
	bit 7, [hl]
	jr z, .asm_7063
	call Function7171
	jr nc, .asm_707b
	jr .asm_7073

.asm_7063
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	cp d
	jr nz, .asm_707b
	ld hl, $0011
	add hl, bc
	ld a, [hl]
	cp e
	jr nz, .asm_707b

.asm_7073
	ld a, [hConnectionStripLength]
	ld l, a
	ld a, [hConnectedMapWidth]
	cp l
	jr nz, .asm_70a2

.asm_707b
	ld hl, $0012
	add hl, bc
	ld a, [hl]
	cp d
	jr nz, .asm_7093
	ld hl, $0013
	add hl, bc
	ld a, [hl]
	cp e
	jr nz, .asm_7093
	ld a, [hConnectionStripLength]
	ld l, a
	ld a, [hConnectedMapWidth]
	cp l
	jr nz, .asm_70a2

.asm_7093
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectedMapWidth]
	inc a
	cp $d
	jr nz, .asm_7045
	and a
	ret

.asm_70a2
	scf
	ret
; 70a4

Function70a4: ; 70a4
	ld hl, $0016
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_70e9
	and $f
	jr z, .asm_70c7
	ld e, a
	ld d, a
	ld hl, $0014
	add hl, bc
	ld a, [hl]
	sub d
	ld d, a
	ld a, [hl]
	add e
	ld e, a
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	cp d
	jr z, .asm_70eb
	cp e
	jr z, .asm_70eb

.asm_70c7
	ld hl, $0016
	add hl, bc
	ld a, [hl]
	swap a
	and $f
	jr z, .asm_70e9
	ld e, a
	ld d, a
	ld hl, $0015
	add hl, bc
	ld a, [hl]
	sub d
	ld d, a
	ld a, [hl]
	add e
	ld e, a
	ld hl, $0011
	add hl, bc
	ld a, [hl]
	cp d
	jr z, .asm_70eb
	cp e
	jr z, .asm_70eb

.asm_70e9
	xor a
	ret

.asm_70eb
	scf
	ret
; 70ed

Function70ed: ; 70ed
	ld hl, $0010
	add hl, bc
	ld a, [XCoord]
	cp [hl]
	jr z, .asm_70fe
	jr nc, .asm_7111
	add $9
	cp [hl]
	jr c, .asm_7111

.asm_70fe
	ld hl, $0011
	add hl, bc
	ld a, [YCoord]
	cp [hl]
	jr z, .asm_710f
	jr nc, .asm_7111
	add $8
	cp [hl]
	jr c, .asm_7111

.asm_710f
	and a
	ret

.asm_7111
	scf
	ret
; 7113

Function7113: ; 7113
	ld a, [MapX]
	ld d, a
	ld a, [MapY]
	ld e, a
	ld bc, $d4d6
	xor a
.asm_711f
	ld [hConnectedMapWidth], a
	call Function1af1
	jr z, .asm_7160
	ld hl, $0003
	add hl, bc
	ld a, [hl]
	cp $15
	jr nz, .asm_7136
	call Function7171
	jr c, .asm_716f
	jr .asm_7160

.asm_7136
	ld hl, $0011
	add hl, bc
	ld a, [hl]
	cp e
	jr nz, .asm_714e
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	cp d
	jr nz, .asm_714e
	ld a, [hConnectedMapWidth]
	cp $0
	jr z, .asm_7160
	jr .asm_716f

.asm_714e
	ld hl, $0013
	add hl, bc
	ld a, [hl]
	cp e
	jr nz, .asm_7160
	ld hl, $0012
	add hl, bc
	ld a, [hl]
	cp d
	jr nz, .asm_7160
	jr .asm_716f

.asm_7160
	ld hl, $0028
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectedMapWidth]
	inc a
	cp $d
	jr nz, .asm_711f
	xor a
	ret

.asm_716f
	scf
	ret
; 7171


Function7171: ; 7171
	ld hl, $0010
	add hl, bc
	ld a, d
	sub [hl]
	jr c, .asm_718b
	cp $2
	jr nc, .asm_718b
	ld hl, $0011
	add hl, bc
	ld a, e
	sub [hl]
	jr c, .asm_718b
	cp $2
	jr nc, .asm_718b
	scf
	ret

.asm_718b
	and a
	ret
; 718d

Function718d: ; 718d
	ld hl, PartyMon1Happiness
	ld bc, PartyMon2 - PartyMon1
	ld de, PartySpecies
.asm_7196
	ld a, [de]
	cp EGG
	jr nz, .asm_719f
	inc de
	add hl, bc
	jr .asm_7196

.asm_719f
	ld [$d265], a
	ld a, [hl]
	ld [ScriptVar], a
	call GetPokemonName
	jp Function746e
; 71ac

Function71ac: ; 71ac
	ld a, [PartySpecies]
	ld [$d265], a
	cp EGG
	ld a, $1
	jr z, .asm_71b9
	xor a

.asm_71b9
	ld [ScriptVar], a
	call GetPokemonName
	jp Function746e
; 71c2


ChangeHappiness: ; 71c2
; Perform happiness action c on CurPartyMon

	ld a, [CurPartyMon]
	inc a
	ld e, a
	ld d, 0
	ld hl, PartySpecies - 1
	add hl, de
	ld a, [hl]
	cp EGG
	ret z

	push bc
	ld hl, PartyMon1Happiness
	ld bc, PartyMon2 - PartyMon1
	ld a, [CurPartyMon]
	call AddNTimes
	pop bc

	ld d, h
	ld e, l

	push de
	ld a, [de]
	cp 100
	ld e, 0
	jr c, .asm_71ef
	inc e
	cp 200
	jr c, .asm_71ef
	inc e

.asm_71ef
	dec c
	ld b, 0
	ld hl, .Actions
	add hl, bc
	add hl, bc
	add hl, bc
	ld d, 0
	add hl, de
	ld a, [hl]
	cp 100
	pop de

	ld a, [de]
	jr nc, .negative
	add [hl]
	jr nc, .asm_720d
	ld a, $ff
	jr .asm_720d

.negative
	add [hl]
	jr c, .asm_720d
	xor a

.asm_720d
	ld [de], a
	ld a, [IsInBattle]
	and a
	ret z
	ld a, [CurPartyMon]
	ld b, a
	ld a, [$d0d8]
	cp b
	ret nz
	ld a, [de]
	ld [BattleMonHappiness], a
	ret
; 7221

.Actions
	db  +5,  +3,  +2
	db  +5,  +3,  +2
	db  +1,  +1,  +0
	db  +3,  +2,  +1
	db  +1,  +1,  +0
	db  -1,  -1,  -1
	db  -5,  -5, -10
	db  -5,  -5, -10
	db  +1,  +1,  +1
	db  +3,  +3,  +1
	db  +5,  +5,  +2
	db  +1,  +1,  +1
	db  +3,  +3,  +1
	db +10, +10,  +4
	db  -5,  -5, -10
	db -10, -10, -15
	db -15, -15, -20
	db  +3,  +3,  +1
	db +10,  +6,  +4
; 725a


StepHappiness: ; 725a
; Raise the party's happiness by 1 point every other step cycle.

	ld hl, $dc77
	ld a, [hl]
	inc a
	and 1
	ld [hl], a
	ret nz

	ld de, PartyCount
	ld a, [de]
	and a
	ret z

	ld c, a
	ld hl, PartyMon1Happiness
.loop
	inc de
	ld a, [de]
	cp EGG
	jr z, .next
	inc [hl]
	jr nz, .next
	ld [hl], $ff

.next
	push de
	ld de, PartyMon2 - PartyMon1
	add hl, de
	pop de
	dec c
	jr nz, .loop
	ret
; 7282


DaycareStep: ; 7282

	ld a, [DaycareMan]
	bit 0, a
	jr z, .asm_72a4

	ld a, [$df2b] ; level
	cp 100
	jr nc, .asm_72a4
	ld hl, $df16 ; exp
	inc [hl]
	jr nz, .asm_72a4
	dec hl
	inc [hl]
	jr nz, .asm_72a4
	dec hl
	inc [hl]
	ld a, [hl]
	cp $50
	jr c, .asm_72a4
	ld a, $50
	ld [hl], a

.asm_72a4
	ld a, [DaycareLady]
	bit 0, a
	jr z, .asm_72c6

	ld a, [$df64] ; level
	cp 100
	jr nc, .asm_72c6
	ld hl, $df4f ; exp
	inc [hl]
	jr nz, .asm_72c6
	dec hl
	inc [hl]
	jr nz, .asm_72c6
	dec hl
	inc [hl]
	ld a, [hl]
	cp $50
	jr c, .asm_72c6
	ld a, $50
	ld [hl], a

.asm_72c6
	ld hl, DaycareMan
	bit 5, [hl] ; egg
	ret z
	ld hl, StepsToEgg
	dec [hl]
	ret nz

	call Random
	ld [hl], a
	callab Function16e1d
	ld a, [$d265]
	cp $e6
	ld b, $50
	jr nc, .asm_72f8
	ld a, [$d265]
	cp $aa
	ld b, $28
	jr nc, .asm_72f8
	ld a, [$d265]
	cp $6e
	ld b, $1e
	jr nc, .asm_72f8
	ld b, $a

.asm_72f8
	call Random
	cp b
	ret nc
	ld hl, DaycareMan
	res 5, [hl]
	set 6, [hl]
	ret
; 7305


SpecialGiveShuckle: ; 7305

; Adding to the party.
	xor a
	ld [MonType], a

; Level 15 Shuckle.
	ld a, SHUCKLE
	ld [CurPartySpecies], a
	ld a, 15
	ld [CurPartyLevel], a

	ld a, PREDEF_ADDPARTYMON
	call Predef
	jr nc, .NotGiven

; Caught data.
	ld b, 0
	callba Function4dba3

; Holding a Berry.
	ld bc, PartyMon2 - PartyMon1
	ld a, [PartyCount]
	dec a
	push af
	push bc
	ld hl, PartyMon1Item
	call AddNTimes
	ld [hl], BERRY
	pop bc
	pop af

; OT ID.
	ld hl, PartyMon1ID
	call AddNTimes
	ld a, $2
	ld [hli], a
	ld [hl], $6

; Nickname.
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Nickname
	call SkipNames
	ld de, SpecialShuckleNick
	call CopyName2

; OT.
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1OT
	call SkipNames
	ld de, SpecialShuckleOT
	call CopyName2

; Engine flag for this event.
	ld hl, $dc1e
	set 5, [hl]

	ld a, 1
	ld [ScriptVar], a
	ret

.NotGiven
	xor a
	ld [ScriptVar], a
	ret

SpecialShuckleOT:
	db "MANIA@"
SpecialShuckleNick:
	db "SHUCKIE@"
; 737e


SpecialReturnShuckle: ; 737e
	callba Function50000
	jr c, .asm_73e6

	ld a, [CurPartySpecies]
	cp SHUCKLE
	jr nz, .DontReturn

	ld a, [CurPartyMon]
	ld hl, PartyMon1ID
	ld bc, PartyMon2 - PartyMon1
	call AddNTimes

; OT ID
	ld a, [hli]
	cp $2
	jr nz, .DontReturn
	ld a, [hl]
	cp $6
	jr nz, .DontReturn

; OT
	ld a, [CurPartyMon]
	ld hl, PartyMon1OT
	call SkipNames
	ld de, SpecialShuckleOT
.CheckOT
	ld a, [de]
	cp [hl]
	jr nz, .DontReturn
	cp "@"
	jr z, .asm_73bb
	inc de
	inc hl
	jr .CheckOT

.asm_73bb
	callba Functione538
	jr c, .asm_73f1
	ld a, [CurPartyMon]
	ld hl, PartyMon1Happiness
	ld bc, PartyMon2 - PartyMon1
	call AddNTimes
	ld a, [hl]
	cp 150
	ld a, $3
	jr nc, .asm_73e2
	xor a
	ld [$d10b], a
	callab Functione039
	ld a, $2

.asm_73e2
	ld [ScriptVar], a
	ret

.asm_73e6
	ld a, $1
	ld [ScriptVar], a
	ret

.DontReturn
	xor a
	ld [ScriptVar], a
	ret

.asm_73f1
	ld a, $4
	ld [ScriptVar], a
	ret
; 73f7

Function73f7: ; 73f7
	callba Function50000
	jr c, .asm_740e
	ld a, [CurPartySpecies]
	ld [ScriptVar], a
	ld [$d265], a
	call GetPokemonName
	jp Function746e

.asm_740e
	xor a
	ld [ScriptVar], a
	ret
; 7413

Function7413: ; 7413
	ld hl, Data7459
	jr Function7420

Function7418: ; 7418
	ld hl, Data7462
	jr Function7420

Function741d: ; 741d
	ld hl, Data746b

Function7420: ; 7420
	push hl
	callba Function50000
	pop hl
	jr c, .asm_744e
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_7453
	push hl
	call GetCurNick
	call Function746e
	pop hl
	call Random
.next
	sub [hl]
	jr c, .asm_7444
	inc hl
	inc hl
	inc hl
	jr .next

.asm_7444
	inc hl
	ld a, [hli]
	ld [ScriptVar], a
	ld c, [hl]
	call ChangeHappiness
	ret

.asm_744e
	xor a
	ld [ScriptVar], a
	ret

.asm_7453
	ld a, $1
	ld [ScriptVar], a
	ret
; 7459

Data7459: ; 7459
	db $4c, $02, $09
	db $80, $03, $0a
	db $ff, $04, $0b

Data7462: ; 7462
	db $9a, $02, $0c
	db $4c, $03, $0d
	db $ff, $04, $0e

Data746b: ; 746b
	db $ff, $02, $12
; 746e

Function746e: ; 746e
	ld hl, StringBuffer1
	ld de, StringBuffer3
	ld bc, $000b
	jp CopyBytes
; 747a

Function747a: ; 747a
	ret
; 747b


SECTION "bank2", ROMX, BANK[$2]

Function8000: ; 8000
	call Function2ed3
	xor a
	ld [hBGMapMode], a
	call WhiteBGMap
	call ClearSprites
	ld hl, TileMap
	ld bc, $0168
	ld a, " "
	call ByteFill
	ld hl, AttrMap
	ld bc, $0168
	ld a, $7
	call ByteFill
	call Function3200
	call Function32f9
	ret
; 8029

Function8029: ; 8029
	ld a, $ff
	ld [$d4cd], a
	ld [$d4ce], a
	ld a, $0
	ld hl, Data8071
	call Function19a6
	ld b, $0
	call Function808f
	ld a, $0
	call GetMapObject
	ld hl, $0008
	add hl, bc
	ld e, $80
	ld a, [$d45b]
	bit 2, a
	jr nz, .asm_8059
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_8059
	ld e, $90

.asm_8059
	ld [hl], e
	ld a, $0
	ld [hConnectionStripLength], a
	ld bc, MapObjects
	ld a, $0
	ld [hConnectedMapWidth], a
	ld de, $d4d6
	call Function8116
	ld a, $0
	ld [$d4cf], a
	ret
; 8071

Data8071: ; 8071
INCBIN "baserom.gbc",$8071,$807e - $8071
; 807e

Function807e: ; 807e
	push de
	ld a, b
	call GetMapObject
	pop de
	ld hl, $0003
	add hl, bc
	ld [hl], d
	ld hl, $0002
	add hl, bc
	ld [hl], e
	ret
; 808f

Function808f: ; 808f
	push bc
	ld a, [XCoord]
	add $4
	ld d, a
	ld a, [YCoord]
	add $4
	ld e, a
	pop bc
	call Function807e
	ret
; 80a1


Function80a1: ; 80a1
	ld a, b
	call Function18de
	ret c
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	ld a, [hConnectionStripLength]
	ld b, a
	call Function807e
	and a
	ret
; 80b8

Function80b8: ; 80b8
	ld a, [XCoord]
	add $4
	ld d, a
	ld hl, MapX
	sub [hl]
	ld [hl], d
	ld hl, $d721
	ld [hl], d
	ld hl, MapX2
	ld [hl], d
	ld d, a
	ld a, [YCoord]
	add $4
	ld e, a
	ld hl, MapY
	sub [hl]
	ld [hl], e
	ld hl, $d720
	ld [hl], e
	ld hl, MapY2
	ld [hl], e
	ld e, a
	ld a, [$d4cd]
	cp $0
	ret nz
	ret
; 80e7


Function80e7: ; 80e7
	call Function2707
	and a
	ret nz
	ld hl, $d4fe
	ld a, $1
	ld de, $0028
.asm_80f4
	ld [hConnectedMapWidth], a
	ld a, [hl]
	and a
	jr z, .asm_8104
	add hl, de
	ld a, [hConnectedMapWidth]
	inc a
	cp $d
	jr nz, .asm_80f4
	scf
	ret

.asm_8104
	ld d, h
	ld e, l
	call Function8116
	ld hl, VramState
	bit 7, [hl]
	ret z
	ld hl, $0005
	add hl, de
	set 5, [hl]
	ret
; 8116

Function8116: ; 8116
	call Function811d
	call Function8286
	ret
; 811d

Function811d: ; 811d
	ld a, [hConnectedMapWidth]
	ld hl, $0000
	add hl, bc
	ld [hl], a
	ld a, [hConnectionStripLength]
	ld [$c2f0], a
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	ld [$c2f1], a
	call Function180e
	ld [$c2f2], a
	ld a, [hl]
	call GetSpritePalette
	ld [$c2f3], a
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	and $f0
	jr z, .asm_814e
	swap a
	and $7
	ld [$c2f3], a

.asm_814e
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	ld [$c2f4], a
	ld hl, $0009
	add hl, bc
	ld a, [hl]
	ld [$c2f5], a
	ld hl, $0003
	add hl, bc
	ld a, [hl]
	ld [$c2f6], a
	ld hl, $0002
	add hl, bc
	ld a, [hl]
	ld [$c2f7], a
	ld hl, $0005
	add hl, bc
	ld a, [hl]
	ld [$c2f8], a
	ret
; 8177

Function8177: ; 8177
	ld bc, $d72e
	ld a, $1
.asm_817c
	ld [hConnectionStripLength], a
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_81bb
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $ff
	jr nz, .asm_81bb
	ld a, [XCoord]
	ld d, a
	ld a, [YCoord]
	ld e, a
	ld hl, $0003
	add hl, bc
	ld a, [hl]
	add $1
	sub d
	jr c, .asm_81bb
	cp $c
	jr nc, .asm_81bb
	ld hl, $0002
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_81bb
	cp $b
	jr nc, .asm_81bb
	push bc
	call Function80e7
	pop bc
	jp c, Function81c9

.asm_81bb
	ld hl, $0010
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $10
	jr nz, .asm_817c
	ret
; 81c9

Function81c9: ; 81c9
	ret
; 81ca

Function81ca: ; 81ca
	nop
	ld a, [$d151]
	cp $ff
	ret z
	ld hl, Table81d6
	rst JumpTable
	ret
; 81d6

Table81d6: ; 81d6
	dw Function81e5
	dw Function81de
	dw Function8232
	dw Function8239
; 81de

Function81de: ; 81de
	ld a, [YCoord]
	sub $1
	jr Function81ea

Function81e5: ; 81e5
	ld a, [YCoord]
	add $9

Function81ea: ; 81ea
	ld d, a
	ld a, [XCoord]
	ld e, a
	ld bc, $d72e
	ld a, $1
.asm_81f4
	ld [hConnectionStripLength], a
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_8224
	ld hl, $0002
	add hl, bc
	ld a, d
	cp [hl]
	jr nz, .asm_8224
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $ff
	jr nz, .asm_8224
	ld hl, $0003
	add hl, bc
	ld a, [hl]
	add $1
	sub e
	jr c, .asm_8224
	cp $c
	jr nc, .asm_8224
	push de
	push bc
	call Function80e7
	pop bc
	pop de

.asm_8224
	ld hl, $0010
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $10
	jr nz, .asm_81f4
	ret
; 8232

Function8232: ; 8232
	ld a, [XCoord]
	sub $1
	jr Function823e

Function8239: ; 8239
	ld a, [XCoord]
	add $a

Function823e: ; 823e
	ld e, a
	ld a, [YCoord]
	ld d, a
	ld bc, $d72e
	ld a, $1
.asm_8248
	ld [hConnectionStripLength], a
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_8278
	ld hl, $0003
	add hl, bc
	ld a, e
	cp [hl]
	jr nz, .asm_8278
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $ff
	jr nz, .asm_8278
	ld hl, $0002
	add hl, bc
	ld a, [hl]
	add $1
	sub d
	jr c, .asm_8278
	cp $b
	jr nc, .asm_8278
	push de
	push bc
	call Function80e7
	pop bc
	pop de

.asm_8278
	ld hl, $0010
	add hl, bc
	ld b, h
	ld c, l
	ld a, [hConnectionStripLength]
	inc a
	cp $10
	jr nz, .asm_8248
	ret
; 8286


Function8286: ; 8286
	ld a, [$c2f0]
	ld hl, $0001
	add hl, de
	ld [hl], a
	ld a, [$c2f4]
	call Function1a61
	ld a, [$c2f3]
	ld hl, $0006
	add hl, de
	or [hl]
	ld [hl], a
	ld a, [$c2f7]
	call Function82d5
	ld a, [$c2f6]
	call Function82f1
	ld a, [$c2f1]
	ld hl, $0000
	add hl, de
	ld [hl], a
	ld a, [$c2f2]
	ld hl, $0002
	add hl, de
	ld [hl], a
	ld hl, $0009
	add hl, de
	ld [hl], $0
	ld hl, $000d
	add hl, de
	ld [hl], $ff
	ld a, [$c2f8]
	call Function830d
	ld a, [$c2f5]
	ld hl, $0020
	add hl, de
	ld [hl], a
	and a
	ret
; 82d5

Function82d5: ; 82d5
	ld hl, $0015
	add hl, de
	ld [hl], a
	ld hl, $0011
	add hl, de
	ld [hl], a
	ld hl, YCoord
	sub [hl]
	and $f
	swap a
	ld hl, $d14d
	sub [hl]
	ld hl, $0018
	add hl, de
	ld [hl], a
	ret
; 82f1

Function82f1: ; 82f1
	ld hl, $0014
	add hl, de
	ld [hl], a
	ld hl, $0010
	add hl, de
	ld [hl], a
	ld hl, XCoord
	sub [hl]
	and $f
	swap a
	ld hl, $d14c
	sub [hl]
	ld hl, $0017
	add hl, de
	ld [hl], a
	ret
; 830d

Function830d: ; 830d
	ld h, a
	inc a
	and $f
	ld l, a
	ld a, h
	add $10
	and $f0
	or l
	ld hl, $0016
	add hl, de
	ld [hl], a
	ret
; 831e

Function831e: ; 831e
	ld a, [$ffe0]
	call Function1b1e
	ld a, $3e
	call Function1b3f
	ld a, [$d03f]
	dec a
	jr z, Function833b
	ld a, [$ffe0]
	ld b, a
	ld c, $0
	ld d, $1
	call Function8341
	call Function1b35

Function833b
	ld a, $47
	call Function1b3f
	ret
; 8341

Function8341: ; 8341
	push de
	push bc
	ld a, c
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	call Function1ae5
	ld d, b
	ld e, c
	pop bc
	ld a, b
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	call Function1ae5
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	ld hl, $0011
	add hl, bc
	ld c, [hl]
	ld b, a
	ld hl, $0010
	add hl, de
	ld a, [hl]
	ld hl, $0011
	add hl, de
	ld e, [hl]
	ld d, a
	pop af
	call Function1b5f
	ret
; 8379

Function8379: ; 8379
	call Function1b1e
	call Function8388
	call Function1b3f
	ld a, $47
	call Function1b3f
	ret
; 8388

Function8388: ; 8388
	ld a, [PlayerDirection]
	srl a
	srl a
	and 3
	ld e, a
	ld d, 0
	ld hl, .data_839a
	add hl, de
	ld a, [hl]
	ret
; 839a

.data_839a
	db 8, 9, 10, 11
; 839e


Function839e: ; 839e
	push bc
	ld a, c
	call Function18de
	ld d, b
	ld e, c
	pop bc
	ret c
	ld a, b
	call Function18de
	ret c
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	ld hl, $0011
	add hl, bc
	ld c, [hl]
	ld b, a
	ld hl, $0010
	add hl, de
	ld a, [hl]
	cp b
	jr z, .asm_83c7
	jr c, .asm_83c4
	inc b
	jr .asm_83d5

.asm_83c4
	dec b
	jr .asm_83d5

.asm_83c7
	ld hl, $0011
	add hl, de
	ld a, [hl]
	cp c
	jr z, .asm_83d5
	jr c, .asm_83d4
	inc c
	jr .asm_83d5

.asm_83d4
	dec c

.asm_83d5
	ld hl, $0010
	add hl, de
	ld [hl], b
	ld a, b
	ld hl, XCoord
	sub [hl]
	and $f
	swap a
	ld hl, $d14c
	sub [hl]
	ld hl, $0017
	add hl, de
	ld [hl], a
	ld hl, $0011
	add hl, de
	ld [hl], c
	ld a, c
	ld hl, YCoord
	sub [hl]
	and $f
	swap a
	ld hl, $d14d
	sub [hl]
	ld hl, $0018
	add hl, de
	ld [hl], a
	ld a, [hConnectedMapWidth]
	ld hl, $0020
	add hl, de
	ld [hl], a
	ld hl, $0003
	add hl, de
	ld [hl], $1a
	ld hl, $0009
	add hl, de
	ld [hl], $0
	ret
; 8417

Function8417: ; 8417
	ld a, d
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $d
	jr nc, .asm_8437
	ld d, a
	ld a, e
	call GetMapObject
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	cp $d
	jr nc, .asm_8437
	ld e, a
	call Function8439
	ret

.asm_8437
	scf
	ret
; 8439

Function8439: ; 8439
	ld a, d
	call Function1ae5
	ld hl, $0010
	add hl, bc
	ld a, [hl]
	ld hl, $0011
	add hl, bc
	ld c, [hl]
	ld b, a
	push bc
	ld a, e
	call Function1ae5
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	pop bc
	ld a, b
	sub d
	jr z, .asm_846c
	jr nc, .asm_8460
	cpl
	inc a

.asm_8460
	ld h, a
	ld a, c
	sub e
	jr z, .asm_847a
	jr nc, .asm_8469
	cpl
	inc a

.asm_8469
	sub h
	jr c, .asm_847a

.asm_846c
	ld a, c
	cp e
	jr z, .asm_8488
	jr c, .asm_8476
	ld d, $0
	and a
	ret

.asm_8476
	ld d, $1
	and a
	ret

.asm_847a
	ld a, b
	cp d
	jr z, .asm_8488
	jr c, .asm_8484
	ld d, $3
	and a
	ret

.asm_8484
	ld d, $2
	and a
	ret

.asm_8488
	scf
	ret
; 848a

Function848a: ; 848a
	call Function849d
	jr c, .asm_8497
	ld [$d4d1], a
	xor a
	ld [$d4d0], a
	ret

.asm_8497
	ld a, $ff
	ld [$d4d0], a
	ret
; 849d

Function849d: ; 849d
	ld a, [$d4cd]
	call Function1ae5
	ld hl, $0010
	add hl, bc
	ld d, [hl]
	ld hl, $0011
	add hl, bc
	ld e, [hl]
	ld a, [$d4ce]
	call Function1ae5
	ld hl, $0010
	add hl, bc
	ld a, d
	cp [hl]
	jr z, .asm_84c5
	jr c, .asm_84c1
	and a
	ld a, $f
	ret

.asm_84c1
	and a
	ld a, $e
	ret

.asm_84c5
	ld hl, $0011
	add hl, bc
	ld a, e
	cp [hl]
	jr z, .asm_84d7
	jr c, .asm_84d3
	and a
	ld a, $c
	ret

.asm_84d3
	and a
	ld a, $d
	ret

.asm_84d7
	scf
	ret
; 84d9

_Sine: ; 84d9
; A simple sine function.
; Return d * sin(e) in hl.

; e is a signed 6-bit value.
	ld a, e
	and %111111
	cp  %100000
	jr nc, .negative

	call Function84ef
	ld a, h
	ret

.negative
	and %011111
	call Function84ef
	ld a, h
	xor $ff
	inc a
	ret
; 84ef

Function84ef: ; 84ef
	ld e, a
	ld a, d
	ld d, 0
	ld hl, SineWave
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, 0

; Factor amplitude
.multiply
	srl a
	jr nc, .even
	add hl, de
.even
	sla e
	rl d
	and a
	jr nz, .multiply
	ret
; 850b

SineWave: ; 850b
; A $20-word table representing a sine wave.
; 90 degrees is index $10 at a base amplitude of $100.
x	set 0
	rept $20
	dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
x	set x + $100 * $40000
	endr
; 854b


GetPredefPointer: ; 854b
; Return the bank and address of PredefID in a and PredefAddress.

; Save hl for later (back in Predef)
	ld a, h
	ld [PredefTemp], a
	ld a, l
	ld [PredefTemp + 1], a

	push de
	ld a, [PredefID]
	ld e, a
	ld d, 0
	ld hl, PredefPointers
	add hl, de
	add hl, de
	add hl, de
	pop de

	ld a, [hli]
	ld [PredefAddress + 1], a
	ld a, [hli]
	ld [PredefAddress], a
	ld a, [hl]

	ret
; 856b

PredefPointers: ; 856b
; $4b Predef pointers
; address, bank

	dwb Function6508, BANK(Function6508) ; $0
	dwb Function747a, BANK(Function747a)
	dwb Functionc658, BANK(Functionc658)
	dwb FlagPredef, BANK(FlagPredef)
	dwb Functionc699, BANK(Functionc699)
	dwb FillPP, BANK(FillPP)
	dwb Functiond88c, BANK(Functiond88c)
	dwb Functionda96, BANK(Functionda96)
	dwb Functiondb3f, BANK(Functiondb3f) ; $8
	dwb Functionde6e, BANK(Functionde6e)
	dwb Functiondf8c, BANK(Functiondf8c)
	dwb Functionc6e0, BANK(Functionc6e0)
	dwb Functione167, BANK(Functione167)
	dwb Functione17b, BANK(Functione17b)
	dwb CanLearnTMHMMove, BANK(CanLearnTMHMMove)
	dwb GetTMHMMove, BANK(GetTMHMMove)
	dwb Function28eef, BANK(Function28eef) ; $ 10
	dwb PrintMoveDesc, BANK(PrintMoveDesc)
	dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD
	dwb FillBox, BANK(FillBox)
	dwb Function3d873, BANK(Function3d873)
	dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD
	dwb StartBattle, BANK(StartBattle)
	dwb FillInExpBar, BANK(FillInExpBar)
	dwb Function3f43d, BANK(Function3f43d) ; $18
	dwb Function3f47c, BANK(Function3f47c)
	dwb Function42487, BANK(Function42487)
	dwb FillMoves, BANK(FillMoves)
	dwb Function421e6, BANK(Function421e6)
	dwb Function28f63, BANK(Function28f63)
	dwb Function28f24, BANK(Function28f24)
	dwb Function5084a, BANK(Function5084a)
	dwb Function50d6f, BANK(Function50d6f) ; $20
	dwb Function50d2e, BANK(Function50d2e)
	dwb Function50cdb, BANK(Function50cdb)
	dwb Function50c50, BANK(Function50c50)
	dwb GetGender, BANK(GetGender)
	dwb StatsScreenInit, BANK(StatsScreenInit)
	dwb DrawPlayerHP, BANK(DrawPlayerHP)
	dwb DrawEnemyHP, BANK(DrawEnemyHP)
	dwb Function50b7b, BANK(Function50b7b) ; $28
	dwb GetTypeName, BANK(GetTypeName)
	dwb PrintMoveType, BANK(PrintMoveType)
	dwb PrintType, BANK(PrintType)
	dwb PrintMonTypes, BANK(PrintMonTypes)
	dwb GetUnownLetter, BANK(GetUnownLetter)
	dwb Functioncbcdd, BANK(Functioncbcdd)
	dwb Functioncc0d5, BANK(Functioncc0d5)
	dwb Function9853, BANK(Function9853) ; $30
	dwb Function864c, BANK(Function864c)
	dwb Function91d11, BANK(Function91d11)
	dwb CheckContestMon, BANK(CheckContestMon)
	dwb Function8c20f, BANK(Function8c20f)
	dwb Function8c000, BANK(Function8c000)
	dwb Function8c000, BANK(Function8c000)
	dwb Functioncc0d6, BANK(Functioncc0d6)
	dwb Functioncc0d5, BANK(Functioncc0d5) ; $38
	dwb Functioncc0d5, BANK(Functioncc0d5)
	dwb Functionfd1d0, BANK(Functionfd1d0)
	dwb PartyMonItemName, BANK(PartyMonItemName)
	dwb Function51077, BANK(Function51077)
	dwb Function5116c, BANK(Function5116c)
	dwb Function5108b, BANK(Function5108b)
	dwb Function5120d, BANK(Function5120d)
	dwb DecompressPredef, BANK(DecompressPredef) ; $40
	dwb Function0x347d3, BANK(Function0x347d3)
	dwb Functionfb908, BANK(Functionfb908)
	dwb Functionfb877, BANK(Functionfb877)
	dwb Functiond0000, BANK(Functiond0000)
	dwb Function50d0a, BANK(Function50d0a)
	dwb Functiond00a3, BANK(Functiond00a3)
	dwb Functiond008e, BANK(Functiond008e)
	dwb Functiond0669, BANK(Functiond0669) ; $48
	dwb Functiond066e, BANK(Functiond066e)
	dbw $ff, Function2d43 ; ????
; 864c


INCLUDE "engine/color.asm"


SECTION "bank3", ROMX, BANK[$3]

Functionc000: ; c000
	ld a, [TimeOfDay]
	ld hl, Datac012
	ld de, 2
	call IsInArray
	inc hl
	ld c, [hl]
	ret c

	xor a
	ld c, a
	ret
; c012

Datac012: ; c012
	db MORN, 1
	db DAY,  2
	db NITE, 4
	db NITE, 4
	db $ff
; c01b

Functionc01b: ; c01b
	ld hl, SpecialsPointers
	add hl, de
	add hl, de
	add hl, de
	ld b, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, b
	rst FarCall
	ret
; c029


SpecialsPointers: ; c029
	dbw BANK(Function97c28), Function97c28
	dbw BANK(Function29ce8), Function29ce8
	dbw BANK(Function29d11), Function29d11
	dbw BANK(Function29d92), Function29d92
	dbw BANK(Function29e66), Function29e66
	dbw BANK(Function29e82), Function29e82
	dbw BANK(Function29efa), Function29efa
	dbw BANK(Function29eee), Function29eee
	dbw BANK(Function29c92), Function29c92
	dbw BANK(Function29cf1), Function29cf1
	dbw BANK(Function29cfa), Function29cfa
	dbw BANK(Function29bfb), Function29bfb
	dbw BANK(Function29c7b), Function29c7b
	dbw BANK(Function29ec4), Function29ec4
	dbw BANK(Function29ed9), Function29ed9
	dbw BANK(Function29eaf), Function29eaf
	dbw BANK(Function29f47), Function29f47
	dbw BANK(Functionc2f6), Functionc2f6
	dbw BANK(Functionc309), Functionc309
	dbw BANK(Function1050b9), Function1050b9
	dbw BANK(Functionc34a), Functionc34a
	dbw BANK(Function4d9e5), Function4d9e5
	dbw BANK(Function13a12), Function13a12
	dbw BANK(Function13a31), Function13a31
	dbw BANK(Function135db), Function135db
	dbw BANK(Functionfbb32), Functionfbb32
	dbw BANK(Functionfbcd2), Functionfbcd2
	dbw BANK(Functionc658), Functionc658
	dbw BANK(Function1559a), Function1559a
	dbw BANK(Functionc2e7), Functionc2e7
	dbw BANK(Function166d6), Function166d6
	dbw BANK(Function1672a), Function1672a
	dbw BANK(Function16936), Function16936
	dbw BANK(Function2c547), Function2c547
	dbw BANK(Function16218), Function16218
	dbw BANK(Function8cc04), Function8cc04
	dbw BANK(SpecialNameRival), SpecialNameRival
	dbw BANK(Function90913), Function90913
	dbw BANK(Functionc2c0), Functionc2c0
	dbw BANK(Functionc2cd), Functionc2cd
	dbw BANK(Functionc355), Functionc355
	dbw BANK(Functionc360), Functionc360
	dbw BANK(Functionc373), Functionc373
	dbw BANK(Functionc380), Functionc380
	dbw BANK(Functionc38d), Functionc38d
	dbw BANK(Functionc3db), Functionc3db
	dbw BANK(Function8c084), Function8c084
	dbw BANK(Function8c092), Function8c092
	dbw BANK(Function8c0b6), Function8c0b6
	dbw BANK(Function8c079), Function8c079
	dbw BANK(Function8c0ab), Function8c0ab
	dbw BANK(Functiond91), Functiond91
	dbw BANK(WhiteBGMap), WhiteBGMap
	dbw BANK(UpdateTimePals), UpdateTimePals
	dbw BANK(ClearTileMap), ClearTileMap
	dbw BANK(Function1ad2), Function1ad2
	dbw BANK(Functione4a), Functione4a
	dbw BANK(Functionc230), Functionc230
	dbw BANK(SpecialSeenMon), SpecialSeenMon
	dbw BANK(WaitSFX),WaitSFX
	dbw BANK(Function3cdf), Function3cdf
	dbw BANK(Function3d47), Function3d47
	dbw BANK(Function12324), Function12324
	dbw BANK(Function8379), Function8379
	dbw BANK(Functionc25a), Functionc25a
	dbw BANK(Functionc268), Functionc268
	dbw BANK(Functionc276), Functionc276
	dbw BANK(Functionc284), Functionc284
	dbw BANK(Functionc3ef), Functionc3ef
	dbw BANK(Function17421), Function17421
	dbw BANK(Function17440), Function17440
	dbw BANK(Function139a8), Function139a8
	dbw BANK(Functionc3fc), Functionc3fc
	dbw BANK(Function26feb), Function26feb
	dbw BANK(Function27043), Function27043
	dbw BANK(SpecialGiveShuckle), SpecialGiveShuckle
	dbw BANK(SpecialReturnShuckle), SpecialReturnShuckle
	dbw BANK(Function73f7), Function73f7
	dbw BANK(SpecialCheckPokerus),SpecialCheckPokerus
	dbw BANK(Function24b25), Function24b25
	dbw BANK(Function24b4e), Function24b4e
	dbw BANK(Function24ae8), Function24ae8
	dbw BANK(Function4d87a), Function4d87a
	dbw BANK(Functionc434), Functionc434
	dbw BANK(Functionc422), Functionc422
	dbw BANK(Function4d9d3), Function4d9d3
	dbw BANK(Function88018), Function88018
	dbw BANK(SpecialNameRater), SpecialNameRater
	dbw BANK(Functionc2da), Functionc2da
	dbw BANK(Function718d), Function718d
	dbw BANK(Function71ac), Function71ac
	dbw BANK(Function2a4ab), Function2a4ab
	dbw BANK(Function2a51f), Function2a51f
	dbw BANK(Function2a567), Function2a567
	dbw BANK(Function14209), Function14209
	dbw BANK(Functionfb841), Functionfb841
	dbw BANK(SpecialSnorlaxAwake),SpecialSnorlaxAwake
	dbw BANK(Function7413), Function7413
	dbw BANK(Function7418), Function7418
	dbw BANK(Function741d), Function741d
	dbw BANK(Functionc472), Functionc472
	dbw BANK(ProfOaksPCBoot), ProfOaksPCBoot
	dbw BANK(SpecialGameboyCheck),SpecialGameboyCheck
	dbw BANK(SpecialTrainerHouse),SpecialTrainerHouse
	dbw BANK(Function16dc7), Function16dc7
	dbw BANK(InitRoamMons), InitRoamMons
	dbw BANK(Functionc48f), Functionc48f
	dbw BANK(Functionc49f), Functionc49f
	dbw BANK(Functionc4ac), Functionc4ac
	dbw BANK(Function11ac3e), Function11ac3e
	dbw BANK(Function11b444), Function11b444
	dbw BANK(Function11b5e8), Function11b5e8
	dbw BANK(Function11b7e5), Function11b7e5
	dbw BANK(Function11b879), Function11b879
	dbw BANK(Function11b920), Function11b920
	dbw BANK(Function11b93b), Function11b93b
	dbw BANK(Function1700b0), Function1700b0
	dbw BANK(Function1700ba), Function1700ba
	dbw BANK(Function170114), Function170114
	dbw BANK(Function170215), Function170215
	dbw BANK(Function1704e1), Function1704e1
	dbw BANK(Function17021d), Function17021d
	dbw BANK(Function170b44), Function170b44
	dbw BANK(Function11ba38), Function11ba38
	dbw BANK(Function170bd3), Function170bd3
	dbw BANK(Function117656), Function117656
	dbw BANK(Reset), Reset
	dbw BANK(Function1011f1), Function1011f1
	dbw BANK(Function101220), Function101220
	dbw BANK(Function101225), Function101225
	dbw BANK(Function101231), Function101231
	dbw BANK(Function4925b), Function4925b
	dbw BANK(Function8adef), Function8adef
	dbw BANK(Function11c1ab), Function11c1ab
	dbw BANK(Function170687), Function170687
	dbw BANK(Function8ae68), Function8ae68
	dbw BANK(Function17d224), Function17d224
	dbw BANK(Function17d2b6), Function17d2b6
	dbw BANK(Function17d2ce), Function17d2ce
	dbw BANK(Function17f53d), Function17f53d
	dbw BANK(Function103612), Function103612
	dbw BANK(SpecialHoOhChamber),SpecialHoOhChamber
	dbw BANK(Function102142), Function102142
	dbw BANK(Function4989a), Function4989a
	dbw BANK(Function49bf9), Function49bf9
	dbw BANK(Function4f0bc), Function4f0bc
	dbw BANK(Function8af6b), Function8af6b
	dbw BANK(Function8afd4), Function8afd4
	dbw BANK(SpecialDratini),SpecialDratini
	dbw BANK(Function11485), Function11485
	dbw BANK(SpecialBeastsCheck),SpecialBeastsCheck
	dbw BANK(SpecialMonCheck),SpecialMonCheck
	dbw BANK(Functionc225), Functionc225
	dbw BANK(Function170bd2), Function170bd2
	dbw BANK(Function10366e), Function10366e
	dbw BANK(Function1037eb), Function1037eb
	dbw BANK(Function10383c), Function10383c
	dbw BANK(Function1060a2), Function1060a2
	dbw BANK(Function14168), Function14168
	dbw BANK(Function1037c2), Function1037c2
	dbw BANK(Function10630f), Function10630f
	dbw BANK(Function103780), Function103780
	dbw BANK(Function10387b), Function10387b
	dbw BANK(Function4ae12), Function4ae12
	dbw BANK(Function1047eb), Function1047eb
	dbw BANK(Function4a927), Function4a927
	dbw BANK(Function90a54), Function90a54
	dbw BANK(Function90a88), Function90a88
	dbw BANK(SpecialNone), SpecialNone
; c224

SpecialNone: ; c224
	ret
; c225

Functionc225: ; c225
	ld a, [ScriptVar]
	ld d, a
	callba Function57e2
	ret
; c230

Functionc230: ; c230
	ld a, [ScriptVar]
	dec a
	call CheckCaughtMon
	ret nz
	ld a, [ScriptVar]
	dec a
	call SetSeenAndCaughtMon
	call FadeToMenu
	ld a, [ScriptVar]
	ld [$d265], a
	callba Functionfb877
	call Function2b4d
	ret
; c252

SpecialSeenMon: ; c252
	ld a, [ScriptVar]
	dec a
	call SetSeenMon
	ret
; c25a

Functionc25a: ; c25a
	ld a, [ScriptVar]
	ld b, a
	callba Function4dbd2
	jr z, Functionc298
	jr Functionc292

Functionc268: ; c268
	ld a, [ScriptVar]
	ld b, a
	callba Function4dbd9
	jr z, Functionc298
	jr Functionc292

Functionc276: ; c276
	ld a, [ScriptVar]
	ld b, a
	callba Function4dbe0
	jr z, Functionc298
	jr Functionc292

Functionc284: ; c284
	ld a, [ScriptVar]
	ld b, a
	callba Function4dbe6
	jr z, Functionc298
	jr Functionc292

Functionc292: ; c292
	ld a, $1
	ld [ScriptVar], a
	ret

Functionc298: ; c298
	xor a
	ld [ScriptVar], a
	ret
; c29d

SpecialNameRival: ; 0xc29d
	ld b, $2 ; rival
	ld de, RivalName
	callba Function116b7
	; default to "SILVER"
	ld hl, RivalName
	ld de, DefaultRivalName
	call InitName
	ret
; 0xc2b2

DefaultRivalName: ; 0xc2b2
	db "SILVER@"

SpecialNameRater: ; c2b9
	callba NameRater
	ret
; c2c0

Functionc2c0: ; c2c0
	call FadeToMenu
	callba Function9191c
	call Function2b4d
	ret
; c2cd

Functionc2cd: ; c2cd
	call FadeToMenu
	callba Function16be4
	call Function2b4d
	ret
; c2da

Functionc2da: ; c2da
	call FadeToMenu
	callba Function3f836
	call Function2b4d
	ret
; c2e7

Functionc2e7: ; c2e7
	xor a
	ld [ScriptVar], a
	callba Function156d9
	ld a, c
	ld [ScriptVar], a
	ret
; c2f6

Functionc2f6: ; c2f6
	ld a, $0
	call GetSRAMBank
	ld a, [$abe2]
	and a
	jr z, .asm_c302
	inc a

.asm_c302
	ld [ScriptVar], a
	call CloseSRAM
	ret
; c309

Functionc309: ; c309
	ld a, $0
	call GetSRAMBank
	ld a, [$abe2]
	ld [CurItem], a
	ld a, $1
	ld [$d10c], a
	ld hl, NumItems
	call ReceiveItem
	jr nc, .asm_c33d
	xor a
	ld [$abe2], a
	call CloseSRAM
	ld a, [CurItem]
	ld [$d265], a
	call GetItemName
	ld hl, UnknownText_0xc345
	call PrintText
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_c33d
	call CloseSRAM
	xor a
	ld [ScriptVar], a
	ret
; c345

UnknownText_0xc345: ; 0xc345
	; received item
	text_jump UnknownText_0x1bd3be, BANK(UnknownText_0x1bd3be)
	db "@"
; 0xc34a

Functionc34a: ; c34a
	callba Function1369d
	ld a, b
	ld [ScriptVar], a
	ret
; c355

Functionc355: ; c355
	ld a, [ScriptVar]
	ld e, a
	callba Function91a53
	ret
; c360

Functionc360: ; c360
	call FadeToMenu
	callba Functione1190
	ld a, [$d0ec]
	ld [ScriptVar], a
	call Function2b4d
	ret
; c373

Functionc373: ; c373
	call Functionc3ae
	ret c
	ld a, BANK(Function926c7)
	ld hl, Function926c7
	call Functionc39a
	ret
; c380

Functionc380: ; c380
	call Functionc3ae
	ret c
	ld a, BANK(Functione00ee)
	ld hl, Functione00ee
	call Functionc39a
	ret
; c38d

Functionc38d: ; c38d
	call Functionc3ae
	ret c
	ld a, BANK(Functione1e5b)
	ld hl, Functione1e5b
	call Functionc39a
	ret
; c39a

Functionc39a: ; c39a
	call Function31cf
	call FadeToMenu
	ld hl, $d0e8
	ld a, [hli]
	push af
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop af
	rst FarCall
	call Function2b4d
	ret
; c3ae

Functionc3ae: ; c3ae
	ld hl, Coins
	ld a, [hli]
	or [hl]
	jr z, .asm_c3c4
	ld a, $36
	ld [CurItem], a
	ld hl, NumItems
	call CheckItem
	jr nc, .asm_c3c9
	and a
	ret

.asm_c3c4
	ld hl, UnknownText_0xc3d1
	jr .asm_c3cc

.asm_c3c9
	ld hl, UnknownText_0xc3d6

.asm_c3cc
	call PrintText
	scf
	ret
; c3d1

UnknownText_0xc3d1: ; 0xc3d1
	; You have no coins.
	text_jump UnknownText_0x1bd3d7, BANK(UnknownText_0x1bd3d7)
	db "@"
; 0xc3d6

UnknownText_0xc3d6: ; 0xc3d6
	; You don't have a COIN CASE.
	text_jump UnknownText_0x1bd3eb, BANK(UnknownText_0x1bd3eb)
	db "@"
; 0xc3db

Functionc3db: ; c3db
	call WhiteBGMap
	call Function2879
	ret
; c3e2

ScriptReturnCarry: ; c3e2
	jr c, .carry
	xor a
	ld [ScriptVar], a
	ret
.carry
	ld a, 1
	ld [ScriptVar], a
	ret
; c3ef

Functionc3ef: ; c3ef
	callba Function1150c
	ld a, [$dc3a]
	ld [ScriptVar], a
	ret
; c3fc

Functionc3fc: ; c3fc
	ld a, [ScriptVar]
	ld [$dfce], a
	ret
; c403


Functionc403: ; c403
	ld a, c
	and a
	jr nz, .asm_c410
	ld a, d
	ld [$dfcc], a
	ld a, e
	ld [$dfcd], a
	ret

.asm_c410
	ld a, d
	ld [$dc5a], a
	ld a, e
	ld [$dc5b], a
	ret
; c419


SpecialCheckPokerus: ; c419
; Check if a monster in your party has Pokerus
	callba CheckPokerus
	jp ScriptReturnCarry
; c422

Functionc422: ; c422
	callba Function1152b
	ld hl, $dc9d
	res 0, [hl]
	callba Function5d33
	ret
; c434

Functionc434: ; c434
	callba Function11542
	jp ScriptReturnCarry
; c43d

SpecialSnorlaxAwake: ; 0xc43d
; Check if the Poké Flute channel is playing, and if the player is standing
; next to Snorlax.

; outputs:
; ScriptVar is 1 if the conditions are met, otherwise 0.

; check background music
	ld a, [CurMusic]
	cp $40 ; Poké Flute Channel
	jr nz, .nope

	ld a, [XCoord]
	ld b, a
	ld a, [YCoord]
	ld c, a

	ld hl, .ProximityCoords
.loop
	ld a, [hli]
	cp $ff
	jr z, .nope
	cp b
	jr nz, .nextcoord
	ld a, [hli]
	cp c
	jr nz, .loop

	ld a, $1
	jr .done

.nextcoord
	inc hl
	jr .loop

.nope
	xor a
.done
	ld [ScriptVar], a
	ret

.ProximityCoords
	db $21, $08
	db $22, $0a
	db $23, $0a
	db $24, $08
	db $24, $09
	db $ff

Functionc472: ; c472
	ld a, [CurPartySpecies]
	jp Function37ce
; c478

SpecialGameboyCheck: ; c478
; check cgb
	ld a, [hCGB]
	and a
	jr nz, .cgb
; check sgb
	ld a, [hSGB]
	and a
	jr nz, .sgb
; gb
	xor a
	jr .done
	
.sgb
	ld a, 1
	jr .done

.cgb
	ld a, 2
	
.done
	ld [ScriptVar], a
	ret

Functionc48f: ; c48f
	ld a, $0
	ld [MusicFadeIDLo], a
	ld a, $0
	ld [MusicFadeIDHi], a
	ld a, $2
	ld [MusicFade], a
	ret
; c49f

Functionc49f: ; c49f
	call FadeToMenu
	callba Function1dd702
	call Function2b4d
	ret
; c4ac

Functionc4ac: ; c4ac
	call FadeToMenu
	callba Function84688
	call Function2b4d
	ret
; c4b9

SpecialTrainerHouse: ; 0xc4b9
	ld a, 0
	call GetSRAMBank
	ld a, [$abfd] ; XXX what is this memory location?
	ld [ScriptVar], a
	jp CloseSRAM

_PrintNum: ; c4c7
	push bc
	bit 5, b
	jr z, .asm_c4d9
	bit 7, b
	jr nz, .asm_c4d4
	bit 6, b
	jr z, .asm_c4d9

.asm_c4d4
	ld a, $f0
	ld [hli], a
	res 5, b

.asm_c4d9
	xor a
	ld [hProduct], a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, b
	and $f
	cp $1
	jr z, .asm_c501
	cp $2
	jr z, .asm_c4f8
	ld a, [de]
	ld [hMultiplicand], a
	inc de
	ld a, [de]
	ld [$ffb5], a
	inc de
	ld a, [de]
	ld [$ffb6], a
	jr .asm_c504

.asm_c4f8
	ld a, [de]
	ld [$ffb5], a
	inc de
	ld a, [de]
	ld [$ffb6], a
	jr .asm_c504

.asm_c501
	ld a, [de]
	ld [$ffb6], a

.asm_c504
	push de
	ld d, b
	ld a, c
	swap a
	and $f
	ld e, a
	ld a, c
	and $f
	ld b, a
	ld c, $0
	cp $2
	jr z, .asm_c57c
	cp $3
	jr z, .asm_c56c
	cp $4
	jr z, .asm_c55b
	cp $5
	jr z, .asm_c54a
	cp $6
	jr z, .asm_c538
	ld a, $f
	ld [hMultiplier], a
	ld a, $42
	ld [hMathBuffer], a
	ld a, $40
	ld [$ffb9], a
	call Functionc5cb
	call PrintNumber_AdvancePointer

.asm_c538
	ld a, $1
	ld [hMultiplier], a
	ld a, $86
	ld [hMathBuffer], a
	ld a, $a0
	ld [$ffb9], a
	call Functionc5cb
	call PrintNumber_AdvancePointer

.asm_c54a
	xor a
	ld [hMultiplier], a
	ld a, $27
	ld [hMathBuffer], a
	ld a, $10
	ld [$ffb9], a
	call Functionc5cb
	call PrintNumber_AdvancePointer

.asm_c55b
	xor a
	ld [hMultiplier], a
	ld a, $3
	ld [hMathBuffer], a
	ld a, $e8
	ld [$ffb9], a
	call Functionc5cb
	call PrintNumber_AdvancePointer

.asm_c56c
	xor a
	ld [hMultiplier], a
	xor a
	ld [hMathBuffer], a
	ld a, $64
	ld [$ffb9], a
	call Functionc5cb
	call PrintNumber_AdvancePointer

.asm_c57c
	dec e
	jr nz, .asm_c583
	ld a, $f6
	ld [hProduct], a

.asm_c583
	ld c, $0
	ld a, [$ffb6]
.asm_c587
	cp $a
	jr c, .asm_c590
	sub $a
	inc c
	jr .asm_c587

.asm_c590
	ld b, a
	ld a, [hProduct]
	or c
	jr nz, .asm_c59b
	call PrintNumber_PrintLeadingZero
	jr .asm_c5ad

.asm_c59b
	call Functionc5ba
	push af
	ld a, $f6
	add c
	ld [hl], a
	pop af
	ld [hProduct], a
	inc e
	dec e
	jr nz, .asm_c5ad
	inc hl
	ld [hl], $f2

.asm_c5ad
	call PrintNumber_AdvancePointer
	call Functionc5ba
	ld a, $f6
	add b
	ld [hli], a
	pop de
	pop bc
	ret
; c5ba

Functionc5ba: ; c5ba
	push af
	ld a, [hProduct]
	and a
	jr nz, .asm_c5c9
	bit 5, d
	jr z, .asm_c5c9
	ld a, $f0
	ld [hli], a
	res 5, d

.asm_c5c9
	pop af
	ret
; c5cb


; known jump sources: c532 (3:4532), c544 (3:4544), c555 (3:4555), c566 (3:4566), c576 (3:4576)
Functionc5cb: ; c5cb (3:45cb)
	dec e
	jr nz, PrintNumber_PrintDigit
	ld a, $f6
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)

; known jump sources: c5cc (3:45cc)
PrintNumber_PrintDigit: ; c5d2 (3:45d2)
	ld c, $0
.asm_c5d4
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	ld b, a
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	ld [$FF00+$ba], a
	cp b
	jr c, .asm_c624
	sub b
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld a, [hMathBuffer] ; $ff00+$b8
	ld b, a
	ld a, [$FF00+$b5]
	ld [$FF00+$bb], a
	cp b
	jr nc, .asm_c5f6
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	or $0
	jr z, .asm_c620
	dec a
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld a, [$FF00+$b5]
.asm_c5f6
	sub b
	ld [$FF00+$b5], a
	ld a, [$FF00+$b9]
	ld b, a
	ld a, [$FF00+$b6]
	ld [$FF00+$bc], a
	cp b
	jr nc, .asm_c616
	ld a, [$FF00+$b5]
	and a
	jr nz, .asm_c611
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	and a
	jr z, .asm_c61c
	dec a
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	xor a
.asm_c611
	dec a
	ld [$FF00+$b5], a
	ld a, [$FF00+$b6]
.asm_c616
	sub b
	ld [$FF00+$b6], a
	inc c
	jr .asm_c5d4
.asm_c61c
	ld a, [$FF00+$bb]
	ld [$FF00+$b5], a
.asm_c620
	ld a, [$FF00+$ba]
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
.asm_c624
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	or c
	jr z, PrintNumber_PrintLeadingZero
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	and a
	jr nz, .asm_c637
	bit 5, d
	jr z, .asm_c637
	ld a, $f0
	ld [hli], a
	res 5, d
.asm_c637
	ld a, $f6
	add c
	ld [hl], a
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	inc e
	dec e
	ret nz
	inc hl
	ld [hl], $f2
	ret

PrintNumber_PrintLeadingZero: ; c644
; prints a leading zero unless they are turned off in the flags
	bit 7, d ; print leading zeroes?
	ret z
	ld [hl], "0"
	ret

PrintNumber_AdvancePointer: ; c64a
; increments the pointer unless leading zeroes are not being printed,
; the number is left-aligned, and no nonzero digits have been printed yet
	bit 7, d ; print leading zeroes?
	jr nz, .incrementPointer
	bit 6, d ; left alignment or right alignment?
	jr z, .incrementPointer
	ld a, [hPastLeadingZeroes]
	and a
	ret z
.incrementPointer
	inc hl
	ret
; 0xc658

Functionc658: ; c658
	xor a
	ld [CurPartyMon], a
	ld hl, PartySpecies
.asm_c65f
	ld a, [hli]
	cp $ff
	jr z, .asm_c676
	cp $fd
	jr z, .asm_c66d
	push hl
	call Functionc677
	pop hl

.asm_c66d
	ld a, [CurPartyMon]
	inc a
	ld [CurPartyMon], a
	jr .asm_c65f

.asm_c676
	ret
; c677

Functionc677: ; c677
	ld a, $0
	call GetPartyParamLocation
	ld d, h
	ld e, l
	ld hl, $0020
	add hl, de
	xor a
	ld [hli], a
	ld [hl], a
	ld hl, $0024
	add hl, de
	ld b, h
	ld c, l
	dec bc
	dec bc
	ld a, [hli]
	ld [bc], a
	inc bc
	ld a, [hl]
	ld [bc], a
	callba Functionf8b9
	ret
; c699

Functionc699: ; c699
	ld a, b
	or c
	jr z, .asm_c6dd
	push hl
	xor a
	ld [hMultiplicand], a
	ld a, b
	ld [$ffb5], a
	ld a, c
	ld [$ffb6], a
	ld a, $30
	ld [hMultiplier], a
	call Multiply
	ld a, d
	and a
	jr z, .asm_c6cc
	srl d
	rr e
	srl d
	rr e
	ld a, [$ffb5]
	ld b, a
	ld a, [$ffb6]
	srl b
	rr a
	srl b
	rr a
	ld [$ffb6], a
	ld a, b
	ld [$ffb5], a

.asm_c6cc
	ld a, e
	ld [hMultiplier], a
	ld b, $4
	call Divide
	ld a, [$ffb6]
	ld e, a
	pop hl
	and a
	ret nz
	ld e, $1
	ret

.asm_c6dd
	ld e, $0
	ret
; c6e0

Functionc6e0: ; c6e0
	call WaitBGMap
	call Functiond627
	call WaitBGMap
	ret
; c6ea


Functionc6ea: ; c6ea
	xor a
	ld hl, MagikarpLength
	ld bc, $0007
	call ByteFill
	ret
; c6f5

Functionc6f5: ; c6f5
	ld a, [MagikarpLength]
	rst JumpTable
	ld [MagikarpLength], a
	bit 7, a
	jr nz, .asm_c702
	and a
	ret

.asm_c702
	and $7f
	scf
	ret
; c706


GetPartyNick: ; c706
; write CurPartyMon nickname to StringBuffer1-3
	ld hl, PartyMon1Nickname
	ld a, BOXMON
	ld [MonType], a
	ld a, [CurPartyMon]
	call GetNick
	call CopyName1
; copy text from StringBuffer2 to StringBuffer3
	ld de, StringBuffer2
	ld hl, StringBuffer3
	call CopyName2
	ret
; c721

CheckEngineFlag: ; c721
; Check engine flag de
; Return carry if flag is not set
	ld b, CHECK_FLAG
	callba EngineFlagAction
	ld a, c
	and a
	jr nz, .isset
	scf
	ret
.isset
	xor a
	ret
; c731

CheckBadge: ; c731
; Check engine flag a (ENGINE_ZEPHYRBADGE thru ENGINE_EARTHBADGE)
; Display "Badge required" text and return carry if the badge is not owned
	call CheckEngineFlag
	ret nc
	ld hl, BadgeRequiredText
	call Function1d67 ; push text to queue
	scf
	ret
; c73d

BadgeRequiredText: ; c73d
	; Sorry! A new BADGE
	; is required.
	TX_FAR _BadgeRequiredText
	db "@"
; c742

CheckPartyMove: ; c742
; checks if a pokemon in your party has a move
; e = partymon being checked

; input: d = move id
	ld e, $00 ; mon #
	xor a
	ld [CurPartyMon], a
.checkmon
; check for valid species
	ld c, e
	ld b, $00
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	and a ; no id
	jr z, .quit
	cp a, $ff ; terminator
	jr z, .quit
	cp a, EGG
	jr z, .nextmon
; navigate to appropriate move table
	ld bc, PartyMon2 - PartyMon1
	ld hl, PartyMon1Moves
	ld a, e
	call AddNTimes
	ld b, $04 ; number of moves
.checkmove
	ld a, [hli]
	cp d ; move id
	jr z, .end
	dec b ; how many moves left?
	jr nz, .checkmove
.nextmon
	inc e ; mon #
	jr .checkmon
.end
	ld a, e
	ld [CurPartyMon], a ; which mon has the move
	xor a
	ret
.quit
	scf
	ret
; c779

Functionc779: ; c779
	ld hl, UnknownText_0xc780
	call Function1d67
	ret
; c780

UnknownText_0xc780: ; 0xc780
	text_jump UnknownText_0x1c05c8, BANK(UnknownText_0x1c05c8)
	db "@"
; 0xc785

Functionc785: ; c785
	call Functionc6ea
.asm_c788
	ld hl, Jumptable_c796
	call Functionc6f5
	jr nc, .asm_c788
	and $7f
	ld [$d0ec], a
	ret
; c796


; no known jump sources
Jumptable_c796: ; c796 (3:4796)
	dw Functionc79c
	dw Functionc7b2
	dw Functionc7bb


; no known jump sources
Functionc79c: ; c79c (3:479c)
	ld de, $1c
	call CheckBadge
	jr c, .asm_c7ac
	call Functionc7ce
	jr c, .asm_c7af
	ld a, $1
	ret
.asm_c7ac
	ld a, $80
	ret
.asm_c7af
	ld a, $2
	ret

; no known jump sources
Functionc7b2: ; c7b2 (3:47b2)
	ld hl, Unknown_c7fe
	call Function31cd
	ld a, $81
	ret

; no known jump sources
Functionc7bb: ; c7bb (3:47bb)
	ld hl, Unknown_c7c9
	call Function1d67
	ld a, $80
	ret

UnknownText_0xc7c4: ; 0xc7c4
	text_jump UnknownText_0x1c05dd, BANK(UnknownText_0x1c05dd)
	db $50
; 0xc7c9

Unknown_c7c9: ; c7c9
INCBIN "baserom.gbc",$c7c9,$c7ce - $c7c9

Functionc7ce: ; c7ce
	call GetFacingTileCoord
	ld c, a
	push de
	callba Function149f5
	pop de
	jr nc, .asm_c7fc
	call Function2a66
	ld c, [hl]
	push hl
	ld hl, $4862
	call Functionc840
	pop hl
	jr nc, .asm_c7fc
	ld a, l
	ld [$d1ec], a
	ld a, h
	ld [$d1ed], a
	ld a, b
	ld [$d1ee], a
	ld a, c
	ld [$d1ef], a
	xor a
	ret

.asm_c7fc
	scf
	ret
; c7fe

Unknown_c7fe: ; c7fe
INCBIN "baserom.gbc",$c7fe,$c802 - $c7fe

UnknownScript_0xc802: ; 0xc802
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0xc7c4
	reloadmappart
	3callasm BANK(Functionc810), Functionc810
	loadmovesprites
	end
; 0xc810

Functionc810: ; c810
	ld hl, $d1ec
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d1ee]
	ld [hl], a
	xor a
	ld [hBGMapMode], a
	call Function2173
	call Function1ad2
	call DelayFrame
	ld a, [$d1ef]
	ld e, a
	callba Function8c940
	call Function2879
	call Function2914
	call Function1ad2
	call DelayFrame
	call Functione51
	ret
; c840

Functionc840: ; c840
	push bc
	ld a, [$d199]
	ld de, 3
	call IsInArray
	pop bc
	jr nc, .asm_c860
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, 3
	ld a, c
	call IsInArray
	jr nc, .asm_c860
	inc hl
	ld b, [hl]
	inc hl
	ld c, [hl]
	scf
	ret

.asm_c860
	xor a
	ret
; c862

INCBIN "baserom.gbc",$c862,$c8ac - $c862

Functionc8ac: ; c8ac
	call Functionc8b5
	and $7f
	ld [$d0ec], a
	ret
; c8b5

Functionc8b5: ; c8b5
; Flash
	ld de, ENGINE_ZEPHYRBADGE
	callba CheckBadge
	jr c, .asm_c8dd
	push hl
	callba Function8ae30
	pop hl
	jr c, .asm_c8d1
	ld a, [$d847]
	cp $ff
	jr nz, .asm_c8d7

.asm_c8d1
	call Functionc8e0
	ld a, $81
	ret

.asm_c8d7
	call Functionc779
	ld a, $80
	ret

.asm_c8dd
	ld a, $80
	ret
; c8e0

Functionc8e0: ; c8e0
	ld hl, UnknownScript_0xc8e6
	jp Function31cd
; c8e6

UnknownScript_0xc8e6: ; 0xc8e6
	reloadmappart
	special $0035
	2writetext UnknownText_0xc8f3
	3callasm $23, $47e1
	loadmovesprites
	end
; 0xc8f3

UnknownText_0xc8f3: ; 0xc8f3
	text_jump UnknownText_0x1c0609, BANK(UnknownText_0x1c0609)
	start_asm
; 0xc8f8

Functionc8f8: ; c8f8
	call WaitSFX
	ld de, SFX_FLASH
	call PlaySFX
	call WaitSFX
	ld hl, UnknownText_0xc908
	ret
; c908

UnknownText_0xc908: ; 0xc908
	db "@"
; 0xc909

Functionc909: ; c909
	call Functionc6ea
.asm_c90c
	ld hl, $491a
	call Functionc6f5
	jr nc, .asm_c90c
	and $7f
	ld [$d0ec], a
	ret
; c91a


; no known jump sources
Jumptable_c91a: ; c91a (3:491a)
	dw Functionc922
	dw Functionc95f
	dw Functionc971
	dw Functionc97a


; no known jump sources
Functionc922: ; c922 (3:4922)
	ld de, $1e
	call CheckBadge
	jr c, .asm_c956
	ld hl, BikeFlags ; $dbf5
	bit 1, [hl]
	jr nz, .asm_c95c
	ld a, [PlayerState] ; $d95d
	cp $4
	jr z, .asm_c959
	cp $8
	jr z, .asm_c959
	call GetFacingTileCoord
	call GetTileCollision
	cp $1
	jr nz, .asm_c95c
	call CheckDirection
	jr c, .asm_c95c
	callba CheckFacingObject
	jr c, .asm_c95c
	ld a, $1
	ret
.asm_c956
	ld a, $80
	ret
.asm_c959
	ld a, $3
	ret
.asm_c95c
	ld a, $2
	ret

; no known jump sources
Functionc95f: ; c95f (3:495f)
	call GetSurfType
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	call GetPartyNick
	ld hl, $4983
	call Function31cd
	ld a, $81
	ret

; no known jump sources
Functionc971: ; c971 (3:4971)
	ld hl, $49ae
	call Function1d67
	ld a, $80
	ret

; no known jump sources
Functionc97a: ; c97a (3:497a)
	ld hl, $49b3
	call Function1d67
	ld a, $80
	ret
; c983 (3:4983)

INCBIN "baserom.gbc",$c983,$c986 - $c983


UsedSurfScript: ; c986
	2writetext UsedSurfText ; "used SURF!"
	closetext
	loadmovesprites

	3callasm BANK(Functionc9a2), Functionc9a2 ; empty function

	copybytetovar Buffer2
	writevarcode VAR_MOVEMENT

	special SPECIAL_UPDATESPRITETILES
	special SPECIAL_BIKESURFMUSIC
; step into the water
	special SPECIAL_LOADFACESTEP ; (slow_step_x, step_end)
	applymovement 0, MovementBuffer ; PLAYER, MovementBuffer
	end
; c9a2

Functionc9a2: ; c9a2
	callba Function1060bb ; empty
	ret
; c9a9

UsedSurfText: ; c9a9
	TX_FAR _UsedSurfText ; [MONSTER] used
	db "@"	       ; SURF!
; c9ae

CantSurfText: ; c9ae
	TX_FAR _CantSurfText ; You can't SURF
	db "@"	       ; here.
; c9b3

AlreadySurfingText: ; c9b3
	TX_FAR _AlreadySurfingText ; You're already
	db "@"		     ; SURFING.
; c9b8


GetSurfType: ; c9b8
; Surfing on Pikachu uses an alternate sprite.
; This is done by using a separate movement type.

	ld a, [CurPartyMon]
	ld e, a
	ld d, 0
	ld hl, PartySpecies
	add hl, de

	ld a, [hl]
	cp PIKACHU
	ld a, PLAYER_SURF_PIKA
	ret z
	ld a, PLAYER_SURF
	ret
; c9cb


CheckDirection: ; c9cb
; Return carry if a tile permission prevents you
; from moving in the direction you're facing.

; Get player direction
	ld a, [PlayerDirection]
	and a, %00001100 ; bits 2 and 3 contain direction
	rrca
	rrca
	ld e, a
	ld d, 0
	ld hl, .Directions
	add hl, de

; Can you walk in this direction?
	ld a, [TilePermissions]
	and [hl]
	jr nz, .quit
	xor a
	ret

.quit
	scf
	ret

.Directions
	db FACE_DOWN
	db FACE_UP
	db FACE_LEFT
	db FACE_RIGHT
; c9e7


TrySurfOW: ; c9e7
; Checking a tile in the overworld.
; Return carry if surfing is allowed.

; Don't ask to surf if already surfing.
	ld a, [PlayerState]
	cp PLAYER_SURF_PIKA
	jr z, .quit
	cp PLAYER_SURF
	jr z, .quit

; Must be facing water.
	ld a, [EngineBuffer1]
	call GetTileCollision
	cp 1 ; surfable
	jr nz, .quit

; Check tile permissions.
	call CheckDirection
	jr c, .quit

	ld de, ENGINE_FOGBADGE
	call CheckEngineFlag
	jr c, .quit

	ld d, SURF
	call CheckPartyMove
	jr c, .quit

	ld hl, BikeFlags
	bit 1, [hl] ; always on bike (can't surf)
	jr nz, .quit

	call GetSurfType
	ld [MovementType], a
	call GetPartyNick

	ld a, BANK(AskSurfScript)
	ld hl, AskSurfScript
	call CallScript

	scf
	ret

.quit
	xor a
	ret
; ca2c


AskSurfScript: ; ca2c
	loadfont
	2writetext AskSurfText
	yesorno
	iftrue UsedSurfScript
	loadmovesprites
	end
; ca36

AskSurfText: ; ca36
	TX_FAR _AskSurfText ; The water is calm.
	db "@"              ; Want to SURF?
; ca3b


Functionca3b: ; ca3b
	call Functionc6ea
.asm_ca3e
	ld hl, .data_ca4c
	call Functionc6f5
	jr nc, .asm_ca3e
	and $7f
	ld [$d0ec], a
	ret
; ca4c

.data_ca4c
 	dw Functionca52
 	dw Functionca94
 	dw Functionca9d
; ca52


Functionca52: ; ca52
; Fly
	ld de, ENGINE_STORMBADGE
	call CheckBadge
	jr c, .asm_ca85
	call GetMapPermission
	call CheckOutdoorMap
	jr z, .asm_ca64
	jr .indoors

.asm_ca64
	xor a
	ld [$ffde], a
	call Function1d6e
	call ClearSprites
	callba Function91af3
	ld a, e
	cp $ff
	jr z, .asm_ca8b
	cp $1c
	jr nc, .asm_ca8b
	ld [$d001], a
	call Function1c17
	ld a, $1
	ret

.asm_ca85
	ld a, $82
	ret

.indoors
	ld a, $2
	ret

.asm_ca8b
	call Function1c17
	call WaitBGMap
	ld a, $80
	ret
; ca94

Functionca94: ; ca94
	ld hl, UnknownScript_0xcaa3
	call Function31cd
	ld a, $81
	ret
; ca9d

Functionca9d: ; ca9d
	call Functionc779
	ld a, $82
	ret
; caa3

UnknownScript_0xcaa3: ; 0xcaa3
	reloadmappart
	3callasm BANK(HideSprites), HideSprites
	special $0035
	3callasm $23, $4aed
	3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1
	special $0000
	3callasm $05, $54f1
	writecode $8, $0
	newloadmap $fc
	3callasm $23, $4b33
	special $003b
	3callasm BANK(Functioncacb), Functioncacb
	end
; 0xcacb

Functioncacb: ; cacb
	callba Function561d
	call DelayFrame
	call Functione4a
	callba Function106594
	ret
; cade

Functioncade: ; cade
	call Functioncae7
	and $7f
	ld [$d0ec], a
	ret
; cae7

Functioncae7: ; cae7
; Waterfall
	ld de, ENGINE_RISINGBADGE
	callba CheckBadge
	ld a, $80
	ret c
	call Functioncb07
	jr c, .asm_cb01
	ld hl, UnknownScript_0xcb1c
	call Function31cd
	ld a, $81
	ret

.asm_cb01
	call Functionc779
	ld a, $80
	ret
; cb07

Functioncb07: ; cb07
	ld a, [PlayerDirection]
	and $c
	cp FACE_UP
	jr nz, .asm_cb1a
	ld a, [TileUp]
	call CheckWaterfallTile
	jr nz, .asm_cb1a
	xor a
	ret

.asm_cb1a
	scf
	ret
; cb1c

UnknownScript_0xcb1c: ; 0xcb1c
	reloadmappart
	special $0035

UnknownScript_0xcb20: ; 0xcb20
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0xcb51
	closetext
	loadmovesprites
	playsound SFX_BUBBLEBEAM
.loop
	applymovement $0, WaterfallStep
	3callasm BANK(Functioncb38), Functioncb38
	iffalse .loop
	end
; 0xcb38

Functioncb38: ; cb38
	xor a
	ld [ScriptVar], a
	ld a, [StandingTile]
	call CheckWaterfallTile
	ret z
	callba Function1060c1
	ld a, $1
	ld [ScriptVar], a
	ret
; cb4f

WaterfallStep: ; cb4f
	turn_waterfall_up
	step_end
; cb51

UnknownText_0xcb51: ; 0xcb51
	text_jump UnknownText_0x1c068e, BANK(UnknownText_0x1c068e)
	db "@"
; 0xcb56

TryWaterfallOW: ; cb56
	ld d, WATERFALL
	call CheckPartyMove
	jr c, .asm_cb74
	ld de, ENGINE_RISINGBADGE
	call CheckEngineFlag
	jr c, .asm_cb74
	call Functioncb07
	jr c, .asm_cb74
	ld a, BANK(UnknownScript_0xcb86)
	ld hl, UnknownScript_0xcb86
	call CallScript
	scf
	ret

.asm_cb74
	ld a, BANK(UnknownScript_0xcb7e)
	ld hl, UnknownScript_0xcb7e
	call CallScript
	scf
	ret
; cb7e

UnknownScript_0xcb7e: ; 0xcb7e
	jumptext UnknownText_0xcb81
; 0xcb81

UnknownText_0xcb81: ; 0xcb81
	text_jump UnknownText_0x1c06a3, BANK(UnknownText_0x1c06a3)
	db "@"
; 0xcb86

UnknownScript_0xcb86: ; 0xcb86
	loadfont
	2writetext UnknownText_0xcb90
	yesorno
	iftrue UnknownScript_0xcb20
	loadmovesprites
	end
; 0xcb90

UnknownText_0xcb90: ; 0xcb90
	text_jump UnknownText_0x1c06bf, BANK(UnknownText_0x1c06bf)
	db "@"
; 0xcb95


Functioncb95: ; cb95
	call Functionc6ea
	ld a, $1
	jr asm_cba1

Functioncb9c: ; cb9c
	call Functionc6ea
	ld a, $2

asm_cba1
	ld [Buffer2], a
.asm_cba4
	ld hl, Tablecbb2
	call Functionc6f5
	jr nc, .asm_cba4
	and $7f
	ld [$d0ec], a
	ret
; cbb2

Tablecbb2: ; cbb2
	dw Functioncbb8
	dw Functioncbd8
	dw Functioncc06
; cbb8

Functioncbb8: ; cbb8
	call GetMapPermission
	cp $4
	jr z, .asm_cbc6
	cp $7
	jr z, .asm_cbc6
.asm_cbc3
	ld a, $2
	ret

.asm_cbc6
	ld hl, $dca9
	ld a, [hli]
	and a
	jr z, .asm_cbc3
	ld a, [hli]
	and a
	jr z, .asm_cbc3
	ld a, [hl]
	and a
	jr z, .asm_cbc3
	ld a, $1
	ret
; cbd8

Functioncbd8: ; cbd8
	ld hl, $dca9
	ld de, $d146
	ld bc, $0003
	call CopyBytes
	call GetPartyNick
	ld a, [Buffer2]
	cp $2
	jr nz, .asm_cbf7
	ld hl, UnknownScript_0xcc35
	call Function31cd
	ld a, $81
	ret

.asm_cbf7
	callba Function8ae4e
	ld hl, UnknownScript_0xcc2b
	call Function31cd
	ld a, $81
	ret
; cc06

Functioncc06: ; cc06
	ld a, [Buffer2]
	cp $2
	jr nz, .asm_cc19
	ld hl, UnknownText_0xcc26
	call Function1d4f
	call Functiona80
	call Function1c17

.asm_cc19
	ld a, $80
	ret
; cc1c

UnknownText_0xcc1c: ; 0xcc1c
	; used DIG!
	text_jump UnknownText_0x1c06de, BANK(UnknownText_0x1c06de)
	db "@"
; 0xcc21

UnknownText_0xcc21: ; 0xcc21
	; used an ESCAPE ROPE.
	text_jump UnknownText_0x1c06ed, BANK(UnknownText_0x1c06ed)
	db "@"
; 0xcc26

UnknownText_0xcc26: ; 0xcc26
	; Can't use that here.
	text_jump UnknownText_0x1c0705, BANK(UnknownText_0x1c0705)
	db "@"
; 0xcc2b

UnknownScript_0xcc2b: ; 0xcc2b
	reloadmappart
	special $0035
	2writetext UnknownText_0xcc21
	2jump UnknownScript_0xcc3c
; 0xcc35

UnknownScript_0xcc35: ; 0xcc35
	reloadmappart
	special $0035
	2writetext UnknownText_0xcc1c

UnknownScript_0xcc3c: ; 0xcc3c
	closetext
	loadmovesprites
	playsound SFX_WARP_TO
	applymovement $0, MovementData_0xcc59
	3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1
	special $0000
	writecode $8, $0
	newloadmap $f5
	playsound SFX_WARP_FROM
	applymovement $0, MovementData_0xcc5d
	end
; 0xcc59

MovementData_0xcc59: ; 0xcc59
	step_wait5
	turn_away_down
	hide_person
	step_end
; 0xcc5d

MovementData_0xcc5d: ; 0xcc5d
	db $3c, $58
	turn_away_down
	step_end
; 0xcc61

Functioncc61: ; cc61
	call Functionc6ea
.asm_cc64
	ld hl, Tablecc72
	call Functionc6f5
	jr nc, .asm_cc64
	and $7f
	ld [$d0ec], a
	ret
; cc72

Tablecc72: ; cc72
	dw Functioncc78
	dw Functioncc9c
	dw Functioncca8
; cc78

Functioncc78: ; cc78
	call GetMapPermission
	call CheckOutdoorMap
	jr z, .asm_cc82
	jr .asm_cc99

.asm_cc82
	ld a, [$dcb2]
	ld d, a
	ld a, [$dcb3]
	ld e, a
	callba Function15344
	jr nc, .asm_cc99
	ld a, c
	ld [$d001], a
	ld a, $1
	ret

.asm_cc99
	ld a, $2
	ret
; cc9c

Functioncc9c: ; cc9c
	call GetPartyNick
	ld hl, $4cbb
	call Function31cd
	ld a, $81
	ret
; cca8

Functioncca8: ; cca8
	ld hl, $4cb6
	call Function1d67
	ld a, $80
	ret
; ccb1

INCBIN "baserom.gbc",$ccb1,$cce5 - $ccb1

Functioncce5: ; cce5
	call Functionccee
	and $7f
	ld [$d0ec], a
	ret
; ccee

Functionccee: ; ccee
; Strength
	ld de, ENGINE_PLAINBADGE
	call CheckBadge
	jr c, Functioncd06
	jr Functioncd09
; ccf8

Functionccf8: ; ccf8
	ld hl, UnknownText_0xcd01
	call Function1d67
	ld a, $80
	ret
; cd01

UnknownText_0xcd01: ; 0xcd01
	text_jump UnknownText_0x1c0751, BANK(UnknownText_0x1c0751)
	db "@"
; 0xcd06

Functioncd06: ; cd06
	ld a, $80
	ret
; cd09

Functioncd09: ; cd09
	ld hl, UnknownScript_0xcd29
	call Function31cd
	ld a, $81
	ret
; cd12

Functioncd12: ; cd12
	ld hl, BikeFlags
	set 0, [hl]
	ld a, [CurPartyMon]
	ld e, a
	ld d, 0
	; fallthrough
; cd1d

Functioncd1d: ; cd1d
	ld hl, PartySpecies
	add hl, de
	ld a, [hl]
	ld [$d1ef], a
	call GetPartyNick
	ret
; cd29

UnknownScript_0xcd29: ; 0xcd29
	reloadmappart
	special $0035

UnknownScript_0xcd2d: ; 0xcd2d
	3callasm BANK(Functioncd12), Functioncd12
	2writetext UnknownText_0xcd41
	copybytetovar $d1ef
	cry $0000
	pause 3
	2writetext UnknownText_0xcd46
	loadmovesprites
	end
; 0xcd41

UnknownText_0xcd41: ; 0xcd41
	text_jump UnknownText_0x1c0774, BANK(UnknownText_0x1c0774)
	db $50
; 0xcd46

UnknownText_0xcd46: ; 0xcd46
	text_jump UnknownText_0x1c0788, BANK(UnknownText_0x1c0788)
	db $50
; 0xcd4b

UnknownScript_0xcd4b: ; 0xcd4b
	3callasm $03, $4d78
	iffalse UnknownScript_0xcd5f
	if_equal $1, UnknownScript_0xcd59
	2jump UnknownScript_0xcd5c
; 0xcd59

UnknownScript_0xcd59: ; 0xcd59
	jumptext UnknownText_0xcd73
; 0xcd5c

UnknownScript_0xcd5c: ; 0xcd5c
	jumptext UnknownText_0xcd6e
; 0xcd5f

UnknownScript_0xcd5f: ; 0xcd5f
	loadfont
	2writetext UnknownText_0xcd69
	yesorno
	iftrue UnknownScript_0xcd2d
	loadmovesprites
	end
; 0xcd69

UnknownText_0xcd69: ; 0xcd69
	; A #MON may be able to move this. Want to use STRENGTH?
	text_jump UnknownText_0x1c07a0, BANK(UnknownText_0x1c07a0)
	db "@"
; 0xcd6e

UnknownText_0xcd6e: ; 0xcd6e
	; Boulders may now be moved!
	text_jump UnknownText_0x1c07d8, BANK(UnknownText_0x1c07d8)
	db "@"
; 0xcd73

UnknownText_0xcd73: ; 0xcd73
	; A #MON may be able to move this.
	text_jump UnknownText_0x1c07f4, BANK(UnknownText_0x1c07f4)
	db "@"
; 0xcd78

	ld d, $46
	call CheckPartyMove
	jr c, .asm_cd92
	ld de, $1d
	call CheckEngineFlag
	jr c, .asm_cd92
	ld hl, BikeFlags ; $dbf5
	bit 0, [hl]
	jr z, .asm_cd96
	ld a, $2
	jr .asm_cd99
.asm_cd92
	ld a, $1
	jr .asm_cd99
.asm_cd96
	xor a
	jr .asm_cd99
.asm_cd99
	ld [ScriptVar], a ; $c2dd
	ret

Functioncd9d: ; cd9d
	call Functionc6ea
.asm_cda0
	ld hl, $4dae
	call Functionc6f5
	jr nc, .asm_cda0
	and $7f
	ld [$d0ec], a
	ret
; cdae

INCBIN "baserom.gbc",$cdae,$cdd9 - $cdae

UnknownText_0xcdd9: ; 0xcdd9
	text_jump UnknownText_0x1c0816, BANK(UnknownText_0x1c0816)
	db "@"
; 0xcdde

Functioncdde: ; cdde
	call GetFacingTileCoord
	ld c, a
	push de
	call CheckWhirlpoolTile
	pop de
	jr c, .asm_ce09
	call Function2a66
	ld c, [hl]
	push hl
	ld hl, $48a4
	call Functionc840
	pop hl
	jr nc, .asm_ce09
	ld a, l
	ld [$d1ec], a
	ld a, h
	ld [$d1ed], a
	ld a, b
	ld [$d1ee], a
	ld a, c
	ld [$d1ef], a
	xor a
	ret

.asm_ce09
	scf
	ret
; ce0b

INCBIN "baserom.gbc",$ce0b,$ce0f - $ce0b

UnknownScript_0xce0f: ; 0xce0f
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0xcdd9
	reloadmappart
	3callasm BANK(Functionce1d), Functionce1d
	loadmovesprites
	end
; 0xce1d

Functionce1d: ; ce1d
	ld hl, $d1ec
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d1ee]
	ld [hl], a
	xor a
	ld [hBGMapMode], a
	call Function2173
	ld a, [$d1ef]
	ld e, a
	callba Function8c7d4
	call Function2879
	call Function2914
	ret
; ce3e

TryWhirlpoolOW: ; ce3e
	ld d, WHIRLPOOL
	call CheckPartyMove
	jr c, .asm_ce5c
	ld de, ENGINE_GLACIERBADGE
	call CheckEngineFlag
	jr c, .asm_ce5c
	call Functioncdde
	jr c, .asm_ce5c
	ld a, BANK(UnknownScript_0xce6e)
	ld hl, UnknownScript_0xce6e
	call CallScript
	scf
	ret

.asm_ce5c
	ld a, BANK(UnknownScript_0xce66)
	ld hl, UnknownScript_0xce66
	call CallScript
	scf
	ret
; ce66

UnknownScript_0xce66: ; 0xce66
	jumptext UnknownText_0xce69
; 0xce69

UnknownText_0xce69: ; 0xce69
	text_jump UnknownText_0x1c082b, BANK(UnknownText_0x1c082b)
	db "@"
; 0xce6e

UnknownScript_0xce6e: ; 0xce6e
	loadfont
	2writetext UnknownText_0xce78
	yesorno
	iftrue UnknownScript_0xce0f
	loadmovesprites
	end
; 0xce78

UnknownText_0xce78: ; 0xce78
	text_jump UnknownText_0x1c0864, BANK(UnknownText_0x1c0864)
	db "@"
; 0xce7d

Functionce7d: ; ce7d
	call Functionce86
	and $7f
	ld [$d0ec], a
	ret
; ce86

Functionce86: ; ce86
	call GetFacingTileCoord
	call CheckHeadbuttTreeTile
	jr nz, .asm_ce97
	ld hl, UnknownScript_0xcea7
	call Function31cd
	ld a, $81
	ret

.asm_ce97
	call Functionc779
	ld a, $80
	ret
; ce9d

UnknownText_0xce9d: ; 0xce9d
	text_jump UnknownText_0x1c0897, BANK(UnknownText_0x1c0897)
	db $50
; 0xcea2

UnknownText_0xcea2: ; 0xcea2
	text_jump UnknownText_0x1c08ac, BANK(UnknownText_0x1c08ac)
	db $50
; 0xcea7

UnknownScript_0xcea7: ; 0xcea7
	reloadmappart
	special $0035
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0xce9d
	reloadmappart
	3callasm $23, $480a
	3callasm $2e, $41ea
	iffalse UnknownScript_0xcec3
	loadmovesprites
	battlecheck
	startbattle
	returnafterbattle
	end
; 0xcec3

UnknownScript_0xcec3: ; 0xcec3
	2writetext UnknownText_0xcea2
	closetext
	loadmovesprites
	end
; 0xcec9

TryHeadbuttOW: ; cec9
	ld d, $1d
	call CheckPartyMove
	jr c, .asm_ceda
	ld a, $3
	ld hl, $4edc
	call CallScript
	scf
	ret

.asm_ceda
	xor a
	ret
; cedc

INCBIN "baserom.gbc",$cedc,$ceeb - $cedc

Functionceeb: ; ceeb
	call Functioncef4
	and $7f
	ld [$d0ec], a
	ret
; cef4

Functioncef4: ; cef4
	call Functioncf0d
	jr c, .asm_cf07
	ld a, d
	cp $18
	jr nz, .asm_cf07
	ld hl, UnknownScript_0xcf2e
	call Function31cd
	ld a, $81
	ret

.asm_cf07
	call Functionc779
	ld a, $80
	ret
; cf0d

Functioncf0d: ; cf0d
	callba CheckFacingObject
	jr nc, .asm_cf2c
	ld a, [hConnectedMapWidth]
	call Function1ae5
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	ld [$ffe0], a
	call GetMapObject
	ld hl, $0004
	add hl, bc
	ld a, [hl]
	ld d, a
	and a
	ret

.asm_cf2c
	scf
	ret
; cf2e

UnknownScript_0xcf2e: ; 0xcf2e
	reloadmappart
	special $0035

UnknownScript_0xcf32: ; cf32
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0xcf58
	loadmovesprites
	special $003b
	playsound SFX_STRENGTH
	earthquake 84
	applymovement2 MovementData_0xcf55
	disappear $fe
	3callasm $2e, $4219
	copybytetovar $d22e
	iffalse .done
	battlecheck
	startbattle
	returnafterbattle
.done
	end
; 0xcf55

MovementData_0xcf55: ; 0xcf55
	db $57, $0a
	step_end

UnknownText_0xcf58: ; 0xcf58
	text_jump UnknownText_0x1c08f0, BANK(UnknownText_0x1c08f0)
	db $50
; 0xcf5d

UnknownScript_0xcf5d: ; 0xcf5d
	3callasm $03, $4f7c
	if_equal $1, UnknownScript_0xcf6f
	loadfont
	2writetext UnknownText_0xcf77
	yesorno
	iftrue UnknownScript_0xcf32
	loadmovesprites
	end
; 0xcf6f

UnknownScript_0xcf6f: ; 0xcf6f
	jumptext UnknownText_0xcf72
; 0xcf72

UnknownText_0xcf72: ; 0xcf72
	; Maybe a #MON can break this.
	text_jump UnknownText_0x1c0906, BANK(UnknownText_0x1c0906)
	db "@"
; 0xcf77

UnknownText_0xcf77: ; 0xcf77
	; This rock looks breakable. Want to use ROCK SMASH?
	text_jump UnknownText_0x1c0924, BANK(UnknownText_0x1c0924)
	db "@"
; 0xcf7c

	ld d, $f9
	call CheckPartyMove
	jr nc, .asm_cf87
	ld a, $1
	jr .asm_cf8a
.asm_cf87
	xor a
	jr .asm_cf8a
.asm_cf8a
	ld [ScriptVar], a ; $c2dd
	ret


Functioncf8e: ; cf8e
	ld a, e
	push af
	call Functionc6ea
	pop af
	ld [Buffer2], a
.asm_cf97
	ld hl, $4fa5
	call Functionc6f5
	jr nc, .asm_cf97
	and $7f
	ld [$d0ec], a
	ret
; cfa5


INCBIN "baserom.gbc",$cfa5,$d0b3 - $cfa5


Functiond0b3: ; d0b3
	call Functiond0bc
	and $7f
	ld [$d0ec], a
	ret
; d0bc

Functiond0bc: ; d0bc
	call Functiond121
	jr c, .asm_d110
	ld a, [PlayerState]
	cp $0
	jr z, .asm_d0ce
	cp $1
	jr z, .asm_d0f7
	jr .asm_d110

.asm_d0ce
	ld hl, $513e
	ld de, $514e
	call Functiond119
	call Function31cd
	xor a
	ld [MusicFade], a
	ld de, $0000
	call PlayMusic
	call DelayFrame
	call MaxVolume
	ld de, $0013
	ld a, e
	ld [CurMusic], a
	call PlayMusic
	ld a, $1
	ret

.asm_d0f7
	ld hl, BikeFlags
	bit 1, [hl]
	jr nz, .asm_d10b
	ld hl, $5158
	ld de, $516b
	call Functiond119
	ld a, $3
	jr .asm_d113

.asm_d10b
	ld hl, $5171
	jr .asm_d113

.asm_d110
	ld a, $0
	ret

.asm_d113
	call Function31cd
	ld a, $1
	ret
; d119

Functiond119: ; d119
	ld a, [$d0ef]
	and a
	ret z
	ld h, d
	ld l, e
	ret
; d121

Functiond121: ; d121
	call GetMapPermission
	call CheckOutdoorMap
	jr z, .asm_d133
	cp $4
	jr z, .asm_d133
	cp $6
	jr z, .asm_d133
	jr .asm_d13c

.asm_d133
	call Function184a
	and $f
	jr nz, .asm_d13c
	xor a
	ret

.asm_d13c
	scf
	ret
; d13e

INCBIN "baserom.gbc",$d13e,$d186 - $d13e

TryCutOW: ; d186
	ld d, CUT
	call CheckPartyMove
	jr c, .asm_d19f
	ld de, ENGINE_HIVEBADGE
	call CheckEngineFlag
	jr c, .asm_d19f
	ld a, BANK(UnknownScript_0xd1a9)
	ld hl, UnknownScript_0xd1a9
	call CallScript
	scf
	ret

.asm_d19f
	ld a, BANK(UnknownScript_0xd1cd)
	ld hl, UnknownScript_0xd1cd
	call CallScript
	scf
	ret
; d1a9

UnknownScript_0xd1a9: ; 0xd1a9
	loadfont
	2writetext UnknownText_0xd1c8
	yesorno
	iffalse .script_d1b8
	3callasm BANK(Functiond1ba), Functiond1ba
	iftrue UnknownScript_0xc802
.script_d1b8
	loadmovesprites
	end
; 0xd1ba

Functiond1ba: ; d1ba
	xor a
	ld [ScriptVar], a
	call Functionc7ce
	ret c
	ld a, $1
	ld [ScriptVar], a
	ret
; d1c8

UnknownText_0xd1c8: ; 0xd1c8
	text_jump UnknownText_0x1c09dd, BANK(UnknownText_0x1c09dd)
	db "@"
; 0xd1cd

UnknownScript_0xd1cd: ; 0xd1cd
	jumptext UnknownText_0xd1d0
; 0xd1d0

UnknownText_0xd1d0: ; 0xd1d0
	text_jump UnknownText_0x1c0a05, BANK(UnknownText_0x1c0a05)
	db "@"
; 0xd1d5


_ReceiveItem: ; d1d5
	call Functiond27b
	jp nz, Functiond29c
	push hl
	call CheckItemPocket
	pop de
	ld a, [$d142]
	dec a
	ld hl, Tabled1e9
	rst JumpTable
	ret
; d1e9

Tabled1e9: ; d1e9
	dw Functiond1f1
	dw Functiond1f6
	dw Functiond1fb
	dw Functiond201
; d1f1

Functiond1f1: ; d1f1
	ld h, d
	ld l, e
	jp Functiond29c
; d1f6

Functiond1f6: ; d1f6
	ld h, d
	ld l, e
	jp Functiond35a
; d1fb

Functiond1fb: ; d1fb
	ld hl, NumBalls
	jp Functiond29c
; d201

Functiond201: ; d201
	ld h, d
	ld l, e
	ld a, [CurItem]
	ld c, a
	call GetTMHMNumber
	jp Functiond3c4
; d20d


_TossItem: ; d20d
	call Functiond27b
	jr nz, .asm_d241
	push hl
	call CheckItemPocket
	pop de
	ld a, [$d142]
	dec a
	ld hl, .data_d220
	rst JumpTable
	ret

.data_d220
	dw .Item
	dw .KeyItem
	dw .Ball
	dw .TMHM
; d228

.Ball ; d228
	ld hl, NumBalls
	jp Functiond2ff
; d22e

.TMHM ; d22e
	ld h, d
	ld l, e
	ld a, [CurItem]
	ld c, a
	call GetTMHMNumber
	jp Functiond3d8
; d23a

.KeyItem ; d23a
	ld h, d
	ld l, e
	jp Functiond374
; d23f

.Item ; d23f
	ld h, d
	ld l, e
; d241

.asm_d241
	jp Functiond2ff
; d244

_CheckItem: ; d244
	call Functiond27b
	jr nz, .asm_d278
	push hl
	call CheckItemPocket
	pop de
	ld a, [$d142]
	dec a
	ld hl, .data_d257
	rst JumpTable
	ret

.data_d257
	dw .Item
	dw .KeyItem
	dw .Ball
	dw .TMHM
; d25f

.Ball ; d25f
	ld hl, NumBalls
	jp Functiond349
; d265

.TMHM ; d265
	ld h, d
	ld l, e
	ld a, [CurItem]
	ld c, a
	call GetTMHMNumber
	jp Functiond3fb
; d271

.KeyItem ; d271
	ld h, d
	ld l, e
	jp Functiond3b1
; d276

.Item ; d276
	ld h, d
	ld l, e
; d278

.asm_d278
	jp Functiond349
; d27b

Functiond27b: ; d27b
	ld a, l
	cp TMsHMsEnd % $100
	ret nz
	ld a, h
	cp TMsHMsEnd / $100
	ret
; d283

Functiond283: ; d283
	ld c, 20
	ld a, e
	cp TMsHMsEnd % $100
	jr nz, .asm_d28e
	ld a, d
	cp TMsHMsEnd / $100
	ret z

.asm_d28e
	ld c, 50
	ld a, e
	cp BallsEnd % $100
	jr nz, .asm_d299
	ld a, d
	cp BallsEnd / $100
	ret z

.asm_d299
	ld c, $c
	ret
; d29c

Functiond29c: ; d29c
	ld d, h
	ld e, l
	inc hl
	ld a, [CurItem]
	ld c, a
	ld b, 0
.asm_d2a5
	ld a, [hli]
	cp $ff
	jr z, .asm_d2bd
	cp c
	jr nz, .asm_d2ba
	ld a, $63
	sub [hl]
	add b
	ld b, a
	ld a, [$d10c]
	cp b
	jr z, .asm_d2c6
	jr c, .asm_d2c6

.asm_d2ba
	inc hl
	jr .asm_d2a5

.asm_d2bd
	call Functiond283
	ld a, [de]
	cp c
	jr c, .asm_d2c6
	and a
	ret

.asm_d2c6
	ld h, d
	ld l, e
	ld a, [CurItem]
	ld c, a
	ld a, [$d10c]
	ld [$d10d], a
.asm_d2d2
	inc hl
	ld a, [hli]
	cp $ff
	jr z, .asm_d2ef
	cp c
	jr nz, .asm_d2d2
	ld a, [$d10d]
	add [hl]
	cp $64
	jr nc, .asm_d2e6
	ld [hl], a
	jr .asm_d2fd

.asm_d2e6
	ld [hl], $63
	sub $63
	ld [$d10d], a
	jr .asm_d2d2

.asm_d2ef
	dec hl
	ld a, [CurItem]
	ld [hli], a
	ld a, [$d10d]
	ld [hli], a
	ld [hl], $ff
	ld h, d
	ld l, e
	inc [hl]

.asm_d2fd
	scf
	ret
; d2ff

Functiond2ff: ; d2ff
	ld d, h
	ld e, l
	ld a, [hli]
	ld c, a
	ld a, [$d107]
	cp c
	jr nc, .asm_d318
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [CurItem]
	cp [hl]
	inc hl
	jr z, .asm_d327
	ld h, d
	ld l, e
	inc hl

.asm_d318
	ld a, [CurItem]
	ld b, a
.asm_d31c
	ld a, [hli]
	cp b
	jr z, .asm_d327
	cp $ff
	jr z, .asm_d347
	inc hl
	jr .asm_d31c

.asm_d327
	ld a, [$d10c]
	ld b, a
	ld a, [hl]
	sub b
	jr c, .asm_d347
	ld [hl], a
	ld [$d10d], a
	and a
	jr nz, .asm_d345
	dec hl
	ld b, h
	ld c, l
	inc hl
	inc hl
.asm_d33b
	ld a, [hli]
	ld [bc], a
	inc bc
	cp $ff
	jr nz, .asm_d33b
	ld h, d
	ld l, e
	dec [hl]

.asm_d345
	scf
	ret

.asm_d347
	and a
	ret
; d349

Functiond349: ; d349
	ld a, [CurItem]
	ld c, a
.asm_d34d
	inc hl
	ld a, [hli]
	cp $ff
	jr z, .asm_d358
	cp c
	jr nz, .asm_d34d
	scf
	ret

.asm_d358
	and a
	ret
; d35a

Functiond35a: ; d35a
	ld hl, NumKeyItems
	ld a, [hli]
	cp $19
	jr nc, .asm_d372
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [CurItem]
	ld [hli], a
	ld [hl], $ff
	ld hl, NumKeyItems
	inc [hl]
	scf
	ret

.asm_d372
	and a
	ret
; d374

Functiond374: ; d374
	ld a, [$d107]
	ld e, a
	ld d, $0
	ld hl, NumKeyItems
	ld a, [hl]
	cp e
	jr nc, .asm_d387
	call Functiond396
	ret nc
	jr .asm_d38a

.asm_d387
	dec [hl]
	inc hl
	add hl, de

.asm_d38a
	ld d, h
	ld e, l
	inc hl
.asm_d38d
	ld a, [hli]
	ld [de], a
	inc de
	cp $ff
	jr nz, .asm_d38d
	scf
	ret
; d396

Functiond396: ; d396
	ld hl, NumKeyItems
	ld a, [CurItem]
	ld c, a
.asm_d39d
	inc hl
	ld a, [hl]
	cp c
	jr z, .asm_d3a8
	cp $ff
	jr nz, .asm_d39d
	xor a
	ret

.asm_d3a8
	ld a, [NumKeyItems]
	dec a
	ld [NumKeyItems], a
	scf
	ret
; d3b1

Functiond3b1: ; d3b1
	ld a, [CurItem]
	ld c, a
	ld hl, KeyItems
.asm_d3b8
	ld a, [hli]
	cp c
	jr z, .asm_d3c2
	cp $ff
	jr nz, .asm_d3b8
	and a
	ret

.asm_d3c2
	scf
	ret
; d3c4



Functiond3c4: ; d3c4
	dec c
	ld b, $0
	ld hl, TMsHMs
	add hl, bc
	ld a, [$d10c]
	add [hl]
	cp $64
	jr nc, .asm_d3d6
	ld [hl], a
	scf
	ret

.asm_d3d6
	and a
	ret
; d3d8

Functiond3d8: ; d3d8
	dec c
	ld b, $0
	ld hl, TMsHMs
	add hl, bc
	ld a, [$d10c]
	ld b, a
	ld a, [hl]
	sub b
	jr c, .asm_d3f9
	ld [hl], a
	ld [$d10d], a
	jr nz, .asm_d3f7
	ld a, [$d0e2]
	and a
	jr z, .asm_d3f7
	dec a
	ld [$d0e2], a

.asm_d3f7
	scf
	ret

.asm_d3f9
	and a
	ret
; d3fb

Functiond3fb: ; d3fb
	dec c
	ld b, $0
	ld hl, TMsHMs
	add hl, bc
	ld a, [hl]
	and a
	ret z
	scf
	ret
; d407



GetTMHMNumber: ; d407
; Return the number of a TM/HM by item id c.

	ld a, c

; Skip any dummy items.
	cp $c3 ; TM04-05
	jr c, .done
	cp $dc ; TM28-29
	jr c, .skip

	dec a
.skip
	dec a
.done
	sub TM_01
	inc a
	ld c, a
	ret
; d417


GetNumberedTMHM: ; d417
; Return the item id of a TM/HM by number c.

	ld a, c 

; Skip any gaps.
	cp 5
	jr c, .done
	cp 29
	jr c, .skip

	inc a
.skip
	inc a
.done
	add TM_01
	dec a
	ld c, a
	ret
; d427


_CheckTossableItem: ; d427
; Return 1 in $d142 and carry if CurItem can't be removed from the bag.
	ld a, 4
	call GetItemAttr
	bit 7, a
	jr nz, Function0xd47f
	and a
	ret
; d432

CheckSelectableItem: ; d432
; Return 1 in $d142 and carry if CurItem can't be selected.
	ld a, 4
	call GetItemAttr
	bit 6, a
	jr nz, Function0xd47f
	and a
	ret
; d43d

CheckItemPocket: ; d43d
; Return the pocket for CurItem in $d142.
	ld a, 5
	call GetItemAttr
	and $f
	ld [$d142], a
	ret
; d448

CheckItemContext: ; d448
; Return the context for CurItem in $d142.
	ld a, 6
	call GetItemAttr
	and $f
	ld [$d142], a
	ret
; d453

CheckItemMenu: ; d453
; Return the menu for CurItem in $d142.
	ld a, 6
	call GetItemAttr
	swap a
	and $f
	ld [$d142], a
	ret
; d460

GetItemAttr: ; d460
; Get attribute a of CurItem.

	push hl
	push bc

	ld hl, ItemAttributes
	ld c, a
	ld b, 0
	add hl, bc

	xor a
	ld [$d142], a

	ld a, [CurItem]
	dec a
	ld c, a
	ld a, 7
	call AddNTimes
	ld a, BANK(ItemAttributes)
	call GetFarByte

	pop bc
	pop hl
	ret
; d47f

Function0xd47f: ; d47f
	ld a, 1
	ld [$d142], a
	scf
	ret
; d486


GetItemPrice: ; d486
; Return the price of CurItem in de.
	push hl
	push bc
	ld a, $0
	call GetItemAttr
	ld e, a
	ld a, $1
	call GetItemAttr
	ld d, a
	pop bc
	pop hl
	ret
; d497


; no known jump sources
Functiond497: ; d497 (3:5497)
	ld a, [$d150]
	and a
	ret z
	bit 7, a
	jr nz, .asm_d4a9
	bit 6, a
	jr nz, .asm_d4b3
	bit 5, a
	jr nz, .asm_d4b8
	ret
.asm_d4a9
	ld a, $4
	ld [$d13f], a
	call Functiond536
	jr .asm_d4b8
.asm_d4b3
	call Functiond511
	jr .asm_d4b8
.asm_d4b8
	call Functiond4e5
	ld a, [$d14e]
	ld d, a
	ld a, [$d14f]
	ld e, a
	ld a, [$d14c]
	sub d
	ld [$d14c], a
	ld a, [$d14d]
	sub e
	ld [$d14d], a
	ret

; no known jump sources
Functiond4d2: ; d4d2 (3:54d2)
	ld a, [$d14e]
	ld d, a
	ld a, [$d14f]
	ld e, a
	ld a, [hSCX] ; $ff00+$cf
	add d
	ld [hSCX], a ; $ff00+$cf
	ld a, [hSCY] ; $ff00+$d0
	add e
	ld [hSCY], a ; $ff00+$d0
	ret

; known jump sources: d4b8 (3:54b8)
Functiond4e5: ; d4e5 (3:54e5)
	ld hl, $d13f
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ld a, [hl]
	ld hl, $54f2
	rst $28
	ret

; no known jump sources
Jumptable_d4f2: ; d4f2 (3:54f2)
	dw Function2914
	dw Function2879
	dw Functiond509
	dw Functiond510
	dw Functiond508
	dw Functiond508
	dw Functiond508
	dw Functiond508
	dw Functiond508
	dw Functiond508
	dw Functiond508


; no known jump sources
Functiond508: ; d508 (3:5508)
	ret

; no known jump sources
Functiond509: ; d509 (3:5509)
	callba Function10602e
	ret

; no known jump sources
Functiond510: ; d510 (3:5510)
	ret

; known jump sources: d4b3 (3:54b3)
Functiond511: ; d511 (3:5511)
	ld a, [$d151]
	and a
	jr nz, .asm_d51c
	ld hl, YCoord ; $dcb7
	inc [hl]
	ret
.asm_d51c
	cp $1
	jr nz, .asm_d525
	ld hl, YCoord ; $dcb7
	dec [hl]
	ret
.asm_d525
	cp $2
	jr nz, .asm_d52e
	ld hl, XCoord ; $dcb8
	dec [hl]
	ret
.asm_d52e
	cp $3
	ret nz
	ld hl, XCoord ; $dcb8
	inc [hl]
	ret

; known jump sources: d4ae (3:54ae)
Functiond536: ; d536 (3:5536)
	ld a, [$d151]
	and a
	jr z, .asm_d549
	cp $1
	jr z, .asm_d553
	cp $2
	jr z, .asm_d55d
	cp $3
	jr z, .asm_d567
	ret
.asm_d549
	call Functiond571
	call Function217a
	call Function2748
	ret
.asm_d553
	call Functiond5a2
	call Function217a
	call Function272a
	ret
.asm_d55d
	call Functiond5d5
	call Function217a
	call Function2771
	ret
.asm_d567
	call Functiond5fe
	call Function217a
	call Function278f
	ret

; known jump sources: d549 (3:5549)
Functiond571: ; d571 (3:5571)
	ld a, [$d152]
	add $40
	ld [$d152], a
	jr nc, .asm_d586
	ld a, [$d153]
	inc a
	and $3
	or $98
	ld [$d153], a
.asm_d586
	ld hl, $d196
	inc [hl]
	ld a, [hl]
	cp $2
	jr nz, .asm_d594
	ld [hl], $0
	call Functiond595
.asm_d594
	ret

; known jump sources: d591 (3:5591)
Functiond595: ; d595 (3:5595)
	ld hl, $d194
	ld a, [MapWidth]
	add $6
	add [hl]
	ld [hli], a
	ret nc
	inc [hl]
	ret

; known jump sources: d553 (3:5553)
Functiond5a2: ; d5a2 (3:55a2)
	ld a, [$d152]
	sub $40
	ld [$d152], a
	jr nc, .asm_d5b7
	ld a, [$d153]
	dec a
	and $3
	or $98
	ld [$d153], a
.asm_d5b7
	ld hl, $d196
	dec [hl]
	ld a, [hl]
	cp $ff
	jr nz, .asm_d5c5
	ld [hl], $1
	call Functiond5c6
.asm_d5c5
	ret

; known jump sources: d5c2 (3:55c2)
Functiond5c6: ; d5c6 (3:55c6)
	ld hl, $d194
	ld a, [MapWidth]
	add $6
	ld b, a
	ld a, [hl]
	sub b
	ld [hli], a
	ret nc
	dec [hl]
	ret

; known jump sources: d55d (3:555d)
Functiond5d5: ; d5d5 (3:55d5)
	ld a, [$d152]
	ld e, a
	and $e0
	ld d, a
	ld a, e
	sub $2
	and $1f
	or d
	ld [$d152], a
	ld hl, $d197
	dec [hl]
	ld a, [hl]
	cp $ff
	jr nz, .asm_d5f3
	ld [hl], $1
	call Functiond5f4
.asm_d5f3
	ret

; known jump sources: d5f0 (3:55f0)
Functiond5f4: ; d5f4 (3:55f4)
	ld hl, $d194
	ld a, [hl]
	sub $1
	ld [hli], a
	ret nc
	dec [hl]
	ret

; known jump sources: d567 (3:5567)
Functiond5fe: ; d5fe (3:55fe)
	ld a, [$d152]
	ld e, a
	and $e0
	ld d, a
	ld a, e
	add $2
	and $1f
	or d
	ld [$d152], a
	ld hl, $d197
	inc [hl]
	ld a, [hl]
	cp $2
	jr nz, .asm_d61c
	ld [hl], $0
	call Functiond61d
.asm_d61c
	ret

; known jump sources: d619 (3:5619)
Functiond61d: ; d61d (3:561d)
	ld hl, $d194
	ld a, [hl]
	add $1
	ld [hli], a
	ret nc
	inc [hl]
	ret

Functiond627: ; d627
	call Functiond65f
	jr c, .asm_d645
	call Functiond670
.asm_d62f
	push bc
	push hl
	call Functiond6e2
	pop hl
	pop bc
	push af
	push bc
	push hl
	call Functiond730
	call Functiond7c9
	pop hl
	pop bc
	pop af
	jr nc, .asm_d62f
	ret

.asm_d645
	call Functiond670
.asm_d648
	push bc
	push hl
	call Functiond6f5
	pop hl
	pop bc
	ret c
	push af
	push bc
	push hl
	call Functiond749
	call Functiond7c9
	pop hl
	pop bc
	pop af
	jr nc, .asm_d648
	ret
; d65f

Functiond65f: ; d65f
	ld a, [Buffer2]
	and a
	jr nz, .asm_d66e
	ld a, [Buffer1]
	cp $30
	jr nc, .asm_d66e
	and a
	ret

.asm_d66e
	scf
	ret
; d670

Functiond670: ; d670
	push hl
	ld hl, Buffer1
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	pop hl
	call Functionc699
	ld a, e
	ld [$d1f1], a
	ld a, [$d1ee]
	ld c, a
	ld a, [$d1ef]
	ld b, a
	ld a, [Buffer1]
	ld e, a
	ld a, [Buffer2]
	ld d, a
	call Functionc699
	ld a, e
	ld [$d1f2], a
	push hl
	ld hl, $d1ec
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	pop hl
	ld a, e
	sub c
	ld e, a
	ld a, d
	sbc b
	ld d, a
	jr c, .asm_d6c1
	ld a, [$d1ec]
	ld [$d1f5], a
	ld a, [$d1ee]
	ld [$d1f6], a
	ld bc, $0001
	jr .asm_d6d9

.asm_d6c1
	ld a, [$d1ec]
	ld [$d1f6], a
	ld a, [$d1ee]
	ld [$d1f5], a
	ld a, e
	xor $ff
	inc a
	ld e, a
	ld a, d
	xor $ff
	ld d, a
	ld bc, rIE

.asm_d6d9
	ld a, d
	ld [$d1f3], a
	ld a, e
	ld [$d1f4], a
	ret
; d6e2

Functiond6e2: ; d6e2
	ld hl, $d1f1
	ld a, [$d1f2]
	cp [hl]
	jr nz, .asm_d6ed
	scf
	ret

.asm_d6ed
	ld a, c
	add [hl]
	ld [hl], a
	call Functiond839
	and a
	ret
; d6f5

Functiond6f5: ; d6f5
.asm_d6f5
	ld hl, $d1ec
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, e
	cp [hl]
	jr nz, .asm_d707
	inc hl
	ld a, d
	cp [hl]
	jr nz, .asm_d707
	scf
	ret

.asm_d707
	ld l, e
	ld h, d
	add hl, bc
	ld a, l
	ld [$d1ec], a
	ld a, h
	ld [$d1ed], a
	push hl
	push de
	push bc
	ld hl, Buffer1
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	call Functionc699
	pop bc
	pop de
	pop hl
	ld a, e
	ld hl, $d1f1
	cp [hl]
	jr z, .asm_d6f5
	ld [hl], a
	and a
	ret
; d730

Functiond730: ; d730
	call Functiond784
	ld d, $6
	ld a, [$d10a]
	and $1
	ld b, a
	ld a, [$d1f1]
	ld e, a
	ld c, a
	push de
	call Functiond771
	pop de
	call Functiond7b4
	ret
; d749

Functiond749: ; d749
	call Functiond784
	ld a, [$d1ec]
	ld c, a
	ld a, [$d1ed]
	ld b, a
	ld a, [Buffer1]
	ld e, a
	ld a, [Buffer2]
	ld d, a
	call Functionc699
	ld c, e
	ld d, $6
	ld a, [$d10a]
	and $1
	ld b, a
	push de
	call Functiond771
	pop de
	call Functiond7b4
	ret
; d771

Functiond771: ; d771
	ld a, [$d10a]
	cp $2
	jr nz, .asm_d780
	ld a, $28
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a

.asm_d780
	call DrawHPBar
	ret
; d784

Functiond784: ; d784
	ld a, [$d10a]
	and a
	ret z
	cp $1
	jr z, .asm_d792
	ld de, $0016
	jr .asm_d795

.asm_d792
	ld de, $0015

.asm_d795
	push hl
	add hl, de
	ld a, $7f
	ld [hli], a
	ld [hli], a
	ld [hld], a
	dec hl
	ld a, [$d1ec]
	ld [$d087], a
	ld a, [$d1ed]
	ld [StringBuffer2], a
	ld de, StringBuffer2
	ld bc, $0203
	call PrintNum
	pop hl
	ret
; d7b4

Functiond7b4: ; d7b4
	ld a, [hCGB]
	and a
	ret z
	ld hl, $d1f0
	call SetHPPal
	ld a, [$d1f0]
	ld c, a
	callba Function8c43
	ret
; d7c9

Functiond7c9: ; d7c9
	ld a, [hCGB]
	and a
	jr nz, .asm_d7d5
	call DelayFrame
	call DelayFrame
	ret

.asm_d7d5
	ld a, [$d10a]
	and a
	jr z, .asm_d829
	cp $1
	jr z, .asm_d82d
	ld a, [CurPartyMon]
	cp $3
	jr nc, .asm_d7ea
	ld c, $0
	jr .asm_d7ec

.asm_d7ea
	ld c, $1

.asm_d7ec
	push af
	cp $2
	jr z, .asm_d7ff
	cp $5
	jr z, .asm_d7ff
	ld a, $2
	ld [hBGMapMode], a
	ld a, c
	ld [hBGMapThird], a
	call DelayFrame

.asm_d7ff
	ld a, $1
	ld [hBGMapMode], a
	ld a, c
	ld [hBGMapThird], a
	call DelayFrame
	pop af
	cp $2
	jr z, .asm_d813
	cp $5
	jr z, .asm_d813
	ret

.asm_d813
	inc c
	ld a, $2
	ld [hBGMapMode], a
	ld a, c
	ld [hBGMapThird], a
	call DelayFrame
	ld a, $1
	ld [hBGMapMode], a
	ld a, c
	ld [hBGMapThird], a
	call DelayFrame
	ret

.asm_d829
	ld c, $0
	jr .asm_d82f

.asm_d82d
	ld c, $1

.asm_d82f
	call DelayFrame
	ld a, c
	ld [hBGMapThird], a
	call DelayFrame
	ret
; d839

Functiond839: ; d839
	ld a, [Buffer1]
	ld c, a
	ld b, $0
	ld hl, $0000
	ld a, [$d1f1]
	cp $30
	jr nc, .asm_d885
	and a
	jr z, .asm_d880
	call AddNTimes
	ld b, $0
.asm_d851
	ld a, l
	sub $30
	ld l, a
	ld a, h
	sbc $0
	ld h, a
	jr c, .asm_d85e
	inc b
	jr .asm_d851

.asm_d85e
	push bc
	ld bc, $0080
	add hl, bc
	pop bc
	ld a, l
	sub $30
	ld l, a
	ld a, h
	sbc $0
	ld h, a
	jr c, .asm_d86f
	inc b

.asm_d86f
	ld a, [$d1f5]
	cp b
	jr nc, .asm_d87c
	ld a, [$d1f6]
	cp b
	jr c, .asm_d87c
	ld a, b

.asm_d87c
	ld [$d1ec], a
	ret

.asm_d880
	xor a
	ld [$d1ec], a
	ret

.asm_d885
	ld a, [Buffer1]
	ld [$d1ec], a
	ret
; d88c


Functiond88c: ; d88c
	ld de, PartyCount
	ld a, [MonType]
	and $f
	jr z, .asm_d899
	ld de, OTPartyCount

.asm_d899
	ld a, [de]
	inc a
	cp $7
	ret nc
	ld [de], a
	ld a, [de]
	ld [$ffae], a
	add e
	ld e, a
	jr nc, .asm_d8a7
	inc d

.asm_d8a7
	ld a, [CurPartySpecies]
	ld [de], a
	inc de
	ld a, $ff
	ld [de], a
	ld hl, PartyMon1OT
	ld a, [MonType]
	and $f
	jr z, .asm_d8bc
	ld hl, OTPartyMon1OT

.asm_d8bc
	ld a, [$ffae]
	dec a
	call SkipNames
	ld d, h
	ld e, l
	ld hl, PlayerName
	ld bc, $000b
	call CopyBytes
	ld a, [MonType]
	and a
	jr nz, .asm_d8f0
	ld a, [CurPartySpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, PartyMon1Nickname
	ld a, [$ffae]
	dec a
	call SkipNames
	ld d, h
	ld e, l
	ld hl, StringBuffer1
	ld bc, $000b
	call CopyBytes

.asm_d8f0
	ld hl, PartyMon1Species
	ld a, [MonType]
	and $f
	jr z, .asm_d8fd
	ld hl, OTPartyMon1Species

.asm_d8fd
	ld a, [$ffae]
	dec a
	ld bc, $0030
	call AddNTimes
Functiond906: ; d906
	ld e, l
	ld d, h
	push hl
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseDexNo]
	ld [de], a
	inc de
	ld a, [IsInBattle]
	and a
	ld a, $0
	jr z, .asm_d922
	ld a, [EnemyMonItem]

.asm_d922
	ld [de], a
	inc de
	push de
	ld h, d
	ld l, e
	ld a, [IsInBattle]
	and a
	jr z, .asm_d943
	ld a, [MonType]
	and a
	jr nz, .asm_d943
	ld de, EnemyMonMove1
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a
	jr .asm_d950

.asm_d943
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld [MagikarpLength], a
	ld a, $1b
	call Predef

.asm_d950
	pop de
	inc de
	inc de
	inc de
	inc de
	ld a, [PlayerID]
	ld [de], a
	inc de
	ld a, [$d47c]
	ld [de], a
	inc de
	push de
	ld a, [CurPartyLevel]
	ld d, a
	callab Function50e47
	pop de
	ld a, [hMultiplicand]
	ld [de], a
	inc de
	ld a, [$ffb5]
	ld [de], a
	inc de
	ld a, [$ffb6]
	ld [de], a
	inc de
	xor a
	ld b, $a
.asm_d97a
	ld [de], a
	inc de
	dec b
	jr nz, .asm_d97a
	pop hl
	push hl
	ld a, [MonType]
	and $f
	jr z, .asm_d992
	push hl
	callba GetTrainerDVs
	pop hl
	jr .asm_d9b5

.asm_d992
	ld a, [CurPartySpecies]
	ld [$d265], a
	dec a
	push de
	call CheckCaughtMon
	ld a, [$d265]
	dec a
	call SetSeenAndCaughtMon
	pop de
	pop hl
	push hl
	ld a, [IsInBattle]
	and a
	jr nz, .asm_d9f3
	call Random
	ld b, a
	call Random
	ld c, a

.asm_d9b5
	ld a, b
	ld [de], a
	inc de
	ld a, c
	ld [de], a
	inc de
	push hl
	push de
	inc hl
	inc hl
	call FillPP
	pop de
	pop hl
	inc de
	inc de
	inc de
	inc de
	ld a, $46
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld a, [CurPartyLevel]
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld bc, $000a
	add hl, bc
	ld a, $1
	ld c, a
	ld b, $0
	call Functione17b
	ld a, [$ffb5]
	ld [de], a
	inc de
	ld a, [$ffb6]
	ld [de], a
	inc de
	jr .asm_da29

.asm_d9f3
	ld a, [EnemyMonAtkDefDV]
	ld [de], a
	inc de
	ld a, [EnemyMonSpdSpclDV]
	ld [de], a
	inc de
	push hl
	ld hl, EnemyMonPPMove1
	ld b, $4
.asm_da03
	ld a, [hli]
	ld [de], a
	inc de
	dec b
	jr nz, .asm_da03
	pop hl
	ld a, $46
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld a, [CurPartyLevel]
	ld [de], a
	inc de
	ld hl, EnemyMonStatus
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de

.asm_da29
	ld a, [IsInBattle]
	dec a
	jr nz, .asm_da3b
	ld hl, EnemyMonMaxHPHi
	ld bc, $000c
	call CopyBytes
	pop hl
	jr .asm_da45

.asm_da3b
	pop hl
	ld bc, $000a
	add hl, bc
	ld b, $0
	call Functione167

.asm_da45
	ld a, [MonType]
	and $f
	jr nz, .asm_da6b
	ld a, [CurPartySpecies]
	cp $c9
	jr nz, .asm_da6b
	ld hl, PartyMon1DVs
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld a, $2d
	call Predef
	callab Functionfba18

.asm_da6b
	scf
	ret
; da6d

FillPP: ; da6d
	push bc
	ld b, $4
.asm_da70
	ld a, [hli]
	and a
	jr z, .asm_da8f
	dec a
	push hl
	push de
	push bc
	ld hl, $5afb
	ld bc, $0007
	call AddNTimes
	ld de, StringBuffer1
	ld a, $10
	call FarCopyBytes
	pop bc
	pop de
	pop hl
	ld a, [$d078]

.asm_da8f
	ld [de], a
	inc de
	dec b
	jr nz, .asm_da70
	pop bc
	ret
; da96

Functionda96: ; da96
	ld hl, PartyCount
	ld a, [hl]
	cp $6
	scf
	ret z
	inc a
	ld [hl], a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [CurPartySpecies]
	ld [hli], a
	ld [hl], $ff
	ld hl, PartyMon1Species
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld e, l
	ld d, h
	ld hl, TempMonSpecies
	call CopyBytes
	ld hl, PartyMon1OT
	ld a, [PartyCount]
	dec a
	call SkipNames
	ld d, h
	ld e, l
	ld hl, OTPartyMon1OT
	ld a, [CurPartyMon]
	call SkipNames
	ld bc, $000b
	call CopyBytes
	ld hl, PartyMon1Nickname
	ld a, [PartyCount]
	dec a
	call SkipNames
	ld d, h
	ld e, l
	ld hl, OTPartyMon1Nickname
	ld a, [CurPartyMon]
	call SkipNames
	ld bc, $000b
	call CopyBytes
	ld a, [CurPartySpecies]
	ld [$d265], a
	cp $fd
	jr z, .asm_db12
	dec a
	call SetSeenAndCaughtMon
	ld hl, PartyMon1Happiness
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld [hl], $46

.asm_db12
	ld a, [CurPartySpecies]
	cp $c9
	jr nz, .asm_db3d
	ld hl, PartyMon1DVs
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld a, $2d
	call Predef
	callab Functionfba18
	ld a, [$def4]
	and a
	jr nz, .asm_db3d
	ld a, [UnownLetter]
	ld [$def4], a

.asm_db3d
	and a
	ret
; db3f

Functiondb3f: ; db3f
	ld a, $1
	call GetSRAMBank
	ld a, [$d10b]
	and a
	jr z, .asm_db60
	cp $2
	jr z, .asm_db60
	cp $3
	ld hl, BreedMon1Species
	jr z, .asm_db9b
	ld hl, BoxCount
	ld a, [hl]
	cp $14
	jr nz, .asm_db69
	jp Functiondcb1

.asm_db60
	ld hl, PartyCount
	ld a, [hl]
	cp $6
	jp z, Functiondcb1

.asm_db69
	inc a
	ld [hl], a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [$d10b]
	cp $2
	ld a, [BreedMon1Species]
	jr z, .asm_db7c
	ld a, [CurPartySpecies]

.asm_db7c
	ld [hli], a
	ld [hl], $ff
	ld a, [$d10b]
	dec a
	ld hl, PartyMon1Species
	ld bc, $0030
	ld a, [PartyCount]
	jr nz, .asm_db97
	ld hl, BoxMon1Species
	ld bc, $0020
	ld a, [BoxCount]

.asm_db97
	dec a
	call AddNTimes

.asm_db9b
	push hl
	ld e, l
	ld d, h
	ld a, [$d10b]
	and a
	ld hl, BoxMon1Species
	ld bc, $0020
	jr z, .asm_dbb7
	cp $2
	ld hl, BreedMon1Species
	jr z, .asm_dbbd
	ld hl, PartyMon1Species
	ld bc, $0030

.asm_dbb7
	ld a, [CurPartyMon]
	call AddNTimes

.asm_dbbd
	ld bc, $0020
	call CopyBytes
	ld a, [$d10b]
	cp $3
	ld de, BreedMon1OT
	jr z, .asm_dbe2
	dec a
	ld hl, PartyMon1OT
	ld a, [PartyCount]
	jr nz, .asm_dbdc
	ld hl, BoxMon1OT
	ld a, [BoxCount]

.asm_dbdc
	dec a
	call SkipNames
	ld d, h
	ld e, l

.asm_dbe2
	ld hl, BoxMon1OT
	ld a, [$d10b]
	and a
	jr z, .asm_dbf5
	ld hl, BreedMon1OT
	cp $2
	jr z, .asm_dbfb
	ld hl, PartyMon1OT

.asm_dbf5
	ld a, [CurPartyMon]
	call SkipNames

.asm_dbfb
	ld bc, $000b
	call CopyBytes
	ld a, [$d10b]
	cp $3
	ld de, BreedMon1Nick
	jr z, .asm_dc20
	dec a
	ld hl, PartyMon1Nickname
	ld a, [PartyCount]
	jr nz, .asm_dc1a
	ld hl, BoxMon1Nickname
	ld a, [BoxCount]

.asm_dc1a
	dec a
	call SkipNames
	ld d, h
	ld e, l

.asm_dc20
	ld hl, BoxMon1Nickname
	ld a, [$d10b]
	and a
	jr z, .asm_dc33
	ld hl, BreedMon1Nick
	cp $2
	jr z, .asm_dc39
	ld hl, PartyMon1Nickname

.asm_dc33
	ld a, [CurPartyMon]
	call SkipNames

.asm_dc39
	ld bc, $000b
	call CopyBytes
	pop hl
	ld a, [$d10b]
	cp $1
	jr z, .asm_dca4
	cp $3
	jp z, .asm_dcac
	push hl
	srl a
	add $2
	ld [MonType], a
	ld a, $1f
	call Predef
	callab Function50e1b
	ld a, d
	ld [CurPartyLevel], a
	pop hl
	ld b, h
	ld c, l
	ld hl, $001f
	add hl, bc
	ld [hl], a
	ld hl, $0024
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $000a
	add hl, bc
	push bc
	ld b, $1
	call Functione167
	pop bc
	ld a, [$d10b]
	and a
	jr nz, .asm_dcac
	ld hl, $0020
	add hl, bc
	xor a
	ld [hl], a
	ld hl, $0022
	add hl, bc
	ld d, h
	ld e, l
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_dc9e
	inc hl
	inc hl
	ld a, [hli]
	ld [de], a
	ld a, [hl]
	inc de
	ld [de], a
	jr .asm_dcac

.asm_dc9e
	xor a
	ld [de], a
	inc de
	ld [de], a
	jr .asm_dcac

.asm_dca4
	ld a, [BoxCount]
	dec a
	ld b, a
	call Functiondcb6

.asm_dcac
	call CloseSRAM
	and a
	ret
; dcb1

Functiondcb1: ; dcb1
	call CloseSRAM
	scf
	ret
; dcb6


Functiondcb6: ; dcb6

	ld a, b
	ld hl, BoxMons
	ld bc, BoxMon2 - BoxMon1
	call AddNTimes
	ld b, h
	ld c, l
	ld hl, BoxMon1PP - BoxMon1
	add hl, bc
	push hl
	push bc
	ld de, TempMonPP
	ld bc, NUM_MOVES
	call CopyBytes
	pop bc
	ld hl, BoxMon1Moves - BoxMon1
	add hl, bc
	push hl
	ld de, TempMonMoves
	ld bc, NUM_MOVES
	call CopyBytes
	pop hl
	pop de

	ld a, [$cfa9]
	push af
	ld a, [MonType]
	push af
	ld b, 0
.asm_dcec
	ld a, [hli]
	and a
	jr z, .asm_dd18
	ld [TempMonMove1], a
	ld a, BOXMON
	ld [MonType], a
	ld a, b
	ld [$cfa9], a
	push bc
	push hl
	push de
	callba Functionf8ec
	pop de
	pop hl
	ld a, [$d265]
	ld b, a
	ld a, [de]
	and $c0
	add b
	ld [de], a
	pop bc
	inc de
	inc b
	ld a, b
	cp NUM_MOVES
	jr c, .asm_dcec

.asm_dd18
	pop af
	ld [MonType], a
	pop af
	ld [$cfa9], a
	ret
; dd21


Functiondd21: ; dd21
	ld a, [BreedMon1Species]
	ld [CurPartySpecies], a
	ld de, $0022
	call PlaySFX
	call WaitSFX
	call Functione698
	ld a, b
	ld [DefaultFlypoint], a
	ld a, e
	ld [CurPartyLevel], a
	xor a
	ld [$d10b], a
	jp Functiondd64
; dd42

Functiondd42: ; dd42
	ld a, [BreedMon2Species]
	ld [CurPartySpecies], a
	ld de, $0022
	call PlaySFX
	call WaitSFX
	call Functione6b3
	ld a, b
	ld [DefaultFlypoint], a
	ld a, e
	ld [CurPartyLevel], a
	ld a, $1
	ld [$d10b], a
	jp Functiondd64
; dd64

Functiondd64: ; dd64
	ld hl, PartyCount
	ld a, [hl]
	cp $6
	jr nz, .asm_dd6e
	scf
	ret

.asm_dd6e
	inc a
	ld [hl], a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [$d10b]
	and a
	ld a, [BreedMon1Species]
	ld de, BreedMon1Nick
	jr z, .asm_dd86
	ld a, [BreedMon2Species]
	ld de, BreedMon2Nick

.asm_dd86
	ld [hli], a
	ld [CurSpecies], a
	ld a, $ff
	ld [hl], a
	ld hl, PartyMon1Nickname
	ld a, [PartyCount]
	dec a
	call SkipNames
	push hl
	ld h, d
	ld l, e
	pop de
	call CopyBytes
	push hl
	ld hl, PartyMon1OT
	ld a, [PartyCount]
	dec a
	call SkipNames
	ld d, h
	ld e, l
	pop hl
	call CopyBytes
	push hl
	call Functionde1a
	pop hl
	ld bc, $0020
	call CopyBytes
	call GetBaseData
	call Functionde1a
	ld b, d
	ld c, e
	ld hl, $001f
	add hl, bc
	ld a, [CurPartyLevel]
	ld [hl], a
	ld hl, $0024
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $000a
	add hl, bc
	push bc
	ld b, $1
	call Functione167
	ld hl, PartyMon1Move1
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	ld a, $1
	ld [Buffer1], a
	ld a, $1b
	call Predef
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	callba Functionc677
	ld a, [CurPartyLevel]
	ld d, a
	callab Function50e47
	pop bc
	ld hl, $0008
	add hl, bc
	ld a, [hMultiplicand]
	ld [hli], a
	ld a, [$ffb5]
	ld [hli], a
	ld a, [$ffb6]
	ld [hl], a
	and a
	ret
; de1a

Functionde1a: ; de1a
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	ret
; de2a

Functionde2a: ; de2a
	ld de, BreedMon1Nick
	call Functionde44
	xor a
	ld [$d10b], a
	jp Functione039
; de37

Functionde37: ; de37
	ld de, BreedMon2Nick
	call Functionde44
	xor a
	ld [$d10b], a
	jp Functione039
; de44

Functionde44: ; de44
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call SkipNames
	call CopyBytes
	ld a, [CurPartyMon]
	ld hl, PartyMon1OT
	call SkipNames
	call CopyBytes
	ld a, [CurPartyMon]
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld bc, $0020
	jp CopyBytes
; de6e


Functionde6e: ; de6e
	ld a, 1 ; BANK(BoxCount)
	call GetSRAMBank
	ld de, BoxCount
	ld a, [de]
	cp 20
	jp nc, Functiondf42
	inc a
	ld [de], a
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	ld c, a
.asm_de85
	inc de
	ld a, [de]
	ld b, a
	ld a, c
	ld c, b
	ld [de], a
	inc a
	jr nz, .asm_de85
	call GetBaseData
	call ShiftBoxMon
	ld hl, PlayerName
	ld de, BoxMonOT
	ld bc, BoxMon2OT - BoxMon1OT
	call CopyBytes
	ld a, [CurPartySpecies]
	ld [$d265], a
	call GetPokemonName
	ld de, BoxMon1Nickname
	ld hl, StringBuffer1
	ld bc, BoxMon2Nickname - BoxMon1Nickname
	call CopyBytes
	ld hl, EnemyMon
	ld de, BoxMon1
	ld bc, 6 ; species + item + moves
	call CopyBytes
	ld hl, PlayerID
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	push de
	ld a, [CurPartyLevel]
	ld d, a
	callab Function50e47
	pop de
	ld a, [hMultiplicand]
	ld [de], a
	inc de
	ld a, [$ffb5]
	ld [de], a
	inc de
	ld a, [$ffb6]
	ld [de], a
	inc de
	xor a
	ld b, $a
.asm_dee5
	ld [de], a
	inc de
	dec b
	jr nz, .asm_dee5
	ld hl, EnemyMonAtkDefDV
	ld b, $6
.asm_deef
	ld a, [hli]
	ld [de], a
	inc de
	dec b
	jr nz, .asm_deef
	ld a, $46
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld a, [CurPartyLevel]
	ld [de], a
	ld a, [CurPartySpecies]
	dec a
	call SetSeenAndCaughtMon
	ld a, [CurPartySpecies]
	cp UNOWN
	jr nz, .asm_df20
	ld hl, BoxMon1DVs
	ld a, $2d
	call Predef
	callab Functionfba18

.asm_df20
	ld hl, BoxMon1Moves
	ld de, TempMonMove1
	ld bc, NUM_MOVES
	call CopyBytes
	ld hl, BoxMon1PP
	ld de, TempMonPP
	ld bc, NUM_MOVES
	call CopyBytes
	ld b, 0
	call Functiondcb6
	call CloseSRAM
	scf
	ret
; df42

Functiondf42: ; df42
	call CloseSRAM
	and a
	ret
; df47

ShiftBoxMon: ; df47
	ld hl, BoxMonOT
	ld bc, BoxMon2OT - BoxMon1OT
	call .asm_df5f

	ld hl, BoxMonNicknames
	ld bc, BoxMon2Nickname - BoxMon1Nickname
	call .asm_df5f

	ld hl, BoxMons
	ld bc, BoxMon2 - BoxMon1

.asm_df5f
	ld a, [BoxCount]
	cp 2
	ret c

	push hl
	call AddNTimes
	dec hl
	ld e, l
	ld d, h
	pop hl

	ld a, [BoxCount]
	dec a
	call AddNTimes
	dec hl

	push hl
	ld a, [BoxCount]
	dec a
	ld hl, 0
	call AddNTimes
	ld c, l
	ld b, h
	pop hl
.loop
	ld a, [hld]
	ld [de], a
	dec de
	dec bc
	ld a, c
	or b
	jr nz, .loop
	ret
; df8c

Functiondf8c: ; df8c
	ld a, [CurPartySpecies]
	push af
	callab GetPreEvolution
	callab GetPreEvolution
	ld a, [CurPartySpecies]
	dec a
	push af
	call CheckCaughtMon
	pop af
	push bc
	call CheckSeenMon
	push bc
	call Functiond88c
	pop bc
	ld a, c
	and a
	jr nz, .asm_dfc3
	ld a, [CurPartySpecies]
	dec a
	ld c, a
	ld d, $0
	ld hl, PokedexCaught
	ld b, $0
	ld a, $3
	call Predef

.asm_dfc3
	pop bc
	ld a, c
	and a
	jr nz, .asm_dfd9
	ld a, [CurPartySpecies]
	dec a
	ld c, a
	ld d, $0
	ld hl, PokedexSeen
	ld b, $0
	ld a, $3
	call Predef

.asm_dfd9
	pop af
	ld [CurPartySpecies], a
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	ld hl, PartyMon1Species
	call AddNTimes
	ld a, [CurPartySpecies]
	ld [hl], a
	ld hl, PartyCount
	ld a, [hl]
	ld b, $0
	ld c, a
	add hl, bc
	ld a, $fd
	ld [hl], a
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Nickname
	call SkipNames
	ld de, $6035
	call CopyName2
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Happiness
	ld bc, $0030
	call AddNTimes
	ld a, [$c2cc]
	bit 1, a
	ld a, $1
	jr nz, .asm_e022
	ld a, [BaseEggSteps]

.asm_e022
	ld [hl], a
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1CurHP
	ld bc, $0030
	call AddNTimes
	xor a
	ld [hli], a
	ld [hl], a
	and a
	ret
; e035

INCBIN "baserom.gbc",$e035,$e039 - $e035


Functione039: ; e039

	ld hl, PartyCount

	ld a, [$d10b]
	and a
	jr z, .asm_e04a

	ld a, 1 ; BANK(BoxCount)
	call GetSRAMBank
	ld hl, BoxCount

.asm_e04a
	ld a, [hl]
	dec a
	ld [hli], a
	ld a, [CurPartyMon]
	ld c, a
	ld b, 0
	add hl, bc
	ld e, l
	ld d, h
	inc de
.asm_e057
	ld a, [de]
	inc de
	ld [hli], a
	inc a
	jr nz, .asm_e057
	ld hl, PartyMon1OT
	ld d, $5
	ld a, [$d10b]
	and a
	jr z, .asm_e06d
	ld hl, BoxMonOT
	ld d, $13

.asm_e06d
	ld a, [CurPartyMon]
	call SkipNames
	ld a, [CurPartyMon]
	cp d
	jr nz, .asm_e07e
	ld [hl], $ff
	jp .asm_60f0

.asm_e07e
	ld d, h
	ld e, l
	ld bc, $000b
	add hl, bc
	ld bc, PartyMon1Nickname
	ld a, [$d10b]
	and a
	jr z, .asm_e090
	ld bc, BoxMonNicknames
.asm_e090
	call CopyDataUntil

	ld hl, PartyMons
	ld bc, PartyMon2 - PartyMon1
	ld a, [$d10b]
	and a
	jr z, .asm_e0a5
	ld hl, BoxMons
	ld bc, BoxMon2 - BoxMon1

.asm_e0a5
	ld a, [CurPartyMon]
	call AddNTimes
	ld d, h
	ld e, l
	ld a, [$d10b]
	and a
	jr z, .asm_e0bc
	ld bc, BoxMon2 - BoxMon1
	add hl, bc
	ld bc, BoxMonOT
	jr .asm_e0c3

.asm_e0bc
	ld bc, PartyMon2 - PartyMon1
	add hl, bc
	ld bc, PartyMon1OT

.asm_e0c3
	call CopyDataUntil
	ld hl, PartyMon1Nickname
	ld a, [$d10b]
	and a
	jr z, .asm_e0d2
	ld hl, BoxMonNicknames

.asm_e0d2
	ld bc, BoxMon2Nickname - BoxMon1Nickname
	ld a, [CurPartyMon]
	call AddNTimes
	ld d, h
	ld e, l
	ld bc, BoxMon2Nickname - BoxMon1Nickname
	add hl, bc
	ld bc, PartyMonNicknamesEnd
	ld a, [$d10b]
	and a
	jr z, .asm_e0ed
	ld bc, BoxMonNicknamesEnd

.asm_e0ed
	call CopyDataUntil

.asm_60f0
	ld a, [$d10b]
	and a
	jp nz, CloseSRAM
	ld a, [InLinkBattle]
	and a
	ret nz
	ld a, $0
	call GetSRAMBank
	ld hl, PartyCount
	ld a, [CurPartyMon]
	cp [hl]
	jr z, .asm_e131
	ld hl, $a600
	ld bc, $002f
	call AddNTimes
	push hl
	add hl, bc
	pop de
	ld a, [CurPartyMon]
	ld b, a
.asm_e11a
	push bc
	push hl
	ld bc, $002f
	call CopyBytes
	pop hl
	push hl
	ld bc, $002f
	add hl, bc
	pop de
	pop bc
	inc b
	ld a, [PartyCount]
	cp b
	jr nz, .asm_e11a

.asm_e131
	jp CloseSRAM
; e134

Functione134: ; e134
	ld a, $1f
	call GetPartyParamLocation
	ld a, [hl]
	ld [$001f], a
	ld a, $0
	call GetPartyParamLocation
	ld a, [hl]
	ld [CurSpecies], a
	call GetBaseData
	ld a, $24
	call GetPartyParamLocation
	ld d, h
	ld e, l
	push de
	ld a, $a
	call GetPartyParamLocation
	ld b, $1
	call Functione167
	pop de
	ld a, $22
	call GetPartyParamLocation
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a
	ret
; e167

Functione167: ; e167
	ld c, $0
.asm_e169
	inc c
	call Functione17b
	ld a, [$ffb5]
	ld [de], a
	inc de
	ld a, [$ffb6]
	ld [de], a
	inc de
	ld a, c
	cp $6
	jr nz, .asm_e169
	ret
; e17b

Functione17b: ; e17b
	push hl
	push de
	push bc
	ld a, b
	ld d, a
	push hl
	ld hl, BaseHP
	dec hl
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld e, a
	pop hl
	push hl
	ld a, c
	cp $6
	jr nz, .asm_e193
	dec hl
	dec hl

.asm_e193
	sla c
	ld a, d
	and a
	jr z, .asm_e1a5
	add hl, bc
	push de
	ld a, [hld]
	ld e, a
	ld d, [hl]
	callba GetSquareRoot
	pop de

.asm_e1a5
	srl c
	pop hl
	push bc
	ld bc, $000b
	add hl, bc
	pop bc
	ld a, c
	cp $2
	jr z, .asm_e1e3
	cp $3
	jr z, .asm_e1ea
	cp $4
	jr z, .asm_e1ef
	cp $5
	jr z, .asm_e1f7
	cp $6
	jr z, .asm_e1f7
	push bc
	ld a, [hl]
	swap a
	and $1
	add a
	add a
	add a
	ld b, a
	ld a, [hli]
	and $1
	add a
	add a
	add b
	ld b, a
	ld a, [hl]
	swap a
	and $1
	add a
	add b
	ld b, a
	ld a, [hl]
	and $1
	add b
	pop bc
	jr .asm_e1fb

.asm_e1e3
	ld a, [hl]
	swap a
	and $f
	jr .asm_e1fb

.asm_e1ea
	ld a, [hl]
	and $f
	jr .asm_e1fb

.asm_e1ef
	inc hl
	ld a, [hl]
	swap a
	and $f
	jr .asm_e1fb

.asm_e1f7
	inc hl
	ld a, [hl]
	and $f

.asm_e1fb
	ld d, $0
	add e
	ld e, a
	jr nc, .asm_e202
	inc d

.asm_e202
	sla e
	rl d
	srl b
	srl b
	ld a, b
	add e
	jr nc, .asm_e20f
	inc d

.asm_e20f
	ld [$ffb6], a
	ld a, d
	ld [$ffb5], a
	xor a
	ld [hMultiplicand], a
	ld a, [CurPartyLevel]
	ld [hMultiplier], a
	call Multiply
	ld a, [hMultiplicand]
	ld [hProduct], a
	ld a, [$ffb5]
	ld [hMultiplicand], a
	ld a, [$ffb6]
	ld [$ffb5], a
	ld a, $64
	ld [hMultiplier], a
	ld a, $3
	ld b, a
	call Divide
	ld a, c
	cp $1
	ld a, $5
	jr nz, .asm_e24e
	ld a, [CurPartyLevel]
	ld b, a
	ld a, [$ffb6]
	add b
	ld [$ffb6], a
	jr nc, .asm_e24c
	ld a, [$ffb5]
	inc a
	ld [$ffb5], a

.asm_e24c
	ld a, $a

.asm_e24e
	ld b, a
	ld a, [$ffb6]
	add b
	ld [$ffb6], a
	jr nc, .asm_e25b
	ld a, [$ffb5]
	inc a
	ld [$ffb5], a

.asm_e25b
	ld a, [$ffb5]
	cp $4
	jr nc, .asm_e26b
	cp $3
	jr c, .asm_e273
	ld a, [$ffb6]
	cp $e8
	jr c, .asm_e273

.asm_e26b
	ld a, $3
	ld [$ffb5], a
	ld a, $e7
	ld [$ffb6], a

.asm_e273
	pop bc
	pop de
	pop hl
	ret
; e277

Functione277: ; e277
	push de
	push bc
	xor a
	ld [MonType], a
	call Functiond88c
	jr nc, .asm_e2b0
	ld hl, PartyMon1Nickname
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	call SkipNames
	ld d, h
	ld e, l
	pop bc
	ld a, b
	ld b, $0
	push bc
	push de
	push af
	ld a, [CurItem]
	and a
	jr z, .asm_e2e1
	ld a, [CurPartyMon]
	ld hl, PartyMon1Item
	ld bc, $0030
	call AddNTimes
	ld a, [CurItem]
	ld [hl], a
	jr .asm_e2e1

.asm_e2b0
	ld a, [CurPartySpecies]
	ld [TempEnemyMonSpecies], a
	callab LoadEnemyMon
	call Functionde6e
	jp nc, Functione3d4
	ld a, $2
	ld [MonType], a
	xor a
	ld [CurPartyMon], a
	ld de, $d050
	pop bc
	ld a, b
	ld b, $1
	push bc
	push de
	push af
	ld a, [CurItem]
	and a
	jr z, .asm_e2e1
	ld a, [CurItem]
	ld [BoxMon1Item], a

.asm_e2e1
	ld a, [CurPartySpecies]
	ld [$d265], a
	ld [TempEnemyMonSpecies], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $000b
	call CopyBytes
	pop af
	and a
	jp z, .asm_e390
	pop de
	pop bc
	pop hl
	push bc
	push hl
	ld a, [ScriptBank]
	call GetFarHalfword
	ld bc, $000b
	ld a, [ScriptBank]
	call FarCopyBytes
	pop hl
	inc hl
	inc hl
	ld a, [ScriptBank]
	call GetFarHalfword
	pop bc
	ld a, b
	and a
	push de
	push bc
	jr nz, .asm_e35e
	push hl
	ld a, [CurPartyMon]
	ld hl, PartyMon1OT
	call SkipNames
	ld d, h
	ld e, l
	pop hl
.asm_e32f
	ld a, [ScriptBank]
	call GetFarByte
	ld [de], a
	inc hl
	inc de
	cp $50
	jr nz, .asm_e32f
	ld a, [ScriptBank]
	call GetFarByte
	ld b, a
	push bc
	ld a, [CurPartyMon]
	ld hl, PartyMon1ID
	ld bc, $0030
	call AddNTimes
	ld a, $3
	ld [hli], a
	ld [hl], $e9
	pop bc
	callba Function4dba3
	jr .asm_e3b2

.asm_e35e
	ld a, $1
	call GetSRAMBank
	ld de, BoxMon1OT
.asm_e366
	ld a, [ScriptBank]
	call GetFarByte
	ld [de], a
	inc hl
	inc de
	cp $50
	jr nz, .asm_e366
	ld a, [ScriptBank]
	call GetFarByte
	ld b, a
	ld hl, BoxMon1ID
	call Random
	ld [hli], a
	call Random
	ld [hl], a
	call CloseSRAM
	callba Function4db92
	jr .asm_e3b2

.asm_e390
	pop de
	pop bc
	push bc
	push de
	ld a, b
	and a
	jr z, .asm_e3a0
	callba Function4db83
	jr .asm_e3a6

.asm_e3a0
	callba Function4db49

.asm_e3a6
	callba Function4db3b
	pop de
	jr c, .asm_e3b2
	call Functione3de

.asm_e3b2
	pop bc
	pop de
	ld a, b
	and a
	ret z
	ld hl, $63d9
	call PrintText
	ld a, $1
	call GetSRAMBank
	ld hl, $d050
	ld de, BoxMon1Nickname
	ld bc, $000b
	call CopyBytes
	call CloseSRAM
	ld b, $1
	ret
; e3d4

Functione3d4: ; e3d4
	pop bc
	pop de
	ld b, $2
	ret
; e3d9

INCBIN "baserom.gbc",$e3d9,$e3de - $e3d9


Functione3de: ; e3de
	push de
	call Function1d6e
	call Function2ed3
	pop de
	push de
	ld b, $0
	callba Function116c1
	pop hl
	ld de, StringBuffer1
	call InitName
	ld a, $4
	ld hl, Function2b4d
	rst FarCall
	ret
; e3fd

Functione3fd: ; e3fd
	call Functione40a
	ret c
	call Functione41c
	call Functione443
	jp Functione43f

; known jump sources: e3fd (3:63fd)
Functione40a: ; e40a (3:640a)
	ld a, [PartyCount] ; $dcd7
	and a
	ret nz
	ld hl, $6417
	call Function1d67
	scf
	ret
; e417 (3:6417)

INCBIN "baserom.gbc",$e417,$e41c - $e417

; known jump sources: e401 (3:6401)
Functione41c: ; e41c (3:641c)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function1d6e
	call ClearPCItemScreen
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	ld hl, $643a
	call PrintText
	pop af
	ld [Options], a ; $cfcc
	call Functione58
	ret
; e43a (3:643a)

INCBIN "baserom.gbc",$e43a,$e43f - $e43a

; known jump sources: e407 (3:6407)
Functione43f: ; e43f (3:643f)
	call Function2b3c
	ret

; known jump sources: e404 (3:6404)
Functione443: ; e443 (3:6443)
	ld hl, $646f
	call LoadMenuDataHeader
	ld a, $1
.asm_e44b
	ld [$cf88], a
	call Function32f9
	xor a
	ld [$cf76], a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function1e5d
	jr c, .asm_e46b
	ld a, [$cf88]
	push af
	ld a, [MenuSelection] ; $cf74
	ld hl, $64ba
	rst $28
	pop bc
	ld a, b
	jr nc, .asm_e44b
.asm_e46b
	call Function1c17
	ret
; e46f (3:646f)

INCBIN "baserom.gbc",$e46f,$e4ba - $e46f

; no known jump sources
Jumptable_e4ba: ; e4ba (3:64ba)
	dw Functione559
	dw Functione4fe
	dw Functione583

INCBIN "baserom.gbc",$e4c0,$e4fe - $e4c0

; no known jump sources
Functione4fe: ; e4fe (3:64fe)
	call Function1d6e
	callba Functione2391
	call Function222a
	call ClearPCItemScreen
	call Function1c17
	and a
	ret
; e512 (3:6512)

INCBIN "baserom.gbc",$e512,$e538 - $e512


Functione538: ; e538
	ld hl, PartyMon1CurHP
	ld de, $0030
	ld b, $0
.asm_e540
	ld a, [CurPartyMon]
	cp b
	jr z, .asm_e54b
	ld a, [hli]
	or [hl]
	jr nz, .asm_e557
	dec hl

.asm_e54b
	inc b
	ld a, [PartyCount]
	cp b
	jr z, .asm_e555
	add hl, de
	jr .asm_e540

.asm_e555
	scf
	ret

.asm_e557
	and a
	ret
; e559


; no known jump sources
Functione559: ; e559 (3:6559)
	call Function1d6e
	callba Functione2583
	call Function222a
	call ClearPCItemScreen
	call Function1c17
	and a
	ret
; e56d (3:656d)

INCBIN "baserom.gbc",$e56d,$e583 - $e56d

; no known jump sources
Functione583: ; e583 (3:6583)
	callba Functione35aa
	and a
	ret

ClearPCItemScreen: ; e58b
	call Function2ed3
	xor a
	ld [hBGMapMode], a
	call WhiteBGMap
	call ClearSprites
	ld hl, TileMap
	ld bc, 18 * 20
	ld a, " "
	call ByteFill
	hlcoord 0,0
	ld bc, $0a12
	call TextBox
	hlcoord 0,12
	ld bc, $0412
	call TextBox
	call Function3200
	call Function32f9 ; load regular palettes?
	ret
; 0xe5bb

Functione5bb: ; e5bb
	ld a, [CurPartyMon]
	ld hl, BoxMon1Species
	ld bc, $0020
	call AddNTimes
	ld de, TempMonSpecies
	ld bc, $0020
	ld a, $1
	call GetSRAMBank
	call CopyBytes
	call CloseSRAM
	ret
; e5d9

INCBIN "baserom.gbc",$e5d9,$e698 - $e5d9

Functione698: ; e698
	ld hl, BreedMon1Species
	ld de, TempMonSpecies
	ld bc, $0020
	call CopyBytes
	callab Function50e1b
	ld a, [$df2b]
	ld b, a
	ld a, d
	ld e, a
	sub b
	ld d, a
	ret
; e6b3

Functione6b3: ; e6b3
	ld hl, BreedMon2Species
	ld de, TempMonSpecies
	ld bc, $0020
	call CopyBytes
	callab Function50e1b
	ld a, [$df64]
	ld b, a
	ld a, d
	ld e, a
	sub b
	ld d, a
	ret
; e6ce


Functione6ce: ; e6ce
	ld a, [$df9c]
	and a
	jr z, .asm_e6ea
	ld [$d265], a
	callba Functioncc0c7
	callba Functioncc000
	ld bc, $0e07
	call Function1dd2
	ret c

.asm_e6ea
	call Functione6fd
	ld a, [TempEnemyMonSpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, $671d
	call PrintText
	ret
; e6fd

Functione6fd: ; e6fd
	ld a, [TempEnemyMonSpecies]
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	call GetBaseData
	xor a
	ld bc, $0030
	ld hl, $df9c
	call ByteFill
	xor a
	ld [MonType], a
	ld hl, $df9c
	jp Functiond906
; e71d

INCBIN "baserom.gbc",$e71d,$e722 - $e71d


_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 Item06
	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 Item38
	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

INCLUDE "items/item_effects.asm"


Functionf780: ; f780
	push de
	ld de, SFX_FULL_HEAL
	call WaitPlaySFX
	pop de
	ret
; f789

Functionf789: ; f789
	ld hl, $783d
	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, Start
	ld a, e
	ld [FXAnimIDLo], a
	ld a, d
	ld [FXAnimIDHi], a
	xor a
	ld [$c689], a
	ld [hBattleTurn], a
	ld [$cfca], a
	ld a, $37
	call Predef
	ld hl, $7824
	call PrintText
	ld hl, $7829
	call PrintText
	jr Functionf795
; f7ca

Functionf7ca: ; f7ca
	ld hl, $781f
	call PrintText
	ld a, $2
	ld [$d0ec], a
	ret
; f7d6

Functionf7d6: ; f7d6
	ld hl, $780b
	jp PrintText
; f7dc

Functionf7dc: ; f7dc
	ld hl, $7838
	call PrintText
	ld a, $2
	ld [$d0ec], a
	ret
; f7e8

Functionf7e8: ; f7e8
	ld hl, $7810
	jr asm_f804

	ld hl, $7815
	jr asm_f804

Functionf7f2: ; f7f2
	ld hl, $781f
	jr asm_f804

	ld hl, $781a
	jr asm_f804

	ld hl, $782e
	jr asm_f804

	ld hl, $7833

asm_f804
	xor a
	ld [$d0ec], a
	jp PrintText
; f80b

INCBIN "baserom.gbc",$f80b,$f84c - $f80b


Functionf84c: ; f84c
	ld a, $2
	call GetPartyParamLocation
	push hl
	ld de, MagikarpLength
	ld a, $5
	call Predef
	pop hl
	ld bc, $0015
	add hl, bc
	ld de, MagikarpLength
	ld b, $0
.asm_f864
	inc b
	ld a, b
	cp $5
	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 [$ffb6], a
	xor a
	ld [hProduct], a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, $5
	ld [hMultiplier], 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, $17
	call GetPartyParamLocation
	push hl
	ld a, $2
	call GetPartyParamLocation
	pop de
	xor a
	ld [$cfa9], a
	ld [MonType], a
	ld c, $4
.asm_f8ce
	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, .asm_f8ce
	ret
; f8ec


Functionf8ec: ; f8ec
	ld a, [StringBuffer1]
	push af
	ld a, [$d074]
	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 Function7969
	jr .asm_f91d

.asm_f91a
	call Functionf963

.asm_f91d
	ld a, [hl]
	dec a
	push hl
	ld hl, $5b00
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	ld b, a
	ld de, StringBuffer1
	ld [de], a
	pop hl
	push bc
	ld bc, $0015
	ld a, [MonType]
	cp WILDMON
	jr nz, .asm_f942
	ld bc, $0006

.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 [$d074], a
	pop af
	ld [StringBuffer1], a
	ret
; f963

Functionf963: ; f963
	ld a, [CurPartyMon]
	call AddNTimes

Function7969: ; 7969
	ld a, [$cfa9]
	ld c, a
	ld b, $0
	add hl, bc
	ret
; f971


; no known jump sources
Functionf971: ; f971 (3:7971)
	push de
	ld a, [rSVBK] ; $ff00+$70
	ld d, a
	push de
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	inc a
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	cp $4
	jr z, .asm_f9a8
	ld a, [$c64e]
	and a
	ld c, $0
	jr nz, .asm_f9b2
	ld hl, $79ba
	ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength)
	ld b, a
.asm_f994
	ld a, [hli]
	cp b
	jr nc, .asm_f99b
	inc hl
	jr .asm_f994
.asm_f99b
	ld b, [hl]
	call Random
	cp b
	ld c, $0
	jr c, .asm_f9b2
	ld c, $2
	jr .asm_f9b2
.asm_f9a8
	ld a, [$c64e]
	and a
	ld c, $1
	jr nz, .asm_f9b2
	ld c, $2
.asm_f9b2
	pop de
	ld e, a
	ld a, d
	ld [rSVBK], a ; $ff00+$70
	ld a, e
	pop de
	ret
; f9ba (3:79ba)

INCBIN "baserom.gbc",$f9ba,$f9ea - $f9ba


Functionf9ea: ; f9ea
	ld a, $2
	call GetPartyParamLocation
	ld a, [$d262]
	ld b, a
	ld c, $4
.asm_f9f5
	ld a, [hli]
	cp b
	jr z, .asm_f9fe
	dec c
	jr nz, .asm_f9f5
	and a
	ret

.asm_f9fe
	ld hl, $7a06
	call PrintText
	scf
	ret
; fa06

INCBIN "baserom.gbc",$fa06,$fa0b - $fa06


SECTION "bank4", ROMX, BANK[$4]

Function10000: ; 10000
	ld hl, Options
	set 4, [hl]
	call Function1068a
.asm_10008
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_1001a
	call Function10026
	call DelayFrame
	jr .asm_10008

.asm_1001a
	ld a, [$cf65]
	ld [$d0d6], a
	ld hl, Options
	res 4, [hl]
	ret
; 10026

Function10026: ; 10026
	ld a, [$cf63]
	ld hl, $4030
	call Function1086b
	jp [hl]
; 10030


; no known jump sources
Jumptable_10030: ; 10030 (4:4030)
	dw Function10046
	dw Function10056
	dw Function10067
	dw Function10186
	dw Function10198
	dw Function10094
	dw Function100a6
	dw Function100d3
	dw Function100e8
	dw Function10874
	dw Function1087e


; no known jump sources
Function10046: ; 10046 (4:4046)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	ld a, [$cf64]
	ld [$cf63], a
	call Function10a40
	ret

; no known jump sources
Function10056: ; 10056 (4:4056)
	xor a
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function10067: ; 10067 (4:4067)
	ld hl, $4a4f
	call Function1d3c
	ld a, [$d0d9]
	ld [$cf88], a
	ld a, [$d0df]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0df], a
	ld a, [$cfa9]
	ld [$d0d9], a
	ld b, $7
	ld c, $3
	call Function108d4
	ret c
	call Function101c5
	ret

; no known jump sources
Function10094: ; 10094 (4:4094)
	ld a, $2
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function100a6: ; 100a6 (4:40a6)
	ld hl, $4a7f
	call Function1d3c
	ld a, [$d0da]
	ld [$cf88], a
	ld a, [$d0e0]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e0], a
	ld a, [$cfa9]
	ld [$d0da], a
	ld b, $3
	ld c, $7
	call Function108d4
	ret c
	call Function101c5
	ret

; no known jump sources
Function100d3: ; 100d3 (4:40d3)
	ld a, $3
	ld [$cf65], a
	call Function10a36
	call Function109bb
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function100e8: ; 100e8 (4:40e8)
	callba Function2c76f
	ld b, $5
	ld c, $1
	call Function108d4
	ret c
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr nz, .asm_1010a
	ld hl, $413b
	ld de, $4153
	jr .asm_10110
.asm_1010a
	ld hl, $4124
	ld de, $4137
.asm_10110
	push de
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	pop hl
	ret c
	ld a, [$cfa9]
	dec a
	call Function1086b
	jp [hl]
; 10124 (4:4124)

INCBIN "baserom.gbc",$10124,$10159 - $10124
	callba Function2c7bf
	ret c
	callba Function2c7fb
	jr c, .asm_10179
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	res 4, [hl]
	callba Function2c867
	pop af
	ld [Options], a ; $cfcc
.asm_10179
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	call Function1089a
	call Function10a40
	ret

; no known jump sources
Function10186: ; 10186 (4:4186)
	ld a, $1
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function10198: ; 10198 (4:4198)
	ld hl, $4aaf
	call Function1d3c
	ld a, [$d0db]
	ld [$cf88], a
	ld a, [$d0e1]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e1], a
	ld a, [$cfa9]
	ld [$d0db], a
	ld b, $1
	ld c, $5
	call Function108d4
	ret c
	call Function101c5
	ret

; known jump sources: 10090 (4:4090), 100cf (4:40cf), 101c1 (4:41c1)
Function101c5: ; 101c5 (4:41c5)
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr nz, .asm_101f9
	callba CheckSelectableItem
	ld a, [$d142]
	and a
	jr nz, .asm_101eb
	callba CheckItemMenu
	ld a, [$d142]
	and a
	jr nz, .asm_10207
	jr .asm_10227
.asm_101eb
	callba CheckItemMenu
	ld a, [$d142]
	and a
	jr nz, .asm_1020f
	jr .asm_1022f
.asm_101f9
	callba CheckSelectableItem
	ld a, [$d142]
	and a
	jr nz, .asm_10217
	jr .asm_1021f
.asm_10207
	ld hl, $4249
	ld de, $426a
	jr .asm_10235
.asm_1020f
	ld hl, $4274
	ld de, $4291
	jr .asm_10235
.asm_10217
	ld hl, $4299
	ld de, $42ac
	jr .asm_10235
.asm_1021f
	ld hl, $42b0
	ld de, $42c7
	jr .asm_10235
.asm_10227
	ld hl, $42cd
	ld de, $42ea
	jr .asm_10235
.asm_1022f
	ld hl, $42f2
	ld de, $430b
.asm_10235
	push de
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	pop hl
	ret c
	ld a, [$cfa9]
	dec a
	call Function1086b
	jp [hl]
; 10249 (4:4249)

INCBIN "baserom.gbc",$10249,$10311 - $10249
	callba CheckItemMenu
	ld a, [$d142]
	ld hl, $431f
	rst $28
	ret

; no known jump sources
Jumptable_1031f: ; 1031f (4:431f)
	dw Function1032d
	dw Function1032d
	dw Function1032d
	dw Function1032d
	dw Function10334
	dw Function10338
	dw Function10355


; known jump sources: 1035c (4:435c)
Function1032d: ; 1032d (4:432d)
	ld hl, $4af3
	call Function10889
	ret

; no known jump sources
Function10334: ; 10334 (4:4334)
	call DoItemEffect
	ret

; no known jump sources
Function10338: ; 10338 (4:4338)
	ld a, [PartyCount] ; $dcd7
	and a
	jr z, .asm_1034e
	call DoItemEffect
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	call Function1089a
	call Function10a40
	ret
.asm_1034e
	ld hl, $4af8
	call Function10889
	ret

; no known jump sources
Function10355: ; 10355 (4:4355)
	call DoItemEffect
	ld a, [$d0ec]
	and a
	jr z, Function1032d
	ld a, $a
	ld [$cf63], a
	ret
; 10364 (4:4364)

INCBIN "baserom.gbc",$10364,$103fd - $10364
	ld a, [PartyCount] ; $dcd7
	and a
	jp z, Function10486
	ld a, [Options] ; $cfcc
	push af
	res 4, a
	ld [Options], a ; $cfcc
	ld a, $8
	ld [PartyMenuActionText], a ; $d141
	call WhiteBGMap
	callba Function5004f
	callba Function50405
	callba Function503e0
.asm_10427
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9
	call DelayFrame
	callba PartyMenuSelect
	jr c, .asm_10475
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr nz, .asm_10453
	ld hl, $448d
	call PrintText
	jr .asm_10427
.asm_10453
	ld a, [$cf63]
	push af
	ld a, [$cf64]
	push af
	call GetCurNick
	ld hl, StringBuffer1 ; $d073
	ld de, $d050
	ld bc, $b
	call CopyBytes
	call Function12bd9
	pop af
	ld [$cf64], a
	pop af
	ld [$cf63], a
.asm_10475
	pop af
	ld [Options], a ; $cfcc
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	call Function1089a
	call Function10a40
	ret

; known jump sources: 10401 (4:4401)
Function10486: ; 10486 (4:4486)
	ld hl, $4af8
	call Function10889
	ret
; 1048d (4:448d)

INCBIN "baserom.gbc",$1048d,$10493 - $1048d


Function10493: ; 10493
	ld hl, Options
	set 4, [hl]
	call Function1068a
.asm_1049b
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_104ad
	call Function104b9
	call DelayFrame
	jr .asm_1049b

.asm_104ad
	ld a, [$cf65]
	ld [$d0d6], a
	ld hl, Options
	res 4, [hl]
	ret
; 104b9

Function104b9: ; 104b9
	ld a, [$cf63]
	ld hl, $44c3
	call Function1086b
	jp [hl]
; 104c3


; no known jump sources
Jumptable_104c3: ; 104c3 (4:44c3)
	dw Function104d9
	dw Function104e9
	dw Function104fa
	dw Function10594
	dw Function105a6
	dw Function10527
	dw Function10539
	dw Function10566
	dw Function10581
	dw Function10874
	dw Function1087e


; no known jump sources
Function104d9: ; 104d9 (4:44d9)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	ld a, [$cf64]
	ld [$cf63], a
	call Function10a40
	ret

; no known jump sources
Function104e9: ; 104e9 (4:44e9)
	xor a
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function104fa: ; 104fa (4:44fa)
	ld hl, $4a4f
	call Function1d3c
	ld a, [$d0d9]
	ld [$cf88], a
	ld a, [$d0df]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0df], a
	ld a, [$cfa9]
	ld [$d0d9], a
	ld b, $7
	ld c, $3
	call Function108d4
	ret c
	call Function105d3
	ret

; no known jump sources
Function10527: ; 10527 (4:4527)
	ld a, $2
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function10539: ; 10539 (4:4539)
	ld hl, $4a7f
	call Function1d3c
	ld a, [$d0da]
	ld [$cf88], a
	ld a, [$d0e0]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e0], a
	ld a, [$cfa9]
	ld [$d0da], a
	ld b, $3
	ld c, $7
	call Function108d4
	ret c
	call Function105d3
	ret

; no known jump sources
Function10566: ; 10566 (4:4566)
	ld a, $3
	ld [$cf65], a
	call Function10a36
	call Function109bb
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function1089a
	ld hl, $4b0c
	call Function10889
	call Function10866
	ret

; no known jump sources
Function10581: ; 10581 (4:4581)
	callba Function2c76f
	ld b, $5
	ld c, $1
	call Function108d4
	ret c
	xor a
	call Function105dc
	ret

; no known jump sources
Function10594: ; 10594 (4:4594)
	ld a, $1
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	call Function10866
	ret

; no known jump sources
Function105a6: ; 105a6 (4:45a6)
	ld hl, $4aaf
	call Function1d3c
	ld a, [$d0db]
	ld [$cf88], a
	ld a, [$d0e1]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e1], a
	ld a, [$cfa9]
	ld [$d0db], a
	ld b, $1
	ld c, $5
	call Function108d4
	ret c
	call Function105d3
	ret

; known jump sources: 10523 (4:4523), 10562 (4:4562), 105cf (4:45cf)
Function105d3: ; 105d3 (4:45d3)
	callba CheckItemContext
	ld a, [$d142]

; known jump sources: 10590 (4:4590)
Function105dc: ; 105dc (4:45dc)
	and a
	jr z, .asm_105e7
	ld hl, $4601
	ld de, $4614
	jr .asm_105ed
.asm_105e7
	ld hl, $4618
	ld de, $4627
.asm_105ed
	push de
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	pop hl
	ret c
	ld a, [$cfa9]
	dec a
	call Function1086b
	jp [hl]
; 10601 (4:4601)

INCBIN "baserom.gbc",$10601,$10629 - $10601
	callba CheckItemContext
	ld a, [$d142]
	ld hl, $4637
	rst $28
	ret

; no known jump sources
Jumptable_10637: ; 10637 (4:4637)
	dw Function10645
	dw Function10645
	dw Function10645
	dw Function10645
	dw Function1064c
	dw Function10656
	dw Function10671


; known jump sources: 10678 (4:4678)
Function10645: ; 10645 (4:4645)
	ld hl, $4af3
	call Function10889
	ret

; no known jump sources
Function1064c: ; 1064c (4:464c)
	call DoItemEffect
	ld a, [$d0ec]
	and a
	jr nz, asm_1066c
	ret

; no known jump sources
Function10656: ; 10656 (4:4656)
	call DoItemEffect
	ld a, [$d0ec]
	and a
	jr nz, asm_1067e
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function10955
	call Function1089a
	call Function10a40
	ret
asm_1066c: ; 1066c (4:466c)
	call WhiteBGMap
	jr asm_1067e

; no known jump sources
Function10671: ; 10671 (4:4671)
	call DoItemEffect
	ld a, [$d0ec]
	and a
	jr z, Function10645
	cp $2
	jr z, asm_10684
asm_1067e: ; 1067e (4:467e)
	ld a, $a
	ld [$cf63], a
	ret
asm_10684: ; 10684 (4:4684)
	xor a
	ld [$d0ec], a
	ret
; 10689 (4:4689)

INCBIN "baserom.gbc",$10689,$1068a - $10689


Function1068a: ; 1068a
	xor a
	ld [$cf63], a
	ld a, [$d0d6]
	and $3
	ld [$cf65], a
	inc a
	add a
	dec a
	ld [$cf64], a
	xor a
	ld [$cf66], a
	xor a
	ld [$d0e3], a
	ret
; 106a5

Function106a5: ; 106a5
	xor a
	ld [hBGMapMode], a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld [$d0e3], a
	call Function10955
	call Function10a40
	ret
; 106be

Function106be: ; 106be
.asm_106be
	call Function106c7
	call Function1076f
	jr c, .asm_106be
	ret
; 106c7

Function106c7: ; 106c7
	ld a, [$cf63]
	ld hl, $46d1
	call Function1086b
	jp [hl]
; 106d1


; no known jump sources
Jumptable_106d1: ; 106d1 (4:46d1)
	dw Function106d9
	dw Function1073b
	dw Function106ff
	dw Function10726


; no known jump sources
Function106d9: ; 106d9 (4:46d9)
	xor a
	call Function10762
	ld hl, $4a67
	call Function1d3c
	ld a, [$d0d9]
	ld [$cf88], a
	ld a, [$d0df]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0df], a
	ld a, [$cfa9]
	ld [$d0d9], a
	ret

; no known jump sources
Function106ff: ; 106ff (4:46ff)
	ld a, $2
	call Function10762
	ld hl, $4a97
	call Function1d3c
	ld a, [$d0da]
	ld [$cf88], a
	ld a, [$d0e0]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e0], a
	ld a, [$cfa9]
	ld [$d0da], a
	ret

; no known jump sources
Function10726: ; 10726 (4:4726)
	ld a, $3
	call Function10762
	call Function1089a
	callba Function2c76f
	ld a, [CurItem] ; $d106
	ld [CurItem], a ; $d106
	ret

; no known jump sources
Function1073b: ; 1073b (4:473b)
	ld a, $1
	call Function10762
	ld hl, $4ac7
	call Function1d3c
	ld a, [$d0db]
	ld [$cf88], a
	ld a, [$d0e1]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0e1], a
	ld a, [$cfa9]
	ld [$d0db], a
	ret

; known jump sources: 106da (4:46da), 10701 (4:4701), 10728 (4:4728), 1073d (4:473d), 10828 (4:4828), 1085b (4:485b)
Function10762: ; 10762 (4:4762)
	ld [$cf65], a
	call Function10a36
	call Function109bb
	call Function1089a
	ret


Function1076f: ; 1076f
	ld hl, $cf73
	ld a, [hl]
	and $1
	jr nz, .asm_10788
	ld a, [hl]
	and $2
	jr nz, .asm_1078f
	ld a, [hl]
	and $20
	jr nz, .asm_10795
	ld a, [hl]
	and $10
	jr nz, .asm_107a8
	scf
	ret

.asm_10788
	ld a, $1
	ld [$cf66], a
	and a
	ret

.asm_1078f
	xor a
	ld [$cf66], a
	and a
	ret

.asm_10795
	ld a, [$cf63]
	dec a
	and $3
	ld [$cf63], a
	push de
	ld de, SFX_UNKNOWN_62
	call PlaySFX
	pop de
	scf
	ret

.asm_107a8
	ld a, [$cf63]
	inc a
	and $3
	ld [$cf63], a
	push de
	ld de, SFX_UNKNOWN_62
	call PlaySFX
	pop de
	scf
	ret
; 107bb

Function107bb: ; 107bb
	call Function106a5
	ld a, [InputType]
	or a
	jr z, .asm_107ca
	callba Function1de28f

.asm_107ca
	call Function107d7
	call Function1076f
	jr c, .asm_107ca
	xor a
	ld [$cf66], a
	ret
; 107d7

Function107d7: ; 107d7
	ld a, [$cf63]
	ld hl, $47e1
	call Function1086b
	jp [hl]
; 107e1


; no known jump sources
Jumptable_107e1: ; 107e1 (4:47e1)
	dw Function107e9
	dw Function1083b
	dw Function10807
	dw Function10826


; no known jump sources
Function107e9: ; 107e9 (4:47e9)
	xor a
	ld hl, $47ef
	jr asm_1085a
; 107ef (4:47ef)

INCBIN "baserom.gbc",$107ef,$10807 - $107ef

; no known jump sources
Function10807: ; 10807 (4:4807)
	ld a, $2
	ld hl, $480e
	jr asm_1085a
; 1080e (4:480e)

INCBIN "baserom.gbc",$1080e,$10826 - $1080e

; no known jump sources
Function10826: ; 10826 (4:4826)
	ld a, $3
	call Function10762
	call Function1089a
	callba Function2c76f
	ld a, [CurItem] ; $d106
	ld [CurItem], a ; $d106
	ret

; no known jump sources
Function1083b: ; 1083b (4:483b)
	ld a, $1
	ld hl, $4842
	jr asm_1085a
; 10842 (4:4842)

INCBIN "baserom.gbc",$10842,$1085a - $10842
asm_1085a: ; 1085a (4:485a)
	push hl
	call Function10762
	pop hl
	call Function1d3c
	call Function350c
	ret

; known jump sources: 10063 (4:4063), 100a2 (4:40a2), 100e4 (4:40e4), 10194 (4:4194), 104f6 (4:44f6), 10535 (4:4535), 1057d (4:457d), 105a2 (4:45a2)
Function10866: ; 10866 (4:4866)
	ld hl, $cf63
	inc [hl]
	ret


Function1086b: ; 1086b
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 10874


; no known jump sources
Function10874: ; 10874 (4:4874)
	ld hl, $cf63
	set 7, [hl]
	xor a
	ld [$cf66], a
	ret

; no known jump sources
Function1087e: ; 1087e (4:487e)
	ld hl, $cf63
	set 7, [hl]
	ld a, $1
	ld [$cf66], a
	ret

; known jump sources: 10330 (4:4330), 10351 (4:4351), 10489 (4:4489), 1057a (4:457a), 10648 (4:4648), 1092c (4:492c)
Function10889: ; 10889 (4:4889)
	ld a, [Options] ; $cfcc
	push af
	set 4, a
	ld [Options], a ; $cfcc
	call PrintText
	pop af
	ld [Options], a ; $cfcc
	ret

; known jump sources: 10060 (4:4060), 1009f (4:409f), 100e1 (4:40e1), 1017f (4:417f), 10191 (4:4191), 10347 (4:4347), 1047f (4:447f), 104f3 (4:44f3), 10532 (4:4532), 10574 (4:4574), 1059f (4:459f), 10665 (4:4665), 1072b (4:472b), 1076b (4:476b), 1082b (4:482b)
Function1089a: ; 1089a (4:489a)
	call WaitBGMap


Function1089d: ; 1089d
	ld a, [$cf65]
	and $3
	ld e, a
	ld d, $0
	ld a, [BattleType]
	cp $3
	jr z, .asm_108b3
	ld a, [PlayerGender]
	bit 0, a
	jr nz, .asm_108c5

.asm_108b3
	ld hl, $48cc
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	ld hl, $9500
	ld bc, $040f
	call Request2bpp
	ret

.asm_108c5
	callba Function48e81
	ret
; 108cc

INCBIN "baserom.gbc",$108cc,$108d4 - $108cc

; known jump sources: 1008c (4:408c), 100cb (4:40cb), 100f2 (4:40f2), 101bd (4:41bd), 1051f (4:451f), 1055e (4:455e), 1058b (4:458b), 105cb (4:45cb)
Function108d4: ; 108d4 (4:48d4)
	ld hl, $cf73
	ld a, [$d0e3]
	and a
	jr nz, .asm_10931
	ld a, [hl]
	and $1
	jr nz, .asm_108f8
	ld a, [hl]
	and $2
	jr nz, .asm_108fa
	ld a, [hl]
	and $20
	jr nz, .asm_10901
	ld a, [hl]
	and $10
	jr nz, .asm_10912
	ld a, [hl]
	and $4
	jr nz, .asm_10923
	scf
	ret
.asm_108f8
	and a
	ret
.asm_108fa
	ld a, $9
	ld [$cf63], a
	scf
	ret
.asm_10901
	ld a, b
	ld [$cf63], a
	ld [$cf64], a
	push de
	ld de, $62
	call PlaySFX
	pop de
	scf
	ret
.asm_10912
	ld a, c
	ld [$cf63], a
	ld [$cf64], a
	push de
	ld de, $62
	call PlaySFX
	pop de
	scf
	ret
.asm_10923
	callba Function2490c
	ld hl, $4b07
	call Function10889
	scf
	ret
.asm_10931
	ld a, [hl]
	and $5
	jr nz, .asm_1093d
	ld a, [hl]
	and $2
	jr nz, .asm_1094f
	scf
	ret
.asm_1093d
	callba Function2490c
	ld de, $20
	call WaitPlaySFX
	ld de, $20
	call WaitPlaySFX
.asm_1094f
	xor a
	ld [$d0e3], a
	scf
	ret


Function10955: ; 10955
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	ld hl, $4b16
	ld de, VTiles2
	ld bc, $0600
	ld a, $4
	call FarCopyBytes
	ld hl, $c4b4
	ld bc, $00dc
	ld a, $24
	call ByteFill
	ld hl, $c4b9
	ld bc, $0b0f
	call ClearBox
	ld hl, TileMap
	ld a, $28
	ld c, $14
.asm_1098a
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_1098a
	call Function109bb
	call Function109a5
	ld hl, $c590
	ld bc, $0412
	call TextBox
	call EnableLCD
	call Function1089d
	ret
; 109a5

Function109a5: ; 109a5
	ld hl, $c4dc
	ld a, $50
	ld de, $000f
	ld b, $3
.asm_109af
	ld c, $5
.asm_109b1
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_109b1
	add hl, de
	dec b
	jr nz, .asm_109af
	ret
; 109bb

Function109bb: ; 109bb
	ld a, [$cf65]
	ld d, a
	swap a
	sub d
	ld d, $0
	ld e, a
	ld hl, $49e1
	add hl, de
	ld d, h
	ld e, l
	ld hl, $c52c
	ld c, $3
.asm_109d0
	ld b, $5
.asm_109d2
	ld a, [de]
	inc de
	ld [hli], a
	dec b
	jr nz, .asm_109d2
	ld a, c
	ld c, $f
	add hl, bc
	ld c, a
	dec c
	jr nz, .asm_109d0
	ret
; 109e1

INCBIN "baserom.gbc",$109e1,$10a36 - $109e1

; known jump sources: 1005a (4:405a), 10099 (4:4099), 100d8 (4:40d8), 1018b (4:418b), 104ed (4:44ed), 1052c (4:452c), 1056b (4:456b), 10599 (4:4599), 10765 (4:4765)
Function10a36: ; 10a36 (4:4a36)
	ld hl, $c4cd
	ld bc, $a0f
	call ClearBox
	ret


Function10a40: ; 10a40
	call WaitBGMap
	ld b, $14
	call GetSGBLayout
	call Function32f9
	call DelayFrame
	ret
; 10a4f

INCBIN "baserom.gbc",$10a4f,$10b16 - $10a4f

PackGFX:
INCBIN "gfx/misc/pack.2bpp"

Function113d6: ; 113d6
	call Function114dd
	ret
; 113da

Function113da: ; 113da
	xor a
	ld [$dc2d], a
	ld [$dc3a], a
	ld [$dc1c], a
	ret
; 113e5

Function113e5: ; 113e5
	xor a
	ld [$d464], a

Function113e9: ; 113e9
	ld a, [$d464]
	cp 3
	jr c, .asm_113f2
	ld a, 3

.asm_113f2
	ld e, a
	ld d, 0
	ld hl, .data_113fd
	add hl, de
	ld a, [hl]
	jp Function1142e
; 113fd

.data_113fd
	db 20, 10, 5, 3
; 11401

Function11401: ; 11401
	call Function1143c
	ret nc
	ld hl, $d464
	ld a, [hl]
	cp 3
	jr nc, .asm_1140e
	inc [hl]

.asm_1140e
	call Function113e9
	scf
	ret
; 11413

Function11413: ; 11413
	ld a, 1

Function11415: ; 11415
	ld [hl], a
	push hl
	call UpdateTime
	pop hl
	inc hl
	call Function11621
	ret
; 11420

Function11420: ; 11420
	inc hl
	push hl
	call Function115cf
	call Function115c8
	pop hl
	dec hl
	call Function11586
	ret
; 1142e

Function1142e: ; 1142e
	ld hl, $d465
	ld [hl], a
	call UpdateTime
	ld hl, $d466
	call Function1162e
	ret
; 1143c

Function1143c: ; 1143c
	ld hl, $d466
	call Function115d6
	call Function115ae
	ld hl, $d465
	call Function11586
	ret
; 1144c

Function1144c: ; 1144c
	ld hl, $dc1c
	jp Function11413
; 11452

Function11452: ; 11452
	ld hl, $dc1c
	call Function11420
	ret nc
	xor a
	ld hl, $dc1e
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, $dc4c
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld hl, $dc50
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld hl, $dc54
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld hl, $dc58
	ld a, [hl]
	and a
	jr z, .asm_11480
	dec [hl]
	jr nz, .asm_11483

.asm_11480
	call Function11485

.asm_11483
	jr Function1144c
; 11485

Function11485: ; 11485
	call Random
	and 3
	add 3
	ld [$dc58], a
	ret
; 11490

Function11490: ; 11490
	ld a, $14
	ld [$d46c], a
	ld a, $0
	ld [$d46d], a
	call UpdateTime
	ld hl, $dc35
	call Function11613
	ret
; 114a4


; no known jump sources
Function114a4: ; 114a4 (4:54a4)
	ld hl, $dc35
	call Function115db
	ld a, [$cfd7]
	and a
	jr nz, .asm_114d4
	ld a, [$cfd6]
	and a
	jr nz, .asm_114d4
	ld a, [$cfd4]
	ld b, a
	ld a, [$d46d]
	sub b
	jr nc, .asm_114c2
	add $3c
.asm_114c2
	ld [$d46d], a
	ld a, [$cfd5]
	ld b, a
	ld a, [$d46c]
	sbc b
	ld [$d46c], a
	jr c, .asm_114d4
	and a
	ret
.asm_114d4
	xor a
	ld [$d46c], a
	ld [$d46d], a
	scf
	ret


Function114dd: ; 114dd
	call UpdateTime
	ld hl, $dc23
	call Function11621
	ret
; 114e7

Function114e7: ; 114e7
	ld hl, $dc23
	call Function115cf
	call Function115c8
	and a
	jr z, .asm_114fa

	ld b, a
	callba ApplyPokerusTick

.asm_114fa
	xor a
	ret
; 114fc

Function114fc: ; 114fc
	ld a, $2
	ld hl, $dc3a
	ld [hl], a
	call UpdateTime
	ld hl, $dc3b
	call Function11621
	ret
; 1150c

Function1150c: ; 1150c
	ld hl, $dc3b
	call Function115cf
	call Function115c8
	ld hl, $dc3a
	call Function11586
	ret
; 1151c

Function1151c: ; 1151c
	ld hl, $dc1e
	set 2, [hl]
	ret
; 11522

Function11522: ; 11522
	and a
	ld hl, $dc1e
	bit 2, [hl]
	ret nz
	scf
	ret
; 1152b

Function1152b: ; 1152b
	call Function11534
	ld hl, $dc2d
	jp Function11415
; 11534

Function11534: ; 11534
	call GetWeekday
	ld c, a
	ld a, $5
	sub c
	jr z, .asm_1153f
	jr nc, .asm_11541

.asm_1153f
	add $7

.asm_11541
	ret
; 11542

Function11542: ; 11542
	ld hl, $dc2d
	jp Function11420
; 11548

Function11548: ; 11548
	ld a, $0
	call GetSRAMBank
	ld hl, $abfa
	ld a, [hli]
	ld [Buffer1], a
	ld a, [hl]
	ld [Buffer2], a
	call CloseSRAM
	ld hl, Buffer1
	call Function11420
	jr nc, .asm_11572
	ld hl, Buffer1
	call Function11413
	call CloseSRAM
	callba Function1050c8

.asm_11572
	ld a, $0
	call GetSRAMBank
	ld hl, Buffer1
	ld a, [hli]
	ld [$abfa], a
	ld a, [hl]
	ld [$abfb], a
	call CloseSRAM
	ret
; 11586

Function11586: ; 11586
	cp $ff
	jr z, .asm_11595
	ld c, a
	ld a, [hl]
	sub c
	jr nc, .asm_11590
	xor a

.asm_11590
	ld [hl], a
	jr z, .asm_11595
	xor a
	ret

.asm_11595
	xor a
	ld [hl], a
	scf
	ret
; 11599

Function11599: ; 11599
	ld a, [$cfd7]
	and a
	jr nz, Function115cc
	ld a, [$cfd6]
	and a
	jr nz, Function115cc
	ld a, [$cfd5]
	jr nz, Function115cc
	ld a, [$cfd4]
	ret
; 115ae

Function115ae: ; 115ae
	ld a, [$cfd7]
	and a
	jr nz, Function115cc
	ld a, [$cfd6]
	and a
	jr nz, Function115cc
	ld a, [$cfd5]
	ret
; 115be

Function115be: ; 115be
	ld a, [$cfd7]
	and a
	jr nz, Function115cc
	ld a, [$cfd6]
	ret
; 115c8

Function115c8: ; 115c8
	ld a, [$cfd7]
	ret
; 115cc

Function115cc: ; 115cc
	ld a, $ff
	ret
; 115cf

Function115cf: ; 115cf
	xor a
	jr Function11605
; 115d2

Function115d2: ; 115d2
	inc hl
	xor a
	jr Function115f8
; 115d6

Function115d6: ; 115d6
	inc hl
	inc hl
	xor a
	jr Function115eb
; 115db

Function115db: ; 115db
	inc hl
	inc hl
	inc hl
	ld a, [hSeconds]
	ld c, a
	sub [hl]
	jr nc, .asm_115e6
	add 60
.asm_115e6
	ld [hl], c
	dec hl
	ld [$cfd4], a

Function115eb: ; 115eb
	ld a, [hMinutes]
	ld c, a
	sbc [hl]
	jr nc, .asm_115f3
	add 60
.asm_115f3
	ld [hl], c
	dec hl
	ld [$cfd5], a

Function115f8: ; 115f8
	ld a, [hHours]
	ld c, a
	sbc [hl]
	jr nc, .asm_11600
	add 24
.asm_11600
	ld [hl], c
	dec hl
	ld [$cfd6], a

Function11605
	ld a, [CurDay]
	ld c, a
	sbc [hl]
	jr nc, .asm_1160e
	add 140
.asm_1160e
	ld [hl], c
	ld [$cfd7], a
	ret
; 11613

Function11613: ; 11613
	ld a, [CurDay]
	ld [hli], a
	ld a, [hHours]
	ld [hli], a
	ld a, [hMinutes]
	ld [hli], a
	ld a, [hSeconds]
	ld [hli], a
	ret
; 11621

Function11621: ; 11621
	ld a, [CurDay]
	ld [hl], a
	ret
; 11626

Function11626: ; 11626
	ld a, [CurDay]
	ld [hli], a
	ld a, [hHours]
	ld [hli], a
	ret
; 1162e

Function1162e: ; 1162e
	ld a, [CurDay]
	ld [hli], a
	ld a, [hHours]
	ld [hli], a
	ld a, [hMinutes]
	ld [hli], a
	ret
; 11639

CanLearnTMHMMove: ; 11639
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld hl, BaseTMHM
	push hl

	ld a, [$d262]
	ld b, a
	ld c, 0
	ld hl, TMHMMoves
.loop
	ld a, [hli]
	and a
	jr z, .end
	cp b
	jr z, .asm_11659
	inc c
	jr .loop

.asm_11659
	pop hl
	ld b, CHECK_FLAG
	push de
	ld d, 0
	ld a, PREDEF_FLAG
	call Predef
	pop de
	ret

.end
	pop hl
	ld c, 0
	ret
; 1166a

GetTMHMMove: ; 1166a
	ld a, [$d265]
	dec a
	ld hl, TMHMMoves
	ld b, 0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	ret
; 1167a

TMHMMoves: ; 1167a
	db DYNAMICPUNCH
	db HEADBUTT
	db CURSE
	db ROLLOUT
	db ROAR
	db TOXIC
	db ZAP_CANNON
	db ROCK_SMASH
	db PSYCH_UP
	db HIDDEN_POWER
	db SUNNY_DAY
	db SWEET_SCENT
	db SNORE
	db BLIZZARD
	db HYPER_BEAM
	db ICY_WIND
	db PROTECT
	db RAIN_DANCE
	db GIGA_DRAIN
	db ENDURE
	db FRUSTRATION
	db SOLARBEAM
	db IRON_TAIL
	db DRAGONBREATH
	db THUNDER
	db EARTHQUAKE
	db RETURN
	db DIG
	db PSYCHIC_M
	db SHADOW_BALL
	db MUD_SLAP
	db DOUBLE_TEAM
	db ICE_PUNCH
	db SWAGGER
	db SLEEP_TALK
	db SLUDGE_BOMB
	db SANDSTORM
	db FIRE_BLAST
	db SWIFT
	db DEFENSE_CURL
	db THUNDERPUNCH
	db DREAM_EATER
	db DETECT
	db REST
	db ATTRACT
	db THIEF
	db STEEL_WING
	db FIRE_PUNCH
	db FURY_CUTTER
	db NIGHTMARE
	db CUT
	db FLY
	db SURF
	db STRENGTH
	db FLASH
	db WHIRLPOOL
	db WATERFALL

; Move tutor
	db FLAMETHROWER
	db THUNDERBOLT
	db ICE_BEAM

	db 0 ; end
; 116b7

Function116b7: ; 0x116b7
	call Function2ed3
	call Function116c1
	call Function2b74
	ret
; 0x116c1

Function116c1: ; 116c1
	ld hl, PlayerSDefLevel
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, EnemyAtkLevel
	ld [hl], b
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	call Function116f8
	call DelayFrame
.asm_116e5
	call Function11915
	jr nc, .asm_116e5
	pop af
	ld [$ffaa], a
	pop af
	ld [$ffde], a
	pop af
	ld [Options], a
	call ClearJoypadPublic
	ret
; 116f8

Function116f8: ; 116f8
	call WhiteBGMap
	ld b, $8
	call GetSGBLayout
	call DisableLCD
	call Function11c51
	call Function118a8
	ld a, $e3
	ld [rLCDC], a
	call Function1171d
	call WaitBGMap
	call WaitTop
	call Function32f9
	call Function11be0
	ret
; 1171d

Function1171d: ; 1171d
	ld a, [EnemyAtkLevel]
	and $7
	ld e, a
	ld d, $0
	ld hl, $572e
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 1172e


; no known jump sources
Jumptable_1172e: ; 1172e (4:572e)
	dw Function1173e
	dw Function1178d
	dw Function117ae
	dw Function117d1
	dw Function117f5
	dw Function1182c
	dw Function1173e
	dw Function1173e


; no known jump sources
Function1173e: ; 1173e (4:573e)
	ld a, [CurPartySpecies] ; $d108
	ld [$d265], a
	ld hl, Function8e83f
	ld a, BANK(Function8e83f)
	ld e, $1
	rst FarCall ;  ; indirect jump to Function8e83f (8e83f (23:683f))
	ld a, [CurPartySpecies] ; $d108
	ld [$d265], a
	call GetPokemonName
	ld hl, $c4cd
	call PlaceString
	ld l, c
	ld h, b
	ld de, $5780
	call PlaceString
	inc de
	ld hl, $c4f5
	call PlaceString
	callba GetGender
	jr c, .asm_1177c
	ld a, $ef
	jr nz, .asm_11778
	ld a, $f5
.asm_11778
	ld hl, $c4c9
	ld [hl], a
.asm_1177c
	call Function1187b
	ret
; 11780 (4:5780)

INCBIN "baserom.gbc",$11780,$1178d - $11780

; no known jump sources
Function1178d: ; 1178d (4:578d)
	callba GetPlayerIcon
	call Function11847
	ld hl, $c4cd
	ld de, $57a3
	call PlaceString
	call Function11882
	ret
; 117a3 (4:57a3)

INCBIN "baserom.gbc",$117a3,$117ae - $117a3

; no known jump sources
Function117ae: ; 117ae (4:57ae)
	ld de, $43c0
	ld b, $30
	call Function11847
	ld hl, $c4cd
	ld de, $57c3
	call PlaceString
	call Function11882
	ret
; 117c3 (4:57c3)

INCBIN "baserom.gbc",$117c3,$117d1 - $117c3

; no known jump sources
Function117d1: ; 117d1 (4:57d1)
	ld de, $4fc0
	ld b, $30
	call Function11847
	ld hl, $c4cd
	ld de, $57e6
	call PlaceString
	call Function11882
	ret
; 117e6 (4:57e6)

INCBIN "baserom.gbc",$117e6,$117f5 - $117e6

; no known jump sources
Function117f5: ; 117f5 (4:57f5)
	ld de, $7380
	ld hl, $8000
	ld bc, $3104
	call Request2bpp
	xor a
	ld hl, $c300
	ld [hli], a
	ld [hl], a
	ld de, $2420
	ld a, $a
	call Function3b2a
	ld hl, $1
	add hl, bc
	ld [hl], $0
	ld hl, $c4cd
	ld de, $5822
	call PlaceString
	call Function11889
	ret
; 11822 (4:5822)

INCBIN "baserom.gbc",$11822,$1182c - $11822

; no known jump sources
Function1182c: ; 1182c (4:582c)
	ld hl, $c4cb
	ld de, $5839
	call PlaceString
	call Function11882
	ret
; 11839 (4:5839)

INCBIN "baserom.gbc",$11839,$11847 - $11839

; known jump sources: 11793 (4:5793), 117b3 (4:57b3), 117d6 (4:57d6)
Function11847: ; 11847 (4:5847)
	push de
	ld hl, $8000
	ld c, $4
	push bc
	call Request2bpp
	pop bc
	ld hl, $c0
	add hl, de
	ld e, l
	ld d, h
	ld hl, $8040
	call Request2bpp
	xor a
	ld hl, $c300
	ld [hli], a
	ld [hl], a
	pop de
	ld b, $a
	ld a, d
	cp $7a
	jr nz, .asm_11873
	ld a, e
	cp $40
	jr nz, .asm_11873
	ld b, $1e
.asm_11873
	ld a, b
	ld de, $2420
	call Function3b2a
	ret

; known jump sources: 1177c (4:577c)
Function1187b: ; 1187b (4:587b)
	ld a, $a
	ld hl, $c51d
	jr asm_11890

; known jump sources: 1179f (4:579f), 117bf (4:57bf), 117e2 (4:57e2), 11835 (4:5835)
Function11882: ; 11882 (4:5882)
	ld a, $7
	ld hl, $c51d
	jr asm_11890

; known jump sources: 1181e (4:581e)
Function11889: ; 11889 (4:5889)
	ld a, $8
	ld hl, $c4f5
	jr asm_11890

; known jump sources: 11880 (4:5880), 11887 (4:5887), 1188e (4:588e)
asm_11890: ; 11890 (4:5890)
	ld [$c6d3], a
	ld a, l
	ld [EnemySDefLevel], a ; $c6d8
	ld a, h
	ld [EnemyAccLevel], a ; $c6d9
	ret


Function1189c: ; 1189c
	push bc
	push af
	ld a, [EnemyAtkLevel]
	sub $3
	ld b, a
	pop af
	dec b
	pop bc
	ret
; 118a8

Function118a8: ; 118a8
	call WaitTop
	ld hl, TileMap
	ld bc, $0168
	ld a, $60
	call ByteFill
	ld hl, $c4b5
	ld bc, $0612
	call Function1189c
	jr nz, .asm_118c4
	ld bc, $0412

.asm_118c4
	call ClearBox
	ld de, $5da2
Function118ca: ; 118ca
	call Function1189c
	jr nz, .asm_118d5
	ld hl, $0055
	add hl, de
	ld d, h
	ld e, l

.asm_118d5
	push de
	ld hl, $c541
	ld bc, $0712
	call Function1189c
	jr nz, .asm_118e7
	ld hl, $c519
	ld bc, $0912

.asm_118e7
	call ClearBox
	ld hl, $c5e1
	ld bc, $0112
	call ClearBox
	pop de
	ld hl, $c542
	ld b, $5
	call Function1189c
	jr nz, .asm_11903
	ld hl, $c51a
	ld b, $6

.asm_11903
	ld c, $11
.asm_11905
	ld a, [de]
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_11905
	push de
	ld de, $0017
	add hl, de
	pop de
	dec b
	jr nz, .asm_11903
	ret
; 11915

Function11915: ; 11915
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_11930
	call Function11968
	callba Function8cf62
	call Function11940
	call DelayFrame
	and a
	ret

.asm_11930
	callab Function8cf53
	call ClearSprites
	xor a
	ld [hSCX], a
	ld [hSCY], a
	scf
	ret
; 11940

Function11940: ; 11940
	xor a
	ld [hBGMapMode], a
	ld hl, $c505
	call Function1189c
	jr nz, .asm_1194e
	ld hl, $c4dd

.asm_1194e
	ld bc, $0112
	call ClearBox
	ld hl, PlayerSDefLevel
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, EnemySDefLevel
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a
	ret
; 11968

Function11968: ; 11968
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $5977
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11977


; no known jump sources
Jumptable_11977: ; 11977 (4:5977)
	dw Function1197b
	dw Function119a1


; no known jump sources
Function1197b: ; 1197b (4:597b)
	ld de, $5018
	call Function1189c
	jr nz, .asm_11985
	ld d, $40
.asm_11985
	ld a, $2
	call Function3b2a
	ld a, c
	ld [EnemyDefLevel], a ; $c6d5
	ld a, b
	ld [$c6d6], a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function119a1: ; 119a1 (4:59a1)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $1
	jr nz, .asm_119b9
	ld a, [hl]
	and $2
	jr nz, .asm_119e7
	ld a, [hl]
	and $8
	jr nz, .asm_119cf
	ld a, [hl]
	and $4
	jr nz, .asm_119f4
	ret
.asm_119b9
	call Function11a0b
	cp $1
	jr z, .asm_119f4
	cp $2
	jr z, .asm_119e7
	cp $3
	jr z, .asm_119eb
	call Function11c11
	call Function11b14
	ret nc
.asm_119cf
	ld hl, EnemyDefLevel ; $c6d5
	ld c, [hl]
	inc hl
	ld b, [hl]
	ld hl, $c
	add hl, bc
	ld [hl], $8
	ld hl, $d
	add hl, bc
	ld [hl], $4
	call Function1189c
	ret nz
	inc [hl]
	ret
.asm_119e7
	call Function11bbc
	ret
.asm_119eb
	call Function11bf7
	ld hl, $cf63
	set 7, [hl]
	ret
.asm_119f4
	ld hl, $cf64
	ld a, [hl]
	xor $1
	ld [hl], a
	jr z, .asm_11a04
	ld de, $5ce7
	call Function118ca
	ret
.asm_11a04
	ld de, $5da2
	call Function118ca
	ret

; known jump sources: 119b9 (4:59b9)
Function11a0b: ; 11a0b (4:5a0b)
	ld hl, EnemyDefLevel ; $c6d5
	ld c, [hl]
	inc hl
	ld b, [hl]

; known jump sources: 11aa3 (4:5aa3), 11ac5 (4:5ac5)
Function11a11: ; 11a11 (4:5a11)
	ld hl, $d
	add hl, bc
	ld a, [hl]
	push bc
	ld b, $4
	call Function1189c
	jr nz, .asm_11a1f
	inc b
.asm_11a1f
	cp b
	pop bc
	jr nz, .asm_11a39
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $3
	jr c, .asm_11a33
	cp $6
	jr c, .asm_11a36
	ld a, $3
	ret
.asm_11a33
	ld a, $1
	ret
.asm_11a36
	ld a, $2
	ret
.asm_11a39
	xor a
	ret

; no known jump sources
Function11a3b: ; 11a3b (4:5a3b)
	call Function11a8b
	ld hl, $d
	add hl, bc
	ld a, [hl]
	ld e, a
	swap e
	ld hl, $7
	add hl, bc
	ld [hl], e
	ld d, $4
	call Function1189c
	jr nz, .asm_11a53
	inc d
.asm_11a53
	cp d
	ld de, $5a79
	ld a, $0
	jr nz, .asm_11a60
	ld de, $5a82
	ld a, $1
.asm_11a60
	ld hl, $e
	add hl, bc
	add [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, de
	ld a, [hl]
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret
; 11a79 (4:5a79)

INCBIN "baserom.gbc",$11a79,$11a8b - $11a79

; known jump sources: 11a3b (4:5a3b)
Function11a8b: ; 11a8b (4:5a8b)
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_11b02
	ld a, [hl]
	and $80
	jr nz, .asm_11ae9
	ld a, [hl]
	and $20
	jr nz, .asm_11ac5
	ld a, [hl]
	and $10
	jr nz, .asm_11aa3
	ret
.asm_11aa3
	call Function11a11
	and a
	jr nz, .asm_11ab7
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $8
	jr nc, .asm_11ab4
	inc [hl]
	ret
.asm_11ab4
	ld [hl], $0
	ret
.asm_11ab7
	cp $3
	jr nz, .asm_11abc
	xor a
.asm_11abc
	ld e, a
	add a
	add e
	ld hl, $c
	add hl, bc
	ld [hl], a
	ret
.asm_11ac5
	call Function11a11
	and a
	jr nz, .asm_11ad8
	ld hl, $c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_11ad5
	dec [hl]
	ret
.asm_11ad5
	ld [hl], $8
	ret
.asm_11ad8
	cp $1
	jr nz, .asm_11ade
	ld a, $4
.asm_11ade
	dec a
	dec a
	ld e, a
	add a
	add e
	ld hl, $c
	add hl, bc
	ld [hl], a
	ret
.asm_11ae9
	ld hl, $d
	add hl, bc
	ld a, [hl]
	call Function1189c
	jr nz, .asm_11af9
	cp $5
	jr nc, .asm_11aff
	inc [hl]
	ret
.asm_11af9
	cp $4
	jr nc, .asm_11aff
	inc [hl]
	ret
.asm_11aff
	ld [hl], $0
	ret
.asm_11b02
	ld hl, $d
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_11b0c
	dec [hl]
	ret
.asm_11b0c
	ld [hl], $4
	call Function1189c
	ret nz
	inc [hl]
	ret

; known jump sources: 119cb (4:59cb)
Function11b14: ; 11b14 (4:5b14)
	ld a, [EnemySAtkLevel] ; $c6d7

; known jump sources: 121af (4:61af)
Function11b17: ; 11b17 (4:5b17)
	ld a, [$c6d3]
	ld c, a
	ld a, [PlayerEvaLevel] ; $c6d2
	cp c
	ret nc
	ld a, [EnemySAtkLevel] ; $c6d7
	call Function11bd0
	ld [hl], a
	ld hl, PlayerEvaLevel ; $c6d2
	inc [hl]
	call Function11bd0
	ld a, [hl]
	cp $50
	jr z, .asm_11b37
	ld [hl], $f2
	and a
	ret
.asm_11b37
	scf
	ret
; 11b39 (4:5b39)

INCBIN "baserom.gbc",$11b39,$11bbc - $11b39

; known jump sources: 119e7 (4:59e7), 1208d (4:608d)
Function11bbc: ; 11bbc (4:5bbc)
	ld hl, PlayerEvaLevel ; $c6d2
	ld a, [hl]
	and a
	ret z
	dec [hl]
	call Function11bd0
	ld [hl], $f2
	inc hl
	ld a, [hl]
	cp $f2
	ret nz
	ld [hl], $eb
	ret

; known jump sources: 11b23 (4:5b23), 11b2b (4:5b2b), 11bc3 (4:5bc3), 12071 (4:6071), 12098 (4:6098)
Function11bd0: ; 11bd0 (4:5bd0)
	push af
	ld hl, PlayerSDefLevel ; $c6d0
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [PlayerEvaLevel] ; $c6d2
	ld e, a
	ld d, $0
	add hl, de
	pop af
	ret


Function11be0: ; 11be0
	ld hl, PlayerSDefLevel
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld [hl], $f2
	inc hl
	ld a, [$c6d3]
	dec a
	ld c, a
	ld a, $eb
.asm_11bf0
	ld [hli], a
	dec c
	jr nz, .asm_11bf0
	ld [hl], $50
	ret
; 11bf7


; known jump sources: 119eb (4:59eb), 120a1 (4:60a1)
Function11bf7: ; 11bf7 (4:5bf7)
	ld hl, PlayerSDefLevel ; $c6d0
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$c6d3]
	ld c, a
.asm_11c01
	ld a, [hl]
	cp $eb
	jr z, .asm_11c0a
	cp $f2
	jr nz, .asm_11c0c
.asm_11c0a
	ld [hl], $50
.asm_11c0c
	inc hl
	dec c
	jr nz, .asm_11c01
	ret

; known jump sources: 119c8 (4:59c8), 12061 (4:6061)
Function11c11: ; 11c11 (4:5c11)
	ld hl, EnemyDefLevel ; $c6d5
	ld c, [hl]
	inc hl
	ld b, [hl]
	ld hl, $6
	add hl, bc
	ld a, [hl]
	ld hl, $4
	add hl, bc
	add [hl]
	sub $8
	srl a
	srl a
	srl a
	ld e, a
	ld hl, $7
	add hl, bc
	ld a, [hl]
	ld hl, $5
	add hl, bc
	add [hl]
	sub $10
	srl a
	srl a
	srl a
	ld d, a
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $14
.asm_11c43
	ld a, d
	and a
	jr z, .asm_11c4b
	add hl, bc
	dec d
	jr .asm_11c43
.asm_11c4b
	add hl, de
	ld a, [hl]
	ld [EnemySAtkLevel], a ; $c6d7
	ret


Function11c51: ; 11c51
	call ClearSprites
	callab Function8cf53
	call Functione51
	call Functione5f
	ld de, $5e65
	ld hl, $8eb0
	ld bc, $0401
	call Get1bpp
	ld de, $5e6d
	ld hl, $8f20
	ld bc, $0401
	call Get1bpp
	ld de, $9600
	ld hl, $5cb7
	ld bc, $0010
	ld a, $4
	call FarCopyBytes
	ld de, $87e0
	ld hl, $5cc7
	ld bc, $0020
	ld a, $4
	call FarCopyBytes
	ld a, $5
	ld hl, $c312
	ld [hli], a
	ld [hl], $7e
	xor a
	ld [hSCY], a
	ld [$c3bf], a
	ld [hSCX], a
	ld [$c3c0], a
	ld [$cf63], a
	ld [$cf64], a
	ld [hBGMapMode], a
	ld [PlayerEvaLevel], a
	ld a, $7
	ld [hWX], a
	ret
; 11cb7

INCBIN "baserom.gbc",$11cb7,$11ce7 - $11cb7

NameInputLower:
	db "a b c d e f g h i"
	db "j k l m n o p q r"
	db "s t u v w x y z  "
	db "× ( ) : ; [ ] ", $e1, " ", $e2
	db "UPPER  DEL   END "
BoxNameInputLower:
	db "a b c d e f g h i"
	db "j k l m n o p q r"
	db "s t u v w x y z  "
	db "é 'd 'l 'm 'r 's 't 'v 0"
	db "1 2 3 4 5 6 7 8 9"
	db "UPPER  DEL   END "
NameInputUpper:
	db "A B C D E F G H I"
	db "J K L M N O P Q R"
	db "S T U V W X Y Z  "
	db "- ? ! / . ,      "
	db "lower  DEL   END "
BoxNameInputUpper:
	db "A B C D E F G H I"
	db "J K L M N O P Q R"
	db "S T U V W X Y Z  "
	db "× ( ) : ; [ ] ", $e1, " ", $e2
	db "- ? ! ♂ ♀ / . , &"
	db "lower  DEL   END "


INCBIN "baserom.gbc",$11e5d,$11e75 - $11e5d

; no known jump sources
Function11e75: ; 11e75 (4:5e75)
	ld hl, PlayerSDefLevel ; $c6d0
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, [$FF00+$de]
	push af
	xor a
	ld [$FF00+$de], a
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	call Function11e9a
	call DelayFrame
.asm_11e8e
	call Function11fc0
	jr nc, .asm_11e8e
	pop af
	ld [$FF00+$aa], a
	pop af
	ld [$FF00+$de], a
	ret

; known jump sources: 11e88 (4:5e88)
Function11e9a: ; 11e9a (4:5e9a)
	call WhiteBGMap
	call DisableLCD
	call Function11c51
	ld de, $8000
	ld hl, $5ef4
	ld bc, $80
	ld a, $4
	call FarCopyBytes
	xor a
	ld hl, $c300
	ld [hli], a
	ld [hl], a
	ld de, $1810
	ld a, $0
	call Function3b2a
	ld hl, $2
	add hl, bc
	ld [hl], $0
	call Function11f84
	ld a, $e3
	ld [rLCDC], a ; $ff00+$40
	call Function11f74
	ld b, $8
	call GetSGBLayout
	call WaitBGMap
	call WaitTop
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $e4
	call Functioncf8
	call Function11be0
	ld hl, PlayerSDefLevel ; $c6d0
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $10
	add hl, de
	ld [hl], $4e
	ret
; 11ef4 (4:5ef4)

INCBIN "baserom.gbc",$11ef4,$11f74 - $11ef4

; known jump sources: 11ecc (4:5ecc)
Function11f74: ; 11f74 (4:5f74)
	ld a, $21
	ld [$c6d3], a
	ret
; 11f7a (4:5f7a)

INCBIN "baserom.gbc",$11f7a,$11f84 - $11f7a

; known jump sources: 11ec5 (4:5ec5)
Function11f84: ; 11f84 (4:5f84)
	call WaitTop
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $78
	ld a, $60
	call ByteFill
	ld hl, $c518
	ld bc, $f0
	ld a, $7f
	call ByteFill
	ld hl, $c4b5
	ld bc, $412
	call ClearBox
	ld de, $61dd

; known jump sources: 120b6 (4:60b6), 120bd (4:60bd)
Function11fa9: ; 11fa9 (4:5fa9)
	ld hl, $c52d
	ld b, $6
.asm_11fae
	ld c, $13
.asm_11fb0
	ld a, [de]
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_11fb0
	push de
	ld de, $15
	add hl, de
	pop de
	dec b
	jr nz, .asm_11fae
	ret

; known jump sources: 11e8e (4:5e8e)
Function11fc0: ; 11fc0 (4:5fc0)
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_11fdb
	call Function12008
	callba Function8cf62
	call Function11feb
	call DelayFrame
	and a
	ret
.asm_11fdb
	callab Function8cf53
	call ClearSprites
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	scf
	ret

; known jump sources: 11fd3 (4:5fd3)
Function11feb: ; 11feb (4:5feb)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $c4b5
	ld bc, $412
	call ClearBox
	ld hl, PlayerSDefLevel ; $c6d0
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $c4ca
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 11fca (4:5fca)
Function12008: ; 12008 (4:6008)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $6017
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_12017: ; 12017 (4:6017)
	dw Function1201b
	dw Function1203a


; no known jump sources
Function1201b: ; 1201b (4:601b)
	ld de, $4810
	ld a, $9
	call Function3b2a
	ld a, c
	ld [EnemyDefLevel], a ; $c6d5
	ld a, b
	ld [$c6d6], a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function1203a: ; 1203a (4:603a)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $1
	jr nz, .asm_12052
	ld a, [hl]
	and $2
	jr nz, .asm_1208d
	ld a, [hl]
	and $8
	jr nz, .asm_1207a
	ld a, [hl]
	and $4
	jr nz, .asm_120aa
	ret
.asm_12052
	call Function12185
	cp $1
	jr z, .asm_120aa
	cp $2
	jr z, .asm_1208d
	cp $3
	jr z, .asm_120a1
	call Function11c11
	call Function121ac
	jr c, .asm_1207a
	ld hl, PlayerEvaLevel ; $c6d2
	ld a, [hl]
	cp $10
	ret nz
	inc [hl]
	call Function11bd0
	ld [hl], $f2
	dec hl
	ld [hl], $4e
	ret
.asm_1207a
	ld hl, EnemyDefLevel ; $c6d5
	ld c, [hl]
	inc hl
	ld b, [hl]
	ld hl, $c
	add hl, bc
	ld [hl], $9
	ld hl, $d
	add hl, bc
	ld [hl], $5
	ret
.asm_1208d
	call Function11bbc
	ld hl, PlayerEvaLevel ; $c6d2
	ld a, [hl]
	cp $10
	ret nz
	dec [hl]
	call Function11bd0
	ld [hl], $f2
	inc hl
	ld [hl], $4e
	ret
.asm_120a1
	call Function11bf7
	ld hl, $cf63
	set 7, [hl]
	ret
.asm_120aa
	ld hl, $cf64
	ld a, [hl]
	xor $1
	ld [hl], a
	jr nz, .asm_120ba
	ld de, $61dd
	call Function11fa9
	ret
.asm_120ba
	ld de, $624f
	call Function11fa9
	ret

; no known jump sources
Function120c1: ; 120c1 (4:60c1)
	call Function1210c
	ld hl, $d
	add hl, bc
	ld a, [hl]
	ld e, a
	swap e
	ld hl, $7
	add hl, bc
	ld [hl], e
	cp $5
	ld de, $60f8
	ld a, $0
	jr nz, .asm_120df
	ld de, $6102
	ld a, $1
.asm_120df
	ld hl, $e
	add hl, bc
	add [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, de
	ld a, [hl]
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret
; 120f8 (4:60f8)

INCBIN "baserom.gbc",$120f8,$1210c - $120f8

; known jump sources: 120c1 (4:60c1)
Function1210c: ; 1210c (4:610c)
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_12178
	ld a, [hl]
	and $80
	jr nz, .asm_1216a
	ld a, [hl]
	and $20
	jr nz, .asm_12146
	ld a, [hl]
	and $10
	jr nz, .asm_12124
	ret
.asm_12124
	call Function1218b
	and a
	jr nz, .asm_12138
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $9
	jr nc, .asm_12135
	inc [hl]
	ret
.asm_12135
	ld [hl], $0
	ret
.asm_12138
	cp $3
	jr nz, .asm_1213d
	xor a
.asm_1213d
	ld e, a
	add a
	add e
	ld hl, $c
	add hl, bc
	ld [hl], a
	ret
.asm_12146
	call Function1218b
	and a
	jr nz, .asm_12159
	ld hl, $c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_12156
	dec [hl]
	ret
.asm_12156
	ld [hl], $9
	ret
.asm_12159
	cp $1
	jr nz, .asm_1215f
	ld a, $4
.asm_1215f
	dec a
	dec a
	ld e, a
	add a
	add e
	ld hl, $c
	add hl, bc
	ld [hl], a
	ret
.asm_1216a
	ld hl, $d
	add hl, bc
	ld a, [hl]
	cp $5
	jr nc, .asm_12175
	inc [hl]
	ret
.asm_12175
	ld [hl], $0
	ret
.asm_12178
	ld hl, $d
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_12182
	dec [hl]
	ret
.asm_12182
	ld [hl], $5
	ret

; known jump sources: 12052 (4:6052)
Function12185: ; 12185 (4:6185)
	ld hl, EnemyDefLevel ; $c6d5
	ld c, [hl]
	inc hl
	ld b, [hl]

; known jump sources: 12124 (4:6124), 12146 (4:6146)
Function1218b: ; 1218b (4:618b)
	ld hl, $d
	add hl, bc
	ld a, [hl]
	cp $5
	jr nz, .asm_121aa
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $3
	jr c, .asm_121a4
	cp $6
	jr c, .asm_121a7
	ld a, $3
	ret
.asm_121a4
	ld a, $1
	ret
.asm_121a7
	ld a, $2
	ret
.asm_121aa
	xor a
	ret

; known jump sources: 12064 (4:6064)
Function121ac: ; 121ac (4:61ac)
	ld a, [EnemySAtkLevel] ; $c6d7
	jp Function11b17
; 121b2 (4:61b2)

INCBIN "baserom.gbc",$121b2,$122c1 - $121b2

UnknownScript_0x122c1: ; 0x122c1
	checkflag $0011
	iffalse .script_122cd
	setflag $0051
	special $0017
.script_122cd
	end
; 0x122ce

UnknownScript_0x122ce: ; 0x122ce
	3callasm BANK(Function122f8), Function122f8
	iffalse UnknownScript_0x122e3
	disappear $fe
	loadfont
	2writetext UnknownText_0x122ee
	playsound SFX_ITEM
	pause 60
	itemnotify
	loadmovesprites
	end
; 0x122e3

UnknownScript_0x122e3: ; 0x122e3
	loadfont
	2writetext UnknownText_0x122ee
	closetext
	2writetext UnknownText_0x122f3
	closetext
	loadmovesprites
	end
; 0x122ee

UnknownText_0x122ee: ; 0x122ee
	; found @ !
	text_jump UnknownText_0x1c0a1c, BANK(UnknownText_0x1c0a1c)
	db "@"
; 0x122f3

UnknownText_0x122f3: ; 0x122f3
	; But   can't carry any more items.
	text_jump UnknownText_0x1c0a2c, BANK(UnknownText_0x1c0a2c)
	db "@"
; 0x122f8

Function122f8: ; 122f8
	xor a
	ld [ScriptVar], a
	ld a, [EngineBuffer1]
	ld [$d265], a
	call GetItemName
	ld hl, StringBuffer3
	call CopyName2
	ld a, [EngineBuffer1]
	ld [CurItem], a
	ld a, [CurFruit]
	ld [$d10c], a
	ld hl, NumItems
	call ReceiveItem
	ret nc
	ld a, $1
	ld [ScriptVar], a
	ret
; 12324

Function12324: ; 12324
	ld a, [PartyCount]
	and a
	ret z
	ld a, [ScriptVar]
	ld [Buffer1], a
	ld a, [rOBP1]
	ld [Buffer2], a
	call Function1233e
	ld a, [Buffer2]
	call Functiond24
	ret
; 1233e

Function1233e: ; 1233e
	xor a
	ld [$d1ec], a
.asm_12342
	ld a, [Buffer1]
	ld e, a
	ld d, $0
	ld hl, $6365
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d1ec]
	ld e, a
	inc a
	ld [$d1ec], a
	add hl, de
	ld a, [hl]
	cp $5
	jr z, .asm_12364
	ld hl, $6377
	rst JumpTable
	jr .asm_12342

.asm_12364
	ret
; 12365

INCBIN "baserom.gbc",$12365,$12377 - $12365

Table12377: ; 12377
	dw Function12383
	dw Function12393
	dw Function123a1
	dw Function123bf
	dw Function123c8
	dw Function123db
; 12383

Function12383: ; 12383
	call Function12434
	ld de, $63fc
	ld hl, $87c0
	ld bc, $0402
	call Request2bpp
	ret
; 12393

Function12393: ; 12393
	ld hl, $c480
	ld de, $63dc
	call Function124a3
	call Function124a3
	jr Function123a7

Function123a1: ; 123a1
	ld hl, $c480
	ld de, $641c

Function123a7: ; 123a7
	ld a, [PartyCount]
	ld b, a
.asm_123ab
	call Function124a3
	push de
	ld de, $0012
	call PlaySFX
	pop de
	ld c, $1e
	call DelayFrames
	dec b
	jr nz, .asm_123ab
	ret
; 123bf

Function123bf: ; 123bf
	ld de, $000d
	call PlayMusic
	jp Function12459
; 123c8

Function123c8: ; 123c8
	ld de, $00aa
	call PlaySFX
	call Function12459
	call WaitSFX
	ld de, $000d
	call PlaySFX
	ret
; 123db

Function123db: ; 123db
	ret
; 123dc

INCBIN "baserom.gbc",$123dc,$12434 - $123dc

Function12434: ; 12434
	call Function3218
	jr nz, .asm_1243e
	ld a, $e0
	ld [rOBP1], a
	ret

.asm_1243e
	ld hl, $6451
	ld de, CurMart
	ld bc, $0008
	ld a, $5
	call FarCopyWRAM
	ld a, $1
	ld [hCGBPalUpdate], a
	ret
; 12451

INCBIN "baserom.gbc",$12451,$12459 - $12451

Function12459: ; 12459
	ld c, $8
.asm_1245b
	push bc
	call Function12469
	ld c, $a
	call DelayFrames
	pop bc
	dec c
	jr nz, .asm_1245b
	ret
; 12469

Function12469: ; 12469
	call Function3218
	jr nz, .asm_12475
	ld a, [rOBP1]
	xor $28
	ld [rOBP1], a
	ret

.asm_12475
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, CurMart
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push de
	ld c, $3
.asm_12486
	ld a, [hli]
	ld e, a
	ld a, [hld]
	ld d, a
	dec hl
	ld a, d
	ld [hld], a
	ld a, e
	ld [hli], a
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_12486
	pop de
	dec hl
	ld a, d
	ld [hld], a
	ld a, e
	ld [hl], a
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ret
; 124a3

Function124a3: ; 124a3
	push bc
	ld a, [Buffer1]
	ld bc, $1020
	cp $1
	jr z, .asm_124b1
	ld bc, $0000

.asm_124b1
	ld a, [de]
	add c
	inc de
	ld [hli], a
	ld a, [de]
	add b
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	pop bc
	ret
; 124c1

INCBIN "baserom.gbc",$124c1,$124c8 - $124c1

UnknownScript_0x124c8: ; 0x124c8
	refreshscreen $0
	3callasm BANK(Function124fa), Function124fa
	2writetext UnknownText_0x124f5
	closetext
	special $002e
	pause 40
	special $001b
	checkflag $0011
	iftrue .script_64f2
	3callasm BANK(HalveMoney), HalveMoney
	3callasm BANK(Function12527), Function12527
	3call BANK(UnknownScript_0x122c1), UnknownScript_0x122c1
	special $0000
	newloadmap $f1
	resetfuncs

.script_64f2
	jumpstd $0016
; 0x124f5

UnknownText_0x124f5: ; 0x124f5
	text_jump UnknownText_0x1c0a4e, BANK(UnknownText_0x1c0a4e)
	db $50
; 0x124fa

Function124fa: ; 124fa
	call ClearPalettes
	call Functionfdb
	call Function3200
	call HideSprites
	call Function4f0
	ret
; 1250a

	ld b, $0
	call GetSGBLayout
	call Function32f9
	ret


HalveMoney: ; 12513

; Empty function...
	callba Function1060c7

; Halve the player's money.
	ld hl, Money
	ld a, [hl]
	srl a
	ld [hli], a
	ld a, [hl]
	rra
	ld [hli], a
	ld a, [hl]
	rra
	ld [hl], a
	ret
; 12527


Function12527: ; 12527
	ld a, [$dcb2]
	ld d, a
	ld a, [$dcb3]
	ld e, a
	callba Function15344
	ld a, c
	jr c, .asm_12539
	xor a

.asm_12539
	ld [$d001], a
	ret
; 1253d

INCBIN "baserom.gbc",$1253d,$12580 - $1253d


Function12580: ; 12580
	callba Functionb8172
	jr c, .asm_1258d
	ld hl, $65ba
	jr .asm_12590

.asm_1258d
	ld hl, $65ad

.asm_12590
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret
; 12599

INCBIN "baserom.gbc",$12599,$125cd - $12599


StartMenu: ; 125cd

	call Function1fbf

	ld de, SFX_MENU
	call PlaySFX

	callba Function6454

	ld hl, StatusFlags2
	bit 2, [hl] ; bug catching contest
	ld hl, .MenuDataHeader
	jr z, .GotMenuData
	ld hl, .ContestMenuDataHeader
.GotMenuData

	call LoadMenuDataHeader
	call .SetUpMenuItems
	ld a, [$d0d2]
	ld [$cf88], a
	call .DrawMenuAccount_
	call MenuFunc_1e7f
	call .DrawBugContestStatusBox
	call Function2e31
	call Function2e20
	callba Function64bf
	call .DrawBugContestStatus
	call UpdateTimePals
	jr .Select

.Reopen
	call Function1ad2
	call UpdateTimePals
	call .SetUpMenuItems
	ld a, [$d0d2]
	ld [$cf88], a

.Select
	call .GetInput
	jr c, .Exit
	call .DrawMenuAccount
	ld a, [$cf88]
	ld [$d0d2], a
	call PlayClickSFX
	call Function1bee
	call .OpenMenu

; Menu items have different return functions.
; For example, saving exits the menu.
	ld hl, .MenuReturns
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
	
.MenuReturns
	dw .Reopen
	dw .Exit
	dw .ReturnTwo
	dw .ReturnThree
	dw .ReturnFour
	dw .ReturnEnd
	dw .ReturnRedraw

.Exit
	ld a, [hOAMUpdate]
	push af
	ld a, 1
	ld [hOAMUpdate], a
	call Functione5f
	pop af
	ld [hOAMUpdate], a
.ReturnEnd
	call Function1c07
.ReturnEnd2
	call Function2dcf
	call UpdateTimePals
	ret

.GetInput
; Return carry on exit, and no-carry on selection.
	xor a
	ld [hBGMapMode], a
	call .DrawMenuAccount
	call SetUpMenu
	ld a, $ff
	ld [MenuSelection], a
.loop
	call .PrintMenuAccount
	call Function1f1a
	ld a, [$cf73]
	cp B_BUTTON
	jr z, .b
	cp A_BUTTON
	jr z, .a
	jr .loop
.a
	call PlayClickSFX
	and a
	ret
.b
	scf
	ret
; 12691

.ReturnFour ; 12691
	call Function1c07
	ld a, $80
	ld [$ffa0], a
	ret
; 12699

.ReturnThree ; 12699
	call Function1c07
	ld a, $80
	ld [$ffa0], a
	jr .ReturnEnd2
; 126a2

.ReturnTwo ; 126a2
	call Function1c07
	ld hl, $d0e9
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d0e8]
	rst FarCall
	jr .ReturnEnd2
; 126b1

.ReturnRedraw ; 126b1
	call .Clear
	jp .Reopen
; 126b7

.Clear ; 126b7
	call WhiteBGMap
	call Function1d7d
	call Function2bae
	call .DrawMenuAccount_
	call MenuFunc_1e7f
	call .DrawBugContestStatus
	call Function1ad2
	call Functiond90
	call Function2b5c
	ret
; 126d3


.MenuDataHeader
	db $40 ; tile backup
	db 0, 10 ; start coords
	db 17, 19 ; end coords
	dw .MenuData
	db 1 ; default selection

.ContestMenuDataHeader
	db $40 ; tile backup
	db 2, 10 ; start coords
	db 17, 19 ; end coords
	dw .MenuData
	db 1 ; default selection

.MenuData
	db %10101000 ; x padding, wrap around, start can close
	dn 0, 0 ; rows, columns
	dw MenuItemsList
	dw .MenuString
	dw .Items

.Items
	dw StartMenu_Pokedex,  .PokedexString,  .PokedexDesc
	dw StartMenu_Pokemon,  .PartyString,    .PartyDesc
	dw StartMenu_Pack,     .PackString,     .PackDesc
	dw StartMenu_Status,   .StatusString,   .StatusDesc
	dw StartMenu_Save,     .SaveString,     .SaveDesc
	dw StartMenu_Option,   .OptionString,   .OptionDesc
	dw StartMenu_Exit,     .ExitString,     .ExitDesc
	dw StartMenu_Pokegear, .PokegearString, .PokegearDesc
	dw StartMenu_Quit,     .QuitString,     .QuitDesc

.PokedexString 	db "#DEX@"
.PartyString   	db "#MON@"
.PackString    	db "PACK@"
.StatusString  	db $52, "@"
.SaveString    	db "SAVE@"
.OptionString  	db "OPTION@"
.ExitString    	db "EXIT@"
.PokegearString	db $24, "GEAR@"
.QuitString    	db "QUIT@"

.PokedexDesc 	db "#MON", $4e, "database@"
.PartyDesc   	db "Party ", $4a, $4e, "status@"
.PackDesc    	db "Contains", $4e, "items@"
.PokegearDesc	db "Trainer's", $4e, "key device@"
.StatusDesc  	db "Your own", $4e, "status@"
.SaveDesc    	db "Save your", $4e, "progress@"
.OptionDesc  	db "Change", $4e, "settings@"
.ExitDesc    	db "Close this", $4e, "menu@"
.QuitDesc    	db "Quit and", $4e, "be judged.@"


.OpenMenu ; 127e5
	ld a, [MenuSelection]
	call .GetMenuAccountTextPointer
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 127ef

.MenuString ; 127ef
	push de
	ld a, [MenuSelection]
	call .GetMenuAccountTextPointer
	inc hl
	inc hl
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	call PlaceString
	ret
; 12800

.MenuDesc ; 12800
	push de
	ld a, [MenuSelection]
	cp $ff
	jr z, .none 
	call .GetMenuAccountTextPointer
	inc hl
	inc hl
	inc hl
	inc hl
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	call PlaceString
	ret
.none
	pop de
	ret
; 12819


.GetMenuAccountTextPointer ; 12819
	ld e, a
	ld d, 0
	ld hl, $cf97
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ret
; 12829


.SetUpMenuItems ; 12829
	xor a
	ld [$cf76], a
	call .FillMenuList

	ld hl, StatusFlags
	bit 0, [hl]
	jr z, .no_pokedex
	ld a, 0 ; pokedex
	call .AppendMenuList
.no_pokedex

	ld a, [PartyCount]
	and a
	jr z, .no_pokemon
	ld a, 1 ; pokemon
	call .AppendMenuList
.no_pokemon

	ld a, [InLinkBattle]
	and a
	jr nz, .no_pack
	ld hl, StatusFlags2
	bit 2, [hl] ; bug catching contest
	jr nz, .no_pack
	ld a, 2 ; pack
	call .AppendMenuList
.no_pack

	ld hl, $d957
	bit 7, [hl]
	jr z, .no_pokegear
	ld a, 7 ; pokegear
	call .AppendMenuList
.no_pokegear

	ld a, 3 ; status
	call .AppendMenuList

	ld a, [InLinkBattle]
	and a
	jr nz, .no_save
	ld hl, StatusFlags2
	bit 2, [hl] ; bug catching contest
	ld a, 8 ; quit
	jr nz, .write
	ld a, 4 ; save
.write
	call .AppendMenuList
.no_save

	ld a, 5 ; option
	call .AppendMenuList
	ld a, 6 ; exit
	call .AppendMenuList
	ld a, c
	ld [MenuItemsList], a
	ret
; 1288d


.FillMenuList ; 1288d
	xor a
	ld hl, MenuItemsList
	ld [hli], a
	ld a, $ff
	ld bc, $000f
	call ByteFill
	ld de, MenuItemsList + 1
	ld c, 0
	ret
; 128a0

.AppendMenuList ; 128a0
	ld [de], a
	inc de
	inc c
	ret
; 128a4

.DrawMenuAccount_ ; 128a4
	jp .DrawMenuAccount
; 128a7

.PrintMenuAccount ; 128a7
	call .IsMenuAccountOn
	ret z
	call .DrawMenuAccount
	decoord 0, 14
	jp .MenuDesc
; 128b4

.DrawMenuAccount ; 128b4
	call .IsMenuAccountOn
	ret z
	hlcoord 0, 13
	ld bc, $050a
	call ClearBox
	hlcoord 0, 13
	ld b, 3
	ld c, 8
	jp TextBoxPalette
; 128cb

.IsMenuAccountOn ; 128cb
	ld a, [Options2]
	and 1
	ret
; 128d1

.DrawBugContestStatusBox ; 128d1
	ld hl, StatusFlags2
	bit 2, [hl] ; bug catching contest
	ret z
	callba Function24bdc
	ret
; 128de

.DrawBugContestStatus ; 128de
	ld hl, StatusFlags2
	bit 2, [hl] ; bug catching contest
	jr nz, .contest
	ret
.contest
	callba Function24be7
	ret
; 128ed


StartMenu_Exit: ; 128ed
; Exit the menu.

	ld a, 1
	ret
; 128f0


StartMenu_Quit: ; 128f0
; Retire from the bug catching contest.

	ld hl, .EndTheContestText
	call Function12cf5
	jr c, .asm_12903
	ld a, $4
	ld hl, $760b
	call Function31cf
	ld a, 4
	ret
.asm_12903
	ld a, 0
	ret

.EndTheContestText
	text_jump UnknownText_0x1c1a6c, BANK(UnknownText_0x1c1a6c)
	db "@"
; 1290b


StartMenu_Save: ; 1290b
; Save the game.

	call Function2879
	callba Function14a1a
	jr nc, .asm_12919
	ld a, 0
	ret
.asm_12919
	ld a, 1
	ret
; 1291c


StartMenu_Option: ; 1291c
; Game options.

	call FadeToMenu
	callba OptionsMenu
	ld a, 6
	ret
; 12928


StartMenu_Status: ; 12928
; Player status.

	call FadeToMenu
	callba Function25105
	call Function2b3c
	ld a, 0
	ret
; 12937


StartMenu_Pokedex: ; 12937

	ld a, [PartyCount]
	and a
	jr z, .asm_12949

	call FadeToMenu
	callba Function40000
	call Function2b3c

.asm_12949
	ld a, 0
	ret
; 1294c


StartMenu_Pokegear: ; 1294c

	call FadeToMenu
	callba Function90b8d
	call Function2b3c
	ld a, 0
	ret
; 1295b


StartMenu_Pack: ; 1295b

	call FadeToMenu
	callba Function10000
	ld a, [$cf66]
	and a
	jr nz, .asm_12970
	call Function2b3c
	ld a, 0
	ret
.asm_12970
	call Function2b4d
	ld a, 4
	ret
; 12976


StartMenu_Pokemon: ; 12976

	ld a, [PartyCount]
	and a
	jr z, .return

	call FadeToMenu

.choosemenu
	xor a
	ld [PartyMenuActionText], a ; Choose a POKéMON.
	call WhiteBGMap

.menu
	callba Function5004f
	callba Function50405
	callba Function503e0

.menunoreload
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9 ; load regular palettes?
	call DelayFrame
	callba PartyMenuSelect
	jr c, .return ; if cancelled or pressed B

	call PokemonActionSubmenu
	cp 3
	jr z, .menu
	cp 0
	jr z, .choosemenu
	cp 1
	jr z, .menunoreload
	cp 2
	jr z, .quit

.return
	call Function2b3c
	ld a, 0
	ret

.quit
	ld a, b
	push af
	call Function2b4d
	pop af
	ret
; 129d5

Function129d5: ; 129d5
	ld a, [NumItems] ; $d892 (aliases: TMsHMsEnd)
	and a
	ret nz
	ld a, [NumKeyItems] ; $d8bc (aliases: ItemsEnd)
	and a
	ret nz
	ld a, [NumBalls] ; $d8d7 (aliases: KeyItemsEnd)
	and a
	ret nz
	ld hl, TMsHMs ; $d859
	ld b, $39
.asm_129e9
	ld a, [hli]
	and a
	jr nz, .asm_129f2
	dec b
	jr nz, .asm_129e9
	scf
	ret
.asm_129f2
	and a
	ret

Function129f4: ; 129f4
	push de
	call PartyMonItemName
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr nz, .asm_12a3f
	ld hl, $6a45
	call Function1d4f
	callba Function24fbf
	push af
	call Function1c17
	call Function1c07
	pop af
	jr c, .asm_12a42
	ld hl, $6a4a
	call Function1d4f
	call Function1dcf
	push af
	call Function1c07
	pop af
	jr c, .asm_12a42
	pop hl
	ld a, [$d107]
	call TossItem
	call PartyMonItemName
	ld hl, $6a4f
	call Function1d4f
	call Function1c07
	and a
	ret
.asm_12a3f
	call Function12a54
.asm_12a42
	pop hl
	scf
	ret
; 12a45 (4:6a45)

INCBIN "baserom.gbc",$12a45,$12a54 - $12a45

; known jump sources: 12a3f (4:6a3f)
Function12a54: ; 12a54 (4:6a54)
	ld hl, $6a5b
	call Function1d67
	ret
; 12a5b (4:6a5b)

INCBIN "baserom.gbc",$12a5b,$12a60 - $12a5b

CantUseItem: ; 12a60
	ld hl, CantUseItemText
	call Function2012
	ret
; 12a67

CantUseItemText: ; 12a67
	text_jump UnknownText_0x1c1b03, BANK(UnknownText_0x1c1b03)
	db "@"
; 12a6c


PartyMonItemName: ; 12a6c
	ld a, [CurItem]
	ld [$d265], a
	call GetItemName
	call CopyName1
	ret
; 12a79


CancelPokemonAction: ; 12a79
	callba Function50405
	callba Function8ea71
	ld a, 1
	ret
; 12a88


PokemonActionSubmenu: ; 12a88
	hlcoord 1, 15
	ld bc, $0212 ; box size
	call ClearBox
	callba Function24d19
	call GetCurNick
	ld a, [MenuSelection]
	ld hl, .Actions
	ld de, 3
	call IsInArray
	jr nc, .nothing

	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

.nothing
	ld a, 0
	ret

.Actions
	dbw  1, Function12e1b ; Cut
	dbw  2, Function12e30 ; Fly
	dbw  3, Function12ebd ; Surf
	dbw  4, Function12e6a ; Strength
	dbw  6, Function12e55 ; Flash
	dbw  7, Function12e7f ; Whirlpool
	dbw  8, Function12ed1 ; Dig
	dbw  9, Function12ea9 ; Teleport
	dbw 10, Function12ee6 ; Softboiled
	dbw 13, Function12ee6 ; MilkDrink
	dbw 11, Function12f26 ; Headbutt
	dbw  5, Function12e94 ; Flash
	dbw 12, Function12f3b ; RockSmash
	dbw 14, Function12f50 ; SweetScent
	dbw 15, OpenPartyStats
	dbw 16, SwitchPartyMons
	dbw 17, GiveTakePartyMonItem
	dbw 18, CancelPokemonAction
	dbw 19, Function12fba ; move
	dbw 20, Function12d45 ; mail
; 12aec


SwitchPartyMons: ; 12aec

; Don't try if there's nothing to switch!
	ld a, [PartyCount]
	cp 2
	jr c, .DontSwitch

	ld a, [CurPartyMon]
	inc a
	ld [$d0e3], a

	callba Function8ea8c
	callba Function5042d

	ld a, 4
	ld [PartyMenuActionText], a
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText

	hlcoord 0, 1
	ld bc, 20 * 2
	ld a, [$d0e3]
	dec a
	call AddNTimes
	ld [hl], "▷"
	call WaitBGMap
	call Function32f9
	call DelayFrame

	callba PartyMenuSelect
	bit 1, b
	jr c, .DontSwitch

	callba Function50f12

	xor a
	ld [PartyMenuActionText], a

	callba Function5004f
	callba Function50405
	callba Function503e0

	ld a, 1
	ret

.DontSwitch
	xor a
	ld [PartyMenuActionText], a
	call CancelPokemonAction
	ret
; 12b60


GiveTakePartyMonItem: ; 12b60

; Eggs can't hold items!
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_12ba6

	ld hl, GiveTakeItemMenuData
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	jr c, .asm_12ba6

	call GetCurNick
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $b
	call CopyBytes
	ld a, [$cfa9]
	cp 1
	jr nz, .asm_12ba0

	call Function1d6e
	call ClearPalettes
	call Function12ba9
	call ClearPalettes
	call Functione58
	call Function1c07
	ld a, 0
	ret

.asm_12ba0
	call TakePartyItem
	ld a, 3
	ret

.asm_12ba6
	ld a, 3
	ret
; 12ba9


Function12ba9: ; 12ba9

	callba Function106a5

.loop
	callba Function106be

	ld a, [$cf66]
	and a
	jr z, .quit

	ld a, [$cf65]
	cp 2
	jr z, .next

	call CheckTossableItem
	ld a, [$d142]
	and a
	jr nz, .next

	call Function12bd9
	jr .quit

.next
	ld hl, CantBeHeldText
	call Function1d67
	jr .loop

.quit
	ret
; 12bd9


Function12bd9: ; 12bd9

	call SpeechTextBox
	call PartyMonItemName
	call GetPartyItemLocation
	ld a, [hl]
	and a
	jr z, .asm_12bf4

	push hl
	ld d, a
	callba ItemIsMail
	pop hl
	jr c, .asm_12c01
	ld a, [hl]
	jr .asm_12c08

.asm_12bf4
	call Function12cea
	ld hl, MadeHoldText
	call Function1d67
	call GivePartyItem
	ret

.asm_12c01
	ld hl, PleaseRemoveMailText
	call Function1d67
	ret

.asm_12c08
	ld [$d265], a
	call GetItemName
	ld hl, SwitchAlreadyHoldingText
	call Function12cf5
	jr c, .asm_12c4b

	call Function12cea
	ld a, [$d265]
	push af
	ld a, [CurItem]
	ld [$d265], a
	pop af
	ld [CurItem], a
	call Function12cdf
	jr nc, .asm_12c3c

	ld hl, TookAndMadeHoldText
	call Function1d67
	ld a, [$d265]
	ld [CurItem], a
	call GivePartyItem
	ret

.asm_12c3c
	ld a, [$d265]
	ld [CurItem], a
	call Function12cdf
	ld hl, ItemStorageIsFullText
	call Function1d67

.asm_12c4b
	ret
; 12c4c


GivePartyItem: ; 12c4c

	call GetPartyItemLocation
	ld a, [CurItem]
	ld [hl], a
	ld d, a
	callba ItemIsMail
	jr nc, .asm_12c5f
	call Function12cfe

.asm_12c5f
	ret
; 12c60


TakePartyItem: ; 12c60

	call SpeechTextBox
	call GetPartyItemLocation
	ld a, [hl]
	and a
	jr z, .asm_12c8c

	ld [CurItem], a
	call Function12cdf
	jr nc, .asm_12c94

	callba ItemIsMail
	call GetPartyItemLocation
	ld a, [hl]
	ld [$d265], a
	ld [hl], NO_ITEM
	call GetItemName
	ld hl, TookFromText
	call Function1d67
	jr .asm_12c9a

.asm_12c8c
	ld hl, IsntHoldingAnythingText
	call Function1d67
	jr .asm_12c9a

.asm_12c94
	ld hl, ItemStorageIsFullText
	call Function1d67

.asm_12c9a
	ret
; 12c9b


GiveTakeItemMenuData: ; 12c9b
	db %01010000
	db 12, 12 ; start coords
	db 17, 19 ; end coords
	dw .Items
	db 1 ; default option

.Items
	db %10000000 ; x padding
	db 2 ; # items
	db "GIVE@"
	db "TAKE@"
; 12caf


TookAndMadeHoldText: ; 12caf
	text_jump UnknownText_0x1c1b2c, BANK(UnknownText_0x1c1b2c)
	db "@"
; 12cb4

MadeHoldText: ; 12cb4
	text_jump UnknownText_0x1c1b57, BANK(UnknownText_0x1c1b57)
	db "@"
; 12cb9

PleaseRemoveMailText: ; 12cb9
	text_jump UnknownText_0x1c1b6f, BANK(UnknownText_0x1c1b6f)
	db "@"
; 12cbe

IsntHoldingAnythingText: ; 12cbe
	text_jump UnknownText_0x1c1b8e, BANK(UnknownText_0x1c1b8e)
	db "@"
; 12cc3

ItemStorageIsFullText: ; 12cc3
	text_jump UnknownText_0x1c1baa, BANK(UnknownText_0x1c1baa)
	db "@"
; 12cc8

TookFromText: ; 12cc8
	text_jump UnknownText_0x1c1bc4, BANK(UnknownText_0x1c1bc4)
	db "@"
; 12ccd

SwitchAlreadyHoldingText: ; 12ccd
	text_jump UnknownText_0x1c1bdc, BANK(UnknownText_0x1c1bdc)
	db "@"
; 12cd2

CantBeHeldText: ; 12cd2
	text_jump UnknownText_0x1c1c09, BANK(UnknownText_0x1c1c09)
	db "@"
; 12cd7


GetPartyItemLocation: ; 12cd7
	push af
	ld a, PartyMon1Item - PartyMon1
	call GetPartyParamLocation
	pop af
	ret
; 12cdf


Function12cdf: ; 12cdf
	ld a, $1
	ld [$d10c], a
	ld hl, NumItems
	jp ReceiveItem
; 12cea


; known jump sources: 12bf4 (4:6bf4), 12c16 (4:6c16)
Function12cea: ; 12cea (4:6cea)
	ld a, $1
	ld [$d10c], a
	ld hl, NumItems ; $d892 (aliases: TMsHMsEnd)
	jp TossItem

Function12cf5: ; 12cf5
	call Function1d4f
	call Function1dcf
	jp Function1c07
; 12cfe


; known jump sources: 12c5c (4:6c5c)
Function12cfe: ; 12cfe (4:6cfe)
	ld de, DefaultFlypoint ; $d002
	callba Function11e75
	ld hl, PlayerName ; $d47d
	ld de, $d023
	ld bc, $a
	call CopyBytes
	ld hl, PlayerID ; $d47b
	ld bc, $2
	call CopyBytes
	ld a, [CurPartySpecies] ; $d108
	ld [de], a
	inc de
	ld a, [CurItem] ; $d106
	ld [de], a
	ld a, [CurPartyMon] ; $d109
	ld hl, $a600
	ld bc, $2f
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, DefaultFlypoint ; $d002
	ld bc, $2f
	ld a, $0
	call GetSRAMBank
	call CopyBytes
	call CloseSRAM
	ret

Function12d45: ; 12d45
	ld a, [InLinkBattle]
	cp $1
	jr z, .asm_12d6d
	cp $2
	jr z, .asm_12d6d
	ld hl, $6dc9
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	jp c, .asm_12dc6
	ld a, [$cfa9]
	cp $1
	jr z, .asm_12d6d
	cp $2
	jr z, .asm_12d76
	jp .asm_12dc6

.asm_12d6d
	callba Functionb9229
	ld a, $0
	ret

.asm_12d76
	ld hl, UnknownText_0x12df1
	call Function12cf5
	jr c, .asm_12d9a
	ld a, [CurPartyMon]
	ld b, a
	callba Function4456e
	jr c, .asm_12d92
	ld hl, UnknownText_0x12dfb
	call Function1d67
	jr .asm_12dc6

.asm_12d92
	ld hl, UnknownText_0x12df6
	call Function1d67
	jr .asm_12dc6

.asm_12d9a
	ld hl, UnknownText_0x12de2
	call Function12cf5
	jr c, .asm_12dc6
	call GetPartyItemLocation
	ld a, [hl]
	ld [CurItem], a
	call Function12cdf
	jr nc, .asm_12dbe
	call GetPartyItemLocation
	ld [hl], $0
	call GetCurNick
	ld hl, UnknownText_0x12de7
	call Function1d67
	jr .asm_12dc6

.asm_12dbe
	ld hl, UnknownText_0x12dec
	call Function1d67
	jr .asm_12dc6

.asm_12dc6
	ld a, $3
	ret
; 12dc9


INCBIN "baserom.gbc",$12dc9,$12de2 - $12dc9


UnknownText_0x12de2: ; 0x12de2
	text_jump UnknownText_0x1c1c22, BANK(UnknownText_0x1c1c22)
	db "@"
; 0x12de7

UnknownText_0x12de7: ; 0x12de7
	text_jump UnknownText_0x1c1c47, BANK(UnknownText_0x1c1c47)
	db "@"
; 0x12dec

UnknownText_0x12dec: ; 0x12dec
	text_jump UnknownText_0x1c1c62, BANK(UnknownText_0x1c1c62)
	db "@"
; 0x12df1

UnknownText_0x12df1: ; 0x12df1
	text_jump UnknownText_0x1c1c86, BANK(UnknownText_0x1c1c86)
	db "@"
; 0x12df6

UnknownText_0x12df6: ; 0x12df6
	text_jump UnknownText_0x1c1ca9, BANK(UnknownText_0x1c1ca9)
	db "@"
; 0x12dfb

UnknownText_0x12dfb: ; 0x12dfb
	text_jump UnknownText_0x1c1cc4, BANK(UnknownText_0x1c1cc4)
	db "@"
; 0x12e00


OpenPartyStats: ; 12e00
	call Function1d6e
	call ClearSprites
; PartyMon
	xor a
	ld [MonType], a
	call LowVolume
	ld a, $25
	call Predef
	call MaxVolume
	call Function1d7d
	ld a, 0
	ret
; 12e1b


Function12e1b: ; 12e1b
	callba Functionc785
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12e2d
	ld b, $4
	ld a, $2
	ret

.asm_12e2d
	ld a, $3
	ret
; 12e30


Function12e30: ; 12e30
	callba Functionca3b
	ld a, [$d0ec]
	cp $2
	jr z, .asm_12e4c
	cp $0
	jr z, .asm_12e4f
	callba Function1060b5
	ld b, $4
	ld a, $2
	ret

.asm_12e4c
	ld a, $3
	ret

.asm_12e4f
	ld a, $0
	ret
; 12e52

INCBIN "baserom.gbc",$12e52,$12e55 - $12e52

Function12e55: ; 12e55
	callba Functionc8ac
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12e67
	ld b, $4
	ld a, $2
	ret

.asm_12e67
	ld a, $3
	ret
; 12e6a

Function12e6a: ; 12e6a
	callba Functioncce5
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12e7c
	ld b, $4
	ld a, $2
	ret

.asm_12e7c
	ld a, $3
	ret
; 12e7f

Function12e7f: ; 12e7f
	callba Functioncd9d
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12e91
	ld b, $4
	ld a, $2
	ret

.asm_12e91
	ld a, $3
	ret
; 12e94

Function12e94: ; 12e94
	callba Functioncade
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12ea6
	ld b, $4
	ld a, $2
	ret

.asm_12ea6
	ld a, $3
	ret
; 12ea9

Function12ea9: ; 12ea9
	callba Functioncc61
	ld a, [$d0ec]
	and a
	jr z, .asm_12eba
	ld b, $4
	ld a, $2
	ret

.asm_12eba
	ld a, $3
	ret
; 12ebd

Function12ebd: ; 12ebd
	callba Functionc909
	ld a, [$d0ec]
	and a
	jr z, .asm_12ece
	ld b, $4
	ld a, $2
	ret

.asm_12ece
	ld a, $3
	ret
; 12ed1

Function12ed1: ; 12ed1
	callba Functioncb9c
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12ee3
	ld b, $4
	ld a, $2
	ret

.asm_12ee3
	ld a, $3
	ret
; 12ee6

Function12ee6: ; 12ee6
	call Function12f05
	jr nc, .asm_12ef3
	callba Functionf3df
	jr .asm_12ef9

.asm_12ef3
	ld hl, $6f00
	call PrintText

.asm_12ef9
	xor a
	ld [PartyMenuActionText], a
	ld a, $3
	ret
; 12f00

INCBIN "baserom.gbc",$12f00,$12f05 - $12f00

Function12f05: ; 12f05
	ld a, $24
	call GetPartyParamLocation
	ld a, [hli]
	ld [hProduct], a
	ld a, [hl]
	ld [hMultiplicand], a
	ld a, $5
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, $23
	call GetPartyParamLocation
	ld a, [$ffb6]
	sub [hl]
	dec hl
	ld a, [$ffb5]
	sbc [hl]
	ret
; 12f26

Function12f26: ; 12f26
	callba Functionce7d
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12f38
	ld b, $4
	ld a, $2
	ret

.asm_12f38
	ld a, $3
	ret
; 12f3b

Function12f3b: ; 12f3b
	callba Functionceeb
	ld a, [$d0ec]
	cp $1
	jr nz, .asm_12f4d
	ld b, $4
	ld a, $2
	ret

.asm_12f4d
	ld a, $3
	ret
; 12f50

Function12f50: ; 12f50
	callba Function506bc
	ld b, $4
	ld a, $2
	ret
; 12f5b

Function12f5b: ; 12f5b
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Functione58
	call Function12f73
	pop bc
	ld a, b
	ld [Options], a
	push af
	call WhiteBGMap
	pop af
	ret
; 12f73

Function12f73: ; 12f73
	call Function13172
	ld de, $6fb2
	call Function1bb1
	call Function131ef
	ld hl, $cfa5
	set 6, [hl]
	jr Function12f93

Function12f86: ; 12f86
	call Function1bd3
	bit 1, a
	jp nz, Function12f9f
	bit 0, a
	jp nz, Function12f9c

Function12f93: ; 12f93
	call Function13235
	call Function13256
	jp Function12f86
; 12f9c

Function12f9c: ; 12f9c
	and a
	jr Function12fa0

Function12f9f: ; 12f9f
	scf

Function12fa0: ; 12fa0
	push af
	xor a
	ld [$d0e3], a
	ld hl, $cfa5
	res 6, [hl]
	call ClearSprites
	call ClearTileMap
	pop af
	ret
; 12fb2

INCBIN "baserom.gbc",$12fb2,$12fba - $12fb2

Function12fba: ; 12fba
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_12fd2
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function12fd5
	pop af
	ld [Options], a
	call WhiteBGMap

.asm_12fd2
	ld a, $0
	ret
; 12fd5

Function12fd5: ; 12fd5
	ld a, [CurPartyMon]
	inc a
	ld [$d0d8], a
	call Function13172
	call Function132d3
	ld de, $7163
	call Function1bb1
.asm_12fe8
	call Function131ef
	ld hl, $cfa5
	set 6, [hl]
	jr .asm_13009

.asm_12ff2
	call Function1bd3
	bit 1, a
	jp nz, .asm_13038
	bit 0, a
	jp nz, .asm_130c6
	bit 4, a
	jp nz, .asm_1305b
	bit 5, a
	jp nz, .asm_13075

.asm_13009
	call Function13235
	ld a, [$d0e3]
	and a
	jr nz, .asm_13018
	call Function13256
	jp .asm_12ff2

.asm_13018
	ld a, $7f
	ld hl, $c57d
	ld bc, $0005
	call ByteFill
	ld hl, $c591
	ld bc, $0512
	call ClearBox
	ld hl, $c591
	ld de, $716b
	call PlaceString
	jp .asm_12ff2
.asm_13038: ; 13038
	call PlayClickSFX
	call WaitSFX
	ld a, [$d0e3]
	and a
	jp z, Function13154
	ld a, [$d0e3]
	ld [$cfa9], a
	xor a
	ld [$d0e3], a
	ld hl, $c4c9
	ld bc, $0812
	call ClearBox
	jp .asm_12fe8
; 1305b

.asm_1305b: ; 1305b
	ld a, [$d0e3]
	and a
	jp nz, .asm_12ff2
	ld a, [CurPartyMon]
	ld b, a
	push bc
	call .asm_1308f
	pop bc
	ld a, [CurPartyMon]
	cp b
	jp z, .asm_12ff2
	jp Function12fd5

.asm_13075: ; 13075
	ld a, [$d0e3]
	and a
	jp nz, .asm_12ff2
	ld a, [CurPartyMon]
	ld b, a
	push bc
	call .asm_130a7
	pop bc
	ld a, [CurPartyMon]
	cp b
	jp z, .asm_12ff2
	jp Function12fd5

.asm_1308f
	ld a, [CurPartyMon]
	inc a
	ld [CurPartyMon], a
	ld c, a
	ld b, 0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, .asm_130a7
	cp EGG
	ret nz
	jr .asm_1308f

.asm_130a7
	ld a, [CurPartyMon]
	and a
	ret z
.asm_130ac
	ld a, [CurPartyMon]
	dec a
	ld [CurPartyMon], a
	ld c, a
	ld b, 0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	cp EGG
	ret nz
	ld a, [CurPartyMon]
	and a
	jr z, .asm_1308f
	jr .asm_130ac
; 130c6

.asm_130c6: ; 130c6
	call PlayClickSFX
	call WaitSFX
	ld a, [$d0e3]
	and a
	jr nz, .asm_130de
	ld a, [$cfa9]
	ld [$d0e3], a
	call Function1bee
	jp .asm_13018

.asm_130de
	ld hl, PartyMon1Move1
	ld bc, $0030
	ld a, [CurPartyMon]
	call AddNTimes
	push hl
	call Function1313a
	pop hl
	ld bc, $0015
	add hl, bc
	call Function1313a
	ld a, [IsInBattle]
	jr z, .asm_13113
	ld hl, BattleMonMove1
	ld bc, $0020
	ld a, [CurPartyMon]
	call AddNTimes
	push hl
	call Function1313a
	pop hl
	ld bc, $0006
	add hl, bc
	call Function1313a

.asm_13113
	ld de, $0020
	call PlaySFX
	call WaitSFX
	ld de, $0020
	call PlaySFX
	call WaitSFX
	ld hl, $c4c9
	ld bc, $0812
	call ClearBox
	ld hl, $c572
	ld bc, $0109
	call ClearBox
	jp .asm_12fe8
; 1313a

Function1313a: ; 1313a
	push hl
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	ld a, [$d0e3]
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	ld b, [hl]
	ld [hl], a
	ld a, b
	ld [de], a
	ret
; 13154

Function13154: ; 13154
	xor a
	ld [$d0e3], a
	ld hl, $cfa5
	res 6, [hl]
	call ClearSprites
	jp ClearTileMap
; 13163

INCBIN "baserom.gbc",$13163,$13172 - $13163

Function13172: ; 13172
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	xor a
	ld [hBGMapMode], a
	callba Functionfb571
	callba Function8e814
	ld a, [CurPartyMon]
	ld e, a
	ld d, $0
	ld hl, PartySpecies
	add hl, de
	ld a, [hl]
	ld [$d265], a
	ld e, $2
	callba Function8e83f
	ld hl, $c4b4
	ld b, $9
	ld c, $12
	call TextBox
	ld hl, $c57c
	ld b, $5
	ld c, $12
	call TextBox
	ld hl, $c4a2
	ld bc, $0203
	call ClearBox
	xor a
	ld [MonType], a
	ld hl, PartyMon1Nickname
	ld a, [CurPartyMon]
	call GetNick
	ld hl, $c4b9
	call PlaceString
	push bc
	callba Function5084a
	pop hl
	call PrintLevel
	ld hl, PlayerHPPal
	call SetHPPal
	ld b, $e
	call GetSGBLayout
	ld hl, $c4b0
	ld bc, $0103
	jp ClearBox
; 131ef

Function131ef: ; 131ef
	xor a
	ld [hBGMapMode], a
	ld [$d0e3], a
	ld [MonType], a
	ld a, $1f
	call Predef
	ld hl, TempMonMove1
	ld de, $d25e
	ld bc, $0004
	call CopyBytes
	ld a, $28
	ld [Buffer1], a
	ld hl, $c4de
	ld a, $20
	call Predef
	ld hl, $c4fa
	ld a, $23
	call Predef
	call WaitBGMap
	call Function32f9
	ld a, [$d0eb]
	inc a
	ld [$cfa3], a
	ld hl, $c57c
	ld b, $5
	ld c, $12
	jp TextBox
; 13235

Function13235: ; 13235
	ld hl, PartyMon1Move1
	ld bc, $0030
	ld a, [CurPartyMon]
	call AddNTimes
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [CurSpecies], a
	ld hl, $c591
	ld bc, $0512
	jp ClearBox
; 13256

Function13256: ; 13256
	xor a
	ld [hBGMapMode], a
	ld hl, $c568
	ld de, $72ba
	call PlaceString
	ld hl, $c57c
	ld de, $72c2
	call PlaceString
	ld hl, $c59c
	ld de, $72ca
	call PlaceString
	ld a, [CurSpecies]
	ld b, a
	ld hl, $c592
	ld a, PREDEF_PRINT_MOVE_TYPE
	call Predef
	ld a, [CurSpecies]
	dec a
	ld hl, $5afd
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	ld hl, $c5a0
	cp $2
	jr c, .asm_132a7
	ld [$d265], a
	ld de, $d265
	ld bc, $0103
	call PrintNum
	jr .asm_132ad

.asm_132a7
	ld de, $72cf
	call PlaceString

.asm_132ad
	ld hl, $c5b9
	ld a, $11
	call Predef
	ld a, $1
	ld [hBGMapMode], a
	ret
; 132ba

INCBIN "baserom.gbc",$132ba,$132d3 - $132ba

Function132d3: ; 132d3
	call Function132da
	call Function132fe
	ret
; 132da

Function132da: ; 132da
	ld a, [CurPartyMon]
	and a
	ret z
	ld c, a
	ld e, a
	ld d, 0
	ld hl, PartyCount
	add hl, de
.asm_132e7
	ld a, [hl]
	and a
	jr z, .asm_132f3
	cp EGG
	jr z, .asm_132f3
	cp NUM_POKEMON + 1
	jr c, .asm_132f8

.asm_132f3
	dec hl
	dec c
	jr nz, .asm_132e7
	ret

.asm_132f8
	ld hl, $c4b0
	ld [hl], $71
	ret
; 132fe

Function132fe: ; 132fe
	ld a, [CurPartyMon]
	inc a
	ld c, a
	ld a, [PartyCount]
	cp c
	ret z
	ld e, c
	ld d, 0
	ld hl, PartySpecies
	add hl, de
.asm_1330f
	ld a, [hl]
	cp $ff
	ret z
	and a
	jr z, .asm_1331e
	cp EGG
	jr z, .asm_1331e
	cp NUM_POKEMON + 1
	jr c, .asm_13321

.asm_1331e
	inc hl
	jr .asm_1330f

.asm_13321
	hlcoord 18, 0
	ld [hl], "▶"
	ret
; 13327


SelectMenu: ; 13327

	call CheckRegisteredItem
	jr c, .NotRegistered
	jp UseRegisteredItem

.NotRegistered
	call Function2e08
	ld b, BANK(ItemMayBeRegisteredText)
	ld hl, ItemMayBeRegisteredText
	call Function269a
	call Functiona46
	jp Function2dcf
; 13340


ItemMayBeRegisteredText: ; 13340
	text_jump UnknownText_0x1c1cf3, BANK(UnknownText_0x1c1cf3)
	db "@"
; 13345


CheckRegisteredItem: ; 13345

	ld a, [WhichRegisteredItem]
	and a
	jr z, .NoRegisteredItem
	and REGISTERED_POCKET
	rlca
	rlca
	ld hl, .Pockets
	rst JumpTable
	ret

.Pockets
	dw .CheckItem
	dw .CheckBall
	dw .CheckKeyItem
	dw .CheckTMHM

.CheckItem
	ld hl, NumItems
	call .CheckRegisteredNo
	jr c, .NoRegisteredItem
	inc hl
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	call .IsSameItem
	jr c, .NoRegisteredItem
	and a
	ret

.CheckKeyItem
	ld a, [RegisteredItem]
	ld hl, KeyItems
	ld de, 1
	call IsInArray
	jr nc, .NoRegisteredItem
	ld a, [RegisteredItem]
	ld [CurItem], a
	and a
	ret

.CheckBall
	ld hl, NumBalls
	call .CheckRegisteredNo
	jr nc, .NoRegisteredItem
	inc hl
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	call .IsSameItem
	jr c, .NoRegisteredItem
	ret

.CheckTMHM
	jr .NoRegisteredItem

.NoRegisteredItem
	xor a
	ld [WhichRegisteredItem], a
	ld [RegisteredItem], a
	scf
	ret
; 133a6


.CheckRegisteredNo ; 133a6
	ld a, [WhichRegisteredItem]
	and REGISTERED_NUMBER
	dec a
	cp [hl]
	jr nc, .NotEnoughItems
	ld [$d107], a
	and a
	ret

.NotEnoughItems
	scf
	ret
; 133b6


.IsSameItem ; 133b6
	ld a, [RegisteredItem]
	cp [hl]
	jr nz, .NotSameItem
	ld [CurItem], a
	and a
	ret

.NotSameItem
	scf
	ret
; 133c3


UseRegisteredItem: ; 133c3

	callba CheckItemMenu
	ld a, [$d142]
	ld hl, .SwitchTo
	rst JumpTable
	ret

.SwitchTo
	dw .CantUse
	dw .NoFunction
	dw .NoFunction
	dw .NoFunction
	dw .Current
	dw .Party
	dw .Overworld
; 133df

.NoFunction ; 133df
	call Function2e08
	call CantUseItem
	call Function2dcf
	and a
	ret
; 133ea

.Current ; 133ea
	call Function2e08
	call DoItemEffect
	call Function2dcf
	and a
	ret
; 133f5

.Party ; 133f5
	call ResetWindow
	call FadeToMenu
	call DoItemEffect
	call Function2b3c
	call Function2dcf
	and a
	ret
; 13406

.Overworld ; 13406
	call ResetWindow
	ld a, 1
	ld [$d0ef], a
	call DoItemEffect
	xor a
	ld [$d0ef], a
	ld a, [$d0ec]
	cp 1
	jr nz, .asm_13425
	scf
	ld a, $80
	ld [$ffa0], a
	ret
; 13422

.CantUse ; 13422
	call ResetWindow

.asm_13425
	call CantUseItem
	call Function2dcf
	and a
	ret
; 1342d


Function1342d: ; 1342d
	call Function1344a
	call Function1347d
	jr c, .asm_13448
	ld [$d041], a
	call Function134dd
	jr c, .asm_13448
	ld hl, $d041
	cp [hl]
	jr z, .asm_13448
	call Function134c0
	and a
	ret

.asm_13448
	scf
	ret
; 1344a

Function1344a: ; 1344a
	ld a, b
	ld [EngineBuffer1], a
	ld a, e
	ld [$d03f], a
	ld a, d
	ld [MartPointer], a
	call Function1345a
	ret
; 1345a

Function1345a: ; 1345a
	ld de, CurMart
	ld bc, $0004
	ld hl, $d03f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [EngineBuffer1]
	call GetFarByte
	inc hl
	ld [de], a
	inc de
.asm_1346f
	ld a, [EngineBuffer1]
	call GetFarByte
	ld [de], a
	inc de
	add hl, bc
	cp $ff
	jr nz, .asm_1346f
	ret
; 1347d

Function1347d: ; 1347d
	ld hl, $d03f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [EngineBuffer1]
	call GetFarByte
	ld c, a
	inc hl
	ld a, [BackupMapGroup]
	ld d, a
	ld a, [BackupMapNumber]
	ld e, a
	ld b, $0
.asm_13495
	ld a, [EngineBuffer1]
	call GetFarByte
	cp $ff
	jr z, .asm_134be
	inc hl
	inc hl
	ld a, [EngineBuffer1]
	call GetFarByte
	inc hl
	cp d
	jr nz, .asm_134b7
	ld a, [EngineBuffer1]
	call GetFarByte
	inc hl
	cp e
	jr nz, .asm_134b8
	jr .asm_134bb

.asm_134b7
	inc hl

.asm_134b8
	inc b
	jr .asm_13495

.asm_134bb
	xor a
	ld a, b
	ret

.asm_134be
	scf
	ret
; 134c0

Function134c0: ; 134c0
	push af
	ld hl, $d03f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	pop af
	ld bc, $0004
	call AddNTimes
	inc hl
	ld de, $dcac
	ld a, [EngineBuffer1]
	ld bc, $0003
	call FarCopyBytes
	ret
; 134dd

Function134dd: ; 134dd
	call Function1d6e
	ld hl, $750d
	call PrintText
	call Function13512
	ld hl, $7550
	call Function1d3c
	call Function352f
	call Function1ad2
	xor a
	ld [$d0e4], a
	call Function350c
	call Function1c17
	ld a, [$cf73]
	cp $2
	jr z, .asm_1350b
	xor a
	ld a, [$cf77]
	ret

.asm_1350b
	scf
	ret
; 1350d

INCBIN "baserom.gbc",$1350d,$13512 - $1350d


Function13512: ; 13512
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld hl, TileMap
	ld b, $4
	ld c, $8
	call TextBox
	ld hl, $c4c9
	ld de, $7537
	call PlaceString
	ld hl, $c4f4
	call Function1353f
	pop af
	ld [Options], a
	ret
; 13537

INCBIN "baserom.gbc",$13537,$1353f - $13537


Function1353f: ; 1353f
	push hl
	ld a, [$d041]
	ld e, a
	ld d, 0
	ld hl, $d0f1
	add hl, de
	ld a, [hl]
	pop de
	call Function1356b
	ret
; 13550

INCBIN "baserom.gbc",$13550,$13568 - $13550
	ld a, [MenuSelection] ; $cf74


Function1356b: ; 1356b
	push de
	call Function13575
	ld d, h
	ld e, l
	pop hl
	jp PlaceString
; 13575

Function13575: ; 13575
	push de
	ld e, a
	ld d, 0
	ld hl, .floors
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
	ret
; 13583

.floors
	dw .b4f
	dw .b3f
	dw .b2f
	dw .b1f
	dw ._1f
	dw ._2f
	dw ._3f
	dw ._4f
	dw ._5f
	dw ._6f
	dw ._7f
	dw ._8f
	dw ._9f
	dw ._10f
	dw ._11f
	dw .roof

.b4f
	db "B4F@"
.b3f
	db "B3F@"
.b2f
	db "B2F@"
.b1f
	db "B1F@"
._1f
	db "1F@"
._2f
	db "2F@"
._3f
	db "3F@"
._4f
	db "4F@"
._5f
	db "5F@"
._6f
	db "6F@"
._7f
	db "7F@"
._8f
	db "8F@"
._9f
	db "9F@"
._10f
	db "10F@"
._11f
	db "11F@"
.roof
	db "ROOF@"
; 135db


Function135db: ; 135db
	xor a
	ld [$df9c], a
	ld a, $14
	ld [$dc79], a
	callba Function11490
	ret
; 135eb

UnknownScript_0x135eb: ; 0x135eb
	writecode $3, $6
	battlecheck
	startbattle
	returnafterbattle
	copybytetovar $dc79
	iffalse UnknownScript_0x13603
	end
; 0x135f8

INCBIN "baserom.gbc",$135f8,$13603 - $135f8

UnknownScript_0x13603: ; 0x13603
	playsound SFX_ELEVATOR_END
	loadfont
	2writetext UnknownText_0x13614
	closetext
	loadmovesprites
	jumpstd $0016
; 0x1360f

INCBIN "baserom.gbc",$1360f,$13614 - $1360f

UnknownText_0x13614: ; 0x13614
	text_jump UnknownText_0x1bd2e7, BANK(UnknownText_0x1bd2e7)
	db $50
; 0x13619

INCBIN "baserom.gbc",$13619,$1364f - $13619
	ld hl, EngineBuffer1 ; $d03e (aliases: MenuItemsList, CurFruitTree, CurInput)
	ld a, [hli]
	ld d, [hl]
	ld e, a
	ld b, $1
	call EventFlagAction
	ret


Function1365b: ; 1365b
	ld a, c
	ld de, .table2 - .table1
	ld hl, .table1
	call IsInArray
	jr nc, .asm_1367f

	ld a, $c ; jumpstd
	ld [$d03f], a
	inc hl
	ld a, [hli]
	ld [$d03f + 1], a
	ld a, [hli]
	ld [$d03f + 2], a
	ld a, BANK(UnknownScript_0x1369a)
	ld hl, UnknownScript_0x1369a
	call CallScript
	scf
	ret

.asm_1367f
	xor a
	ret
; 13681

.table1
	dbw $91, $0003 ; bookshelf
.table2
	dbw $93, $0031 ; pc
	dbw $94, $000b ; radio
	dbw $95, $0007 ; map
	dbw $96, $0006 ; merchandise
	dbw $97, $0009 ; tv
	dbw $9d, $0008 ; window
	dbw $9f, $0005 ; incense burner
	dbw $ff ; end
; 1369a

UnknownScript_0x1369a: ; 0x1369a
	2jump $d03f
; 0x1369d


Function1369d: ; 1369d
	call Function13900
	callba Function105f79
	call Function13819
	ld a, [$d00a]
	call Function13730
	ld a, [$d00b]
	ld [$d265], a
	call GetPokemonName
	ld hl, $7719
	call PrintText
	ld a, [EndFlypoint]
	call Function13730
	ld a, [MovementBuffer]
	ld [$d265], a
	call GetPokemonName
	ld hl, $7702
	call PrintText
	ld a, [DefaultFlypoint]
	call Function13730
	ld a, [$d003]
	ld [$d265], a
	call GetPokemonName
	ld hl, $76eb
	call PrintText
	jp Function13807
; 136eb

INCBIN "baserom.gbc",$136eb,$13730 - $136eb

Function13730: ; 13730
	dec a
	jr z, .asm_13777
	ld c, a
	ld b, $0
	ld hl, $7783
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hli]
	ld c, a
	push hl
	push bc
	callab Function3952d
	ld hl, StringBuffer1
	ld de, $d016
	ld bc, $000d
	call CopyBytes
	ld hl, $d016
.asm_13757
	ld a, [hli]
	cp $50
	jr nz, .asm_13757
	dec hl
	ld [hl], $7f
	inc hl
	ld d, h
	ld e, l
	pop bc
	pop hl
	push de
	ld a, [hl]
	ld b, a
	callab Function3994c
	ld hl, StringBuffer1
	pop de
	ld bc, $000a
	jp CopyBytes

.asm_13777
	ld hl, PlayerName
	ld de, $d016
	ld bc, $000b
	jp CopyBytes
; 13783

INCBIN "baserom.gbc",$13783,$13807 - $13783

Function13807: ; 13807
	ld hl, $d00a
	ld de, $fffc
	ld b, $3
.asm_1380f
	ld a, [hl]
	cp $1
	jr z, .asm_13818
	add hl, de
	dec b
	jr nz, .asm_1380f

.asm_13818
	ret
; 13819

Function13819: ; 13819
	call Function13833
	call Function138b0
	ld hl, $d00e
	ld a, $1
	ld [hli], a
	ld a, [$df9c]
	ld [hli], a
	ld a, [hProduct]
	ld [hli], a
	ld a, [hMultiplicand]
	ld [hl], a
	call Function1383e
	ret
; 13833

Function13833: ; 13833
	ld hl, DefaultFlypoint
	ld b, $c
	xor a
.asm_13839
	ld [hli], a
	dec b
	jr nz, .asm_13839
	ret
; 1383e

Function1383e: ; 1383e
	ld de, $d010
	ld hl, $d004
	ld c, $2
	call StringCmp
	jr c, .asm_1386b
	ld hl, EndFlypoint
	ld de, $d00a
	ld bc, $0004
	call CopyBytes
	ld hl, DefaultFlypoint
	ld de, EndFlypoint
	ld bc, $0004
	call CopyBytes
	ld hl, DefaultFlypoint
	call Function138a0
	jr .asm_1389f

.asm_1386b
	ld de, $d010
	ld hl, $d008
	ld c, $2
	call StringCmp
	jr c, .asm_1388c
	ld hl, EndFlypoint
	ld de, $d00a
	ld bc, $0004
	call CopyBytes
	ld hl, EndFlypoint
	call Function138a0
	jr .asm_1389f

.asm_1388c
	ld de, $d010
	ld hl, $d00c
	ld c, $2
	call StringCmp
	jr c, .asm_1389f
	ld hl, $d00a
	call Function138a0

.asm_1389f
	ret
; 138a0

Function138a0: ; 138a0
	ld de, $d00e
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hl], a
	ret
; 138b0

Function138b0: ; 138b0
	ld e, $0
.asm_138b2
	push de
	call Function139ed
	pop de
	jr nz, .asm_138f9
	ld a, e
	inc a
	inc a
	ld [$d00e], a
	dec a
	ld c, a
	ld b, $0
	ld hl, $7783
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	inc hl
.asm_138cd
	call Random
	and $3
	cp $3
	jr z, .asm_138cd
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld [$d00f], a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Random
	and $7
	ld c, a
	ld b, $0
	add hl, bc
	ld a, h
	ld [$d010], a
	ld a, l
	ld [$d011], a
	push de
	call Function1383e
	pop de

.asm_138f9
	inc e
	ld a, e
	cp $a
	jr nz, .asm_138b2
	ret
; 13900

Function13900: ; 13900
	xor a
	ld [hProduct], a
	ld [hMultiplicand], a
	ld a, [$df9c]
	and a
	jr z, .asm_1397e
	ld a, [$dfc1]
	call Function1397f
	ld a, [$dfc1]
	call Function1397f
	ld a, [$dfc1]
	call Function1397f
	ld a, [$dfc1]
	call Function1397f
	ld a, [$dfc3]
	call Function1397f
	ld a, [$dfc5]
	call Function1397f
	ld a, [$dfc7]
	call Function1397f
	ld a, [$dfc9]
	call Function1397f
	ld a, [$dfcb]
	call Function1397f
	ld a, [$dfb1]
	ld b, a
	and $2
	add a
	add a
	ld c, a
	swap b
	ld a, b
	and $2
	add a
	add c
	ld d, a
	ld a, [$dfb2]
	ld b, a
	and $2
	ld c, a
	swap b
	ld a, b
	and $2
	srl a
	add c
	add c
	add d
	add d
	call Function1397f
	ld a, [$dfbf]
	srl a
	srl a
	srl a
	call Function1397f
	ld a, [$df9d]
	and a
	jr z, .asm_1397e
	ld a, $1
	call Function1397f

.asm_1397e
	ret
; 1397f

Function1397f: ; 1397f
	ld hl, hMultiplicand
	add [hl]
	ld [hl], a
	ret nc
	dec hl
	inc [hl]
	ret
; 13988

; decreases all pokemon's pokerus counter by b. if the lower nybble reaches zero, the pokerus is cured.
ApplyPokerusTick: ; 13988
	ld hl, PartyMon1PokerusStatus
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
.asm_13991
	ld a, [hl]
	and $f
	jr z, .asm_139a0
	sub b
	jr nc, .asm_1399a
	xor a

.asm_1399a
	ld d, a
	ld a, [hl]
	and $f0
	add d
	ld [hl], a

.asm_139a0
	ld de, PartyMon2 - PartyMon1
	add hl, de
	dec c
	jr nz, .asm_13991
	ret
; 139a8

Function139a8: ; 139a8
	ld c, $a
	ld hl, $79fe
.asm_139ad
	push bc
	push hl
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld b, $0
	call EventFlagAction
	pop hl
	inc hl
	inc hl
	pop bc
	dec c
	jr nz, .asm_139ad
	ld c, $5
.asm_139c0
	push bc
.asm_139c1
	call Random
	cp $fa
	jr nc, .asm_139c1
	ld c, $19
	call SimpleDivide
	ld e, b
	ld d, $0
	ld hl, $79fe
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	push de
	ld b, $2
	call EventFlagAction
	pop de
	ld a, c
	and a
	jr nz, .asm_139c1
	ld b, $1
	call EventFlagAction
	pop bc
	dec c
	jr nz, .asm_139c0
	ret
; 139ed

Function139ed: ; 139ed
	ld hl, $79fe
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld b, $2
	call EventFlagAction
	ret
; 139fe

INCBIN "baserom.gbc",$139fe,$13a12 - $139fe

Function13a12: ; 13a12
	ld hl, PartyMon1CurHP
	ld a, [hli]
	or [hl]
	jr z, .asm_13a2b
	ld hl, PartyCount
	ld a, $1
	ld [hli], a
	inc hl
	ld a, [hl]
	ld [$df9b], a
	ld [hl], $ff
	xor a
	ld [ScriptVar], a
	ret

.asm_13a2b
	ld a, $1
	ld [ScriptVar], a
	ret
; 13a31

Function13a31: ; 13a31
	ld hl, $dcd9
	ld a, [$df9b]
	ld [hl], a
	ld b, $1
.asm_13a3a
	ld a, [hli]
	cp $ff
	jr z, .asm_13a42
	inc b
	jr .asm_13a3a

.asm_13a42
	ld a, b
	ld [PartyCount], a
	ret
; 13a47

INCBIN "baserom.gbc",$13a47,$13b87 - $13a47


GetSquareRoot: ; 13b87
; Return the square root of de in b.

; Rather than calculating the result, we take the index of the
; first value in a table of squares that isn't lower than de.

	ld hl, Squares
	ld b, 0
.loop
; Make sure we don't go past the end of the table.
	inc b
	ld a, b
	cp $ff
	ret z

; Iterate over the table until b**2 >= de.
	ld a, [hli]
	sub e
	ld a, [hli]
	sbc d

	jr c, .loop
	ret

Squares: ; 13b98
root	set 1
	rept $ff
	dw root*root
root	set root+1
	endr
; 13d96


SECTION "bank5", ROMX, BANK[$5]


Function14000: ; 14000
	ld a, $a
	ld [$0000], a
	call LatchClock
	ld a, $c
	ld [Function14000], a
	ld a, [$a000]
	set 6, a
	ld [$a000], a
	call CloseSRAM
	ret
; 14019



Function14019: ; 14019
	ld a, $a
	ld [$0000], a
	call LatchClock
	ld a, $c
	ld [Function14000], a
	ld a, [$a000]
	res 6, a
	ld [$a000], a
	call CloseSRAM
	ret
; 14032



GetTimeOfDay: ; 14032
; get time of day based on the current hour
	ld a, [hHours] ; hour
	ld hl, TimesOfDay
	
.check
; if we're within the given time period,
; get the corresponding time of day
	cp [hl]
	jr c, .match
; else, get the next entry
	inc hl
	inc hl
; try again
	jr .check
	
.match
; get time of day
	inc hl
	ld a, [hl]
	ld [TimeOfDay], a
	ret
; 14044

TimesOfDay: ; 14044
; hours for the time of day
; 04-09 morn | 10-17 day | 18-03 nite
	db 04, NITE
	db 10, MORN
	db 18, DAY
	db 24, NITE
; 1404c


INCBIN "baserom.gbc",$1404c,$14056 - $1404c


Function14056: ; 14056
	call UpdateTime
	ld hl, $d4ba
	ld a, [CurDay]
	ld [hli], a
	ld a, [hHours]
	ld [hli], a
	ld a, [hMinutes]
	ld [hli], a
	ld a, [hSeconds]
	ld [hli], a
	ret
; 1406a

Function1406a: ; 1406a
	ld a, $a
	ld [$0000], a
	call LatchClock
	ld hl, $a000
	ld a, $c
	ld [Function14000], a
	res 7, [hl]
	ld a, $0
	ld [Function14000], a
	xor a
	ld [$ac60], a
	call CloseSRAM
	ret
; 14089



StartClock: ; 14089
	call GetClock
	call Function1409b
	call FixDays
	jr nc, .asm_14097
	call Function6d3

.asm_14097
	call Function14019
	ret
; 1409b

Function1409b: ; 1409b
	ld hl, hRTCDayHi
	bit 7, [hl]
	jr nz, .asm_140a8
	bit 6, [hl]
	jr nz, .asm_140a8
	xor a
	ret

.asm_140a8
	ld a, $80
	call Function6d3
	ret
; 140ae

Function140ae: ; 140ae
	call Function6e3
	ld c, a
	and $c0
	jr nz, .asm_140c8
	ld a, c
	and $20
	jr z, .asm_140eb
	call UpdateTime
	ld a, [$d4ba]
	ld b, a
	ld a, [CurDay]
	cp b
	jr c, .asm_140eb

.asm_140c8
	callba Function113da
	callba Function170923
	ld a, $5
	call GetSRAMBank
	ld a, [$aa8c]
	inc a
	ld [$aa8c], a
	ld a, [$b2fa]
	inc a
	ld [$b2fa], a
	call CloseSRAM
	ret

.asm_140eb
	xor a
	ret
; 140ed



Function140ed: ; 140ed
	call GetClock
	call FixDays
	ld hl, hRTCSeconds
	ld de, StartSecond
	ld a, [$d089]
	sub [hl]
	dec hl
	jr nc, .asm_14102
	add $3c

.asm_14102
	ld [de], a
	dec de
	ld a, [$d088]
	sbc [hl]
	dec hl
	jr nc, .asm_1410d
	add $3c

.asm_1410d
	ld [de], a
	dec de
	ld a, [$d087]
	sbc [hl]
	dec hl
	jr nc, .asm_14118
	add $18

.asm_14118
	ld [de], a
	dec de
	ld a, [StringBuffer2]
	sbc [hl]
	dec hl
	jr nc, .asm_14128
	add $8c
	ld c, $7
	call SimpleDivide

.asm_14128
	ld [de], a
	ret
; 1412a

Function1412a: ; 1412a
	ld a, $1
	ld [rVBK], a
	call Get2bpp
	xor a
	ld [rVBK], a
	ret
; 14135

Function14135: ; 14135
	call GetPlayerSprite
	ld a, [UsedSprites]
	ld [$ffbd], a
	ld a, [$d155]
	ld [$ffbe], a
	call Function143c8
	ret
; 14146

INCBIN "baserom.gbc",$14146,$14168 - $14146


Function14168: ; 14168
	call Function1416f
	call Function14209
	ret
; 1416f

Function1416f: ; 1416f
	xor a
	ld bc, $0040
	ld hl, UsedSprites
	call ByteFill
	call GetPlayerSprite
	call AddMapSprites
	call Function142db
	ret
; 14183



GetPlayerSprite: ; 14183
; Get Chris or Kris's sprite.

	ld hl, .Chris
	ld a, [$d45b]
	bit 2, a
	jr nz, .go
	ld a, [PlayerGender]
	bit 0, a
	jr z, .go
	ld hl, .Kris

.go
	ld a, [PlayerState]
	ld c, a
.loop
	ld a, [hli]
	cp c
	jr z, .asm_141ac
	inc hl
	cp $ff
	jr nz, .loop

; Any player state not in the array defaults to Chris's sprite.
	xor a ; ld a, PLAYER_NORMAL
	ld [PlayerState], a
	ld a, SPRITE_CHRIS
	jr .asm_141ad

.asm_141ac
	ld a, [hl]

.asm_141ad
	ld [UsedSprites + 0], a
	ld [$d4d6], a
	ld [$d71f], a
	ret

.Chris
	db PLAYER_NORMAL, SPRITE_CHRIS
	db PLAYER_BIKE, SPRITE_CHRIS_BIKE
	db PLAYER_SURF, SPRITE_SURF
	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
	db $ff

.Kris
	db PLAYER_NORMAL, SPRITE_KRIS
	db PLAYER_BIKE, SPRITE_KRIS_BIKE
	db PLAYER_SURF, SPRITE_SURF
	db PLAYER_SURF_PIKA, SPRITE_SURFING_PIKACHU
	db $ff
; 141c9


AddMapSprites: ; 141c9
	call GetMapPermission
	call CheckOutdoorMap
	jr z, .outdoor
	call AddIndoorSprites
	ret
.outdoor
	call AddOutdoorSprites
	ret
; 141d9


AddIndoorSprites: ; 141d9
	ld hl, MapObjects + 1 * OBJECT_LENGTH + 1 ; sprite
	ld a, 1
.loop
	push af
	ld a, [hl]
	call AddSpriteGFX
	ld de, OBJECT_LENGTH
	add hl, de
	pop af
	inc a
	cp NUM_OBJECTS
	jr nz, .loop
	ret
; 141ee


AddOutdoorSprites: ; 141ee
	ld a, [MapGroup]
	dec a
	ld c, a
	ld b, 0
	ld hl, OutdoorSprites
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld c, $17
.loop
	push bc
	ld a, [hli]
	call AddSpriteGFX
	pop bc
	dec c
	jr nz, .loop
	ret
; 14209


Function14209: ; 14209
	ld a, $4
	call Function263b
	call Function1439b
	call Function14215
	ret
; 14215

Function14215: ; 14215
	ld a, [$d13e]
	bit 6, a
	ret nz
	ld c, $8
	callba Function1442f
	call GetMapPermission
	call CheckOutdoorMap
	ld c, $b
	jr z, .asm_1422f
	ld c, $a

.asm_1422f
	callba Function1442f
	ret
; 14236



SafeGetSprite: ; 14236
	push hl
	call GetSprite
	pop hl
	ret
; 1423c

GetSprite: ; 1423c
	call GetMonSprite
	ret c

	ld hl, SpriteHeaders
	dec a
	ld c, a
	ld b, 0
	ld a, 6
	call AddNTimes
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	swap a
	ld c, a
	ld b, [hl]
	ld a, [hli]
	ld l, [hl]
	ld h, a
	ret
; 14259


GetMonSprite: ; 14259
; Return carry if a monster sprite was loaded.

	cp SPRITE_POKEMON
	jr c, .Normal
	cp SPRITE_DAYCARE_MON_1
	jr z, .BreedMon1
	cp SPRITE_DAYCARE_MON_2
	jr z, .BreedMon2
	cp SPRITE_VARS
	jr nc, .Variable
	jr .Icon

.Normal
	and a
	ret

.Icon
	sub SPRITE_POKEMON
	ld e, a
	ld d, 0
	ld hl, SpriteMons
	add hl, de
	ld a, [hl]
	jr .Mon

.BreedMon1
	ld a, [BreedMon1Species]
	jr .Mon

.BreedMon2
	ld a, [BreedMon2Species]

.Mon
	ld e, a
	and a
	jr z, .asm_1429f

	callba Function8e82b

	ld l, 1
	ld h, 0
	scf
	ret

.Variable
	sub SPRITE_VARS
	ld e, a
	ld d, 0
	ld hl, VariableSprites
	add hl, de
	ld a, [hl]
	and a
	jp nz, GetMonSprite

.asm_1429f
	ld a, 1
	ld l, 1
	ld h, 0
	and a
	ret
; 142a7


Function142a7: ; 142a7
	cp SPRITE_POKEMON
	jr nc, .asm_142c2

	push hl
	push bc
	ld hl, SpriteHeaders + 4
	dec a
	ld c, a
	ld b, 0
	ld a, 6
	call AddNTimes
	ld a, [hl]
	pop bc
	pop hl
	cp 3
	jr nz, .asm_142c2
	scf
	ret

.asm_142c2
	and a
	ret
; 142c4


_GetSpritePalette: ; 142c4
	ld a, c
	call GetMonSprite
	jr c, .asm_142d8

	ld hl, SpriteHeaders + 5 ; palette
	dec a
	ld c, a
	ld b, 0
	ld a, 6
	call AddNTimes
	ld c, [hl]
	ret

.asm_142d8
	xor a
	ld c, a
	ret
; 142db


Function142db: ; 142db
	call LoadSpriteGFX
	call SortUsedSprites
	call ArrangeUsedSprites
	ret
; 142e5


AddSpriteGFX: ; 142e5
; Add any new sprite ids to a list of graphics to be loaded.
; Return carry if the list is full.

	push hl
	push bc
	ld b, a
	ld hl, UsedSprites + 2
	ld c, $1f
.loop
	ld a, [hl]
	cp b
	jr z, .exists
	and a
	jr z, .new
	inc hl
	inc hl
	dec c
	jr nz, .loop

	pop bc
	pop hl
	scf
	ret

.exists
	pop bc
	pop hl
	and a
	ret

.new
	ld [hl], b
	pop bc
	pop hl
	and a
	ret
; 14306


LoadSpriteGFX: ; 14306

	ld hl, UsedSprites
	ld b, $20
.loop
	ld a, [hli]
	and a
	jr z, .done
	push hl
	call .LoadSprite
	pop hl
	ld [hli], a
	dec b
	jr nz, .loop

.done
	ret

.LoadSprite
	call GetSprite
	ld a, l
	ret
; 1431e


SortUsedSprites: ; 1431e
; Bubble-sort sprites by type.

; Run backwards through UsedSprites to find the last one.

	ld c, $20
	ld de, UsedSprites + ($20 - 1) * 2
.FindLastSprite
	ld a, [de]
	and a
	jr nz, .FoundLastSprite
	dec de
	dec de
	dec c
	jr nz, .FindLastSprite
.FoundLastSprite
	dec c
	jr z, .quit

; If the length of the current sprite is
; higher than a later one, swap them.

	inc de
	ld hl, UsedSprites + 1

.CheckSprite
	push bc
	push de
	push hl

.CheckFollowing
	ld a, [de]
	cp [hl]
	jr nc, .next

; Swap the two sprites.

	ld b, a
	ld a, [hl]
	ld [hl], b
	ld [de], a
	dec de
	dec hl
	ld a, [de]
	ld b, a
	ld a, [hl]
	ld [hl], b
	ld [de], a
	inc de
	inc hl

; Keep doing this until everything's in order.

.next
	dec de
	dec de
	dec c
	jr nz, .CheckFollowing

	pop hl
	inc hl
	inc hl
	pop de
	pop bc
	dec c
	jr nz, .CheckSprite

.quit
	ret
; 14355


ArrangeUsedSprites: ; 14355
; Get the length of each sprite and space them out in VRAM.
; Crystal introduces a second table in VRAM bank 0.

	ld hl, UsedSprites
	ld c, $20
	ld b, 0
.FirstTableLength
; Keep going until the end of the list.
	ld a, [hli]
	and a
	jr z, .quit

	ld a, [hl]
	call GetSpriteLength

; Spill over into the second table after $80 tiles.
	add b
	cp $80
	jr z, .next
	jr nc, .SecondTable

.next
	ld [hl], b
	inc hl
	ld b, a

; Assumes the next table will be reached before c hits 0.
	dec c
	jr nz, .FirstTableLength

.SecondTable
; The second tile table starts at tile $80.
	ld b, $80
	dec hl
.SecondTableLength
; Keep going until the end of the list.
	ld a, [hli]
	and a
	jr z, .quit

	ld a, [hl]
	call GetSpriteLength

; There are only two tables, so don't go any further than that.
	add b
	jr c, .quit

	ld [hl], b
	ld b, a
	inc hl

	dec c
	jr nz, .SecondTableLength

.quit
	ret
; 14386


GetSpriteLength: ; 14386
; Return the length of sprite type a in tiles.

	cp WALKING_SPRITE
	jr z, .AnyDirection
	cp STANDING_SPRITE
	jr z, .AnyDirection
	cp STILL_SPRITE
	jr z, .OneDirection

	ld a, 12
	ret

.AnyDirection
	ld a, 12
	ret

.OneDirection
	ld a, 4
	ret
; 1439b


Function1439b: ; 1439b
	ld hl, UsedSprites
	ld c, $20
.asm_143a0
	ld a, [$d13e]
	res 5, a
	ld [$d13e], a
	ld a, [hli]
	and a
	jr z, .asm_143c7
	ld [$ffbd], a
	ld a, [hli]
	ld [$ffbe], a
	bit 7, a
	jr z, .asm_143bd
	ld a, [$d13e]
	set 5, a
	ld [$d13e], a

.asm_143bd
	push bc
	push hl
	call Function143c8
	pop hl
	pop bc
	dec c
	jr nz, .asm_143a0

.asm_143c7
	ret
; 143c8

Function143c8: ; 143c8
	ld a, [$ffbd]
	call SafeGetSprite
	ld a, [$ffbe]
	call Function14406
	push hl
	push de
	push bc
	ld a, [$d13e]
	bit 7, a
	jr nz, .asm_143df
	call Function14418

.asm_143df
	pop bc
	ld l, c
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, hl
	pop de
	add hl, de
	ld d, h
	ld e, l
	pop hl
	ld a, [$d13e]
	bit 5, a
	jr nz, .asm_14405
	bit 6, a
	jr nz, .asm_14405
	ld a, [$ffbd]
	call Function142a7
	jr c, .asm_14405
	ld a, h
	add $8
	ld h, a
	call Function14418

.asm_14405
	ret
; 14406

Function14406: ; 14406
	and $7f
	ld l, a
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, hl
	ld a, l
	add $0
	ld l, a
	ld a, h
	adc $80
	ld h, a
	ret
; 14418

Function14418: ; 14418
	ld a, [rVBK]
	push af
	ld a, [$d13e]
	bit 5, a
	ld a, $1
	jr z, .asm_14426
	ld a, $0

.asm_14426
	ld [rVBK], a
	call Get2bpp
	pop af
	ld [rVBK], a
	ret
; 1442f

Function1442f: ; 1442f
	ld a, c
	ld bc, $0006
	ld hl, $444d
	call AddNTimes
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
	ld c, [hl]
	swap c
	inc hl
	ld b, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, c
	and a
	ret z
	call Function1412a
	ret
; 1444d

INCBIN "baserom.gbc",$1444d,$14495 - $1444d


SpriteMons: ; 14495
	db UNOWN
	db GEODUDE
	db GROWLITHE
	db WEEDLE
	db SHELLDER
	db ODDISH
	db GENGAR
	db ZUBAT
	db MAGIKARP
	db SQUIRTLE
	db TOGEPI
	db BUTTERFREE
	db DIGLETT
	db POLIWAG
	db PIKACHU
	db CLEFAIRY
	db CHARMANDER
	db JYNX
	db STARMIE
	db BULBASAUR
	db JIGGLYPUFF
	db GRIMER
	db EKANS
	db PARAS
	db TENTACOOL
	db TAUROS
	db MACHOP
	db VOLTORB
	db LAPRAS
	db RHYDON
	db MOLTRES
	db SNORLAX
	db GYARADOS
	db LUGIA
	db HO_OH
; 144b8
	

OutdoorSprites: ; 144b8
; Valid sprite IDs for each map group.

	dw Group1Sprites
	dw Group2Sprites
	dw Group3Sprites
	dw Group4Sprites
	dw Group5Sprites
	dw Group6Sprites
	dw Group7Sprites
	dw Group8Sprites
	dw Group9Sprites
	dw Group10Sprites
	dw Group11Sprites
	dw Group12Sprites
	dw Group13Sprites
	dw Group14Sprites
	dw Group15Sprites
	dw Group16Sprites
	dw Group17Sprites
	dw Group18Sprites
	dw Group19Sprites
	dw Group20Sprites
	dw Group21Sprites
	dw Group22Sprites
	dw Group23Sprites
	dw Group24Sprites
	dw Group25Sprites
	dw Group26Sprites
; 144ec


Group13Sprites: ; 144ec
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_BLUE
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SWIMMER_GUY
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14503

Group23Sprites: ; 14503
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_BLUE
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SWIMMER_GUY
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 1451a

Group14Sprites: ; 1451a
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_BLUE
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SWIMMER_GUY
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14531

Group6Sprites: ; 14531
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_BLUE
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SWIMMER_GUY
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14548

Group7Sprites: ; 14548
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_COOLTRAINER_M
	db SPRITE_SUPER_NERD
	db SPRITE_COOLTRAINER_F
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_LASS
	db SPRITE_POKEFAN_M
	db SPRITE_ROCKET
	db SPRITE_MISTY
	db SPRITE_POKE_BALL
	db SPRITE_SLOWPOKE
; 1455f

Group25Sprites: ; 1455f
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_COOLTRAINER_M
	db SPRITE_SUPER_NERD
	db SPRITE_COOLTRAINER_F
	db SPRITE_FISHER
	db SPRITE_YOUNGSTER
	db SPRITE_LASS
	db SPRITE_POKEFAN_M
	db SPRITE_ROCKET
	db SPRITE_MISTY
	db SPRITE_POKE_BALL
	db SPRITE_SLOWPOKE
; 14576

Group21Sprites: ; 14576
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_FISHER
	db SPRITE_POLIWAG
	db SPRITE_TEACHER
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_LASS
	db SPRITE_BIKER
	db SPRITE_SILVER
	db SPRITE_BLUE
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 1458d

Group18Sprites: ; 1458d
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_POKEFAN_M
	db SPRITE_MACHOP
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_FISHER
	db SPRITE_TEACHER
	db SPRITE_SUPER_NERD
	db SPRITE_BIG_SNORLAX
	db SPRITE_BIKER
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 145a4

Group12Sprites: ; 145a4
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_POKEFAN_M
	db SPRITE_MACHOP
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_FISHER
	db SPRITE_TEACHER
	db SPRITE_SUPER_NERD
	db SPRITE_BIG_SNORLAX
	db SPRITE_BIKER
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 145bb

Group17Sprites: ; 145bb
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_POKEFAN_M
	db SPRITE_MACHOP
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_FISHER
	db SPRITE_TEACHER
	db SPRITE_SUPER_NERD
	db SPRITE_BIG_SNORLAX
	db SPRITE_BIKER
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 145d2

Group16Sprites: ; 145d2
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_POKEFAN_M
	db SPRITE_BUENA
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_FISHER
	db SPRITE_TEACHER
	db SPRITE_SUPER_NERD
	db SPRITE_MACHOP
	db SPRITE_BIKER
	db SPRITE_POKE_BALL
	db SPRITE_BOULDER
; 145e9

Group24Sprites: ; 145e9
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_SILVER
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_COOLTRAINER_M
	db SPRITE_YOUNGSTER
	db SPRITE_MONSTER
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14600

Group26Sprites: ; 14600
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_SILVER
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_COOLTRAINER_M
	db SPRITE_YOUNGSTER
	db SPRITE_MONSTER
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14617

Group19Sprites: ; 14617
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_SILVER
	db SPRITE_TEACHER
	db SPRITE_FISHER
	db SPRITE_COOLTRAINER_M
	db SPRITE_YOUNGSTER
	db SPRITE_MONSTER
	db SPRITE_GRAMPS
	db SPRITE_BUG_CATCHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 1462e

Group10Sprites: ; 1462e
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_FISHER
	db SPRITE_LASS
	db SPRITE_OFFICER
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_COOLTRAINER_M
	db SPRITE_BUG_CATCHER
	db SPRITE_SUPER_NERD
	db SPRITE_WEIRD_TREE
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 14645

Group4Sprites: ; 14645
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_FISHER
	db SPRITE_LASS
	db SPRITE_OFFICER
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_COOLTRAINER_M
	db SPRITE_BUG_CATCHER
	db SPRITE_SUPER_NERD
	db SPRITE_WEIRD_TREE
	db SPRITE_POKE_BALL
	db SPRITE_FRUIT_TREE
; 1465c

Group8Sprites: ; 1465c
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_KURT_OUTSIDE
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_OFFICER
	db SPRITE_POKEFAN_M
	db SPRITE_BLACK_BELT
	db SPRITE_TEACHER
	db SPRITE_AZALEA_ROCKET
	db SPRITE_LASS
	db SPRITE_SILVER
	db SPRITE_FRUIT_TREE
	db SPRITE_SLOWPOKE
; 14673

Group11Sprites: ; 14673
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_POKE_BALL
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_OFFICER
	db SPRITE_POKEFAN_M
	db SPRITE_DAYCARE_MON_1
	db SPRITE_COOLTRAINER_F
	db SPRITE_ROCKET
	db SPRITE_LASS
	db SPRITE_DAYCARE_MON_2
	db SPRITE_FRUIT_TREE
	db SPRITE_SLOWPOKE
; 1468a

Group22Sprites: ; 1468a
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_STANDING_YOUNGSTER
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_OLIVINE_RIVAL
	db SPRITE_POKEFAN_M
	db SPRITE_LASS
	db SPRITE_BUENA
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SAILOR
	db SPRITE_POKEFAN_F
	db SPRITE_SUPER_NERD
	db SPRITE_TAUROS
	db SPRITE_FRUIT_TREE
	db SPRITE_ROCK
; 146a1

Group1Sprites: ; 146a1
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_STANDING_YOUNGSTER
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_OLIVINE_RIVAL
	db SPRITE_POKEFAN_M
	db SPRITE_LASS
	db SPRITE_BUENA
	db SPRITE_SWIMMER_GIRL
	db SPRITE_SAILOR
	db SPRITE_POKEFAN_F
	db SPRITE_SUPER_NERD
	db SPRITE_TAUROS
	db SPRITE_FRUIT_TREE
	db SPRITE_ROCK
; 146b8

Group9Sprites: ; 146b8
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_LANCE
	db SPRITE_GRAMPS
	db SPRITE_SUPER_NERD
	db SPRITE_COOLTRAINER_F
	db SPRITE_FISHER
	db SPRITE_COOLTRAINER_M
	db SPRITE_LASS
	db SPRITE_YOUNGSTER
	db SPRITE_GYARADOS
	db SPRITE_FRUIT_TREE
	db SPRITE_POKE_BALL
; 146cf

Group2Sprites: ; 146cf
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_LASS
	db SPRITE_SUPER_NERD
	db SPRITE_COOLTRAINER_M
	db SPRITE_POKEFAN_M
	db SPRITE_BLACK_BELT
	db SPRITE_COOLTRAINER_F
	db SPRITE_FISHER
	db SPRITE_FRUIT_TREE
	db SPRITE_POKE_BALL
; 146e6

Group5Sprites: ; 146e6
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_GRAMPS
	db SPRITE_YOUNGSTER
	db SPRITE_LASS
	db SPRITE_SUPER_NERD
	db SPRITE_COOLTRAINER_M
	db SPRITE_POKEFAN_M
	db SPRITE_BLACK_BELT
	db SPRITE_COOLTRAINER_F
	db SPRITE_FISHER
	db SPRITE_FRUIT_TREE
	db SPRITE_POKE_BALL
; 146fd

Group3Sprites: ; 146fd
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_GAMEBOY_KID
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_LASS
	db SPRITE_POKEFAN_F
	db SPRITE_TEACHER
	db SPRITE_YOUNGSTER
	db SPRITE_GROWLITHE
	db SPRITE_POKEFAN_M
	db SPRITE_ROCKER
	db SPRITE_FISHER
	db SPRITE_SCIENTIST
	db SPRITE_POKE_BALL
	db SPRITE_BOULDER
; 14714

Group15Sprites: ; 14714
	db SPRITE_SUICUNE
	db SPRITE_SILVER_TROPHY
	db SPRITE_FAMICOM
	db SPRITE_POKEDEX
	db SPRITE_WILL
	db SPRITE_KAREN
	db SPRITE_NURSE
	db SPRITE_OLD_LINK_RECEPTIONIST
	db SPRITE_BIG_LAPRAS
	db SPRITE_BIG_ONIX
	db SPRITE_SUDOWOODO
	db SPRITE_BIG_SNORLAX
	db SPRITE_SAILOR
	db SPRITE_FISHING_GURU
	db SPRITE_GENTLEMAN
	db SPRITE_SUPER_NERD
	db SPRITE_HO_OH
	db SPRITE_TEACHER
	db SPRITE_COOLTRAINER_F
	db SPRITE_YOUNGSTER
	db SPRITE_FAIRY
	db SPRITE_POKE_BALL
	db SPRITE_ROCK
; 1472b

Group20Sprites: ; 1472b
	db SPRITE_OAK
	db SPRITE_FISHER
	db SPRITE_TEACHER
	db SPRITE_TWIN
	db SPRITE_POKEFAN_M
	db SPRITE_GRAMPS
	db SPRITE_FAIRY
	db SPRITE_SILVER
	db SPRITE_FISHING_GURU
	db SPRITE_POKE_BALL
	db SPRITE_POKEDEX
; 14736


SpriteHeaders: ; 14736
INCLUDE "gfx/overworld/sprite_headers.asm"
; 1499a


Function1499a: ; 1499a
	ld a, [StandingTile]
	cp $60
	jr z, .asm_149ad
	cp $68
	jr z, .asm_149ad
	and $f0
	cp $70
	jr z, .asm_149ad
	and a
	ret

.asm_149ad
	scf
	ret
; 149af

Function149af: ; 149af
	ld a, [StandingTile]
	cp $70
	jr z, .asm_149c4
	cp $76
	jr z, .asm_149c4
	cp $78
	jr z, .asm_149c4
	cp $7e
	jr z, .asm_149c4
	scf
	ret

.asm_149c4
	xor a
	ret
; 149c6

Function149c6: ; 149c6
	ld de, $1
	ld hl, $49d3
	ld a, [StandingTile] ; $d4e4
	call IsInArray
	ret
; 149d3 (5:49d3)

INCBIN "baserom.gbc",$149d3,$149dd - $149d3

Function149dd: ; 149dd
	ld a, [StandingTile]
	ld hl, $49ea
	ld de, $0001
	call IsInArray
	ret
; 149ea

INCBIN "baserom.gbc",$149ea,$149f5 - $149ea

Function149f5: ; 149f5
	ld a, c
	ld hl, $4a00
	ld de, $0001
	call IsInArray
	ret
; 14a00

INCBIN "baserom.gbc",$14a00,$14a07 - $14a00


Function14a07: ; 14a07
	ld a, [StandingTile]
	ld de, $001f
	cp $71
	ret z
	ld de, $0013
	cp $7c
	ret z
	ld de, $0023
	ret
; 14a1a

Function14a1a: ; 14a1a
	call Function1d6e
	callba Function5e9a
	call SpeechTextBox
	call Function1ad2
	callba Function4cf45
	ld hl, $5283
	call Function14baf
	jr nz, .asm_14a4a
	call Function14b89
	jr c, .asm_14a4a
	call Function14b54
	call Function14be3
	call Function14b5a
	call Function1c07
	and a
	ret
.asm_14a4a
	call Function1c07
	call Functiond90
	callba Function4cf45
	scf
	ret

Function14a58: ; 14a58
	call Function14b54
	callba Function14056
	callba Function1050d9
	call Function14df7
	call Function14e13
	call Function14e76
	call Function14e8b
	callba Function44725
	callba Function1406a
	call Function14b5a
	ret
; 14a83


; no known jump sources
Function14a83: ; 14a83 (5:4a83)
	push de
	ld hl, $52a1
	call Function1d4f
	call Function1dcf
	call Function1c07
	jr c, .asm_14ab0
	call Function14b89
	jr c, .asm_14ab0
	call Function14b54
	call Function14c99
	call Function14e0c
	pop de
	ld a, e
	ld [$db72], a
	call Function15021
	call Function14be6
	call Function14b5a
	and a
	ret
.asm_14ab0
	pop de
	ret

Function14ab2: ; 14ab2
	call Function14b89
	jr c, .asm_14ac1
	call Function14b54
	call Function14be3
	call Function14b5a
	and a

.asm_14ac1
	ret
; 14ac2

INCBIN "baserom.gbc",$14ac2,$14b54 - $14ac2

Function14b54: ; 14b54
	ld a, $1
	ld [$c2cd], a
	ret
; 14b5a

Function14b5a: ; 14b5a
	xor a
	ld [$c2cd], a
	ret
; 14b5f


Function14b5f: ; 14b5f
	ld a, $1
	call GetSRAMBank
	ld hl, $bdd9
	ld de, $be3b
	ld bc, $0b1a
.asm_14b6d
	ld a, [hld]
	ld [de], a
	dec de
	dec bc
	ld a, c
	or b
	jr nz, .asm_14b6d
	ld hl, OverworldMap
	ld de, $b2c0
	ld bc, $0062
	call CopyBytes
	call CloseSRAM
	ret
; 14b85

Function14b85: ; 14b85
	call Function14c10
	ret
; 14b89

Function14b89: ; 14b89
	ld a, [$cfcd]
	and a
	jr z, .asm_14ba8
	call Function14bcb
	jr z, .asm_14b9e
	ld hl, $5297
	call Function14baf
	jr nz, .asm_14bad
	jr .asm_14ba8

.asm_14b9e
	ld hl, $5292
	call Function14baf
	jr nz, .asm_14bad
	jr .asm_14bab

.asm_14ba8
	call Function14cbb

.asm_14bab
	and a
	ret

.asm_14bad
	scf
	ret
; 14baf

Function14baf: ; 14baf
	ld b, $5
	call Function269a
	call Function1d58
	ld bc, $0007
	call Function1dd2
	ld a, [$cfa9]
	dec a
	call Function1c17
	push af
	call Functiond90
	pop af
	and a
	ret
; 14bcb

Function14bcb: ; 14bcb
	ld a, $1
	call GetSRAMBank
	ld hl, $a009
	ld a, [hli]
	ld c, [hl]
	ld b, a
	call CloseSRAM
	ld a, [PlayerID]
	cp b
	ret nz
	ld a, [$d47c]
	cp c
	ret
; 14be3

Function14be3: ; 14be3
	call Function14c99
Function14be6: ; 14be6
	call Function14c10
	ld c, $20
	call DelayFrames
	ld a, [Options]
	push af
	ld a, $3
	ld [Options], a
	ld hl, $528d
	call PrintText
	pop af
	ld [Options], a
	ld de, $0025
	call WaitPlaySFX
	call WaitSFX
	ld c, $1e
	call DelayFrames
	ret
; 14c10


Function14c10: ; 14c10
	ld a, $1
	ld [$cfcd], a
	callba Function14056
	callba Function1050d9
	call Function14da9
	call Function14dbb
	call Function14dd7
	call Function14df7
	call Function14e0c
	call Function14e13
	call Function14e2d
	call Function14e40
	call Function14e55
	call Function14e76
	call Function14e8b
	call Function14c6b
	callba Function44725
	callba Function106187
	callba Function1406a
	ld a, $1
	call GetSRAMBank
	ld a, [$be45]
	cp $4
	jr nz, .asm_14c67
	xor a
	ld [$be45], a

.asm_14c67
	call CloseSRAM
	ret
; 14c6b

Function14c6b: ; 14c6b
	call Function14c90
	ld a, $0
	call GetSRAMBank
	ld a, [$bf10]
	ld e, a
	ld a, [$bf11]
	ld d, a
	or e
	jr z, .asm_14c84
	ld a, e
	sub l
	ld a, d
	sbc h
	jr c, .asm_14c8c

.asm_14c84
	ld a, l
	ld [$bf10], a
	ld a, h
	ld [$bf11], a

.asm_14c8c
	call CloseSRAM
	ret
; 14c90

Function14c90: ; 14c90
	ld hl, $c000
.asm_14c93
	ld a, [hl]
	or a
	ret nz
	inc hl
	jr .asm_14c93
; 14c99

Function14c99: ; 14c99
	xor a
	ld [hJoypadReleased], a
	ld [hJoypadPressed], a
	ld [hJoypadSum], a
	ld [hJoypadDown], a
	ld a, [Options]
	push af
	ld a, $3
	ld [Options], a
	ld hl, $5288
	call PrintText
	pop af
	ld [Options], a
	ld c, $10
	call DelayFrames
	ret
; 14cbb


Function14cbb: ; 14cbb
	call Function151fb
	call Function14d06
	call Function14ce2
	call Function14cf4
	call Function14d68
	call Function14d5c
	ld a, $0
	call GetSRAMBank
	xor a
	ld [$bf10], a
	ld [$bf11], a
	call CloseSRAM
	ld a, $1
	ld [$d4b4], a
	ret
; 14ce2

Function14ce2: ; 14ce2
	ld a, $1
	call GetSRAMBank
	ld hl, $b260
	ld bc, $0060
	xor a
	call ByteFill
	jp CloseSRAM
; 14cf4

Function14cf4: ; 14cf4
	ld a, $0
	call GetSRAMBank
	ld hl, $abe4
	ld bc, $004c
	xor a
	call ByteFill
	jp CloseSRAM
; 14d06

Function14d06: ; 14d06
	ld a, $1
	call GetSRAMBank
	ld hl, $b2c0
	ld bc, $0b7c
	xor a
	call ByteFill
	jp CloseSRAM
; 14d18

INCBIN "baserom.gbc",$14d18,$14d5c - $14d18


Function14d5c: ; 14d5c
	ld a, $1
	call GetSRAMBank
	xor a
	ld [$be45], a
	jp CloseSRAM
; 14d68

Function14d68: ; 14d68
	call Function1509a
	ret
; 14d6c

INCBIN "baserom.gbc",$14d6c,$14da0 - $14d6c


Function14da0: ; 14da0
	ld a, [$d4b4]
	and a
	ret nz
	call Function14cbb
	ret
; 14da9

Function14da9: ; 14da9
	ld a, $1
	call GetSRAMBank
	ld a, $63
	ld [$a008], a
	ld a, $7f
	ld [$ad0f], a
	jp CloseSRAM
; 14dbb

Function14dbb: ; 14dbb
	ld a, $1
	call GetSRAMBank
	ld hl, Options
	ld de, $a000
	ld bc, $0008
	call CopyBytes
	ld a, [Options]
	and $ef
	ld [$a000], a
	jp CloseSRAM
; 14dd7

Function14dd7: ; 14dd7
	ld a, $1
	call GetSRAMBank
	ld hl, PlayerID
	ld de, $a009
	ld bc, $082a
	call CopyBytes
	ld hl, VisitedSpawns
	ld de, $a833
	ld bc, $0032
	call CopyBytes
	jp CloseSRAM
; 14df7

Function14df7: ; 14df7
	ld a, $1
	call GetSRAMBank
	ld hl, PartyCount
	ld de, $a865
	ld bc, $031e
	call CopyBytes
	call CloseSRAM
	ret
; 14e0c

Function14e0c: ; 14e0c
	call Function150d8
	call Function150f9
	ret
; 14e13

Function14e13: ; 14e13
	ld hl, $a009
	ld bc, $0b7a
	ld a, $1
	call GetSRAMBank
	call Function15273
	ld a, e
	ld [$ad0d], a
	ld a, d
	ld [$ad0e], a
	call CloseSRAM
	ret
; 14e2d

Function14e2d: ; 14e2d
	ld a, $0
	call GetSRAMBank
	ld a, $63
	ld [$b208], a
	ld a, $7f
	ld [$bf0f], a
	call CloseSRAM
	ret
; 14e40

Function14e40: ; 14e40
	ld a, $0
	call GetSRAMBank
	ld hl, Options
	ld de, $b200
	ld bc, $0008
	call CopyBytes
	call CloseSRAM
	ret
; 14e55

Function14e55: ; 14e55
	ld a, $0
	call GetSRAMBank
	ld hl, PlayerID
	ld de, $b209
	ld bc, $082a
	call CopyBytes
	ld hl, VisitedSpawns
	ld de, $ba33
	ld bc, $0032
	call CopyBytes
	call CloseSRAM
	ret
; 14e76

Function14e76: ; 14e76
	ld a, $0
	call GetSRAMBank
	ld hl, PartyCount
	ld de, $ba65
	ld bc, $031e
	call CopyBytes
	call CloseSRAM
	ret
; 14e8b

Function14e8b: ; 14e8b
	ld hl, $b209
	ld bc, $0b7a
	ld a, $0
	call GetSRAMBank
	call Function15273
	ld a, e
	ld [$bf0d], a
	ld a, d
	ld [$bf0e], a
	call CloseSRAM
	ret
; 14ea5


; no known jump sources
Function14ea5: ; 14ea5 (5:4ea5)
	call Function15028
	jr nz, .asm_14ed6
	call Function14fd7
	call Function1500c
	call Function15021
	callba Function44745
	callba Function10619d
	callba Function1050ea
	call Function14e2d
	call Function14e40
	call Function14e55
	call Function14e76
	call Function14e8b
	and a
	ret
.asm_14ed6
	call Function1507c
	jr nz, .asm_14f07
	call Function15046
	call Function15067
	call Function15021
	callba Function44745
	callba Function10619d
	callba Function1050ea
	call Function14da9
	call Function14dbb
	call Function14dd7
	call Function14df7
	call Function14e13
	and a
	ret
.asm_14f07
	ld a, [Options] ; $cfcc
	push af
	set 4, a
	ld [Options], a ; $cfcc
	ld hl, $529c
	call PrintText
	pop af
	ld [Options], a ; $cfcc
	scf
	ret


Function14f1c: ; 14f1c
	xor a
	ld [$cfcd], a
	call Function14f84
	ld a, [$cfcd]
	and a
	jr z, .asm_14f46
	ld a, $1
	call GetSRAMBank
	ld hl, $a044
	ld de, StartDay
	ld bc, $0008
	call CopyBytes
	ld hl, $a3da
	ld de, StatusFlags
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret

.asm_14f46
	call Function14faf
	ld a, [$cfcd]
	and a
	jr z, .asm_14f6c
	ld a, $0
	call GetSRAMBank
	ld hl, $b244
	ld de, StartDay
	ld bc, $0008
	call CopyBytes
	ld hl, $b5da
	ld de, StatusFlags
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret

.asm_14f6c
	ld hl, $4f7c
	ld de, Options
	ld bc, $0008
	call CopyBytes
	call Function67e
	ret
; 14f7c

INCBIN "baserom.gbc",$14f7c,$14f84 - $14f7c


Function14f84: ; 14f84
	ld a, $1
	call GetSRAMBank
	ld a, [$a008]
	cp $63
	jr nz, .asm_14fab
	ld a, [$ad0f]
	cp $7f
	jr nz, .asm_14fab
	ld hl, $a000
	ld de, Options
	ld bc, $0008
	call CopyBytes
	call CloseSRAM
	ld a, $1
	ld [$cfcd], a

.asm_14fab
	call CloseSRAM
	ret
; 14faf

Function14faf: ; 14faf
	ld a, $0
	call GetSRAMBank
	ld a, [$b208]
	cp $63
	jr nz, .asm_14fd3
	ld a, [$bf0f]
	cp $7f
	jr nz, .asm_14fd3
	ld hl, $b200
	ld de, Options
	ld bc, $0008
	call CopyBytes
	ld a, $2
	ld [$cfcd], a

.asm_14fd3
	call CloseSRAM
	ret
; 14fd7


; known jump sources: 14eaa (5:4eaa)
Function14fd7: ; 14fd7 (5:4fd7)
	ld a, $1
	call GetSRAMBank
	ld hl, $a009
	ld de, PlayerID ; $d47b
	ld bc, $82a
	call CopyBytes
	ld hl, $a833
	ld de, VisitedSpawns ; $dca5
	ld bc, $32
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld a, [$be45]
	cp $4
	jr nz, .asm_15008
	ld a, $3
	ld [$be45], a
.asm_15008
	call CloseSRAM
	ret

Function1500c: ; 1500c
	ld a, $1
	call GetSRAMBank
	ld hl, $a865
	ld de, PartyCount
	ld bc, $031e
	call CopyBytes
	call CloseSRAM
	ret
; 15021


; known jump sources: 14aa5 (5:4aa5), 14eb0 (5:4eb0), 14ee1 (5:4ee1)
Function15021: ; 15021 (5:5021)
	call Function150d8
	call Function1517d
	ret

; known jump sources: 14ea5 (5:4ea5)
Function15028: ; 15028 (5:5028)
	ld hl, $a009
	ld bc, $b7a
	ld a, $1
	call GetSRAMBank
	call Function15273
	ld a, [$ad0d]
	cp e
	jr nz, .asm_15040
	ld a, [$ad0e]
	cp d
.asm_15040
	push af
	call CloseSRAM
	pop af
	ret

; known jump sources: 14edb (5:4edb)
Function15046: ; 15046 (5:5046)
	ld a, $0
	call GetSRAMBank
	ld hl, $b209
	ld de, PlayerID ; $d47b
	ld bc, $82a
	call CopyBytes
	ld hl, $ba33
	ld de, VisitedSpawns ; $dca5
	ld bc, $32
	call CopyBytes
	call CloseSRAM
	ret

; known jump sources: 14ede (5:4ede)
Function15067: ; 15067 (5:5067)
	ld a, $0
	call GetSRAMBank
	ld hl, $ba65
	ld de, PartyCount ; $dcd7
	ld bc, $31e
	call CopyBytes
	call CloseSRAM
	ret

; known jump sources: 14ed6 (5:4ed6)
Function1507c: ; 1507c (5:507c)
	ld hl, $b209
	ld bc, $b7a
	ld a, $0
	call GetSRAMBank
	call Function15273
	ld a, [$bf0d]
	cp e
	jr nz, .asm_15094
	ld a, [$bf0e]
	cp d
.asm_15094
	push af
	call CloseSRAM
	pop af
	ret


Function1509a: ; 1509a
	ld a, $1
	call GetSRAMBank
	ld hl, PlayerGender
	ld de, $be3d
	ld bc, $0007
	call CopyBytes
	ld hl, $d479
	ld a, [hli]
	ld [$a60e], a
	ld a, [hli]
	ld [$a60f], a
	jp CloseSRAM
; 150b9


; no known jump sources
Function150b9: ; 150b9 (5:50b9)
	ld a, $1
	call GetSRAMBank
	ld hl, $be3d
	ld de, PlayerGender ; $d472
	ld bc, $7
	call CopyBytes
	ld hl, $d479
	ld a, [$a60e]
	ld [hli], a
	ld a, [$a60f]
	ld [hli], a
	jp CloseSRAM


Function150d8: ; 150d8
	ld a, [$db72]
	cp $e
	jr c, .asm_150e3
	xor a
	ld [$db72], a

.asm_150e3
	ld e, a
	ld d, $0
	ld hl, $522d
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop af
	ret
; 150f9

Function150f9: ; 150f9
	push hl
	push af
	push de
	ld a, $1
	call GetSRAMBank
	ld hl, BoxCount
	ld de, EnemyMoveAnimation
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	push af
	push de
	call GetSRAMBank
	ld hl, EnemyMoveAnimation
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, $aef0
	ld de, EnemyMoveAnimation
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	ld hl, $01e0
	add hl, de
	ld e, l
	ld d, h
	push af
	push de
	call GetSRAMBank
	ld hl, EnemyMoveAnimation
	ld bc, $01e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, $b0d0
	ld de, EnemyMoveAnimation
	ld bc, $008e
	call CopyBytes
	call CloseSRAM
	pop de
	pop af
	ld hl, $01e0
	add hl, de
	ld e, l
	ld d, h
	call GetSRAMBank
	ld hl, EnemyMoveAnimation
	ld bc, $008e
	call CopyBytes
	call CloseSRAM
	pop hl
	ret
; 1517d


; known jump sources: 15024 (5:5024)
Function1517d: ; 1517d (5:517d)
	push hl
	ld l, e
	ld h, d
	push af
	push hl
	call GetSRAMBank
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld de, $ad10
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	pop hl
	pop af
	ld de, $1e0
	add hl, de
	push af
	push hl
	call GetSRAMBank
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld de, $aef0
	ld bc, $1e0
	call CopyBytes
	call CloseSRAM
	pop hl
	pop af
	ld de, $1e0
	add hl, de
	call GetSRAMBank
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld bc, $8e
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld de, $b0d0
	ld bc, $8e
	call CopyBytes
	call CloseSRAM
	pop hl
	ret


Function151fb: ; 151fb
	ld hl, $522d
	ld c, $e
.asm_15200
	push bc
	ld a, [hli]
	call GetSRAMBank
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	xor a
	ld [de], a
	inc de
	ld a, $ff
	ld [de], a
	inc de
	ld bc, $044c
.asm_15213
	xor a
	ld [de], a
	inc de
	dec bc
	ld a, b
	or c
	jr nz, .asm_15213
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, $ff
	ld [de], a
	inc de
	xor a
	ld [de], a
	call CloseSRAM
	pop bc
	dec c
	jr nz, .asm_15200
	ret
; 1522d

INCBIN "baserom.gbc",$1522d,$15273 - $1522d


Function15273: ; 15273
	ld de, $0000
.asm_15276
	ld a, [hli]
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	dec bc
	ld a, b
	or c
	jr nz, .asm_15276
	ret
; 15283

INCBIN "baserom.gbc",$15283,$152ab - $15283


SpawnPoints: ; 0x152ab

	const_def
	const SPAWN_HOME
	const SPAWN_VIRIDIAN_POKECENTER
	const SPAWN_PALLET
	const SPAWN_VIRIDIAN
	const SPAWN_PEWTER
	const SPAWN_CERULEAN
	const SPAWN_ROCK_TUNNEL
	const SPAWN_VERMILION
	const SPAWN_LAVENDER
	const SPAWN_SAFFRON
	const SPAWN_CELADON
	const SPAWN_FUCHSIA
	const SPAWN_CINNABAR
	const SPAWN_INDIGO_PLATEAU
	const SPAWN_NEW_BARK
	const SPAWN_CHERRYGROVE
	const SPAWN_VIOLET
	const SPAWN_UNION_CAVE
	const SPAWN_AZALEA
	const SPAWN_CIANWOOD
	const SPAWN_GOLDENROD
	const SPAWN_OLIVINE
	const SPAWN_ECRUTEAK
	const SPAWN_MAHOGANY
	const SPAWN_LAKE
	const SPAWN_BLACKTHORN
	const SPAWN_MT_SILVER
	const SPAWN_FAST_SHIP

	db GROUP_KRISS_HOUSE_2F, MAP_KRISS_HOUSE_2F, 3, 3
	db GROUP_VIRIDIAN_POKECENTER_1F, MAP_VIRIDIAN_POKECENTER_1F, 5, 3 ; unused
	db GROUP_PALLET_TOWN, MAP_PALLET_TOWN, 5, 6
	db GROUP_VIRIDIAN_CITY, MAP_VIRIDIAN_CITY, 23, 26
	db GROUP_PEWTER_CITY, MAP_PEWTER_CITY, 13, 26
	db GROUP_CERULEAN_CITY, MAP_CERULEAN_CITY, 19, 22
	db GROUP_ROUTE_10A, MAP_ROUTE_10A, 11, 2
	db GROUP_VERMILION_CITY, MAP_VERMILION_CITY, 9, 6
	db GROUP_LAVENDER_TOWN, MAP_LAVENDER_TOWN, 5, 6
	db GROUP_SAFFRON_CITY, MAP_SAFFRON_CITY, 9, 30
	db GROUP_CELADON_CITY, MAP_CELADON_CITY, 29, 10
	db GROUP_FUCHSIA_CITY, MAP_FUCHSIA_CITY, 19, 28
	db GROUP_CINNABAR_ISLAND, MAP_CINNABAR_ISLAND, 11, 12
	db GROUP_ROUTE_23, MAP_ROUTE_23, 9, 6
	db GROUP_NEW_BARK_TOWN, MAP_NEW_BARK_TOWN, 13, 6
	db GROUP_CHERRYGROVE_CITY, MAP_CHERRYGROVE_CITY, 29, 4
	db GROUP_VIOLET_CITY, MAP_VIOLET_CITY, 31, 26
	db GROUP_ROUTE_32, MAP_ROUTE_32, 11, 74
	db GROUP_AZALEA_TOWN, MAP_AZALEA_TOWN, 15, 10
	db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 23, 44
	db GROUP_GOLDENROD_CITY, MAP_GOLDENROD_CITY, 15, 28
	db GROUP_OLIVINE_CITY, MAP_OLIVINE_CITY, 13, 22
	db GROUP_ECRUTEAK_CITY, MAP_ECRUTEAK_CITY, 23, 28
	db GROUP_MAHOGANY_TOWN, MAP_MAHOGANY_TOWN, 15, 14
	db GROUP_LAKE_OF_RAGE, MAP_LAKE_OF_RAGE, 21, 29
	db GROUP_BLACKTHORN_CITY, MAP_BLACKTHORN_CITY, 21, 30
	db GROUP_SILVER_CAVE_OUTSIDE, MAP_SILVER_CAVE_OUTSIDE, 23, 20
	db GROUP_FAST_SHIP_CABINS_SW_SSW_NW, MAP_FAST_SHIP_CABINS_SW_SSW_NW, 6, 2
	db -1, -1, -1, -1


Function1531f: ; 1531f
	push hl
	push de
	ld a, [$d001]
	cp -1
	jr z, .asm_15341
	ld l, a
	ld h, 0
	add hl, hl
	add hl, hl
	ld de, SpawnPoints
	add hl, de
	ld a, [hli]
	ld [MapGroup], a
	ld a, [hli]
	ld [MapNumber], a
	ld a, [hli]
	ld [XCoord], a
	ld a, [hli]
	ld [YCoord], a
.asm_15341
	pop de
	pop hl
	ret
; 15344


Function15344: ; 15344
	ld hl, SpawnPoints
	ld c, 0
.asm_15349
	ld a, [hl]
	cp -1
	jr z, .asm_1535f
	cp d
	jr nz, .asm_15356
	inc hl
	ld a, [hld]
	cp e
	jr z, .asm_15361

.asm_15356
	push bc
	ld bc, 4
	add hl, bc
	pop bc
	inc c
	jr .asm_15349

.asm_1535f
	and a
	ret

.asm_15361
	scf
	ret
; 15363


Function15363: ; 15363
	ld a, [$ff9f]
	and $f
	dec a
	ld c, a
	ld b, $0
	ld hl, $5377
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Function1541d
	ret
; 15377

INCBIN "baserom.gbc",$15377,$1541d - $15377


Function1541d: ; 1541d
.asm_1541d
	ld a, [hli]
	cp $ff
	ret z
	push hl
	ld c, a
	ld b, $0
	ld hl, $5440
	add hl, bc
	add hl, bc
	add hl, bc
	ld b, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	bit 7, b
	jr z, .asm_15439
	pop de
	ld a, [de]
	ld c, a
	inc de
	push de

.asm_15439
	ld a, b
	and $7f
	rst FarCall
	pop hl
	jr .asm_1541d
; 15440

INCBIN "baserom.gbc",$15440,$154cf - $15440
	ld a, $1
	ld [$FF00+$de], a
	ret
	xor a
	ld [$FF00+$de], a
	ret
	ld a, $2
	call Function263b
	callba Function2454f
	callba Function8177
	ret
; 154ea (5:54ea)

INCBIN "baserom.gbc",$154ea,$154eb - $154ea
	ld hl, $d45b
	set 7, [hl]
	ret
	ld hl, $d45b
	set 6, [hl]
	ret

Function154f7: ; 154f7
	nop
	call Function1550c
	jr c, .asm_15508
	call Function1554e
	jr c, .asm_15508
	call Function1551a
	jr c, .asm_15508
	ret
.asm_15508
	call Functione4a
	ret

; known jump sources: 154f8 (5:54f8)
Function1550c: ; 1550c (5:550c)
	and a
	ld hl, BikeFlags ; $dbf5
	bit 1, [hl]
	ret z
	ld a, $1
	ld [PlayerState], a ; $d95d
	scf
	ret

; known jump sources: 15502 (5:5502)
Function1551a: ; 1551a (5:551a)
	ld a, [PlayerState] ; $d95d
	cp $0
	jr z, .asm_1554c
	cp $2
	jr z, .asm_1554c
	cp $4
	jr z, .asm_15545
	cp $8
	jr z, .asm_15545
	call GetMapPermission
	cp $3
	jr z, .asm_1553e
	cp $5
	jr z, .asm_1553e
	cp $7
	jr z, .asm_1553e
	jr .asm_1554c
.asm_1553e
	ld a, [PlayerState] ; $d95d
	cp $1
	jr nz, .asm_1554c
.asm_15545
	ld a, $0
	ld [PlayerState], a ; $d95d
	scf
	ret
.asm_1554c
	and a
	ret

; known jump sources: 154fd (5:54fd)
Function1554e: ; 1554e (5:554e)
	call Function1852
	jr nz, .asm_15565
	ld a, [PlayerState] ; $d95d
	cp $4
	jr z, .asm_15563
	cp $8
	jr z, .asm_15563
	ld a, $4
	ld [PlayerState], a ; $d95d
.asm_15563
	scf
	ret
.asm_15565
	and a
	ret
	ld a, $6
	call Function3cb4
	ret
	callba _UpdateTimePals
	ret
	ld e, $0
	ld a, [MusicFadeIDLo] ; $c2a9
	ld d, $0
	ld a, [MusicFadeIDHi] ; $c2aa
	ld a, $4
	ld [MusicFade], a ; $c2a7
	call Function4b6
	ret
	ld a, [PlayerState] ; $d95d
	cp $1
	jr nz, .asm_15596
	call VolumeOff
	ld a, $88
	ld [MusicFade], a ; $c2a7
.asm_15596
	call Function3d2f
	ret

Function1559a: ; 1559a
	call Function15650
	ret c
	call Function156b3
	ld hl, $5a27
	call Function15a20
	ld hl, $5a2c
	call Function157bb
	ld hl, $55d6
	call LoadMenuDataHeader
.asm_155b3
	xor a
	ld [hBGMapMode], a
	call Function1563e
	ld [$cf76], a
	call Function1e5d
	jr c, .asm_155cc
	ld a, [MenuSelection]
	ld hl, $55e6
	call Function1fa7
	jr nc, .asm_155b3

.asm_155cc
	call Function156b8
	call Function1c07
	call Function1c17
	ret
; 155d6

INCBIN "baserom.gbc",$155d6,$1563e - $155d6

Function1563e: ; 1563e
	call Function2ead
	jr nz, .asm_15646
	ld a, $0
	ret

.asm_15646
	ld a, [$d95e]
	and a
	ld a, $1
	ret z
	ld a, $2
	ret
; 15650

Function15650: ; 15650
	ld a, [PartyCount]
	and a
	ret nz
	ld de, $000f
	call PlaySFX
	ld hl, $5663
	call Function15a20
	scf
	ret
; 15663

INCBIN "baserom.gbc",$15663,$15668 - $15663
	call Function156c2
	ld hl, $5a31
	call Function15a20
	callba Functione3fd
	and a
	ret
; 15679 (5:5679)

INCBIN "baserom.gbc",$15679,$156b3 - $15679

Function156b3: ; 156b3
	ld de, $000d
	jr Function156d0

Function156b8: ; 156b8
	ld de, $000e
	call Function156d0
	call WaitSFX
	ret

Function156c2: ; 156c2
	ld de, $000f
	jr Function156d0

Function156c7: ; 156c7
	ld de, $0020
	call Function156d0
	ld de, $0020

Function156d0: ; 156d0
	push de
	call WaitSFX
	pop de
	call PlaySFX
	ret
; 156d9

Function156d9: ; 156d9
	call Function156b3
	ld hl, $56ff
	call Function15a20
	ld b, $1
	call Function15704
	and a
	jr nz, .asm_156f9
	call Function2173
	call Function321c
	call Function1ad2
	call Function156b8
	ld c, $0
	ret

.asm_156f9
	call WhiteBGMap
	ld c, $1
	ret
; 156ff

INCBIN "baserom.gbc",$156ff,$15704 - $156ff

Function15704: ; 15704
	ld a, b
	ld [$cf76], a
	ld hl, $57cc
	call Function157bb
	call Function15715
	call Function1c07
	ret
; 15715

Function15715: ; 15715
	xor a
	ld [$d0d7], a
	ld [$d0dd], a
	ld hl, KrissPCMenuData
	call LoadMenuDataHeader
.asm_15722
	call UpdateTimePals
	call Function1e5d
	jr c, .asm_15731
	call Function1fa7
	jr nc, .asm_15722
	jr .asm_15732

.asm_15731
	xor a

.asm_15732
	call Function1c07
	ret
; 15736

KrissPCMenuData: ; 0x15736
	db %01000000
	db  0,  0 ; top left corner coords (y, x)
	db 12, 15 ; bottom right corner coords (y, x)
	dw .KrissPCMenuData2
	db 1 ; default selected option

.KrissPCMenuData2
	db %10100000 ; bit7
	db 0 ; # items?
	dw .KrissPCMenuList1
	db $8d
	db $1f
	dw .KrissPCMenuPointers

.KrissPCMenuPointers ; 0x15746
	dw KrisWithdrawItemMenu, .WithdrawItem
	dw KrisDepositItemMenu,  .DepositItem
	dw KrisTossItemMenu,     .TossItem
	dw KrisMailBoxMenu,      .MailBox
	dw KrisDecorationMenu,   .Decoration
	dw KrisLogOffMenu,       .LogOff
	dw KrisLogOffMenu,       .TurnOff

.WithdrawItem db "WITHDRAW ITEM@"
.DepositItem  db "DEPOSIT ITEM@"
.TossItem     db "TOSS ITEM@"
.MailBox      db "MAIL BOX@"
.Decoration   db "DECORATION@"
.TurnOff      db "TURN OFF@"
.LogOff       db "LOG OFF@"

WITHDRAW_ITEM EQU 0
DEPOSIT_ITEM  EQU 1
TOSS_ITEM     EQU 2
MAIL_BOX      EQU 3
DECORATION    EQU 4
TURN_OFF      EQU 5
LOG_OFF       EQU 6

.KrissPCMenuList1
	db 5
	db WITHDRAW_ITEM
	db DEPOSIT_ITEM
	db TOSS_ITEM
	db MAIL_BOX
	db TURN_OFF
	db $ff

.KrissPCMenuList2
	db 6
	db WITHDRAW_ITEM
	db DEPOSIT_ITEM
	db TOSS_ITEM
	db MAIL_BOX
	db DECORATION
	db LOG_OFF
	db $ff

Function157bb: ; 157bb
	ld a, [Options]
	push af
	set 4, a
	ld [Options], a
	call Function1d4f
	pop af
	ld [Options], a
	ret
; 157cc

INCBIN "baserom.gbc",$157cc,$157d1 - $157cc

KrisWithdrawItemMenu: ; 0x157d1
	call Function1d6e
	callba ClearPCItemScreen
.asm_157da
	call Function15985
	jr c, .asm_157e4
	call Function157e9
	jr .asm_157da

.asm_157e4
	call Function2b3c
	xor a
	ret
; 0x157e9

Function157e9: ; 0x157e9
	; check if the item has a quantity
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr z, .askquantity

	; items without quantity are always ×1
	ld a, 1
	ld [$d10c], a
	jr .withdraw

.askquantity
	ld hl, .HowManyText
	call Function1d4f
	callba Function24fbf
	call Function1c07
	call Function1c07
	jr c, .done

.withdraw
	ld a, [$d10c]
	ld [Buffer1], a ; quantity
	ld a, [$d107]
	ld [Buffer2], a
	ld hl, NumItems
	call ReceiveItem
	jr nc, .PackFull
	ld a, [Buffer1]
	ld [$d10c], a
	ld a, [Buffer2]
	ld [$d107], a
	ld hl, PCItems
	call TossItem
	ld a, $3b
	call Predef
	ld hl, .WithdrewText
	call Function1d4f
	xor a
	ld [hBGMapMode], a
	call Function1c07
	ret

.PackFull
	ld hl, .NoRoomText
	call Function1d67
	ret

.done
	ret
; 0x15850

.HowManyText ; 0x15850
	TX_FAR _KrissPCHowManyWithdrawText
	db "@"

.WithdrewText ; 0x15855
	TX_FAR _KrissPCWithdrewItemsText
	db "@"

.NoRoomText ; 0x1585a
	TX_FAR _KrissPCNoRoomWithdrawText
	db "@"


KrisTossItemMenu: ; 0x1585f
	call Function1d6e
	callba ClearPCItemScreen
.asm_15868
	call Function15985
	jr c, .asm_15878
	ld de, PCItems
	callba Function129f4
	jr .asm_15868

.asm_15878
	call Function2b3c
	xor a
	ret
; 0x1587d


KrisDecorationMenu: ; 0x1587d
	callba _KrisDecorationMenu
	ld a, c
	and a
	ret z
	scf
	ret
; 0x15888


KrisLogOffMenu: ; 0x15888
	xor a
	scf
	ret
; 0x1588b


KrisDepositItemMenu: ; 0x1588b
	call Function158b8
	jr c, .asm_158b6
	call Function2ed3
	call Function1d6e
	callba Function106a5
.asm_1589c
	callba Function106be
	ld a, [$cf66]
	and a
	jr z, .asm_158b3
	call Function158cc
	callba CheckRegisteredItem
	jr .asm_1589c

.asm_158b3
	call Function2b3c

.asm_158b6
	xor a
	ret
; 0x158b8

Function158b8: ; 0x158b8
	callba Function129d5
	ret nc
	ld hl, Text158c7
	call Function1d67
	scf
	ret
; 0x158c7

Text158c7: ; 0x15c87
	TX_FAR UnknownText_0x1c13df
	db "@"


Function158cc: ; 0x158cc
	ld a, [$c2ce]
	push af
	ld a, $0
	ld [$c2ce], a
	callba CheckItemMenu
	ld a, [$d142]
	ld hl, JumpTable158e7
	rst JumpTable
	pop af
	ld [$c2ce], a
	ret
; 0x158e7

JumpTable158e7: ; 0x158e7
	dw .jump2
	dw .jump1
	dw .jump1
	dw .jump1
	dw .jump2
	dw .jump2
	dw .jump2

.jump1:
	ret
.jump2:
	ld a, [Buffer1]
	push af
	ld a, [Buffer2]
	push af
	call Function1590a
	pop af
	ld [Buffer2], a
	pop af
	ld [Buffer1], a
	ret
; 0x1590a

Function1590a: ; 0x1590a
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr z, .asm_1591d
	ld a, $1
	ld [$d10c], a
	jr .asm_15933

.asm_1591d
	ld hl, .HowManyText
	call Function1d4f
	callba Function24fbf
	push af
	call Function1c07
	call Function1c07
	pop af
	jr c, .asm_1596c

.asm_15933
	ld a, [$d10c]
	ld [Buffer1], a
	ld a, [$d107]
	ld [Buffer2], a
	ld hl, PCItems
	call ReceiveItem
	jr nc, .asm_15965
	ld a, [Buffer1]
	ld [$d10c], a
	ld a, [Buffer2]
	ld [$d107], a
	ld hl, NumItems
	call TossItem
	ld a, $3b
	call Predef
	ld hl, .DepositText
	call PrintText
	ret

.asm_15965
	ld hl, .NoRoomText
	call PrintText
	ret

.asm_1596c
	and a
	ret
; 0x1596e


.HowManyText ; 0x1596e
	TX_FAR _KrissPCHowManyDepositText
	db "@"

.DepositText ; 0x15973
	TX_FAR _KrissPCDepositItemsText
	db "@"

.NoRoomText ; 0x15978
	TX_FAR _KrissPCNoRoomDepositText
	db "@"


KrisMailBoxMenu: ; 0x1597d
	callba _KrisMailBoxMenu
	xor a
	ret
; 0x15985


Function15985: ; 0x15985
	xor a
	ld [$d0e3], a
.asm_15989
	ld a, [$c2ce]
	push af
	ld a, $0
	ld [$c2ce], a
	ld hl, MenuData15a08
	call Function1d3c
	hlcoord 0, 0
	ld b, $a
	ld c, $12
	call TextBox
	ld a, [$d0d7]
	ld [$cf88], a
	ld a, [$d0dd]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [$d0dd], a
	ld a, [$cfa9]
	ld [$d0d7], a
	pop af
	ld [$c2ce], a
	ld a, [$d0e3]
	and a
	jr nz, .asm_159d8
	ld a, [$cf73]
	cp $2
	jr z, .asm_15a06
	cp $1
	jr z, .asm_159fb
	cp $4
	jr z, .asm_159f2
	jr .asm_159f8

.asm_159d8
	ld a, [$cf73]
	cp $2
	jr z, .asm_159e9
	cp $1
	jr z, .asm_159ef
	cp $4
	jr z, .asm_159ef
	jr .asm_159f8

.asm_159e9
	xor a
	ld [$d0e3], a
	jr .asm_159f8

.asm_159ef
	call Function156c7

.asm_159f2
	callba Function2490c

.asm_159f8
	jp .asm_15989

.asm_159fb
	callba Function24706
	call Function1bee
	and a
	ret

.asm_15a06
	scf
	ret
; 0x15a08

MenuData15a08: ; 0x15a08
	db %01000000
	db 1, 4 ; top left corner coords (y, x)
	db $a, $12 ; bottorm right corner coords (y, x)
	dw .MenuData2
	db 1 ; default selected option

.MenuData2
	db %10110000
	db 4, 8 ; rows/cols?
	db 2 ; horizontal spacing?
	dbw 0, PCItems
	dbw BANK(Function24ab4), Function24ab4
	dbw BANK(Function24ac3), Function24ac3
	dbw BANK(Function244c3), Function244c3

Function15a20: ; 15a20
	call Function1d4f
	call Function1c07
	ret
; 15a27

INCBIN "baserom.gbc",$15a27,$15a45 - $15a27


OpenMartDialog: ; 15a45
	call GetMart
	ld a, c
	ld [EngineBuffer1], a
	call Function15b10
	ld a, [EngineBuffer1]
	ld hl, .dialogs
	rst JumpTable
	ret
; 15a57

.dialogs
	dw MartDialog
	dw HerbShop
	dw BargainShop
	dw Pharmacist
	dw VendingMachine
; 15a61

MartDialog: ; 15a61
	ld a, 0
	ld [EngineBuffer1], a
	xor a
	ld [MovementAnimation], a
	call Function15b47
	ret
; 15a6e

HerbShop: ; 15a6e
	call ReadMart
	call Function1d6e
	ld hl, $5e4a
	call Function15fcd
	call Function15c62
	ld hl, $5e68
	call Function15fcd
	ret
; 15a84

BargainShop: ; 15a84
	ld b, $5
	ld de, $5c51
	call Function15b10
	call Function15c25
	call Function1d6e
	ld hl, $5e6d
	call Function15fcd
	call Function15c62
	ld hl, WalkingDirection
	ld a, [hli]
	or [hl]
	jr z, .asm_15aa7
	ld hl, $dc1e
	set 6, [hl]

.asm_15aa7
	ld hl, $5e8b
	call Function15fcd
	ret
; 15aae

Pharmacist: ; 15aae
	call ReadMart
	call Function1d6e
	ld hl, $5e90
	call Function15fcd
	call Function15c62
	ld hl, $5eae
	call Function15fcd
	ret
; 15ac4

VendingMachine: ; 15ac4
	ld b, $5
	ld de, $5aee
	ld hl, StatusFlags
	bit 6, [hl]
	jr z, .asm_15ad5
	ld b, $5
	ld de, $5aff

.asm_15ad5
	call Function15b10
	call Function15c25
	call Function1d6e
	ld hl, UnknownText_0x15f83
	call Function15fcd
	call Function15c62
	ld hl, $5fb4
	call Function15fcd
	ret
; 15aee

INCBIN "baserom.gbc",$15aee,$15b10 - $15aee


Function15b10: ; 15b10
	ld a, b
	ld [$d03f], a
	ld a, e
	ld [MartPointer], a
	ld a, d
	ld [MartPointer + 1], a
	ld hl, CurMart
	xor a
	ld bc, CurMartEnd - CurMart
	call ByteFill
	xor a
	ld [MovementAnimation], a
	ld [WalkingDirection], a
	ld [FacingDirection], a
	ret
; 15b31

GetMart: ; 15b31
	ld a, e
	cp (MartsEnd - Marts) / 2
	jr c, .IsAMart
	ld b, $5
	ld de, DefaultMart
	ret

.IsAMart
	ld hl, Marts
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld b, $5
	ret
; 15b47

Function15b47: ; 15b47
.asm_15b47
	ld a, [MovementAnimation]
	ld hl, .table_15b56
	rst JumpTable
	ld [MovementAnimation], a
	cp $ff
	jr nz, .asm_15b47
	ret

.table_15b56
	dw Function15b62
	dw Function15b6e
	dw Function15b8d
	dw Function15b9a
	dw Function15ba3
	dw Function15baf
; 15b62

Function15b62: ; 15b62
	call Function1d6e
	ld hl, UnknownText_0x15f83
	call PrintText
	ld a, $1
	ret
; 15b6e

Function15b6e: ; 15b6e
	ld hl, $5f88
	call Function1d3c
	call Function1d81
	jr c, .asm_15b84
	ld a, [$cfa9]
	cp $1
	jr z, .asm_15b87
	cp $2
	jr z, .asm_15b8a
.asm_15b84
	ld a, $4
	ret
.asm_15b87
	ld a, $2
	ret
.asm_15b8a
	ld a, $3
	ret
; 15b8d

Function15b8d: ; 15b8d
	call Function1c07
	call ReadMart
	call Function15c62
	and a
	ld a, $5
	ret
; 15b9a

Function15b9a: ; 15b9a
	call Function1c07
	call Function15eb3
	ld a, $5
	ret
; 15ba3

Function15ba3: ; 15ba3
	call Function1c07
	ld hl, $5fb4
	call Function15fcd
	ld a, $ff
	ret
; 15baf

Function15baf: ; 15baf
	call Function1d6e
	ld hl, UnknownText_0x15fb9
	call PrintText
	ld a, $1
	ret
; 15bbb

ReadMart: ; 15bbb
	ld hl, MartPointer
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, CurMart
.CopyMart
	ld a, [$d03f]
	call GetFarByte
	ld [de], a
	inc hl
	inc de
	cp $ff
	jr nz, .CopyMart
	ld hl, DefaultFlypoint
	ld de, CurMart + 1
.ReadMartItem
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_15be4
	push de
	call GetMartItemPrice
	pop de
	jr .ReadMartItem

.asm_15be4
	ret
; 15be5

GetMartItemPrice: ; 15be5
; Return the price of item a in BCD at hl and in tiles at StringBuffer1.
	push hl
	ld [CurItem], a
	callba GetItemPrice
	pop hl

GetMartPrice: ; 15bf0
; Return price de in BCD at hl and in tiles at StringBuffer1.
	push hl
	ld a, d
	ld [StringBuffer2], a
	ld a, e
	ld [StringBuffer2 + 1], a
	ld hl, StringBuffer1
	ld de, StringBuffer2
	ld bc, $82 << 8 + 6 ; 6 digits
	call PrintNum
	pop hl

	ld de, StringBuffer1
	ld c, 6 / 2 ; 6 digits
.asm_15c0b
	call .TileToNum
	swap a
	ld b, a
	call .TileToNum
	or b
	ld [hli], a
	dec c
	jr nz, .asm_15c0b
	ret
; 15c1a

.TileToNum ; 15c1a
	ld a, [de]
	inc de
	cp " "
	jr nz, .asm_15c22
	ld a, "0"

.asm_15c22
	sub "0"
	ret
; 15c25

Function15c25: ; 15c25
	ld hl, MartPointer
	ld a, [hli]
	ld h, [hl]
	ld l, a
	push hl
	inc hl
	ld bc, DefaultFlypoint
	ld de, CurMart + 1
.asm_15c33
	ld a, [hli]
	ld [de], a
	inc de
	cp $ff
	jr z, .asm_15c4b

	push de
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push hl
	ld h, b
	ld l, c
	call GetMartPrice
	ld b, h
	ld c, l
	pop hl
	pop de
	jr .asm_15c33

.asm_15c4b
	pop hl
	ld a, [hl]
	ld [CurMart], a
	ret
; 15c51

INCBIN "baserom.gbc",$15c51,$15c62 - $15c51


Function15c62: ; 15c62
	call FadeToMenu
	callba Function8000
	xor a
	ld [WalkingY], a
	ld a, 1
	ld [WalkingX], a
.asm_15c74
	call Function15cef
	jr nc, .asm_15c74
	call Function2b3c
	ret
; 15c7d

Function15c7d: ; 15c7d
	push af
	call Function15ca3
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop af
	ld e, a
	ld d, 0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PrintText
	ret
; 15c91

Function15c91: ; 15c91
	call Function15ca3
	inc hl
	inc hl
	ld a, [hl]
	and a
	jp z, Function15d83
	cp 1
	jp z, Function15da5
	jp Function15de2
; 15ca3

Function15ca3: ; 15ca3
	ld a, [EngineBuffer1]
	ld e, a
	ld d, 0
	ld hl, .data_15cb0
	add hl, de
	add hl, de
	add hl, de
	ret
; 15cb0

.data_15cb0 ; 15cb0
	 dwb $5cbf, 0
	 dwb $5ccb, 0
	 dwb $5cd7, 1
	 dwb $5ce3, 0
	 dwb $5cbf, 2
; 15cbf

INCBIN "baserom.gbc",$15cbf,$15cef - $15cbf


Function15cef: ; 15cef
	callba Function24ae8
	call Function1ad2
	ld hl, $5e18
	call Function1d3c
	ld a, [WalkingX]
	ld [$cf88], a
	ld a, [WalkingY]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [WalkingY], a
	ld a, [$cfa9]
	ld [WalkingX], a
	call SpeechTextBox
	ld a, [$cf73]
	cp $2
	jr z, .asm_15d6d
	cp $1
	jr z, .asm_15d27

.asm_15d27
	call Function15c91
	jr c, .asm_15d68
	call Function15d97
	jr c, .asm_15d68
	ld de, Money
	ld bc, $ffc3
	ld a, $3
	call Function1600b
	jr c, .asm_15d79
	ld hl, NumItems
	call ReceiveItem
	jr nc, .asm_15d6f
	ld a, [$d107]
	ld e, a
	ld d, $0
	ld b, $1
	ld hl, WalkingDirection
	call FlagAction
	call Function15fc3
	ld de, Money
	ld bc, $ffc3
	call Function15ffa
	ld a, $4
	call Function15c7d
	call Functiona36

.asm_15d68
	call SpeechTextBox
	and a
	ret

.asm_15d6d
	scf
	ret

.asm_15d6f
	ld a, $3
	call Function15c7d
	call Functiona36
	and a
	ret

.asm_15d79
	ld a, $2
	call Function15c7d
	call Functiona36
	and a
	ret
; 15d83

Function15d83: ; 15d83
	ld a, $63
	ld [$d10d], a
	ld a, $0
	call Function15c7d
	callba Function24fc9
	call Function1c07
	ret
; 15d97

Function15d97: ; 15d97
	ld a, $3b
	call Predef
	ld a, $1
	call Function15c7d
	call Function1dcf
	ret
; 15da5

Function15da5: ; 15da5
	ld a, $1
	ld [$d10c], a
	ld a, [$d107]
	ld e, a
	ld d, $0
	ld b, $2
	ld hl, WalkingDirection
	call FlagAction
	ld a, c
	and a
	jr nz, .asm_15dd8
	ld a, [$d107]
	ld e, a
	ld d, $0
	ld hl, MartPointer
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	add hl, de
	add hl, de
	add hl, de
	inc hl
	ld a, [hli]
	ld [$ffc5], a
	ld a, [hl]
	ld [$ffc4], a
	xor a
	ld [$ffc3], a
	and a
	ret

.asm_15dd8
	ld a, $5
	call Function15c7d
	call Functiona36
	scf
	ret
; 15de2

Function15de2: ; 15de2
	ld a, $0
	call Function15c7d
	call Function15df9
	ld a, $63
	ld [$d10d], a
	callba Function24fcf
	call Function1c07
	ret
; 15df9

Function15df9: ; 15df9
	ld a, [$d107]
	ld e, a
	ld d, $0
	ld hl, MartPointer
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	add hl, de
	add hl, de
	add hl, de
	inc hl
	ld e, [hl]
	inc hl
	ld d, [hl]
	ret
; 15e0e

INCBIN "baserom.gbc",$15e0e,$15e30 - $15e0e
	ld a, [$cf77]
	ld c, a
	ld b, $0
	ld hl, DefaultFlypoint ; $d002
	add hl, bc
	add hl, bc
	add hl, bc
	push de
	ld d, h
	ld e, l
	pop hl
	ld bc, $14
	add hl, bc
	ld c, $a3
	call PrintBCDNumber
	ret
; 15e4a (5:5e4a)

INCBIN "baserom.gbc",$15e4a,$15eb3 - $15e4a


Function15eb3: ; 15eb3
	call Function2ed3
	callba Function106a5
.asm_15ebc
	callba Function106be
	ld a, [$cf66]
	and a
	jp z, Function15ece
	call Function15ee0
	jr .asm_15ebc
; 15ece

Function15ece: ; 15ece
	call Function2b74
	and a
	ret
; 15ed3

INCBIN "baserom.gbc",$15ed3,$15ee0 - $15ed3


Function15ee0: ; 15ee0
	callba CheckItemMenu
	ld a, [$d142]
	ld hl, Table15eee
	rst JumpTable
	ret
; 15eee

Table15eee: ; 15eee
	dw Function15efd
	dw Function15efc
	dw Function15efc
	dw Function15efc
	dw Function15efd
	dw Function15efd
	dw Function15efd
; 15efc

Function15efc: ; 15efc
	ret
; 15efd


Function15efd: ; 15efd
	callba _CheckTossableItem
	ld a, [$d142]
	and a
	jr z, .asm_15f11
	ld hl, $5faf
	call PrintText
	and a
	ret

.asm_15f11
	ld hl, UnknownText_0x15f73
	call PrintText
	callba Function24af8
	callba Function24fe1
	call Function1c07
	jr c, .asm_15f6e
	ld hl, $c5b9
	ld bc, $0312
	call ClearBox
	ld hl, UnknownText_0x15f78
	call PrintTextBoxText
	call Function1dcf
	jr c, .asm_15f6e
	ld de, Money
	ld bc, $ffc3
	call Function15fd7
	ld a, [$d107]
	ld hl, NumItems
	call TossItem
	ld a, $3b
	call Predef
	ld hl, $c5b9
	ld bc, $0312
	call ClearBox
	ld hl, UnknownText_0x15fbe
	call PrintTextBoxText
	call Function15fc3
	callba Function24af0
	call Functiona36

.asm_15f6e
	call Function1c07
	and a
	ret
; 15f73

UnknownText_0x15f73: ; 0x15f73
	text_jump UnknownText_0x1c4f33, BANK(UnknownText_0x1c4f33)
	db "@"
; 0x15f78

UnknownText_0x15f78: ; 0x15f78
	text_jump UnknownText_0x1c4f3e, BANK(UnknownText_0x1c4f3e)
	db "@"
; 0x15f7d

INCBIN "baserom.gbc",$15f7d,$15f83 - $15f7d

UnknownText_0x15f83: ; 0x15f83
	text_jump UnknownText_0x1c4f62, BANK(UnknownText_0x1c4f62)
	db "@"
; 0x15f88

INCBIN "baserom.gbc",$15f88,$15fb9 - $15f88

UnknownText_0x15fb9: ; 0x15fb9
	text_jump UnknownText_0x1c500d, BANK(UnknownText_0x1c500d)
	db "@"
; 0x15fbe

UnknownText_0x15fbe: ; 0x15fbe
	text_jump UnknownText_0x1c502e, BANK(UnknownText_0x1c502e)
	db "@"
; 0x15fc3

Function15fc3: ; 15fc3
	call WaitSFX
	ld de, SFX_TRANSACTION
	call PlaySFX
	ret
; 15fcd

Function15fcd: ; 15fcd
	call Function1d4f
	call Functiona36
	call Function1c07
	ret
; 15fd7

Function15fd7: ; 15fd7
	ld a, $3
	call Function16053
	ld bc, $5ff7
	ld a, $3
	call Function1600b
	jr z, .asm_15ff5
	jr c, .asm_15ff5
	ld hl, $5ff7
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	scf
	ret

.asm_15ff5
	and a
	ret
; 15ff7

INCBIN "baserom.gbc",$15ff7,$15ffa - $15ff7


Function15ffa: ; 15ffa
	ld a, $3
	call Function16035
	jr nc, .asm_16009
	xor a
	ld [de], a
	inc de
	ld [de], a
	inc de
	ld [de], a
	scf
	ret

.asm_16009
	and a
	ret
; 1600b

Function1600b: ; 1600b
	ld a, $3
Function1600d: ; 1600d
	push hl
	push de
	push bc
	ld h, b
	ld l, c
	ld c, $0
	ld b, a
.asm_16015
	dec a
	jr z, .asm_1601c
	inc de
	inc hl
	jr .asm_16015

.asm_1601c
	and a
.asm_1601d
	ld a, [de]
	sbc [hl]
	jr z, .asm_16022
	inc c

.asm_16022
	dec de
	dec hl
	dec b
	jr nz, .asm_1601d
	jr c, .asm_1602d
	ld a, c
	and a
	jr .asm_16031

.asm_1602d
	ld a, $1
	and a
	scf

.asm_16031
	pop bc
	pop de
	pop hl
	ret
; 16035

Function16035: ; 16035
	ld a, $3
Function16037: ; 16037
	push hl
	push de
	push bc
	ld h, b
	ld l, c
	ld b, a
	ld c, $0
.asm_1603f
	dec a
	jr z, .asm_16046
	inc de
	inc hl
	jr .asm_1603f

.asm_16046
	and a
.asm_16047
	ld a, [de]
	sbc [hl]
	ld [de], a
	dec de
	dec hl
	dec b
	jr nz, .asm_16047
	pop bc
	pop de
	pop hl
	ret
; 16053

Function16053: ; 16053
	ld a, $3
Function16055: ; 16055
	push hl
	push de
	push bc
	ld h, b
	ld l, c
	ld b, a
.asm_1605b
	dec a
	jr z, .asm_16062
	inc de
	inc hl
	jr .asm_1605b

.asm_16062
	and a
.asm_16063
	ld a, [de]
	adc [hl]
	ld [de], a
	dec de
	dec hl
	dec b
	jr nz, .asm_16063
	pop bc
	pop de
	pop hl
	ret
; 1606f

Function1606f: ; 1606f
	ld a, $2
	ld de, Coins
	call Function16055
	ld a, $2
	ld bc, $608d
	call Function1600d
	jr c, .asm_1608b
	ld hl, $608d
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	scf
	ret

.asm_1608b
	and a
	ret
; 1608d

INCBIN "baserom.gbc",$1608d,$1608f - $1608d


Function1608f: ; 1608f
	ld a, $2
	ld de, Coins
	call Function16037
	jr nc, .asm_1609f
	xor a
	ld [de], a
	inc de
	ld [de], a
	scf
	ret

.asm_1609f
	and a
	ret
; 160a1

Function160a1: ; 160a1
	ld a, $2
	ld de, Coins
	jp Function1600d
; 160a9


INCLUDE "items/marts.asm"


Function16218: ; 16218
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	xor a
	ld [$cf63], a
.asm_16223
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_1622f
	call Function16233
	jr .asm_16223

.asm_1622f
	pop af
	ld [$ffaa], a
	ret
; 16233

Function16233: ; 16233
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $6242
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 16242

INCBIN "baserom.gbc",$16242,$166d6 - $16242

Function166d6: ; 166d6
	ld hl, DaycareMan
	bit 0, [hl]
	jr nz, .asm_166fe
	ld hl, DaycareMan
	ld a, $0
	call Function1678f
	jr c, .asm_16724
	call Function16798
	jr c, .asm_16721
	callba Functionde2a
	ld hl, DaycareMan
	set 0, [hl]
	call Function167f6
	call Function16a3b
	ret

.asm_166fe
	callba Functione698
	ld hl, BreedMon1Nick
	call Function1686d
	call Function16807
	jr c, .asm_16721
	callba Functiondd21
	call Function16850
	ld hl, DaycareMan
	res 0, [hl]
	res 5, [hl]
	jr .asm_16724

.asm_16721
	call Function1689b

.asm_16724
	ld a, $13
	call Function1689b
	ret
; 1672a

Function1672a: ; 1672a
	ld hl, DaycareLady
	bit 0, [hl]
	jr nz, .asm_16752
	ld hl, DaycareLady
	ld a, $2
	call Function16781
	jr c, .asm_1677b
	call Function16798
	jr c, .asm_16778
	callba Functionde37
	ld hl, DaycareLady
	set 0, [hl]
	call Function167f6
	call Function16a3b
	ret

.asm_16752
	callba Functione6b3
	ld hl, BreedMon2Nick
	call Function1686d
	call Function16807
	jr c, .asm_16778
	callba Functiondd42
	call Function16850
	ld hl, DaycareLady
	res 0, [hl]
	ld hl, DaycareMan
	res 5, [hl]
	jr .asm_1677b

.asm_16778
	call Function1689b

.asm_1677b
	ld a, $13
	call Function1689b
	ret
; 16781

Function16781: ; 16781
	bit 7, [hl]
	jr nz, .asm_16788
	set 7, [hl]
	inc a

.asm_16788
	call Function1689b
	call Function1dcf
	ret
; 1678f

Function1678f: ; 1678f
	set 7, [hl]
	call Function1689b
	call Function1dcf
	ret
; 16798

Function16798: ; 16798
	ld a, [PartyCount]
	cp $2
	jr c, .asm_167e5
	ld a, $4
	call Function1689b
	ld b, $6
	callba Function5001d
	jr c, .asm_167dd
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_167e1
	callba Functione538
	jr c, .asm_167e9
	ld hl, PartyMon1Item
	ld bc, $0030
	ld a, [CurPartyMon]
	call AddNTimes
	ld d, [hl]
	callba ItemIsMail
	jr c, .asm_167ed
	ld hl, PartyMon1Nickname
	ld a, [CurPartyMon]
	call GetNick
	and a
	ret

.asm_167dd
	ld a, $12
	scf
	ret

.asm_167e1
	ld a, $6
	scf
	ret

.asm_167e5
	ld a, $7
	scf
	ret

.asm_167e9
	ld a, $8
	scf
	ret

.asm_167ed
	ld a, $a
	scf
	ret
; 167f1

INCBIN "baserom.gbc",$167f1,$167f6 - $167f1

Function167f6: ; 167f6
	ld a, $5
	call Function1689b
	ld a, [CurPartySpecies]
	call Function37ce
	ld a, $9
	call Function1689b
	ret
; 16807

Function16807: ; 16807
	ld a, [$d087]
	and a
	jr nz, .asm_16819
	ld a, $f
	call Function1689b
	call Function1dcf
	jr c, .asm_16844
	jr .asm_1682d

.asm_16819
	ld a, $b
	call Function1689b
	call Function1dcf
	jr c, .asm_16844
	ld a, $c
	call Function1689b
	call Function1dcf
	jr c, .asm_16844

.asm_1682d
	ld de, Money
	ld bc, $d088
	callba Function1600b
	jr c, .asm_16848
	ld a, [PartyCount]
	cp $6
	jr nc, .asm_1684c
	and a
	ret

.asm_16844
	ld a, $12
	scf
	ret

.asm_16848
	ld a, $11
	scf
	ret

.asm_1684c
	ld a, $10
	scf
	ret
; 16850

Function16850: ; 16850
	ld bc, $d088
	ld de, Money
	callba Function15ffa
	ld a, $d
	call Function1689b
	ld a, [CurPartySpecies]
	call Function37ce
	ld a, $e
	call Function1689b
	ret
; 1686d

Function1686d: ; 1686d
	ld a, b
	ld [StringBuffer2], a
	ld a, d
	ld [$d087], a
	ld de, StringBuffer1
	ld bc, $000b
	call CopyBytes
	ld hl, $0000
	ld bc, $0064
	ld a, [$d087]
	call AddNTimes
	ld de, $0064
	add hl, de
	xor a
	ld [$d088], a
	ld a, h
	ld [$d089], a
	ld a, l
	ld [$d08a], a
	ret
; 1689b

Function1689b: ; 1689b
	ld e, a
	ld d, $0
	ld hl, $68aa
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PrintText
	ret
; 168aa

INCBIN "baserom.gbc",$168aa,$16936 - $168aa

Function16936: ; 16936
	ld hl, DaycareMan
	bit 6, [hl]
	jr nz, .asm_16949
	ld hl, .data_16944
	call PrintText
	ret

.data_16944
	db $16
	db $f6
	db $5e
	db $6f
	db $50

.asm_16949
	ld hl, $6993
	call PrintText
	call Function1dcf
	jr c, .asm_1697c
	ld a, [PartyCount]
	cp $6
	jr nc, .asm_16987
	call Function169ac
	ld hl, DaycareMan
	res 6, [hl]
	call Function16a3b
	ld hl, $6998
	call PrintText
	ld de, $0096
	call PlaySFX
	ld c, $78
	call DelayFrames
	ld hl, $699d
	jr .asm_1697f

.asm_1697c
	ld hl, $69a2

.asm_1697f
	call PrintText
	xor a
	ld [ScriptVar], a
	ret

.asm_16987
	ld hl, $69a7
	call PrintText
	ld a, $1
	ld [ScriptVar], a
	ret
; 16993

INCBIN "baserom.gbc",$16993,$169ac - $16993

Function169ac: ; 169ac
	ld a, [$df9a]
	ld [CurPartyLevel], a
	ld hl, PartyCount
	ld a, [hl]
	cp $6
	jr nc, .asm_16a2f
	inc a
	ld [hl], a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, $fd
	ld [hli], a
	ld a, [EggSpecies]
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	ld a, $ff
	ld [hl], a
	ld hl, PartyMon1Nickname
	ld bc, $000b
	call Function16a31
	ld hl, EggNick
	call CopyBytes
	ld hl, PartyMon1OT
	ld bc, $000b
	call Function16a31
	ld hl, EggOT
	call CopyBytes
	ld hl, PartyMon1Species
	ld bc, $0030
	call Function16a31
	ld hl, EggSpecies
	ld bc, $0020
	call CopyBytes
	call GetBaseData
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld b, h
	ld c, l
	ld hl, $0007
	add hl, bc
	push hl
	ld hl, $0024
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	push bc
	ld b, $0
	ld a, $c
	call Predef
	pop bc
	ld hl, $0022
	add hl, bc
	xor a
	ld [hli], a
	ld [hl], a
	and a
	ret

.asm_16a2f
	scf
	ret
; 16a31

Function16a31: ; 16a31
	ld a, [PartyCount]
	dec a
	call AddNTimes
	ld d, h
	ld e, l
	ret
; 16a3b

Function16a3b: ; 16a3b
	ld a, [DaycareLady]
	bit 0, a
	ret z
	ld a, [DaycareMan]
	bit 0, a
	ret z
	callab Function16e1d
	ld a, [$d265]
	and a
	ret z
	inc a
	ret z
	ld hl, DaycareMan
	set 5, [hl]
.asm_16a59
	call Random
	cp $96
	jr c, .asm_16a59
	ld [StepsToEgg], a
	jp Function16a66
; 16a66

Function16a66: ; 16a66
	xor a
	ld hl, EggSpecies
	ld bc, $0020
	call ByteFill
	ld hl, EggNick
	ld bc, $000b
	call ByteFill
	ld hl, EggOT
	ld bc, $000b
	call ByteFill
	ld a, [$df21]
	ld [TempMonDVs], a
	ld a, [$df22]
	ld [$d124], a
	ld a, [BreedMon1Species]
	ld [CurPartySpecies], a
	ld a, $3
	ld [MonType], a
	ld a, [BreedMon1Species]
	cp $84
	ld a, $1
	jr z, .asm_16ab6
	ld a, [BreedMon2Species]
	cp $84
	ld a, $0
	jr z, .asm_16ab6
	callba GetGender
	ld a, $0
	jr z, .asm_16ab6
	inc a

.asm_16ab6
	ld [DittoInDaycare], a
	and a
	ld a, [BreedMon1Species]
	jr z, .asm_16ac2
	ld a, [BreedMon2Species]

.asm_16ac2
	ld [CurPartySpecies], a
	callab GetPreEvolution
	callab GetPreEvolution
	ld a, $5
	ld [CurPartyLevel], a
	ld a, [CurPartySpecies]
	cp $1d
	jr nz, .asm_16ae8
	call Random
	cp $80
	ld a, $1d
	jr c, .asm_16ae8
	ld a, $20

.asm_16ae8
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	ld [EggSpecies], a
	call GetBaseData
	ld hl, EggNick
	ld de, $6be0
	call CopyName2
	ld hl, PlayerName
	ld de, EggOT
	ld bc, $000b
	call CopyBytes
	xor a
	ld [$df7c], a
	ld de, $df7d
	xor a
	ld [Buffer1], a
	ld a, $1b
	call Predef
	callba Function170bf
	ld hl, $df81
	ld a, [PlayerID]
	ld [hli], a
	ld a, [$d47c]
	ld [hl], a
	ld a, [CurPartyLevel]
	ld d, a
	callab Function50e47
	ld hl, $df83
	ld a, [hMultiplicand]
	ld [hli], a
	ld a, [$ffb5]
	ld [hli], a
	ld a, [$ffb6]
	ld [hl], a
	xor a
	ld b, $a
	ld hl, $df86
.asm_16b46
	ld [hli], a
	dec b
	jr nz, .asm_16b46
	ld hl, $df90
	call Random
	ld [hli], a
	ld [TempMonDVs], a
	call Random
	ld [hld], a
	ld [$d124], a
	ld de, $df21
	ld a, [BreedMon1Species]
	cp $84
	jr z, .asm_16b98
	ld de, $df5a
	ld a, [BreedMon2Species]
	cp $84
	jr z, .asm_16b98
	ld a, $3
	ld [MonType], a
	push hl
	callba GetGender
	pop hl
	ld de, $df21
	ld bc, $df5a
	jr c, .asm_16bab
	jr z, .asm_16b90
	ld a, [DittoInDaycare]
	and a
	jr z, .asm_16b98
	ld d, b
	ld e, c
	jr .asm_16b98

.asm_16b90
	ld a, [DittoInDaycare]
	and a
	jr nz, .asm_16b98
	ld d, b
	ld e, c

.asm_16b98
	ld a, [de]
	inc de
	and $f
	ld b, a
	ld a, [hl]
	and $f0
	add b
	ld [hli], a
	ld a, [de]
	and $7
	ld b, a
	ld a, [hl]
	and $f8
	add b
	ld [hl], a

.asm_16bab
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $000b
	call CopyBytes
	ld hl, $df7d
	ld de, $df92
	ld a, $5
	call Predef
	ld hl, $d050
	ld de, StringBuffer1
	ld bc, $000b
	call CopyBytes
	ld a, [BaseEggSteps]
	ld hl, $df96
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld a, [CurPartyLevel]
	ld [$df9a], a
	ret
; 16be0

INCBIN "baserom.gbc",$16be0,$16be4 - $16be0

Function16be4: ; 16be4
	ld a, [UnownDex]
	and a
	ret z

	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	ld a, [Options]
	push af
	set 4, a
	ld [Options], a
	call WhiteBGMap
	call ClearTileMap

	ld de, UnownDexATile
	ld hl, $8ef0
	ld bc, $0501
	call Request1bpp

	ld de, UnownDexBTile
	ld hl, $8f50
	ld bc, $0501
	call Request1bpp

	ld hl, TileMap
	ld bc, $0312
	call TextBox

	ld hl, $c504
	ld bc, $0707
	call TextBox

	ld hl, $c5b8
	ld bc, $0212
	call TextBox

	ld hl, $c4c9
	ld de, AlphRuinsStampString
	call PlaceString

	ld hl, $c5e1
	ld de, UnownDexDoWhatString
	call PlaceString

	ld hl, $c522
	ld de, UnownDexMenuString
	call PlaceString

	xor a
	ld [$cf63], a
	call Function16cc8
	call WaitBGMap

	ld a, UNOWN
	ld [CurPartySpecies], a
	xor a
	ld [TempMonDVs], a
	ld [TempMonDVs + 1], a

	ld b, $1c
	call GetSGBLayout
	call Function32f9

.asm_16c6b
	call Functiona57

	ld a, [hJoyPressed]
	and B_BUTTON
	jr nz, .asm_16c95

	ld a, [hJoyPressed]
	and A_BUTTON
	jr nz, .asm_16c82

	call Function16ca0
	call DelayFrame
	jr .asm_16c6b

.asm_16c82
	ld a, [$cf63]
	push af
	callba Function84560
	call Function3d47
	pop af
	ld [$cf63], a
	jr .asm_16c6b

.asm_16c95
	pop af
	ld [Options], a
	pop af
	ld [$ffaa], a
	call Function222a
	ret
; 16ca0

Function16ca0: ; 16ca0
	ld a, [$ffa9]
	and $10
	jr nz, .asm_16cb9
	ld a, [$ffa9]
	and $20
	jr nz, .asm_16cad
	ret

.asm_16cad
	ld hl, $cf63
	ld a, [hl]
	and a
	jr nz, .asm_16cb6
	ld [hl], $1b

.asm_16cb6
	dec [hl]
	jr .asm_16cc4

.asm_16cb9
	ld hl, $cf63
	ld a, [hl]
	cp $1a
	jr c, .asm_16cc3
	ld [hl], $ff

.asm_16cc3
	inc [hl]

.asm_16cc4
	call Function16cc8
	ret
; 16cc8

Function16cc8: ; 16cc8
	ld a, [$cf63]
	cp 26
	jr z, Function16d20
	inc a
	ld [UnownLetter], a
	ld a, UNOWN
	ld [CurPartySpecies], a
	xor a
	ld [$c2c6], a
	ld de, VTiles2
	ld a, $3c
	call Predef
	call Function16cff
	ld hl, $c519
	xor a
	ld [$ffad], a
	ld bc, $0707
	ld a, $13
	call Predef
	ld de, $9310
	callba Functione0000
	ret
; 16cff

Function16cff: ; 16cff
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld a, $0
	call GetSRAMBank
	ld de, Unkn1Pals
	ld hl, $a000
	ld a, [hROMBank]
	ld b, a
	ld c, $31
	call Get2bpp
	call CloseSRAM
	pop af
	ld [rSVBK], a
	ret
; 16d20

Function16d20: ; 16d20
	ld hl, $c519
	ld bc, $0707
	call ClearBox
	ld hl, $c555
	ld de, UnownDexVacantString
	call PlaceString
	xor a
	call GetSRAMBank
	ld hl, $a000
	ld bc, $0310
	xor a
	call ByteFill
	ld hl, $9310
	ld de, $a000
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	call CloseSRAM
	ld c, $14
	call DelayFrames
	ret
; 16d57

AlphRuinsStampString:
	db " ALPH RUINS STAMP@"

UnownDexDoWhatString:
	db "Do what?@"

UnownDexMenuString:
	db $ef, " PRINT", $4e
	db $f5, " CANCEL", $4e
	db $df, " PREVIOUS", $4e
	db $eb, " NEXT@"

UnownDexVacantString:
	db "VACANT@"
; 16d9c

UnownDexATile: ; 16d9c
	INCBIN "baserom.gbc", $16d9c, $16da4 - $16d9c
UnownDexBTile: ; 16da4
	INCBIN "baserom.gbc", $16da4, $16dac - $16da4
; 16dac

Function16dac: ; 16dac
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	ld hl, $c583
	ld a, $31
	ld [$ffad], a
	ld bc, $0707
	ld a, $13
	call Predef
	ret
; 16dc7

Function16dc7: ; 16dc7
	ld hl, $6e04
	call PrintText
	callba Function50000
	jr c, .asm_16df8
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_16dfd
	ld hl, $6e09
	call PrintText
	call Function2ed3
	callba Function8461a
	call Function2b74
	ld a, [$ffac]
	and a
	jr nz, .asm_16df8
	ld hl, $6e0e
	jr .asm_16e00

.asm_16df8
	ld hl, $6e13
	jr .asm_16e00

.asm_16dfd
	ld hl, $6e18

.asm_16e00
	call PrintText
	ret
; 16e04

INCBIN "baserom.gbc",$16e04,$16e1d - $16e04


Function16e1d: ; 16e1d
	call Function16ed6
	ld c, $0
	jp nc, .asm_16eb7
	ld a, [BreedMon1Species]
	ld [CurPartySpecies], a
	ld a, [$df21]
	ld [TempMonDVs], a
	ld a, [$df22]
	ld [$d124], a
	ld a, $3
	ld [MonType], a
	ld a, $24
	call Predef
	jr c, .asm_16e70
	ld b, $1
	jr nz, .asm_16e48
	inc b

.asm_16e48
	push bc
	ld a, [BreedMon2Species]
	ld [CurPartySpecies], a
	ld a, [$df5a]
	ld [TempMonDVs], a
	ld a, [$df5b]
	ld [$d124], a
	ld a, $3
	ld [MonType], a
	ld a, $24
	call Predef
	pop bc
	jr c, .asm_16e70
	ld a, $1
	jr nz, .asm_16e6d
	inc a

.asm_16e6d
	cp b
	jr nz, .asm_16e89

.asm_16e70
	ld c, $0
	ld a, [BreedMon1Species]
	cp $84
	jr z, .asm_16e82
	ld a, [BreedMon2Species]
	cp $84
	jr nz, .asm_16eb7
	jr .asm_16e89

.asm_16e82
	ld a, [BreedMon2Species]
	cp $84
	jr z, .asm_16eb7

.asm_16e89
	call Function16ebc
	ld c, $ff
	jp z, .asm_16eb7
	ld a, [BreedMon2Species]
	ld b, a
	ld a, [BreedMon1Species]
	cp b
	ld c, $fe
	jr z, .asm_16e9f
	ld c, $80

.asm_16e9f
	ld a, [$df12]
	ld b, a
	ld a, [$df4b]
	cp b
	jr nz, .asm_16eb7
	ld a, [$df13]
	ld b, a
	ld a, [$df4c]
	cp b
	jr nz, .asm_16eb7
	ld a, c
	sub $4d
	ld c, a

.asm_16eb7
	ld a, c
	ld [$d265], a
	ret
; 16ebc


; known jump sources: 16e89 (5:6e89)
Function16ebc: ; 16ebc (5:6ebc)
	ld a, [$df21]
	and $f
	ld b, a
	ld a, [$df5a]
	and $f
	cp b
	ret nz
	ld a, [$df22]
	and $7
	ld b, a
	ld a, [$df5b]
	and $7
	cp b
	ret
; 16ed6

Function16ed6: ; 16ed6
	ld a, [BreedMon2Species]
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseEggGroups]
	cp $ff
	jr z, .asm_16f3a
	ld a, [BreedMon1Species]
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseEggGroups]
	cp $ff
	jr z, .asm_16f3a
	ld a, [BreedMon2Species]
	cp $84
	jr z, .asm_16f3c
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseEggGroups]
	push af
	and $f
	ld b, a
	pop af
	and $f0
	swap a
	ld c, a
	ld a, [BreedMon1Species]
	cp $84
	jr z, .asm_16f3c
	ld [CurSpecies], a
	push bc
	call GetBaseData
	pop bc
	ld a, [BaseEggGroups]
	push af
	and $f
	ld d, a
	pop af
	and $f0
	swap a
	ld e, a
	ld a, d
	cp b
	jr z, .asm_16f3c
	cp c
	jr z, .asm_16f3c
	ld a, e
	cp b
	jr z, .asm_16f3c
	cp c
	jr z, .asm_16f3c

.asm_16f3a
	and a
	ret

.asm_16f3c
	scf
	ret
; 16f3e

Function16f3e: ; 16f3e
	ld de, PartySpecies
	ld hl, PartyMon1Happiness
	ld c, 0
.loop
	ld a, [de]
	inc de
	cp $ff
	ret z
	cp EGG
	jr nz, .next
	dec [hl]
	jr nz, .next
	ld a, 1
	and a
	ret

.next
	push de
	ld de, PartyMon2 - PartyMon1
	add hl, de
	pop de
	jr .loop
; 16f5e

	call ResetWindow
	call Function1d6e
	call Function16f70
	call Function2b4d
	call Function3d47
	jp Function2dcf

; known jump sources: 16f64 (5:6f64)
Function16f70: ; 16f70 (5:6f70)
	ld de, PartySpecies ; $dcd8
	ld hl, PartyMon1Happiness ; $dcfa
	xor a
	ld [CurPartyMon], a ; $d109

; known jump sources: 17087 (5:7087)
Function16f7a: ; 16f7a (5:6f7a)
	ld a, [de]
	inc de
	cp $ff
	jp z, Function1708a
	push de
	push hl
	cp $fd
	jp nz, Function1707d
	ld a, [hl]
	and a
	jp nz, Function1707d
	ld [hl], $78
	push de
	callba Function4dbb8
	callba Function10608d
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	call AddNTimes
	ld a, [hl]
	ld [CurPartySpecies], a ; $d108
	dec a
	call SetSeenAndCaughtMon
	ld a, [CurPartySpecies] ; $d108
	cp $af
	jr nz, .asm_16fbf
	ld de, $54
	ld b, $1
	call EventFlagAction
.asm_16fbf
	pop de
	ld a, [CurPartySpecies] ; $d108
	dec de
	ld [de], a
	ld [$d265], a
	ld [CurSpecies], a ; $cf60
	call GetPokemonName
	xor a
	ld [$d26b], a
	call GetBaseData
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	call AddNTimes
	push hl
	ld bc, $24
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	push hl
	ld bc, $1f
	add hl, bc
	ld a, [hl]
	ld [CurPartyLevel], a ; $d143
	pop hl
	push hl
	ld bc, $20
	add hl, bc
	xor a
	ld [hli], a
	ld [hl], a
	pop hl
	push hl
	ld bc, $a
	add hl, bc
	ld b, $0
	ld a, $c
	call Predef
	pop bc
	ld hl, $24
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $22
	add hl, bc
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a
	ld hl, $6
	add hl, bc
	ld a, [PlayerID] ; $d47b
	ld [hli], a
	ld a, [$d47c]
	ld [hl], a
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT)
	ld bc, $b
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, PlayerName ; $d47d
	call CopyBytes
	ld hl, $708b
	call PrintText
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	ld bc, $b
	call AddNTimes
	ld d, h
	ld e, l
	push de
	ld hl, $70ba
	call PrintText
	call Function1dcf
	pop de
	jr c, .asm_17074
	ld a, $1
	ld [$d26b], a
	xor a
	ld [MonType], a ; $cf5f
	push de
	ld b, $0
	callba Function116c1
	pop hl
	ld de, StringBuffer1 ; $d073
	call InitName
	jr Function1707d
.asm_17074
	ld hl, StringBuffer1 ; $d073
	ld bc, $b
	call CopyBytes

; known jump sources: 16f85 (5:6f85), 16f8a (5:6f8a), 17072 (5:7072)
Function1707d: ; 1707d (5:707d)
	ld hl, CurPartyMon ; $d109
	inc [hl]
	pop hl
	ld de, $30
	add hl, de
	pop de
	jp Function16f7a

; known jump sources: 16f7e (5:6f7e)
Function1708a: ; 1708a (5:708a)
	ret
; 1708b (5:708b)

INCBIN "baserom.gbc",$1708b,$17090 - $1708b
	ld hl, VramState ; $d0ed
	res 0, [hl]
	push hl
	push de
	push bc
	ld a, [CurPartySpecies] ; $d108
	push af
	call Function1728f
	ld hl, $70b0
	call PrintText
	pop af
	ld [CurPartySpecies], a ; $d108
	pop bc
	pop de
	pop hl
	ld hl, $70b5
	ret
; 170b0 (5:70b0)

INCBIN "baserom.gbc",$170b0,$170bf - $170b0

Function170bf: ; 170bf
	call Function17197
	ld d, h
	ld e, l
	ld b, $4
.asm_170c6
	ld a, [de]
	and a
	jr z, .asm_170e3
	ld hl, $df7d
	ld c, $4
.asm_170cf
	ld a, [de]
	cp [hl]
	jr z, .asm_170df
	inc hl
	dec c
	jr nz, .asm_170cf
	call Function170e4
	jr nc, .asm_170df
	call Function17169

.asm_170df
	inc de
	dec b
	jr nz, .asm_170c6

.asm_170e3
	ret
; 170e4

Function170e4: ; 170e4
	push bc
	ld a, [EggSpecies]
	dec a
	ld c, a
	ld b, $0
	ld hl, $7b11
	add hl, bc
	add hl, bc
	ld a, $8
	call GetFarHalfword
.asm_170f6
	ld a, $8
	call GetFarByte
	cp $ff
	jr z, .asm_17107
	ld b, a
	ld a, [de]
	cp b
	jr z, .asm_17163
	inc hl
	jr .asm_170f6

.asm_17107
	call Function1720b
	ld b, $4
.asm_1710c
	ld a, [de]
	cp [hl]
	jr z, .asm_17116
	inc hl
	dec b
	jr z, .asm_17146
	jr .asm_1710c

.asm_17116
	ld a, [EggSpecies]
	dec a
	ld c, a
	ld b, $0
	ld hl, $65b1
	add hl, bc
	add hl, bc
	ld a, $10
	call GetFarHalfword
.asm_17127
	ld a, $10
	call GetFarByte
	inc hl
	and a
	jr nz, .asm_17127
.asm_17130
	ld a, $10
	call GetFarByte
	and a
	jr z, .asm_17146
	inc hl
	ld a, $10
	call GetFarByte
	ld b, a
	ld a, [de]
	cp b
	jr z, .asm_17163
	inc hl
	jr .asm_17130

.asm_17146
	ld hl, $567a
.asm_17149
	ld a, $4
	call GetFarByte
	inc hl
	and a
	jr z, .asm_17166
	ld b, a
	ld a, [de]
	cp b
	jr nz, .asm_17149
	ld [$d262], a
	ld a, $e
	call Predef
	ld a, c
	and a
	jr z, .asm_17166

.asm_17163
	pop bc
	scf
	ret

.asm_17166
	pop bc
	and a
	ret
; 17169

Function17169: ; 17169
	push de
	push bc
	ld a, [de]
	ld b, a
	ld hl, $df7d
	ld c, $4
.asm_17172
	ld a, [hli]
	and a
	jr z, .asm_17187
	dec c
	jr nz, .asm_17172
	ld de, $df7d
	ld hl, $df7e
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a

.asm_17187
	dec hl
	ld [hl], b
	ld hl, $df7d
	ld de, $df92
	ld a, $5
	call Predef
	pop bc
	pop de
	ret
; 17197

Function17197: ; 17197
	ld hl, $df47
	ld a, [BreedMon1Species]
	cp $84
	jr z, .asm_171b1
	ld a, [BreedMon2Species]
	cp $84
	jr z, .asm_171d7
	ld a, [DittoInDaycare]
	and a
	ret z
	ld hl, $df0e
	ret

.asm_171b1
	ld a, [CurPartySpecies]
	push af
	ld a, [BreedMon2Species]
	ld [CurPartySpecies], a
	ld a, [$df5a]
	ld [TempMonDVs], a
	ld a, [$df5b]
	ld [$d124], a
	ld a, $3
	ld [MonType], a
	ld a, $24
	call Predef
	jr c, .asm_171fb
	jr nz, .asm_171fb
	jr .asm_17203

.asm_171d7
	ld a, [CurPartySpecies]
	push af
	ld a, [BreedMon1Species]
	ld [CurPartySpecies], a
	ld a, [$df21]
	ld [TempMonDVs], a
	ld a, [$df22]
	ld [$d124], a
	ld a, $3
	ld [MonType], a
	ld a, $24
	call Predef
	jr c, .asm_17203
	jr nz, .asm_17203

.asm_171fb
	ld hl, $df47
	pop af
	ld [CurPartySpecies], a
	ret

.asm_17203
	ld hl, $df0e
	pop af
	ld [CurPartySpecies], a
	ret
; 1720b

Function1720b: ; 1720b
	ld hl, $df0e
	ld a, [BreedMon1Species]
	cp $84
	ret z
	ld a, [BreedMon2Species]
	cp $84
	jr z, .asm_17220
	ld a, [DittoInDaycare]
	and a
	ret z

.asm_17220
	ld hl, $df47
	ret
; 17224


; known jump sources: 172ca (5:72ca)
Function17224: ; 17224 (5:7224)
	push de
	ld [CurPartySpecies], a ; $d108
	ld [CurSpecies], a ; $cf60
	call GetBaseData
	ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV)
	ld a, $2d
	call Predef
	pop de
	ld a, $3c
	jp Predef

; known jump sources: 172c2 (5:72c2)
Function1723c: ; 1723c (5:723c)
	push de
	ld [CurPartySpecies], a ; $d108
	ld [CurSpecies], a ; $cf60
	call GetBaseData
	ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV)
	ld a, $2d
	call Predef
	pop de
	ld a, $3e
	jp Predef

; known jump sources: 172df (5:72df), 17343 (5:7343)
Function17254: ; 17254 (5:7254)
	push af
	call WaitTop
	push hl
	push bc
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	pop bc
	pop hl
	ld a, b
	ld [$FF00+$d7], a
	ld a, c
	ld [$FF00+$ad], a
	ld bc, $707
	ld a, $13
	call Predef
	pop af
	call Function17363
	call Function32f9
	jp WaitBGMap

; known jump sources: 17301 (5:7301), 17312 (5:7312), 173eb (5:73eb), 1741a (5:741a)
Function1727f: ; 1727f (5:727f)
	push hl
	push de
	push bc
	callab Function8cf69
	call DelayFrame
	pop bc
	pop de
	pop hl
	ret

; known jump sources: 1709c (5:709c)
Function1728f: ; 1728f (5:728f)
	ld a, [$d265]
	ld [$cf63], a
	ld a, [CurSpecies] ; $cf60
	push af
	ld de, $0
	call PlayMusic
	callba Function8000
	call DisableLCD
	ld hl, $7393
	ld de, $8000
	ld bc, $20
	ld a, $5
	call FarCopyBytes
	callba Function8cf53
	ld de, $9000
	ld a, [$cf63]
	call Function1723c
	ld de, $9310
	ld a, $fd
	call Function17224
	ld de, $22
	call PlayMusic
	call EnableLCD
	ld hl, $c4f7
	ld b, $98
	ld c, $31
	ld a, $fd
	call Function17254
	ld c, $50
	call DelayFrames
	xor a
	ld [$cf64], a
	ld a, [hSCX] ; $ff00+$cf
	ld b, a
.asm_172ee
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $8
	jr nc, .asm_17327
	ld e, [hl]
.asm_172f8
	ld a, $2
	ld [hSCX], a ; $ff00+$cf
	ld a, $fe
	ld [$c3c0], a
	call Function1727f
	ld c, $2
	call DelayFrames
	ld a, $fe
	ld [hSCX], a ; $ff00+$cf
	ld a, $2
	ld [$c3c0], a
	call Function1727f
	ld c, $2
	call DelayFrames
	dec e
	jr nz, .asm_172f8
	ld c, $10
	call DelayFrames
	call Function1736d
	jr .asm_172ee
.asm_17327
	ld de, $a6
	call PlaySFX
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [$c3c0], a
	call ClearSprites
	call Function173b3
	ld hl, $c4e2
	ld b, $98
	ld c, $0
	ld a, [$cf63]
	call Function17254
	call Function17418
	call WaitSFX
	ld a, [$cf63]
	ld [CurPartySpecies], a ; $d108
	ld hl, $c4e2
	ld d, $0
	ld e, $5
	ld a, $47
	call Predef
	pop af
	ld [CurSpecies], a ; $cf60
	ret

; known jump sources: 17276 (5:7276)
Function17363: ; 17363 (5:7363)
	ld [PlayerHPPal], a ; $cd99
	ld b, $b
	ld c, $0
	jp GetSGBLayout

; known jump sources: 17322 (5:7322)
Function1736d: ; 1736d (5:736d)
	ld a, [$cf64]
	dec a
	and $7
	cp $7
	ret z
	srl a
	ret nc
	swap a
	srl a
	add $4c
	ld d, a
	ld e, $58
	ld a, $19
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ld de, $9e
	jp PlaySFX
; 17393 (5:7393)

INCBIN "baserom.gbc",$17393,$173b3 - $17393

; known jump sources: 17336 (5:7336)
Function173b3: ; 173b3 (5:73b3)
	callba Function8cf53
	ld hl, $73ef
.asm_173bc
	ld a, [hli]
	cp $ff
	jr z, .asm_173e5
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	push hl
	push bc
	ld a, $1c
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	pop de
	ld a, e
	ld hl, $1
	add hl, bc
	add [hl]
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld [hl], d
	pop hl
	jr .asm_173bc
.asm_173e5
	ld de, $a6
	call PlaySFX
	call Function1727f
	ret
; 173ef (5:73ef)

INCBIN "baserom.gbc",$173ef,$17418 - $173ef

; known jump sources: 17346 (5:7346)
Function17418: ; 17418 (5:7418)
	ld c, $81
.asm_1741a
	call Function1727f
	dec c
	jr nz, .asm_1741a
	ret

Function17421: ; 17421
	ld hl, $7467
	call PrintText
	ld a, [BreedMon1Species]
	call Function37ce
	ld a, [DaycareLady]
	bit 0, a
	jr z, Function1745f
	call Functionaaf
	ld hl, BreedMon2Nick
	call Function1746c
	jp PrintText

Function17440: ; 17440
	ld hl, $7462
	call PrintText
	ld a, [BreedMon2Species]
	call Function37ce
	ld a, [DaycareMan]
	bit 0, a
	jr z, Function1745f
	call Functionaaf
	ld hl, BreedMon1Nick
	call Function1746c
	jp PrintText

Function1745f: ; 1745f
	jp Functiona80
; 17462

INCBIN "baserom.gbc",$17462,$1746c - $17462

Function1746c: ; 1746c
	push bc
	ld de, StringBuffer1
	ld bc, $000b
	call CopyBytes
	call Function16e1d
	pop bc
	ld a, [$d265]
	ld hl, $749c
	cp $ff
	jr z, .asm_1749b
	ld hl, $74a1
	and a
	jr z, .asm_1749b
	ld hl, $74a6
	cp $e6
	jr nc, .asm_1749b
	cp $46
	ld hl, $74ab
	jr nc, .asm_1749b
	ld hl, $74b0

.asm_1749b
	ret
; 1749c

INCBIN "baserom.gbc",$1749c,$174ba - $1749c


SECTION "bank6", ROMX, BANK[$6]

INCLUDE "tilesets/data_1.asm"


SECTION "bank7", ROMX, BANK[$7]

LoadMapGroupRoof: ; 1c000
	ld a, [MapGroup]
	ld e, a
	ld d, 0
	ld hl, MapGroupRoofs
	add hl, de
	ld a, [hl]
	cp $ff
	ret z
	ld hl, Roofs
	ld bc, $90
	call AddNTimes
	ld de, $90a0
	ld bc, $90
	call CopyBytes
	ret
; 1c021

MapGroupRoofs: ; 1c021i
	db -1 ; group 1
	db  3 ; group 2
	db  2 ; group 3
	db -1 ; group 4
	db  1 ; group 5
	db  2 ; group 6
	db -1 ; group 7
	db -1 ; group 8
	db  2 ; group 9
	db  2 ; group 10
	db  1 ; group 11
	db  4 ; group 12
	db -1 ; group 13
	db -1 ; group 14
	db -1 ; group 15
	db -1 ; group 16
	db -1 ; group 17
	db -1 ; group 18
	db -1 ; group 19
	db  0 ; group 20
	db -1 ; group 21
	db -1 ; group 22
	db  3 ; group 23
	db -1 ; group 24
	db  0 ; group 25
	db -1 ; group 26
	db  0 ; group 27
; 1c03c

Roofs: ; 1c03c
INCBIN "gfx/tilesets/roofs/0.2bpp"
INCBIN "gfx/tilesets/roofs/1.2bpp"
INCBIN "gfx/tilesets/roofs/2.2bpp"
INCBIN "gfx/tilesets/roofs/3.2bpp"
INCBIN "gfx/tilesets/roofs/4.2bpp"
; 1c30c

INCLUDE "tilesets/data_2.asm"



SECTION "bank8", ROMX, BANK[$8]


; known jump sources: 200e8 (8:40e8), 200f9 (8:40f9), 20169 (8:4169)
Function20000: ; 20000 (8:4000)
	push hl
	dec a
	ld e, a
	ld d, $0
	ld hl, $4015
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
	ld b, [hl]
	inc hl
	ld c, [hl]
	pop hl
	ret
; 20015 (8:4015)

INCBIN "baserom.gbc",$20015,$20021 - $20015

; no known jump sources
Function20021: ; 20021 (8:4021)
	ld hl, $4047
	call PrintText
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	call Function1d6e
	call ClearTileMap
	ld hl, $404c
	call PrintText
	call Function20051
	call Function1c07
	pop bc
	ld hl, Options ; $cfcc
	ld [hl], b
	ld c, a
	ret
; 20047 (8:4047)

INCBIN "baserom.gbc",$20047,$20051 - $20047

; known jump sources: 2003a (8:403a)
Function20051: ; 20051 (8:4051)
	ld a, $1
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	ld a, $8
	ld [$d1ec], a
	call UpdateTime
	call GetWeekday
	ld [$d1ed], a
	ld a, [hHours] ; $ff00+$94
	ld [$d1ee], a
	ld a, [hMinutes] ; $ff00+$96
	ld [$d1ef], a
.asm_20071
	call Function200ba
	jr nc, .asm_20071
	and a
	ret nz
	call Function2011f
	ld hl, $40b0
	call PrintText
	call Function1dcf
	jr c, .asm_200ad
	ld a, [$d1ed]
	ld [StringBuffer2], a ; $d086
	ld a, [$d1ee]
	ld [$d087], a
	ld a, [$d1ef]
	ld [$d088], a
	xor a
	ld [$d089], a
	call Function677
	call Function2011f
	ld hl, $40b5
	call PrintText
	call Functiona80
	xor a
	ret
.asm_200ad
	ld a, $1
	ret
; 200b0 (8:40b0)

INCBIN "baserom.gbc",$200b0,$200ba - $200b0

; known jump sources: 20071 (8:4071), 200db (8:40db)
Function200ba: ; 200ba (8:40ba)
	call Function354b
	ld c, a
	push af
	call Function2011f
	pop af
	bit 0, a
	jr nz, .asm_200dd
	bit 1, a
	jr nz, .asm_200e1
	bit 6, a
	jr nz, .asm_200e5
	bit 7, a
	jr nz, .asm_200f6
	bit 5, a
	jr nz, .asm_20108
	bit 4, a
	jr nz, .asm_20112
	jr Function200ba
.asm_200dd
	ld a, $0
	scf
	ret
.asm_200e1
	ld a, $1
	scf
	ret
.asm_200e5
	ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength)
	call Function20000
	ld a, [de]
	inc a
	ld [de], a
	cp b
	jr c, .asm_2011d
	ld a, $0
	ld [de], a
	jr .asm_2011d
.asm_200f6
	ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength)
	call Function20000
	ld a, [de]
	dec a
	ld [de], a
	cp $ff
	jr nz, .asm_2011d
	ld a, b
	dec a
	ld [de], a
	jr .asm_2011d
.asm_20108
	ld hl, Buffer1 ; $d1ea (aliases: MagikarpLength)
	dec [hl]
	jr nz, .asm_2011d
	ld [hl], $3
	jr .asm_2011d
.asm_20112
	ld hl, Buffer1 ; $d1ea (aliases: MagikarpLength)
	inc [hl]
	ld a, [hl]
	cp $4
	jr c, .asm_2011d
	ld [hl], $1
.asm_2011d
	xor a
	ret

; known jump sources: 20078 (8:4078), 2009f (8:409f), 200bf (8:40bf)
Function2011f: ; 2011f (8:411f)
	ld hl, $c504
	ld b, $5
	ld c, $12
	call TextBox
	ld de, $c541
	ld a, [$d1ed]
	ld b, a
	callba Function5b05
	ld a, [$d1ee]
	ld b, a
	ld a, [$d1ef]
	ld c, a
	ld de, $c54b
	callba Function1dd6bb
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	ld de, $7f7f
	call Function20168
	ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength)
	ld de, $61ee
	call Function20168
	ld a, [Buffer1] ; $d1ea (aliases: MagikarpLength)
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	ret
; 20160 (8:4160)

INCBIN "baserom.gbc",$20160,$20168 - $20160

; known jump sources: 2014d (8:414d), 20156 (8:4156)
Function20168: ; 20168 (8:4168)
	push de
	call Function20000
	ld a, [$d1ec]
	dec a
	ld b, a
	call GetTileCoord
	pop de
	ld [hl], d
	ld bc, $28
	add hl, bc
	ld [hl], e
	ret
; 2017c (8:417c)

INCBIN "baserom.gbc",$2017c,$20181 - $2017c

INCLUDE "tilesets/data_3.asm"




SECTION "bank9", ROMX, BANK[$9]

INCBIN "baserom.gbc",$24000,$2400e - $24000


Function2400e: ; 2400e
	ld hl, Function1c66
	ld a, [$cf94]
	rst FarCall
	call Function24085
	call Function1ad2
	call Function321c
	call Function2408f
	ret
; 24022

Function24022: ; 24022
	ld hl, Function1c66
	ld a, [$cf94]
	rst FarCall
	call Function24085
	callba MobileTextBorder
	call Function1ad2
	call Function321c
	call Function2408f
	ret
; 2403c

Function2403c: ; 2403c
	ld hl, Function1c66
	ld a, [$cf94]
	rst FarCall
	call Function24085
	callba MobileTextBorder
	call Function1ad2
	call Function321c
	call Function2411a
	ld hl, $cfa5
	set 7, [hl]
.asm_2405a
	call DelayFrame
	callba Function10032e
	ld a, [$cd2b]
	and a
	jr nz, .asm_24076
	call Function241ba
	ld a, [$cfa8]
	and c
	jr z, .asm_2405a
	call Function24098
	ret

.asm_24076
	ld a, [$cfa4]
	ld c, a
	ld a, [$cfa3]
	call SimpleMultiply
	ld [$cf88], a
	and a
	ret
; 24085



Function24085: ; 24085
	xor a
	ld [hBGMapMode], a
	call Function1cbb
	call Function240db
	ret
; 2408f

Function2408f: ; 2408f
	call Function2411a
	call Function1bc9
	call Function1ff8

Function24098: ; 24098
	ld a, [$cf91]
	bit 1, a
	jr z, .asm_240a6
	call Function1bdd
	bit 2, a
	jr nz, .asm_240c9

.asm_240a6
	ld a, [$cf91]
	bit 0, a
	jr nz, .asm_240b4
	call Function1bdd
	bit 1, a
	jr nz, .asm_240cb

.asm_240b4
	ld a, [$cfa4]
	ld c, a
	ld a, [$cfa9]
	dec a
	call SimpleMultiply
	ld c, a
	ld a, [$cfaa]
	add c
	ld [$cf88], a
	and a
	ret

.asm_240c9
	scf
	ret

.asm_240cb
	scf
	ret
; 240cd

Function240cd: ; 240cd
	ld a, [$cf92]
	and $f
	ret
; 240d3

Function240d3: ; 240d3
	ld a, [$cf92]
	swap a
	and $f
	ret
; 240db

Function240db: ; 240db
	ld hl, $cf95
	ld e, [hl]
	inc hl
	ld d, [hl]
	call Function1cc6
	call GetTileCoord
	call Function240d3
	ld b, a
.asm_240eb
	push bc
	push hl
	call Function240cd
	ld c, a
.asm_240f1
	push bc
	ld a, [$cf94]
	call Function201c
	inc de
	ld a, [$cf93]
	ld c, a
	ld b, $0
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_240f1
	pop hl
	ld bc, $0028
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_240eb
	ld hl, $cf98
	ld a, [hli]
	ld h, [hl]
	ld l, a
	or h
	ret z
	ld a, [$cf97]
	rst FarCall
	ret
; 2411a


; known jump sources: 2408f (9:408f)
Function2411a: ; 2411a (9:411a)
	call Function1cc6
	ld a, b
	ld [$cfa1], a
	dec c
	ld a, c
	ld [$cfa2], a
	call Function240d3
	ld [$cfa3], a
	call Function240cd
	ld [$cfa4], a
	call Function24179
	call Function2418a
	call Function24193
	ld a, [$cfa4]
	ld e, a
	ld a, [$cf88]
	ld b, a
	xor a
	ld d, $0
.asm_24146
	inc d
	add e
	cp b
	jr c, .asm_24146
	sub e
	ld c, a
	ld a, b
	sub c
	and a
	jr z, .asm_24157
	cp e
	jr z, .asm_24159
	jr c, .asm_24159
.asm_24157
	ld a, $1
.asm_24159
	ld [$cfaa], a
	ld a, [$cfa3]
	ld e, a
	ld a, d
	and a
	jr z, .asm_24169
	cp e
	jr z, .asm_2416b
	jr c, .asm_2416b
.asm_24169
	ld a, $1
.asm_2416b
	ld [$cfa9], a
	xor a
	ld [$cfab], a
	ld [$cfac], a
	ld [$cfad], a
	ret
; 24179

Function24179: ; 24179
	xor a
	ld hl, $cfa5
	ld [hli], a
	ld [hld], a
	ld a, [$cf91]
	bit 5, a
	ret z
	set 5, [hl]
	set 4, [hl]
	ret
; 2418a

Function2418a: ; 2418a
	ld a, [$cf93]
	or $20
	ld [$cfa7], a
	ret
; 24193

Function24193: ; 24193
	ld hl, $cf91
	ld a, $1
	bit 0, [hl]
	jr nz, .asm_2419e
	or $2

.asm_2419e
	bit 1, [hl]
	jr z, .asm_241a4
	or $4

.asm_241a4
	ld [$cfa8], a
	ret
; 241a8


Function241a8: ; 241a8
	call asm_24329
Function241ab: ; 241ab
	ld hl, $cfa6
	res 7, [hl]
	ld a, [hBGMapMode]
	push af
	call Function24216
	pop af
	ld [hBGMapMode], a
	ret
; 241ba

Function241ba: ; 241ba
	ld hl, $cfa6
	res 7, [hl]
	ld a, [hBGMapMode]
	push af
	call Function2431a
	call Function24249
	jr nc, .asm_241cd
	call Function24270

.asm_241cd
	pop af
	ld [hBGMapMode], a
	call Function1bdd
	ld c, a
	ret
; 241d5

INCBIN "baserom.gbc",$241d5,$24216 - $241d5


Function24216: ; 24216
.asm_24216
	call Function2431a
	call Function24238
	call Function24249
	jr nc, .asm_24237
	call Function24270
	jr c, .asm_24237
	ld a, [$cfa5]
	bit 7, a
	jr nz, .asm_24237
	call Function1bdd
	ld b, a
	ld a, [$cfa8]
	and b
	jr z, .asm_24216

.asm_24237
	ret
; 24238

Function24238: ; 24238
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	call WaitBGMap
	pop af
	ld [hOAMUpdate], a
	xor a
	ld [hBGMapMode], a
	ret
; 24249

Function24249: ; 24249
.asm_24249
	call RTC
	call Function24259
	ret c
	ld a, [$cfa5]
	bit 7, a
	jr z, .asm_24249
	and a
	ret
; 24259

Function24259: ; 24259
	ld a, [$cfa5]
	bit 6, a
	jr z, .asm_24266
	callab Function8cf62

.asm_24266
	call Functiona57
	call Function1bdd
	and a
	ret z
	scf
	ret
; 24270

Function24270: ; 24270
	call Function1bdd
	bit 0, a
	jp nz, Function24318
	bit 1, a
	jp nz, Function24318
	bit 2, a
	jp nz, Function24318
	bit 3, a
	jp nz, Function24318
	bit 4, a
	jr nz, .asm_242fa
	bit 5, a
	jr nz, .asm_242dc
	bit 6, a
	jr nz, .asm_242be
	bit 7, a
	jr nz, .asm_242a0
	and a
	ret

.asm_24299: ; 24299
	ld hl, $cfa6
	set 7, [hl]
	scf
	ret

.asm_242a0
	ld hl, $cfa9
	ld a, [$cfa3]
	cp [hl]
	jr z, .asm_242ac
	inc [hl]
	xor a
	ret

.asm_242ac
	ld a, [$cfa5]
	bit 5, a
	jr nz, .asm_242ba
	bit 3, a
	jp nz, .asm_24299
	xor a
	ret

.asm_242ba
	ld [hl], $1
	xor a
	ret

.asm_242be
	ld hl, $cfa9
	ld a, [hl]
	dec a
	jr z, .asm_242c8
	ld [hl], a
	xor a
	ret

.asm_242c8
	ld a, [$cfa5]
	bit 5, a
	jr nz, .asm_242d6
	bit 2, a
	jp nz, .asm_24299
	xor a
	ret

.asm_242d6
	ld a, [$cfa3]
	ld [hl], a
	xor a
	ret

.asm_242dc
	ld hl, $cfaa
	ld a, [hl]
	dec a
	jr z, .asm_242e6
	ld [hl], a
	xor a
	ret

.asm_242e6
	ld a, [$cfa5]
	bit 4, a
	jr nz, .asm_242f4
	bit 1, a
	jp nz, .asm_24299
	xor a
	ret

.asm_242f4
	ld a, [$cfa4]
	ld [hl], a
	xor a
	ret

.asm_242fa
	ld hl, $cfaa
	ld a, [$cfa4]
	cp [hl]
	jr z, .asm_24306
	inc [hl]
	xor a
	ret

.asm_24306
	ld a, [$cfa5]
	bit 4, a
	jr nz, .asm_24314
	bit 0, a
	jp nz, .asm_24299
	xor a
	ret

.asm_24314
	ld [hl], $1
	xor a
	ret
; 24318

Function24318: ; 24318
	xor a
	ret
; 2431a

Function2431a: ; 2431a
	ld hl, $cfac
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	cp $ed
	jr nz, asm_24329
	ld a, [$cfab]
	ld [hl], a

asm_24329
	ld a, [$cfa1]
	ld b, a
	ld a, [$cfa2]
	ld c, a
	call GetTileCoord
	ld a, [$cfa7]
	swap a
	and $f
	ld c, a
	ld a, [$cfa9]
	ld b, a
	xor a
	dec b
	jr z, .asm_24348
.asm_24344
	add c
	dec b
	jr nz, .asm_24344

.asm_24348
	ld c, $14
	call AddNTimes
	ld a, [$cfa7]
	and $f
	ld c, a
	ld a, [$cfaa]
	ld b, a
	xor a
	dec b
	jr z, .asm_2435f
.asm_2435b
	add c
	dec b
	jr nz, .asm_2435b

.asm_2435f
	ld c, a
	add hl, bc
	ld a, [hl]
	cp $ed
	jr z, .asm_2436b
	ld [$cfab], a
	ld [hl], $ed

.asm_2436b
	ld a, l
	ld [$cfac], a
	ld a, h
	ld [$cfad], a
	ret
; 24374

Function24374: ; 24374
	ld a, [rSVBK]
	push af
	ld a, $7
	ld [rSVBK], a
	ld hl, $cf71
	ld e, [hl]
	inc hl
	ld d, [hl]
	push de
	ld b, $10
	ld hl, $cf81
.asm_24387
	ld a, [hli]
	ld [de], a
	dec de
	dec b
	jr nz, .asm_24387
	ld a, [$cf81]
	bit 6, a
	jr nz, .asm_24398
	bit 7, a
	jr z, .asm_243ae

.asm_24398
	ld hl, $cf71
	ld a, [hli]
	ld h, [hl]
	ld l, a
	set 0, [hl]
	call Function1cfd
	call Function243cd
	call Function1d19
	call Function243cd
	jr .asm_243b5

.asm_243ae
	pop hl
	push hl
	ld a, [hld]
	ld l, [hl]
	ld h, a
	res 0, [hl]

.asm_243b5
	pop hl
	call Function243e7
	ld a, h
	ld [de], a
	dec de
	ld a, l
	ld [de], a
	dec de
	ld hl, $cf71
	ld [hl], e
	inc hl
	ld [hl], d
	pop af
	ld [rSVBK], a
	ld hl, $cf78
	inc [hl]
	ret
; 243cd

Function243cd: ; 243cd
	call Function1c53
	inc b
	inc c
	call Function243e7
.asm_243d5
	push bc
	push hl
.asm_243d7
	ld a, [hli]
	ld [de], a
	dec de
	dec c
	jr nz, .asm_243d7
	pop hl
	ld bc, $0014
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_243d5
	ret
; 243e7

Function243e7: ; 243e7
	ret
; 243e8

Function243e8: ; 243e8
	xor a
	ld [hBGMapMode], a
	ld a, [rSVBK]
	push af
	ld a, $7
	ld [rSVBK], a
	call Function1c7e
	ld a, l
	or h
	jp z, Function2445d
	ld a, l
	ld [$cf71], a
	ld a, h
	ld [$cf72], a
	call Function1c47
	ld a, [$cf81]
	bit 0, a
	jr z, .asm_24411
	ld d, h
	ld e, l
	call Function1c23

.asm_24411
	call Function1c7e
	ld a, h
	or l
	jr z, .asm_2441b
	call Function1c47

.asm_2441b
	pop af
	ld [rSVBK], a
	ld hl, $cf78
	dec [hl]
	ret
; 24423

INCBIN "baserom.gbc",$24423,$24426 - $24423


Function24426: ; 24426
	bit 0, a
	ret z
	xor a
	call GetSRAMBank
	ld hl, TileMap
	ld de, $a000
	ld bc, $0168
	call CopyBytes
	call CloseSRAM
	call Function2173
	xor a
	call GetSRAMBank
	ld hl, $a000
	ld de, TileMap
	ld bc, $0168
.asm_2444c
	ld a, [hl]
	cp $61
	jr c, .asm_24452
	ld [de], a

.asm_24452
	inc hl
	inc de
	dec bc
	ld a, c
	or b
	jr nz, .asm_2444c
	call CloseSRAM
	ret
; 2445d

Function2445d: ; 2445d
	ld hl, UnknownText_0x24468
	call PrintText
	call WaitBGMap
.asm_24466
	jr .asm_24466
; 24468

UnknownText_0x24468: ; 24468
	text_jump UnknownText_0x1c46b7, BANK(UnknownText_0x1c46b7)
	db "@"
; 2446d

Function2446d: ; 2446d
	ld a, [$cf91]
	ld b, a
	ld hl, $cfa1
	ld a, [$cf82]
	inc a
	bit 6, b
	jr nz, .asm_2447d
	inc a

.asm_2447d
	ld [hli], a
	ld a, [$cf83]
	inc a
	ld [hli], a
	ld a, [$cf92]
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	bit 5, b
	jr z, .asm_24492
	set 5, [hl]

.asm_24492
	ld a, [$cf81]
	bit 4, a
	jr z, .asm_2449b
	set 6, [hl]

.asm_2449b
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	bit 0, b
	jr nz, .asm_244a9
	add $2

.asm_244a9
	ld [hli], a
	ld a, [$cf88]
	and a
	jr z, .asm_244b7
	ld c, a
	ld a, [$cf92]
	cp c
	jr nc, .asm_244b9

.asm_244b7
	ld c, $1

.asm_244b9
	ld [hl], c
	inc hl
	ld a, $1
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ret
; 244c3


Function244c3: ; 0x244c3
	ld a, [MenuSelection]
	ld [CurSpecies], a
	hlcoord 0, 12
	ld b, $4
	ld c, $12
	call TextBox
	ld a, [MenuSelection]
	cp $ff
	ret z
	ld de, $c5b9
	callba GetItemDescription
	ret
; 0x244e3

Function244e3: ; 244e3
	ld hl, $4547
	call Function1d3c
	call Function1cbb
	call Function1ad2
	call Function321c
	ld b, $12
	call GetSGBLayout
	xor a
	ld [hBGMapMode], a
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld de, VTiles1
	ld a, $3c
	call Predef
	ld a, [$cf82]
	inc a
	ld b, a
	ld a, [$cf83]
	inc a
	ld c, a
	call GetTileCoord
	ld a, $80
	ld [$ffad], a
	ld bc, $0707
	ld a, $13
	call Predef
	call WaitBGMap
	ret
; 24528

Function24528: ; 24528
	ld hl, $4547
	call Function1d3c
	call Function1ce1
	call WaitBGMap
	call ClearSGB
	xor a
	ld [hBGMapMode], a
	call Function2173
	call Function321c
	call Function1ad2
	call Functione51
	ret
; 24547

INCBIN "baserom.gbc",$24547,$2454f - $24547

Function2454f: ; 2454f
	ld hl, $d81e
	xor a
	ld bc, $10
	call ByteFill
	nop
	ld bc, MapObjects ; $d71e
	ld de, $d81e
	xor a
.asm_24561
	push af
	push bc
	push de
	call Function245a7
	jr c, .asm_2456c
	call Function2457d
.asm_2456c
	pop de
	ld [de], a
	inc de
	pop bc
	ld hl, $10
	add hl, bc
	ld b, h
	ld c, l
	pop af
	inc a
	cp $10
	jr nz, .asm_24561
	ret

; known jump sources: 24569 (9:4569)
Function2457d: ; 2457d (9:457d)
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_245a3
	ld hl, $c
	add hl, bc
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	cp $ff
	jr nz, .asm_24598
	ld a, e
	cp $ff
	jr z, .asm_245a1
	jr .asm_245a3
.asm_24598
	ld b, $2
	call EventFlagAction
	ld a, c
	and a
	jr nz, .asm_245a3
.asm_245a1
	xor a
	ret
.asm_245a3
	ld a, $ff
	scf
	ret

; known jump sources: 24564 (9:4564)
Function245a7: ; 245a7 (9:45a7)
	call Function18f5
	ld a, $ff
	ret c
	xor a
	ret


Function245af: ; 245af
	xor a
	ld [$cf73], a
	ld [hBGMapMode], a
	inc a
	ld [$ffaa], a
	call Function2471a
	call Function24764
	call Function247dd
	call Function245f1
	call Function321c
	xor a
	ld [hBGMapMode], a
	ret
; 245cb

Function245cb: ; 245cb
.asm_245cb
	call Function24609
	jp c, Function245d6
	call z, Function245e1
	jr .asm_245cb
; 245d6

Function245d6: ; 245d6
	call Function1ff8
	ld [$cf73], a
	ld a, $0
	ld [$ffaa], a
	ret
; 245e1

Function245e1: ; 245e1
	call Function245f1
	ld a, $1
	ld [hBGMapMode], a
	ld c, $3
	call DelayFrames
	xor a
	ld [hBGMapMode], a
	ret
; 245f1

Function245f1: ; 245f1
	xor a
	ld [hBGMapMode], a
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function247f0
	call Function2488b
	call Function248b8
	pop af
	ld [Options], a
	ret
; 24609

Function24609: ; 24609
.asm_24609
	call Function1bd3
	ld a, [$ffa9]
	and $f0
	ld b, a
	ld a, [hJoyPressed]
	and $f
	or b
	bit 0, a
	jp nz, .asm_24644
	bit 1, a
	jp nz, .asm_2466f
	bit 2, a
	jp nz, Function24673
	bit 3, a
	jp nz, Function24695
	bit 4, a
	jp nz, Function246b5
	bit 5, a
	jp nz, Function246a1
	bit 6, a
	jp nz, Function246c9
	bit 7, a
	jp nz, Function246df
	jr .asm_24609
; 24640

INCBIN "baserom.gbc",$24640,$24644 - $24640


.asm_24644: ; 24644
	call Function1bee
	ld a, [$cfa9]
	dec a
	call Function248d5
	ld a, [MenuSelection]
	ld [CurItem], a
	ld a, [$cf75]
	ld [$d10d], a
	call Function246fc
	dec a
	ld [$cf77], a
	ld [$d107], a
	ld a, [MenuSelection]
	cp $ff
	jr z, .asm_2466f
	ld a, $1
	scf
	ret

.asm_2466f
	ld a, $2
	scf
	ret
; 24673

Function24673: ; 24673
	ld a, [$cf91]
	bit 7, a
	jp z, Function2ec8
	ld a, [$cfa9]
	dec a
	call Function248d5
	ld a, [MenuSelection]
	cp $ff
	jp z, Function2ec8
	call Function246fc
	dec a
	ld [$cf77], a
	ld a, $4
	scf
	ret
; 24695

Function24695: ; 24695
	ld a, [$cf91]
	bit 6, a
	jp z, Function2ec8
	ld a, $8
	scf
	ret
; 246a1

Function246a1: ; 246a1
	ld hl, $cfa6
	bit 7, [hl]
	jp z, Function2ec8
	ld a, [$cf91]
	bit 3, a
	jp z, Function2ec8
	ld a, $20
	scf
	ret
; 246b5

Function246b5: ; 246b5
	ld hl, $cfa6
	bit 7, [hl]
	jp z, Function2ec8
	ld a, [$cf91]
	bit 2, a
	jp z, Function2ec8
	ld a, $10
	scf
	ret
; 246c9

Function246c9: ; 246c9
	ld hl, $cfa6
	bit 7, [hl]
	jp z, Function2ec6
	ld hl, $d0e4
	ld a, [hl]
	and a
	jr z, .asm_246dc
	dec [hl]
	jp Function2ec6

.asm_246dc
	jp Function2ec8
; 246df

Function246df: ; 246df
	ld hl, $cfa6
	bit 7, [hl]
	jp z, Function2ec6
	ld hl, $d0e4
	ld a, [$cf92]
	add [hl]
	ld b, a
	ld a, [$d144]
	cp b
	jr c, .asm_246f9
	inc [hl]
	jp Function2ec6

.asm_246f9
	jp Function2ec8
; 246fc

Function246fc: ; 246fc
	ld a, [$d0e4]
	ld c, a
	ld a, [$cfa9]
	add c
	ld c, a
	ret
; 24706

Function24706: ; 24706 (9:4706)
	call Function1cfd
	ld de, $14
	add hl, de
	ld de, $28
	ld a, [$cf92]
.asm_24713
	ld [hl], $7f
	add hl, de
	dec a
	jr nz, .asm_24713
	ret

Function2471a: ; 2471a
	ld hl, $cf96
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$cf95]
	call GetFarByte
	ld [$d144], a
	ld a, [$cf92]
	ld c, a
	ld a, [$d0e4]
	add c
	ld c, a
	ld a, [$d144]
	inc a
	cp c
	jr nc, .asm_24748
	ld a, [$cf92]
	ld c, a
	ld a, [$d144]
	inc a
	sub c
	jr nc, .asm_24745
	xor a

.asm_24745
	ld [$d0e4], a

.asm_24748
	ld a, [$d0e4]
	ld c, a
	ld a, [$cf88]
	add c
	ld b, a
	ld a, [$d144]
	inc a
	cp b
	jr c, .asm_2475a
	jr nc, .asm_24763

.asm_2475a
	xor a
	ld [$d0e4], a
	ld a, $1
	ld [$cf88], a

.asm_24763
	ret
; 24764

Function24764: ; 24764
	ld a, [$cf91]
	ld c, a
	ld a, [$d144]
	ld b, a
	ld a, [$cf82]
	add $1
	ld [$cfa1], a
	ld a, [$cf83]
	add $0
	ld [$cfa2], a
	ld a, [$cf92]
	cp b
	jr c, .asm_24786
	jr z, .asm_24786
	ld a, b
	inc a

.asm_24786
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld a, $8c
	bit 2, c
	jr z, .asm_24796
	set 0, a

.asm_24796
	bit 3, c
	jr z, .asm_2479c
	set 1, a

.asm_2479c
	ld [$cfa5], a
	xor a
	ld [$cfa6], a
	ld a, $20
	ld [$cfa7], a
	ld a, $c3
	bit 7, c
	jr z, .asm_247b0
	add $4

.asm_247b0
	bit 6, c
	jr z, .asm_247b6
	add $8

.asm_247b6
	ld [$cfa8], a
	ld a, [$cfa3]
	ld b, a
	ld a, [$cf88]
	and a
	jr z, .asm_247c8
	cp b
	jr z, .asm_247ca
	jr c, .asm_247ca

.asm_247c8
	ld a, $1

.asm_247ca
	ld [$cfa9], a
	ld a, $1
	ld [$cfaa], a
	xor a
	ld [$cfac], a
	ld [$cfad], a
	ld [$cfab], a
	ret
; 247dd

Function247dd: ; 247dd
	ld a, [$d144]
	ld c, a
	ld a, [$d0e3]
	and a
	jr z, .asm_247ef
	dec a
	cp c
	jr c, .asm_247ef
	xor a
	ld [$d0e3], a

.asm_247ef
	ret
; 247f0

Function247f0: ; 247f0
	call Function1cf1
	ld a, [$cf91]
	bit 4, a
	jr z, .asm_2480d
	ld a, [$d0e4]
	and a
	jr z, .asm_2480d
	ld a, [$cf82]
	ld b, a
	ld a, [$cf85]
	ld c, a
	call GetTileCoord
	ld [hl], $61

.asm_2480d
	call Function1cfd
	ld bc, $0015
	add hl, bc
	ld a, [$cf92]
	ld b, a
	ld c, $0
.asm_2481a
	ld a, [$d0e4]
	add c
	ld [$cf77], a
	ld a, c
	call Function248d5
	ld a, [MenuSelection]
	cp $ff
	jr z, .asm_24851
	push bc
	push hl
	call Function2486e
	pop hl
	ld bc, $0028
	add hl, bc
	pop bc
	inc c
	ld a, c
	cp b
	jr nz, .asm_2481a
	ld a, [$cf91]
	bit 4, a
	jr z, .asm_24850
	ld a, [$cf84]
	ld b, a
	ld a, [$cf85]
	ld c, a
	call GetTileCoord
	ld [hl], $ee

.asm_24850
	ret

.asm_24851
	ld a, [$cf91]
	bit 0, a
	jr nz, .asm_24866
	ld de, .data_2485f
	call PlaceString
	ret

.data_2485f
	db $82
	db $80
	db $8d
	db $82
	db $84
	db $8b
	db $50

.asm_24866
	ld d, h
	ld e, l
	ld hl, $cf98
	jp CallPointerAt
; 2486e

Function2486e: ; 2486e
	push hl
	ld d, h
	ld e, l
	ld hl, $cf98
	call CallPointerAt
	pop hl
	ld a, [$cf93]
	and a
	jr z, .asm_2488a
	ld e, a
	ld d, $0
	add hl, de
	ld d, h
	ld e, l
	ld hl, $cf9b
	call CallPointerAt

.asm_2488a
	ret
; 2488b

Function2488b: ; 2488b
	ld a, [$d0e3]
	and a
	jr z, .asm_248b7
	ld b, a
	ld a, [$d0e4]
	cp b
	jr nc, .asm_248b7
	ld c, a
	ld a, [$cf92]
	add c
	cp b
	jr c, .asm_248b7
	ld a, b
	sub c
	dec a
	add a
	add $1
	ld c, a
	ld a, [$cf82]
	add c
	ld b, a
	ld a, [$cf83]
	add $0
	ld c, a
	call GetTileCoord
	ld [hl], $ec

.asm_248b7
	ret
; 248b8

Function248b8: ; 248b8
	ld a, [$cf91]
	bit 5, a
	ret z
	bit 1, a
	jr z, .asm_248c7
	ld a, [$d0e3]
	and a
	ret nz

.asm_248c7
	ld a, [$cfa9]
	dec a
	call Function248d5
	ld hl, $cf9e
	call CallPointerAt
	ret
; 248d5

Function248d5: ; 248d5
	push de
	push hl
	ld e, a
	ld a, [$d0e4]
	add e
	ld e, a
	ld d, $0
	ld hl, $cf96
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	ld a, [$cf94]
	cp $1
	jr z, .asm_248f2
	cp $2
	jr z, .asm_248f1

.asm_248f1
	add hl, de

.asm_248f2
	add hl, de
	ld a, [$cf95]
	call GetFarByte
	ld [MenuSelection], a
	ld [CurItem], a
	inc hl
	ld a, [$cf95]
	call GetFarByte
	ld [$cf75], a
	pop hl
	pop de
	ret
; 2490c


; no known jump sources
Function2490c: ; 2490c (9:490c)
	ld a, [$d0e3]
	and a
	jr z, .asm_2493d
	ld b, a
	ld a, [$cf77]
	inc a
	cp b
	jr z, .asm_24945
	ld a, [$cf77]
	call Function24a5c
	ld a, [hl]
	cp $ff
	ret z
	ld a, [$d0e3]
	dec a
	ld [$d0e3], a
	call Function249a7
	jp c, Function249d1
	ld a, [$cf77]
	ld c, a
	ld a, [$d0e3]
	cp c
	jr c, .asm_2497a
	jr .asm_2494a
.asm_2493d
	ld a, [$cf77]
	inc a
	ld [$d0e3], a
	ret
.asm_24945
	xor a
	ld [$d0e3], a
	ret
.asm_2494a
	ld a, [$d0e3]
	call Function24a40
	ld a, [$cf77]
	ld d, a
	ld a, [$d0e3]
	ld e, a
	call Function24a6c
	push bc
	ld a, [$d0e3]
	call Function24a5c
	dec hl
	push hl
	call Function24a80
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	pop bc
	call Function24aab
	ld a, [$cf77]
	call Function24a4d
	xor a
	ld [$d0e3], a
	ret
.asm_2497a
	ld a, [$d0e3]
	call Function24a40
	ld a, [$cf77]
	ld d, a
	ld a, [$d0e3]
	ld e, a
	call Function24a6c
	push bc
	ld a, [$d0e3]
	call Function24a5c
	ld d, h
	ld e, l
	call Function24a80
	add hl, bc
	pop bc
	call CopyBytes
	ld a, [$cf77]
	call Function24a4d
	xor a
	ld [$d0e3], a
	ret

; known jump sources: 2492b (9:492b)
Function249a7: ; 249a7 (9:49a7)
	ld a, [$d0e3]
	call Function24a5c
	ld d, h
	ld e, l
	ld a, [$cf77]
	call Function24a5c
	ld a, [de]
	cp [hl]
	jr nz, .asm_249cd
	ld a, [$cf77]
	call Function24a97
	cp $63
	jr z, .asm_249cd
	ld a, [$d0e3]
	call Function24a97
	cp $63
	jr nz, .asm_249cf
.asm_249cd
	and a
	ret
.asm_249cf
	scf
	ret

; known jump sources: 2492e (9:492e)
Function249d1: ; 249d1 (9:49d1)
	ld a, [$d0e3]
	call Function24a5c
	inc hl
	push hl
	ld a, [$cf77]
	call Function24a5c
	inc hl
	ld a, [hl]
	pop hl
	add [hl]
	cp $64
	jr c, .asm_24a01
	sub $63
	push af
	ld a, [$cf77]
	call Function24a5c
	inc hl
	ld [hl], $63
	ld a, [$d0e3]
	call Function24a5c
	inc hl
	pop af
	ld [hl], a
	xor a
	ld [$d0e3], a
	ret
.asm_24a01
	push af
	ld a, [$cf77]
	call Function24a5c
	inc hl
	pop af
	ld [hl], a
	ld hl, $cf96
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d0e3]
	cp [hl]
	jr nz, .asm_24a25
	dec [hl]
	ld a, [$d0e3]
	call Function24a5c
	ld [hl], $ff
	xor a
	ld [$d0e3], a
	ret
.asm_24a25
	dec [hl]
	call Function24a80
	push bc
	ld a, [$d0e3]
	call Function24a5c
	pop bc
	push hl
	add hl, bc
	pop de
.asm_24a34
	ld a, [hli]
	ld [de], a
	inc de
	cp $ff
	jr nz, .asm_24a34
	xor a
	ld [$d0e3], a
	ret

; known jump sources: 2494d (9:494d), 2497d (9:497d)
Function24a40: ; 24a40 (9:4a40)
	call Function24a5c
	ld de, DefaultFlypoint ; $d002
	call Function24a80
	call CopyBytes
	ret

; known jump sources: 24972 (9:4972), 2499f (9:499f)
Function24a4d: ; 24a4d (9:4a4d)
	call Function24a5c
	ld d, h
	ld e, l
	ld hl, DefaultFlypoint ; $d002
	call Function24a80
	call CopyBytes
	ret

; known jump sources: 2491d (9:491d), 2495f (9:495f), 2498f (9:498f), 249aa (9:49aa), 249b2 (9:49b2), 249d4 (9:49d4), 249dc (9:49dc), 249ed (9:49ed), 249f6 (9:49f6), 24a05 (9:4a05), 24a1b (9:4a1b), 24a2d (9:4a2d), 24a40 (9:4a40), 24a4d (9:4a4d), 24aa1 (9:4aa1)
Function24a5c: ; 24a5c (9:4a5c)
	push af
	call Function24a80
	ld hl, $cf96
	ld a, [hli]
	ld h, [hl]
	ld l, a
	inc hl
	pop af
	call AddNTimes
	ret

; known jump sources: 24958 (9:4958), 24988 (9:4988)
Function24a6c: ; 24a6c (9:4a6c)
	push hl
	call Function24a80
	ld a, d
	sub e
	jr nc, .asm_24a76
	dec a
	cpl
.asm_24a76
	ld hl, $0
	call AddNTimes
	ld b, h
	ld c, l
	pop hl
	ret

; known jump sources: 24964 (9:4964), 24994 (9:4994), 24a26 (9:4a26), 24a46 (9:4a46), 24a55 (9:4a55), 24a5d (9:4a5d), 24a6d (9:4a6d), 24a98 (9:4a98)
Function24a80: ; 24a80 (9:4a80)
	push hl
	ld a, [$cf94]
	ld c, a
	ld b, $0
	ld hl, $4a91
	add hl, bc
	add hl, bc
	ld c, [hl]
	inc hl
	ld b, [hl]
	pop hl
	ret
; 24a91 (9:4a91)

INCBIN "baserom.gbc",$24a91,$24a97 - $24a91

; known jump sources: 249bc (9:49bc), 249c6 (9:49c6)
Function24a97: ; 24a97 (9:4a97)
	push af
	call Function24a80
	ld a, c
	cp $2
	jr nz, .asm_24aa7
	pop af
	call Function24a5c
	inc hl
	ld a, [hl]
	ret
.asm_24aa7
	pop af
	ld a, $1
	ret

; known jump sources: 2496c (9:496c), 24ab1 (9:4ab1)
Function24aab: ; 24aab (9:4aab)
	ld a, [hld]
	ld [de], a
	dec de
	dec bc
	ld a, b
	or c
	jr nz, Function24aab
	ret

Function24ab4: ; 0x24ab4
	push de
	ld a, [MenuSelection]
	ld [$d265], a
	call GetItemName
	pop hl
	call PlaceString
	ret
; 0x24ac3

Function24ac3: ; 0x24ac3
	push de
	ld a, [MenuSelection]
	ld [CurItem], a
	callba _CheckTossableItem
	ld a, [$d142]
	pop hl
	and a
	jr nz, .done
	ld de, $0015
	add hl, de
	ld [hl], $f1
	inc hl
	ld de, $cf75
	ld bc, $0102
	call PrintNum

.done
	ret
; 0x24ae8

Function24ae8: ; 24ae8
	ld hl, $4b15
	call Function1d3c
	jr asm_24b01

Function24af0: ; 24af0
	ld hl, $4b1d
	call Function1d3c
	jr asm_24b01

Function24af8: ; 24af8
	ld hl, $4b15
	ld de, $000b
	call Function1e2e

asm_24b01
	call Function1cbb
	call Function1cfd
	ld de, $0015
	add hl, de
	ld de, Money
	ld bc, $2306
	call PrintNum
	ret
; 24b15

INCBIN "baserom.gbc",$24b15,$24b25 - $24b15

Function24b25: ; 24b25
	ld hl, $c4ab
	ld b, $1
	ld c, $7
	call TextBox
	ld hl, $c4ac
	ld de, CoinString
	call PlaceString
	ld hl, $c4c5
	ld de, String24b8e
	call PlaceString
	ld de, Coins
	ld bc, $0204
	ld hl, $c4c1
	call PrintNum
	ret
; 24b4e

Function24b4e: ; 24b4e
	ld hl, $c4a5
	ld b, $3
	ld c, $d
	call TextBox
	ld hl, $c4ba
	ld de, MoneyString
	call PlaceString
	ld hl, $c4c0
	ld de, Money
	ld bc, $2306
	call PrintNum
	ld hl, $c4e2
	ld de, CoinString
	call PlaceString
	ld hl, $c4eb
	ld de, Coins
	ld bc, $0204
	call PrintNum
	ret
; 24b83

MoneyString: ; 24b83
	db "MONEY@"
CoinString: ; 24b89
	db "COIN@"
String24b8e: ; 24b8e
	db "@"
; 24b8f

Function24b8f: ; 24b8f
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld hl, TileMap
	ld b, $3
	ld c, $7
	call TextBox
	ld hl, $c4b5
	ld de, $dc7a
	ld bc, $0203
	call PrintNum
	ld hl, $c4b8
	ld de, String24bcf
	call PlaceString
	ld hl, $c4dd
	ld de, String24bd4
	call PlaceString
	ld hl, $c4e1
	ld de, $dc79
	ld bc, $0102
	call PrintNum
	pop af
	ld [Options], a
	ret
; 24bcf

String24bcf: ; 24bcf
	db "/500@"
String24bd4: ; 24bd4
	db "ボール   こ@"
; 24bdc

Function24bdc: ; 24bdc
	ld hl, TileMap
	ld b, $5
	ld c, $11
	call TextBox
	ret
; 24be7

Function24be7: ; 24be7
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function24bdc
	ld hl, $c505
	ld de, String24c52
	call PlaceString
	ld hl, $c50c
	ld de, $dc79
	ld bc, $4102
	call PrintNum
	ld hl, $c4b5
	ld de, String24c4b
	call PlaceString
	ld a, [$df9c]
	and a
	ld de, String24c59
	jr z, .asm_24c1e
	ld [$d265], a
	call GetPokemonName

.asm_24c1e
	ld hl, $c4bc
	call PlaceString
	ld a, [$df9c]
	and a
	jr z, .asm_24c3e
	ld hl, $c4dd
	ld de, String24c5e
	call PlaceString
	ld a, [$dfbb]
	ld h, b
	ld l, c
	inc hl
	ld c, $3
	call Function3842

.asm_24c3e
	pop af
	ld [Options], a
	ret
; 24c43

String24c43: ; 24c43
	db "ボール   こ@"
String24c4b: ; 24c4b
	db "CAUGHT@"
String24c52: ; 24c52
	db "BALLS:@"
String24c59: ; 24c59
	db "None@"
String24c5e: ; 24c5e
	db "LEVEL@"
; 24c64


Function24c64: ; 24c64
	ld hl, Buffer1
	xor a
	ld [hli], a
	dec a
	ld bc, $000a
	call ByteFill

	ld hl, ApricornBalls
.asm_24c73
	ld a, [hl]
	cp $ff
	jr z, .asm_24c8d
	push hl
	ld [CurItem], a
	ld hl, NumItems
	call CheckItem
	pop hl
	jr nc, .asm_24c89
	ld a, [hl]
	call Function24c94
.asm_24c89
	inc hl
	inc hl
	jr .asm_24c73

.asm_24c8d
	ld a, [Buffer1]
	and a
	ret nz
	scf
	ret
; 24c94

Function24c94: ; 24c94
	push hl
	ld hl, Buffer1
	inc [hl]
	ld e, [hl]
	ld d, 0
	add hl, de
	ld [hl], a
	pop hl
	ret
; 24ca0

ApricornBalls: ; 24ca0
	db RED_APRICORN, LEVEL_BALL
	db BLU_APRICORN, LURE_BALL
	db YLW_APRICORN, MOON_BALL
	db GRN_APRICORN, FRIEND_BALL
	db WHT_APRICORN, FAST_BALL
	db BLK_APRICORN, HEAVY_BALL
	db PNK_APRICORN, LOVE_BALL
	db $ff
; 24caf


MonMenuOptionStrings: ; 24caf
	db "STATS@"
	db "SWITCH@"
	db "ITEM@"
	db "CANCEL@"
	db "MOVE@"
	db "MAIL@"
	db "ERROR!@"
; 24cd9

MonMenuOptions: ; 24cd9

; Moves
	db 0,  1, CUT
	db 0,  2, FLY
	db 0,  3, SURF
	db 0,  4, STRENGTH
	db 0,  6, FLASH
	db 0,  5, WATERFALL
	db 0,  7, WHIRLPOOL
	db 0,  8, DIG
	db 0,  9, TELEPORT
	db 0, 10, SOFTBOILED
	db 0, 11, HEADBUTT
	db 0, 12, ROCK_SMASH
	db 0, 13, MILK_DRINK
	db 0, 14, SWEET_SCENT

; Options
	db 1, 15, 1 ; STATS
	db 1, 16, 2 ; SWITCH
	db 1, 17, 3 ; ITEM
	db 1, 18, 4 ; CANCEL
	db 1, 19, 5 ; MOVE
	db 1, 20, 6 ; MAIL
	db 1, 21, 7 ; ERROR!

	db $ff
; 24d19

Function24d19: ; 24d19
	xor a
	ld [hBGMapMode], a
	call Function24dd4
	callba Function8ea4a
	ld hl, MenuDataHeader_0x24d3f
	call LoadMenuDataHeader
	call Function24d47
	call Function24d91

	ld a, 1
	ld [hBGMapMode], a
	call Function24d59
	ld [MenuSelection], a

	call Function1c07
	ret
; 24d3f

MenuDataHeader_0x24d3f: ; 24d3f
	db $40 ; tile backup
	db 00, 06 ; start coords
	db 17, 19 ; end coords
	dw $0000
	db 1 ; default option
; 24d47

Function24d47: ; 24d47
	ld a, [Buffer1]
	inc a
	add a
	ld b, a
	ld a, [$cf84]
	sub b
	inc a
	ld [$cf82], a
	call Function1cbb
	ret
; 24d59

Function24d59: ; 24d59
.asm_24d59
	ld a, $a0
	ld [$cf91], a
	ld a, [Buffer1]
	ld [$cf92], a
	call Function1c10
	ld hl, $cfa5
	set 6, [hl]
	call Function1bc9
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	ld a, [hJoyPressed]
	bit 0, a ; A
	jr nz, .asm_24d84
	bit 1, a ; B
	jr nz, .asm_24d81
	jr .asm_24d59

.asm_24d81
	ld a, 18 ; CANCEL
	ret

.asm_24d84
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, 0
	ld hl, Buffer2
	add hl, bc
	ld a, [hl]
	ret
; 24d91

Function24d91: ; 24d91
	call Function1cfd
	ld bc, $002a
	add hl, bc
	ld de, Buffer2
.asm_24d9b
	ld a, [de]
	inc de
	cp $ff
	ret z
	push de
	push hl
	call Function24db0
	pop hl
	call PlaceString
	ld bc, $0028
	add hl, bc
	pop de
	jr .asm_24d9b
; 24db0

Function24db0: ; 24db0
	ld hl, MonMenuOptions + 1
	ld de, $0003
	call IsInArray
	dec hl
	ld a, [hli]
	cp $1
	jr z, .asm_24dc8
	inc hl
	ld a, [hl]
	ld [$d265], a
	call GetMoveName
	ret

.asm_24dc8
	inc hl
	ld a, [hl]
	dec a
	ld hl, MonMenuOptionStrings
	call GetNthString
	ld d, h
	ld e, l
	ret
; 24dd4

Function24dd4: ; 24dd4
	call Function24e68
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_24e3f
	ld a, [InLinkBattle]
	and a
	jr nz, .asm_24e03
	ld a, $2
	call GetPartyParamLocation
	ld d, h
	ld e, l
	ld c, $4
.asm_24ded
	push bc
	push de
	ld a, [de]
	and a
	jr z, .asm_24dfd
	push hl
	call Function24e52
	pop hl
	jr nc, .asm_24dfd
	call Function24e83

.asm_24dfd
	pop de
	inc de
	pop bc
	dec c
	jr nz, .asm_24ded

.asm_24e03
	ld a, $f
	call Function24e83
	ld a, $10
	call Function24e83
	ld a, $13
	call Function24e83
	ld a, [InLinkBattle]
	and a
	jr nz, .asm_24e2f
	push hl
	ld a, $1
	call GetPartyParamLocation
	ld d, [hl]
	callba ItemIsMail
	pop hl
	ld a, $14
	jr c, .asm_24e2c
	ld a, $11

.asm_24e2c
	call Function24e83

.asm_24e2f
	ld a, [Buffer1]
	cp $8
	jr z, .asm_24e3b
	ld a, $12
	call Function24e83

.asm_24e3b
	call Function24e76
	ret

.asm_24e3f
	ld a, $f
	call Function24e83
	ld a, $10
	call Function24e83
	ld a, $12
	call Function24e83
	call Function24e76
	ret
; 24e52

Function24e52: ; 24e52
	ld b, a
	ld hl, MonMenuOptions
.asm_24e56
	ld a, [hli]
	cp $ff
	jr z, .asm_24e67
	cp $1
	jr z, .asm_24e67
	ld d, [hl]
	inc hl
	ld a, [hli]
	cp b
	jr nz, .asm_24e56
	ld a, d
	scf

.asm_24e67
	ret
; 24e68

Function24e68: ; 24e68
	xor a
	ld [Buffer1], a
	ld hl, Buffer2
	ld bc, $0009
	call ByteFill
	ret
; 24e76

Function24e76: ; 24e76
	ld a, [Buffer1]
	ld e, a
	ld d, $0
	ld hl, Buffer2
	add hl, de
	ld [hl], $ff
	ret
; 24e83

Function24e83: ; 24e83
	push hl
	push de
	push af
	ld a, [Buffer1]
	ld e, a
	inc a
	ld [Buffer1], a
	ld d, $0
	ld hl, Buffer2
	add hl, de
	pop af
	ld [hl], a
	pop de
	pop hl
	ret
; 24e99

Function24e99: ; 24e99
; BattleMonMenu
	ld hl, MenuDataHeader_0x24ed4
	call Function1d3c
	xor a
	ld [hBGMapMode], a
	call Function1cbb
	call Function1ad2
	call Function1c89
	call WaitBGMap
	call Function1c66
	ld a, [$cf91]
	bit 7, a
	jr z, .asm_24ed0
	call Function1c10
	ld hl, $cfa5
	set 6, [hl]
	call Function1bc9
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	ld a, [hJoyPressed]
	bit 1, a
	jr z, .asm_24ed2
	ret z

.asm_24ed0
	scf
	ret

.asm_24ed2
	and a
	ret
; 24ed4

MenuDataHeader_0x24ed4: ; 24ed4
	db $00 ; flags
	db 11, 11 ; start coords
	db 17, 19 ; end coords
	dw MenuData2_0x24edc
	db 1 ; default option
; 24edc

MenuData2_0x24edc: ; 24edc
	db $c0 ; flags
	db 3 ; items
	db "SWITCH@"
	db "STATS@"
	db "CANCEL@"
; 24ef2


Function24ef2: ; 4ef2
	ld hl, MenuDataHeader_0x24f2c
	call LoadMenuDataHeader
	ld a, [$d0d2]
	ld [$cf88], a
	call Function2039
	ld a, [$cf88]
	ld [$d0d2], a
	call Function1c07
	ret
; 24f0b


Function24f0b: ; 24f0b
; Safari battle menu (untranslated).
	ld hl, MenuDataHeader_0x24f4e
	call LoadMenuDataHeader
	jr Function24f19
; 24f13

Function24f13: ; 24f13
; Park battle menu.
	ld hl, MenuDataHeader_0x24f89
	call LoadMenuDataHeader
; 24f19

Function24f19: ; 24f19
	ld a, [$d0d2]
	ld [$cf88], a
	call Function202a
	ld a, [$cf88]
	ld [$d0d2], a
	call Function1c07
	ret
; 24f2c


MenuDataHeader_0x24f2c: ; 24f2c
	db $40 ; flags
	db 12, 08 ; start coords
	db 17, 19 ; end coords
	dw MenuData_0x24f34
	db 1 ; default option
; 24f34

MenuData_0x24f34: ; 0x24f34
	db $81 ; flags
	dn 2, 2 ; rows, columns
	db 6 ; spacing
	dbw BANK(Strings24f3d), Strings24f3d
	dbw $09, $0000
; 0x24f3d

Strings24f3d: ; 0x24f3d
	db "FIGHT@"
	db $4a, "@"
	db "PACK@"
	db "RUN@"
; 24f4e


MenuDataHeader_0x24f4e: ; 24f4e
	db $40 ; flags
	db 12, 00 ; start coords
	db 17, 19 ; end coords
	dw MenuData_0x24f56
	db 1 ; default option
; 24f56

MenuData_0x24f56: ; 24f56
	db $81 ; flags
	dn 2, 2 ; rows, columns
	db 11 ; spacing
	dbw BANK(Strings24f5f), Strings24f5f
	dbw BANK(Function24f7c), Function24f7c
; 24f5f

Strings24f5f: ; 24f5f
	db "サファりボール×  @" ; "SAFARI BALL×  @"
	db "エサをなげる@" ; "THROW BAIT"
	db "いしをなげる@" ; "THROW ROCK"
	db "にげる@" ; "RUN"
; 24f7c

Function24f7c: ; 24f7c
	ld hl, $c5b5
	ld de, $dc79
	ld bc, $8102
	call PrintNum
	ret
; 24f89


MenuDataHeader_0x24f89: ; 24f89
	db $40 ; flags
	db 12, 02 ; start coords
	db 17, 19 ; end coords
	dw MenuData_0x24f91
	db 1 ; default option
; 24f91

MenuData_0x24f91: ; 24f91
	db $81 ; flags
	dn 2, 2 ; rows, columns
	db 12 ; spacing
	dbw BANK(Strings24f9a), Strings24f9a
	dbw BANK(Function24fb2), Function24fb2
; 24f9a

Strings24f9a: ; 24f9a
	db "FIGHT@"
	db $4a, "@"
	db "PARKBALL×  @"
	db "RUN@"
; 24fb2

Function24fb2: ; 24fb2
	ld hl, $c5ed
	ld de, $dc79
	ld bc, $8102
	call PrintNum
	ret
; 24fbf


Function24fbf: ; 24fbf
	ld hl, $50ed
	call LoadMenuDataHeader
	call Function24ff9
	ret
; 24fc9


Function24fc9: ; 24fc9
	callba GetItemPrice
Function24fcf: ; 24fcf
	ld a, d
	ld [Buffer1], a
	ld a, e
	ld [Buffer2], a
	ld hl, $50f5
	call LoadMenuDataHeader
	call Function24ff9
	ret
; 24fe1

Function24fe1: ; 24fe1
	callba GetItemPrice
	ld a, d
	ld [Buffer1], a
	ld a, e
	ld [Buffer2], a
	ld hl, $50fd
	call LoadMenuDataHeader
	call Function24ff9
	ret
; 24ff9

Function24ff9: ; 24ff9
	ld a, $1
	ld [$d10c], a
.asm_24ffe
	call Function25072
	call Function2500e
	jr nc, .asm_24ffe
	cp $ff
	jr nz, .asm_2500c
	scf
	ret

.asm_2500c
	and a
	ret
; 2500e

Function2500e: ; 2500e
	call Function354b
	bit 1, c
	jr nz, .asm_2502b
	bit 0, c
	jr nz, .asm_2502f
	bit 7, c
	jr nz, .asm_25033
	bit 6, c
	jr nz, .asm_2503f
	bit 5, c
	jr nz, .asm_2504d
	bit 4, c
	jr nz, .asm_2505f
	and a
	ret

.asm_2502b
	ld a, $ff
	scf
	ret

.asm_2502f
	ld a, $0
	scf
	ret

.asm_25033
	ld hl, $d10c
	dec [hl]
	jr nz, .asm_2503d
	ld a, [$d10d]
	ld [hl], a

.asm_2503d
	and a
	ret

.asm_2503f
	ld hl, $d10c
	inc [hl]
	ld a, [$d10d]
	cp [hl]
	jr nc, .asm_2504b
	ld [hl], $1

.asm_2504b
	and a
	ret

.asm_2504d
	ld a, [$d10c]
	sub $a
	jr c, .asm_25058
	jr z, .asm_25058
	jr .asm_2505a

.asm_25058
	ld a, $1

.asm_2505a
	ld [$d10c], a
	and a
	ret

.asm_2505f
	ld a, [$d10c]
	add $a
	ld b, a
	ld a, [$d10d]
	cp b
	jr nc, .asm_2506c
	ld b, a

.asm_2506c
	ld a, b
	ld [$d10c], a
	and a
	ret
; 25072

Function25072: ; 25072
	call Function1cbb
	call Function1cfd
	ld de, $0015
	add hl, de
	ld [hl], $f1
	inc hl
	ld de, $d10c
	ld bc, $8102
	call PrintNum
	ld a, [$cf86]
	ld e, a
	ld a, [$cf87]
	ld d, a
	ld a, [$cf8a]
	call FarCall_de
	ret
; 25097


Function25097: ; 25097
	ret
; 25098

Function25098: ; 25098
	call Function250a9
	call Function250d1
	ret
; 2509f

Function2509f: ; 2509f
	call Function250a9
	call Function250c1
	call Function250d1
	ret
; 250a9

Function250a9: ; 250a9
	xor a
	ld [hMultiplicand], a
	ld a, [Buffer1]
	ld [$ffb5], a
	ld a, [Buffer2]
	ld [$ffb6], a
	ld a, [$d10c]
	ld [hMultiplier], a
	push hl
	call Multiply
	pop hl
	ret
; 250c1

Function250c1: ; 250c1
	push hl
	ld hl, hMultiplicand
	ld a, [hl]
	srl a
	ld [hli], a
	ld a, [hl]
	rra
	ld [hli], a
	ld a, [hl]
	rra
	ld [hl], a
	pop hl
	ret
; 250d1

Function250d1: ; 250d1
	push hl
	ld hl, $ffc3
	ld a, [hMultiplicand]
	ld [hli], a
	ld a, [$ffb5]
	ld [hli], a
	ld a, [$ffb6]
	ld [hl], a
	pop hl
	inc hl
	ld de, $ffc3
	ld bc, $2306
	call PrintNum
	call WaitBGMap
	ret
; 250ed


INCBIN "baserom.gbc",$250ed,$25105 - $250ed

Function25105: ; 25105
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	call Function2513b
.asm_25117
	call UpdateTime
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_25132
	ld a, [$FF00+$a9]
	and $2
	jr nz, .asm_25132
	call Function2518e
	call DelayFrame
	jr .asm_25117
.asm_25132
	pop af
	ld [Options], a ; $cfcc
	pop af
	ld [VramState], a ; $d0ed
	ret

; known jump sources: 25114 (9:5114)
Function2513b: ; 2513b (9:513b)
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call DisableLCD
	callba Function8833e
	ld hl, $65c3
	ld de, $91c0
	ld bc, $10
	ld a, $9
	call FarCopyBytes
	ld hl, $5523
	ld de, $9290
	ld bc, $560
	ld a, $9
	call FarCopyBytes
	call Function25299
	ld hl, $c540
	ld d, $6
	call Function253b0
	call EnableLCD
	call WaitBGMap
	ld b, $15
	call GetSGBLayout
	call Function32f9
	call WaitBGMap
	ld hl, $cf63
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ret

; known jump sources: 2512a (9:512a)
Function2518e: ; 2518e (9:518e)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $519d
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_2519d: ; 2519d (9:519d)
	dw Function251b6
	dw Function251d7
	dw Function251f4
	dw Function25221
	dw Function2524c
	dw Function25279
	dw Function251b0


; known jump sources: 251d3 (9:51d3), 2521d (9:521d), 25275 (9:5275)
Function251ab: ; 251ab (9:51ab)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function251b0: ; 251b0 (9:51b0)
	ld hl, $cf63
	set 7, [hl]
	ret

; no known jump sources
Function251b6: ; 251b6 (9:51b6)
	call ClearSprites
	ld hl, $c540
	ld d, $6
	call Function253b0
	call WaitBGMap
	ld de, $5523
	ld hl, $9290
	ld bc, $956
	call Request2bpp
	call Function2530a
	call Function251ab
	ret

; no known jump sources
Function251d7: ; 251d7 (9:51d7)
	call Function25415
	ld hl, $ffa9
	ld a, [hl]
	and $11
	jr nz, .asm_251e3
	ret
.asm_251e3
	ld a, $2
	ld [$cf63], a
	ret
; 251e9 (9:51e9)

INCBIN "baserom.gbc",$251e9,$251f4 - $251e9

; no known jump sources
Function251f4: ; 251f4 (9:51f4)
	call ClearSprites
	ld hl, $c540
	ld d, $6
	call Function253b0
	call WaitBGMap
	ld de, $5583
	ld hl, $9290
	ld bc, $956
	call Request2bpp
	ld de, $6043
	ld hl, $8000
	ld bc, $92c
	call Request2bpp
	call Function2536c
	call Function251ab
	ret

; no known jump sources
Function25221: ; 25221 (9:5221)
	ld hl, $54c9
	call Function25438
	ld hl, $ffa9
	ld a, [hl]
	and $1
	jr nz, .asm_25246
	ld a, [hl]
	and $20
	jr nz, .asm_25235
	ret
.asm_25235
	ld a, $0
	ld [$cf63], a
	ret
; 2523b (9:523b)

INCBIN "baserom.gbc",$2523b,$25246 - $2523b
.asm_25246
	ld a, $6
	ld [$cf63], a
	ret

; no known jump sources
Function2524c: ; 2524c (9:524c)
	call ClearSprites
	ld hl, $c540
	ld d, $6
	call Function253b0
	call WaitBGMap
	ld de, $5ae3
	ld hl, $9290
	ld bc, $956
	call Request2bpp
	ld de, $6303
	ld hl, $8000
	ld bc, $92c
	call Request2bpp
	call Function2536c
	call Function251ab
	ret

; no known jump sources
Function25279: ; 25279 (9:5279)
	ld hl, $54c9
	call Function25438
	ld hl, $ffa9
	ld a, [hl]
	and $20
	jr nz, .asm_2528d
	ld a, [hl]
	and $10
	jr nz, .asm_25293
	ret
.asm_2528d
	ld a, $2
	ld [$cf63], a
	ret
.asm_25293
	ld a, $0
	ld [$cf63], a
	ret

; known jump sources: 25169 (9:5169)
Function25299: ; 25299 (9:5299)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld d, $5
	call Function253b0
	ld hl, $c4ca
	ld de, $52ec
	call PlaceString
	ld hl, $c4f2
	ld de, $52f9
	call Function253a8
	ld hl, $c4cf
	ld de, PlayerName ; $d47d
	call PlaceString
	ld hl, $c4f5
	ld de, PlayerID ; $d47b
	ld bc, $8205
	call PrintNum
	ld hl, $c51f
	ld de, Money ; $d84e
	ld bc, $2306
	call PrintNum
	ld hl, $c4dd
	ld de, $52fc
	call Function253a8
	ld hl, $c4c2
	ld bc, $507
	xor a
	ld [$FF00+$ad], a
	ld a, $13
	call Predef
	ret
; 252ec (9:52ec)

INCBIN "baserom.gbc",$252ec,$2530a - $252ec

; known jump sources: 251d0 (9:51d0)
Function2530a: ; 2530a (9:530a)
	ld hl, $c56a
	ld de, $534c
	call PlaceString
	ld hl, $c5d6
	ld de, $535c
	call PlaceString
	ld hl, PokedexCaught ; $de99
	ld b, $20
	call CountSetBits
	ld de, $d265
	ld hl, $c577
	ld bc, $103
	call PrintNum
	call Function25415
	ld hl, $c542
	ld de, $5366
	call Function253a8
	ld a, [StatusFlags] ; $d84c
	bit 0, a
	ret nz
	ld hl, $c555
	ld bc, $211
	call ClearBox
	ret
; 2534c (9:534c)

INCBIN "baserom.gbc",$2534c,$2536c - $2534c

; known jump sources: 2521a (9:521a), 25272 (9:5272)
Function2536c: ; 2536c (9:536c)
	ld hl, $c542
	ld de, $53a2
	call Function253a8
	ld hl, $c56a
	ld a, $29
	ld c, $4
.asm_2537c
	call Function253f4
	inc hl
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_2537c
	ld hl, $c5a6
	ld a, $51
	ld c, $4
.asm_2538d
	call Function253f4
	inc hl
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_2538d
	xor a
	ld [$cf64], a
	ld hl, $54c9
	call Function25448
	ret
; 253a2 (9:53a2)

INCBIN "baserom.gbc",$253a2,$253a8 - $253a2

; known jump sources: 252b0 (9:52b0), 252da (9:52da), 25339 (9:5339), 25372 (9:5372), 253ae (9:53ae)
Function253a8: ; 253a8 (9:53a8)
	ld a, [de]
	cp $ff
	ret z
	ld [hli], a
	inc de
	jr Function253a8

; known jump sources: 25171 (9:5171), 251be (9:51be), 251fc (9:51fc), 25254 (9:5254), 2529e (9:529e)
Function253b0: ; 253b0 (9:53b0)
	ld e, $14
.asm_253b2
	ld a, $23
	ld [hli], a
	dec e
	jr nz, .asm_253b2
	ld a, $23
	ld [hli], a
	ld e, $11
	ld a, $7f
.asm_253bf
	ld [hli], a
	dec e
	jr nz, .asm_253bf
	ld a, $1c
	ld [hli], a
	ld a, $23
	ld [hli], a
.asm_253c9
	ld a, $23
	ld [hli], a
	ld e, $12
	ld a, $7f
.asm_253d0
	ld [hli], a
	dec e
	jr nz, .asm_253d0
	ld a, $23
	ld [hli], a
	dec d
	jr nz, .asm_253c9
	ld a, $23
	ld [hli], a
	ld a, $24
	ld [hli], a
	ld e, $11
	ld a, $7f
.asm_253e4
	ld [hli], a
	dec e
	jr nz, .asm_253e4
	ld a, $23
	ld [hli], a
	ld e, $14
.asm_253ed
	ld a, $23
	ld [hli], a
	dec e
	jr nz, .asm_253ed
	ret

; known jump sources: 2537c (9:537c), 2538d (9:538d)
Function253f4: ; 253f4 (9:53f4)
	push de
	push hl
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld de, $11
	add hl, de
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld de, $11
	add hl, de
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	ld [hli], a
	inc a
	pop hl
	pop de
	ret

; known jump sources: 251d7 (9:51d7), 25330 (9:5330)
Function25415: ; 25415 (9:5415)
	ld hl, $c59b
	ld de, GameTimeHours ; $d4c4
	ld bc, $204
	call PrintNum
	inc hl
	ld de, GameTimeMinutes ; $d4c6
	ld bc, $8102
	call PrintNum
	ld a, [$FF00+$9b]
	and $1f
	ret nz
	ld hl, $c59f
	ld a, [hl]
	xor $51
	ld [hl], a
	ret

; known jump sources: 25224 (9:5224), 2527c (9:527c)
Function25438: ; 25438 (9:5438)
	ld a, [$FF00+$9b]
	and $7
	ret nz
	ld a, [$cf64]
	inc a
	and $7
	ld [$cf64], a
	jr Function25448

; known jump sources: 2539e (9:539e), 25446 (9:5446)
Function25448: ; 25448 (9:5448)
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [de]
	ld c, a
	ld de, Sprites ; $c400
	ld b, $8
.asm_25453
	srl c
	push bc
	jr nc, .asm_25472
	push hl
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld [$cf66], a
	ld a, [$cf64]
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	ld a, [hl]
	ld [$cf65], a
	call Function2547b
	pop hl
.asm_25472
	ld bc, $b
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_25453
	ret

; known jump sources: 2546e (9:546e)
Function2547b: ; 2547b (9:547b)
	ld a, [$cf65]
	and $80
	jr nz, .asm_25487
	ld hl, $54a7
	jr .asm_2548a
.asm_25487
	ld hl, $54b8
.asm_2548a
	ld a, [hli]
	cp $ff
	ret z
	add b
	ld [de], a
	inc de
	ld a, [hli]
	add c
	ld [de], a
	inc de
	ld a, [$cf65]
	and $7f
	add [hl]
	ld [de], a
	inc hl
	inc de
	ld a, [$cf66]
	add [hl]
	ld [de], a
	inc hl
	inc de
	jr .asm_2548a
; 254a7 (9:54a7)

INCBIN "baserom.gbc",$254a7,$265d3 - $254a7


ProfOaksPC: ; 0x265d3
	ld hl, OakPCText1
	call Function1d4f
	call Function1dcf
	jr c, .shutdown
	call ProfOaksPCBoot ; player chose "yes"?
.shutdown
	ld hl, OakPCText4
	call PrintText
	call Functiona36
	call Function1c07
	ret
; 0x265ee

ProfOaksPCBoot ; 0x265ee
	ld hl, OakPCText2
	call PrintText
	call Rate
	call PlaySFX ; sfx loaded by previous Rate function call
	call Functiona36
	call WaitSFX
	ret
; 0x26601

Function26601: ; 0x26601
	call Rate
	push de
	ld de, MUSIC_NONE
	call PlayMusic
	pop de
	call PlaySFX
	call Functiona36
	call WaitSFX
	ret
; 0x26616

Rate: ; 0x26616
; calculate Seen/Owned
	ld hl, PokedexSeen
	ld b, EndPokedexSeen - PokedexSeen
	call CountSetBits
	ld [DefaultFlypoint], a
	ld hl, PokedexCaught
	ld b, EndPokedexCaught - PokedexCaught
	call CountSetBits
	ld [$d003], a

; print appropriate rating
	call ClearOakRatingBuffers
	ld hl, OakPCText3
	call PrintText
	call Functiona36
	ld a, [$d003]
	ld hl, OakRatings
	call FindOakRating
	push de
	call PrintText
	pop de
	ret
; 0x26647

ClearOakRatingBuffers: ; 0x26647
	ld hl, StringBuffer3
	ld de, DefaultFlypoint
	call ClearOakRatingBuffer
	ld hl, StringBuffer4
	ld de, $d003
	call ClearOakRatingBuffer
	ret
; 0x2665a

ClearOakRatingBuffer: ; 0x2665a
	push hl
	ld a, "@"
	ld bc, $000d
	call ByteFill
	pop hl
	ld bc, $4103
	call PrintNum
	ret
; 0x2666b

FindOakRating: ; 0x2666b
; return sound effect in de
; return text pointer in hl
	nop
	ld c, a
.loop
	ld a, [hli]
	cp c
	jr nc, .match
	inc hl
	inc hl
	inc hl
	inc hl
	jr .loop

.match
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 0x2667f

OakRatings: ; 0x2667f
; db count (if number caught ≤ this number, then this entry is used)
; dw sound effect
; dw text pointer

	db 9
	dw SFX_DEX_FANFARE_LESS_THAN_20
	dw OakRating01

	db 19
	dw SFX_DEX_FANFARE_LESS_THAN_20
	dw OakRating02

	db 34
	dw SFX_DEX_FANFARE_20_49
	dw OakRating03

	db 49
	dw SFX_DEX_FANFARE_20_49
	dw OakRating04

	db 64
	dw SFX_DEX_FANFARE_50_79
	dw OakRating05

	db 79
	dw SFX_DEX_FANFARE_50_79
	dw OakRating06

	db 94
	dw SFX_DEX_FANFARE_80_109
	dw OakRating07

	db 109
	dw SFX_DEX_FANFARE_80_109
	dw OakRating08

	db 124
	dw SFX_CAUGHT_MON
	dw OakRating09

	db 139
	dw SFX_CAUGHT_MON
	dw OakRating10

	db 154
	dw SFX_DEX_FANFARE_140_169
	dw OakRating11

	db 169
	dw SFX_DEX_FANFARE_140_169
	dw OakRating12

	db 184
	dw SFX_DEX_FANFARE_170_199
	dw OakRating13

	db 199
	dw SFX_DEX_FANFARE_170_199
	dw OakRating14

	db 214
	dw SFX_DEX_FANFARE_200_229
	dw OakRating15

	db 229
	dw SFX_DEX_FANFARE_200_229
	dw OakRating16

	db 239
	dw SFX_DEX_FANFARE_230_PLUS
	dw OakRating17

	db 248
	dw SFX_DEX_FANFARE_230_PLUS
	dw OakRating18

	db 255
	dw SFX_DEX_FANFARE_230_PLUS
	dw OakRating19

OakPCText1: ; 0x266de
	TX_FAR _OakPCText1
	db "@"

OakPCText2: ; 0x266e3
	TX_FAR _OakPCText2
	db "@"

OakPCText3: ; 0x266e8
	TX_FAR _OakPCText3
	db "@"

OakRating01:
	TX_FAR _OakRating01
	db "@"

OakRating02:
	TX_FAR _OakRating02
	db "@"

OakRating03:
	TX_FAR _OakRating03
	db "@"

OakRating04:
	TX_FAR _OakRating04
	db "@"

OakRating05:
	TX_FAR _OakRating05
	db "@"

OakRating06:
	TX_FAR _OakRating06
	db "@"

OakRating07:
	TX_FAR _OakRating07
	db "@"

OakRating08:
	TX_FAR _OakRating08
	db "@"

OakRating09:
	TX_FAR _OakRating09
	db "@"

OakRating10:
	TX_FAR _OakRating10
	db "@"

OakRating11:
	TX_FAR _OakRating11
	db "@"

OakRating12:
	TX_FAR _OakRating12
	db "@"

OakRating13:
	TX_FAR _OakRating13
	db "@"

OakRating14:
	TX_FAR _OakRating14
	db "@"

OakRating15:
	TX_FAR _OakRating15
	db "@"

OakRating16:
	TX_FAR _OakRating16
	db "@"

OakRating17:
	TX_FAR _OakRating17
	db "@"

OakRating18:
	TX_FAR _OakRating18
	db "@"

OakRating19:
	TX_FAR _OakRating19
	db "@"

OakPCText4: ; 0x2674c
	TX_FAR _OakPCText4
	db "@"


; no known jump sources
Function26751: ; 26751 (9:6751)
	ld a, $2
	ld [$dc0f], a
	ld a, $10
	ld [$dc12], a
	ret

_KrisDecorationMenu: ; 0x2675c
	ld a, [$cf76]
	push af
	ld hl, $679a
	call LoadMenuDataHeader
	xor a
	ld [$d1ee], a
	ld a, $1
	ld [$d1ef], a
.asm_2676f
	ld a, [$d1ef]
	ld [$cf88], a
	call Function26806
	call Function1e5d
	ld a, [$cfa9]
	ld [$d1ef], a
	jr c, .asm_2678e
	ld a, [MenuSelection]
	ld hl, $67aa
	call Function1fa7
	jr nc, .asm_2676f

.asm_2678e
	call Function1c07
	pop af
	ld [$cf76], a
	ld a, [$d1ee]
	ld c, a
	ret
; 0x2679a

INCBIN "baserom.gbc",$2679a,$26806 - $2679a

Function26806: ; 26806
	xor a
	ld [$cf76], a
	call Function26822
	call Function2683a
	ld a, $7
	call Function26830
	ld hl, StringBuffer2 ; $d086
	ld de, DefaultFlypoint ; $d002
	ld bc, $d
	call CopyBytes
	ret

; known jump sources: 2680a (9:680a)
Function26822: ; 26822 (9:6822)
	ld hl, StringBuffer2 ; $d086
	xor a
	ld [hli], a
	ld bc, $c
	ld a, $ff
	call ByteFill
	ret

; known jump sources: 26812 (9:6812), 2684d (9:684d)
Function26830: ; 26830 (9:6830)
	ld hl, StringBuffer2 ; $d086
	inc [hl]
	ld e, [hl]
	ld d, $0
	add hl, de
	ld [hl], a
	ret

; known jump sources: 2680d (9:680d)
Function2683a: ; 2683a (9:683a)
	ld hl, $6855
.asm_2683d
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	or e
	jr z, .asm_26854
	push hl
	call _de_
	pop hl
	jr nc, .asm_26851
	ld a, [hl]
	push hl
	call Function26830
	pop hl
.asm_26851
	inc hl
	jr .asm_2683d
.asm_26854
	ret
; 26855 (9:6855)

INCBIN "baserom.gbc",$26855,$269dd - $26855



Function269dd: ; 269dd
	ld hl, $6a4f
	ld bc, $0006
	call AddNTimes
	ret
; 269e7

Function269e7: ; 269e7
	push hl
	call Function269dd
	call Function26c72
	pop hl
	call CopyName2
	ret
; 269f3

INCBIN "baserom.gbc",$269f3,$26a30 - $269f3


Function26a30: ; 26a30
	call Function269dd
	ld de, $0003
	add hl, de
	ld a, [hli]
	ld d, [hl]
	ld e, a
	ret
; 26a3b

Function26a3b: ; 26a3b
	push bc
	call Function26a30
	pop bc
	call EventFlagAction
	ret
; 26a44

Function26a44: ; 26a44
	ld a, c
	call Function269dd
	ld de, $0005
	add hl, de
	ld a, [hl]
	ld c, a
	ret
; 26a4f

INCBIN "baserom.gbc",$26a4f,$26b8d - $26a4f


DecorationNames: ; 26b8d
	db "CANCEL@"
	db "PUT IT AWAY@"
	db "MAGNAPLANT@"
	db "TROPICPLANT@"
	db "JUMBOPLANT@"
	db "TOWN MAP@"
	db "NES@"
	db "SUPER NES@"
	db "NINTENDO 64@"
	db "VIRTUAL BOY@"
	db "GOLD TROPHY@"
	db "SILVER TROPHY@"
	db "SURF PIKACHU DOLL@"
	db " BED@"
	db " CARPET@"
	db " POSTER@"
	db " DOLL@"
	db "BIG @"
	db "FEATHERY@"
	db "PIKACHU@"
	db "PINK@"
	db "POLKADOT@"
	db "RED@"
	db "BLUE@"
	db "YELLOW@"
	db "GREEN@"
; 26c72

Function26c72: ; 26c72
	ld a, [hli]
	ld e, [hl]
	ld bc, StringBuffer2
	push bc
	ld hl, Table26c7e
	rst JumpTable
	pop de
	ret
; 26c7e

Table26c7e: ; 26c7e
	dw Function26c8c
	dw Function26c8d
	dw Function26c90
	dw Function26c97
	dw Function26c9e
	dw Function26ca6
	dw Function26cae
; 26c8c


Function26c8c: ; 26c8c
	ret
; 26c8d

Function26c8d: ; 26c8d
	ld a, e
	jr Function26cca

Function26c90: ; 26c90
	call Function26c8d
	ld a, $d
	jr Function26cca

Function26c97: ; 26c97
	call Function26c8d
	ld a, $e
	jr Function26cca

Function26c9e: ; 26c9e
	ld a, e
	call Function26cc0
	ld a, $f
	jr Function26cca

Function26ca6: ; 26ca6
	ld a, e
	call Function26cc0
	ld a, $10
	jr Function26cca

Function26cae: ; 26cae
	push de
	ld a, $11
	call Function26cca
	pop de
	ld a, e
	jr Function26cc0

Function26cb8: ; 26cb8
	push de
	call Function26cca
	pop de
	ld a, e
	jr Function26cca

Function26cc0: ; 26cc0
	push bc
	ld [$d265], a
	call GetPokemonName
	pop bc
	jr Function26cda

Function26cca: ; 26cca
	call Function26ccf
	jr Function26cda

Function26ccf: ; 26ccf
	push bc
	ld hl, DecorationNames
	call GetNthString
	ld d, h
	ld e, l
	pop bc
	ret

Function26cda: ; 26cda
	ld h, b
	ld l, c
	call CopyName2
	dec hl
	ld b, h
	ld c, l
	ret
; 26ce3

INCBIN "baserom.gbc",$26ce3,$26eea - $26ce3


Function26eea: ; 26eea
	ld a, c
	ld h, d
	ld l, e
	call Function269e7
	ret
; 26ef1

Function26ef1: ; 26ef1
	ld a, c
	jp Function26a3b
; 26ef5


; no known jump sources
Function26ef5: ; 26ef5 (9:6ef5)
	ld a, c
	call Function26f0c
	ld hl, StringBuffer1 ; $d073
	push hl
	call Function269e7
	pop de
	ret


Function26f02: ; 26f02
	ld a, c
	call Function26f0c
	ld b, $1
	call Function26a3b
	ret
; 26f0c

Function26f0c: ; 26f0c
	push hl
	push de
	ld e, a
	ld d, $0
	ld hl, $6f2b
	add hl, de
	ld a, [hl]
	pop de
	pop hl
	ret
; 26f19

INCBIN "baserom.gbc",$26f19,$26f59 - $26f19


Function26f59: ; 26f59
	ld a, b
	ld hl, Table26f5f
	rst JumpTable
	ret
; 26f5f

Table26f5f: ; 26f5f
	dw Function26f69
	dw Function26fb9
	dw Function26fbe
	dw Function26fdd
	dw Function26fc3
; 26f69

Function26f69: ; 26f69
	ld a, [Poster]
	ld hl, $6f84
	ld de, $0003
	call IsInArray
	jr c, .asm_26f7d
	ld de, $6fb8
	ld b, $9
	ret

.asm_26f7d
	ld b, $9
	inc hl
	ld a, [hli]
	ld d, [hl]
	ld e, a
	ret
; 26f84

INCBIN "baserom.gbc",$26f84,$26fb9 - $26f84


Function26fb9: ; 26fb9
	ld a, [LeftOrnament]
	jr Function26fc8

Function26fbe: ; 26fbe
	ld a, [RightOrnament]
	jr Function26fc8

Function26fc3: ; 26fc3
	ld a, [Console]
	jr Function26fc8

Function26fc8: ; 26fc8
	ld c, a
	ld de, StringBuffer3
	call Function26eea
	ld b, $9
	ld de, $6fd5
	ret
; 26fd5

INCBIN "baserom.gbc",$26fd5,$26fdd - $26fd5


Function26fdd: ; 26fdd
	ld b, $9
	ld de, $6fe3
	ret
; 26fe3

INCBIN "baserom.gbc",$26fe3,$26feb - $26fe3

Function26feb: ; 26feb
	ld de, $0004
	ld a, [Bed]
	call Function27037
	ld de, $0704
	ld a, [Plant]
	call Function27037
	ld de, $0600
	ld a, [Poster]
	call Function27037
	call Function27027
	ld de, $0000
	call Function27092
	ld a, [Carpet]
	and a
	ret z
	call Function27085
	ld [hl], a
	push af
	ld de, $0002
	call Function27092
	pop af
	inc a
	ld [hli], a
	inc a
	ld [hli], a
	dec a
	ld [hl], a
	ret
; 27027

Function27027: ; 27027
	ld b, $1
	ld a, [Poster]
	and a
	jr nz, .asm_27031
	ld b, $0

.asm_27031
	ld de, $02cc
	jp EventFlagAction
; 27037

Function27037: ; 27037
	push af
	call Function27092
	pop af
	and a
	ret z
	call Function27085
	ld [hl], a
	ret
; 27043

Function27043: ; 27043
	ld de, $0741
	ld hl, VariableSprites
	ld a, [Console]
	call Function27074
	ld de, $0742
	ld hl, $d82f
	ld a, [LeftOrnament]
	call Function27074
	ld de, $0743
	ld hl, $d830
	ld a, [RightOrnament]
	call Function27074
	ld de, $0744
	ld hl, $d831
	ld a, [BigDoll]
	call Function27074
	ret
; 27074

Function27074: ; 27074
	and a
	jr z, .asm_27080
	call Function27085
	ld [hl], a
	ld b, $0
	jp EventFlagAction

.asm_27080
	ld b, $1
	jp EventFlagAction
; 27085

Function27085: ; 27085
	ld c, a
	push de
	push hl
	callba Function26a44
	pop hl
	pop de
	ld a, c
	ret
; 27092

Function27092: ; 27092
	ld a, d
	add $4
	ld d, a
	ld a, e
	add $4
	ld e, a
	call Function2a66
	ret
; 2709e


Function2709e: ; 2709e
	ld a, [CurPartyMon]
	ld hl, PartyMon1CaughtLocation
	call GetPartyLocation
	ld a, [hl]
	and $7f
	ld d, a
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	cp d
	ld c, $1
	jr nz, .asm_270bd
	ld c, $13

.asm_270bd
	callab ChangeHappiness
	ret
; 270c4

INCLUDE "trainers/dvs.asm"

Function2715c: ; 2715c
	call WhiteBGMap
	call ClearTileMap
	ld a, [BattleType]
	cp $3
	jr z, .asm_27171
	callba Function3f43d
	jr .asm_27177

.asm_27171
	callba GetBattleBackpic

.asm_27177
	callba Function3f47c
	callba Function3ed9f
	call ClearSGB
	call Function1c17
	call Function1d6e
	call WaitBGMap
	jp Function32f9
; 27192

Function27192: ; 27192
	push hl
	push de
	push bc
	ld a, [hBattleTurn]
	and a
	ld hl, OTPartyMon1Item
	ld de, EnemyMonItem
	ld a, [CurOTMon]
	jr z, .asm_271ac
	ld hl, PartyMon1Item
	ld de, BattleMonItem
	ld a, [CurBattleMon]

.asm_271ac
	push hl
	push af
	ld a, [de]
	ld b, a
	callba GetItem
	ld hl, $71de
.asm_271b9
	ld a, [hli]
	cp b
	jr z, .asm_271c6
	inc a
	jr nz, .asm_271b9
	pop af
	pop hl
	pop bc
	pop de
	pop hl
	ret

.asm_271c6
	xor a
	ld [de], a
	pop af
	pop hl
	call GetPartyLocation
	ld a, [hBattleTurn]
	and a
	jr nz, .asm_271d8
	ld a, [IsInBattle]
	dec a
	jr z, .asm_271da

.asm_271d8
	ld [hl], $0

.asm_271da
	pop bc
	pop de
	pop hl
	ret
; 271de

INCBIN "baserom.gbc",$271de,$271f4 - $271de

MoveEffectsPointers: ; 271f4
INCLUDE "battle/moves/move_effects_pointers.asm"

MoveEffects: ; 2732e
INCLUDE "battle/moves/move_effects.asm"

Function27a28: ; 27a28
	call Function2500e
	ld b, a
	ret
; 27a2d


SECTION "bankA", ROMX, BANK[$A]

Function28000: ; 28000
	call WhiteBGMap
	ld c, $50
	call DelayFrames
	call Functionfdb
	call ClearSprites
	call Function1ad2
	xor a
	ld [hSCX], a
	ld [hSCY], a
	ld c, $50
	call DelayFrames
	call Functionfdb
	call Function1ad2
	call Functione51
	call Functione58
	callba Function16d69a
	call Function3200
	ld hl, $c543
	ld b, $2
	ld c, $c
	ld d, h
	ld e, l
	callba Function4d35b
	ld hl, $c56c
	ld de, $4419
	call PlaceString
	call Function28eff
	call Function3200
	ld hl, $cf5d
	xor a
	ld [hli], a
	ld [hl], $50
	ld a, [InLinkBattle]
	cp $1
	jp nz, Function28177

Function2805d: ; 2805d
	call Function28426
	call Function28499
	call Function28434
	xor a
	ld [$cf56], a
	call Function87d
	ld a, [$ffcb]
	cp $2
	jr nz, .asm_28091
	ld c, $3
	call DelayFrames
	xor a
	ld [hSerialSend], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
	call DelayFrame
	xor a
	ld [hSerialSend], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a

.asm_28091
	ld de, $0000
	call PlayMusic
	ld c, $3
	call DelayFrames
	xor a
	ld [rIF], a
	ld a, $8
	ld [rIE], a
	ld hl, $d1f3
	ld de, EnemyMonSpecies
	ld bc, $0011
	call Function75f
	ld a, $fe
	ld [de], a
	ld hl, OverworldMap
	ld de, $d26b
	ld bc, $01a8
	call Function75f
	ld a, $fe
	ld [de], a
	ld hl, EnemyMoveAnimation
	ld de, PlayerSDefLevel
	ld bc, $00c8
	call Function75f
	xor a
	ld [rIF], a
	ld a, $1d
	ld [rIE], a
	call Function287ab
	ld hl, $d26b
	call Function287ca
	push hl
	ld bc, $000b
	add hl, bc
	ld a, [hl]
	pop hl
	and a
	jp z, Function28b22
	cp $7
	jp nc, Function28b22
	ld de, OverworldMap
	ld bc, $01a2
	call Function2879e
	ld de, PlayerSDefLevel
	ld hl, $c813
	ld c, $2
.asm_280fe
	ld a, [de]
	inc de
	and a
	jr z, .asm_280fe
	cp $fd
	jr z, .asm_280fe
	cp $fe
	jr z, .asm_280fe
	cp $ff
	jr z, .asm_2811d
	push hl
	push bc
	ld b, $0
	dec a
	ld c, a
	add hl, bc
	ld a, $fe
	ld [hl], a
	pop bc
	pop hl
	jr .asm_280fe

.asm_2811d
	ld hl, $c90f
	dec c
	jr nz, .asm_280fe
	ld hl, OverworldMap
	ld de, $d26b
	ld bc, $000b
	call CopyBytes
	ld de, OTPartyCount
	ld a, [hli]
	ld [de], a
	inc de
.asm_28135
	ld a, [hli]
	cp $ff
	jr z, .asm_2814e
	ld [$d265], a
	push hl
	push de
	callab Functionfb908
	pop de
	pop hl
	ld a, [$d265]
	ld [de], a
	inc de
	jr .asm_28135

.asm_2814e
	ld [de], a
	ld hl, $c813
	call Function2868a
	ld a, $a8
	ld [$d102], a
	ld a, $d3
	ld [$d103], a
	ld de, $0000
	call PlayMusic
	ld a, [$ffcb]
	cp $2
	ld c, $42
	call z, DelayFrames
	ld de, $002b
	call PlayMusic
	jp Function287e3
; 28177

Function28177: ; 28177
	call Function28426
	call Function28595
	call Function28434
	call Function29dba
	ld a, [ScriptVar]
	and a
	jp z, Function283b2
	ld a, [$ffcb]
	cp $2
	jr nz, .asm_281ae
	ld c, $3
	call DelayFrames
	xor a
	ld [hSerialSend], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
	call DelayFrame
	xor a
	ld [hSerialSend], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a

.asm_281ae
	ld de, $0000
	call PlayMusic
	ld c, $3
	call DelayFrames
	xor a
	ld [rIF], a
	ld a, $8
	ld [rIE], a
	ld hl, $d1f3
	ld de, EnemyMonSpecies
	ld bc, $0011
	call Function75f
	ld a, $fe
	ld [de], a
	ld hl, OverworldMap
	ld de, $d26b
	ld bc, $01c2
	call Function75f
	ld a, $fe
	ld [de], a
	ld hl, EnemyMoveAnimation
	ld de, PlayerSDefLevel
	ld bc, $00c8
	call Function75f
	ld a, [InLinkBattle]
	cp $2
	jr nz, .asm_281fd
	ld hl, $c9f4
	ld de, $cb84
	ld bc, $0186
	call Function283f2

.asm_281fd
	xor a
	ld [rIF], a
	ld a, $1d
	ld [rIE], a
	ld de, $0000
	call PlayMusic
	call Function287ab
	ld hl, $d26b
	call Function287ca
	ld de, OverworldMap
	ld bc, $01b9
	call Function2879e
	ld de, PlayerSDefLevel
	ld hl, $c813
	ld c, $2
.asm_28224
	ld a, [de]
	inc de
	and a
	jr z, .asm_28224
	cp $fd
	jr z, .asm_28224
	cp $fe
	jr z, .asm_28224
	cp $ff
	jr z, .asm_28243
	push hl
	push bc
	ld b, $0
	dec a
	ld c, a
	add hl, bc
	ld a, $fe
	ld [hl], a
	pop bc
	pop hl
	jr .asm_28224

.asm_28243
	ld hl, $c90f
	dec c
	jr nz, .asm_28224
	ld a, [InLinkBattle]
	cp $2
	jp nz, .asm_282fe
	ld hl, $cb84
.asm_28254
	ld a, [hli]
	cp $20
	jr nz, .asm_28254
.asm_28259
	ld a, [hli]
	cp $fe
	jr z, .asm_28259
	cp $20
	jr z, .asm_28259
	dec hl
	ld de, $cb84
	ld bc, $0190
	call CopyBytes
	ld hl, $cb84
	ld bc, $00c6
.asm_28272
	ld a, [hl]
	cp $21
	jr nz, .asm_28279
	ld [hl], $fe

.asm_28279
	inc hl
	dec bc
	ld a, b
	or c
	jr nz, .asm_28272
	ld de, $cc9e
.asm_28282
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_28294
	ld hl, $cc4a
	dec a
	ld b, $0
	ld c, a
	add hl, bc
	ld [hl], $fe
	jr .asm_28282

.asm_28294
	ld hl, $cb84
	ld de, $c9f4
	ld b, $6
.asm_2829c
	push bc
	ld bc, $0021
	call CopyBytes
	ld a, $e
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	pop bc
	dec b
	jr nz, .asm_2829c
	ld de, $c9f4
	ld b, $6
.asm_282b4
	push bc
	ld a, $21
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	ld bc, $000e
	call CopyBytes
	pop bc
	dec b
	jr nz, .asm_282b4
	ld b, $6
	ld de, $c9f4
.asm_282cc
	push bc
	push de
	callba Function1de5c8
	ld a, c
	or a
	jr z, .asm_282ee
	sub $3
	jr nc, .asm_282e4
	callba Function1df203
	jr .asm_282ee

.asm_282e4
	cp $2
	jr nc, .asm_282ee
	callba Function1df220

.asm_282ee
	pop de
	ld hl, $002f
	add hl, de
	ld d, h
	ld e, l
	pop bc
	dec b
	jr nz, .asm_282cc
	ld de, $cb0e
	xor a
	ld [de], a

.asm_282fe
	ld hl, OverworldMap
	ld de, $d26b
	ld bc, $000b
	call CopyBytes
	ld de, OTPartyCount
	ld bc, $0008
	call CopyBytes
	ld de, $d276
	ld bc, $0002
	call CopyBytes
	ld de, OTPartyMon1Species
	ld bc, $01a4
	call CopyBytes
	ld a, $a8
	ld [$d102], a
	ld a, $d3
	ld [$d103], a
	ld de, $0000
	call PlayMusic
	ld a, [$ffcb]
	cp $2
	ld c, $42
	call z, DelayFrames
	ld a, [InLinkBattle]
	cp $3
	jr nz, .asm_283a9
	ld a, $c
	ld [OtherTrainerClass], a
	call Functionfdb
	callba Function4d354
	ld hl, Options
	ld a, [hl]
	push af
	and $20
	or $3
	ld [hl], a
	ld hl, $d26b
	ld de, $c656
	ld bc, $000b
	call CopyBytes
	call Function222a
	ld a, [$c2d7]
	push af
	ld a, $1
	ld [$c2d7], a
	ld a, [rIE]
	push af
	ld a, [rIF]
	push af
	xor a
	ld [rIF], a
	ld a, [rIE]
	set 1, a
	ld [rIE], a
	pop af
	ld [rIF], a
	ld a, $16
	call Predef
	ld a, [rIF]
	ld h, a
	xor a
	ld [rIF], a
	pop af
	ld [rIE], a
	ld a, h
	ld [rIF], a
	pop af
	ld [$c2d7], a
	pop af
	ld [Options], a
	callba Function1500c
	jp Function28b22

.asm_283a9
	ld de, $002b
	call PlayMusic
	jp Function287e3
; 283b2

Function283b2: ; 283b2
	ld de, $43ed
	ld b, $a
.asm_283b7
	call DelayFrame
	call Function908
	dec b
	jr nz, .asm_283b7
	xor a
	ld [hld], a
	ld [hl], a
	ld [$ff9e], a
	push de
	ld hl, $c590
	ld b, $4
	ld c, $12
	push de
	ld d, h
	ld e, l
	callba Function4d35b
	pop de
	pop hl
	ld bc, $c5b9
	call Function13e5
	call Function4b6
	call Functionfdb
	ld b, $8
	call GetSGBLayout
	call Function3200
	ret
; 283ed

INCBIN "baserom.gbc",$283ed,$283f2 - $283ed

Function283f2: ; 283f2
	ld a, $1
	ld [$ffcc], a
.asm_283f6
	ld a, [hl]
	ld [hSerialSend], a
	call Function78a
	push bc
	ld b, a
	inc hl
	ld a, $30
.asm_28401
	dec a
	jr nz, .asm_28401
	ld a, [$ffcc]
	and a
	ld a, b
	pop bc
	jr z, .asm_28411
	dec hl
	xor a
	ld [$ffcc], a
	jr .asm_283f6

.asm_28411
	ld [de], a
	inc de
	dec bc
	ld a, b
	or c
	jr nz, .asm_283f6
	ret
; 28419

INCBIN "baserom.gbc",$28419,$28426 - $28419

Function28426: ; 28426
	ld hl, OverworldMap
	ld bc, $0514
.asm_2842c
	xor a
	ld [hli], a
	dec bc
	ld a, b
	or c
	jr nz, .asm_2842c
	ret
; 28434

Function28434: ; 28434
	ld hl, $d1f3
	ld a, $fd
	ld b, $7
.asm_2843b
	ld [hli], a
	dec b
	jr nz, .asm_2843b
	ld b, $a
.asm_28441
	call Random
	cp $fd
	jr nc, .asm_28441
	ld [hli], a
	dec b
	jr nz, .asm_28441
	ld hl, EnemyMoveAnimation
	ld a, $fd
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld b, $c8
	xor a
.asm_28457
	ld [hli], a
	dec b
	jr nz, .asm_28457
	ld hl, $c818
	ld de, PlayerMoveType
	ld bc, $0000
.asm_28464
	inc c
	ld a, c
	cp $fd
	jr z, .asm_2848c
	ld a, b
	dec a
	jr nz, .asm_2847f
	push bc
	ld a, [InLinkBattle]
	cp $1
	ld b, $d
	jr z, .asm_2847a
	ld b, $27

.asm_2847a
	ld a, c
	cp b
	pop bc
	jr z, .asm_28495

.asm_2847f
	inc hl
	ld a, [hl]
	cp $fe
	jr nz, .asm_28464
	ld a, c
	ld [de], a
	inc de
	ld [hl], $ff
	jr .asm_28464

.asm_2848c
	ld a, $ff
	ld [de], a
	inc de
	ld bc, Start
	jr .asm_28464

.asm_28495
	ld a, $ff
	ld [de], a
	ret
; 28499

Function28499: ; 28499
	ld de, OverworldMap
	ld a, $fd
	ld b, $6
.asm_284a0
	ld [de], a
	inc de
	dec b
	jr nz, .asm_284a0
	ld hl, PlayerName
	ld bc, $000b
	call CopyBytes
	push de
	ld hl, PartyCount
	ld a, [hli]
	ld [de], a
	inc de
.asm_284b5
	ld a, [hli]
	cp $ff
	jr z, .asm_284ce
	ld [$d265], a
	push hl
	push de
	callab Functionfb8f1
	pop de
	pop hl
	ld a, [$d265]
	ld [de], a
	inc de
	jr .asm_284b5

.asm_284ce
	ld [de], a
	pop de
	ld hl, $0008
	add hl, de
	ld d, h
	ld e, l
	ld hl, PartyMon1Species
	ld c, $6
.asm_284db
	push bc
	call Function284f6
	ld bc, $0030
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_284db
	ld hl, PartyMonOT
	call .asm_284f0
	ld hl, PartyMonNicknames
.asm_284f0
	ld bc, $0042
	jp CopyBytes
; 284f6

Function284f6: ; 284f6
	ld b, h
	ld c, l
	push de
	push bc
	ld a, [hl]
	ld [$d265], a
	callab Functionfb8f1
	pop bc
	pop de
	ld a, [$d265]
	ld [de], a
	inc de
	ld hl, $0022
	add hl, bc
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	ld [de], a
	inc de
	ld a, [bc]
	cp $51
	jr z, .asm_28528
	cp $52
	jr nz, .asm_28530

.asm_28528
	ld a, $17
	ld [de], a
	inc de
	ld [de], a
	inc de
	jr .asm_28544

.asm_28530
	push bc
	dec a
	ld hl, $542b
	ld bc, $0020
	call AddNTimes
	ld bc, $0002
	ld a, $14
	call FarCopyBytes
	pop bc

.asm_28544
	push bc
	ld hl, $0001
	add hl, bc
	ld bc, $001a
	call CopyBytes
	pop bc
	ld hl, $001f
	add hl, bc
	ld a, [hl]
	ld [de], a
	ld [CurPartyLevel], a
	inc de
	push bc
	ld hl, $0024
	add hl, bc
	ld bc, $0008
	call CopyBytes
	pop bc
	push de
	push bc
	ld a, [bc]
	dec a
	push bc
	ld b, $0
	ld c, a
	ld hl, $7656
	add hl, bc
	ld a, $3e
	call GetFarByte
	ld [BaseSpecialAttack], a
	pop bc
	ld hl, $000a
	add hl, bc
	ld c, $5
	ld b, $1
	ld a, $d
	call Predef
	pop bc
	pop de
	ld a, [$ffb5]
	ld [de], a
	inc de
	ld a, [$ffb6]
	ld [de], a
	inc de
	ld h, b
	ld l, c
	ret
; 28595

Function28595: ; 28595
	ld de, OverworldMap
	ld a, $fd
	ld b, $6
.asm_2859c
	ld [de], a
	inc de
	dec b
	jr nz, .asm_2859c
	ld hl, PlayerName
	ld bc, $000b
	call CopyBytes
	ld hl, PartyCount
	ld bc, $0008
	call CopyBytes
	ld hl, PlayerID
	ld bc, $0002
	call CopyBytes
	ld hl, PartyMon1Species
	ld bc, $0120
	call CopyBytes
	ld hl, PartyMon1OT
	ld bc, $0042
	call CopyBytes
	ld hl, PartyMon1Nickname
	ld bc, $0042
	call CopyBytes
	ld a, [InLinkBattle]
	cp $2
	ret nz
	ld de, $c9f4
	ld a, $20
	call Function28682
	ld a, $0
	call GetSRAMBank
	ld hl, $a600
	ld b, $6
.asm_285ef
	push bc
	ld bc, $0021
	call CopyBytes
	ld bc, $000e
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_285ef
	ld hl, $a600
	ld b, $6
.asm_28603
	push bc
	ld bc, $0021
	add hl, bc
	ld bc, $000e
	call CopyBytes
	pop bc
	dec b
	jr nz, .asm_28603
	ld b, $6
	ld de, $a600
	ld hl, $c9f9
.asm_2861a
	push bc
	push hl
	push de
	push hl
	callba Function1de5c8
	pop de
	ld a, c
	or a
	jr z, .asm_2863f
	sub $3
	jr nc, .asm_28635
	callba Function1df1e6
	jr .asm_2863f

.asm_28635
	cp $2
	jr nc, .asm_2863f
	callba Function1df220

.asm_2863f
	pop de
	ld hl, $002f
	add hl, de
	ld d, h
	ld e, l
	pop hl
	ld bc, $0021
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_2861a
	call CloseSRAM
	ld hl, $c9f9
	ld bc, $00c6
.asm_28658
	ld a, [hl]
	cp $fe
	jr nz, .asm_2865f
	ld [hl], $21

.asm_2865f
	inc hl
	dec bc
	ld a, b
	or c
	jr nz, .asm_28658
	ld hl, $cabf
	ld de, $cb13
	ld b, $54
	ld c, $0
.asm_2866f
	inc c
	ld a, [hl]
	cp $fe
	jr nz, .asm_2867a
	ld [hl], $ff
	ld a, c
	ld [de], a
	inc de

.asm_2867a
	inc hl
	dec b
	jr nz, .asm_2866f
	ld a, $ff
	ld [de], a
	ret
; 28682

Function28682: ; 28682
	ld c, $5
.asm_28684
	ld [de], a
	inc de
	dec c
	jr nz, .asm_28684
	ret
; 2868a

Function2868a: ; 2868a
	push hl
	ld d, h
	ld e, l
	ld bc, $cbea
	ld hl, $cbe8
	ld a, c
	ld [hli], a
	ld [hl], b
	ld hl, OTPartyMon1Species
	ld c, $6
.asm_2869b
	push bc
	call Function286ba
	pop bc
	dec c
	jr nz, .asm_2869b
	pop hl
	ld bc, $0108
	add hl, bc
	ld de, OTPartyMon1OT
	ld bc, $0042
	call CopyBytes
	ld de, OTPartyMon1Nickname
	ld bc, $0042
	jp CopyBytes
; 286ba

Function286ba: ; 286ba
	ld b, h
	ld c, l
	ld a, [de]
	inc de
	push bc
	push de
	ld [$d265], a
	callab Functionfb908
	pop de
	pop bc
	ld a, [$d265]
	ld [bc], a
	ld [CurSpecies], a
	ld hl, $0022
	add hl, bc
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hl], a
	inc de
	ld hl, $0020
	add hl, bc
	ld a, [de]
	inc de
	ld [hl], a
	ld hl, $cbe8
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [de]
	ld [hli], a
	inc de
	ld a, [de]
	ld [hli], a
	inc de
	ld a, l
	ld [$cbe8], a
	ld a, h
	ld [$cbe9], a
	push bc
	ld hl, $0001
	add hl, bc
	push hl
	ld h, d
	ld l, e
	pop de
	push bc
	ld a, [hli]
	ld b, a
	call Function28771
	ld a, b
	ld [de], a
	inc de
	pop bc
	ld bc, $0019
	call CopyBytes
	pop bc
	ld d, h
	ld e, l
	ld hl, $001f
	add hl, bc
	ld a, [de]
	inc de
	ld [hl], a
	ld [CurPartyLevel], a
	push bc
	ld hl, $0024
	add hl, bc
	push hl
	ld h, d
	ld l, e
	pop de
	ld bc, $0008
	call CopyBytes
	pop bc
	call GetBaseData
	push de
	push bc
	ld d, h
	ld e, l
	ld hl, $000a
	add hl, bc
	ld c, $5
	ld b, $1
	ld a, $d
	call Predef
	pop bc
	pop hl
	ld a, [$ffb5]
	ld [hli], a
	ld a, [$ffb6]
	ld [hli], a
	push hl
	push bc
	ld hl, $000a
	add hl, bc
	ld c, $6
	ld b, $1
	ld a, $d
	call Predef
	pop bc
	pop hl
	ld a, [$ffb5]
	ld [hli], a
	ld a, [$ffb6]
	ld [hli], a
	push hl
	ld hl, $001b
	add hl, bc
	ld a, $46
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	pop hl
	inc de
	inc de
	ret
; 28771

Function28771: ; 28771
	ld a, b
	and a
	ret z
	push hl
	ld hl, $4785
.asm_28778
	ld a, [hli]
	and a
	jr z, .asm_28783
	cp b
	jr z, .asm_28782
	inc hl
	jr .asm_28778

.asm_28782
	ld b, [hl]

.asm_28783
	pop hl
	ret
; 28785

INCBIN "baserom.gbc",$28785,$2879e - $28785

Function2879e: ; 2879e
.asm_2879e
	ld a, [hli]
	cp $fe
	jr z, .asm_2879e
	ld [de], a
	inc de
	dec bc
	ld a, b
	or c
	jr nz, .asm_2879e
	ret
; 287ab

Function287ab: ; 287ab
	ld a, [$ffcb]
	cp $2
	ret z
	ld hl, EnemyMonSpecies
	call Function287d8
	ld de, LinkBattleRNs
	ld c, $a
.asm_287bb
	ld a, [hli]
	cp $fe
	jr z, .asm_287bb
	cp $fd
	jr z, .asm_287bb
	ld [de], a
	inc de
	dec c
	jr nz, .asm_287bb
	ret
; 287ca

Function287ca: ; 287ca
.asm_287ca
	ld a, [hli]
	and a
	jr z, .asm_287ca
	cp $fd
	jr z, .asm_287ca
	cp $fe
	jr z, .asm_287ca
	dec hl
	ret
; 287d8

Function287d8: ; 287d8
.asm_287d8
	ld a, [hli]
	cp $fd
	jr z, .asm_287d8
	cp $fe
	jr z, .asm_287d8
	dec hl
	ret
; 287e3

Function287e3: ; 287e3
	call Functionfdb
	call Function28ef8
	callba Function16d673
	xor a
	ld hl, $cf51
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld a, $1
	ld [$cfa9], a
	inc a
	ld [$cf56], a
	jp Function2888b
; 28803

Function28803: ; 28803
	ld a, $1
	ld [MonType], a
	ld a, $c1
	ld [$cfa8], a
	ld a, [OTPartyCount]
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld a, $9
	ld [$cfa1], a
	ld a, $6
	ld [$cfa2], a
	ld a, $1
	ld [$cfaa], a
	ld a, $10
	ld [$cfa7], a
	ld a, $20
	ld [$cfa5], a
	xor a
	ld [$cfa6], a

Function28835: ; 28835
	callba Function16d70c
	ld a, d
	and a
	jp z, Function2891c
	bit 0, a
	jr z, .asm_2885b
	ld a, $1
	ld [$d263], a
	callab Function50db9
	ld hl, OTPartyMon1Species
	callba Function4d319
	jp Function2891c

.asm_2885b
	bit 6, a
	jr z, .asm_28883
	ld a, [$cfa9]
	ld b, a
	ld a, [OTPartyCount]
	cp b
	jp nz, Function2891c
	xor a
	ld [MonType], a
	call Function1bf7
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], $7f
	pop bc
	pop hl
	ld a, [PartyCount]
	ld [$cfa9], a
	jr Function2888b

.asm_28883
	bit 7, a
	jp z, Function2891c
	jp Function28ac9
; 2888b

Function2888b: ; 2888b
	callba Function49856
	xor a
	ld [MonType], a
	ld a, $c1
	ld [$cfa8], a
	ld a, [PartyCount]
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld a, $1
	ld [$cfa1], a
	ld a, $6
	ld [$cfa2], a
	ld a, $1
	ld [$cfaa], a
	ld a, $10
	ld [$cfa7], a
	ld a, $20
	ld [$cfa5], a
	xor a
	ld [$cfa6], a
	call Function3200

Function288c5: ; 288c5
	callba Function16d70c
	ld a, d
	and a
	jr nz, .asm_288d2
	jp Function2891c

.asm_288d2
	bit 0, a
	jr z, .asm_288d9
	jp Function28926

.asm_288d9
	bit 7, a
	jr z, .asm_288fe
	ld a, [$cfa9]
	dec a
	jp nz, Function2891c
	ld a, $1
	ld [MonType], a
	call Function1bf7
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], $7f
	pop bc
	pop hl
	ld a, $1
	ld [$cfa9], a
	jp Function28803

.asm_288fe
	bit 6, a
	jr z, Function2891c
	ld a, [$cfa9]
	ld b, a
	ld a, [PartyCount]
	cp b
	jr nz, Function2891c
	call Function1bf7
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], $7f
	pop bc
	pop hl
	jp Function28ade
; 2891c

Function2891c: ; 2891c
	ld a, [MonType]
	and a
	jp z, Function288c5
	jp Function28835
; 28926

Function28926: ; 28926
	call Function309d
	ld a, [$cfa9]
	push af
	ld hl, $c5cc
	ld b, $1
	ld c, $12
	call Function28eef
	ld hl, $c5e2
	ld de, $4ab4
	call PlaceString
	callba Function4d354

.asm_28946
	ld a, $7f
	ld [$c5eb], a
	ld a, $13
	ld [$cfa8], a
	ld a, $1
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld a, $10
	ld [$cfa1], a
	ld a, $1
	ld [$cfa2], a
	ld a, $1
	ld [$cfa9], a
	ld [$cfaa], a
	ld a, $20
	ld [$cfa7], a
	xor a
	ld [$cfa5], a
	ld [$cfa6], a
	call Function1bd3
	bit 4, a
	jr nz, .asm_2898d
	bit 1, a
	jr z, .asm_289cd
.asm_28983
	pop af
	ld [$cfa9], a
	call Function30b4
	jp Function2888b

.asm_2898d
	ld a, $7f
	ld [$c5e1], a
	ld a, $23
	ld [$cfa8], a
	ld a, $1
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld a, $10
	ld [$cfa1], a
	ld a, $b
	ld [$cfa2], a
	ld a, $1
	ld [$cfa9], a
	ld [$cfaa], a
	ld a, $20
	ld [$cfa7], a
	xor a
	ld [$cfa5], a
	ld [$cfa6], a
	call Function1bd3
	bit 5, a
	jp nz, .asm_28946
	bit 1, a
	jr nz, .asm_28983
	jr .asm_289fe

.asm_289cd
	pop af
	ld [$cfa9], a
	ld a, $4
	ld [$d263], a
	callab Function50db9
	callba Function4d319
	call Function30b4
	ld hl, $c4ba
	ld bc, $0601
	ld a, $7f
	call Function28b77
	ld hl, $c4c5
	ld bc, $0601
	ld a, $7f
	call Function28b77
	jp Function2888b

.asm_289fe
	call Function1bee
	pop af
	ld [$cfa9], a
	dec a
	ld [DefaultFlypoint], a
	ld [$cf56], a
	callba Function16d6ce
	ld a, [$cf51]
	cp $f
	jp z, Function287e3
	ld [$d003], a
	call Function28b68
	ld c, $64
	call DelayFrames
	callba Functionfb57e
	jr c, .asm_28a58
	callba Functionfb5dd
	jp nc, Function28b87
	xor a
	ld [$cf57], a
	ld [$cf52], a
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	callba Function4d354
	ld hl, $4aaf
	ld bc, $c5b9
	call Function13e5
	jr .asm_28a89

.asm_28a58
	xor a
	ld [$cf57], a
	ld [$cf52], a
	ld a, [$d003]
	ld hl, OTPartySpecies
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	call GetPokemonName
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	callba Function4d354
	ld hl, $4ac4
	ld bc, $c5b9
	call Function13e5

.asm_28a89
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	ld hl, $c5b9
	ld de, $4ece
	call PlaceString
	ld a, $1
	ld [$cf56], a
	callba Function16d6ce
	ld c, $64
	call DelayFrames
	jp Function287e3
; 28aaf

INCBIN "baserom.gbc",$28aaf,$28ac9 - $28aaf

Function28ac9: ; 28ac9
	ld a, [$cfa9]
	cp $1
	jp nz, Function2891c
	call Function1bf7
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], $7f
	pop bc
	pop hl

Function28ade: ; 28ade
.asm_28ade
	ld a, $ed
	ld [$c5fd], a
.asm_28ae3
	call Functiona57
	ld a, [$ffa9]
	and a
	jr z, .asm_28ae3
	bit 0, a
	jr nz, .asm_28b0b
	push af
	ld a, $7f
	ld [$c5fd], a
	pop af
	bit 6, a
	jr z, .asm_28b03
	ld a, [OTPartyCount]
	ld [$cfa9], a
	jp Function28803

.asm_28b03
	ld a, $1
	ld [$cfa9], a
	jp Function2888b

.asm_28b0b
	ld a, $ec
	ld [$c5fd], a
	ld a, $f
	ld [$cf56], a
	callba Function16d6ce
	ld a, [$cf51]
	cp $f
	jr nz, .asm_28ade

Function28b22: ; 28b22
	call Function4b6
	call Functionfdb
	ld b, $8
	call GetSGBLayout
	call Function3200
	xor a
	ld [$cfbb], a
	xor a
	ld [rSB], a
	ld [hSerialSend], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
	ret
; 28b42

INCBIN "baserom.gbc",$28b42,$28b68 - $28b42

Function28b68: ; 28b68
	ld a, [$cf51]
	ld hl, $c55a
	ld bc, $0014
	call AddNTimes
	ld [hl], $ec
	ret
; 28b77

Function28b77: ; 28b77
.asm_28b77
	push bc
	push hl
.asm_28b79
	ld [hli], a
	dec c
	jr nz, .asm_28b79
	pop hl
	ld bc, $0014
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_28b77
	ret
; 28b87

Function28b87: ; 28b87
	xor a
	ld [$cf57], a
	ld [$cf52], a
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	callba Function4d354
	ld a, [DefaultFlypoint]
	ld hl, PartySpecies
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, $d004
	ld bc, $000b
	call CopyBytes
	ld a, [$d003]
	ld hl, OTPartySpecies
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	call GetPokemonName
	ld hl, $4eb8
	ld bc, $c5b9
	call Function13e5
	call Function1d6e
	ld hl, $c536
	ld b, $3
	ld c, $7
	call Function28eef
	ld de, $4eab
	ld hl, $c54c
	call PlaceString
	ld a, $8
	ld [$cfa1], a
	ld a, $b
	ld [$cfa2], a
	ld a, $1
	ld [$cfa4], a
	ld a, $2
	ld [$cfa3], a
	xor a
	ld [$cfa5], a
	ld [$cfa6], a
	ld a, $20
	ld [$cfa7], a
	ld a, $3
	ld [$cfa8], a
	ld a, $1
	ld [$cfa9], a
	ld [$cfaa], a
	callba Function4d354
	call Function1bd3
	push af
	call Function1d7d
	call Function3200
	pop af
	bit 1, a
	jr nz, .asm_28c33
	ld a, [$cfa9]
	dec a
	jr z, .asm_28c54

.asm_28c33
	ld a, $1
	ld [$cf56], a
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	ld hl, $c5b9
	ld de, $4ece
	call PlaceString
	callba Function16d6ce
	jp Function28ea3

.asm_28c54
	ld a, $2
	ld [$cf56], a
	callba Function16d6ce
	ld a, [$cf51]
	dec a
	jr nz, .asm_28c7b
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	ld hl, $c5b9
	ld de, $4ece
	call PlaceString
	jp Function28ea3

.asm_28c7b
	ld hl, $a600
	ld a, [DefaultFlypoint]
	ld bc, $002f
	call AddNTimes
	ld a, $0
	call GetSRAMBank
	ld d, h
	ld e, l
	ld bc, $002f
	add hl, bc
	ld a, [DefaultFlypoint]
	ld c, a
.asm_28c96
	inc c
	ld a, c
	cp $6
	jr z, .asm_28ca6
	push bc
	ld bc, $002f
	call CopyBytes
	pop bc
	jr .asm_28c96

.asm_28ca6
	ld hl, $a600
	ld a, [PartyCount]
	dec a
	ld bc, $002f
	call AddNTimes
	push hl
	ld hl, $c9f4
	ld a, [$d003]
	ld bc, $002f
	call AddNTimes
	pop de
	ld bc, $002f
	call CopyBytes
	call CloseSRAM
	ld hl, PlayerName
	ld de, $c6e7
	ld bc, $000b
	call CopyBytes
	ld a, [DefaultFlypoint]
	ld hl, PartySpecies
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [PlayerSDefLevel], a
	push af
	ld a, [DefaultFlypoint]
	ld hl, PartyMon1OT
	call SkipNames
	ld de, $c6f2
	ld bc, $000b
	call CopyBytes
	ld hl, PartyMon1ID
	ld a, [DefaultFlypoint]
	call GetPartyLocation
	ld a, [hli]
	ld [PlayerScreens], a
	ld a, [hl]
	ld [EnemyScreens], a
	ld hl, PartyMon1DVs
	ld a, [DefaultFlypoint]
	call GetPartyLocation
	ld a, [hli]
	ld [$c6fd], a
	ld a, [hl]
	ld [$c6fe], a
	ld a, [DefaultFlypoint]
	ld hl, PartyMon1Species
	call GetPartyLocation
	ld b, h
	ld c, l
	callba Function4f301
	ld a, c
	ld [$c701], a
	ld hl, $d26b
	ld de, $c719
	ld bc, $000b
	call CopyBytes
	ld a, [$d003]
	ld hl, OTPartySpecies
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [PlayerLightScreenCount], a
	ld a, [$d003]
	ld hl, OTPartyMon1OT
	call SkipNames
	ld de, $c724
	ld bc, $000b
	call CopyBytes
	ld hl, OTPartyMon1ID
	ld a, [$d003]
	call GetPartyLocation
	ld a, [hli]
	ld [$c731], a
	ld a, [hl]
	ld [$c732], a
	ld hl, OTPartyMon1AtkDefDV
	ld a, [$d003]
	call GetPartyLocation
	ld a, [hli]
	ld [$c72f], a
	ld a, [hl]
	ld [$c730], a
	ld a, [$d003]
	ld hl, OTPartyMon1Species
	call GetPartyLocation
	ld b, h
	ld c, l
	callba Function4f301
	ld a, c
	ld [$c733], a
	ld a, [DefaultFlypoint]
	ld [CurPartyMon], a
	ld hl, PartySpecies
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [DefaultFlypoint], a
	xor a
	ld [$d10b], a
	callab Functione039
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	ld a, $1
	ld [$d1e9], a
	ld a, [$d003]
	push af
	ld hl, OTPartySpecies
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [$d003], a
	ld c, $64
	call DelayFrames
	call ClearTileMap
	call Functione58
	ld b, $8
	call GetSGBLayout
	ld a, [$ffcb]
	cp $1
	jr z, .asm_28de4
	ld a, $1e
	call Predef
	jr .asm_28de9

.asm_28de4
	ld a, $1d
	call Predef

.asm_28de9
	pop af
	ld c, a
	ld [CurPartyMon], a
	ld hl, OTPartySpecies
	ld d, $0
	ld e, a
	add hl, de
	ld a, [hl]
	ld [CurPartySpecies], a
	ld hl, OTPartyMon1Species
	ld a, c
	call GetPartyLocation
	ld de, TempMonSpecies
	ld bc, $0030
	call CopyBytes
	ld a, $7
	call Predef
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	callab Function421d8
	call Functionfdb
	call Function28ef8
	call Function28eff
	callba Function4d354
	ld b, $1
	pop af
	ld c, a
	cp $97
	jr z, .asm_28e49
	ld a, [CurPartySpecies]
	cp $97
	jr z, .asm_28e49
	ld b, $2
	ld a, c
	cp $fb
	jr z, .asm_28e49
	ld a, [CurPartySpecies]
	cp $fb
	jr z, .asm_28e49
	ld b, $0

.asm_28e49
	ld a, b
	ld [$cf56], a
	push bc
	call Function862
	pop bc
	ld a, [InLinkBattle]
	cp $1
	jr z, .asm_28e63
	ld a, b
	and a
	jr z, .asm_28e63
	ld a, [$cf52]
	cp b
	jr nz, .asm_28e49

.asm_28e63
	callba Function14a58
	callba Function1060af
	callba Function106187
	ld c, $28
	call DelayFrames
	ld hl, $c590
	ld b, $4
	ld c, $12
	call Function28eef
	ld hl, $c5b9
	ld de, $4ebd
	call PlaceString
	callba Function4d354
	ld c, $32
	call DelayFrames
	ld a, [InLinkBattle]
	cp $1
	jp z, Function2805d
	jp Function28177
; 28ea3

Function28ea3: ; 28ea3
	ld c, $64
	call DelayFrames
	jp Function287e3
; 28eab

INCBIN "baserom.gbc",$28eab,$28eef - $28eab

Function28eef: ; 28eef
	ld d, h
	ld e, l
	callba Function16d6ca
	ret
; 28ef8

Function28ef8: ; 28ef8
	callba Function16d696
	ret
; 28eff

Function28eff: ; 28eff
	callba Function16d6a7
	call Function32f9
	ret
; 28f09

INCBIN "baserom.gbc",$28f09,$28f24 - $28f09

Function28f24: ; 28f24
	xor a
	ld [$cf66], a
	ld hl, $c6e7
	ld de, $c719
	call Function297ff
	ld hl, PlayerSDefLevel
	ld de, PlayerLightScreenCount
	call Function29814
	ld de, .data_28f3f
	jr Function28fa1

.data_28f3f
	db $1b
	db $1
	db $1c
	db $21
	db $2d
	db $27
	db $23
	db $3
	db $25
	db $28
	db $25
	db $1e
	db $29
	db $6
	db $16
	db $1f
	db $19
	db $17
	db $22
	db $1f
	db $2a
	db $e
	db $3
	db $24
	db $5
	db $25
	db $2
	db $27
	db $25
	db $1d
	db $2c
	db $2e
	db $1e
	db $18
	db $1f
	db $2b

Function28f63: ; 28f63
	xor a
	ld [$cf66], a
	ld hl, $c719
	ld de, $c6e7
	call Function297ff
	ld hl, PlayerLightScreenCount
	ld de, PlayerSDefLevel
	call Function29814
	ld de, .data_28f7e
	jr Function28fa1

.data_28f7e
	db $1a
	db $17
	db $22
	db $1f
	db $2a
	db $6
	db $3
	db $24
	db $5
	db $25
	db $2
	db $27
	db $25
	db $1d
	db $2c
	db $2f
	db $1e
	db $18
	db $1f
	db $1b
	db $1
	db $1c
	db $22
	db $27
	db $23
	db $3
	db $25
	db $28
	db $25
	db $1e
	db $29
	db $e
	db $16
	db $1f
	db $2b

Function28fa1: ; 28fa1
	ld hl, BattleEnded
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
	ld hl, VramState
	ld a, [hl]
	push af
	res 0, [hl]
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function28fdb
	ld a, [$cf66]
	and a
	jr nz, .asm_28fca
	ld de, MUSIC_EVOLUTION
	call PlayMusic2
.asm_28fca
	call Function29082
	jr nc, .asm_28fca
	pop af
	ld [Options], a
	pop af
	ld [VramState], a
	pop af
	ld [$ffde], a
	ret
; 28fdb

Function28fdb: ; 28fdb
	xor a
	ld [$cf63], a
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call DisableLCD
	call Functione58
	callab Function8cf53
	ld a, [hCGB]
	and a
	jr z, .asm_2900b
	ld a, $1
	ld [rVBK], a
	ld hl, VTiles0
	ld bc, $2000
	xor a
	call ByteFill
	ld a, $0
	ld [rVBK], a

.asm_2900b
	ld hl, VBGMap0
	ld bc, $0800
	ld a, $7f
	call ByteFill
	ld hl, $599b
	ld de, $9310
	call Decompress
	ld hl, $591b
	ld de, $8ed0
	ld bc, $0010
	ld a, $a
	call FarCopyBytes
	ld hl, $592b
	ld de, $8ee0
	ld bc, $0010
	ld a, $a
	call FarCopyBytes
	xor a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	callba Function4d7fd
	call EnableLCD
	call Function2982b
	ld a, [PlayerSDefLevel]
	ld hl, $c6fd
	ld de, VTiles0
	call Function29491
	ld a, [PlayerLightScreenCount]
	ld hl, $c72f
	ld de, $8310
	call Function29491
	ld a, [PlayerSDefLevel]
	ld de, PlayerAccLevel
	call Function294a9
	ld a, [PlayerLightScreenCount]
	ld de, PlayerReflectCount
	call Function294a9
	call Function297ed
	ret
; 29082

Function29082: ; 29082
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_2909b
	call Function290a0
	callab Function8cf69
	ld hl, $cf65
	inc [hl]
	call DelayFrame
	and a
	ret

.asm_2909b
	call Functione51
	scf
	ret
; 290a0

Function290a0: ; 290a0
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $50af
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 290af

INCBIN "baserom.gbc",$290af,$29491 - $290af

Function29491: ; 29491
	push de
	push af
	ld a, $2d
	call Predef
	pop af
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData
	pop de
	ld a, $3c
	call Predef
	ret
; 294a9

Function294a9: ; 294a9
	push de
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	pop de
	ld bc, $000b
	call CopyBytes
	ret
; 294bb

INCBIN "baserom.gbc",$294bb,$29676 - $294bb

; no known jump sources
Function29676: ; 29676 (a:5676)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $5686
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_29686: ; 29686 (a:5686)
	dw Function2969a
	dw Function296a4
	dw Function296af
	dw Function296bd
	dw Function296cf
	dw Function296dd
	dw Function296f2


; known jump sources: 2969a (a:569a), 296ac (a:56ac), 296ba (a:56ba), 296da (a:56da), 296e8 (a:56e8)
Function29694: ; 29694 (a:5694)
	ld hl, $b
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Function2969a: ; 2969a (a:569a)
	call Function29694
	ld hl, $c
	add hl, bc
	ld [hl], $80
	ret

; no known jump sources
Function296a4: ; 296a4 (a:56a4)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	dec [hl]
	and a
	ret nz
	call Function29694

; no known jump sources
Function296af: ; 296af (a:56af)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	cp $94
	jr nc, .asm_296ba
	inc [hl]
	ret
.asm_296ba
	call Function29694

; no known jump sources
Function296bd: ; 296bd (a:56bd)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $4c
	jr nc, .asm_296c8
	inc [hl]
	ret
.asm_296c8
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Function296cf: ; 296cf (a:56cf)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $2c
	jr z, .asm_296da
	dec [hl]
	ret
.asm_296da
	call Function29694

; no known jump sources
Function296dd: ; 296dd (a:56dd)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	cp $58
	jr z, .asm_296e8
	dec [hl]
	ret
.asm_296e8
	call Function29694
	ld hl, $c
	add hl, bc
	ld [hl], $80
	ret

; no known jump sources
Function296f2: ; 296f2 (a:56f2)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	dec [hl]
	and a
	ret nz
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret
; 29701 (a:5701)

INCBIN "baserom.gbc",$29701,$297ed - $29701

Function297ed: ; 297ed
	ld a, [hSGB]
	and a
	ld a, $e4
	jr z, .asm_297f6
	ld a, $f0

.asm_297f6
	call Functioncf8
	ld a, $e4
	call DmgToCgbBGPals
	ret
; 297ff

Function297ff: ; 297ff
	push de
	ld de, $c736
	ld bc, $000b
	call CopyBytes
	pop hl
	ld de, $c741
	ld bc, $000b
	call CopyBytes
	ret
; 29814

Function29814: ; 29814
	ld a, [hl]
	ld [$c74c], a
	ld a, [de]
	ld [$c74d], a
	ret
; 2981d

INCBIN "baserom.gbc",$2981d,$2982b - $2981d

Function2982b: ; 2982b
	call DelayFrame
	ld de, $5adb
	ld hl, $8620
	ld bc, $0a06
	call Request2bpp
	ld de, $5b3b
	ld hl, $8680
	ld bc, $0a0c
	call Request2bpp
	ld de, $593b
	ld hl, $8740
	ld bc, $0a04
	call Request2bpp
	xor a
	ld hl, $c300
	ld [hli], a
	ld [hl], $62
	ret
; 2985a

INCBIN "baserom.gbc",$2985a,$29bfb - $2985a

Function29bfb: ; 29bfb
	ld hl, PartySpecies
	ld b, $6
.asm_29c00
	ld a, [hli]
	cp $ff
	jr z, .asm_29c0c
	cp $98
	jr nc, .asm_29c42
	dec b
	jr nz, .asm_29c00

.asm_29c0c
	ld a, [PartyCount]
	ld b, a
	ld hl, PartyMon1Item
.asm_29c13
	push hl
	push bc
	ld d, [hl]
	callba ItemIsMail
	pop bc
	pop hl
	jr c, .asm_29c5e
	ld de, $0030
	add hl, de
	dec b
	jr nz, .asm_29c13
	ld hl, PartyMon1Move1
	ld a, [PartyCount]
	ld b, a
.asm_29c2e
	ld c, $4
.asm_29c30
	ld a, [hli]
	cp $a6
	jr nc, .asm_29c4c
	dec c
	jr nz, .asm_29c30
	ld de, $002c
	add hl, de
	dec b
	jr nz, .asm_29c2e
	xor a
	jr .asm_29c63

.asm_29c42
	ld [$d265], a
	call GetPokemonName
	ld a, $1
	jr .asm_29c63

.asm_29c4c
	push bc
	ld [$d265], a
	call GetMoveName
	call CopyName1
	pop bc
	call Function29c67
	ld a, $2
	jr .asm_29c63

.asm_29c5e
	call Function29c67
	ld a, $3

.asm_29c63
	ld [ScriptVar], a
	ret
; 29c67

Function29c67: ; 29c67
	ld a, [PartyCount]
	sub b
	ld c, a
	inc c
	ld b, $0
	ld hl, PartyCount
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	call GetPokemonName
	ret
; 29c7b

Function29c7b: ; 29c7b
	ld c, $a
	call DelayFrames
	ld a, $4
	call Function29f17
	ld c, $28
	call DelayFrames
	xor a
	ld [$ff9e], a
	inc a
	ld [InLinkBattle], a
	ret
; 29c92

Function29c92: ; 29c92
	ld c, $3
	call DelayFrames
	ld a, $ff
	ld [$ffcb], a
	xor a
	ld [rSB], a
	ld [hSerialReceive], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
	ld c, $3
	call DelayFrames
	xor a
	ld [rSB], a
	ld [hSerialReceive], a
	ld a, $0
	ld [rSC], a
	ld a, $80
	ld [rSC], a
	ld c, $3
	call DelayFrames
	xor a
	ld [rSB], a
	ld [hSerialReceive], a
	ld [rSC], a
	ld c, $3
	call DelayFrames
	ld a, $ff
	ld [$ffcb], a
	ld a, [rIF]
	push af
	xor a
	ld [rIF], a
	ld a, $f
	ld [rIE], a
	pop af
	ld [rIF], a
	ld hl, $cf5b
	xor a
	ld [hli], a
	ld [hl], a
	ld [$ff9e], a
	ld [InLinkBattle], a
	ret
; 29ce8

Function29ce8: ; 29ce8
	ld a, $1
	ld [$cf56], a
	ld [$d265], a
	ret
; 29cf1

Function29cf1: ; 29cf1
	ld a, $2
	ld [$cf56], a
	ld [$d265], a
	ret
; 29cfa

Function29cfa: ; 29cfa
	ld a, $2
	ld [rSB], a
	xor a
	ld [hSerialReceive], a
	ld a, $0
	ld [rSC], a
	ld a, $80
	ld [rSC], a
	xor a
	ld [$cf56], a
	ld [$d265], a
	ret
; 29d11

Function29d11: ; 29d11
	ld a, [$cf56]
	and a
	jr z, .asm_29d2f
	ld a, $2
	ld [rSB], a
	xor a
	ld [hSerialReceive], a
	ld a, $0
	ld [rSC], a
	ld a, $80
	ld [rSC], a
	call DelayFrame
	call DelayFrame
	call DelayFrame

.asm_29d2f
	ld a, $2
	ld [$cf5c], a
	ld a, $ff
	ld [$cf5b], a
.asm_29d39
	ld a, [$ffcb]
	cp $2
	jr z, .asm_29d79
	cp $1
	jr z, .asm_29d79
	ld a, $ff
	ld [$ffcb], a
	ld a, $2
	ld [rSB], a
	xor a
	ld [hSerialReceive], a
	ld a, $0
	ld [rSC], a
	ld a, $80
	ld [rSC], a
	ld a, [$cf5b]
	dec a
	ld [$cf5b], a
	jr nz, .asm_29d68
	ld a, [$cf5c]
	dec a
	ld [$cf5c], a
	jr z, .asm_29d8d

.asm_29d68
	ld a, $1
	ld [rSB], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
	call DelayFrame
	jr .asm_29d39

.asm_29d79
	call Function908
	call DelayFrame
	call Function908
	ld c, $32
	call DelayFrames
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_29d8d
	xor a
	ld [ScriptVar], a
	ret
; 29d92

Function29d92: ; 29d92
	ld a, $1
	ld [$cf56], a
	ld hl, $cf5b
	ld a, $3
	ld [hli], a
	xor a
	ld [hl], a
	call WaitBGMap
	ld a, $2
	ld [$ff9e], a
	call DelayFrame
	call DelayFrame
	call Function29e0c
	xor a
	ld [$ff9e], a
	ld a, [ScriptVar]
	and a
	ret nz
	jp Function29f04
; 29dba

Function29dba: ; 29dba
	ld a, $5
	ld [$cf56], a
	ld hl, $cf5b
	ld a, $3
	ld [hli], a
	xor a
	ld [hl], a
	call WaitBGMap
	ld a, $2
	ld [$ff9e], a
	call DelayFrame
	call DelayFrame
	call Function29e0c
	ld a, [ScriptVar]
	and a
	jr z, .asm_29e08
	ld bc, rIE
.asm_29de0
	dec bc
	ld a, b
	or c
	jr nz, .asm_29de0
	ld a, [$cf51]
	cp $5
	jr nz, .asm_29e03
	ld a, $6
	ld [$cf56], a
	ld hl, $cf5b
	ld a, $1
	ld [hli], a
	ld [hl], $32
	call Function29e0c
	ld a, [$cf51]
	cp $6
	jr z, .asm_29e08

.asm_29e03
	xor a
	ld [ScriptVar], a
	ret

.asm_29e08
	xor a
	ld [$ff9e], a
	ret
; 29e0c

Function29e0c: ; 29e0c
	xor a
	ld [$ffca], a
	ld a, [$cf5b]
	ld h, a
	ld a, [$cf5c]
	ld l, a
	push hl
	call Function29e3b
	pop hl
	jr nz, .asm_29e2f
	call Function29e47
	call Function29e53
	call Function29e3b
	jr nz, .asm_29e2f
	call Function29e47
	xor a
	jr .asm_29e31

.asm_29e2f
	ld a, $1

.asm_29e31
	ld [ScriptVar], a
	ld hl, $cf5b
	xor a
	ld [hli], a
	ld [hl], a
	ret
; 29e3b

Function29e3b: ; 29e3b
	call Function87d
	ld hl, $cf5b
	ld a, [hli]
	inc a
	ret nz
	ld a, [hl]
	inc a
	ret
; 29e47

Function29e47: ; 29e47
	ld b, $a
.asm_29e49
	call DelayFrame
	call Function908
	dec b
	jr nz, .asm_29e49
	ret
; 29e53

Function29e53: ; 29e53
	dec h
	srl h
	rr l
	srl h
	rr l
	inc h
	ld a, h
	ld [$cf5b], a
	ld a, l
	ld [$cf5c], a
	ret
; 29e66

Function29e66: ; 29e66
	ld a, [$d265]
	push af
	callba Function14ab2
	ld a, $1
	jr nc, .asm_29e75
	xor a

.asm_29e75
	ld [ScriptVar], a
	ld c, $1e
	call DelayFrames
	pop af
	ld [$d265], a
	ret
; 29e82

Function29e82: ; 29e82
	ld a, [$d265]
	call Function29f17
	push af
	call Function908
	call DelayFrame
	call Function908
	pop af
	ld b, a
	ld a, [$d265]
	cp b
	jr nz, .asm_29eaa
	ld a, [$d265]
	inc a
	ld [InLinkBattle], a
	xor a
	ld [$ff9e], a
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_29eaa
	xor a
	ld [ScriptVar], a
	ret
; 29eaf

Function29eaf: ; 29eaf
	ld a, $1
	ld [InLinkBattle], a
	call Function2ed3
	callab Function28000
	call Function2ee4
	xor a
	ld [$ff9e], a
	ret
; 29ec4

Function29ec4: ; 29ec4
	ld a, $2
	ld [InLinkBattle], a
	call Function2ed3
	callab Function28000
	call Function2ee4
	xor a
	ld [$ff9e], a
	ret
; 29ed9

Function29ed9: ; 29ed9
	ld a, $3
	ld [InLinkBattle], a
	call Function2ed3
	callab Function28000
	call Function2ee4
	xor a
	ld [$ff9e], a
	ret
; 29eee

Function29eee: ; 29eee
	xor a
	ld [InLinkBattle], a
	ld c, $3
	call DelayFrames
	jp Function29f04
; 29efa

Function29efa: ; 29efa
	ld c, $28
	call DelayFrames
	ld a, $e
	jp Function29f17
; 29f04

Function29f04: ; 29f04
	ld c, $3
	call DelayFrames
	ld a, $ff
	ld [$ffcb], a
	ld a, $2
	ld [rSB], a
	xor a
	ld [hSerialReceive], a
	ld [rSC], a
	ret
; 29f17

Function29f17: ; 29f17
	add $d0
	ld [$cf56], a
	ld [$cf57], a
	ld a, $2
	ld [$ff9e], a
	call DelayFrame
	call DelayFrame
.asm_29f29
	call Function83b
	ld a, [$cf51]
	ld b, a
	and $f0
	cp $d0
	jr z, .asm_29f40
	ld a, [$cf52]
	ld b, a
	and $f0
	cp $d0
	jr nz, .asm_29f29

.asm_29f40
	xor a
	ld [$ff9e], a
	ld a, b
	and $f
	ret
; 29f47

Function29f47: ; 29f47
	ld a, [$ffcb]
	cp $1
	ld a, $1
	jr z, .asm_29f50
	dec a

.asm_29f50
	ld [ScriptVar], a
	ret
; 29f54

INCBIN "baserom.gbc",$29f54,$29ff8 - $29f54
	call Function2a205
	jr c, .asm_2a006
	ld hl, $d25a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	jr .asm_2a011
.asm_2a006
	inc hl
	inc hl
	ld de, $d25a
	ld bc, $3
	call CopyBytes
.asm_2a011
	call Function2a21d
	ld a, $0
	jr nc, .asm_2a01b
	inc hl
	inc hl
	ld a, [hl]
.asm_2a01b
	ld [$d25d], a
	ret

Function2a01f: ; 2a01f
	ld hl, TileMap
	ld bc, $0168
	xor a
	call ByteFill
	ld a, e
	and a
	jr nz, .asm_2a043
	ld de, TileMap
	ld hl, WildMons1
	call Function2a052
	ld hl, WildMons2
	call Function2a06e
	call Function2a0b7
	call Function2a0cf
	ret

.asm_2a043
	ld de, TileMap
	ld hl, WildMons3
	call Function2a052
	ld hl, WildMons4
	jp Function2a06e
; 2a052

Function2a052: ; 2a052
.asm_2a052
	ld a, [hl]
	cp $ff
	ret z
	push hl
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	inc hl
	inc hl
	inc hl
	ld a, $15
	call Function2a088
	jr nc, .asm_2a067
	ld [de], a
	inc de

.asm_2a067
	pop hl
	ld bc, $002f
	add hl, bc
	jr .asm_2a052
; 2a06e

Function2a06e: ; 2a06e
.asm_2a06e
	ld a, [hl]
	cp $ff
	ret z
	push hl
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	inc hl
	ld a, $3
	call Function2a088
	jr nc, .asm_2a081
	ld [de], a
	inc de

.asm_2a081
	pop hl
	ld bc, $0009
	add hl, bc
	jr .asm_2a06e
; 2a088

Function2a088: ; 2a088
	inc hl
.asm_2a089
	push af
	ld a, [$d265]
	cp [hl]
	jr z, .asm_2a098
	inc hl
	inc hl
	pop af
	dec a
	jr nz, .asm_2a089
	and a
	ret

.asm_2a098
	pop af
	jp Function2a09c
; 2a09c

Function2a09c: ; 2a09c
	push de
	call GetWorldMapLocation
	ld c, a
	ld hl, TileMap
	ld de, $0168
.asm_2a0a7
	ld a, [hli]
	cp c
	jr z, .asm_2a0b4
	dec de
	ld a, e
	or d
	jr nz, .asm_2a0a7
	ld a, c
	pop de
	scf
	ret

.asm_2a0b4
	pop de
	and a
	ret
; 2a0b7

Function2a0b7: ; 2a0b7
	ld a, [RoamMon1Species]
	ld b, a
	ld a, [$d265]
	cp b
	ret nz
	ld a, [RoamMon1MapGroup]
	ld b, a
	ld a, [RoamMon1MapNumber]
	ld c, a
	call Function2a09c
	ret nc
	ld [de], a
	inc de
	ret
; 2a0cf

Function2a0cf: ; 2a0cf
	ld a, [RoamMon2Species]
	ld b, a
	ld a, [$d265]
	cp b
	ret nz
	ld a, [RoamMon2MapGroup]
	ld b, a
	ld a, [RoamMon2MapNumber]
	ld c, a
	call Function2a09c
	ret nc
	ld [de], a
	inc de
	ret
; 2a0e7

Function2a0e7: ; 2a0e7
; Try to trigger a wild encounter.
	call Function2a103
	jr nc, .asm_2a0f8
	call Function2a14f
	jr nz, .asm_2a0f8
	call Function2a1df
	jr nc, .asm_2a0f8
	xor a
	ret

.asm_2a0f8
	xor a
	ld [$d22e], a
	ld [BattleType], a
	ld a, 1
	and a
	ret
; 2a103

Function2a103: ; 2a103
	call Function2a111
	call Function2a124
	call Function2a138
	call Random
	cp b
	ret
; 2a111

Function2a111: ; 2a111
	ld hl, $d25a
	call Function1852
	ld a, 3
	jr z, .asm_2a11e
	ld a, [TimeOfDay]
.asm_2a11e
	ld c, a
	ld b, 0
	add hl, bc
	ld b, [hl]
	ret
; 2a124

Function2a124: ; 2a124
; Pokemon March and Ruins of Alph signal double encounter rate.
; Pokemon Lullaby halves encounter rate.
	ld a, [CurMusic]
	cp MUSIC_POKEMON_MARCH
	jr z, .asm_2a135
	cp MUSIC_RUINS_OF_ALPH_RADIO
	jr z, .asm_2a135
	cp MUSIC_POKEMON_LULLABY
	ret nz
	srl b
	ret

.asm_2a135
	sla b
	ret
; 2a138

Function2a138: ; 2a138
; Cleanse Tag halves encounter rate.
	ld hl, PartyMon1Item
	ld de, PartyMon2 - PartyMon1
	ld a, [PartyCount]
	ld c, a
.next
	ld a, [hl]
	cp CLEANSE_TAG
	jr z, .asm_2a14c
	add hl, de
	dec c
	jr nz, .next
	ret

.asm_2a14c
	srl b
	ret
; 2a14f

Function2a14f: ; 2a14f
	call Function2a200
	jp nc, .asm_2a1c1
	call Function2a2ce
	jp c, .asm_2a1c9

	inc hl
	inc hl
	inc hl
	call Function1852
	ld de, $61d9
	jr z, .asm_2a174
	inc hl
	inc hl
	ld a, [TimeOfDay]
	ld bc, $e
	call AddNTimes
	ld de, $61cb

.asm_2a174
	push hl
.asm_2a175
	call Random
	cp 100
	jr nc, .asm_2a175
	inc a
	ld b, a
	ld h, d
	ld l, e
.asm_2a180
	ld a, [hli]
	cp b
	jr nc, .asm_2a187
	inc hl
	jr .asm_2a180

.asm_2a187
	ld c, [hl]
	ld b, 0
	pop hl
	add hl, bc
	ld a, [hli]
	ld b, a
	call Function1852
	jr nz, .asm_2a1aa

	call Random
	cp 89
	jr c, .asm_2a1aa
	inc b
	cp 165
	jr c, .asm_2a1aa
	inc b
	cp 216
	jr c, .asm_2a1aa
	inc b
	cp 242
	jr c, .asm_2a1aa
	inc b

.asm_2a1aa
	ld a, b
	ld [CurPartyLevel], a
	ld b, [hl]
	call Function2a4a0
	jr c, .asm_2a1c1

	ld a, b
	cp UNOWN
	jr nz, .asm_2a1bf

	ld a, [UnlockedUnowns]
	and a
	jr z, .asm_2a1c1

.asm_2a1bf
	jr .asm_2a1c5

.asm_2a1c1
	ld a, 1
	and a
	ret

.asm_2a1c5
	ld a, b
	ld [$d22e], a

.asm_2a1c9
	xor a
	ret
; 2a1cb


INCBIN "baserom.gbc",$2a1cb,$2a1df - $2a1cb


Function2a1df: ; 2a1df
	ld a, [$dca1]
	and a
	jr z, .asm_2a1fe
	ld hl, PartyMon1CurHP
	ld bc, PartyMon2 - PartyMon1 - 1
.asm_2a1eb
	ld a, [hli]
	or [hl]
	jr nz, .asm_2a1f2
	add hl, bc
	jr .asm_2a1eb

.asm_2a1f2
; to PartyMonLevel
	dec hl
	dec hl
	dec hl
	dec hl

	ld a, [CurPartyLevel]
	cp [hl]
	jr nc, .asm_2a1fe
	and a
	ret

.asm_2a1fe
	scf
	ret
; 2a200

Function2a200: ; 2a200
	call Function1852
	jr z, Function2a21d

Function2a205: ; 2a205
	ld hl, WildMons5
	ld bc, $002f
	call asm_2a23d
	ret c
	ld hl, WildMons1
	ld de, WildMons3
	call asm_2a235
	ld bc, $002f
	jr asm_2a27a

Function2a21d: ; 2a21d
	ld hl, WildMons6
	ld bc, $0009
	call asm_2a23d
	ret c
	ld hl, WildMons2
	ld de, WildMons4
	call asm_2a235
	ld bc, $0009
	jr asm_2a27a

asm_2a235
	call IsInJohto
	and a
	ret z
	ld h, d
	ld l, e
	ret

asm_2a23d
	call Function2a27f
	push hl
	ld hl, $dc20
	bit 2, [hl]
	pop hl
	jr z, .asm_2a25c
	ld a, [$dfcc]
	cp d
	jr nz, .asm_2a25c
	ld a, [$dfcd]
	cp e
	jr nz, .asm_2a25c
	call Function2a288
	jr nc, asm_2a278
	scf
	ret

.asm_2a25c
	push hl
	ld hl, $dc20
	bit 3, [hl]
	pop hl
	jr z, asm_2a278
	ld a, [$dc5a]
	cp d
	jr nz, asm_2a278
	ld a, [$dc5b]
	cp e
	jr nz, asm_2a278
	call Function2a288
	jr nc, asm_2a278
	scf
	ret

asm_2a278
	and a
	ret

asm_2a27a
	call Function2a27f
	jr Function2a288
; 2a27f

Function2a27f: ; 2a27f
	ld a, [MapGroup]
	ld d, a
	ld a, [MapNumber]
	ld e, a
	ret
; 2a288

Function2a288: ; 2a288
	push hl
	ld a, [hl]
	inc a
	jr z, .asm_2a29a
	ld a, d
	cp [hl]
	jr nz, .asm_2a296
	inc hl
	ld a, e
	cp [hl]
	jr z, .asm_2a29d

.asm_2a296
	pop hl
	add hl, bc
	jr Function2a288

.asm_2a29a
	pop hl
	and a
	ret

.asm_2a29d
	pop hl
	scf
	ret
; 2a2a0


InitRoamMons: ; 2a2a0
; initialize RoamMon structs

; species
	ld a, RAIKOU
	ld [RoamMon1Species], a
	ld a, ENTEI
	ld [RoamMon2Species], a
;	ld a, SUICUNE
;	ld [RoamMon3Species], a

; level
	ld a, 40
	ld [RoamMon1Level], a
	ld [RoamMon2Level], a
;	ld [RoamMon3Level], a

; raikou starting map
	ld a, GROUP_ROUTE_42
	ld [RoamMon1MapGroup], a
	ld a, MAP_ROUTE_42
	ld [RoamMon1MapNumber], a

; entei starting map
	ld a, GROUP_ROUTE_37
	ld [RoamMon2MapGroup], a
	ld a, MAP_ROUTE_37
	ld [RoamMon2MapNumber], a

; suicune starting map
;	ld a, GROUP_ROUTE_38
;	ld [RoamMon3MapGroup], a
;	ld a, MAP_ROUTE_38
;	ld [RoamMon3MapNumber], a

; hp
	xor a ; generate new stats
	ld [RoamMon1CurHP], a
	ld [RoamMon2CurHP], a
;	ld [RoamMon3CurHP], a

	ret
; 2a2ce


Function2a2ce: ; 2a2ce
	push hl
	call Function1852
	jr z, .asm_2a30a
	call Function2a27f
	call Random
	cp 100
	jr nc, .asm_2a30a
	and 3
	jr z, .asm_2a30a
	dec a
	ld hl, RoamMon1MapGroup
	ld c, a
	ld b, 0
	ld a, 7
	call AddNTimes
	ld a, d
	cp [hl]
	jr nz, .asm_2a30a
	inc hl
	ld a, e
	cp [hl]
	jr nz, .asm_2a30a
	dec hl
	dec hl
	dec hl
	ld a, [hli]
	ld [$d22e], a
	ld a, [hl]
	ld [CurPartyLevel], a
	ld a, BATTLETYPE_ROAMING
	ld [BattleType], a
	pop hl
	scf
	ret

.asm_2a30a
	pop hl
	and a
	ret
; 2a30d


Function2a30d: ; 2a30d
	ld a, [RoamMon1MapGroup]
	cp $ff
	jr z, .asm_2a324
	ld b, a
	ld a, [RoamMon1MapNumber]
	ld c, a
	call Function2a355
	ld a, b
	ld [RoamMon1MapGroup], a
	ld a, c
	ld [RoamMon1MapNumber], a

.asm_2a324
	ld a, [RoamMon2MapGroup]
	cp $ff
	jr z, .asm_2a33b
	ld b, a
	ld a, [RoamMon2MapNumber]
	ld c, a
	call Function2a355
	ld a, b
	ld [RoamMon2MapGroup], a
	ld a, c
	ld [RoamMon2MapNumber], a

.asm_2a33b
	ld a, [RoamMon3MapGroup]
	cp $ff
	jr z, .asm_2a352
	ld b, a
	ld a, [RoamMon3MapNumber]
	ld c, a
	call Function2a355
	ld a, b
	ld [RoamMon3MapGroup], a
	ld a, c
	ld [RoamMon3MapNumber], a

.asm_2a352
	jp Function2a3f6
; 2a355


Function2a355: ; 2a355
	ld hl, $640f
.asm_2a358
	ld a, [hl]
	cp $ff
	ret z
	ld a, b
	cp [hl]
	jr nz, .asm_2a365
	inc hl
	ld a, c
	cp [hl]
	jr z, .asm_2a36b

.asm_2a365
	ld a, [hli]
	and a
	jr nz, .asm_2a365
	jr .asm_2a358

.asm_2a36b
	inc hl
	ld d, h
	ld e, l
.asm_2a36e
	ld h, d
	ld l, e
	call Random
	and $1f
	jr z, asm_2a3cd
	and $3
	cp [hl]
	jr nc, .asm_2a36e
	inc hl
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [$dfe7]
	cp [hl]
	jr nz, .asm_2a390
	inc hl
	ld a, [$dfe6]
	cp [hl]
	jr z, .asm_2a36e
	dec hl

.asm_2a390
	ld a, [hli]
	ld b, a
	ld c, [hl]
	ret

Function2a394: ; 2a394
	ld a, [RoamMon1MapGroup]
	cp $ff
	jr z, .asm_2a3a6
	call asm_2a3cd
	ld a, b
	ld [RoamMon1MapGroup], a
	ld a, c
	ld [RoamMon1MapNumber], a

.asm_2a3a6
	ld a, [RoamMon2MapGroup]
	cp $ff
	jr z, .asm_2a3b8
	call asm_2a3cd
	ld a, b
	ld [RoamMon2MapGroup], a
	ld a, c
	ld [RoamMon2MapNumber], a

.asm_2a3b8
	ld a, [RoamMon3MapGroup]
	cp $ff
	jr z, .asm_2a3ca
	call asm_2a3cd
	ld a, b
	ld [RoamMon3MapGroup], a
	ld a, c
	ld [RoamMon3MapNumber], a

.asm_2a3ca
	jp Function2a3f6

asm_2a3cd
	ld hl, $640f
.asm_2a3d0
	call Random
	and $f
	cp $10
	jr nc, .asm_2a3d0
	inc a
	ld b, a
.asm_2a3db
	dec b
	jr z, .asm_2a3e4
.asm_2a3de
	ld a, [hli]
	and a
	jr nz, .asm_2a3de
	jr .asm_2a3db

.asm_2a3e4
	ld a, [MapGroup]
	cp [hl]
	jr nz, .asm_2a3f2
	inc hl
	ld a, [MapNumber]
	cp [hl]
	jr z, asm_2a3cd
	dec hl

.asm_2a3f2
	ld a, [hli]
	ld b, a
	ld c, [hl]
	ret
; 2a3f6

Function2a3f6: ; 2a3f6
	ld a, [$dfe4]
	ld [$dfe6], a
	ld a, [$dfe5]
	ld [$dfe7], a
	ld a, [MapNumber]
	ld [$dfe4], a
	ld a, [MapGroup]
	ld [$dfe5], a
	ret
; 2a40f

INCBIN "baserom.gbc",$2a40f,$2a4a0 - $2a40f

Function2a4a0: ; 2a4a0
	and a
	jr z, .asm_2a4a9
	cp $fc
	jr nc, .asm_2a4a9
	and a
	ret

.asm_2a4a9
	scf
	ret
; 2a4ab

Function2a4ab: ; 2a4ab
	callba Function90439
	ld d, b
	ld e, c
	ld hl, WildMons1
	ld bc, $002f
	call Function2a288
	jr c, .asm_2a4c6
	ld hl, WildMons3
	call Function2a288
	jr nc, .asm_2a514

.asm_2a4c6
	push hl
	ld bc, $000d
	add hl, bc
	ld a, [TimeOfDay]
	ld bc, $000e
	call AddNTimes
.asm_2a4d4
	call Random
	and $3
	jr z, .asm_2a4d4
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	inc hl
	ld c, [hl]
	pop hl
	ld de, $0005
	add hl, de
	inc hl
	ld b, $4
.asm_2a4eb
	ld a, [hli]
	cp c
	jr z, .asm_2a514
	inc hl
	dec b
	jr nz, .asm_2a4eb
	push bc
	dec c
	ld a, c
	call CheckSeenMon
	pop bc
	jr nz, .asm_2a514
	ld de, StringBuffer1
	call CopyName1
	ld a, c
	ld [$d265], a
	call GetPokemonName
	ld hl, $651a
	call PrintText
	xor a
	ld [ScriptVar], a
	ret

.asm_2a514
	ld a, $1
	ld [ScriptVar], a
	ret
; 2a51a

INCBIN "baserom.gbc",$2a51a,$2a51f - $2a51a

Function2a51f: ; 2a51f
	callba Function90439
	ld d, b
	ld e, c
	ld hl, WildMons1
	ld bc, $002f
	call Function2a288
	jr c, .asm_2a538
	ld hl, WildMons3
	call Function2a288

.asm_2a538
	ld bc, $0005
	add hl, bc
	ld a, [TimeOfDay]
	inc a
	ld bc, $000e
.asm_2a543
	dec a
	jr z, .asm_2a549
	add hl, bc
	jr .asm_2a543

.asm_2a549
	call Random
	and $3
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	inc hl
	ld a, [hl]
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, StringBuffer4
	ld bc, $000b
	jp CopyBytes
; 2a567

Function2a567: ; 2a567
	callba Function90439
	ld hl, $5999
	ld a, d
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, $e
	call GetFarHalfword
.asm_2a57c
	dec e
	jr z, .asm_2a58b
.asm_2a57f
	ld a, $e
	call GetFarByte
	inc hl
	cp $ff
	jr nz, .asm_2a57f
	jr .asm_2a57c

.asm_2a58b
	ld a, $e
	call GetFarByte
	inc hl
	cp $50
	jr nz, .asm_2a58b
	ld a, $e
	call GetFarByte
	inc hl
	ld bc, $0002
	cp $0
	jr z, .asm_2a5b3
	ld bc, $0006
	cp $1
	jr z, .asm_2a5b3
	ld bc, $0003
	cp $2
	jr z, .asm_2a5b3
	ld bc, $0007

.asm_2a5b3
	ld e, $0
	push hl
.asm_2a5b6
	inc e
	add hl, bc
	ld a, $e
	call GetFarByte
	cp $ff
	jr nz, .asm_2a5b6
	pop hl
.asm_2a5c2
	call Random
	and $7
	cp e
	jr nc, .asm_2a5c2
	inc a
.asm_2a5cb
	dec a
	jr z, .asm_2a5d1
	add hl, bc
	jr .asm_2a5cb

.asm_2a5d1
	inc hl
	ld a, $e
	call GetFarByte
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, StringBuffer4
	ld bc, $000b
	jp CopyBytes
; 2a5e9


WildMons1: ; 0x2a5e9
INCLUDE "stats/wild/johto_grass.asm"

WildMons2: ; 0x2b11d
INCLUDE "stats/wild/johto_water.asm"

WildMons3: ; 0x2b274
INCLUDE "stats/wild/kanto_grass.asm"

WildMons4: ; 0x2b7f7
INCLUDE "stats/wild/kanto_water.asm"

WildMons5: ; 0x2b8d0
INCLUDE "stats/wild/swarm_grass.asm"

WildMons6: ; 0x2b92f
INCLUDE "stats/wild/swarm_water.asm"


Function2b930: ; 2b930
	callba UpdateEnemyMonInParty
	ld hl, PartyMon1CurHP
	call Function2b995
	push bc
	ld hl, OTPartyMon1CurHP
	call Function2b995
	ld a, c
	pop bc
	cp c
	jr z, .asm_2b94c
	jr c, .asm_2b97f
	jr .asm_2b976

.asm_2b94c
	call Function2b9e1
	jr z, .asm_2b98a
	ld a, e
	cp $1
	jr z, .asm_2b976
	cp $2
	jr z, .asm_2b97f
	ld hl, PartyMon1CurHP
	call Function2b9a6
	push de
	ld hl, OTPartyMon1CurHP
	call Function2b9a6
	pop hl
	ld a, d
	cp h
	jr c, .asm_2b976
	jr z, .asm_2b970
	jr .asm_2b97f

.asm_2b970
	ld a, e
	cp l
	jr z, .asm_2b98a
	jr nc, .asm_2b97f

.asm_2b976
	ld a, [$d0ee]
	and $f0
	ld [$d0ee], a
	ret

.asm_2b97f
	ld a, [$d0ee]
	and $f0
	add $1
	ld [$d0ee], a
	ret

.asm_2b98a
	ld a, [$d0ee]
	and $f0
	add $2
	ld [$d0ee], a
	ret
; 2b995

Function2b995: ; 2b995
	ld c, $0
	ld b, $3
	ld de, $002f
.asm_2b99c
	ld a, [hli]
	or [hl]
	jr nz, .asm_2b9a1
	inc c

.asm_2b9a1
	add hl, de
	dec b
	jr nz, .asm_2b99c
	ret
; 2b9a6

Function2b9a6: ; 2b9a6
	ld de, $0000
	ld c, $3
.asm_2b9ab
	ld a, [hli]
	or [hl]
	jr z, .asm_2b9d7
	dec hl
	xor a
	ld [hProduct], a
	ld a, [hli]
	ld [hMultiplicand], a
	ld a, [hli]
	ld [$ffb5], a
	xor a
	ld [$ffb6], a
	ld a, [hli]
	ld b, a
	ld a, [hld]
	srl b
	rr a
	srl b
	rr a
	ld [hMultiplier], a
	ld b, $4
	call Divide
	ld a, [$ffb6]
	add e
	ld e, a
	ld a, [$ffb5]
	adc d
	ld d, a
	dec hl

.asm_2b9d7
	push de
	ld de, $002f
	add hl, de
	pop de
	dec c
	jr nz, .asm_2b9ab
	ret
; 2b9e1

Function2b9e1: ; 2b9e1
	ld hl, PartyMon1CurHP
	call Function2ba01
	jr nz, .asm_2b9f2
	ld hl, OTPartyMon1CurHP
	call Function2ba01
	ld e, $1
	ret

.asm_2b9f2
	ld hl, OTPartyMon1CurHP
	call Function2ba01
	ld e, $0
	ret nz
	ld e, $2
	ld a, $1
	and a
	ret
; 2ba01

Function2ba01: ; 2ba01
	ld d, $3
.asm_2ba03
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	or b
	jr z, .asm_2ba10
	ld a, [hli]
	cp b
	ret nz
	ld a, [hld]
	cp c
	ret nz

.asm_2ba10
	push de
	ld de, $002e
	add hl, de
	pop de
	dec d
	jr nz, .asm_2ba03
	ret
; 2ba1a


ChrisBackpic: ; 2ba1a
INCBIN "gfx/misc/player.lz"
; 2bba1

db 0, 0, 0, 0, 0, 0, 0, 0, 0 ; filler

DudeBackpic: ; 2bbaa
INCBIN "gfx/misc/dude.lz"
; 2bce1


SECTION "bankB", ROMX, BANK[$B]

Function2c000: ; 2c000
	ld a, $e4
	ld [rOBP0], a
	call Function2c165
	call Function2c01c
	ld a, [IsInBattle]
	dec a
	ret z
	jp Function2c03a
; 2c012



Function2c012: ; 2c012
	ld a, $e4
	ld [rOBP0], a
	call Function2c165
	jp Function2c03a
; 2c01c

Function2c01c: ; 2c01c
	call Function2c0ad
	ld hl, PartyMon1CurHP
	ld de, PartyCount
	call Function2c059
	ld a, $60
	ld hl, $cfc4
	ld [hli], a
	ld [hl], a
	ld a, $8
	ld [$d003], a
	ld hl, Sprites
	jp Function2c143
; 2c03a



Function2c03a: ; 2c03a
	call Function2c0c5
	ld hl, OTPartyMon1CurHP
	ld de, OTPartyCount
	call Function2c059
	ld hl, $cfc4
	ld a, $48
	ld [hli], a
	ld [hl], $20
	ld a, $f8
	ld [$d003], a
	ld hl, $c418
	jp Function2c143
; 2c059


Function2c059: ; 2c059
	ld a, [de]
	push af
	ld de, Buffer1
	ld c, $6
	ld a, $34
.asm_2c062
	ld [de], a
	inc de
	dec c
	jr nz, .asm_2c062
	pop af
	ld de, Buffer1
.asm_2c06b
	push af
	call Function2c075
	inc de
	pop af
	dec a
	jr nz, .asm_2c06b
	ret
; 2c075

Function2c075: ; 2c075
	ld a, [hli]
	and a
	jr nz, .asm_2c07f
	ld a, [hl]
	and a
	ld b, $33
	jr z, .asm_2c08b

.asm_2c07f
	dec hl
	dec hl
	dec hl
	ld a, [hl]
	and a
	ld b, $32
	jr nz, .asm_2c08e
	dec b
	jr .asm_2c08e

.asm_2c08b
	dec hl
	dec hl
	dec hl

.asm_2c08e
	ld a, b
	ld [de], a
	ld bc, $0032
	add hl, bc
	ret
; 2c095

DrawPlayerExpBar: ; 2c095
	ld hl, .data_2c0a9
	ld de, $d004
	ld bc, 4
	call CopyBytes
	ld hl, $c57a
	ld de, -1
	jr Function2c0f1

.data_2c0a9
	db $73
	db $77
	db $6f
	db $76
; 2c0ad

Function2c0ad: ; 2c0ad
	ld hl, .data_2c0c1
	ld de, $d004
	ld bc, 4
	call CopyBytes
	ld hl, $c57a
	ld de, -1
	jr Function2c0f1

.data_2c0c1
	db $73, $5c, $6f, $76
; 2c0c5

Function2c0c5: ; 2c0c5
	ld hl, .data_2c0ed
	ld de, $d004
	ld bc, 4
	call CopyBytes
	ld hl, $c4c9
	ld de, 1
	call Function2c0f1
	ld a, [IsInBattle]
	dec a
	ret nz
	ld a, [TempEnemyMonSpecies]
	dec a
	call CheckCaughtMon
	ret z
	ld hl, $c4b5
	ld [hl], $5d
	ret

.data_2c0ed
	db $6d
	db $74
	db $78
	db $76
; 2c0f1

Function2c0f1: ; 2c0f1
	ld a, [$d004]
	ld [hl], a
	ld bc, $0014
	add hl, bc
	ld a, [StartFlypoint]
	ld [hl], a
	ld b, $8
.asm_2c0ff
	add hl, de
	ld a, [MovementBuffer]
	ld [hl], a
	dec b
	jr nz, .asm_2c0ff
	add hl, de
	ld a, [EndFlypoint]
	ld [hl], a
	ret
; 2c10d


Function2c10d: ; 2c10d
	call Function2c165
	ld hl, PartyMon1CurHP
	ld de, PartyCount
	call Function2c059
	ld hl, $cfc4
	ld a, $50
	ld [hli], a
	ld [hl], $40
	ld a, $8
	ld [$d003], a
	ld hl, Sprites
	call Function2c143
	ld hl, OTPartyMon1CurHP
	ld de, OTPartyCount
	call Function2c059
	ld hl, $cfc4
	ld a, $50
	ld [hli], a
	ld [hl], $68
	ld hl, $c418
	jp Function2c143
; 2c143

Function2c143: ; 2c143
	ld de, Buffer1
	ld c, $6
.asm_2c148
	ld a, [$cfc5]
	ld [hli], a
	ld a, [$cfc4]
	ld [hli], a
	ld a, [de]
	ld [hli], a
	ld a, $3
	ld [hli], a
	ld a, [$cfc4]
	ld b, a
	ld a, [$d003]
	add b
	ld [$cfc4], a
	inc de
	dec c
	jr nz, .asm_2c148
	ret
; 2c165

Function2c165: ; 2c165
	ld de, $4172
	ld hl, $8310
	ld bc, $0b04
	call Functiondc9
	ret
; 2c172

INCBIN "baserom.gbc",$2c172,$2c1b2 - $2c172


Function2c1b2: ; 2c1b2
	call WhiteBGMap
	call Functione5f
	ld hl, $c4de
	ld b, $9
	ld c, $e
	call TextBox
	ld hl, $c508
	ld de, PlayerName
	call PlaceString
	ld hl, $c56c
	ld de, $d26b
	call PlaceString
	ld hl, $c549
	ld a, $69
	ld [hli], a
	ld [hl], $6a
	callba Function2c10d
	ld b, $8
	call GetSGBLayout
	call Function32f9
	ld a, $e4
	ld [rOBP0], a
	ret
; 2c1ef


TrainerClassNames: ; 2c1ef
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "RIVAL@"
	db "#MON PROF.@"
	db "ELITE FOUR@"
	db $4a, " TRAINER@"
	db "ELITE FOUR@"
	db "ELITE FOUR@"
	db "ELITE FOUR@"
	db "CHAMPION@"
	db "LEADER@"
	db "LEADER@"
	db "LEADER@"
	db "SCIENTIST@"
	db "LEADER@"
	db "YOUNGSTER@"
	db "SCHOOLBOY@"
	db "BIRD KEEPER@"
	db "LASS@"
	db "LEADER@"
	db "COOLTRAINER@"
	db "COOLTRAINER@"
	db "BEAUTY@"
	db "#MANIAC@"
	db "ROCKET@"
	db "GENTLEMAN@"
	db "SKIER@"
	db "TEACHER@"
	db "LEADER@"
	db "BUG CATCHER@"
	db "FISHER@"
	db "SWIMMER♂@"
	db "SWIMMER♀@"
	db "SAILOR@"
	db "SUPER NERD@"
	db "RIVAL@"
	db "GUITARIST@"
	db "HIKER@"
	db "BIKER@"
	db "LEADER@"
	db "BURGLAR@"
	db "FIREBREATHER@"
	db "JUGGLER@"
	db "BLACKBELT@"
	db "ROCKET@"
	db "PSYCHIC@"
	db "PICNICKER@"
	db "CAMPER@"
	db "ROCKET@"
	db "SAGE@"
	db "MEDIUM@"
	db "BOARDER@"
	db "#FAN@"
	db "KIMONO GIRL@"
	db "TWINS@"
	db "#FAN@"
	db $4a, " TRAINER@"
	db "LEADER@"
	db "OFFICER@"
	db "ROCKET@"
	db "MYSTICALMAN@"



; no known jump sources
Function2c41a: ; 2c41a (b:441a)
	ld a, c
	ld de, $3
	ld hl, $442c
	call IsInArray
	jp nc, Function2c545
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 2c42c (b:442c)

INCBIN "baserom.gbc",$2c42c,$2c487 - $2c42c
	ld a, [EnemyScreens] ; $c700
	bit 3, a
	ret
	ld a, [EnemySubStatus4] ; $c670
	bit 1, a
	ret
	ld a, [EnemySubStatus4] ; $c670
	bit 2, a
	ret
	ld a, [PlayerSubStatus3] ; $c66a
	bit 7, a
	ret nz
	ld a, [PlayerScreens] ; $c6ff
	bit 2, a
	ret
	ld a, [EnemySubStatus5] ; $c671
	bit 3, a
	ret
	ld a, [EnemyScreens] ; $c700
	bit 4, a
	ret
; 2c4b1 (b:44b1)

INCBIN "baserom.gbc",$2c4b1,$2c4b7 - $2c4b1
	ld a, [PlayerSubStatus4] ; $c66b
	bit 7, a
	ret
	ld a, [PlayerDisableCount] ; $c675
	and a
	ret
	ld a, [PlayerSubStatus5] ; $c66c
	bit 4, a
	ret
	ld a, [EnemyMonStatus] ; $d214
	and $7
	jr z, .asm_2c541
	jr Function2c545
	ld a, [EnemySubStatus5] ; $c671
	bit 7, a
	ret
; 2c4d7 (b:44d7)

INCBIN "baserom.gbc",$2c4d7,$2c4e3 - $2c4d7
	ld a, [PlayerScreens] ; $c6ff
	bit 0, a
	ret
	ld a, [PlayerSubStatus1] ; $c668
	bit 3, a
	ret
	ld a, [PlayerSubStatus1] ; $c668
	bit 4, a
	ret
	ld a, [Weather] ; $c70a
	cp $3
	jr z, .asm_2c541
	jr Function2c545
	callba Function0x377f5
	jr c, .asm_2c541
	ld a, [PlayerSubStatus1] ; $c668
	bit 7, a
	ret
	ld a, [EnemyScreens] ; $c700
	bit 2, a
	ret
	ld a, [Weather] ; $c70a
	cp $1
	jr z, .asm_2c541
	jr Function2c545
	ld a, [Weather] ; $c70a
	cp $2
	jr z, .asm_2c541
	jr Function2c545
	ld a, [BattleMonStatus] ; $c63a
	and $7
	jr z, .asm_2c541
	jr Function2c545
	ld a, [PlayerSubStatus3] ; $c66a
	bit 7, a
	ret
	ld a, [EnemyScreens] ; $c700
	bit 5, a
	ret
	callba AICheckEnemyMaxHP
	jr nc, Function2c545
.asm_2c541
	ld a, $1
	and a
	ret

; known jump sources: 2c424 (b:4424), 2c4cf (b:44cf), 2c4fc (b:44fc), 2c519 (b:4519), 2c522 (b:4522), 2c52b (b:452b), 2c53f (b:453f)
Function2c545: ; 2c545 (b:4545)
	xor a
	ret

Function2c547: ; 2c547
	ld hl, $45ef
	call PrintText
	call Function1dcf
	jr c, .asm_2c5c3
	ld hl, $45f4
	call PrintText
	callba Function50000
	jr c, .asm_2c5c3
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_2c5bc
	ld a, [CurPartyMon]
	ld hl, PartyMon1Move2
	ld bc, $0030
	call AddNTimes
	ld a, [hl]
	and a
	jr z, .asm_2c5ca
	ld hl, $45ea
	call PrintText
	call Function1d6e
	callba Function12f5b
	push af
	call Function2b74
	pop af
	jr c, .asm_2c5c3
	ld a, [$cfa9]
	push af
	ld a, [CurSpecies]
	ld [$d265], a
	call GetMoveName
	ld hl, $45d6
	call PrintText
	call Function1dcf
	pop bc
	jr c, .asm_2c5c3
	call Function2c5f9
	call WaitSFX
	ld de, $0097
	call PlaySFX
	call WaitSFX
	ld hl, $45db
	call PrintText
	ret

.asm_2c5bc
	ld hl, $45e0
	call PrintText
	ret

.asm_2c5c3
	ld hl, $45e5
	call PrintText
	ret

.asm_2c5ca
	ld hl, $45d1
	call PrintText
	ret
; 2c5d1

INCBIN "baserom.gbc",$2c5d1,$2c5f9 - $2c5d1

Function2c5f9: ; 2c5f9
	ld a, b
	push bc
	dec a
	ld c, a
	ld b, $0
	ld hl, PartyMon1Move1
	add hl, bc
	ld a, [CurPartyMon]
	ld bc, $0030
	call AddNTimes
	pop bc
	push bc
	inc b
.asm_2c60f
	ld a, b
	cp $5
	jr z, .asm_2c61b
	inc hl
	ld a, [hld]
	ld [hl], a
	inc hl
	inc b
	jr .asm_2c60f

.asm_2c61b
	xor a
	ld [hl], a
	pop bc
	ld a, b
	push bc
	dec a
	ld c, a
	ld b, $0
	ld hl, PartyMon1PP
	add hl, bc
	ld a, [CurPartyMon]
	ld bc, $0030
	call AddNTimes
	pop bc
	inc b
.asm_2c633
	ld a, b
	cp $5
	jr z, .asm_2c63f
	inc hl
	ld a, [hld]
	ld [hl], a
	inc hl
	inc b
	jr .asm_2c633

.asm_2c63f
	xor a
	ld [hl], a
	ret
; 2c642


; no known jump sources
Function2c642: ; 2c642 (b:4642)
	ld de, OverworldMap ; $c800
	ld a, $1
	ld [de], a
	inc de
	ld a, $1
	call GetSRAMBank
	ld hl, $a009
	ld a, [hli]
	ld [de], a
	ld b, a
	inc de
	ld a, [hl]
	ld [de], a
	ld c, a
	inc de
	push bc
	ld hl, $a00b
	ld bc, $b
	call CopyBytes
	push de
	ld hl, $aa27
	ld b, $20
	call CountSetBits
	pop de
	pop bc
	ld a, [$d265]
	ld [de], a
	inc de
	call CloseSRAM
	call Random
	and $1
	ld [de], a
	inc de
	call Function2c6ac
	ld [de], a
	inc de
	ld a, c
	ld c, b
	ld b, a
	call Function2c6ac
	ld [de], a
	inc de
	ld a, $0
	call GetSRAMBank
	ld a, [$abe4]
	ld [de], a
	inc de
	ld a, [$abe5]
	ld [de], a
	ld a, $14
	ld [$ca00], a
	call CloseSRAM
	ld hl, OverworldMap ; $c800
	ld de, $c950
	ld bc, $14
	jp CopyBytes

; known jump sources: 2c67d (b:467d), 2c685 (b:4685)
Function2c6ac: ; 2c6ac (b:46ac)
	push de
	call Random
	cp $19
	jr c, .asm_2c6cc
	call Random
	and $7
	ld d, a
	rl d
	ld e, $80
.asm_2c6be
	rlc e
	dec a
	jr nz, .asm_2c6be
	ld a, e
	and c
	jr z, .asm_2c6c9
	ld a, $1
.asm_2c6c9
	add d
	jr .asm_2c706
.asm_2c6cc
	call Random
	cp $32
	jr c, .asm_2c6ed
	call Random
	and $3
	ld d, a
	rl d
	ld e, $80
.asm_2c6dd
	rlc e
	dec a
	jr nz, .asm_2c6dd
	ld a, e
	and b
	jr z, .asm_2c6e8
	ld a, $1
.asm_2c6e8
	add d
	add $10
	jr .asm_2c706
.asm_2c6ed
	call Random
	cp $32
	jr c, .asm_2c6fd
	ld a, b
	swap a
	and $7
	add $18
	jr .asm_2c706
.asm_2c6fd
	ld a, b
	and $80
	ld a, $20
	jr z, .asm_2c706
	ld a, $21
.asm_2c706
	pop de
	ret

; no known jump sources
Function2c708: ; 2c708 (b:4708)
	ld a, c
	cp $25
	jr nc, asm_2c722
	ld hl, $4725
	ld b, $0
	add hl, bc
	ld c, [hl]
	ret

; no known jump sources
Function2c715: ; 2c715 (b:4715)
	ld a, c
	cp $25
	jr nc, asm_2c722
	ld hl, $474a
	ld b, $0
	add hl, bc
	ld c, [hl]
	ret

; known jump sources: 2c70b (b:470b), 2c718 (b:4718)
asm_2c722: ; 2c722 (b:4722)
	ld c, $4
	ret
; 2c725 (b:4725)

INCBIN "baserom.gbc",$2c725,$2c76f - $2c725

; no known jump sources
Function2c76f: ; 2c76f (b:476f)
	ld a, $1
	ld [$FF00+$aa], a
	call Function2c8d3
	ld a, $0
	ld [$FF00+$aa], a
	ret nc
	call Function1bee
	call WaitBGMap
	ld a, [CurItem] ; $d106
	dec a
	ld [$d107], a
	ld hl, TMsHMs ; $d859
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [$d10d], a
	call Function2c798
	scf
	ret

; known jump sources: 2c793 (b:4793)
Function2c798: ; 2c798 (b:4798)
	ld a, [CurItem] ; $d106
	ld c, a
	callab GetNumberedTMHM
	ld a, c
	ld [CurItem], a ; $d106
	ret

; known jump sources: 2c7b6 (b:47b6), 2cb0c (b:4b0c)
Function2c7a7: ; 2c7a7 (b:47a7)
	ld a, [CurItem] ; $d106
	ld c, a
	callab GetTMHMNumber
	ld a, c
	ld [$d265], a
	ret

; known jump sources: 2c7cd (b:47cd)
Function2c7b6: ; 2c7b6 (b:47b6)
	call Function2c7a7
	ld a, $f
	call Predef
	ret

Function2c7bf: ; 2c7bf (b:47bf)
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	res 4, [hl]
	ld a, [CurItem] ; $d106
	cp $bf
	jr c, .asm_2c7f5
	call Function2c7b6
	ld a, [$d265]
	ld [$d262], a
	call GetMoveName
	call CopyName1
	ld hl, $48bf
	ld a, [CurItem] ; $d106
	cp $f3
	jr c, .asm_2c7e9
	ld hl, $48c4
.asm_2c7e9
	call PrintText
	ld hl, $48c9
	call PrintText
	call Function1dcf
.asm_2c7f5
	pop bc
	ld a, b
	ld [Options], a ; $cfcc
	ret


Function2c7fb: ; 2c7fb
	ld hl, StringBuffer2
	ld de, $d066
	ld bc, $000c
	call CopyBytes
	call WhiteBGMap

Function2c80a: ; 2c80a
	callba Function5004f
	callba Function50405
	callba Function503e0
	ld a, $3
	ld [PartyMenuActionText], a
.asm_2c821
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9
	call DelayFrame
	callba PartyMenuSelect
	push af
	ld a, [CurPartySpecies]
	cp EGG
	pop bc
	jr z, .asm_2c854
	push bc
	ld hl, $d066
	ld de, StringBuffer2
	ld bc, $000c
	call CopyBytes
	pop af
	ret

.asm_2c854
	push hl
	push de
	push bc
	push af
	ld de, SFX_WRONG
	call PlaySFX
	call WaitSFX
	pop af
	pop bc
	pop de
	pop hl
	jr .asm_2c821
; 2c867

Function2c867: ; 2c867
	ld a, $e
	call Predef
	push bc
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	call GetNick
	pop bc
	ld a, c
	and a
	jr nz, .asm_2c88b
	push de
	ld de, $19
	call PlaySFX
	pop de
	ld hl, $48ce
	call PrintText
	jr .asm_2c8b6
.asm_2c88b
	callab Functionf9ea
	jr c, .asm_2c8b6
	ld a, $0
	call Predef
	ld a, b
	and a
	jr z, .asm_2c8b6
	callba Function106049
	ld a, [CurItem] ; $d106
	call IsHM
	ret c
	ld c, $5
	callab ChangeHappiness
	call Function2cb0c
	jr .asm_2c8bd
.asm_2c8b6
	and a
	ret
; 2c8b8 (b:48b8)

INCBIN "baserom.gbc",$2c8b8,$2c8bd - $2c8b8
.asm_2c8bd
	scf
	ret
; 2c8bf (b:48bf)

INCBIN "baserom.gbc",$2c8bf,$2c8d3 - $2c8bf

; known jump sources: 2c773 (b:4773)
Function2c8d3: ; 2c8d3 (b:48d3)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function2c9e2
	ld a, $2
	ld [$cfa1], a
	ld a, $7
	ld [$cfa2], a
	ld a, $1
	ld [$cfa4], a
	ld a, $5
	sub d
	inc a
	cp $6
	jr nz, .asm_2c8f1
	dec a
.asm_2c8f1
	ld [$cfa3], a
	ld a, $c
	ld [$cfa5], a
	xor a
	ld [$cfa6], a
	ld a, $20
	ld [$cfa7], a
	ld a, $f3
	ld [$cfa8], a
	ld a, [$d0dc]
	inc a
	ld [$cfa9], a
	ld a, $1
	ld [$cfaa], a
	jr Function2c946

; known jump sources: 2c95b (b:495b), 2c971 (b:4971), 2c9bb (b:49bb), 2c9ce (b:49ce)
Function2c915: ; 2c915 (b:4915)
	call Function2c9e2
	call Function1bc9
	ld b, a
	ld a, [$cfa9]
	dec a
	ld [$d0dc], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [$cfa6]
	bit 7, a
	jp nz, Function2c9b1
	ld a, b
	ld [$cf73], a
	bit 0, a
	jp nz, Function2c974
	bit 1, a
	jp nz, Function2c9a5
	bit 4, a
	jp nz, Function2c9af
	bit 5, a
	jp nz, Function2c9af

; known jump sources: 2c913 (b:4913), 2c9c2 (b:49c2), 2c9df (b:49df)
Function2c946: ; 2c946 (b:4946)
	call Function2c98a
	jp nc, Function2c9af
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	ld a, [CurItem] ; $d106
	cp $3a
	jr nc, Function2c915
	ld [$d265], a
	ld a, $f
	call Predef
	ld a, [$d265]
	ld [CurSpecies], a ; $cf60
	ld hl, $c5b9
	call PrintMoveDesc
	jp Function2c915

; known jump sources: 2c934 (b:4934)
Function2c974: ; 2c974 (b:4974)
	call Function2cad6
	call Function2cb2a
	ld a, [$cfa9]
	dec a
	ld b, a
	ld a, [$d0e2]
	add b
	ld b, a
	ld a, [$d265]
	cp b
	jr z, asm_2c9a8

; known jump sources: 2c946 (b:4946)
Function2c98a: ; 2c98a (b:498a)
	call Function2cab5
	ld a, [$cfa9]
	ld b, a
.asm_2c991
	inc c
	ld a, c
	cp $3a
	jr nc, .asm_2c99f
	ld a, [hli]
	and a
	jr z, .asm_2c991
	dec b
	jr nz, .asm_2c991
	ld a, c
.asm_2c99f
	ld [CurItem], a ; $d106
	cp $ff
	ret

; known jump sources: 2c939 (b:4939)
Function2c9a5: ; 2c9a5 (b:49a5)
	call Function2cad6

; known jump sources: 2c988 (b:4988)
asm_2c9a8: ; 2c9a8 (b:49a8)
	ld a, $2
	ld [$cf73], a
	and a
	ret

; known jump sources: 2c93e (b:493e), 2c943 (b:4943), 2c949 (b:4949)
Function2c9af: ; 2c9af (b:49af)
	and a
	ret

; known jump sources: 2c92b (b:492b)
Function2c9b1: ; 2c9b1 (b:49b1)
	ld a, b
	bit 7, a
	jr nz, .asm_2c9c5
	ld hl, $d0e2
	ld a, [hl]
	and a
	jp z, Function2c915
	dec [hl]
	call Function2c9e2
	jp Function2c946
.asm_2c9c5
	call Function2cab5
	ld b, $5
.asm_2c9ca
	inc c
	ld a, c
	cp $3a
	jp nc, Function2c915
	ld a, [hli]
	and a
	jr z, .asm_2c9ca
	dec b
	jr nz, .asm_2c9ca
	ld hl, $d0e2
	inc [hl]
	call Function2c9e2
	jp Function2c946

; known jump sources: 2c8d6 (b:48d6), 2c915 (b:4915), 2c9bf (b:49bf), 2c9dc (b:49dc)
Function2c9e2: ; 2c9e2 (b:49e2)
	ld a, [BattleType] ; $d230
	cp $3
	jp z, Function2caca
	ld hl, $c4cd
	ld bc, $a0f
	ld a, $7f
	call ClearBox
	call Function2cab5
	ld d, $5
.asm_2c9fa
	inc c
	ld a, c
	cp $3a
	jr nc, .asm_2ca77
	ld a, [hli]
	and a
	jr z, .asm_2c9fa
	ld b, a
	ld a, c
	ld [$d265], a
	push hl
	push de
	push bc
	call Function2ca86
	push hl
	ld a, [$d265]
	cp $33
	jr nc, .asm_2ca22
	ld de, $d265
	ld bc, $8102
	call PrintNum
	jr .asm_2ca38
.asm_2ca22
	push af
	sub $32
	ld [$d265], a
	ld [hl], $87
	inc hl
	ld de, $d265
	ld bc, $4102
	call PrintNum
	pop af
	ld [$d265], a
.asm_2ca38
	ld a, $f
	call Predef
	ld a, [$d265]
	ld [$d262], a
	call GetMoveName
	pop hl
	ld bc, $3
	add hl, bc
	push hl
	call PlaceString
	pop hl
	pop bc
	ld a, c
	push bc
	cp $33
	jr nc, .asm_2ca6f
	ld bc, $1d
	add hl, bc
	ld [hl], $f1
	inc hl
	ld a, $f6
	pop bc
	push bc
	ld a, b
	ld [$d265], a
	ld de, $d265
	ld bc, $102
	call PrintNum
.asm_2ca6f
	pop bc
	pop de
	pop hl
	dec d
	jr nz, .asm_2c9fa
	jr .asm_2ca85
.asm_2ca77
	call Function2ca86
	inc hl
	inc hl
	inc hl
	push de
	ld de, $4aae
	call PlaceString
	pop de
.asm_2ca85
	ret

; known jump sources: 2ca0c (b:4a0c), 2ca77 (b:4a77)
Function2ca86: ; 2ca86 (b:4a86)
	ld hl, $c4a5
	ld bc, $28
	ld a, $6
	sub d
	ld e, a
.asm_2ca90
	add hl, bc
	dec e
	jr nz, .asm_2ca90
	ret
; 2ca95 (b:4a95)

INCBIN "baserom.gbc",$2ca95,$2cab5 - $2ca95

; known jump sources: 2c98a (b:498a), 2c9c5 (b:49c5), 2c9f5 (b:49f5)
Function2cab5: ; 2cab5 (b:4ab5)
	ld hl, TMsHMs ; $d859
	ld a, [$d0e2]
	ld b, a
	inc b
	ld c, $0
.asm_2cabf
	inc c
	ld a, [hli]
	and a
	jr z, .asm_2cabf
	dec b
	jr nz, .asm_2cabf
	dec hl
	dec c
	ret

; known jump sources: 2c9e7 (b:49e7)
Function2caca: ; 2caca (b:4aca)
	ld hl, $c4e5
	push de
	ld de, $4aae
	call PlaceString
	pop de
	ret

; known jump sources: 2c974 (b:4974), 2c9a5 (b:49a5)
Function2cad6: ; 2cad6 (b:4ad6)
	push de
	ld de, $8
	call PlaySFX
	pop de
	ret
; 2cadf (b:4adf)

INCBIN "baserom.gbc",$2cadf,$2cb0c - $2cadf

; known jump sources: 2c8b1 (b:48b1)
Function2cb0c: ; 2cb0c (b:4b0c)
	call Function2c7a7
	ld a, [$d265]
	dec a
	ld hl, TMsHMs ; $d859
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	and a
	ret z
	dec a
	ld [hl], a
	ret nz
	ld a, [$d0e2]
	and a
	ret z
	dec a
	ld [$d0e2], a
	ret

; known jump sources: 2c977 (b:4977)
Function2cb2a: ; 2cb2a (b:4b2a)
	ld b, $0
	ld c, $39
	ld hl, TMsHMs ; $d859
.asm_2cb31
	ld a, [hli]
	and a
	jr z, .asm_2cb36
	inc b
.asm_2cb36
	dec c
	jr nz, .asm_2cb31
	ld a, b
	ld [$d265], a
	ret


PrintMoveDesc: ; 2cb3e
	push hl
	ld hl, MoveDescriptions
	ld a, [CurSpecies]
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld e, a
	ld d, [hl]
	pop hl
	jp PlaceString
; 2cb52

MoveDescriptions: ; 2cb52
INCLUDE "battle/moves/move_descriptions.asm"
; 2ed44


Function2ed44: ; 2ed44
	call ConvertBerriesToBerryJuice
	ld hl, PartyMon1PokerusStatus
	ld a, [PartyCount]
	ld b, a
	ld de, $0030
.loopMons
	ld a, [hl]
	and $f
	jr nz, .monHasActivePokerus
	add hl, de
	dec b
	jr nz, .loopMons
	ld hl, StatusFlags2
	bit 6, [hl]
	ret z
	call Random
	ld a, [hRandomAdd]
	and a
	ret nz
	ld a, [hRandomSub]
	cp $3
	ret nc                 ; 3/65536 chance (00 00, 00 01 or 00 02)
	ld a, [PartyCount]
	ld b, a
.randomMonSelectLoop
	call Random
	and $7
	cp b
	jr nc, .randomMonSelectLoop
	ld hl, PartyMon1PokerusStatus
	call GetPartyLocation  ; get pokerus byte of random mon
	ld a, [hl]
	and $f0
	ret nz                 ; if it already has pokerus, do nothing
.randomPokerusLoop
	call Random
	and a
	jr z, .randomPokerusLoop
	ld b, a
	and $f0
	jr z, .asm_2ed91
	ld a, b
	and $7
	inc a

.asm_2ed91
	ld b, a
	swap b
	and $3
	inc a
	add b
	ld [hl], a
	ret

.monHasActivePokerus
	call Random
	cp $55
	ret nc              ; 1/3 chance
	ld a, [PartyCount]
	cp $1
	ret z               ; only one mon, nothing to do
	ld c, [hl]
	ld a, b
	cp $2
	jr c, .checkPreviousMonsLoop    ; no more mons after this one, go backwards
	call Random
	cp $80
	jr c, .checkPreviousMonsLoop    ; 1/2 chance, go backwards
.checkFollowingMonsLoop
	add hl, de
	ld a, [hl]
	and a
	jr z, .infectMon
	ld c, a
	and $3
	ret z               ; if mon has cured pokerus, stop searching
	dec b               ; go on to next mon
	ld a, b
	cp $1
	jr nz, .checkFollowingMonsLoop ; no more mons left
	ret

.checkPreviousMonsLoop
	ld a, [PartyCount]
	cp b
	ret z               ; no more mons
	ld a, l
	sub e
	ld l, a
	ld a, h
	sbc d
	ld h, a
	ld a, [hl]
	and a
	jr z, .infectMon
	ld c, a
	and $3
	ret z               ; if mon has cured pokerus, stop searching
	inc b               ; go on to next mon
	jr .checkPreviousMonsLoop

.infectMon
	ld a, c
	and $f0
	ld b, a
	ld a, c
	swap a
	and $3
	inc a
	add b
	ld [hl], a
	ret
; 2ede6

; any berry held by a Shuckle may be converted to berry juice
ConvertBerriesToBerryJuice: ; 2ede6
	ld hl, StatusFlags2
	bit 6, [hl]
	ret z
	call Random
	cp $10
	ret nc              ; 1/16 chance
	ld hl, PartyMons
	ld a, [PartyCount]
.partyMonLoop
	push af
	push hl
	ld a, [hl]
	cp SHUCKLE
	jr nz, .nextMon
	ld bc, PartyMon1Item - PartyMon1Species
	add hl, bc
	ld a, [hl]
	cp BERRY
	jr z, .convertToJuice

.nextMon
	pop hl
	ld bc, PartyMon2 - PartyMon1
	add hl, bc
	pop af
	dec a
	jr nz, .partyMonLoop
	ret

.convertToJuice
	ld a, BERRY_JUICE
	ld [hl], a
	pop hl
	pop af
	ret
; 2ee18

Function2ee18: ; 2ee18
	ld a, [InLinkBattle]
	and a
	ret z
	callba Function2c1b2
	ld c, 150
	call DelayFrames
	call ClearTileMap
	call ClearSprites
	ret
; 2ee2f


Function2ee2f: ; 2ee2f
	xor a
	ld [$ffde], a
	call DelayFrame
	ld b, 6
	ld hl, PartyMon1CurHP
	ld de, PartyMon2 - PartyMon1 - 1
.asm_2ee3d
	ld a, [hli]
	or [hl]
	jr nz, .asm_2ee45
	add hl, de
	dec b
	jr nz, .asm_2ee3d

.asm_2ee45
	ld de, PartyMon1Level - PartyMon1CurHP
	add hl, de
	ld a, [hl]
	ld [BattleMonLevel], a
	ld a, PREDEF_BATTLE_TRANSITION
	call Predef
	callba Function3ed9f
	ld a, 1
	ld [hBGMapMode], a
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a
	ld [hWY], a
	ld [rWY], a
	ld [$ffde], a
	ret
; 2ee6c


PlayBattleMusic: ; 2ee6c

	push hl
	push de
	push bc

	xor a
	ld [MusicFade], a
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	call MaxVolume

	ld a, [BattleType]
	cp BATTLETYPE_SUICUNE
	ld de, MUSIC_SUICUNE_BATTLE
	jp z, .done
	cp BATTLETYPE_ROAMING
	jp z, .done

	; Are we fighting a trainer?
	ld a, [OtherTrainerClass]
	and a
	jr nz, .trainermusic

	callba RegionCheck
	ld a, e
	and a
	jr nz, .kantowild

	ld de, MUSIC_JOHTO_WILD_BATTLE
	ld a, [TimeOfDay]
	cp NITE
	jr nz, .done
	ld de, MUSIC_JOHTO_WILD_BATTLE_NIGHT
	jr .done

.kantowild
	ld de, MUSIC_KANTO_WILD_BATTLE
	jr .done

.trainermusic
	ld de, MUSIC_CHAMPION_BATTLE
	cp CHAMPION
	jr z, .done
	cp RED
	jr z, .done

	; really, they should have included admins and scientists here too...
	ld de, MUSIC_ROCKET_BATTLE
	cp GRUNTM
	jr z, .done
	cp GRUNTF
	jr z, .done

	ld de, MUSIC_KANTO_GYM_LEADER_BATTLE
	callba IsKantoGymLeader
	jr c, .done

	ld de, MUSIC_JOHTO_GYM_LEADER_BATTLE
	callba IsJohtoGymLeader
	jr c, .done

	ld de, MUSIC_RIVAL_BATTLE
	ld a, [OtherTrainerClass]
	cp RIVAL1
	jr z, .done
	cp RIVAL2
	jr nz, .othertrainer

	ld a, [OtherTrainerID]
	cp 4 ; Rival in Indigo Plateau
	jr c, .done
	ld de, MUSIC_CHAMPION_BATTLE
	jr .done

.othertrainer
	ld a, [InLinkBattle]
	and a
	jr nz, .johtotrainer

	callba RegionCheck
	ld a, e
	and a
	jr nz, .kantotrainer

.johtotrainer
	ld de, MUSIC_JOHTO_TRAINER_BATTLE
	jr .done

.kantotrainer
	ld de, MUSIC_KANTO_TRAINER_BATTLE

.done
	call PlayMusic

	pop bc
	pop de
	pop hl
	ret
; 2ef18


ClearBattleRAM: ; 2ef18
	xor a
	ld [$d0ec], a
	ld [$d0ee], a

	ld hl, $d0d8
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a

	ld [$d0e4], a
	ld [CriticalHit], a
	ld [BattleMonSpecies], a
	ld [$c664], a
	ld [CurBattleMon], a
	ld [$d232], a
	ld [TimeOfDayPal], a
	ld [PlayerTurnsTaken], a
	ld [EnemyTurnsTaken], a
	ld [EvolvableFlags], a

	ld hl, PlayerHPPal
	ld [hli], a
	ld [hl], a

	ld hl, BattleMonDVs
	ld [hli], a
	ld [hl], a

	ld hl, EnemyMonDVs
	ld [hli], a
	ld [hl], a

; Clear the entire BattleMons area
	ld hl, EnemyMoveStruct
	ld bc, $0139
	xor a
	call ByteFill

	callab Function3d867

	call Function1fbf

	ld hl, hBGMapAddress
	xor a
	ld [hli], a
	ld [hl], $98
	ret
; 2ef6e


FillBox: ; 2ef6e
; Fill $c2c6-aligned box width b height c
; with iterating tile starting from $ffad at hl.
; Predef $13

	ld de, 20

	ld a, [$c2c6]
	and a
	jr nz, .left

	ld a, [$ffad]
.x1
	push bc
	push hl

.y1
	ld [hl], a
	add hl, de
	inc a
	dec c
	jr nz, .y1

	pop hl
	inc hl
	pop bc
	dec b
	jr nz, .x1
	ret

.left
; Right-aligned.
	push bc
	ld b, 0
	dec c
	add hl, bc
	pop bc

	ld a, [$ffad]
.x2
	push bc
	push hl

.y2
	ld [hl], a
	add hl, de
	inc a
	dec c
	jr nz, .y2

	pop hl
	dec hl
	pop bc
	dec b
	jr nz, .x2
	ret
; 2ef9f



SECTION "bankC", ROMX, BANK[$C]

INCLUDE "tilesets/data_4.asm"

INCBIN "baserom.gbc",$329f0,$333f0 - $329f0


SECTION "bankD", ROMX, BANK[$D]

INCLUDE "battle/effect_commands.asm"


SECTION "bankE", ROMX, BANK[$E]

Function38000: ; 38000
	and a
	ld a, [IsInBattle]
	dec a
	ret z
	ld a, [InLinkBattle]
	and a
	ret nz
	callba Function3e8d1
	ret nz
	ld a, [PlayerSubStatus5]
	bit 7, a
	jr nz, Function38041
	ld a, [$c731]
	and a
	jr nz, Function38041
	ld hl, $55a1
	ld a, [$cfc0]
	and a
	jr nz, .asm_38032
	ld a, [TrainerClass]
	dec a
	ld bc, $0007
	call AddNTimes

.asm_38032
	bit 0, [hl]
	jp nz, Function38045
	bit 1, [hl]
	jp nz, Function38083
	bit 2, [hl]
	jp nz, Function380c1
	; fallthrough
; 38041

Function38041: ; 38041
	call Function38105
	ret
; 38045

Function38045: ; 38045
	callab Function0x34941
	ld a, [$c717]
	and $f0
	jp z, Function38041
	cp $10
	jr nz, .asm_38061
	call Random
	cp $80
	jr c, .asm_38077
	jp Function38041

.asm_38061
	cp $20
	jr nz, .asm_3806f
	call Random
	cp $c8
	jr c, .asm_38077
	jp Function38041

.asm_3806f
	call Random
	cp $a
	jp c, Function38041

.asm_38077
	ld a, [$c717]
	and $f
	inc a
	ld [$c718], a
	jp Function3844b
; 38083

Function38083: ; 38083
	callab Function0x34941
	ld a, [$c717]
	and $f0
	jp z, Function38041
	cp $10
	jr nz, .asm_3809f
	call Random
	cp $14
	jr c, .asm_380b5
	jp Function38041

.asm_3809f
	cp $20
	jr nz, .asm_380ad
	call Random
	cp $1e
	jr c, .asm_380b5
	jp Function38041

.asm_380ad
	call Random
	cp $c8
	jp c, Function38041

.asm_380b5
	ld a, [$c717]
	and $f
	inc a
	ld [$c718], a
	jp Function3844b
; 380c1

Function380c1: ; 380c1
	callab Function0x34941
	ld a, [$c717]
	and $f0
	jp z, Function38041
	cp $10
	jr nz, .asm_380dd
	call Random
	cp $32
	jr c, .asm_380f3
	jp Function38041

.asm_380dd
	cp $20
	jr nz, .asm_380eb
	call Random
	cp $80
	jr c, .asm_380f3
	jp Function38041

.asm_380eb
	call Random
	cp $32
	jp c, Function38041

.asm_380f3
	ld a, [$c717]
	and $f
	inc a
	ld [$c718], a
	jp Function3844b
; 380ff


Function380ff: ; 380ff
	ld a, [EnemySubStatus5]
	bit 7, a
	ret
; 38105


Function38105: ; 38105
	ld a, [$cfc0]
	and a
	ret nz
	ld a, [$c650]
	ld b, a
	ld a, [$c651]
	or b
	ret z
	call Function38170
	ret nc
	ld a, [TrainerClass]
	dec a
	ld hl, $55a1
	ld bc, $0007
	call AddNTimes
	ld b, h
	ld c, l
	ld hl, $4196
	ld de, $c650
.asm_3812c
	ld a, [hl]
	and a
	inc a
	ret z
	ld a, [de]
	cp [hl]
	jr z, .asm_3813f
	inc de
	ld a, [de]
	cp [hl]
	jr z, .asm_3813f
	dec de
	inc hl
	inc hl
	inc hl
	jr .asm_3812c

.asm_3813f
	inc hl
	push hl
	push de
	ld de, $414a
	push de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 3814a

	pop de
	pop hl
	inc hl
	inc hl
	jr c, .asm_3812c
	xor a
	ld [de], a
	inc a
	ld [$c70f], a
	ld hl, EnemySubStatus3 ; $c66f
	res 0, [hl]
	xor a
	ld [EnemyFuryCutterCount], a ; $c680
	ld [$c681], a
	ld [$c72c], a
	ld hl, EnemySubStatus4 ; $c670
	res 6, [hl]
	xor a
	ld [LastPlayerCounterMove], a ; $c6f9
	scf
	ret


Function38170: ; 38170
	ld a, [OTPartyCount]
	ld d, a
	ld e, $0
	ld hl, OTPartyMon1Level
	ld bc, $0030
.asm_3817c
	ld a, [hl]
	cp e
	jr c, .asm_38181
	ld e, a
.asm_38181
	add hl, bc
	dec d
	jr nz, .asm_3817c

	ld a, [CurOTMon]
	ld hl, OTPartyMon1Level
	call AddNTimes
	ld a, [hl]
	cp e
	jr nc, .asm_38194
	and a
	ret

.asm_38194
	scf
	ret
; 38196

INCBIN "baserom.gbc",$38196,$381be - $38196
	call Function381ca
	jp c, Function38383
	call Function383a3
	jp Function38385

; known jump sources: 381be (e:41be), 38214 (e:4214)
Function381ca: ; 381ca (e:41ca)
	ld a, [EnemyMonStatus] ; $d214
	and a
	jp z, Function38383
	ld a, [bc]
	bit 6, a
	jr nz, .asm_381e7
	ld a, [bc]
	bit 4, a
	jp nz, Function38385
	call Random
	cp $32
	jp c, Function38385
	jp Function38383
.asm_381e7
	ld a, [EnemySubStatus5] ; $c671
	bit 0, a
	jr z, .asm_381fd
	ld a, [$c67c]
	cp $4
	jr c, .asm_381fd
	call Random
	cp $80
	jp c, Function38385
.asm_381fd
	ld a, [EnemyMonStatus] ; $d214
	and $27
	jp z, Function38383
	jp Function38385
	call Function3822c
	jp nc, Function3821a
	ld a, [bc]
	bit 6, a
	jp z, Function38383
	call Function381ca
	jp c, Function38383

; known jump sources: 3820b (e:420b)
Function3821a: ; 3821a (e:421a)
	call Function383b5
	jp Function38385
	call Function3822c
	jp c, Function38383
	call Function383ae
	jp Function38385

; known jump sources: 38208 (e:4208), 38220 (e:4220), 38284 (e:4284)
Function3822c: ; 3822c (e:422c)
	ld a, [bc]
	bit 6, a
	jr nz, asm_38267
	callab AICheckEnemyHalfHP
	jp c, Function38383
	ld a, [bc]
	bit 5, a
	jp nz, Function38254
	callab AICheckEnemyQuarterHP
	jp nc, Function38281
	call Random
	cp $80
	jp c, Function38281
	jp Function38383

; known jump sources: 3823d (e:423d)
Function38254: ; 38254 (e:4254)
	callab AICheckEnemyQuarterHP
	jp c, Function38383
	call Random
	cp $32
	jp c, Function38383
	jr Function38281
asm_38267: ; 38267 (e:4267)
	callab AICheckEnemyHalfHP
	jp c, Function38383
	callab AICheckEnemyQuarterHP
	jp nc, Function38281
	call Random
	cp $32
	jp nc, Function38383

; known jump sources: 38246 (e:4246), 3824e (e:424e), 38265 (e:4265), 38276 (e:4276)
Function38281: ; 38281 (e:4281)
	jp Function38385
	call Function3822c
	jp c, Function38383
	ld b, $c8
	call Function383f4
	jp Function38385
; 38292 (e:4292)

INCBIN "baserom.gbc",$38292,$38311 - $38292
	call Function3834d
	jp c, Function38383
	call Function38511
	jp Function38385
; 3831d (e:431d)

INCBIN "baserom.gbc",$3831d,$3834d - $3831d

; known jump sources: 38311 (e:4311)
Function3834d: ; 3834d (e:434d)
	ld a, [EnemyTurnsTaken] ; $c6dc
	and a
	jr nz, .asm_38372
	ld a, [bc]
	bit 4, a
	jp nz, Function38385
	call Random
	cp $80
	jp c, Function38383
	ld a, [bc]
	bit 6, a
	jp nz, Function38385
	call Random
	cp $80
	jp c, Function38383
	jp Function38385
.asm_38372
	ld a, [bc]
	bit 4, a
	jp z, Function38383
	call Random
	cp $32
	jp nc, Function38383
	jp Function38385

; known jump sources: 381c1 (e:41c1), 381ce (e:41ce), 381e4 (e:41e4), 38202 (e:4202), 38211 (e:4211), 38217 (e:4217), 38223 (e:4223), 38237 (e:4237), 38251 (e:4251), 3825a (e:425a), 38262 (e:4262), 3826d (e:426d), 3827e (e:427e), 38287 (e:4287), 38314 (e:4314), 3835e (e:435e), 3836c (e:436c), 38375 (e:4375), 3837d (e:437d)
Function38383: ; 38383 (e:4383)
	scf
	ret

; known jump sources: 381c7 (e:41c7), 381d9 (e:41d9), 381e1 (e:41e1), 381fa (e:41fa), 38205 (e:4205), 3821d (e:421d), 38229 (e:4229), 38281 (e:4281), 3828f (e:428f), 3831a (e:431a), 38356 (e:4356), 38364 (e:4364), 3836f (e:436f), 38380 (e:4380)
Function38385: ; 38385 (e:4385)
	and a
	ret


Function38387: ; 38387
	call UpdateEnemyMonInParty
	callba Function3e036
	ld a, $1
	ld [hBGMapMode], a
	ld hl, $c6e6
	dec [hl]
	scf
	ret
; 3839a

Function3839a: ; 3839a
	push de
	ld de, SFX_FULL_HEAL
	call PlaySFX
	pop de
	ret
; 383a3


; known jump sources: 381c4 (e:41c4)
Function383a3: ; 383a3 (e:43a3)
	call Function3839a
	call Function384e0
	ld a, $26
	jp Function38568

; known jump sources: 38226 (e:4226)
Function383ae: ; 383ae (e:43ae)
	ld a, $f
	ld [$d1f1], a
	jr asm_383c6

; known jump sources: 3821a (e:421a)
Function383b5: ; 383b5 (e:43b5)
	call Function384e0
	ld a, $e
	ld [$d1f1], a
	ld hl, EnemySubStatus3 ; $c66f
	res 7, [hl]
	xor a
	ld [EnemyConfuseCount], a ; $c67b
asm_383c6: ; 383c6 (e:43c6)
	ld de, $d1ec
	ld hl, EnemyMonHPLo ; $d217
	ld a, [hld]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, EnemyMonMaxHPLo ; $d219
	ld a, [hld]
	ld [de], a
	inc de
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	ld [EnemyMonHPLo], a ; $d217
	ld a, [hl]
	ld [de], a
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	ld [EnemyMonHPHi], a ; $d216 (aliases: EnemyMonHP)
	jr asm_38436
; 383e8 (e:43e8)

INCBIN "baserom.gbc",$383e8,$383f4 - $383e8

; known jump sources: 3828c (e:428c)
Function383f4: ; 383f4 (e:43f4)
	ld a, $10
	ld b, $c8
	ld [$d1f1], a
	ld hl, EnemyMonHPLo ; $d217
	ld a, [hl]
	ld [$d1ec], a
	add b
	ld [hld], a
	ld [$d1ee], a
	ld a, [hl]
	ld [$d1ed], a
	ld [$d1ef], a
	jr nc, .asm_38415
	inc a
	ld [hl], a
	ld [$d1ef], a
.asm_38415
	inc hl
	ld a, [hld]
	ld b, a
	ld de, EnemyMonMaxHPLo ; $d219
	ld a, [de]
	dec de
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	sub b
	ld a, [hli]
	ld b, a
	ld a, [de]
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	sbc b
	jr nc, asm_38436
	inc de
	ld a, [de]
	dec de
	ld [hld], a
	ld [$d1ee], a
	ld a, [de]
	ld [hl], a
	ld [$d1ef], a
asm_38436: ; 38436 (e:4436)
	call Function38571
	ld hl, $c4ca
	xor a
	ld [$d10a], a
	call Function3839a
	ld a, $b
	call Predef
	jp Function38387


Function3844b: ; 3844b
	ld a, [OTPartyCount]
	ld c, a
	ld hl, OTPartyMon1CurHP
	ld d, 0
.asm_38454
	ld a, [hli]
	ld b, a
	ld a, [hld]
	or b
	jr z, .asm_3845b
	inc d

.asm_3845b
	push bc
	ld bc, $0030
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_38454
	ld a, d
	cp $2
	jp nc, Function3846c
	and a
	ret
; 3846c

Function3846c: ; 3846c
	ld a, $1
	ld [$c711], a
	ld [$c70f], a
	ld hl, EnemySubStatus4
	res 6, [hl]
	xor a
	ld [hBattleTurn], a
	callab Function3dc5b
	push af
	ld a, [CurOTMon]
	ld hl, OTPartyMon1Status
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, EnemyMonStatus
	ld bc, $0004
	call CopyBytes
	pop af
	jr c, .asm_384a3
	ld hl, UnknownText_0x384d0
	call PrintText

.asm_384a3
	ld a, $1
	ld [$d264], a
	callab Function3d834
	callab Function3d867
	ld hl, PlayerSubStatus1
	res 7, [hl]
	callba Function3d4e1
	callba Function3d57a
	xor a
	ld [$d264], a
	ld a, [InLinkBattle]
	and a
	ret nz
	scf
	ret
; 384d0

UnknownText_0x384d0: ; 384d0
	text_jump UnknownText_0x1bcf9c, BANK(UnknownText_0x1bcf9c)
	db "@"
; 384d5

Function384d5: ; 384d5
	call Function3839a
	call Function384e0
	ld a, $34
	jp Function38568
; 384e0

Function384e0: ; 384e0
	ld a, [CurOTMon]
	ld hl, OTPartyMon1Status
	ld bc, $0030
	call AddNTimes
	xor a
	ld [hl], a
	ld [EnemyMonStatus], a
	ld hl, EnemySubStatus5
	res 0, [hl]
	ret
; 384f7

Function384f7: ; 384f7
	call Function3839a
	ld hl, EnemySubStatus4
	set 0, [hl]
	ld a, $21
	jp Function38568
; 38504

Function38504: ; 38504
	call Function3839a
	ld hl, EnemySubStatus4
	set 1, [hl]
	ld a, $29
	jp Function38568
; 38511

Function38511: ; 38511
	call Function3839a
	ld hl, EnemySubStatus4
	set 2, [hl]
	ld a, $2c
	jp Function38568
; 3851e

Function3851e: ; 3851e
	ld [hMultiplier], a
	ld hl, EnemyMonMaxHPHi
	ld a, [hli]
	ld [hProduct], a
	ld a, [hl]
	ld [hMultiplicand], a
	ld b, $2
	call Divide
	ld a, [$ffb6]
	ld c, a
	ld a, [$ffb5]
	ld b, a
	ld hl, EnemyMonHPLo
	ld a, [hld]
	ld e, a
	ld a, [hl]
	ld d, a
	ld a, d
	sub b
	ret nz
	ld a, e
	sub c
	ret
; 38541

Function38541: ; 38541
	ld b, $0
	ld a, $31
	jr Function38557
; 38547

Function38547: ; 38547
	ld b, $1
	ld a, $33
	jr Function38557
; 3854d

Function3854d: ; 3854d
	ld b, $2
	ld a, $34
	jr Function38557
; 38553

Function38553: ; 38553
	ld b, $3
	ld a, $35

Function38557
	ld [$d1f1], a
	push bc
	call Function38571
	pop bc
	callba Function0x361ef
	jp Function38387
; 38568


Function38568: ; 38568
	ld [$d1f1], a
	call Function38571
	jp Function38387
; 38571

Function38571: ; 38571
	ld a, [$d1f1]
	ld [$d265], a
	call GetItemName
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $000d
	call CopyBytes
	ld hl, UnknownText_0x3858c
	jp PrintText
; 3858c

UnknownText_0x3858c: ; 3858c
	text_jump UnknownText_0x1bcfaf, BANK(UnknownText_0x1bcfaf)
	db "@"
; 38591


AIScoring: ; 38591
INCLUDE "battle/ai/scoring.asm"


Function3952d: ; 3952d
	ld hl, RivalName
	ld a, c
	cp $9
	jr z, .asm_39544
	ld [CurSpecies], a
	ld a, $7
	ld [$cf61], a
	call GetName
	ld de, StringBuffer1
	ret

.asm_39544
	ld de, StringBuffer1
	push de
	ld bc, $000b
	call CopyBytes
	pop de
	ret
; 39550

Function39550: ; 39550
	ld hl, $d26b
	ld a, [InLinkBattle]
	and a
	jr nz, .asm_3956f
	ld hl, RivalName
	ld a, c
	cp $9
	jr z, .asm_3956f
	ld [CurSpecies], a
	ld a, $7
	ld [$cf61], a
	call GetName
	ld hl, StringBuffer1

.asm_3956f
	ld bc, $000d
	ld de, $c656
	push de
	call CopyBytes
	pop de
	ret
; 3957b

Function3957b: ; 3957b
	ld a, [TrainerClass]
	ld c, a
	call Function39550
	ld a, [TrainerClass]
	dec a
	ld hl, $559c
	ld bc, $0007
	call AddNTimes
	ld de, $c650
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	ld a, [hl]
	ld [$c652], a
	ret
; 3959c


INCBIN "baserom.gbc",$3959c,$39771 - $3959c


Function39771: ; 39771
	ld a, [$cfc0]
	bit 0, a
	ret nz
	ld a, [InLinkBattle]
	and a
	ret nz
	ld hl, OTPartyCount
	xor a
	ld [hli], a
	dec a
	ld [hl], a
	ld hl, OTPartyMon1Species
	ld bc, $0120
	xor a
	call ByteFill
	ld a, [OtherTrainerClass]
	cp $c
	jr nz, .asm_3979e
	ld a, [OtherTrainerID]
	cp $2
	jr z, .asm_397d3
	ld a, [OtherTrainerClass]

.asm_3979e
	dec a
	ld c, a
	ld b, $0
	ld hl, TrainerGroups
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [OtherTrainerID]
	ld b, a
.asm_397ae
	dec b
	jr z, .asm_397b8
.asm_397b1
	ld a, [hli]
	cp $ff
	jr nz, .asm_397b1
	jr .asm_397ae

.asm_397b8
	ld a, [hli]
	cp $50
	jr nz, .asm_397b8
	ld a, [hli]
	ld c, a
	ld b, $0
	ld d, h
	ld e, l
	ld hl, $57e3
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld bc, .data_397d0
	push bc
	jp [hl]

.data_397d0
.asm_397d0
	db $c3
	db $1b
	db $59

.asm_397d3
	ld a, $0
	call GetSRAMBank
	ld de, $ac0a
	call Function39806
	call CloseSRAM
	jr .asm_397d0
; 397e3

INCBIN "baserom.gbc",$397e3,$397eb - $397e3
	ld h, d
	ld l, e
.asm_397ed
	ld a, [hli]
	cp $ff
	ret z
	ld [CurPartyLevel], a ; $d143
	ld a, [hli]
	ld [CurPartySpecies], a ; $d108
	ld a, $1
	ld [MonType], a ; $cf5f
	push hl
	ld a, $6
	call Predef
	pop hl
	jr .asm_397ed


Function39806: ; 39806
	ld h, d
	ld l, e
.asm_39808
	ld a, [hli]
	cp $ff
	ret z
	ld [CurPartyLevel], a
	ld a, [hli]
	ld [CurPartySpecies], a
	ld a, $1
	ld [MonType], a
	push hl
	ld a, $6
	call Predef
	ld a, [OTPartyCount]
	dec a
	ld hl, OTPartyMon1Move1
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	pop hl
	ld b, $4
.asm_39830
	ld a, [hli]
	ld [de], a
	inc de
	dec b
	jr nz, .asm_39830
	push hl
	ld a, [OTPartyCount]
	dec a
	ld hl, OTPartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, $0017
	add hl, de
	push hl
	ld hl, $0002
	add hl, de
	pop de
	ld b, $4
.asm_39852
	ld a, [hli]
	and a
	jr z, .asm_3986e
	push hl
	push bc
	dec a
	ld hl, $5b00
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	pop bc
	pop hl
	ld [de], a
	inc de
	dec b
	jr nz, .asm_39852

.asm_3986e
	pop hl
	jr .asm_39808
; 39871

	ld h, d
	ld l, e
.asm_39873
	ld a, [hli]
	cp $ff
	ret z
	ld [CurPartyLevel], a ; $d143
	ld a, [hli]
	ld [CurPartySpecies], a ; $d108
	ld a, $1
	ld [MonType], a ; $cf5f
	push hl
	ld a, $6
	call Predef
	ld a, [OTPartyCount] ; $d280
	dec a
	ld hl, OTPartyMon1Item ; $d289
	ld bc, $30
	call AddNTimes
	ld d, h
	ld e, l
	pop hl
	ld a, [hli]
	ld [de], a
	jr .asm_39873
; 3989d (e:589d)

INCBIN "baserom.gbc",$3989d,$3991b - $3989d

; known jump sources: 397d0 (e:57d0)
Function3991b: ; 3991b (e:591b)
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld a, [$c652]
	ld [hli], a
	ld a, [CurPartyLevel] ; $d143
	ld [hl], a
	call Multiply
	ld hl, $c686
	xor a
	ld [hli], a
	ld a, [$FF00+$b5]
	ld [hli], a
	ld a, [$FF00+$b6]
	ld [hl], a
	ret


Function39939: ; 39939
	ld a, [$cfc0]
	bit 0, a
	ld hl, $d26b
	jp nz, Function39984

	ld a, [OtherTrainerID]
	ld b, a
	ld a, [OtherTrainerClass]
	ld c, a

Function3994c: ; 3994c
	ld a, c
	cp $c
	jr nz, .asm_3996d
	ld a, $0
	call GetSRAMBank
	ld a, [$abfd]
	and a
	call CloseSRAM
	jr z, .asm_3996d
	ld a, $0
	call GetSRAMBank
	ld hl, $abfe
	call Function39984
	jp CloseSRAM

.asm_3996d
	dec c
	push bc
	ld b, 0
	ld hl, TrainerGroups
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop bc

.asm_3997a
	dec b
	jr z, Function39984
.asm_3997d
	ld a, [hli]
	cp $ff
	jr nz, .asm_3997d
	jr .asm_3997a

Function39984: ; 39984
	ld de, StringBuffer1
	push de
	ld bc, $000b
	call CopyBytes
	pop de
	ret
; 39990

Function39990: ; 39990
	ld de, StringBuffer1
	push de
	ld bc, $000b
	pop de
	ret
; 39999

TrainerGroups: ; 0x39999
INCLUDE "trainers/trainer_pointers.asm"

INCLUDE "trainers/trainers.asm"


SECTION "bankF", ROMX, BANK[$F]

Function3c000: ; 3c000
	xor a
	ld [$c664], a
	ld [$c6fc], a
	ld [$d0ec], a
	ld [BattleEnded], a
	inc a
	ld [$d264], a
	ld hl, OTPartyMon1CurHP
	ld bc, $002f
	ld d, $3
.asm_3c019
	inc d
	ld a, [hli]
	or [hl]
	jr nz, .asm_3c021
	add hl, bc
	jr .asm_3c019

.asm_3c021
	ld a, d
	ld [$d430], a
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3c031
	ld a, [$ffcb]
	cp $2
.data_3c02f
	db $28
	db $1b

.asm_3c031
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3c047
	xor a
	ld [$c718], a
	call Function3d834
	call Function3d867
	call Function3dc18
	call Function3d4e1

.asm_3c047
	ld c, $28
	call DelayFrames
	call Function309d
	call Function3d873
	ld a, d
	and a
	jp z, LostBattle
	call Function30b4
	ld a, [BattleType]
	cp $2
	jp z, Function3c0e2
	cp $3
	jp z, Function3c0e2
	xor a
	ld [CurPartyMon], a
.asm_3c06b
	call Function3d887
	jr nz, .asm_3c076
	ld hl, CurPartyMon
	inc [hl]
	jr .asm_3c06b

.asm_3c076
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	inc a
	ld hl, PartyCount
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a
	ld [TempBattleMonSpecies], a
	ld hl, $c505
	ld a, $9
	call Function3d490
	call Function309d
	call Function3d57a
	call Function3da0d
	call Function3dab1
	call Function3f26d
	call Function3dbde
	call Function3dc18
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	call SetPlayerTurn
	call Function3dc23
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3c0df
	ld a, [$ffcb]
	cp $2
	jr nz, .asm_3c0df
	xor a
	ld [$c718], a
	call Function3d834
	call Function3d867
	call Function3dc18
	call Function3d4e1
	call SetEnemyTurn
	call Function3dc23

.asm_3c0df
	jp Function3c12f
; 3c0e2

Function3c0e2: ; 3c0e2
	jp Function3e139
; 3c0e5



Function3c0e5: ; 3c0e5
	call Function30b4
	ld a, [$d0ee]
	and $c0
	add $2
	ld [$d0ee], a
	ld a, [InLinkBattle]
	and a
	ld hl, $47bd
	jr z, .asm_3c115
	ld a, [$d0ee]
	and $c0
	ld [$d0ee], a
	ld hl, $47cf
	call Function3d2e0
	jr nc, .asm_3c115
	ld hl, $cd2a
	bit 4, [hl]
	jr nz, .asm_3c118
	ld hl, $5863

.asm_3c115
	call StdBattleTextBox

.asm_3c118
	call Function3ceec
	call Function3d2e0
	jr c, .asm_3c126

	ld de, SFX_RUN
	call PlaySFX

.asm_3c126
	call SetPlayerTurn
	ld a, 1
	ld [BattleEnded], a
	ret
; 3c12f

Function3c12f: ; 3c12f
	call Function3c1bf
	call Function3c3f5
	jp c, .asm_3c1be
	xor a
	ld [$c710], a
	ld [$c711], a
	ld [$d264], a
	ld [$c73f], a
	ld [$c740], a
	ld [CurDamage], a
	ld [$d257], a
	call Function3c27c
	call UpdateBattleMonInParty
	callba AIChooseMove
	call Function3d2f1
	jr nz, .asm_3c174
	callba Function100da5
	callba Function100641
	callba Function100dd8
	jp c, .asm_3c1be

.asm_3c174
	call Function3c410
	jr c, .asm_3c18a
.asm_3c179
	call Function3e139
	jr c, .asm_3c1be
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c1be
	ld a, [$d232]
	and a
	jr nz, .asm_3c1be

.asm_3c18a
	call Function3c434
	jr nz, .asm_3c179
	call Function3c300
	jr c, .asm_3c1be
	call Function3c314
	jr c, .asm_3c19e
	call Function3c5fe
	jr .asm_3c1a1

.asm_3c19e
	call Function3c664

.asm_3c1a1
	call Function3d2e0
	jr c, .asm_3c1be
	ld a, [$d232]
	and a
	jr nz, .asm_3c1be
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c1be
	call Function3c1d6
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c1be
	jp Function3c12f

.asm_3c1be
	ret
; 3c1bf

Function3c1bf: ; 3c1bf
	ret
; 3c1c0


Function3c1c0: ; 3c1c0
	ld a, $5
	call GetSRAMBank
	ld hl, $a89b
	inc [hl]
	jr nz, .asm_3c1d2
	dec hl
	inc [hl]
	jr nz, .asm_3c1d2
	dec [hl]
	inc hl
	dec [hl]

.asm_3c1d2
	call CloseSRAM
	ret
; 3c1d6


Function3c1d6: ; 3c1d6
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c1fe
	call Function3c23c
	ret c
	call Function3ca26
	call Function3c23c
	ret c
	call HandleWeather
	call Function3c23c
	ret c
	call Function3c874
	call Function3c23c
	ret c
	call Function3c801
	call Function3c23c
	ret c
	jr .asm_3c21e

.asm_3c1fe
	call Function3c25c
	ret c
	call Function3ca26
	call Function3c25c
	ret c
	call HandleWeather
	call Function3c25c
	ret c
	call Function3c874
	call Function3c25c
	ret c
	call Function3c801
	call Function3c25c
	ret c

.asm_3c21e
	call Function3c8eb
	call Function3c93c
	call Function3ca8f
	call Function3cafb
	call Function3cb36
	call Function3de97
	call Function3dcf9
	call UpdateBattleMonInParty
	call Function309d
	jp Function3c4df
; 3c23c

Function3c23c: ; 3c23c
	call Function3c710
	jr nz, .asm_3c24a
	call Function3d14e
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c25a

.asm_3c24a
	call Function3c70b
	jr nz, .asm_3c258
	call Function3cd55
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c25a

.asm_3c258
	and a
	ret

.asm_3c25a
	scf
	ret
; 3c25c

Function3c25c: ; 3c25c
	call Function3c70b
	jr nz, .asm_3c26a
	call Function3cd55
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c27a

.asm_3c26a
	call Function3c710
	jr nz, .asm_3c278
	call Function3d14e
	ld a, [BattleEnded]
	and a
	jr nz, .asm_3c27a

.asm_3c278
	and a
	ret

.asm_3c27a
	scf
	ret
; 3c27c

Function3c27c: ; 3c27c
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c287
	call .asm_3c28a
	jr .asm_3c296

.asm_3c287
	call .asm_3c296
.asm_3c28a
	call SetPlayerTurn
	ld de, PartyMon1Item
	ld a, [CurBattleMon]
	ld b, a
	jr .asm_3c2a0

.asm_3c296
	call SetEnemyTurn
	ld de, OTPartyMon1Item
	ld a, [CurOTMon]
	ld b, a

.asm_3c2a0
	push de
	push bc
	callab GetUserItem
	ld a, [hl]
	ld [$d265], a
	sub $98
	pop bc
	pop de
	ret nz
	ld [hl], a
	ld h, d
	ld l, e
	ld a, b
	call GetPartyLocation
	xor a
	ld [hl], a
	ld a, $2
	call _GetBattleVar
	push af
	set 7, [hl]
	ld a, $c
	call _GetBattleVar
	push hl
	push af
	xor a
	ld [hl], a
	ld [AttackMissed], a
	ld [EffectFailed], a
	callba BattleCommand77
	pop af
	pop hl
	ld [hl], a
	call GetItemName
	ld hl, $4bde
	call StdBattleTextBox
	callab BattleCommand8c
	pop af
	bit 7, a
	ret nz
	xor a
	ld [$cfca], a
	ld de, $0103
	call Function3ee0f
	call Function3c8e4
	ld hl, $4d97
	jp StdBattleTextBox
; 3c300

Function3c300: ; 3c300
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3c30d
	ld a, [$d430]
	cp $f
	jr z, .asm_3c30f

.asm_3c30d
	and a
	ret

.asm_3c30f
	call Function3c0e5
	scf
	ret
; 3c314

Function3c314: ; 3c314
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3c35b
	ld a, [$d430]
	cp $e
	jr z, .asm_3c35b
	cp $d
	jr z, .asm_3c35b
	sub $4
	jr c, .asm_3c35b
	ld a, [$d0ec]
	cp $2
	jr nz, .asm_3c34c
	ld a, [$ffcb]
	cp $2
	jr z, .asm_3c341
	call BattleRandom
	cp $80
	jp c, .asm_3c3f1
	jp Function3c3f3

.asm_3c341
	call BattleRandom
	cp $80
	jp c, Function3c3f3
	jp .asm_3c3f1

.asm_3c34c
	callab Function3846c
	call SetEnemyTurn
	call Function3dc23
	jp Function3c3f3

.asm_3c35b
	ld a, [$d0ec]
	and a
	jp nz, .asm_3c3f1
	call Function3c5b4
	jr z, .asm_3c36d
	jp c, .asm_3c3f1
	jp Function3c3f3

.asm_3c36d
	call SetPlayerTurn
	callab GetUserItem
	push bc
	callab GetOpponentItem
	pop de
	ld a, d
	cp $4a
	jr nz, .asm_3c391
	ld a, b
	cp $4a
	jr z, .asm_3c39f
	call BattleRandom
	cp e
	jr nc, .asm_3c3c5
	jp .asm_3c3f1

.asm_3c391
	ld a, b
	cp $4a
	jr nz, .asm_3c3c5
	call BattleRandom
	cp c
	jr nc, .asm_3c3c5
	jp Function3c3f3

.asm_3c39f
	ld a, [$ffcb]
	cp $2
	jr z, .asm_3c3b5
	call BattleRandom
	cp c
	jp c, Function3c3f3
	call BattleRandom
	cp e
	jp c, .asm_3c3f1
	jr .asm_3c3c5

.asm_3c3b5
	call BattleRandom
	cp e
	jp c, .asm_3c3f1
	call BattleRandom
	cp c
	jp c, Function3c3f3
	jr .asm_3c3c5

.asm_3c3c5
	ld de, BattleMonSpd
	ld hl, EnemyMonSpd
	ld c, $2
	call StringCmp
	jr z, .asm_3c3d8
	jp nc, .asm_3c3f1
	jp Function3c3f3

.asm_3c3d8
	ld a, [$ffcb]
	cp $2
	jr z, .asm_3c3e9
	call BattleRandom
	cp $80
	jp c, .asm_3c3f1
	jp Function3c3f3

.asm_3c3e9
	call BattleRandom
	cp $80
	jp c, Function3c3f3
.asm_3c3f1
	scf
	ret
; 3c3f3

Function3c3f3: ; 3c3f3
	and a
	ret
; 3c3f5

Function3c3f5: ; 3c3f5
	ld a, [BattleType]
	cp $6
	jr nz, .asm_3c40e
	ld a, [$dc79]
	and a
	jr nz, .asm_3c40e
	ld a, [$d0ee]
	and $c0
	add $2
	ld [$d0ee], a
	scf
	ret

.asm_3c40e
	and a
	ret
; 3c410

Function3c410: ; 3c410
	ld a, [PlayerSubStatus4]
	and $20
	jp nz, Function3c432
	ld hl, EnemySubStatus3
	res 3, [hl]
	ld hl, PlayerSubStatus3
	res 3, [hl]
	ld a, [hl]
	and $12
	jp nz, Function3c432
	ld hl, PlayerSubStatus1
	bit 6, [hl]
	jp nz, Function3c432
	and a
	ret
; 3c432

Function3c432: ; 3c432
	scf
	ret
; 3c434

Function3c434: ; 3c434
	call Function3c410
	jp c, .asm_3c4ba
	ld hl, PlayerSubStatus5
	bit 4, [hl]
	jr z, .asm_3c449
	ld a, [LastPlayerMove]
	ld [CurPlayerMove], a
	jr .asm_3c47c

.asm_3c449
	ld a, [$d0ec]
	cp $2
	jr z, .asm_3c4ce
	and a
	jr nz, .asm_3c4b5
	ld a, [PlayerSubStatus3]
	and $1
	jr nz, .asm_3c4ba
	xor a
	ld [$d235], a
	inc a
	ld [FXAnimIDLo], a
	call Function3e4bc
	push af
	call Function30b4
	call UpdateBattleHuds
	ld a, [CurPlayerMove]
	cp $a5
	jr z, .asm_3c476
	call PlayClickSFX

.asm_3c476
	ld a, $1
	ld [hBGMapMode], a
	pop af
	ret nz

.asm_3c47c
	call SetPlayerTurn
	callab UpdateMoveData
	xor a
	ld [$c732], a
	ld a, [PlayerMoveEffect]
	cp $77
	jr z, .asm_3c494
	xor a
	ld [PlayerFuryCutterCount], a

.asm_3c494
	ld a, [PlayerMoveEffect]
	cp $51
	jr z, .asm_3c4a4
	ld hl, PlayerSubStatus4
	res 6, [hl]
	xor a
	ld [$c72b], a

.asm_3c4a4
	ld a, [PlayerMoveEffect]
	cp $6f
	jr z, .asm_3c4c9
	cp $74
	jr z, .asm_3c4c9
	xor a
	ld [$c679], a
	jr .asm_3c4c9

.asm_3c4b5
	ld hl, PlayerSubStatus3
	res 0, [hl]

.asm_3c4ba
	xor a
	ld [PlayerFuryCutterCount], a
	ld [$c679], a
	ld [$c72b], a
	ld hl, PlayerSubStatus4
	res 6, [hl]

.asm_3c4c9
	call Function3e7c1
	xor a
	ret

.asm_3c4ce
	xor a
	ld [PlayerFuryCutterCount], a
	ld [$c679], a
	ld [$c72b], a
	ld hl, PlayerSubStatus4
	res 6, [hl]
	xor a
	ret
; 3c4df

Function3c4df: ; 3c4df
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c4ea
	call .asm_3c4ed
	jr .asm_3c518

.asm_3c4ea
	call .asm_3c518
.asm_3c4ed
	ld hl, PlayerSubStatus5
	bit 4, [hl]
	ret z
	ld a, [PlayerEncoreCount]
	dec a
	ld [PlayerEncoreCount], a
	jr z, .asm_3c50a
	ld hl, BattleMonPPMove1
	ld a, [CurMoveNum]
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	and $3f
	ret nz

.asm_3c50a
	ld hl, PlayerSubStatus5
	res 4, [hl]
	call SetEnemyTurn
	ld hl, $4c8a
	jp StdBattleTextBox

.asm_3c518
	ld hl, EnemySubStatus5
	bit 4, [hl]
	ret z
	ld a, [EnemyEncoreCount]
	dec a
	ld [EnemyEncoreCount], a
	jr z, .asm_3c535
	ld hl, EnemyMonPPMove1
	ld a, [CurEnemyMoveNum]
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	and $3f
	ret nz

.asm_3c535
	ld hl, EnemySubStatus5
	res 4, [hl]
	call SetPlayerTurn
	ld hl, $4c8a
	jp StdBattleTextBox
; 3c543


Function3c543: ; 3c543
	ld a, [IsInBattle]
	dec a
	jr nz, .Stay

	ld a, [PlayerSubStatus5]
	bit 7, a
	jr nz, .Stay

	ld a, [$c731]
	and a
	jr nz, .Stay

	ld a, [EnemyMonStatus]
	and 1 << FRZ | SLP
	jr nz, .Stay

	ld a, [TempEnemyMonSpecies]
	ld de, 1
	ld hl, .Always
	call IsInArray
	jr c, .Flee

	call BattleRandom
	ld b, a
	cp $80
	jr nc, .Stay

	push bc
	ld a, [TempEnemyMonSpecies]
	ld de, 1
	ld hl, .Often
	call IsInArray
	pop bc
	jr c, .Flee

	ld a, b
	cp $1a
	jr nc, .Stay

	ld a, [TempEnemyMonSpecies]
	ld de, 1
	ld hl, .Sometimes
	call IsInArray
	jr c, .Flee

.Stay
	and a
	ret

.Flee
	scf
	ret
; 3c59a

.Sometimes
	db MAGNEMITE
	db GRIMER
	db TANGELA
	db MR__MIME
	db EEVEE
	db PORYGON
	db DRATINI
	db DRAGONAIR
	db TOGETIC
	db UMBREON
	db UNOWN
	db SNUBBULL
	db HERACROSS
	db $ff

.Often
	db CUBONE
	db ARTICUNO
	db ZAPDOS
	db MOLTRES
	db QUAGSIRE
	db DELIBIRD
	db PHANPY
	db TEDDIURSA
	db $ff

.Always
	db RAIKOU
	db ENTEI
;	db SUICUNE
	db $ff
; 3c5b4


Function3c5b4: ; 3c5b4
	ld a, [CurPlayerMove]
	call GetMovePriority
	ld b, a
	push bc
	ld a, [CurEnemyMove]
	call GetMovePriority
	pop bc
	cp b
	ret
; 3c5c5

GetMovePriority: ; 3c5c5
	ld b, a
	cp VITAL_THROW
	ld a, 0
	ret z
	call Function3c5ec
	ld hl, .data_3c5df
.loop
	ld a, [hli]
	cp b
	jr z, .asm_3c5dd
	inc hl
	cp $ff
	jr nz, .loop
	ld a, 1
	ret

.asm_3c5dd
	ld a, [hl]
	ret
; 3c5df

.data_3c5df
	db EFFECT_PROTECT,      3
	db EFFECT_ENDURE,       3
	db EFFECT_PRIORITY_HIT, 2
	db EFFECT_WHIRLWIND,    0
	db EFFECT_COUNTER,      0
	db EFFECT_MIRROR_COAT,  0
	db $ff
; 3c5ec


Function3c5ec: ; 3c5ec
	ld a, b
	dec a
	ld hl, $5afc
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	ld b, a
	ret
; 3c5fe

Function3c5fe: ; 3c5fe
	call Function309d
	call Function3c543
	jp c, Function3c0e5
	call SetEnemyTurn
	ld a, $1
	ld [$c70f], a
	callab Function38000
	jr c, .asm_3c62f
	call Function3c6de
	call Function3d2e0
	ret c
	ld a, [$d232]
	and a
	ret nz
	call Function3c710
	jp z, Function3d14e
	call Function3c70b
	jp z, Function3cd55

.asm_3c62f
	call SetEnemyTurn
	call Function3c716
	jp z, Function3cd55
	call RefreshBattleHuds
	call Function3c6cf
	call Function3d2e0
	ret c
	ld a, [$d232]
	and a
	ret nz
	call Function3c70b
	jp z, Function3cd55
	call Function3c710
	jp z, Function3d14e
	call SetPlayerTurn
	call Function3c716
	jp z, Function3d14e
	call RefreshBattleHuds
	xor a
	ld [$d0ec], a
	ret
; 3c664

Function3c664: ; 3c664
	xor a
	ld [$c70f], a
	call SetEnemyTurn
	callab Function38000
	push af
	call Function3c6cf
	pop bc
	ld a, [$d232]
	and a
	ret nz
	call Function3d2e0
	ret c
	call Function3c70b
	jp z, Function3cd55
	call Function3c710
	jp z, Function3d14e
	push bc
	call SetPlayerTurn
	call Function3c716
	pop bc
	jp z, Function3d14e
	push bc
	call RefreshBattleHuds
	pop af
	jr c, .asm_3c6be
	call Function309d
	call Function3c543
	jp c, Function3c0e5
	call Function3c6de
	call Function3d2e0
	ret c
	ld a, [$d232]
	and a
	ret nz
	call Function3c710
	jp z, Function3d14e
	call Function3c70b
	jp z, Function3cd55

.asm_3c6be
	call SetEnemyTurn
	call Function3c716
	jp z, Function3cd55
	call RefreshBattleHuds
	xor a
	ld [$d0ec], a
	ret
; 3c6cf

Function3c6cf: ; 3c6cf
	call SetPlayerTurn
	call Function3c6fe
	callab DoPlayerTurn
	jp Function3c6ed
; 3c6de

Function3c6de: ; 3c6de
	call SetEnemyTurn
	call Function3c6fe
	callab DoEnemyTurn
	jp Function3c6ed
; 3c6ed

Function3c6ed: ; 3c6ed
	ld a, $5
	call _GetBattleVar
	res 2, [hl]
	res 5, [hl]
	ld a, $9
	call _GetBattleVar
	res 6, [hl]
	ret
; 3c6fe

Function3c6fe: ; 3c6fe
	ld a, $4
	call _GetBattleVar
	res 6, [hl]
	ret
; 3c706

Function3c706: ; 3c706
	ld a, [hBattleTurn]
	and a
	jr z, Function3c710
Function3c70b: ; 3c70b
	ld hl, EnemyMonHPHi
	jr asm_3c713

Function3c710: ; 3c710
	ld hl, BattleMonHP

asm_3c713
	ld a, [hli]
	or [hl]
	ret
; 3c716

Function3c716: ; 3c716
	call Function3c706
	ret z
	ld a, $a
	call GetBattleVar
	and $18
	jr z, .asm_3c768
	ld hl, $47e2
	ld de, $0106
	and $10
	jr z, .asm_3c733
	ld hl, $47f8
	ld de, $0105

.asm_3c733
	push de
	call StdBattleTextBox
	pop de
	xor a
	ld [$cfca], a
	call Function3ee0f
	call GetEighthMaxHP
	ld de, $c674
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c74d
	ld de, $c67c

.asm_3c74d
	ld a, $4
	call GetBattleVar
	bit 0, a
	jr z, .asm_3c765
	call Function3cc76
	ld a, [de]
	inc a
	ld [de], a
	ld hl, $0000
.asm_3c75f
	add hl, bc
	dec a
	jr nz, .asm_3c75f
	ld b, h
	ld c, l

.asm_3c765
	call Function3cc3f

.asm_3c768
	call Function3c706
	jp z, .asm_3c7f7
	ld a, $3
	call _GetBattleVar
	bit 7, [hl]
	jr z, .asm_3c7a1
	call Function3c8e4
	xor a
	ld [$cfca], a
	ld de, $0107
	ld a, $7
	call GetBattleVar
	and $60
	call z, Function3ee0f
	call Function3c8e4
	call GetEighthMaxHP
	call Function3cc3f
	ld a, $1
	ld [hBGMapMode], a
	call Function3ccef
	ld hl, $480e
	call StdBattleTextBox

.asm_3c7a1
	call Function3c706
	jr z, .asm_3c7f7
	ld a, $0
	call _GetBattleVar
	bit 0, [hl]
	jr z, .asm_3c7c5
	xor a
	ld [$cfca], a
	ld de, $010c
	call Function3ee0f
	call GetQuarterMaxHP
	call Function3cc3f
	ld hl, $4822
	call StdBattleTextBox

.asm_3c7c5
	call Function3c706
	jr z, .asm_3c7f7
	ld a, $0
	call _GetBattleVar
	bit 1, [hl]
	jr z, .asm_3c7e9
	xor a
	ld [$cfca], a
	ld de, $010c
	call Function3ee0f
	call GetQuarterMaxHP
	call Function3cc3f
	ld hl, $4836
	call StdBattleTextBox

.asm_3c7e9
	ld hl, BattleMonHP
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c7f4
	ld hl, EnemyMonHPHi

.asm_3c7f4
	ld a, [hli]
	or [hl]
	ret nz

.asm_3c7f7
	call RefreshBattleHuds
	ld c, $14
	call DelayFrames
	xor a
	ret
; 3c801

Function3c801: ; 3c801
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c813
	call SetPlayerTurn
	call .asm_3c81c
	call SetEnemyTurn
	jp .asm_3c81c

.asm_3c813
	call SetEnemyTurn
	call .asm_3c81c
	call SetPlayerTurn
.asm_3c81c
	ld hl, PlayerPerishCount
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c827
	ld hl, EnemyPerishCount

.asm_3c827
	ld a, $0
	call GetBattleVar
	bit 4, a
	ret z
	dec [hl]
	ld a, [hl]
	ld [$d265], a
	push af
	ld hl, $4864
	call StdBattleTextBox
	pop af
	ret nz
	ld a, $0
	call _GetBattleVar
	res 4, [hl]
	ld a, [hBattleTurn]
	and a
	jr nz, .asm_3c85c
	ld hl, BattleMonHP
	xor a
	ld [hli], a
	ld [hl], a
	ld hl, PartyMon1CurHP
	ld a, [CurBattleMon]
	call GetPartyLocation
	xor a
	ld [hli], a
	ld [hl], a
	ret

.asm_3c85c
	ld hl, EnemyMonHPHi
	xor a
	ld [hli], a
	ld [hl], a
	ld a, [IsInBattle]
	dec a
	ret z
	ld hl, OTPartyMon1CurHP
	ld a, [CurOTMon]
	call GetPartyLocation
	xor a
	ld [hli], a
	ld [hl], a
	ret
; 3c874

Function3c874: ; 3c874
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c886
	call SetPlayerTurn
	call .asm_3c88f
	call SetEnemyTurn
	jp .asm_3c88f

.asm_3c886
	call SetEnemyTurn
	call .asm_3c88f
	call SetPlayerTurn
.asm_3c88f
	ld hl, $c730
	ld de, $c72e
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c8a0
	ld hl, $c731
	ld de, $c72f

.asm_3c8a0
	ld a, [hl]
	and a
	ret z
	ld a, $3
	call GetBattleVar
	bit 4, a
	ret nz
	ld a, [de]
	ld [$d265], a
	ld [FXAnimIDLo], a
	call GetMoveName
	dec [hl]
	jr z, .asm_3c8de
	ld a, $2
	call GetBattleVar
	and $60
	jr nz, .asm_3c8d3
	call Function3c8e4
	xor a
	ld [$cfca], a
	ld [FXAnimIDHi], a
	ld a, $37
	call Predef
	call Function3c8e4

.asm_3c8d3
	call Function3cc76
	call Function3cc3f
	ld hl, $4de2
	jr .asm_3c8e1

.asm_3c8de
	ld hl, $4df5

.asm_3c8e1
	jp StdBattleTextBox
; 3c8e4

Function3c8e4: ; 3c8e4
	ld a, [hBattleTurn]
	xor $1
	ld [hBattleTurn], a
	ret
; 3c8eb

Function3c8eb: ; 3c8eb
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c8fd
	call SetPlayerTurn
	call .asm_3c906
	call SetEnemyTurn
	jp .asm_3c906

.asm_3c8fd
	call SetEnemyTurn
	call .asm_3c906
	call SetPlayerTurn
.asm_3c906
	callab GetUserItem
	ld a, [hl]
	ld [$d265], a
	call GetItemName
	ld a, b
	cp $3
	ret nz
	ld hl, BattleMonHP
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c922
	ld hl, EnemyMonHPHi

.asm_3c922
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	cp b
	jr nz, .asm_3c92d
	ld a, [hl]
	cp c
	ret z

.asm_3c92d
	call Function3cc76
	call Function3c8e4
	call Function3ccef
	ld hl, $4880
	jp StdBattleTextBox
; 3c93c

Function3c93c: ; 3c93c
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3c94e
	call SetPlayerTurn
	call .asm_3c957
	call SetEnemyTurn
	jp .asm_3c957

.asm_3c94e
	call SetEnemyTurn
	call .asm_3c957
	call SetPlayerTurn
.asm_3c957
	callab GetUserItem
	ld a, b
	cp $6
	jr nz, .asm_3c9ae
	ld hl, PartyMon1PP
	ld a, [CurBattleMon]
	call GetPartyLocation
	ld d, h
	ld e, l
	ld hl, PartyMon1Move1
	ld a, [CurBattleMon]
	call GetPartyLocation
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c99b
	ld de, $c739
	ld hl, $c735
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3c99b
	ld hl, OTPartyMon1PPMove1
	ld a, [CurOTMon]
	call GetPartyLocation
	ld d, h
	ld e, l
	ld hl, OTPartyMon1Move1
	ld a, [CurOTMon]
	call GetPartyLocation

.asm_3c99b
	ld c, $0
.asm_3c99d
	ld a, [hl]
	and a
	jr z, .asm_3c9ae
	ld a, [de]
	and $3f
	jr z, .asm_3c9af
	inc hl
	inc de
	inc c
	ld a, c
	cp $4
	jr nz, .asm_3c99d

.asm_3c9ae
	ret

.asm_3c9af
	ld a, [hl]
	cp $a6
	ld b, $1
	jr z, .asm_3c9b8
	ld b, $5

.asm_3c9b8
	ld a, [de]
	add b
	ld [de], a
	push bc
	push bc
	ld a, [hl]
	ld [$d265], a
	ld de, BattleMonItem
	ld hl, BattleMonPPMove1
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3c9d2
	ld de, EnemyMonItem
	ld hl, EnemyMonPPMove1

.asm_3c9d2
	inc de
	pop bc
	ld b, $0
	add hl, bc
	push hl
	ld h, d
	ld l, e
	add hl, bc
	pop de
	pop bc
	ld a, [$d265]
	cp [hl]
	jr nz, .asm_3c9f5
	ld a, [hBattleTurn]
	and a
	ld a, [PlayerSubStatus5]
	jr z, .asm_3c9ee
	ld a, [EnemySubStatus5]

.asm_3c9ee
	bit 3, a
	jr nz, .asm_3c9f5
	ld a, [de]
	add b
	ld [de], a

.asm_3c9f5
	callab GetUserItem
	ld a, [hl]
	ld [$d265], a
	xor a
	ld [hl], a
	call Function3df12
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3ca12
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3ca14
	call Function3df1f

.asm_3ca12
	xor a
	ld [hl], a

.asm_3ca14
	call GetItemName
	call Function3c8e4
	call Function3ddc8
	call Function3c8e4
	ld hl, $4899
	jp StdBattleTextBox
; 3ca26

Function3ca26: ; 3ca26
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3ca38
	call SetPlayerTurn
	call .asm_3ca41
	call SetEnemyTurn
	jp .asm_3ca41

.asm_3ca38
	call SetEnemyTurn
	call .asm_3ca41
	call SetPlayerTurn
.asm_3ca41
	ld hl, $c71d
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3ca4c
	ld hl, $c71e

.asm_3ca4c
	ld a, [hl]
	and a
	ret z
	dec a
	ld [hl], a
	cp $1
	ret nz
	ld hl, $48b6
	call StdBattleTextBox
	ld a, $10
	call _GetBattleVar
	push af
	ld a, $f8
	ld [hl], a
	callab UpdateMoveData
	xor a
	ld [AttackMissed], a
	ld [AlreadyDisobeyed], a
	ld a, $a
	ld [TypeModifier], a
	callab DoMove
	xor a
	ld [CurDamage], a
	ld [$d257], a
	ld a, $10
	call _GetBattleVar
	pop af
	ld [hl], a
	call UpdateBattleMonInParty
	jp UpdateEnemyMonInParty
; 3ca8f

Function3ca8f: ; 3ca8f
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3ca9a
	call .asm_3ca9d
	jr .asm_3cac9

.asm_3ca9a
	call .asm_3cac9
.asm_3ca9d
	ld a, [BattleMonStatus]
	bit 5, a
	ret z
	ld a, [$c73f]
	and a
	ret nz
	call BattleRandom
	cp $19
	ret nc
	xor a
	ld [BattleMonStatus], a
	ld a, [CurBattleMon]
	ld hl, PartyMon1Status
	call GetPartyLocation
	ld [hl], $0
	call UpdateBattleHuds
	call SetEnemyTurn
	ld hl, $524b
	jp StdBattleTextBox

.asm_3cac9
	ld a, [EnemyMonStatus]
	bit 5, a
	ret z
	ld a, [$c740]
	and a
	ret nz
	call BattleRandom
	cp $19
	ret nc
	xor a
	ld [EnemyMonStatus], a
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3caef
	ld a, [CurOTMon]
	ld hl, OTPartyMon1Status
	call GetPartyLocation
	ld [hl], $0

.asm_3caef
	call UpdateBattleHuds
	call SetPlayerTurn
	ld hl, $524b
	jp StdBattleTextBox
; 3cafb

Function3cafb: ; 3cafb
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3cb06
	call .asm_3cb09
	jr .asm_3cb1c

.asm_3cb06
	call .asm_3cb1c
.asm_3cb09
	ld a, [PlayerScreens]
	bit 2, a
	ret z
	ld hl, $c701
	dec [hl]
	ret nz
	res 2, a
	ld [PlayerScreens], a
	xor a
	jr .asm_3cb2e

.asm_3cb1c
	ld a, [EnemyScreens]
	bit 2, a
	ret z
	ld hl, $c705
	dec [hl]
	ret nz
	res 2, a
	ld [EnemyScreens], a
	ld a, $1

.asm_3cb2e
	ld [hBattleTurn], a
	ld hl, $48d2
	jp StdBattleTextBox
; 3cb36


Function3cb36: ; 3cb36
	ld a, [$ffcb]
	cp 1
	jr z, .Both
	call .CheckPlayer
	jr .CheckEnemy

.Both
	call .CheckEnemy

.CheckPlayer
	call SetPlayerTurn
	ld de, .Your
	call .asm_3cb6f
	ld hl, PlayerScreens
	ld de, PlayerLightScreenCount
	jr .FadeScreens

.CheckEnemy
	call SetEnemyTurn
	ld de, .Enemy
	call .asm_3cb6f
	ld hl, EnemyScreens
	ld de, EnemyLightScreenCount

.FadeScreens
	bit SCREENS_LIGHT_SCREEN, [hl]
	call nz, FadeLightScreen
	bit SCREENS_REFLECT, [hl]
	call nz, FadeReflect
	ret

.asm_3cb6f
	ld hl, StringBuffer1
	jp CopyName2
; 3cb75

.Your
	db "Your@"
.Enemy
	db "Enemy@"
; 3cb80


FadeLightScreen: ; 3cb80
	ld a, [de]
	dec a
	ld [de], a
	ret nz
	res SCREENS_LIGHT_SCREEN, [hl]
	push hl
	push de
	ld hl, BattleText_0x808e7
	call StdBattleTextBox
	pop de
	pop hl
	ret
; 3cb91

FadeReflect: ; 3cb91
	inc de
	ld a, [de]
	dec a
	ld [de], a
	ret nz
	res SCREENS_REFLECT, [hl]
	ld hl, BattleText_0x80905
	jp StdBattleTextBox
; 3cb9e

HandleWeather: ; 3cb9e

	ld a, [Weather]
	cp 0
	ret z

	ld hl, WeatherCount
	dec [hl]
	jr z, .asm_3cc13

	ld hl, .WeatherMessages
	call .asm_3cc1e
	ld a, [Weather]
	cp WEATHER_SANDSTORM
	ret nz
	ld a, [$ffcb]
	cp 1
	jr z, .asm_3cbc7

; Player first
	call SetPlayerTurn
	call .asm_3cbd0
	call SetEnemyTurn
	jr .asm_3cbd0

.asm_3cbc7
; Enemy first
	call SetEnemyTurn
	call .asm_3cbd0
	call SetPlayerTurn

.asm_3cbd0
	ld a, BATTLE_VARS_SUBSTATUS3
	call GetBattleVar
	bit SUBSTATUS_UNDERGROUND, a
	ret nz

	ld hl, BattleMonType1
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3cbe3
	ld hl, EnemyMonType1

.asm_3cbe3
	ld a, [hli]
	cp ROCK
	ret z
	cp GROUND
	ret z
	cp STEEL
	ret z

	ld a, [hl]
	cp ROCK
	ret z
	cp GROUND
	ret z
	cp STEEL
	ret z

	call Function3c8e4
	xor a
	ld [$cfca], a
	ld de, $010b
	call Function3ee17
	call Function3c8e4
	call GetEighthMaxHP
	call Function3cc3f

	ld hl, BattleText_0x8084d
	jp StdBattleTextBox

.asm_3cc13
	ld hl, .WeatherEndedMessages
	call .asm_3cc1e
	xor a
	ld [Weather], a
	ret

.asm_3cc1e
	ld a, [Weather]
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp StdBattleTextBox
; 3cc2d

.WeatherMessages
	dw BattleText_0x8091f
	dw BattleText_0x80938
	dw BattleText_0x80951
.WeatherEndedMessages
	dw BattleText_0x80967
	dw BattleText_0x8097a
	dw BattleText_0x8098f
; 3cc39

Function3cc39: ; 3cc39
	call Function3cc45
	jp Function3cd3c
; 3cc3f

Function3cc3f: ; 3cc3f
	call Function3cc45
	jp Function3cd36
; 3cc45



Function3cc45: ; 3cc45
	ld hl, BattleMonHP
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3cc50
	ld hl, EnemyMonHPHi

.asm_3cc50
	inc hl
	ld a, [hl]
	ld [$d1ec], a
	sub c
	ld [hld], a
	ld [$d1ee], a
	ld a, [hl]
	ld [$d1ed], a
	sbc b
	ld [hl], a
	ld [$d1ef], a
	ret nc
	ld a, [$d1ec]
	ld c, a
	ld a, [$d1ed]
	ld b, a
	xor a
	ld [hli], a
	ld [hl], a
	ld [$d1ee], a
	ld [$d1ef], a
	ret
; 3cc76

Function3cc76: ; 3cc76
	call GetQuarterMaxHP
	srl c
	srl c
	ld a, c
	and a
	jr nz, .asm_3cc82
	inc c

.asm_3cc82
	ret
; 3cc83


GetEighthMaxHP: ; 3cc83
; output: bc
	call GetQuarterMaxHP
; assumes nothing can have 1024 or more hp
; halve result
	srl c
; round up
	ld a, c
	and a
	jr nz, .end
	inc c
.end
	ret
; 3cc8e


GetQuarterMaxHP: ; 3cc8e
; output: bc
	call GetMaxHP

; quarter result
	srl b
	rr c
	srl b
	rr c

; assumes nothing can have 1024 or more hp
; round up
	ld a, c
	and a
	jr nz, .end
	inc c
.end
	ret
; 3cc9f


GetHalfMaxHP: ; 3cc9f
; output: bc
	call GetMaxHP

; halve reslut
	srl b
	rr c

; floor = 1
	ld a, c
	or b
	jr nz, .end
	inc c
.end
	ret
; 3ccac


GetMaxHP: ; 3ccac
; output: bc, Buffer1-2

; player
	ld hl, BattleMonMaxHP

; whose turn?
	ld a, [hBattleTurn]
	and a
	jr z, .gethp

; enemy
	ld hl, EnemyMonMaxHP

.gethp
	ld a, [hli]
	ld [Buffer2], a
	ld b, a

	ld a, [hl]
	ld [Buffer1], a
	ld c, a
	ret
; 3ccc2

Function3ccc2: ; 3ccc2
	ld hl, BattleMonHP
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3cccd
	ld hl, EnemyMonHP

.asm_3cccd
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	srl b
	rr c
	ld a, [hli]
	ld [Buffer2], a
	ld a, [hl]
	ld [Buffer1], a
	ret
; 3ccde

Function3ccde: ; 3ccde
	ld hl, BattleMonHP + 1
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3cce9
	ld hl, EnemyMonHP + 1

.asm_3cce9
	ld a, c
	sub [hl]
	dec hl
	ld a, b
	sbc [hl]
	ret
; 3ccef


Function3ccef: ; 3ccef
	ld hl, EnemyMonMaxHP
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3ccfa
	ld hl, BattleMonMaxHP

.asm_3ccfa
	ld a, [hli]
	ld [Buffer2], a
	ld a, [hld]
	ld [Buffer1], a
	dec hl
	ld a, [hl]
	ld [$d1ec], a
	add c
	ld [hld], a
	ld [$d1ee], a
	ld a, [hl]
	ld [$d1ed], a
	adc b
	ld [hli], a
	ld [$d1ef], a
	ld a, [Buffer1]
	ld c, a
	ld a, [hld]
	sub c
	ld a, [Buffer2]
	ld b, a
	ld a, [hl]
	sbc b
	jr c, .asm_3cd2d
	ld a, b
	ld [hli], a
	ld [$d1ef], a
	ld a, c
	ld [hl], a
	ld [$d1ee], a

.asm_3cd2d
	call Function3c8e4
	call Function3cd36
	jp Function3c8e4
; 3cd36

Function3cd36: ; 3cd36
	call Function3cd3c
	jp UpdateBattleHuds
; 3cd3c


Function3cd3c: ; 3cd3c
	ld hl, $c55e
	ld a, [hBattleTurn]
	and a
	ld a, $1
	jr z, .asm_3cd4a
	ld hl, $c4ca
	xor a

.asm_3cd4a
	push bc
	ld [$d10a], a
	ld a, $b
	call Predef
	pop bc
	ret
; 3cd55

Function3cd55: ; 3cd55
	call Function3cf14
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	call z, Function3cef1
	xor a
	ld [$c6f7], a
	call Function3ce01
	call Function3d873
	ld a, d
	and a
	jp z, LostBattle
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	call nz, Function3df48
	ld a, $1
	ld [hBGMapMode], a
	ld c, $3c
	call DelayFrames
	ld a, [IsInBattle]
	dec a
	jr nz, .asm_3cd8c
	ld a, $1
	ld [BattleEnded], a
	ret

.asm_3cd8c
	call Function3cf35
	jp z, Function3cfa4
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	jr nz, .asm_3cdba
	call Function3d1f8
	jr nc, .asm_3cda4
	ld a, $1
	ld [BattleEnded], a
	ret

.asm_3cda4
	call Function3d227
	call Function3d2e0
	jp c, Function3c0e5
	ld a, $1
	ld [$d0ec], a
	call Function3cf4a
	jp z, Function3c0e5
	jr asm_3cdca

.asm_3cdba
	ld a, $1
	ld [$d0ec], a
	call Function3cf4a
	jp z, Function3c0e5
	xor a
	ld [$d0ec], a
	ret

asm_3cdca
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3cde6
	call ClearSprites
	ld hl, $c4a1
	ld bc, $040a
	call ClearBox
	call Function3d2b3
	ld a, $1
	call asm_3cf78
	jr .asm_3cdfc

.asm_3cde6
	ld a, [CurPartyMon]
	push af
	ld a, $1
	call asm_3cf78
	call ClearSprites
	call Function309d
	pop af
	ld [CurPartyMon], a
	call Function3d2b3

.asm_3cdfc
	xor a
	ld [$d0ec], a
	ret
; 3ce01

Function3ce01: ; 3ce01
	call UpdateBattleMonInParty
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3ce16
	ld a, [CurOTMon]
	ld hl, OTPartyMon1CurHP
	call GetPartyLocation
	xor a
	ld [hli], a
	ld [hl], a

.asm_3ce16
	ld hl, PlayerSubStatus3
	res 2, [hl]
	xor a
	ld hl, EnemyDamageTaken
	ld [hli], a
	ld [hl], a
	call Function3d834
	call Function3dc18
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3ce2f
	jr .asm_3ce37

.asm_3ce2f
	call Function3ceec
	ld a, $1
	ld [$c6fd], a

.asm_3ce37
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	jr nz, .asm_3ce47
	ld a, [$c6f7]
	and a
	jr nz, .asm_3ce47
	call Function3d1aa

.asm_3ce47
	call Function3d873
	ld a, d
	and a
	ret z
	ld a, [IsInBattle]
	dec a
	call z, Function3d0ea
	call EmptyBattleTextBox
	call Function309d
	ld a, [$d0ee]
	and $c0
	ld [$d0ee], a
	call Function3ceaa
	jr z, .asm_3ce72
	ld hl, EnemyMonBaseStats
	ld b, $7
.asm_3ce6c
	srl [hl]
	inc hl
	dec b
	jr nz, .asm_3ce6c

.asm_3ce72
	ld hl, EnemyMonBaseStats
	ld de, $c720
	ld bc, $0007
	call CopyBytes
	xor a
	ld [$c71f], a
	call Function3ee3b
	call Function3ceaa
	ret z
	ld a, [$c664]
	push af
	ld a, d
	ld [$c664], a
	ld hl, $c720
	ld de, EnemyMonBaseStats
	ld bc, $0007
	call CopyBytes
	ld a, $1
	ld [$c71f], a
	call Function3ee3b
	pop af
	ld [$c664], a
	ret
; 3ceaa

Function3ceaa: ; 3ceaa
	ld a, [PartyCount]
	ld b, a
	ld hl, PartyMon1Species
	ld c, $1
	ld d, $0
.asm_3ceb5
	push hl
	push bc
	ld bc, $0022
	add hl, bc
	ld a, [hli]
	or [hl]
	pop bc
	pop hl
	jr z, .asm_3ced1
	push hl
	push bc
	ld bc, $0001
	add hl, bc
	pop bc
	ld a, [hl]
	pop hl
	cp $39
	jr nz, .asm_3ced1
	ld a, d
	or c
	ld d, a

.asm_3ced1
	sla c
	push de
	ld de, $0030
	add hl, de
	pop de
	dec b
	jr nz, .asm_3ceb5
	ld a, d
	ld e, $0
	ld b, $6
.asm_3cee1
	srl a
	jr nc, .asm_3cee6
	inc e

.asm_3cee6
	dec b
	jr nz, .asm_3cee1
	ld a, e
	and a
	ret
; 3ceec



Function3ceec: ; 3ceec
	xor a
	ld [Danger], a
	ret
; 3cef1

Function3cef1: ; 3cef1
	call Function3ceec
	call WaitSFX
	ld a, $f0
	ld [CryTracks], a
	ld a, [BattleMonSpecies]
	call Function37b6
	call Function3d43b
	ld hl, $c535
	ld bc, $050b
	call ClearBox
	ld hl, BattleText_0x80a75
	jp StdBattleTextBox
; 3cf14

Function3cf14: ; 3cf14
	call WaitSFX
	ld de, SFX_KINESIS
	call PlaySFX
	call Function3d432
	ld de, SFX_UNKNOWN_2A
	call PlaySFX
	hlcoord 1, 0
	ld bc, $040a
	call ClearBox
	ld hl, BattleText_0x809a8
	jp StdBattleTextBox
; 3cf35

Function3cf35: ; 3cf35
	ld a, [OTPartyCount]
	ld b, a
	xor a
	ld hl, OTPartyMon1CurHP
	ld de, $0030
.asm_3cf40
	or [hl]
	inc hl
	or [hl]
	dec hl
	add hl, de
	dec b
	jr nz, .asm_3cf40
	and a
	ret
; 3cf4a

Function3cf4a: ; 3cf4a
	ld hl, EnemyHPPal
	ld e, $30
	call Function3e12e
	call WaitBGMap
	callba Function2c012
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3cf6d
	call Function3e8e4
	ld a, [$d430]
	cp $f
	ret z
	call Function30b4

.asm_3cf6d
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	ld a, $0
	jr nz, asm_3cf78
	inc a
	ret

asm_3cf78
	push af
	xor a
	ld [$c718], a
	call Function3d834
	call Function3d867
	call Function3dc18
	pop af
	and a
	jr nz, .asm_3cf8f
	call Function3d4e1
	jr .asm_3cf92

.asm_3cf8f
	call asm_3d517

.asm_3cf92
	call Function3d57a
	call SetEnemyTurn
	call Function3dc23
	xor a
	ld [EnemyMoveAnimation], a
	ld [$d0ec], a
	inc a
	ret
; 3cfa4

Function3cfa4: ; 3cfa4
	call Function3ceec
	ld a, $1
	ld [$c6fd], a
	ld [BattleEnded], a
	ld a, [InLinkBattle]
	and a
	ld a, b
	call z, Function3d0ea
	callab Function39939
	ld hl, BattleText_0x809da
	call StdBattleTextBox
	call Function3d2f1
	jr z, .asm_3cff5
	ld a, [InLinkBattle]
	and a
	ret nz
	ld a, [$cfc0]
	bit 0, a
	jr nz, .asm_3d006
	call Function3ebd8
	ld c, $28
	call DelayFrames
	ld a, [BattleType]
	cp $1
	jr nz, .asm_3cfe8
	ld a, $2
	call Predef

.asm_3cfe8
	ld a, [$c2cc]
	bit 0, a
	jr nz, .asm_3cff2
	call Function3718

.asm_3cff2
	jp Function3d02b

.asm_3cff5
	call Function3ebd8
	ld c, $28
	call DelayFrames
	ld c, $4
	callba Function4ea0a
	ret

.asm_3d006
	call Function3ebd8
	ld c, $28
	call DelayFrames
	call EmptyBattleTextBox
	ld c, $3
	callba Function11c000
	call Functiona80
	ld hl, $c6ec
	ld a, [hli]
	or [hl]
	inc hl
	or [hl]
	ret nz
	call ClearTileMap
	call WhiteBGMap
	ret
; 3d02b

Function3d02b: ; 3d02b
	ld a, [$c73d]
	and a
	call nz, Function3d099
	call Function3d0b1
	push af
	ld a, $0
	jr nc, .asm_3d044
	ld a, [$d854]
	and $7
	cp $3
	jr nz, .asm_3d044
	inc a

.asm_3d044
	ld b, a
	ld c, $4
.asm_3d047
	ld a, b
	and a
	jr z, .asm_3d052
	call Function3d081
	dec c
	dec b
	jr .asm_3d047

.asm_3d052
	ld a, c
	and a
	jr z, .asm_3d05c
	call Function3d08d
	dec c
	jr .asm_3d052

.asm_3d05c
	call Function3d099
	call Function3d099
	pop af
	jr nc, .asm_3d07b
	ld a, [$d854]
	and $7
	jr z, .asm_3d07b
	ld hl, SentToMomTexts
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp StdBattleTextBox

.asm_3d07b
	ld hl, BattleText_0x809be
	jp StdBattleTextBox
; 3d081

Function3d081: ; 3d081
	push bc
	ld hl, $c688
	ld de, $d853
	call Function3d0be
	pop bc
	ret
; 3d08d

Function3d08d: ; 3d08d
	push bc
	ld hl, $c688
	ld de, $d850
	call Function3d0be
	pop bc
	ret
; 3d099

Function3d099: ; 3d099
	ld hl, $c688
	sla [hl]
	dec hl
	rl [hl]
	dec hl
	rl [hl]
	ret nc
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ret
; 3d0ab

SentToMomTexts: ; 3d0ab
	dw BattleText_0x809fc
	dw BattleText_0x80a2a
	dw BattleText_0x80a3d
; 3d0b1


Function3d0b1: ; 3d0b1
	ld hl, $d853
	ld a, [hld]
	cp $3f
	ld a, [hld]
	sbc $42
	ld a, [hl]
	sbc $f
	ret
; 3d0be

Function3d0be: ; 3d0be
	ld c, $3
	and a
	push de
	push hl
	push bc
	ld b, h
	ld c, l
	callba Function106008
	pop bc
	pop hl
.asm_3d0ce
	ld a, [de]
	adc [hl]
	ld [de], a
	dec de
	dec hl
	dec c
	jr nz, .asm_3d0ce
	pop hl
	ld a, [hld]
	cp $3f
	ld a, [hld]
	sbc $42
	ld a, [hl]
	sbc $f
	ret c
	ld [hl], $f
	inc hl
	ld [hl], $42
	inc hl
	ld [hl], $3f
	ret
; 3d0ea

Function3d0ea: ; 3d0ea
	push de
	ld de, MUSIC_NONE
	call PlayMusic
	call DelayFrame
	ld de, MUSIC_WILD_VICTORY
	ld a, [IsInBattle]
	dec a
	jr nz, .asm_3d113
	push de
	call Function3ceaa
	pop de
	jr nz, .asm_3d11e
	ld hl, $c6ec
	ld a, [hli]
	or [hl]
	jr nz, .asm_3d11e
	ld a, [$c664]
	and a
	jr z, .asm_3d121
	jr .asm_3d11e

.asm_3d113
	ld de, MUSIC_GYM_VICTORY
	call IsJohtoGymLeader
	jr c, .asm_3d11e
	ld de, MUSIC_TRAINER_VICTORY

.asm_3d11e
	call PlayMusic

.asm_3d121
	pop de
	ret
; 3d123



; These functions check if the current opponent is a gym leader or one of a
; few other special trainers.

; Note: KantoGymLeaders is a subset of JohtoGymLeaders. If you wish to
; differentiate between the two, call IsKantoGymLeader first.

; The Lance and Red entries are unused for music checks; those trainers are
; accounted for elsewhere.

IsKantoGymLeader: ; 0x3d123
	ld hl, KantoGymLeaders
	jr IsGymLeaderCommon

IsJohtoGymLeader: ; 0x3d128
	ld hl, JohtoGymLeaders
IsGymLeaderCommon:
	push de
	ld a, [OtherTrainerClass]
	ld de, $0001
	call IsInArray
	pop de
	ret
; 0x3d137

JohtoGymLeaders:
	db FALKNER
	db WHITNEY
	db BUGSY
	db MORTY
	db PRYCE
	db JASMINE
	db CHUCK
	db CLAIR
	db WILL
	db BRUNO
	db KAREN
	db KOGA
; fallthrough
; these two entries are unused
	db CHAMPION
	db RED
; fallthrough
KantoGymLeaders:
	db BROCK
	db MISTY
	db LT_SURGE
	db ERIKA
	db JANINE
	db SABRINA
	db BLAINE
	db BLUE
	db $ff


Function3d14e: ; 3d14e
	call Function3cef1
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	call z, Function3cf14
	ld a, $1
	ld [$c6f7], a
	call Function3d1aa
	call Function3d873
	ld a, d
	and a
	jp z, LostBattle
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	jr nz, .asm_3d185
	call Function3ce01
	ld a, [IsInBattle]
	dec a
	jr nz, .asm_3d17f
	ld a, $1
	ld [BattleEnded], a
	ret

.asm_3d17f
	call Function3cf35
	jp z, Function3cfa4

.asm_3d185
	call Function3d1f8
	jr nc, .asm_3d190
	ld a, $1
	ld [BattleEnded], a
	ret

.asm_3d190
	call Function3d227
	call Function3d2e0
	jp c, Function3c0e5
	ld a, c
	and a
	ret nz
	ld a, $1
	ld [$d0ec], a
	call Function3cf4a
	jp z, Function3c0e5
	jp asm_3cdca
; 3d1aa

Function3d1aa: ; 3d1aa
	ld a, [CurBattleMon]
	ld c, a
	ld hl, $c664
	ld b, $0
	ld a, $3
	call Predef
	ld hl, EnemySubStatus3
	res 2, [hl]
	xor a
	ld [Danger], a
	ld hl, PlayerDamageTaken
	ld [hli], a
	ld [hl], a
	ld [BattleMonStatus], a
	call UpdateBattleMonInParty
	ld c, $6
	ld a, [BattleMonLevel]
	add $1e
	ld b, a
	ld a, [EnemyMonLevel]
	cp b
	jr c, .asm_3d1dc
	ld c, $8

.asm_3d1dc
	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	callab ChangeHappiness
	ld a, [$d0ee]
	and $c0
	add $1
	ld [$d0ee], a
	ld a, [$c6f7]
	and a
	ret z
	ret
; 3d1f8

Function3d1f8: ; 3d1f8
	call EmptyBattleTextBox
	call Function309d
	ld a, [IsInBattle]
	and a
	dec a
	ret nz
	ld hl, BattleText_0x80a83
	call StdBattleTextBox
.asm_3d20a
	ld bc, $0107
	call Function1dd2
	ld a, [$cfa9]
	jr c, .asm_3d217
	and a
	ret

.asm_3d217
	ld a, [$cfa9]
	cp $1
	jr z, .asm_3d20a
	ld hl, PartyMon1Spd
	ld de, EnemyMonSpd
	jp Function3d8b3
; 3d227

Function3d227: ; 3d227
	call EmptyBattleTextBox
	call Function1d6e
	call Function3d2f7
	call Function3d362
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3d241
	ld a, $1
	ld [$d0ec], a
	call Function3e8e4

.asm_3d241
	xor a
	ld [$d0ec], a
	call Function3d2e0
	jr c, .asm_3d251
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	jr nz, .asm_3d26c

.asm_3d251
	call ClearSprites
	call WhiteBGMap
	call Function3eda6
	call Function1c07
	call Function309d
	call WaitBGMap
	call ClearSGB
	call Function32f9
	xor a
	ld c, a
	ret

.asm_3d26c
	call ClearSprites
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	call Function3d581
	call Function3da0d
	call Function3dab1
	call ClearPalettes
	call DelayFrame
	call Function3eda6
	call Function1c17
	call ClearSGB
	call Function32f9
	call Function3f26d
	call Function3dbde
	call Function3dc18
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	call SetPlayerTurn
	call Function3dc23
	ld a, $1
	and a
	ld c, a
	ret
; 3d2b3

Function3d2b3: ; 3d2b3
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	call Function3d581
	call Function3da0d
	call Function3dab1
	call Function3f26d
	call Function3dbde
	call Function3dc18
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	call SetPlayerTurn
	jp Function3dc23
; 3d2e0



Function3d2e0: ; 3d2e0
	ld a, [InLinkBattle]
	cp $4
	jr nz, .asm_3d2ef
	ld a, [$cd2b]
	and a
	jr z, .asm_3d2ef
	scf
	ret

.asm_3d2ef
	xor a
	ret
; 3d2f1

Function3d2f1: ; 3d2f1
	ld a, [InLinkBattle]
	cp $4
	ret
; 3d2f7

Function3d2f7: ; 3d2f7
	call WhiteBGMap
Function3d2fa: ; 3d2fa
	callba Function5004f
	callba Function50405
	callba Function8e85
	callba Function503e0
	ret
; 3d313

Function3d313: ; 3d313
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9
	call DelayFrame
	ret
; 3d329

Function3d329: ; 3d329
	call Function3d2f1
	jr z, .asm_3d335
	callba PartyMenuSelect
	ret

.asm_3d335
	callba Function100cb5
	ret
; 3d33c

Function3d33c: ; 3d33c
.asm_3d33c
	ld a, $2
	ld [PartyMenuActionText], a
	call Function3d313
	call Function3d329
	ret c
	call Function3d887
	jr z, .asm_3d33c
	xor a
	ret
; 3d34f

Function3d34f: ; 3d34f
	ld hl, CurBattleMon
	ld a, [CurPartyMon]
	cp [hl]
	jr nz, .asm_3d360
	ld hl, BattleText_0x80c0d
	call StdBattleTextBox
	scf
	ret

.asm_3d360
	xor a
	ret
; 3d362

Function3d362: ; 3d362
.asm_3d362
	call Function3d33c
	ret nc
	call Function3d2e0
	ret c
	ld de, SFX_WRONG
	call PlaySFX
	call WaitSFX
	jr .asm_3d362
; 3d375



Function3d375: ; 3d375
.asm_3d375
	call Function3d33c
	ret c
	call Function3d34f
	jr c, .asm_3d375
	xor a
	ret
; 3d380

Function3d380: ; 3d380
.asm_3d380
	call Function3d362
	call Function3d2e0
	ret c
	call Function3d34f
	jr c, .asm_3d380
	xor a
	ret
; 3d38e


LostBattle: ; 3d38e
	ld a, 1
	ld [BattleEnded], a

	ld a, [$cfc0]
	bit 0, a
	jr nz, .asm_3d3bd

	ld a, [BattleType]
	cp BATTLETYPE_CANLOSE
	jr nz, .asm_3d3e3

; Remove the enemy from the screen.
	hlcoord 0, 0
	ld bc, $0815
	call ClearBox
	call Function3ebd8

	ld c, 40
	call DelayFrames

	ld a, [$c2cc]
	bit 0, a
	jr nz, .asm_3d3bc
	call Function3718
.asm_3d3bc
	ret

.asm_3d3bd
; Remove the enemy from the screen.
	hlcoord 0, 0
	ld bc, $0815
	call ClearBox
	call Function3ebd8

	ld c, 40
	call DelayFrames

	call EmptyBattleTextBox
	ld c, 2
	callba Function11c000
	call Functiona80
	call ClearTileMap
	call WhiteBGMap
	ret

.asm_3d3e3
	ld a, [InLinkBattle]
	and a
	jr nz, .LostLinkBattle

; Greyscale
	ld b, 0
	call GetSGBLayout
	call Function32f9
	jr .end

.LostLinkBattle
	call UpdateEnemyMonInParty
	call Function3cf35
	jr nz, .asm_3d40a
	ld hl, TiedAgainstText
	ld a, [$d0ee]
	and $c0
	add 2
	ld [$d0ee], a
	jr .asm_3d412

.asm_3d40a
	ld hl, LostAgainstText
	call Function3d2f1
	jr z, .asm_3d417

.asm_3d412
	call StdBattleTextBox

.end
	scf
	ret

.asm_3d417
; Remove the enemy from the screen.
	hlcoord 0, 0
	ld bc, $0815
	call ClearBox
	call Function3ebd8

	ld c, 40
	call DelayFrames

	ld c, $3
	callba Function4ea0a
	scf
	ret
; 3d432


Function3d432: ; 3d432
	ld hl, $c510
	ld de, $c524
	jp Function3d444
; 3d43b

Function3d43b: ; 3d43b
	ld hl, $c569
	ld de, $c57d
	jp Function3d444
; 3d444

Function3d444: ; 3d444
	ld a, [$cfbe]
	push af
	set 6, a
	ld [$cfbe], a
	ld b, $7
.asm_3d44f
	push bc
	push de
	push hl
	ld b, $6
.asm_3d454
	push bc
	push hl
	push de
	ld bc, $0007
	call CopyBytes
	pop de
	pop hl
	ld bc, -20
	add hl, bc
	push hl
	ld h, d
	ld l, e
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	pop bc
	dec b
	jr nz, .asm_3d454
	ld bc, 20
	add hl, bc
	ld de, .Spaces
	call PlaceString
	ld c, 2
	call DelayFrames
	pop hl
	pop de
	pop bc
	dec b
	jr nz, .asm_3d44f
	pop af
	ld [$cfbe], a
	ret
; 3d488

.Spaces
	db "       @"
; 3d490


Function3d490: ; 3d490
	ld [hConnectionStripLength], a
	ld c, a
.asm_3d493
	push bc
	push hl
	ld b, $7
.asm_3d497
	push hl
	call Function3d4ae
	pop hl
	ld de, 20
	add hl, de
	dec b
	jr nz, .asm_3d497
	ld c, 2
	call DelayFrames
	pop hl
	pop bc
	dec c
	jr nz, .asm_3d493
	ret
; 3d4ae

Function3d4ae: ; 3d4ae
	ld a, [hConnectionStripLength]
	ld c, a
	cp $8
	jr nz, .asm_3d4bc
.asm_3d4b5
	ld a, [hli]
	ld [hld], a
	dec hl
	dec c
	jr nz, .asm_3d4b5
	ret

.asm_3d4bc
	ld a, [hld]
	ld [hli], a
	inc hl
	dec c
	jr nz, .asm_3d4bc
	ret
; 3d4c3


Function3d4c3: ; 3d4c3
	call Function3d557
	ld a, [$c718]
	dec a
	ld b, a
	call Function3d6ca
	call Function3d7a0
	call Function3d834
	call Function3d867
	call Function3d7c7
	call Function3dc18
	call Function3d57a
	ret
; 3d4e1


Function3d4e1: ; 3d4e1
	call Function3d714
	jr nc, asm_3d517
	call Function3d557
	call Function3d533
	jr c, .asm_3d4f1
	call Function3d599

.asm_3d4f1
	call Function3d6ca
	call Function3d74b
	push af
	call Function3d7a0
	call Function3d7b8
	call Function3d7c7
	pop af
	ret c
	xor a
	ld [$c664], a
	ld [$c6fc], a
	ld [$d0ec], a
	inc a
	ld [$c711], a
	call Function309d
	jp Function3e3ad

asm_3d517
	call Function3d557
	call Function3d533
	jr c, .asm_3d522
	call Function3d599

.asm_3d522
	call Function3d6ca
	ld a, $1
	ld [$c711], a
	call Function3d7a0
	call Function3d7b8
	jp Function3d7c7
; 3d533

Function3d533: ; 3d533
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3d541
	ld a, [$d430]
	sub $4
	ld b, a
	jr .asm_3d555

.asm_3d541
	ld a, [$c718]
	and a
	jr z, .asm_3d54b
	dec a
	ld b, a
	jr .asm_3d555

.asm_3d54b
	ld a, [$d264]
	and a
	ld b, $0
	jr nz, .asm_3d555
	and a
	ret

.asm_3d555
	scf
	ret
; 3d557

Function3d557: ; 3d557
	xor a
	ld [LastEnemyCounterMove], a
	ld [LastPlayerCounterMove], a
	ld [LastEnemyMove], a
	ld [CurEnemyMove], a
	dec a
	ld [$c6e6], a
	xor a
	ld [$c730], a
	ld hl, $c4b2
	ld a, $8
	call Function3d490
	call EmptyBattleTextBox
	jp Function1d6e
; 3d57a

Function3d57a: ; 3d57a
	xor a
	ld [$c664], a
	ld [$c6fc], a
Function3d581: ; 3d581
	ld a, [CurBattleMon]
	ld c, a
	ld hl, $c664
	ld b, $1
	push bc
	ld a, $3
	call Predef
	pop bc
	ld hl, $c6fc
	ld a, $3
	jp Predef
; 3d599

Function3d599: ; 3d599
	ld b, $ff
	ld a, $1
	ld [Buffer1], a
	ld [Buffer2], a
.asm_3d5a3
	ld hl, Buffer1
	sla [hl]
	inc hl
	sla [hl]
	inc b
	ld a, [OTPartyCount]
	cp b
	jp z, Function3d672
	ld a, [CurOTMon]
	cp b
	jr z, .asm_3d5d0
	ld hl, OTPartyMon1CurHP
	push bc
	ld a, b
	call GetPartyLocation
	ld a, [hli]
	ld c, a
	ld a, [hl]
	or c
	pop bc
	jr z, .asm_3d5d0
	call Function3d5d7
	call Function3d618
	jr .asm_3d5a3

.asm_3d5d0
	ld hl, Buffer2
	set 0, [hl]
	jr .asm_3d5a3
; 3d5d7

Function3d5d7: ; 3d5d7
	push bc
	ld hl, OTPartyMon1Move1
	ld a, b
	call GetPartyLocation
	pop bc
	ld e, $5
.asm_3d5e2
	dec e
	jr z, .asm_3d617
	ld a, [hli]
	and a
	jr z, .asm_3d617
	push hl
	push de
	push bc
	dec a
	ld hl, $5afb
	ld bc, $0007
	call AddNTimes
	ld de, EnemyMoveAnimation
	ld a, $10
	call FarCopyBytes
	call SetEnemyTurn
	callab Function0x347c8
	pop bc
	pop de
	pop hl
	ld a, [$d265]
	cp $b
	jr c, .asm_3d5e2
	ld hl, Buffer1
	set 0, [hl]
	ret

.asm_3d617
	ret
; 3d618

Function3d618: ; 3d618
	push bc
	ld hl, OTPartyCount
	ld a, b
	inc a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	dec a
	ld hl, $542b
	ld bc, $0020
	call AddNTimes
	ld de, EnemyMonType1
	ld bc, $0002
	ld a, $14
	call FarCopyBytes
	ld a, [BattleMonType1]
	ld [PlayerMoveType], a
	call SetPlayerTurn
	callab Function0x347c8
	ld a, [$d265]
	cp $b
	jr nc, .asm_3d663
	ld a, [BattleMonType2]
	ld [PlayerMoveType], a
	callab Function0x347c8
	ld a, [$d265]
	cp $b
	jr nc, .asm_3d663
	pop bc
	ret

.asm_3d663
	pop bc
	ld hl, Buffer1
	bit 0, [hl]
	jr nz, .asm_3d66f
	inc hl
	set 0, [hl]
	ret

.asm_3d66f
	res 0, [hl]
	ret
; 3d672

Function3d672: ; 3d672
.asm_3d672
	ld hl, Buffer1
	sla [hl]
	inc hl
	sla [hl]
	jr nc, .asm_3d672
	ld a, [OTPartyCount]
	ld b, a
	ld c, [hl]
.asm_3d681
	sla c
	jr nc, .asm_3d68a
	dec b
	jr z, .asm_3d6a7
	jr .asm_3d681

.asm_3d68a
	ld a, [Buffer1]
	and a
	jr z, .asm_3d69a
	ld b, $ff
	ld c, a
.asm_3d693
	inc b
	sla c
	jr nc, .asm_3d693
	jr .asm_3d6c9

.asm_3d69a
	ld b, $ff
	ld a, [Buffer2]
	ld c, a
.asm_3d6a0
	inc b
	sla c
	jr c, .asm_3d6a0
	jr .asm_3d6c9

.asm_3d6a7
	ld a, [OTPartyCount]
	ld b, a
	call BattleRandom
	and $7
	cp b
	jr nc, .asm_3d6a7
	ld b, a
	ld a, [CurOTMon]
	cp b
	jr z, .asm_3d6a7
	ld hl, OTPartyMon1CurHP
	push bc
	ld a, b
	call GetPartyLocation
	pop bc
	ld a, [hli]
	ld c, a
	ld a, [hl]
	or c
	jr z, .asm_3d6a7

.asm_3d6c9
	ret
; 3d6ca

Function3d6ca: ; 3d6ca
	ld a, b
	ld [CurPartyMon], a
	ld hl, OTPartyMon1Level
	call GetPartyLocation
	ld a, [hl]
	ld [CurPartyLevel], a
	ld a, [CurPartyMon]
	inc a
	ld hl, OTPartyCount
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [TempEnemyMonSpecies], a
	ld [CurPartySpecies], a
	call LoadEnemyMon
	ld a, [CurPartySpecies]
	cp $c9
	jr nz, .asm_3d708
	ld a, [$def4]
	and a
	jr nz, .asm_3d708
	ld hl, EnemyMonAtkDefDV
	ld a, $2d
	call Predef
	ld a, [UnownLetter]
	ld [$def4], a

.asm_3d708
	ld hl, EnemyMonHPHi
	ld a, [hli]
	ld [$c6ea], a
	ld a, [hl]
	ld [$c6eb], a
	ret
; 3d714

Function3d714: ; 3d714
	ld a, [$d264]
	dec a
	jp z, .asm_3d749
	ld a, [PartyCount]
	dec a
	jp z, .asm_3d749
	ld a, [InLinkBattle]
	and a
	jp nz, .asm_3d749
	ld a, [Options]
	bit 6, a
	jr nz, .asm_3d749
	ld a, [CurPartyMon]
	push af
	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	callba Functione538
	pop bc
	ld a, b
	ld [CurPartyMon], a
	jr c, .asm_3d749
	scf
	ret

.asm_3d749
	and a
	ret
; 3d74b

Function3d74b: ; 3d74b
	ld a, [CurPartyMon]
	push af
	callab Function39939
	ld hl, BattleText_0x80aca
	call StdBattleTextBox
	ld bc, $0107
	call Function1dd2
	ld a, [$cfa9]
	dec a
	jr nz, .asm_3d79a
	call Function3d2f7
	call Function3d375
	jr c, .asm_3d791
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	call ClearPalettes
	call DelayFrame
	call Function3eda6
	pop af
	ld [CurPartyMon], a
	xor a
	ld [CurEnemyMove], a
	ld [CurPlayerMove], a
	and a
	ret

.asm_3d791
	call ClearPalettes
	call DelayFrame
	call Function3eda6

.asm_3d79a
	pop af
	ld [CurPartyMon], a
	scf
	ret
; 3d7a0

Function3d7a0: ; 3d7a0
	xor a
	ld [hBGMapMode], a
	call Function1c07
	call ClearSprites
	ld hl, $c4a1
	ld bc, $040a
	call ClearBox
	call WaitBGMap
	jp Function3ee27
; 3d7b8

Function3d7b8: ; 3d7b8
	callab Function39939
	ld hl, BattleText_0x80af8
	call StdBattleTextBox
	jp WaitBGMap
; 3d7c7

Function3d7c7: ; 3d7c7
	ld a, [TempEnemyMonSpecies]
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData
	ld a, $1
	ld [MonType], a
	ld a, $1f
	call Predef
	call Function3f47c
	xor a
	ld [$cfca], a
	ld [$c689], a
	call SetEnemyTurn
	ld de, $0101
	call Function3ee17
	call Function3da79
	jr nc, .asm_3d800
	ld a, $1
	ld [$c689], a
	ld de, $0101
	call Function3ee17

.asm_3d800
	ld bc, TempMonSpecies
	callba Function4e53f
	jr c, .asm_3d82c
	callba Function4ea44
	jr c, .asm_3d821
	ld hl, $c4ac
	ld d, $0
	ld e, $0
	ld a, $47
	call Predef
	jr .asm_3d82c

.asm_3d821
	ld a, $f
	ld [CryTracks], a
	ld a, [TempEnemyMonSpecies]
	call Function37b6

.asm_3d82c
	call Function3e036
	ld a, $1
	ld [hBGMapMode], a
	ret
; 3d834

Function3d834: ; 3d834
	xor a
	ld [LastEnemyCounterMove], a
	ld [LastPlayerCounterMove], a
	ld [LastEnemyMove], a
	ld hl, EnemySubStatus1
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld [EnemyDisableCount], a
	ld [EnemyFuryCutterCount], a
	ld [$c681], a
	ld [$c72c], a
	ld [EnemyDisabledMove], a
	ld [$c6fa], a
	ld [$c730], a
	ld [$c731], a
	ld [EnemyTurnsTaken], a
	ld hl, PlayerSubStatus5
	res 7, [hl]
	ret
; 3d867

Function3d867: ; 3d867
	ld a, $7
	ld b, $8
	ld hl, EnemyAtkLevel
.asm_3d86e
	ld [hli], a
	dec b
	jr nz, .asm_3d86e
	ret
; 3d873

Function3d873: ; 3d873
	ld a, [PartyCount]
	ld e, a
	xor a
	ld hl, PartyMon1CurHP
	ld bc, $002f
.asm_3d87e
	or [hl]
	inc hl
	or [hl]
	add hl, bc
	dec e
	jr nz, .asm_3d87e
	ld d, a
	ret
; 3d887


Function3d887: ; 3d887
	ld a, [CurPartyMon]
	ld hl, PartyMon1CurHP
	call GetPartyLocation
	ld a, [hli]
	or [hl]
	ret nz
	ld a, [$d264]
	and a
	jr nz, .asm_3d8b1
	ld hl, PartySpecies
	ld a, [CurPartyMon]
	ld c, a
	ld b, 0
	add hl, bc
	ld a, [hl]
	cp EGG
	ld hl, BattleText_0x80b26
	jr z, .asm_3d8ae
	ld hl, BattleText_0x80b0b

.asm_3d8ae
	call StdBattleTextBox

.asm_3d8b1
	xor a
	ret
; 3d8b3


Function3d8b3: ; 3d8b3
	ld a, [BattleType]
	cp $2
	jp z, .asm_3d9a2
	cp $6
	jp z, .asm_3d9a2
	cp $9
	jp z, .asm_3d98d
	cp $b
	jp z, .asm_3d98d
	cp $7
	jp z, .asm_3d98d
	cp $c
	jp z, .asm_3d98d

	ld a, [InLinkBattle]
	and a
	jp nz, .asm_3d9a2

	ld a, [IsInBattle]
	dec a
	jp nz, .asm_3d992

	ld a, [EnemySubStatus5]
	bit 7, a
	jp nz, .asm_3d98d

	ld a, [$c730]
	and a
	jp nz, .asm_3d98d

	push hl
	push de
	ld a, [BattleMonItem]
	ld [$d265], a
	ld b, a
	callab GetItem
	ld a, b
	cp $48
	pop de
	pop hl
	jr nz, .asm_3d916

	call SetPlayerTurn
	call GetItemName
	ld hl, BattleText_0x80b89
	call StdBattleTextBox
	jp .asm_3d9a2

.asm_3d916
	ld a, [$d267]
	inc a
	ld [$d267], a
	ld a, [hli]
	ld [$ffb5], a
	ld a, [hl]
	ld [$ffb6], a
	ld a, [de]
	inc de
	ld [$ffb1], a
	ld a, [de]
	ld [$ffb2], a
	call Function30b4
	ld de, $ffb5
	ld hl, $ffb1
	ld c, $2
	call StringCmp
	jr nc, .asm_3d9a2
	xor a
	ld [hMultiplicand], a
	ld a, $20
	ld [hMultiplier], a
	call Multiply
	ld a, [$ffb5]
	ld [hProduct], a
	ld a, [$ffb6]
	ld [hMultiplicand], a
	ld a, [$ffb1]
	ld b, a
	ld a, [$ffb2]
	srl b
	rr a
	srl b
	rr a
	and a
	jr z, .asm_3d9a2
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, [$ffb5]
	and a
	jr nz, .asm_3d9a2
	ld a, [$d267]
	ld c, a
.asm_3d96c
	dec c
	jr z, .asm_3d97a
	ld b, $1e
	ld a, [$ffb6]
	add b
	ld [$ffb6], a
	jr c, .asm_3d9a2
	jr .asm_3d96c

.asm_3d97a
	call BattleRandom
	ld b, a
	ld a, [$ffb6]
	cp b
	jr nc, .asm_3d9a2
	ld a, $1
	ld [$d0ec], a
	ld hl, BattleText_0x80b3b
	jr .asm_3d995

.asm_3d98d
	ld hl, BattleText_0x80ba0
	jr .asm_3d995

.asm_3d992
	ld hl, BattleText_0x80b49

.asm_3d995
	call StdBattleTextBox
	ld a, $1
	ld [$d266], a
	call Function309d
	and a
	ret

.asm_3d9a2
	ld a, [InLinkBattle]
	and a
	ld a, $2
	jr z, .asm_3d9cf
	call Function309d
	xor a
	ld [$d0ec], a
	ld a, $f
	ld [CurMoveNum], a
	xor a
	ld [CurPlayerMove], a
	call Function3e8e4
	call Function30b4
	call Function3d2e0
	jr c, .asm_3d9f5

; Got away safely
	ld a, [$d430]
	cp $f
	ld a, $2
	jr z, .asm_3d9cf
	dec a
.asm_3d9cf
	ld b, a
	ld a, [$d0ee]
	and $c0
	add b
	ld [$d0ee], a
	call Function3ceec
	push de
	ld de, SFX_RUN
	call WaitPlaySFX
	pop de
	call WaitSFX
	ld hl, BattleText_0x80b77
	call StdBattleTextBox
	call WaitSFX
	call Function309d
	scf
	ret

.asm_3d9f5
	call Function3ceec
	ld hl, $cd2a
	bit 4, [hl]
	jr nz, .asm_3da05
	ld hl, BattleText_0x81863
	call StdBattleTextBox

.asm_3da05
	call WaitSFX
	call Function309d
	scf
	ret
; 3da0d


Function3da0d: ; 3da0d
	ld a, $0
	call GetPartyParamLocation
	ld de, BattleMonSpecies
	ld bc, $0006
	call CopyBytes
	ld bc, $000f
	add hl, bc
	ld de, BattleMonAtkDefDV
	ld bc, $0007
	call CopyBytes
	inc hl
	inc hl
	inc hl
	ld de, BattleMonLevel
	ld bc, $0011
	call CopyBytes
	ld a, [BattleMonSpecies]
	ld [TempBattleMonSpecies], a
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseType1]
	ld [BattleMonType1], a
	ld a, [BaseType2]
	ld [BattleMonType2], a
	ld hl, PartyMon1Nickname
	ld a, [CurBattleMon]
	call SkipNames
	ld de, BattleMonNick
	ld bc, $000b
	call CopyBytes
	ld hl, BattleMonAtk
	ld de, PlayerStats
	ld bc, $000a
	call CopyBytes
	call Function3ec2c
	call BadgeStatBoosts
	ret
; 3da74

Function3da74: ; 3da74
	call Function3da85
	jr asm_3da7c

Function3da79: ; 3da79
	call Function3da97

asm_3da7c
	ld b, h
	ld c, l
	callab CheckShininess
	ret
; 3da85

Function3da85: ; 3da85
	ld hl, BattleMonAtkDefDV
	ld a, [PlayerSubStatus5]
	bit 3, a
	ret z
	ld hl, PartyMon1DVs
	ld a, [CurBattleMon]
	jp GetPartyLocation
; 3da97

Function3da97: ; 3da97
	ld hl, EnemyMonAtkDefDV
	ld a, [EnemySubStatus5]
	bit 3, a
	ret z
	ld hl, $c6f2
	ld a, [IsInBattle]
	dec a
	ret z
	ld hl, OTPartyMon1AtkDefDV
	ld a, [CurOTMon]
	jp GetPartyLocation
; 3dab1

Function3dab1: ; 3dab1
	ld a, $7
	ld b, $8
	ld hl, PlayerAtkLevel
.asm_3dab8
	ld [hli], a
	dec b
	jr nz, .asm_3dab8
	ret
; 3dabd


Function3dabd: ; 3dabd
	ld a, [CurPartyMon]
	ld hl, OTPartyMon1Species
	call GetPartyLocation
	ld de, EnemyMonSpecies
	ld bc, $0006
	call CopyBytes
	ld bc, $000f
	add hl, bc
	ld de, EnemyMonAtkDefDV
	ld bc, $0007
	call CopyBytes
	inc hl
	inc hl
	inc hl
	ld de, EnemyMonLevel
	ld bc, $0011
	call CopyBytes
	ld a, [EnemyMonSpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld hl, OTPartyMon1Nickname
	ld a, [CurPartyMon]
	call SkipNames
	ld de, EnemyMonNick
	ld bc, $000b
	call CopyBytes
	ld hl, EnemyMonAtk
	ld de, EnemyStats
	ld bc, $000a
	call CopyBytes
	call Function3ec30
	ld hl, BaseType1
	ld de, EnemyMonType1
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	ld hl, BaseHP
	ld de, EnemyMonBaseStats
	ld b, $5
.asm_3db25
	ld a, [hli]
	ld [de], a
	inc de
	dec b
	jr nz, .asm_3db25
	ld a, [CurPartyMon]
	ld [CurOTMon], a
	ret
; 3db32


Function3db32: ; 3db32
	call ClearSprites
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	call Function3d581
	call Function3da0d
	call Function3dab1
	call Function3dbde
	call Function3dc18
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	ret
; 3db5f


Function3db5f: ; 3db5f
	ld hl, BattleMonAtkDefDV
	ld a, $2d
	call Predef
	ld hl, $c505
	ld b, $7
	ld c, $8
	call ClearBox
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	call Function3f43d
	xor a
	ld [$ffad], a
	ld [$d0d2], a
	ld [CurMoveNum], a
	ld [TypeModifier], a
	ld [PlayerMoveAnimation], a
	ld [LastEnemyCounterMove], a
	ld [LastPlayerCounterMove], a
	ld [LastPlayerMove], a
	call Function3e4a8
	call Function3ee27
	xor a
	ld [$c731], a
	call SetPlayerTurn
	xor a
	ld [$cfca], a
	ld [$c689], a
	ld de, $0101
	call Function3ee17
	call Function3da74
	jr nc, .asm_3dbbc
	ld a, $1
	ld [$c689], a
	ld de, $0101
	call Function3ee17

.asm_3dbbc
	ld a, $0
	call GetPartyParamLocation
	ld b, h
	ld c, l
	callba Function4e53f
	jr c, .asm_3dbd6
	ld a, $f0
	ld [CryTracks], a
	ld a, [CurPartySpecies]
	call Function37b6

.asm_3dbd6
	call Function3df48
	ld a, $1
	ld [hBGMapMode], a
	ret
; 3dbde

Function3dbde: ; 3dbde
	xor a
	ld [LastEnemyCounterMove], a
	ld [LastPlayerCounterMove], a
	ld [LastPlayerMove], a
	ld hl, PlayerSubStatus1
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, PlayerUsedMoves
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld [PlayerDisableCount], a
	ld [PlayerFuryCutterCount], a
	ld [$c679], a
	ld [$c72b], a
	ld [DisabledMove], a
	ld [$c6fe], a
	ld [$c731], a
	ld [$c730], a
	ld [PlayerTurnsTaken], a
	ld hl, EnemySubStatus5
	res 7, [hl]
	ret
; 3dc18

Function3dc18: ; 3dc18
	ld hl, PlayerSubStatus1
	res 7, [hl]
	ld hl, EnemySubStatus1
	res 7, [hl]
	ret
; 3dc23

Function3dc23: ; 3dc23
	ld hl, PlayerScreens
	ld de, BattleMonType1
	ld bc, Function3df48
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3dc3a
	ld hl, EnemyScreens
	ld de, EnemyMonType1
	ld bc, Function3e036

.asm_3dc3a
	bit 0, [hl]
	ret z
	ld a, [de]
	cp $2
	ret z
	inc de
	ld a, [de]
	cp $2
	ret z
	push bc
	ld hl, BattleText_0x80bae
	call StdBattleTextBox
	call GetEighthMaxHP
	call Function3cc39
	pop hl
	call Function3dc5a
	jp WaitBGMap
; 3dc5a

Function3dc5a: ; 3dc5a
	jp [hl]
; 3dc5b

Function3dc5b: ; 3dc5b
	ld a, $10
	call GetBattleVar
	ld b, a
	call Function3c5ec
	ld a, b
	cp $80
	jr nz, .asm_3dce4
	ld a, [CurBattleMon]
	push af
	ld hl, DoPlayerTurn
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3dc7e
	ld hl, DoEnemyTurn
	ld a, [$c71a]
	ld [CurBattleMon], a

.asm_3dc7e
	ld a, BANK(DoPlayerTurn)
	rst FarCall
	ld a, $10
	call _GetBattleVar
	ld a, $ff
	ld [hl], a
	pop af
	ld [CurBattleMon], a
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3dcc0
	ld a, [$c71a]
	call Function399f
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	jr nz, .asm_3dce4
	ld a, $f0
	ld [CryTracks], a
	ld a, [BattleMonSpecies]
	call Function37b6
	ld a, [$c71a]
	ld c, a
	ld hl, $c664
	ld b, $0
	ld a, $3
	call Predef
	call Function3d43b
	ld hl, BattleText_0x80a75
	jr .asm_3dcdf

.asm_3dcc0
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	jr nz, .asm_3dce4
	ld de, SFX_KINESIS
	call PlaySFX
	call WaitSFX
	ld de, SFX_UNKNOWN_2A
	call PlaySFX
	call WaitSFX
	call Function3d432
	ld hl, BattleText_0x809a8

.asm_3dcdf
	call StdBattleTextBox
	scf
	ret

.asm_3dce4
	and a
	ret
; 3dce6

Function3dce6: ; 3dce6
	ld a, [hBattleTurn]
	push af
	xor a
	ld [hBattleTurn], a
	ld [$cfca], a
	ld de, $0102
	call Function3ee17
	pop af
	ld [hBattleTurn], a
	ret
; 3dcf9

Function3dcf9: ; 3dcf9
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3dd17
	call SetPlayerTurn
	call Function3dd2f
	call Function3dde9
	call Function3de51
	call SetEnemyTurn
	call Function3dd2f
	call Function3dde9
	jp Function3de51

.asm_3dd17
	call SetEnemyTurn
	call Function3dd2f
	call Function3dde9
	call Function3de51
	call SetPlayerTurn
	call Function3dd2f
	call Function3dde9
	jp Function3de51
; 3dd2f

Function3dd2f: ; 3dd2f
	callab GetOpponentItem
	ld a, b
	cp $1
	ret nz
	ld de, EnemyMonHPLo
	ld hl, EnemyMonMaxHPHi
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3dd4a
	ld de, $c63d
	ld hl, BattleMonMaxHP

.asm_3dd4a
	push bc
	ld a, [de]
	ld [$d1ec], a
	add a
	ld c, a
	dec de
	ld a, [de]
	inc de
	ld [$d1ed], a
	adc a
	ld b, a
	ld a, b
	cp [hl]
	ld a, c
	pop bc
	jr z, .asm_3dd62
	jr c, .asm_3dd66
	ret

.asm_3dd62
	inc hl
	cp [hl]
	dec hl
	ret nc

.asm_3dd66
	call Function3ddc8
	ld a, [hli]
	ld [Buffer2], a
	ld a, [hl]
	ld [Buffer1], a
	ld a, [de]
	add c
	ld [$d1ee], a
	ld c, a
	dec de
	ld a, [de]
	adc $0
	ld [$d1ef], a
	ld b, a
	ld a, [hld]
	cp c
	ld a, [hl]
	sbc b
	jr nc, .asm_3dd8d
	ld a, [hli]
	ld [$d1ef], a
	ld a, [hl]
	ld [$d1ee], a

.asm_3dd8d
	ld a, [$d1ef]
	ld [de], a
	inc de
	ld a, [$d1ee]
	ld [de], a
	ld a, [hBattleTurn]
	ld [$d10a], a
	and a
	ld hl, $c4ca
	jr z, .asm_3dda4
	ld hl, $c55e

.asm_3dda4
	ld [$d10a], a
	ld a, $b
	call Predef
Function3ddac:
	call RefreshBattleHuds
	callab GetOpponentItem
	ld a, [hl]
	ld [$d265], a
	call GetItemName
	callab Function27192
	ld hl, RecoveredUsingText
	jp StdBattleTextBox
; 3ddc8


Function3ddc8: ; 3ddc8
	push hl
	push de
	push bc
	call EmptyBattleTextBox
	ld a, $69
	ld [FXAnimIDLo], a
	call Function3c8e4
	xor a
	ld [$cfca], a
	ld [FXAnimIDHi], a
	ld a, $37
	call Predef
	call Function3c8e4
	pop bc
	pop de
	pop hl
	ret
; 3dde9

Function3dde9: ; 3dde9
	callab GetOpponentItem
	ld hl, .Statuses
.asm_3ddf2
	ld a, [hli]
	cp $ff
	ret z
	inc hl
	cp b
	jr nz, .asm_3ddf2
	dec hl
	ld b, [hl]
	ld a, $b
	call _GetBattleVar
	and b
	ret z
	xor a
	ld [hl], a
	push bc
	call UpdateOpponentInParty
	pop bc
	ld a, $9
	call _GetBattleVar
	and [hl]
	res 0, [hl]
	ld a, $5
	call _GetBattleVar
	and [hl]
	res 0, [hl]
	ld a, b
	cp $7f
	jr nz, .asm_3de26
	ld a, $7
	call _GetBattleVar
	res 7, [hl]

.asm_3de26
	ld hl, Function0x365fd
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3de31
	ld hl, Function0x365d7

.asm_3de31
	call Function3c8e4
	ld a, BANK(Function0x365fd)
	rst FarCall
	call Function3c8e4
	call Function3ddc8
	call Function3ddac
	ld a, $1
	and a
	ret
; 3de44

.Statuses ; 3de44
	db HELD_HEAL_POISON, 1 << PSN
	db HELD_HEAL_FREEZE, 1 << FRZ
	db HELD_HEAL_BURN, 1 << BRN
	db HELD_HEAL_SLEEP, SLP
	db HELD_HEAL_PARALYZE, 1 << PAR
	db HELD_HEAL_STATUS, 1 << PSN | 1 << FRZ | 1 << BRN | SLP | 1 << PAR
	db $ff
; 3de51


Function3de51: ; 3de51
	ld a, $7
	call GetBattleVar
	bit 7, a
	ret z
	callab GetOpponentItem
	ld a, b
	cp $10
	jr z, .asm_3de67
	cp $f
	ret nz

.asm_3de67
	ld a, [hl]
	ld [$d265], a
	ld a, $7
	call _GetBattleVar
	res 7, [hl]
	call GetItemName
	call Function3ddc8
	ld hl, BattleText_0x80dab
	call StdBattleTextBox
	ld a, [hBattleTurn]
	and a
	jr nz, .asm_3de90
	call Function3df1f
	xor a
	ld [bc], a
	ld a, [IsInBattle]
	dec a
	ret z
	ld [hl], $0
	ret

.asm_3de90
	call Function3df12
	xor a
	ld [bc], a
	ld [hl], a
	ret
; 3de97

Function3de97: ; 3de97
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3dea3
	call Function3dea9
	jp Function3deb1

.asm_3dea3
	call Function3deb1
	jp Function3dea9
; 3dea9

Function3dea9: ; 3dea9
	call Function3df12
	ld a, $0
	jp Function3deb6
; 3deb1

Function3deb1: ; 3deb1
	call Function3df1f
	ld a, $1
Function3deb6: ; 3deb6
	ld [hBattleTurn], a
	ld d, h
	ld e, l
	push de
	push bc
	ld a, [bc]
	ld b, a
	callab GetItem
	ld hl, .data_3defc
.asm_3dec7
	ld a, [hli]
	cp $ff
	jr z, .asm_3def9
	inc hl
	inc hl
	cp b
	jr nz, .asm_3dec7
	pop bc
	ld a, [bc]
	ld [$d265], a
	push bc
	dec hl
	dec hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, BANK(BattleCommand70)
	rst FarCall
	pop bc
	pop de
	ld a, [FailedMessage]
	and a
	ret nz
	xor a
	ld [bc], a
	ld [de], a
	call GetItemName
	ld hl, BattleText_0x80bde
	call StdBattleTextBox
	callab BattleCommand8c
	ret

.asm_3def9
	pop bc
	pop de
	ret
; 3defc

.data_3defc
	dbw $1f, BattleCommand70
	dbw $20, BattleCommand71
	dbw $21, BattleCommand72
	dbw $22, BattleCommand73
	dbw $23, BattleCommand74
	dbw $24, BattleCommand75
	dbw $25, BattleCommand76
	db $ff
; 3df12


Function3df12: ; 3df12
	ld hl, PartyMon1Item
	ld a, [CurBattleMon]
	call GetPartyLocation
	ld bc, BattleMonItem
	ret
; 3df1f

Function3df1f: ; 3df1f
	ld hl, OTPartyMon1Item
	ld a, [CurOTMon]
	call GetPartyLocation
	ld bc, EnemyMonItem
	ret
; 3df2c

Function3df2c: ; 3df2c
	push hl
	push de
	push bc
	call DrawPlayerHUD
	ld hl, PlayerHPPal
	call SetHPPal
	call CheckDanger
	call Function3e043
	ld hl, EnemyHPPal
	call SetHPPal
	pop bc
	pop de
	pop hl
	ret
; 3df48



Function3df48: ; 3df48
	push hl
	push de
	push bc
	call DrawPlayerHUD
	call UpdatePlayerHPPal
	call CheckDanger
	pop bc
	pop de
	pop hl
	ret
; 3df58

DrawPlayerHUD: ; 3df58
	xor a
	ld [hBGMapMode], a

; Clear the area
	hlcoord 9, 7
	ld bc, $050b
	call ClearBox

	callba DrawPlayerExpBar

	hlcoord 18, 9
	ld [hl], $73 ; vertical bar
	call PrintPlayerHUD

; HP bar
	hlcoord 10, 9
	ld b, OTPARTYMON
	xor a
	ld [MonType], a
	ld a, PREDEF_DRAW_PLAYER_HP
	call Predef

; Exp bar
	push de
	ld a, [CurBattleMon]
	ld hl, PartyMon1Exp + 2
	call GetPartyLocation
	ld d, h
	ld e, l

	hlcoord 10, 11
	ld a, [TempMonLevel]
	ld b, a
	call FillInExpBar
	pop de
	ret
; 3df98

UpdatePlayerHPPal: ; 3df98
	ld hl, PlayerHPPal
	jp Function3e12e
; 3df9e

CheckDanger: ; 3df9e
	ld hl, BattleMonHP
	ld a, [hli]
	or [hl]
	jr z, .asm_3dfb2
	ld a, [$c6fd]
	and a
	jr nz, .asm_3dfbe
	ld a, [PlayerHPPal]
	cp $2
	jr z, .asm_3dfb9

.asm_3dfb2
	ld hl, Danger
	res 7, [hl]
	jr .asm_3dfbe

.asm_3dfb9
	ld hl, Danger
	set 7, [hl]

.asm_3dfbe
	ret
; 3dfbf

PrintPlayerHUD: ; 3dfbf
	ld de, BattleMonNick
	hlcoord 10, 7
	call Function3e138
	call PlaceString

	push bc

	ld a, [CurBattleMon]
	ld hl, PartyMon1DVs
	call GetPartyLocation
	ld de, TempMonDVs
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	ld hl, BattleMonLevel
	ld de, TempMonLevel
	ld bc, $0011
	call CopyBytes
	ld a, [CurBattleMon]
	ld hl, PartyMon1Species
	call GetPartyLocation
	ld a, [hl]
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData

	pop hl
	dec hl

	ld a, $3
	ld [MonType], a
	callab GetGender
	ld a, $7f
	jr c, .asm_3e013
	ld a, $ef
	jr nz, .asm_3e013
	ld a, $f5

.asm_3e013
	ld hl, $c551
	ld [hl], a
	ld hl, $c54e
	push af
	push hl
	ld de, BattleMonStatus
	ld a, $21
	call Predef
	pop hl
	pop bc
	ret nz
	ld a, b
	cp $7f
	jr nz, .asm_3e02d
	dec hl

.asm_3e02d
	ld a, [BattleMonLevel]
	ld [TempMonLevel], a
	jp PrintLevel
; 3e036

Function3e036: ; 3e036
	push hl
	push de
	push bc
	call Function3e043
	call Function3e127
	pop bc
	pop de
	pop hl
	ret
; 3e043

Function3e043: ; 3e043
	xor a
	ld [hBGMapMode], a
	ld hl, $c4a1
	ld bc, $040b
	call ClearBox
	callba Function2c0c5
	ld a, [TempEnemyMonSpecies]
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	call GetBaseData
	ld de, EnemyMonNick
	ld hl, $c4a1
	call Function3e138
	call PlaceString
	ld h, b
	ld l, c
	dec hl
	ld hl, EnemyMonAtkDefDV
	ld de, TempMonDVs
	ld a, [EnemySubStatus5]
	bit 3, a
	jr z, .asm_3e080
	ld hl, $c6f2

.asm_3e080
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	ld a, $3
	ld [MonType], a
	callab GetGender
	ld a, $7f
	jr c, .asm_3e09a
	ld a, $ef
	jr nz, .asm_3e09a
	ld a, $f5

.asm_3e09a
	ld hl, $c4bd
	ld [hl], a
	ld hl, $c4ba
	push af
	push hl
	ld de, EnemyMonStatus
	ld a, $21
	call Predef
	pop hl
	pop bc
	jr nz, .asm_3e0be
	ld a, b
	cp $7f
	jr nz, .asm_3e0b5
	dec hl

.asm_3e0b5
	ld a, [EnemyMonLevel]
	ld [TempMonLevel], a
	call PrintLevel

.asm_3e0be
	ld hl, EnemyMonHPHi
	ld a, [hli]
	ld [$ffb5], a
	ld a, [hld]
	ld [$ffb6], a
	or [hl]
	jr nz, .asm_3e0d1
	ld c, a
	ld e, a
	ld d, $6
	jp .asm_3e11a

.asm_3e0d1
	xor a
	ld [hMultiplicand], a
	ld a, $30
	ld [hMultiplier], a
	call Multiply
	ld hl, EnemyMonMaxHPHi
	ld a, [hli]
	ld b, a
	ld a, [hl]
	ld [hMultiplier], a
	ld a, b
	and a
	jr z, .asm_3e105
	ld a, [hMultiplier]
	srl b
	rr a
	srl b
	rr a
	ld [hMultiplier], a
	ld a, [$ffb5]
	ld b, a
	srl b
	ld a, [$ffb6]
	rr a
	srl b
	rr a
	ld [$ffb6], a
	ld a, b
	ld [$ffb5], a

.asm_3e105
	ld a, [$ffb5]
	ld [hProduct], a
	ld a, [$ffb6]
	ld [hMultiplicand], a
	ld a, $2
	ld b, a
	call Divide
	ld a, [$ffb6]
	ld e, a
	ld a, $6
	ld d, a
	ld c, a
.asm_3e11a
	xor a
	ld [$d10a], a
	ld hl, $c4ca
	ld b, $0
	call DrawHPBar
	ret
; 3e127

Function3e127: ; 3e127
	ld hl, EnemyHPPal
	call Function3e12e
	ret
; 3e12e

Function3e12e: ; 3e12e
	ld b, [hl]
	call SetHPPal
	ld a, [hl]
	cp b
	ret z
	jp Function3ee27
; 3e138

Function3e138: ; 3e138
	ret
; 3e139

Function3e139: ; 3e139
	xor a
	ld [hBGMapMode], a
	call Function30bf
	ld a, [BattleType]
	cp $2
	jr z, .asm_3e156
	cp $3
	jr z, .asm_3e156
	call EmptyBattleTextBox
	call UpdateBattleHuds
	call EmptyBattleTextBox
	call Function309d

.asm_3e156
	ld a, [BattleType]
	cp $6
	jr nz, .asm_3e165
	callba Function24f13
	jr .asm_3e175

.asm_3e165
	ld a, [InputType]
	or a
	jr z, .asm_3e171
	callba Function1de294
.asm_3e171
	call Function3e19b
	ret c

.asm_3e175
	ld a, $1
	ld [hBGMapMode], a
	ld a, [$d0d2]
	cp $1
	jp z, Function3e192
	cp $3
	jp z, Function3e1c7
	cp $2
	jp z, Function3e28d
	cp $4
	jp z, Function3e489
	jr .asm_3e156
; 3e192

Function3e192: ; 3e192
	xor a
	ld [$d267], a
	call Function30b4
	and a
	ret
; 3e19b

Function3e19b: ; 3e19b
	call Function3d2f1
	jr z, .asm_3e1a8
	callba Function24ef2
	and a
	ret

.asm_3e1a8
	callba Function100b12
	ld a, [$cd2b]
	and a
	ret z
	ld hl, $cd2a
	bit 4, [hl]
	jr nz, .asm_3e1c5
	ld hl, $5863
	call StdBattleTextBox
	ld c, $3c
	call DelayFrames

.asm_3e1c5
	scf
	ret
; 3e1c7

Function3e1c7: ; 3e1c7
	ld a, [InLinkBattle]
	and a
	jp nz, Function3e22b
	ld a, [$cfc0]
	and a
	jp nz, Function3e22b
	call Function1d6e
	ld a, [BattleType]
	cp $3
	jr z, .asm_3e1f1
	cp $6
	jr z, .asm_3e201
	callba Function10493
	ld a, [$d0ec]
	and a
	jr z, .asm_3e20d
	jr .asm_3e209

.asm_3e1f1
	callba Function107bb
	ld a, $5
	ld [CurItem], a
	call DoItemEffect
	jr .asm_3e209

.asm_3e201
	ld a, $b1
	ld [CurItem], a
	call DoItemEffect

.asm_3e209
	call Function3e234
	ret

.asm_3e20d
	call ClearPalettes
	call DelayFrame
	call Function3ed9f
	call Function3f43d
	call Function3f47c
	call Function1c07
	call WaitBGMap
	call Function3ee27
	call Function309d
	jp Function3e139
; 3e22b

Function3e22b: ; 3e22b
	ld hl, BattleText_0x80bf3
	call StdBattleTextBox
	jp Function3e139
; 3e234

Function3e234: ; 3e234
	ld a, [$c64e]
	and a
	jr nz, .asm_3e279
	callab CheckItemPocket
	ld a, [$d142]
	cp $3
	jr z, .asm_3e24a
	call WhiteBGMap

.asm_3e24a
	xor a
	ld [hBGMapMode], a
	call Function3ed9f
	call ClearSprites
	ld a, [BattleType]
	cp $3
	jr z, .asm_3e25d
	call Function3f43d

.asm_3e25d
	call Function3f47c
	ld a, $1
	ld [$cfa9], a
	call Function1c07
	call Function3df2c
	call WaitBGMap
	call Function309d
	call Function1fbf
	call Function3ee27
	and a
	ret

.asm_3e279
	xor a
	ld [$c64e], a
	ld a, [$d0ee]
	and $c0
	ld [$d0ee], a
	call Function1fbf
	call Function32f9
	scf
	ret
; 3e28d

Function3e28d: ; 3e28d
	call Function1d6e
Function3e290:
	call Function1c07
	call Function1d6e
	call WhiteBGMap
Function3e299:
	call Function3d2fa
	xor a
	ld [PartyMenuActionText], a
	call Function3d313
	call Function3d329
	jr c, .asm_3e2da
.asm_3e2a8
	callba Function8ea4a
	call Function3e2f5
	jr c, .asm_3e2c8
	call Function1bee
	ld a, [$cfa9]
	cp $1
	jp z, Function3e358
	cp $2
	jr z, .asm_3e2cf
	cp $3
	jr z, .asm_3e2da
	jr .asm_3e2a8

.asm_3e2c8
	call Function3d2e0
	jr c, .asm_3e2da
	jr Function3e299

.asm_3e2cf
	call Function3e308
	call Function3d2e0
	jr c, .asm_3e2da
	jp Function3e290

.asm_3e2da
	call ClearSprites
	call ClearPalettes
	call DelayFrame
	call Function3eda6
	call Function1c17
	call Function309d
	call ClearSGB
	call Function32f9
	jp Function3e139
; 3e2f5

Function3e2f5: ; 3e2f5
	call Function3d2f1
	jr z, .asm_3e301
	callba Function24e99
	ret

.asm_3e301
	callba Function100d22
	ret
; 3e308

Function3e308: ; 3e308
	call DisableLCD
	ld hl, $9310
	ld de, VTiles0
	ld bc, $0110
	call CopyBytes
	ld hl, VTiles2
	ld de, $8110
	ld bc, $0310
	call CopyBytes
	call EnableLCD
	call ClearSprites
	call LowVolume
	xor a
	ld [MonType], a
	callba Function4dc7b
	call MaxVolume
	call DisableLCD
	ld hl, VTiles0
	ld de, $9310
	ld bc, $0110
	call CopyBytes
	ld hl, $8110
	ld de, VTiles2
	ld bc, $0310
	call CopyBytes
	call EnableLCD
	ret
; 3e358


Function3e358: ; 3e358
	ld a, [CurBattleMon]
	ld d, a
	ld a, [CurPartyMon]
	cp d
	jr nz, .asm_3e36b
	ld hl, BattleText_0x80c0d
	call StdBattleTextBox
	jp Function3e299

.asm_3e36b
	ld a, [$c730]
	and a
	jr nz, .asm_3e378
	ld a, [EnemySubStatus5]
	bit 7, a
	jr z, .asm_3e381

.asm_3e378
	ld hl, BattleText_0x80c22
	call StdBattleTextBox
	jp Function3e299

.asm_3e381
	call Function3d887
	jp z, Function3e299
	ld a, [CurBattleMon]
	ld [$c71a], a
	ld a, $2
	ld [$d0ec], a
	call ClearPalettes
	call DelayFrame
	call ClearSprites
	call Function3eda6
	call Function1c17
	call ClearSGB
	call Function32f9
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	; fallthrough
; 3e3ad

Function3e3ad: ; 3e3ad
	ld a, $1
	ld [$c710], a
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3e3c1
	call Function1d6e
	call Function3e8e4
	call Function1c17

.asm_3e3c1
	call Function3e7c1
	ld a, [InLinkBattle]
	and a
	jr nz, .asm_3e3cf

.asm_3e3ca
	call Function3e40b
	and a
	ret

.asm_3e3cf
	ld a, [$d430]
	cp $e
	jp z, .asm_3e3ca
	cp $d
	jp z, .asm_3e3ca
	cp $4
	jp c, .asm_3e3ca
	cp $f
	jr nz, .asm_3e3e9
	call Function3c0e5
	ret

.asm_3e3e9
	ld a, [$ffcb]
	cp $1
	jr z, .asm_3e3f7
	call Function3e40b
	call Function3e3ff
	and a
	ret

.asm_3e3f7
	call Function3e3ff
	call Function3e40b
	and a
	ret
; 3e3ff

Function3e3ff: ; 3e3ff
	callab Function3846c
	call SetEnemyTurn
	jp Function3dc23
; 3e40b

Function3e40b: ; 3e40b
	call Function3f2f4
	ld c, $32
	call DelayFrames
	ld hl, PlayerSubStatus4
	res 6, [hl]
	call SetEnemyTurn
	call Function3dc5b
	jr c, .asm_3e423
	call Function3dce6

.asm_3e423
	ld hl, $c535
	ld bc, $050b
	call ClearBox
	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	call Function3d581
	call Function3da0d
	call Function3dab1
	call Function3f26d
	call Function3dbde
	call Function3dc18
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	call SetPlayerTurn
	call Function3dc23
	ld a, $2
	ld [$cfa9], a
	ret
; 3e459

Function3e459: ; 3e459
	ld c, $32
	call DelayFrames
	ld hl, $c535
	ld bc, $050b
	call ClearBox
	ld a, [CurPartyMon]
	ld [CurBattleMon], a
	call Function3d581
	call Function3da0d
	xor a
	ld [$d265], a
	call Function3ecab
	call Function3db5f
	call EmptyBattleTextBox
	call Function309d
	call SetPlayerTurn
	jp Function3dc23
; 3e489



Function3e489: ; 3e489
	call Function30b4
	ld a, $3
	ld [$cfa9], a
	ld hl, BattleMonSpd
	ld de, EnemyMonSpd
	call Function3d8b3
	ld a, $0
	ld [$d266], a
	ret c
	ld a, [$d0ec]
	and a
	ret nz
	jp Function3e139
; 3e4a8



Function3e4a8: ; 3e4a8
	ld a, [BattleMonItem]
	ld b, a
	callab GetItem
	ld a, b
	cp $4c
	ret nz
	ld a, $1
	ld [$c73d], a
	ret
; 3e4bc

Function3e4bc: ; 3e4bc
	call Function3d2f1
	jr nz, .asm_3e4c8
	callba Function100b9f
	ret

.asm_3e4c8
	ld hl, EnemyMonMove1
	ld a, [$d235]
	dec a
	jr z, .asm_3e4e2
	dec a
	jr z, .asm_3e4dd
	call Function3e786
	ret z
	ld hl, BattleMonMove1
	jr .asm_3e4e2

.asm_3e4dd
	ld a, $2
	call GetPartyParamLocation

.asm_3e4e2
	ld de, $d25e
	ld bc, $0004
	call CopyBytes
	xor a
	ld [hBGMapMode], a
	ld hl, $c594
	ld b, $4
	ld c, $e
	ld a, [$d235]
	cp $2
	jr nz, .asm_3e503
	ld hl, $c544
	ld b, $4
	ld c, $e

.asm_3e503
	call TextBox
	ld hl, $c5aa
	ld a, [$d235]
	cp $2
	jr nz, .asm_3e513
	ld hl, $c55a

.asm_3e513
	ld a, $14
	ld [Buffer1], a
	ld a, $20
	call Predef
	ld b, $5
	ld a, [$d235]
	cp $2
	ld a, $d
	jr nz, .asm_3e52c
	ld b, $5
	ld a, $9

.asm_3e52c
	ld [$cfa1], a
	ld a, b
	ld [$cfa2], a
	ld a, [$d235]
	cp $1
	jr z, .asm_3e53e
	ld a, [CurMoveNum]
	inc a

.asm_3e53e
	ld [$cfa9], a
	ld a, $1
	ld [$cfaa], a
	ld a, [$d0eb]
	inc a
	ld [$cfa3], a
	ld a, $1
	ld [$cfa4], a
	ld c, $2c
	ld a, [$d235]
	dec a
	ld b, $c1
	jr z, .asm_3e569
	dec a
	ld b, $c3
	jr z, .asm_3e569
	ld a, [InLinkBattle]
	and a
	jr nz, .asm_3e569
	ld b, $c7

.asm_3e569
	ld a, b
	ld [$cfa8], a
	ld a, c
	ld [$cfa5], a
	xor a
	ld [$cfa6], a
	ld a, $10
	ld [$cfa7], a
.asm_3e57a
	ld a, [$d235]
	and a
	jr z, .asm_3e58e
	dec a
	jr nz, .asm_3e5a3
	ld hl, $c5c3
	ld de, .string_3e61c
	call PlaceString
	jr .asm_3e5a3

.asm_3e58e
	call MoveInfoBox
	ld a, [$d0e3]
	and a
	jr z, .asm_3e5a3
	ld hl, $c5a9
	ld bc, $0014
	dec a
	call AddNTimes
	ld [hl], $ec

.asm_3e5a3
	ld a, $1
	ld [hBGMapMode], a
	call Function1bd3
	bit 6, a
	jp nz, .asm_3e61d
	bit 7, a
	jp nz, .asm_3e62e
	bit 2, a
	jp nz, Function3e643
	bit 1, a
	push af
	xor a
	ld [$d0e3], a
	ld a, [$cfa9]
	dec a
	ld [$cfa9], a
	ld b, a
	ld a, [$d235]
	dec a
	jr nz, .asm_3e5d0
	pop af
	ret

.asm_3e5d0
	dec a
	ld a, b
	ld [CurMoveNum], a
	jr nz, .asm_3e5d9
	pop af
	ret

.asm_3e5d9
	pop af
	ret nz
	ld hl, BattleMonPPMove1
	ld a, [$cfa9]
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	and $3f
	jr z, .asm_3e610
	ld a, [PlayerDisableCount]
	swap a
	and $f
	dec a
	cp c
	jr z, .asm_3e60b
	ld a, [$c6e1]
	and a
	jr nz, .asm_3e606
	ld a, [$cfa9]
	ld hl, BattleMonMove1
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]

.asm_3e606
	ld [CurPlayerMove], a
	xor a
	ret

.asm_3e60b
	ld hl, BattleText_0x80c5b
	jr .asm_3e613

.asm_3e610
	ld hl, Function3cc39

.asm_3e613
	call StdBattleTextBox
	call Function30b4
	jp Function3e4bc
; 3e61c

.string_3e61c ; 3e61c
	db "@"
; 3e61d

.asm_3e61d
	ld a, [$cfa9]
	and a
	jp nz, .asm_3e57a
	ld a, [$d0eb]
	inc a
	ld [$cfa9], a
	jp .asm_3e57a
; 3e62e

.asm_3e62e: ; 3e62e
	ld a, [$cfa9]
	ld b, a
	ld a, [$d0eb]
	inc a
	inc a
	cp b
	jp nz, .asm_3e57a
	ld a, $1
	ld [$cfa9], a
	jp .asm_3e57a
; 3e643

Function3e643: ; 3e643
	ld a, [$d0e3]
	and a
	jr z, .asm_3e6bf
	ld hl, BattleMonMoves
	call .asm_3e6a5
	ld hl, BattleMonPP
	call .asm_3e6a5
	ld hl, PlayerDisableCount
	ld a, [hl]
	swap a
	and $f
	ld b, a
	ld a, [$cfa9]
	cp b
	jr nz, .asm_3e671
	ld a, [hl]
	and $f
	ld b, a
	ld a, [$d0e3]
	swap a
	add b
	ld [hl], a
	jr .asm_3e682

.asm_3e671
	ld a, [$d0e3]
	cp b
	jr nz, .asm_3e682
	ld a, [hl]
	and $f
	ld b, a
	ld a, [$cfa9]
	swap a
	add b
	ld [hl], a

.asm_3e682
	ld a, [PlayerSubStatus5]
	bit 3, a
	jr nz, .asm_3e69e
	ld hl, PartyMon1Moves
	ld a, [CurBattleMon]
	call GetPartyLocation
	push hl
	call .asm_3e6a5
	pop hl
	ld bc, $0015
	add hl, bc
	call .asm_3e6a5

.asm_3e69e
	xor a
	ld [$d0e3], a
	jp Function3e4bc

.asm_3e6a5
	push hl
	ld a, [$d0e3]
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	ld a, [de]
	ld b, [hl]
	ld [hl], a
	ld a, b
	ld [de], a
	ret

.asm_3e6bf
	ld a, [$cfa9]
	ld [$d0e3], a
	jp Function3e4bc
; 3e6c8

MoveInfoBox: ; 3e6c8
	xor a
	ld [hBGMapMode], a

	hlcoord 0, 8
	ld b, 3
	ld c, 9
	call TextBox
	call MobileTextBorder

	ld a, [PlayerDisableCount]
	and a
	jr z, .asm_3e6f4

	swap a
	and $f
	ld b, a
	ld a, [$cfa9]
	cp b
	jr nz, .asm_3e6f4

	hlcoord 1, 10
	ld de, .Disabled
	call PlaceString
	jr .done

.asm_3e6f4
	ld hl, $cfa9
	dec [hl]
	call SetPlayerTurn
	ld hl, BattleMonMoves
	ld a, [$cfa9]
	ld c, a
	ld b, 0
	add hl, bc
	ld a, [hl]
	ld [CurPlayerMove], a

	ld a, [CurBattleMon]
	ld [CurPartyMon], a
	ld a, WILDMON
	ld [MonType], a
	callab Functionf8ec

	ld hl, $cfa9
	ld c, [hl]
	inc [hl]
	ld b, 0
	ld hl, BattleMonPP
	add hl, bc
	ld a, [hl]
	and $3f
	ld [StringBuffer1], a
	call Function3e75f

	hlcoord 1, 9
	ld de, .Type
	call PlaceString

	hlcoord 7, 11
	ld [hl], "/"

	callab UpdateMoveData
	ld a, [PlayerMoveAnimation]
	ld b, a
	hlcoord 2, 10
	ld a, PREDEF_PRINT_MOVE_TYPE
	call Predef

.done
	ret
; 3e74f

.Disabled
	db "Disabled!@"
.Type
	db "TYPE/@"
; 3e75f


Function3e75f: ; 3e75f
	hlcoord 5, 11
	ld a, [InLinkBattle]
	cp $4
	jr c, .asm_3e76c
	hlcoord 5, 11

.asm_3e76c
	push hl
	ld de, StringBuffer1
	ld bc, $0102
	call PrintNum
	pop hl
	inc hl
	inc hl
	ld [hl], "/"
	inc hl
	ld de, $d265
	ld bc, $0102
	call PrintNum
	ret
; 3e786

Function3e786: ; 3e786
	ld a, STRUGGLE
	ld [CurPlayerMove], a
	ld a, [PlayerDisableCount]
	and a
	ld hl, BattleMonPP
	jr nz, .asm_3e79f

	ld a, [hli]
	or [hl]
	inc hl
	or [hl]
	inc hl
	or [hl]
	and $3f
	ret nz
	jr .asm_3e7b4

.asm_3e79f
	swap a
	and $f
	ld b, a
	ld d, $5
	xor a
.asm_3e7a7
	dec d
	jr z, .asm_3e7b2
	ld c, [hl]
	inc hl
	dec b
	jr z, .asm_3e7a7
	or c
	jr .asm_3e7a7

.asm_3e7b2
	and a
	ret nz

.asm_3e7b4
	ld hl, BattleText_0x80c72
	call StdBattleTextBox
	ld c, 60
	call DelayFrames
	xor a
	ret
; 3e7c1



Function3e7c1: ; 3e7c1
	ld a, [$c711]
	and a
	ret nz
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3e817
	call EmptyBattleTextBox
	call Function309d
	ld a, [$d0ec]
	and a
	call z, Function3e8e4
	call Function30b4
	ld a, [$d430]
	cp $e
	jp z, .asm_3e8bd
	cp $d
	jp z, .asm_3e82c
	cp $4
	jp nc, Function3e8c1
	ld [CurEnemyMoveNum], a
	ld c, a
	ld a, [EnemySubStatus1]
	bit 6, a
	jp nz, .asm_3e882
	ld a, [EnemySubStatus3]
	and $13
	jp nz, .asm_3e882
	ld hl, EnemySubStatus5
	bit 4, [hl]
	ld a, [LastEnemyMove]
	jp nz, .asm_3e87f
	ld hl, EnemyMonMove1
	ld b, $0
	add hl, bc
	ld a, [hl]
	jp .asm_3e87f

.asm_3e817
	ld hl, EnemySubStatus5
	bit 4, [hl]
	jr z, .asm_3e824
	ld a, [LastEnemyMove]
	jp .asm_3e87f

.asm_3e824
	call Function3e8d1
	jp nz, Function3e8c1
	jr .asm_3e830

.asm_3e82c
	ld a, $ff
	jr .asm_3e87f

.asm_3e830
	ld hl, EnemyMonMove1
	ld de, EnemyMonPPMove1
	ld b, $4
.asm_3e838
	ld a, [hl]
	and a
	jp z, .asm_3e8bd
	ld a, [EnemyDisabledMove]
	cp [hl]
	jr z, .asm_3e848
	ld a, [de]
	and $3f
	jr nz, .asm_3e84f

.asm_3e848
	inc hl
	inc de
	dec b
	jr nz, .asm_3e838
	jr .asm_3e8bd

.asm_3e84f
	ld a, [IsInBattle]
	dec a
	jr nz, .asm_3e882
.asm_3e855
	ld hl, EnemyMonMove1
	call BattleRandom
	and $3
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [EnemyDisableCount]
	swap a
	and $f
	dec a
	cp c
	jr z, .asm_3e855
	ld a, [hl]
	and a
	jr z, .asm_3e855
	ld hl, EnemyMonPPMove1
	add hl, bc
	ld b, a
	ld a, [hl]
	and $3f
	jr z, .asm_3e855
	ld a, c
	ld [CurEnemyMoveNum], a
	ld a, b

.asm_3e87f
	ld [CurEnemyMove], a

.asm_3e882
	call SetEnemyTurn
	callab UpdateMoveData
	call Function3e8d1
	jr nz, .asm_3e894
	xor a
	ld [$c733], a

.asm_3e894
	ld a, [EnemyMoveEffect]
	cp $77
	jr z, .asm_3e89f
	xor a
	ld [EnemyFuryCutterCount], a

.asm_3e89f
	ld a, [EnemyMoveEffect]
	cp $51
	jr z, .asm_3e8af
	ld hl, EnemySubStatus4
	res 6, [hl]
	xor a
	ld [$c72c], a

.asm_3e8af
	ld a, [EnemyMoveEffect]
	cp $6f
	ret z
	cp $74
	ret z
	xor a
	ld [$c681], a
	ret

.asm_3e8bd
	ld a, $a5
	jr .asm_3e87f
; 3e8c1

Function3e8c1: ; 3e8c1
	xor a
	ld [EnemyFuryCutterCount], a
	ld [$c681], a
	ld [$c72c], a
	ld hl, EnemySubStatus4
	res 6, [hl]
	ret
; 3e8d1

Function3e8d1: ; 3e8d1
	ld a, [EnemySubStatus4]
	and $20
	ret nz
	ld hl, EnemySubStatus3
	ld a, [hl]
	and $13
	ret nz
	ld hl, EnemySubStatus1
	bit 6, [hl]
	ret
; 3e8e4

Function3e8e4: ; 3e8e4
	callba Function100a09
	ret
; 3e8eb


LoadEnemyMon: ; 3e8eb
; Initialize enemy monster parameters
; To do this we pull the species from TempEnemyMonSpecies

; Notes:
;   BattleRandom is used to ensure sync between Game Boys

; Clear the whole EnemyMon struct
	xor a
	ld hl, EnemyMonSpecies
	ld bc, EnemyMonEnd - EnemyMon
	call ByteFill
	
; We don't need to be here if we're in a link battle
	ld a, [InLinkBattle]
	and a
	jp nz, Function3dabd
	
	ld a, [$cfc0] ; ????
	bit 0, a
	jp nz, Function3dabd
	
; Make sure everything knows what species we're working with
	ld a, [TempEnemyMonSpecies]
	ld [EnemyMonSpecies], a
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	
; Grab the BaseData for this species
	call GetBaseData
	

; Let's get the item:

; Is the item predetermined?
	ld a, [IsInBattle]
	dec a
	jr z, .WildItem
	
; If we're in a trainer battle, the item is in the party struct
	ld a, [CurPartyMon]
	ld hl, OTPartyMon1Item
	call GetPartyLocation ; bc = PartyMon[CurPartyMon] - PartyMons
	ld a, [hl]
	jr .UpdateItem
	
	
.WildItem
; In a wild battle, we pull from the item slots in BaseData

; Force Item1
; Used for Ho-Oh, Lugia and Snorlax encounters
	ld a, [BattleType]
	cp BATTLETYPE_FORCEITEM
	ld a, [BaseItems]
	jr z, .UpdateItem
	
; Failing that, it's all up to chance
;  Effective chances:
;    75% None
;    23% Item1
;     2% Item2

; 25% chance of getting an item
	call BattleRandom
	cp a, $c0
	ld a, NO_ITEM
	jr c, .UpdateItem
	
; From there, an 8% chance for Item2
	call BattleRandom
	cp a, $14 ; 8% of 25% = 2% Item2
	ld a, [BaseItems]
	jr nc, .UpdateItem
	ld a, [BaseItems+1]
	
	
.UpdateItem
	ld [EnemyMonItem], a
	
	
; Initialize DVs
	
; If we're in a trainer battle, DVs are predetermined
	ld a, [IsInBattle]
	and a
	jr z, .InitDVs
	
; ????
	ld a, [EnemySubStatus5]
	bit 3, a
	jr z, .InitDVs
	
; Unknown
	ld hl, $c6f2
	ld de, EnemyMonDVs
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	jp .Happiness
	
	
.InitDVs
	
; Trainer DVs
	
; All trainers have preset DVs, determined by class
; See GetTrainerDVs for more on that
	callba GetTrainerDVs
; These are the DVs we'll use if we're actually in a trainer battle
	ld a, [IsInBattle]
	dec a
	jr nz, .UpdateDVs
	
	
; Wild DVs
; Here's where the fun starts

; Roaming monsters (Entei, Raikou) work differently
; They have their own structs, which are shorter than normal
	ld a, [BattleType]
	cp a, BATTLETYPE_ROAMING
	jr nz, .NotRoaming
	
; Grab HP
	call GetRoamMonHP
	ld a, [hl]
; Check if the HP has been initialized
	and a
; We'll do something with the result in a minute
	push af
	
; Grab DVs
	call GetRoamMonDVs
	inc hl
	ld a, [hld]
	ld c, a
	ld b, [hl]

; Get back the result of our check
	pop af
; If the RoamMon struct has already been initialized, we're done
	jr nz, .UpdateDVs
	
; If it hasn't, we need to initialize the DVs
; (HP is initialized at the end of the battle)
	call GetRoamMonDVs
	inc hl
	call BattleRandom
	ld [hld], a
	ld c, a
	call BattleRandom
	ld [hl], a
	ld b, a
; We're done with DVs
	jr .UpdateDVs

	
.NotRoaming
; Register a contains BattleType

; Forced shiny battle type
; Used by Red Gyarados at Lake of Rage
	cp a, BATTLETYPE_SHINY
	jr nz, .GenerateDVs

	ld b, ATKDEFDV_SHINY ; $ea
	ld c, SPDSPCDV_SHINY ; $aa
	jr .UpdateDVs
	
.GenerateDVs
; Generate new random DVs
	call BattleRandom
	ld b, a
	call BattleRandom
	ld c, a
	
.UpdateDVs
; Input DVs in register bc
	ld hl, EnemyMonDVs
	ld a, b
	ld [hli], a
	ld [hl], c
	
	
; We've still got more to do if we're dealing with a wild monster
	ld a, [IsInBattle]
	dec a
	jr nz, .Happiness
	
	
; Species-specfic:
	
	
; Unown
	ld a, [TempEnemyMonSpecies]
	cp a, UNOWN
	jr nz, .Magikarp
	
; Get letter based on DVs
	ld hl, EnemyMonDVs
	ld a, PREDEF_GET_UNOWN_LETTER
	call Predef
; Can't use any letters that haven't been unlocked
; If combined with forced shiny battletype, causes an infinite loop
	call CheckUnownLetter
	jr c, .GenerateDVs ; try again
	
	
.Magikarp
; Skimming this part recommended
	
	ld a, [TempEnemyMonSpecies]
	cp a, MAGIKARP
	jr nz, .Happiness
	
; Get Magikarp's length
	ld de, EnemyMonDVs
	ld bc, PlayerID
	callab CalcMagikarpLength
	
; We're clear if the length is < 1536
	ld a, [MagikarpLength]
	cp a, $06 ; $600 = 1536
	jr nz, .CheckMagikarpArea
	
; 5% chance of skipping size checks
	call Random
	cp a, $0c ; / $100
	jr c, .CheckMagikarpArea
; Try again if > 1614
	ld a, [MagikarpLength + 1]
	cp a, $50
	jr nc, .GenerateDVs
	
; 20% chance of skipping this check
	call Random
	cp a, $32 ; / $100
	jr c, .CheckMagikarpArea
; Try again if > 1598
	ld a, [MagikarpLength + 1]
	cp a, $40
	jr nc, .GenerateDVs
	
.CheckMagikarpArea
; The z checks are supposed to be nz
; Instead, all maps in GROUP_LAKE_OF_RAGE (mahogany area)
; and routes 20 and 44 are treated as Lake of Rage
	
; This also means Lake of Rage Magikarp can be smaller than ones
; caught elsewhere rather than the other way around
	
; Intended behavior enforces a minimum size at Lake of Rage
; The real behavior prevents size flooring in the Lake of Rage area
	ld a, [MapGroup]
	cp a, GROUP_LAKE_OF_RAGE
	jr z, .Happiness
	ld a, [MapNumber]
	cp a, MAP_LAKE_OF_RAGE
	jr z, .Happiness
; 40% chance of not flooring
	call Random
	cp a, $64 ; / $100
	jr c, .Happiness
; Floor at length 1024
	ld a, [MagikarpLength]
	cp a, 1024 >> 8
	jr c, .GenerateDVs ; try again
	
	
; Finally done with DVs
	
.Happiness
; Set happiness
	ld a, BASE_HAPPINESS
	ld [EnemyMonHappiness], a
; Set level
	ld a, [CurPartyLevel]
	ld [EnemyMonLevel], a
; Fill stats
	ld de, EnemyMonMaxHP
	ld b, $00
	ld hl, $d201 ; ?
	ld a, PREDEF_FILLSTATS
	call Predef
	
; If we're in a trainer battle,
; get the rest of the parameters from the party struct
	ld a, [IsInBattle]
	cp a, TRAINER_BATTLE
	jr z, .OpponentParty
	
; If we're in a wild battle, check wild-specific stuff
	and a
	jr z, .TreeMon
	
; ????
	ld a, [EnemySubStatus5]
	bit 3, a
	jp nz, .Moves
	
.TreeMon
; If we're headbutting trees, some monsters enter battle asleep
	call CheckSleepingTreeMon
	ld a, 7 ; Asleep for 7 turns
	jr c, .UpdateStatus
; Otherwise, no status
	xor a
	
.UpdateStatus
	ld hl, EnemyMonStatus
	ld [hli], a
	
; Unused byte
	xor a
	ld [hli], a
	
; Full HP...
	ld a, [EnemyMonMaxHPHi]
	ld [hli], a
	ld a, [EnemyMonMaxHPLo]
	ld [hl], a
	
; ...unless it's a RoamMon
	ld a, [BattleType]
	cp a, BATTLETYPE_ROAMING
	jr nz, .Moves
	
; Grab HP
	call GetRoamMonHP
	ld a, [hl]
; Check if it's been initialized again
	and a
	jr z, .InitRoamHP
; Update from the struct if it has
	ld a, [hl]
	ld [EnemyMonHPLo], a
	jr .Moves
	
.InitRoamHP
; HP only uses the lo byte in the RoamMon struct since
; Raikou/Entei/Suicune will have < 256 hp at level 40
	ld a, [EnemyMonHPLo]
	ld [hl], a
	jr .Moves
	
	
.OpponentParty
; Get HP from the party struct
	ld hl, (PartyMon1CurHP + 1) - PartyMon1 + OTPartyMon1
	ld a, [CurPartyMon]
	call GetPartyLocation
	ld a, [hld]
	ld [EnemyMonHPLo], a
	ld a, [hld]
	ld [EnemyMonHPHi], a
	
; Make sure everything knows which monster the opponent is using
	ld a, [CurPartyMon]
	ld [CurOTMon], a
	
; Get status from the party struct
	dec hl
	ld a, [hl] ; OTPartyMonStatus
	ld [EnemyMonStatus], a
	
	
.Moves
; ????
	ld hl, BaseType1
	ld de, EnemyMonType1
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	
; Get moves
	ld de, EnemyMonMoves
; Are we in a trainer battle?
	ld a, [IsInBattle]
	cp a, TRAINER_BATTLE
	jr nz, .WildMoves
; Then copy moves from the party struct
	ld hl, OTPartyMon1Moves
	ld a, [CurPartyMon]
	call GetPartyLocation
	ld bc, NUM_MOVES
	call CopyBytes
	jr .PP
	
.WildMoves
; Clear EnemyMonMoves
	xor a
	ld h, d
	ld l, e
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
; Make sure the predef knows this isn't a partymon
	ld [MagikarpLength], a
; Fill moves based on level
	ld a, PREDEF_FILLMOVES
	call Predef
	
.PP
; Trainer battle?
	ld a, [IsInBattle]
	cp a, TRAINER_BATTLE
	jr z, .TrainerPP
	
; Fill wild PP
	ld hl, EnemyMonMoves
	ld de, EnemyMonPP
	ld a, PREDEF_FILLPP
	call Predef
	jr .Finish
	
.TrainerPP
; Copy PP from the party struct
	ld hl, OTPartyMon1PP
	ld a, [CurPartyMon]
	call GetPartyLocation
	ld de, EnemyMonPP
	ld bc, NUM_MOVES
	call CopyBytes
	
.Finish
; Only the first five base stats are copied...
	ld hl, BaseStats
	ld de, EnemyMonBaseStats
	ld b, BaseSpecialDefense - BaseStats
.loop
	ld a, [hli]
	ld [de], a
	inc de
	dec b
	jr nz, .loop

	ld a, [BaseCatchRate]
	ld [de], a
	inc de

	ld a, [BaseExp]
	ld [de], a

	ld a, [TempEnemyMonSpecies]
	ld [$d265], a

	call GetPokemonName

; Did we catch it?
	ld a, [IsInBattle]
	and a
	ret z

; Update enemy nick
	ld hl, StringBuffer1
	ld de, EnemyMonNick
	ld bc, PKMN_NAME_LENGTH
	call CopyBytes

; Caught this mon
	ld a, [TempEnemyMonSpecies]
	dec a
	ld c, a
	ld b, 1 ; set
	ld hl, PokedexSeen
	ld a, PREDEF_FLAG
	call Predef

	ld hl, EnemyMonStats
	ld de, EnemyStats
	ld bc, EnemyMonStatsEnd - EnemyMonStats
	call CopyBytes

	ret
; 3eb38


CheckSleepingTreeMon: ; 3eb38
; Return carry if species is in the list
; for the current time of day

; Don't do anything if this isn't a tree encounter
	ld a, [BattleType]
	cp a, BATTLETYPE_TREE
	jr nz, .NotSleeping
	
; Get list for the time of day
	ld hl, .Morn
	ld a, [TimeOfDay]
	cp a, DAY
	jr c, .Check
	ld hl, .Day
	jr z, .Check
	ld hl, .Nite
	
.Check
	ld a, [TempEnemyMonSpecies]
	ld de, 1 ; length of species id
	call IsInArray
; If it's a match, the opponent is asleep
	ret c
	
.NotSleeping
	and a
	ret

.Nite
	db CATERPIE
	db METAPOD
	db BUTTERFREE
	db WEEDLE
	db KAKUNA
	db BEEDRILL
	db SPEAROW
	db EKANS
	db EXEGGCUTE
	db LEDYBA
	db AIPOM
	db $ff ; end

.Day
	db VENONAT
	db HOOTHOOT
	db NOCTOWL
	db SPINARAK
	db HERACROSS
	db $ff ; end

.Morn
	db VENONAT
	db HOOTHOOT
	db NOCTOWL
	db SPINARAK
	db HERACROSS
	db $ff ; end
; 3eb75


CheckUnownLetter: ; 3eb75
; Return carry if the Unown letter hasn't been unlocked yet
	
	ld a, [UnlockedUnowns]
	ld c, a
	ld de, 0
	
.loop
	
; Don't check this set unless it's been unlocked
	srl c
	jr nc, .next
	
; Is our letter in the set?
	ld hl, .LetterSets
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	
	push de
	ld a, [UnownLetter]
	ld de, 1
	push bc
	call IsInArray
	pop bc
	pop de
	
	jr c, .match
	
.next
; Make sure we haven't gone past the end of the table
	inc e
	inc e
	ld a, e
	cp a, .Set1 - .LetterSets
	jr c, .loop
	
; Hasn't been unlocked, or the letter is invalid
	scf
	ret
	
.match
; Valid letter
	and a
	ret
	
.LetterSets
	dw .Set1
	dw .Set2
	dw .Set3
	dw .Set4
	
.Set1
	;  A   B   C   D   E   F   G   H   I   J   K
	db 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, $ff
.Set2
	;  L   M   N   O   P   Q   R
	db 12, 13, 14, 15, 16, 17, 18, $ff
.Set3
	;  S   T   U   V   W
	db 19, 20, 21, 22, 23, $ff
.Set4
	;  X   Y   Z
	db 24, 25, 26, $ff
	
; 3ebc7


Function3ebc7: ; 3ebc7
	push bc
	ld a, [BattleMonLevel]
	ld b, a
	ld a, [EnemyMonLevel]
	ld [BattleMonLevel], a
	ld a, b
	ld [EnemyMonLevel], a
	pop bc
	ret
; 3ebd8

Function3ebd8: ; 3ebd8
	xor a
	ld [TempEnemyMonSpecies], a
	call Function3ee27
	ld a, [OtherTrainerClass]
	ld [TrainerClass], a
	ld de, VTiles2
	callab Function5120d
	ld hl, $c4b3
	ld c, $0
.asm_3ebf3
	inc c
	ld a, c
	cp $7
	ret z
	xor a
	ld [hBGMapMode], a
	ld [hBGMapThird], a
	ld d, $0
	push bc
	push hl
.asm_3ec01
	call Function3ec1a
	inc hl
	ld a, $7
	add d
	ld d, a
	dec c
	jr nz, .asm_3ec01
	ld a, $1
	ld [hBGMapMode], a
	ld c, $4
	call DelayFrames
	pop hl
	pop bc
	dec hl
	jr .asm_3ebf3
; 3ec1a

Function3ec1a: ; 3ec1a
	push hl
	push de
	push bc
	ld e, $7
.asm_3ec1f
	ld [hl], d
	ld bc, $0014
	add hl, bc
	inc d
	dec e
	jr nz, .asm_3ec1f
	pop bc
	pop de
	pop hl
	ret
; 3ec2c


Function3ec2c: ; 3ec2c
	ld a, 1
	jr Function3ec31
; 3ec30

Function3ec30: ; 3ec30
	xor a
; 3ec31

Function3ec31: ; 3ec31
	ld [hBattleTurn], a
	call Function3ec39
	jp Function3ec76
; 3ec39

Function3ec39: ; 3ec39
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3ec5a
	ld a, [BattleMonStatus]
	and $40
	ret z
	ld hl, $c645
	ld a, [hld]
	ld b, a
	ld a, [hl]
	srl a
	rr b
	srl a
	rr b
	ld [hli], a
	or b
	jr nz, .asm_3ec58
	ld b, $1

.asm_3ec58
	ld [hl], b
	ret

.asm_3ec5a
	ld a, [EnemyMonStatus]
	and $40
	ret z
	ld hl, $d21f
	ld a, [hld]
	ld b, a
	ld a, [hl]
	srl a
	rr b
	srl a
	rr b
	ld [hli], a
	or b
	jr nz, .asm_3ec74
	ld b, $1

.asm_3ec74
	ld [hl], b
	ret
; 3ec76

Function3ec76: ; 3ec76
	ld a, [hBattleTurn]
	and a
	jr z, .asm_3ec93
	ld a, [BattleMonStatus]
	and $10
	ret z
	ld hl, $c641
	ld a, [hld]
	ld b, a
	ld a, [hl]
	srl a
	rr b
	ld [hli], a
	or b
	jr nz, .asm_3ec91
	ld b, $1

.asm_3ec91
	ld [hl], b
	ret

.asm_3ec93
	ld a, [EnemyMonStatus]
	and $10
	ret z
	ld hl, $d21b
	ld a, [hld]
	ld b, a
	ld a, [hl]
	srl a
	rr b
	ld [hli], a
	or b
	jr nz, .asm_3eca9
	ld b, $1

.asm_3eca9
	ld [hl], b
	ret
; 3ecab

Function3ecab: ; 3ecab
	ld c, 0
.asm_3ecad
	call Function3ecb7
	inc c
	ld a, c
	cp 5
	jr nz, .asm_3ecad
	ret
; 3ecb7

Function3ecb7: ; 3ecb7
	push bc
	push bc
	ld a, [$d265]
	and a
	ld a, c
	ld hl, BattleMonAtk
	ld de, PlayerStats
	ld bc, PlayerAtkLevel
	jr z, .asm_3ecd2
	ld hl, EnemyMonAtk
	ld de, EnemyStats
	ld bc, EnemyAtkLevel

.asm_3ecd2
	add c
	ld c, a
	jr nc, .asm_3ecd7
	inc b
.asm_3ecd7
	ld a, [bc]
	pop bc
	ld b, a
	push bc
	sla c
	ld b, 0
	add hl, bc
	ld a, c
	add e
	ld e, a
	jr nc, .asm_3ece6
	inc d
.asm_3ece6
	pop bc
	push hl
	ld hl, .StatLevelMultipliers
	dec b
	sla b
	ld c, b
	ld b, 0
	add hl, bc
	xor a
	ld [hMultiplicand], a
	ld a, [de]
	ld [$ffb5], a
	inc de
	ld a, [de]
	ld [$ffb6], a
	ld a, [hli]
	ld [hMultiplier], a
	call Multiply
	ld a, [hl]
	ld [hMultiplier], a
	ld b, $4
	call Divide
	pop hl

; Cap at 999.
	ld a, [$ffb6]
	sub 999 % $100
	ld a, [$ffb5]
	sbc 999 / $100
	jp c, .asm_3ed1e

	ld a, 999 / $100
	ld [$ffb5], a
	ld a, 999 % $100
	ld [$ffb6], a

.asm_3ed1e
	ld a, [$ffb5]
	ld [hli], a
	ld b, a
	ld a, [$ffb6]
	ld [hl], a
	or b
	jr nz, .asm_3ed29
	inc [hl]

.asm_3ed29
	pop bc
	ret
; 3ed2b

.StatLevelMultipliers
;	      /
	db 25, 100 ; 25%
	db 28, 100 ; 28%
	db 33, 100 ; 33%
	db 40, 100 ; 40%
	db 50, 100 ; 50%
	db 66, 100 ; 66%

	db  1,  1 ; 100%

	db 15, 10 ; 150%
	db  2,  1 ; 200%
	db 25, 10 ; 250%
	db  3,  1 ; 300%
	db 35, 10 ; 350%
	db  4,  1 ; 400%
; 3ed45


BadgeStatBoosts: ; 3ed45
; Raise BattleMon stats depending on which badges have been obtained.

; Every other badge boosts a stat, starting from the first.

; 	ZephyrBadge:  Attack
; 	PlainBadge:   Speed
; 	MineralBadge: Defense
; 	GlacierBadge: Special Attack
; 	RisingBadge:  Special Defense

; The boosted stats are in order, except PlainBadge and MineralBadge's boosts are swapped.

	ld a, [InLinkBattle]
	and a
	ret nz

	ld a, [$cfc0]
	and a
	ret nz

	ld a, [JohtoBadges]

; Swap badges 3 (PlainBadge) and 5 (MineralBadge).
	ld d, a
	and %00000100
	add a
	add a
	ld b, a
	ld a, d
	and %00010000
	rrca
	rrca
	ld c, a
	ld a, d
	and %11101011
	or b
	or c
	ld b, a

	ld hl, BattleMonAtk
	ld c, 4
.CheckBadge
	ld a, b
	srl b
	call c, BoostStat
	inc hl
	inc hl
; Check every other badge.
	srl b
	dec c
	jr nz, .CheckBadge
; And the last one (RisingBadge) too.
	srl a
	call c, BoostStat
	ret
; 3ed7c


BoostStat: ; 3ed7c
; Raise stat at hl by 1/8.

	ld a, [hli]
	ld d, a
	ld e, [hl]
	srl d
	rr e
	srl d
	rr e
	srl d
	rr e
	ld a, [hl]
	add e
	ld [hld], a
	ld a, [hl]
	adc d
	ld [hli], a

; Cap at 999.
	ld a, [hld]
	sub 999 % $100
	ld a, [hl]
	sbc 999 / $100
	ret c
	ld a, 999 / $100
	ld [hli], a
	ld a, 999 % $100
	ld [hld], a
	ret
; 3ed9f


Function3ed9f: ; 3ed9f
	callab Functionfb4f2
	ret
; 3eda6

Function3eda6: ; 3eda6
	callab Functionfb50d
	ret
; 3edad


Function3edad: ; 3edad
	ld de, $4ac0
	ld hl, $96c0
	ld bc, $3e04
	call Get1bpp
	ld de, $4ae0
	ld hl, $9730
	ld bc, $3e06
	call Get1bpp
	ld de, $4b10
	ld hl, $9550
	ld bc, $3e08
	jp Get2bpp
; 3edd1


EmptyBattleTextBox: ; 3edd1
	ld hl, .empty
	jp BattleTextBox
.empty
	db "@"
; 3edd8


_BattleRandom: ; 3edd8
; If the normal RNG is used in a link battle it'll desync.
; To circumvent this a shared PRNG is used instead.

; But if we're in a non-link battle we're safe to use it
	ld a, [InLinkBattle]
	and a
	jp z, Random

; The PRNG operates in streams of 10 values.

; Which value are we trying to pull?
	push hl
	push bc
	ld a, [LinkBattleRNCount]
	ld c, a
	ld b, 0
	ld hl, LinkBattleRNs
	add hl, bc
	inc a
	ld [LinkBattleRNCount], a

; If we haven't hit the end yet, we're good
	cp 10 - 1 ; Exclude last value. See the closing comment
	ld a, [hl]
	pop bc
	pop hl
	ret c

; If we have, we have to generate new pseudorandom data
; Instead of having multiple PRNGs, ten seeds are used
	push hl
	push bc
	push af

; Reset count to 0
	xor a
	ld [LinkBattleRNCount], a
	ld hl, LinkBattleRNs
	ld b, 10 ; number of seeds

; Generate next number in the sequence for each seed
; The algorithm takes the form *5 + 1 % 256
.loop
	; get last #
	ld a, [hl]

	; a * 5 + 1
	ld c, a
	add a
	add a
	add c
	inc a

	; update #
	ld [hli], a
	dec b
	jr nz, .loop

; This has the side effect of pulling the last value first,
; then wrapping around. As a result, when we check to see if
; we've reached the end, we check the one before it.

	pop af
	pop bc
	pop hl
	ret
; 3ee0f


Function3ee0f: ; 3ee0f
	ld a, BATTLE_VARS_SUBSTATUS3
	call GetBattleVar
	and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND
	ret nz
; 3ee17

Function3ee17: ; 3ee17
	ld a, e
	ld [FXAnimIDLo], a
	ld a, d
	ld [FXAnimIDHi], a
	call WaitBGMap
	ld a, $37
	jp Predef
; 3ee27

Function3ee27: ; 3ee27
	push af
	push bc
	push de
	push hl
	ld b, $1
	call GetSGBLayout
	call Function32f9
	call DelayFrame
	pop hl
	pop de
	pop bc
	pop af
	ret
; 3ee3b


Function3ee3b: ; 3ee3b
	ld a, [InLinkBattle]
	and a
	ret nz
	ld a, [$cfc0]
	bit 0, a
	ret nz
	call Function3f0d4
	xor a
	ld [CurPartyMon], a
	ld bc, PartyMon1Species

.asm_3ee50
	ld hl, $0022
	add hl, bc
	ld a, [hli]
	or [hl]
	jp z, .asm_3f0b9
	push bc
	ld hl, $c664
	ld a, [CurPartyMon]
	ld c, a
	ld b, $2
	ld d, $0
	ld a, $3
	call Predef
	ld a, c
	and a
	pop bc
	jp z, .asm_3f0b9
	ld hl, $000c
	add hl, bc
	ld d, h
	ld e, l
	ld hl, EnemyMonType2
	push bc
	ld c, $5
.asm_3ee7c
	inc hl
	ld a, [de]
	add [hl]
	ld [de], a
	jr nc, .asm_3ee89
	dec de
	ld a, [de]
	inc a
	jr z, .asm_3eea4
	ld [de], a
	inc de

.asm_3ee89
	push hl
	push bc
	ld a, $1c
	call GetPartyParamLocation
	ld a, [hl]
	and a
	pop bc
	pop hl
	jr z, .asm_3eea9
	ld a, [de]
	add [hl]
	ld [de], a
	jr nc, .asm_3eea9
	dec de
	ld a, [de]
	inc a
	jr z, .asm_3eea4
	ld [de], a
	inc de
	jr .asm_3eea9

.asm_3eea4
	ld a, $ff
	ld [de], a
	inc de
	ld [de], a

.asm_3eea9
	inc de
	inc de
	dec c
	jr nz, .asm_3ee7c
	xor a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, [EnemyMonBaseExp]
	ld [$ffb6], a
	ld a, [EnemyMonLevel]
	ld [hMultiplier], a
	call Multiply
	ld a, $7
	ld [hMultiplier], a
	ld b, $4
	call Divide
	pop bc
	ld hl, $0006
	add hl, bc
	ld a, [PlayerID]
	cp [hl]
	jr nz, .asm_3eedd
	inc hl
	ld a, [$d47c]
	cp [hl]
	ld a, $0
	jr z, .asm_3eee2

.asm_3eedd
	call Function3f106
	ld a, $1

.asm_3eee2
	ld [$d088], a
	ld a, [IsInBattle]
	dec a
	call nz, Function3f106
	push bc
	ld a, $1
	call GetPartyParamLocation
	ld a, [hl]
	cp $7e
	call z, Function3f106
	ld a, [$ffb6]
	ld [$d087], a
	ld a, [$ffb5]
	ld [StringBuffer2], a
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call GetNick
	ld hl, UnknownText_0x3f11b
	call BattleTextBox
	ld a, [$d087]
	ld [$ffb6], a
	ld a, [StringBuffer2]
	ld [$ffb5], a
	pop bc
	call Function3f136
	push bc
	call Function309d
	pop bc
	ld hl, $000a
	add hl, bc
	ld d, [hl]
	ld a, [$ffb6]
	add d
	ld [hld], a
	ld d, [hl]
	ld a, [$ffb5]
	adc d
	ld [hl], a
	jr nc, .asm_3ef3d
	dec hl
	inc [hl]
	jr nz, .asm_3ef3d
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hl], a

.asm_3ef3d
	ld a, [CurPartyMon]
	ld e, a
	ld d, $0
	ld hl, PartySpecies
	add hl, de
	ld a, [hl]
	ld [CurSpecies], a
	call GetBaseData
	push bc
	ld d, $64
	callab Function50e47
	pop bc
	ld hl, $000a
	add hl, bc
	push bc
	ld a, [hMultiplicand]
	ld b, a
	ld a, [$ffb5]
	ld c, a
	ld a, [$ffb6]
	ld d, a
	ld a, [hld]
	sub d
	ld a, [hld]
	sbc c
	ld a, [hl]
	sbc b
	jr c, .asm_3ef74
	ld a, b
	ld [hli], a
	ld a, c
	ld [hli], a
	ld a, d
	ld [hld], a

.asm_3ef74
	xor a
	ld [MonType], a
	ld a, $1f
	call Predef
	callab Function50e1b
	pop bc
	ld hl, $001f
	add hl, bc
	ld a, [hl]
	cp $64
	jp nc, .asm_3f0b9
	cp d
	jp z, .asm_3f0b9
	ld [$c719], a
	ld a, [CurPartyLevel]
	push af
	ld a, d
	ld [CurPartyLevel], a
	ld [hl], a
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	ld [CurSpecies], a
	ld [$d265], a
	call GetBaseData
	ld hl, $0025
	add hl, bc
	ld a, [hld]
	ld e, a
	ld d, [hl]
	push de
	ld hl, $0024
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $000a
	add hl, bc
	push bc
	ld b, $1
	ld a, $c
	call Predef
	pop bc
	pop de
	ld hl, $0025
	add hl, bc
	ld a, [hld]
	sub e
	ld e, a
	ld a, [hl]
	sbc d
	ld d, a
	dec hl
	ld a, [hl]
	add e
	ld [hld], a
	ld a, [hl]
	adc d
	ld [hl], a
	ld a, [CurBattleMon]
	ld d, a
	ld a, [CurPartyMon]
	cp d
	jr nz, .asm_3f035
	ld de, BattleMonHP
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	ld de, BattleMonMaxHP
	push bc
	ld bc, $000c
	call CopyBytes
	pop bc
	ld hl, $001f
	add hl, bc
	ld a, [hl]
	ld [BattleMonLevel], a
	ld a, [PlayerSubStatus5]
	bit 3, a
	jr nz, .asm_3f012
	ld hl, $0026
	add hl, bc
	ld de, PlayerStats
	ld bc, $000a
	call CopyBytes

.asm_3f012
	xor a
	ld [$d265], a
	call Function3ecab
	callab Function3ec2c
	callab BadgeStatBoosts
	callab Function3df48
	call EmptyBattleTextBox
	call Function309d
	ld a, $1
	ld [hBGMapMode], a

.asm_3f035
	callba Function2709e
	ld a, [CurBattleMon]
	ld b, a
	ld a, [CurPartyMon]
	cp b
	jr z, .asm_3f057
	ld de, SFX_HIT_END_OF_EXP_BAR
	call PlaySFX
	call WaitSFX
	ld hl, BattleText_0x80c9c
	call StdBattleTextBox
	call Function309d

.asm_3f057
	xor a
	ld [MonType], a
	ld a, $1f
	call Predef
	ld hl, $c4a9
	ld b, $a
	ld c, $9
	call TextBox
	ld hl, $c4bf
	ld bc, $0004
	ld a, $28
	call Predef
	ld c, $1e
	call DelayFrames
	call Functiona80
	call Function30b4
	xor a
	ld [MonType], a
	ld a, [CurSpecies]
	ld [$d265], a
	ld a, [CurPartyLevel]
	push af
	ld c, a
	ld a, [$c719]
	ld b, a

.asm_3f093
	inc b
	ld a, b
	ld [CurPartyLevel], a
	push bc
	ld a, $1a
	call Predef
	pop bc
	ld a, b
	cp c
	jr nz, .asm_3f093
	pop af
	ld [CurPartyLevel], a
	ld hl, EvolvableFlags
	ld a, [CurPartyMon]
	ld c, a
	ld b, $1
	ld a, $3
	call Predef
	pop af
	ld [CurPartyLevel], a

.asm_3f0b9
	ld a, [PartyCount]
	ld b, a
	ld a, [CurPartyMon]
	inc a
	cp b
	jr z, .asm_3f0d1
	ld [CurPartyMon], a
	ld a, $0
	call GetPartyParamLocation
	ld b, h
	ld c, l
	jp .asm_3ee50

.asm_3f0d1
	jp Function3d57a
; 3f0d4

Function3f0d4: ; 3f0d4
	ld a, [$c664]
	ld b, a
	ld c, $6
	ld d, $0
.asm_3f0dc
	xor a
	srl b
	adc d
	ld d, a
	dec c
	jr nz, .asm_3f0dc
	cp $2
	ret c
	ld [$d265], a
	ld hl, EnemyMonBaseStats
	ld c, $7
.asm_3f0ef
	xor a
	ld [hProduct], a
	ld a, [hl]
	ld [hMultiplicand], a
	ld a, [$d265]
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, [$ffb6]
	ld [hli], a
	dec c
	jr nz, .asm_3f0ef
	ret
; 3f106

Function3f106: ; 3f106
	push bc
	ld a, [$ffb5]
	ld b, a
	ld a, [$ffb6]
	ld c, a
	srl b
	rr c
	add c
	ld [$ffb6], a
	ld a, [$ffb5]
	adc b
	ld [$ffb5], a
	pop bc
	ret
; 3f11b

UnknownText_0x3f11b: ; 3f11b
	text_jump UnknownText_0x1c029c, BANK(UnknownText_0x1c029c)
	start_asm
	ld hl, UnknownText_0x3f131
	ld a, [$d088] ; IsTradedMon
	and a
	ret z
	ld hl, UnknownText_0x3f12c
	ret
; 3f12c

UnknownText_0x3f12c: ; 3f12c
	text_jump UnknownText_0x1c02a9, BANK(UnknownText_0x1c02a9)
	db "@"
; 3f131

UnknownText_0x3f131: ; 3f131
	text_jump UnknownText_0x1c02c9, BANK(UnknownText_0x1c02c9)
	db "@"
; 3f136


Function3f136: ; 3f136

	push bc

	ld hl, CurPartyMon
	ld a, [CurBattleMon]
	cp [hl]
	jp nz, .asm_3f219

	ld a, [BattleMonLevel]
	cp MAX_LEVEL
	jp nc, .asm_3f219

	ld a, [$ffb6]
	ld [$d004], a
	push af
	ld a, [$ffb5]
	ld [$d003], a
	push af
	xor a
	ld [DefaultFlypoint], a
	xor a
	ld [MonType], a
	ld a, $1f
	call Predef
	ld a, [TempMonLevel]
	ld b, a
	ld e, a
	push de
	ld de, $d118
	call Function3f39c
	push bc
	ld hl, $d118
	ld a, [$d004]
	add [hl]
	ld [hld], a
	ld a, [$d003]
	adc [hl]
	ld [hld], a
	jr nc, .asm_3f186
	inc [hl]
	jr nz, .asm_3f186
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hl], a

.asm_3f186
	ld d, $64
	callab Function50e47
	ld a, [hMultiplicand]
	ld b, a
	ld a, [$ffb5]
	ld c, a
	ld a, [$ffb6]
	ld d, a
	ld hl, $d118
	ld a, [hld]
	sub d
	ld a, [hld]
	sbc c
	ld a, [hl]
	sbc b
	jr c, .asm_3f1a8
	ld a, b
	ld [hli], a
	ld a, c
	ld [hli], a
	ld a, d
	ld [hld], a

.asm_3f1a8
	callab Function50e1b
	ld a, d
	pop bc
	pop de
	ld d, a
	cp e
	jr nc, .asm_3f1b7
	ld a, e
	ld d, a

.asm_3f1b7
	ld a, e
	cp $64
	jr nc, .asm_3f1ff
	cp d
	jr z, .asm_3f1ff
	inc a
	ld [TempMonLevel], a
	ld [CurPartyLevel], a
	ld [BattleMonLevel], a
	push de
	call Function3f21b
	ld c, $40
	call Function3f22c
	call PrintPlayerHUD
	ld hl, BattleMonNick
	ld de, StringBuffer1
	ld bc, $000b
	call CopyBytes
	call Function3dfe
	ld de, SFX_HIT_END_OF_EXP_BAR
	call PlaySFX
	callba Function8e79d
	call WaitSFX
	ld hl, BattleText_0x80c9c
	call StdBattleTextBox
	pop de
	inc e
	ld b, $0
	jr .asm_3f1b7

.asm_3f1ff
	push bc
	ld b, d
	ld de, $d118
	call Function3f39c
	ld a, b
	pop bc
	ld c, a
	call Function3f21b
	call Function3f22c
	call Function3dfe
	pop af
	ld [$ffb5], a
	pop af
	ld [$ffb6], a

.asm_3f219
	pop bc
	ret
; 3f21b

Function3f21b: ; 3f21b
	push bc
	call WaitSFX
	ld de, SFX_EXP_BAR
	call PlaySFX
	ld c, 10
	call DelayFrames
	pop bc
	ret
; 3f22c

Function3f22c: ; 3f22c
	ld d, $3
	dec b
.asm_3f22f
	inc b
	push bc
	push de
	ld hl, $c58d
	call Function3f41c
	pop de
	ld a, $1
	ld [hBGMapMode], a
	ld c, d
	call DelayFrames
	xor a
	ld [hBGMapMode], a
	pop bc
	ld a, c
	cp b
	jr z, .asm_3f268
	inc b
	push bc
	push de
	ld hl, $c58d
	call Function3f41c
	pop de
	ld a, $1
	ld [hBGMapMode], a
	ld c, d
	call DelayFrames
	xor a
	ld [hBGMapMode], a
	dec d
	jr nz, .asm_3f263
	ld d, $1

.asm_3f263
	pop bc
	ld a, c
	cp b
	jr nz, .asm_3f22f

.asm_3f268
	ld a, $1
	ld [hBGMapMode], a
	ret
; 3f26d



Function3f26d: ; 3f26d
; SendOutMonText?

	ld a, [InLinkBattle]
	and a
	jr z, .asm_3f27c
	ld hl, UnknownText_0x3f2d1
	ld a, [$d264]
	and a
	jr nz, .asm_3f2ce

.asm_3f27c
	ld hl, EnemyMonHPHi
	ld a, [hli]
	or [hl]
	ld hl, UnknownText_0x3f2d1
	jr z, .asm_3f2ce
	xor a
	ld [hMultiplicand], a
	ld hl, EnemyMonHPHi
	ld a, [hli]
	ld [$c6ea], a
	ld [$ffb5], a
	ld a, [hl]
	ld [$c6eb], a
	ld [$ffb6], a
	ld a, $19
	ld [hMultiplier], a
	call Multiply
	ld hl, EnemyMonMaxHPHi
	ld a, [hli]
	ld b, [hl]
	srl a
	rr b
	srl a
	rr b
	ld a, b
	ld b, $4
	ld [hMultiplier], a
	call Divide
	ld a, [$ffb6]
	ld hl, UnknownText_0x3f2d1
	cp $46
	jr nc, .asm_3f2ce
	ld hl, UnknownText_0x3f2d8
	cp $28
	jr nc, .asm_3f2ce
	ld hl, UnknownText_0x3f2df
	cp $a
	jr nc, .asm_3f2ce
	ld hl, UnknownText_0x3f2e6

.asm_3f2ce
	jp BattleTextBox
; 3f2d1


UnknownText_0x3f2d1: ; 3f2d1
	text_jump UnknownText_0x1c02df, BANK(UnknownText_0x1c02df)
	start_asm
	jr Function3f2eb
; 3f2d6

UnknownText_0x3f2d8: ; 3f2d8
	text_jump UnknownText_0x1c02e6, BANK(UnknownText_0x1c02e6)
	start_asm
	jr Function3f2eb
; 3f2dd

UnknownText_0x3f2df: ; 3f2df
	text_jump UnknownText_0x1c02f0, BANK(UnknownText_0x1c02f0)
	start_asm
	jr Function3f2eb
; 3f2e4

UnknownText_0x3f2e6: ; 3f2e6
	text_jump UnknownText_0x1c02fe, BANK(UnknownText_0x1c02fe)
	start_asm
; 3f2eb

Function3f2eb: ; 3f2eb
	ld hl, UnknownText_0x3f2ef
	ret
; 3f2ef

UnknownText_0x3f2ef: ; 3f2ef
	text_jump UnknownText_0x1c0317, BANK(UnknownText_0x1c0317)
	db "@"
; 3f2f4


Function3f2f4: ; 3f2f4
	ld hl, UnknownText_0x3f2fa
	jp BattleTextBox
; 3f2fa

UnknownText_0x3f2fa: ; 3f2fa
	text_jump UnknownText_0x1c031d, BANK(UnknownText_0x1c031d)
	start_asm
; 3f2ff

Function3f2ff: ; 3f2ff
	push de
	push bc
	ld hl, EnemyMonHPLo
	ld de, $c6eb
	ld b, [hl]
	dec hl
	ld a, [de]
	sub b
	ld [$ffb6], a
	dec de
	ld b, [hl]
	ld a, [de]
	sbc b
	ld [$ffb5], a
	ld a, $19
	ld [hMultiplier], a
	call Multiply
	ld hl, EnemyMonMaxHPHi
	ld a, [hli]
	ld b, [hl]
	srl a
	rr b
	srl a
	rr b
	ld a, b
	ld b, $4
	ld [hMultiplier], a
	call Divide
	pop bc
	pop de
	ld a, [$ffb6]
	ld hl, UnknownText_0x3f348
	and a
	ret z
	ld hl, UnknownText_0x3f35b
	cp $1e
	ret c
	ld hl, UnknownText_0x3f34d
	cp $46
	ret c
	ld hl, UnknownText_0x3f352
	ret
; 3f348

UnknownText_0x3f348: ; 3f348
	text_jump UnknownText_0x1c0324, BANK(UnknownText_0x1c0324)
	db "@"
; 3f34d

UnknownText_0x3f34d: ; 3f34d
	text_jump UnknownText_0x1c0340, BANK(UnknownText_0x1c0340)
	db "@"
; 3f352

UnknownText_0x3f352: ; 3f352
	text_jump UnknownText_0x1c0352, BANK(UnknownText_0x1c0352)
	db "@"
; 3f357

Function3f357: ; 3f357
	ld hl, UnknownText_0x3f35b
	ret
; 3f35b

UnknownText_0x3f35b: ; 3f35b
	text_jump UnknownText_0x1c0366, BANK(UnknownText_0x1c0366)
	db "@"
; 3f360


Function3f360: ; 3f360
	ld hl, $c6f0
	ld a, [hl]
	and a
	jr z, .asm_3f36d
	dec [hl]
	ld hl, BattleText_0x80cba
	jr .asm_3f388

.asm_3f36d
	dec hl
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ld hl, BattleText_0x80cd1
	jr nz, .asm_3f388
	push hl
	ld a, [EnemyMonSpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BaseCatchRate]
	ld [EnemyMonCatchRate], a
	pop hl

.asm_3f388
	push hl
	call Function30b4
	pop hl
	jp StdBattleTextBox
; 3f390


FillInExpBar: ; 3f390
	push hl
	call Function3f39c
	pop hl
	ld de, $0007
	add hl, de
	jp Function3f41c
; 3f39c

Function3f39c: ; 3f39c
	push de
	ld d, b
	push de
	callab Function50e47
	pop de
	ld hl, hMultiplicand
	ld a, [hli]
	push af
	ld a, [hli]
	push af
	ld a, [hl]
	push af
	inc d
	callab Function50e47
	ld hl, $ffb6
	ld a, [hl]
	ld [$ffba], a
	pop bc
	sub b
	ld [hld], a
	ld a, [hl]
	ld [$ffb9], a
	pop bc
	sbc b
	ld [hld], a
	ld a, [hl]
	ld [hMathBuffer], a
	pop bc
	sbc b
	ld [hl], a
	pop de
	ld hl, $ffb5
	ld a, [hli]
	push af
	ld a, [hl]
	push af
	ld a, [de]
	dec de
	ld c, a
	ld a, [$ffba]
	sub c
	ld [hld], a
	ld a, [de]
	dec de
	ld b, a
	ld a, [$ffb9]
	sbc b
	ld [hld], a
	ld a, [de]
	ld c, a
	ld a, [hMathBuffer]
	sbc c
	ld [hld], a
	xor a
	ld [hl], a
	ld a, $40
	ld [hMultiplier], a
	call Multiply
	pop af
	ld c, a
	pop af
	ld b, a
.asm_3f3f4
	ld a, b
	and a
	jr z, .asm_3f40c
	srl b
	rr c
	ld hl, hProduct
	srl [hl]
	inc hl
	rr [hl]
	inc hl
	rr [hl]
	inc hl
	rr [hl]
	jr .asm_3f3f4

.asm_3f40c
	ld a, c
	ld [hMultiplier], a
	ld b, $4
	call Divide
	ld a, [$ffb6]
	ld b, a
	ld a, $40
	sub b
	ld b, a
	ret
; 3f41c

Function3f41c: ; 3f41c
	ld c, $8
.asm_3f41e
	ld a, b
	sub $8
	jr c, .asm_3f42c
	ld b, a
	ld a, $6a
	ld [hld], a
	dec c
	jr z, .asm_3f43c
	jr .asm_3f41e

.asm_3f42c
	add $8
	jr z, .asm_3f434
	add $54
	jr .asm_3f436

.asm_3f434
	ld a, $62

.asm_3f436
	ld [hld], a
	ld a, $62
	dec c
	jr nz, .asm_3f434

.asm_3f43c
	ret
; 3f43d

Function3f43d: ; 3f43d
	ld a, [PlayerSubStatus4]
	bit 4, a
	ld hl, Functioncc640
	jr nz, asm_3f46f
Function3f447: ; 3f447
	ld a, [$c6fe]
	and a
	ld hl, Functioncc6cf
	jr nz, asm_3f46f
	ld a, [CurPartySpecies]
	push af
	ld a, [BattleMonSpecies]
	ld [CurPartySpecies], a
	ld hl, BattleMonAtkDefDV
	ld a, $2d
	call Predef
	ld de, $9310
	ld a, $3d
	call Predef
	pop af
	ld [CurPartySpecies], a
	ret

asm_3f46f
	ld a, [hBattleTurn]
	push af
	xor a
	ld [hBattleTurn], a
	ld a, BANK(Functioncc640)
	rst FarCall
	pop af
	ld [hBattleTurn], a
	ret
; 3f47c

Function3f47c: ; 3f47c
	ld a, [EnemySubStatus4]
	bit 4, a
	ld hl, Functioncc640
	jr nz, asm_3f4b4
Function3f486: ; 3f486
	ld a, [$c6fa]
	and a
	ld hl, Functioncc6cf
	jr nz, asm_3f4b4
	ld a, [CurPartySpecies]
	push af
	ld a, [EnemyMonSpecies]
	ld [CurSpecies], a
	ld [CurPartySpecies], a
	call GetBaseData
	ld hl, EnemyMonAtkDefDV
	ld a, $2d
	call Predef
	ld de, VTiles2
	ld a, $3e
	call Predef
	pop af
	ld [CurPartySpecies], a
	ret

asm_3f4b4
	ld a, [hBattleTurn]
	push af
	call SetEnemyTurn
	ld a, BANK(Functioncc640)
	rst FarCall
	pop af
	ld [hBattleTurn], a
	ret
; 3f4c1


StartBattle: ; 3f4c1
	ld a, [PartyCount]
	and a
	ret z
	ld a, [TimeOfDayPal]
	push af
	call Function3f4dd
	call Function3c000
	call Function3f69e
	pop af
	ld [TimeOfDayPal], a
	scf
	ret
; 3f4d9


Function3f4d9: ; 3f4d9
	call Function3c000
	ret
; 3f4dd


Function3f4dd: ; 3f4dd
	callba Function106050
	call Function3f54e
	xor a
	ld [TempBattleMonSpecies], a
	ld [$d0d2], a
	xor a
	ld [$ffde], a
	callba PlayBattleMusic
	callba Function2ee18
	callba Function2ee2f
	call Function2ed3
	callba ClearBattleRAM
	call Function3f55e
	call Function3f568
	ld b, $0
	call GetSGBLayout
	ld hl, rLCDC
	res 6, [hl]
	call Function3fb6c
	call BattleStartMessage
	ld hl, rLCDC
	set 6, [hl]
	xor a
	ld [hBGMapMode], a
	call EmptyBattleTextBox
	hlcoord 9, 7
	ld bc, 5 << 8 + 11
	call ClearBox
	hlcoord 1, 0
	ld bc, 4 << 8 + 10
	call ClearBox
	call ClearSprites
	ld a, [IsInBattle]
	cp $1
	call z, Function3e036
	ld a, $1
	ld [hBGMapMode], a
	ret
; 3f54e

Function3f54e: ; 3f54e
	ld a, [OtherTrainerClass]
	and a
	jr nz, .asm_3f55a
	ld a, [$d22e]
	ld [CurPartySpecies], a

.asm_3f55a
	ld [TempEnemyMonSpecies], a
	ret
; 3f55e

Function3f55e: ; 3f55e
	ld a, [OtherTrainerClass]
	and a
	jp nz, Function3f594
	jp Function3f607
; 3f568

Function3f568: ; 3f568
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld hl, $d000
	ld bc, VBlank5
	ld a, $2
	call ByteFill
	ld a, [rVBK]
	push af
	ld a, $1
	ld [rVBK], a
	ld de, $d000
	ld hl, VBGMap0
	ld bc, $0f40
	call Request2bpp
	pop af
	ld [rVBK], a
	pop af
	ld [rSVBK], a
	ret
; 3f594

Function3f594: ; 3f594
	ld [TrainerClass], a
	callba Function10606a
	xor a
	ld [TempEnemyMonSpecies], a
	callab Function3957b
	callab Function39771
	ld a, [TrainerClass]
	cp $9
	jr nz, .asm_3f5b8
	xor a
	ld [OTPartyMon1Item], a

.asm_3f5b8
	ld de, VTiles2
	callab Function5120d
	xor a
	ld [$ffad], a
	dec a
	ld [$c6e6], a
	ld hl, $c4ac
	ld bc, $0707
	ld a, $13
	call Predef
	ld a, $ff
	ld [CurOTMon], a
	ld a, $2
	ld [IsInBattle], a
	call IsJohtoGymLeader
	jr nc, .asm_3f606
	xor a
	ld [CurPartyMon], a
	ld a, [PartyCount]
	ld b, a
.asm_3f5ea
	push bc
	ld a, $22
	call GetPartyParamLocation
	ld a, [hli]
	or [hl]
	jr z, .asm_3f5fc
	ld c, $4
	callab ChangeHappiness

.asm_3f5fc
	pop bc
	dec b
	jr z, .asm_3f606
	ld hl, CurPartyMon
	inc [hl]
	jr .asm_3f5ea

.asm_3f606
	ret
; 3f607

Function3f607: ; 3f607
	ld a, $1
	ld [IsInBattle], a
	callba Function10605d
	call LoadEnemyMon
	ld hl, EnemyMonMove1
	ld de, $c735
	ld bc, $0004
	call CopyBytes
	ld hl, EnemyMonPPMove1
	ld de, $c739
	ld bc, $0004
	call CopyBytes
	ld hl, EnemyMonAtkDefDV
	ld a, $2d
	call Predef
	ld a, [CurPartySpecies]
	cp $c9
	jr nz, .asm_3f648
	ld a, [$def4]
	and a
	jr nz, .asm_3f648
	ld a, [UnownLetter]
	ld [$def4], a

.asm_3f648
	ld de, VTiles2
	ld a, $3e
	call Predef
	xor a
	ld [TrainerClass], a
	ld [$ffad], a
	ld hl, $c4ac
	ld bc, $0707
	ld a, $13
	call Predef
	ret
; 3f662

Function3f662: ; 3f662
	ld hl, EnemyMonMove1
	ld de, $d25e
	ld b, $4
.asm_3f66a
	ld a, [de]
	inc de
	ld [hli], a
	and a
	jr z, .asm_3f690
	push bc
	push hl
	push hl
	dec a
	ld hl, $5b00
	ld bc, $0007
	call AddNTimes
	ld a, $10
	call GetFarByte
	pop hl
	ld bc, $0005
	add hl, bc
	ld [hl], a
	pop hl
	pop bc
	dec b
	jr nz, .asm_3f66a
	ret

.asm_3f68e
	xor a
	ld [hli], a

.asm_3f690
	push bc
	push hl
	ld bc, $0005
	add hl, bc
	xor a
	ld [hl], a
	pop hl
	pop bc
	dec b
	jr nz, .asm_3f68e
	ret
; 3f69e


Function3f69e: ; 3f69e
	call Function3f6a5
	call Function3f6d0
	ret
; 3f6a5

Function3f6a5: ; 3f6a5
	ld a, [InLinkBattle]
	and a
	jr z, .asm_3f6b7
	call Function3f759
	ld c, $96
	call DelayFrames
	call Function3f77c
	ret

.asm_3f6b7
	ld a, [$d0ee]
	and $f
	ret nz
	call Function3f71d
	xor a
	ld [$d1e9], a
	ld a, $1c
	call Predef
	callba Function2ed44
	ret
; 3f6d0

Function3f6d0: ; 3f6d0
	call Function3f998
	xor a
	ld [Danger], a
	ld [IsInBattle], a
	ld [BattleType], a
	ld [AttackMissed], a
	ld [$d22e], a
	ld [OtherTrainerClass], a
	ld [$d266], a
	ld [$d267], a
	ld [$d232], a
	ld [$d0d8], a
	ld [$d0da], a
	ld [$d0d9], a
	ld [$d0d2], a
	ld [CurMoveNum], a
	ld [$d0db], a
	ld [$d0d6], a
	ld [$d0e4], a
	ld [$d0e0], a
	ld [$d0df], a
	ld [$d0e1], a
	ld hl, PlayerSubStatus1
	ld b, $18
.asm_3f715
	ld [hli], a
	dec b
	jr nz, .asm_3f715
	call WaitSFX
	ret
; 3f71d

Function3f71d: ; 3f71d
	ld hl, $c6ec
	ld a, [hli]
	or [hl]
	inc hl
	or [hl]
	ret z
	ld a, [$c73d]
	and a
	jr z, .asm_3f73d
	ld hl, $c6ee
	sla [hl]
	dec hl
	rl [hl]
	dec hl
	rl [hl]
	jr nc, .asm_3f73d
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hl], a

.asm_3f73d
	ld hl, $c6ee
	ld de, $d850
	call Function3d0be
	ld hl, BattleText_0x80730
	call StdBattleTextBox
	ld a, [$cfc0]
	bit 0, a
	ret z
	call ClearTileMap
	call WhiteBGMap
	ret
; 3f759

Function3f759: ; 3f759
	callba Function1060df
	callba Function106187
	ld a, [CurOTMon]
	ld hl, OTPartyMon1Status
	call GetPartyLocation
	ld a, [EnemyMonStatus]
	ld [hl], a
	call ClearTileMap
	callba Function2c1b2
	ret
; 3f77c

Function3f77c: ; 3f77c
	callba Function3d2e0
	jp c, Function3f80f
	call Function3f830
	jr nz, .asm_3f797
	ld hl, $cd2a
	bit 4, [hl]
	jr z, .asm_3f797
	callba Function2b930

.asm_3f797
	ld a, [$d0ee]
	and $f
	cp $1
	jr c, .asm_3f7ad
	jr z, .asm_3f7b8
	callba Function106107
	ld de, .Draw
	jr .asm_3f7c3

.asm_3f7ad
	callba Function1060fb
	ld de, .Win
	jr .asm_3f7c3

.asm_3f7b8
	callba Function106101
	ld de, .Lose
	jr .asm_3f7c3

.asm_3f7c3
	ld hl, $c546
	call PlaceString
	callba Function106187
	ld c, $c8
	call DelayFrames
	ld a, $1
	call GetSRAMBank
	call Function3fa42
	call Function3f85f
	call CloseSRAM
	call Function3f830
	jr z, .asm_3f7ee
	call Functiona80
	call ClearTileMap
	ret

.asm_3f7ee
	ld c, $c8
	call DelayFrames
	call ClearTileMap
	ret
; 3f7f7

.Win
	db "YOU WIN@"
.Lose
	db "YOU LOSE@"
.Draw
	db "  DRAW@"
; 3f80f


Function3f80f: ; 3f80f
	ld hl, $c546
	ld de, .Invalid
	call PlaceString
	ld c, $c8
	call DelayFrames
	call ClearTileMap
	ret
; 3f821

.Invalid
	db "INVALID BATTLE@"
; 3f830


Function3f830: ; 3f830
	ld a, [InLinkBattle]
	cp $4
	ret
; 3f836


Function3f836: ; 3f836
	ld a, $1
	call GetSRAMBank
	call Function3f85f
	call CloseSRAM
	ld hl, AttrMap
	xor a
	ld bc, $0168
	call ByteFill
	call Function3200
	ld b, $8
	call GetSGBLayout
	call Function32f9
	ld c, $8
	call DelayFrames
	call Functiona80
	ret
; 3f85f


Function3f85f: ; 3f85f
	call ClearTileMap
	call ClearSprites
	call .asm_3f8e0
	ld hl, $c540
	ld b, $5
	ld de, $b268
.asm_3f870
	push bc
	push hl
	push de
	ld a, [de]
	and a
	jr z, .asm_3f8c9
	ld a, [$d4b4]
	and a
	jr z, .asm_3f8c9
	push hl
	push hl
	ld h, d
	ld l, e
	ld de, DefaultFlypoint
	ld bc, $000a
	call CopyBytes
	ld a, $50
	ld [de], a
	inc de
	ld bc, $0006
	call CopyBytes
	ld de, DefaultFlypoint
	pop hl
	call PlaceString
	pop hl
	ld de, $001a
	add hl, de
	push hl
	ld de, $d00d
	ld bc, $0204
	call PrintNum
	pop hl
	ld de, $0005
	add hl, de
	push hl
	ld de, $d00f
	ld bc, $0204
	call PrintNum
	pop hl
	ld de, $0005
	add hl, de
	ld de, $d011
	ld bc, $0204
	call PrintNum
	jr .asm_3f8cf

.asm_3f8c9
	ld de, .Format
	call PlaceString

.asm_3f8cf
	pop hl
	ld bc, $0012
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	ld bc, $0028
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_3f870
	ret

.asm_3f8e0
	ld hl, $c4a1
	ld de, .Record
	call PlaceString

	ld hl, $c518
	ld de, .Result
	call PlaceString

	ld hl, $c4c8
	ld de, .Total
	call PlaceString

	ld hl, $c4f6
	ld de, $b260
	call .asm_3f92b
	jr c, .asm_3f92a

	ld bc, $0204
	call PrintNum

	ld hl, $c4fb
	ld de, $b262
	call .asm_3f92b

	ld bc, $0204
	call PrintNum

	ld hl, $c500
	ld de, $b264
	call .asm_3f92b

	ld bc, $0204
	call PrintNum

.asm_3f92a
	ret

.asm_3f92b
	ld a, [$d4b4]
	and a
	ret nz
	ld de, .Scores
	call PlaceString
	scf
	ret
; 3f938

.Scores
	db "   0    0    0@"
; 3f947

.Format ; 3f947
	db "  ---  ", $22, "         -    -    -@"
.Record ; 3f964
	db $52, "'s RECORD@"
.Result ; 3f96e
	db "RESULT WIN LOSE DRAW@"
.Total ; 3f983
	db "TOTAL  WIN LOSE DRAW@"
; 3f998


Function3f998: ; 3f998
	ld a, [BattleType]
	cp BATTLETYPE_ROAMING
	jr nz, .asm_3f9c4
	ld a, [$d0ee]
	and $f
	jr z, .asm_3f9af
	call GetRoamMonHP
	ld a, [EnemyMonHPLo]
	ld [hl], a
	jr .asm_3f9ca

.asm_3f9af
	call GetRoamMonHP
	ld [hl], $0
	call GetRoamMonMapGroup
	ld [hl], $ff
	call GetRoamMonMapNumber
	ld [hl], $ff
	call GetRoamMonSpecies
	ld [hl], $0
	ret

.asm_3f9c4
	call BattleRandom
	and $f
	ret nz

.asm_3f9ca
	callab Function2a30d
	ret
; 3f9d1

GetRoamMonMapGroup: ; 3f9d1
	ld a, [TempEnemyMonSpecies]
	ld b, a
	ld a, [RoamMon1Species]
	cp b
	ld hl, RoamMon1MapGroup
	ret z
	ld a, [RoamMon2Species]
	cp b
	ld hl, RoamMon2MapGroup
	ret z
	ld hl, RoamMon3MapGroup
	ret
; 3f9e9

GetRoamMonMapNumber: ; 3f9e9
	ld a, [TempEnemyMonSpecies]
	ld b, a
	ld a, [RoamMon1Species]
	cp b
	ld hl, RoamMon1MapNumber
	ret z
	ld a, [RoamMon2Species]
	cp b
	ld hl, RoamMon2MapNumber
	ret z
	ld hl, RoamMon3MapNumber
	ret
; 3fa01

GetRoamMonHP: ; 3fa01
; output: hl = RoamMonCurHP
	ld a, [TempEnemyMonSpecies]
	ld b, a
	ld a, [RoamMon1Species]
	cp b
	ld hl, RoamMon1CurHP
	ret z
	ld a, [RoamMon2Species]
	cp b
	ld hl, RoamMon2CurHP
	ret z
	ld hl, RoamMon3CurHP
	ret
; 3fa19

GetRoamMonDVs: ; 3fa19
; output: hl = RoamMonDVs
	ld a, [TempEnemyMonSpecies]
	ld b, a
	ld a, [RoamMon1Species]
	cp b
	ld hl, RoamMon1DVs
	ret z
	ld a, [RoamMon2Species]
	cp b
	ld hl, RoamMon2DVs
	ret z
	ld hl, RoamMon3DVs
	ret
; 3fa31

GetRoamMonSpecies: ; 3fa31
	ld a, [TempEnemyMonSpecies]
	ld hl, RoamMon1Species
	cp [hl]
	ret z
	ld hl, RoamMon2Species
	cp [hl]
	ret z
	ld hl, RoamMon3Species
	ret
; 3fa42


Function3fa42: ; 3fa42
	ld hl, $d276
	ld de, StringBuffer1
	ld bc, $0002
	call CopyBytes
	ld hl, $d26b
	ld bc, $000a
	call CopyBytes
	ld hl, $b254
	call Function3faa0
	ld hl, $b266
	ld d, $5
.asm_3fa62
	push hl
	inc hl
	inc hl
	ld a, [hl]
	dec hl
	dec hl
	and a
	jr z, .asm_3fa85
	push de
	ld bc, $000c
	ld de, StringBuffer1
	call CompareLong
	pop de
	pop hl
	jr c, .asm_3fa99
	ld bc, $0012
	add hl, bc
	dec d
	jr nz, .asm_3fa62
	ld bc, $ffee
	add hl, bc
	push hl

.asm_3fa85
	ld d, h
	ld e, l
	ld hl, StringBuffer1
	ld bc, $000c
	call CopyBytes
	ld b, $6
	xor a
.asm_3fa93
	ld [de], a
	inc de
	dec b
	jr nz, .asm_3fa93
	pop hl

.asm_3fa99
	call Function3faa0
	call Function3fac8
	ret
; 3faa0

Function3faa0: ; 3faa0
	ld a, [$d0ee]
	and $f
	cp $1
	ld bc, $000d
	jr c, .asm_3fab4
	ld bc, $000f
	jr z, .asm_3fab4
	ld bc, $0011

.asm_3fab4
	add hl, bc
	call Function3fabe
	ret nc
	inc [hl]
	ret nz
	dec hl
	inc [hl]
	ret
; 3fabe

Function3fabe: ; 3fabe
	dec hl
	ld a, [hl]
	inc hl
	cp $27
	ret c
	ld a, [hl]
	cp $f
	ret
; 3fac8

Function3fac8: ; 3fac8
	ld b, $5
	ld hl, $b277
	ld de, DefaultFlypoint
.asm_3fad0
	push bc
	push de
	push hl
	call Function3fb54
	pop hl
	ld a, e
	pop de
	ld [de], a
	inc de
	ld a, b
	ld [de], a
	inc de
	ld a, c
	ld [de], a
	inc de
	ld bc, $0012
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_3fad0
	ld b, $0
	ld c, $1
.asm_3faed
	ld a, b
	add b
	add b
	ld e, a
	ld d, $0
	ld hl, DefaultFlypoint
	add hl, de
	push hl
	ld a, c
	add c
	add c
	ld e, a
	ld d, $0
	ld hl, DefaultFlypoint
	add hl, de
	ld d, h
	ld e, l
	pop hl
	push bc
	ld c, $3
	call StringCmp
	pop bc
	jr z, .asm_3fb10
	jr nc, .asm_3fb1f

.asm_3fb10
	inc c
	ld a, c
	cp $5
	jr nz, .asm_3faed
	inc b
	ld c, b
	inc c
	ld a, b
	cp $4
	jr nz, .asm_3faed
	ret

.asm_3fb1f
	push bc
	ld a, b
	ld bc, $0012
	ld hl, $b266
	call AddNTimes
	push hl
	ld de, DefaultFlypoint
	ld bc, $0012
	call CopyBytes
	pop hl
	pop bc
	push hl
	ld a, c
	ld bc, $0012
	ld hl, $b266
	call AddNTimes
	pop de
	push hl
	ld bc, $0012
	call CopyBytes
	ld hl, DefaultFlypoint
	ld bc, $0012
	pop de
	call CopyBytes
	ret
; 3fb54

Function3fb54: ; 3fb54
	ld e, $0
	ld a, [hld]
	ld c, a
	ld a, [hld]
	ld b, a
	ld a, [hld]
	add c
	ld c, a
	ld a, [hld]
	adc b
	ld b, a
	jr nc, .asm_3fb63
	inc e

.asm_3fb63
	ld a, [hld]
	add c
	ld c, a
	ld a, [hl]
	adc b
	ld b, a
	ret nc
	inc e
	ret
; 3fb6c

Function3fb6c: ; 3fb6c
	call Function3fbf8
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	callba MobileTextBorder
	ld hl, $c505
	ld bc, $0307
	call ClearBox
	call Functione51
	call Function3ed9f
	call Function3fbd6
	xor a
	ld [$ffde], a
	ld [hSCY], a
	ld a, $90
	ld [hWY], a
	ld [rWY], a
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	callba Function4e980
	ld a, $1
	ld [hBGMapMode], a
	ld a, $31
	ld [$ffad], a
	ld hl, $c51a
	ld bc, $0606
	ld a, $13
	call Predef
	xor a
	ld [hWY], a
	ld [rWY], a
	call WaitBGMap
	call HideSprites
	ld b, $1
	call GetSGBLayout
	call Function32f9
	ld a, $90
	ld [hWY], a
	xor a
	ld [hSCX], a
	ret
; 3fbd6

Function3fbd6: ; 3fbd6
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld hl, $d000
	ld bc, VBlank5
	ld a, $7f
	call ByteFill
	ld de, $d000
	ld hl, VBGMap0
	ld bc, $0f40
	call Request2bpp
	pop af
	ld [rSVBK], a
	ret
; 3fbf8

Function3fbf8: ; 3fbf8
	call GetBattleBackpic
	call Function3fc30
	ret
; 3fbff


GetBattleBackpic: ; 3fbff
; Load the player character's backpic (6x6) into VRAM starting from $9310.

; Special exception for Dude.
	ld b, BANK(DudeBackpic)
	ld hl, DudeBackpic
	ld a, [BattleType]
	cp BATTLETYPE_TUTORIAL
	jr z, .Decompress

; What gender are we?
	ld a, [$d45b]
	bit 2, a
	jr nz, .Chris
	ld a, [PlayerGender]
	bit 0, a
	jr z, .Chris

; It's a girl.
	callba GetKrisBackpic
	ret

.Chris
; It's a boy.
	ld b, BANK(ChrisBackpic)
	ld hl, ChrisBackpic

.Decompress
	ld de, $9310
	ld c, $31
	ld a, PREDEF_DECOMPRESS
	call Predef
	ret
; 3fc30


Function3fc30: ; 3fc30
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld hl, VTiles0
	ld de, $9310
	ld a, [hROMBank]
	ld b, a
	ld c, $31
	call Get2bpp
	pop af
	ld [rSVBK], a
	call Function3fc5b
	ld a, $31
	ld [$ffad], a
	ld hl, $c51a
	ld bc, $0606
	ld a, $13
	call Predef
	ret
; 3fc5b

Function3fc5b: ; 3fc5b
	ld hl, Sprites
	xor a
	ld [hConnectionStripLength], a
	ld b, $6
	ld e, $a8
.asm_3fc65
	ld c, $3
	ld d, $40
.asm_3fc69
	ld [hl], d
	inc hl
	ld [hl], e
	inc hl
	ld a, [hConnectionStripLength]
	ld [hli], a
	inc a
	ld [hConnectionStripLength], a
	ld a, $1
	ld [hli], a
	ld a, d
	add $8
	ld d, a
	dec c
	jr nz, .asm_3fc69
	ld a, [hConnectionStripLength]
	add $3
	ld [hConnectionStripLength], a
	ld a, e
	add $8
	ld e, a
	dec b
	jr nz, .asm_3fc65
	ret
; 3fc8b


BattleStartMessage: ; 3fc8b
	ld a, [IsInBattle]
	dec a
	jr z, .asm_3fcaa

	ld de, SFX_SHINE
	call PlaySFX
	call WaitSFX

	ld c, 20
	call DelayFrames

	callba Function39939

	ld hl, WantsToBattleText
	jr .asm_3fd0e

.asm_3fcaa
	call Function3da79
	jr nc, .asm_3fcc2

	xor a
	ld [$cfca], a
	ld a, 1
	ld [hBattleTurn], a
	ld a, 1
	ld [$c689], a
	ld de, $0101
	call Function3ee17

.asm_3fcc2
	callba CheckSleepingTreeMon
	jr c, .asm_3fceb

	callba Function4ea44
	jr c, .asm_3fce0

	hlcoord 12, 0
	ld d, $0
	ld e, $1
	ld a, $47
	call Predef
	jr .asm_3fceb

.asm_3fce0
	ld a, $0f
	ld [CryTracks], a
	ld a, [TempEnemyMonSpecies]
	call Function37b6

.asm_3fceb
	ld a, [BattleType]
	cp BATTLETYPE_FISH
	jr nz, .asm_3fcfd

	callba Function106086

	ld hl, HookedPokemonAttackedText
	jr .asm_3fd0e

.asm_3fcfd
	ld hl, PokemonFellFromTreeText
	cp BATTLETYPE_TREE
	jr z, .asm_3fd0e
	ld hl, WildPokemonAppearedText2
	cp $b
	jr z, .asm_3fd0e
	ld hl, WildPokemonAppearedText

.asm_3fd0e
	push hl
	callba Function2c000
	pop hl
	call StdBattleTextBox

	call Function3f830
	ret nz

	ld c, $2
	callba Function4ea0a

	ret
; 3fd26


	dw $0000 ; padding


BattleCommandPointers: ; 3fd28

INCLUDE "battle/effect_command_pointers.asm"



SECTION "bank10", ROMX, BANK[$10]

Function40000: ; 40000
	ld a, [hWX]
	ld l, a
	ld a, [hWY]
	ld h, a
	push hl
	ld a, [hSCX]
	push af
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [VramState]
	push af
	xor a
	ld [VramState], a
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	xor a
	ld [$ffde], a
	call Function40063
	call DelayFrame
.asm_40029
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_4003b
	call Function4010b
	call DelayFrame
	jr .asm_40029

.asm_4003b
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	call ClearSprites
	ld a, [$c7d4]
	ld [$d959], a
	pop af
	ld [$ffaa], a
	pop af
	ld [VramState], a
	pop af
	ld [Options], a
	pop af
	ld [hSCX], a
	pop hl
	ld a, l
	ld [hWX], a
	ld a, h
	ld [hWY], a
	ret
; 40063

Function40063: ; 40063
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call Function414b7
	ld hl, PlayerSDefLevel
	ld bc, $0115
	xor a
	call ByteFill
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	call Function400a2
	ld a, [$d959]
	ld [$c7d4], a
	call Function40bdc
	call Function400b4
	call Function400ed
	callba Function1de247
	call Function41af7
	ret
; 400a2

Function400a2: ; 400a2
	ld a, [StatusFlags]
	bit 1, a
	jr nz, .asm_400ae
	xor a
	ld [$c7dc], a
	ret

.asm_400ae
	ld a, $1
	ld [$c7dc], a
	ret
; 400b4

Function400b4: ; 400b4
	ld hl, PlayerSDefLevel
	ld a, [$c2d6]
	and a
	jr z, .asm_400ec
	cp $fc
	jr nc, .asm_400ec
	ld b, a
	ld a, [$c7d2]
	cp $8
	jr c, .asm_400db
	sub $7
	ld c, a
.asm_400cc
	ld a, b
	cp [hl]
	jr z, .asm_400ec
	inc hl
	ld a, [$c7d0]
	inc a
	ld [$c7d0], a
	dec c
	jr nz, .asm_400cc

.asm_400db
	ld c, $7
.asm_400dd
	ld a, b
	cp [hl]
	jr z, .asm_400ec
	inc hl
	ld a, [$c7d1]
	inc a
	ld [$c7d1], a
	dec c
	jr nz, .asm_400dd

.asm_400ec
	ret
; 400ed

Function400ed: ; 400ed
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	cp $0
	jr nz, .asm_40107
	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a
	call GetWorldMapLocation

.asm_40107
	ld [$c7e4], a
	ret
; 4010b

Function4010b: ; 4010b
	ld a, [$cf63]
	ld hl, $4115
	call Function41432
	jp [hl]
; 40115


; no known jump sources
Jumptable_40115: ; 40115 (10:4115)
	dw Function4013c
	dw Function401ae
	dw Function40217
	dw Function40258
	dw Function402aa
	dw Function40443
	dw Function40471
	dw Function4039d
	dw Function403be
	dw Function4050a
	dw Function40562
	dw Function405bd
	dw Function405df
	dw Function40136


; known jump sources: 401aa (10:41aa), 40254 (10:4254), 4026f (10:426f), 403ba (10:43ba), 4046d (10:446d), 4055e (10:455e), 405db (10:45db)
Function40131: ; 40131 (10:4131)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function40136: ; 40136 (10:4136)
	ld hl, $cf63
	set 7, [hl]
	ret

; no known jump sources
Function4013c: ; 4013c (10:413c)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	xor a
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	call ByteFill
	callba Function1de171
	ld hl, $c5f4
	ld de, $47f2
	call Function40acd
	ld a, $7
	ld [$c7d3], a
	call Function40b0f
	call Function41aeb
	call Function41af7
	call Function4074c
	ld a, $5
	ld [hSCX], a ; $ff00+$cf
	ld a, [$c7d4]
	cp $1
	ld a, $4a
	jr z, .asm_4017b
	ld a, $47
.asm_4017b
	ld [hWX], a ; $ff00+$d1
	xor a
	ld [hWY], a ; $ff00+$d2
	call WaitBGMap
	call Function41af7
	ld a, $ff
	ld [CurPartySpecies], a ; $d108
	ld a, $4
	call Function41423
	call Function41148
	callba Function1de171
	ld hl, $c5f4
	ld de, $47f2
	call Function40acd
	ld a, $7
	ld [$c7d3], a
	call Function40b0f
	call Function40131
	ret

; no known jump sources
Function401ae: ; 401ae (10:41ae)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_40211
	ld a, [hl]
	and $1
	jr nz, .asm_401d9
	ld a, [hl]
	and $4
	jr nz, .asm_401eb
	ld a, [hl]
	and $8
	jr nz, .asm_401fe
	call Function406c5
	ret nc
	call Function41148
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function40b0f
	call Function41ad7
	call Function41af7
	ret
.asm_401d9
	call Function40bb1
	call Function40bd0
	ret z
	ld a, $2
	ld [$cf63], a
	ld a, $0
	ld [$cf64], a
	ret
.asm_401eb
	call Function41401
	ld a, $7
	ld [$cf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call DelayFrame
	ret
.asm_401fe
	call Function41401
	ld a, $5
	ld [$cf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call DelayFrame
	ret
.asm_40211
	ld a, $d
	ld [$cf63], a
	ret

; no known jump sources
Function40217: ; 40217 (10:4217)
	call LowVolume
	xor a
	ld [$cf65], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function41478
	call Function407fd
	call Function4134f
	call Function40bb1
	ld [$c2d6], a
	callba Function4424d
	call Function40ba0
	call WaitBGMap
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call Function40bb1
	ld [CurPartySpecies], a ; $d108
	ld a, $4
	call Function41423
	ld a, [CurPartySpecies] ; $d108
	call Function37ce
	call Function40131
	ret

; no known jump sources
Function40258: ; 40258 (10:4258)
	ld de, $42e8
	call Function4135a
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_4027d
	ld a, [hl]
	and $1
	jr nz, .asm_40273
	call Function4066c
	ret nc
	call Function40131
	ret
.asm_40273
	ld a, [$c7d8]
	ld hl, $42f2
	call Function41432
	jp [hl]
.asm_4027d
	ld a, [LastVolume] ; $c2b4
	and a
	jr z, .asm_40288
	ld a, $77
	ld [LastVolume], a ; $c2b4
.asm_40288
	call MaxVolume
	ld a, [$cf64]
	ld [$cf63], a
	ret
; 40292 (10:4292)

INCBIN "baserom.gbc",$40292,$402aa - $40292

; no known jump sources
Function402aa: ; 402aa (10:42aa)
	call Function41401
	xor a
	ld [$cf65], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function407fd
	call Function4134f
	call Function41478
	call Function40bb1
	ld [$c2d6], a
	callba Function4424d
	call Function40ba0
	call Function4143b
	call WaitBGMap
	call Function40bb1
	ld [CurPartySpecies], a ; $d108
	ld a, $4
	call Function41423
	ld a, [CurPartySpecies] ; $d108
	call Function37ce
	ld hl, $cf63
	dec [hl]
	ret
; 402e8 (10:42e8)

INCBIN "baserom.gbc",$402e8,$4039d - $402e8

; no known jump sources
Function4039d: ; 4039d (10:439d)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function4087c
	call Function4134f
	ld a, [$c7d4]
	ld [$c7d8], a
	call Function40e5b
	call WaitBGMap
	ld a, $10
	call Function41423
	call Function40131
	ret

; no known jump sources
Function403be: ; 403be (10:43be)
	ld a, [$c7dc]
	and a
	jr nz, .asm_403c9
	ld de, $43f3
	jr .asm_403cc
.asm_403c9
	ld de, $43fb
.asm_403cc
	call Function4135a
	call c, Function40e5b
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $6
	jr nz, .asm_403ea
	ld a, [hl]
	and $1
	jr nz, .asm_403e0
	ret
.asm_403e0
	ld a, [$c7d8]
	ld hl, $4405
	call Function41432
	jp [hl]
.asm_403ea
	call Function41401
	ld a, $0
	ld [$cf63], a
	ret
; 403f3 (10:43f3)

INCBIN "baserom.gbc",$403f3,$40405 - $403f3

; no known jump sources
Jumptable_40405: ; 40405 (10:4405)
	dw Function4040d
	dw Function40411
	dw Function40415
	dw Function4043a


; no known jump sources
Function4040d: ; 4040d (10:440d)
	ld b, $0
	jr asm_40417

; no known jump sources
Function40411: ; 40411 (10:4411)
	ld b, $1
	jr asm_40417

; no known jump sources
Function40415: ; 40415 (10:4415)
	ld b, $2
asm_40417: ; 40417 (10:4417)
	ld a, [$c7d4]
	cp b
	jr z, .asm_40431
	ld a, b
	ld [$c7d4], a
	call Function40bdc
	call Function40f08
	xor a
	ld [$c7d0], a
	ld [$c7d1], a
	call Function400b4
.asm_40431
	call Function41401
	ld a, $0
	ld [$cf63], a
	ret

; no known jump sources
Function4043a: ; 4043a (10:443a)
	call Function41401
	ld a, $b
	ld [$cf63], a
	ret

; no known jump sources
Function40443: ; 40443 (10:4443)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function408f0
	call Function4134f
	ld a, $1
	ld [$c7d5], a
	xor a
	ld [$c7d6], a
	call Function40fa8
	xor a
	ld [$c7db], a
	callba Function44207
	call WaitBGMap
	ld a, $10
	call Function41423
	call Function40131
	ret

; no known jump sources
Function40471: ; 40471 (10:4471)
	ld de, $449e
	call Function4135a
	call Function40f4f
	call c, Function40fa8
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $a
	jr nz, .asm_40495
	ld a, [hl]
	and $1
	jr nz, .asm_4048b
	ret
.asm_4048b
	ld a, [$c7d8]
	ld hl, $44a8
	call Function41432
	jp [hl]
.asm_40495
	call Function41401
	ld a, $0
	ld [$cf63], a
	ret
; 4049e (10:449e)

INCBIN "baserom.gbc",$4049e,$4050a - $4049e

; no known jump sources
Function4050a: ; 4050a (10:450a)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	xor a
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	call ByteFill
	call Function41ae1
	call Function41af7
	callba Function1de1d1
	call Function409cf
	ld a, $4
	ld [$c7d3], a
	call Function40b0f
	call Function41ad7
	call Function41af7
	call Function40962
	ld a, $5
	ld [hSCX], a ; $ff00+$cf
	ld a, $4a
	ld [hWX], a ; $ff00+$d1
	xor a
	ld [hWY], a ; $ff00+$d2
	call WaitBGMap
	call Function41af7
	callba Function1de1d1
	call Function409cf
	call Function41281
	ld a, $ff
	ld [CurPartySpecies], a ; $d108
	ld a, $4
	call Function41423
	call Function40131
	ret

; no known jump sources
Function40562: ; 40562 (10:4562)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_40595
	ld a, [hl]
	and $1
	jr nz, .asm_40583
	call Function406c5
	ret nc
	call Function41281
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function40b0f
	call Function41ad7
	call Function41af7
	ret
.asm_40583
	call Function40bb1
	call Function40bd0
	ret z
	ld a, $2
	ld [$cf63], a
	ld a, $9
	ld [$cf64], a
	ret
.asm_40595
	ld a, [$c7e0]
	ld [$c7d0], a
	ld a, [$c7e1]
	ld [$c7d1], a
	ld a, [$cf65]
	ld [$c2d6], a
	call Function41401
	call ClearSprites
	call Function40bdc
	ld a, $5
	ld [$cf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	ret

; no known jump sources
Function405bd: ; 405bd (10:45bd)
	call Function41a2c
	call Function409f1
	xor a
	ld [$c7dd], a
	call Function41a58
	call Function40658
	callba Functionfba2e
	call WaitBGMap
	ld a, $16
	call Function41423
	call Function40131
	ret

; no known jump sources
Function405df: ; 405df (10:45df)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $3
	jr nz, .asm_405eb
	call Function40610
	ret
.asm_405eb
	call Function41401
	ld a, $7
	ld [$cf63], a
	call DelayFrame
	call Function41a24
	jr nz, .asm_40603
	callba Function1ddf26
	jr .asm_4060f
.asm_40603
	ld hl, $550e
	ld de, $9310
	ld bc, $103a
	call Functione73
.asm_4060f
	ret

; known jump sources: 405e7 (10:45e7)
Function40610: ; 40610 (10:4610)
	ld hl, $ffa9
	ld a, [hl]
	and $10
	jr nz, .asm_4061e
	ld a, [hl]
	and $20
	jr nz, .asm_4062d
	ret
.asm_4061e
	ld a, [$c7de]
	ld e, a
	ld hl, $c7dd
	ld a, [hl]
	inc a
	cp e
	ret nc
	ld a, [hl]
	inc [hl]
	jr .asm_40635
.asm_4062d
	ld hl, $c7dd
	ld a, [hl]
	and a
	ret z
	ld a, [hl]
	dec [hl]
.asm_40635
	push af
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	pop af
	call Function40654
	call Function41a58
	call Function40658
	callba Functionfba2e
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	ret

; known jump sources: 4063a (10:463a)
Function40654: ; 40654 (10:4654)
	ld c, $7f
	jr asm_4065d

; known jump sources: 405ca (10:45ca), 40640 (10:4640)
Function40658: ; 40658 (10:4658)
	ld a, [$c7dd]
	ld c, $5a
asm_4065d: ; 4065d (10:465d)
	ld e, a
	ld d, $0
	ld hl, $4a40
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld [hl], c
	ret

; known jump sources: 4026b (10:426b)
Function4066c: ; 4066c (10:466c)
	ld a, [$c7d1]
	ld [$c7e2], a
	ld a, [$c7d0]
	ld [$c7e3], a
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_40687
	ld a, [hl]
	and $80
	jr nz, .asm_4069e
	and a
	ret
.asm_40687
	ld a, [$c7d3]
	ld d, a
	ld a, [$c7d2]
	ld e, a
	call Function406ea
	jr nc, .asm_406b7
	call Function40bb1
	call Function40bd0
	jr nz, .asm_406b5
	jr .asm_40687
.asm_4069e
	ld a, [$c7d3]
	ld d, a
	ld a, [$c7d2]
	ld e, a
	call Function406fe
	jr nc, .asm_406b7
	call Function40bb1
	call Function40bd0
	jr nz, .asm_406b5
	jr .asm_4069e
.asm_406b5
	scf
	ret
.asm_406b7
	ld a, [$c7e2]
	ld [$c7d1], a
	ld a, [$c7e3]
	ld [$c7d0], a
	and a
	ret

; known jump sources: 401c5 (10:41c5), 4056f (10:456f)
Function406c5: ; 406c5 (10:46c5)
	ld a, [$c7d3]
	ld d, a
	ld a, [$c7d2]
	ld e, a
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, Function406ea
	ld a, [hl]
	and $80
	jr nz, Function406fe
	ld a, d
	cp e
	jr nc, asm_4073d
	ld a, [hl]
	and $20
	jr nz, asm_40716
	ld a, [hl]
	and $10
	jr nz, asm_40728
	jr asm_4073d

; known jump sources: 4068f (10:468f), 406d3 (10:46d3)
Function406ea: ; 406ea (10:46ea)
	ld hl, $c7d1
	ld a, [hl]
	and a
	jr z, .asm_406f4
	dec [hl]
	jr asm_4073f
.asm_406f4
	ld hl, $c7d0
	ld a, [hl]
	and a
	jr z, asm_4073d
	dec [hl]
	jr asm_4073f

; known jump sources: 406a6 (10:46a6), 406d8 (10:46d8)
Function406fe: ; 406fe (10:46fe)
	ld hl, $c7d1
	ld a, [hl]
	inc a
	cp e
	jr nc, asm_4073d
	cp d
	jr nc, .asm_4070c
	inc [hl]
	jr asm_4073f
.asm_4070c
	ld hl, $c7d0
	add [hl]
	cp e
	jr nc, asm_4073d
	inc [hl]
	jr asm_4073f
asm_40716: ; 40716 (10:4716)
	ld hl, $c7d0
	ld a, [hl]
	and a
	jr z, asm_4073d
	cp d
	jr nc, .asm_40724
	xor a
	ld [hl], a
	jr asm_4073f
.asm_40724
	sub d
	ld [hl], a
	jr asm_4073f
asm_40728: ; 40728 (10:4728)
	ld hl, $c7d0
	ld a, d
	add a
	add [hl]
	jr c, .asm_40733
	cp e
	jr c, .asm_40738
.asm_40733
	ld a, e
	sub d
	ld [hl], a
	jr asm_4073f
.asm_40738
	ld a, [hl]
	add d
	ld [hl], a
	jr asm_4073f
asm_4073d: ; 4073d (10:473d)
	and a
	ret
asm_4073f: ; 4073f (10:473f)
	scf
	ret

Function40741: ; 40741
	push de
	ld de, $0014
.asm_40745
	ld [hl], a
	add hl, de
	dec b
	jr nz, .asm_40745
	pop de
	ret
; 4074c


; known jump sources: 40169 (10:4169)
Function4074c: ; 4074c (10:474c)
	ld hl, $c5f4
	ld de, $47f2
	call Function40acd
	ld a, $32
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	call ByteFill
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $707
	call Function40ad5
	ld hl, $c554
	ld bc, $607
	call Function40ad5
	ld hl, $c57d
	ld de, $47e1
	call Function40acd
	ld hl, PokedexSeen ; $deb9 (aliases: EndPokedexSeen)
	ld b, $20
	call CountSetBits
	ld de, $d265
	ld hl, $c595
	ld bc, $103
	call PrintNum
	ld hl, $c5b9
	ld de, $47e6
	call Function40acd
	ld hl, PokedexCaught ; $de99
	ld b, $20
	call CountSetBits
	ld de, $d265
	ld hl, $c5d1
	ld bc, $103
	call PrintNum
	ld hl, $c5f5
	ld de, $47ea
	call Function40acd
	ld hl, $c4bc
	ld b, $7
	ld a, $5a
	call Function40741
	ld hl, $c570
	ld b, $6
	ld a, $5a
	call Function40741
	ld hl, $c4a8
	ld [hl], $59
	ld hl, $c548
	ld [hl], $53
	ld hl, $c55c
	ld [hl], $54
	ld hl, $c5e8
	ld [hl], $5b
	call Function40ab2
	ret
; 407e1 (10:47e1)

INCBIN "baserom.gbc",$407e1,$407fd - $407e1

Function407fd: ; 407fd
	call Function40aa6
	ld hl, TileMap
	ld bc, $0f12
	call Function40ad5
	ld hl, $c4b3
	ld [hl], $34
	ld hl, $c4c7
	ld a, $7f
	ld b, $f
	call Function40741
	ld [hl], $39
	ld hl, $c569
	ld bc, $0013
	ld a, $61
	call ByteFill
	ld hl, $c5f5
	ld bc, $0012
	ld a, $7f
	call ByteFill
	ld hl, $c535
	ld de, $4852
	call Function40acd
	ld hl, $c55d
	ld de, $485c
	call Function40acd
	ld hl, $c5f4
	ld de, $4867
	call Function40acd
	call Function40ab2
	ret
; 4084f

INCBIN "baserom.gbc",$4084f,$4087c - $4084f

; known jump sources: 403a3 (10:43a3)
Function4087c: ; 4087c (10:487c)
	call Function40aa6
	ld hl, $c4c8
	ld bc, $812
	call Function40ad5
	ld hl, $c590
	ld bc, $412
	call Function40ad5
	ld hl, $c4b4
	ld de, $48b2
	call Function40acd
	ld hl, $c4f3
	ld de, $48bd
	call PlaceString
	ld a, [$c7dc]
	and a
	ret z
	ld hl, $c56b
	ld de, $48e5
	call PlaceString
	ret
; 408b2 (10:48b2)

INCBIN "baserom.gbc",$408b2,$408f0 - $408b2

; known jump sources: 40449 (10:4449)
Function408f0: ; 408f0 (10:48f0)
	call Function40aa6
	ld hl, $c4c8
	ld bc, $e12
	call Function40ad5
	ld hl, $c4b4
	ld de, $492a
	call Function40acd
	ld hl, $c4f8
	ld de, $4935
	call Function40acd
	ld hl, $c520
	ld de, $4935
	call Function40acd
	ld hl, $c4f3
	ld de, $4940
	call PlaceString
	ld hl, $c5a7
	ld de, $494c
	call PlaceString
	ret
; 4092a (10:492a)

INCBIN "baserom.gbc",$4092a,$40962 - $4092a

; known jump sources: 40534 (10:4534)
Function40962: ; 40962 (10:4962)
	call Function40aa6
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $707
	call Function40ad5
	ld hl, $c57c
	ld bc, $512
	call Function40ad5
	ld hl, $c591
	ld de, $49ae
	call PlaceString
	ld de, $c7d7
	ld hl, $c5e1
	ld bc, $103
	call PrintNum
	ld hl, $c4a8
	ld [hl], $59
	ld hl, $c4bc
	ld b, $7
	ld a, $5a
	call Function40741
	ld hl, $c548
	ld [hl], $53
	ld hl, $c55c
	ld [hl], $69
	ld hl, $c570
	ld [hl], $6a
	call Function40ab2
	ret
; 409ae (10:49ae)

INCBIN "baserom.gbc",$409ae,$409cf - $409ae

; known jump sources: 40523 (10:4523), 4054e (10:454e)
Function409cf: ; 409cf (10:49cf)
	ld a, [$c7d5]
	ld hl, $c5b8
	call Function40fcd
	ld a, [$c7d5]
	ld b, a
	ld a, [$c7d6]
	and a
	jr z, .asm_409f0
	cp b
	jr z, .asm_409f0
	ld hl, $c5ce
	call Function40fcd
	ld hl, $c5cd
	ld [hl], $f3
.asm_409f0
	ret

; known jump sources: 405c0 (10:45c0)
Function409f1: ; 409f1 (10:49f1)
	call Function40aa6
	ld hl, $c4b6
	ld bc, $a0d
	call Function40ad5
	ld hl, $c5ba
	ld bc, $10d
	call Function40ad5
	ld hl, $c5ce
	ld [hl], $3d
	ld hl, $c5dc
	ld [hl], $3e
	ld hl, $c50a
	call Function40ab5
	ld de, $0
	ld b, $0
	ld c, $1a
.asm_40a1d
	ld hl, EndPokedexSeen ; $ded9 (aliases: UnownDex)
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_40a39
	push af
	ld hl, $4a3e
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop af
	add $3f
	ld [hl], a
	inc de
	inc b
	dec c
	jr nz, .asm_40a1d
.asm_40a39
	ld a, b
	ld [$c7de], a
	ret
; 40a3e (10:4a3e)

INCBIN "baserom.gbc",$40a3e,$40aa6 - $40a3e

Function40aa6: ; 40aa6
	ld hl, TileMap
	ld a, $32
	ld bc, $0168
	call ByteFill
	ret
; 40ab2

Function40ab2: ; 40ab2
	ld hl, $c4b5
Function40ab5: ; 40ab5
	xor a
	ld b, $7
.asm_40ab8
	ld c, $7
	push af
	push hl
.asm_40abc
	ld [hli], a
	add $7
	dec c
	jr nz, .asm_40abc
	pop hl
	ld de, $0014
	add hl, de
	pop af
	inc a
	dec b
	jr nz, .asm_40ab8
	ret
; 40acd

Function40acd: ; 40acd
.asm_40acd
	ld a, [de]
	cp $ff
	ret z
	inc de
	ld [hli], a
	jr .asm_40acd
; 40ad5


Function40ad5: ; 40ad5
	push hl
	ld a, $33
	ld [hli], a
	ld d, $34
	call Function40b06
	ld a, $35
	ld [hl], a
	pop hl
	ld de, $0014
	add hl, de
.asm_40ae6
	push hl
	ld a, $36
	ld [hli], a
	ld d, $7f
	call Function40b06
	ld a, $37
	ld [hl], a
	pop hl
	ld de, $0014
	add hl, de
	dec b
	jr nz, .asm_40ae6
	ld a, $38
	ld [hli], a
	ld d, $39
	call Function40b06
	ld a, $3a
	ld [hl], a
	ret
; 40b06

Function40b06: ; 40b06
	ld e, c
.asm_40b07
	ld a, e
	and a
	ret z
	ld a, d
	ld [hli], a
	dec e
	jr .asm_40b07
; 40b0f


; known jump sources: 40160 (10:4160), 401a7 (10:41a7), 401cf (10:41cf), 4052b (10:452b), 40579 (10:4579)
Function40b0f: ; 40b0f (10:4b0f)
	ld a, [$c7d4]
	cp $1
	jr z, .asm_40b1a
	ld c, $b
	jr .asm_40b1c
.asm_40b1a
	ld c, $b
.asm_40b1c
	ld hl, $c4b4
	ld a, [$c7d3]
	add a
	inc a
	ld b, a
	ld a, $7f
	call Function413fe
	ld a, [$c7d0]
	ld e, a
	ld d, $0
	ld hl, PlayerSDefLevel ; $c6d0
	add hl, de
	ld e, l
	ld d, h
	ld hl, $c4c8
	ld a, [$c7d3]
.asm_40b3c
	push af
	ld a, [de]
	ld [$d265], a
	push de
	push hl
	call Function40b55
	pop hl
	ld de, $28
	add hl, de
	pop de
	inc de
	pop af
	dec a
	jr nz, .asm_40b3c
	call Function4143b
	ret

; known jump sources: 40b43 (10:4b43)
Function40b55: ; 40b55 (10:4b55)
	and a
	ret z
	call Function40b6a
	call Function40b8d
	ret c
	call Function40b82
	push hl
	call GetPokemonName
	pop hl
	call PlaceString
	ret

; known jump sources: 40b57 (10:4b57)
Function40b6a: ; 40b6a (10:4b6a)
	ld a, [$c7d4]
	cp $1
	jr z, .asm_40b72
	ret
.asm_40b72
	push hl
	ld de, $ffec
	add hl, de
	ld de, $d265
	ld bc, $8103
	call PrintNum
	pop hl
	ret

; known jump sources: 40b5e (10:4b5e)
Function40b82: ; 40b82 (10:4b82)
	call Function40bc4
	jr nz, .asm_40b89
	inc hl
	ret
.asm_40b89
	ld a, $4f
	ld [hli], a
	ret

; known jump sources: 40b5a (10:4b5a)
Function40b8d: ; 40b8d (10:4b8d)
	call Function40bd0
	ret nz
	inc hl
	ld de, $4b9a
	call PlaceString
	scf
	ret
; 40b9a (10:4b9a)

INCBIN "baserom.gbc",$40b9a,$40ba0 - $40b9a

Function40ba0: ; 40ba0
	ld hl, $c4c6
	ld a, $62
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4da
	ld a, $64
	ld [hli], a
	inc a
	ld [hl], a
	ret
; 40bb1


Function40bb1: ; 40bb1
	ld a, [$c7d1]
	ld hl, $c7d0
	add [hl]
	ld e, a
	ld d, $0
	ld hl, PlayerSDefLevel
	add hl, de
	ld a, [hl]
	ld [$d265], a
	ret
; 40bc4


; known jump sources: 40b82 (10:4b82)
Function40bc4: ; 40bc4 (10:4bc4)
	push de
	push hl
	ld a, [$d265]
	dec a
	call CheckCaughtMon
	pop hl
	pop de
	ret


Function40bd0: ; 40bd0
	push de
	push hl
	ld a, [$d265]
	dec a
	call CheckSeenMon
	pop hl
	pop de
	ret
; 40bdc



Function40bdc: ; 40bdc
	ld hl, PlayerSDefLevel
	ld bc, Start
	xor a
	call ByteFill
	ld a, [$c7d4]
	ld hl, $4bf0
	call Function41432
	jp [hl]
; 40bf0


; no known jump sources
Jumptable_40bf0: ; 40bf0 (10:4bf0)
	dw Function40bf6
	dw Function40c08
	dw Function40c30


; no known jump sources
Function40bf6: ; 40bf6 (10:4bf6)
	ld de, $4d60
	ld hl, PlayerSDefLevel ; $c6d0
	ld c, $fb
.asm_40bfe
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_40bfe
	call Function40c18
	ret

; no known jump sources
Function40c08: ; 40c08 (10:4c08)
	ld hl, PlayerSDefLevel ; $c6d0
	ld a, $1
	ld c, $fb
.asm_40c0f
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_40c0f
	call Function40c18
	ret

; known jump sources: 40c04 (10:4c04), 40c14 (10:4c14)
Function40c18: ; 40c18 (10:4c18)
	ld hl, $c7ca
	ld d, $fb
	ld e, d
.asm_40c1e
	ld a, [hld]
	ld [$d265], a
	call Function40bd0
	jr nz, .asm_40c2b
	dec d
	dec e
	jr nz, .asm_40c1e
.asm_40c2b
	ld a, d
	ld [$c7d2], a
	ret

Function40c30: ; 40c30
	xor a
	ld [$c7d2], a
	ld hl, PlayerSDefLevel
	ld de, AlphabeticalPokedexOrder
	ld c, $fb
.asm_40c3c
	push bc
	ld a, [de]
	ld [$d265], a
	call Function40bd0
	jr z, .asm_40c51
	ld a, [$d265]
	ld [hli], a
	ld a, [$c7d2]
	inc a
	ld [$c7d2], a

.asm_40c51
	inc de
	pop bc
	dec c
	jr nz, .asm_40c3c
	ld a, [$c7d2]
	ld c, $0
.asm_40c5b
	cp $fb
	jr z, .asm_40c64
	ld [hl], c
	inc hl
	inc a
	jr .asm_40c5b

.asm_40c64
	ret
; 40c65

AlphabeticalPokedexOrder: ; 0x40c65
INCLUDE "stats/pokedex/order_alpha.asm"

NewPokedexOrder: ; 0x40d60
INCLUDE "stats/pokedex/order_new.asm"

Function40e5b: ; 40e5b
	xor a
	ld [hBGMapMode], a
	ld hl, $c590
	ld bc, $0412
	call Function40ad5
	ld a, [$c7d8]
	ld hl, $4e7d
	call Function41432
	ld e, l
	ld d, h
	ld hl, $c5b9
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a
	ret
; 40e7d

INCBIN "baserom.gbc",$40e7d,$40f08 - $40e7d

; known jump sources: 40424 (10:4424)
Function40f08: ; 40f08 (10:4f08)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $c590
	ld bc, $412
	call Function40ad5
	ld de, $4f32
	ld hl, $c5b9
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $40
	call DelayFrames
	ld de, $15
	call PlaySFX
	ld c, $40
	call DelayFrames
	ret
; 40f32 (10:4f32)

INCBIN "baserom.gbc",$40f32,$40f4f - $40f32

; known jump sources: 40477 (10:4477)
Function40f4f: ; 40f4f (10:4f4f)
	ld a, [$c7d8]
	cp $2
	jr nc, .asm_40f63
	ld hl, $ffa9
	ld a, [hl]
	and $20
	jr nz, .asm_40f65
	ld a, [hl]
	and $10
	jr nz, .asm_40f84
.asm_40f63
	and a
	ret
.asm_40f65
	ld a, [$c7d8]
	and a
	jr nz, .asm_40f76
	ld hl, $c7d5
	ld a, [hl]
	cp $1
	jr z, .asm_40f80
	dec [hl]
	jr .asm_40f82
.asm_40f76
	ld hl, $c7d6
	ld a, [hl]
	and a
	jr z, .asm_40f80
	dec [hl]
	jr .asm_40f82
.asm_40f80
	ld [hl], $11
.asm_40f82
	scf
	ret
.asm_40f84
	ld a, [$c7d8]
	and a
	jr nz, .asm_40f99
	ld hl, $c7d5
	ld a, [hl]
	cp $11
	jr nc, .asm_40f95
	inc [hl]
	jr .asm_40fa6
.asm_40f95
	ld [hl], $1
	jr .asm_40fa6
.asm_40f99
	ld hl, $c7d6
	ld a, [hl]
	cp $11
	jr nc, .asm_40fa4
	inc [hl]
	jr .asm_40fa6
.asm_40fa4
	ld [hl], $0
.asm_40fa6
	scf
	ret

; known jump sources: 40458 (10:4458), 4047a (10:447a)
Function40fa8: ; 40fa8 (10:4fa8)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $c4e5
	ld bc, $408
	ld a, $7f
	call Function413fe
	ld a, [$c7d5]
	ld hl, $c4f9
	call Function40fcd
	ld a, [$c7d6]
	ld hl, $c521
	call Function40fcd
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 409d5 (10:49d5), 409e8 (10:49e8), 40fbc (10:4fbc), 40fc5 (10:4fc5)
Function40fcd: ; 40fcd (10:4fcd)
	push hl
	ld e, a
	ld d, $0
	ld hl, $4fe4
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld e, l
	ld d, h
	pop hl
	call PlaceString
	ret
; 40fe4 (10:4fe4)

INCBIN "baserom.gbc",$40fe4,$41148 - $40fe4

; known jump sources: 40190 (10:4190), 401c9 (10:41c9)
Function41148: ; 41148 (10:5148)
	ld a, [$c7d4]
	cp $1
	jp z, Function41157
	call Function41229
	call Function4130e
	ret

; known jump sources: 4114d (10:514d), 41286 (10:5286)
Function41157: ; 41157 (10:5157)
	ld hl, $5167
	ld a, [$c7d1]
	or a
	jr nz, .asm_41163
	ld hl, $51c8
.asm_41163
	call Function412f1
	ret
; 41167 (10:5167)

INCBIN "baserom.gbc",$41167,$41229 - $41167

; known jump sources: 41150 (10:5150)
Function41229: ; 41229 (10:5229)
	ld hl, $5230
	call Function412f1
	ret
; 41230 (10:5230)

INCBIN "baserom.gbc",$41230,$41281 - $41230

; known jump sources: 40551 (10:4551), 40573 (10:4573)
Function41281: ; 41281 (10:5281)
	ld a, [$c7d4]
	cp $1
	jp z, Function41157
	ld hl, $5290
	call Function412f1
	ret
; 41290 (10:5290)

INCBIN "baserom.gbc",$41290,$412f1 - $41290

; known jump sources: 41163 (10:5163), 4122c (10:522c), 4128c (10:528c)
Function412f1: ; 412f1 (10:52f1)
	ld de, Sprites ; $c400
.asm_412f4
	ld a, [hl]
	cp $ff
	ret z
	ld a, [$c7d1]
	and $7
	swap a
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	jr .asm_412f4

; known jump sources: 41153 (10:5153)
Function4130e: ; 4130e (10:530e)
	push de
	ld a, [$c7d2]
	dec a
	ld e, a
	ld a, [$c7d1]
	ld hl, $c7d0
	add [hl]
	cp e
	jr z, .asm_4133f
	ld hl, $0
	ld bc, $79
	call AddNTimes
	ld e, l
	ld d, h
	ld b, $0
	ld a, d
	or e
	jr z, .asm_41341
	ld a, [$c7d2]
	ld c, a
.asm_41333
	ld a, e
	sub c
	ld e, a
	ld a, d
	sbc $0
	ld d, a
	jr c, .asm_41341
	inc b
	jr .asm_41333
.asm_4133f
	ld b, $79
.asm_41341
	ld a, $14
	add b
	pop hl
	ld [hli], a
	ld a, $a1
	ld [hli], a
	ld a, $f
	ld [hli], a
	ld [hl], $0
	ret

; known jump sources: 4022a (10:422a), 402b7 (10:42b7), 403a6 (10:43a6), 4044c (10:444c)
Function4134f: ; 4134f (10:534f)
	xor a
	ld [$c7d8], a
	ld [$c7d9], a
	ld [$c7da], a
	ret

; known jump sources: 4025b (10:425b), 403cc (10:43cc), 40474 (10:4474)
Function4135a: ; 4135a (10:535a)
	ld a, [de]
	ld b, a
	inc de
	ld a, [de]
	dec a
	ld c, a
	inc de
	call Function413e0
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $60
	and b
	jr nz, .asm_4138f
	ld a, [hl]
	and $90
	and b
	jr nz, .asm_413a0
	ld a, [hl]
	and $4
	and b
	jr nz, .asm_413c1
	call Function413f5
	jr c, .asm_413bf
	ld hl, $ffa9
	ld a, [hl]
	and $60
	and b
	jr nz, .asm_4138f
	ld a, [hl]
	and $90
	and b
	jr nz, .asm_413a0
	jr .asm_413bf
.asm_4138f
	ld a, [$c7d8]
	and a
	jr z, .asm_413bf
	call Function413d4
	ld [hl], $7f
	ld hl, $c7d8
	dec [hl]
	jr .asm_413af
.asm_413a0
	ld a, [$c7d8]
	cp c
	jr nc, .asm_413bf
	call Function413d4
	ld [hl], $7f
	ld hl, $c7d8
	inc [hl]
.asm_413af
	call Function413d4
	ld [hl], $ed
	ld a, $c
	ld [$c7d9], a
	xor a
	ld [$c7da], a
	scf
	ret
.asm_413bf
	and a
	ret
.asm_413c1
	call Function413d4
	ld [hl], $7f
	ld a, [$c7d8]
	cp c
	jr c, .asm_413ce
	ld a, $ff
.asm_413ce
	inc a
	ld [$c7d8], a
	jr .asm_413af

; known jump sources: 41395 (10:5395), 413a6 (10:53a6), 413af (10:53af), 413c1 (10:53c1), 413e9 (10:53e9), 413ef (10:53ef)
Function413d4: ; 413d4 (10:53d4)
	ld a, [$c7d8]
	add a
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

; known jump sources: 41361 (10:5361)
Function413e0: ; 413e0 (10:53e0)
	ld hl, $c7da
	ld a, [hl]
	inc [hl]
	and $8
	jr z, .asm_413ef
	call Function413d4
	ld [hl], $7f
	ret
.asm_413ef
	call Function413d4
	ld [hl], $ed
	ret

; known jump sources: 41379 (10:5379)
Function413f5: ; 413f5 (10:53f5)
	ld hl, $c7d9
	ld a, [hl]
	and a
	ret z
	dec [hl]
	scf
	ret

; known jump sources: 40b27 (10:4b27), 40fb3 (10:4fb3)
Function413fe: ; 413fe (10:53fe)
	jp Functionfb8

; known jump sources: 401eb (10:41eb), 401fe (10:41fe), 402aa (10:42aa), 403ea (10:43ea), 40431 (10:4431), 4043a (10:443a), 40495 (10:4495), 405a7 (10:45a7), 405eb (10:45eb)
Function41401: ; 41401 (10:5401)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, Unkn1Pals ; $d000
	ld bc, $40
	xor a
	call ByteFill
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $ff
	call DmgToCgbBGPals
	ld a, $ff
	call Functioncf8
	call DelayFrame
	ret

Function41423: ; 41423
	ld b, a
	call GetSGBLayout
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $e0
	call Functioncf8
	ret
; 41432


Function41432: ; 41432
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 4143b

Function4143b: ; 4143b
	call Function40bb1
	call Function40bd0
	jr z, .asm_4145b
	ld a, [$def4]
	ld [UnownLetter], a
	ld a, [$d265]
	ld [CurPartySpecies], a
	call GetBaseData
	ld de, VTiles2
	ld a, $3c
	call Predef
	ret

.asm_4145b
	ld a, $0
	call GetSRAMBank
	callba Function1de0d7
	ld hl, VTiles2
	ld de, $a000
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	call CloseSRAM
	ret
; 41478


; known jump sources: 40224 (10:4224), 402ba (10:42ba)
Function41478: ; 41478 (10:5478)
	call Function40bb1

Function4147b: ; 4147b
	ld a, [$d265]
	dec a
	and $f8
	srl a
	srl a
	srl a
	ld e, $0
	ld d, a
	ld a, [$d265]
	dec a
	and $7
	swap a
	ld l, a
	ld h, $0
	add hl, de
	ld de, $5434
	add hl, de
	push hl
	ld e, l
	ld d, h
	ld hl, $9620
	ld bc, $3e02
	call Request1bpp
	pop hl
	ld de, $0080
	add hl, de
	ld e, l
	ld d, h
	ld hl, $9640
	ld bc, $3e02
	call Request1bpp
	ret
; 414b7


Function414b7: ; 414b7
	call DisableLCD
	ld hl, VTiles2
	ld bc, $0310
	xor a
	call ByteFill
	call .asm_414fb
	call Functione5f
	ld hl, $9600
	ld bc, $0200
	call asm_41504
	call Function41a24
	jr nz, .asm_414e0
	callba Function1ddf1c
	jr .asm_414e9

.asm_414e0
	ld hl, $550e
	ld de, $9310
	call Decompress

.asm_414e9
	ld hl, $56b0
	ld de, VTiles0
	call Decompress
	ld a, $6
	call Function3cb4
	call EnableLCD
	ret
.asm_414fb: ; 414fb
	call Functione51
	ld hl, VTiles1
	ld bc, $0800
asm_41504
	ld a, [hl]
	xor $ff
	ld [hli], a
	dec bc
	ld a, b
	or c
	jr nz, asm_41504
	ret
; 4150e

INCBIN "baserom.gbc",$4150e,$41a24 - $4150e


Function41a24: ; 41a24
	ld a, [hCGB]
	or a
	ret nz
	ld a, [hSGB]
	dec a
	ret
; 41a2c

Function41a2c: ; 41a2c
	ld a, $0
	call GetSRAMBank
	ld hl, Function40000
	ld de, $a188
	ld bc, Function270
	ld a, $77
	call FarCopyBytes
	ld hl, $a188
	ld bc, $01b0
	call asm_41504
	ld de, $a188
	ld hl, $9400
	ld bc, $101b
	call Request2bpp
	call CloseSRAM
	ret
; 41a58


; known jump sources: 405c7 (10:45c7), 4063d (10:463d)
Function41a58: ; 41a58 (10:5a58)
	ld a, [UnownLetter] ; $d234
	push af
	ld a, [$c7dd]
	ld e, a
	ld d, $0
	ld hl, EndPokedexSeen ; $ded9 (aliases: UnownDex)
	add hl, de
	ld a, [hl]
	ld [UnownLetter], a ; $d234
	ld a, $c9
	ld [CurPartySpecies], a ; $d108
	call GetBaseData
	ld de, $9000
	ld a, $3c
	call Predef
	pop af
	ld [UnownLetter], a ; $d234
	ret

Function41a7f: ; 41a7f
	xor a
	ld [hBGMapMode], a
	callba Function1de247
	call Function41af7
	call DisableLCD
	call Functione51
	call Functione5f
	call Function414b7
	call Function4147b
	ld a, [$d265]
	ld [CurPartySpecies], a
	call Function407fd
	call Function40ba0
	ld hl, $c5f4
	ld [hl], $3b
	inc hl
	ld bc, $0013
	ld a, $7f
	call ByteFill
	callba Function4424d
	call EnableLCD
	call WaitBGMap
	call GetBaseData
	ld de, VTiles2
	ld a, $3c
	call Predef
	ld a, $4
	call Function41423
	ld a, [CurPartySpecies]
	call Function37ce
	ret
; 41ad7


; known jump sources: 401d2 (10:41d2), 4052e (10:452e), 4057c (10:457c), 41af3 (10:5af3)
Function41ad7: ; 41ad7 (10:5ad7)
	ld a, $3
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $4
	call DelayFrames
	ret

; known jump sources: 40517 (10:4517), 41af0 (10:5af0)
Function41ae1: ; 41ae1 (10:5ae1)
	ld a, $4
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $4
	call DelayFrames
	ret

; known jump sources: 40163 (10:4163)
Function41aeb: ; 41aeb (10:5aeb)
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr z, .asm_41af3
	call Function41ae1
.asm_41af3
	call Function41ad7
	ret


Function41af7: ; 41af7
	xor a
	ld [hBGMapMode], a
	ret
; 41afb


Moves: ; 0x41afb
INCLUDE "battle/moves/moves.asm"


Function421d8: ; 421d8
	ld hl, EvolvableFlags
	xor a
	ld [hl], a
	ld a, [CurPartyMon]
	ld c, a
	ld b, $1
	call Function42577

Function421e6: ; 421e6
	xor a
	ld [$d268], a
	dec a
	ld [CurPartyMon], a
	push hl
	push bc
	push de
	ld hl, PartyCount
	push hl
asm_421f5
	ld hl, CurPartyMon
	inc [hl]
	pop hl
	inc hl
	ld a, [hl]
	cp $ff
	jp z, Function423ff
	ld [MagikarpLength], a
	push hl
	ld a, [CurPartyMon]
	ld c, a
	ld hl, EvolvableFlags
	ld b, $2
	call Function42577
	ld a, c
	and a
	jp z, asm_421f5
	ld a, [MagikarpLength]
	dec a
	ld b, $0
	ld c, a
	ld hl, EvosAttacksPointers
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	push hl
	xor a
	ld [MonType], a
	ld a, $1f
	call Predef
	pop hl
.asm_42230
	ld a, [hli]
	and a
	jr z, asm_421f5
	ld b, a
	cp $3
	jr z, .asm_422ae
	ld a, [InLinkBattle]
	and a
	jp nz, .asm_423f9
	ld a, b
	cp $2
	jp z, .asm_422d5
	ld a, [$d1e9]
	and a
	jp nz, .asm_423f9
	ld a, b
	cp $1
	jp z, .asm_422ee
	cp $4
	jr z, .asm_42283
	ld a, [TempMonLevel]
	cp [hl]
	jp c, .asm_423f8
	call Function42461
	jp z, .asm_423f8
	push hl
	ld de, TempMonAtk
	ld hl, TempMonDef
	ld c, $2
	call StringCmp
	ld a, $3
	jr z, .asm_4227a
	ld a, $2
	jr c, .asm_4227a
	ld a, $1

.asm_4227a
	pop hl
	inc hl
	cp [hl]
	jp nz, .asm_423f9
	inc hl
	jr .asm_422fd

.asm_42283
	ld a, [TempMonHappiness]
	cp $dc
	jp c, .asm_423f9
	call Function42461
	jp z, .asm_423f9
	ld a, [hli]
	cp $1
	jr z, .asm_422fd
	cp $2
	jr z, .asm_422a4
	ld a, [TimeOfDay]
	cp $2
	jp nz, .asm_423fa
	jr .asm_422fd

.asm_422a4
	ld a, [TimeOfDay]
	cp $2
	jp z, .asm_423fa
	jr .asm_422fd

.asm_422ae
	ld a, [InLinkBattle]
	and a
	jp z, .asm_423f9
	call Function42461
	jp z, .asm_423f9
	ld a, [hli]
	ld b, a
	inc a
	jr z, .asm_422fd
	ld a, [InLinkBattle]
	cp $1
	jp z, .asm_423fa
	ld a, [TempMonItem]
	cp b
	jp nz, .asm_423fa
	xor a
	ld [TempMonItem], a
	jr .asm_422fd

.asm_422d5
	ld a, [hli]
	ld b, a
	ld a, [CurItem]
	cp b
	jp nz, .asm_423fa

	ld a, [$d1e9]
	and a
	jp z, .asm_423fa
	ld a, [InLinkBattle]
	and a
	jp nz, .asm_423fa
	jr .asm_422fd

.asm_422ee
	ld a, [hli]
	ld b, a
	ld a, [TempMonLevel]
	cp b
	jp c, .asm_423fa
	call Function42461
	jp z, .asm_423fa

.asm_422fd
	ld a, [TempMonLevel]
	ld [CurPartyLevel], a
	ld a, $1
	ld [$d268], a
	push hl
	ld a, [hl]
	ld [Buffer2], a
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call GetNick
	call CopyName1
	ld hl, $6482
	call PrintText
	ld c, $32
	call DelayFrames
	xor a
	ld [hBGMapMode], a
	ld hl, TileMap
	ld bc, $0c14
	call ClearBox
	ld a, $1
	ld [hBGMapMode], a
	call ClearSprites
	callba EvolutionAnimation
	push af
	call ClearSprites
	pop af
	jp c, Function42454
	ld hl, $6473
	call PrintText
	pop hl
	ld a, [hl]
	ld [CurSpecies], a
	ld [TempMonSpecies], a
	ld [Buffer2], a
	ld [$d265], a
	call GetPokemonName
	push hl
	ld hl, $6478
	call PrintTextBoxText
	callba Function106094
	ld de, MUSIC_NONE
	call PlayMusic
	ld de, SFX_CAUGHT_MON
	call PlaySFX
	call WaitSFX
	ld c, $28
	call DelayFrames
	call ClearTileMap
	call Function42414
	call GetBaseData
	ld hl, $d118
	ld de, TempMonMaxHP
	ld b, $1
	ld a, $c
	call Predef
	ld a, [CurPartyMon]
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld e, l
	ld d, h
	ld bc, $0024
	add hl, bc
	ld a, [hli]
	ld b, a
	ld c, [hl]
	ld hl, $d133
	ld a, [hld]
	sub c
	ld c, a
	ld a, [hl]
	sbc b
	ld b, a
	ld hl, $d131
	ld a, [hl]
	add c
	ld [hld], a
	ld a, [hl]
	adc b
	ld [hl], a
	ld hl, TempMonSpecies
	ld bc, $0030
	call CopyBytes
	ld a, [CurSpecies]
	ld [$d265], a
	xor a
	ld [MonType], a
	call Function42487
	ld a, [$d265]
	dec a
	call SetSeenAndCaughtMon
	ld a, [$d265]
	cp $c9
	jr nz, .asm_423ec
	ld hl, TempMonDVs
	ld a, $2d
	call Predef
	callab Functionfba18

.asm_423ec
	pop de
	pop hl
	ld a, [TempMonSpecies]
	ld [hl], a
	push hl
	ld l, e
	ld h, d
	jp asm_421f5
; 423f8

.asm_423f8
	inc hl
.asm_423f9
	inc hl
.asm_423fa
	inc hl
	jp .asm_42230
; 423fe

INCBIN "baserom.gbc",$423fe,$423ff - $423fe


Function423ff: ; 423ff
	pop de
	pop bc
	pop hl
	ld a, [InLinkBattle]
	and a
	ret nz
	ld a, [IsInBattle]
	and a
	ret nz
	ld a, [$d268]
	and a
	call nz, Function3d47
	ret
; 42414

Function42414: ; 42414
	ld a, [CurSpecies]
	push af
	ld a, [BaseDexNo]
	ld [$d265], a
	call GetPokemonName
	pop af
	ld [CurSpecies], a
	ld hl, StringBuffer1
	ld de, StringBuffer2
.asm_4242b
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	ret nz
	cp $50
	jr nz, .asm_4242b
	ld a, [CurPartyMon]
	ld bc, $000b
	ld hl, PartyMon1Nickname
	call AddNTimes
	push hl
	ld a, [CurSpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	pop de
	ld bc, $000b
	jp CopyBytes
; 42454

Function42454: ; 42454
	ld hl, $647d
	call PrintText
	call ClearTileMap
	pop hl
	jp asm_421f5
; 42461

Function42461: ; 42461
	push hl
	ld a, [CurPartyMon]
	ld hl, PartyMon1Item
	ld bc, $0030
	call AddNTimes
	ld a, [hl]
	cp $70
	pop hl
	ret
; 42473

INCBIN "baserom.gbc",$42473,$42487 - $42473


Function42487: ; 42487
	ld a, [$d265]
	ld [CurPartySpecies], a
	dec a
	ld b, $0
	ld c, a
	ld hl, EvosAttacksPointers
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
.asm_42499
	ld a, [hli]
	and a
	jr nz, .asm_42499
.asm_4249d
	ld a, [hli]
	and a
	jr z, .asm_424da
	ld b, a
	ld a, [CurPartyLevel]
	cp b
	ld a, [hli]
	jr nz, .asm_4249d
	push hl
	ld d, a
	ld hl, PartyMon1Move1
	ld a, [CurPartyMon]
	ld bc, $0030
	call AddNTimes
	ld b, $4
.asm_424b9
	ld a, [hli]
	cp d
	jr z, .asm_424c2
	dec b
	jr nz, .asm_424b9
	jr .asm_424c5

.asm_424c2
	pop hl
	jr .asm_4249d

.asm_424c5
	ld a, d
	ld [$d262], a
	ld [$d265], a
	call GetMoveName
	call CopyName1
	ld a, $0
	call Predef
	pop hl
	jr .asm_4249d

.asm_424da
	ld a, [CurPartySpecies]
	ld [$d265], a
	ret
; 424e1


FillMoves: ; 424e1
; Fill in moves at de for CurPartySpecies at CurPartyLevle

	push hl
	push de
	push bc
	ld hl, EvosAttacksPointers
	ld b, 0
	ld a, [CurPartySpecies]
	dec a
	add a
	rl b
	ld c, a
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
.GoToAttacks
	ld a, [hli]
	and a
	jr nz, .GoToAttacks
	jr .GetLevel

.NextMove
	pop de
.GetMove
	inc hl
.GetLevel
	ld a, [hli]
	and a
	jp z, .done
	ld b, a
	ld a, [CurPartyLevel]
	cp b
	jp c, .done
	ld a, [Buffer1]
	and a
	jr z, .CheckMove
	ld a, [DefaultFlypoint]
	cp b
	jr nc, .GetMove

.CheckMove
	push de
	ld c, NUM_MOVES
.CheckRepeat
	ld a, [de]
	inc de
	cp [hl]
	jr z, .NextMove
	dec c
	jr nz, .CheckRepeat
	pop de
	push de
	ld c, NUM_MOVES
.CheckSlot
	ld a, [de]
	and a
	jr z, .LearnMove
	inc de
	dec c
	jr nz, .CheckSlot
	pop de
	push de
	push hl
	ld h, d
	ld l, e
	call ShiftMoves
	ld a, [Buffer1]
	and a
	jr z, .ShiftedMove
	push de
	ld bc, PartyMon1PP - PartyMon1Move4
	add hl, bc
	ld d, h
	ld e, l
	call ShiftMoves
	pop de

.ShiftedMove
	pop hl

.LearnMove
	ld a, [hl]
	ld [de], a
	ld a, [Buffer1]
	and a
	jr z, .NextMove
	push hl
	ld a, [hl]
	ld hl, PartyMon1PP - PartyMon1Moves
	add hl, de
	push hl
	dec a
	ld hl, Moves + MOVE_PP
	ld bc, Move2 - Move1
	call AddNTimes
	ld a, BANK(Moves)
	call GetFarByte
	pop hl
	ld [hl], a
	pop hl
	jr .NextMove

.done
	pop bc
	pop de
	pop hl
	ret
; 4256e

ShiftMoves: ; 4256e
	ld c, $3
.asm_42570
	inc de
	ld a, [de]
	ld [hli], a
	dec c
	jr nz, .asm_42570
	ret
; 42577


Function42577: ; 42577
	push de
	ld d, $0
	ld a, $3
	call Predef
	pop de
	ret
; 42581

GetPreEvolution: ; 42581
; Find the first mon to evolve into CurPartySpecies.

; Return carry and the new species in CurPartySpecies
; if a pre-evolution is found.

	ld c, BULBASAUR - 1
.asm_42583
	ld hl, EvosAttacksPointers
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
.asm_4258d
	ld a, [hli]
	and a
	jr z, .asm_425a2
	cp EVOLVE_STAT
	jr nz, .asm_42596
	inc hl

.asm_42596
	inc hl
	ld a, [CurPartySpecies]
	cp [hl]
	jr z, .asm_425aa
	inc hl
	ld a, [hl]
	and a
	jr nz, .asm_4258d

.asm_425a2
	inc c
	ld a, c
	cp NUM_POKEMON
	jr c, .asm_42583
	and a
	ret

.asm_425aa
	inc c
	ld a, c
	ld [CurPartySpecies], a
	scf
	ret
; 425b1





SECTION "bank11", ROMX, BANK[$11]

INCLUDE "engine/fruit_trees.asm"


AIChooseMove: ; 440ce
; Score each move in EnemyMonMoves starting from Buffer1. Lower is better.
; Pick the move with the lowest score.

; Wildmons attack at random.
	ld a, [IsInBattle]
	dec a
	ret z

	ld a, [InLinkBattle]
	and a
	ret nz

; No use picking a move if there's no choice.
	callba Function3e8d1
	ret nz


; The default score is 20. Unusable moves are given a score of 80.
	ld a, 20
	ld hl, Buffer1
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a

; Don't pick disabled moves.
	ld a, [EnemyDisabledMove]
	and a
	jr z, .CheckPP

	ld hl, EnemyMonMove1
	ld c, 0
.CheckDisabledMove
	cp [hl]
	jr z, .ScoreDisabledMove
	inc c
	inc hl
	jr .CheckDisabledMove
.ScoreDisabledMove
	ld hl, Buffer1
	ld b, 0
	add hl, bc
	ld [hl], 80

; Don't pick moves with 0 PP.
.CheckPP
	ld hl, Buffer1 - 1
	ld de, EnemyMonPP
	ld b, 0
.CheckMovePP
	inc b
	ld a, b
	cp EnemyMonMovesEnd - EnemyMonMoves + 1
	jr z, .ApplyLayers
	inc hl
	ld a, [de]
	inc de
	and $3f
	jr nz, .CheckMovePP
	ld [hl], 80
	jr .CheckMovePP


; Apply AI scoring layers depending on the trainer class.
.ApplyLayers
	ld hl, $559f ; TrainerAI + 3 ; e:559c-5771

	ld a, [$cfc0]
	bit 0, a
	jr nz, .asm_4412f

	ld a, [TrainerClass]
	dec a
	ld bc, 7 ; Trainer2AI - Trainer1AI
	call AddNTimes

.asm_4412f
	ld bc, (CHECK_FLAG << 8) | 0
	push bc
	push hl

.CheckLayer
	pop hl
	pop bc

	ld a, c
	cp 16 ; up to 16 scoring layers
	jr z, .asm_4415e

	push bc
	ld d, $e ; BANK(TrainerAI)
	ld a, PREDEF_FLAG
	call Predef
	ld d, c
	pop bc

	inc c
	push bc
	push hl

	ld a, d
	and a
	jr z, .CheckLayer

	ld hl, AIScoringPointers
	dec c
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, BANK(AIScoring)
	call FarCall_hl

	jr .CheckLayer

.asm_4415e
	ld hl, Buffer1
	ld de, EnemyMonMoves
	ld c, EnemyMonMovesEnd - EnemyMonMoves
.asm_44166
	ld a, [de]
	inc de
	and a
	jr z, .asm_4415e

	dec [hl]
	jr z, .asm_44174

	inc hl
	dec c
	jr z, .asm_4415e

	jr .asm_44166

.asm_44174
	ld a, c
.asm_44175
	inc [hl]
	dec hl
	inc a
	cp EnemyMonMovesEnd - EnemyMonMoves + 1
	jr nz, .asm_44175

	ld hl, Buffer1
	ld de, EnemyMonMoves
	ld c, EnemyMonMovesEnd - EnemyMonMoves
.asm_44184
	ld a, [de]
	and a
	jr nz, .asm_44189
	ld [hl], a
.asm_44189
	ld a, [hl]
	dec a
	jr z, .asm_44191
	xor a
	ld [hli], a
	jr .asm_44193
.asm_44191
	ld a, [de]
	ld [hli], a
.asm_44193
	inc de
	dec c
	jr nz, .asm_44184

.asm_44197
	ld hl, Buffer1
	call Random
	and 3
	ld c, a
	ld b, 0
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_44197

	ld [CurEnemyMove], a
	ld a, c
	ld [CurEnemyMoveNum], a
	ret
; 441af


AIScoringPointers: ; 441af
	dw AIScoring_RedStatus
	dw AIScoring_RedStatMods
	dw AIScoring_RedSuperEffective
	dw AIScoring_Offensive
	dw AIScoring_Smart
	dw AIScoring_Opportunist
	dw AIScoring_Aggressive
	dw AIScoring_Cautious
	dw AIScoring_StatusImmunity
	dw AIScoring_Risky
	dw AIScoring_None
	dw AIScoring_None
	dw AIScoring_None
	dw AIScoring_None
	dw AIScoring_None
	dw AIScoring_None
; 441cf


Function441cf: ; 441cf
	ld hl, $41fc
	ld b, $19
.asm_441d4
	ld a, [hli]
	cp $fe
	jr nz, .asm_441dd
	ld hl, $41fc
	ld a, [hli]

.asm_441dd
	ld [$c7db], a
	ld a, [hli]
	ld c, a
	push bc
	push hl
	call Function44207
	pop hl
	pop bc
	call DelayFrames
	dec b
	jr nz, .asm_441d4
	xor a
	ld [$c7db], a
	call Function44207
	ld c, $20
	call DelayFrames
	ret
; 441fc

INCBIN "baserom.gbc",$441fc,$44207 - $441fc


Function44207: ; 44207
	ld a, [$c7db]
	ld hl, $4228
	ld de, Sprites
.asm_44210
	ld a, [hli]
	cp $ff
	ret z
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [$c7db]
	ld b, a
	add a
	add b
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	jr .asm_44210
; 44228

INCBIN "baserom.gbc",$44228,$4424d - $44228

Function4424d: ; 4424d
	call GetPokemonName
	ld hl, $c4e5
	call PlaceString
	ld a, [$d265]
	ld b, a
	call Function44333
	ld a, b
	push af
	ld hl, $c50d
	call Function13d4
	ld h, b
	ld l, c
	push de
	ld hl, $c542
	ld a, $5c
	ld [hli], a
	ld a, $5d
	ld [hli], a
	ld de, $d265
	ld bc, $8103
	call PrintNum
	ld a, [$d265]
	dec a
	call CheckCaughtMon
	pop hl
	pop bc
	ret z
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	inc hl
	ld a, b
	push af
	push hl
	call GetFarHalfword
	ld d, l
	ld e, h
	pop hl
	inc hl
	inc hl
	ld a, d
	or e
	jr z, .asm_442b0
	push hl
	push de
	ld hl, [sp+$0]
	ld d, h
	ld e, l
	ld hl, $c538
	ld bc, $0224
	call PrintNum
	ld hl, $c53a
	ld [hl], $5e
	pop af
	pop hl

.asm_442b0
	pop af
	push af
	inc hl
	push hl
	dec hl
	call GetFarHalfword
	ld d, l
	ld e, h
	ld a, e
	or d
	jr z, .asm_442cd
	push de
	ld hl, [sp+$0]
	ld d, h
	ld e, l
	ld hl, $c55f
	ld bc, ClearVRAM
	call PrintNum
	pop de

.asm_442cd
	ld bc, $0512
	ld hl, $c57e
	call ClearBox
	ld hl, $c569
	ld bc, $0013
	ld a, $61
	call ByteFill
	ld hl, $c555
	ld [hl], $55
	inc hl
	ld [hl], $55
	ld hl, $c569
	ld [hl], $56
	inc hl
	ld [hl], $57
	pop de
	inc de
	pop af
	ld hl, $c57e
	push af
	call Function13d4
	pop bc
	ld a, [$cf65]
	or a
	ret z
	push bc
	push de
	ld bc, $0512
	ld hl, $c57e
	call ClearBox
	ld hl, $c569
	ld bc, $0013
	ld a, $61
	call ByteFill
	ld hl, $c555
	ld [hl], $55
	inc hl
	ld [hl], $55
	ld hl, $c569
	ld [hl], $56
	inc hl
	ld [hl], $58
	pop de
	inc de
	pop af
	ld hl, $c57e
	call Function13d4
	ret
; 44331

INCBIN "baserom.gbc",$44331,$44333 - $44331

Function44333: ; 44333
	push hl
	ld hl, PokedexDataPointerTable
	ld a, b
	dec a
	ld d, $0
	ld e, a
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	push de
	rlca
	rlca
	and $3
	ld hl, $4351
	ld d, $0
	ld e, a
	add hl, de
	ld b, [hl]
	pop de
	pop hl
	ret
; 44351

INCBIN "baserom.gbc",$44351,$44378 - $44351


PokedexDataPointerTable: ; 0x44378
INCLUDE "stats/pokedex/entry_pointers.asm"


Function4456e: ; 4456e
	ld a, $1
	call GetPartyParamLocation
	ld d, [hl]
	callba ItemIsMail
	jr nc, .asm_445be
	call Function44648
	cp $a
	jr nc, .asm_445be
	ld bc, $002f
	ld hl, $a835
	call AddNTimes
	ld d, h
	ld e, l
	ld a, [CurPartyMon]
	ld bc, $002f
	ld hl, $a600
	call AddNTimes
	push hl
	ld a, $0
	call GetSRAMBank
	ld bc, $002f
	call CopyBytes
	pop hl
	xor a
	ld bc, $002f
	call ByteFill
	ld a, $1
	call GetPartyParamLocation
	ld [hl], $0
	ld hl, $a834
	inc [hl]
	call CloseSRAM
	xor a
	ret

.asm_445be
	scf
	ret
; 445c0

; known jump sources: 44645 (11:4645)
Function445c0: ; 445c0 (11:45c0)
	ld a, $0
	call GetSRAMBank
	ld a, b
	push bc
	ld hl, $a835
	ld bc, $2f
	call AddNTimes
	push hl
	add hl, bc
	pop de
	pop bc
.asm_445d4
	ld a, b
	cp $9
	jr z, .asm_445e4
	push bc
	ld bc, $2f
	call CopyBytes
	pop bc
	inc b
	jr .asm_445d4
.asm_445e4
	ld h, d
	ld l, e
	xor a
	ld bc, $2f
	call ByteFill
	ld hl, $a834
	dec [hl]
	jp CloseSRAM
; 445f4 (11:45f4)

Function445f4: ; 445f4
	ld a, b
	ld hl, $a835
	ld bc, $2f
	call AddNTimes
	ld d, h
	ld e, l
	callba Functionb9237
	ret

Function44607: ; 44607
	ld a, $0
	call GetSRAMBank
	push bc
	ld a, b
	ld bc, $2f
	ld hl, $a835
	call AddNTimes
	push hl
	ld a, [CurPartyMon] ; $d109
	ld bc, $2f
	ld hl, $a600
	call AddNTimes
	ld d, h
	ld e, l
	pop hl
	push hl
	ld bc, $2f
	call CopyBytes
	pop hl
	ld de, $2e
	add hl, de
	ld d, [hl]
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMon1Item ; $dce0
	ld bc, $30
	call AddNTimes
	ld [hl], d
	call CloseSRAM
	pop bc
	jp Function445c0
; 44648 (11:4648)

Function44648: ; 44648
	ld a, $0
	call GetSRAMBank
	ld a, [$a834]
	ld c, a
	jp CloseSRAM
; 44654

Function44654: ; 44654
	push bc
	push de
	callba Function50000
	ld a, $2
	jr c, .asm_446c6
	ld a, [CurPartyMon]
	ld hl, PartyMon1Item
	ld bc, $0030
	call AddNTimes
	ld d, [hl]
	callba ItemIsMail
	ld a, $3
	jr nc, .asm_446c6
	ld a, $0
	call GetSRAMBank
	ld a, [CurPartyMon]
	ld hl, $a600
	ld bc, $002f
	call AddNTimes
	ld d, h
	ld e, l
	pop hl
	pop bc
	ld a, $20
	ld [$d265], a
.asm_44691
	ld a, [de]
	ld c, a
	ld a, b
	call GetFarByte
	cp $50
	jr z, .asm_446ab
	cp c
	ld a, $0
	jr nz, .asm_446c1
	inc hl
	inc de
	ld a, [$d265]
	dec a
	ld [$d265], a
	jr nz, .asm_44691

.asm_446ab
	callba Functione538
	ld a, $4
	jr c, .asm_446c1
	xor a
	ld [$d10b], a
	callba Functione039
	ld a, $1

.asm_446c1
	call CloseSRAM
	jr .asm_446c8

.asm_446c6
	pop de
	pop bc

.asm_446c8
	ld [ScriptVar], a
	ret
; 446cc

Function446cc: ; 446cc
	ld a, [PartyCount]
	dec a
	push af
	push bc
	ld hl, PartyMon1Item
	ld bc, $0030
	call AddNTimes
	pop bc
	ld [hl], b
	pop af
	push bc
	push af
	ld hl, $a600
	ld bc, $002f
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, DefaultFlypoint
	ld bc, $0021
	ld a, $0
	call GetSRAMBank
	call CopyBytes
	pop af
	push af
	ld hl, PartyMon1OT
	ld bc, $000b
	call AddNTimes
	ld bc, $000a
	call CopyBytes
	pop af
	ld hl, PartyMon1ID
	ld bc, $0030
	call AddNTimes
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	ld a, [CurPartySpecies]
	ld [de], a
	inc de
	pop bc
	ld a, b
	ld [de], a
	jp CloseSRAM
; 44725

Function44725: ; 44725
	ld a, $0
	call GetSRAMBank
	ld hl, $a600
	ld de, $a71a
	ld bc, $011a
	call CopyBytes
	ld hl, $a834
	ld de, $aa0b
	ld bc, $01d7
	call CopyBytes
	jp CloseSRAM
; 44745


; no known jump sources
Function44745: ; 44745 (11:4745)
	ld a, $0
	call GetSRAMBank
	ld hl, $a71a
	ld de, $a600
	ld bc, $11a
	call CopyBytes
	ld hl, $aa0b
	ld de, $a834
	ld bc, $1d7
	call CopyBytes
	jp CloseSRAM

; no known jump sources
Function44765: ; 44765 (11:4765)
	ld a, $0
	call GetSRAMBank
	xor a
	ld hl, $a600
	ld bc, $11a
	call ByteFill
	xor a
	ld hl, $a834
	ld bc, $1d7
	call ByteFill
	jp CloseSRAM
; 44781 (11:4781)

INCBIN "baserom.gbc",$44781,$447a0 - $44781

_KrisMailBoxMenu: ; 0x447a0
	call InitMail
	jr z, .nomail
	call Function1d6e
	call Function44806
	jp Function1c17

.nomail
	ld hl, .EmptyMailboxText
	jp Function1d67
; 0x447b4

.EmptyMailboxText ; 0x447b4
	TX_FAR _EmptyMailboxText
	db "@"

InitMail: ; 0x447b9
; initialize $d0f2 and beyond with incrementing values, one per mail
; set z if no mail
	ld a, $0
	call GetSRAMBank
	ld a, [$a834]
	call CloseSRAM
	ld hl, $d0f2
	ld [hli], a
	and a

	jr z, .done ; if no mail, we're done

	; load values in memory with incrementing values starting at $d0f2
	ld b, a
	ld a, $1
.loop
	ld [hli], a
	inc a
	dec b
	jr nz, .loop
.done
	ld [hl], $ff ; terminate

	ld a, [$d0f2]
	and a
	ret
; 0x447da

Function447da: ; 0x447da
	dec a
	ld hl, $a856
	ld bc, $002f
	call AddNTimes
	ld a, $0
	call GetSRAMBank
	ld de, StringBuffer2
	push de
	ld bc, $a
	call CopyBytes
	ld a, $50
	ld [de], a
	call CloseSRAM
	pop de
	ret
; 0x447fb

Function447fb: ; 0x447fb
	push de
	ld a, [MenuSelection]
	call Function447da
	pop hl
	jp PlaceString
; 0x44806

Function44806: ; 0x44806
	xor a
	ld [CurMart], a
	ld a, $1
	ld [$d0f1], a
.asm_4480f
	call InitMail
	ld hl, MenuData4494c
	call Function1d3c
	xor a
	ld [hBGMapMode], a
	call Function352f
	call Function1ad2
	ld a, [$d0f1]
	ld [$cf88], a
	ld a, [CurMart]
	ld [$d0e4], a
	call Function350c
	ld a, [$d0e4]
	ld [CurMart], a
	ld a, [$cfa9]
	ld [$d0f1], a
	ld a, [$cf73]
	cp $2
	jr z, .asm_44848
	call Function4484a
	jr .asm_4480f

.asm_44848
	xor a
	ret
; 0x4484a

Function4484a: ; 0x4484a
	ld hl, MenuData44964
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	jr c, .asm_44860
	ld a, [$cfa9]
	dec a
	ld hl, $4861
	rst JumpTable

.asm_44860
	ret
; 0x44861

.JumpTable
	dw .ReadMail
	dw .PutInPack
	dw .AttachMail
	dw .Cancel

.ReadMail ; 0x44869
	call FadeToMenu
	ld a, [MenuSelection]
	dec a
	ld b, a
	call Function445f4
	jp Function2b3c
; 0x44877

.PutInPack ; 0x44877
	ld hl, .MessageLostText
	call Function1d4f
	call Function1dcf
	call Function1c07
	ret c
	ld a, [MenuSelection]
	dec a
	call .Function448bb
	ld a, $1
	ld [$d10c], a
	ld hl, NumItems
	call ReceiveItem
	jr c, .asm_4489e
	ld hl, .PackFullText
	jp Function1d67

.asm_4489e
	ld a, [MenuSelection]
	dec a
	ld b, a
	call Function445c0
	ld hl, .PutAwayText
	jp Function1d67
; 0x448ac

.PutAwayText ; 0x448ac
	TX_FAR ClearedMailPutAwayText
	db "@"

.PackFullText ; 0x448b1
	TX_FAR MailPackFullText
	db "@"

.MessageLostText ; 0x448b6
	TX_FAR MailMessageLostText
	db "@"

.Function448bb: ; 0x448bb
	push af
	ld a, $0
	call GetSRAMBank
	pop af
	ld hl, $a863
	ld bc, $002f
	call AddNTimes
	ld a, [hl]
	ld [CurItem], a
	jp CloseSRAM
; 0x448d2

.AttachMail ; 0x448d2
	call FadeToMenu
	xor a
	ld [PartyMenuActionText], a
	call WhiteBGMap
.asm_448dc
	callba Function5004f
	callba Function50405
	callba Function503e0
	callba WritePartyMenuTilemap
	callba PrintPartyMenuText
	call WaitBGMap
	call Function32f9
	call DelayFrame
	callba PartyMenuSelect
	jr c, .asm_44939
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_44923
	ld a, PartyMon1Item - PartyMon1
	call GetPartyParamLocation
	ld a, [hl]
	and a
	jr z, .asm_4492b
	ld hl, .HoldingMailText
	call PrintText
	jr .asm_448dc

.asm_44923
	ld hl, .EggText
	call PrintText
	jr .asm_448dc

.asm_4492b
	ld a, [MenuSelection]
	dec a
	ld b, a
	call Function44607
	ld hl, .MailMovedText
	call PrintText

.asm_44939
	jp Function2b3c
; 0x4493c

.HoldingMailText ; 0x4493c
	TX_FAR MailAlreadyHoldingItemText
	db "@"

.EggText ; 0x44941
	TX_FAR MailEggText
	db "@"

.MailMovedText ; 0x44946
	TX_FAR MailMovedFromBoxText
	db "@"

.Cancel
	ret

MenuData4494c: ; 0x4494c
	db %01000000 ; flags
	db 1, 8 ; start coords
	db $a, $12 ; end coords
	dw .MenuData2
	db 1 ; default option

.MenuData2
	db %00010000 ; flags
	db 4, 0 ; rows/columns?
	db 1 ; horizontal spacing?
	dbw 0,$d0f2 ; text pointer
	dbw BANK(Function447fb), Function447fb
	dbw 0,0
	dbw 0,0

MenuData44964: ; 0x44964
	db %01000000 ; flags
	db 0, 0 ; start coords
	db 9, $d ; end coords
	dw .MenuData2
	db 1 ; default option

.MenuData2
	db %10000000 ; flags
	db 4 ; items
	db "READ MAIL@"
	db "PUT IN PACK@"
	db "ATTACH MAIL@"
	db "CANCEL@"

SECTION "bank12", ROMX, BANK[$12]

Function48000: ; 48000
	ld a, $1
	ld [$d474], a
	xor a
	ld [$d473], a
	ld [PlayerGender], a
	ld [$d475], a
	ld [$d476], a
	ld [$d477], a
	ld [$d478], a
	ld [DefaultFlypoint], a
	ld [$d003], a
	ld a, [$d479]
	res 0, a
	ld [$d479], a
	ld a, [$d479]
	res 1, a
	ld [$d479], a
	ret
; 4802f


; known jump sources: 4a0e8 (12:60e8)
Function4802f: ; 4802f (12:402f)
	xor a
	set 6, a
	ld [DefaultFlypoint], a ; $d002
	ld hl, $d003
	set 0, [hl]
	ld a, c
	and a
	call z, Function48000
	call WhiteBGMap
	call Function48d3d
	ld a, [$d479]
	bit 1, a
	jr z, .asm_4805a
	ld a, [$d003]
	set 0, a
	set 1, a
	set 2, a
	set 3, a
	ld [$d003], a
.asm_4805a
	call Function486bf
	call Functione5f
	ld de, $48c3
	ld hl, $9100
	ld bc, $1201
	call Request1bpp
	ld de, $48cb
	ld hl, $9110
	ld bc, $1201
	call Request1bpp
	call Function4a3a7
	call WhiteBGMap
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr z, .asm_4808a
	call Function48689
	jr .asm_480d7
.asm_4808a
	ld a, $5
	ld [MusicFade], a ; $c2a7
	ld a, $5e
	ld [MusicFadeIDLo], a ; $c2a9
	ld a, $0
	ld [MusicFadeIDHi], a ; $c2aa
	ld c, $14
	call DelayFrames
	ld b, $1
	call Function4930f
	call WhiteBGMap
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld b, $2
	ld c, $14
	call ClearBox
	ld hl, $c4b4
	ld a, $c
	ld [hl], a
	ld bc, $13
	add hl, bc
	ld [hl], a
	ld de, $4471
	ld hl, $c4b5
	call PlaceString
	ld hl, $c4c8
	ld b, $a
	ld c, $12
	call Function48cdc
	ld hl, $c4f2
	ld de, $4482
	call PlaceString
.asm_480d7
	ld hl, $c51a
	ld de, $4489
	call PlaceString
	ld hl, $c542
	ld de, $448d
	call PlaceString
	ld hl, $c56a
	ld de, $4495
	call PlaceString
	ld hl, $c592
	ld de, $449e
	call PlaceString
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr nz, .asm_48113
	ld a, [PlayerGender] ; $d472
	ld hl, $44fb
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c4fb
	call PlaceString
.asm_48113
	ld hl, $c523
	call Function487ec
	ld a, [$d474]
	dec a
	ld hl, $455b
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c54b
	call PlaceString
	ld hl, $c573
	call Function489ea
	ld hl, $c5b8
	ld b, $2
	ld c, $12
	call TextBox
	ld hl, $c5e1
	ld de, $4275
	call PlaceString
	call Function48187
	call Function3200
	call Function32f9
	call Function1bc9
	ld hl, $cfa9
	ld b, [hl]
	push bc
	jr asm_4815f

; known jump sources: 48434 (12:4434), 48441 (12:4441)
Function48157: ; 48157 (12:4157)
	call Function1bd3
	ld hl, $cfa9
	ld b, [hl]
	push bc

; known jump sources: 48155 (12:4155)
asm_4815f: ; 4815f (12:415f)
	bit 0, a
	jp nz, Function4820d
	ld b, a
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr z, .asm_48177
	ld hl, $d479
	bit 1, [hl]
	jr z, .asm_48177
	bit 1, b
	jr nz, .asm_4817a
.asm_48177
	jp Function48272
.asm_4817a
	call WhiteBGMap
	call Function48d30
	pop bc
	call ClearTileMap
	ld a, $ff
	ret

; known jump sources: 48144 (12:4144), 48377 (12:4377), 4840c (12:440c)
Function48187: ; 48187 (12:4187)
	ld a, [$d479]
	bit 1, a
	jr nz, .asm_481f1
	ld a, [$d003]
	ld d, a
	call Function48725
	jr c, .asm_481a2
	ld bc, $104
	ld hl, $c592
	call ClearBox
	jr .asm_481ad
.asm_481a2
	push de
	ld hl, $c592
	ld de, $449e
	call PlaceString
	pop de
.asm_481ad
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr nz, .asm_481c1
	bit 0, d
	jr nz, .asm_481c1
	ld bc, $108
	ld hl, $c4fb
	call ClearBox
.asm_481c1
	bit 1, d
	jr nz, .asm_481ce
	ld bc, $108
	ld hl, $c523
	call ClearBox
.asm_481ce
	bit 2, d
	jr nz, .asm_481db
	ld bc, $208
	ld hl, $c537
	call ClearBox
.asm_481db
	bit 3, d
	jr nz, .asm_481f1
	ld a, [$d479]
	bit 0, a
	jr nz, .asm_481f8
	ld bc, $108
	ld hl, $c573
	call ClearBox
	jr .asm_48201
.asm_481f1
	ld a, [$d479]
	bit 0, a
	jr nz, .asm_48201
.asm_481f8
	ld hl, $c573
	ld de, $4202
	call PlaceString
.asm_48201
	ret
; 48202 (12:4202)

INCBIN "baserom.gbc",$48202,$4820d - $48202

; known jump sources: 48161 (12:4161)
Function4820d: ; 4820d (12:420d)
	call Function1bee
	ld hl, $cfa9
	ld a, [hl]
	push af
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr z, .asm_4821f
	pop af
	inc a
	push af
.asm_4821f
	pop af
	cp $1
	jr z, asm_4828d
	cp $2
	jp z, Function4876f
	cp $3
	jp z, Function48304
	cp $4
	jp z, Function488d3
	ld a, $2
	call Function1ff8
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr z, .asm_4825c
	jr .asm_4825c
; 48241 (12:4241)

INCBIN "baserom.gbc",$48241,$4825c - $48241
.asm_4825c
	call WhiteBGMap
	call Function48d30
	pop bc
	call ClearTileMap
	ld b, $8
	call GetSGBLayout
	ld hl, $d479
	set 1, [hl]
	xor a
	ret

; known jump sources: 48177 (12:4177)
Function48272: ; 48272 (12:4272)
	jp Function4840c
; 48275 (12:4275)

INCBIN "baserom.gbc",$48275,$48283 - $48275

; known jump sources: 4828d (12:428d), 48304 (12:4304), 4840f (12:440f), 4876f (12:476f), 488d3 (12:48d3)
Function48283: ; 48283 (12:4283)
	ld bc, $212
	ld hl, $c5cd
	call ClearBox
	ret

; known jump sources: 48222 (12:4222)
asm_4828d: ; 4828d (12:428d)
	call Function48283
	ld hl, $c5e1
	ld de, $44b1
	call PlaceString
	ld hl, $44f1
	call LoadMenuDataHeader
	call Function4873c
	ld hl, $c4d3
	ld b, $4
	ld c, $7
	call Function48cdc
	ld hl, $c4fd
	ld de, $44fb
	call PlaceString
	ld hl, $c525
	ld de, $44ff
	call PlaceString
	call WaitBGMap
	ld a, [PlayerGender] ; $d472
	inc a
	ld [$cf88], a
	call Function1bc9
	call PlayClickSFX
	call Function1c07
	bit 0, a
	jp z, Function4840c
	ld hl, $cfa9
	ld a, [hl]
	ld hl, $44fb
	cp $1
	jr z, .asm_482ed
.asm_482e1
	ld a, [hli]
	cp $50
	jr nz, .asm_482e1
	ld a, $1
	ld [PlayerGender], a ; $d472
	jr .asm_482f1
.asm_482ed
	xor a
	ld [PlayerGender], a ; $d472
.asm_482f1
	ld d, h
	ld e, l
	ld hl, $c4fb
	call PlaceString
	ld a, [$d003]
	set 0, a
	ld [$d003], a
	jp Function4840c

; known jump sources: 4822b (12:422b)
Function48304: ; 48304 (12:4304)
	call Function48283
	ld hl, $c5e1
	ld de, $44cf
	call PlaceString
	ld hl, $4504
	call LoadMenuDataHeader
	ld hl, $4513
	call LoadMenuDataHeader
	ld hl, $c4aa
	ld b, $c
	ld c, $8
	call Function48cdc
	ld a, [$cf88]
	ld b, a
	ld a, [$d0e4]
	ld c, a
	push bc
	ld a, [$d474]
	dec a
	cp $29
	jr c, .asm_4833f
	sub $29
	inc a
	ld [$cf88], a
	ld a, $29
.asm_4833f
	ld [$d0e4], a
	callba Function104148
.asm_48348
	call Function350c
	ld de, $629
	call Function48383
	jr c, .asm_48348
	ld d, a
	pop bc
	ld a, b
	ld [$cf88], a
	ld a, c
	ld [$d0e4], a
	ld a, d
	push af
	call Function1c07
	call Function1c07
	pop af
	ld a, [hJoyPressed] ; $ff00+$a7
	bit 0, a
	jr z, .asm_48377
	call Function483bb
	ld a, [$d003]
	set 2, a
	ld [$d003], a
.asm_48377
	call Function48187
	callba Function104148
	jp Function4840c

; known jump sources: 4834e (12:434e)
Function48383: ; 48383 (12:4383)
	push bc
	push af
	bit 5, a
	jr nz, .asm_48390
	bit 4, a
	jr nz, .asm_4839f
	and a
	jr .asm_483b7
.asm_48390
	ld a, [$d0e4]
	sub d
	ld [$d0e4], a
	jr nc, .asm_483af
	xor a
	ld [$d0e4], a
	jr .asm_483af
.asm_4839f
	ld a, [$d0e4]
	add d
	ld [$d0e4], a
	cp e
	jr c, .asm_483af
	ld a, e
	ld [$d0e4], a
	jr .asm_483af
.asm_483af
	ld hl, $cfa9
	ld a, [hl]
	ld [$cf88], a
	scf
.asm_483b7
	pop bc
	ld a, b
	pop bc
	ret

; known jump sources: 4836c (12:436c)
Function483bb: ; 483bb (12:43bb)
	ld hl, $cf77
	ld a, [hl]
	inc a
	ld [$d474], a
	dec a
	ld b, a
	ld hl, $455b
.asm_483c8
	and a
	jr z, .asm_483d5
.asm_483cb
	ld a, [hli]
	cp $50
	jr nz, .asm_483cb
	ld a, b
	dec a
	ld b, a
	jr .asm_483c8
.asm_483d5
	ld d, h
	ld e, l
	ld b, $2
	ld c, $8
	ld hl, $c537
	call ClearBox
	ld hl, $c54b
	call PlaceString
	ret
; 483e8 (12:43e8)

INCBIN "baserom.gbc",$483e8,$4840c - $483e8

; known jump sources: 48272 (12:4272), 482d3 (12:42d3), 48301 (12:4301), 48380 (12:4380), 487e9 (12:47e9), 488e2 (12:48e2), 489e7 (12:49e7)
Function4840c: ; 4840c (12:440c)
	call Function48187
	call Function48283
	ld hl, $c5e1
	ld de, $4275
	call PlaceString
	call Function486bf
	pop bc
	ld hl, $cfa9
	ld [hl], b
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr nz, .asm_48437
	ld b, $9
	ld c, $1
	ld hl, $c4f1
	call ClearBox
	jp Function48157
.asm_48437
	ld b, $7
	ld c, $1
	ld hl, $c519
	call ClearBox
	jp Function48157

; known jump sources: 489f0 (12:49f0), 489fb (12:49fb), 48a04 (12:4a04), 48a16 (12:4a16), 48a1f (12:4a1f), 48a2a (12:4a2a), 48a33 (12:4a33)
Function48444: ; 48444 (12:4444)
	push bc
	push af
	push de
	push hl
	ld hl, $445d
.asm_4844b
	and a
	jr z, .asm_48453
	inc hl
	inc hl
	dec a
	jr .asm_4844b
.asm_48453
	ld d, h
	ld e, l
	pop hl
	call PlaceString
	pop de
	pop af
	pop bc
	ret
; 4845d (12:445d)

INCBIN "baserom.gbc",$4845d,$48689 - $4845d

; known jump sources: 48085 (12:4085)
Function48689: ; 48689 (12:4689)
	ld c, $7
	call DelayFrames
	ld b, $1
	call Function4930f
	call WhiteBGMap
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld b, $4
	ld c, $14
	call ClearBox
	ld hl, $c4c8
	ld a, $c
	ld [hl], a
	ld bc, $13
	add hl, bc
	ld [hl], a
	ld de, $4471
	ld hl, $c4c9
	call PlaceString
	ld hl, $c4f0
	ld b, $8
	ld c, $12
	call Function48cdc
	ret

; known jump sources: 4805a (12:405a), 4841b (12:441b)
Function486bf: ; 486bf (12:46bf)
	ld hl, $cfa1
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr nz, .asm_486ce
	ld a, $4
	ld [hli], a
	jr .asm_486d1
.asm_486ce
	ld a, $6
	ld [hli], a
.asm_486d1
	ld a, $1
	ld [hli], a
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr nz, .asm_486e7
	call Function48725
	ld a, $4
	jr nc, .asm_486e4
	ld a, $5
.asm_486e4
	ld [hli], a
	jr .asm_486fb
.asm_486e7
	ld a, [$d479]
	bit 1, a
	jr nz, .asm_486f8
	call Function48725
	jr c, .asm_486f8
	ld a, $3
	ld [hli], a
	jr .asm_486fb
.asm_486f8
	ld a, $4
	ld [hli], a
.asm_486fb
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $40
	add $80
	push af
	ld a, [DefaultFlypoint] ; $d002
	bit 6, a
	jr z, .asm_4871a
	pop af
	add $2
	push af
.asm_4871a
	pop af
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ret

; known jump sources: 48192 (12:4192), 486db (12:46db), 486ee (12:46ee)
Function48725: ; 48725 (12:4725)
	ld a, [$d003]
	bit 0, a
	jr z, .asm_4873a
	bit 1, a
	jr z, .asm_4873a
	bit 2, a
	jr z, .asm_4873a
	bit 3, a
	jr z, .asm_4873a
	scf
	ret
.asm_4873a
	and a
	ret

; known jump sources: 4829f (12:429f), 48a40 (12:4a40)
Function4873c: ; 4873c (12:473c)
	ld hl, $cfa1
	ld a, $4
	ld [hli], a
	ld a, $c
	ld [hli], a
	ld a, $2
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $2
	ld [hli], a
	ld a, [PlayerGender] ; $d472
	and a
	jr z, .asm_48764
	ld a, $2
	jr .asm_48766
.asm_48764
	ld a, $1
.asm_48766
	ld [hli], a
	ld a, $1
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ret

; known jump sources: 48226 (12:4226)
Function4876f: ; 4876f (12:476f)
	call Function48283
	ld hl, $c5e1
	ld de, $44be
	call PlaceString
	ld hl, $4509
	call LoadMenuDataHeader
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	ld hl, $c50e
	ld b, $1
	ld c, $8
	call Function48cdc
	call WaitBGMap
	ld a, [$d473]
	and a
	jr z, .asm_487ab
	cp $64
	jr z, .asm_487b2
	ld hl, $c510
	ld [hl], $10
	ld hl, $c538
	ld [hl], $11
	jr .asm_487b7
.asm_487ab
	ld hl, $c510
	ld [hl], $10
	jr .asm_487b7
.asm_487b2
	ld hl, $c538
	ld [hl], $11
.asm_487b7
	ld hl, $c523
	call Function487ec
	ld c, $a
	call DelayFrames
	ld a, [$d473]
	push af
.asm_487c6
	call Functiona57
	call Function4880e
	jr nc, .asm_487c6
	ld a, $1
	call Function1ff8
	pop bc
	jr nz, .asm_487da
	ld a, b
	ld [$d473], a
.asm_487da
	ld a, [$d473]
	call Function1c07
	ld hl, $c523
	call Function487ec
	pop af
	ld [$FF00+$aa], a
	jp Function4840c

; known jump sources: 48116 (12:4116), 487ba (12:47ba), 487e3 (12:47e3), 488aa (12:48aa)
Function487ec: ; 487ec (12:47ec)
	push hl
	ld de, $d473
	call Function487ff
	pop hl
	inc hl
	inc hl
	inc hl
	inc hl
	ld de, $480d
	call PlaceString
	ret

; known jump sources: 487f0 (12:47f0)
Function487ff: ; 487ff (12:47ff)
	push hl
	ld a, $7f
	ld [hli], a
	ld [hl], a
	pop hl
	ld b, $81
	ld c, $3
	call PrintNum
	ret
; 4880d (12:480d)

INCBIN "baserom.gbc",$4880d,$4880e - $4880d

; known jump sources: 487c9 (12:47c9)
Function4880e: ; 4880e (12:480e)
	ld a, [hJoyPressed] ; $ff00+$a7
	and $1
	jp nz, Function488b9
	ld a, [hJoyPressed] ; $ff00+$a7
	and $2
	jp nz, Function488b4
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_48843
	ld a, [hl]
	and $80
	jr nz, .asm_48838
	ld a, [hl]
	and $20
	jr nz, .asm_4884f
	ld a, [hl]
	and $10
	jr nz, .asm_4885f
	call DelayFrame
	and a
	ret
.asm_48838
	ld hl, $d473
	ld a, [hl]
	and a
	jr z, .asm_48840
	dec a
.asm_48840
	ld [hl], a
	jr .asm_4886f
.asm_48843
	ld hl, $d473
	ld a, [hl]
	cp $64
	jr nc, .asm_4884c
	inc a
.asm_4884c
	ld [hl], a
	jr .asm_4886f
.asm_4884f
	ld a, [$d473]
	cp $5b
	jr c, .asm_48858
	ld a, $5a
.asm_48858
	add $a
	ld [$d473], a
	jr .asm_4886f
.asm_4885f
	ld a, [$d473]
	cp $a
	jr nc, .asm_48868
	ld a, $a
.asm_48868
	sub $a
	ld [$d473], a
	jr .asm_4886f
.asm_4886f
	ld a, [$d473]
	and a
	jr z, .asm_48887
	cp $64
	jr z, .asm_48898
	jr z, .asm_488a7
	ld hl, $c510
	ld [hl], $10
	ld hl, $c538
	ld [hl], $11
	jr .asm_488a7
.asm_48887
	ld hl, $c50e
	ld b, $1
	ld c, $8
	call Function48cdc
	ld hl, $c510
	ld [hl], $10
	jr .asm_488a7
.asm_48898
	ld hl, $c50e
	ld b, $1
	ld c, $8
	call Function48cdc
	ld hl, $c538
	ld [hl], $11
.asm_488a7
	ld hl, $c523
	call Function487ec
	call WaitBGMap
	ld a, $1
	and a
	ret

; known jump sources: 48819 (12:4819)
Function488b4: ; 488b4 (12:48b4)
	ld a, $0
	and a
	scf
	ret

; known jump sources: 48812 (12:4812)
Function488b9: ; 488b9 (12:48b9)
	ld a, [$d003]
	set 1, a
	ld [$d003], a
	scf
	ret
; 488c3 (12:48c3)

INCBIN "baserom.gbc",$488c3,$488d3 - $488c3

; known jump sources: 48230 (12:4230)
Function488d3: ; 488d3 (12:48d3)
	call Function48283
	ld hl, $c5e1
	ld de, $44e2
	call PlaceString
	call Function48a3a
	jp c, Function4840c
	ld hl, $450e
	call LoadMenuDataHeader
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	ld hl, $c55e
	ld b, $1
	ld c, $8
	call Function48cdc
	ld a, [$d475]
	and $f
	ld d, $0
	ld hl, $c573
	call Function489ea
	call WaitBGMap
	ld a, [$d475]
	ld b, a
	ld a, [$d476]
	ld c, a
	ld a, [$d477]
	ld d, a
	ld a, [$d478]
	ld e, a
	push de
	push bc
	ld d, $0
	ld b, $0

; known jump sources: 48999 (12:4999)
asm_48922: ; 48922 (12:4922)
	push bc
	call Functiona57
	ld a, [hJoyDown] ; $ff00+$a8
	and a
	jp z, Function4896e
	bit 0, a
	jp nz, Function4896e
	bit 1, a
	jp nz, Function4896e
	ld a, [DefaultFlypoint] ; $d002
	and $cf
	res 7, a
	ld [DefaultFlypoint], a ; $d002
	pop bc
	inc b
	ld a, b
	cp $5
	push bc
	jr c, .asm_4894c
	pop bc
	ld b, $4
	push bc
.asm_4894c
	pop bc
	push bc
	ld a, b
	cp $4
	jr nz, asm_48972
	ld c, $a
	call DelayFrames
	jr asm_48972
; 4895a (12:495a)

INCBIN "baserom.gbc",$4895a,$4896e - $4895a

; known jump sources: 48929 (12:4929), 4892e (12:492e), 48933 (12:4933)
Function4896e: ; 4896e (12:496e)
	pop bc
	ld b, $0
	push bc

; known jump sources: 48951 (12:4951), 48958 (12:4958)
asm_48972: ; 48972 (12:4972)
	call Function48ab5
	push af
	cp $f0
	jr z, .asm_48994
	cp $f
	jr nz, .asm_48988
	ld a, [DefaultFlypoint] ; $d002
	set 7, a
	and $cf
	ld [DefaultFlypoint], a ; $d002
.asm_48988
	ld hl, $c573
	ld b, $0
	ld c, d
	add hl, bc
	ld b, $3
	call Function48c11
.asm_48994
	call WaitBGMap
	pop af
	pop bc
	jr nc, asm_48922
	jr nz, .asm_489b1
	pop bc
	ld a, b
	ld [$d475], a
	ld a, c
	ld [$d476], a
	pop bc
	ld a, b
	ld [$d477], a
	ld a, c
	ld [$d478], a
	jr .asm_489c5
.asm_489b1
	push af
	ld a, [$d479]
	set 0, a
	ld [$d479], a
	ld a, [$d003]
	set 3, a
	ld [$d003], a
	pop af
	pop bc
	pop bc
.asm_489c5
	push af
	push bc
	push de
	push hl
	ld a, $1
	call Function1ff8
	pop hl
	pop de
	pop bc
	pop af
	call Function1c07
	ld hl, $c573
	call Function489ea
	ld hl, $c55f
	ld bc, $108
	call ClearBox
	pop af
	ld [$FF00+$aa], a
	jp Function4840c

; known jump sources: 4812e (12:412e), 48906 (12:4906), 489d8 (12:49d8), 48b47 (12:4b47), 48c04 (12:4c04)
Function489ea: ; 489ea (12:49ea)
	push de
	ld a, [$d475]
	and $f
	call Function48444
	ld a, [$d476]
	and $f0
	swap a
	inc hl
	call Function48444
	ld a, [$d476]
	and $f
	inc hl
	call Function48444
	inc hl
	ld de, $4a38
	call PlaceString
	ld a, [$d477]
	and $f0
	swap a
	inc hl
	call Function48444
	ld a, [$d477]
	and $f
	inc hl
	call Function48444
	ld a, [$d478]
	and $f0
	swap a
	inc hl
	call Function48444
	ld a, [$d478]
	and $f
	inc hl
	call Function48444
	pop de
	ret
; 48a38 (12:4a38)

INCBIN "baserom.gbc",$48a38,$48a3a - $48a38

; known jump sources: 488df (12:48df)
Function48a3a: ; 48a3a (12:4a3a)
	ld hl, $4a9c
	call LoadMenuDataHeader
	call Function4873c
	ld a, $a
	ld [$cfa1], a
	ld a, $b
	ld [$cfa2], a
	ld a, $1
	ld [$cfa9], a
	ld hl, $c54a
	ld b, $4
	ld c, $8
	call Function48cdc
	ld hl, $c574
	ld de, $4aa1
	call PlaceString
	call Function1bc9
	push af
	call PlayClickSFX
	call Function1c07
	pop af
	bit 1, a
	jp nz, Function48a9a
	ld a, [$cfa9]
	cp $1
	jr z, .asm_48a98
	ld a, [$d003]
	set 3, a
	ld [$d003], a
	ld a, [$d479]
	res 0, a
	ld [$d479], a
	xor a
	ld bc, $4
	ld hl, $d475
	call ByteFill
	jr Function48a9a
.asm_48a98
	and a
	ret

; known jump sources: 48a72 (12:4a72), 48a96 (12:4a96)
Function48a9a: ; 48a9a (12:4a9a)
	scf
	ret
; 48a9c (12:4a9c)

INCBIN "baserom.gbc",$48a9c,$48ab5 - $48a9c

; known jump sources: 48972 (12:4972)
Function48ab5: ; 48ab5 (12:4ab5)
	ld a, [hJoyPressed] ; $ff00+$a7
	and $1
	jp nz, Function48c0f
	ld a, [hJoyPressed] ; $ff00+$a7
	and $2
	jp nz, Function48c0d
	ld a, d
	and a
	jr z, .asm_48adf
	cp $1
	jr z, .asm_48ae7
	cp $2
	jr z, .asm_48af1
	cp $3
	jr z, .asm_48af9
	cp $4
	jr z, .asm_48b03
	cp $5
	jr z, .asm_48b0b
	cp $6
	jr .asm_48b15
.asm_48adf
	ld hl, $d475
	ld a, [hl]
	and $f
	jr .asm_48b1d
.asm_48ae7
	ld hl, $d476
	ld a, [hl]
	swap a
	or $f0
	jr .asm_48b1d
.asm_48af1
	ld hl, $d476
	ld a, [hl]
	and $f
	jr .asm_48b1d
.asm_48af9
	ld hl, $d477
	ld a, [hl]
	swap a
	or $f0
	jr .asm_48b1d
.asm_48b03
	ld hl, $d477
	ld a, [hl]
	and $f
	jr .asm_48b1d
.asm_48b0b
	ld hl, $d478
	ld a, [hl]
	swap a
	or $f0
	jr .asm_48b1d
.asm_48b15
	ld hl, $d478
	ld a, [hl]
	and $f
	jr .asm_48b1d
.asm_48b1d
	push hl
	push af
	ld e, $0
	ld hl, $c573
	ld a, d
.asm_48b25
	and a
	jr z, .asm_48b2c
	inc e
	dec a
	jr .asm_48b25
.asm_48b2c
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_48b8d
	ld a, [hl]
	and $80
	jr nz, .asm_48b55
	ld a, [hl]
	and $20
	jp nz, Function48bd7
	ld a, [hl]
	and $10
	jr nz, .asm_48b9d
	ld hl, $c573
	call Function489ea
	ld a, [DefaultFlypoint] ; $d002
	bit 7, a
	jr nz, .asm_48b51
.asm_48b51
	pop bc
	pop bc
	and a
	ret
.asm_48b55
	pop af
	ld b, a
	and $f
	and a
	ld a, b
	jr nz, .asm_48b61
	and $f0
	add $a
.asm_48b61
	dec a
.asm_48b62
	push de
	push af
	ld hl, $c55e
	ld b, $1
	ld c, $8
	call Function48cdc
	pop af
	pop de
	ld hl, $c573
	ld b, a
	ld a, d
	cp $3
	jr c, .asm_48b7a
	inc hl
.asm_48b7a
	ld a, b
	pop hl
	bit 7, a
	jr z, .asm_48b85
	call Function48c4d
	jr .asm_48b88
.asm_48b85
	call Function48c5a
.asm_48b88
	ld a, $f0
	jp Function48c00
.asm_48b8d
	pop af
	ld b, a
	and $f
	cp $9
	ld a, b
	jr c, .asm_48b9a
	and $f0
	add $ff
.asm_48b9a
	inc a
	jr .asm_48b62
.asm_48b9d
	push de
	ld hl, $c55e
	ld b, $1
	ld c, $8
	call Function48cdc
	pop de
	ld a, d
	cp $6
	jr nc, .asm_48baf
	inc d
.asm_48baf
	pop af
	pop hl
	ld b, a
	ld a, d
	cp $6
	ld a, b
	jr z, .asm_48bc4
	bit 7, a
	jr nz, .asm_48bc4
	inc hl
	ld a, [hl]
	swap a
	and $f
	jr asm_48bc7
.asm_48bc4
	ld a, [hl]
	and $f

; known jump sources: 48bc2 (12:4bc2), 48bf6 (12:4bf6), 48bfe (12:4bfe)
asm_48bc7: ; 48bc7 (12:4bc7)
	ld hl, $c573
	push af
	ld a, d
	cp $3
	pop bc
	ld a, b
	jr c, .asm_48bd3
	inc hl
.asm_48bd3
	ld a, $f
	jr Function48c00

; known jump sources: 48b3c (12:4b3c)
Function48bd7: ; 48bd7 (12:4bd7)
	push de
	ld hl, $c55e
	ld b, $1
	ld c, $8
	call Function48cdc
	pop de
	ld a, d
	and a
	pop af
	pop hl
	ld b, a
	ld a, d
	and a
	ld a, b
	jr z, .asm_48bf3
	bit 7, a
	jr z, .asm_48bf8
	dec d
	dec hl
.asm_48bf3
	ld a, [hl]
	and $f
	jr asm_48bc7
.asm_48bf8
	dec d
	ld a, [hl]
	swap a
	and $f
	jr asm_48bc7

; known jump sources: 48b8a (12:4b8a), 48bd5 (12:4bd5)
Function48c00: ; 48c00 (12:4c00)
	push af
	ld hl, $c573
	call Function489ea
	ld a, $1
	and a
	pop bc
	ld a, b
	ret

; known jump sources: 48ac0 (12:4ac0)
Function48c0d: ; 48c0d (12:4c0d)
	xor a
	and a

; known jump sources: 48ab9 (12:4ab9)
Function48c0f: ; 48c0f (12:4c0f)
	scf
	ret

; known jump sources: 48991 (12:4991)
Function48c11: ; 48c11 (12:4c11)
	ld a, [DefaultFlypoint] ; $d002
	bit 7, a
	jr z, .asm_48c20
	ld a, d
	cp $3
	jr c, .asm_48c1e
	inc hl
.asm_48c1e
	ld [hl], $7f
.asm_48c20
	ld a, [DefaultFlypoint] ; $d002
	swap a
	and $3
	inc a
	cp b
	jr nz, .asm_48c40
	ld a, [DefaultFlypoint] ; $d002
	bit 7, a
	jr z, .asm_48c3a
	res 7, a
	ld [DefaultFlypoint], a ; $d002
	xor a
	jr .asm_48c40
.asm_48c3a
	set 7, a
	ld [DefaultFlypoint], a ; $d002
	xor a
.asm_48c40
	swap a
	ld b, a
	ld a, [DefaultFlypoint] ; $d002
	and $cf
	or b
	ld [DefaultFlypoint], a ; $d002
	ret

; known jump sources: 48b80 (12:4b80)
Function48c4d: ; 48c4d (12:4c4d)
	swap a
	and $f0
	push af
	ld a, [hl]
	and $f
	ld [hl], a
	pop af
	or [hl]
	ld [hl], a
	ret

; known jump sources: 48b85 (12:4b85)
Function48c5a: ; 48c5a (12:4c5a)
	push af
	ld a, [hl]
	and $f0
	ld [hl], a
	pop af
	or [hl]
	ld [hl], a
	ret

Function48c63: ; 48c63
	ld a, $50
	ld [de], a
	ld a, c
	cp $30
	jr nc, .asm_48c8c
	and a
	jr z, .asm_48c8c
	dec c
	push de
	ld h, d
	ld l, e
	ld a, $50
	ld b, $7
.asm_48c76
	ld [hli], a
	dec b
	jr nz, .asm_48c76
	ld hl, $455b
	ld a, c
	call GetNthString
.asm_48c81
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	cp $50
	jr nz, .asm_48c81
	and a
	pop de
	ret

.asm_48c8c
	scf
	ret
; 48c8e

INCBIN "baserom.gbc",$48c8e,$48cda - $48c8e

; no known jump sources
Function48cda: ; 48cda (12:4cda)
	ld h, d
	ld l, e

; known jump sources: 480cb (12:40cb), 482a9 (12:42a9), 48323 (12:4323), 486bb (12:46bb), 4878f (12:478f), 4888e (12:488e), 4889f (12:489f), 488f9 (12:48f9), 48a59 (12:4a59), 48b6b (12:4b6b), 48ba5 (12:4ba5), 48bdf (12:4bdf), 49f25 (12:5f25), 4a150 (12:6150), 4a2b3 (12:62b3), 4a4df (12:64df)
Function48cdc: ; 48cdc (12:4cdc)
	push bc
	push hl
	call Function48cfd
	pop hl
	pop bc
	ld de, $939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	ld a, $0
.asm_48ced
	push bc
	push hl
.asm_48cef
	ld [hli], a
	dec c
	jr nz, .asm_48cef
	pop hl
	ld de, $14
	add hl, de
	pop bc
	dec b
	jr nz, .asm_48ced
	ret

; known jump sources: 48cde (12:4cde)
Function48cfd: ; 48cfd (12:4cfd)
	push hl
	ld a, $4
	ld [hli], a
	inc a
	call Function48d2a
	inc a
	ld [hl], a
	pop hl
	ld de, $14
	add hl, de
.asm_48d0c
	push hl
	ld a, $7
	ld [hli], a
	ld a, $7f
	call Function48d2a
	ld [hl], $8
	pop hl
	ld de, $14
	add hl, de
	dec b
	jr nz, .asm_48d0c
	ld a, $9
	ld [hli], a
	ld a, $a
	call Function48d2a
	ld [hl], $b
	ret

; known jump sources: 48d02 (12:4d02), 48d12 (12:4d12), 48d24 (12:4d24)
Function48d2a: ; 48d2a (12:4d2a)
	ld d, c
.asm_48d2b
	ld [hli], a
	dec d
	jr nz, .asm_48d2b
	ret

; known jump sources: 4817d (12:417d), 4825f (12:425f)
Function48d30: ; 48d30 (12:4d30)
	ld hl, $d475
	call Function48d4a
	ld hl, $d477
	call Function48d4a
	ret

; known jump sources: 48042 (12:4042)
Function48d3d: ; 48d3d (12:4d3d)
	ld hl, $d475
	call Function48d94
	ld hl, $d477
	call Function48d94
	ret

; known jump sources: 48d33 (12:4d33), 48d39 (12:4d39)
Function48d4a: ; 48d4a (12:4d4a)
	inc hl
	ld a, [hl]
	ld b, a
	and $f
	ld c, a
	srl b
	srl b
	srl b
	srl b
	push bc
	ld c, $a
	ld a, b
	call SimpleMultiply
	pop bc
	add c
	ld [hld], a
	xor a
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld [$FF00+$b5], a
	ld a, [hl]
	srl a
	srl a
	srl a
	srl a
	ld c, $a
	call SimpleMultiply
	ld b, a
	ld a, [hli]
	and $f
	add b
	ld [$FF00+$b6], a
	ld a, $64
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	call Multiply
	ld a, [$FF00+$b5]
	ld b, a
	ld a, [$FF00+$b6]
	ld c, a
	ld e, [hl]
	add e
	ld c, a
	ld a, b
	adc $0
	ld b, a
	ld a, c
	ld [hld], a
	ld [hl], b
	ret

; known jump sources: 48d40 (12:4d40), 48d46 (12:4d46)
Function48d94: ; 48d94 (12:4d94)
	xor a
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld a, [hli]
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	ld a, [hl]
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld a, $64
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld b, $2
	call Divide
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	ld c, $a
	call SimpleDivide
	sla b
	sla b
	sla b
	sla b
	or b
	ld [hld], a
	ld a, [$FF00+$b6]
	ld c, $a
	call SimpleDivide
	sla b
	sla b
	sla b
	sla b
	or b
	ld [hl], a
	ret

; no known jump sources
Function48dcb: ; 48dcb (12:4dcb)
	call Function48e14
	call Function48e47
	call Function48e64
	call Function3200
	call Function32f9
	ld hl, $4e0f
	call PrintText
	ld hl, $4dfc
	call LoadMenuDataHeader
	call Function3200
	call Function1d81
	call Function1c17
	ld a, [$cfa9]
	dec a
	ld [PlayerGender], a ; $d472
	ld c, $a
	call DelayFrames
	ret
; 48dfc (12:4dfc)

INCBIN "baserom.gbc",$48dfc,$48e14 - $48dfc

; known jump sources: 48dcb (12:4dcb)
Function48e14: ; 48e14 (12:4e14)
	ld a, $10
	ld [MusicFade], a ; $c2a7
	ld a, $0
	ld [MusicFadeIDLo], a ; $c2a9
	ld a, $0
	ld [MusicFadeIDHi], a ; $c2aa
	ld c, $8
	call DelayFrames
	call WhiteBGMap
	call Function48000
	call Functione5f
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $0
	call ByteFill
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	xor a
	call ByteFill
	ret

; known jump sources: 48dce (12:4dce)
Function48e47: ; 48e47 (12:4e47)
	ld hl, $4e5c
	ld de, Unkn1Pals ; $d000
	ld bc, $8
	ld a, $5
	call FarCopyWRAM
	callba Function96a4
	ret
; 48e5c (12:4e5c)

INCBIN "baserom.gbc",$48e5c,$48e64 - $48e5c

; known jump sources: 48dd1 (12:4dd1)
Function48e64: ; 48e64 (12:4e64)
	ld de, $4e71
	ld hl, $9000
	ld bc, $1201
	call Get2bpp
	ret
; 48e71 (12:4e71)

INCBIN "baserom.gbc",$48e71,$48e81 - $48e71


Function48e81: ; 48e81
	ld hl, $4e93
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	ld hl, $9500
	ld bc, $120f
	call Request2bpp
	ret
; 48e93

INCBIN "baserom.gbc",$48e93,$48e9b - $48e93

PackFGFX:
INCBIN "gfx/misc/pack_f.2bpp"

Function4925b: ; 4925b
	call FadeToMenu
	call WhiteBGMap
	call Functionfdb
	call DelayFrame
	ld b, $14
	call GetSGBLayout
	xor a
	ld [$d142], a
	call Function492a5
	ld [$d265], a
	ld [$d262], a
	call GetMoveName
	call CopyName1
	callba Function2c7fb
	jr c, .asm_4929c
	jr .asm_49291

.asm_49289
	callba Function2c80a
	jr c, .asm_4929c

.asm_49291
	call Function492b9
	jr nc, .asm_49289
	xor a
	ld [ScriptVar], a
	jr .asm_492a1

.asm_4929c
	ld a, $ff
	ld [ScriptVar], a

.asm_492a1
	call Function2b3c
	ret
; 492a5

Function492a5: ; 492a5
	ld a, [ScriptVar]
	cp $1
	jr z, .asm_492b3
	cp $2
	jr z, .asm_492b6
	ld a, $3a
	ret

.asm_492b3
	ld a, $35
	ret

.asm_492b6
	ld a, $55
	ret
; 492b9

Function492b9: ; 492b9
	ld hl, $530a
	call LoadMenuDataHeader
	ld a, $e
	call Predef
	push bc
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call GetNick
	pop bc
	ld a, c
	and a
	jr nz, .asm_492e5
	push de
	ld de, SFX_WRONG
	call PlaySFX
	pop de
	ld a, $b
	ld hl, $48ce
	call FarPrintText
	jr .asm_49300

.asm_492e5
	callab Functionf9ea
	jr c, .asm_49300
	ld a, $0
	call Predef
	ld a, b
	and a
	jr z, .asm_49300
	ld c, $5
	callab ChangeHappiness
	jr .asm_49305

.asm_49300
	call Function1c07
	and a
	ret

.asm_49305
	call Function1c07
	scf
	ret
; 4930a

INCBIN "baserom.gbc",$4930a,$4930f - $4930a

; known jump sources: 480a0 (12:40a0), 48690 (12:4690)
Function4930f: ; 4930f (12:530f)
	ld a, b
	cp $ff
	jr nz, .asm_49317
	ld a, [SGBPredef] ; $cd98
.asm_49317
	push af
	callba Function9673
	pop af
	ld l, a
	ld h, $0
	add hl, hl
	ld de, $5330
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $532f
	push de
	jp [hl]
	ret
; 49330 (12:5330)

INCBIN "baserom.gbc",$49330,$49336 - $49330

Function49336: ; 49336
.asm_49336
	push bc
	push hl
.asm_49338
	ld [hli], a
	dec c
	jr nz, .asm_49338
	pop hl
	ld bc, $0014
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_49336
	ret
; 49346


; known jump sources: 49371 (12:5371)
Function49346: ; 49346 (12:5346)
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	xor a
	call ByteFill
	ret

; known jump sources: 4936e (12:536e), 4a0af (12:60af)
Function49351: ; 49351 (12:5351)
	ld de, Unkn1Pals ; $d000
	ld hl, $53e1
	ld bc, $28
	ld a, $5
	call FarCopyWRAM
	ld de, $d038
	ld hl, $5418
	ld bc, $8
	ld a, $5
	call FarCopyWRAM
	ret

; known jump sources: 4a492 (12:6492)
Function4936e: ; 4936e (12:536e)
	call Function49351
	call Function49346
	call Function49384
	callba Function96b3
	callba Function96a4
	ret

; known jump sources: 49374 (12:5374)
Function49384: ; 49384 (12:5384)
	ld hl, AttrMap ; $cdd9
	ld bc, $401
	ld a, $1
	call Function49336
	ld bc, $201
	ld a, $2
	call Function49336
	ld bc, $601
	ld a, $3
	call Function49336
	ld hl, $cdda
	ld a, $1
	ld bc, $312
	call Function49336
	ld bc, $212
	ld a, $2
	call Function49336
	ld bc, $c12
	ld a, $3
	call Function49336
	ld hl, $cdec
	ld bc, $401
	ld a, $1
	call Function49336
	ld bc, $201
	ld a, $2
	call Function49336
	ld bc, $601
	ld a, $3
	call Function49336
	ld hl, $cec9
	ld bc, $78
	ld a, $7
	call ByteFill
	ret
; 493e1 (12:53e1)

INCBIN "baserom.gbc",$493e1,$49409 - $493e1


Function49409: ; 49409
	ld hl, $5418
	ld de, $d038
	ld bc, $0008
	ld a, $5
	call FarCopyWRAM
	ret
; 49418

INCBIN "baserom.gbc",$49418,$49420 - $49418

; no known jump sources
Function49420: ; 49420 (12:5420)
	ld hl, $56bd
	ld de, $d030
	ld bc, $8
	ld a, $5
	call FarCopyWRAM
	ret
; 4942f (12:542f)

INCBIN "baserom.gbc",$4942f,$494ac - $4942f

Function494ac: ; 494ac
	ld a, [$d199]
	cp $15
	jr z, .asm_494c9
	cp $16
	jr z, .asm_494ce
	cp $1d
	jr z, .asm_494d3
	cp $5
	jr z, .asm_494e1
	cp $1b
	jr z, .asm_494e6
	cp $d
	jr z, .asm_494eb
	jr .asm_494f0

.asm_494c9
	call Function494f2
	scf
	ret

.asm_494ce
	call Function49541
	scf
	ret

.asm_494d3
	ld a, [$d19a]
	and $7
	cp $3
	jr z, .asm_494f0
	call Function49590
	scf
	ret

.asm_494e1
	call Function495df
	scf
	ret

.asm_494e6
	call Function4962e
	scf
	ret

.asm_494eb
	call Function496c5
	scf
	ret

.asm_494f0
	and a
	ret
; 494f2

Function494f2: ; 494f2
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $5501
	ld bc, $0040
	call FarCopyWRAM
	ret
; 49501

INCBIN "baserom.gbc",$49501,$49541 - $49501

Function49541: ; 49541
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $5550
	ld bc, $0040
	call FarCopyWRAM
	ret
; 49550

INCBIN "baserom.gbc",$49550,$49590 - $49550

Function49590: ; 49590
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $559f
	ld bc, $0040
	call FarCopyWRAM
	ret
; 4959f

INCBIN "baserom.gbc",$4959f,$495df - $4959f

Function495df: ; 495df
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $55ee
	ld bc, $0040
	call FarCopyWRAM
	ret
; 495ee

INCBIN "baserom.gbc",$495ee,$4962e - $495ee

Function4962e: ; 4962e
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $563d
	ld bc, $0040
	call FarCopyWRAM
	ret
; 4963d

INCBIN "baserom.gbc",$4963d,$496c5 - $4963d

Function496c5: ; 496c5
	ld a, $5
	ld de, Unkn1Pals
	ld hl, $567d
	ld bc, $0040
	call FarCopyWRAM
	ld a, $5
	ld de, $d020
	ld hl, $56fe
	ld bc, $0008
	call FarCopyWRAM
	ld a, $5
	ld de, $d018
	ld hl, $56ad
	ld bc, $0008
	call FarCopyWRAM
	ld a, $5
	ld de, $d030
	ld hl, $56bd
	ld bc, $0008
	call FarCopyWRAM
	ret
; 496fe

INCBIN "baserom.gbc",$496fe,$49797 - $496fe

Function49797: ; 49797
	ld hl, AttrMap
	ld bc, $1002
	ld a, $4
	call Function49336
	ld a, $3
	ld [$cded], a
	ld [$cef1], a
	ld hl, $cddb
	ld bc, $0812
	ld a, $5
	call Function49336
	ld hl, $ce7b
	ld bc, $0812
	ld a, $6
	call Function49336
	ld hl, $cf19
	ld bc, $0214
	ld a, $4
	call Function49336
	ld a, $3
	ld bc, $0601
	ld hl, $cdf3
	call Function49336
	ld a, $3
	ld bc, $0601
	ld hl, $cdfe
	call Function49336
	ld a, $3
	ld bc, $0601
	ld hl, $ce93
	call Function49336
	ld a, $3
	ld bc, $0601
	ld hl, $ce9e
	call Function49336
	ld a, $2
	ld hl, $cf1b
	ld [hli], a
	ld a, $7
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld a, $2
	ld [hl], a
	ld hl, $cf2f
	ld a, $3
	ld bc, $0006
	call ByteFill
	ret
; 49811

Function49811: ; 49811
	ld hl, $5826
	ld de, $d010
	ld bc, $0030
	ld a, $5
	call FarCopyWRAM
	callba Function96a4
	ret
; 49826

INCBIN "baserom.gbc",$49826,$49856 - $49826

Function49856: ; 49856
	call Function49797
	ret
; 4985a

INCBIN "baserom.gbc",$4985a,$4989a - $4985a

Function4989a: ; 4989a
	call DelayFrame
	ld a, [VramState]
	push af
	xor a
	ld [VramState], a
	call Function49912
	ld de, $0750
	ld a, $2c
	call Function3b2a
	ld hl, $0003
	add hl, bc
	ld [hl], $84
	ld hl, $0002
	add hl, bc
	ld [hl], $1f
	ld hl, $000f
	add hl, bc
	ld a, $80
	ld [hl], a
	ld a, $a0
	ld [$cf64], a
	ld d, $0
.asm_498ca
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_498ee
	push bc
	call Function49bae
	inc d
	push de
	ld a, $90
	ld [$c3b5], a
	callba Function8cf7a
	call Function49935
	ld c, $2
	call DelayFrames
	pop de
	pop bc
	jr .asm_498ca

.asm_498ee
	pop af
	ld [VramState], a
	call Function498f9
	call Function49bf3
	ret
; 498f9

Function498f9: ; 498f9
	ld hl, $c402
	xor a
	ld c, $4
.asm_498ff
	ld [hli], a
	inc hl
	inc hl
	inc hl
	inc a
	dec c
	jr nz, .asm_498ff
	ld hl, $c410
	ld bc, $0090
	xor a
	call ByteFill
	ret
; 49912

Function49912: ; 49912
	callba Function8cf53
	ld de, $5962
	ld hl, VTiles1
	ld bc, $1204
	call Request2bpp
	ld de, $59a2
	ld hl, $8840
	ld bc, $1210
	call Request2bpp
	xor a
	ld [$cf63], a
	ret
; 49935

Function49935: ; 49935
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_4993e
	dec [hl]
	ret

.asm_4993e
	ld hl, $cf63
	set 7, [hl]
	ret
; 49944

INCBIN "baserom.gbc",$49944,$49962 - $49944

SpecialCelebiGFX:
INCBIN "gfx/special/celebi/leaf.2bpp"
INCBIN "gfx/special/celebi/1.2bpp"
INCBIN "gfx/special/celebi/2.2bpp"
INCBIN "gfx/special/celebi/3.2bpp"
INCBIN "gfx/special/celebi/4.2bpp"


; no known jump sources
Function49aa2: ; 49aa2 (12:5aa2)
	ld hl, $6
	add hl, bc
	ld a, [hl]
	push af
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $52
	jp nc, Function49b30
	ld hl, $5
	add hl, bc
	inc [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, a
	cp $3a
	jr c, .asm_49ac6
	jr z, .asm_49ac6
	sub $3
	ld [hl], a
.asm_49ac6
	ld hl, $e
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Function49b3b
	ld hl, $6
	add hl, bc
	ld [hl], a
	ld d, a
	ld hl, $4
	add hl, bc
	add [hl]
	cp $5c
	jr nc, .asm_49ae2
	cp $44
	jr nc, .asm_49b0d
.asm_49ae2
	pop af
	push af
	cp d
	jr nc, .asm_49af2
	ld hl, $4
	add hl, bc
	add [hl]
	cp $50
	jr c, .asm_49b05
	jr .asm_49afb
.asm_49af2
	ld hl, $4
	add hl, bc
	add [hl]
	cp $50
	jr nc, .asm_49b05
.asm_49afb
	ld hl, $5
	add hl, bc
	ld a, [hl]
	sub $2
	ld [hl], a
	jr .asm_49b0d
.asm_49b05
	ld hl, $5
	add hl, bc
	ld a, [hl]
	add $1
	ld [hl], a
.asm_49b0d
	pop af
	ld hl, $4
	add hl, bc
	add [hl]
	cp $50
	jr c, .asm_49b26
	cp $e6
	jr nc, .asm_49b26
	ld hl, $1
	add hl, bc
	ld a, $41
	call Function3b3c
	jr .asm_49b2f
.asm_49b26
	ld hl, $1
	add hl, bc
	ld a, $40
	call Function3b3c
.asm_49b2f
	ret

; known jump sources: 49aaf (12:5aaf)
Function49b30: ; 49b30 (12:5b30)
	pop af
	ld hl, $1
	add hl, bc
	ld a, $40
	call Function3b3c
	ret

; known jump sources: 49acc (12:5acc)
Function49b3b: ; 49b3b (12:5b3b)
	add $10
	and $3f
	cp $20
	jr nc, .asm_49b48
	call Function49b52
	ld a, h
	ret
.asm_49b48
	and $1f
	call Function49b52
	ld a, h
	xor $ff
	inc a
	ret

; known jump sources: 49b43 (12:5b43), 49b4a (12:5b4a)
Function49b52: ; 49b52 (12:5b52)
	ld e, a
	ld a, d
	ld d, $0
	ld hl, $5b6e
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $0
.asm_49b61
	srl a
	jr nc, .asm_49b66
	add hl, de
.asm_49b66
	sla e
	rl d
	and a
	jr nz, .asm_49b61
	ret
; 49b6e (12:5b6e)

INCBIN "baserom.gbc",$49b6e,$49bae - $49b6e

Function49bae: ; 49bae
	push hl
	push bc
	push de
	ld a, d
	ld d, $3
	ld e, d
	cp $0
	jr z, .asm_49bd0
	cp d
	jr z, .asm_49bd4
	call Function49bed
	cp d
	jr z, .asm_49bd8
	call Function49bed
	cp d
	jr z, .asm_49bdc
	call Function49bed
	cp d
	jr c, .asm_49be9
	jr .asm_49be5

.asm_49bd0
	ld a, $84
	jr .asm_49bde

.asm_49bd4
	ld a, $88
	jr .asm_49bde

.asm_49bd8
	ld a, $8c
	jr .asm_49bde

.asm_49bdc
	ld a, $90

.asm_49bde
	ld hl, $0003
	add hl, bc
	ld [hl], a
	jr .asm_49be9

.asm_49be5
	pop de
	ld d, $ff
	push de

.asm_49be9
	pop de
	pop bc
	pop hl
	ret
; 49bed

Function49bed: ; 49bed
	push af
	ld a, d
	add e
	ld d, a
	pop af
	ret
; 49bf3

Function49bf3: ; 49bf3
	ld a, $b
	ld [BattleType], a
	ret
; 49bf9

Function49bf9: ; 49bf9
	ld a, [$d0ee]
	bit 6, a
	jr z, .asm_49c07
	ld a, $1
	ld [ScriptVar], a
	jr .asm_49c0b

.asm_49c07
	xor a
	ld [ScriptVar], a

.asm_49c0b
	ret
; 49c0c

INCBIN "baserom.gbc",$49c0c,$49cdc - $49c0c

MainMenu: ; 49cdc
	xor a
	ld [$c2d7], a
	call Function49ed0
	ld b, $8
	call GetSGBLayout
	call Function32f9
	ld hl, GameTimerPause
	res 0, [hl]
	call Function49da4
	ld [$cf76], a
	call Function49e09
	ld hl, MenuDataHeader_0x49d14
	call LoadMenuDataHeader
	call Function49de4
	call Function1c17
	jr c, .quit
	call ClearTileMap
	ld a, [MenuSelection]
	ld hl, Label49d60
	rst JumpTable
	jr MainMenu

.quit
	ret
; 49d14

MenuDataHeader_0x49d14: ; 49d14
	db $40 ; flags
	db 00, 00 ; start coords
	db 07, 16 ; end coords
	dw MenuData2_0x49d1c
	db 1 ; default option
; 49d1c

MenuData2_0x49d1c: ; 49d1c
	db $80 ; flags
	db 0 ; items
	dw MainMenuItems
	dw Function1f79
	dw MainMenuText
; 49d20

MainMenuText: ; 49d24
	db "CONTINUE@"
	db "NEW GAME@"
	db "OPTION@"
	db "MYSTERY GIFT@"
	db "MOBILE@"
	db "MOBILE STUDIUM@"

Label49d60: ; 0x49d60
	dw MainMenu_Continue
	dw MainMenu_NewGame
	dw MainMenu_Options
	dw MainMenu_MysteryGift
	dw MainMenu_Mobile
	dw MainMenu_MobileStudium
; 0x49d6c

CONTINUE       EQU 0
NEW_GAME       EQU 1
OPTION         EQU 2
MYSTERY_GIFT   EQU 3
MOBILE         EQU 4
MOBILE_STUDIUM EQU 5

MainMenuItems:

NewGameMenu: ; 0x49d6c
	db 2
	db NEW_GAME
	db OPTION
	db $ff

ContinueMenu: ; 0x49d70
	db 3
	db CONTINUE
	db NEW_GAME
	db OPTION
	db $ff

MobileMysteryMenu: ; 0x49d75
	db 5
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MYSTERY_GIFT
	db MOBILE
	db $ff

MobileMenu: ; 0x49d7c
	db 4
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MOBILE
	db $ff

MobileStudiumMenu: ; 0x49d82
	db 5
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MOBILE
	db MOBILE_STUDIUM
	db $ff

MysteryMobileStudiumMenu: ; 0x49d89
	db 6
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MYSTERY_GIFT
	db MOBILE
	db MOBILE_STUDIUM
	db $ff

MysteryMenu: ; 0x49d91
	db 4
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MYSTERY_GIFT
	db $ff

MysteryStudiumMenu: ; 0x49d97
	db 5
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MYSTERY_GIFT
	db MOBILE_STUDIUM
	db $ff

StudiumMenu: ; 0x49d9e
	db 4
	db CONTINUE
	db NEW_GAME
	db OPTION
	db MOBILE_STUDIUM
	db $ff


Function49da4: ; 49da4
	nop
	nop
	nop
	ld a, [$cfcd]
	and a
	jr nz, .asm_49db0
	ld a, $0
	ret

.asm_49db0
	ld a, [hCGB]
	cp $1
	ld a, $1
	ret nz
	ld a, $0
	call GetSRAMBank
	ld a, [$abe5]
	cp $ff
	call CloseSRAM
	jr nz, .asm_49dd6
	ld a, [StatusFlags]
	bit 7, a
	ld a, $1
	jr z, .asm_49dd1
	jr .asm_49dd1

.asm_49dd1
	jr .asm_49dd3

.asm_49dd3
	ld a, $1
	ret

.asm_49dd6
	ld a, [StatusFlags]
	bit 7, a
	jr z, .asm_49ddf
	jr .asm_49ddf

.asm_49ddf
	jr .asm_49de1

.asm_49de1
	ld a, $6
	ret
; 49de4

Function49de4: ; 49de4
	call SetUpMenu
.asm_49de7
	call Function49e09
	ld a, [$cfa5]
	set 5, a
	ld [$cfa5], a
	call Function1f1a
	ld a, [$cf73]
	cp $2
	jr z, .asm_49e07
	cp $1
	jr z, .asm_49e02
	jr .asm_49de7

.asm_49e02
	call PlayClickSFX
	and a
	ret

.asm_49e07
	scf
	ret
; 49e09

Function49e09: ; 49e09
	ld a, [$cfcd]
	and a
	ret z
	xor a
	ld [hBGMapMode], a
	call Function49e27
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function49e3d
	pop af
	ld [Options], a
	ld a, $1
	ld [hBGMapMode], a
	ret
; 49e27


Function49e27: ; 49e27
	call Function6e3
	and $80
	jr nz, .asm_49e39
	ld hl, $c5b8
	ld b, $2
	ld c, $12
	call TextBox
	ret

.asm_49e39
	call SpeechTextBox
	ret
; 49e3d


Function49e3d: ; 49e3d
	ld a, [$cfcd]
	and a
	ret z
	call Function6e3
	and $80
	jp nz, Function49e75
	call UpdateTime
	call GetWeekday
	ld b, a
	decoord 1, 15
	call Function49e91
	decoord 4, 16
	ld a, [hHours]
	ld c, a
	callba Function90b3e
	ld [hl], ":"
	inc hl
	ld de, hMinutes
	ld bc, $8102
	call PrintNum
	ret
; 49e70

; 49e70
	db "min.@"
; 49e75

Function49e75: ; 49e75
	hlcoord 1, 14
	ld de, .TimeNotSet
	call PlaceString
	ret
; 49e7f

.TimeNotSet ; 49e7f
	db "TIME NOT SET@"
; 49e8c

UnknownText_0x49e8c: ; 49e8c
	text_jump UnknownText_0x1c5182, BANK(UnknownText_0x1c5182)
	db "@"
; 49e91

Function49e91: ; 49e91
	push de
	ld hl, .Days
	ld a, b
	call GetNthString
	ld d, h
	ld e, l
	pop hl
	call PlaceString
	ld h, b
	ld l, c
	ld de, .Day
	call PlaceString
	ret
; 49ea8

.Days
	db "SUN@"
	db "MON@"
	db "TUES@"
	db "WEDNES@"
	db "THURS@"
	db "FRI@"
	db "SATUR@"
.Day
	db "DAY@"
; 49ed0

Function49ed0: ; 49ed0
	xor a
	ld [$ffde], a
	call ClearTileMap
	call Functione5f
	call Functione51
	call Function1fbf
	ret
; 49ee0


MainMenu_NewGame: ; 49ee0
	callba NewGame
	ret
; 49ee7

MainMenu_Options: ; 49ee7
	callba OptionsMenu
	ret
; 49eee

MainMenu_Continue: ; 49eee
	callba Continue
	ret
; 49ef5

MainMenu_MysteryGift: ; 49ef5
	callba MysteryGift
	ret
; 49efc

MainMenu_Mobile: ; 49efc
	call WhiteBGMap
	ld a, MUSIC_MOBILE_ADAPTER_MENU
	ld [CurMusic], a
	ld de, MUSIC_MOBILE_ADAPTER_MENU
	call Function4a6c5
Function49f0a: ; 49f0a
	call WhiteBGMap
	call Function4a3a7
	call Function4a492
	call WhiteBGMap
Function49f16: ; 49f16
	call Function4a071
	ld c, $c
	call DelayFrames
	ld hl, $c4a4
	ld b, $a
	ld c, $a
	call Function48cdc
	ld hl, $c4ce
	ld de, MobileString1
	call PlaceString
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	xor a
	ld de, String_0x49fe9
	ld hl, $c5b9
	call PlaceString
	call Function3200
	call Function32f9
	call Function1bc9
	ld hl, $cfa9
	ld b, [hl]
	push bc
	jr .asm_49f5d

.asm_49f55
	call Function1bd3
	ld hl, $cfa9
	ld b, [hl]
	push bc

.asm_49f5d
	bit 0, a
	jr nz, .asm_49f67
	bit 1, a
	jr nz, .asm_49f84
	jr .asm_49f97

.asm_49f67
	ld hl, $cfa9
	ld a, [hl]
	cp $1
	jp z, Function4a098
	cp $2
	jp z, Function4a0b9
	cp $3
	jp z, Function4a0c2
	cp $4
	jp z, Function4a100
	ld a, $1
	call Function1ff8

.asm_49f84
	pop bc
	call WhiteBGMap
	call ClearTileMap
	ld a, MUSIC_MAIN_MENU
	ld [CurMusic], a
	ld de, MUSIC_MAIN_MENU
	call Function4a6c5
	ret

.asm_49f97
	ld hl, $cfa9
	ld a, [hl]
	dec a
	ld hl, MobileStrings2
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5a5
	ld b, $4
	ld c, $12
	call ClearBox
	ld hl, $c5b9
	call PlaceString
	jp .asm_49fb7

.asm_49fb7
	call Function4a071
	pop bc
	ld hl, $cfa9
	ld [hl], b
	ld b, $a
	ld c, $1
	ld hl, $c4b9
	call ClearBox
	jp .asm_49f55
; 49fcc


MobileString1: ; 49fcc
	db "めいしフ,ルダー", $4e
	db "あいさつ", $4e
	db "プロフィール", $4e
	db "せ", $1e, "い", $4e
	db "もどる@"
; 49fe9


MobileStrings2:

String_0x49fe9: ; 49fe9
	db "めいし", $1f, "つくったり", $4e
	db "ほぞんしておける フ,ルダーです@"
; 4a004

String_0x4a004: ; 4a004
	db "モバイルたいせんや じぶんのめいしで", $4e
	db "つかう あいさつ", $1f, "つくります@"
; 4a026

String_0x4a026: ; 4a026
	db "あなた", $25, "じゅうしょや ねんれいの", $4e
	db "せ", $1e, "い", $1f, "かえられます@"
; 4a042

String_0x4a042: ; 4a042
	db "モバイルセンター", $1d, "せつぞくするとき", $4e
	db "ひつような こと", $1f, "きめます@"
; 4a062

String_0x4a062: ; 4a062
	db "まえ", $25, "がめん ", $1d, "もどります", $4e
	db "@"
; 4a071



; known jump sources: 49f16 (12:5f16), 49fb7 (12:5fb7)
Function4a071: ; 4a071 (12:6071)
	ld hl, $cfa1
	ld a, $2
	ld [hli], a
	ld a, $5
	ld [hli], a
	ld a, $5
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $40
	add $80
	add $2
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hli], a
	ret

; known jump sources: 49f6d (12:5f6d)
Function4a098: ; 4a098 (12:6098)
	ld a, $2
	call Function1ff8
	call Function1bee
	call WaitBGMap
	call Function1d6e
	callba Function89de0
	call Function1d7d
	call Function49351
	call Function4a485
	pop bc
	jp Function49f16

; known jump sources: 49f72 (12:5f72)
Function4a0b9: ; 4a0b9 (12:60b9)
	ld a, $2
	call Function1ff8
	pop bc
	jp Function4a4c4

; known jump sources: 49f77 (12:5f77)
Function4a0c2: ; 4a0c2 (12:60c2)
	ld a, $2
	call Function1ff8
	ld a, $1
	call GetSRAMBank
	ld hl, $a00b
	ld de, PlayerName ; $d47d
	ld bc, $6
	call CopyBytes
	call CloseSRAM
	callba Function150b9
	ld c, $2
	call DelayFrames
	ld c, $1
	call Function4802f
	push af
	call WhiteBGMap
	pop af
	and a
	jr nz, .asm_4a0f9
	callba Function1509a
.asm_4a0f9
	ld c, $5
	call DelayFrames
	jr asm_4a111

; known jump sources: 49f7c (12:5f7c)
Function4a100: ; 4a100 (12:6100)
	ld a, $2
	call Function1ff8
	call WhiteBGMap
	call Function4a13b
	call WhiteBGMap
	call ClearTileMap

; known jump sources: 4a0fe (12:60fe)
asm_4a111: ; 4a111 (12:6111)
	pop bc
	call Functione5f
	jp Function49f0a

; known jump sources: 4a2c5 (12:62c5)
Function4a118: ; 4a118 (12:6118)
	ld hl, $cfa1
	ld a, $1
	ld [hli], a
	ld a, $d
	ld [hli], a
	ld a, $3
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $2
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hli], a
	ret

; known jump sources: 4a108 (12:6108), 4a23a (12:623a)
Function4a13b: ; 4a13b (12:613b)
	call Function4a3a7
	call Function4a492
	call Function4a373
	ld c, $a
	call DelayFrames

; known jump sources: 4a236 (12:6236)
Function4a149: ; 4a149 (12:6149)
	ld hl, $c4c9
	ld b, $6
	ld c, $10
	call Function48cdc
	ld hl, $c4f3
	ld de, $61ef
	call PlaceString
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	ld a, [$cfa9]
	dec a
	ld hl, $623d
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5a5
	ld b, $4
	ld c, $12
	call ClearBox
	ld hl, $c5b9
	call PlaceString
	callba Function104148
	call Function32f9
	call Function1bc9
	ld hl, $cfa9
	ld b, [hl]
	push bc
	jr asm_4a19d

; known jump sources: 4a1ec (12:61ec)
Function4a195: ; 4a195 (12:6195)
	call Function1bd3
	ld hl, $cfa9
	ld b, [hl]
	push bc

; known jump sources: 4a193 (12:6193)
asm_4a19d: ; 4a19d (12:619d)
	bit 0, a
	jr nz, .asm_4a1a7
	bit 1, a
	jr nz, .asm_4a1ba
	jr .asm_4a1bc
.asm_4a1a7
	ld hl, $cfa9
	ld a, [hl]
	cp $1
	jp z, Function4a20e
	cp $2
	jp z, Function4a221
	ld a, $1
	call Function1ff8
.asm_4a1ba
	pop bc
	ret
.asm_4a1bc
	ld hl, $cfa9
	ld a, [hl]
	dec a
	ld hl, $623d
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5a5
	ld b, $4
	ld c, $12
	call ClearBox
	ld hl, $c5b9
	call PlaceString
	jr .asm_4a1db
.asm_4a1db
	call Function4a373
	pop bc
	ld hl, $cfa9
	ld [hl], b
	ld bc, $601
	ld hl, $c4de
	call ClearBox
	jp Function4a195
; 4a1ef (12:61ef)

INCBIN "baserom.gbc",$4a1ef,$4a20e - $4a1ef

; known jump sources: 4a1ad (12:61ad)
Function4a20e: ; 4a20e (12:620e)
	ld a, $1
	call Function1ff8
	callba Function1719c8
	call WhiteBGMap
	call DelayFrame
	jr asm_4a239

; known jump sources: 4a1b2 (12:61b2)
Function4a221: ; 4a221 (12:6221)
	ld a, $1
	call Function1ff8
	call Function4a28a
	jr c, asm_4a239
	call Function4a373
	ld a, $2
	ld [$cfa9], a
	jr .asm_4a235
.asm_4a235
	pop bc
	jp Function4a149

; known jump sources: 4a21f (12:621f), 4a229 (12:6229)
asm_4a239: ; 4a239 (12:6239)
	pop bc
	jp Function4a13b
; 4a23d (12:623d)

INCBIN "baserom.gbc",$4a23d,$4a28a - $4a23d

; known jump sources: 4a226 (12:6226)
Function4a28a: ; 4a28a (12:628a)
	ld hl, $c4de
	ld bc, $601
	ld a, $7f
	call Function4a6d8
	call Function1bee
	call WaitBGMap
	call Function1d6e
	ld a, $5
	call GetSRAMBank
	ld a, [$aa4b]
	call CloseSRAM
	and a
	jr z, .asm_4a2df
	ld hl, $c4ac
	ld b, $5
	ld c, $6
	call Function48cdc
	ld hl, $c4c2
	ld de, $634b
	call PlaceString
	callba Function104148
	call Function4a118
	call Function1bd3
	push af
	call PlayClickSFX
	pop af
	bit 1, a
	jr nz, .asm_4a33b
	ld a, [$cfa9]
	cp $2
	jr z, .asm_4a2f0
	cp $3
	jr z, .asm_4a33b
.asm_4a2df
	callba Function11765d
	call WhiteBGMap
	call Function1d7d
	call Functione5f
	scf
	ret
.asm_4a2f0
	call Function1bee
	ld hl, $6358
	call PrintText
	ld hl, $c53a
	ld b, $3
	ld c, $4
	call TextBox
	callba Function104148
	ld hl, $6362
	call LoadMenuDataHeader
	call Function1d81
	bit 1, a
	jr nz, .asm_4a338
	ld a, [$cfa9]
	cp $2
	jr z, .asm_4a338
	ld a, $5
	call GetSRAMBank
	ld hl, $aa4b
	xor a
	ld bc, $11
	call ByteFill
	call CloseSRAM
	ld hl, $635d
	call PrintText
	call Functiona36
.asm_4a338
	call Function1c07
.asm_4a33b
	call Function1d7d
	callba Function104148
	xor a
	ret
; 4a346 (12:6346)

INCBIN "baserom.gbc",$4a346,$4a373 - $4a346

; known jump sources: 4a141 (12:6141), 4a1db (12:61db), 4a22b (12:622b)
Function4a373: ; 4a373 (12:6373)
	ld hl, $cfa1
	ld a, $4
	ld [hli], a
	ld a, $2
	ld [hli], a
	ld a, $3
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $40
	add $80
	add $2
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hli], a
	ret
; 4a39a (12:639a)

INCBIN "baserom.gbc",$4a39a,$4a3a7 - $4a39a

; known jump sources: 48078 (12:4078), 49f0d (12:5f0d), 4a13b (12:613b), 4a4c7 (12:64c7)
Function4a3a7: ; 4a3a7 (12:63a7)
	call Function4a485
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $301
	xor a
	call Function4a6d8
	ld bc, $101
	ld a, $1
	call Function4a6d8
	ld bc, $101
	xor a
	call Function4a6d8
	ld bc, $101
	ld a, $1
	call Function4a6d8
	ld bc, $401
	ld a, $2
	call Function4a6d8
	ld bc, $101
	ld a, $3
	call Function4a6d8
	ld bc, $101
	ld a, $7f
	call Function4a6d8
	ld hl, $c4a1
	ld a, $1
	ld bc, $312
	call Function4a6d8
	ld bc, $112
	ld a, $0
	call Function4a6d8
	ld bc, $112
	ld a, $1
	call Function4a6d8
	ld bc, $112
	ld a, $2
	call Function4a6d8
	ld bc, $b12
	ld a, $7f
	call Function4a6d8
	ld hl, $c4b3
	ld bc, $301
	ld a, $0
	call Function4a6d8
	ld bc, $101
	ld a, $1
	call Function4a6d8
	ld bc, $101
	xor a
	call Function4a6d8
	ld bc, $101
	ld a, $1
	call Function4a6d8
	ld bc, $401
	ld a, $2
	call Function4a6d8
	ld bc, $101
	ld a, $3
	call Function4a6d8
	ld bc, $101
	ld a, $7f
	call Function4a6d8
	ret
; 4a449 (12:6449)

INCBIN "baserom.gbc",$4a449,$4a485 - $4a449

; known jump sources: 4a0b2 (12:60b2), 4a3a7 (12:63a7)
Function4a485: ; 4a485 (12:6485)
	ld de, $5c0c
	ld hl, $9000
	ld bc, $120d
	call Get2bpp
	ret

; known jump sources: 49f10 (12:5f10), 4a13e (12:613e), 4a4ca (12:64ca)
Function4a492: ; 4a492 (12:6492)
	call Function4936e
	ret


MainMenu_MobileStudium: ; 4a496
	ld a, [StartDay]
	ld b, a
	ld a, [StartHour]
	ld c, a
	ld a, [StartMinute]
	ld d, a
	ld a, [StartSecond]
	ld e, a
	push bc
	push de
	callba MobileStudium
	call WhiteBGMap
	pop de
	pop bc
	ld a, b
	ld [StartDay], a
	ld a, c
	ld [StartHour], a
	ld a, d
	ld [StartMinute], a
	ld a, e
	ld [StartSecond], a
	ret
; 4a4c4



; known jump sources: 4a0bf (12:60bf), 4a6c2 (12:66c2)
Function4a4c4: ; 4a4c4 (12:64c4)
	call WhiteBGMap
	call Function4a3a7
	call Function4a492
	call Function4a680
	call WhiteBGMap
	ld c, $14
	call DelayFrames
	ld hl, $c4a2
	ld b, $a
	ld c, $e
	call Function48cdc
	ld hl, $c4cc
	ld de, $65c5
	call PlaceString
	ld hl, $c4f4
	ld de, $65cd
	call PlaceString
	ld hl, $c51c
	ld de, $65da
	call PlaceString
	ld hl, $c544
	ld de, $65e6
	call PlaceString
	ld hl, $c56c
	ld de, $65f2
	call PlaceString
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	xor a
	ld hl, $65f6
	ld d, h
	ld e, l
	ld hl, $c5b9
	call PlaceString
	ld a, $1
	ld hl, $65f6
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5e1
	call PlaceString
	call Function3200
	call Function32f9
	call Function1bc9
	ld hl, $cfa9
	ld b, [hl]
	push bc
	jr asm_4a54d

; known jump sources: 4a5c2 (12:65c2)
Function4a545: ; 4a545 (12:6545)
	call Function1bd3
	ld hl, $cfa9
	ld b, [hl]
	push bc

; known jump sources: 4a543 (12:6543)
asm_4a54d: ; 4a54d (12:654d)
	bit 0, a
	jr nz, .asm_4a557
	bit 1, a
	jr nz, .asm_4a574
	jr .asm_4a57e
.asm_4a557
	ld hl, $cfa9
	ld a, [hl]
	cp $1
	jp z, Function4a6ab
	cp $2
	jp z, Function4a6ab
	cp $3
	jp z, Function4a6ab
	cp $4
	jp z, Function4a6ab
	ld a, $1
	call Function1ff8
.asm_4a574
	pop bc
	call WhiteBGMap
	call ClearTileMap
	jp Function49f0a
.asm_4a57e
	ld hl, $cfa9
	ld a, [hl]
	dec a
	add a
	push af
	ld hl, $65f6
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5a5
	ld b, $4
	ld c, $12
	call ClearBox
	ld hl, $c5b9
	call PlaceString
	pop af
	inc a
	ld hl, $65f6
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $c5e1
	call PlaceString
	jp Function4a5b0

; known jump sources: 4a5ad (12:65ad)
Function4a5b0: ; 4a5b0 (12:65b0)
	call Function4a680
	pop bc
	ld hl, $cfa9
	ld [hl], b
	ld b, $a
	ld c, $1
	ld hl, $c4b7
	call ClearBox
	jp Function4a545
; 4a5c5 (12:65c5)

INCBIN "baserom.gbc",$4a5c5,$4a680 - $4a5c5

; known jump sources: 4a4cd (12:64cd), 4a5b0 (12:65b0)
Function4a680: ; 4a680 (12:6680)
	ld hl, $cfa1
	ld a, $2
	ld [hli], a
	ld a, $3
	ld [hli], a
	ld a, $5
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hl], $0
	set 5, [hl]
	inc hl
	xor a
	ld [hli], a
	ld a, $20
	ld [hli], a
	ld a, $1
	add $40
	add $80
	add $2
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ret

; known jump sources: 4a55d (12:655d), 4a562 (12:6562), 4a567 (12:6567), 4a56c (12:656c)
Function4a6ab: ; 4a6ab (12:66ab)
	ld a, $2
	call Function1ff8
	call WhiteBGMap
	ld b, $8
	call GetSGBLayout
	callba Function11c1ab
	pop bc
	call Functione5f
	jp Function4a4c4

; known jump sources: 49f07 (12:5f07), 49f93 (12:5f93)
Function4a6c5: ; 4a6c5 (12:66c5)
	ld a, $5
	ld [MusicFade], a ; $c2a7
	ld a, e
	ld [MusicFadeIDLo], a ; $c2a9
	ld a, d
	ld [MusicFadeIDHi], a ; $c2aa
	ld c, $16
	call DelayFrames
	ret

; known jump sources: 4a292 (12:6292), 4a3b1 (12:63b1), 4a3b9 (12:63b9), 4a3c0 (12:63c0), 4a3c8 (12:63c8), 4a3d0 (12:63d0), 4a3d8 (12:63d8), 4a3e0 (12:63e0), 4a3eb (12:63eb), 4a3f3 (12:63f3), 4a3fb (12:63fb), 4a403 (12:6403), 4a40b (12:640b), 4a416 (12:6416), 4a41e (12:641e), 4a425 (12:6425), 4a42d (12:642d), 4a435 (12:6435), 4a43d (12:643d), 4a445 (12:6445), 4a6e5 (12:66e5)
Function4a6d8: ; 4a6d8 (12:66d8)
	push bc
	push hl
.asm_4a6da
	ld [hli], a
	dec c
	jr nz, .asm_4a6da
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, Function4a6d8
	ret


SpecialBeastsCheck: ; 0x4a6e8
; Check if the player owns all three legendary beasts.
; They must exist in either party or PC, and have the player's OT and ID.

; outputs:
; ScriptVar is 1 if the Pokémon exist, otherwise 0.

	ld a, RAIKOU
	ld [ScriptVar], a
	call CheckOwnMonAnywhere
	jr nc, .notexist

	ld a, ENTEI
	ld [ScriptVar], a
	call CheckOwnMonAnywhere
	jr nc, .notexist

	ld a, SUICUNE
	ld [ScriptVar], a
	call CheckOwnMonAnywhere
	jr nc, .notexist

	; they exist
	ld a, $1
	ld [ScriptVar], a
	ret

.notexist
	xor a
	ld [ScriptVar], a
	ret

SpecialMonCheck: ; 0x4a711
; Check if a Pokémon exists in PC or party.
; It must exist in either party or PC, and have the player's OT and ID.

; inputs:
; ScriptVar contains species to search for
	call CheckOwnMonAnywhere
	jr c, .exists

	; doesn't exist
	xor a
	ld [ScriptVar], a
	ret

.exists
	ld a, $1
	ld [ScriptVar], a
	ret

CheckOwnMonAnywhere: ; 0x4a721
	ld a, [PartyCount]
	and a
	ret z ; no pokémon in party

	ld d, a
	ld e, $0
	ld hl, PartyMon1Species
	ld bc, PartyMon1OT

; run CheckOwnMon on each Pokémon in the party
.loop
	call CheckOwnMon
	ret c ; found!

	push bc
	ld bc, PartyMon2 - PartyMon1
	add hl, bc
	pop bc
	call UpdateOTPointer
	dec d
	jr nz, .loop ; 0x4a73d $f0

; XXX the below could use some cleanup
; run CheckOwnMon on each Pokémon in the PC
	ld a, $1
	call GetSRAMBank
	ld a, [BoxCount]
	and a
	jr z, .asm_4a766 ; 0x4a748 $1c
	ld d, a
	ld hl, BoxMon1Species
	ld bc, BoxMon1OT
.asm_4a751
	call CheckOwnMon
	jr nc, .asm_4a75a ; 0x4a754 $4
	call CloseSRAM
	ret
.asm_4a75a
	push bc
	ld bc, $0020
	add hl, bc
	pop bc
	call UpdateOTPointer
	dec d
	jr nz, .asm_4a751 ; 0x4a764 $eb
.asm_4a766
	call CloseSRAM
	ld c, $0
.asm_4a76b
	ld a, [$db72]
	and $f
	cp c
	jr z, .asm_4a7af ; 0x4a771 $3c
	ld hl, $6810
	ld b, $0
	add hl, bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	call GetSRAMBank
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	and a
	jr z, .asm_4a7af ; 0x4a784 $29
	push bc
	push hl
	ld de, $0016
	add hl, de
	ld d, h
	ld e, l
	pop hl
	push de
	ld de, $0296
	add hl, de
	ld b, h
	ld c, l
	pop hl
	ld d, a
.asm_4a798
	call CheckOwnMon
	jr nc, .asm_4a7a2 ; 0x4a79b $5
	pop bc
	call CloseSRAM
	ret
.asm_4a7a2
	push bc
	ld bc, $0020
	add hl, bc
	pop bc
	call UpdateOTPointer
	dec d
	jr nz, .asm_4a798 ; 0x4a7ac $ea
	pop bc
.asm_4a7af
	inc c
	ld a, c
	cp $e
	jr c, .asm_4a76b ; 0x4a7b3 $b6
	call CloseSRAM
	and a ; clear carry
	ret

CheckOwnMon: ; 0x4a7ba
; Check if a Pokémon belongs to the player and is of a specific species.

; inputs:
; hl, pointer to PartyMonNSpecies
; bc, pointer to PartyMonNOT
; ScriptVar should contain the species we're looking for

; outputs:
; sets carry if monster matches species, ID, and OT name.

	push bc
	push hl
	push de
	ld d, b
	ld e, c

; check species
	ld a, [ScriptVar] ; species we're looking for
	ld b, [hl] ; species we have
	cp b
	jr nz, .notfound ; species doesn't match

; check ID number
	ld bc, PartyMon1ID - PartyMon1Species
	add hl, bc ; now hl points to ID number
	ld a, [PlayerID]
	cp [hl]
	jr nz, .notfound ; ID doesn't match
	inc hl
	ld a, [PlayerID + 1]
	cp [hl]
	jr nz, .notfound ; ID doesn't match

; check OT
; This only checks five characters, which is fine for the Japanese version,
; but in the English version the player name is 7 characters, so this is wrong.

	ld hl, PlayerName

	ld a, [de]
	cp [hl]
	jr nz, .notfound
	cp "@"
	jr z, .found ; reached end of string
	inc hl
	inc de

	ld a, [de]
	cp [hl]
	jr nz, .notfound
	cp $50
	jr z, .found
	inc hl
	inc de

	ld a, [de]
	cp [hl]
	jr nz, .notfound
	cp $50
	jr z, .found
	inc hl
	inc de

	ld a, [de]
	cp [hl]
	jr nz, .notfound
	cp $50
	jr z, .found
	inc hl
	inc de

	ld a, [de]
	cp [hl]
	jr z, .found

.notfound
	pop de
	pop hl
	pop bc
	and a ; clear carry
	ret
.found
	pop de
	pop hl
	pop bc
	scf
	ret

; 0x4a810
INCBIN "baserom.gbc",$4a810,$4a83a - $4a810

UpdateOTPointer: ; 0x4a83a
	push hl
	ld hl, PartyMon2OT - PartyMon1OT
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	ret
; 0x4a843

INCBIN "baserom.gbc",$4a843,$4a927 - $4a843

Function4a927: ; 4a927
	ld a, [ScriptVar]
	ld [CurItem], a
	ld hl, PCItems
	call CheckItem
	jr c, .asm_4a948
	ld a, [ScriptVar]
	ld [CurItem], a
	ld hl, NumItems
	call CheckItem
	jr c, .asm_4a948
	xor a
	ld [ScriptVar], a
	ret

.asm_4a948
	ld a, $1
	ld [ScriptVar], a
	ret
; 4a94e

Function4a94e: ; 4a94e
	call FadeToMenu
	ld a, $ff
	ld hl, DefaultFlypoint
	ld bc, $0003
	call ByteFill
	xor a
	ld [$d018], a
	ld [$d019], a
	ld b, $14
	call GetSGBLayout
	call Function32f9
	call Function4aa22
	jr c, .asm_4a985
	jr z, .asm_4a9a1
	jr .asm_4a97b

.asm_4a974
	call Function4aa25
	jr c, .asm_4a985
	jr z, .asm_4a9a1

.asm_4a97b
	call Function4ac58
	ld hl, $d019
	res 1, [hl]
	jr .asm_4a974

.asm_4a985
	ld a, [$d018]
	and a
	jr nz, .asm_4a990
	call Function4aba8
	jr c, .asm_4a974

.asm_4a990
	call Function2b3c
	ld hl, DefaultFlypoint
	ld a, $ff
	ld bc, $0003
	call ByteFill
	scf
	jr .asm_4a9af

.asm_4a9a1
	call Function4a9c3
	jr c, .asm_4a9b0
	call Function4a9d7
	jr c, .asm_4a974
	call Function2b3c
	and a

.asm_4a9af
	ret

.asm_4a9b0
	ld de, $0019
	call PlaySFX
	ld hl, $69be
	call PrintText
	jr .asm_4a974
; 4a9be

INCBIN "baserom.gbc",$4a9be,$4a9c3 - $4a9be

Function4a9c3: ; 4a9c3
	ld hl, DefaultFlypoint
	ld a, $ff
	cp [hl]
	jr z, .asm_4a9d5
	inc hl
	cp [hl]
	jr z, .asm_4a9d5
	inc hl
	cp [hl]
	jr z, .asm_4a9d5
	and a
	ret

.asm_4a9d5
	scf
	ret
; 4a9d7

Function4a9d7: ; 4a9d7
	ld a, [DefaultFlypoint]
	ld hl, PartyMon1Nickname
	call GetNick
	ld h, d
	ld l, e
	ld de, EndFlypoint
	ld bc, $0006
	call CopyBytes
	ld a, [$d003]
	ld hl, PartyMon1Nickname
	call GetNick
	ld h, d
	ld l, e
	ld de, $d00c
	ld bc, $0006
	call CopyBytes
	ld a, [$d004]
	ld hl, PartyMon1Nickname
	call GetNick
	ld h, d
	ld l, e
	ld de, $d012
	ld bc, $0006
	call CopyBytes
	ld hl, $6a1d
	call PrintText
	call Function1dcf
	ret
; 4aa1d

INCBIN "baserom.gbc",$4aa1d,$4aa22 - $4aa1d

Function4aa22: ; 4aa22
	call WhiteBGMap

Function4aa25: ; 4aa25
	callba Function5004f
	callba Function50405
	call Function4aad3
	ld a, $9
	ld [PartyMenuActionText], a
	callba WritePartyMenuTilemap
	xor a
	ld [PartyMenuActionText], a
	callba PrintPartyMenuText
	call Function4aab6
	call WaitBGMap
	call Function32f9
	call DelayFrame
	call Function4ab1a
	jr z, .asm_4aa66
	push af
	call Function4aafb
	jr c, .asm_4aa67
	call Function4ab06
	jr c, .asm_4aa67
	pop af

.asm_4aa66
	ret

.asm_4aa67
	ld hl, $d019
	set 1, [hl]
	pop af
	ret
; 4aa6e

INCBIN "baserom.gbc",$4aa6e,$4aa7a - $4aa6e

Function4aa7a: ; 4aa7a
	ld hl, DefaultFlypoint
	ld d, $3
.asm_4aa7f
	ld e, $6
	ld a, [hli]
	push de
	push hl
	cp $ff
	jr z, .asm_4aab3
	ld hl, $c314
	inc a
	ld d, a
.asm_4aa8d
	ld a, [hl]
	and a
	jr z, .asm_4aaa5
	cp d
	jr z, .asm_4aa9a
	jr .asm_4aaa5

	ld a, $3
	jr .asm_4aa9c

.asm_4aa9a
	ld a, $2

.asm_4aa9c
	push hl
	ld c, l
	ld b, h
	ld hl, $0002
	add hl, bc
	ld [hl], a
	pop hl

.asm_4aaa5
	ld bc, $0010
	add hl, bc
	dec e
	jr nz, .asm_4aa8d
	pop hl
	pop de
	dec d
	jr nz, .asm_4aa7f
	jr .asm_4aab5

.asm_4aab3
	pop hl
	pop de

.asm_4aab5
	ret
; 4aab6

Function4aab6: ; 4aab6
	ld hl, DefaultFlypoint
	ld d, $3
.asm_4aabb
	ld a, [hli]
	cp $ff
	jr z, .asm_4aad2
	push de
	push hl
	ld hl, $c4b4
	ld bc, $0028
	call AddNTimes
	ld [hl], $ec
	pop hl
	pop de
	dec d
	jr nz, .asm_4aabb

.asm_4aad2
	ret
; 4aad3

Function4aad3: ; 4aad3
	ld hl, PartyCount
	ld a, [hli]
	and a
	ret z
	ld c, a
	xor a
	ld [hConnectedMapWidth], a
.asm_4aadd
	push bc
	push hl
	ld e, $0
	callba Function8e83f
	ld a, [hConnectedMapWidth]
	inc a
	ld [hConnectedMapWidth], a
	pop hl
	pop bc
	dec c
	jr nz, .asm_4aadd
	call Function4aa7a
	callba Function8cf69
	ret
; 4aafb

Function4aafb: ; 4aafb
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_4ab04
	and a
	ret

.asm_4ab04
	scf
	ret
; 4ab06

Function4ab06: ; 4ab06
	ld a, [CurPartyMon]
	ld bc, $0030
	ld hl, PartyMon1CurHP
	call AddNTimes
	ld a, [hli]
	ld b, a
	ld a, [hl]
	or b
	jr nz, .asm_4ab19
	scf

.asm_4ab19
	ret
; 4ab1a

Function4ab1a: ; 4ab1a
.asm_4ab1a
	ld a, $fb
	ld [$cfa8], a
	ld a, $26
	ld [$cfa7], a
	ld a, $2
	ld [$cfa4], a
	call Function4adf7
	call Function1bc9
	call Function4abc3
	jr c, .asm_4ab1a
	push af
	call Function4ab99
	call nc, Function1bee
	pop af
	bit 1, a
	jr nz, .asm_4ab6d
	ld a, [PartyCount]
	inc a
	ld b, a
	ld a, [$cfa9]
	ld [$d0d8], a
	cp b
	jr z, .asm_4ab7e
	ld a, [$cfa9]
	dec a
	ld [CurPartyMon], a
	ld c, a
	ld b, $0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a
	ld de, $0008
	call PlaySFX
	call WaitSFX
	ld a, $1
	and a
	ret

.asm_4ab6d
	ld a, [$cfa9]
	ld [$d0d8], a
.asm_4ab73
	ld de, $0008
	call PlaySFX
	call WaitSFX
	scf
	ret

.asm_4ab7e
	ld a, $1
	ld [$d018], a
	ld a, [$cfaa]
	cp $2
	jr z, .asm_4ab73
	ld de, $0008
	call PlaySFX
	call WaitSFX
	xor a
	ld [$d018], a
	and a
	ret
; 4ab99

Function4ab99: ; 4ab99
	bit 1, a
	jr z, .asm_4aba6
	ld a, [DefaultFlypoint]
	cp $ff
	jr z, .asm_4aba6
	scf
	ret

.asm_4aba6
	and a
	ret
; 4aba8

Function4aba8: ; 4aba8
	ld hl, $d004
	ld a, [hl]
	cp $ff
	jr nz, .asm_4abbe
	dec hl
	ld a, [hl]
	cp $ff
	jr nz, .asm_4abbe
	dec hl
	ld a, [hl]
	cp $ff
	jr nz, .asm_4abbe
	and a
	ret

.asm_4abbe
	ld a, $ff
	ld [hl], a
	scf
	ret
; 4abc3

Function4abc3: ; 4abc3
	bit 3, a
	jr z, .asm_4abd5
	ld a, [PartyCount]
	inc a
	ld [$cfa9], a
	ld a, $1
	ld [$cfaa], a
	jr .asm_4ac29

.asm_4abd5
	bit 6, a
	jr z, .asm_4abeb
	ld a, [$cfa9]
	ld [$cfa9], a
	and a
	jr nz, .asm_4ac29
	ld a, [PartyCount]
	inc a
	ld [$cfa9], a
	jr .asm_4ac29

.asm_4abeb
	bit 7, a
	jr z, .asm_4ac08
	ld a, [$cfa9]
	ld [$cfa9], a
	ld a, [PartyCount]
	inc a
	inc a
	ld b, a
	ld a, [$cfa9]
	cp b
	jr nz, .asm_4ac29
	ld a, $1
	ld [$cfa9], a
	jr .asm_4ac29

.asm_4ac08
	bit 4, a
	jr nz, .asm_4ac10
	bit 5, a
	jr z, .asm_4ac56

.asm_4ac10
	ld a, [$cfa9]
	ld b, a
	ld a, [PartyCount]
	inc a
	cp b
	jr nz, .asm_4ac29
	ld a, [$cfaa]
	cp $1
	jr z, .asm_4ac26
	ld a, $1
	jr .asm_4ac29

.asm_4ac26
	ld [$cfaa], a

.asm_4ac29
	ld hl, $c4b4
	ld bc, $0d01
	call ClearBox
	call Function4aab6
	ld a, [PartyCount]
	ld hl, $c4ba
.asm_4ac3b
	ld bc, $0028
	add hl, bc
	dec a
	jr nz, .asm_4ac3b
	ld [hl], $7f
	ld a, [$cfa9]
	ld b, a
	ld a, [PartyCount]
	inc a
	cp b
	jr z, .asm_4ac54
	ld a, $1
	ld [$cfaa], a

.asm_4ac54
	scf
	ret

.asm_4ac56
	and a
	ret
; 4ac58

Function4ac58: ; 4ac58
	ld bc, $0212
	ld hl, $c5cd
	call ClearBox
	callba Function8ea4a
	ld hl, $6ca2
	call LoadMenuDataHeader
	ld hl, $d019
	bit 1, [hl]
	jr z, .asm_4ac89
	ld hl, $c5af
	ld b, $3
	ld c, $7
	call TextBox
	ld hl, $c5c5
	ld de, $6da7
	call PlaceString
	jr .asm_4ac96

.asm_4ac89
	ld hl, $c55f
	ld b, $7
	ld c, $7
	call TextBox
	call Function4ad68

.asm_4ac96
	ld a, $1
	ld [hBGMapMode], a
	call Function4acaa
	call Function1c07
	and a
	ret
; 4aca2

INCBIN "baserom.gbc",$4aca2,$4acaa - $4aca2

Function4acaa: ; 4acaa
.asm_4acaa
	ld a, $a0
	ld [$cf91], a
	ld a, [$d019]
	bit 1, a
	jr z, .asm_4acc2
	ld a, $2
	ld [$cf92], a
	ld a, $c
	ld [$cf82], a
	jr .asm_4accc

.asm_4acc2
	ld a, $4
	ld [$cf92], a
	ld a, $8
	ld [$cf82], a

.asm_4accc
	ld a, $b
	ld [$cf83], a
	ld a, $1
	ld [$cf88], a
	call Function1c10
	ld hl, $cfa5
	set 6, [hl]
	call Function1bc9
	ld de, $0008
	call PlaySFX
	ld a, [hJoyPressed]
	bit 0, a
	jr nz, .asm_4acf4
	bit 1, a
	jr nz, .asm_4acf3
	jr .asm_4acaa

.asm_4acf3
	ret

.asm_4acf4
	ld a, [$d019]
	bit 1, a
	jr nz, .asm_4ad0e
	ld a, [$cfa9]
	cp $1
	jr z, Function4ad17
	cp $2
	jp z, Function4ad56
	cp $3
	jp z, Function4ad60
	jr .asm_4acf3

.asm_4ad0e
	ld a, [$cfa9]
	cp $1
	jr z, Function4ad56
	jr .asm_4acf3

Function4ad17: ; 4ad17
	call Function4adb2
	jr z, .asm_4ad4a
	ld hl, DefaultFlypoint
	ld a, $ff
	cp [hl]
	jr z, .asm_4ad39
	inc hl
	cp [hl]
	jr z, .asm_4ad39
	inc hl
	cp [hl]
	jr z, .asm_4ad39
	ld de, $0019
	call WaitPlaySFX
	ld hl, UnknownText_0x4ad51
	call PrintText
	ret

.asm_4ad39
	ld a, [CurPartyMon]
	ld [hl], a
	call Function4a9c3
	ret c
	ld a, [$d019]
	set 0, a
	ld [$d019], a
	ret

.asm_4ad4a
	ld a, $ff
	ld [hl], a
	call Function4adc2
	ret

UnknownText_0x4ad51: ; 0x4ad51
	; Only three #MON may enter.
	text_jump UnknownText_0x1c521c, BANK(UnknownText_0x1c521c)
	db "@"
; 0x4ad56

Function4ad56: ; 4ad56
	callba OpenPartyStats
	call Function3200
	ret
; 4ad60

Function4ad60: ; 4ad60
	callba Function12fba
	ret
; 4ad67

INCBIN "baserom.gbc",$4ad67,$4ad68 - $4ad67

Function4ad68: ; 4ad68
	ld hl, $c59d
	ld de, $6d88
	call PlaceString
	call Function4adb2
	jr c, .asm_4ad7e
	ld hl, $c575
	ld de, $6da0
	jr .asm_4ad84

.asm_4ad7e
	ld hl, $c575
	ld de, $6d9a

.asm_4ad84
	call PlaceString
	ret
; 4ad88

INCBIN "baserom.gbc",$4ad88,$4adb2 - $4ad88

Function4adb2: ; 4adb2
	ld hl, DefaultFlypoint
	ld a, [CurPartyMon]
	cp [hl]
	ret z
	inc hl
	cp [hl]
	ret z
	inc hl
	cp [hl]
	ret z
	scf
	ret
; 4adc2

Function4adc2: ; 4adc2
	ld a, [DefaultFlypoint]
	cp $ff
	jr nz, .asm_4ade5
	ld a, [$d003]
	cp $ff
	jr nz, .asm_4addd
	ld a, [$d004]
	ld [DefaultFlypoint], a
	ld a, $ff
	ld [$d004], a
	jr .asm_4ade5

.asm_4addd
	ld [DefaultFlypoint], a
	ld a, $ff
	ld [$d003], a

.asm_4ade5
	ld a, [$d003]
	cp $ff
	ret nz
	ld b, a
	ld a, [$d004]
	ld [$d003], a
	ld a, b
	ld [$d004], a
	ret
; 4adf7

Function4adf7: ; 4adf7
	ld a, [$d019]
	bit 0, a
	ret z
	ld a, [PartyCount]
	inc a
	ld [$cfa9], a
	ld a, $1
	ld [$cfaa], a
	ld a, [$d019]
	res 0, a
	ld [$d019], a
	ret
; 4ae12

Function4ae12: ; 4ae12
	call Function4ae1f
	ld a, $0
	jr c, .asm_4ae1b
	ld a, $1

.asm_4ae1b
	ld [ScriptVar], a
	ret
; 4ae1f

Function4ae1f: ; 4ae1f
	ld bc, $0e07
	push bc
	ld hl, MenuDataHeader_0x1e1d
	call Function1d3c
	pop bc
	ld a, b
	ld [$cf83], a
	add $5
	ld [$cf85], a
	ld a, c
	ld [$cf82], a
	add $4
	ld [$cf84], a
	call Function1c00
	call Function1d81
	push af
	ld c, $f
	call DelayFrames
	call Function4ae5e
	pop af
	jr c, .asm_4ae57
	ld a, [$cfa9]
	cp $2
	jr z, .asm_4ae57
	and a
	ret

.asm_4ae57
	ld a, $2
	ld [$cfa9], a
	scf
	ret
; 4ae5e

Function4ae5e: ; 4ae5e
	ld a, [hOAMUpdate]
	push af
	call Function1c07
	call Function1ad2
	xor a
	ld [hOAMUpdate], a
	call DelayFrame
	ld a, $1
	ld [hOAMUpdate], a
	call Function321c
	pop af
	ld [hOAMUpdate], a
	ret
; 4ae78


SECTION "bank13", ROMX, BANK[$13]

Function4c000: ; 4c000
	ld hl, TileMap
	ld de, AttrMap
	ld b, $12
.asm_4c008
	push bc
	ld c, $14
.asm_4c00b
	ld a, [hl]
	push hl
	srl a
	jr c, .asm_4c021
	ld hl, TilesetPalettes
	add [hl]
	ld l, a
	ld a, [$d1e7]
	adc $0
	ld h, a
	ld a, [hl]
	and $f
	jr .asm_4c031

.asm_4c021
	ld hl, TilesetPalettes
	add [hl]
	ld l, a
	ld a, [$d1e7]
	adc $0
	ld h, a
	ld a, [hl]
	swap a
	and $f

.asm_4c031
	pop hl
	ld [de], a
	res 7, [hl]
	inc hl
	inc de
	dec c
	jr nz, .asm_4c00b
	pop bc
	dec b
	jr nz, .asm_4c008
	ret
; 4c03f

Function4c03f: ; 4c03f
	ld hl, BGMapBuffer
	ld de, BGMapPalBuffer
.asm_4c045
	ld a, [hl]
	push hl
	srl a
	jr c, .asm_4c05b
	ld hl, TilesetPalettes
	add [hl]
	ld l, a
	ld a, [$d1e7]
	adc $0
	ld h, a
	ld a, [hl]
	and $f
	jr .asm_4c06b

.asm_4c05b
	ld hl, TilesetPalettes
	add [hl]
	ld l, a
	ld a, [$d1e7]
	adc $0
	ld h, a
	ld a, [hl]
	swap a
	and $f

.asm_4c06b
	pop hl
	ld [de], a
	res 7, [hl]
	inc hl
	inc de
	dec c
	jr nz, .asm_4c045
	ret
; 4c075


INCLUDE "tilesets/palette_maps.asm"


INCBIN "baserom.gbc",$4ce05,$4ce1f - $4ce05

TileCollisionTable: ; 4ce1f
; 00 land
; 01 water
; 0f wall
; 11 talkable water
; 1f talkable wall

	db $00, $00, $00, $00, $00, $00, $00, $0f
	db $00, $00, $00, $00, $00, $00, $00, $0f
	db $00, $00, $1f, $00, $00, $1f, $00, $00
	db $00, $00, $1f, $00, $00, $1f, $00, $00
	db $01, $01, $11, $00, $11, $01, $01, $0f
	db $01, $01, $11, $00, $11, $01, $01, $0f
	db $01, $01, $01, $01, $01, $01, $01, $01
	db $01, $01, $01, $01, $01, $01, $01, $01

	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $0f, $00, $00, $00, $00, $00
	db $00, $00, $0f, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00

	db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
	db $0f, $0f, $0f, $0f, $0f, $00, $00, $00
	db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
	db $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00

	db $01, $01, $01, $01, $01, $01, $01, $01
	db $01, $01, $01, $01, $01, $01, $01, $01
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $00
	db $00, $00, $00, $00, $00, $00, $00, $0f
; 4cf1f

Function4cf1f: ; 4cf1f
	ld a, $0
	call Function4cf34
	ld a, $1
	call Function4cf34
	ld a, $2
	call Function4cf34
	ld a, $3
	call Function4cf34
	ret
; 4cf34

Function4cf34: ; 4cf34
	call GetSRAMBank
	ld hl, $a000
	ld bc, $2000
	xor a
	call ByteFill
	call CloseSRAM
	ret
; 4cf45


; no known jump sources
Function4cf45: ; 4cf45 (13:4f45)
	ld a, [hCGB] ; $ff00+$e6
	and a
	jp z, WaitBGMap
	ld a, [hBGMapMode] ; $ff00+$d4
	push af
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [$FF00+$de]
	push af
	xor a
	ld [$FF00+$de], a
.asm_4cf57
	ld a, [rLY] ; $ff00+$44
	cp $60
	jr c, .asm_4cf57
	di
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, AttrMap ; $cdd9
	call Function4cf80
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	call Function4cf80
.asm_4cf72
	ld a, [rLY] ; $ff00+$44
	cp $60
	jr c, .asm_4cf72
	ei
	pop af
	ld [$FF00+$de], a
	pop af
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 4cf65 (13:4f65), 4cf6f (13:4f6f)
Function4cf80: ; 4cf80 (13:4f80)
	ld [hSPBuffer], sp ; $ffd9
	ld sp, hl
	ld a, [$FF00+$d7]
	ld h, a
	ld l, $0
	ld a, $12
	ld [$FF00+$d3], a
	ld b, $2
	ld c, $41
.asm_4cf91
	pop de
.asm_4cf92
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cf92
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cf9b
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cf9b
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfa4
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfa4
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfad
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfad
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfb6
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfb6
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfbf
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfbf
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfc8
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfc8
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfd1
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfd1
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfda
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfda
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4cfe3
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4cfe3
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	ld de, $c
	add hl, de
	ld a, [$FF00+$d3]
	dec a
	ld [$FF00+$d3], a
	jr nz, .asm_4cf91
	ld a, [hSPBuffer] ; $ff00+$d9
	ld l, a
	ld a, [$FF00+$da]
	ld h, a
	ld sp, hl
	ret


Function4cffe: ; 4cffe
	ld a, $1
	call GetSRAMBank
	ld a, [$a008]
	ld b, a
	ld a, [$ad0f]
	ld c, a
	call CloseSRAM
	ld a, b
	cp $63
	jr nz, .asm_4d01b
	ld a, c
	cp $7f
	jr nz, .asm_4d01b
	ld c, $1
	ret

.asm_4d01b
	ld c, $0
	ret
; 4d01e

INCBIN "baserom.gbc",$4d01e,$4d15b - $4d01e


Function4d15b: ; 4d15b
	ld hl, EnemyMoveAnimation
	ld a, [$d196]
	and a
	jr z, .asm_4d168
	ld bc, $0030
	add hl, bc

.asm_4d168
	ld a, [$d197]
	and a
	jr z, .asm_4d170
	inc hl
	inc hl

.asm_4d170
	ld de, TileMap
	ld b, $12
.asm_4d175
	ld c, $14
.asm_4d177
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_4d177
	ld a, l
	add $4
	ld l, a
	jr nc, .asm_4d184
	inc h

.asm_4d184
	dec b
	jr nz, .asm_4d175
	ret
; 4d188

Function4d188: ; 4d188
	ld a, [hCGB]
	and a
	jp z, WaitBGMap
	ld a, [$c2ce]
	cp $0
	jp z, WaitBGMap
	ld a, [hBGMapMode]
	push af
	xor a
	ld [hBGMapMode], a
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
.asm_4d1a2
	ld a, [rLY]
	cp $8f
	jr c, .asm_4d1a2
	di
	ld a, $1
	ld [rVBK], a
	ld hl, AttrMap
	call Function4d1cb
	ld a, $0
	ld [rVBK], a
	ld hl, TileMap
	call Function4d1cb
.asm_4d1bd
	ld a, [rLY]
	cp $8f
	jr c, .asm_4d1bd
	ei
	pop af
	ld [$ffde], a
	pop af
	ld [hBGMapMode], a
	ret
; 4d1cb

Function4d1cb: ; 4d1cb
	ld [hSPBuffer], sp
	ld sp, hl
	ld a, [$ffd7]
	ld h, a
	ld l, $0
	ld a, $12
	ld [$ffd3], a
	ld b, $2
	ld c, $41
.asm_4d1dc
	pop de
.asm_4d1dd
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d1dd
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d1e6
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d1e6
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d1ef
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d1ef
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d1f8
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d1f8
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d201
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d201
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d20a
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d20a
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d213
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d213
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d21c
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d21c
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d225
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d225
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	pop de
.asm_4d22e
	ld a, [$ff00+c]
	and b
	jr nz, .asm_4d22e
	ld [hl], e
	inc l
	ld [hl], d
	inc l
	ld de, $000c
	add hl, de
	ld a, [$ffd3]
	dec a
	ld [$ffd3], a
	jr nz, .asm_4d1dc
	ld a, [hSPBuffer]
	ld l, a
	ld a, [$ffda]
	ld h, a
	ld sp, hl
	ret
; 4d249

INCBIN "baserom.gbc",$4d249,$4d319 - $4d249

Function4d319: ; 4d319
	ld a, [$cfa9]
	dec a
	ld [CurPartyMon], a
	call LowVolume
	ld a, $25
	call Predef
	ld a, [CurPartyMon]
	inc a
	ld [$cfa9], a
	call Functionfdb
	call WhiteBGMap
	call MaxVolume
	callba Function28ef8
	callba Function4d354
	callba Function16d673
	callba Function28eff
	call Function3200
	ret
; 4d354

Function4d354: ; 4d354
	call WaitBGMap
	call Function3200
	ret
; 4d35b


Function4d35b: ; 4d35b
	ld h, d
	ld l, e
	push bc
	push hl
	call Function4d37e
	pop hl
	pop bc
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	ld a, $7
.asm_4d36e
	push bc
	push hl
.asm_4d370
	ld [hli], a
	dec c
	jr nz, .asm_4d370
	pop hl
	ld de, $0014
	add hl, de
	pop bc
	dec b
	jr nz, .asm_4d36e
	ret
; 4d37e

Function4d37e: ; 4d37e
	push hl
	ld a, $76
	ld [hli], a
	inc a
	call Function4d3ab
	inc a
	ld [hl], a
	pop hl
	ld de, $0014
	add hl, de
.asm_4d38d
	push hl
	ld a, $79
	ld [hli], a
	ld a, $7f
	call Function4d3ab
	ld [hl], $7a
	pop hl
	ld de, $0014
	add hl, de
	dec b
	jr nz, .asm_4d38d
	ld a, $7b
	ld [hli], a
	ld a, $7c
	call Function4d3ab
	ld [hl], $7d
	ret
; 4d3ab

Function4d3ab: ; 4d3ab
	ld d, c
.asm_4d3ac
	ld [hli], a
	dec d
	jr nz, .asm_4d3ac
	ret
; 4d3b1

Function4d3b1: ; 4d3b1
	callba Function8000
	ld b, $8
	call GetSGBLayout
	call Functione51
	call Functione5f
	ld de, $0054
	call PlayMusic
	ld hl, $5408
	call PrintText
	ld hl, $540d
	call Function1d3c
	call Function1d81
	ret c
	ld a, [$cfa9]
	cp $1
	ret z
	call Function4d41e
	jr c, .asm_4d3f7
	ld a, $0
	call GetSRAMBank
	ld a, $80
	ld [$ac60], a
	call CloseSRAM
	ld hl, $53fe
	call PrintText
	ret

.asm_4d3f7
	ld hl, $5403
	call PrintText
	ret
; 4d3fe

INCBIN "baserom.gbc",$4d3fe,$4d41e - $4d3fe

Function4d41e: ; 4d41e
	call Function4d50f
	push de
	ld hl, StringBuffer2
	ld bc, $0005
	xor a
	call ByteFill
	ld a, $4
	ld [$d08b], a
	ld hl, $5463
	call PrintText
.asm_4d437
	call Function4d468
.asm_4d43a
	call Functiona57
	ld a, [$ffa9]
	ld b, a
	and $1
	jr nz, .asm_4d453
	ld a, b
	and $f0
	jr z, .asm_4d43a
	call Function4d490
	ld c, $3
	call DelayFrames
	jr .asm_4d437

.asm_4d453
	call Function4d4e0
	pop de
	ld a, e
	cp l
	jr nz, .asm_4d461
	ld a, d
	cp h
	jr nz, .asm_4d461
	and a
	ret

.asm_4d461
	scf
	ret
; 4d463

INCBIN "baserom.gbc",$4d463,$4d468 - $4d463

Function4d468: ; 4d468
	ld hl, $c5da
	ld de, StringBuffer2
	ld c, $5
.asm_4d470
	ld a, [de]
	add $f6
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_4d470
	ld hl, $c5ee
	ld bc, $0005
	ld a, $7f
	call ByteFill
	ld hl, $c5ee
	ld a, [$d08b]
	ld e, a
	ld d, $0
	add hl, de
	ld [hl], $61
	ret
; 4d490

Function4d490: ; 4d490
	ld a, b
	and $20
	jr nz, .asm_4d4a5
	ld a, b
	and $10
	jr nz, .asm_4d4af
	ld a, b
	and $40
	jr nz, .asm_4d4ba
	ld a, b
	and $80
	jr nz, .asm_4d4c8
	ret

.asm_4d4a5
	ld a, [$d08b]
	and a
	ret z
	dec a
	ld [$d08b], a
	ret

.asm_4d4af
	ld a, [$d08b]
	cp $4
	ret z
	inc a
	ld [$d08b], a
	ret

.asm_4d4ba
	call Function4d4d5
	ld a, [hl]
	cp $9
	jr z, .asm_4d4c5
	inc a
	ld [hl], a
	ret

.asm_4d4c5
	ld [hl], $0
	ret

.asm_4d4c8
	call Function4d4d5
	ld a, [hl]
	and a
	jr z, .asm_4d4d2
	dec a
	ld [hl], a
	ret

.asm_4d4d2
	ld [hl], $9
	ret
; 4d4d5

Function4d4d5: ; 4d4d5
	ld a, [$d08b]
	ld e, a
	ld d, $0
	ld hl, StringBuffer2
	add hl, de
	ret
; 4d4e0

Function4d4e0: ; 4d4e0
	ld hl, $0000
	ld de, $d08a
	ld bc, $0001
	call Function4d501
	ld bc, $000a
	call Function4d501
	ld bc, $0064
	call Function4d501
	ld bc, $03e8
	call Function4d501
	ld bc, $2710
Function4d501: ; 4d501
	ld a, [de]
	dec de
	push hl
	ld hl, $0000
	call AddNTimes
	ld c, l
	ld b, h
	pop hl
	add hl, bc
	ret
; 4d50f

Function4d50f: ; 4d50f
	ld a, $1
	call GetSRAMBank
	ld de, $0000
	ld hl, $a009
	ld c, $2
	call Function4d533
	ld hl, $a00b
	ld c, $5
	call Function4d53e
	ld hl, $a3dc
	ld c, $3
	call Function4d533
	call CloseSRAM
	ret
; 4d533

Function4d533: ; 4d533
.asm_4d533
	ld a, [hli]
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	dec c
	jr nz, .asm_4d533
	ret
; 4d53e

Function4d53e: ; 4d53e
.asm_4d53e
	ld a, [hli]
	cp $50
	ret z
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	dec c
	jr nz, .asm_4d53e
	ret
; 4d54c

Function4d54c: ; 4d54c
	callba Function8000
	ld b, $8
	call GetSGBLayout
	call Functione51
	call Functione5f
	ld de, $0054
	call PlayMusic
	ld hl, $5580
	call PrintText
	ld hl, $5585
	call Function1d3c
	call Function1d81
	ret c
	ld a, [$cfa9]
	cp $1
	ret z
	callba Function4cf1f
	ret
; 4d580

INCBIN "baserom.gbc",$4d580,$4d596 - $4d580

Tilesets:
INCLUDE "tilesets/tileset_headers.asm"


FlagPredef: ; 4d7c1
; Perform action b on flag c in flag array hl.
; If checking a flag, check flag array d:hl unless d is 0.

; For longer flag arrays, see FlagAction.

	push hl
	push bc

; Divide by 8 to get the byte we want.
	push bc
	srl c
	srl c
	srl c
	ld b, 0
	add hl, bc
	pop bc

; Which bit we want from the byte
	ld a, c
	and 7
	ld c, a

; Shift left until we can mask the bit
	ld a, 1
	jr z, .shifted
.shift
	add a
	dec c
	jr nz, .shift
.shifted
	ld c, a

; What are we doing to this flag?
	dec b
	jr z, .set ; 1
	dec b
	jr z, .check ; 2

.reset
	ld a, c
	cpl
	and [hl]
	ld [hl], a
	jr .done

.set
	ld a, [hl]
	or c
	ld [hl], a
	jr .done

.check
	ld a, d
	cp 0
	jr nz, .farcheck

	ld a, [hl]
	and c
	jr .done

.farcheck
	call GetFarByte
	and c

.done
	pop bc
	pop hl
	ld c, a
	ret
; 4d7fd

Function4d7fd: ; 4d7fd
	ld a, [PlayerLightScreenCount]
	ld hl, $c72f
	ld de, VTiles2
	push de
	push af
	ld a, $2d
	call Predef
	pop af
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData
	pop de
	ld a, $3e
	call Predef
	ret
; 4d81e

INCBIN "baserom.gbc",$4d81e,$4d860 - $4d81e

CheckPokerus: ; 4d860
; Return carry if a monster in your party has Pokerus

; Get number of monsters to iterate over
	ld a, [PartyCount]
	and a
	jr z, .NoPokerus
	ld b, a
; Check each monster in the party for Pokerus
	ld hl, PartyMon1PokerusStatus
	ld de, PartyMon2 - PartyMon1
.Check
	ld a, [hl]
	and $0f ; only the bottom nybble is used
	jr nz, .HasPokerus
; Next PartyMon
	add hl, de
	dec b
	jr nz, .Check
.NoPokerus
	and a
	ret
.HasPokerus
	scf
	ret
; 4d87a

Function4d87a: ; 4d87a
	xor a
	ld [ScriptVar], a
	ld [$d265], a
	ld a, [PartyCount]
	and a
	ret z
	ld d, a
	ld hl, PartyMon1ID
	ld bc, PartySpecies
.asm_4d88d
	ld a, [bc]
	inc bc
	cp $fd
	call nz, Function4d939
	push bc
	ld bc, $0030
	add hl, bc
	pop bc
	dec d
	jr nz, .asm_4d88d
	ld a, $1
	call GetSRAMBank
	ld a, [BoxCount]
	and a
	jr z, .asm_4d8c8
	ld d, a
	ld hl, BoxMon1ID
	ld bc, BoxSpecies
.asm_4d8af
	ld a, [bc]
	inc bc
	cp $fd
	jr z, .asm_4d8bf
	call Function4d939
	jr nc, .asm_4d8bf
	ld a, $1
	ld [$d265], a

.asm_4d8bf
	push bc
	ld bc, $0020
	add hl, bc
	pop bc
	dec d
	jr nz, .asm_4d8af

.asm_4d8c8
	call CloseSRAM
	ld c, $0
.asm_4d8cd
	ld a, [$db72]
	and $f
	cp c
	jr z, .asm_4d90b
	ld hl, $599f
	ld b, $0
	add hl, bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	call GetSRAMBank
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	and a
	jr z, .asm_4d90b
	push bc
	ld b, h
	ld c, l
	inc bc
	ld de, $001c
	add hl, de
	ld d, a
.asm_4d8f1
	ld a, [bc]
	inc bc
	cp $fd
	jr z, .asm_4d901
	call Function4d939
	jr nc, .asm_4d901
	ld a, $1
	ld [$d265], a

.asm_4d901
	push bc
	ld bc, $0020
	add hl, bc
	pop bc
	dec d
	jr nz, .asm_4d8f1
	pop bc

.asm_4d90b
	inc c
	ld a, c
	cp $e
	jr c, .asm_4d8cd
	call CloseSRAM
	ld a, [ScriptVar]
	and a
	ret z
	callba Function1060cd
	ld a, [$d265]
	and a
	push af
	ld a, [CurPartySpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, $59c9
	pop af
	jr z, .asm_4d936
	ld hl, $59ce

.asm_4d936
	jp PrintText
; 4d939

Function4d939: ; 4d939
	push bc
	push de
	push hl
	ld d, h
	ld e, l
	ld hl, Buffer1
	ld bc, $8205
	call PrintNum
	ld hl, DefaultFlypoint
	ld de, $dc9f
	ld bc, $8205
	call PrintNum
	ld b, $5
	ld c, $0
	ld hl, EndFlypoint
	ld de, $d1ee
.asm_4d95d
	ld a, [de]
	cp [hl]
	jr nz, .asm_4d967
	dec de
	dec hl
	inc c
	dec b
	jr nz, .asm_4d95d

.asm_4d967
	pop hl
	push hl
	ld de, $fffa
	add hl, de
	ld a, [hl]
	pop hl
	pop de
	push af
	ld a, c
	ld b, $1
	cp $5
	jr z, .asm_4d984
	ld b, $2
	cp $3
	jr nc, .asm_4d984
	ld b, $3
	cp $2
	jr nz, .asm_4d99b

.asm_4d984
	inc b
	ld a, [ScriptVar]
	and a
	jr z, .asm_4d98e
	cp b
	jr c, .asm_4d99b

.asm_4d98e
	dec b
	ld a, b
	ld [ScriptVar], a
	pop bc
	ld a, b
	ld [CurPartySpecies], a
	pop bc
	scf
	ret

.asm_4d99b
	pop bc
	pop bc
	and a
	ret
; 4d99f

INCBIN "baserom.gbc",$4d99f,$4d9d3 - $4d99f

Function4d9d3: ; 4d9d3
	ld hl, StringBuffer3
	ld de, $dc9f
	ld bc, $8205
	call PrintNum
	ld a, $50
	ld [$d09e], a
	ret
; 4d9e5

Function4d9e5: ; 4d9e5
	ld a, [$df9c]
	and a
	jp z, Function4db35
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call GetBaseData
	ld hl, PartyCount
	ld a, [hl]
	cp $6
	jp nc, Function4daa3
	inc a
	ld [hl], a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [$df9c]
	ld [hli], a
	ld [CurSpecies], a
	ld a, $ff
	ld [hl], a
	ld hl, PartyMon1Species
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, $df9c
	ld bc, $0030
	call CopyBytes
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1OT
	call SkipNames
	ld d, h
	ld e, l
	ld hl, PlayerName
	call CopyBytes
	ld a, [CurPartySpecies]
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld de, $d050
	ld bc, $000b
	call CopyBytes
	call Function4db3b
	jr c, .asm_4da66
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	xor a
	ld [MonType], a
	ld de, $d050
	callab Functione3de

.asm_4da66
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Nickname
	call SkipNames
	ld d, h
	ld e, l
	ld hl, $d050
	call CopyBytes
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1Level
	call GetPartyLocation
	ld a, [hl]
	ld [CurPartyLevel], a
	call Function4db49
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1CaughtLocation
	call GetPartyLocation
	ld a, [hl]
	and $80
	ld b, $13
	or b
	ld [hl], a
	xor a
	ld [$df9c], a
	and a
	ld [ScriptVar], a
	ret
; 4daa3

Function4daa3: ; 4daa3
	ld a, $1
	call GetSRAMBank
	ld hl, BoxCount
	ld a, [hl]
	cp $14
	call CloseSRAM
	jr nc, .asm_4db08
	xor a
	ld [CurPartyMon], a
	ld hl, $df9c
	ld de, $d018
	ld bc, $0020
	call CopyBytes
	ld hl, PlayerName
	ld de, $d00d
	ld bc, $000b
	call CopyBytes
	callab Function51322
	ld a, [CurPartySpecies]
	ld [$d265], a
	call GetPokemonName
	call Function4db3b
	ld hl, StringBuffer1
	jr c, .asm_4daf7
	ld a, $2
	ld [MonType], a
	ld de, $d050
	callab Functione3de
	ld hl, $d050

.asm_4daf7
	ld a, $1
	call GetSRAMBank
	ld de, BoxMon1Nickname
	ld bc, $000b
	call CopyBytes
	call CloseSRAM

.asm_4db08
	ld a, $1
	call GetSRAMBank
	ld a, [BoxMon1Level]
	ld [CurPartyLevel], a
	call CloseSRAM
	call Function4db83
	ld a, $1
	call GetSRAMBank
	ld hl, BoxMon1CaughtLocation
	ld a, [hl]
	and $80
	ld b, $13
	or b
	ld [hl], a
	call CloseSRAM
	xor a
	ld [$df9c], a
	ld a, $1
	ld [ScriptVar], a
	ret
; 4db35

Function4db35: ; 4db35
	ld a, $2
	ld [ScriptVar], a
	ret
; 4db3b


Function4db3b: ; 4db3b
	ld hl, $5b44
	call PrintText
	jp Function1dcf
; 4db44

INCBIN "baserom.gbc",$4db44,$4db49 - $4db44


Function4db49: ; 4db49
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1CaughtLevel
	call GetPartyLocation
Function4db53: ; 4db53
	ld a, [TimeOfDay]
	inc a
	rrca
	rrca
	ld b, a
	ld a, [CurPartyLevel]
	or b
	ld [hli], a
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	cp $1
	jr nz, .asm_4db78
	ld a, b
	cp $14
	jr nz, .asm_4db78
	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a

.asm_4db78
	call GetWorldMapLocation
	ld b, a
	ld a, [PlayerGender]
	rrca
	or b
	ld [hl], a
	ret
; 4db83

Function4db83: ; 4db83
	ld a, $1
	call GetSRAMBank
	ld hl, BoxMon1CaughtLevel
	call Function4db53
	call CloseSRAM
	ret
; 4db92

Function4db92: ; 4db92
	push bc
	ld a, $1
	call GetSRAMBank
	ld hl, BoxMon1CaughtLevel
	pop bc
	call Function4dbaf
	call CloseSRAM
	ret
; 4dba3

Function4dba3: ; 4dba3
	ld a, [PartyCount]
	dec a
	ld hl, PartyMon1CaughtLevel
	push bc
	call GetPartyLocation
	pop bc
Function4dbaf: ; 4dbaf
	xor a
	ld [hli], a
	ld a, $7e
	rrc b
	or b
	ld [hl], a
	ret
; 4dbb8


; no known jump sources
Function4dbb8: ; 4dbb8 (13:5bb8)
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMon1CaughtLevel ; $dcfc
	call GetPartyLocation
	ld a, [CurPartyLevel] ; $d143
	push af
	ld a, $1
	ld [CurPartyLevel], a ; $d143
	call Function4db53
	pop af
	ld [CurPartyLevel], a ; $d143
	ret

Function4dbd2: ; 4dbd2
	ld hl, PartyMon1Level
	call Function4dc31
	ret
; 4dbd9

Function4dbd9: ; 4dbd9
	ld hl, PartyMon1Happiness
	call Function4dc0a
	ret
; 4dbe0

Function4dbe0: ; 4dbe0
	ld hl, PartyMon1Species
	jp Function4dc56
; 4dbe6

Function4dbe6: ; 4dbe6
	ld hl, PartyMon1Species
	call Function4dc56
	ret z
	ld a, c
	ld hl, PartyMon1ID
	ld bc, $0030
	call AddNTimes
	ld a, [PlayerID]
	cp [hl]
	jr nz, .asm_4dc08
	inc hl
	ld a, [$d47c]
	cp [hl]
	jr nz, .asm_4dc08
	ld a, $1
	and a
	ret

.asm_4dc08
	xor a
	ret
; 4dc0a

Function4dc0a: ; 4dc0a
	ld c, $0
	ld a, [PartyCount]
	ld d, a
.asm_4dc10
	ld a, d
	dec a
	push hl
	push bc
	ld bc, $0030
	call AddNTimes
	pop bc
	ld a, b
	cp [hl]
	pop hl
	jr z, .asm_4dc22
	jr nc, .asm_4dc26

.asm_4dc22
	ld a, c
	or $1
	ld c, a

.asm_4dc26
	sla c
	dec d
	jr nz, .asm_4dc10
	call Function4dc67
	ld a, c
	and a
	ret
; 4dc31

Function4dc31: ; 4dc31
	ld c, $0
	ld a, [PartyCount]
	ld d, a
.asm_4dc37
	ld a, d
	dec a
	push hl
	push bc
	ld bc, $0030
	call AddNTimes
	pop bc
	ld a, b
	cp [hl]
	pop hl
	jr c, .asm_4dc4b
	ld a, c
	or $1
	ld c, a

.asm_4dc4b
	sla c
	dec d
	jr nz, .asm_4dc37
	call Function4dc67
	ld a, c
	and a
	ret
; 4dc56

Function4dc56: ; 4dc56
	ld c, $ff
	ld hl, PartySpecies
.asm_4dc5b
	ld a, [hli]
	cp $ff
	ret z
	inc c
	cp b
	jr nz, .asm_4dc5b
	ld a, $1
	and a
	ret
; 4dc67

Function4dc67: ; 4dc67
	ld e, $fe
	ld hl, PartySpecies
.asm_4dc6c
	ld a, [hli]
	cp $ff
	ret z
	cp $fd
	jr nz, .asm_4dc77
	ld a, c
	and e
	ld c, a

.asm_4dc77
	rlc e
	jr .asm_4dc6c
; 4dc7b


; no known jump sources
Function4dc7b: ; 4dc7b (13:5c7b)
	ld a, [InLinkBattle] ; $c2dc
	cp $4
	jr nz, StatsScreenInit
	ld a, [IsInBattle] ; $d22d (aliases: EnemyMonEnd)
	and a
	jr z, StatsScreenInit
	jr asm_4dc8f

StatsScreenInit: ; 4dc8a
	ld hl, StatsScreenMain
	jr StatsScreenInit_gotaddress
asm_4dc8f:
	ld hl, $5cf7
	jr StatsScreenInit_gotaddress
StatsScreenInit_gotaddress
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a ; disable overworld tile animations
	ld a, [$c2c6] ; whether sprite is to be mirrorred
	push af
	ld a, [$cf63]
	ld b, a
	ld a, [$cf64]
	ld c, a
	push bc
	push hl
	call WhiteBGMap
	call ClearTileMap
	call Function1ad2
	callba Functionfb53e
	pop hl
	call _hl_
	call WhiteBGMap
	call ClearTileMap
	pop bc
	; restore old values
	ld a, b
	ld [$cf63], a
	ld a, c
	ld [$cf64], a
	pop af
	ld [$c2c6], a
	pop af
	ld [$ffde], a
	ret
; 0x4dcd2

StatsScreenMain: ; 0x4dcd2
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld a, [$cf64]
	and $fc
	or $1
	ld [$cf64], a
.loop ; 4dce3
	ld a, [$cf63]
	and $7f
	ld hl, StatsScreenPointerTable
	rst JumpTable
	call Function4dd3a ; check for keys?
	ld a, [$cf63]
	bit 7, a
	jr z, .loop
	ret
; 0x4dcf7

INCBIN "baserom.gbc",$4dcf7,$4dd2a - $4dcf7

StatsScreenPointerTable: ; 4dd2a
	dw $5d72 ; regular pokémon
	dw EggStatsInit ; egg
	dw $5de6
	dw $5dac
	dw $5dc6
	dw $5de6
	dw $5dd6
	dw $5d6c

; 4dd3a


; known jump sources: 4dcec (13:5cec)
Function4dd3a: ; 4dd3a (13:5d3a)
	ld hl, $cf64
	bit 6, [hl]
	jr nz, .asm_4dd49
	bit 5, [hl]
	jr nz, .asm_4dd56
	call DelayFrame
	ret
.asm_4dd49
	callba Functiond00b4
	jr nc, .asm_4dd56
	ld hl, $cf64
	res 6, [hl]
.asm_4dd56
	ld hl, $cf64
	res 5, [hl]
	callba Function10402d
	ret

; known jump sources: 4dd97 (13:5d97), 4dd9d (13:5d9d), 4ddb3 (13:5db3), 4ddc2 (13:5dc2), 4dddd (13:5ddd), 4deda (13:5eda), 4dee0 (13:5ee0), 4dee6 (13:5ee6)
Function4dd62: ; 4dd62 (13:5d62)
	ld a, [$cf63]
	and $80
	or h
	ld [$cf63], a
	ret

; no known jump sources
Function4dd6c: ; 4dd6c (13:5d6c)
	ld hl, $cf63
	set 7, [hl]
	ret

; no known jump sources
Function4dd72: ; 4dd72 (13:5d72)
	ld hl, $cf64
	res 6, [hl]
	call WhiteBGMap
	call ClearTileMap
	callba Function10402d
	call Function4ddf2
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr z, .asm_4dd9b
	call Function4deea
	ld hl, $cf64
	set 4, [hl]
	ld h, $4
	call Function4dd62
	ret
.asm_4dd9b
	ld h, $1
	call Function4dd62
	ret

EggStatsInit: ; 4dda1
	call EggStatsScreen
	ld a, [$cf63]
	inc a
	ld [$cf63], a
	ret
; 0x4ddac


; no known jump sources
Function4ddac: ; 4ddac (13:5dac)
	call Function4de2c
	jr nc, .asm_4ddb7
	ld h, $0
	call Function4dd62
	ret
.asm_4ddb7
	bit 0, a
	jr nz, .asm_4ddc0
	and $c3
	jp Function4de54
.asm_4ddc0
	ld h, $7
	call Function4dd62
	ret

; no known jump sources
Function4ddc6: ; 4ddc6 (13:5dc6)
	call Function4dfb6
	ld hl, $cf64
	res 4, [hl]
	ld a, [$cf63]
	inc a
	ld [$cf63], a
	ret

; no known jump sources
Function4ddd6: ; 4ddd6 (13:5dd6)
	call Function4de2c
	jr nc, .asm_4dde1
	ld h, $0
	call Function4dd62
	ret
.asm_4dde1
	and $f3
	jp Function4de54

; no known jump sources
Function4dde6: ; 4dde6 (13:5de6)
	call Function3c74
	ret nc
	ld a, [$cf63]
	inc a
	ld [$cf63], a
	ret

; known jump sources: 4dd83 (13:5d83)
Function4ddf2: ; 4ddf2 (13:5df2)
	ld a, [MonType] ; $cf5f
	cp $3
	jr nz, .asm_4de10
	ld a, [$d018]
	ld [CurSpecies], a ; $cf60
	call GetBaseData
	ld hl, $d018
	ld de, TempMonSpecies ; $d10e (aliases: TempMon)
	ld bc, $30
	call CopyBytes
	jr .asm_4de2a
.asm_4de10
	callba Function5084a
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr z, .asm_4de2a
	ld a, [MonType] ; $cf5f
	cp $2
	jr c, .asm_4de2a
	callba Function50890
.asm_4de2a
	and a
	ret

; known jump sources: 4ddac (13:5dac), 4ddd6 (13:5dd6)
Function4de2c: ; 4de2c (13:5e2c)
	call GetJoypadPublic
	ld a, [MonType] ; $cf5f
	cp $3
	jr nz, .asm_4de4e
	push hl
	push de
	push bc
	callba Functione2f95
	pop bc
	pop de
	pop hl
	ld a, [$cf73]
	and $c0
	jr nz, .asm_4de52
	ld a, [$cf73]
	jr .asm_4de50
.asm_4de4e
	ld a, [hJoyPressed] ; $ff00+$a7
.asm_4de50
	and a
	ret
.asm_4de52
	scf
	ret

; known jump sources: 4ddbd (13:5dbd), 4dde3 (13:5de3)
Function4de54: ; 4de54 (13:5e54)
	push af
	ld a, [$cf64]
	and $3
	ld c, a
	pop af
	bit 1, a
	jp nz, Function4dee4
	bit 5, a
	jr nz, .asm_4dec7
	bit 4, a
	jr nz, .asm_4debd
	bit 0, a
	jr nz, .asm_4deb8
	bit 6, a
	jr nz, .asm_4dea0
	bit 7, a
	jr nz, .asm_4de77
	jr .asm_4dece
.asm_4de77
	ld a, [MonType] ; $cf5f
	cp $2
	jr nc, .asm_4dece
	and a
	ld a, [PartyCount] ; $dcd7
	jr z, .asm_4de87
	ld a, [OTPartyCount] ; $d280
.asm_4de87
	ld b, a
	ld a, [CurPartyMon] ; $d109
	inc a
	cp b
	jr z, .asm_4dece
	ld [CurPartyMon], a ; $d109
	ld b, a
	ld a, [MonType] ; $cf5f
	and a
	jr nz, .asm_4dede
	ld a, b
	inc a
	ld [$d0d8], a
	jr .asm_4dede
.asm_4dea0
	ld a, [CurPartyMon] ; $d109
	and a
	jr z, .asm_4dece
	dec a
	ld [CurPartyMon], a ; $d109
	ld b, a
	ld a, [MonType] ; $cf5f
	and a
	jr nz, .asm_4dede
	ld a, b
	inc a
	ld [$d0d8], a
	jr .asm_4dede
.asm_4deb8
	ld a, c
	cp $3
	jr z, Function4dee4
.asm_4debd
	inc c
	ld a, $3
	cp c
	jr nc, .asm_4decf
	ld c, $1
	jr .asm_4decf
.asm_4dec7
	dec c
	jr nz, .asm_4decf
	ld c, $3
	jr .asm_4decf
.asm_4dece
	ret
.asm_4decf
	ld a, [$cf64]
	and $fc
	or c
	ld [$cf64], a
	ld h, $4
	call Function4dd62
	ret
.asm_4dede
	ld h, $0
	call Function4dd62
	ret

; known jump sources: 4de5e (13:5e5e), 4debb (13:5ebb)
Function4dee4: ; 4dee4 (13:5ee4)
	ld h, $7
	call Function4dd62
	ret

; known jump sources: 4dd8d (13:5d8d)
Function4deea: ; 4deea (13:5eea)
	call Function4df45
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [CurBaseData] ; $d236 (aliases: BaseDexNo)
	ld [$d265], a
	ld [CurSpecies], a ; $cf60
	ld hl, $c4a8
	ld [hl], $74
	inc hl
	ld [hl], $e8
	inc hl
	ld hl, $c4aa
	ld bc, $8103
	ld de, $d265
	call PrintNum
	ld hl, $c4ae
	call PrintLevel
	ld hl, $5f77
	call Function4e528
	call Function4e505
	ld hl, $c4d0
	call PlaceString
	ld hl, $c4b2
	call Function4df66
	ld hl, $c4f9
	ld a, $f3
	ld [hli], a
	ld a, [CurBaseData] ; $d236 (aliases: BaseDexNo)
	ld [$d265], a
	call GetPokemonName
	call PlaceString
	call Function4df8f
	call Function4df9b
	call Function4dfa6
	ret

; known jump sources: 4deea (13:5eea)
Function4df45: ; 4df45 (13:5f45)
	ld hl, TempMonCurHP ; $d130
	ld a, [hli]
	ld b, a
	ld c, [hl]
	ld hl, TempMonMaxHP ; $d132
	ld a, [hli]
	ld d, a
	ld e, [hl]
	callba Functionc699
	ld hl, $cda1
	call SetHPPal
	ld b, $3
	call GetSGBLayout
	call DelayFrame
	ret

; known jump sources: 4df26 (13:5f26)
Function4df66: ; 4df66 (13:5f66)
	push hl
	callba GetGender
	pop hl
	ret c
	ld a, $ef
	jr nz, .asm_4df75
	ld a, $f5
.asm_4df75
	ld [hl], a
	ret
; 4df77 (13:5f77)

INCBIN "baserom.gbc",$4df77,$4df8f - $4df77

; known jump sources: 4df3b (13:5f3b), 4e348 (13:6348)
Function4df8f: ; 4df8f (13:5f8f)
	ld hl, $c52c
	ld b, $14
	ld a, $62
.asm_4df96
	ld [hli], a
	dec b
	jr nz, .asm_4df96
	ret

; known jump sources: 4df3e (13:5f3e)
Function4df9b: ; 4df9b (13:5f9b)
	ld hl, $c524
	ld [hl], $71
	ld hl, $c52b
	ld [hl], $ed
	ret

; known jump sources: 4df41 (13:5f41)
Function4dfa6: ; 4dfa6 (13:5fa6)
	ld bc, TempMonDVs ; $d123
	callba CheckShininess
	ret nc
	ld hl, $c4b3
	ld [hl], $3f
	ret

; known jump sources: 4ddc6 (13:5dc6)
Function4dfb6: ; 4dfb6 (13:5fb6)
	ld a, [CurBaseData] ; $d236 (aliases: BaseDexNo)
	ld [$d265], a
	ld [CurSpecies], a ; $cf60
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function4dfda
	call Function4e002
	call Function4dfed
	ld hl, $cf64
	bit 4, [hl]
	jr nz, .asm_4dfd6
	call Function32f9
	ret
.asm_4dfd6
	call Function4e226
	ret

; known jump sources: 4dfc2 (13:5fc2)
Function4dfda: ; 4dfda (13:5fda)
	ld a, [$cf64]
	and $3
	ld c, a
	call Function4e4cd
	ld hl, $c540
	ld bc, $a14
	call ClearBox
	ret

; known jump sources: 4dfc8 (13:5fc8)
Function4dfed: ; 4dfed (13:5fed)
	ld a, [$cf64]
	and $3
	ld c, a
	callba Function8c8a
	call DelayFrame
	ld hl, $cf64
	set 5, [hl]
	ret

; known jump sources: 4dfc5 (13:5fc5)
Function4e002: ; 4e002 (13:6002)
	ld a, [$cf64]
	and $3
	dec a
	ld hl, $600d
	rst $28
	ret

; no known jump sources
Jumptable_4e00d: ; 4e00d (13:600d)
	dw Function4e013
	dw Function4e147
	dw Function4e1ae


; no known jump sources
Function4e013: ; 4e013 (13:6013)
	ld hl, $c554
	ld b, $0
	ld a, $26
	call Predef
	ld hl, $c55c
	ld [hl], $41
	ld de, $6119
	ld hl, $c590
	call PlaceString
	ld a, [$d12a]
	ld b, a
	and $f
	jr nz, .asm_4e055
	ld a, b
	and $f0
	jr z, .asm_4e03d
	ld hl, $c548
	ld [hl], $e8
.asm_4e03d
	ld a, [MonType] ; $cf5f
	cp $2
	jr z, .asm_4e060
	ld hl, $c5aa
	push hl
	ld de, TempMonStatus ; $d12e
	ld a, $45
	call Predef
	pop hl
	jr nz, .asm_4e066
	jr .asm_4e060
.asm_4e055
	ld de, $6142
	ld hl, $c5a5
	call PlaceString
	jr .asm_4e066
.asm_4e060
	ld de, $6127
	call PlaceString
.asm_4e066
	ld hl, $c5cd
	ld a, $2c
	call Predef
	ld hl, $c549
	ld de, $14
	ld b, $a
	ld a, $31
.asm_4e078
	ld [hl], a
	add hl, de
	dec b
	jr nz, .asm_4e078
	ld de, $612b
	ld hl, $c55e
	call PlaceString
	ld hl, $c5c9
	call Function4e0d3
	ld hl, $c575
	ld bc, $307
	ld de, TempMonExp ; $d116
	call PrintNum
	call Function4e0e7
	ld hl, $c5b1
	ld bc, $307
	ld de, Buffer1 ; $d1ea (aliases: MagikarpLength)
	call PrintNum
	ld de, $6136
	ld hl, $c59a
	call PlaceString
	ld de, $613f
	ld hl, $c5c6
	call PlaceString
	ld hl, $c5eb
	ld a, [TempMonLevel] ; $d12d
	ld b, a
	ld de, $d118
	ld a, $17
	call Predef
	ld hl, $c5ea
	ld [hl], $40
	ld hl, $c5f3
	ld [hl], $41
	ret

; known jump sources: 4e089 (13:6089)
Function4e0d3: ; 4e0d3 (13:60d3)
	ld a, [TempMonLevel] ; $d12d
	push af
	cp $64
	jr z, .asm_4e0df
	inc a
	ld [TempMonLevel], a ; $d12d
.asm_4e0df
	call PrintLevel
	pop af
	ld [TempMonLevel], a ; $d12d
	ret

; known jump sources: 4e098 (13:6098)
Function4e0e7: ; 4e0e7 (13:60e7)
	ld a, [TempMonLevel] ; $d12d
	cp $64
	jr z, .asm_4e111
	inc a
	ld d, a
	callba Function50e47
	ld hl, $d118
	ld hl, $d118
	ld a, [$FF00+$b6]
	sub [hl]
	dec hl
	ld [$d1ec], a
	ld a, [$FF00+$b5]
	sbc [hl]
	dec hl
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	sbc [hl]
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	ret
.asm_4e111
	ld hl, Buffer1 ; $d1ea (aliases: MagikarpLength)
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ret
; 4e119 (13:6119)

INCBIN "baserom.gbc",$4e119,$4e147 - $4e119

; no known jump sources
Function4e147: ; 4e147 (13:6147)
	ld de, $61a0
	ld hl, $c540
	call PlaceString
	call Function4e189
	ld hl, $c548
	call PlaceString
	ld de, $61a9
	ld hl, $c568
	call PlaceString
	ld hl, TempMonMoves ; $d110 (aliases: TempMonMove1)
	ld de, $d25e
	ld bc, $4
	call CopyBytes
	ld hl, $c570
	ld a, $28
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	ld a, $20
	call Predef
	ld hl, $c588
	ld a, $28
	ld [Buffer1], a ; $d1ea (aliases: MagikarpLength)
	ld a, $23
	call Predef
	ret

; known jump sources: 4e150 (13:6150)
Function4e189: ; 4e189 (13:6189)
	ld de, $61a5
	ld a, [TempMonItem] ; $d10f
	and a
	ret z
	ld b, a
	callba Function28771
	ld a, b
	ld [$d265], a
	call GetItemName
	ret
; 4e1a0 (13:61a0)

INCBIN "baserom.gbc",$4e1a0,$4e1ae - $4e1a0

; no known jump sources
Function4e1ae: ; 4e1ae (13:61ae)
	call Function4e1cc
	ld hl, $c54a
	ld de, $14
	ld b, $a
	ld a, $31
.asm_4e1bb
	ld [hl], a
	add hl, de
	dec b
	jr nz, .asm_4e1bb
	ld hl, $c54b
	ld bc, $6
	ld a, $28
	call Predef
	ret

; known jump sources: 4e1ae (13:61ae)
Function4e1cc: ; 4e1cc (13:61cc)
	ld de, $621e
	ld hl, $c554
	call PlaceString
	ld de, $6222
	ld hl, $c590
	call PlaceString
	ld hl, $c56a
	ld bc, $8205
	ld de, TempMonID ; $d114
	call PrintNum
	ld hl, $6216
	call Function4e528
	call Function4e505
	callba CheckNickErrors
	ld hl, $c5a6
	call PlaceString
	ld a, [$d12c]
	and a
	jr z, .asm_4e215
	cp $7f
	jr z, .asm_4e215
	and $80
	ld a, $ef
	jr z, .asm_4e211
	ld a, $f5
.asm_4e211
	ld hl, $c5ad
	ld [hl], a
.asm_4e215
	ret
; 4e216 (13:6216)

INCBIN "baserom.gbc",$4e216,$4e21e - $4e216

IDNoString: ; 4e21e
	db $73, "№.@"

OTString: ; 4e222
	db "OT/@"
; 4e226


; known jump sources: 4dfd6 (13:5fd6)
Function4e226: ; 4e226 (13:6226)
	ld hl, TempMonDVs ; $d123
	ld a, $2d
	call Predef
	call Function4e2ad
	jr c, .asm_4e238
	and a
	jr z, .asm_4e23f
	jr .asm_4e246
.asm_4e238
	call Function4e271
	call Function32f9
	ret
.asm_4e23f
	call Function4e253
	call Function32f9
	ret
.asm_4e246
	call Function32f9
	call Function4e253
	ld a, [CurPartySpecies] ; $d108
	call Function37d5
	ret

; known jump sources: 4e23f (13:623f), 4e249 (13:6249)
Function4e253: ; 4e253 (13:6253)
	ld hl, $cf64
	set 5, [hl]
	ld a, [CurPartySpecies] ; $d108
	cp $c9
	jr z, .asm_4e266
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	call Function3786
	ret
.asm_4e266
	xor a
	ld [$c2c6], a
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	call Function378b
	ret

; known jump sources: 4e238 (13:6238)
Function4e271: ; 4e271 (13:6271)
	ld a, [CurPartySpecies] ; $d108
	cp $c9
	jr z, .asm_4e281
	ld a, $1
	ld [$c2c6], a
	call Function4e289
	ret
.asm_4e281
	xor a
	ld [$c2c6], a
	call Function4e289
	ret

; known jump sources: 4e27d (13:627d), 4e285 (13:6285)
Function4e289: ; 4e289 (13:6289)
	ld a, [CurPartySpecies] ; $d108
	call IsAPokemon
	ret c
	call Function4e307
	ld de, $9000
	ld a, $3e
	call Predef
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld d, $0
	ld e, $2
	ld a, $46
	call Predef
	ld hl, $cf64
	set 6, [hl]
	ret

; known jump sources: 4e22e (13:622e), 4e497 (13:6497)
Function4e2ad: ; 4e2ad (13:62ad)
	ld a, [MonType] ; $cf5f
	ld hl, $62b5
	rst $28
	ret

; no known jump sources
Jumptable_4e2b5: ; 4e2b5 (13:62b5)
	dw Function4e2bf
	dw Function4e2cf
	dw Function4e2d1
	dw Function4e2ed
	dw Function4e301


; no known jump sources
Function4e2bf: ; 4e2bf (13:62bf)
	ld a, [CurPartyMon] ; $d109
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	call AddNTimes
	ld b, h
	ld c, l
	jr Function4e2f2

; no known jump sources
Function4e2cf: ; 4e2cf (13:62cf)
	xor a
	ret

; no known jump sources
Function4e2d1: ; 4e2d1 (13:62d1)
	ld hl, $ad26
	ld bc, $30
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld b, h
	ld c, l
	ld a, $1
	call GetSRAMBank
	call Function4e2f2
	push af
	call CloseSRAM
	pop af
	ret

; no known jump sources
Function4e2ed: ; 4e2ed (13:62ed)
	ld bc, TempMonSpecies ; $d10e (aliases: TempMon)
	jr Function4e2f2

; known jump sources: 4e2cd (13:62cd), 4e2e4 (13:62e4), 4e2f0 (13:62f0)
Function4e2f2: ; 4e2f2 (13:62f2)
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr z, .asm_4e2fe
	call Function4e53f
	jr c, asm_4e305
.asm_4e2fe
	xor a
	scf
	ret

; no known jump sources
Function4e301: ; 4e301 (13:6301)
	ld a, $1
	and a
	ret
asm_4e305: ; 4e305 (13:6305)
	xor a
	ret

; known jump sources: 4e290 (13:6290), 4e4b1 (13:64b1)
Function4e307: ; 4e307 (13:6307)
	nop
	push hl
	push de
	push bc
	push af
	call DelayFrame
	ld a, [rVBK] ; $ff00+$4f
	push af
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld de, $5204
	ld bc, $3e01
	ld hl, $97f0
	call Get2bpp
	pop af
	ld [rVBK], a ; $ff00+$4f
	pop af
	pop bc
	pop de
	pop hl
	ret
; 4e32a (13:632a)

INCBIN "baserom.gbc",$4e32a,$4e33a - $4e32a

EggStatsScreen: ; 4e33a
	xor a
	ld [hBGMapMode], a
	ld hl, $cda1
	call SetHPPal
	ld b, $3
	call GetSGBLayout
	call Function4df8f
	ld de, EggString
	hlcoord 8, 1 ; $c4bc
	call PlaceString
	ld de, IDNoString
	hlcoord 8, 3 ; $c4e4
	call PlaceString
	ld de, OTString
	hlcoord 8, 5 ; $c50c
	call PlaceString
	ld de, FiveQMarkString
	hlcoord 11, 3 ; $c4e7
	call PlaceString
	ld de, FiveQMarkString
	hlcoord 11, 5 ; $c50f
	call PlaceString
	ld a, [TempMonHappiness] ; egg status
	ld de, EggSoonString
	cp $6
	jr c, .picked
	ld de, EggCloseString
	cp $b
	jr c, .picked
	ld de, EggMoreTimeString
	cp $29
	jr c, .picked
	ld de, EggALotMoreTimeString
.picked
	hlcoord 1, 9 ; $c555
	call PlaceString
	ld hl, $cf64
	set 5, [hl]
	call Function32f9 ; pals
	call DelayFrame
	ld hl, TileMap
	call Function3786
	callba Function10402d
	call Function4e497

	ld a, [TempMonHappiness]
	cp 6
	ret nc
	ld de, SFX_2_BOOPS
	call PlaySFX
	ret
; 0x4e3c0

EggString: ; 4e3c0
	db "EGG@"

FiveQMarkString: ; 4e3c4
	db "?????@"

EggSoonString: ; 0x4e3ca
	db "It's making sounds", $4e, "inside. It's going", $4e, "to hatch soon!@"

EggCloseString: ; 0x4e3fd
	db "It moves around", $4e, "inside sometimes.", $4e, "It must be close", $4e, "to hatching.@"

EggMoreTimeString: ; 0x4e43d
	db "Wonder what's", $4e, "inside? It needs", $4e, "more time, though.@"

EggALotMoreTimeString: ; 0x4e46e
	db "This EGG needs a", $4e, "lot more time to", $4e, "hatch.@"

; 0x4e497


; known jump sources: 4e3b0 (13:63b0)
Function4e497: ; 4e497 (13:6497)
	call Function4e2ad
	ret nc
	ld a, [TempMonHappiness] ; $d129
	ld e, $7
	cp $6
	jr c, .asm_4e4ab
	ld e, $8
	cp $b
	jr c, .asm_4e4ab
	ret
.asm_4e4ab
	push de
	ld a, $1
	ld [$c2c6], a
	call Function4e307
	ld de, $9000
	ld a, $3e
	call Predef
	pop de
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld d, $0
	ld a, $46
	call Predef
	ld hl, $cf64
	set 6, [hl]
	ret

; known jump sources: 4dfe0 (13:5fe0)
Function4e4cd: ; 4e4cd (13:64cd)
	ld hl, $c511
	ld a, $36
	call Function4e4f7
	ld hl, $c513
	ld a, $36
	call Function4e4f7
	ld hl, $c515
	ld a, $36
	call Function4e4f7
	ld a, c
	cp $2
	ld a, $3a
	ld hl, $c511
	jr c, Function4e4f7
	ld hl, $c513
	jr z, Function4e4f7
	ld hl, $c515

; known jump sources: 4e4d2 (13:64d2), 4e4da (13:64da), 4e4e2 (13:64e2), 4e4ed (13:64ed), 4e4f2 (13:64f2)
Function4e4f7: ; 4e4f7 (13:64f7)
	push bc
	ld [hli], a
	inc a
	ld [hld], a
	ld bc, $14
	add hl, bc
	inc a
	ld [hli], a
	inc a
	ld [hl], a
	pop bc
	ret

; known jump sources: 4df1a (13:5f1a), 4e1f0 (13:61f0)
Function4e505: ; 4e505 (13:6505)
	ld de, StringBuffer1 ; $d073
	ld bc, $b
	jr .asm_4e50d
.asm_4e50d
	ld a, [MonType] ; $cf5f
	cp $2
	jr nz, .asm_4e522
	ld a, $1
	call GetSRAMBank
	push de
	call CopyBytes
	pop de
	call CloseSRAM
	ret
.asm_4e522
	push de
	call CopyBytes
	pop de
	ret

; known jump sources: 4df17 (13:5f17), 4e1ed (13:61ed)
Function4e528: ; 4e528 (13:6528)
	ld a, [MonType] ; $cf5f
	add a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [MonType] ; $cf5f
	cp $3
	ret z
	ld a, [CurPartyMon] ; $d109
	jp SkipNames


Function4e53f: ; 4e53f
	ld hl, $0022
	add hl, bc
	ld a, [hli]
	or [hl]
	jr z, .asm_4e552
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	and $27
	jr nz, .asm_4e552
	and a
	ret

.asm_4e552
	scf
	ret
; 4e554

Function4e554: ; 4e554
	ld a, [BattleType]
	dec a
	ld c, a
	ld hl, $6564
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 4e564


; no known jump sources
Jumptable_4e564: ; 4e564 (13:6564)
	dw Function4e56a
	dw Function4e56a
	dw Function4e56a


; no known jump sources
Function4e56a: ; 4e56a (13:656a)
	ld hl, PlayerName ; $d47d
	ld de, MomsName ; $d488
	ld bc, $b
	call CopyBytes
	ld hl, $65da
	ld de, PlayerName ; $d47d
	ld bc, $b
	call CopyBytes
	call Function4e5b7
	xor a
	ld [hJoyDown], a ; $ff00+$a8
	ld [hJoyPressed], a ; $ff00+$a7
	ld a, [Options] ; $cfcc
	push af
	and $f8
	add $3
	ld [Options], a ; $cfcc
	ld hl, $65df
	ld a, $13
	call StartAutoInput
	callab StartBattle
	call StopAutoInput
	pop af
	ld [Options], a ; $cfcc
	ld hl, MomsName ; $d488
	ld de, PlayerName ; $d47d
	ld bc, $b
	call CopyBytes
	ret

; known jump sources: 4e582 (13:6582)
Function4e5b7: ; 4e5b7 (13:65b7)
	ld hl, OTPartyMon1Species ; $d288 (aliases: OTPartyMon1)
	ld [hl], $1
	inc hl
	ld [hl], $12
	inc hl
	ld [hl], $1
	inc hl
	ld [hl], $ff
	ld hl, $d292
	ld [hl], $0
	inc hl
	ld [hl], $ff
	ld hl, $d2a6
	ld a, $1
	ld [hli], a
	ld a, $5
	ld [hli], a
	ld [hli], a
	ld [hl], $ff
	ret
; 4e5da (13:65da)

INCBIN "baserom.gbc",$4e5da,$4e5e1 - $4e5da


EvolutionAnimation: ; 4e5e1
	push hl
	push de
	push bc
	ld a, [CurSpecies]
	push af
	ld a, [rOBP0]
	push af
	ld a, [BaseDexNo]
	push af

	call _EvolutionAnimation

	pop af
	ld [BaseDexNo], a
	pop af
	ld [rOBP0], a
	pop af
	ld [CurSpecies], a
	pop bc
	pop de
	pop hl

	ld a, [$d1ed]
	and a
	ret z

	scf
	ret
; 4e607

_EvolutionAnimation: ; 4e607
	ld a, $e4
	ld [rOBP0], a

	ld de, MUSIC_NONE
	call PlayMusic

	callba Function8cf53

	ld de, EvolutionGFX
	ld hl, VTiles0
	ld bc, BANK(EvolutionGFX) << 8 + 8
	call Request2bpp

	xor a
	ld [Danger], a
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld a, [Buffer1]
	ld [PlayerHPPal], a

	ld c, $0
	call Function4e703
	ld a, [Buffer1]
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call Function4e708

	ld de, VTiles2
	ld hl, $9310
	ld bc, $0031
	call Request2bpp

	ld a, $31
	ld [$d1ec], a
	call Function4e755
	ld a, [Buffer2]
	ld [CurPartySpecies], a
	ld [CurSpecies], a
	call Function4e711
	ld a, [Buffer1]
	ld [CurPartySpecies], a
	ld [CurSpecies], a

	ld a, $1
	ld [hBGMapMode], a
	call Function4e794
	jr c, .asm_4e67c

	ld a, [Buffer1]
	call Function37ce

.asm_4e67c
	ld de, MUSIC_EVOLUTION
	call PlayMusic

	ld c, 80
	call DelayFrames

	ld c, $1
	call Function4e703
	call Function4e726
	jr c, .asm_4e6df

	ld a, $cf
	ld [$d1ec], a

	call Function4e755
	xor a
	ld [$d1ed], a

	ld a, [Buffer2]
	ld [PlayerHPPal], a

	ld c, $0
	call Function4e703
	call Function4e7a6
	callba Function8cf53
	call Function4e794
	jr c, .asm_4e6de

	ld a, [$c2c6]
	push af
	ld a, $1
	ld [$c2c6], a
	ld a, [CurPartySpecies]
	push af

	ld a, [PlayerHPPal]
	ld [CurPartySpecies], a
	ld hl, $c4cf
	ld d, $0
	ld e, $4
	ld a, $47
	call Predef

	pop af
	ld [CurPartySpecies], a
	pop af
	ld [$c2c6], a
	ret

.asm_4e6de
	ret

.asm_4e6df
	ld a, $1
	ld [$d1ed], a

	ld a, [Buffer1]
	ld [PlayerHPPal], a

	ld c, $0
	call Function4e703
	call Function4e7a6
	callba Function8cf53
	call Function4e794
	ret c

	ld a, [PlayerHPPal]
	call Function37ce
	ret
; 4e703

Function4e703: ; 4e703
	ld b, $b
	jp GetSGBLayout
; 4e708

Function4e708: ; 4e708
	call GetBaseData
	ld hl, $c4cf
	jp Function3786
; 4e711

Function4e711: ; 4e711
	call GetBaseData
	ld a, $1
	ld [$c2c6], a
	ld de, VTiles2
	ld a, $3e
	call Predef
	xor a
	ld [$c2c6], a
	ret
; 4e726

Function4e726: ; 4e726
	call ClearJoypadPublic
	ld bc, $010e
.asm_4e72c
	push bc
	call Function4e779
	pop bc
	jr c, .asm_4e73f
	push bc
	call Function4e741
	pop bc
	inc b
	dec c
	dec c
	jr nz, .asm_4e72c
	and a
	ret

.asm_4e73f
	scf
	ret
; 4e741

Function4e741: ; 4e741
.asm_4e741
	ld a, $cf
	ld [$d1ec], a
	call Function4e755
	ld a, $31
	ld [$d1ec], a
	call Function4e755
	dec b
	jr nz, .asm_4e741
	ret
; 4e755

Function4e755: ; 4e755
	push bc
	xor a
	ld [hBGMapMode], a
	ld hl, $c4cf
	ld bc, $0707
	ld de, $000d
.asm_4e762
	push bc
.asm_4e763
	ld a, [$d1ec]
	add [hl]
	ld [hli], a
	dec c
	jr nz, .asm_4e763
	pop bc
	add hl, de
	dec b
	jr nz, .asm_4e762
	ld a, $1
	ld [hBGMapMode], a
	call WaitBGMap
	pop bc
	ret
; 4e779

Function4e779: ; 4e779
.asm_4e779
	call DelayFrame
	push bc
	call Functiona57
	ld a, [hJoyDown]
	pop bc
	and $2
	jr nz, .asm_4e78c
.asm_4e787
	dec c
	jr nz, .asm_4e779
	and a
	ret

.asm_4e78c
	ld a, [$d1e9]
	and a
	jr nz, .asm_4e787
	scf
	ret
; 4e794

Function4e794: ; 4e794
	ld a, [CurPartyMon]
	ld hl, PartyMon1Species
	call GetPartyLocation
	ld b, h
	ld c, l
	callba Function4e53f
	ret
; 4e7a6

Function4e7a6: ; 4e7a6
	ld a, [$d1ed]
	and a
	ret nz
	ld de, SFX_EVOLVED
	call PlaySFX
	ld hl, $cf63
	ld a, [hl]
	push af
	ld [hl], $0
.asm_4e7b8
	call Function4e7cf
	jr nc, .asm_4e7c2
	call Function4e80c
	jr .asm_4e7b8

.asm_4e7c2
	ld c, $20
.asm_4e7c4
	call Function4e80c
	dec c
	jr nz, .asm_4e7c4
	pop af
	ld [$cf63], a
	ret
; 4e7cf

Function4e7cf: ; 4e7cf
	ld hl, $cf63
	ld a, [hl]
	cp $20
	ret nc
	ld d, a
	inc [hl]
	and $1
	jr nz, .asm_4e7e6
	ld e, $0
	call Function4e7e8
	ld e, $10
	call Function4e7e8

.asm_4e7e6
	scf
	ret
; 4e7e8

Function4e7e8: ; 4e7e8
	push de
	ld de, $4858
	ld a, $13
	call Function3b2a
	ld hl, $000b
	add hl, bc
	ld a, [$cf63]
	and $e
	sla a
	pop de
	add e
	ld [hl], a
	ld hl, $0003
	add hl, bc
	ld [hl], $0
	ld hl, $000c
	add hl, bc
	ld [hl], $10
	ret
; 4e80c

Function4e80c: ; 4e80c
	push bc
	callab Function8cf69
	ld a, [$ff9b]
	and $e
	srl a
	inc a
	inc a
	and $7
	ld b, a
	ld hl, $c403
	ld c, $28
.asm_4e823
	ld a, [hl]
	or b
	ld [hli], a
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_4e823
	pop bc
	call DelayFrame
	ret
; 4e831


EvolutionGFX:
INCBIN "gfx/evo/bubble_large.2bpp"
INCBIN "gfx/evo/bubble.2bpp"

Function4e881: ; 4e881
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	call Functione51
	call Functione58
	ld hl, VBGMap0
	ld bc, VBlank5
	ld a, $7f
	call ByteFill
	ld hl, AttrMap
	ld bc, $0168
	xor a
	call ByteFill
	xor a
	ld [hSCY], a
	ld [hSCX], a
	call EnableLCD
	ld hl, $68bd
	call PrintText
	call Function3200
	call Function32f9
	ret
; 4e8bd

INCBIN "baserom.gbc",$4e8bd,$4e8c2 - $4e8bd


Function4e8c2: ; 4e8c2
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	call Functione51
	call Functione58
	ld hl, VBGMap0
	ld bc, VBlank5
	ld a, $7f
	call ByteFill
	ld hl, AttrMap
	ld bc, $0168
	xor a
	call ByteFill
	ld hl, $d000
	ld c, $40
.asm_4e8ee
	ld a, $ff
	ld [hli], a
	ld a, $7f
	ld [hli], a
	dec c
	jr nz, .asm_4e8ee
	xor a
	ld [hSCY], a
	ld [hSCX], a
	call EnableLCD
	call Function3200
	call Function32f9
	ret
; 4e906

Function4e906: ; 4e906
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld hl, $d000
	ld bc, VBlank5
	ld a, $7f
	call ByteFill
	ld hl, VBGMap0
	ld de, $d000
	ld b, $0
	ld c, $40
	call Request2bpp
	pop af
	ld [rSVBK], a
	ret
; 4e929

Function4e929: ; 4e929
	ld h, b
	ld l, c
	call Function4e930
	ld c, a
	ret
; 4e930

Function4e930: ; 4e930
	ld a, [hli]
	xor [hl]
	ld c, a
	jr z, .asm_4e941
	srl c
	srl c
.asm_4e939
	srl c
	ld a, c
	cp $18
	jr nc, .asm_4e939
	inc c

.asm_4e941
	ld a, [de]
	cp $1
	ld hl, $695d
	jr nz, .asm_4e958
	ld hl, $6976
	ld a, c
	and a
	jr z, .asm_4e958
.asm_4e950
	srl c
	ld a, c
	cp $9
	jr nc, .asm_4e950
	inc c

.asm_4e958
	ld b, $0
	add hl, bc
	ld a, [hl]
	ret
; 4e95d

INCBIN "baserom.gbc",$4e95d,$4e980 - $4e95d


Function4e980: ; 4e980
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	call Function4e998
	ld a, $43
	ld [hLCDStatCustom], a
	call Function4e9ab
	xor a
	ld [hLCDStatCustom], a
	pop af
	ld [rSVBK], a
	ret
; 4e998

Function4e998: ; 4e998
	call Function4e9e5
	ld a, $90
	ld [hSCX], a
	ld a, $e4
	call DmgToCgbBGPals
	ld de, $e4e4
	call DmgToCgbObjPals
	ret
; 4e9ab

Function4e9ab: ; 4e9ab
	ld d, $90
	ld e, $72
	ld a, $48
	inc a
.asm_4e9b2
	push af
.asm_4e9b3
	ld a, [rLY]
	cp $60
	jr c, .asm_4e9b3
	ld a, d
	ld [hSCX], a
	call Function4e9f1
	inc e
	inc e
	dec d
	dec d
	pop af
	push af
	cp $1
	jr z, .asm_4e9ce
	push de
	call Function4e9d6
	pop de

.asm_4e9ce
	call DelayFrame
	pop af
	dec a
	jr nz, .asm_4e9b2
	ret
; 4e9d6

Function4e9d6: ; 4e9d6
	ld hl, $c401
	ld c, $12
	ld de, $0004
.asm_4e9de
	dec [hl]
	dec [hl]
	add hl, de
	dec c
	jr nz, .asm_4e9de
	ret
; 4e9e5

Function4e9e5: ; 4e9e5
	ld hl, LYOverrides
	ld a, $90
	ld bc, $0090
	call ByteFill
	ret
; 4e9f1

Function4e9f1: ; 4e9f1
	ld hl, LYOverrides
	ld a, d
	ld c, $3e
.asm_4e9f7
	ld [hli], a
	dec c
	jr nz, .asm_4e9f7
	ld a, e
	ld c, $22
.asm_4e9fe
	ld [hli], a
	dec c
	jr nz, .asm_4e9fe
	xor a
	ld c, $30
.asm_4ea05
	ld [hli], a
	dec c
	jr nz, .asm_4ea05
	ret
; 4ea0a



Function4ea0a: ; 4ea0a
	ld a, c
	push af
	call SpeechTextBox
	call MobileTextBorder
	pop af
	dec a
	ld bc, $000c
	ld hl, $dc1a
	call AddNTimes
	ld de, $cd53
	ld bc, $000c
	ld a, $5
	call FarCopyWRAM
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	ld bc, $cd53
	ld de, $c5b9
	callba Function11c0c6
	pop af
	ld [rSVBK], a
	ld c, $b4
	call DelayFrames
	ret
; 4ea44



Function4ea44: ; 4ea44
	ld a, $0
	ld hl, InLinkBattle
	call GetFarWRAMByte
	cp $4
	jr z, .asm_4ea59
	ld a, [Options]
	bit 7, a
	jr nz, .asm_4ea80
	and a
	ret

.asm_4ea59
	ld a, [$cd2f]
	and a
	jr nz, .asm_4ea72
	ld a, $4
	call GetSRAMBank
	ld a, [$a60c]
	ld c, a
	call CloseSRAM
	ld a, c
	bit 0, c
	jr z, .asm_4ea80
	and a
	ret

.asm_4ea72
	ld a, $5
	ld hl, $dc00
	call GetFarWRAMByte
	bit 0, a
	jr z, .asm_4ea80
	and a
	ret

.asm_4ea80
	scf
	ret
; 4ea82



Function4ea82: ; 4ea82
	ld a, [hCGB]
	and a
	ret nz
	ld de, $0000
	call PlayMusic
	call ClearTileMap
	ld hl, $6b76
	ld de, $d000
	ld a, [rSVBK]
	push af
	ld a, $0
	ld [rSVBK], a
	call Decompress
	pop af
	ld [rSVBK], a
	ld de, $d000
	ld hl, VTiles2
	ld bc, Text_1354
	call Get2bpp
	ld de, $4200
	ld hl, VTiles1
	ld bc, Function3e80
	call Get1bpp
	call Function4eac5
	call WaitBGMap
.asm_4eac0
	call DelayFrame
	jr .asm_4eac0
; 4eac5

Function4eac5: ; 4eac5
	call Function4eaea
	ld hl, $c4cb
	ld b, $e
	ld c, $4
	ld a, $8
	call Function4eb27
	ld hl, $c51d
	ld b, $a
	ld c, $2
	ld a, $40
	call Function4eb27
	ld de, $6b38
	ld hl, $c569
	call PlaceString
	ret
; 4eaea

Function4eaea: ; 4eaea
	ld hl, TileMap
	ld [hl], $0
	inc hl
	ld a, $1
	call Function4eb15
	ld [hl], $2
	ld hl, $c4b4
	ld a, $3
	call Function4eb1c
	ld hl, $c4c7
	ld a, $4
	call Function4eb1c
	ld hl, $c5f4
	ld [hl], $5
	inc hl
	ld a, $6
	call Function4eb15
	ld [hl], $7
	ret
; 4eb15

Function4eb15: ; 4eb15
	ld c, $12
.asm_4eb17
	ld [hli], a
	dec c
	jr nz, .asm_4eb17
	ret
; 4eb1c

Function4eb1c: ; 4eb1c
	ld de, $0014
	ld c, $10
.asm_4eb21
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_4eb21
	ret
; 4eb27

Function4eb27: ; 4eb27
	ld de, $0014
.asm_4eb2a
	push bc
	push hl
.asm_4eb2c
	ld [hli], a
	inc a
	dec b
	jr nz, .asm_4eb2c
	pop hl
	add hl, de
	pop bc
	dec c
	jr nz, .asm_4eb2a
	ret
; 4eb38

INCBIN "baserom.gbc",$4eb38,$4f0bc - $4eb38

Function4f0bc: ; 4f0bc
	ld a, $0
	call Function4f26d
	call Functiona36
	ld b, $6
	callba Function50000
	jr c, .asm_4f0e1
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_4f0e8
	call IsAPokemon
	jr c, .asm_4f0e7
	call Function4f134
	call Function4f0ee
	ret

.asm_4f0e1
	ld a, $5
	call Function4f26d
	ret

.asm_4f0e7
	ret

.asm_4f0e8
	ld a, $6
	call Function4f26d
	ret
; 4f0ee

Function4f0ee: ; 4f0ee
	ld a, [DefaultFlypoint]
	ld hl, $70f6
	rst JumpTable
	ret
; 4f0f6

Table4f0f6: ; 4f0f6
	dw Function4f100
	dw Function4f10e
	dw Function4f11f
	dw Function4f125
	dw Function4f12b
; 4f100

Function4f100: ; 4f100
	ld a, $2
	call Function4f26d
	ld a, $3
	call Function4f26d
	call Function4f2b4
	ret
; 4f10e

Function4f10e: ; 4f10e
	call Function4f242
	ld a, $4
	call Function4f26d
	ld a, $3
	call Function4f26d
	call Function4f2b4
	ret
; 4f11f

Function4f11f: ; 4f11f
	ld a, $1
	call Function4f26d
	ret
; 4f125

Function4f125: ; 4f125
	ld a, $1
	call Function4f26d
	ret
; 4f12b

Function4f12b: ; 4f12b
	ld a, $7
	call Function4f26d
	call Function4f2b4
	ret
; 4f134

Function4f134: ; 4f134
	ld a, $1d
	call GetPartyParamLocation
	ld a, [hli]
	ld [$d03b], a
	ld a, [hld]
	ld [$d03c], a
	or [hl]
	jr z, .asm_4f170
	ld a, $1
	ld [DefaultFlypoint], a
	ld a, $6
	call GetPartyParamLocation
	ld a, [PlayerID]
	cp [hl]
	jr nz, .asm_4f15f
	inc hl
	ld a, [$d47c]
	jr nz, .asm_4f15f
	ld a, $0
	ld [DefaultFlypoint], a

.asm_4f15f
	call Function4f18c
	call Function4f242
	call Function4f176
	call Function4f1c5
	call Function4f20a
	and a
	ret

.asm_4f170
	ld a, $2
	ld [DefaultFlypoint], a
	ret
; 4f176

Function4f176: ; 4f176
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	ld bc, $000b
	call AddNTimes
	ld de, $d003
	ld bc, $000b
	call CopyBytes
	ret
; 4f18c

Function4f18c: ; 4f18c
	ld a, $50
	ld hl, $d036
	ld bc, $0004
	call ByteFill
	ld a, [$d03b]
	and $3f
	jr z, .asm_4f1b4
	cp $1
	jr nz, .asm_4f1a4
	ld a, $5

.asm_4f1a4
	ld [$d03a], a
	ld hl, $d036
	ld de, $d03a
	ld bc, $4103
	call PrintNum
	ret

.asm_4f1b4
	ld de, $d036
	ld hl, $71c1
	ld bc, $0004
	call CopyBytes
	ret
; 4f1c1

INCBIN "baserom.gbc",$4f1c1,$4f1c5 - $4f1c1

Function4f1c5: ; 4f1c5
	ld a, [$d03b]
	and $c0
	jr z, .asm_4f1df
	rlca
	rlca
	dec a
	ld hl, $71e6
	call GetNthString
	ld d, h
	ld e, l
	ld hl, $d01f
	call CopyName2
	and a
	ret

.asm_4f1df
	ld de, $d01f
	call Function4f1f8
	ret
; 4f1e6

INCBIN "baserom.gbc",$4f1e6,$4f1f8 - $4f1e6

Function4f1f8: ; 4f1f8
	ld hl, $7202
	ld bc, $000b
	call CopyBytes
	ret
; 4f202

INCBIN "baserom.gbc",$4f202,$4f20a - $4f202

Function4f20a: ; 4f20a
	ld a, [$d03c]
	and $7f
	jr z, .asm_4f22e
	cp $7f
	jr z, .asm_4f234
	cp $7e
	jr z, .asm_4f23b
	ld e, a
	callba GetLandmarkName
	ld hl, StringBuffer1
	ld de, $d00e
	ld bc, $0011
	call CopyBytes
	and a
	ret

.asm_4f22e
	ld de, $d00e
	jp Function4f1f8

.asm_4f234
	ld a, $4
	ld [DefaultFlypoint], a
	scf
	ret

.asm_4f23b
	ld a, $3
	ld [DefaultFlypoint], a
	scf
	ret
; 4f242

Function4f242: ; 4f242
	ld a, [CurPartyMon]
	ld hl, PartyMon1OT
	ld bc, $000b
	call AddNTimes
	ld de, $d02a
	ld bc, $000b
	call CopyBytes
	ld hl, $726b
	ld a, [$d03c]
	bit 7, a
	jr z, .asm_4f264
	ld hl, $726c

.asm_4f264
	ld de, $d035
	ld a, $50
	ld [de], a
	ret
; 4f26b

INCBIN "baserom.gbc",$4f26b,$4f26d - $4f26b

Function4f26d: ; 4f26d
	ld e, a
	ld d, $0
	ld hl, $727c
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PrintText
	ret
; 4f27c

INCBIN "baserom.gbc",$4f27c,$4f2b4 - $4f27c

Function4f2b4: ; 4f2b4
	ld a, $1f
	call GetPartyParamLocation
	ld a, [$d03a]
	ld c, a
	ld a, [hl]
	sub c
	ld c, a
	ld hl, $72d6
	ld de, $0003
.asm_4f2c6
	cp [hl]
	jr c, .asm_4f2ce
	jr z, .asm_4f2ce
	add hl, de
	jr .asm_4f2c6

.asm_4f2ce
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PrintText
	ret
; 4f2d6

INCBIN "baserom.gbc",$4f2d6,$4f301 - $4f2d6


Function4f301: ; 4f301
	ld hl, $001e
	add hl, bc
	ld a, [hl]
	and $7f
	jr z, .asm_4f319
	cp $7f
	jr z, .asm_4f319
	ld a, [hl]
	and $80
	jr nz, .asm_4f316
	ld c, $1
	ret

.asm_4f316
	ld c, $2
	ret

.asm_4f319
	ld c, $0
	ret
; 4f31c



SECTION "bank14", ROMX, BANK[$14]

Function50000: ; 50000
	call Function2ed3
	xor a
	ld [PartyMenuActionText], a
	call WhiteBGMap
	call Function5003f
	call WaitBGMap
	call Function32f9
	call DelayFrame
	call PartyMenuSelect
	call Function2b74
	ret
; 5001d


Function5001d: ; 5001d
	ld a, b
	ld [PartyMenuActionText], a
	call Function2ed3
	call WhiteBGMap
	call Function5003f
	call WaitBGMap
	ld b, $a
	call GetSGBLayout
	call Function32f9
	call DelayFrame
	call PartyMenuSelect
	call Function2b74
	ret
; 5003f

Function5003f: ; 5003f
	call Function5004f
	call Function50405
	call Function503e0
	call WritePartyMenuTilemap
	call PrintPartyMenuText
	ret
; 5004f

Function5004f: ; 5004f
	call Functione58
	callab Function8ad1
	callab Function8e814
	ret
; 5005f


WritePartyMenuTilemap: ; 0x5005f
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl] ; Disable text delay
	xor a
	ld [hBGMapMode], a
	ld hl, TileMap
	ld bc, $0168
	ld a, " "
	call ByteFill ; blank the tilemap
	call Function50396 ; This reads from a pointer table???
.asm_50077
	ld a, [hli]
	cp $ff
	jr z, .asm_50084 ; 0x5007a $8
	push hl
	ld hl, Table50089
	rst JumpTable
	pop hl
	jr .asm_50077 ; 0x50082 $f3
.asm_50084
	pop af
	ld [Options], a
	ret
; 0x50089

Table50089: ; 50089
	dw Function5009b
	dw Function500cf
	dw Function50138
	dw Function50176
	dw Function501b2
	dw Function501e0
	dw Function5022f
	dw Function502b1
	dw Function50307
; 5009b

Function5009b: ; 5009b
	ld hl, $c4b7
	ld a, [PartyCount]
	and a
	jr z, .asm_500bf
	ld c, a
	ld b, $0
.asm_500a7
	push bc
	push hl
	push hl
	ld hl, PartyMon1Nickname
	ld a, b
	call GetNick
	pop hl
	call PlaceString
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_500a7

.asm_500bf
	dec hl
	dec hl
	ld de, $40c8
	call PlaceString
	ret
; 500c8

INCBIN "baserom.gbc",$500c8,$500cf - $500c8


Function500cf: ; 500cf
	xor a
	ld [$cda9], a
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4d3
.asm_500de
	push bc
	push hl
	call Function50389
	jr z, .asm_50103
	push hl
	call Function50117
	pop hl
	ld d, $6
	ld b, $0
	call DrawHPBar
	ld hl, $cd9b
	ld a, [$cda9]
	ld c, a
	ld b, $0
	add hl, bc
	call SetHPPal
	ld b, $fc
	call GetSGBLayout

.asm_50103
	ld hl, $cda9
	inc [hl]
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_500de
	ld b, $a
	call GetSGBLayout
	ret
; 50117

Function50117: ; 50117
	ld a, b
	ld bc, $0030
	ld hl, PartyMon1CurHP
	call AddNTimes
	ld a, [hli]
	or [hl]
	jr nz, .asm_50129
	xor a
	ld e, a
	ld c, a
	ret

.asm_50129
	dec hl
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld e, a
	ld a, $4
	call Predef
	ret
; 50138

Function50138: ; 50138
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4c1
.asm_50143
	push bc
	push hl
	call Function50389
	jr z, .asm_5016b
	push hl
	ld a, b
	ld bc, $0030
	ld hl, PartyMon1CurHP
	call AddNTimes
	ld e, l
	ld d, h
	pop hl
	push de
	ld bc, $0203
	call PrintNum
	pop de
	ld a, $f3
	ld [hli], a
	inc de
	inc de
	ld bc, $0203
	call PrintNum

.asm_5016b
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_50143
	ret
; 50176

Function50176: ; 50176
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4d0
.asm_50181
	push bc
	push hl
	call Function50389
	jr z, .asm_501a7
	push hl
	ld a, b
	ld bc, $0030
	ld hl, PartyMon1Level
	call AddNTimes
	ld e, l
	ld d, h
	pop hl
	ld a, [de]
	cp $64
	jr nc, .asm_501a1
	ld a, $6e
	ld [hli], a
	ld bc, $4102

.asm_501a1
	ld bc, $4103
	call PrintNum

.asm_501a7
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_50181
	ret
; 501b2

Function501b2: ; 501b2
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4cd
.asm_501bd
	push bc
	push hl
	call Function50389
	jr z, .asm_501d5
	push hl
	ld a, b
	ld bc, $0030
	ld hl, PartyMon1Status
	call AddNTimes
	ld e, l
	ld d, h
	pop hl
	call Function50d0a

.asm_501d5
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_501bd
	ret
; 501e0

Function501e0: ; 501e0
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4d4
.asm_501eb
	push bc
	push hl
	call Function50389
	jr z, .asm_5020a
	push hl
	ld hl, PartySpecies
	ld e, b
	ld d, $0
	add hl, de
	ld a, [hl]
	ld [CurPartySpecies], a
	ld a, $e
	call Predef
	pop hl
	call Function50215
	call PlaceString

.asm_5020a
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_501eb
	ret
; 50215

Function50215: ; 50215
	ld a, c
	and a
	jr nz, .asm_5021d
	ld de, $4226
	ret

.asm_5021d
	ld de, $4221
	ret
; 50221

INCBIN "baserom.gbc",$50221,$5022f - $50221


Function5022f: ; 5022f
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4d4
.asm_5023a
	push bc
	push hl
	call Function50389
	jr z, .asm_5025d
	push hl
	ld a, b
	ld bc, $0030
	ld hl, PartyMon1Species
	call AddNTimes
	ld a, [hl]
	dec a
	ld e, a
	ld d, $0
	ld hl, $65b1
	add hl, de
	add hl, de
	call Function50268
	pop hl
	call PlaceString

.asm_5025d
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_5023a
	ret
; 50268

Function50268: ; 50268
	ld de, StringBuffer1
	ld a, $10
	ld bc, $0002
	call FarCopyBytes
	ld hl, StringBuffer1
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, StringBuffer1
	ld a, $10
	ld bc, $000a
	call FarCopyBytes
	ld hl, StringBuffer1
.asm_50287
	ld a, [hli]
	and a
	jr z, .asm_5029f
	inc hl
	inc hl
	cp $2
	jr nz, .asm_50287
	dec hl
	dec hl
	ld a, [CurItem]
	cp [hl]
	inc hl
	inc hl
	jr nz, .asm_50287
	ld de, $42a3
	ret

.asm_5029f
	ld de, $42a8
	ret
; 502a3

INCBIN "baserom.gbc",$502a3,$502b1 - $502a3


Function502b1: ; 502b1
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4d4
.asm_502bc
	push bc
	push hl
	call Function50389
	jr z, .asm_502e3
	ld [CurPartySpecies], a
	push hl
	ld a, b
	ld [CurPartyMon], a
	xor a
	ld [MonType], a
	call GetGender
	ld de, $42fe
	jr c, .asm_502df
	ld de, $42ee
	jr nz, .asm_502df
	ld de, $42f5

.asm_502df
	pop hl
	call PlaceString

.asm_502e3
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_502bc
	ret
; 502ee

INCBIN "baserom.gbc",$502ee,$50307 - $502ee


Function50307: ; 50307
	ld a, [PartyCount]
	and a
	ret z
	ld c, a
	ld b, $0
	ld hl, $c4c0
.asm_50312
	push bc
	push hl
	ld de, $4372
	call PlaceString
	pop hl
	ld de, $0028
	add hl, de
	pop bc
	inc b
	dec c
	jr nz, .asm_50312
	ld a, l
	ld e, $b
	sub e
	ld l, a
	ld a, h
	sbc $0
	ld h, a
	ld de, $4379
	call PlaceString
	ld b, $3
	ld c, $0
	ld hl, DefaultFlypoint
	ld a, [hl]
.asm_5033b
	push hl
	push bc
	ld hl, $c4c0
.asm_50340
	and a
	jr z, .asm_5034a
	ld de, $0028
	add hl, de
	dec a
	jr .asm_50340

.asm_5034a
	ld de, $436b
	push hl
	call PlaceString
	pop hl
	pop bc
	push bc
	push hl
	ld a, c
	ld hl, $4383
	call GetNthString
	ld d, h
	ld e, l
	pop hl
	call PlaceString
	pop bc
	pop hl
	inc hl
	ld a, [hl]
	inc c
	dec b
	ret z
	jr .asm_5033b
; 5036b

INCBIN "baserom.gbc",$5036b,$50389 - $5036b


Function50389: ; 50389
	ld a, PartySpecies & $ff
	add b
	ld e, a
	ld a, PartySpecies >> 8
	adc 0
	ld d, a
	ld a, [de]
	cp EGG
	ret
; 50396

Function50396: ; 50396
	ld a, [PartyMenuActionText]
	and $f0
	jr nz, .asm_503ae
	ld a, [PartyMenuActionText]
	and $f
	ld e, a
	ld d, 0
	ld hl, $43b2
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

.asm_503ae
	ld hl, $43c6
	ret
; 503b2

INCBIN "baserom.gbc",$503b2,$503e0 - $503b2


Function503e0: ; 503e0
	ld hl, PartyCount
	ld a, [hli]
	and a
	ret z
	ld c, a
	xor a
	ld [hConnectedMapWidth], a
.asm_503ea
	push bc
	push hl
	ld hl, Function8e83f
	ld a, BANK(Function8e83f)
	ld e, $0
	rst FarCall
	ld a, [hConnectedMapWidth]
	inc a
	ld [hConnectedMapWidth], a
	pop hl
	pop bc
	dec c
	jr nz, .asm_503ea
	callab Function8cf69
	ret
; 50405

Function50405: ; 50405
	xor a
	ld [$d0e3], a
	ld de, $444f
	call Function1bb1
	ld a, [PartyCount]
	inc a
	ld [$cfa3], a
	dec a
	ld b, a
	ld a, [$d0d8]
	and a
	jr z, .asm_50422
	inc b
	cp b
	jr c, .asm_50424

.asm_50422
	ld a, $1

.asm_50424
	ld [$cfa9], a
	ld a, $3
	ld [$cfa8], a
	ret
; 5042d

Function5042d: ; 0x5042d
	ld de, $444f
	call Function1bb1
	ld a, [PartyCount] ; $dcd7
	ld [$cfa3], a
	ld b, a
	ld a, [$d0d8]
	and a
	jr z, .asm_50444
	inc b
	cp b
	jr c, .asm_50446
.asm_50444
	ld a, $1
.asm_50446
	ld [$cfa9], a
	ld a, $3
	ld [$cfa8], a
	ret
; 5044f (14:444f)

INCBIN "baserom.gbc",$5044f,$50457 - $5044f

PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
	call Function1bc9
	call Function1bee
	ld a, [PartyCount]
	inc a
	ld b, a
	ld a, [$cfa9] ; menu selection?
	cp b
	jr z, .exitmenu ; CANCEL
	ld [$d0d8], a
	ld a, [$ffa9]
	ld b, a
	bit 1, b
	jr nz, .exitmenu ; B button?
	ld a, [$cfa9]
	dec a
	ld [CurPartyMon], a
	ld c, a
	ld b, $0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a

	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	and a
	ret

.exitmenu
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	scf
	ret
; 0x5049a


PrintPartyMenuText: ; 5049a
	ld hl, $c5b8
	ld bc, $0212
	call TextBox
	ld a, [PartyCount]
	and a
	jr nz, .haspokemon
	ld de, YouHaveNoPKMNString
	jr .gotstring
.haspokemon ; 504ae
	ld a, [PartyMenuActionText]
	and $f ; drop high nibble
	ld hl, PartyMenuStrings
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld d, [hl]
	ld e, a
.gotstring ; 504be
	ld a, [Options]
	push af
	set 4, a ; disable text delay
	ld [Options], a
	ld hl, $c5e1 ; Coord
	call PlaceString
	pop af
	ld [Options], a
	ret
; 0x504d2

PartyMenuStrings: ; 0x504d2
	dw ChooseAMonString
	dw UseOnWhichPKMNString
	dw WhichPKMNString
	dw TeachWhichPKMNString
	dw MoveToWhereString
	dw UseOnWhichPKMNString
	dw ChooseAMonString ; Probably used to be ChooseAFemalePKMNString
	dw ChooseAMonString ; Probably used to be ChooseAMalePKMNString
	dw ToWhichPKMNString

ChooseAMonString: ; 0x504e4
	db "Choose a #MON.@"
UseOnWhichPKMNString: ; 0x504f3
	db "Use on which ", $e1, $e2, "?@"
WhichPKMNString: ; 0x50504
	db "Which ", $e1, $e2, "?@"
TeachWhichPKMNString: ; 0x5050e
	db "Teach which ", $e1, $e2, "?@"
MoveToWhereString: ; 0x5051e
	db "Move to where?@"
ChooseAFemalePKMNString: ; 0x5052d  ; UNUSED
	db "Choose a ♀", $e1, $e2, ".@"
ChooseAMalePKMNString: ; 0x5053b    ; UNUSED
	db "Choose a ♂", $e1, $e2, ".@"
ToWhichPKMNString: ; 0x50549
	db "To which ", $e1, $e2, "?@"

YouHaveNoPKMNString: ; 0x50556
	db "You have no ", $e1, $e2, "!@"


Function50566: ; 50566
	ld a, [CurPartyMon]
	ld hl, PartyMon1Nickname
	call GetNick
	ld a, [PartyMenuActionText]
	and $f
	ld hl, $457b
	call Function505c1
	ret
; 5057b

INCBIN "baserom.gbc",$5057b,$505c1 - $5057b


Function505c1: ; 505c1
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [Options]
	push af
	set 4, a
	ld [Options], a
	call PrintText
	pop af
	ld [Options], a
	ret
; 505da

Function505da: ; 505da
	ld a, [PartyCount]
	and a
	jr z, .asm_5062c
	xor a
	ld c, 7
	ld hl, EngineBuffer1
.asm_505e6
	ld [hli], a
	dec c
	jr nz, .asm_505e6
	xor a
	ld [CurPartyMon], a
.asm_505ee
	call Function5062e
	jr nc, .asm_50605
	ld a, [CurPartyMon]
	ld e, a
	ld d, 0
	ld hl, $d03f
	add hl, de
	ld [hl], c
	ld a, [EngineBuffer1]
	or c
	ld [EngineBuffer1], a

.asm_50605
	ld a, [PartyCount]
	ld hl, CurPartyMon
	inc [hl]
	cp [hl]
	jr nz, .asm_505ee
	ld a, [EngineBuffer1]
	and $2
	jr nz, .asm_50622
	ld a, [EngineBuffer1]
	and $1
	jr z, .asm_5062c
	call Function50658
	xor a
	ret

.asm_50622
	ld a, $14
	ld hl, UnknownScript_0x50669
	call CallScript
	scf
	ret

.asm_5062c
	xor a
	ret
; 5062e

Function5062e: ; 5062e
	ld a, $20
	call GetPartyParamLocation
	ld a, [hl]
	and $8
	ret z
	ld a, $22
	call GetPartyParamLocation
	ld a, [hli]
	ld b, a
	ld c, [hl]
	or c
	ret z
	dec bc
	ld [hl], c
	dec hl
	ld [hl], b
	ld a, b
	or c
	jr nz, .asm_50654
	ld a, $20
	call GetPartyParamLocation
	ld [hl], $0
	ld c, $2
	scf
	ret

.asm_50654
	ld c, $1
	scf
	ret
; 50658

Function50658: ; 50658
	ld de, SFX_POISON
	call PlaySFX
	ld b, $2
	ld a, $2e
	call Predef
	call DelayFrame
	ret
; 50669

UnknownScript_0x50669: ; 50669
	3callasm BANK(Function50658), Function50658
	loadfont
	3callasm BANK(Function5067b), Function5067b
	iffalse UnknownScript_0x50677
	loadmovesprites
	end
; 50677

UnknownScript_0x50677: ; 50677
	3jump BANK(UnknownScript_0x124c8), UnknownScript_0x124c8
; 5067b

Function5067b: ; 5067b
	xor a
	ld [CurPartyMon], a
	ld de, $d03f
.asm_50682
	push de
	ld a, [de]
	and 2
	jr z, .asm_5069c
	ld c, 7
	callba ChangeHappiness
	callba GetPartyNick
	ld hl, PoisonFaintText
	call PrintText

.asm_5069c
	pop de
	inc de
	ld hl, CurPartyMon
	inc [hl]
	ld a, [PartyCount]
	cp [hl]
	jr nz, .asm_50682
	ld a, $14
	call Predef
	ld a, d
	ld [ScriptVar], a
	ret
; 506b2

PoisonFaintText: ; 506b2
	text_jump UnknownText_0x1c0acc, BANK(UnknownText_0x1c0acc)
	db "@"
; 506b7

PoisonWhiteOutText: ; 506b7
	text_jump UnknownText_0x1c0ada, BANK(UnknownText_0x1c0ada)
	db "@"
; 506bc


Function506bc: ; 506bc
	ld hl, UnknownScript_0x506c8
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret
; 506c8

UnknownScript_0x506c8: ; 0x506c8
	reloadmappart
	special $0035
	3callasm BANK(GetPartyNick), GetPartyNick
	2writetext UnknownText_0x50726
	closetext
	3callasm BANK(Function506ef), Function506ef
	iffalse UnknownScript_0x506e9
	checkflag $0011
	iftrue UnknownScript_0x506e5
	battlecheck
	startbattle
	returnafterbattle
	end
; 0x506e5

UnknownScript_0x506e5: ; 0x506e5
	3jump BANK(UnknownScript_0x135eb), UnknownScript_0x135eb
; 0x506e9

UnknownScript_0x506e9: ; 0x506e9
	2writetext UnknownText_0x5072b
	closetext
	loadmovesprites
	end
; 0x506ef

Function506ef: ; 506ef
	callba Function97cfd
	jr nc, .asm_5071e
	ld hl, StatusFlags2
	bit 2, [hl]
	jr nz, .asm_50712
	callba Function2a111
	ld a, b
	and a
	jr z, .asm_5071e
	callba Function2a14f
	jr nz, .asm_5071e
	jr .asm_50718

.asm_50712
	callba Function97d31

.asm_50718
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_5071e
	xor a
	ld [ScriptVar], a
	ld [BattleType], a
	ret
; 50726

UnknownText_0x50726: ; 0x50726
	text_jump UnknownText_0x1c0b03, BANK(UnknownText_0x1c0b03)
	db $50
; 0x5072b

UnknownText_0x5072b: ; 0x5072b
	text_jump UnknownText_0x1c0b1a, BANK(UnknownText_0x1c0b1a)
	db $50
; 0x50730


_Squirtbottle: ; 50730
	ld hl, UnknownScript_0x5073c
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret
; 5073c

UnknownScript_0x5073c: ; 0x5073c
	reloadmappart
	special $0035
	3callasm BANK(Function50753), Function50753
	iffalse UnknownScript_0x5074b
	3jump BANK(WateredWeirdTreeScript), WateredWeirdTreeScript
; 0x5074b

UnknownScript_0x5074b: ; 0x5074b
	jumptext UnknownText_0x5074e
; 0x5074e

UnknownText_0x5074e: ; 0x5074e
	text_jump UnknownText_0x1c0b3b, BANK(UnknownText_0x1c0b3b)
	db $50
; 0x50753

Function50753: ; 50753
	ld a, [MapGroup]
	cp GROUP_ROUTE_36
	jr nz, .asm_50774

	ld a, [MapNumber]
	cp MAP_ROUTE_36
	jr nz, .asm_50774

	callba Functioncf0d
	jr c, .asm_50774

	ld a, d
	cp 23
	jr nz, .asm_50774

	ld a, $1
	ld [ScriptVar], a
	ret

.asm_50774
	xor a
	ld [ScriptVar], a
	ret
; 50779


_CardKey: ; 50779
	ld a, [MapGroup]
	cp GROUP_RADIO_TOWER_3F
	jr nz, .asm_507a9

	ld a, [MapNumber]
	cp MAP_RADIO_TOWER_3F
	jr nz, .asm_507a9

	ld a, [PlayerDirection]
	and $c
	cp UP << 2
	jr nz, .asm_507a9

	call GetFacingTileCoord
	ld a, d
	cp 18
	jr nz, .asm_507a9
	ld a, e
	cp 6
	jr nz, .asm_507a9

	ld hl, UnknownScript_0x507af
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret

.asm_507a9
	ld a, $0
	ld [$d0ec], a
	ret
; 507af

UnknownScript_0x507af: ; 0x507af
	loadmovesprites
	3jump BANK(MapRadioTower3FSignpost2Script), MapRadioTower3FSignpost2Script
; 0x507b4


_BasementKey: ; 507b4
	ld a, [MapGroup]
	cp GROUP_WAREHOUSE_ENTRANCE
	jr nz, .asm_507db

	ld a, [MapNumber]
	cp MAP_WAREHOUSE_ENTRANCE
	jr nz, .asm_507db

	call GetFacingTileCoord
	ld a, d
	cp 22
	jr nz, .asm_507db
	ld a, e
	cp 10
	jr nz, .asm_507db

	ld hl, UnknownScript_0x507e1
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret

.asm_507db
	ld a, $0
	ld [$d0ec], a
	ret
; 507e1

UnknownScript_0x507e1: ; 0x507e1
	loadmovesprites
	3jump BANK(MapWarehouseEntranceSignpost0Script), MapWarehouseEntranceSignpost0Script
; 0x507e6


_SacredAsh: ; 507e6
	ld a, $0
	ld [$d0ec], a
	call CheckAnyFaintedMon
	ret nc

	ld hl, UnknownScript_0x50821
	call Function31cd
	ld a, $1
	ld [$d0ec], a
	ret
; 507fb

CheckAnyFaintedMon: ; 507fb
	ld de, PartyMon2 - PartyMon1
	ld bc, PartySpecies
	ld hl, PartyMon1CurHP
	ld a, [PartyCount]
	and a
	ret z

.loop
	push af
	push hl
	ld a, [bc]
	inc bc
	cp EGG
	jr z, .next

	ld a, [hli]
	or [hl]
	jr z, .asm_5081d

.next
	pop hl
	add hl, de
	pop af
	dec a
	jr nz, .loop
	xor a
	ret

.asm_5081d
	pop hl
	pop af
	scf
	ret
; 50821

UnknownScript_0x50821: ; 0x50821
	special $001b
	reloadmappart
	playsound SFX_WARP_TO
	special $002e
	special $0031
	special $002e
	special $0031
	special $002e
	special $0031
	waitbutton
	2writetext UnknownText_0x50845
	playsound SFX_CAUGHT_MON
	waitbutton
	closetext
	loadmovesprites
	end
; 0x50845

UnknownText_0x50845: ; 0x50845
	text_jump UnknownText_0x1c0b65, BANK(UnknownText_0x1c0b65)
	db $50
; 0x5084a

Function5084a: ; 5084a
	ld a, [CurPartyMon]
	ld e, a
	call Function508d5
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call GetBaseData

	ld a, [MonType]
	ld hl, PartyMon1Species
	ld bc, PartyMon2 - PartyMon1
	and a
	jr z, .asm_5087b
	ld hl, OTPartyMon1Species
	ld bc, OTPartyMon2 - OTPartyMon1
	cp $1
	jr z, .asm_5087b
	ld bc, $0020
	callab Functione5bb
	jr .asm_5088a

.asm_5087b
	ld a, [CurPartyMon]
	call AddNTimes
	ld de, TempMonSpecies
	ld bc, $0030
	call CopyBytes

.asm_5088a
	ret
; 5088b


Function5088b: ; 5088b
	ld bc, $d018
	jr Function50893
; 50890

Function50890: ; 50890
	ld bc, TempMon
	; fallthrough
; 50893

Function50893: ; 50893
	ld hl, TempMonLevel - TempMon
	add hl, bc
	ld a, [hl]
	ld [CurPartyLevel], a
	ld hl, TempMonMaxHP - TempMon
	add hl, bc
	ld d, h
	ld e, l
	ld hl, TempMonExp + 2 - TempMon
	add hl, bc
	push bc
	ld b, $1
	ld a, $c
	call Predef
	pop bc
	ld hl, TempMonCurHP - TempMon
	add hl, bc
	ld d, h
	ld e, l
	ld a, [CurPartySpecies]
	cp EGG
	jr nz, .asm_508c1
	xor a
	ld [de], a
	inc de
	ld [de], a
	jr .asm_508cd

.asm_508c1
	push bc
	ld hl, TempMonMaxHP - TempMon
	add hl, bc
	ld bc, 2
	call CopyBytes
	pop bc

.asm_508cd
	ld hl, TempMonStatus - TempMon
	add hl, bc
	xor a
	ld [hli], a
	ld [hl], a
	ret
; 508d5

Function508d5: ; 508d5
	ld a, [MonType]
	and a ; PARTYMON
	jr z, .asm_508e7
	cp OTPARTYMON
	jr z, .asm_508ec
	cp BOXMON
	jr z, .asm_508f1
	cp $3
	jr z, .asm_50900
	; WILDMON

.asm_508e7
	ld hl, PartySpecies
	jr .asm_50905

.asm_508ec
	ld hl, OTPartySpecies
	jr .asm_50905

.asm_508f1
	ld a, 1 ; BANK(BoxSpecies)
	call GetSRAMBank
	ld hl, BoxSpecies
	call .asm_50905
	call CloseSRAM
	ret

.asm_50900
	ld a, [BreedMon1Species]
	jr .asm_50909

.asm_50905
	ld d, 0
	add hl, de
	ld a, [hl]

.asm_50909
	ld [CurPartySpecies], a
	ret
; 5090d


INCLUDE "text/types.asm"


Function50a28: ; 50a28
	ld hl, Strings50a42
	ld a, [TrainerClass]
	dec a
	ld c, a
	ld b, 0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, StringBuffer1
.copy
	ld a, [hli]
	ld [de], a
	inc de
	cp "@"
	jr nz, .copy
	ret
; 50a42

Strings50a42: ; 50a42
; Untranslated trainer class names from Red.

	dw .Youngster
	dw .BugCatcher
	dw .Lass
	dw OTName
	dw .JrTrainerM
	dw .JrTrainerF
	dw .Pokemaniac
	dw .SuperNerd
	dw OTName
	dw OTName
	dw .Burglar
	dw .Engineer
	dw .Jack
	dw OTName
	dw .Swimmer
	dw OTName
	dw OTName
	dw .Beauty
	dw OTName
	dw .Rocker
	dw .Juggler
	dw OTName
	dw OTName
	dw .Blackbelt
	dw OTName
	dw .ProfOak
	dw .Chief
	dw .Scientist
	dw OTName
	dw .Rocket
	dw .CooltrainerM
	dw .CooltrainerF
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName
	dw OTName

.Youngster
	db "たんパン@"
.BugCatcher
	db "むしとり@"
.Lass
	db "ミニスカ@"
.JrTrainerM
	db "ボーイ@"
.JrTrainerF
	db "ガール@"
.Pokemaniac
	db "マニア@"
.SuperNerd
	db "りかけい@"
.Burglar
	db "どろぼう@"
.Engineer
	db "ォヤジ@"
.Jack
	db "ジャック@"
.Swimmer
	db "かいパン@"
.Beauty
	db "おねえさん@"
.Rocker
	db "グループ@"
.Juggler
	db "ジャグラー@"
.Blackbelt
	db "からて@"
.ProfOak
	db "ォーキド@"
.Chief
	db "チーフ@"
.Scientist
	db "けんきゅういん@"
.Rocket
	db "だんいん@"
.CooltrainerM
	db "エりート♂@"
.CooltrainerF
	db "エりート♀@"
; 50b0a


DrawPlayerHP: ; 50b0a
	ld a, $1
	jr DrawHP

DrawEnemyHP: ; 50b0e
	ld a, $2

DrawHP: ; 50b10
	ld [$d10a], a
	push hl
	push bc
	ld a, [MonType]
	cp BOXMON
	jr z, .asm_50b30

	ld a, [TempMonCurHP]
	ld b, a
	ld a, [TempMonCurHP + 1]
	ld c, a

; Any HP?
	or b
	jr nz, .asm_50b30

	xor a
	ld c, a
	ld e, a
	ld a, 6
	ld d, a
	jp .asm_50b4a

.asm_50b30
	ld a, [TempMonMaxHP]
	ld d, a
	ld a, [TempMonMaxHP + 1]
	ld e, a
	ld a, [MonType]
	cp BOXMON
	jr nz, .asm_50b41

	ld b, d
	ld c, e

.asm_50b41
	ld a, $4
	call Predef
	ld a, 6
	ld d, a
	ld c, a

.asm_50b4a
	ld a, c
	pop bc
	ld c, a
	pop hl
	push de
	push hl
	push hl
	call DrawHPBar
	pop hl

; Print HP 
	ld bc, $0015 ; move (1,1)
	add hl, bc
	ld de, TempMonCurHP
	ld a, [MonType]
	cp BOXMON
	jr nz, .asm_50b66
	ld de, TempMonMaxHP
.asm_50b66
	ld bc, $0203
	call PrintNum

	ld a, "/"
	ld [hli], a

; Print max HP
	ld de, TempMonMaxHP
	ld bc, $0203
	call PrintNum
	pop hl
	pop de
	ret
; 50b7b


Function50b7b: ; 50b7b
	push bc
	push hl
	ld de, $4bb5
	call PlaceString
	pop hl
	pop bc
	add hl, bc
	ld bc, $0014
	add hl, bc
	ld de, TempMonAtk
	ld bc, $0203
	call Function50bab
	ld de, TempMonDef
	call Function50bab
	ld de, TempMonSpclAtk
	call Function50bab
	ld de, TempMonSpclDef
	call Function50bab
	ld de, TempMonSpd
	jp PrintNum
; 50bab

Function50bab: ; 50bab
	push hl
	call PrintNum
	pop hl
	ld de, $0028
	add hl, de
	ret
; 50bb5

INCBIN "baserom.gbc",$50bb5,$50bdd - $50bb5


GetGender: ; 50bdd
; Return the gender of a given monster in a.

; 1: male
; 0: female
; c: genderless

; This is determined by comparing the Attack and Speed DVs
; with the species' gender ratio.


; Figure out what type of monster struct we're looking at.

; 0: PartyMon
	ld hl, PartyMon1DVs
	ld bc, PartyMon2 - PartyMon1
	ld a, [MonType]
	and a
	jr z, .PartyMon
	
; 1: OTPartyMon
	ld hl, OTPartyMon1DVs
	dec a
	jr z, .PartyMon
	
; 2: BoxMon
	ld hl, BoxMon1DVs
	ld bc, BoxMon2 - BoxMon1
	dec a
	jr z, .BoxMon
	
; 3: Unknown
	ld hl, TempMonDVs
	dec a
	jr z, .DVs
	
; else: WildMon
	ld hl, EnemyMonDVs
	jr .DVs
	
	
; Get our place in the party/box.
	
.PartyMon
.BoxMon
	ld a, [CurPartyMon]
	call AddNTimes
	
	
.DVs
	
; BoxMon data is read directly from SRAM.
	ld a, [MonType]
	cp BOXMON
	ld a, 1
	call z, GetSRAMBank
	
; Attack DV
	ld a, [hli]
	and $f0
	ld b, a
; Speed DV
	ld a, [hl]
	and $f0
	swap a
	
; Put our DVs together.
	or b
	ld b, a

; Close SRAM if we were dealing with a BoxMon.
	ld a, [MonType]
	cp BOXMON
	call z, CloseSRAM
	
	
; We need the gender ratio to do anything with this.
	push bc
	ld a, [CurPartySpecies]
	dec a
	ld hl, BaseData + BaseGender - CurBaseData
	ld bc, BaseData1 - BaseData
	call AddNTimes
	pop bc
	
	ld a, BANK(BaseData)
	call GetFarByte
	
	
; The higher the ratio, the more likely the monster is to be female.
	
	cp $ff
	jr z, .Genderless
	
	and a
	jr z, .Male
	
	cp $fe
	jr z, .Female
	
; Values below the ratio are male, and vice versa.
	cp b
	jr c, .Male
	
.Female
	xor a
	ret
	
.Male
	ld a, 1
	and a
	ret
	
.Genderless
	scf
	ret
; 50c50

Function50c50: ; 50c50
	ld a, [$d0eb]
	inc a
	ld c, a
	ld a, $4
	sub c
	ld b, a
	push hl
	ld a, [Buffer1]
	ld e, a
	ld d, $0
	ld a, $3e
	call Function50cc9
	ld a, b
	and a
	jr z, .asm_50c6f
	ld c, a
	ld a, $e3
	call Function50cc9

.asm_50c6f
	pop hl
	inc hl
	inc hl
	inc hl
	ld d, h
	ld e, l
	ld hl, TempMonMove1
	ld b, $0
.asm_50c7a
	ld a, [hli]
	and a
	jr z, .asm_50cc8
	push bc
	push hl
	push de
	ld hl, $cfa9
	ld a, [hl]
	push af
	ld [hl], b
	push hl
	callab Functionf8ec
	pop hl
	pop af
	ld [hl], a
	pop de
	pop hl
	push hl
	ld bc, $0014
	add hl, bc
	ld a, [hl]
	and $3f
	ld [$d077], a
	ld h, d
	ld l, e
	push hl
	ld de, $d077
	ld bc, $0102
	call PrintNum
	ld a, $f3
	ld [hli], a
	ld de, $d265
	ld bc, $0102
	call PrintNum
	pop hl
	ld a, [Buffer1]
	ld e, a
	ld d, $0
	add hl, de
	ld d, h
	ld e, l
	pop hl
	pop bc
	inc b
	ld a, b
	cp $4
	jr nz, .asm_50c7a

.asm_50cc8
	ret
; 50cc9

Function50cc9: ; 50cc9
.asm_50cc9
	ld [hli], a
	ld [hld], a
	add hl, de
	dec c
	jr nz, .asm_50cc9
	ret
; 50cd0

INCBIN "baserom.gbc",$50cd0,$50cdb - $50cd0

Function50cdb: ; 50cdb
	push hl
	push hl
	ld hl, PartyMon1Nickname
	ld a, [CurPartyMon]
	call GetNick
	pop hl
	call PlaceString
	call Function5084a
	pop hl
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_50d09
	push hl
	ld bc, $fff4
	add hl, bc
	ld b, $0
	call DrawEnemyHP
	pop hl
	ld bc, $0005
	add hl, bc
	push de
	call PrintLevel
	pop de

.asm_50d09
	ret
; 50d0a


Function50d0a: ; 50d0a
	push de
	inc de
	inc de
	ld a, [de]
	ld b, a
	inc de
	ld a, [de]
	or b
	pop de
	jr nz, Function50d2e
	push de
	ld de, .string_50d21
	call Function50d25
	pop de
	ld a, $1
	and a
	ret

.string_50d21
	db "カセト@"
; 50d25

Function50d25: ; 50d25
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a
	ret
; 50d2e

Function50d2e: ; 50d2e
	push de
	ld a, [de]
	ld de, $4d5f
	bit 3, a
	jr nz, .asm_50d53
	ld de, $4d63
	bit 4, a
	jr nz, .asm_50d53
	ld de, $4d67
	bit 5, a
	jr nz, .asm_50d53
	ld de, $4d6b
	bit 6, a
	jr nz, .asm_50d53
	ld de, $4d5b
	and $7
	jr z, .asm_50d59

.asm_50d53
	call Function50d25
	ld a, $1
	and a

.asm_50d59
	pop de
	ret
; 50d5b

INCBIN "baserom.gbc",$50d5b,$50d6f - $50d5b

Function50d6f: ; 50d6f
	ld de, $d25e
	ld b, $0
.asm_50d74
	ld a, [de]
	inc de
	and a
	jr z, .asm_50da7
	push de
	push hl
	push hl
	ld [CurSpecies], a
	ld a, $2
	ld [$cf61], a
	call GetName
	ld de, StringBuffer1
	pop hl
	push bc
	call PlaceString
	pop bc
	ld a, b
	ld [$d0eb], a
	inc b
	pop hl
	push bc
	ld a, [Buffer1]
	ld c, a
	ld b, $0
	add hl, bc
	pop bc
	pop de
	ld a, b
	cp $4
	jr z, .asm_50db8
	jr .asm_50d74

.asm_50da7
	ld a, b
.asm_50da8
	push af
	ld [hl], $e3
	ld a, [Buffer1]
	ld c, a
	ld b, $0
	add hl, bc
	pop af
	inc a
	cp $4
	jr nz, .asm_50da8

.asm_50db8
	ret
; 50db9

Function50db9: ; 50db9
	ld a, [$d263]
	cp $1
	jr nz, .asm_50dca
	ld hl, OTPartyCount
	ld de, OTPartyMon1OT
	ld a, $6
	jr .asm_50dfc

.asm_50dca
	cp $4
	jr nz, .asm_50dd8
	ld hl, PartyCount
	ld de, PartyMon1OT
	ld a, $5
	jr .asm_50dfc

.asm_50dd8
	cp $5
	jr nz, .asm_50de6
	ld hl, CurMart
	ld de, PokemonNames
	ld a, $1
	jr .asm_50dfc

.asm_50de6
	cp $2
	jr nz, .asm_50df4
	ld hl, NumItems
	ld de, Function50000
	ld a, $4
	jr .asm_50dfc

.asm_50df4
	ld hl, CurMart
	ld de, Function50000
	ld a, $4

.asm_50dfc
	ld [$cf61], a
	ld a, l
	ld [LYOverrides], a
	ld a, h
	ld [$d101], a
	ld a, e
	ld [$d102], a
	ld a, d
	ld [$d103], a
	ld bc, $67c1
	ld a, c
	ld [$d104], a
	ld a, b
	ld [$d105], a
	ret
; 50e1b


Function50e1b: ; 50e1b
	ld a, [TempMonSpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld d, $1
.asm_50e26
	inc d
	ld a, d
	cp $65
	jr z, .asm_50e45
	call Function50e47
	push hl
	ld hl, $d118
	ld a, [$ffb6]
	ld c, a
	ld a, [hld]
	sub c
	ld a, [$ffb5]
	ld c, a
	ld a, [hld]
	sbc c
	ld a, [hMultiplicand]
	ld c, a
	ld a, [hl]
	sbc c
	pop hl
	jr nc, .asm_50e26

.asm_50e45
	dec d
	ret
; 50e47



Function50e47: ; 50e47
	ld a, [BaseGrowthRate]
	add a
	add a
	ld c, a
	ld b, $0
	ld hl, $4efa
	add hl, bc
	call Function50eed
	ld a, d
	ld [hMultiplier], a
	call Multiply
	ld a, [hl]
	and $f0
	swap a
	ld [hMultiplier], a
	call Multiply
	ld a, [hli]
	and $f
	ld [hMultiplier], a
	ld b, $4
	call Divide
	ld a, [hMultiplicand]
	push af
	ld a, [$ffb5]
	push af
	ld a, [$ffb6]
	push af
	call Function50eed
	ld a, [hl]
	and $7f
	ld [hMultiplier], a
	call Multiply
	ld a, [hMultiplicand]
	push af
	ld a, [$ffb5]
	push af
	ld a, [$ffb6]
	push af
	ld a, [hli]
	push af
	xor a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, d
	ld [$ffb6], a
	ld a, [hli]
	ld [hMultiplier], a
	call Multiply
	ld b, [hl]
	ld a, [$ffb6]
	sub b
	ld [$ffb6], a
	ld b, $0
	ld a, [$ffb5]
	sbc b
	ld [$ffb5], a
	ld a, [hMultiplicand]
	sbc b
	ld [hMultiplicand], a
	pop af
	and $80
	jr nz, .asm_50ec8
	pop bc
	ld a, [$ffb6]
	add b
	ld [$ffb6], a
	pop bc
	ld a, [$ffb5]
	adc b
	ld [$ffb5], a
	pop bc
	ld a, [hMultiplicand]
	adc b
	ld [hMultiplicand], a
	jr .asm_50eda

.asm_50ec8
	pop bc
	ld a, [$ffb6]
	sub b
	ld [$ffb6], a
	pop bc
	ld a, [$ffb5]
	sbc b
	ld [$ffb5], a
	pop bc
	ld a, [hMultiplicand]
	sbc b
	ld [hMultiplicand], a

.asm_50eda
	pop bc
	ld a, [$ffb6]
	add b
	ld [$ffb6], a
	pop bc
	ld a, [$ffb5]
	adc b
	ld [$ffb5], a
	pop bc
	ld a, [hMultiplicand]
	adc b
	ld [hMultiplicand], a
	ret
; 50eed

Function50eed: ; 50eed
	xor a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, d
	ld [$ffb6], a
	ld [hMultiplier], a
	jp Multiply
; 50efa

INCBIN "baserom.gbc",$50efa,$50f12 - $50efa

Function50f12:
	ld a, [$d0e3]
	dec a
	ld [$d1ec], a
	ld b, a
	ld a, [$cfa9]
	dec a
	ld [Buffer2], a ; $d1eb (aliases: MovementType)
	cp b
	jr z, .asm_50f33
	call Function50f62
	ld a, [$d1ec]
	call Function50f34
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	call Function50f34
.asm_50f33
	ret

; known jump sources: 50f2a (14:4f2a), 50f30 (14:4f30)
Function50f34: ; 50f34 (14:4f34)
	push af
	ld hl, $c4b4
	ld bc, $28
	call AddNTimes
	ld bc, $28
	ld a, $7f
	call ByteFill
	pop af
	ld hl, Sprites ; $c400
	ld bc, $10
	call AddNTimes
	ld de, $4
	ld c, $4
.asm_50f55
	ld [hl], $a0
	add hl, de
	dec c
	jr nz, .asm_50f55
	ld de, $20
	call WaitPlaySFX
	ret

; known jump sources: 50f24 (14:4f24)
Function50f62: ; 50f62 (14:4f62)
	push hl
	push de
	push bc
	ld bc, PartySpecies ; $dcd8
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	ld l, a
	ld h, $0
	add hl, bc
	ld d, h
	ld e, l
	ld a, [$d1ec]
	ld l, a
	ld h, $0
	add hl, bc
	ld a, [hl]
	push af
	ld a, [de]
	ld [hl], a
	pop af
	ld [de], a
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	call AddNTimes
	push hl
	ld de, DefaultFlypoint ; $d002
	ld bc, $30
	call CopyBytes
	ld a, [$d1ec]
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	call AddNTimes
	pop de
	push hl
	ld bc, $30
	call CopyBytes
	pop de
	ld hl, DefaultFlypoint ; $d002
	ld bc, $30
	call CopyBytes
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT)
	call SkipNames
	push hl
	call Function51036
	ld a, [$d1ec]
	ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT)
	call SkipNames
	pop de
	push hl
	call Function51039
	pop de
	ld hl, DefaultFlypoint ; $d002
	call Function51039
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	call SkipNames
	push hl
	call Function51036
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	ld a, [$d1ec]
	call SkipNames
	pop de
	push hl
	call Function51039
	pop de
	ld hl, DefaultFlypoint ; $d002
	call Function51039
	ld hl, $a600
	ld a, [Buffer2] ; $d1eb (aliases: MovementType)
	ld bc, $2f
	call AddNTimes
	push hl
	ld de, DefaultFlypoint ; $d002
	ld bc, $2f
	ld a, $0
	call GetSRAMBank
	call CopyBytes
	ld hl, $a600
	ld a, [$d1ec]
	ld bc, $2f
	call AddNTimes
	pop de
	push hl
	ld bc, $2f
	call CopyBytes
	pop de
	ld hl, DefaultFlypoint ; $d002
	ld bc, $2f
	call CopyBytes
	call CloseSRAM
	pop bc
	pop de
	pop hl
	ret

; known jump sources: 50fbc (14:4fbc), 50fde (14:4fde)
Function51036: ; 51036 (14:5036)
	ld de, DefaultFlypoint ; $d002

; known jump sources: 50fca (14:4fca), 50fd1 (14:4fd1), 50fec (14:4fec), 50ff3 (14:4ff3)
Function51039: ; 51039 (14:5039)
	ld bc, $b
	call CopyBytes
	ret

GetUnownLetter: ; 51040
; Return Unown letter in UnownLetter based on DVs at hl

; Take the middle 2 bits of each DV and place them in order:
;	AtkDefDV | SpdSpcDV
;	.ww..xx.   .yy..zz.

	; atk
	ld a, [hl]
	and %01100000
	sla a
	ld b, a
	; def
	ld a, [hli]
	and %00000110
	swap a
	srl a
	or b
	ld b, a
	
	; spd
	ld a, [hl]
	and %01100000
	swap a
	sla a
	or b
	ld b, a
	; spc
	ld a, [hl]
	and %00000110
	srl a
	or b

; Divide by 10 to get 0-25
	ld [hDividend + 3], a
	xor a
	ld [hDividend], a
	ld [hDividend + 1], a
	ld [hDividend + 2], a
	ld a, 10
	ld [hDivisor], a
	ld b, $4
	call Divide

; Increment to get 1-26
	ld a, [hQuotient + 2]
	inc a
	ld [UnownLetter], a
	ret
; 51077


Function51077: ; 51077
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call IsAPokemon
	ret c
	ld a, [rSVBK]
	push af
	call Function510a5
	pop af
	ld [rSVBK], a
	ret
; 5108b

Function5108b: ; 5108b
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call IsAPokemon
	ret c
	ld a, [rSVBK]
	push af
	xor a
	ld [hBGMapMode], a
	call Function510a5
	call Function51103
	pop af
	ld [rSVBK], a
	ret
; 510a5

Function510a5: ; 510a5
	push de
	call GetBaseData
	ld a, [BasePicSize]
	and $f
	ld b, a
	push bc
	call Function510d7
	ld a, $6
	ld [rSVBK], a
	ld a, b
	ld de, $d800
	call FarDecompress
	pop bc
	ld hl, Unkn1Pals
	ld de, $d800
	call Function512ab
	pop hl
	push hl
	ld de, Unkn1Pals
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	pop hl
	ret
; 510d7

Function510d7: ; 510d7
	ld a, [CurPartySpecies]
	cp $c9
	jr z, .asm_510e5
	ld a, [CurPartySpecies]
	ld d, $48
	jr .asm_510ea

.asm_510e5
	ld a, [UnownLetter]
	ld d, $49

.asm_510ea
	ld hl, Function50000
	dec a
	ld bc, $0006
	call AddNTimes
	ld a, d
	call GetFarByte
	call Function511c5
	push af
	inc hl
	ld a, d
	call GetFarHalfword
	pop bc
	ret
; 51103

Function51103: ; 51103
	ld a, $1
	ld [rVBK], a
	push hl
	ld de, Unkn1Pals
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	pop hl
	ld de, $0310
	add hl, de
	push hl
	ld a, $1
	ld hl, BasePicSize
	call GetFarWRAMByte
	pop hl
	and $f
	ld de, $d990
	ld c, $19
	cp $5
	jr z, .asm_5113b
	ld de, $da40
	ld c, $24
	cp $6
	jr z, .asm_5113b
	ld de, $db10
	ld c, $31

.asm_5113b
	push hl
	push bc
	call Function5114f
	pop bc
	pop hl
	ld de, Unkn1Pals
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	xor a
	ld [rVBK], a
	ret
; 5114f

Function5114f: ; 5114f
	ld hl, Unkn1Pals
	swap c
	ld a, c
	and $f
	ld b, a
	ld a, c
	and $f0
	ld c, a
	push bc
	call Function512f2
	pop bc
.asm_51161
	push bc
	ld c, $0
	call Function512f2
	pop bc
	dec b
	jr nz, .asm_51161
	ret
; 5116c

Function5116c: ; 5116c
	ld a, [CurPartySpecies]
	call IsAPokemon
	ret c
	ld a, [CurPartySpecies]
	ld b, a
	ld a, [UnownLetter]
	ld c, a
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	push de
	ld hl, Function50000
	ld a, b
	ld d, $48
	cp $c9
	jr nz, .asm_51190
	ld a, c
	ld d, $49

.asm_51190
	dec a
	ld bc, $0006
	call AddNTimes
	ld bc, $0003
	add hl, bc
	ld a, d
	call GetFarByte
	call Function511c5
	push af
	inc hl
	ld a, d
	call GetFarHalfword
	ld de, Unkn1Pals
	pop af
	call FarDecompress
	ld hl, Unkn1Pals
	ld c, $24
	call Function5127c
	pop hl
	ld de, Unkn1Pals
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	pop af
	ld [rSVBK], a
	ret
; 511c5


Function511c5: ; 511c5
	push hl
	push bc
	sub $12
	ld c, a
	ld b, 0
	ld hl, $51d4
	add hl, bc
	ld a, [hl]
	pop bc
	pop hl
	ret
; 511d4

INCBIN "baserom.gbc",$511d4,$5120d - $511d4


Function5120d: ; 5120d
	ld a, [TrainerClass]
	and a
	ret z
	cp $44
	ret nc
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld hl, Function50000
	ld a, [TrainerClass]
	dec a
	ld bc, $0003
	call AddNTimes
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	push de
	ld a, $4a
	call GetFarByte
	call Function511c5
	push af
	inc hl
	ld a, $4a
	call GetFarHalfword
	pop af
	ld de, $d000
	call FarDecompress
	pop hl
	ld de, $d000
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	pop af
	ld [rSVBK], a
	call WaitBGMap
	ld a, $1
	ld [hBGMapMode], a
	ret
; 5125d



DecompressPredef: ; 5125d
; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.

	ld a, [rSVBK]
	push af
	ld a, 6
	ld [rSVBK], a

	push de
	push bc
	ld a, b
	ld de, $d000
	call FarDecompress
	pop bc
	ld de, $d000
	pop hl
	ld a, [hROMBank]
	ld b, a
	call Get2bpp

	pop af
	ld [rSVBK], a
	ret
; 5127c


Function5127c: ; 5127c
	push de
	push bc
	ld a, [$c2c6]
	and a
	jr z, .asm_512a8
	ld a, c
	cp $31
	ld de, $0310
	jr z, .asm_51296
	cp $24
	ld de, $0240
	jr z, .asm_51296
	ld de, $0190

.asm_51296
	ld a, [hl]
	ld b, $0
	ld c, $8
.asm_5129b
	rra
	rl b
	dec c
	jr nz, .asm_5129b
	ld a, b
	ld [hli], a
	dec de
	ld a, e
	or d
	jr nz, .asm_51296

.asm_512a8
	pop bc
	pop de
	ret
; 512ab

Function512ab: ; 512ab
	ld a, b
	cp $6
	jr z, .asm_512bd
	cp $5
	jr z, .asm_512d2
.asm_512b4
	ld c, $70
	call Function512f2
	dec b
	jr nz, .asm_512b4
	ret

.asm_512bd
	ld c, $70
	xor a
	call Function512ed
.asm_512c3
	ld c, $10
	xor a
	call Function512ed
	ld c, $60
	call Function512f2
	dec b
	jr nz, .asm_512c3
	ret

.asm_512d2
	ld c, $70
	xor a
	call Function512ed
.asm_512d8
	ld c, $20
	xor a
	call Function512ed
	ld c, $50
	call Function512f2
	dec b
	jr nz, .asm_512d8
	ld c, $70
	xor a
	call Function512ed
	ret
; 512ed

Function512ed: ; 512ed
.asm_512ed
	ld [hli], a
	dec c
	jr nz, .asm_512ed
	ret
; 512f2

Function512f2: ; 512f2
	ld a, [$c2c6]
	and a
	jr nz, .asm_512ff
.asm_512f8
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_512f8
	ret

.asm_512ff
	push bc
.asm_51300
	ld a, [de]
	inc de
	ld b, a
	xor a
	rr b
	rla
	rr b
	rla
	rr b
	rla
	rr b
	rla
	rr b
	rla
	rr b
	rla
	rr b
	rla
	rr b
	rla
	ld [hli], a
	dec c
	jr nz, .asm_51300
	pop bc
	ret
; 51322

Function51322: ; 51322
	ld a, $1
	call GetSRAMBank
	ld hl, BoxCount
	call Function513cb
	ld a, [BoxCount]
	dec a
	ld [$d265], a
	ld hl, BoxMon1Nickname
	ld bc, $000b
	ld de, DefaultFlypoint
	call Function513e0
	ld a, [BoxCount]
	dec a
	ld [$d265], a
	ld hl, BoxMon1OT
	ld bc, $000b
	ld de, $d00d
	call Function513e0
	ld a, [BoxCount]
	dec a
	ld [$d265], a
	ld hl, BoxMon1Species
	ld bc, $0020
	ld de, $d018
	call Function513e0
	ld hl, $d01a
	ld de, TempMonMove1
	ld bc, $0004
	call CopyBytes
	ld hl, $d02f
	ld de, TempMonPP
	ld bc, $0004
	call CopyBytes
	ld a, [CurPartyMon]
	ld b, a
	callba Functiondcb6
	jp CloseSRAM
; 5138b

INCBIN "baserom.gbc",$5138b,$513cb - $5138b

Function513cb: ; 513cb
	inc [hl]
	inc hl
	ld a, [CurPartyMon]
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [CurPartySpecies]
	ld c, a
.asm_513d8
	ld a, [hl]
	ld [hl], c
	inc hl
	inc c
	ld c, a
	jr nz, .asm_513d8
	ret
; 513e0

Function513e0: ; 513e0
	push de
	push hl
	push bc
	ld a, [$d265]
	dec a
	call AddNTimes
	push hl
	add hl, bc
	ld d, h
	ld e, l
	pop hl
.asm_513ef
	push bc
	ld a, [$d265]
	ld b, a
	ld a, [CurPartyMon]
	cp b
	pop bc
	jr z, .asm_51415
	push hl
	push de
	push bc
	call CopyBytes
	pop bc
	pop de
	pop hl
	push hl
	ld a, l
	sub c
	ld l, a
	ld a, h
	sbc b
	ld h, a
	pop de
	ld a, [$d265]
	dec a
	ld [$d265], a
	jr .asm_513ef

.asm_51415
	pop bc
	pop hl
	ld a, [CurPartyMon]
	call AddNTimes
	ld d, h
	ld e, l
	pop hl
	call CopyBytes
	ret
; 51424

BaseData:
INCLUDE "stats/base_stats.asm"

PokemonNames:
INCLUDE "stats/pokemon_names.asm"

INCBIN "baserom.gbc",$53d84,$53e2e - $53d84



SECTION "bank19", ROMX, BANK[$19]

INCLUDE "text/phone/extra.asm"



SECTION "bank20", ROMX, BANK[$20]


DoPlayerMovement: ; 80000

	call GetMovementInput
	ld a, $3e ; standing
	ld [MovementAnimation], a
	xor a
	ld [$d041], a
	call GetPlayerMovement
	ld c, a
	ld a, [MovementAnimation]
	ld [$c2de], a
	ret
; 80017


GetMovementInput: ; 80017

	ld a, [hJoyDown]
	ld [CurInput], a

; Standing downhill instead moves down.

	ld hl, BikeFlags
	bit 2, [hl] ; downhill
	ret z

	ld c, a
	and $f0
	ret nz

	ld a, c
	or D_DOWN
	ld [CurInput], a
	ret
; 8002d


GetPlayerMovement: ; 8002d

	ld a, [PlayerState]
	cp PLAYER_NORMAL
	jr z, .Normal
	cp PLAYER_SURF
	jr z, .Surf
	cp PLAYER_SURF_PIKA
	jr z, .Surf
	cp PLAYER_BIKE
	jr z, .Normal
	cp PLAYER_SLIP
	jr z, .Board

.Normal
	call CheckForcedMovementInput
	call GetMovementAction
	call CheckTileMovement
	ret c
	call CheckTurning
	ret c
	call TryStep
	ret c
	call TryJumpLedge
	ret c
	call CheckEdgeWarp
	ret c
	jr .NotMoving

.Surf
	call CheckForcedMovementInput
	call GetMovementAction
	call CheckTileMovement
	ret c
	call CheckTurning
	ret c
	call TrySurfStep
	ret c
	jr .NotMoving

.Board
	call CheckForcedMovementInput
	call GetMovementAction
	call CheckTileMovement
	ret c
	call CheckTurning
	ret c
	call TryStep
	ret c
	call TryJumpLedge
	ret c
	call CheckEdgeWarp
	ret c
	ld a, [WalkingDirection]
	cp STANDING
	jr z, .HitWall
	call PlayBump
.HitWall
	call StandInPlace
	xor a
	ret

.NotMoving
	ld a, [WalkingDirection]
	cp STANDING
	jr z, .Standing

; Walking into an edge warp won't bump.
	ld a, [$d041]
	and a
	jr nz, .CantMove
	call PlayBump
.CantMove
	call WalkInPlace
	xor a
	ret

.Standing
	call StandInPlace
	xor a
	ret
; 800b7


CheckTileMovement: ; 800b7
; Tiles such as waterfalls and warps move the player
; in a given direction, overriding input.

	ld a, [StandingTile]
	ld c, a
	call CheckWhirlpoolTile
	jr c, .asm_800c4
	ld a, 3
	scf
	ret

.asm_800c4
	and $f0
	cp $30 ; moving water
	jr z, .water
	cp $40 ; moving land 1
	jr z, .land1
	cp $50 ; moving land 2
	jr z, .land2
	cp $70 ; warps
	jr z, .warps
	jr .asm_8013c

.water
	ld a, c
	and 3
	ld c, a
	ld b, 0
	ld hl, .water_table
	add hl, bc
	ld a, [hl]
	ld [WalkingDirection], a
	jr .asm_8013e

.water_table
	db RIGHT
	db LEFT
	db UP
	db DOWN

.land1
	ld a, c
	and 7
	ld c, a
	ld b, 0
	ld hl, .land1_table
	add hl, bc
	ld a, [hl]
	cp STANDING
	jr z, .asm_8013c
	ld [WalkingDirection], a
	jr .asm_8013e

.land1_table
	db STANDING
	db RIGHT
	db LEFT
	db UP
	db DOWN
	db STANDING
	db STANDING
	db STANDING

.land2
	ld a, c
	and 7
	ld c, a
	ld b, 0
	ld hl, .land2_table
	add hl, bc
	ld a, [hl]
	cp STANDING
	jr z, .asm_8013c
	ld [WalkingDirection], a
	jr .asm_8013e

.land2_table
	db RIGHT
	db LEFT
	db UP
	db DOWN
	db STANDING
	db STANDING
	db STANDING
	db STANDING

.warps
	ld a, c
	cp $71 ; door
	jr z, .down
	cp $79
	jr z, .down
	cp $7a ; stairs
	jr z, .down
	cp $7b ; cave
	jr nz, .asm_8013c

.down
	ld a, DOWN
	ld [WalkingDirection], a
	jr .asm_8013e

.asm_8013c
	xor a
	ret

.asm_8013e
	ld a, STEP_WALK
	call DoStep
	ld a, 5
	scf
	ret
; 80147


CheckTurning: ; 80147
; If the player is turning, change direction first. This also lets
; the player change facing without moving by tapping a direction.

	ld a, [$d04e]
	cp 0
	jr nz, .asm_80169
	ld a, [WalkingDirection]
	cp STANDING
	jr z, .asm_80169

	ld e, a
	ld a, [PlayerDirection]
	rrca
	rrca
	and 3
	cp e
	jr z, .asm_80169

	ld a, STEP_TURN
	call DoStep
	ld a, 2
	scf
	ret

.asm_80169
	xor a
	ret
; 8016b


TryStep: ; 8016b

; Surfing actually calls TrySurfStep directly instead of passing through here.
	ld a, [PlayerState]
	cp PLAYER_SURF
	jr z, TrySurfStep
	cp PLAYER_SURF_PIKA
	jr z, TrySurfStep

	call CheckLandPermissions
	jr c, .asm_801be

	call Function80341
	and a
	jr z, .asm_801be
	cp 2
	jr z, .asm_801be

	ld a, [StandingTile]
	call CheckIceTile
	jr nc, .ice

; Downhill riding is slower when not moving down.
	call CheckRiding
	jr nz, .asm_801ae

	ld hl, BikeFlags
	bit 2, [hl] ; downhill
	jr z, .fast

	ld a, [WalkingDirection]
	cp DOWN
	jr z, .fast

	ld a, STEP_WALK
	call DoStep
	scf
	ret

.fast
	ld a, STEP_BIKE
	call DoStep
	scf
	ret

.asm_801ae
	ld a, STEP_WALK
	call DoStep
	scf
	ret

.ice
	ld a, STEP_ICE
	call DoStep
	scf
	ret

; unused?
	xor a
	ret

.asm_801be
	xor a
	ret
; 801c0


TrySurfStep: ; 801c0

	call CheckWaterPermissions
	ld [MartPointer], a
	jr c, .asm_801f1

	call Function80341
	ld [$d03f], a
	and a
	jr z, .asm_801f1
	cp 2
	jr z, .asm_801f1

	ld a, [MartPointer]
	and a
	jr nz, .ExitWater

	ld a, STEP_WALK
	call DoStep
	scf
	ret

.ExitWater
	call WaterToLandSprite
	call Function3cdf ; PlayMapMusic
	ld a, STEP_WALK
	call DoStep
	ld a, 6
	scf
	ret

.asm_801f1
	xor a
	ret
; 801f3


TryJumpLedge: ; 801f3
	ld a, [StandingTile]
	ld e, a
	and $f0
	cp $a0 ; ledge
	jr nz, .DontJump

	ld a, e
	and 7
	ld e, a
	ld d, 0
	ld hl, .data_8021e
	add hl, de
	ld a, [FacingDirection]
	and [hl]
	jr z, .DontJump

	ld de, SFX_JUMP_OVER_LEDGE
	call PlaySFX
	ld a, STEP_LEDGE
	call DoStep
	ld a, 7
	scf
	ret

.DontJump
	xor a
	ret

.data_8021e
	db FACE_RIGHT
	db FACE_LEFT
	db FACE_UP
	db FACE_DOWN
	db FACE_RIGHT | FACE_DOWN
	db FACE_DOWN | FACE_LEFT
	db FACE_UP | FACE_RIGHT
	db FACE_UP | FACE_LEFT
; 80226


CheckEdgeWarp: ; 80226

; Bug: Since no case is made for STANDING here, it will check
; [.edgewarps + $ff]. This resolves to $3e at $8035a.
; This causes $d041 to be nonzero when standing on tile $3e,
; making bumps silent.

	ld a, [WalkingDirection]
	ld e, a
	ld d, 0
	ld hl, .EdgeWarps
	add hl, de
	ld a, [StandingTile]
	cp [hl]
	jr nz, .asm_80259

	ld a, 1
	ld [$d041], a
	ld a, [WalkingDirection]
	cp STANDING
	jr z, .asm_80259

	ld e, a
	ld a, [PlayerDirection]
	rrca
	rrca
	and 3
	cp e
	jr nz, .asm_80259
	call Function224a ; CheckFallPit?
	jr nc, .asm_80259

	call StandInPlace
	scf
	ld a, 1
	ret

.asm_80259
	xor a
	ret

.EdgeWarps
	db $70, $78, $76, $7e
; 8025f


DoStep: ; 8025f
	ld e, a
	ld d, 0
	ld hl, .Steps
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a

	ld a, [WalkingDirection]
	ld e, a
	cp STANDING
	jp z, StandInPlace

	add hl, de
	ld a, [hl]
	ld [MovementAnimation], a

	ld hl, .WalkInPlace
	add hl, de
	ld a, [hl]
	ld [$d04e], a

	ld a, 4
	ret

.Steps
	dw .Slow
	dw .Walk
	dw .Bike
	dw .Ledge
	dw .Ice
	dw .Turn
	dw .BackwardsLedge
	dw .WalkInPlace

.Slow
	db $08, $09, $0a, $0b
.Walk
	db $0c, $0d, $0e, $0f
.Bike
	db $10, $11, $12, $13
.Ledge
	db $30, $31, $32, $33
.Ice
	db $1c, $1d, $1e, $1f
.BackwardsLedge
	db $31, $30, $33, $32
.Turn
	db $04, $05, $06, $07
.WalkInPlace
	db $80, $81, $82, $83
; 802b3


StandInPlace: ; 802b3
	ld a, 0
	ld [$d04e], a
	ld a, $3e ; standing
	ld [MovementAnimation], a
	xor a
	ret
; 802bf


WalkInPlace: ; 802bf
	ld a, 0
	ld [$d04e], a
	ld a, $50 ; walking
	ld [MovementAnimation], a
	xor a
	ret
; 802cb


CheckForcedMovementInput: ; 802cb
; When sliding on ice, input is forced to remain in the same direction.

	call Function80404
	ret nc

	ld a, [$d04e]
	cp 0
	ret z

	and 3
	ld e, a
	ld d, 0
	ld hl, .data_802e8
	add hl, de
	ld a, [CurInput]
	and A_BUTTON | B_BUTTON | SELECT | START
	or [hl]
	ld [CurInput], a
	ret

.data_802e8
	db D_DOWN, D_UP, D_LEFT, D_RIGHT
; 802ec


GetMovementAction: ; 802ec
; Poll player input and update movement info.

	ld hl, .table
	ld de, .table2 - .table1
	ld a, [CurInput]
	bit 7, a
	jr nz, .down
	bit 6, a
	jr nz, .up
	bit 5, a
	jr nz, .left
	bit 4, a
	jr nz, .right
; Standing
	jr .update

.down 	add hl, de
.up   	add hl, de
.left 	add hl, de
.right	add hl, de

.update
	ld a, [hli]
	ld [WalkingDirection], a
	ld a, [hli]
	ld [FacingDirection], a
	ld a, [hli]
	ld [WalkingX], a
	ld a, [hli]
	ld [WalkingY], a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	ld [WalkingTile], a
	ret

.table
; struct:
;	walk direction
;	facing
;	x movement
;	y movement
;	tile collision pointer
.table1
	db STANDING, FACE_CURRENT, 0, 0
	dw StandingTile
.table2
	db RIGHT, FACE_RIGHT,  1,  0
	dw TileRight
	db LEFT,  FACE_LEFT,  -1,  0
	dw TileLeft
	db UP,    FACE_UP,     0, -1
	dw TileUp
	db DOWN,  FACE_DOWN,   0,  1
	dw TileDown
; 80341


Function80341: ; 80341

	ld a, 0
	ld [hConnectionStripLength], a
	ld a, [MapX]
	ld d, a
	ld a, [WalkingX]
	add d
	ld d, a
	ld a, [MapY]
	ld e, a
	ld a, [WalkingY]
	add e
	ld e, a
	ld bc, $d4d6
	callba Function7041
	jr nc, .asm_80369
	call Function8036f
	jr c, .asm_8036c

	xor a
	ret

.asm_80369
	ld a, 1
	ret

.asm_8036c
	ld a, 2
	ret
; 8036f


Function8036f: ; 8036f

	ld hl, BikeFlags
	bit 0, [hl]
	jr z, .asm_8039c

	ld hl, $0007
	add hl, bc
	ld a, [hl]
	cp $ff
	jr nz, .asm_8039c

	ld hl, $0006
	add hl, bc
	bit 6, [hl]
	jr z, .asm_8039c

	ld hl, $0005
	add hl, bc
	set 2, [hl]

	ld a, [WalkingDirection]
	ld d, a
	ld hl, $0020
	add hl, bc
	ld a, [hl]
	and $fc
	or d
	ld [hl], a

	scf
	ret

.asm_8039c
	xor a
	ret
; 8039e


CheckLandPermissions: ; 8039e
; Return 0 if walking onto land and tile permissions allow it.
; Otherwise, return carry.

	ld a, [TilePermissions]
	ld d, a
	ld a, [FacingDirection]
	and d
	jr nz, .NotWalkable

	ld a, [WalkingTile]
	call CheckWalkable
	jr c, .NotWalkable

	xor a
	ret

.NotWalkable
	scf
	ret
; 803b4

CheckWaterPermissions: ; 803b4
; Return 0 if moving in water, or 1 if moving onto land.
; Otherwise, return carry.

	ld a, [TilePermissions]
	ld d, a
	ld a, [FacingDirection]
	and d
	jr nz, .NotSurfable

	ld a, [WalkingTile]
	call CheckSurfable
	jr c, .NotSurfable

	and a
	ret

.NotSurfable
	scf
	ret
; 803ca


CheckRiding: ; 803ca

	ld a, [PlayerState]
	cp PLAYER_BIKE
	ret z
	cp PLAYER_SLIP
	ret
; 803d3


CheckWalkable: ; 803d3
; Return 0 if tile a is land. Otherwise, return carry.

	call GetTileCollision
	and a ; land
	ret z
	scf
	ret
; 803da


CheckSurfable: ; 803da
; Return 0 if tile a is water, or 1 if land.
; Otherwise, return carry.

	call GetTileCollision
	cp 1
	jr z, .Water

; Can walk back onto land from water.
	and a
	jr z, .Land

	jr .Neither

.Water
	xor a
	ret

.Land
	ld a, 1
	and a
	ret

.Neither
	scf
	ret
; 803ee


PlayBump: ; 803ee

	call CheckSFX
	ret c
	ld de, SFX_BUMP
	call PlaySFX
	ret
; 803f9


WaterToLandSprite: ; 803f9
	push bc
	ld a, PLAYER_NORMAL
	ld [PlayerState], a
	call Functione4a ; UpdateSprites
	pop bc
	ret
; 80404


Function80404: ; 80404
	ld a, [$d04e]
	cp 0
	jr z, .asm_80420
	cp $f0
	jr z, .asm_80420
	ld a, [StandingTile]
	call CheckIceTile
	jr nc, .asm_8041e
	ld a, [PlayerState]
	cp PLAYER_SLIP
	jr nz, .asm_80420

.asm_8041e
	scf
	ret

.asm_80420
	and a
	ret
; 80422


Function80422: ; 80422
	ld hl, $c2de
	ld a, $3e ; standing
	cp [hl]
	ret z
	ld [hl], a
	ld a, 0
	ld [$d04e], a
	ret
; 80430



EngineFlagAction: ; 80430
; Do action b on engine flag de
;
;   b = 0: reset flag
;     = 1: set flag
;     > 1: check flag, result in c
;
; Setting/resetting does not return a result.


; 16-bit flag ids are considered invalid, but it's nice
; to know that the infrastructure is there.

	ld a, d
	cp 0
	jr z, .ceiling
	jr c, .read ; cp 0 can't set carry!
	jr .invalid
	
; There are only $a2 engine flags, so
; anything beyond that is invalid too.
	
.ceiling
	ld a, e
	cp $a2
	jr c, .read
	
; Invalid flags are treated as flag $00.
	
.invalid
	xor a
	ld e, a
	ld d, a
	
; Get this flag's location.
	
.read
	ld hl, EngineFlags
; location
	add hl, de
	add hl, de
; bit
	add hl, de
	
; location
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
; bit
	ld c, [hl]
	
; What are we doing with this flag?
	
	ld a, b
	cp 1
	jr c, .reset ; b = 0
	jr z, .set   ; b = 1
	
; Return the given flag in c.
.check
	ld a, [de]
	and c
	ld c, a
	ret
	
; Set the given flag.
.set
	ld a, [de]
	or c
	ld [de], a
	ret
	
; Reset the given flag.
.reset
	ld a, c
	cpl ; AND all bits except the one in question
	ld c, a
	ld a, [de]
	and c
	ld [de], a
	ret
; 80462


EngineFlags: ; 80462
INCLUDE "engine/engine_flags.asm"
; 80648



; no known jump sources
Function80648: ; 80648 (20:4648)
	ld a, c
	cp $1b
	jr c, .asm_8064e
	xor a
.asm_8064e
	ld c, a
	ld b, $0
	ld hl, $4671
	add hl, bc
	add hl, bc
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
	ld b, [hl]
	ld a, b
	and $80
	jr nz, .asm_80668
	ld a, b
	and $40
	ret nz
	ld a, [de]
	jr Function8066c
.asm_80668
	call _de_
	ret

; known jump sources: 80666 (20:4666), 806ec (20:46ec), 806f6 (20:46f6), 806fc (20:46fc)
Function8066c: ; 8066c (20:466c)
	ld de, StringBuffer2 ; $d086
	ld [de], a
	ret
; 80671 (20:4671)

INCBIN "baserom.gbc",$80671,$806e1 - $80671
	ld hl, JohtoBadges ; $d857
	ld b, $2
	call CountSetBits
	ld a, [$d265]
	jp Function8066c
	ld a, [PlayerDirection] ; $d4de
	and $c
	rrca
	rrca
	jp Function8066c
	call GetWeekday
	jp Function8066c
; 806ff (20:46ff)

INCBIN "baserom.gbc",$806ff,$80730 - $806ff

BattleText:
INCLUDE "text/battle.asm"

INCBIN "baserom.gbc",$818ac,$81fe3 - $818ac

DebugColorTestGFX:
INCBIN "gfx/debug/color_test.2bpp"

INCBIN "baserom.gbc",$82153,$823c8 - $82153


SECTION "bank21", ROMX, BANK[$21]

Function84000: ; 84000
	ld hl, OverworldMap
	ld bc, $040c
	xor a
	call Function842ab
	xor a
	ld [rSB], a
	ld [rSC], a
	ld [$c2d5], a
	ld hl, $c2d4
	set 0, [hl]
	ld a, [GBPrinter]
	ld [$cbfb], a
	xor a
	ld [$cf63], a
	ret
; 84022

Function84022: ; 84022
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4031
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 84031


; no known jump sources
Jumptable_84031: ; 84031 (21:4031)
	dw Function84077
	dw Function84143
	dw Function84120
	dw Function84099
	dw Function84180
	dw Function8412e
	dw Function840c5
	dw Function84180
	dw Function84120
	dw Function840de
	dw Function84180
	dw Function84120
	dw Function841a1
	dw Function84063
	dw Function8406d
	dw Function84120
	dw Function84103
	dw Function84071
	dw Function841b0
	dw Function841b3


; known jump sources: 8406d (21:406d), 8408d (21:408d), 840b9 (21:40b9), 840d7 (21:40d7), 840f7 (21:40f7), 84119 (21:4119), 8412a (21:412a), 8416e (21:416e), 84193 (21:4193), 841ac (21:41ac), 841b0 (21:41b0)
Function84059: ; 84059 (21:4059)
	ld hl, $cf63
	inc [hl]
	ret

; known jump sources: 8413c (21:413c), 8413f (21:413f), 84197 (21:4197)
Function8405e: ; 8405e (21:405e)
	ld hl, $cf63
	dec [hl]
	ret

; no known jump sources
Function84063: ; 84063 (21:4063)
	xor a
	ld [$ca89], a
	ld hl, $cf63
	set 7, [hl]
	ret

; no known jump sources
Function8406d: ; 8406d (21:406d)
	call Function84059
	ret

; no known jump sources
Function84071: ; 84071 (21:4071)
	ld a, $1
	ld [$cf63], a
	ret

; no known jump sources
Function84077: ; 84077 (21:4077)
	call Function841fb
	ld hl, $42b7
	call Function841e2
	xor a
	ld [$ca8e], a
	ld [$ca8f], a
	ld a, [$cf65]
	ld [$ca81], a
	call Function84059
	call Function841c3
	ld a, $1
	ld [$cbf8], a
	ret

; no known jump sources
Function84099: ; 84099 (21:4099)
	call Function841fb
	ld hl, $ca81
	ld a, [hl]
	and a
	jr z, Function840c5
	ld hl, $42c3
	call Function841e2
	call Function84260
	ld a, $80
	ld [$ca8e], a
	ld a, $2
	ld [$ca8f], a
	call Function84219
	call Function84059
	call Function841c3
	ld a, $2
	ld [$cbf8], a
	ret

; known jump sources: 840a1 (21:40a1)
Function840c5: ; 840c5 (21:40c5)
	ld a, $6
	ld [$cf63], a
	ld hl, $42c9
	call Function841e2
	xor a
	ld [$ca8e], a
	ld [$ca8f], a
	call Function84059
	call Function841c3
	ret

; no known jump sources
Function840de: ; 840de (21:40de)
	call Function841fb
	ld hl, $42bd
	call Function841e2
	call Function84249
	ld a, $4
	ld [$ca8e], a
	ld a, $0
	ld [$ca8f], a
	call Function84219
	call Function84059
	call Function841c3
	ld a, $3
	ld [$cbf8], a
	ret

; no known jump sources
Function84103: ; 84103 (21:4103)
	call Function841fb
	ld hl, $42b7
	call Function841e2
	xor a
	ld [$ca8e], a
	ld [$ca8f], a
	ld a, [$cf65]
	ld [$ca81], a
	call Function84059
	call Function841c3
	ret

; no known jump sources
Function84120: ; 84120 (21:4120)
	ld hl, $ca8b
	inc [hl]
	ld a, [hl]
	cp $6
	ret c
	xor a
	ld [hl], a
	call Function84059
	ret

; no known jump sources
Function8412e: ; 8412e (21:412e)
	ld hl, $ca8b
	inc [hl]
	ld a, [hl]
	cp $6
	ret c
	xor a
	ld [hl], a
	ld hl, $ca81
	dec [hl]
	call Function8405e
	call Function8405e
	ret

; no known jump sources
Function84143: ; 84143 (21:4143)
	ld a, [$c2d5]
	and a
	ret nz
	ld a, [$ca88]
	cp $ff
	jr nz, .asm_84156
	ld a, [$ca89]
	cp $ff
	jr z, .asm_84172
.asm_84156
	ld a, [$ca88]
	cp $81
	jr nz, .asm_84172
	ld a, [$ca89]
	cp $0
	jr nz, .asm_84172
	ld hl, $c2d4
	set 1, [hl]
	ld a, $5
	ld [$ca8a], a
	call Function84059
	ret
.asm_84172
	ld a, $ff
	ld [$ca88], a
	ld [$ca89], a
	ld a, $e
	ld [$cf63], a
	ret

; no known jump sources
Function84180: ; 84180 (21:4180)
	ld a, [$c2d5]
	and a
	ret nz
	ld a, [$ca89]
	and $f0
	jr nz, .asm_8419b
	ld a, [$ca89]
	and $1
	jr nz, .asm_84197
	call Function84059
	ret
.asm_84197
	call Function8405e
	ret
.asm_8419b
	ld a, $12
	ld [$cf63], a
	ret

; no known jump sources
Function841a1: ; 841a1 (21:41a1)
	ld a, [$c2d5]
	and a
	ret nz
	ld a, [$ca89]
	and $f3
	ret nz
	call Function84059
	ret

; no known jump sources
Function841b0: ; 841b0 (21:41b0)
	call Function84059

; no known jump sources
Function841b3: ; 841b3 (21:41b3)
	ld a, [$c2d5]
	and a
	ret nz
	ld a, [$ca89]
	and $f0
	ret nz
	xor a
	ld [$cf63], a
	ret

; known jump sources: 84090 (21:4090), 840bc (21:40bc), 840da (21:40da), 840fa (21:40fa), 8411c (21:411c), 841c7 (21:41c7)
Function841c3: ; 841c3 (21:41c3)
	ld a, [$c2d5]
	and a
	jr nz, Function841c3
	xor a
	ld [$ca8c], a
	ld [$ca8d], a
	ld a, $1
	ld [$c2d5], a
	ld a, $88
	ld [rSB], a ; $ff00+$1
	ld a, $1
	ld [rSC], a ; $ff00+$2
	ld a, $81
	ld [rSC], a ; $ff00+$2
	ret

; known jump sources: 8407d (21:407d), 840a6 (21:40a6), 840cd (21:40cd), 840e4 (21:40e4), 84109 (21:4109)
Function841e2: ; 841e2 (21:41e2)
	ld a, [hli]
	ld [$ca82], a
	ld a, [hli]
	ld [$ca83], a
	ld a, [hli]
	ld [$ca84], a
	ld a, [hli]
	ld [$ca85], a
	ld a, [hli]
	ld [$ca86], a
	ld a, [hl]
	ld [$ca87], a
	ret

; known jump sources: 84077 (21:4077), 84099 (21:4099), 840de (21:40de), 84103 (21:4103)
Function841fb: ; 841fb (21:41fb)
	xor a
	ld hl, $ca82
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, $ca86
	ld [hli], a
	ld [hl], a
	xor a
	ld [$ca8e], a
	ld [$ca8f], a
	ld hl, OverworldMap ; $c800
	ld bc, $280
	call Function842ab
	ret

; known jump sources: 840b6 (21:40b6), 840f4 (21:40f4)
Function84219: ; 84219 (21:4219)
	ld hl, $0
	ld bc, $4
	ld de, $ca82
	call Function8423c
	ld a, [$ca8e]
	ld c, a
	ld a, [$ca8f]
	ld b, a
	ld de, OverworldMap ; $c800
	call Function8423c
	ld a, l
	ld [$ca86], a
	ld a, h
	ld [$ca87], a
	ret

; known jump sources: 84222 (21:4222), 84230 (21:4230), 84246 (21:4246)
Function8423c: ; 8423c (21:423c)
	ld a, [de]
	inc de
	add l
	jr nc, .asm_84242
	inc h
.asm_84242
	ld l, a
	dec bc
	ld a, c
	or b
	jr nz, Function8423c
	ret

; known jump sources: 840e7 (21:40e7)
Function84249: ; 84249 (21:4249)
	ld a, $1
	ld [OverworldMap], a ; $c800
	ld a, [$cbfa]
	ld [$c801], a
	ld a, $e4
	ld [$c802], a
	ld a, [$cbfb]
	ld [$c803], a
	ret

; known jump sources: 840a9 (21:40a9)
Function84260: ; 84260 (21:4260)
	ld a, [$ca81]
	xor $ff
	ld d, a
	ld a, [$cf65]
	inc a
	add d
	ld hl, $ca90
	ld de, $28
.asm_84271
	and a
	jr z, .asm_84278
	add hl, de
	dec a
	jr .asm_84271
.asm_84278
	ld e, l
	ld d, h
	ld hl, OverworldMap ; $c800
	ld c, $28
.asm_8427f
	ld a, [de]
	inc de
	push bc
	push de
	push hl
	swap a
	ld d, a
	and $f0
	ld e, a
	ld a, d
	and $f
	ld d, a
	and $8
	ld a, d
	jr nz, .asm_84297
	or $90
	jr .asm_84299
.asm_84297
	or $80
.asm_84299
	ld d, a
	ld bc, $2101
	call Request2bpp
	pop hl
	ld de, $10
	add hl, de
	pop de
	pop bc
	dec c
	jr nz, .asm_8427f
	ret

Function842ab: ; 842ab
	push de
	ld e, a
.asm_842ad
	ld [hl], e
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_842ad
	ld a, e
	pop de
	ret
; 842b7

INCBIN "baserom.gbc",$842b7,$842db - $842b7


Function842db: ; 842db
	ld a, [$c2d5]
	add a
	ld e, a
	ld d, $0
	ld hl, $42ea
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 842ea


; no known jump sources
Jumptable_842ea: ; 842ea (21:42ea)
	dw Function8432f
	dw Function84330
	dw Function84339
	dw Function84343
	dw Function8434d
	dw Function84357
	dw Function84361
	dw Function8438b
	dw Function84395
	dw Function8439f
	dw Function843a8
	dw Function843b6
	dw Function84330
	dw Function843c0
	dw Function843c9
	dw Function843c9
	dw Function843c9
	dw Function843c0
	dw Function843c9
	dw Function8439f
	dw Function843a8
	dw Function843e6
	dw Function84330
	dw Function843d2
	dw Function843c9
	dw Function843c9
	dw Function843c9
	dw Function843d2
	dw Function843c9
	dw Function8439f
	dw Function843a8
	dw Function843b6


; known jump sources: 84335 (21:4335), 8433f (21:433f), 84349 (21:4349), 84353 (21:4353), 8435d (21:435d), 84388 (21:4388), 84391 (21:4391), 8439b (21:439b), 843a4 (21:43a4), 843b2 (21:43b2), 843c5 (21:43c5), 843ce (21:43ce), 843d7 (21:43d7)
Function8432a: ; 8432a (21:432a)
	ld hl, $c2d5
	inc [hl]
	ret

; no known jump sources
Function8432f: ; 8432f (21:432f)
	ret

; no known jump sources
Function84330: ; 84330 (21:4330)
	ld a, $33
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function84339: ; 84339 (21:4339)
	ld a, [$ca82]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function84343: ; 84343 (21:4343)
	ld a, [$ca83]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function8434d: ; 8434d (21:434d)
	ld a, [$ca84]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function84357: ; 84357 (21:4357)
	ld a, [$ca85]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function84361: ; 84361 (21:4361)
	ld hl, $ca8e
	ld a, [hli]
	ld d, [hl]
	ld e, a
	or d
	jr z, .asm_84388
	dec de
	ld [hl], d
	dec hl
	ld [hl], e
	ld a, [$ca8c]
	ld e, a
	ld a, [$ca8d]
	ld d, a
	ld hl, OverworldMap ; $c800
	add hl, de
	inc de
	ld a, e
	ld [$ca8c], a
	ld a, d
	ld [$ca8d], a
	ld a, [hl]
	call Function843db
	ret
.asm_84388
	call Function8432a

; no known jump sources
Function8438b: ; 8438b (21:438b)
	ld a, [$ca86]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function84395: ; 84395 (21:4395)
	ld a, [$ca87]
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function8439f: ; 8439f (21:439f)
	ld a, $0
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function843a8: ; 843a8 (21:43a8)
	ld a, [rSB] ; $ff00+$1
	ld [$ca88], a
	ld a, $0
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function843b6: ; 843b6 (21:43b6)
	ld a, [rSB] ; $ff00+$1
	ld [$ca89], a
	xor a
	ld [$c2d5], a
	ret

; no known jump sources
Function843c0: ; 843c0 (21:43c0)
	ld a, $f
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function843c9: ; 843c9 (21:43c9)
	ld a, $0
	call Function843db
	call Function8432a
	ret

; no known jump sources
Function843d2: ; 843d2 (21:43d2)
	ld a, $8
	call Function843db
	call Function8432a
	ret

; known jump sources: 84332 (21:4332), 8433c (21:433c), 84346 (21:4346), 84350 (21:4350), 8435a (21:435a), 84384 (21:4384), 8438e (21:438e), 84398 (21:4398), 843a1 (21:43a1), 843af (21:43af), 843c2 (21:43c2), 843cb (21:43cb), 843d4 (21:43d4)
Function843db: ; 843db (21:43db)
	ld [rSB], a ; $ff00+$1
	ld a, $1
	ld [rSC], a ; $ff00+$2
	ld a, $81
	ld [rSC], a ; $ff00+$2
	ret

; no known jump sources
Function843e6: ; 843e6 (21:43e6)
	ld a, [rSB] ; $ff00+$1
	ld [$ca89], a
	xor a
	ld [$c2d5], a
	ret

Function843f0: ; 843f0
.asm_843f0
	call Functiona57
	call Function846f6
	jr c, .asm_8440f
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_8440d
	call Function84022
	call Function84757
	call Function84785
	call DelayFrame
	jr .asm_843f0

.asm_8440d
	and a
	ret

.asm_8440f
	scf
	ret
; 84411

Function84411: ; 84411
	xor a
	ld [$c2d4], a
	ld [$c2d5], a
	ret
; 84419

Function84419: ; 84419
	push af
	call Function84000
	pop af
	ld [$cbfa], a
	call Function84728
	ret
; 84425

Function84425: ; 84425
	call Function222a
	call Function84753
	ret
; 8442c

INCBIN "baserom.gbc",$8442c,$844bc - $8442c

; no known jump sources
Function844bc: ; 844bc (21:44bc)
	ld a, [$cf65]
	push af
	ld a, $9
	ld [$cf65], a
	ld a, e
	ld [$d004], a
	ld a, d
	ld [StartFlypoint], a ; $d005
	ld a, b
	ld [EndFlypoint], a ; $d006
	ld a, c
	ld [MovementBuffer], a ; $d007
	xor a
	ld [$FF00+$ac], a
	ld [$d003], a
	call Function8474c
	ld a, [rIE] ; $ff00+$ff
	push af
	xor a
	ld [rIF], a ; $ff00+$f
	ld a, $9
	ld [rIE], a ; $ff00+$ff
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $4
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function84817
	ld a, $10
	call Function84419
	call Function84559
	jr c, .asm_84545
	call Function84411
	ld c, $c
	call DelayFrames
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function8486f
	ld a, $0
	call Function84419
	call Function84559
	jr c, .asm_84545
	call Function84411
	ld c, $c
	call DelayFrames
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function84893
	ld a, $0
	call Function84419
	call Function84559
	jr c, .asm_84545
	call Function84411
	ld c, $c
	call DelayFrames
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function848b7
	ld a, $3
	call Function84419
	call Function84559
.asm_84545
	pop af
	ld [$FF00+$9e], a
	call Function84411
	xor a
	ld [rIF], a ; $ff00+$f
	pop af
	ld [rIE], a ; $ff00+$ff
	call Function84425
	pop af
	ld [$cf65], a
	ret

; known jump sources: 844fa (21:44fa), 84512 (21:4512), 8452a (21:452a), 84542 (21:4542)
Function84559: ; 84559 (21:4559)
	call Function84742
	call Function843f0
	ret

Function84560: ; 84560
	ld a, [$cf65]
	push af
	xor a
	ld [$ffac], a
	call Function8474c
	ld a, [rIE]
	push af
	xor a
	ld [rIF], a
	ld a, $9
	ld [rIE], a
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $4
	xor a
	ld [hBGMapMode], a
	call Function309d
	callba Function16dac
	ld a, $0
	call Function84419
	call Function30b4
	call Function84742
	ld a, $9
	ld [$cf65], a
.asm_84597
	call Functiona57
	call Function846f6
	jr c, .asm_845c0
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_845c0
	call Function84022
	ld a, [$cf63]
	cp $2
	jr nc, .asm_845b5
	ld a, $3
	ld [$ca81], a

.asm_845b5
	call Function84757
	call Function84785
	call DelayFrame
	jr .asm_84597

.asm_845c0
	pop af
	ld [$ff9e], a
	call Function84411
	call Function30b4
	xor a
	ld [rIF], a
	pop af
	ld [rIE], a
	pop af
	ld [$cf65], a
	ret
; 845d4

Function845d4: ; 845d4
	call Function845db
	call Function84425
	ret
; 845db

Function845db: ; 845db
	ld a, [$cf65]
	push af
	xor a
	ld [$ffac], a
	call Function8474c
	ld a, [rIE]
	push af
	xor a
	ld [rIF], a
	ld a, $9
	ld [rIE], a
	xor a
	ld [hBGMapMode], a
	ld a, $13
	call Function84419
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $4
	ld a, $9
	ld [$cf65], a
	call Function843f0
	pop af
	ld [$ff9e], a
	call Function84411
	call Function84735
	xor a
	ld [rIF], a
	pop af
	ld [rIE], a
	pop af
	ld [$cf65], a
	ret
; 8461a

Function8461a: ; 8461a
	ld a, [$cf65]
	push af
	xor a
	ld [$ffac], a
	call Function8474c
	ld a, [rIE]
	push af
	xor a
	ld [rIF], a
	ld a, $9
	ld [rIE], a
	xor a
	ld [hBGMapMode], a
	callba Function1dc381
	ld a, $10
	call Function84419
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $4
	ld a, $8
	ld [$cf65], a
	call Function84742
	call Function843f0
	jr c, .asm_84671
	call Function84411
	ld c, $c
	call DelayFrames
	xor a
	ld [hBGMapMode], a
	callba Function1dc47b
	ld a, $3
	call Function84419
	ld a, $9
	ld [$cf65], a
	call Function84742
	call Function843f0

.asm_84671
	pop af
	ld [$ff9e], a
	call Function84411
	call Function84735
	xor a
	ld [rIF], a
	pop af
	ld [rIE], a
	call Function84425
	pop af
	ld [$cf65], a
	ret
; 84688

Function84688: ; 84688
	ld a, [$cf65]
	push af
	callba Function1dd709
	xor a
	ld [$ffac], a
	call Function8474c
	ld a, [rIE]
	push af
	xor a
	ld [rIF], a
	ld a, $9
	ld [rIE], a
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $4
	ld a, $10
	call Function84419
	call Function84742
	ld a, $9
	ld [$cf65], a
	call Function843f0
	jr c, .asm_846e2
	call Function84411
	ld c, $c
	call DelayFrames
	call Function309d
	xor a
	ld [hBGMapMode], a
	callba Function1dd7ae
	ld a, $3
	call Function84419
	call Function30b4
	call Function84742
	ld a, $9
	ld [$cf65], a
	call Function843f0

.asm_846e2
	pop af
	ld [$ff9e], a
	call Function84411
	xor a
	ld [rIF], a
	pop af
	ld [rIE], a
	call Function84425
	pop af
	ld [$cf65], a
	ret
; 846f6

Function846f6: ; 846f6
	ld a, [hJoyDown]
	and $2
	jr nz, .asm_846fe
	and a
	ret

.asm_846fe
	ld a, [$ca80]
	cp $c
	jr nz, .asm_84722
.asm_84705
	ld a, [$c2d5]
	and a
	jr nz, .asm_84705
	ld a, $16
	ld [$c2d5], a
	ld a, $88
	ld [rSB], a
	ld a, $1
	ld [rSC], a
	ld a, $81
	ld [rSC], a
.asm_8471c
	ld a, [$c2d5]
	and a
	jr nz, .asm_8471c

.asm_84722
	ld a, $1
	ld [$ffac], a
	scf
	ret
; 84728

Function84728: ; 84728
	ld hl, TileMap
	ld de, $ca90
	ld bc, $0168
	call CopyBytes
	ret
; 84735

Function84735: ; 84735
	ld hl, $ca90
	ld de, TileMap
	ld bc, $0168
	call CopyBytes
	ret
; 84742

Function84742: ; 84742
	xor a
	ld [hJoyReleased], a
	ld [hJoyPressed], a
	ld [hJoyDown], a
	ld [$ffa9], a
	ret
; 8474c

Function8474c: ; 8474c
	ld de, MUSIC_PRINTER
	call PlayMusic2
	ret
; 84753

Function84753: ; 84753
	call Function3d47
	ret
; 84757

Function84757: ; 84757
	ld a, [$ca88]
	cp $ff
	jr nz, .asm_84765
	ld a, [$ca89]
	cp $ff
	jr z, .asm_8477f

.asm_84765
	ld a, [$ca89]
	and $e0
	ret z
	bit 7, a
	jr nz, .asm_8477b
	bit 6, a
	jr nz, .asm_84777
	ld a, $6
	jr .asm_84781

.asm_84777
	ld a, $7
	jr .asm_84781

.asm_8477b
	ld a, $4
	jr .asm_84781

.asm_8477f
	ld a, $5

.asm_84781
	ld [$cbf8], a
	ret
; 84785

Function84785: ; 84785
	ld a, [$cbf8]
	and a
	ret z
	push af
	xor a
	ld [hBGMapMode], a
	ld hl, $c504
	ld bc, $0a12
	call TextBox
	pop af
	ld e, a
	ld d, $0
	ld hl, $4807
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $c52d
	ld a, $77
	call Function13d4
	ld hl, $c5ce
	ld de, $47f5
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a
	xor a
	ld [$cbf8], a
	ret
; 847bd

INCBIN "baserom.gbc",$847bd,$84817 - $847bd

; known jump sources: 844f2 (21:44f2)
Function84817: ; 84817 (21:4817)
	xor a
	ld [DefaultFlypoint], a ; $d002
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	call Function84a0e
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $b4
	ld a, $7f
	call ByteFill
	call Function849e9
	call Function849d7
	ld hl, $c4e0
	ld de, $4865
	call PlaceString
	ld a, [MovementBuffer] ; $d007
	ld bc, $9
	ld hl, Box1Name ; $db75
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, $c50a
	call PlaceString
	ld a, $1
	call Function849c6
	ld hl, $c556
	ld c, $3
	call Function848e7
	ret
; 84865 (21:4865)

INCBIN "baserom.gbc",$84865,$8486f - $84865

; known jump sources: 8450a (21:450a)
Function8486f: ; 8486f (21:486f)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	call Function84a0e
	call Function849e9
	ld a, [$d003]
	and a
	ret nz
	ld a, $4
	call Function849c6
	ld hl, $c4a2
	ld c, $6
	call Function848e7
	ret

; known jump sources: 84522 (21:4522)
Function84893: ; 84893 (21:4893)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	call Function84a0e
	call Function849e9
	ld a, [$d003]
	and a
	ret nz
	ld a, $a
	call Function849c6
	ld hl, $c4a2
	ld c, $6
	call Function848e7
	ret

; known jump sources: 8453a (21:453a)
Function848b7: ; 848b7 (21:48b7)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	call Function84a0e
	ld hl, $c5cd
	ld bc, $212
	call ClearBox
	call Function849e9
	call Function849fc
	ld a, [$d003]
	and a
	ret nz
	ld a, $10
	call Function849c6
	ld hl, $c4a2
	ld c, $5
	call Function848e7
	ret

; known jump sources: 84861 (21:4861), 8488f (21:488f), 848b3 (21:48b3), 848e3 (21:48e3)
Function848e7: ; 848e7 (21:48e7)
	ld a, [EndFlypoint] ; $d006
	call GetSRAMBank

; known jump sources: 8497e (21:497e)
Function848ed: ; 848ed (21:48ed)
	ld a, c
	and a
	jp z, Function84986
	dec c
	ld a, [de]
	cp $ff
	jp z, Function84981
	ld [$d265], a
	ld [CurPartySpecies], a ; $d108
	push bc
	push hl
	push de
	push hl
	ld bc, $10
	ld a, $7f
	call ByteFill
	pop hl
	push hl
	call GetBasePokemonName
	pop hl
	push hl
	call PlaceString
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	pop hl
	jr z, .asm_84972
	ld bc, $b
	add hl, bc
	call Function8498a
	ld bc, $9
	add hl, bc
	ld a, $f3
	ld [hli], a
	push hl
	ld bc, $e
	ld a, $7f
	call ByteFill
	pop hl
	push hl
	ld a, [$d004]
	ld l, a
	ld a, [StartFlypoint] ; $d005
	ld h, a
	ld bc, $372
	add hl, bc
	ld bc, $b
	ld a, [DefaultFlypoint] ; $d002
	call AddNTimes
	ld e, l
	ld d, h
	pop hl
	push hl
	call PlaceString
	pop hl
	ld bc, $b
	add hl, bc
	push hl
	ld a, [$d004]
	ld l, a
	ld a, [StartFlypoint] ; $d005
	ld h, a
	ld bc, $35
	add hl, bc
	ld bc, $20
	ld a, [DefaultFlypoint] ; $d002
	call AddNTimes
	ld a, [hl]
	pop hl
	call Function383d
.asm_84972
	ld hl, DefaultFlypoint ; $d002
	inc [hl]
	pop de
	pop hl
	ld bc, $3c
	add hl, bc
	pop bc
	inc de
	jp Function848ed

; known jump sources: 848f6 (21:48f6)
Function84981: ; 84981 (21:4981)
	ld a, $1
	ld [$d003], a

; known jump sources: 848ef (21:48ef)
Function84986: ; 84986 (21:4986)
	call CloseSRAM
	ret

; known jump sources: 84921 (21:4921)
Function8498a: ; 8498a (21:498a)
	push hl
	ld a, [$d004]
	ld l, a
	ld a, [StartFlypoint] ; $d005
	ld h, a
	ld bc, $2b
	add hl, bc
	ld bc, $20
	ld a, [DefaultFlypoint] ; $d002
	call AddNTimes
	ld de, TempMonDVs ; $d123
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	ld a, [DefaultFlypoint] ; $d002
	ld [CurPartyMon], a ; $d109
	ld a, $3
	ld [MonType], a ; $cf5f
	callba GetGender
	ld a, $7f
	jr c, .asm_849c3
	ld a, $ef
	jr nz, .asm_849c3
	ld a, $f5
.asm_849c3
	pop hl
	ld [hli], a
	ret

; known jump sources: 84859 (21:4859), 84887 (21:4887), 848ab (21:48ab), 848db (21:48db)
Function849c6: ; 849c6 (21:49c6)
	push hl
	ld e, a
	ld d, $0
	ld a, [$d004]
	ld l, a
	ld a, [StartFlypoint] ; $d005
	ld h, a
	add hl, de
	ld e, l
	ld d, h
	pop hl
	ret

; known jump sources: 84837 (21:4837)
Function849d7: ; 849d7 (21:49d7)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $79
	ld [hli], a
	ld a, $7a
	ld c, $12
.asm_849e1
	ld [hli], a
	dec c
	jr nz, .asm_849e1
	ld a, $7b
	ld [hl], a
	ret

; known jump sources: 84834 (21:4834), 8487d (21:487d), 848a1 (21:48a1), 848ce (21:48ce)
Function849e9: ; 849e9 (21:49e9)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld de, $13
	ld c, $12
.asm_849f1
	ld a, $7c
	ld [hl], a
	add hl, de
	ld a, $7c
	ld [hli], a
	dec c
	jr nz, .asm_849f1
	ret

; known jump sources: 848d1 (21:48d1)
Function849fc: ; 849fc (21:49fc)
	ld hl, $c5f4
	ld a, $7d
	ld [hli], a
	ld a, $7a
	ld c, $12
.asm_84a06
	ld [hli], a
	dec c
	jr nz, .asm_84a06
	ld a, $7e
	ld [hl], a
	ret

; known jump sources: 84826 (21:4826), 8487a (21:487a), 8489e (21:489e), 848c2 (21:48c2)
Function84a0e: ; 84a0e (21:4a0e)
	ld hl, $c4a2
	ld c, $6
.asm_84a13
	push bc
	push hl
	ld de, $4a25
	call PlaceString
	pop hl
	ld bc, $3c
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_84a13
	ret
; 84a25 (21:4a25)

INCBIN "baserom.gbc",$84a25,$84a2e - $84a25

FX00GFX:
FX01GFX: ; 84a2e
INCBIN "gfx/fx/001.lz"
; 84b1e

FX02GFX: ; 84b1e
INCBIN "gfx/fx/002.lz"
; 84b7e

FX03GFX: ; 84b7e
INCBIN "gfx/fx/003.lz"
; 84bde

FX04GFX: ; 84bde
INCBIN "gfx/fx/004.lz"
; 84cae

FX05GFX: ; 84cae
INCBIN "gfx/fx/005.lz"
; 84dee

FX07GFX: ; 84dee
INCBIN "gfx/fx/007.lz"
; 84e7e

FX08GFX: ; 84e7e
INCBIN "gfx/fx/008.lz"
; 84ede

FX10GFX: ; 84ede
INCBIN "gfx/fx/010.lz"
; 84f1e

FX09GFX: ; 84f1e
INCBIN "gfx/fx/009.lz"
; 8500e

FX12GFX: ; 8500e
INCBIN "gfx/fx/012.lz"
; 8507e

FX06GFX: ; 8507e
INCBIN "gfx/fx/006.lz"
; 8515e

FX11GFX: ; 8515e
INCBIN "gfx/fx/011.lz"
; 851ae

FX13GFX: ; 851ae
INCBIN "gfx/fx/013.lz"
; 8524e

FX14GFX: ; 8524e
INCBIN "gfx/fx/014.lz"
; 8520e

FX24GFX: ; 8530e
INCBIN "gfx/fx/024.lz"
; 8537e

FX15GFX: ; 8537e
INCBIN "gfx/fx/015.lz"
; 8539e

FX16GFX: ; 8539e
INCBIN "gfx/fx/016.lz"
; 8542e

FX17GFX: ; 8542e
INCBIN "gfx/fx/017.lz"
; 8547e

FX18GFX: ; 8547e
INCBIN "gfx/fx/018.lz"
; 854ee

FX19GFX: ; 854ee
INCBIN "gfx/fx/019.lz"
; 855ae

FX20GFX: ; 855ae
INCBIN "gfx/fx/020.lz"
; 8562e

FX22GFX: ; 8562e
INCBIN "gfx/fx/022.lz"
; 856ee

FX21GFX: ; 856ee
INCBIN "gfx/fx/021.lz"
; 8576e

FX23GFX: ; 8576e
INCBIN "gfx/fx/023.lz"
; 857de

FX26GFX: ; 857de
INCBIN "gfx/fx/026.lz"
; 8583e

FX27GFX: ; 8583e
INCBIN "gfx/fx/027.lz"
; 858be

FX28GFX: ; 858be
INCBIN "gfx/fx/028.lz"
; 8594e

FX29GFX: ; 8594e
INCBIN "gfx/fx/029.lz"
; 859ae

FX30GFX: ; 859ae
INCBIN "gfx/fx/030.lz"
; 8590e

FX31GFX: ; 85a0e
INCBIN "gfx/fx/031.lz"
; 85bae

FX32GFX: ; 85bae
INCBIN "gfx/fx/032.lz"
; 85d0e

FX33GFX: ; 85d0e
INCBIN "gfx/fx/033.lz"
; 85dfe

FX34GFX: ; 85dfe
INCBIN "gfx/fx/034.lz"
; 85e9e

FX25GFX: ; 85e9e
INCBIN "gfx/fx/025.lz"
; 85fbe

FX35GFX: ; 85fbe
INCBIN "gfx/fx/035.lz"
; 8609e

FX36GFX: ; 8609e
INCBIN "gfx/fx/036.lz"
; 8617e

FX37GFX: ; 8617e
INCBIN "gfx/fx/037.lz"
; 862ee

FX38GFX: ; 862ee
INCBIN "gfx/fx/038.lz"
; 8638e

FX39GFX: ; 8638e
INCBIN "gfx/fx/039.lz"
; 8640e

HallOfFame: ; 0x8640e
	call Function8648e
	ld a, [StatusFlags]
	push af
	ld a, $1
	ld [$c2cd], a
	call Function2ed3
	ld a, $1
	ld [$d4b5], a

	; Enable the Pokégear map to cycle through all of Kanto
	ld hl, StatusFlags
	set 6, [hl]

	callba Function14da0
	ld hl, $d95e
	ld a, [hl]
	cp $c8
	jr nc, .asm_86436 ; 0x86433 $1
	inc [hl]
.asm_86436
	callba Function14b85
	call Function8653f
	callba Function14b5f
	xor a
	ld [$c2cd], a
	call Function864c3
	pop af
	ld b, a
	callba Function109847
	ret
; 0x86455

Function86455: ; 86455
	ld a, $0
	ld [MusicFadeIDLo], a
	ld a, $0
	ld [MusicFadeIDHi], a
	ld a, $a
	ld [MusicFade], a
	callba Function8c084
	xor a
	ld [VramState], a
	ld [$ffde], a
	callba Function4e8c2
	ld c, $8
	call DelayFrames
	call Function2ed3
	ld a, $2
	ld [$d4b5], a
	ld a, [StatusFlags]
	ld b, a
	callba Function109847
	ret
; 8648e

Function8648e: ; 8648e
	ld a, $0
	ld [MusicFadeIDLo], a
	ld a, $0
	ld [MusicFadeIDHi], a
	ld a, $a
	ld [MusicFade], a
	callba Function8c084
	xor a
	ld [VramState], a
	ld [$ffde], a
	callba Function4e881
	ld c, $64
	jp DelayFrames
; 864b4

Function864b4: ; 864b4
	push de
	ld de, $0000
	call PlayMusic
	call DelayFrame
	pop de
	call PlayMusic
	ret
; 864c3

Function864c3: ; 864c3
	xor a
	ld [$cf63], a
	call Function8671c
	jr c, .asm_864fb
	ld de, $0014
	call Function864b4
	xor a
	ld [$cf64], a
.asm_864d6
	ld a, [$cf64]
	cp $6
	jr nc, .asm_864fb
	ld hl, EnemyMoveEffect
	ld bc, $0010
	call AddNTimes
	ld a, [hl]
	cp $ff
	jr z, .asm_864fb
	push hl
	call Function865b5
	pop hl
	call Function8650c
	jr c, .asm_864fb
	ld hl, $cf64
	inc [hl]
	jr .asm_864d6

.asm_864fb
	call Function86810
	ld a, $4
	ld [MusicFade], a
	call Function4b6
	ld c, $8
	call DelayFrames
	ret
; 8650c

Function8650c: ; 8650c
	call Function86748
	ld de, $652c
	ld hl, $c4c9
	call PlaceString
	call WaitBGMap
	ld de, $c50a
	ld c, $6
	ld a, $49
	call Predef
	ld c, $3c
	call DelayFrames
	and a
	ret
; 8652c

INCBIN "baserom.gbc",$8652c,$8653f - $8652c


Function8653f: ; 8653f
	ld hl, OverworldMap
	ld bc, $0062
	xor a
	call ByteFill
	ld a, [$d95e]
	ld de, OverworldMap
	ld [de], a
	inc de
	ld hl, PartySpecies
	ld c, 0
.asm_86556
	ld a, [hli]
	cp $ff
	jr z, .asm_865b1
	cp EGG
	jr nz, .asm_86562
	inc c
	jr .asm_86556

.asm_86562
	push hl
	push de
	push bc
	ld a, c
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	ld c, l
	ld b, h
	ld hl, $0000
	add hl, bc
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, $0006
	add hl, bc
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, $0015
	add hl, bc
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, $001f
	add hl, bc
	ld a, [hl]
	ld [de], a
	inc de
	pop bc
	push bc
	ld a, c
	ld hl, PartyMon1Nickname
	ld bc, $000b
	call AddNTimes
	ld bc, $000a
	call CopyBytes
	pop bc
	inc c
	pop de
	ld hl, $0010
	add hl, de
	ld e, l
	ld d, h
	pop hl
	jr .asm_86556

.asm_865b1
	ld a, $ff
	ld [de], a
	ret
; 865b5

Function865b5: ; 865b5
	push hl
	call WhiteBGMap
	callba Function4e906
	pop hl
	ld a, [hli]
	ld [TempMonSpecies], a
	ld [CurPartySpecies], a
	inc hl
	inc hl
	ld a, [hli]
	ld [TempMonDVs], a
	ld a, [hli]
	ld [$d124], a
	ld hl, TempMonDVs
	ld a, $2d
	call Predef
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	ld de, $9310
	ld a, $3d
	call Predef
	ld a, $31
	ld [$ffad], a
	ld hl, $c51e
	ld bc, $0606
	ld a, $13
	call Predef
	ld a, $d0
	ld [hSCY], a
	ld a, $90
	ld [hSCX], a
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld b, $1a
	call GetSGBLayout
	call Function32f9
	call Function86635
	xor a
	ld [$c2c6], a
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	ld hl, $c50a
	call Function378b
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld [hSCY], a
	call Function86643
	ret
; 86635

Function86635: ; 86635
.asm_86635
	ld a, [hSCX]
	cp $70
	ret z
	add $4
	ld [hSCX], a
	call DelayFrame
	jr .asm_86635
; 86643

Function86643: ; 86643
.asm_86643
	ld a, [hSCX]
	and a
	ret z
	dec a
	dec a
	ld [hSCX], a
	call DelayFrame
	jr .asm_86643
; 86650

INCBIN "baserom.gbc",$86650,$8671c - $86650


Function8671c: ; 8671c
	ld a, [$cf63]
	cp $1e
	jr nc, .asm_86746
	ld hl, $b2c0
	ld bc, $0062
	call AddNTimes
	ld a, $1
	call GetSRAMBank
	ld a, [hl]
	and a
	jr z, .asm_86743
	ld de, EnemyMoveAnimation
	ld bc, $0062
	call CopyBytes
	call CloseSRAM
	and a
	ret

.asm_86743
	call CloseSRAM

.asm_86746
	scf
	ret
; 86748

Function86748: ; 86748
	xor a
	ld [hBGMapMode], a
	ld a, [hli]
	ld [TempMonSpecies], a
	ld a, [hli]
	ld [TempMonID], a
	ld a, [hli]
	ld [$d115], a
	ld a, [hli]
	ld [TempMonDVs], a
	ld a, [hli]
	ld [$d124], a
	ld a, [hli]
	ld [TempMonLevel], a
	ld de, StringBuffer2
	ld bc, $000a
	call CopyBytes
	ld a, $50
	ld [$d090], a
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	ld hl, TileMap
	ld bc, $0312
	call TextBox
	ld hl, $c590
	ld bc, $0412
	call TextBox
	ld a, [TempMonSpecies]
	ld [CurPartySpecies], a
	ld [$d265], a
	ld hl, TempMonDVs
	ld a, $2d
	call Predef
	xor a
	ld [$c2c6], a
	ld hl, $c50a
	call Function378b
	ld a, [CurPartySpecies]
	cp EGG
	jr z, .asm_867f8
	ld hl, $c5a5
	ld a, $74
	ld [hli], a
	ld [hl], $f2
	ld hl, $c5a7
	ld de, $d265
	ld bc, $8103
	call PrintNum
	call GetBasePokemonName
	ld hl, $c5ab
	call PlaceString
	ld a, $3
	ld [MonType], a
	callba GetGender
	ld a, $7f
	jr c, .asm_867e2
	ld a, $ef
	jr nz, .asm_867e2
	ld a, $f5

.asm_867e2
	ld hl, $c5b6
	ld [hli], a
	ld hl, $c5c0
	ld a, $f3
	ld [hli], a
	ld de, StringBuffer2
	call PlaceString
	ld hl, $c5e1
	call PrintLevel

.asm_867f8
	ld hl, $c5e7
	ld a, $73
	ld [hli], a
	ld a, $74
	ld [hli], a
	ld [hl], $f3
	ld hl, $c5ea
	ld de, TempMonID
	ld bc, $8205
	call PrintNum
	ret
; 86810

Function86810: ; 86810
	call WhiteBGMap
	ld hl, $9630
	ld de, $40d0
	ld bc, $3e01
	call Request2bpp
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	callba GetPlayerBackpic
	ld a, $31
	ld [$ffad], a
	hlcoord 6, 6
	ld bc, $0606
	ld a, $13
	call Predef
	ld a, $d0
	ld [hSCY], a
	ld a, $90
	ld [hSCX], a
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld [CurPartySpecies], a
	ld b, $1a
	call GetSGBLayout
	call Function32f9
	call Function86635
	xor a
	ld [$c2c6], a
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	callba Function88840
	xor a
	ld [$ffad], a
	hlcoord 12, 5
	ld bc, $0707
	ld a, $13
	call Predef
	ld a, $c0
	ld [hSCX], a
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld [hSCY], a
	call Function86643
	xor a
	ld [hBGMapMode], a
	hlcoord 0, 2
	ld bc, $0809
	call TextBox
	hlcoord 0, 12
	ld bc, $0412
	call TextBox
	hlcoord 2, 4
	ld de, PlayerName
	call PlaceString
	hlcoord 1, 6
	ld a, $73
	ld [hli], a
	ld a, $74
	ld [hli], a
	ld [hl], $f3
	hlcoord 4, 6
	ld de, PlayerID
	ld bc, $8205
	call PrintNum
	hlcoord 1, 8
	ld de, .PlayTime
	call PlaceString
	hlcoord 3, 9
	ld de, GameTimeHours
	ld bc, $0203
	call PrintNum
	ld [hl], $63
	inc hl
	ld de, GameTimeMinutes
	ld bc, $8102
	call PrintNum
	call WaitBGMap
	callba Function26601
	ret
; 868ed

.PlayTime
	db "PLAY TIME@"
; 868f7


SECTION "bank22", ROMX, BANK[$22]

Function88000: ; 88000
	ld hl, $4007
	call PrintText
	ret
; 88007

INCBIN "baserom.gbc",$88007,$8800c - $88007

Function8800c: ; 8800c
	ld hl, $4013
	call PrintText
	ret
; 88013

INCBIN "baserom.gbc",$88013,$88018 - $88013

Function88018: ; 88018
	call Function1d6e
	ld c, $1
	xor a
	ld [$d0e4], a
	ld [$dca4], a
.asm_88024
	push bc
	call Function88000
	pop bc
	ld a, c
	ld [MenuSelection], a
	call Function88055
	ld a, c
	ld [ScriptVar], a
	and a
	jr z, .asm_88051
	ld [CurItem], a
	ld a, [$cfa9]
	ld c, a
	push bc
	call Function8800c
	call Function880c2
	pop bc
	jr nc, .asm_88024
	ld a, [$d10c]
	ld [$dca4], a
	call Function88161

.asm_88051
	call Function1d7d
	ret
; 88055

Function88055: ; 88055
	callba Function24c64
	jr c, .asm_88083
	ld hl, $4086
	call Function1d3c
	ld a, [MenuSelection]
	ld [$cf88], a
	xor a
	ld [hBGMapMode], a
	call Function352f
	call Function1ad2
	call Function350c
	ld a, [$cf73]
	cp $2
	jr z, .asm_88083
	ld a, [MenuSelection]
	cp $ff
	jr nz, .asm_88084

.asm_88083
	xor a

.asm_88084
	ld c, a
	ret
; 88086

INCBIN "baserom.gbc",$88086,$880c2 - $88086

Function880c2: ; 880c2
	ld a, [CurItem]
	ld [MenuSelection], a
	call Function88139
	jr z, .asm_88109
	ld a, [$d10c]
	ld [$d10d], a
	ld a, $1
	ld [$d10c], a
	ld hl, $410d
	call LoadMenuDataHeader
.asm_880de
	xor a
	ld [hBGMapMode], a
	call Function1cbb
	call Function1ad2
	call Function88116
	call Function88126
	call Function321c
	callba Function27a28
	jr nc, .asm_880de
	push bc
	call PlayClickSFX
	pop bc
	ld a, b
	cp $ff
	jr z, .asm_88109
	ld a, [$d10c]
	ld [$d10c], a
	scf

.asm_88109
	call Function1c17
	ret
; 8810d

INCBIN "baserom.gbc",$8810d,$88116 - $8810d

Function88116: ; 88116
	call Function1cfd
	ld de, $0015
	add hl, de
	ld d, h
	ld e, l
	callba Function24ab4
	ret
; 88126

Function88126: ; 88126
	call Function1cfd
	ld de, $0032
	add hl, de
	ld [hl], $f1
	inc hl
	ld de, $d10c
	ld bc, $8102
	jp PrintNum
; 88139

Function88139: ; 88139
	push bc
	ld hl, NumItems
	ld a, [CurItem]
	ld c, a
	ld b, $0
.asm_88143
	inc hl
	ld a, [hli]
	cp $ff
	jr z, .asm_88153
	cp c
	jr nz, .asm_88143
	ld a, [hl]
	add b
	ld b, a
	jr nc, .asm_88143
	ld b, $ff

.asm_88153
	ld a, b
	sub $63
	jr c, .asm_8815a
	ld b, $63

.asm_8815a
	ld a, b
	ld [$d10c], a
	and a
	pop bc
	ret
; 88161

Function88161: ; 88161
	push de
	push bc
	ld hl, NumItems
	ld a, [CurItem]
	ld c, a
	ld e, $0
	xor a
	ld [$d107], a
	ld a, $ff
	ld [DefaultFlypoint], a
.asm_88175
	ld a, [$d107]
	inc a
	ld [$d107], a
	inc hl
	ld a, [hli]
	cp $ff
	jr z, .asm_88198
	cp c
	jr nz, .asm_88175
	ld d, $0
	push hl
	ld hl, DefaultFlypoint
	add hl, de
	inc e
	ld a, [$d107]
	dec a
	ld [hli], a
	ld a, $ff
	ld [hl], a
	pop hl
	jr .asm_88175

.asm_88198
	ld a, e
	and a
	jr z, .asm_881fa
	dec a
	jr z, .asm_881d0
	ld hl, DefaultFlypoint
.asm_881a2
	ld a, [hl]
	ld c, a
	push hl
.asm_881a5
	inc hl
	ld a, [hl]
	cp $ff
	jr z, .asm_881c9
	ld b, a
	ld a, c
	call Function88201
	ld e, a
	ld a, b
	call Function88201
	sub e
	jr z, .asm_881bc
	jr c, .asm_881c0
	jr .asm_881a5

.asm_881bc
	ld a, c
	sub b
	jr nc, .asm_881a5

.asm_881c0
	ld a, c
	ld c, b
	ld [hl], a
	ld a, c
	pop hl
	ld [hl], a
	push hl
	jr .asm_881a5

.asm_881c9
	pop hl
	inc hl
	ld a, [hl]
	cp $ff
	jr nz, .asm_881a2

.asm_881d0
	ld hl, DefaultFlypoint
.asm_881d3
	ld a, [hl]
	cp $ff
	jr z, .asm_881fa
	push hl
	ld [$d107], a
	call Function88211
	pop hl
	ld a, [$d10c]
	and a
	jr z, .asm_881fa
	push hl
	ld a, [hli]
	ld c, a
.asm_881e9
	ld a, [hli]
	cp $ff
	jr z, .asm_881f6
	cp c
	jr c, .asm_881e9
	dec a
	dec hl
	ld [hli], a
	jr .asm_881e9

.asm_881f6
	pop hl
	inc hl
	jr .asm_881d3

.asm_881fa
	ld a, [$d10c]
	and a
	pop bc
	pop de
	ret
; 88201

Function88201: ; 88201
	push hl
	push bc
	ld hl, NumItems
	inc hl
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	inc hl
	ld a, [hl]
	pop bc
	pop hl
	ret
; 88211

Function88211: ; 88211
	push bc
	ld hl, NumItems
	ld a, [$d107]
	ld c, a
	ld b, $0
	inc hl
	add hl, bc
	add hl, bc
	ld a, [CurItem]
	ld c, a
	ld a, [hli]
	cp $ff
	jr z, .asm_88243
	cp c
	jr nz, .asm_88243
	ld a, [$d10c]
	ld c, a
	ld a, [hl]
	sub c
	ld b, c
	jr nc, .asm_88235
	add c
	ld b, a

.asm_88235
	push bc
	ld hl, NumItems
	ld a, b
	ld [$d10c], a
	call TossItem
	pop bc
	ld a, c
	sub b

.asm_88243
	ld [$d10c], a
	pop bc
	ret
; 88248

INCBIN "baserom.gbc",$88248,$88258 - $88248

MovePlayerPicRight: ; 88258
	hlcoord 6, 4
	ld de, 1
	jr MovePlayerPic

MovePlayerPicLeft: ; 88260
	hlcoord 13, 4
	ld de, -1
	; fallthrough

MovePlayerPic: ; 88266
; Move player pic at hl by de * 7 tiles.
	ld c, $8
.loop
	push bc
	push hl
	push de
	xor a
	ld [hBGMapMode], a
	ld bc, $0707
	ld a, $13
	call Predef
	xor a
	ld [hBGMapThird], a
	call WaitBGMap
	call DelayFrame
	pop de
	pop hl
	add hl, de
	pop bc
	dec c
	ret z
	push hl
	push bc
	ld a, l
	sub e
	ld l, a
	ld a, h
	sbc d
	ld h, a
	ld bc, $0707
	call ClearBox
	pop bc
	pop hl
	jr .loop
; 88297

ShowPlayerNamingChoices: ; 88297
	ld hl, ChrisNameMenuHeader
	ld a, [PlayerGender]
	bit 0, a
	jr z, .GotGender
	ld hl, KrisNameMenuHeader
.GotGender
	call LoadMenuDataHeader
	call Function1d81
	ld a, [$cfa9]
	dec a
	call Function1db8
	call Function1c17
	ret
; 882b5

ChrisNameMenuHeader: ; 882b5
	db $40 ; flags
	db 00, 00 ; start coords
	db 11, 10 ; end coords
	dw MenuData2_0x882be
	db 1 ; ????
	db 0 ; default option
; 882be

MenuData2_0x882be: ; 882be
	db $91 ; flags
	db 5 ; items
	db "NEW NAME@"
	db "CHRIS@"
	db "MAT@"
	db "ALLAN@"
	db "JON@"
	db 2 ; displacement
	db " NAME @" ; title
; 882e5

KrisNameMenuHeader: ; 882e5
	db $40 ; flags
	db 00, 00 ; start coords
	db 11, 10 ; end coords
	dw MenuData2_0x882ee
	db 1 ; ????
	db 0 ; default option
; 882ee

MenuData2_0x882ee: ; 882ee
	db $91 ; flags
	db 5 ; items
	db "NEW NAME@"
	db "KRIS@"
	db "AMANDA@"
	db "JUANA@"
	db "JODI@"
	db 2 ; displacement
	db " NAME @" ; title
; 88318

INCBIN "baserom.gbc",$88318,$8832c - $88318

GetPlayerIcon: ; 8832c
; Get the player icon corresponding to gender

; Male
	ld de, ChrisSpriteGFX
	ld b, BANK(ChrisSpriteGFX)
	
	ld a, [PlayerGender]
	bit 0, a
	jr z, .done
	
; Female
	ld de, KrisSpriteGFX
	ld b, BANK(KrisSpriteGFX)
	
.done
	ret
; 8833e

Function8833e: ; 8833e
	ld hl, $4365
	ld a, [PlayerGender] ; $d472
	bit 0, a
	jr z, .asm_8834b
	ld hl, $4595
.asm_8834b
	ld de, $9000
	ld bc, $230
	ld a, $22
	call FarCopyBytes
	ld hl, $47c5
	ld de, $9230
	ld bc, $60
	ld a, $22
	call FarCopyBytes
	ret
; 88365 (22:4365)

INCBIN "baserom.gbc",$88365,$88825 - $88365


GetPlayerBackpic: ; 88825
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_88830
	call GetKrisBackpic
	ret

.asm_88830
	ld hl, ChrisBackpic
	ld b, BANK(ChrisBackpic)
	ld de, $9310
	ld c, $31
	ld a, $40
	call Predef
	ret
; 88840

Function88840: ; 88840
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ld e, $0
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_88851
	ld e, $1

.asm_88851
	ld a, e
	ld [TrainerClass], a
	ld de, ChrisPic
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_88862
	ld de, KrisPic

.asm_88862
	ld hl, VTiles2
	ld b, $22
	ld c, $31
	call Get2bpp
	call WaitBGMap
	ld a, $1
	ld [hBGMapMode], a
	ret
; 88874



DrawIntroPlayerPic: ; 88874
; Draw the player pic at (6,4).

; Get class
	ld e, 0
	ld a, [PlayerGender]
	bit 0, a
	jr z, .GotClass
	ld e, 1
.GotClass
	ld a, e
	ld [TrainerClass], a

; Load pic
	ld de, ChrisPic
	ld a, [PlayerGender]
	bit 0, a
	jr z, .GotPic
	ld de, KrisPic
.GotPic
	ld hl, VTiles2
	ld b, BANK(ChrisPic)
	ld c, 7 * 7 ; dimensions
	call Get2bpp

; Draw
	xor a
	ld [$ffad], a
	hlcoord 6, 4
	ld bc, $0707
	ld a, $13
	call Predef
	ret
; 888a9


ChrisPic: ; 888a9
INCBIN "baserom.gbc",$888a9,$88bb9 - $888a9
; 88bb9

KrisPic: ; 88bb9
INCBIN "baserom.gbc",$88bb9,$88ec9 - $88bb9
; 88ec9


GetKrisBackpic: ; 88ec9
; Kris's backpic is uncompressed.
	ld de, KrisBackpic
	ld hl, $9310
	ld bc, BANK(KrisBackpic) << 8 + (7 * 7) ; dimensions
	call Get2bpp
	ret
; 88ed6

KrisBackpic: ; 88ed6
INCBIN "baserom.gbc",$88ed6,$89116 - $88ed6
; 89116


INCBIN "baserom.gbc",$89116,$89160 - $89116

Function89160: ; 89160
	push af
	ld a, $4
	call GetSRAMBank
	pop af
	ret
; 89168


; known jump sources: 89e63 (22:5e63), 8a166 (22:6166), 8a2e5 (22:62e5)
Function89168: ; 89168 (22:5168)
	ld hl, GameTimerPause ; $cfbc
	set 7, [hl]
	ret

; known jump sources: 8a13b (22:613b)
Function8916e: ; 8916e (22:516e)
	ld hl, GameTimerPause ; $cfbc
	res 7, [hl]
	ret

; known jump sources: 8a140 (22:6140)
Function89174: ; 89174 (22:5174)
	ld hl, GameTimerPause ; $cfbc
	bit 7, [hl]
	ret

; known jump sources: 89e00 (22:5e00)
Function8917a: ; 8917a (22:517a)
	ld hl, DefaultFlypoint ; $d002
	ld bc, $32
	xor a
	call ByteFill
	ret

; known jump sources: 8a772 (22:6772), 8a782 (22:6782), 8aacc (22:6acc), 8ab1c (22:6b1c), 8b3aa (22:73aa)
Function89185: ; 89185 (22:5185)
	push de
	push hl
.asm_89187
	ld a, [de]
	inc de
	cp [hl]
	jr nz, .asm_89190
	inc hl
	dec c
	jr nz, .asm_89187
.asm_89190
	pop hl
	pop de
	ret

Function89193: ; 89193
	push de
	push hl
.asm_89195
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_89195
	pop hl
	pop de
	ret
; 8919e


; known jump sources: 8a46f (22:646f)
Function8919e: ; 8919e (22:519e)
	ld a, c
	and a
	ret z
.asm_891a1
	ld a, [de]
	inc de
	cp $50
	jr nz, .asm_891a1
	dec c
	jr nz, .asm_891a1
	ret

Function891ab: ; 891ab
	call Function89240
	callba Function104061
	call Function8923c
	ret
; 891b8

Function891b8: ; 891b8
	call Function8923c
	ld hl, TileMap
	ld a, $7f
	ld bc, $0168
	call ByteFill
	call DelayFrame
	ret
; 891ca


; known jump sources: 891d4 (22:51d4)
Function891ca: ; 891ca (22:51ca)
	push bc
	call Function891b8
	call WaitBGMap
	pop bc
	ret

; known jump sources: 8a748 (22:6748)
Function891d3: ; 891d3 (22:51d3)
	push bc
	call Function891ca
	ld c, $10
	call DelayFrames
	pop bc
	ret

Function891de: ; 891de
	call Function8923c
	call ClearPalettes
	ld hl, AttrMap
	ld a, $7
	ld bc, $0168
	call ByteFill
	ld hl, TileMap
	ld a, $7f
	ld bc, $0168
	call ByteFill
	call Function891ab
	ret
; 891fe

Function891fe: ; 891fe
	push bc
	call Function891de
	ld c, $10
	call DelayFrames
	pop bc
	ret
; 89209

Function89209: ; 89209
	ld a, $1
	ld [$c2ce], a
	ret
; 8920f

Function8920f: ; 8920f
	ld a, $0
	ld [$c2ce], a
	ret
; 89215

Function89215: ; 89215
	push hl
	push bc
	ld bc, $0939
	add hl, bc
	ld [hl], a
	pop bc
	pop hl
	ret
; 8921f


; known jump sources: 89a2a (22:5a2a)
Function8921f: ; 8921f (22:521f)
	push de
	ld de, $14
	add hl, de
	inc hl
	ld a, $7f
.asm_89227
	push bc
	push hl
.asm_89229
	ld [hli], a
	dec c
	jr nz, .asm_89229
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_89227
	pop de
	ret

; known jump sources: 8a037 (22:6037), 8ab0c (22:6b0c)
Function89235: ; 89235 (22:5235)
	call Functiona36
	call PlayClickSFX
	ret

Function8923c: ; 8923c
	xor a
	ld [hBGMapMode], a
	ret
; 89240

Function89240: ; 89240
	ld a, $1
	ld [hBGMapMode], a
	ret
; 89245


; known jump sources: 89e72 (22:5e72), 8a163 (22:6163), 8a2e2 (22:62e2)
Function89245: ; 89245 (22:5245)
	callba Function14ea5
	ret c
	callba Function150b9
	and a
	ret

; known jump sources: 8a73a (22:673a), 8a8ba (22:68ba), 8a8ec (22:68ec), 8ab32 (22:6b32)
Function89254: ; 89254 (22:5254)
	ld bc, $d07
	jr Function89261

Function89259: ; 89259
	ld bc, $0e07
	jr Function89261

Function8925e: ; 8925e
	ld bc, $0e0c

Function89261: ; 89261
	push af
	push bc
	ld hl, $52a3
	call Function1d3c
	pop bc
	ld hl, $cf82
	ld a, c
	ld [hli], a
	ld a, b
	ld [hli], a
	ld a, c
	add $4
	ld [hli], a
	ld a, b
	add $5
	ld [hl], a
	pop af
	ld [$cf88], a
	call Function1c00
	call Function8923c
	call Function89209
	call Function1d81
	push af
	ld c, $a
	call DelayFrames
	call Function1c17
	call Function8920f
	pop af
	jr c, .asm_892a1
	ld a, [$cfa9]
	cp $2
	jr z, .asm_892a1
	and a
	ret

.asm_892a1
	scf
	ret
; 892a3

INCBIN "baserom.gbc",$892a3,$892b4 - $892a3

; known jump sources: 89313 (22:5313), 8a8f4 (22:68f4), 8b9ff (22:79ff)
Function892b4: ; 892b4 (22:52b4)
	call Function8931b

Function892b7: ; 892b7
	ld d, b
	ld e, c
	ld hl, $0000
	add hl, bc
	ld a, $50
	ld bc, $0006
	call ByteFill
	ld b, d
	ld c, e
	ld hl, $0006
	add hl, bc
	ld a, $50
	ld bc, $0006
	call ByteFill
	ld b, d
	ld c, e
	ld hl, $000c
	add hl, bc
	xor a
	ld [hli], a
	ld [hl], a
	ld hl, $000e
	add hl, bc
	ld [hli], a
	ld [hl], a
	ld hl, $0010
	add hl, bc
	ld [hl], a
	ld hl, $0011
	add hl, bc
	ld a, $ff
	ld bc, $0008
	call ByteFill
	ld b, d
	ld c, e
	ld e, $6
	ld hl, $0019
	add hl, bc
.asm_892fb
	ld a, $ff
	ld [hli], a
	ld a, $ff
	ld [hli], a
	dec e
	jr nz, .asm_892fb
	ret
; 89305


; known jump sources: 8a301 (22:6301)
Function89305: ; 89305 (22:5305)
	xor a
	ld [MenuSelection], a ; $cf74
	ld c, $28
.asm_8930b
	ld a, [MenuSelection] ; $cf74
	inc a
	ld [MenuSelection], a ; $cf74
	push bc
	call Function892b4
	pop bc
	dec c
	jr nz, .asm_8930b
	ret

Function8931b: ; 8931b
	push hl
	ld hl, $a03b
	ld a, [MenuSelection]
	dec a
	ld bc, $0025
	call AddNTimes
	ld b, h
	ld c, l
	pop hl
	ret
; 8932d

Function8932d: ; 8932d
	ld hl, $0000
	add hl, bc

Function89331: ; 89331
	push bc
	ld c, $5
.asm_89334
	ld a, [hli]
	cp $50
	jr z, .asm_89340
	cp $7f
	jr nz, .asm_89343
	dec c
	jr nz, .asm_89334

.asm_89340
	scf
	jr .asm_89344

.asm_89343
	and a

.asm_89344
	pop bc
	ret
; 89346


; known jump sources: 899b5 (22:59b5)
Function89346: ; 89346 (22:5346)
	ld h, b
	ld l, c
	jr asm_8934e

Function8934a: ; 8934a
	ld hl, $0006
	add hl, bc
asm_8934e:
	push bc
	ld c, $5
.asm_89351
	ld a, [hli]
	cp $50
	jr z, .asm_8935d
	cp $7f
	jr nz, .asm_89360
	dec c
	jr nz, .asm_89351

.asm_8935d
	scf
	jr .asm_89361

.asm_89360
	and a

.asm_89361
	pop bc
	ret
; 89363

Function89363: ; 89363
	ld h, b
	ld l, c
	jr .asm_8936b

	ld hl, $0019
	add hl, bc

.asm_8936b
	push de
	ld e, $6
.asm_8936e
	ld a, [hli]
	cp $ff
	jr nz, .asm_8937e
	ld a, [hli]
	cp $ff
	jr nz, .asm_8937e
	dec e
	jr nz, .asm_8936e
	scf
	jr .asm_8937f

.asm_8937e
	and a

.asm_8937f
	pop de
	ret
; 89381

Function89381: ; 89381
	push bc
	push de
	call Function89b45
	jr c, .asm_89392
	push hl
	ld a, $ff
	ld bc, $0008
	call ByteFill
	pop hl

.asm_89392
	pop de
	ld c, $8
	call Function89193
	pop bc
	ret
; 8939a

Function8939a: ; 8939a
	push bc
	ld hl, $0000
	add hl, bc
	ld de, DefaultFlypoint
	ld c, $6
	call Function89193
	pop bc
	ld hl, $0011
	add hl, bc
	ld de, $d008
	call Function89381
	ret
; 893b3


; known jump sources: 893e5 (22:53e5)
Function893b3: ; 893b3 (22:53b3)
	call DisableLCD
	call ClearSprites
	call Functione51
	call Functione5f
	call Function893ef
	call Function8942b
	call Function89455
	call EnableLCD
	ret

Function893cc: ; 893cc
	call DisableLCD
	call ClearSprites
	call Functione51
	call Functione5f
	call Function893ef
	call Function89464
	call EnableLCD
	ret
; 893e2


; known jump sources: 89b2e (22:5b2e), 89e60 (22:5e60), 89ee4 (22:5ee4), 8a160 (22:6160), 8a265 (22:6265)
Function893e2: ; 893e2 (22:53e2)
	call Function89b1e
	call Function893b3
	call Function8a5b6
	call Function8949c
	ret

Function893ef: ; 893ef
	ld de, VTiles0
	ld hl, $540b
	ld bc, $0020
	ld a, $22
	call FarCopyBytes
	ret
; 893fe

INCBIN "baserom.gbc",$893fe,$8942b - $893fe

; known jump sources: 893c2 (22:53c2)
Function8942b: ; 8942b (22:542b)
	ld de, $8020
	ld hl, $61bf
	ld bc, $80
	ld a, $5e
	call FarCopyBytes
	ld de, $80a0
	ld hl, $664f
	ld bc, $40
	ld a, $5e
	call FarCopyBytes
	ret

; known jump sources: 89b9c (22:5b9c), 89c4a (22:5c4a), 89fe1 (22:5fe1), 8a36a (22:636a), 8a370 (22:6370), 8a6b8 (22:66b8), 8a70a (22:670a), 8a726 (22:6726), 8a745 (22:6745), 8a90f (22:690f), 8aa52 (22:6a52), 8aa61 (22:6a61), 8aa69 (22:6a69), 8b563 (22:7563), 8b595 (22:7595), 8b5b8 (22:75b8), 8b5c9 (22:75c9), 8b610 (22:7610), 8b63d (22:763d)
Function89448: ; 89448 (22:5448)
	push af
	ld hl, Sprites ; $c400
	ld d, $60
	xor a
.asm_8944f
	ld [hli], a
	dec d
	jr nz, .asm_8944f
	pop af
	ret

; known jump sources: 893c5 (22:53c5)
Function89455: ; 89455 (22:5455)
	ld hl, $61bf
	ld de, $90c0
	ld bc, $490
	ld a, $5e
	call FarCopyBytes
	ret

Function89464: ; 89464
	ld hl, $59ef
	ld de, VTiles2
	ld bc, $0200
	ld a, $5e
	call FarCopyBytes
	ld hl, $604f
	ld de, $9200
	ld bc, $0170
	ld a, $5e
	call FarCopyBytes
	ret
; 89481

Function89481: ; 89481
	ld d, $2
	call Function8934a
	ret c
	ld d, $0
	ld hl, $0010
	add hl, bc
	bit 0, [hl]
	ret z
	inc d
	ret
; 89492


; known jump sources: 8a002 (22:6002), 8aa34 (22:6a34), 8aaa9 (22:6aa9), 8ab47 (22:6b47)
Function89492: ; 89492 (22:5492)
	ld d, $0
	ld a, [PlayerGender] ; $d472
	bit 0, a
	ret z
	inc d
	ret

Function8949c: ; 8949c
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $54b3
	ld de, $d038
	ld bc, $0008
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 894b3

INCBIN "baserom.gbc",$894b3,$894bb - $894b3

Function894bb: ; 894bb
	call Function894dc
	push bc
	call Function8956f
	call Function8949c
	call Function8a60d
	pop bc
	ret
; 894ca


; known jump sources: 8a005 (22:6005), 8aa37 (22:6a37), 8aaac (22:6aac), 8ab4a (22:6b4a)
Function894ca: ; 894ca (22:54ca)
	push bc
	call Function894dc
	call Function895c7
	call Function8949c
	call Function8a60d
	call Function32f9
	pop bc
	ret

Function894dc: ; 894dc
	push bc
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld c, d
	ld b, $0
	ld hl, $5509
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, Unkn1Pals
	ld bc, $0018
	call CopyBytes
	ld hl, $5557
	ld de, $d018
	ld bc, $0018
	call CopyBytes
	pop af
	ld [rSVBK], a
	pop bc
	ret
; 89509

INCBIN "baserom.gbc",$89509,$8956f - $89509

Function8956f: ; 8956f
	push bc
	ld hl, $0010
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $000c
	add hl, bc
	ld b, h
	ld c, l
	callba Function4e929
	ld a, c
	ld [TrainerClass], a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $d030
	ld a, $ff
	ld [hli], a
	ld a, $7f
	ld [hl], a
	pop af
	ld [rSVBK], a
	ld a, [TrainerClass]
	ld h, $0
	ld l, a
	add hl, hl
	add hl, hl
	ld de, $70ce
	add hl, de
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld de, $d032
	ld c, $4
.asm_895b1
	ld a, $2
	call GetFarByte
	ld [de], a
	inc de
	inc hl
	dec c
	jr nz, .asm_895b1
	ld hl, $d036
	xor a
	ld [hli], a
	ld [hl], a
	pop af
	ld [rSVBK], a
	pop bc
	ret
; 895c7


; known jump sources: 894ce (22:54ce)
Function895c7: ; 895c7 (22:55c7)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $55de
	ld de, $d030
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; 895de (22:55de)

INCBIN "baserom.gbc",$895de,$895f2 - $895de

Function895f2: ; 895f2
	push bc
	xor a
	ld hl, AttrMap
	ld bc, $0168
	call ByteFill
	call Function89605
	call Function89655
	pop bc
	ret
; 89605

Function89605: ; 89605
	ld hl, $ce14
	ld a, $1
	ld de, $0014
	ld c, $e
.asm_8960f
	ld [hl], a
	dec c
	jr z, .asm_8961b
	add hl, de
	inc a
	ld [hl], a
	dec a
	add hl, de
	dec c
	jr nz, .asm_8960f

.asm_8961b
	ld hl, $cf19
	ld c, $a
	ld a, $2
.asm_89622
	ld [hli], a
	dec a
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_89622
	ld hl, $ceb6
	ld a, $4
	ld bc, $0004
	call ByteFill
	ld a, $5
	ld bc, $000e
	call ByteFill
	ret
; 8963d

Function8963d: ; 8963d
	ld hl, $ce21
	ld a, $6
	ld de, $0014
	ld bc, $0707
.asm_89648
	push hl
	ld c, $7
.asm_8964b
	ld [hli], a
	dec c
	jr nz, .asm_8964b
	pop hl
	add hl, de
	dec b
	jr nz, .asm_89648
	ret
; 89655

Function89655: ; 89655
	ld hl, $ceca
	ld de, $0014
	ld a, $5
	ld b, $4
.asm_8965f
	ld c, $12
	push hl
.asm_89662
	ld [hli], a
	dec c
	jr nz, .asm_89662
	pop hl
	add hl, de
	dec b
	jr nz, .asm_8965f
	ret
; 8966c

Function8966c: ; 8966c
	push bc
	call Function89688
	ld hl, $c4a4
	ld c, $8
	call Function896f5
	pop bc
	ret
; 8967a


; known jump sources: 89885 (22:5885)
Function8967a: ; 8967a (22:567a)
	push bc
	call Function89688
	ld hl, $c4a2
	ld c, $c
	call Function896f5
	pop bc
	ret

Function89688: ; 89688
	ld hl, TileMap
	ld a, $1
	ld e, $14
	call Function896e1
	ld a, $2
	ld e, $14
	call Function896eb
	ld a, $3
	ld [hli], a
	ld a, $4
	ld e, $12
	call Function896e1
	ld a, $6
	ld [hli], a
	push bc
	ld c, $d
.asm_896a9
	call Function896cb
	dec c
	jr z, .asm_896b5
	call Function896d6
	dec c
	jr nz, .asm_896a9

.asm_896b5
	pop bc
	ld a, $19
	ld [hli], a
	ld a, $1a
	ld e, $12
	call Function896e1
	ld a, $1c
	ld [hli], a
	ld a, $2
	ld e, $14
	call Function896eb
	ret
; 896cb

Function896cb: ; 896cb
	ld de, $0013
	ld a, $7
	ld [hl], a
	add hl, de
	ld a, $9
	ld [hli], a
	ret
; 896d6

Function896d6: ; 896d6
	ld de, $0013
	ld a, $a
	ld [hl], a
	add hl, de
	ld a, $b
	ld [hli], a
	ret
; 896e1

Function896e1: ; 896e1
.asm_896e1
	ld [hli], a
	inc a
	dec e
	ret z
	ld [hli], a
	dec a
	dec e
	jr nz, .asm_896e1
	ret
; 896eb

Function896eb: ; 896eb
.asm_896eb
	ld [hli], a
	dec a
	dec e
	ret z
	ld [hli], a
	inc a
	dec e
	jr nz, .asm_896eb
	ret
; 896f5

Function896f5: ; 896f5
	call Function8971f
	call Function89736
	inc hl
	inc hl
	ld b, 2

ClearScreenArea: ; 0x896ff
; clears an area of the screen
; INPUT:
; hl = address of upper left corner of the area
; b = height
; c = width

	ld a, " " ; blank tile
	ld de, 20 ; screen width
.loop
	push bc
	push hl
.innerLoop
	ld [hli], a
	dec c
	jr nz, .innerLoop
	pop hl
	pop bc
	add hl, de
	dec b
	jr nz, .loop

	dec hl
	inc c
	inc c
.asm_89713
	ld a, $36
	ld [hli], a
	dec c
	ret z
	ld a, $18
	ld [hli], a
	dec c
	jr nz, .asm_89713 ; 0x8971c $f5
	ret
; 0x8971f

Function8971f: ; 8971f
	ld a, $2c
	ld [hli], a
	ld a, $2d
	ld [hld], a
	push hl
	ld de, $0014
	add hl, de
	ld a, $31
	ld [hli], a
	ld a, $32
	ld [hld], a
	add hl, de
	ld a, $35
	ld [hl], a
	pop hl
	ret
; 89736

Function89736: ; 89736
	push hl
	inc hl
	inc hl
	ld e, c
	ld d, $0
	add hl, de
	ld a, $2f
	ld [hli], a
	ld a, $30
	ld [hld], a
	ld de, $0014
	add hl, de
	ld a, $33
	ld [hli], a
	ld a, $34
	ld [hl], a
	add hl, de
	ld a, $1f
	ld [hl], a
	pop hl
	ret
; 89753

Function89753: ; 89753
	ld a, $c
	ld [hl], a
	xor a
	call Function89215
	ret
; 8975b

Function8975b: ; 8975b
	ld a, $1d
	ld [hli], a
	inc a
	ld [hli], a
	ld a, $d
	ld [hl], a
	dec hl
	dec hl
	ld a, $4
	ld e, $3
.asm_89769
	call Function89215
	inc hl
	dec e
	jr nz, .asm_89769
	ret
; 89771

Function89771: ; 89771
	ld a, $12
	ld [hl], a
	ld a, $3
	call Function89215
	ret
; 8977a

Function8977a: ; 8977a
	ld e, $4
	ld d, $13
.asm_8977e
	ld a, d
	ld [hl], a
	ld a, $4
	call Function89215
	inc hl
	inc d
	dec e
	jr nz, .asm_8977e
	ld e, $e
.asm_8978c
	ld a, d
	ld [hl], a
	xor a
	call Function89215
	inc hl
	dec e
	jr nz, .asm_8978c
	ret
; 89797

Function89797: ; 89797
	push bc
	ld a, $e
	ld [hl], a
	ld bc, $0014
	add hl, bc
	ld a, $11
	ld [hli], a
	ld a, $10
	ld c, $8
.asm_897a6
	ld [hli], a
	dec c
	jr nz, .asm_897a6
	ld a, $f
	ld [hl], a
	pop bc
	ret
; 897af

Function897af: ; 897af
	push bc
	ld hl, $0010
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $000c
	add hl, bc
	ld b, h
	ld c, l
	callba Function4e929
	ld a, c
	ld [TrainerClass], a
	xor a
	ld [CurPartySpecies], a
	ld de, $9370
	callba Function5120d
	pop bc
	ret
; 897d5

Function897d5: ; 897d5
	push bc
	call Function8934a
	jr nc, .asm_897f3
	ld hl, $ce21
	xor a
	ld de, $0014
	ld bc, $0707
.asm_897e5
	push hl
	ld c, $7
.asm_897e8
	ld [hli], a
	dec c
	jr nz, .asm_897e8
	pop hl
	add hl, de
	dec b
	jr nz, .asm_897e5
	pop bc
	ret

.asm_897f3
	ld a, $37
	ld [$ffad], a
	ld hl, $c4e8
	ld bc, $0707
	ld a, $13
	call Predef
	call Function8963d
	pop bc
	ret
; 89807


; known jump sources: 89fff (22:5fff), 8aa31 (22:6a31), 8aaa6 (22:6aa6), 8ab44 (22:6b44)
Function89807: ; 89807 (22:5807)
	ld hl, $5bef
	ld a, [PlayerGender] ; $d472
	bit 0, a
	jr z, .asm_89814
	ld hl, $5e1f
.asm_89814
	call DisableLCD
	ld de, $9370
	ld bc, $230
	ld a, $5e
	call FarCopyBytes
	call EnableLCD
	call DelayFrame
	ret

; known jump sources: 89894 (22:5894)
Function89829: ; 89829 (22:5829)
	push bc
	ld bc, $705
	ld de, $14
	ld a, $37
.asm_89832
	push bc
	push hl
.asm_89834
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_89834
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_89832
	call Function8963d
	pop bc
	ret

Function89844: ; 89844
	call Function89481
	call Function894bb
	call Function897af
	push bc
	call Function3200
	call Function32f9
	pop bc
	ret
; 89856

Function89856: ; 89856
	push bc
	call Function891b8
	pop bc
	call Function895f2
	call Function8966c
	call Function899d3
	call Function898aa
	call Function898be
	call Function898dc
	call Function898f3
	push bc
	ld bc, $d008
	ld hl, $c56a
	call Function89975
	pop bc
	call Function897d5
	ret
; 8987f


; known jump sources: 8a022 (22:6022), 8aa3a (22:6a3a), 8ab5c (22:6b5c)
Function8987f: ; 8987f (22:587f)
	call Function891b8
	call Function895f2
	call Function8967a
	call Function899d3
	ld hl, $c4b9
	call Function8999c
	ld hl, $c4e9
	call Function89829
	call Function899b2
	ld hl, $c509
	call Function899c9
	ld bc, $d008
	ld hl, $c56a
	call Function89975
	ret

Function898aa: ; 898aa
	ld a, [MenuSelection]
	and a
	ret z
	push bc
	ld hl, $c4ba
	ld de, MenuSelection
	ld bc, $8102
	call PrintNum
	pop bc
	ret
; 898be

Function898be: ; 898be
	push bc
	ld de, DefaultFlypoint
	ld hl, DefaultFlypoint
	call Function89331
	jr nc, .asm_898cd
	ld de, $5116

.asm_898cd
	ld hl, $c4bd
	ld a, [MenuSelection]
	and a
	jr nz, .asm_898d7
	dec hl

.asm_898d7
	call PlaceString
	pop bc
	ret
; 898dc

Function898dc: ; 898dc
	ld hl, $0006
	add hl, bc
	push bc
	ld d, h
	ld e, l
	call Function8934a
	jr nc, .asm_898eb
	ld de, $5116

.asm_898eb
	ld hl, $c4f6
	call PlaceString
	pop bc
	ret
; 898f3

Function898f3: ; 898f3
	push bc
	ld hl, $000c
	add hl, bc
	ld d, h
	ld e, l
	call Function8934a
	jr c, .asm_8990a
	ld hl, $c509
	ld bc, $8205
	call PrintNum
	jr .asm_89913

.asm_8990a
	ld hl, $c509
	ld de, $5116
	call PlaceString

.asm_89913
	pop bc
	ret
; 89915

Function89915: ; 89915
	push bc
	push hl
	ld de, $5942
	ld c, $8
.asm_8991c
	ld a, [de]
	ld [hl], a
	ld a, $4
	call Function89215
	inc hl
	inc de
	dec c
	jr nz, .asm_8991c
	pop hl
	ld b, $4
	ld c, $2b
	ld a, $8
	ld de, $594a
.asm_89932
	push af
	ld a, [de]
	cp [hl]
	jr nz, .asm_8993b
	call Function8994e
	inc de

.asm_8993b
	inc hl
	pop af
	dec a
	jr nz, .asm_89932
	pop bc
	ret
; 89942

INCBIN "baserom.gbc",$89942,$8994e - $89942

Function8994e: ; 8994e
	push hl
	push de
	ld de, $0014
	ld a, l
	sub e
	ld l, a
	ld a, h
	sbc d
	ld h, a
	ld a, c
	ld [hl], a
	ld a, b
	call Function89215
	pop de
	pop hl
	ret
; 89962

Function89962: ; 89962
	push bc
	ld c, $4
	ld b, $20
.asm_89967
	ld a, b
	ld [hl], a
	ld a, $4
	call Function89215
	inc hl
	inc b
	dec c
	jr nz, .asm_89967
	pop bc
	ret
; 89975

Function89975: ; 89975
	push bc
	ld e, $8
.asm_89978
	ld a, [bc]
	ld d, a
	call Function8998b
	swap d
	inc hl
	ld a, d
	call Function8998b
	inc bc
	inc hl
	dec e
	jr nz, .asm_89978
	pop bc
	ret
; 8998b

Function8998b: ; 8998b
	push bc
	and $f
	cp $a
	jr nc, .asm_89997
	ld c, $f6
	add c
	jr .asm_89999

.asm_89997
	ld a, $7f

.asm_89999
	ld [hl], a
	pop bc
	ret
; 8999c


; known jump sources: 8988e (22:588e)
Function8999c: ; 8999c (22:599c)
	ld de, PlayerName ; $d47d
	call PlaceString
	inc bc
	ld h, b
	ld l, c
	ld de, $59ac
	call PlaceString
	ret
; 899ac (22:59ac)

INCBIN "baserom.gbc",$899ac,$899b2 - $899ac

; known jump sources: 89897 (22:5897)
Function899b2: ; 899b2 (22:59b2)
	ld bc, PlayerName ; $d47d
	call Function89346
	jr c, .asm_899bf
	ld de, PlayerName ; $d47d
	jr .asm_899c2
.asm_899bf
	ld de, $5116
.asm_899c2
	ld hl, $c4f6
	call PlaceString
	ret

; known jump sources: 8989d (22:589d)
Function899c9: ; 899c9 (22:59c9)
	ld de, PlayerID ; $d47b
	ld bc, $8205
	call PrintNum
	ret

Function899d3: ; 899d3
	ld hl, $c4f1
	call Function89753
	ld hl, $c506
	call Function8975b
	ld hl, $c555
	call Function89771
	ld hl, $c57d
	call Function8977a
	ld hl, $c505
	call Function89797
	ld hl, $c4f2
	call Function89962
	ld hl, $c556
	call Function89915
	ret
; 899fe

Function899fe: ; 899fe
	push bc
	push hl
	ld hl, $0019
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	call Function89a0c
	pop bc
	ret
; 89a0c

Function89a0c: ; 89a0c
	push hl
	call Function89363
	pop hl
	jr c, .asm_89a1c
	ld d, h
	ld e, l
	callba Function11c08f
	ret

.asm_89a1c
	ld de, $5153
	call PlaceString
	ret
; 89a23


; known jump sources: 8a729 (22:6729), 8a818 (22:6818), 8a8ac (22:68ac), 8a8fa (22:68fa), 8aab6 (22:6ab6), 8ab24 (22:6b24)
Function89a23: ; 89a23 (22:5a23)
	ld hl, $c57c
	ld b, $4
	ld c, $12
	call Function8921f
	ret

; known jump sources: 8a6ee (22:66ee), 8a80d (22:680d), 8aa3d (22:6a3d)
Function89a2e: ; 89a2e (22:5a2e)
	ld hl, $c59b
	ld b, $2
	ld c, $6
	call TextBox
	ld hl, $c5b1
	ld de, $5a4e
	call PlaceString
	ld hl, $c5c5
	ld de, $5a53
	call PlaceString
	call Function89655
	ret
; 89a4e (22:5a4e)

INCBIN "baserom.gbc",$89a4e,$89a57 - $89a4e

Function89a57: ; 89a57
	call Function354b
	bit 6, c
	jr nz, .asm_89a78
	bit 7, c
	jr nz, .asm_89a81
	bit 0, c
	jr nz, .asm_89a70
	bit 1, c
	jr nz, .asm_89a70
	bit 3, c
	jr nz, .asm_89a74
	scf
	ret

.asm_89a70
	ld a, $1
	and a
	ret

.asm_89a74
	ld a, $2
	and a
	ret

.asm_89a78
	call Function89a9b
	call nc, Function89a8a
	ld a, $0
	ret

.asm_89a81
	call Function89a93
	call nc, Function89a8a
	ld a, $0
	ret
; 89a8a

Function89a8a: ; 89a8a
	push af
	ld de, $0062
	call PlaySFX
	pop af
	ret
; 89a93

Function89a93: ; 89a93
	ld d, $28
	ld e, $1
	call Function89aa3
	ret
; 89a9b

Function89a9b: ; 89a9b
	ld d, $1
	ld e, $ff
	call Function89aa3
	ret
; 89aa3

Function89aa3: ; 89aa3
	ld a, [MenuSelection]
	ld c, a
	push bc
.asm_89aa8
	ld a, [MenuSelection]
	cp d
	jr z, .asm_89ac0
	add e
	jr nz, .asm_89ab2
	inc a

.asm_89ab2
	ld [MenuSelection], a
	call Function89ac7
	jr nc, .asm_89aa8
	call Function89ae6
	pop bc
	and a
	ret

.asm_89ac0
	pop bc
	ld a, c
	ld [MenuSelection], a
	scf
	ret
; 89ac7

Function89ac7: ; 89ac7
	call Function89160
	call Function8931b
	call Function89ad4
	call CloseSRAM
	ret
; 89ad4

Function89ad4: ; 89ad4
	push de
	call Function8932d
	jr c, .asm_89ae3
	ld hl, $0011
	add hl, bc
	call Function89b45
	jr c, .asm_89ae4

.asm_89ae3
	and a

.asm_89ae4
	pop de
	ret
; 89ae6

Function89ae6: ; 89ae6
	ld hl, $d031
	xor a
	ld [hl], a
	ld a, [MenuSelection]
.asm_89aee
	cp $6
	jr c, .asm_89afc
	sub $5
	ld c, a
	ld a, [hl]
	add $5
	ld [hl], a
	ld a, c
	jr .asm_89aee

.asm_89afc
	ld [$d030], a
	ret
; 89b00


; known jump sources: 89b24 (22:5b24)
Function89b00: ; 89b00 (22:5b00)
	callba Function49351
	ret
; 89b07 (22:5b07)

INCBIN "baserom.gbc",$89b07,$89b1e - $89b07

; known jump sources: 893e2 (22:53e2)
Function89b1e: ; 89b1e (22:5b1e)
	callba Function4a485
	call Function89b00
	ret

; known jump sources: 8a24f (22:624f), 8a66d (22:666d), 8a9b5 (22:69b5), 8aba5 (22:6ba5)
Function89b28: ; 89b28 (22:5b28)
	call Function891de
	call WhiteBGMap
	call Function893e2
	call Function1d7d
	call Function891ab
	call Function32f9
	ret

; known jump sources: 8a182 (22:6182), 8a3c6 (22:63c6), 8a3d5 (22:63d5), 8a9d6 (22:69d6), 8b4bd (22:74bd)
Function89b3b: ; 89b3b (22:5b3b)
	call Function8923c
	callba Function48cda
	ret

Function89b45: ; 89b45
	push hl
	push bc
	ld c, $10
	ld e, $0
.asm_89b4b
	ld a, [hli]
	ld b, a
	and $f
	cp $a
	jr c, .asm_89b5a
	ld a, c
	cp $b
	jr nc, .asm_89b74
	jr .asm_89b71

.asm_89b5a
	dec c
	swap b
	inc e
	ld a, b
	and $f
	cp $a
	jr c, .asm_89b6c
	ld a, c
	cp $b
	jr nc, .asm_89b74
	jr .asm_89b71

.asm_89b6c
	inc e
	dec c
	jr nz, .asm_89b4b
	dec e

.asm_89b71
	scf
	jr .asm_89b75

.asm_89b74
	and a

.asm_89b75
	pop bc
	pop hl
	ret
; 89b78


; known jump sources: 8b47a (22:747a)
Function89b78: ; 89b78 (22:5b78)
	push bc
	ld a, [$d010]
	cp $10
	jr c, .asm_89b8c
	ld a, e
	and a
	jr z, .asm_89b89
	ld c, e
.asm_89b85
	inc hl
	dec c
	jr nz, .asm_89b85
.asm_89b89
	ld a, $7f
	ld [hl], a
.asm_89b8c
	ld a, [$d010]
	inc a
	and $1f
	ld [$d010], a
	pop bc
	ret

; known jump sources: 8a6fb (22:66fb), 8aa43 (22:6a43)
Function89b97: ; 89b97 (22:5b97)
	call Function89c34
	jr c, .asm_89ba0
	call Function89448
	ret
.asm_89ba0
	ld a, [$d011]
	ld hl, $5bd8
	and a
	jr z, .asm_89bae
.asm_89ba9
	inc hl
	inc hl
	dec a
	jr nz, .asm_89ba9
.asm_89bae
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, Sprites ; $c400
.asm_89bb4
	ld a, [hli]
	cp $ff
	ret z
	ld c, a
	ld b, $0
.asm_89bbb
	push hl
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	add b
	ld [de], a
	inc de
	ld a, $8
	add b
	ld b, a
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	pop hl
	dec c
	jr nz, .asm_89bbb
	ld b, $0
	ld c, $4
	add hl, bc
	jr .asm_89bb4
; 89bd8 (22:5bd8)

INCBIN "baserom.gbc",$89bd8,$89c34 - $89bd8

; known jump sources: 89b97 (22:5b97), 89c44 (22:5c44)
Function89c34: ; 89c34 (22:5c34)
	push bc
	ld a, [$d012]
	ld c, a
	inc a
	and $f
	ld [$d012], a
	ld a, c
	cp $8
	pop bc
	ret

; known jump sources: 8b481 (22:7481), 8b54e (22:754e), 8b5ff (22:75ff)
Function89c44: ; 89c44 (22:5c44)
	call Function89c34
	jr c, .asm_89c4f
	push de
	call Function89448
	pop de
	ret
.asm_89c4f
	ld hl, Sprites ; $c400
	push de
	ld a, b
	ld [hli], a
	ld d, $8
	ld a, e
	and a
	ld a, c
	jr z, .asm_89c60
.asm_89c5c
	add d
	dec e
	jr nz, .asm_89c5c
.asm_89c60
	pop de
	ld [hli], a
	ld a, d
	ld [hli], a
	xor a
	ld [hli], a
	ret

; known jump sources: 8a6fe (22:66fe), 8aa46 (22:6a46)
Function89c67: ; 89c67 (22:5c67)
	call Function354b
	ld b, $0
	bit 0, c
	jr z, .asm_89c74
	ld b, $1
	and a
	ret
.asm_89c74
	bit 1, c
	jr z, .asm_89c7a
	scf
	ret
.asm_89c7a
	xor a
	bit 6, c
	jr z, .asm_89c81
	ld a, $1
.asm_89c81
	bit 7, c
	jr z, .asm_89c87
	ld a, $2
.asm_89c87
	bit 5, c
	jr z, .asm_89c8d
	ld a, $3
.asm_89c8d
	bit 4, c
	jr z, .asm_89c93
	ld a, $4
.asm_89c93
	and a
	ret z
	dec a
	ld c, a
	ld d, $0
	ld hl, $5cbf
	ld a, [$d02f]
	and a
	jr z, .asm_89ca5
	ld hl, $5ccf
.asm_89ca5
	ld a, [$d011]
	and a
	jr z, .asm_89cb1
	ld e, $4
.asm_89cad
	add hl, de
	dec a
	jr nz, .asm_89cad
.asm_89cb1
	ld e, c
	add hl, de
	ld a, [hl]
	and a
	ret z
	dec a
	ld [$d011], a
	xor a
	ld [$d012], a
	ret
; 89cbf (22:5cbf)

INCBIN "baserom.gbc",$89cbf,$89cdf - $89cbf

; known jump sources: 8a50e (22:650e)
Function89cdf: ; 89cdf (22:5cdf)
	ld a, $10
	add b
	ld b, a
	ld a, $8
	add c
	ld c, a
	ld e, $2
	ld a, $2
	ld hl, Sprites ; $c400
.asm_89cee
	push af
	push bc
	ld d, $4
.asm_89cf2
	ld a, b
	ld [hli], a
	ld a, c
	ld [hli], a
	ld a, e
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld a, $8
	add c
	ld c, a
	inc e
	dec d
	jr nz, .asm_89cf2
	pop bc
	ld a, $8
	add b
	ld b, a
	pop af
	dec a
	jr nz, .asm_89cee
	ret

; known jump sources: 8a6c8 (22:66c8), 8ab89 (22:6b89)
Function89d0d: ; 89d0d (22:5d0d)
	call Function8923c
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld c, $8
	ld de, Unkn1Pals ; $d000
.asm_89d1c
	push bc
	ld hl, $5d4e
	ld bc, $8
	call CopyBytes
	pop bc
	dec c
	jr nz, .asm_89d1c
	ld hl, $5d56
	ld de, $d010
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	call Function32f9
	callba Function845db
	call Function89240
	ld c, $18
	call DelayFrames
	call Function3d47
	ret
; 89d4e (22:5d4e)

INCBIN "baserom.gbc",$89d4e,$89d5e - $89d4e

; known jump sources: 8a18b (22:618b), 8a9de (22:69de), 8b989 (22:7989)
Function89d5e: ; 89d5e (22:5d5e)
	push af
	call Function1d3c
	pop af
	ld [$cf88], a
	call Function8923c
	call Function1c89
	call Function1c10
	ld hl, $cfa5
	set 7, [hl]
	ret

; known jump sources: 8a191 (22:6191)
Function89d75: ; 89d75 (22:5d75)
	push hl
	call Function8923c
	call _hl_
	callba Function104148
	pop hl
	jr asm_89d90

; known jump sources: 8a9e4 (22:69e4), 8b98f (22:798f)
Function89d85: ; 89d85 (22:5d85)
	push hl
	call Function8923c
	call _hl_
	call Function3238
	pop hl

; known jump sources: 89d83 (22:5d83), 89da5 (22:5da5)
asm_89d90: ; 89d90 (22:5d90)
	call Function8923c
	push hl
	call _hl_
	call Function89dab
	ld a, [$cfa9]
	push af
	call Function891ab
	pop af
	pop hl
	jr c, .asm_89da9
	jr z, asm_89d90
	scf
	ret
.asm_89da9
	and a
	ret

; known jump sources: 89d97 (22:5d97)
Function89dab: ; 89dab (22:5dab)
	call Function8923c
	callba Function241ba
	call Function8923c
	ld a, c
	ld hl, $cfa8
	and [hl]
	ret z
	bit 0, a
	jr nz, .asm_89dc7
	bit 1, a
	jr nz, .asm_89dd9
	xor a
	ret
.asm_89dc7
	call PlayClickSFX
	ld a, [$cfa3]
	ld c, a
	ld a, [$cfa9]
	cp c
	jr z, .asm_89dd9
	call Function1bee
	scf
	ret
.asm_89dd9
	call PlayClickSFX
	ld a, $1
	and a
	ret

; no known jump sources
Function89de0: ; 89de0 (22:5de0)
	call ClearSprites
	call Function89e0a
	jr c, .asm_89e00
	ld c, $1
.asm_89dea
	call Function8a31c
	jr z, .asm_89dfd
	ld a, [$cfa9]
	ld c, a
	push bc
	ld hl, $5e04
	ld a, e
	dec a
	rst $28
	pop bc
	jr .asm_89dea
.asm_89dfd
	call Function891fe
.asm_89e00
	call Function8917a
	ret

; no known jump sources
Jumptable_89e04: ; 89e04 (22:5e04)
	dw Function8a62c
	dw Function8a999
	dw Function8ab93


; known jump sources: 89de3 (22:5de3)
Function89e0a: ; 89e0a (22:5e0a)
	call Function89160
	call Function8b3b0
	call CloseSRAM
	ld hl, $5e18
	rst $28
	ret

; no known jump sources
Jumptable_89e18: ; 89e18 (22:5e18)
	dw Function89e1e
	dw Function8a116
	dw Function8a2aa


; no known jump sources
Function89e1e: ; 89e1e (22:5e1e)
	call Function89160
	ld bc, $a037
	call Function8b36c
	call CloseSRAM
	xor a
	ld [$d02d], a

; known jump sources: 89e3a (22:5e3a)
asm_89e2e: ; 89e2e (22:5e2e)
	ld a, [$d02d]
	ld hl, $5e3c
	rst $28
	ret

; known jump sources: 89e97 (22:5e97), 89ede (22:5ede), 89f67 (22:5f67), 89fea (22:5fea), 89ff3 (22:5ff3), 8a03a (22:603a), 8a049 (22:6049), 8a052 (22:6052), 8a09e (22:609e), 8a0e9 (22:60e9), 8a0f2 (22:60f2), 8a0ff (22:60ff)
Function89e36: ; 89e36 (22:5e36)
	ld hl, $d02d
	inc [hl]
	jr asm_89e2e

; no known jump sources
Jumptable_89e3c: ; 89e3c (22:5e3c)
	dw Function89e6f
	dw Function89fed
	dw Function89ff6
	dw Function8a03d
	dw Function89eb9
	dw Function89efd
	dw Function89fce
	dw Function8a04c
	dw Function8a055
	dw Function8a0e6
	dw Function8a0ec
	dw Function8a0f5
	dw Function89e58
	dw Function89e68


; no known jump sources
Function89e58: ; 89e58 (22:5e58)
	ld a, $1
	call Function8a2fe
	call Function891fe
	call Function893e2
	call Function89168
	and a
	ret

; no known jump sources
Function89e68: ; 89e68 (22:5e68)
	call Function891fe
	ld a, $1
	scf
	ret

; no known jump sources
Function89e6f: ; 89e6f (22:5e6f)
	call Function891de
	call Function89245
	call Function89ee1
	call Function89e9a
	ld hl, $c4f7
	call Function8a58d
	ld a, $5
	ld hl, $ce30
	call Function8a5a3
	ld a, $6
	ld hl, $ce33
	call Function8a5a3
	call Function891ab
	call Function32f9
	jp Function89e36

; known jump sources: 89e78 (22:5e78), 89ebf (22:5ebf)
Function89e9a: ; 89e9a (22:5e9a)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $5eb1
	ld de, $d028
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; 89eb1 (22:5eb1)

INCBIN "baserom.gbc",$89eb1,$89eb9 - $89eb1

; no known jump sources
Function89eb9: ; 89eb9 (22:5eb9)
	call Function891fe
	call Function89ee1
	call Function89e9a
	ld hl, $c4f7
	call Function8a58d
	ld a, $5
	ld hl, $ce30
	call Function8a5a3
	ld a, $6
	ld hl, $ce33
	call Function8a5a3
	call Function891ab
	call Function32f9
	jp Function89e36

; known jump sources: 89e75 (22:5e75), 89ebc (22:5ebc)
Function89ee1: ; 89ee1 (22:5ee1)
	call WhiteBGMap
	call Function893e2
	call Function8923c
	callba Function4a3a7
	callba Function49384
	ld hl, $c4a1
	call Function8a53d
	ret

; no known jump sources
Function89efd: ; 89efd (22:5efd)
	ld hl, $d012
	ld a, $ff
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
.asm_89f09
	ld hl, $d012
	inc [hl]
	ld a, [hli]
	and $3
	jr nz, .asm_89f2e
	ld a, [hl]
	cp $4
	jr nc, .asm_89f2e
	ld b, $32
	inc [hl]
	ld a, [hl]
	dec a
	jr z, .asm_89f26
	ld c, a
.asm_89f1f
	ld a, $b
	add b
	ld b, a
	dec c
	jr nz, .asm_89f1f
.asm_89f26
	ld c, $e8
	ld a, [$d013]
	call Function89fa5
.asm_89f2e
	ld a, [$d013]
	and a
	jr z, .asm_89f58
.asm_89f34
	call Function89f6a
	ld e, a
	ld a, c
	cp $a8
	jr nc, .asm_89f4d
	cp $46
	jr c, .asm_89f4d
	ld d, $0
	dec e
	ld hl, $d014
	add hl, de
	set 0, [hl]
	inc e
	jr .asm_89f51
.asm_89f4d
	ld a, $2
	add c
	ld c, a
.asm_89f51
	ld a, e
	call Function89f77
	dec a
	jr nz, .asm_89f34
.asm_89f58
	call DelayFrame
	ld hl, $d014
	ld c, $4
.asm_89f60
	ld a, [hli]
	and a
	jr z, .asm_89f09
	dec c
	jr nz, .asm_89f60
	jp Function89e36

; known jump sources: 89f34 (22:5f34)
Function89f6a: ; 89f6a (22:5f6a)
	push af
	ld de, $10
	call Function89f9a
	ld a, [hli]
	ld b, a
	ld a, [hl]
	ld c, a
	pop af
	ret

; known jump sources: 89f52 (22:5f52)
Function89f77: ; 89f77 (22:5f77)
	push af
	ld de, $10
	call Function89f9a
	ld d, $2
.asm_89f80
	push bc
	ld e, $2
.asm_89f83
	ld a, b
	ld [hli], a
	ld a, c
	ld [hli], a
	inc hl
	inc hl
	ld a, $8
	add c
	ld c, a
	dec e
	jr nz, .asm_89f83
	pop bc
	ld a, $8
	add b
	ld b, a
	dec d
	jr nz, .asm_89f80
	pop af
	ret

; known jump sources: 89f6e (22:5f6e), 89f7b (22:5f7b), 89fa8 (22:5fa8)
Function89f9a: ; 89f9a (22:5f9a)
	dec a
	ld hl, Sprites ; $c400
	and a
	ret z
.asm_89fa0
	add hl, de
	dec a
	jr nz, .asm_89fa0
	ret

; known jump sources: 89f2b (22:5f2b)
Function89fa5: ; 89fa5 (22:5fa5)
	ld de, $10
	call Function89f9a
	ld e, $2
	ld d, $a
.asm_89faf
	push bc
	ld a, $2
.asm_89fb2
	push af
	ld a, b
	ld [hli], a
	ld a, c
	ld [hli], a
	ld a, d
	inc d
	ld [hli], a
	ld a, $1
	ld [hli], a
	ld a, $8
	add c
	ld c, a
	pop af
	dec a
	jr nz, .asm_89fb2
	pop bc
	ld a, $8
	add b
	ld b, a
	dec e
	jr nz, .asm_89faf
	ret

; no known jump sources
Function89fce: ; 89fce (22:5fce)
	call Function8a5b6
	ld a, $5
	ld hl, $ce30
	call Function8a5a3
	ld a, $6
	ld hl, $ce33
	call Function8a5a3
	call Function89448
	call Function32f9
	call Function891ab
	jp Function89e36

; no known jump sources
Function89fed: ; 89fed (22:5fed)
	ld hl, $6102
	call PrintText
	jp Function89e36

; no known jump sources
Function89ff6: ; 89ff6 (22:5ff6)
	call Function891fe
	call WhiteBGMap
	call Function893cc
	call Function89807
	call Function89492
	call Function894ca
	call Function89160
	ld hl, $a603
	ld a, $ff
	ld bc, $8
	call ByteFill
	ld hl, $a603
	ld de, $d008
	call Function89381
	call CloseSRAM
	call Function8987f
	call Function89160
	ld hl, $c5a5
	ld bc, $a007
	call Function89a0c
	call CloseSRAM
	call Function891ab
	call Function89235
	jp Function89e36

; no known jump sources
Function8a03d: ; 8a03d (22:603d)
	ld hl, $6107
	call Function89209
	call PrintText
	call Function8920f
	jp Function89e36

; no known jump sources
Function8a04c: ; 8a04c (22:604c)
	ld hl, $610c
	call PrintText
	jp Function89e36

; no known jump sources
Function8a055: ; 8a055 (22:6055)
	ld c, $7
	ld b, $4
.asm_8a059
	call Function8a0a1
	inc c
	call Function8a0c9
	push bc
	call Function8a58d
	pop bc
	call Function8a0de
	push bc
	push hl
	ld a, $5
	call Function8a5a3
	pop hl
	inc hl
	inc hl
	inc hl
	ld a, $6
	call Function8a5a3
	call Function3238
	pop bc
	ld a, c
	cp $b
	jr nz, .asm_8a059
	call Function8a0a1
	ld hl, $c4fc
	call Function8a58d
	ld a, $5
	ld hl, $ce35
	call Function8a5a3
	pop hl
	ld a, $6
	ld hl, $ce38
	call Function8a5a3
	call Function3238
	jp Function89e36

; known jump sources: 8a059 (22:6059), 8a081 (22:6081)
Function8a0a1: ; 8a0a1 (22:60a1)
	call Function8923c
	push bc
	call Function8a0c9
	ld e, $6
.asm_8a0aa
	push hl
	ld bc, $6
	add hl, bc
	ld d, [hl]
	call Function8a0c1
	pop hl
	ld [hl], d
	call Function89215
	ld bc, $14
	add hl, bc
	dec e
	jr nz, .asm_8a0aa
	pop bc
	ret

; known jump sources: 8a0b0 (22:60b0)
Function8a0c1: ; 8a0c1 (22:60c1)
	push hl
	ld bc, $939
	add hl, bc
	ld a, [hl]
	pop hl
	ret

; known jump sources: 8a05d (22:605d), 8a0a5 (22:60a5), 8a0de (22:60de)
Function8a0c9: ; 8a0c9 (22:60c9)
	push bc
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld de, $14
	ld a, b
	and a
	jr z, .asm_8a0d8
.asm_8a0d4
	add hl, de
	dec b
	jr nz, .asm_8a0d4
.asm_8a0d8
	ld d, $0
	ld e, c
	add hl, de
	pop bc
	ret

; known jump sources: 8a065 (22:6065)
Function8a0de: ; 8a0de (22:60de)
	call Function8a0c9
	ld de, $939
	add hl, de
	ret

; no known jump sources
Function8a0e6: ; 8a0e6 (22:60e6)
	call Function8b539
	jp Function89e36

; no known jump sources
Function8a0ec: ; 8a0ec (22:60ec)
	ld hl, $6111
	call PrintText
	jp Function89e36

; no known jump sources
Function8a0f5: ; 8a0f5 (22:60f5)
	call Function8b555
	jp nc, Function8a0ff
	ld hl, $d02d
	inc [hl]

; known jump sources: 8a0f8 (22:60f8)
Function8a0ff: ; 8a0ff (22:60ff)
	jp Function89e36
; 8a102 (22:6102)

INCBIN "baserom.gbc",$8a102,$8a116 - $8a102

; no known jump sources
Function8a116: ; 8a116 (22:6116)
	ld a, $1
	ld [$d030], a
	ld hl, $6176
	call LoadMenuDataHeader
.asm_8a121
	call Function8923c
	call Function8a17b
	jr c, .asm_8a16b
	ld a, [$cfa9]
	ld [$d030], a
	dec d
	jr z, .asm_8a140
	call Function8a20d
	jr c, .asm_8a121
	xor a
	call Function8a2fe
	call Function8916e
	jr .asm_8a16b
.asm_8a140
	call Function89174
	jr nz, .asm_8a14c
	call Function8a241
	jr c, .asm_8a121
	jr .asm_8a15a
.asm_8a14c
	call WaitSFX
	ld de, $ce
	call PlaySFX
	ld c, $10
	call DelayFrames
.asm_8a15a
	call Function1c07
	call Function891de
	call Function893e2
	call Function89245
	call Function89168
	and a
	ret
.asm_8a16b
	call Function89209
	call Function1c17
	call Function8920f
	scf
	ret
; 8a176 (22:6176)

INCBIN "baserom.gbc",$8a176,$8a17b - $8a176

; known jump sources: 8a124 (22:6124)
Function8a17b: ; 8a17b (22:617b)
	ld de, $c4ae
	ld b, $5
	ld c, $4
	call Function89b3b
	ld hl, $619a
	ld a, [$d030]
	call Function89d5e
	ld hl, $61b0
	call Function89d75
	jr nc, .asm_8a198
	ld a, $0
.asm_8a198
	ld d, a
	ret
; 8a19a (22:619a)

INCBIN "baserom.gbc",$8a19a,$8a20d - $8a19a

; known jump sources: 8a132 (22:6132), 8a2ca (22:62ca)
Function8a20d: ; 8a20d (22:620d)
	ld hl, $6232
	call PrintText
	ld a, $2
	call Function89259
	ret c
	ld hl, $6237
	call PrintText
	ld a, $2
	call Function89259
	ret c
	xor a
	call Function8a2fe
	ld hl, $623c
	call PrintText
	xor a
	and a
	ret
; 8a232 (22:6232)

INCBIN "baserom.gbc",$8a232,$8a241 - $8a232

; known jump sources: 8a145 (22:6145), 8a2d2 (22:62d2)
Function8a241: ; 8a241 (22:6241)
	call Function1d6e
	call Function891fe
	call Function8a262
	jr nc, .asm_8a254
	call Function891fe
	call Function89b28
	scf
	ret
.asm_8a254
	call Function891de
	call WhiteBGMap
	call Function1d7d
	call Function891de
	and a
	ret

; known jump sources: 8a247 (22:6247)
Function8a262: ; 8a262 (22:6262)
	call WhiteBGMap
	call Function893e2
	call Function8923c
	callba Function4a3a7
	callba Function49384
	ld hl, $c4a1
	call Function8a53d
	ld hl, $c4fc
	call Function8a58d
	ld a, $5
	ld hl, $ce35
	call Function8a5a3
	ld a, $6
	ld hl, $ce38
	call Function8a5a3
	xor a
	ld [$d02e], a
	ld bc, $d013
	call Function8b36c
	call Function8b493
	call Function891ab
	call Function32f9
	call Function8b5e7
	ret

; no known jump sources
Function8a2aa: ; 8a2aa (22:62aa)
	ld hl, $62ef
	call LoadMenuDataHeader
	ld hl, $62f4
	call PrintText
	ld a, $1
	call Function89259
	jr nc, .asm_8a2cf
	ld hl, $62f9
	call PrintText
	ld a, $2
	call Function89259
	jr c, .asm_8a2ea
	call Function8a20d
	jr .asm_8a2ea
.asm_8a2cf
	call Function1c07
	call Function8a241
	jr c, .asm_8a2ed
	ld a, $1
	call Function8a313
	call CloseSRAM
	call Function891de
	call Function89245
	call Function89168
	and a
	ret
.asm_8a2ea
	call Function1c17
.asm_8a2ed
	scf
	ret
; 8a2ef (22:62ef)

INCBIN "baserom.gbc",$8a2ef,$8a2fe - $8a2ef

; known jump sources: 89e5a (22:5e5a), 8a138 (22:6138), 8a226 (22:6226)
Function8a2fe: ; 8a2fe (22:62fe)
	call Function8a313
	call Function89305
	ld hl, $a603
	ld bc, $8
	ld a, $ff
	call ByteFill
	call CloseSRAM
	ret

; known jump sources: 8a2d9 (22:62d9), 8a2fe (22:62fe)
Function8a313: ; 8a313 (22:6313)
	ld c, a
	call Function89160
	ld a, c
	ld [$a60b], a
	ret

; known jump sources: 89dea (22:5dea)
Function8a31c: ; 8a31c (22:631c)
	push bc
	call Function8923c
	callba Function4a3a7
	callba Function49384
	ld hl, $c4a1
	call Function8a53d
	ld hl, $c4fc
	call Function8a58d
	call Function8a3b2
	pop bc
	ld a, c
	ld [$cf88], a
	ld [MenuSelection], a ; $cf74
	call Function1c89
	call Function1c10
	ld hl, $cfa5
	set 7, [hl]
.asm_8a34e
	call Function8a3a2
	call Function8923c
	call Function8a453
	call Function8a4d3
	call Function8a4fc
	call Function891ab
	call Function32f9
	call Function8a383
	jr c, .asm_8a370
	jr z, .asm_8a34e
.asm_8a36a
	call Function89448
	xor a
	ld e, a
	ret
.asm_8a370
	call Function89448
	call Function1bee
	call Function8a3a2
	ld a, [MenuSelection] ; $cf74
	cp $ff
	jr z, .asm_8a36a
	ld e, a
	and a
	ret

; known jump sources: 8a363 (22:6363)
Function8a383: ; 8a383 (22:6383)
	callba Function241ba
	ld a, c
	ld hl, $cfa8
	and [hl]
	ret z
	bit 0, a
	jr nz, .asm_8a399
	bit 1, a
	jr nz, .asm_8a39e
	xor a
	ret
.asm_8a399
	call PlayClickSFX
	scf
	ret
.asm_8a39e
	call PlayClickSFX
	ret

; known jump sources: 8a34e (22:634e), 8a376 (22:6376)
Function8a3a2: ; 8a3a2 (22:63a2)
	ld a, [$cfa9]
	dec a
	ld hl, DefaultFlypoint ; $d002
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	ld [MenuSelection], a ; $cf74
	ret

; known jump sources: 8a338 (22:6338)
Function8a3b2: ; 8a3b2 (22:63b2)
	ld a, $1
	ld [MenuSelection], a ; $cf74
	call Function8a4fc
	call Function8a3df
	jr nc, .asm_8a3ce
	ld de, $c4c8
	ld b, $6
	ld c, $9
	call Function89b3b
	ld hl, $6435
	jr .asm_8a3db
.asm_8a3ce
	ld de, $c4c8
	ld b, $8
	ld c, $9
	call Function89b3b
	ld hl, $640f
.asm_8a3db
	call Function1d3c
	ret

; known jump sources: 8a3ba (22:63ba)
Function8a3df: ; 8a3df (22:63df)
	call Function89160
	ld hl, $a603
	call Function89b45
	call CloseSRAM
	ld hl, DefaultFlypoint ; $d002
	jr c, .asm_8a3f8
	ld de, $6408
	call Function8a400
	scf
	ret
.asm_8a3f8
	ld de, $640b
	call Function8a400
	and a
	ret

; known jump sources: 8a3f3 (22:63f3), 8a3fb (22:63fb), 8a405 (22:6405)
Function8a400: ; 8a400 (22:6400)
	ld a, [de]
	inc de
	ld [hli], a
	cp $ff
	jr nz, Function8a400
	ret
; 8a408 (22:6408)

INCBIN "baserom.gbc",$8a408,$8a453 - $8a408

; known jump sources: 8a354 (22:6354)
Function8a453: ; 8a453 (22:6453)
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	ld hl, $c5b9
	ld de, $6476
	ld a, [MenuSelection] ; $cf74
	cp $ff
	jr z, .asm_8a472
	ld de, $6483
	dec a
	ld c, a
	call Function8919e
.asm_8a472
	call PlaceString
	ret
; 8a476 (22:6476)

INCBIN "baserom.gbc",$8a476,$8a4d3 - $8a476

; known jump sources: 8a357 (22:6357)
Function8a4d3: ; 8a4d3 (22:64d3)
	ld a, [MenuSelection] ; $cf74
	cp $1
	jr nz, .asm_8a4eb
	ld a, $5
	ld hl, $ce35
	call Function8a5a3
	ld a, $7
	ld hl, $ce38
	call Function8a5a3
	ret
.asm_8a4eb
	ld a, $7
	ld hl, $ce35
	call Function8a5a3
	ld a, $6
	ld hl, $ce38
	call Function8a5a3
	ret

; known jump sources: 8a35a (22:635a), 8a3b7 (22:63b7)
Function8a4fc: ; 8a4fc (22:64fc)
	ld a, [MenuSelection] ; $cf74
	cp $3
	jr nz, asm_8a529
	ld hl, $d012
	ld a, [hli]
	ld b, a
	ld a, [hld]
	add b
	ld [hl], a
	ld b, a
	ld c, $80
	call Function89cdf
	call Function8a515
	ret

; known jump sources: 8a511 (22:6511)
Function8a515: ; 8a515 (22:6515)
	ld hl, $d012
	ld a, [hl]
	cp $38
	jr c, .asm_8a520
	cp $3c
	ret c
.asm_8a520
	ld a, [$d013]
	cpl
	inc a
	ld [$d013], a
	ret

; known jump sources: 8a501 (22:6501)
asm_8a529: ; 8a529 (22:6529)
	ld hl, $d012
	ld a, $3c
	ld [hli], a
	ld a, $ff
	ld [hli], a
	ld hl, Sprites ; $c400
	xor a
	ld bc, $20
	call ByteFill
	ret

; known jump sources: 89ef9 (22:5ef9), 8a27a (22:627a), 8a32f (22:632f)
Function8a53d: ; 8a53d (22:653d)
	push hl
	ld a, $15
	ld c, $8
	ld de, $14
	call Function8a573
	ld a, $1d
	ld c, $9
	call Function8a57c
	inc a
	ld [hl], a
	call Function8a584
	pop hl
	add hl, de
	ld a, $1f
	ld c, $8
	call Function8a573
	dec hl
	ld a, $51
	ld [hli], a
	ld a, $26
	ld c, $1
	call Function8a57c
	ld a, $52
	ld c, $3
	call Function8a573
	ld a, $27
	ld c, $6

; known jump sources: 8a545 (22:6545), 8a55a (22:655a), 8a56c (22:656c), 8a579 (22:6579)
Function8a573: ; 8a573 (22:6573)
	ld [hl], a
	call Function8a584
	inc a
	dec c
	jr nz, Function8a573
	ret

; known jump sources: 8a54c (22:654c), 8a565 (22:6565), 8a581 (22:6581)
Function8a57c: ; 8a57c (22:657c)
	ld [hl], a
	call Function8a584
	dec c
	jr nz, Function8a57c
	ret

; known jump sources: 8a551 (22:6551), 8a574 (22:6574), 8a57d (22:657d)
Function8a584: ; 8a584 (22:6584)
	push af
	ld a, $4
	call Function89215
	inc hl
	pop af
	ret

; known jump sources: 89e7e (22:5e7e), 89ec5 (22:5ec5), 8a061 (22:6061), 8a087 (22:6087), 8a280 (22:6280), 8a335 (22:6335)
Function8a58d: ; 8a58d (22:658d)
	ld a, $2d
	ld bc, $606
	ld de, $14
.asm_8a595
	push bc
	push hl
.asm_8a597
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_8a597
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_8a595
	ret

; known jump sources: 89e86 (22:5e86), 89e8e (22:5e8e), 89ecd (22:5ecd), 89ed5 (22:5ed5), 89fd6 (22:5fd6), 89fde (22:5fde), 8a06c (22:606c), 8a075 (22:6075), 8a08f (22:608f), 8a098 (22:6098), 8a288 (22:6288), 8a290 (22:6290), 8a4df (22:64df), 8a4e7 (22:64e7), 8a4f0 (22:64f0), 8a4f8 (22:64f8)
Function8a5a3: ; 8a5a3 (22:65a3)
	ld bc, $603
	ld de, $14
.asm_8a5a9
	push bc
	push hl
.asm_8a5ab
	ld [hli], a
	dec c
	jr nz, .asm_8a5ab
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_8a5a9
	ret

; known jump sources: 893e8 (22:53e8), 89fce (22:5fce)
Function8a5b6: ; 8a5b6 (22:65b6)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $65e5
	ld de, $d020
	ld bc, $18
	call CopyBytes
	ld hl, $65fd
	ld de, MartPointer ; $d040 (aliases: Unkn2Pals)
	ld bc, $8
	call CopyBytes
	ld hl, $6605
	ld de, $d048
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; 8a5e5 (22:65e5)

INCBIN "baserom.gbc",$8a5e5,$8a60d - $8a5e5

Function8a60d: ; 8a60d
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $6624
	ld de, Unkn2Pals
	ld bc, $0008
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 8a624

INCBIN "baserom.gbc",$8a624,$8a62c - $8a624

; no known jump sources
Function8a62c: ; 8a62c (22:662c)
	call Function1d6e
	call Function891fe
	xor a
	call Function8b94a
	call Function8b677
.asm_8a639
	xor a
	ld [$d033], a
	ld [$d032], a
	ld [$d0e3], a
	call Function8b7bd
	ld a, c
	and a
	jr z, .asm_8a66a
	ld [MenuSelection], a ; $cf74
	ld b, a
	ld a, [$cf77]
	inc a
	ld [$d034], a
	push bc
	call Function8b960
	ld a, c
	pop bc
	jr z, .asm_8a639
	ld c, a
	ld hl, $6671
	ld a, b
	ld [MenuSelection], a ; $cf74
	ld a, c
	dec a
	rst $28
	jr .asm_8a639
.asm_8a66a
	call Function891fe
	call Function89b28
	ret

; no known jump sources
Jumptable_8a671: ; 8a671 (22:6671)
	dw Function8a679
	dw Function8a6cd
	dw Function8a8c3
	dw Function8a930


; known jump sources: 8a6a9 (22:66a9), 8a6b0 (22:66b0)
Function8a679: ; 8a679 (22:6679)
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	call Function8931b
	call Function89844
	call CloseSRAM
	call Function89160
	call Function8939a
	call Function89856
	ld hl, $c5a5
	call Function899fe
	call Function891ab
	call CloseSRAM
.asm_8a6a3
	call Function89a57
	jr c, .asm_8a6a3
	and a
	jr z, Function8a679
	ld hl, $66bc
	dec a
	rst $28
	jr c, Function8a679
	call Function891fe
	call Function8b677
	call Function89448
	ret

; no known jump sources
Jumptable_8a6bc: ; 8a6bc (22:66bc)
	dw Function8a6c0
	dw Function8a6c5


; no known jump sources
Function8a6c0: ; 8a6c0 (22:66c0)
	call PlayClickSFX
	and a
	ret

; no known jump sources
Function8a6c5: ; 8a6c5 (22:66c5)
	call PlayClickSFX
	call Function89d0d
	scf
	ret

; no known jump sources
Function8a6cd: ; 8a6cd (22:66cd)
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	call Function8931b
	call Function89844
	call Function8a757
	call CloseSRAM
.asm_8a6e5
	call Function89160
	call Function8931b
	call Function89856
	call Function89a2e
	call Function891ab
	xor a
	ld [$d02f], a
	call CloseSRAM
.asm_8a6fb
	call Function89b97
	call Function89c67
	jr c, .asm_8a718
	ld a, b
	and a
	jr z, .asm_8a6fb
	call PlayClickSFX
	call Function89448
	ld a, [$d011]
	ld hl, $674f
	rst $28
	jr nc, .asm_8a6e5
	jr .asm_8a742
.asm_8a718
	call Function89160
	call Function8a765
	call CloseSRAM
	jr nc, .asm_8a73f
	call Function8923c
	call Function89448
	call Function89a23
	ld hl, $c5a5
	ld de, $5135
	call PlaceString
	call WaitBGMap
	ld a, $2
	call Function89254
	jr c, .asm_8a6e5
.asm_8a73f
	call CloseSRAM
.asm_8a742
	call WhiteBGMap
	call Function89448
	call Function891d3
	call Function8b677
	ret

; no known jump sources
Jumptable_8a74f: ; 8a74f (22:674f)
	dw Function8a78c
	dw Function8a7cb
	dw Function8a818
	dw Function8a8a1


; known jump sources: 8a6df (22:66df)
Function8a757: ; 8a757 (22:6757)
	call Function8939a
	xor a
	ld [$d010], a
	ld [$d011], a
	ld [$d012], a
	ret

; known jump sources: 8a71b (22:671b), 8a82e (22:682e), 8a8a4 (22:68a4)
Function8a765: ; 8a765 (22:6765)
	call Function8931b
	push bc
	ld hl, $0
	add hl, bc
	ld de, DefaultFlypoint ; $d002
	ld c, $6
	call Function89185
	pop bc
	jr nz, .asm_8a78a
	push bc
	ld hl, $11
	add hl, bc
	ld de, $d008
	ld c, $8
	call Function89185
	pop bc
	jr nz, .asm_8a78a
	and a
	ret
.asm_8a78a
	scf
	ret

; no known jump sources
Function8a78c: ; 8a78c (22:678c)
	call Function891fe
	ld de, DefaultFlypoint ; $d002
	ld b, $5
	callba Function116c1
	call Function89160
	call Function8931b
	push bc
	ld hl, $0
	add hl, bc
	ld d, h
	ld e, l
	ld hl, DefaultFlypoint ; $d002
	call InitName
	call CloseSRAM
	call DelayFrame
	call Functiona57
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	pop bc
	call Function89844
	call CloseSRAM
	and a
	ret

; no known jump sources
Function8a7cb: ; 8a7cb (22:67cb)
	ld a, [MenuSelection] ; $cf74
	push af
	call Function891de
	ld de, $d008
	ld c, $0
	callba Function17a68f
	jr c, .asm_8a7f4
	ld hl, $d008
	ld a, $ff
	ld bc, $8
	call ByteFill
	ld h, d
	ld l, e
	ld de, $d008
	ld c, $8
	call Function89193
.asm_8a7f4
	pop af
	ld [MenuSelection], a ; $cf74
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	call Function8931b
	call Function89844
	call Function89856
	call Function89a2e
	call Function891ab
	call CloseSRAM
	and a
	ret

; no known jump sources
Function8a818: ; 8a818 (22:6818)
	call Function89a23
	ld hl, DefaultFlypoint ; $d002
	call Function89331
	jr c, .asm_8a875
	ld hl, $d008
	call Function89b45
	jr nc, .asm_8a87a
	call Function89160
	call Function8a765
	jr nc, .asm_8a863
	call Function8931b
	push bc
	ld hl, $0
	add hl, bc
	ld d, h
	ld e, l
	ld hl, DefaultFlypoint ; $d002
	ld c, $6
	call Function89193
	pop bc
	ld hl, $11
	add hl, bc
	ld d, h
	ld e, l
	ld hl, $d008
	ld c, $8
	call Function89193
	ld hl, $c5a5
	ld de, $6868
	call PlaceString
	call WaitBGMap
	call Functiona36
.asm_8a863
	call CloseSRAM
	scf
	ret
; 8a868 (22:6868)

INCBIN "baserom.gbc",$8a868,$8a875 - $8a868
.asm_8a875
	ld de, $688b
	jr .asm_8a87d
.asm_8a87a
	ld de, $511c
.asm_8a87d
	ld hl, $c5a5
	call PlaceString
	call WaitBGMap
	call Functiona36
	and a
	ret
; 8a88b (22:688b)

INCBIN "baserom.gbc",$8a88b,$8a8a1 - $8a88b

; no known jump sources
Function8a8a1: ; 8a8a1 (22:68a1)
	call Function89160
	call Function8a765
	call CloseSRAM
	jr nc, .asm_8a8bf
	call Function89a23
	ld hl, $c5a5
	ld de, $5135
	call PlaceString
	ld a, $2
	call Function89254
	jr c, .asm_8a8c1
.asm_8a8bf
	scf
	ret
.asm_8a8c1
	and a
	ret

; no known jump sources
Function8a8c3: ; 8a8c3 (22:68c3)
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	call Function8931b
	call Function89844
	call Function8939a
	call Function89856
	call CloseSRAM
	call Function891ab
	ld hl, $c5a5
	ld de, $6919
	call PlaceString
	ld a, $2
	call Function89254
	jr c, .asm_8a90f
	call Function89160
	call Function892b4
	call CloseSRAM
	call Function89a23
	call Function8923c
	ld hl, $c5a5
	ld de, $6926
	call PlaceString
	call WaitBGMap
	call Functiona36
.asm_8a90f
	call Function89448
	call Function891fe
	call Function8b677
	ret
; 8a919 (22:6919)

INCBIN "baserom.gbc",$8a919,$8a930 - $8a919

; no known jump sources
Function8a930: ; 8a930 (22:6930)
	ld a, [MenuSelection] ; $cf74
	push af
	xor a
	ld [$d032], a
	ld a, $1
	ld [$d033], a
	ld a, [$d034]
	ld [$d0e3], a
.asm_8a943
	call Function8b7bd
	ld a, [$cf73]
	and $1
	jr nz, .asm_8a953
	ld a, c
	and a
	jr nz, .asm_8a943
	pop af
	ret
.asm_8a953
	call Function89160
	pop af
	cp c
	jr z, .asm_8a995
	push bc
	ld [MenuSelection], a ; $cf74
	call Function8931b
	push bc
	ld h, b
	ld l, c
	ld de, DefaultFlypoint ; $d002
	ld bc, $25
	call CopyBytes
	pop de
	pop bc
	ld a, c
	ld [MenuSelection], a ; $cf74
	call Function8931b
	push bc
	ld h, b
	ld l, c
	ld bc, $25
	call CopyBytes
	pop de
	ld hl, DefaultFlypoint ; $d002
	ld bc, $25
	call CopyBytes
	ld de, $20
	call WaitPlaySFX
	ld de, $20
	call WaitPlaySFX
.asm_8a995
	call CloseSRAM
	ret

; no known jump sources
Function8a999: ; 8a999 (22:6999)
	ld hl, $69c9
	call LoadMenuDataHeader
	ld c, $1
.asm_8a9a1
	call Function8a9ce
	jr c, .asm_8a9bb
	push bc
	push de
	call Function1d6e
	pop de
	dec e
	ld a, e
	ld hl, $69c5
	rst $28
	call Function891fe
	call Function89b28
	pop bc
	jr .asm_8a9a1
.asm_8a9bb
	call Function89209
	call Function1c17
	call Function8920f
	ret

; no known jump sources
Jumptable_8a9c5: ; 8a9c5 (22:69c5)
	dw Function8aa0a
	dw Function8ab3b

; 8a9c9 (22:69c9)

INCBIN "baserom.gbc",$8a9c9,$8a9ce - $8a9c9

; known jump sources: 8a9a1 (22:69a1)
Function8a9ce: ; 8a9ce (22:69ce)
	push bc
	ld de, $c4fb
	ld b, $6
	ld c, $6
	call Function89b3b
	pop bc
	ld a, c
	ld hl, $69f2
	call Function89d5e
	ld hl, $6a09
	call Function89d85
	jr c, .asm_8a9ed
	ld c, a
	ld e, a
	and a
	ret
.asm_8a9ed
	ld c, a
	ld e, $0
	scf
	ret
; 8a9f2 (22:69f2)

INCBIN "baserom.gbc",$8a9f2,$8aa0a - $8a9f2

; no known jump sources
Function8aa0a: ; 8aa0a (22:6a0a)
	ld a, $1
	ld [$d02f], a
	ld [$d011], a
	xor a
	ld [$d010], a
	ld [$d012], a
	call Function89160
	ld hl, $a603
	ld de, $d008
	call Function89381
	call CloseSRAM
	call Function891fe
	call WhiteBGMap
	call Function893cc
	call Function89807
	call Function89492
	call Function894ca
.asm_8aa3a
	call Function8987f
	call Function89a2e
	call Function891ab
.asm_8aa43
	call Function89b97
	call Function89c67
	jr c, .asm_8aa61
	ld a, b
	and a
	jr z, .asm_8aa43
	call PlayClickSFX
	call Function89448
	ld a, [$d011]
	dec a
	ld hl, $6a6d
	rst $28
	jr nc, .asm_8aa3a
	jr .asm_8aa69
.asm_8aa61
	call Function89448
	call Function8ab11
	jr nc, .asm_8aa3a
.asm_8aa69
	call Function89448
	ret

; no known jump sources
Jumptable_8aa6d: ; 8aa6d (22:6a6d)
	dw Function8aa73
	dw Function8aab6
	dw Function8ab11


; no known jump sources
Function8aa73: ; 8aa73 (22:6a73)
	ld a, [MenuSelection] ; $cf74
	ld e, a
	push de
	call Function891de
	ld de, $d008
	ld c, $0
	callba Function17a68f
	jr c, .asm_8aa9d
	ld hl, $d008
	ld a, $ff
	ld bc, $8
	call ByteFill
	ld h, d
	ld l, e
	ld de, $d008
	ld c, $8
	call Function89193
.asm_8aa9d
	call Function891fe
	call WhiteBGMap
	call Function893cc
	call Function89807
	call Function89492
	call Function894ca
	pop de
	ld a, e
	ld [MenuSelection], a ; $cf74
	and a
	ret

; no known jump sources
Function8aab6: ; 8aab6 (22:6ab6)
	call Function89a23
	ld hl, $d008
	call Function89b45
	jr nc, .asm_8ab00
	call Function89160
	ld de, $d008
	ld hl, $a603
	ld c, $8
	call Function89185
	jr z, .asm_8aaeb
	ld hl, $d008
	ld de, $a603
	ld c, $8
	call Function89193
	ld hl, $c5a5
	ld de, $6af0
	call PlaceString
	call WaitBGMap
	call Functiona36
.asm_8aaeb
	call CloseSRAM
	scf
	ret
; 8aaf0 (22:6af0)

INCBIN "baserom.gbc",$8aaf0,$8ab00 - $8aaf0
.asm_8ab00
	ld de, $511c
	ld hl, $c5a5
	call PlaceString
	call WaitBGMap
	call Function89235
	and a
	ret

; known jump sources: 8aa64 (22:6a64)
Function8ab11: ; 8ab11 (22:6b11)
	call Function89160
	ld hl, $a603
	ld de, $d008
	ld c, $8
	call Function89185
	call CloseSRAM
	jr z, .asm_8ab37
	call Function89a23
	ld hl, $c5a5
	ld de, $5135
	call PlaceString
	ld a, $2
	call Function89254
	jr c, .asm_8ab39
.asm_8ab37
	scf
	ret
.asm_8ab39
	and a
	ret

; known jump sources: 8ab74 (22:6b74)
Function8ab3b: ; 8ab3b (22:6b3b)
	call Function891fe
	call WhiteBGMap
	call Function893cc
	call Function89807
	call Function89492
	call Function894ca
	call Function89160
	ld hl, $a603
	ld de, $d008
	call Function89381
	call CloseSRAM
	call Function8987f
	call Function89160
	ld hl, $c5a5
	ld bc, $a007
	call Function89a0c
	call CloseSRAM
	call Function891ab
	call Function8ab77
	jr c, Function8ab3b
	ret

; known jump sources: 8ab71 (22:6b71), 8ab84 (22:6b84)
Function8ab77: ; 8ab77 (22:6b77)
	call Function354b
	bit 0, c
	jr nz, .asm_8ab8e
	bit 1, c
	jr nz, .asm_8ab8e
	bit 3, c
	jr z, Function8ab77
	call PlayClickSFX
	call Function89d0d
	scf
	ret
.asm_8ab8e
	call PlayClickSFX
	and a
	ret

; no known jump sources
Function8ab93: ; 8ab93 (22:6b93)
	call WhiteBGMap
	call Function1d6e
	callba Function105688
	call ClearSprites
	call Function891fe
	call Function89b28
	ret
; 8aba9 (22:6ba9)

INCBIN "baserom.gbc",$8aba9,$8ac4e - $8aba9

Function8ac4e: ; 8ac4e
	xor a
	ld [MenuSelection], a
	push de
	call Function891de
	call WhiteBGMap
	call Function893cc
	pop bc
	call Function89844
	call Function8939a
	call Function89856
	ld hl, $c5a5
	call Function899fe
	call Function891ab
	ret
; 8ac70

Function8ac70: ; 8ac70
	push de
	ld a, $3
	call Function8b94a

Function8ac76: ; 8ac76
	call Function891fe
	call Function8b677

Function8ac7c: ; 8ac7c
	call Function8b7bd
	jr z, .asm_8acf0
	ld a, c
	ld [$d02f], a
	ld [MenuSelection], a
	call Function89160
	call Function8931b
	call Function8932d
	call CloseSRAM
	jr nc, .asm_8acb0
	call Function89160
	ld hl, $0011
	add hl, bc
	call Function89b45
	call CloseSRAM
	jr nc, .asm_8accc
	call Function89160
	call Function892b7
	call CloseSRAM
	jr .asm_8accc

.asm_8acb0
	call Function8ad0b
	jr c, Function8ac76
	and a
	jr nz, .asm_8accc
	call Function89160
	ld h, b
	ld l, c
	ld d, $0
	ld e, $6
	add hl, de
	ld d, h
	ld e, l
	pop hl
	ld c, $1f
	call Function89193
	jr .asm_8ace4

.asm_8accc
	pop hl
	call Function89160
	ld d, b
	ld e, c
	ld c, $6
	call Function89193
	ld a, $6
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	ld c, $1f
	call Function89193

.asm_8ace4
	call CloseSRAM
	call Functione51
	ld a, [$d02f]
	ld c, a
	and a
	ret

.asm_8acf0
	ld hl, $6d06
	call PrintText
	ld a, $2
	call Function89259
	jp c, Function8ac7c
	call Functione51
	pop de
	ld c, $0
	scf
	ret
; 8ad06

INCBIN "baserom.gbc",$8ad06,$8ad0b - $8ad06

Function8ad0b: ; 8ad0b
.asm_8ad0b
	ld a, [MenuSelection]
	ld [$d02f], a
	call Function891de
	call WhiteBGMap
	call Function893cc
	call Function89160
	call Function8931b
	push bc
	call Function89844
	call Function8939a
	call Function89856
	ld hl, $c5a5
	call Function899fe
	call CloseSRAM
	call Function891ab
	pop bc
.asm_8ad37
	push bc
	call Function89a57
	pop bc
	jr c, .asm_8ad37
	and a
	jr z, .asm_8ad0b
	cp $2
	jr z, .asm_8ad37
	call Function8923c
	push bc
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	ld de, $6d89
	ld hl, $c5b9
	call PlaceString
	ld a, $2
	call Function8925e
	jr c, .asm_8ad87
	call Function8923c
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	ld de, $6d9c
	ld hl, $c5b9
	call PlaceString
	ld a, $1
	call Function8925e
	jr c, .asm_8ad84
	ld a, $0
	jr .asm_8ad86

.asm_8ad84
	ld a, $1

.asm_8ad86
	and a

.asm_8ad87
	pop bc
	ret
; 8ad89

INCBIN "baserom.gbc",$8ad89,$8addb - $8ad89

SpecialHoOhChamber: ; 0x8addb
	ld hl, PartySpecies
	ld a, [hl]
	cp HO_OH ; is Ho-oh the first Pokémon in the party?
	jr nz, .done ; if not, we're done
	call GetSecondaryMapHeaderPointer
	ld de, $0326
	ld b, SET_FLAG
	call EventFlagAction
.done
	ret
; 0x8adef

Function8adef: ; 8adef
	call GetSecondaryMapHeaderPointer
	ld de, $0328
	ld b, CHECK_FLAG
	call EventFlagAction
	ld a, c
	and a
	jr nz, .asm_8ae2f

	ld a, WATER_STONE
	ld [CurItem], a
	ld hl, NumItems
	call CheckItem
	jr c, .asm_8ae24

	ld a, [PartyCount]
	ld b, a
	inc b
.asm_8ae10
	dec b
	jr z, .asm_8ae2f
	ld a, b
	dec a
	ld [CurPartyMon], a
	push bc
	ld a, $1
	call GetPartyParamLocation
	pop bc
	ld a, [hl]
	cp $18
	jr nz, .asm_8ae10

.asm_8ae24
	call GetSecondaryMapHeaderPointer
	ld de, $0328
	ld b, SET_FLAG
	call EventFlagAction

.asm_8ae2f
	ret
; 8ae30

Function8ae30: ; 8ae30
	push de
	push bc

	call GetSecondaryMapHeaderPointer
	ld a, h
	cp RuinsofAlphAerodactylChamber_SecondMapHeader >> 8
	jr nz, .asm_8ae4a
	ld a, l
	cp RuinsofAlphAerodactylChamber_SecondMapHeader & $ff
	jr nz, .asm_8ae4a

	ld de, $0329
	ld b, SET_FLAG
	call EventFlagAction

	scf
	jr .done

.asm_8ae4a
	and a

.done
	pop bc
	pop de
	ret
; 8ae4e

Function8ae4e: ; 8ae4e
	push hl
	push de

	call GetSecondaryMapHeaderPointer
	ld a, h
	cp RuinsofAlphKabutoChamber_SecondMapHeader >> 8
	jr nz, .done
	ld a, l
	cp RuinsofAlphKabutoChamber_SecondMapHeader & $ff
	jr nz, .done

	ld de, $0327
	ld b, SET_FLAG
	call EventFlagAction

.done
	pop de
	pop hl
	ret
; 8ae68

Function8ae68: ; 8ae68
	ld a, [ScriptVar]
	ld hl, $6ed5
	and a
	jr z, .asm_8ae79
	ld d, $0
	ld e, $5
.asm_8ae75
	add hl, de
	dec a
	jr nz, .asm_8ae75

.asm_8ae79
	call LoadMenuDataHeader
	xor a
	ld [hBGMapMode], a
	call Function1cbb
	call Function1ad2
	call Function321c
	call Function1cfd
	inc hl
	ld d, $0
	ld e, $14
	add hl, de
	add hl, de
	ld a, [ScriptVar]
	ld c, a
	ld de, $6ebc
	and a
	jr z, .asm_8aea5
.asm_8ae9c
	ld a, [de]
	inc de
	cp $ff
	jr nz, .asm_8ae9c
	dec c
	jr nz, .asm_8ae9c

.asm_8aea5
	call Function8af09
	ld bc, $0939
	add hl, bc
	call Function8aee9
	call Function3200
	call Functiona36
	call PlayClickSFX
	call Function1c17
	ret
; 8aebc

INCBIN "baserom.gbc",$8aebc,$8aee9 - $8aebc

Function8aee9: ; 8aee9
.asm_8aee9
	ld a, [de]
	cp $ff
	ret z
	cp $60
	ld a, $d
	jr c, .asm_8aef5
	ld a, $5

.asm_8aef5
	call Function8aefd
	inc hl
	inc hl
	inc de
	jr .asm_8aee9
; 8aefd

Function8aefd: ; 8aefd
	push hl
	ld [hli], a
	ld [hld], a
	ld b, $0
	ld c, $14
	add hl, bc
	ld [hli], a
	ld [hl], a
	pop hl
	ret
; 8af09

Function8af09: ; 8af09
	push hl
	push de
.asm_8af0b
	ld a, [de]
	cp $ff
	jr z, .asm_8af19
	ld c, a
	call Function8af1c
	inc hl
	inc hl
	inc de
	jr .asm_8af0b

.asm_8af19
	pop de
	pop hl
	ret
; 8af1c

Function8af1c: ; 8af1c
	push hl
	ld a, c
	cp $60
	jr z, .asm_8af3b
	cp $62
	jr z, .asm_8af4b
	cp $64
	jr z, .asm_8af5b
	ld [hli], a
	inc a
	ld [hld], a
	dec a
	ld b, $0
	ld c, $14
	add hl, bc
	ld c, $10
	add c
	ld [hli], a
	inc a
	ld [hl], a
	pop hl
	ret

.asm_8af3b
	ld [hl], $5b
	inc hl
	ld [hl], $5c
	ld bc, $0013
	add hl, bc
	ld [hl], $4d
	inc hl
	ld [hl], $5d
	pop hl
	ret

.asm_8af4b
	ld [hl], $4e
	inc hl
	ld [hl], $4f
	ld bc, $0013
	add hl, bc
	ld [hl], $5e
	inc hl
	ld [hl], $5f
	pop hl
	ret

.asm_8af5b
	ld [hl], $2
	inc hl
	ld [hl], $3
	ld bc, $0013
	add hl, bc
	ld [hl], $3
	inc hl
	ld [hl], $2
	pop hl
	ret
; 8af6b

Function8af6b: ; 8af6b
	xor a
	ld [$cf76], a
	ld hl, $6fa9
	call Function1d3c
	ld a, [$dc4a]
	ld c, a
	callba Functionb8f8f
	ld a, [$cf83]
	add c
	add $2
	ld [$cf85], a
	call Function1c00
	call Function1e5d
	callba Function4ae5e
	ld b, $0
	ld a, [MenuSelection]
	ld c, a
	ld a, [$dc4a]
	and $3
	cp c
	jr nz, .asm_8afa4
	ld b, $1

.asm_8afa4
	ld a, b
	ld [ScriptVar], a
	ret
; 8afa9

INCBIN "baserom.gbc",$8afa9,$8afd4 - $8afa9

Function8afd4: ; 8afd4
	xor a
	ld [$d0e4], a
	ld a, $1
	ld [MenuSelection], a
	call Function8b0d6
	call Function8b090
	ld hl, $7072
	call PrintText
	jr .asm_8aff1

.asm_8afeb
	ld hl, $7072
	call Function105a

.asm_8aff1
	call DelayFrame
	call Function1ad2
	call Function8b097
	call Function8b0e2
	jr z, .asm_8b05f
	ld [$cf75], a
	call Function8b154
	ld a, [hl]
	ld [$d265], a
	call GetItemName
	ld hl, $7077
	call Function105a
	call Function1dcf
	jr c, .asm_8afeb
	ld a, [$cf75]
	call Function8b154
	inc hl
	ld a, [hld]
	ld c, a
	ld a, [$dc4b]
	cp c
	jr c, .asm_8b047
	ld a, [hli]
	push hl
	ld [CurItem], a
	ld a, $1
	ld [$d10c], a
	ld hl, NumItems
	call ReceiveItem
	pop hl
	jr nc, .asm_8b04c
	ld a, [hl]
	ld c, a
	ld a, [$dc4b]
	sub c
	ld [$dc4b], a
	call Function8b097
	jr .asm_8b051

.asm_8b047
	ld hl, $7081
	jr .asm_8b05a

.asm_8b04c
	ld hl, $7086
	jr .asm_8b05a

.asm_8b051
	ld de, $0022
	call PlaySFX
	ld hl, $707c

.asm_8b05a
	call Function105a
	jr .asm_8afeb

.asm_8b05f
	call Function1c17
	call Function1c17
	ld hl, $708b
	call PrintText
	call Functiona36
	call PlayClickSFX
	ret
; 8b072

INCBIN "baserom.gbc",$8b072,$8b090 - $8b072

Function8b090: ; 8b090
	ld hl, $70d1
	call LoadMenuDataHeader
	ret
; 8b097

Function8b097: ; 8b097
	ld de, $dc4b
	call Function8b09e
	ret
; 8b09e

Function8b09e: ; 8b09e
	push de
	xor a
	ld [hBGMapMode], a
	ld hl, $70d1
	call Function1d3c
	call Function1cbb
	call Function1ad2
	call Function1cfd
	ld bc, $0015
	add hl, bc
	ld de, $70ca
	call PlaceString
	ld h, b
	ld l, c
	inc hl
	ld a, $7f
	ld [hli], a
	ld [hld], a
	pop de
	ld bc, $0102
	call PrintNum
	ret
; 8b0ca

INCBIN "baserom.gbc",$8b0ca,$8b0d6 - $8b0ca

Function8b0d6: ; 8b0d6
	ld hl, $70dd
	call LoadMenuDataHeader
	ret
; 8b0dd

INCBIN "baserom.gbc",$8b0dd,$8b0e2 - $8b0dd

Function8b0e2: ; 8b0e2
	ld hl, $7113
	call Function1d3c
	ld a, [MenuSelection]
	ld [$cf88], a
	xor a
	ld [$cf76], a
	ld [hBGMapMode], a
	call Function352f
	call Function1ad2
	call Function350c
	ld a, [MenuSelection]
	ld c, a
	ld a, [$cfa9]
	ld [MenuSelection], a
	ld a, [$cf73]
	cp $2
	jr z, .asm_8b111
	ld a, c
	and a
	ret nz

.asm_8b111
	xor a
	ret
; 8b113

INCBIN "baserom.gbc",$8b113,$8b154 - $8b113

Function8b154: ; 8b154
	dec a
	ld hl, $715e
	ld b, $0
	ld c, a
	add hl, bc
	add hl, bc
	ret
; 8b15e

INCBIN "baserom.gbc",$8b15e,$8b170 - $8b15e

INCLUDE "event/dratini.asm"

Function8b1e1: ; 8b1e1
	ld de, $71ed
	call Function8b25b
	ret z
	call Function8b231
	scf
	ret
; 8b1ed

INCBIN "baserom.gbc",$8b1ed,$8b201 - $8b1ed

Function8b201: ; 8b201
	ld hl, StringBuffer2
	ld [hl], $f9
	inc hl
	ld [hl], $50
	ld de, $7215
	call Function8b25b
	ret z
	call Function8b231
	scf
	ret
; 8b215

INCBIN "baserom.gbc",$8b215,$8b231 - $8b215

Function8b231: ; 8b231
	ld hl, $7238
	call PrintText
	ret
; 8b238

INCBIN "baserom.gbc",$8b238,$8b25b - $8b238

Function8b25b: ; 8b25b
	ld bc, $0000
.asm_8b25e
	call Function8b26c
	call c, Function8b28e
	call Function8b276
	jr nz, .asm_8b25e
	ld a, b
	and a
	ret
; 8b26c

Function8b26c: ; 8b26c
	push de
	push bc
	call Function8b27a
	ld a, c
	rst JumpTable
	pop bc
	pop de
	ret
; 8b276

Function8b276: ; 8b276
	inc c
	ld a, [de]
	cp c
	ret
; 8b27a

Function8b27a: ; 8b27a
	inc de
	ld a, [de]
	ld l, a
	inc de
	ld a, [de]
	ld h, a
	ret
; 8b281

Function8b281: ; 8b281
	inc de
	inc de
	inc de
	ld a, [de]
	ld l, a
	inc de
	ld a, [de]
	ld h, a
	ret
; 8b28a

Function8b28a: ; 8b28a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 8b28e

Function8b28e: ; 8b28e
	push de
	push bc
	ld a, b
	and a
	call z, Function8b29d
	pop bc
	call Function8b2a9
	ld b, $1
	pop de
	ret
; 8b29d

Function8b29d: ; 8b29d
	push de
	call Function8b281
	call Function8b28a
	call PrintText
	pop de
	ret
; 8b2a9

Function8b2a9: ; 8b2a9
	push bc
	call Function8b281
	inc hl
	inc hl
	ld b, $0
	add hl, bc
	add hl, bc
	call Function8b28a
	call PrintText
	pop bc
	ret
; 8b2bb

INCBIN "baserom.gbc",$8b2bb,$8b342 - $8b2bb


Function8b342: ; 8b342
	call GetSecondaryMapHeaderPointer
	ld d, h
	ld e, l
	xor a
.asm_8b348
	push af
	ld hl, Table8b354
	rst JumpTable
	pop af
	inc a
	cp $3
	jr nz, .asm_8b348
	ret
; 8b354

Table8b354: ; 8b354
	dw Function8b35a
	dw Function8b35b
	dw Function8b35c
; 8b35a

Function8b35a: ; 8b35a
	ret
; 8b35b


Function8b35b: ; 8b35b
	ret
; 8b35c

Function8b35c: ; 8b35c
	ret
; 8b35d

INCBIN "baserom.gbc",$8b35d,$8b36c - $8b35d

; known jump sources: 89e24 (22:5e24), 8a29a (22:629a), 8b3c2 (22:73c2), 8b45c (22:745c), 8b53c (22:753c), 8b5ea (22:75ea), 8b630 (22:7630)
Function8b36c: ; 8b36c (22:736c)
	push bc
	ld h, b
	ld l, c
	ld bc, $4
	ld a, $ff
	call ByteFill
	pop bc
	ret

; known jump sources: 8b429 (22:7429), 8b443 (22:7443)
Function8b379: ; 8b379 (22:7379)
	push bc
	ld a, c
	add e
	ld c, a
	ld a, $0
	adc b
	ld b, a
	ld a, [bc]
	ld d, a
	pop bc
	ret

; known jump sources: 8b3ff (22:73ff), 8b417 (22:7417), 8b420 (22:7420), 8b43b (22:743b), 8b454 (22:7454), 8b46b (22:746b)
Function8b385: ; 8b385 (22:7385)
	push bc
	ld a, c
	add e
	ld c, a
	ld a, $0
	adc b
	ld b, a
	ld a, d
	ld [bc], a
	pop bc
	ret

; known jump sources: 8b3bd (22:73bd), 8b466 (22:7466)
Function8b391: ; 8b391 (22:7391)
	push bc
	ld e, $0
	ld d, $4
.asm_8b396
	ld a, [bc]
	inc bc
	cp $ff
	jr z, .asm_8b3a2
	inc e
	dec d
	jr nz, .asm_8b396
	dec e
	scf
.asm_8b3a2
	pop bc
	ret

; known jump sources: 8b590 (22:7590), 8b61f (22:761f)
Function8b3a4: ; 8b3a4 (22:73a4)
	push de
	push bc
	ld d, b
	ld e, c
	ld c, $4
	call Function89185
	pop bc
	pop de
	ret

; known jump sources: 89e0d (22:5e0d)
Function8b3b0: ; 8b3b0 (22:73b0)
	ld bc, $a037
	ld a, [$a60b]
	and a
	jr z, .asm_8b3c2
	cp $3
	jr nc, .asm_8b3c2
	call Function8b391
	jr c, .asm_8b3c9
.asm_8b3c2
	call Function8b36c
	xor a
	ld [$a60b], a
.asm_8b3c9
	ld a, [$a60b]
	ret

; known jump sources: 8b4b4 (22:74b4), 8b4c8 (22:74c8)
Function8b3cd: ; 8b3cd (22:73cd)
	push de
	push bc
	ld e, $4
.asm_8b3d1
	ld a, [bc]
	inc bc
	call Function8998b
	inc hl
	dec e
	jr nz, .asm_8b3d1
	pop bc
	pop de
	ret

; known jump sources: 8b489 (22:7489)
Function8b3dd: ; 8b3dd (22:73dd)
	push de
	push bc
	call Function354b
	ld a, c
	pop bc
	pop de
	bit 0, a
	jr nz, .asm_8b3f7
	bit 1, a
	jr nz, .asm_8b40e
	bit 6, a
	jr nz, .asm_8b429
	bit 7, a
	jr nz, .asm_8b443
	and a
	ret
.asm_8b3f7
	ld a, e
	cp $3
	jr z, .asm_8b407
	inc e
	ld d, $0
	call Function8b385
	xor a
	ld [$d010], a
	ret
.asm_8b407
	call PlayClickSFX
	ld d, $0
	scf
	ret
.asm_8b40e
	ld a, e
	and a
	jr nz, .asm_8b41e
	call PlayClickSFX
	ld d, $ff
	call Function8b385
	ld d, $1
	scf
	ret
.asm_8b41e
	ld d, $ff
	call Function8b385
	dec e
	xor a
	ld [$d010], a
	ret
.asm_8b429
	call Function8b379
	ld a, d
	cp $a
	jr c, .asm_8b433
	ld d, $9
.asm_8b433
	inc d
	ld a, d
	cp $a
	jr c, .asm_8b43b
	ld d, $0
.asm_8b43b
	call Function8b385
	xor a
	ld [$d010], a
	ret
.asm_8b443
	call Function8b379
	ld a, d
	cp $a
	jr c, .asm_8b44d
	ld d, $0
.asm_8b44d
	ld a, d
	dec d
	and a
	jr nz, .asm_8b454
	ld d, $9
.asm_8b454
	call Function8b385
	xor a
	ld [$d010], a
	ret

; known jump sources: 8b55e (22:755e), 8b585 (22:7585), 8b60b (22:760b)
Function8b45c: ; 8b45c (22:745c)
	call Function8b36c
	xor a
	ld [$d010], a
	ld [$d012], a
	call Function8b391
	ld d, $0
	call Function8b385
.asm_8b46e
	call Function8923c
	call Function8b493
	call Function8b4cc
	call Function8b518
	call Function89b78
	push bc
	call Function8b4fd
	call Function89c44
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	pop bc
	call Function8b3dd
	jr nc, .asm_8b46e
	ld a, d
	and a
	ret z
	scf
	ret

; known jump sources: 8a29d (22:629d), 8b471 (22:7471), 8b546 (22:7546), 8b569 (22:7569), 8b59b (22:759b), 8b5be (22:75be), 8b5f4 (22:75f4), 8b616 (22:7616)
Function8b493: ; 8b493 (22:7493)
	push bc
	call Function8923c
	call Function8b521
	ld hl, $74a0
	pop bc
	rst $28
	ret

; no known jump sources
Jumptable_8b4a0: ; 8b4a0 (22:74a0)
	dw Function8b4a4
	dw Function8b4b8


; no known jump sources
Function8b4a4: ; 8b4a4 (22:74a4)
	push bc
	push de
	call Function8b4d8
	call TextBox
	pop de
	pop bc
	call Function8b4cc
	call Function8b518
	call Function8b3cd
	ret

; no known jump sources
Function8b4b8: ; 8b4b8 (22:74b8)
	push bc
	push de
	call Function8b4ea
	call Function89b3b
	pop de
	pop bc
	call Function8b4cc
	call Function8b518
	call Function8b3cd
	ret

; known jump sources: 8b474 (22:7474), 8b4ae (22:74ae), 8b4c2 (22:74c2)
Function8b4cc: ; 8b4cc (22:74cc)
	push bc
	ld hl, $7529
	call Function8b50a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop bc
	ret

; known jump sources: 8b4a6 (22:74a6)
Function8b4d8: ; 8b4d8 (22:74d8)
	ld hl, $7529
	call Function8b50a
	push hl
	inc hl
	inc hl
	ld a, [hli]
	ld b, a
	ld a, [hl]
	ld c, a
	pop hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

; known jump sources: 8b4ba (22:74ba)
Function8b4ea: ; 8b4ea (22:74ea)
	ld hl, $7529
	call Function8b50a
	push hl
	inc hl
	inc hl
	ld a, [hli]
	ld b, a
	ld a, [hl]
	ld c, a
	pop hl
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	ret

; known jump sources: 8b47e (22:747e), 8b549 (22:7549), 8b5fa (22:75fa)
Function8b4fd: ; 8b4fd (22:74fd)
	ld hl, $752d
	call Function8b50a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld d, a
	ret

; known jump sources: 8b4d0 (22:74d0), 8b4db (22:74db), 8b4ed (22:74ed), 8b500 (22:7500), 8b524 (22:7524)
Function8b50a: ; 8b50a (22:750a)
	ld a, [$d02e]
	and a
	ret z
	ld b, $0
	ld c, $8
.asm_8b513
	add hl, bc
	dec a
	jr nz, .asm_8b513
	ret

; known jump sources: 8b477 (22:7477), 8b4b1 (22:74b1), 8b4c5 (22:74c5)
Function8b518: ; 8b518 (22:7518)
	push de
	ld d, $0
	ld e, $14
	add hl, de
	inc hl
	pop de
	ret

; known jump sources: 8b497 (22:7497)
Function8b521: ; 8b521 (22:7521)
	ld hl, $7530
	call Function8b50a
	ld a, [hl]
	ret
; 8b529 (22:7529)

INCBIN "baserom.gbc",$8b529,$8b539 - $8b529

; known jump sources: 8a0e6 (22:60e6)
Function8b539: ; 8b539 (22:7539)
	ld bc, $d017
	call Function8b36c
	xor a
	ld [$d012], a
	ld [$d02e], a
	call Function8b493
	call Function8b4fd
	ld e, $0
	call Function89c44
	call Function3238
	ret

; known jump sources: 8a0f5 (22:60f5), 8b57a (22:757a), 8b588 (22:7588)
Function8b555: ; 8b555 (22:7555)
	ld hl, $75ce
	call PrintText
	ld bc, $d017
	call Function8b45c
	jr c, .asm_8b5c8
	call Function89448
	ld bc, $d017
	call Function8b493
	ld bc, $d017
	call Function8b664
	jr nz, .asm_8b57c
	ld hl, $75e2
	call PrintText
	jr Function8b555
.asm_8b57c
	ld hl, $75d3
	call PrintText
	ld bc, $d013
	call Function8b45c
	jr c, Function8b555
	ld bc, $d017
	ld hl, $d013
	call Function8b3a4
	jr z, .asm_8b5a6
	call Function89448
	ld bc, $d013
	call Function8b493
	ld hl, $75d8
	call PrintText
	jr .asm_8b57c
.asm_8b5a6
	call Function89160
	ld hl, $d013
	ld de, $a037
	ld bc, $4
	call CopyBytes
	call CloseSRAM
	call Function89448
	ld bc, $d013
	call Function8b493
	ld hl, $75dd
	call PrintText
	and a
.asm_8b5c8
	push af
	call Function89448
	pop af
	ret
; 8b5ce (22:75ce)

INCBIN "baserom.gbc",$8b5ce,$8b5e7 - $8b5ce

; known jump sources: 8a2a6 (22:62a6)
Function8b5e7: ; 8b5e7 (22:75e7)
	ld bc, $d013
	call Function8b36c
	xor a
	ld [$d012], a
	ld [$d02e], a
	call Function8b493
	call Function891ab
	call Function8b4fd
	ld e, $0
	call Function89c44
.asm_8b602
	ld hl, $7642
	call PrintText
	ld bc, $d013
	call Function8b45c
	jr c, .asm_8b63c
	call Function89448
	ld bc, $d013
	call Function8b493
	call Function89160
	ld hl, $a037
	call Function8b3a4
	call CloseSRAM
	jr z, .asm_8b635
	ld hl, $7647
	call PrintText
	ld bc, $d013
	call Function8b36c
	jr .asm_8b602
.asm_8b635
	ld hl, $764c
	call PrintText
	and a
.asm_8b63c
	push af
	call Function89448
	pop af
	ret
; 8b642 (22:7642)

INCBIN "baserom.gbc",$8b642,$8b664 - $8b642

; known jump sources: 8b56f (22:756f)
Function8b664: ; 8b664 (22:7664)
	push bc
	ld de, $4
.asm_8b668
	ld a, [bc]
	cp $0
	jr nz, .asm_8b66e
	inc d
.asm_8b66e
	inc bc
	dec e
	jr nz, .asm_8b668
	pop bc
	ld a, d
	cp $4
	ret

Function8b677: ; 8b677
	call WhiteBGMap
	call DisableLCD
	call Function8b690
	call Function8b6bb
	call Function8b6ed
	call EnableLCD
	call Function891ab
	call Function32f9
	ret
; 8b690

Function8b690: ; 8b690
	ld hl, $74b9
	ld de, VTiles2
	ld bc, $0160
	ld a, $5e
	call FarCopyBytes
	ld hl, $7609
	ld de, $9610
	ld bc, $0010
	ld a, $5e
	call FarCopyBytes
	ld hl, $7619
	ld de, $8ee0
	ld bc, $0010
	ld a, $5e
	call FarCopyBytes
	ret
; 8b6bb

Function8b6bb: ; 8b6bb
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $76d5
	ld de, Unkn1Pals
	ld bc, $0018
	call CopyBytes
	pop af
	ld [rSVBK], a
	call Function8949c
	ret
; 8b6d5

INCBIN "baserom.gbc",$8b6d5,$8b6ed - $8b6d5

Function8b6ed: ; 8b6ed
	ld hl, AttrMap
	ld bc, $012c
	xor a
	call ByteFill
	ld hl, $cef1
	ld bc, $0050
	ld a, $7
	call ByteFill
	ret
; 8b703

Function8b703: ; 8b703
	call Function8923c
	push hl
	ld a, $c
	ld [hli], a
	inc a
	call Function8b73e
	inc a
	ld [hl], a
	pop hl
	push hl
	push bc
	ld de, $0014
	add hl, de
.asm_8b717
	push hl
	ld a, $f
	ld [hli], a
	ld a, $7f
	call Function8b73e
	ld a, $11
	ld [hl], a
	pop hl
	ld de, $0014
	add hl, de
	dec b
	jr nz, .asm_8b717
	call Function8b732
	pop bc
	pop hl
	jr Function8b744
; 8b732

Function8b732: ; 8b732
	ld a, $12
	ld [hli], a
	ld a, $13
	call Function8b73e
	ld a, $14
	ld [hl], a
	ret
; 8b73e

Function8b73e: ; 8b73e
	ld d, c
.asm_8b73f
	ld [hli], a
	dec d
	jr nz, .asm_8b73f
	ret
; 8b744

Function8b744: ; 8b744
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	xor a
.asm_8b74d
	push bc
	push hl
.asm_8b74f
	ld [hli], a
	dec c
	jr nz, .asm_8b74f
	pop hl
	ld de, $0014
	add hl, de
	pop bc
	dec b
	jr nz, .asm_8b74d
	ret
; 8b75d

Function8b75d: ; 8b75d
	call Function8923c
	ld hl, TileMap
	ld a, $1
	ld bc, $0014
	call ByteFill
	ld hl, $c4b4
	ld a, $2
	ld [hl], a
	ld hl, $c4bd
	ld c, $b
	call Function8b788
	ld hl, $c4b5
	ld a, $4
	ld e, $8
.asm_8b780
	ld [hli], a
	inc a
	dec e
	jr nz, .asm_8b780
	jr Function8b79e
; 8b787

Function8b787: ; 8b787
	ret
; 8b788

Function8b788: ; 8b788
.asm_8b788
	ld a, $2
	ld [hli], a
	dec c
	ret z
	ld a, $1
	ld [hli], a
	dec c
	ret z
	ld a, $3
	ld [hli], a
	dec c
	ret z
	ld a, $1
	ld [hli], a
	dec c
	jr nz, .asm_8b788
	ret
; 8b79e

Function8b79e: ; 8b79e
	ld hl, $cded
	ld a, $1
	ld [hli], a
	ld hl, $cdf6
	ld e, $b
.asm_8b7a9
	ld a, $2
	ld [hli], a
	dec e
	ret z
	xor a
	ld [hli], a
	dec e
	ret z
	ld a, $1
	ld [hli], a
	dec e
	ret z
	xor a
	ld [hli], a
	dec e
	jr nz, .asm_8b7a9
	ret
; 8b7bd

Function8b7bd: ; 8b7bd
	call Function8b855
	ld hl, $7867
	call Function1d3c
	ld a, [$d030]
	ld [$cf88], a
	ld a, [$d031]
	ld [$d0e4], a
	ld a, [$d032]
	and a
	jr z, .asm_8b7e0
	ld a, [$cf81]
	set 3, a
	ld [$cf81], a

.asm_8b7e0
	ld a, [$d0e3]
	and a
	jr z, .asm_8b7ea
	dec a
	ld [$cf77], a

.asm_8b7ea
	ld hl, $c4c8
	ld b, $b
	ld c, $12
	call Function8b703
	call Function8b75d
	call Function1ad2
	call Function89209
	call Function350c
	call Function8920f
	ld a, [$cf73]
	cp $2
	jr z, .asm_8b823
	cp $20
	jr nz, .asm_8b813
	call Function8b832
	jr .asm_8b7ea

.asm_8b813
	cp $10
	jr nz, .asm_8b81c
	call Function8b83e
	jr .asm_8b7ea

.asm_8b81c
	ld a, [MenuSelection]
	cp $ff
	jr nz, .asm_8b824

.asm_8b823
	xor a

.asm_8b824
	ld c, a
	ld a, [$cfa9]
	ld [$d030], a
	ld a, [$d0e4]
	ld [$d031], a
	ret
; 8b832

Function8b832: ; 8b832
	ld a, [$d0e4]
	ld hl, $cf92
	sub [hl]
	jr nc, Function8b84b
	xor a
	jr Function8b84b
; 8b83e

Function8b83e: ; 8b83e
	ld a, [$d0e4]
	ld hl, $cf92
	add [hl]
	cp $24
	jr c, Function8b84b
	ld a, $24

Function8b84b: ; 8b84b
	ld [$d0e4], a
	ld a, [$cfa9]
	ld [$cf88], a
	ret
; 8b855

Function8b855: ; 8b855
	ld a, $28
	ld hl, DefaultFlypoint
	ld [hli], a
	ld c, $28
	xor a
.asm_8b85e
	inc a
	ld [hli], a
	dec c
	jr nz, .asm_8b85e
	ld a, $ff
	ld [hl], a
	ret
; 8b867

INCBIN "baserom.gbc",$8b867,$8b94a - $8b867

Function8b94a: ; 8b94a
	ld [$d033], a
	xor a
	ld [$d0e4], a
	ld [$d032], a
	ld [$d0e3], a
	ld [$d031], a
	ld a, $1
	ld [$d030], a
	ret
; 8b960


; known jump sources: 8a656 (22:6656)
Function8b960: ; 8b960 (22:7960)
	ld hl, $79ac
	call LoadMenuDataHeader
	call Function8b9e9
	jr c, .asm_8b97a
	ld hl, $c4ab
	ld b, $6
	ld c, $7
	call Function8b703
	ld hl, $79b1
	jr .asm_8b987
.asm_8b97a
	ld hl, $c4ab
	ld b, $a
	ld c, $7
	call Function8b703
	ld hl, $79ca
.asm_8b987
	ld a, $1
	call Function89d5e
	ld hl, $79ab
	call Function89d85
	call Function1c07
	jr c, .asm_8b99c
	call Function8b99f
	jr nz, .asm_8b99d
.asm_8b99c
	xor a
.asm_8b99d
	ld c, a
	ret

; known jump sources: 8b997 (22:7997)
Function8b99f: ; 8b99f (22:799f)
	ld hl, DefaultFlypoint ; $d002
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	cp $ff
	ret
; 8b9ab (22:79ab)

INCBIN "baserom.gbc",$8b9ab,$8b9e9 - $8b9ab

; known jump sources: 8b966 (22:7966)
Function8b9e9: ; 8b9e9 (22:79e9)
	call Function89160
	call Function8931b
	call Function8932d
	jr nc, .asm_8b9f6
	jr .asm_8b9ff
.asm_8b9f6
	ld hl, $11
	add hl, bc
	call Function89b45
	jr c, .asm_8ba08
.asm_8b9ff
	call Function892b4
	and a
	ld de, $7a1c
	jr .asm_8ba0c
.asm_8ba08
	ld de, $7a1f
	scf
.asm_8ba0c
	push af
	ld hl, DefaultFlypoint ; $d002
.asm_8ba10
	ld a, [de]
	inc de
	ld [hli], a
	cp $ff
	jr nz, .asm_8ba10
	call CloseSRAM
	pop af
	ret
; 8ba1c (22:7a1c)

INCBIN "baserom.gbc",$8ba1c,$8ba24 - $8ba1c


SECTION "bank23", ROMX, BANK[$23]

Function8c000: ; 8c000
	ret
; 8c001


Function8c001: ; 8c001
	call UpdateTime
	ld a, [TimeOfDay]
	ld [CurTimeOfDay], a
	call GetTimePalette
	ld [TimeOfDayPal], a
	ret
; 8c011


_TimeOfDayPals: ; 8c011
; return carry if pals are changed

; forced pals?
	ld hl, $d846
	bit 7, [hl]
	jr nz, .dontchange
	
; do we need to bother updating?
	ld a, [TimeOfDay]
	ld hl, CurTimeOfDay
	cp [hl]
	jr z, .dontchange
	
; if so, the time of day has changed
	ld a, [TimeOfDay]
	ld [CurTimeOfDay], a
	
; get palette id
	call GetTimePalette
	
; same palette as before?
	ld hl, TimeOfDayPal
	cp [hl]
	jr z, .dontchange
	
; update palette id
	ld [TimeOfDayPal], a
	
	
; save bg palette 8
	ld hl, $d038 ; Unkn1Pals + 7 pals
	
; save wram bank
	ld a, [rSVBK]
	ld b, a
; wram bank 5
	ld a, 5
	ld [rSVBK], a
	
; push palette
	ld c, 4 ; NUM_PAL_COLORS
.push
	ld d, [hl]
	inc hl
	ld e, [hl]
	inc hl
	push de
	dec c
	jr nz, .push
	
; restore wram bank
	ld a, b
	ld [rSVBK], a
	
	
; update sgb pals
	ld b, $9
	call GetSGBLayout
	
	
; restore bg palette 8
	ld hl, $d03f ; last byte in Unkn1Pals
	
; save wram bank
	ld a, [rSVBK]
	ld d, a
; wram bank 5
	ld a, 5
	ld [rSVBK], a
	
; pop palette
	ld e, 4 ; NUM_PAL_COLORS
.pop
	pop bc
	ld [hl], c
	dec hl
	ld [hl], b
	dec hl
	dec e
	jr nz, .pop
	
; restore wram bank
	ld a, d
	ld [rSVBK], a
	
; update palettes
	call _UpdateTimePals
	call DelayFrame
	
; successful change
	scf
	ret
	
.dontchange
; no change occurred
	and a
	ret
; 8c070


_UpdateTimePals: ; 8c070
	ld c, $9 ; normal
	call GetTimePalFade
	call DmgToCgbTimePals
	ret
; 8c079

Function8c079: ; 8c079
	ld c, $12
	call GetTimePalFade
	ld b, $4
	call Function8c16d
	ret
; 8c084

Function8c084: ; 8c084
	call Function8c0c1
	ld c, $9
	call GetTimePalFade
	ld b, $4
	call Function8c15e
	ret
; 8c092

Function8c092: ; 8c092
	call Function8c0c1
	ld c, $9
	call GetTimePalFade
	ld b, $4
.asm_8c09c
	call DmgToCgbTimePals
	inc hl
	inc hl
	inc hl
	ld c, $7
	call DelayFrames
	dec b
	jr nz, .asm_8c09c
	ret
; 8c0ab

Function8c0ab: ; 8c0ab
	ld c, $0
	call GetTimePalFade
	ld b, $4
	call Function8c15e
	ret
; 8c0b6

Function8c0b6: ; 8c0b6
	ld c, $9
	call GetTimePalFade
	ld b, $4
	call Function8c16d
	ret
; 8c0c1


Function8c0c1: ; 8c0c1
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $d000
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld hl, $d008
	ld c, $6
.asm_8c0d4
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	inc hl
	inc hl
	inc hl
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_8c0d4
	pop af
	ld [rSVBK], a
	ret
; 8c0e5

Function8c0e5: ; 8c0e5
	ld hl, $410f
	ld a, [$c2d0]
	cp $4
	jr z, .asm_8c0fc
	and $7
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	ld a, [hl]
	ld [$d847], a
	ret
.asm_8c0fc
	ld a, [StatusFlags] ; $d84c
	bit 2, a
	jr nz, .asm_8c109
	ld a, $ff
	ld [$d847], a
	ret
.asm_8c109
	ld a, $aa
	ld [$d847], a
	ret
; 8c10f (23:410f)

INCBIN "baserom.gbc",$8c10f,$8c117 - $8c10f

GetTimePalette: ; 8c117
; get time of day
	ld a, [TimeOfDay]
	ld e, a
	ld d, $0
; get fn ptr
	ld hl, .TimePalettes
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
; go
	jp [hl]
; 8c126

.TimePalettes
	dw .MorningPalette
	dw .DayPalette
	dw .NitePalette
	dw .DarknessPalette

.MorningPalette ; 8c12e
	ld a, [$d847]
	and %00000011 ; 0
	ret
; 8c134

.DayPalette ; 8c134
	ld a, [$d847]
	and %00001100 ; 1
	srl a
	srl a
	ret
; 8c13e

.NitePalette ; 8c13e
	ld a, [$d847]
	and %00110000 ; 2
	swap a
	ret
; 8c146

.DarknessPalette ; 8c146
	ld a, [$d847]
	and %11000000 ; 3
	rlca
	rlca
	ret
; 8c14e


DmgToCgbTimePals: ; 8c14e
	push hl
	push de
	ld a, [hli]
	call DmgToCgbBGPals
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	call DmgToCgbObjPals
	pop de
	pop hl
	ret
; 8c15e

Function8c15e: ; 8c15e
.asm_8c15e
	call DmgToCgbTimePals
	inc hl
	inc hl
	inc hl
	ld c, $2
	call DelayFrames
	dec b
	jr nz, .asm_8c15e
	ret
; 8c16d

Function8c16d: ; 8c16d
.asm_8c16d
	call DmgToCgbTimePals
	dec hl
	dec hl
	dec hl
	ld c, $2
	call DelayFrames
	dec b
	jr nz, .asm_8c16d
	ret
; 8c17c


GetTimePalFade: ; 8c17c
; check cgb
	ld a, [hCGB]
	and a
	jr nz, .cgb
	
; else: dmg

; index
	ld a, [TimeOfDayPal]
	and %11
	
; get fade table
	push bc
	ld c, a
	ld b, $0
	ld hl, .dmgfades
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop bc
	
; get place in fade table
	ld b, $0
	add hl, bc
	ret
	
.cgb
	ld hl, .cgbfade
	ld b, $0
	add hl, bc
	ret
; 8c19e

.dmgfades ; 8c19e
	dw .morn
	dw .day
	dw .nite
	dw .darkness
; 8c1a6

.morn ; 8c1a6
	db %11111111
	db %11111111
	db %11111111
	
	db %11111110
	db %11111110
	db %11111110
	
	db %11111001
	db %11100100
	db %11100100
	
	db %11100100
	db %11010000
	db %11010000
	
	db %10010000
	db %10000000
	db %10000000
	
	db %01000000
	db %01000000
	db %01000000
	
	db %00000000
	db %00000000
	db %00000000
; 8c1bb

.day ; 8c1bb
	db %11111111
	db %11111111
	db %11111111
	
	db %11111110
	db %11111110
	db %11111110
	
	db %11111001
	db %11100100
	db %11100100
	
	db %11100100
	db %11010000
	db %11010000
	
	db %10010000
	db %10000000
	db %10000000
	
	db %01000000
	db %01000000
	db %01000000
	
	db %00000000
	db %00000000
	db %00000000
; 8c1d0

.nite ; 8c1d0
	db %11111111
	db %11111111
	db %11111111
	
	db %11111110
	db %11111110
	db %11111110
	
	db %11111001
	db %11100100
	db %11100100
	
	db %11101001
	db %11010000
	db %11010000
	
	db %10010000
	db %10000000
	db %10000000
	
	db %01000000
	db %01000000
	db %01000000
	
	db %00000000
	db %00000000
	db %00000000
; 8c1e5

.darkness ; 8c1e5
	db %11111111
	db %11111111
	db %11111111
	
	db %11111110
	db %11111110
	db %11111111
	
	db %11111110
	db %11100100
	db %11111111
	
	db %11111101
	db %11010000
	db %11111111
	
	db %11111101
	db %10000000
	db %11111111
	
	db %00000000
	db %01000000
	db %00000000
	
	db %00000000
	db %00000000
	db %00000000
; 8c1fa

.cgbfade ; 8c1fa
	db %11111111
	db %11111111
	db %11111111
	
	db %11111110
	db %11111110
	db %11111110
	
	db %11111001
	db %11111001
	db %11111001
	
	db %11100100
	db %11100100
	db %11100100
	
	db %10010000
	db %10010000
	db %10010000
	
	db %01000000
	db %01000000
	db %01000000
	
	db %00000000
	db %00000000
	db %00000000
; 8c20f


Function8c20f: ; 8c20f
	call Function8c26d
	ld a, [rBGP]
	ld [$cfc7], a
	ld a, [rOBP0]
	ld [$cfc8], a
	ld a, [rOBP1]
	ld [$cfc9], a
	call DelayFrame
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $1
.asm_8c22b
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_8c23a
	call Function8c314
	call DelayFrame
	jr .asm_8c22b

.asm_8c23a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, Unkn1Pals
	ld bc, $0040
	xor a
	call ByteFill
	pop af
	ld [rSVBK], a
	ld a, $ff
	ld [$cfc7], a
	call DmgToCgbBGPals
	call DelayFrame
	xor a
	ld [hLCDStatCustom], a
	ld [$ffc7], a
	ld [$ffc8], a
	ld [hSCY], a
	ld a, $1
	ld [rSVBK], a
	pop af
	ld [$ff9e], a
	call DelayFrame
	ret
; 8c26d

Function8c26d: ; 8c26d
	ld a, [InLinkBattle]
	cp $4
	jr z, .asm_8c288
	callba Function6454
	call Function1ad2
	call DelayFrame
	call Function8c2a0
	call Function8cf4f
	jr .asm_8c28b

.asm_8c288
	call Function8c2aa

.asm_8c28b
	ld a, $90
	ld [hWY], a
	call DelayFrame
	xor a
	ld [hBGMapMode], a
	ld hl, $cf63
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	call Function8c6d8
	ret
; 8c2a0

Function8c2a0: ; 8c2a0
	call Function8c2aa
	ld hl, VBGMap0
	call Function8c2cf
	ret
; 8c2aa

Function8c2aa: ; 8c2aa
	ld de, $42f4
	ld hl, $8fe0
	ld b, $23
	ld c, $2
	call Request2bpp
	ld a, [rVBK]
	push af
	ld a, $1
	ld [rVBK], a
	ld de, $42f4
	ld hl, $8fe0
	ld b, $23
	ld c, $2
	call Request2bpp
	pop af
	ld [rVBK], a
	ret
; 8c2cf

Function8c2cf: ; 8c2cf
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	push hl
	ld hl, Unkn1Pals
	ld bc, $0280
.asm_8c2dd
	ld [hl], $ff
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_8c2dd
	pop hl
	ld de, Unkn1Pals
	ld b, $23
	ld c, $28
	call Request2bpp
	pop af
	ld [rSVBK], a
	ret
; 8c2f4

INCBIN "baserom.gbc",$8c2f4,$8c314 - $8c2f4

Function8c314: ; 8c314
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4323
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 8c323


; no known jump sources
Jumptable_8c323: ; 8c323 (23:4323)
	dw Function8c365
	dw Function8c5dc
	dw Function8c3a1
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c39c
	dw Function8c3e8
	dw Function8c408
	dw Function8c5dc
	dw Function8c3a1
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c39c
	dw Function8c768
	dw Function8c5dc
	dw Function8c3a1
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c39c
	dw Function8c43d
	dw Function8c44f
	dw Function8c5dc
	dw Function8c3a1
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c3ab
	dw Function8c39c
	dw Function8c578
	dw Function8c58f
	dw Function8c393


; no known jump sources
Function8c365: ; 8c365 (23:4365)
	ld de, $0
	ld a, [BattleMonLevel] ; $c639
	add $3
	ld hl, EnemyMonLevel ; $d213
	cp [hl]
	jr nc, .asm_8c375
	set 0, e
.asm_8c375
	ld a, [$d19a]
	cp $4
	jr z, .asm_8c386
	cp $5
	jr z, .asm_8c386
	cp $7
	jr z, .asm_8c386
	set 1, e
.asm_8c386
	ld hl, $438f
	add hl, de
	ld a, [hl]
	ld [$cf63], a
	ret
; 8c38f (23:438f)

INCBIN "baserom.gbc",$8c38f,$8c393 - $8c38f

; no known jump sources
Function8c393: ; 8c393 (23:4393)
	call ClearSprites
	ld a, $80
	ld [$cf63], a
	ret

; known jump sources: 8c3a1 (23:43a1), 8c3af (23:43af), 8c3f2 (23:43f2), 8c447 (23:4447), 8c582 (23:4582), 8c673 (23:4673)
Function8c39c: ; 8c39c (23:439c)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function8c3a1: ; 8c3a1 (23:43a1)
	call Function8c39c
	xor a
	ld [$cf64], a
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; no known jump sources
Function8c3ab: ; 8c3ab (23:43ab)
	call Function8c3b3
	ret nc
	call Function8c39c
	ret

; known jump sources: 8c3ab (23:43ab)
Function8c3b3: ; 8c3b3 (23:43b3)
	ld a, [$d847]
	cp $ff
	jr z, .asm_8c3d5
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	srl a
	ld e, a
	ld d, $0
	ld hl, $43db
	add hl, de
	ld a, [hl]
	cp $1
	jr z, .asm_8c3d5
	ld [$cfc7], a
	call DmgToCgbBGPals
	and a
	ret
.asm_8c3d5
	xor a
	ld [$cf64], a
	scf
	ret
; 8c3db (23:43db)

INCBIN "baserom.gbc",$8c3db,$8c3e8 - $8c3db

; no known jump sources
Function8c3e8: ; 8c3e8 (23:43e8)
	callba Function5602
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function8c39c
	ld a, $43
	ld [hLCDStatCustom], a ; $ff00+$c6
	xor a
	ld [$FF00+$c7], a
	ld a, $90
	ld [$FF00+$c8], a
	xor a
	ld [$cf64], a
	ld [$cf65], a
	ret

; no known jump sources
Function8c408: ; 8c408 (23:4408)
	ld a, [$cf64]
	cp $60
	jr nc, .asm_8c413
	call Function8c419
	ret
.asm_8c413
	ld a, $20
	ld [$cf63], a
	ret

; known jump sources: 8c40f (23:440f)
Function8c419: ; 8c419 (23:4419)
	ld hl, $cf65
	ld a, [hl]
	inc [hl]
	ld hl, $cf64
	ld d, [hl]
	add [hl]
	ld [hl], a
	ld a, $90
	ld bc, CurMartEnd ; $d100 (aliases: LYOverrides)
	ld e, $0
.asm_8c42b
	push af
	push de
	ld a, e
	call Function8c6f7
	ld [bc], a
	inc bc
	pop de
	ld a, e
	add $2
	ld e, a
	pop af
	dec a
	jr nz, .asm_8c42b
	ret

; no known jump sources
Function8c43d: ; 8c43d (23:443d)
	callba Function5602
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function8c39c
	xor a
	ld [$cf64], a
	ret

; no known jump sources
Function8c44f: ; 8c44f (23:444f)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [$cf64]
	ld e, a
	ld d, $0
	ld hl, $4490
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	cp $ff
	jr z, .asm_8c47a
	ld [$cf65], a
	call Function8c4f5
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	ld hl, $cf64
	inc [hl]
	ret
.asm_8c47a
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	call DelayFrame
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $20
	ld [$cf63], a
	ret
; 8c490 (23:4490)

INCBIN "baserom.gbc",$8c490,$8c4f5 - $8c490

; known jump sources: 8c468 (23:4468)
Function8c4f5: ; 8c4f5 (23:44f5)
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
.asm_8c4fc
	push hl
	ld a, [de]
	ld c, a
	inc de
.asm_8c500
	ld [hl], $ff
	ld a, [$cf65]
	bit 0, a
	jr z, .asm_8c50c
	inc hl
	jr .asm_8c50d
.asm_8c50c
	dec hl
.asm_8c50d
	dec c
	jr nz, .asm_8c500
	pop hl
	ld a, [$cf65]
	bit 1, a
	ld bc, $14
	jr z, .asm_8c51e
	ld bc, $ffec
.asm_8c51e
	add hl, bc
	ld a, [de]
	inc de
	cp $ff
	ret z
	and a
	jr z, .asm_8c4fc
	ld c, a
.asm_8c528
	ld a, [$cf65]
	bit 0, a
	jr z, .asm_8c532
	dec hl
	jr .asm_8c533
.asm_8c532
	inc hl
.asm_8c533
	dec c
	jr nz, .asm_8c528
	jr .asm_8c4fc
; 8c538 (23:4538)

INCBIN "baserom.gbc",$8c538,$8c578 - $8c538

; no known jump sources
Function8c578: ; 8c578 (23:4578)
	callba Function5602
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function8c39c
	ld a, $10
	ld [$cf64], a
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; no known jump sources
Function8c58f: ; 8c58f (23:458f)
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_8c5a2
	dec [hl]
	ld c, $c
.asm_8c599
	push bc
	call Function8c5b8
	pop bc
	dec c
	jr nz, .asm_8c599
	ret
.asm_8c5a2
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	call DelayFrame
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $20
	ld [$cf63], a
	ret

; known jump sources: 8c59a (23:459a), 8c5bd (23:45bd), 8c5d7 (23:45d7)
Function8c5b8: ; 8c5b8 (23:45b8)
	call Random
	cp $12
	jr nc, Function8c5b8
	ld b, a
.asm_8c5c0
	call Random
	cp $14
	jr nc, .asm_8c5c0
	ld c, a
	ld hl, $c48c
	ld de, $14
	inc b
.asm_8c5cf
	add hl, de
	dec b
	jr nz, .asm_8c5cf
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, Function8c5b8
	ld [hl], $ff
	ret

; no known jump sources
Function8c5dc: ; 8c5dc (23:45dc)
	ld a, [OtherTrainerClass] ; $d22f
	and a
	jp z, Function8c673
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	inc b
	inc c
	jr .asm_8c5f4
.asm_8c5f0
	ld a, [hl]
	or $7
	ld [hli], a
.asm_8c5f4
	dec c
	jr nz, .asm_8c5f0
	dec b
	jr nz, .asm_8c5f0
	call Function8c6b1
	ld hl, $c4b6
	ld b, $10
.asm_8c602
	push hl
	ld c, $2
.asm_8c605
	push hl
	ld a, [de]
	inc de
.asm_8c608
	and a
	jr z, .asm_8c614
	sla a
	jr nc, .asm_8c611
	ld [hl], $fe
.asm_8c611
	inc hl
	jr .asm_8c608
.asm_8c614
	pop hl
	push bc
	ld bc, $8
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_8c605
	pop hl
	push bc
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_8c602
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr nz, .asm_8c639
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	jr Function8c673
.asm_8c639
	ld hl, $46a1
	ld a, [TimeOfDayPal] ; $d841
	and $3
	cp $3
	jr nz, .asm_8c648
	ld hl, $46a9
.asm_8c648
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function8c677
	push hl
	ld de, $d038
	ld bc, $8
	call CopyBytes
	pop hl
	ld de, $d0b8
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	call DelayFrame
	call Function8cf4f

; known jump sources: 8c5e0 (23:45e0), 8c637 (23:4637)
Function8c673: ; 8c673 (23:4673)
	call Function8c39c
	ret

; known jump sources: 8c64f (23:464f)
Function8c677: ; 8c677 (23:4677)
	ld de, $d038
	call Function8c698
	ld de, $d0b8
	call Function8c698
	ld de, $d070
	call Function8c698
	ld de, CurMart ; $d0f0
	call Function8c698
	ld de, $d078
	call Function8c698
	ld de, $d0f8

; known jump sources: 8c67a (23:467a), 8c680 (23:4680), 8c686 (23:4686), 8c68c (23:468c), 8c692 (23:4692)
Function8c698: ; 8c698 (23:4698)
	push hl
	ld bc, $8
	call CopyBytes
	pop hl
	ret
; 8c6a1 (23:46a1)

INCBIN "baserom.gbc",$8c6a1,$8c6b1 - $8c6a1

; known jump sources: 8c5fa (23:45fa)
Function8c6b1: ; 8c6b1 (23:46b1)
	ld a, [OtherTrainerClass] ; $d22f
	ld de, $46b8
	ret
; 8c6b8 (23:46b8)

INCBIN "baserom.gbc",$8c6b8,$8c6d8 - $8c6b8

Function8c6d8: ; 8c6d8
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, LYOverrides
	call Function8c6ef
	ld hl, $d200
	call Function8c6ef
	pop af
	ld [rSVBK], a
	ret
; 8c6ef

Function8c6ef: ; 8c6ef
	xor a
	ld c, $90
.asm_8c6f2
	ld [hli], a
	dec c
	jr nz, .asm_8c6f2
	ret
; 8c6f7


; known jump sources: 8c42e (23:442e)
Function8c6f7: ; 8c6f7 (23:46f7)
	and $3f
	cp $20
	jr nc, .asm_8c702
	call Function8c70c
	ld a, h
	ret
.asm_8c702
	and $1f
	call Function8c70c
	ld a, h
	xor $ff
	inc a
	ret

; known jump sources: 8c6fd (23:46fd), 8c704 (23:4704)
Function8c70c: ; 8c70c (23:470c)
	ld e, a
	ld a, d
	ld d, $0
	ld hl, $4728
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $0
.asm_8c71b
	srl a
	jr nc, .asm_8c720
	add hl, de
.asm_8c720
	sla e
	rl d
	and a
	jr nz, .asm_8c71b
	ret
; 8c728 (23:4728)

INCBIN "baserom.gbc",$8c728,$8c768 - $8c728

; no known jump sources
Function8c768: ; 8c768 (23:4768)
	callba Function5602
	ld de, $4792
.asm_8c771
	ld a, [de]
	cp $ff
	jr z, .asm_8c78c
	inc de
	ld c, a
	ld a, [de]
	inc de
	ld b, a
	ld a, [de]
	inc de
	ld l, a
	ld a, [de]
	inc de
	ld h, a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function8c7b7
	call WaitBGMap
	jr .asm_8c771
.asm_8c78c
	ld a, $20
	ld [$cf63], a
	ret
; 8c792 (23:4792)

INCBIN "baserom.gbc",$8c792,$8c7b7 - $8c792

; known jump sources: 8c784 (23:4784)
Function8c7b7: ; 8c7b7 (23:47b7)
	ld a, $ff
.asm_8c7b9
	push bc
	push hl
.asm_8c7bb
	ld [hli], a
	dec c
	jr nz, .asm_8c7bb
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_8c7b9
	ret
; 8c7c9 (23:47c9)

INCBIN "baserom.gbc",$8c7c9,$8c7d4 - $8c7c9

Function8c7d4: ; 8c7d4
	call WaitSFX
	ld de, $0053
	call PlaySFX
	call WaitSFX
	ret
; 8c7e1

INCBIN "baserom.gbc",$8c7e1,$8c940 - $8c7e1

Function8c940: ; 8c940
	ld a, e
	and $1
	ld [$cf63], a
	call Function8c96d
	call WaitSFX
	ld de, $001e
	call PlaySFX
.asm_8c952
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_8c96c
	ld a, $90
	ld [$c3b5], a
	callab Function8cf7a
	call Function8ca0c
	call DelayFrame
	jr .asm_8c952

.asm_8c96c
	ret
; 8c96d

Function8c96d: ; 8c96d
	callab Function8cf53
	ld de, $49cc
	ld hl, VTiles1
	ld bc, $2304
	call Request2bpp
	ld de, $498c
	ld hl, $8840
	ld bc, $2304
	call Request2bpp
	ret
; 8c98c

INCBIN "baserom.gbc",$8c98c,$8ca0c - $8c98c

Function8ca0c: ; 8ca0c
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4a1b
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 8ca1b


; no known jump sources
Jumptable_8ca1b: ; 8ca1b (23:4a1b)
	dw Function8ca23
	dw Function8ca3c
	dw Function8ca5c
	dw Function8ca64


; no known jump sources
Function8ca23: ; 8ca23 (23:4a23)
	call Function8cad3
	ld a, $17
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $84
	ld a, $20
	ld [$cf64], a
	ld hl, $cf63
	inc [hl]
	inc [hl]
	ret

; no known jump sources
Function8ca3c: ; 8ca3c (23:4a3c)
	call Function8ca8e
	xor a
	call Function8ca73
	ld a, $10
	call Function8ca73
	ld a, $20
	call Function8ca73
	ld a, $30
	call Function8ca73
	ld a, $20
	ld [$cf64], a
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function8ca5c: ; 8ca5c (23:4a5c)
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $cf63
	inc [hl]

; no known jump sources
Function8ca64: ; 8ca64 (23:4a64)
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_8ca6d
	dec [hl]
	ret
.asm_8ca6d
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: 8ca40 (23:4a40), 8ca45 (23:4a45), 8ca4a (23:4a4a), 8ca4f (23:4a4f)
Function8ca73: ; 8ca73 (23:4a73)
	push de
	push af
	ld a, $16
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $80
	ld hl, $e
	add hl, bc
	ld [hl], $4
	pop af
	ld hl, $c
	add hl, bc
	ld [hl], a
	pop de
	ret

; known jump sources: 8ca3c (23:4a3c)
Function8ca8e: ; 8ca8e (23:4a8e)
	ld de, $0
	ld a, [$d197]
	bit 0, a
	jr z, .asm_8ca9a
	set 0, e
.asm_8ca9a
	ld a, [$d196]
	bit 0, a
	jr z, .asm_8caa3
	set 1, e
.asm_8caa3
	ld a, [PlayerDirection] ; $d4de
	and $c
	add e
	ld e, a
	ld hl, $4ab3
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ret
; 8cab3 (23:4ab3)

INCBIN "baserom.gbc",$8cab3,$8cad3 - $8cab3

; known jump sources: 8ca23 (23:4a23)
Function8cad3: ; 8cad3 (23:4ad3)
	ld a, [PlayerDirection] ; $d4de
	and $c
	srl a
	ld e, a
	ld d, $0
	ld hl, $4ae5
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ret
; 8cae5 (23:4ae5)

INCBIN "baserom.gbc",$8cae5,$8caed - $8cae5
	call DelayFrame
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	call Function8cb9b
	ld de, $5450
	ld a, $a
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $84
	ld hl, $2
	add hl, bc
	ld [hl], $16
	ld a, $80
	ld [$cf64], a
.asm_8cb14
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_8cb2e
	ld a, $0
	ld [$c3b5], a
	callab Function8cf7a
	call Function8cbc8
	call DelayFrame
	jr .asm_8cb14
.asm_8cb2e
	pop af
	ld [VramState], a ; $d0ed
	ret
	call DelayFrame
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	call Function8cb9b
	ld de, $fc50
	ld a, $a
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $84
	ld hl, $2
	add hl, bc
	ld [hl], $18
	ld hl, $f
	add hl, bc
	ld [hl], $58
	ld a, $40
	ld [$cf64], a
.asm_8cb60
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_8cb7a
	ld a, $0
	ld [$c3b5], a
	callab Function8cf7a
	call Function8cbc8
	call DelayFrame
	jr .asm_8cb60
.asm_8cb7a
	pop af
	ld [VramState], a ; $d0ed
	call Function8cb82
	ret

; known jump sources: 8cb7e (23:4b7e)
Function8cb82: ; 8cb82 (23:4b82)
	ld hl, $c402
	xor a
	ld c, $4
.asm_8cb88
	ld [hli], a
	inc hl
	inc hl
	inc hl
	inc a
	dec c
	jr nz, .asm_8cb88
	ld hl, $c410
	ld bc, $90
	xor a
	call ByteFill
	ret

; known jump sources: 8caf8 (23:4af8), 8cb3e (23:4b3e)
Function8cb9b: ; 8cb9b (23:4b9b)
	callab Function8cf53
	ld de, $49cc
	ld hl, $8800
	ld bc, $2304
	call Request2bpp
	ld a, [CurPartyMon] ; $d109
	ld hl, PartySpecies ; $dcd8
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	ld [$d265], a
	ld e, $84
	callba Function8e9bc
	xor a
	ld [$cf63], a
	ret

; known jump sources: 8cb26 (23:4b26), 8cb72 (23:4b72)
Function8cbc8: ; 8cbc8 (23:4bc8)
	call Function8cbe6
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_8cbe0
	dec [hl]
	cp $40
	ret c
	and $7
	ret nz
	ld de, $18
	call PlaySFX
	ret
.asm_8cbe0
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: 8cbc8 (23:4bc8)
Function8cbe6: ; 8cbe6 (23:4be6)
	ld hl, $cf65
	ld a, [hl]
	inc [hl]
	and $7
	ret nz
	ld a, [hl]
	and $18
	sla a
	add $40
	ld d, a
	ld e, $0
	ld a, $18
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $80
	ret

Function8cc04: ; 8cc04
	ld a, [ScriptVar]
	and a
	jr nz, .asm_8cc14
	ld a, $1
	ld bc, $4060
	ld de, $fca0
	jr .asm_8cc1c

.asm_8cc14
	ld a, $ff
	ld bc, $c0a0
	ld de, $b460

.asm_8cc1c
	ld h, a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, h
	ld [$d191], a
	ld a, c
	ld [$d192], a
	ld a, b
	ld [$d193], a
	ld a, e
	ld [$d194], a
	ld a, d
	ld [$d195], a
	ld a, [hSCX]
	push af
	ld a, [hSCY]
	push af
	call Function8ccc9
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], $1
.asm_8cc48
	ld a, [$cf63]
	and a
	jr z, .asm_8cc66
	bit 7, a
	jr nz, .asm_8cc6b
	callab Function8cf69
	call Function8cdf7
	call Function8cc99
	call Function3b0c
	call DelayFrame
	jr .asm_8cc48

.asm_8cc66
	call Function8ceae
	jr .asm_8cc48

.asm_8cc6b
	pop af
	ld [$ff9e], a
	call WhiteBGMap
	xor a
	ld [hLCDStatCustom], a
	ld [$ffc7], a
	ld [$ffc8], a
	ld [hSCX], a
	ld [Requested2bppSource], a
	ld [$cf69], a
	ld [Requested2bppDest], a
	ld [$cf6b], a
	ld [Requested2bpp], a
	call ClearTileMap
	pop af
	ld [hSCY], a
	pop af
	ld [hSCX], a
	xor a
	ld [hBGMapMode], a
	pop af
	ld [rSVBK], a
	ret
; 8cc99

Function8cc99: ; 8cc99
	ld hl, $d200
	ld c, $2f
	ld a, [$cf64]
	add a
	ld [hSCX], a
	call Function8ccc4
	ld c, $30
	ld a, [$cf65]
	call Function8ccc4
	ld c, $31
	ld a, [$cf64]
	add a
	call Function8ccc4
	ld a, [$d191]
	ld d, a
	ld hl, $cf64
	ld a, [hl]
	add d
	add d
	ld [hl], a
	ret
; 8ccc4

Function8ccc4: ; 8ccc4
.asm_8ccc4
	ld [hli], a
	dec c
	jr nz, .asm_8ccc4
	ret
; 8ccc9

Function8ccc9: ; 8ccc9
	call WhiteBGMap
	call ClearSprites
	call DisableLCD
	callab Function8cf53
	call Function8cdc3
	call Function8cd27
	ld a, $90
	ld [hWY], a
	call EnableLCD
	xor a
	ld [hBGMapMode], a
	ld [hSCX], a
	ld [hSCY], a
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	callba GetPlayerIcon
	pop af
	ld [rSVBK], a
	ld hl, VTiles0
	ld c, $4
	call Request2bpp
	ld hl, $00c0
	add hl, de
	ld d, h
	ld e, l
	ld hl, $8040
	ld c, $4
	call Request2bpp
	call Function8cda6
	ld hl, $cf63
	xor a
	ld [hli], a
	ld a, [$d192]
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld de, MUSIC_MAGNET_TRAIN
	call PlayMusic2
	ret
; 8cd27

Function8cd27: ; 8cd27
	ld hl, VBGMap0
	xor a
.asm_8cd2b
	call Function8cd74
	ld b, $10
	call Function8cd6c
	inc a
	cp $12
	jr c, .asm_8cd2b
	ld hl, $98c0
	ld de, $4eff
	ld c, $14
	call Function8cd65
	ld hl, $98e0
	ld de, $4f13
	ld c, $14
	call Function8cd65
	ld hl, $9900
	ld de, $4f27
	ld c, $14
	call Function8cd65
	ld hl, $9920
	ld de, $4f3b
	ld c, $14
	call Function8cd65
	ret
; 8cd65

Function8cd65: ; 8cd65
.asm_8cd65
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_8cd65
	ret
; 8cd6c

Function8cd6c: ; 8cd6c
.asm_8cd6c
	ld [hl], e
	inc hl
	ld [hl], d
	inc hl
	dec b
	jr nz, .asm_8cd6c
	ret
; 8cd74

Function8cd74: ; 8cd74
	push hl
	ld e, a
	ld d, $0
	ld hl, $4d82
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	pop hl
	ret
; 8cd82

INCBIN "baserom.gbc",$8cd82,$8cda6 - $8cd82

Function8cda6: ; 8cda6
	ld hl, LYOverrides
	ld bc, $0090
	ld a, [$d192]
	call ByteFill
	ld hl, $d200
	ld bc, $0090
	ld a, [$d192]
	call ByteFill
	ld a, $43
	ld [hLCDStatCustom], a
	ret
; 8cdc3

Function8cdc3: ; 8cdc3
	ld a, $1
	ld [rVBK], a
	ld hl, VBGMap0
	ld bc, $0080
	ld a, $2
	call ByteFill
	ld hl, $9880
	ld bc, $0140
	xor a
	call ByteFill
	ld hl, $99c0
	ld bc, $0080
	ld a, $2
	call ByteFill
	ld hl, $9907
	ld bc, $0006
	ld a, $4
	call ByteFill
	ld a, $0
	ld [rVBK], a
	ret
; 8cdf7

Function8cdf7: ; 8cdf7
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4e06
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 8ce06

INCBIN "baserom.gbc",$8ce06,$8ceae - $8ce06

Function8ceae: ; 8ceae
	callba Function8cf69
	call Function8cdf7
	call Function8cc99
	call Function3b0c
	call DelayFrame
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	ld a, [TimeOfDayPal]
	push af
	ld a, [$d19a]
	push af
	ld a, [TimeOfDay]
	and $3
	ld [TimeOfDayPal], a
	ld a, $1
	ld [$d19a], a
	ld b, $9
	call GetSGBLayout
	call UpdateTimePals
	ld a, [rBGP]
	ld [$cfc7], a
	ld a, [rOBP0]
	ld [$cfc8], a
	ld a, [rOBP1]
	ld [$cfc9], a
	pop af
	ld [$d19a], a
	pop af
	ld [TimeOfDayPal], a
	pop af
	ld [rSVBK], a
	ret
; 8ceff

INCBIN "baserom.gbc",$8ceff,$8cf4f - $8ceff

Function8cf4f: ; 8cf4f
	call Function3238
	ret
; 8cf53


Function8cf53: ; 8cf53
	ld hl, $c300
	ld bc, $00c1
.asm_8cf59
	ld [hl], $0
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_8cf59
	ret
; 8cf62

Function8cf62: ; 8cf62
	call Function8cf69
	call DelayFrame
	ret
; 8cf69



Function8cf69: ; 8cf69
	push hl
	push de
	push bc
	push af
	ld a, $0
	ld [$c3b5], a
	call Function8cf7a
	pop af
	pop bc
	pop de
	pop hl
	ret
; 8cf7a

Function8cf7a: ; 8cf7a
	ld hl, $c314
	ld e, $a
.asm_8cf7f
	ld a, [hl]
	and a
	jr z, .asm_8cf91
	ld c, l
	ld b, h
	push hl
	push de
	call Function8d24b
	call Function8d04c
	pop de
	pop hl
	jr c, .asm_8cfa7

.asm_8cf91
	ld bc, $0010
	add hl, bc
	dec e
	jr nz, .asm_8cf7f
	ld a, [$c3b5]
	ld l, a
	ld h, $c4
.asm_8cf9e
	ld a, l
	cp $a0
	jr nc, .asm_8cfa7
	xor a
	ld [hli], a
	jr .asm_8cf9e

.asm_8cfa7
	ret
; 8cfa8

Function8cfa8: ; 8cfa8 (23:4fa8)
	ld hl, $c314
	ld e, $a
.asm_8cfad
	ld a, [hl]
	and a
	jr z, .asm_8cfbf
	ld c, l
	ld b, h
	push hl
	push de
	call Function8d24b
	call Function8d04c
	pop de
	pop hl
	jr c, .asm_8cfd5
.asm_8cfbf
	ld bc, $10
	add hl, bc
	dec e
	jr nz, .asm_8cfad
	ld a, [$c3b5]
	ld l, a
	ld h, $c4
.asm_8cfcc
	ld a, l
	cp $40
	jr nc, .asm_8cfd5
	xor a
	ld [hli], a
	jr .asm_8cfcc
.asm_8cfd5
	ret

Function8cfd6: ; 8cfd6
	push de
	push af
	ld hl, $c314
	ld e, $a
.asm_8cfdd
	ld a, [hl]
	and a
	jr z, .asm_8cfec
	ld bc, $0010
	add hl, bc
	dec e
	jr nz, .asm_8cfdd
	pop af
	pop de
	scf
	ret

.asm_8cfec
	ld c, l
	ld b, h
	ld hl, $c3b4
	inc [hl]
	ld a, [hl]
	and a
	jr nz, .asm_8cff7
	inc [hl]

.asm_8cff7
	pop af
	ld e, a
	ld d, $0
	ld hl, $51c4
	add hl, de
	add hl, de
	add hl, de
	ld e, l
	ld d, h
	ld hl, $0000
	add hl, bc
	ld a, [$c3b4]
	ld [hli], a
	ld a, [de]
	ld [hli], a
	inc de
	ld a, [de]
	ld [hli], a
	inc de
	ld a, [de]
	call Function8d109
	ld [hli], a
	pop de
	ld hl, $0004
	add hl, bc
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	dec a
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld a, c
	ld [$c3b8], a
	ld a, b
	ld [$c3b9], a
	ret
; 8d036

Function8d036: ; 8d036
	ld hl, $0000
	add hl, bc
	ld [hl], $0
	ret
; 8d03d


; no known jump sources
Function8d03d: ; 8d03d (23:503d)
	ld hl, $c314
	ld bc, $10
	ld e, $a
	xor a
.asm_8d046
	ld [hl], a
	add hl, bc
	dec e
	jr nz, .asm_8d046
	ret


Function8d04c: ; 8d04c
	call Function8d0ec
	call Function8d132
	cp EGG
	jr z, .asm_8d0b9
	cp NUM_POKEMON + 1
	jr z, .asm_8d0b6
	call Function8d1a2
	ld a, [$c3ba]
	add [hl]
	ld [$c3ba], a
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	push bc
	ld a, [$c3b5]
	ld e, a
	ld d, $c4
	ld a, [hli]
	ld c, a
.asm_8d071
	ld a, [$c3bc]
	ld b, a
	ld a, [$c3be]
	add b
	ld b, a
	ld a, [$c3bf]
	add b
	ld b, a
	call Function8d0be
	add b
	ld [de], a
	inc hl
	inc de
	ld a, [$c3bb]
	ld b, a
	ld a, [$c3bd]
	add b
	ld b, a
	ld a, [$c3c0]
	add b
	ld b, a
	call Function8d0ce
	add b
	ld [de], a
	inc hl
	inc de
	ld a, [$c3ba]
	add [hl]
	ld [de], a
	inc hl
	inc de
	call Function8d0de
	ld [de], a
	inc hl
	inc de
	ld a, e
	ld [$c3b5], a
	cp $a0
	jr nc, .asm_8d0bb
	dec c
	jr nz, .asm_8d071
	pop bc
	jr .asm_8d0b9

.asm_8d0b6
	call Function8d036

.asm_8d0b9
	and a
	ret

.asm_8d0bb
	pop bc
	scf
	ret
; 8d0be

Function8d0be: ; 8d0be
	push hl
	ld a, [hl]
	ld hl, $c3b8
	bit 6, [hl]
	jr z, .asm_8d0cc
	add $8
	xor $ff
	inc a

.asm_8d0cc
	pop hl
	ret
; 8d0ce

Function8d0ce: ; 8d0ce
	push hl
	ld a, [hl]
	ld hl, $c3b8
	bit 5, [hl]
	jr z, .asm_8d0dc
	add $8
	xor $ff
	inc a

.asm_8d0dc
	pop hl
	ret
; 8d0de

Function8d0de: ; 8d0de
	ld a, [$c3b8]
	ld b, a
	ld a, [hl]
	xor b
	and $e0
	ld b, a
	ld a, [hl]
	and $1f
	or b
	ret
; 8d0ec

Function8d0ec: ; 8d0ec
	xor a
	ld [$c3b8], a
	ld hl, $0003
	add hl, bc
	ld a, [hli]
	ld [$c3ba], a
	ld a, [hli]
	ld [$c3bb], a
	ld a, [hli]
	ld [$c3bc], a
	ld a, [hli]
	ld [$c3bd], a
	ld a, [hli]
	ld [$c3be], a
	ret
; 8d109

Function8d109: ; 8d109
	push hl
	push bc
	ld hl, $c300
	ld b, a
	ld c, $a
.asm_8d111
	ld a, [hli]
	cp b
	jr z, .asm_8d11c
	inc hl
	dec c
	jr nz, .asm_8d111
	xor a
	jr .asm_8d11d

.asm_8d11c
	ld a, [hl]

.asm_8d11d
	pop bc
	pop hl
	ret
; 8d120

Function8d120: ; 8d120
	ld hl, $0001
	add hl, bc
	ld [hl], a
	ld hl, $0008
	add hl, bc
	ld [hl], $0
	ld hl, $000a
	add hl, bc
	ld [hl], $ff
	ret
; 8d132


Function8d132: ; 8d132
.asm_8d132
	ld hl, $0008
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_8d142
	dec [hl]
	call Function8d189
	ld a, [hli]
	push af
	jr .asm_8d163

.asm_8d142
	ld hl, $000a
	add hl, bc
	inc [hl]
	call Function8d189
	ld a, [hli]
	cp $fe
	jr z, .asm_8d17b
	cp $ff
	jr z, .asm_8d16d
	push af
	ld a, [hl]
	push hl
	and $3f
	ld hl, $0009
	add hl, bc
	add [hl]
	ld hl, $0008
	add hl, bc
	ld [hl], a
	pop hl

.asm_8d163
	ld a, [hl]
	and $c0
	srl a
	ld [$c3b8], a
	pop af
	ret

.asm_8d16d
	xor a
	ld hl, $0008
	add hl, bc
	ld [hl], a
	ld hl, $000a
	add hl, bc
	dec [hl]
	dec [hl]
	jr .asm_8d132

.asm_8d17b
	xor a
	ld hl, $0008
	add hl, bc
	ld [hl], a
	dec a
	ld hl, $000a
	add hl, bc
	ld [hl], a
	jr .asm_8d132
; 8d189

Function8d189: ; 8d189
	ld hl, $0001
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $56e6
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $000a
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ret
; 8d1a2

Function8d1a2: ; 8d1a2
	ld e, a
	ld d, $0
	ld hl, $594d
	add hl, de
	add hl, de
	add hl, de
	ret
; 8d1ac

INCBIN "baserom.gbc",$8d1ac,$8d24b - $8d1ac


Function8d24b: ; 8d24b
	ld hl, $0002
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $525b
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 8d25b


; no known jump sources
Jumptable_8d25b: ; 8d25b (23:525b)
	dw Function8d2a1
	dw Function8d2a2
	dw Function8d2b9
	dw Function8d2ea
	dw Function8d302
	dw Function8d36c
	dw Function8d37a
	dw Function8d381
	dw Function8d3c3
	dw Function8d422
	dw Function8d429
	dw Function8d43e
	dw Function8d373
	dw Function8d46e
	dw Function8d47c
	dw Function8d475
	dw Function8d483
	dw Function8d52a
	dw Function8d543
	dw Function8d54a
	dw Function8d578
	dw Function8d57f
	dw Function8d5b0
	dw Function8d5e2
	dw Function8d607
	dw Function8d35a
	dw Function8d6b7
	dw Function8d630
	dw Function8d637
	dw Function8d63e
	dw Function8d666
	dw Function8d6be
	dw Function8d680
	dw Function8d6a2
	dw Function8d6ae


; no known jump sources
Function8d2a1: ; 8d2a1 (23:52a1)
	ret

; no known jump sources
Function8d2a2: ; 8d2a2 (23:52a2)
	ld a, [$cfa9]
	ld hl, $0
	add hl, bc
	cp [hl]
	jr z, Function8d2b9
	ld hl, $4
	add hl, bc
	ld [hl], $10
	ld hl, $7
	add hl, bc
	ld [hl], $0
	ret

; known jump sources: 8d2aa (23:52aa)
Function8d2b9: ; 8d2b9 (23:52b9)
	ld hl, $4
	add hl, bc
	ld [hl], $18
	ld hl, $c
	add hl, bc
	ld a, [hl]
	ld d, a
	inc [hl]
	and $f
	ret nz
	ld hl, $d
	add hl, bc
	ld e, [hl]
	ld hl, $7
	add hl, bc
	ld a, d
	and $10
	jr z, .asm_8d2df
	ld a, e
	and a
	jr z, .asm_8d2e6
	cp $1
	jr z, .asm_8d2e2
.asm_8d2df
	xor a
	ld [hl], a
	ret
.asm_8d2e2
	ld a, $ff
	ld [hl], a
	ret
.asm_8d2e6
	ld a, $fe
	ld [hl], a
	ret

; no known jump sources
Function8d2ea: ; 8d2ea (23:52ea)
	ld a, [$cfa9]
	ld hl, $0
	add hl, bc
	cp [hl]
	jr z, .asm_8d2fb
	ld hl, $4
	add hl, bc
	ld [hl], $10
	ret
.asm_8d2fb
	ld hl, $4
	add hl, bc
	ld [hl], $18
	ret

; no known jump sources
Function8d302: ; 8d302 (23:5302)
	call Function8d6c5
	jp [hl]
; 8d306 (23:5306)

INCBIN "baserom.gbc",$8d306,$8d35a - $8d306

; no known jump sources
Function8d35a: ; 8d35a (23:535a)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	inc a
	ld [hl], a
	ld d, $2
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d36c: ; 8d36c (23:536c)
	callab Function11a3b
	ret

; no known jump sources
Function8d373: ; 8d373 (23:5373)
	callab Function120c1
	ret

; no known jump sources
Function8d37a: ; 8d37a (23:537a)
	callab Functione46ed
	ret

; no known jump sources
Function8d381: ; 8d381 (23:5381)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_8d3ba
	dec [hl]
	dec [hl]
	ld d, a
	and $1f
	jr nz, .asm_8d395
	ld hl, $d
	add hl, bc
	dec [hl]
.asm_8d395
	ld hl, $b
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ld hl, $d
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	add [hl]
	ld [hl], a
	ret
.asm_8d3ba
	ld a, $1
	ld [$cf64], a
	call Function8d036
	ret

; no known jump sources
Function8d3c3: ; 8d3c3 (23:53c3)
	ld hl, $c
	add hl, bc
	ld a, [hli]
	or [hl]
	jr z, .asm_8d41e
	ld hl, $f
	add hl, bc
	ld d, [hl]
	ld hl, $b
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $e
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $e
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $c
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $fff0
	add hl, de
	ld e, l
	ld d, h
	ld hl, $c
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $b
	add hl, bc
	ld a, [hl]
	xor $20
	ld [hl], a
	ret
.asm_8d41e
	call Function8d036
	ret

; no known jump sources
Function8d422: ; 8d422 (23:5422)
	callab Function9321d
	ret

; no known jump sources
Function8d429: ; 8d429 (23:5429)
	callab Function932ac
	ld hl, $cf64
	ld a, [hl]
	cp $2
	ret nz
	ld [hl], $3
	ld a, $f
	call Function8d120
	ret

; no known jump sources
Function8d43e: ; 8d43e (23:543e)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	dec [hl]
	ld e, a
	and $1
	jr z, .asm_8d462
	ld hl, $4
	add hl, bc
	ld a, [hl]
	cp $78
	jr c, .asm_8d461
	call Function8d036
	ld a, $4
	ld [$cf64], a
	ld de, $1e
	call PlaySFX
	ret
.asm_8d461
	inc [hl]
.asm_8d462
	ld a, e
	ld d, $20
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d46e: ; 8d46e (23:546e)
	callab Functione00ed
	ret

; no known jump sources
Function8d475: ; 8d475 (23:5475)
	callab Function90d41
	ret

; no known jump sources
Function8d47c: ; 8d47c (23:547c)
	callab Functione21a1
	ret

; no known jump sources
Function8d483: ; 8d483 (23:5483)
	call Function8d6c5
	jp [hl]
; 8d487 (23:5487)

INCBIN "baserom.gbc",$8d487,$8d52a - $8d487

; no known jump sources
Function8d52a: ; 8d52a (23:552a)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	cp $b0
	jr nc, .asm_8d53f
	and $3
	ret nz
	ld de, $3
	call PlaySFX
	ret
.asm_8d53f
	call Function8d036
	ret

; no known jump sources
Function8d543: ; 8d543 (23:5543)
	callab Function29676
	ret

; no known jump sources
Function8d54a: ; 8d54a (23:554a)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $80
	jr nc, .asm_8d574
	ld d, a
	add $8
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	xor $20
	ld [hl], a
	push af
	push de
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret
.asm_8d574
	call Function8d036
	ret

; no known jump sources
Function8d578: ; 8d578 (23:5578)
	callab Function91640
	ret

; no known jump sources
Function8d57f: ; 8d57f (23:557f)
	ld hl, $d
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $80
	add hl, de
	ld e, l
	ld d, h
	ld hl, $d
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $c
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	inc [hl]
	push af
	push de
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d5b0: ; 8d5b0 (23:55b0)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	and a
	ret z
	ld hl, $d
	add hl, bc
	ld a, [hl]
	inc [hl]
	cp $40
	ret c
	ld hl, $5
	add hl, bc
	dec [hl]
	dec [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, a
	cp $40
	jr nc, .asm_8d5d3
	add $8
	ld [hl], a
.asm_8d5d3
	ld hl, $e
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d5e2: ; 8d5e2 (23:55e2)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	cp $b8
	jr nc, .asm_8d603
	inc [hl]
	inc [hl]
	ld hl, $5
	add hl, bc
	dec [hl]
	ld d, $40
	ld hl, $c
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret
.asm_8d603
	call Function8d036
	ret

; no known jump sources
Function8d607: ; 8d607 (23:5607)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $54
	ret z
	ld hl, $5
	add hl, bc
	inc [hl]
	inc [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, a
	and a
	jr z, .asm_8d621
	sub $2
	ld [hl], a
.asm_8d621
	ld hl, $e
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d630: ; 8d630 (23:5630)
	callba Function108bc7
	ret

; no known jump sources
Function8d637: ; 8d637 (23:5637)
	callba Function108be0
	ret

; no known jump sources
Function8d63e: ; 8d63e (23:563e)
	ld a, [$cf65]
	and a
	jr nz, .asm_8d645
	ret
.asm_8d645
	ld hl, $7
	add hl, bc
	ld [hl], $0
	ld hl, $d
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	xor $ff
	inc a
	ld d, $20
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	ld a, $36
	call Function8d120
	ret

; no known jump sources
Function8d666: ; 8d666 (23:5666)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $14
	jr nc, .asm_8d67f
	add $2
	ld [hl], a
	xor $ff
	inc a
	ld d, $20
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
.asm_8d67f
	ret

; no known jump sources
Function8d680: ; 8d680 (23:5680)
	ld hl, $b
	add hl, bc
	ld d, [hl]
	inc [hl]
	inc [hl]
	inc [hl]
	ld hl, $c
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Function8d6de
	ld hl, $7
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Function8d6e2
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8d6a2: ; 8d6a2 (23:56a2)
	ld a, [$cf64]
	cp $40
	ret nz
	ld a, $3d
	call Function8d120
	ret

; no known jump sources
Function8d6ae: ; 8d6ae (23:56ae)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	add $10
	ld [hl], a
	ret

; no known jump sources
Function8d6b7: ; 8d6b7 (23:56b7)
	callba Function11d0b6
	ret

; no known jump sources
Function8d6be: ; 8d6be (23:56be)
	callba Function49aa2
	ret

; known jump sources: 8d302 (23:5302), 8d483 (23:5483)
Function8d6c5: ; 8d6c5 (23:56c5)
	ld hl, [sp+$0]
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	ld hl, $b
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 8d6d8 (23:56d8)

INCBIN "baserom.gbc",$8d6d8,$8d6de - $8d6d8

; known jump sources: 8d363 (23:5363), 8d39c (23:539c), 8d3d7 (23:53d7), 8d465 (23:5465), 8d561 (23:5561), 8d59d (23:559d), 8d658 (23:5658), 8d677 (23:5677), 8d68f (23:568f)
Function8d6de: ; 8d6de (23:56de)
	call Function8e72c
	ret

; known jump sources: 8d3a6 (23:53a6), 8d3e1 (23:53e1), 8d56b (23:556b), 8d5a7 (23:55a7), 8d5d9 (23:55d9), 8d5fa (23:55fa), 8d627 (23:5627), 8d699 (23:5699)
Function8d6e2: ; 8d6e2 (23:56e2)
	call Function8e72a
	ret
; 8d6e6 (23:56e6)

INCBIN "baserom.gbc",$8d6e6,$8e72a - $8d6e6


Function8e72a: ; 8e72a
	add $10
Function8e72c: ; 8e72c
	and $3f
	cp $20
	jr nc, .asm_8e737
	call Function8e741
	ld a, h
	ret

.asm_8e737
	and $1f
	call Function8e741
	ld a, h
	xor $ff
	inc a
	ret
; 8e741

Function8e741: ; 8e741
	ld e, a
	ld a, d
	ld d, $0
	ld hl, $675d
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $0000
.asm_8e750
	srl a
	jr nc, .asm_8e755
	add hl, de

.asm_8e755
	sla e
	rl d
	and a
	jr nz, .asm_8e750
	ret
; 8e75d

INCBIN "baserom.gbc",$8e75d,$8e79d - $8e75d


Function8e79d: ; 8e79d
	ld a, [hSGB]
	ld de, $67f4
	and a
	jr z, .asm_8e7a8
	ld de, $6804

.asm_8e7a8
	ld hl, VTiles0
	ld bc, $2301
	call Request2bpp
	ld c, $8
	ld d, $0
.asm_8e7b5
	push bc
	call Function8e7c6
	call DelayFrame
	pop bc
	inc d
	inc d
	dec c
	jr nz, .asm_8e7b5
	call ClearSprites
	ret
; 8e7c6

Function8e7c6: ; 8e7c6
	ld hl, Sprites
	ld c, $8
.asm_8e7cb
	ld a, c
	and a
	ret z
	dec c
	ld a, c
	sla a
	sla a
	sla a
	push af
	push de
	push hl
	call Function8e72c
	pop hl
	pop de
	add $68
	ld [hli], a
	pop af
	push de
	push hl
	call Function8e72a
	pop hl
	pop de
	add $54
	ld [hli], a
	ld a, $0
	ld [hli], a
	ld a, $6
	ld [hli], a
	jr .asm_8e7cb
; 8e7f4

INCBIN "baserom.gbc",$8e7f4,$8e814 - $8e7f4


Function8e814: ; 8e814
	push hl
	push de
	push bc
	push af
	ld hl, $c300
	ld bc, $00c1
.asm_8e81e
	ld [hl], $0
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_8e81e
	pop af
	pop bc
	pop de
	pop hl
	ret
; 8e82b

Function8e82b: ; 8e82b
	ld a, e
	call ReadMonMenuIcon
	ld l, a
	ld h, $0
	add hl, hl
	ld de, IconPointers
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	ld b, $23
	ld c, $8
	ret
; 8e83f

Function8e83f: ; 8e83f
	push hl
	push de
	push bc
	call Function8e849
	pop bc
	pop de
	pop hl
	ret
; 8e849

Function8e849: ; 8e849
	ld d, $0
	ld hl, $6854
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 8e854


; no known jump sources
Jumptable_8e854: ; 8e854 (23:6854)
	dw Function8e8d5
	dw Function8e961
	dw Function8e97d
	dw Function8e99a
	dw Function8e898
	dw Function8e8b1
	dw Function8e862


; no known jump sources
Function8e862: ; 8e862 (23:6862)
	call Function8e908
	call Function8e86c
	call Function8e936
	ret

; known jump sources: 8e865 (23:6865)
Function8e86c: ; 8e86c (23:686c)
	push bc
	ld a, [hConnectedMapWidth] ; $ff00+$b0
	ld hl, PartyMon1Item ; $dce0
	ld bc, $30
	call AddNTimes
	pop bc
	ld a, [hl]
	and a
	jr z, .asm_8e890
	push hl
	push bc
	ld d, a
	callab ItemIsMail
	pop bc
	pop hl
	jr c, .asm_8e88e
	ld a, $6
	jr .asm_8e892
.asm_8e88e
	ld a, $5
.asm_8e890
	ld a, $4
.asm_8e892
	ld hl, $1
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Function8e898: ; 8e898 (23:6898)
	call Function8e8d5
	ld hl, $2
	add hl, bc
	ld a, $0
	ld [hl], a
	ld hl, $4
	add hl, bc
	ld a, $48
	ld [hl], a
	ld hl, $5
	add hl, bc
	ld a, $48
	ld [hl], a
	ret

; no known jump sources
Function8e8b1: ; 8e8b1 (23:68b1)
	call Function8e908
	call Function8e936
	ld hl, $2
	add hl, bc
	ld a, $0
	ld [hl], a
	ld hl, $4
	add hl, bc
	ld a, $18
	ld [hl], a
	ld hl, $5
	add hl, bc
	ld a, $60
	ld [hl], a
	ld a, c
	ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct)
	ld a, b
	ld [EnemyMoveEffect], a ; $c609
	ret

; known jump sources: 8e898 (23:6898)
Function8e8d5: ; 8e8d5 (23:68d5)
	call Function8e908
	call Function8e8df
	call Function8e936
	ret

; known jump sources: 8e8d8 (23:68d8)
Function8e8df: ; 8e8df (23:68df)
	push bc
	ld a, [hConnectedMapWidth] ; $ff00+$b0
	ld hl, PartyMon1Item ; $dce0
	ld bc, $30
	call AddNTimes
	pop bc
	ld a, [hl]
	and a
	ret z
	push hl
	push bc
	ld d, a
	callab ItemIsMail
	pop bc
	pop hl
	jr c, .asm_8e900
	ld a, $3
	jr .asm_8e902
.asm_8e900
	ld a, $2
.asm_8e902
	ld hl, $1
	add hl, bc
	ld [hl], a
	ret

; known jump sources: 8e862 (23:6862), 8e8b1 (23:68b1), 8e8d5 (23:68d5)
Function8e908: ; 8e908 (23:6908)
	ld a, [$c3b7]
	push af
	ld a, [hConnectedMapWidth] ; $ff00+$b0
	ld hl, PartySpecies ; $dcd8
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	call ReadMonMenuIcon
	ld [CurIcon], a ; $c3b6
	call Function8e9db
	ld a, [hConnectedMapWidth] ; $ff00+$b0
	add a
	add a
	add a
	add a
	add $1c
	ld d, a
	ld e, $10
	ld a, $0
	call Function8cfd6
	pop af
	ld hl, $3
	add hl, bc
	ld [hl], a
	ret

; known jump sources: 8e868 (23:6868), 8e8b4 (23:68b4), 8e8db (23:68db)
Function8e936: ; 8e936 (23:6936)
	push bc
	ld a, [hConnectedMapWidth] ; $ff00+$b0
	ld b, a
	call Function8e94c
	ld a, b
	pop bc
	ld hl, $9
	add hl, bc
	ld [hl], a
	rlca
	rlca
	ld hl, $d
	add hl, bc
	ld [hl], a
	ret

; known jump sources: 8e93a (23:693a)
Function8e94c: ; 8e94c (23:694c)
	callba Function50117
	call GetHPPal
	ld e, d
	ld d, $0
	ld hl, $695e
	add hl, de
	ld b, [hl]
	ret
; 8e95e (23:695e)

INCBIN "baserom.gbc",$8e95e,$8e961 - $8e95e

; no known jump sources
Function8e961: ; 8e961 (23:6961)
	ld a, [$d265]
	call ReadMonMenuIcon
	ld [CurIcon], a ; $c3b6
	xor a
	call GetIconGFX
	ld de, $2420
	ld a, $0
	call Function8cfd6
	ld hl, $2
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Function8e97d: ; 8e97d (23:697d)
	ld a, [$d265]
	call ReadMonMenuIcon
	ld [CurIcon], a ; $c3b6
	xor a
	call GetIconGFX
	ld d, $1a
	ld e, $24
	ld a, $0
	call Function8cfd6
	ld hl, $2
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Function8e99a: ; 8e99a (23:699a)
	ld a, [$d265]
	call ReadMonMenuIcon
	ld [CurIcon], a ; $c3b6
	ld a, $62
	ld [$c3b7], a
	call Function8e9db
	ret

GetSpeciesIcon: ; 8e9ac
; Load species icon into VRAM at tile a
	push de
	ld a, [$d265]
	call ReadMonMenuIcon
	ld [CurIcon], a
	pop de
	ld a, e
	call GetIconGFX
	ret
; 8e9bc


; no known jump sources
Function8e9bc: ; 8e9bc (23:69bc)
	push de
	ld a, [$d265]
	call ReadMonMenuIcon
	ld [CurIcon], a ; $c3b6
	pop de
	ld a, e
	call GetIcon_a
	ret
; 8e9cc (23:69cc)

INCBIN "baserom.gbc",$8e9cc,$8e9db - $8e9cc

; known jump sources: 8e91c (23:691c), 8e9a8 (23:69a8)
Function8e9db: ; 8e9db (23:69db)
	ld a, [$c3b7]

GetIconGFX: ; 8e9de
	call GetIcon_a
	ld de, $80 ; 8 tiles
	add hl, de
	ld de, HeldItemIcons
	ld bc, $2302
	call GetGFXUnlessMobile
	ld a, [$c3b7]
	add 10
	ld [$c3b7], a
	ret
	
HeldItemIcons:
INCBIN "gfx/icon/mail.2bpp"
INCBIN "gfx/icon/item.2bpp"
; 8ea17

GetIcon_de: ; 8ea17
; Load icon graphics into VRAM starting from tile de
	ld l, e
	ld h, d
	jr GetIcon
	
GetIcon_a: ; 8ea1b
; Load icon graphics into VRAM starting from tile a
	ld l, a
	ld h, 0
	
GetIcon: ; 8ea1e
; Load icon graphics into VRAM starting from tile hl

; One tile is 16 bytes long
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, hl
	
	ld de, VTiles0
	add hl, de
	push hl
	
; Reading the icon pointer table would only make sense if they were
; scattered. However, the icons are contiguous and in-order.
	ld a, [CurIcon]
	push hl
	ld l, a
	ld h, 0
	add hl, hl
	ld de, IconPointers
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	pop hl
	
	ld bc, $2308
	call GetGFXUnlessMobile
	pop hl
	ret
; 8ea3f

GetGFXUnlessMobile: ; 8ea3f
	ld a, [InLinkBattle]
	cp 4 ; Mobile Link Battle
	jp nz, Request2bpp
	jp Functiondc9
; 8ea4a

Function8ea4a: ; 8ea4a
	ld hl, $c314
	ld e, $6
	ld a, [$cfa9]
	ld d, a
.asm_8ea53
	ld a, [hl]
	and a
	jr z, .asm_8ea69
	cp d
	jr z, .asm_8ea5e
	ld a, $0
	jr .asm_8ea60

.asm_8ea5e
	ld a, $2

.asm_8ea60
	push hl
	ld c, l
	ld b, h
	ld hl, $0002
	add hl, bc
	ld [hl], a
	pop hl

.asm_8ea69
	ld bc, $0010
	add hl, bc
	dec e
	jr nz, .asm_8ea53
	ret
; 8ea71

Function8ea71: ; 8ea71
	ld hl, $c314
	ld e, $6
.asm_8ea76
	ld a, [hl]
	and a
	jr z, .asm_8ea84
	push hl
	ld c, l
	ld b, h
	ld hl, $2
	add hl, bc
	ld [hl], $1
	pop hl
.asm_8ea84
	ld bc, $10
	add hl, bc
	dec e
	jr nz, .asm_8ea76
	ret
; 8ea8c (23:6a8c)

Function8ea8c: ; 8ea8c
	ld hl, $c314
	ld e, $6
	ld a, [$d0e3]
	ld d, a
.asm_8ea95
	ld a, [hl]
	and a
	jr z, .asm_8eaab
	cp d
	jr z, .asm_8eaa0
	ld a, $3
	jr .asm_8eaa2
.asm_8eaa0
	ld a, $2
.asm_8eaa2
	push hl
	ld c, l
	ld b, h
	ld hl, $2
	add hl, bc
	ld [hl], a
	pop hl
.asm_8eaab
	ld bc, $10
	add hl, bc
	dec e
	jr nz, .asm_8ea95
	ret


INCLUDE "menu/mon_icons.asm"


SECTION "bank24", ROMX, BANK[$24]

Function90000: ; 90000
	call Function9001c
	jr c, .asm_9000d
	call Function9002d
	jr nc, .asm_9000d
	ld [hl], c
	xor a
	ret

.asm_9000d
	scf
	ret
; 9000f


Function9000f: ; 9000f
	call Function9001c
	jr nc, .asm_90017
	xor a
	ld [hl], a
	ret

.asm_90017
	scf
	ret
; 90019

Function90019: ; 90019
	jp Function9001c
; 9001c

Function9001c: ; 9001c
	ld hl, $dc7c
	ld b, $a
.asm_90021
	ld a, [hli]
	cp c
	jr z, .asm_9002a
	dec b
	jr nz, .asm_90021
	xor a
	ret

.asm_9002a
	dec hl
	scf
	ret
; 9002d

Function9002d: ; 9002d
	call Function90040
	ld b, a
	ld hl, $dc7c
.asm_90034
	ld a, [hli]
	and a
	jr z, .asm_9003d
	dec b
	jr nz, .asm_90034
	xor a
	ret

.asm_9003d
	dec hl
	scf
	ret
; 90040

Function90040: ; 90040
	xor a
	ld [Buffer1], a
	ld hl, $4066
.asm_90047
	ld a, [hli]
	cp $ff
	jr z, .asm_9005f
	cp c
	jr z, .asm_9005d
	push bc
	push hl
	ld c, a
	call Function9001c
	jr c, .asm_9005b
	ld hl, Buffer1
	inc [hl]

.asm_9005b
	pop hl
	pop bc

.asm_9005d
	jr .asm_90047

.asm_9005f
	ld a, $a
	ld hl, Buffer1
	sub [hl]
	ret
; 90066

INCBIN "baserom.gbc",$90066,$90069 - $90066


Function90069: ; 90069
	ld a, [hROMBank]
	push af
	ld a, b
	rst Bankswitch

	call PlaceString
	pop af
	rst Bankswitch

	ret
; 90074


; no known jump sources
Function90074: ; 90074 (24:4074)
	call CheckStandingOnEntrance
	jr z, .asm_900a4
	call Function900a6
	nop
	jr nc, .asm_900a4
	call Random
	ld b, a
	and $7f
	cp b
	jr nz, .asm_900a4
	call Function2d05
	and a
	jr nz, .asm_900a4
	call Function900de
	call Function900bf
	jr nc, .asm_900a4
	ld e, a
	call Function9020d
	ld a, $24
	ld hl, $4241
	call CallScript
	scf
	ret
.asm_900a4
	xor a
	ret

; known jump sources: 90079 (24:4079)
Function900a6: ; 900a6 (24:40a6)
	callba Function11401
	ret

; known jump sources: 901b9 (24:41b9)
Function900ad: ; 900ad (24:40ad)
	push hl
	push bc
	push de
	push af
	callba Functionc000
	pop af
	and $7
	and c
	pop de
	pop bc
	pop hl
	ret

; known jump sources: 90091 (24:4091)
Function900bf: ; 900bf (24:40bf)
	ld a, [MartPointer] ; $d040 (aliases: Unkn2Pals)
	and a
	jr z, .asm_900dc
	ld c, a
	call Random
	ld a, [hRandomAdd] ; $ff00+$e1
	swap a
	and $1f
	call SimpleDivide
	ld c, a
	ld b, $0
	ld hl, $d041
	add hl, bc
	ld a, [hl]
	scf
	ret
.asm_900dc
	xor a
	ret

; known jump sources: 9008e (24:408e)
Function900de: ; 900de (24:40de)
	callba Functionc000
	ld a, c
	ld [EngineBuffer1], a ; $d03e (aliases: MenuItemsList, CurFruitTree, CurInput)
	ld hl, MartPointer ; $d040 (aliases: Unkn2Pals)
	ld bc, $b
	xor a
	call ByteFill
	ld de, $dc7c
	ld a, $a
.asm_900f7
	ld [CurFruit], a ; $d03f
	ld a, [de]
	and a
	jr z, .asm_9012e
	ld hl, $4467
	ld bc, $c
	call AddNTimes
	ld a, [EngineBuffer1] ; $d03e (aliases: MenuItemsList, CurFruitTree, CurInput)
	and [hl]
	jr z, .asm_9012e
	ld bc, $fffa
	add hl, bc
	ld a, [MapGroup] ; $dcb5
	cp [hl]
	jr nz, .asm_9011e
	inc hl
	ld a, [MapNumber] ; $dcb6
	cp [hl]
	jr z, .asm_9012e
.asm_9011e
	ld a, [MartPointer] ; $d040 (aliases: Unkn2Pals)
	ld c, a
	ld b, $0
	inc a
	ld [MartPointer], a ; $d040 (aliases: Unkn2Pals)
	ld hl, $d041
	add hl, bc
	ld a, [de]
	ld [hl], a
.asm_9012e
	inc de
	ld a, [CurFruit] ; $d03f
	dec a
	jr nz, .asm_900f7
	ret

; no known jump sources
Function90136: ; 90136 (24:4136)
	ld a, [$dc31]
	and a
	jr z, .asm_90171
	dec a
	ld c, a
	ld b, $0
	ld hl, $4627
	ld a, $6
	call AddNTimes
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call _hl_
	jr nc, .asm_90171
	call Function90178
	inc hl
	inc hl
	ld a, [hli]
	ld e, a
	push hl
	call Function9020d
	pop hl
	ld de, $d048
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	ld a, $24
	ld hl, $4173
	call CallScript
	scf
	ret
.asm_90171
	xor a
	ret
; 90173 (24:4173)

INCBIN "baserom.gbc",$90173,$90178 - $90173

; known jump sources: 90150 (24:4150)
Function90178: ; 90178 (24:4178)
	ld a, [$dc31]
	dec a
	ld c, a
	ld b, $0
	ld hl, $4627
	ld a, $6
	call AddNTimes
	ret
	ld a, [$d19a]
	cp $1
	jr z, .asm_90195
	cp $2
	jr z, .asm_90195
	xor a
	ret
.asm_90195
	scf
	ret
	scf
	ret

; known jump sources: 9121b (24:521b)
Function90199: ; 90199 (24:4199)
	ld a, [InLinkBattle] ; $c2dc
	and a
	jr nz, .asm_901e7
	call Function2d05
	and a
	jr nz, .asm_901e7
	ld a, b
	ld [$dbf9], a
	ld hl, $445f
	ld bc, $c
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, $4
	add hl, de
	ld a, [hl]
	call Function900ad
	jr z, .asm_901e7
	ld hl, $2
	add hl, de
	ld a, [MapGroup] ; $dcb5
	cp [hl]
	jr nz, .asm_901d9
	ld hl, $3
	add hl, de
	ld a, [MapNumber] ; $dcb6
	cp [hl]
	jr nz, .asm_901d9
	ld b, $24
	ld hl, $4660
	jr .asm_901f0
.asm_901d9
	ld hl, $5
	add hl, de
	ld b, [hl]
	ld hl, $6
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jr .asm_901f0
.asm_901e7
	ld b, $24
	ld de, $4209
	call Function2674
	ret
.asm_901f0
	ld a, b
	ld [DefaultFlypoint], a ; $d002
	ld a, l
	ld [$d003], a
	ld a, h
	ld [$d004], a
	ld b, $24
	ld de, $4205
	call Function2674
	ret
; 90205 (24:4205)

INCBIN "baserom.gbc",$90205,$9020d - $90205

; known jump sources: 90097 (24:4097), 90158 (24:4158)
Function9020d: ; 9020d (24:420d)
	nop
	nop
	ld a, e
	ld [$dbf9], a
	and a
	jr nz, .asm_9021d
	ld a, $24
	ld hl, $4233
	jr .asm_90229
.asm_9021d
	ld hl, $445f
	ld bc, $c
	ld a, e
	call AddNTimes
	ld a, $24
.asm_90229
	ld de, CurFruit ; $d03f
	ld bc, $c
	call FarCopyBytes
	ret
; 90233 (24:4233)

INCBIN "baserom.gbc",$90233,$9026f - $90233
	call Function9027c
	call Function9027c
	callba Function1060d3
	ret

; known jump sources: 9026f (24:426f), 90272 (24:4272)
Function9027c: ; 9027c (24:427c)
	call Function9033f
	call Function90357
	call Function90292
	call Function90357
	call Function90375
	call Function90357
	call Function90292
	ret

; known jump sources: 90282 (24:4282), 9028e (24:428e)
Function90292: ; 90292 (24:4292)
	ld a, [$dbf9]
	ld b, a
	call Function90363
	ret


Function9029a: ; 9029a
	ld a, b
	ld [DefaultFlypoint], a
	ld a, e
	ld [$d003], a
	ld a, d
	ld [$d004], a
	call Function902b3
	call Function902b3
	callba Function1060d3
	ret
; 902b3

Function902b3: ; 902b3
	call Function9033f
	call Function90357
	call Function902c9
	call Function90357
	call Function90375
	call Function90357
	call Function902c9
	ret
; 902c9

Function902c9: ; 902c9
	call Function90375
	ld hl, $c4c9
	ld [hl], $62
	inc hl
	inc hl
	ld a, [DefaultFlypoint]
	ld b, a
	ld a, [$d003]
	ld e, a
	ld a, [$d004]
	ld d, a
	call Function90069
	ret
; 902e3


; no known jump sources
Function902e3: ; 902e3 (24:42e3)
	ld de, $6c
	call PlaySFX
	jr asm_902f1


Function902eb: ; 902eb
	call Function9031d
	call Function90355
asm_902f1:
	call Function9032f
	call Function90355
	call Function9033b
	call Function90355
	call Function9032f
	call Function90355
	call Function9033b
	call Function90355
	call Function9032f
	call Function90355
	call Function9033b
	call Function90355
	ret
; 90316

INCBIN "baserom.gbc",$90316,$9031d - $90316


Function9031d: ; 9031d
	ld hl, UnknownText_0x9032a
	call PrintText
	ld de, SFX_HANG_UP
	call PlaySFX
	ret
; 9032a

UnknownText_0x9032a: ; 9032a
	text_jump UnknownText_0x1c5580, BANK(UnknownText_0x1c5580)
	db "@"
; 9032f


Function9032f: ; 9032f
	ld hl, UnknownText_0x90336
	call PrintText
	ret
; 90336

UnknownText_0x90336: ; 0x90336
	text_jump UnknownText_0x1c5588, BANK(UnknownText_0x1c5588)
	db "@"
; 0x9033b


Function9033b: ; 9033b
	call SpeechTextBox
	ret
; 9033f

Function9033f: ; 9033f
	call WaitSFX
	ld de, SFX_CALL
	call PlaySFX
	call Function90375
	call Function1ad2
	callba Function4d188
	ret
; 90355

Function90355: ; 90355
	jr Function90357

Function90357
	ld c, $14
	call DelayFrames
	callba Function4d188
	ret
; 90363


; known jump sources: 90296 (24:4296)
Function90363: ; 90363 (24:4363)
	push bc
	call Function90375
	ld hl, $c4b5
	ld [hl], $62
	inc hl
	inc hl
	ld d, h
	ld e, l
	pop bc
	call Function90380
	ret


Function90375: ; 90375
	ld hl, TileMap
	ld b, $2
	ld c, $12
	call TextBox
	ret
; 90380


; known jump sources: 90371 (24:4371), 9130b (24:530b)
Function90380: ; 90380 (24:4380)
	ld h, d
	ld l, e
	ld a, b
	call Function9039a
	call Function903a9
	ret

; no known jump sources
Function9038a: ; 9038a (24:438a)
	ld a, c
	call Function9039a
	ld a, c
	ret nz
	ld a, b
	cp $1
	ret z
	cp $4
	ret z
	ld c, $1
	ret

Function9039a: ; 9039a
	push hl
	ld hl, $445f
	ld bc, $000c
	call AddNTimes
	ld a, [hli]
	ld b, [hl]
	ld c, a
	pop hl
	ret
; 903a9


; known jump sources: 90386 (24:4386)
Function903a9: ; 903a9 (24:43a9)
	ld a, c
	and a
	jr z, .asm_903c5
	call Function90423
	push hl
	push bc
	call PlaceString
	ld a, $9c
	ld [bc], a
	pop bc
	pop hl
	ld de, $17
	add hl, de
	call Function9042e
	call PlaceString
	ret
.asm_903c5
	push hl
	ld c, b
	ld b, $0
	ld hl, $43d6
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld e, a
	ld d, [hl]
	pop hl
	call PlaceString
	ret
; 903d6 (24:43d6)

INCBIN "baserom.gbc",$903d6,$90423 - $903d6

; known jump sources: 903ad (24:43ad)
Function90423: ; 90423 (24:4423)
	push hl
	push bc
	callba Function3994c
	pop bc
	pop hl
	ret

; known jump sources: 903be (24:43be)
Function9042e: ; 9042e (24:442e)
	push hl
	push bc
	callba Function3952d
	pop bc
	pop hl
	ret

Function90439: ; 90439
	ld a, [$dbf9]
	call Function9039a
	ld d, c
	ld e, b
	push de
	ld a, [$dbf9]
	ld hl, $4461
	ld bc, $000c
	call AddNTimes
	ld b, [hl]
	inc hl
	ld c, [hl]
	push bc
	call GetWorldMapLocation
	ld e, a
	callba GetLandmarkName
	pop bc
	pop de
	ret
; 9045f

INCBIN "baserom.gbc",$9045f,$90672 - $9045f

; no known jump sources
Function90672: ; 90672 (24:4672)
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	ld a, $0
	ld [$c2ce], a
	ld a, $10
	ld [MusicFade], a ; $c2a7
	ld a, $0
	ld [MusicFadeIDLo], a ; $c2a9
	ld a, $0
	ld [MusicFadeIDHi], a ; $c2aa
	ld c, $8
	call DelayFrames
	call Function4dd
	call ClearTileMap
	call ClearSprites
	ld b, $8
	call GetSGBLayout
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functione51
	ld de, $48fb
	ld hl, $9000
	ld bc, $2401
	call Request1bpp
	ld de, $4903
	ld hl, $9010
	ld bc, $2401
	call Request1bpp
	ld de, $490b
	ld hl, $9020
	ld bc, $2401
	call Request1bpp
	call Function90783
	call WaitBGMap
	call Function4a3
	ld hl, $4874
	call PrintText
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld bc, $32
	xor a
	call ByteFill
	ld a, $a
	ld [$c61c], a
.asm_906e8
	ld hl, $4879
	call PrintText
	ld hl, $c52f
	ld b, $2
	ld c, $f
	call TextBox
	ld hl, $c537
	ld [hl], $1
	ld hl, $c573
	ld [hl], $2
	ld hl, $c558
	call Function907de
	ld c, $a
	call DelayFrames
.asm_9070d
	call Functiona57
	call Function90795
	jr nc, .asm_9070d
	ld a, [$c61c]
	ld [$d087], a
	call Function90783
	ld hl, $4886
	call PrintText
	call Function1dcf
	jr nc, .asm_9072e
	call Function90783
	jr .asm_906e8
.asm_9072e
	ld hl, $489a
	call PrintText
	ld hl, $c537
	ld bc, $207
	call TextBox
	ld hl, $c53b
	ld [hl], $1
	ld hl, $c577
	ld [hl], $2
	ld hl, $c560
	call Function90859
	ld c, $a
	call DelayFrames
.asm_90752
	call Functiona57
	call Function90810
	jr nc, .asm_90752
	ld a, [$c626]
	ld [$d088], a
	call Function90783
	ld hl, $48a4
	call PrintText
	call Function1dcf
	jr nc, .asm_90773
	call Function90783
	jr .asm_9072e
.asm_90773
	call Function658
	ld hl, $48b8
	call PrintText
	call Functiona80
	pop af
	ld [$FF00+$aa], a
	ret

; known jump sources: 906ca (24:46ca), 9071b (24:471b), 90729 (24:4729), 90760 (24:4760), 9076e (24:476e)
Function90783: ; 90783 (24:4783)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	xor a
	call ByteFill
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 90710 (24:4710)
Function90795: ; 90795 (24:4795)
	ld a, [hJoyPressed] ; $ff00+$a7
	and $1
	jr nz, .asm_907dc
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_907ba
	ld a, [hl]
	and $80
	jr nz, .asm_907ad
	call DelayFrame
	and a
	ret
.asm_907ad
	ld hl, $c61c
	ld a, [hl]
	and a
	jr nz, .asm_907b6
	ld a, $18
.asm_907b6
	dec a
	ld [hl], a
	jr .asm_907c6
.asm_907ba
	ld hl, $c61c
	ld a, [hl]
	cp $17
	jr c, .asm_907c4
	ld a, $ff
.asm_907c4
	inc a
	ld [hl], a
.asm_907c6
	ld hl, $c558
	ld a, $7f
	ld bc, $f
	call ByteFill
	ld hl, $c558
	call Function907de
	call WaitBGMap
	and a
	ret
.asm_907dc
	scf
	ret

; known jump sources: 90705 (24:4705), 907d4 (24:47d4), 9088e (24:488e)
Function907de: ; 907de (24:47de)
	push hl
	ld a, [$c61c]
	ld c, a
	ld e, l
	ld d, h
	call Function90b3e
	inc hl
	ld de, $487e
	call PlaceString
	pop hl
	ret
; 907f1 (24:47f1)

INCBIN "baserom.gbc",$907f1,$90810 - $907f1

; known jump sources: 90755 (24:4755)
Function90810: ; 90810 (24:4810)
	ld a, [hJoyPressed] ; $ff00+$a7
	and $1
	jr nz, .asm_90857
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_90835
	ld a, [hl]
	and $80
	jr nz, .asm_90828
	call DelayFrame
	and a
	ret
.asm_90828
	ld hl, $c626
	ld a, [hl]
	and a
	jr nz, .asm_90831
	ld a, $3c
.asm_90831
	dec a
	ld [hl], a
	jr .asm_90841
.asm_90835
	ld hl, $c626
	ld a, [hl]
	cp $3b
	jr c, .asm_9083f
	ld a, $ff
.asm_9083f
	inc a
	ld [hl], a
.asm_90841
	ld hl, $c560
	ld a, $7f
	ld bc, $7
	call ByteFill
	ld hl, $c560
	call Function90859
	call WaitBGMap
	and a
	ret
.asm_90857
	scf
	ret

; known jump sources: 9074a (24:474a), 9084f (24:484f), 908ac (24:48ac)
Function90859: ; 90859 (24:4859)
	ld de, $c626
	call Function90867
	inc hl
	ld de, $489f
	call PlaceString
	ret

; known jump sources: 9085c (24:485c), 90b54 (24:4b54)
Function90867: ; 90867 (24:4867)
	push hl
	ld a, $7f
	ld [hli], a
	ld [hl], a
	pop hl
	ld bc, $4102
	call PrintNum
	ret
; 90874 (24:4874)

INCBIN "baserom.gbc",$90874,$9088b - $90874
	ld hl, $c5e1
	call Function907de
	ld hl, $4895
	ret
; 90895 (24:4895)

INCBIN "baserom.gbc",$90895,$908a9 - $90895
	ld hl, $c5bf
	call Function90859
	ld hl, $48b3
	ret
; 908b3 (24:48b3)

INCBIN "baserom.gbc",$908b3,$908b9 - $908b3
	ld de, $c5b9
	ld a, [$c61c]
	ld c, a
	call Function90b3e
	ld [hl], $9c
	inc hl
	ld de, $c626
	ld bc, $8102
	call PrintNum
	ld b, h
	ld c, l
	ld a, [$c61c]
	cp $4
	jr c, .asm_908e0
	cp $b
	jr c, .asm_908e4
	cp $12
	jr c, .asm_908e8
.asm_908e0
	ld hl, $48f6
	ret
.asm_908e4
	ld hl, $48ec
	ret
.asm_908e8
	ld hl, $48f1
	ret
; 908ec (24:48ec)

INCBIN "baserom.gbc",$908ec,$90913 - $908ec

Function90913: ; 90913
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	ld de, $4903
	ld hl, $8ef0
	ld bc, $2401
	call Request1bpp
	ld de, $490b
	ld hl, $8f50
	ld bc, $2401
	call Request1bpp
	xor a
	ld [DefaultFlypoint], a
.asm_90936
	ld hl, $c590
	ld bc, $0412
	call TextBox
	call Function1d6e
	ld hl, $4a3f
	call PrintText
	ld hl, $c4e5
	ld b, $2
	ld c, $9
	call TextBox
	ld hl, $c4ea
	ld [hl], $ef
	ld hl, $c526
	ld [hl], $f5
	ld hl, $c50e
	call Function909de
	call Function321c
	ld c, $a
	call DelayFrames
.asm_9096a
	call Functiona57
	call Function90993
	jr nc, .asm_9096a
	call Function1c07
	call Function1ad2
	ld hl, $4a44
	call PrintText
	call Function1dcf
	jr c, .asm_90936
	ld a, [DefaultFlypoint]
	ld [StringBuffer2], a
	call Function663
	call Functione51
	pop af
	ld [$ffaa], a
	ret
; 90993

Function90993: ; 90993
	ld a, [hJoyPressed]
	and $1
	jr z, .asm_9099b
	scf
	ret

.asm_9099b
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_909ba
	ld a, [hl]
	and $80
	jr nz, .asm_909ad
	call DelayFrame
	and a
	ret

.asm_909ad
	ld hl, DefaultFlypoint
	ld a, [hl]
	and a
	jr nz, .asm_909b6
	ld a, $7

.asm_909b6
	dec a
	ld [hl], a
	jr .asm_909c6

.asm_909ba
	ld hl, DefaultFlypoint
	ld a, [hl]
	cp $6
	jr c, .asm_909c4
	ld a, $ff

.asm_909c4
	inc a
	ld [hl], a

.asm_909c6
	xor a
	ld [hBGMapMode], a
	ld hl, $c4fa
	ld b, $2
	ld c, $9
	call ClearBox
	ld hl, $c50e
	call Function909de
	call WaitBGMap
	and a
	ret
; 909de

Function909de: ; 909de
	push hl
	ld a, [DefaultFlypoint]
	ld e, a
	ld d, $0
	ld hl, $49f2
	add hl, de
	add hl, de
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	call PlaceString
	ret
; 909f2

dw Sunday
dw Monday
dw Tuesday
dw Wednesday
dw Thursday
dw Friday
dw Saturday
dw Sunday

Sunday:
	db " SUNDAY@"
Monday:
	db " MONDAY@"
Tuesday:
	db " TUESDAY@"
Wednesday:
	db "WEDNESDAY@"
Thursday:
	db "THURSDAY@"
Friday:
	db " FRIDAY@"
Saturday:
	db "SATURDAY@"


INCBIN "baserom.gbc",$90a3f,$90a45 - $90a3f
	ld hl, $c5b9
	call Function909de
	ld hl, $4a4f
	ret
; 90a4f (24:4a4f)

INCBIN "baserom.gbc",$90a4f,$90a54 - $90a4f

Function90a54: ; 90a54
	ld a, [$d4c2]
	set 7, a
	ld [$d4c2], a
	ld hl, $c5b9
	ld bc, $0312
	call ClearBox
	ld hl, $4a6c
	call Function13e5
	ret
; 90a6c

INCBIN "baserom.gbc",$90a6c,$90a6d - $90a6c
	call UpdateTime
	ld a, [hHours] ; $ff00+$94
	ld b, a
	ld a, [hMinutes] ; $ff00+$96
	ld c, a
	ld de, $c5b9
	callba Function1dd6bb
	ld hl, $4a83
	ret
; 90a83 (24:4a83)

INCBIN "baserom.gbc",$90a83,$90a88 - $90a83

Function90a88: ; 90a88
	ld a, [$d4c2]
	res 7, a
	ld [$d4c2], a
	ld hl, $c5b9
	ld bc, $0312
	call ClearBox
	ld hl, $4aa0
	call Function13e5
	ret
; 90aa0

INCBIN "baserom.gbc",$90aa0,$90b3e - $90aa0

; known jump sources: 907e5 (24:47e5), 908c0 (24:48c0)
Function90b3e: ; 90b3e (24:4b3e)
	ld l, e
	ld h, d
	push bc
	call Function90b58
	call PlaceString
	ld l, c
	ld h, b
	inc hl
	pop bc
	call Function90b7f
	ld [$d265], a
	ld de, $d265
	call Function90867
	ret

; known jump sources: 90b41 (24:4b41)
Function90b58: ; 90b58 (24:4b58)
	ld a, c
	cp $4
	jr c, .asm_90b65
	cp $a
	jr c, .asm_90b69
	cp $12
	jr c, .asm_90b6d
.asm_90b65
	ld de, $4b71
	ret
.asm_90b69
	ld de, $4b76
	ret
.asm_90b6d
	ld de, $4b7b
	ret
; 90b71 (24:4b71)

INCBIN "baserom.gbc",$90b71,$90b7f - $90b71

; known jump sources: 90b4b (24:4b4b)
Function90b7f: ; 90b7f (24:4b7f)
	ld a, c
	or a
	jr z, .asm_90b8a
	cp $c
	ret c
	ret z
	sub $c
	ret
.asm_90b8a
	ld a, $c
	ret

Function90b8d: ; 90b8d (24:4b8d)
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	call Function90bea
	call DelayFrame
.asm_90ba9
	call UpdateTime
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_90bc4
	call Function90f04
	callba Function8cf69
	call DelayFrame
	jr .asm_90ba9
.asm_90bc4
	ld de, $8
	call PlaySFX
	call WaitSFX
	pop af
	ld [VramState], a ; $d0ed
	pop af
	ld [$FF00+$aa], a
	pop af
	ld [Options], a ; $cfcc
	call WhiteBGMap
	xor a
	ld [hBGMapAddress], a ; $ff00+$d6
	ld a, $98
	ld [$FF00+$d7], a
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	call Function91492
	ret

; known jump sources: 90ba3 (24:4ba3)
Function90bea: ; 90bea (24:4bea)
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	xor a
	ld [hSCY], a ; $ff00+$d0
	ld [hSCX], a ; $ff00+$cf
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	call Function90c4e
	callba Function8cf53
	call Function90d32
	ld a, $8
	call Function3cb4
	ld a, $e3
	ld [rLCDC], a ; $ff00+$40
	call Function90d70
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld [PlayerEvaLevel], a ; $c6d2
	ld [PlayerAccLevel], a ; $c6d1
	ld [$c6d3], a
	ld [EnemyAccLevel], a ; $c6d9
	ld [EnemyEvaLevel], a ; $c6da
	ld [$c6db], a
	call Function90d9e
	call Function90da8
	ld b, $2
	call GetSGBLayout
	call Function32f9
	ld a, [hCGB] ; $ff00+$e6
	and a
	ret z
	ld a, $e4
	call Functioncf8
	ret

Function90c4e: ; 90c4e
	call Functiond79
	ld hl, $4ba0
	ld de, VTiles2
	ld a, $3e
	call FarDecompress
	ld hl, $62e4
	ld de, $9300
	ld a, $77
	call FarDecompress
	ld hl, PokegearSpritesGFX
	ld de, VTiles0
	ld a, $24
	call Decompress
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	cp $5f
	jr z, .asm_90ca5
	callba GetPlayerIcon
	push de
	ld h, d
	ld l, e
	ld a, b
	push af
	ld de, $8100
	ld bc, $0040
	call FarCopyBytes
	pop af
	pop hl
	ld de, $00c0
	add hl, de
	ld de, $8140
	ld bc, $0040
	call FarCopyBytes
	ret

.asm_90ca5
	ld hl, $4cb2
	ld de, $8100
	ld bc, $0080
	call CopyBytes
	ret
; 90cb2

INCBIN "baserom.gbc",$90cb2,$90d32 - $90cb2

; known jump sources: 90c08 (24:4c08)
Function90d32: ; 90d32 (24:4d32)
	ld de, $2410
	ld a, $d
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Function90d41: ; 90d41 (24:4d41)
	ld hl, $cf64
	ld e, [hl]
	ld d, $0
	ld hl, $4d52
	add hl, de
	ld a, [hl]
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret
; 90d52 (24:4d52)

INCBIN "baserom.gbc",$90d52,$90d56 - $90d52

Function90d56: ; 90d56
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	cp $0
	ret nz
	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a
	call GetWorldMapLocation
	ret
; 90d70


; known jump sources: 90c14 (24:4c14)
Function90d70: ; 90d70 (24:4d70)
	ld a, [MapGroup] ; $dcb5
	ld b, a
	ld a, [MapNumber] ; $dcb6
	ld c, a
	call GetWorldMapLocation
	cp $5f
	jr z, .asm_90d95
	cp $0
	jr nz, .asm_90d8e
	ld a, [BackupMapGroup] ; $dcad
	ld b, a
	ld a, [BackupMapNumber] ; $dcae
	ld c, a
	call GetWorldMapLocation
.asm_90d8e
	ld [EnemySDefLevel], a ; $c6d8
	ld [EnemySAtkLevel], a ; $c6d7
	ret
.asm_90d95
	ld [EnemySDefLevel], a ; $c6d8
	ld a, $1
	ld [EnemySAtkLevel], a ; $c6d7
	ret

; known jump sources: 90c36 (24:4c36)
Function90d9e: ; 90d9e (24:4d9e)
	ld a, $0
	ld [$cf63], a
	xor a
	ld [$cf64], a
	ret

; known jump sources: 90c39 (24:4c39), 90f2d (24:4f2d), 90fcd (24:4fcd), 910f9 (24:50f9), 91164 (24:5164)
Function90da8: ; 90da8 (24:4da8)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $4f
	call ByteFill
	ld a, [$cf64]
	and $3
	add a
	ld e, a
	ld d, $0
	ld hl, $4e12
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $4dcb
	push de
	jp [hl]
	call Function90eb0
	callba TownMapPals
	ld a, [$cf65]
	and a
	jr nz, .asm_90de8
	xor a
	ld [hBGMapAddress], a ; $ff00+$d6
	ld a, $98
	ld [$FF00+$d7], a
	call Function90e00
	ld a, $90
	jr .asm_90df3
.asm_90de8
	xor a
	ld [hBGMapAddress], a ; $ff00+$d6
	ld a, $9c
	ld [$FF00+$d7], a
	call Function90e00
	xor a
.asm_90df3
	ld [hWY], a ; $ff00+$d2
	ld a, [$cf65]
	and $1
	xor $1
	ld [$cf65], a
	ret

; known jump sources: 90de1 (24:4de1), 90def (24:4def)
Function90e00: ; 90e00 (24:4e00)
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr z, .asm_90e0e
	ld a, $2
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $3
	call DelayFrames
.asm_90e0e
	call WaitBGMap
	ret
; 90e12 (24:4e12)

INCBIN "baserom.gbc",$90e12,$90e1a - $90e12
	ld de, $55db
	call Function914bb
	ld hl, $c4c0
	ld de, $4e36
	call PlaceString
	ld hl, $c590
	ld bc, $412
	call TextBox
	call Function90f86
	ret
; 90e36 (24:4e36)

INCBIN "baserom.gbc",$90e36,$90e3f - $90e36
	ld a, [EnemySDefLevel] ; $c6d8
	cp $5f
	jr z, .asm_90e4a
	cp $2f
	jr nc, .asm_90e4e
.asm_90e4a
	ld e, $0
	jr .asm_90e50
.asm_90e4e
	ld e, $1
.asm_90e50
	callba Function91ae1
	ld a, $7
	ld bc, $12
	ld hl, $c4c9
	call ByteFill
	ld hl, $c4c8
	ld [hl], $6
	ld hl, $c4db
	ld [hl], $17
	ld a, [EnemySAtkLevel] ; $c6d7
	call Function910b4
	ret
	ld de, $550d
	call Function914bb
	ld hl, $c590
	ld bc, $412
	call TextBox
	ret
	ld de, $558a
	call Function914bb
	ld hl, $c590
	ld bc, $412
	call TextBox
	call Function90e98
	call Function912d8
	ret

; known jump sources: 90e91 (24:4e91)
Function90e98: ; 90e98 (24:4e98)
	ld hl, $c4c5
	ld a, $3c
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4d9
	inc a
	ld [hli], a
	call Function2d05
	and a
	ret nz
	ld hl, $c4da
	ld [hl], $3f
	ret

; known jump sources: 90dcb (24:4dcb)
Function90eb0: ; 90eb0 (24:4eb0)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $8
	ld a, $4f
	call ByteFill
	ld hl, $c4b4
	ld bc, $8
	ld a, $4f
	call ByteFill
	ld de, $d957
	ld a, [de]
	bit 0, a
	call nz, Function90ee4
	ld a, [de]
	bit 2, a
	call nz, Function90eeb
	ld a, [de]
	bit 1, a
	call nz, Function90ef2
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $46
	call Function90ef7
	ret

; known jump sources: 90ecc (24:4ecc)
Function90ee4: ; 90ee4 (24:4ee4)
	ld hl, $c4a2
	ld a, $40
	jr Function90ef7

; known jump sources: 90ed2 (24:4ed2)
Function90eeb: ; 90eeb (24:4eeb)
	ld hl, $c4a4
	ld a, $44
	jr Function90ef7

; known jump sources: 90ed8 (24:4ed8)
Function90ef2: ; 90ef2 (24:4ef2)
	ld hl, $c4a6
	ld a, $42

; known jump sources: 90ee0 (24:4ee0), 90ee9 (24:4ee9), 90ef0 (24:4ef0)
Function90ef7: ; 90ef7 (24:4ef7)
	ld [hli], a
	inc a
	ld [hld], a
	ld bc, $14
	add hl, bc
	add $f
	ld [hli], a
	inc a
	ld [hld], a
	ret

; known jump sources: 90bb6 (24:4bb6)
Function90f04: ; 90f04 (24:4f04)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4f13
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_90f13: ; 90f13 (24:4f13)
	dw Function90f2d
	dw Function90f3e
	dw Function90fb4
	dw Function90fcd
	dw Function90fee
	dw Function90fcd
	dw Function90fe9
	dw Function91156
	dw Function91171
	dw Function911eb
	dw Function91256
	dw Function910f9
	dw Function91112


; no known jump sources
Function90f2d: ; 90f2d (24:4f2d)
	call Function90da8
	ld hl, $54d3
	call PrintText
	ld hl, $cf63
	inc [hl]
	call Function91492
	ret

; no known jump sources
Function90f3e: ; 90f3e (24:4f3e)
	call Function90f7b
	ld hl, $ffa9
	ld a, [hl]
	and $f
	jr nz, .asm_90f75
	ld a, [hl]
	and $10
	ret z
	ld a, [$d957]
	bit 0, a
	jr z, .asm_90f5a
	ld c, $2
	ld b, $1
	jr .asm_90f71
.asm_90f5a
	ld a, [$d957]
	bit 2, a
	jr z, .asm_90f67
	ld c, $7
	ld b, $2
	jr .asm_90f71
.asm_90f67
	ld a, [$d957]
	bit 1, a
	ret z
	ld c, $b
	ld b, $3
.asm_90f71
	call Function91480
	ret
.asm_90f75
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: 90f3e (24:4f3e)
Function90f7b: ; 90f7b (24:4f7b)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function90f86
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 90e32 (24:4e32), 90f7e (24:4f7e)
Function90f86: ; 90f86 (24:4f86)
	ld hl, $c507
	ld bc, $50e
	call ClearBox
	ld a, [hHours] ; $ff00+$94
	ld b, a
	ld a, [hMinutes] ; $ff00+$96
	ld c, a
	ld de, $c546
	callba Function1dd6bb
	ld hl, $4faf
	ld bc, $c51e
	call Function13e5
	ret
; 90fa8 (24:4fa8)

INCBIN "baserom.gbc",$90fa8,$90fb4 - $90fa8

; no known jump sources
Function90fb4: ; 90fb4 (24:4fb4)
	ld a, [EnemySDefLevel] ; $c6d8
	cp $5f
	jr z, .asm_90fbf
	cp $2f
	jr nc, .asm_90fc4
.asm_90fbf
	ld a, $3
	jr .asm_90fc6
; 90fc3 (24:4fc3)

INCBIN "baserom.gbc",$90fc3,$90fc4 - $90fc3
.asm_90fc4
	ld a, $5
.asm_90fc6
	ld [$cf63], a
	call Function91492
	ret

; no known jump sources
Function90fcd: ; 90fcd (24:4fcd)
	call Function90da8
	ld a, [EnemySDefLevel] ; $c6d8
	call Function9106a
	ld a, [EnemySAtkLevel] ; $c6d7
	call Function91098
	ld a, c
	ld [EnemyDefLevel], a ; $c6d5
	ld a, b
	ld [$c6d6], a
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function90fe9: ; 90fe9 (24:4fe9)
	call Function910e8
	jr asm_90ff2

; no known jump sources
Function90fee: ; 90fee (24:4fee)
	ld d, $2e
	ld e, $1
asm_90ff2: ; 90ff2 (24:4ff2)
	ld hl, $ffa9
	ld a, [hl]
	and $2
	jr nz, .asm_91029
	ld a, [hl]
	and $10
	jr nz, .asm_91008
	ld a, [hl]
	and $20
	jr nz, .asm_91021
	call Function9102f
	ret
.asm_91008
	ld a, [$d957]
	bit 2, a
	jr z, .asm_91015
	ld c, $7
	ld b, $2
	jr .asm_91025
.asm_91015
	ld a, [$d957]
	bit 1, a
	ret z
	ld c, $b
	ld b, $3
	jr .asm_91025
.asm_91021
	ld c, $0
	ld b, $0
.asm_91025
	call Function91480
	ret
.asm_91029
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: 91004 (24:5004)
Function9102f: ; 9102f (24:502f)
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_9103d
	ld a, [hl]
	and $80
	jr nz, .asm_9104a
	ret
.asm_9103d
	ld hl, EnemySAtkLevel ; $c6d7
	ld a, [hl]
	cp d
	jr c, .asm_91047
	ld a, e
	dec a
	ld [hl], a
.asm_91047
	inc [hl]
	jr .asm_91055
.asm_9104a
	ld hl, EnemySAtkLevel ; $c6d7
	ld a, [hl]
	cp e
	jr nz, .asm_91054
	ld a, d
	inc a
	ld [hl], a
.asm_91054
	dec [hl]
.asm_91055
	ld a, [EnemySAtkLevel] ; $c6d7
	call Function910b4
	ld a, [EnemyDefLevel] ; $c6d5
	ld c, a
	ld a, [$c6d6]
	ld b, a
	ld a, [EnemySAtkLevel] ; $c6d7
	call Function910d4
	ret

Function9106a: ; 9106a
	push af
	ld de, $0000
	ld b, $a
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_91079
	ld b, $1e

.asm_91079
	ld a, b
	call Function3b2a
	ld hl, $0003
	add hl, bc
	ld [hl], $10
	pop af
	ld e, a
	push bc
	callba GetLandmarkCoords
	pop bc
	ld hl, $0004
	add hl, bc
	ld [hl], e
	ld hl, $0005
	add hl, bc
	ld [hl], d
	ret
; 91098

Function91098: ; 91098
	push af
	ld de, $0000
	ld a, $d
	call Function3b2a
	ld hl, $0003
	add hl, bc
	ld [hl], $4
	ld hl, $0002
	add hl, bc
	ld [hl], $0
	pop af
	push bc
	call Function910d4
	pop bc
	ret
; 910b4

Function910b4: ; 910b4
	push af
	ld hl, $c4a8
	ld bc, $020c
	call ClearBox
	pop af
	ld e, a
	push de
	callba GetLandmarkName
	pop de
	callba Function1de2c5
	ld hl, $c4a8
	ld [hl], $34
	ret
; 910d4

Function910d4: ; 910d4
	push bc
	ld e, a
	callba GetLandmarkCoords
	pop bc
	ld hl, $0004
	add hl, bc
	ld [hl], e
	ld hl, $0005
	add hl, bc
	ld [hl], d
	ret
; 910e8

Function910e8: ; 910e8
	ld a, [StatusFlags]
	bit 6, a
	jr z, .asm_910f4
	ld d, $5e
	ld e, $2f
	ret

.asm_910f4
	ld d, $5e
	ld e, $58
	ret
; 910f9


; no known jump sources
Function910f9: ; 910f9 (24:50f9)
	call Function90da8
	ld de, $2454
	ld a, $14
	call Function3b2a
	ld hl, $3
	add hl, bc
	ld [hl], $8
	call Function9163e
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function91112: ; 91112 (24:5112)
	ld hl, $ffa9
	ld a, [hl]
	and $2
	jr nz, .asm_91150
	ld a, [hl]
	and $20
	jr nz, .asm_9112e
	ld a, [EnemyEvaLevel] ; $c6da
	ld l, a
	ld a, [$c6db]
	ld h, a
	ld a, [EnemyAccLevel] ; $c6d9
	and a
	ret z
	rst FarCall
	ret
.asm_9112e
	ld a, [$d957]
	bit 2, a
	jr z, .asm_9113b
	ld c, $7
	ld b, $2
	jr .asm_9114c
.asm_9113b
	ld a, [$d957]
	bit 0, a
	jr z, .asm_91148
	ld c, $2
	ld b, $1
	jr .asm_9114c
.asm_91148
	ld c, $0
	ld b, $0
.asm_9114c
	call Function91480
	ret
.asm_91150
	ld hl, $cf63
	set 7, [hl]
	ret

; no known jump sources
Function91156: ; 91156 (24:5156)
	ld hl, $cf63
	inc [hl]
	xor a
	ld [PlayerEvaLevel], a ; $c6d2
	ld [PlayerAccLevel], a ; $c6d1
	ld [$c6d3], a
	call Function90da8
	call Function91492
	ld hl, $54ce
	call PrintText
	ret

; no known jump sources
Function91171: ; 91171 (24:5171)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_911b0
	ld a, [hl]
	and $1
	jr nz, .asm_911b6
	ld hl, $ffa9
	ld a, [hl]
	and $20
	jr nz, .asm_9118f
	ld a, [hl]
	and $10
	jr nz, .asm_911a2
	call Function9126d
	ret
.asm_9118f
	ld a, [$d957]
	bit 0, a
	jr z, .asm_9119c
	ld c, $2
	ld b, $1
	jr .asm_911ac
.asm_9119c
	ld c, $0
	ld b, $0
	jr .asm_911ac
.asm_911a2
	ld a, [$d957]
	bit 1, a
	ret z
	ld c, $b
	ld b, $3
.asm_911ac
	call Function91480
	ret
.asm_911b0
	ld hl, $cf63
	set 7, [hl]
	ret
.asm_911b6
	ld hl, $dc7c
	ld a, [PlayerEvaLevel] ; $c6d2
	ld e, a
	ld d, $0
	add hl, de
	ld a, [PlayerAccLevel] ; $c6d1
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	and a
	ret z
	ld [$c6d3], a
	ld hl, $c4f1
	ld a, [PlayerAccLevel] ; $c6d1
	ld bc, $28
	call AddNTimes
	ld [hl], $ec
	call Function91342
	jr c, .asm_911e5
	ld hl, $cf63
	inc [hl]
	ret
.asm_911e5
	ld a, $8
	ld [$cf63], a
	ret

; no known jump sources
Function911eb: ; 911eb (24:51eb)
	call Function2d05
	and a
	jr nz, .asm_91234
	ld hl, Options ; $cfcc
	res 4, [hl]
	xor a
	ld [$FF00+$aa], a
	ld de, $6a
	call PlaySFX
	ld hl, $524c
	call PrintText
	call WaitSFX
	ld de, $6a
	call PlaySFX
	ld hl, $524c
	call PrintText
	call WaitSFX
	ld a, [$c6d3]
	ld b, a
	call Function90199
	ld c, $a
	call DelayFrames
	ld hl, Options ; $cfcc
	set 4, [hl]
	ld a, $1
	ld [$FF00+$aa], a
	call Function912b7
	ld hl, $cf63
	inc [hl]
	ret
.asm_91234
	callba Function902e3
	ld hl, $5251
	call PrintText
	ld a, $8
	ld [$cf63], a
	ld hl, $54ce
	call PrintText
	ret
; 9124c (24:524c)

INCBIN "baserom.gbc",$9124c,$91256 - $9124c

; no known jump sources
Function91256: ; 91256 (24:5256)
	ld a, [hJoyPressed] ; $ff00+$a7
	and $3
	ret z
	callba Function902eb
	ld a, $8
	ld [$cf63], a
	ld hl, $54ce
	call PrintText
	ret

; known jump sources: 9118b (24:518b)
Function9126d: ; 9126d (24:526d)
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_9127b
	ld a, [hl]
	and $80
	jr nz, .asm_9128e
	ret
.asm_9127b
	ld hl, PlayerAccLevel ; $c6d1
	ld a, [hl]
	and a
	jr z, .asm_91285
	dec [hl]
	jr .asm_912a3
.asm_91285
	ld hl, PlayerEvaLevel ; $c6d2
	ld a, [hl]
	and a
	ret z
	dec [hl]
	jr .asm_912ad
.asm_9128e
	ld hl, PlayerAccLevel ; $c6d1
	ld a, [hl]
	cp $3
	jr nc, .asm_91299
	inc [hl]
	jr .asm_912a3
.asm_91299
	ld hl, PlayerEvaLevel ; $c6d2
	ld a, [hl]
	cp $6
	ret nc
	inc [hl]
	jr .asm_912ad
.asm_912a3
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function912b7
	call WaitBGMap
	ret
.asm_912ad
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function912d8
	call WaitBGMap
	ret

; known jump sources: 9122c (24:522c), 912a6 (24:52a6), 9131a (24:531a)
Function912b7: ; 912b7 (24:52b7)
	ld a, $7f
	ld hl, $c4f1
	ld [hl], a
	ld hl, $c519
	ld [hl], a
	ld hl, $c541
	ld [hl], a
	ld hl, $c569
	ld [hl], a
	ld hl, $c4f1
	ld a, [PlayerAccLevel] ; $c6d1
	ld bc, $28
	call AddNTimes
	ld [hl], $ed
	ret

; known jump sources: 90e94 (24:4e94), 912b0 (24:52b0), 913d7 (24:53d7)
Function912d8: ; 912d8 (24:52d8)
	ld hl, $c4dd
	ld b, $9
	ld a, $7f
.asm_912df
	ld c, $12
.asm_912e1
	ld [hli], a
	dec c
	jr nz, .asm_912e1
	inc hl
	inc hl
	dec b
	jr nz, .asm_912df
	ld a, [PlayerEvaLevel] ; $c6d2
	ld e, a
	ld d, $0
	ld hl, $dc7c
	add hl, de
	xor a
	ld [PlayerSDefLevel], a ; $c6d0
.asm_912f8
	ld a, [hli]
	push hl
	push af
	ld hl, $c4f2
	ld a, [PlayerSDefLevel] ; $c6d0
	ld bc, $28
	call AddNTimes
	ld d, h
	ld e, l
	pop af
	ld b, a
	call Function90380
	pop hl
	ld a, [PlayerSDefLevel] ; $c6d0
	inc a
	ld [PlayerSDefLevel], a ; $c6d0
	cp $4
	jr c, .asm_912f8
	call Function912b7
	ret
; 9131e (24:531e)

INCBIN "baserom.gbc",$9131e,$91342 - $9131e

; known jump sources: 911db (24:51db)
Function91342: ; 91342 (24:5342)
	ld hl, $dc7c
	ld a, [PlayerEvaLevel] ; $c6d2
	ld e, a
	ld d, $0
	add hl, de
	ld a, [PlayerAccLevel] ; $c6d1
	ld e, a
	ld d, $0
	add hl, de
	ld c, [hl]
	callba Function9038a
	ld a, c
	and a
	jr z, .asm_91366
	ld hl, $5455
	ld de, $543f
	jr .asm_9136c
.asm_91366
	ld hl, $546a
	ld de, $545b
.asm_9136c
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	push hl
	push de
	ld a, [de]
	ld l, a
	inc de
	ld a, [de]
	ld h, a
	inc de
	push hl
	ld bc, $ffd7
	add hl, bc
	ld a, [de]
	inc de
	sla a
	ld b, a
	ld c, $8
	push de
	call TextBox
	pop de
	pop hl
	inc hl
	call PlaceString
	pop de
	xor a
	ld [EnemyAtkLevel], a ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	call Function9141d
	call WaitBGMap
.asm_91398
	push de
	call Functiona57
	pop de
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $40
	jr nz, .asm_913b4
	ld a, [hl]
	and $80
	jr nz, .asm_913c1
	ld a, [hl]
	and $3
	jr nz, .asm_913d4
	call DelayFrame
	jr .asm_91398
.asm_913b4
	ld hl, EnemyAtkLevel ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	ld a, [hl]
	and a
	jr z, .asm_91398
	dec [hl]
	call Function9141d
	jr .asm_91398
.asm_913c1
	ld hl, $2
	add hl, de
	ld a, [EnemyAtkLevel] ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	inc a
	cp [hl]
	jr nc, .asm_91398
	ld [EnemyAtkLevel], a ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	call Function9141d
	jr .asm_91398
.asm_913d4
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function912d8
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	pop hl
	ld a, [hJoyPressed] ; $ff00+$a7
	and $2
	jr nz, .asm_913f1
	ld a, [EnemyAtkLevel] ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
.asm_913f1
	ld hl, $54ce
	call PrintText
	scf
	ret
; 913f9 (24:53f9)

INCBIN "baserom.gbc",$913f9,$9141d - $913f9

; known jump sources: 91392 (24:5392), 913bc (24:53bc), 913cf (24:53cf)
Function9141d: ; 9141d (24:541d)
	push de
	ld a, [de]
	inc de
	ld l, a
	ld a, [de]
	inc de
	ld h, a
	ld a, [de]
	ld c, a
	push hl
	ld a, $7f
	ld de, $28
.asm_9142c
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_9142c
	pop hl
	ld a, [EnemyAtkLevel] ; $c6d4 (aliases: EnemyStatLevels, PlayerStatLevelsEnd)
	ld bc, $28
	call AddNTimes
	ld [hl], $ed
	pop de
	ret
; 9143f (24:543f)

INCBIN "baserom.gbc",$9143f,$91480 - $9143f

; known jump sources: 90f71 (24:4f71), 91025 (24:5025), 9114c (24:514c), 911ac (24:51ac)
Function91480: ; 91480 (24:5480)
	ld de, $8
	call PlaySFX
	ld a, c
	ld [$cf63], a
	ld a, b
	ld [$cf64], a
	call Function914ab
	ret

Function91492: ; 91492
	ld a, [EnemyTurnsTaken]
	cp $fe
	jr z, .asm_914a3
	cp $ff
	call z, Function3d03
	xor a
	ld [EnemyTurnsTaken], a
	ret

.asm_914a3
	call Function3d47
	xor a
	ld [EnemyTurnsTaken], a
	ret
; 914ab


; known jump sources: 9148e (24:548e)
Function914ab: ; 914ab (24:54ab)
	ld hl, $c324
	ld bc, $90
	xor a
	call ByteFill
	ld a, $2
	ld [$c3b4], a
	ret

; known jump sources: 90e1d (24:4e1d), 90e75 (24:4e75), 90e85 (24:4e85)
Function914bb: ; 914bb (24:54bb)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
.asm_914be
	ld a, [de]
	cp $ff
	ret z
	ld b, a
	inc de
	ld a, [de]
	ld c, a
	inc de
	ld a, b
.asm_914c8
	ld [hli], a
	dec c
	jr nz, .asm_914c8
	jr .asm_914be
; 914ce (24:54ce)

INCBIN "baserom.gbc",$914ce,$914dd - $914ce

PokegearSpritesGFX: ; 914dd
INCBIN "gfx/misc/pokegear_sprites.lz"
; 91508

INCBIN "baserom.gbc",$91508,$9163e - $91508

; known jump sources: 9110a (24:510a)
Function9163e: ; 9163e (24:563e)
	jr asm_9166f

; no known jump sources
Function91640: ; 91640 (24:5640)
	push bc
	call Function9164e
	pop bc
	ld a, [$d958]
	ld hl, $6
	add hl, bc
	ld [hl], a
	ret

; known jump sources: 91641 (24:5641)
Function9164e: ; 9164e (24:564e)
	ld hl, $ffa9
	ld a, [hl]
	and $80
	jr nz, .asm_9165c
	ld a, [hl]
	and $40
	jr nz, .asm_91666
	ret
.asm_9165c
	ld hl, $d958
	ld a, [hl]
	and a
	ret z
	dec [hl]
	dec [hl]
	jr asm_9166f
.asm_91666
	ld hl, $d958
	ld a, [hl]
	cp $50
	ret nc
	inc [hl]
	inc [hl]
asm_9166f: ; 9166f (24:566f)
	ld hl, $d958
	ld d, [hl]
	ld hl, $56ad
.asm_91676
	ld a, [hli]
	cp $ff
	jr z, .asm_91682
	cp d
	jr z, .asm_91686
	inc hl
	inc hl
	jr .asm_91676
.asm_91682
	call Function91888
	ret
.asm_91686
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $568e
	push de
	jp [hl]
	ld a, [EnemyAccLevel] ; $c6d9
	and a
	ret z
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $c556
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret
; 916a1 (24:56a1)

INCBIN "baserom.gbc",$916a1,$916c9 - $916a1
	call Function91744
	jr nc, .asm_91740
	ld a, [TimeOfDay] ; $d269
	and a
	jp z, Function91766
	jp Function91753
	call Function91744
	jr nc, .asm_91740
	jp Function9177b
	call Function91744
	jr nc, .asm_91740
	jp Function91790
	call Function91744
	jr nc, .asm_91740
	jp Function917a5
	ld a, [EnemySDefLevel] ; $c6d8
	cp $9
	jr nz, .asm_91740
	jp Function917d5
	call Function91744
	jr c, .asm_91740
	ld a, [$d957]
	bit 3, a
	jr z, .asm_91740
	jp Function917ea
	call Function91744
	jr c, .asm_91740
	ld a, [$d957]
	bit 3, a
	jr z, .asm_91740
	jp Function917ff
	call Function91744
	jr c, .asm_91740
	ld a, [$d957]
	bit 3, a
	jr z, .asm_91740
	jp Function91829
	ld a, [StatusFlags] ; $d84c
	bit 4, a
	jr z, .asm_91740
	ld a, [EnemySDefLevel] ; $c6d8
	cp $24
	jr z, .asm_9173d
	cp $25
	jr z, .asm_9173d
	cp $26
	jr nz, .asm_91740
.asm_9173d
	jp Function9183e
.asm_91740
	call Function91888
	ret

; known jump sources: 916c9 (24:56c9), 916d8 (24:56d8), 916e0 (24:56e0), 916e8 (24:56e8), 916fa (24:56fa), 91709 (24:5709), 91718 (24:5718)
Function91744: ; 91744 (24:5744)
	ld a, [EnemySDefLevel] ; $c6d8
	cp $5f
	jr z, .asm_91751
	cp $2f
	jr c, .asm_91751
	and a
	ret
.asm_91751
	scf
	ret

; known jump sources: 916d5 (24:56d5)
Function91753: ; 91753 (24:5753)
	xor a
	ld [DefaultFlypoint], a ; $d002
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58bf
	ret

; known jump sources: 916d2 (24:56d2)
Function91766: ; 91766 (24:5766)
	ld a, $1
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58cc
	ret

; known jump sources: 916dd (24:56dd)
Function9177b: ; 9177b (24:577b)
	ld a, $2
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58d6
	ret

; known jump sources: 916e5 (24:56e5)
Function91790: ; 91790 (24:5790)
	ld a, $3
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58e1
	ret

; known jump sources: 916ed (24:56ed)
Function917a5: ; 917a5 (24:57a5)
	ld a, $4
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $57d4
	ld a, [StatusFlags2] ; $d84d
	bit 0, a
	ret z
	ld de, $57c3
	ret
; 917c3 (24:57c3)

INCBIN "baserom.gbc",$917c3,$917d5 - $917c3

; known jump sources: 916f7 (24:56f7)
Function917d5: ; 917d5 (24:57d5)
	ld a, $9
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58ef
	ret

; known jump sources: 91706 (24:5706)
Function917ea: ; 917ea (24:57ea)
	ld a, $5
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58f5
	ret

; known jump sources: 91715 (24:5715)
Function917ff: ; 917ff (24:57ff)
	ld a, $6
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $5905
	ret
; 91814 (24:5814)

INCBIN "baserom.gbc",$91814,$91829 - $91814

; known jump sources: 91724 (24:5724)
Function91829: ; 91829 (24:5829)
	ld a, $8
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $5914
	ret

; known jump sources: 9173d (24:573d)
Function9183e: ; 9183e (24:583e)
	ld a, $a
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $2e
	ld hl, $4612
	call Function9187c
	ld de, $58ef
	ret
; 91853 (24:5853)

INCBIN "baserom.gbc",$91853,$91854 - $91853

; no known jump sources
Function91854: ; 91854 (24:5854)
	push de
	ld a, e
	ld [EnemyTurnsTaken], a ; $c6dc
	ld de, $0
	call PlayMusic
	pop de
	ld a, e
	ld [CurMusic], a ; $c2c0
	call PlayMusic
	ret

; no known jump sources
Function91868: ; 91868 (24:5868)
	push de
	ld a, $fe
	ld [EnemyTurnsTaken], a ; $c6dc
	ld de, $0
	call PlayMusic
	pop de
	ld de, $3f
	call PlayMusic
	ret

; known jump sources: 9175f (24:575f), 91774 (24:5774), 91789 (24:5789), 9179e (24:579e), 917b3 (24:57b3), 917e3 (24:57e3), 917f8 (24:57f8), 9180d (24:580d), 91837 (24:5837), 9184c (24:584c)
Function9187c: ; 9187c (24:587c)
	ld [EnemyAccLevel], a ; $c6d9
	ld a, l
	ld [EnemyEvaLevel], a ; $c6da
	ld a, h
	ld [$c6db], a
	ret

; known jump sources: 91682 (24:5682), 91740 (24:5740)
Function91888: ; 91888 (24:5888)
	call Function9189d
	call Function918a9
	xor a
	ld [EnemyAccLevel], a ; $c6d9
	ld [EnemyEvaLevel], a ; $c6da
	ld [$c6db], a
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 91888 (24:5888)
Function9189d: ; 9189d (24:589d)
	ld de, $0
	call PlayMusic
	ld a, $ff
	ld [EnemyTurnsTaken], a ; $c6dc
	ret

; known jump sources: 9188b (24:588b)
Function918a9: ; 918a9 (24:58a9)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $c541
	ld bc, $312
	call ClearBox
	ld hl, $c590
	ld bc, $412
	call TextBox
	ret

RadioChannels: ; 918bf
; Buena's Password is at 0x917c3
	db "OAK's ", $e1, $e2, " Talk@"
	db "#DEX Show@"
	db "#MON Music@"
	db "Lucky Channel@"
	db "?????@"
	db "Places & People@"
	db "Let's All Sing!@"
	db "# FLUTE@"
; 9191c

Function9191c: ; 9191c
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	ld a, [VramState]
	push af
	xor a
	ld [VramState], a
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	call Function90c4e
	callba Function8cf53
	ld a, $8
	call Function3cb4
	ld a, $e3
	ld [rLCDC], a
	call Function90d56
	ld [DefaultFlypoint], a
	ld [$d003], a
	xor a
	ld [hBGMapMode], a
	call Function91a04
	call Function3200
	ld a, [DefaultFlypoint]
	call Function9106a
	ld a, [$d003]
	call Function91098
	ld a, c
	ld [$d004], a
	ld a, b
	ld [StartFlypoint], a
	ld b, $2
	call GetSGBLayout
	call Function32f9
	ld a, [hCGB]
	and a
	jr z, .asm_9198b
	ld a, $e4
	call Functioncf8
	call DelayFrame

.asm_9198b
	ld a, [DefaultFlypoint]
	cp $2f
	jr nc, .asm_9199b
	ld d, $2e
	ld e, $1
	call Function919b0
	jr .asm_919a1

.asm_9199b
	call Function910e8
	call Function919b0

.asm_919a1
	pop af
	ld [VramState], a
	pop af
	ld [$ffaa], a
	pop af
	ld [Options], a
	call WhiteBGMap
	ret
; 919b0

Function919b0: ; 919b0
.asm_919b0
	call Functiona57
	ld hl, hJoyPressed
	ld a, [hl]
	and $2
	ret nz
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_919d4
	ld a, [hl]
	and $80
	jr nz, .asm_919e1
.asm_919c7
	push de
	callba Function8cf69
	pop de
	call DelayFrame
	jr .asm_919b0

.asm_919d4
	ld hl, $d003
	ld a, [hl]
	cp d
	jr c, .asm_919de
	ld a, e
	dec a
	ld [hl], a

.asm_919de
	inc [hl]
	jr .asm_919ec

.asm_919e1
	ld hl, $d003
	ld a, [hl]
	cp e
	jr nz, .asm_919eb
	ld a, d
	inc a
	ld [hl], a

.asm_919eb
	dec [hl]

.asm_919ec
	push de
	ld a, [$d003]
	call Function910b4
	ld a, [$d004]
	ld c, a
	ld a, [StartFlypoint]
	ld b, a
	ld a, [$d003]
	call Function910d4
	pop de
	jr .asm_919c7
; 91a04

Function91a04: ; 91a04
	ld a, [DefaultFlypoint]
	cp $2f
	jr nc, .asm_91a0f
	ld e, $0
	jr .asm_91a11

.asm_91a0f
	ld e, $1

.asm_91a11
	callba Function91ae1
	ld a, $7
	ld bc, $0006
	ld hl, $c4a1
	call ByteFill
	ld hl, TileMap
	ld [hl], $6
	ld hl, $c4a7
	ld [hl], $17
	ld hl, $c4bb
	ld [hl], $16
	ld hl, $c4cf
	ld [hl], $26
	ld a, $7
	ld bc, $000b
	ld hl, $c4d0
	call ByteFill
	ld hl, $c4db
	ld [hl], $17
	ld a, [$d003]
	call Function910b4
	callba TownMapPals
	ret
; 91a53

Function91a53: ; 91a53
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function91a87
	ld c, $64
	call DelayFrames
.asm_91a62
	call Functiona57
	ld a, [hJoyPressed]
	and $3
	jr nz, .asm_91a7f
	ld a, [EnemyEvaLevel]
	ld l, a
	ld a, [$c6db]
	ld h, a
	ld a, [EnemyAccLevel]
	and a
	jr z, .asm_91a7a
	rst FarCall

.asm_91a7a
	call DelayFrame
	jr .asm_91a62

.asm_91a7f
	pop af
	ld [Options], a
	call Function91492
	ret
; 91a87

Function91a87: ; 91a87
	ld a, $ff
	ld [EnemyTurnsTaken], a
	ld hl, $5ab9
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $5a9b
	push de
	jp [hl]
; 91a9b

INCBIN "baserom.gbc",$91a9b,$91ae1 - $91a9b

Function91ae1: ; 91ae1
	ld a, e
	and a
	jr nz, .asm_91aec
	call Function91ff2
	call FillJohtoMap
	ret

.asm_91aec
	call Function91ff2
	call FillKantoMap
	ret
; 91af3


Function91af3: ; 91af3
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	ld hl, $ffaa
	ld a, [hl]
	push af
	ld [hl], $1
	xor a
	ld [hBGMapMode], a
	callba Function8cf53
	call Function91ff2
	ld de, $62e1
	ld hl, $9300
	ld bc, $2406
	call Request1bpp
	call FlyMap
	call Function91c8f
	ld b, $2
	call GetSGBLayout
	call Function32f9
.asm_91b29
	call Functiona57
	ld hl, hJoyPressed
	ld a, [hl]
	and $2
	jr nz, .asm_91b4a
	ld a, [hl]
	and $1
	jr nz, .asm_91b4e
	call Function91b73
	call Function91c17
	callba Function8cf69
	call DelayFrame
	jr .asm_91b29

.asm_91b4a
	ld a, $ff
	jr .asm_91b5a

.asm_91b4e
	ld a, [DefaultFlypoint]
	ld l, a
	ld h, $0
	add hl, hl
	ld de, $5c5f
	add hl, de
	ld a, [hl]

.asm_91b5a
	ld [DefaultFlypoint], a
	pop af
	ld [$ffaa], a
	call WhiteBGMap
	ld a, $90
	ld [hWY], a
	xor a
	ld [hBGMapAddress], a
	ld a, $98
	ld [$ffd7], a
	ld a, [DefaultFlypoint]
	ld e, a
	ret
; 91b73

Function91b73: ; 91b73
	ld a, [StartFlypoint]
	ld e, a
	ld a, [EndFlypoint]
	ld d, a
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, .asm_91b89
	ld a, [hl]
	and $80
	jr nz, .asm_91b9b
	ret

.asm_91b89
	ld hl, DefaultFlypoint
	ld a, [hl]
	cp d
	jr nz, .asm_91b93
	ld a, e
	dec a
	ld [hl], a

.asm_91b93
	inc [hl]
	call Function91c3c
	jr z, .asm_91b89
	jr .asm_91bab

.asm_91b9b
	ld hl, DefaultFlypoint
	ld a, [hl]
	cp e
	jr nz, .asm_91ba5
	ld a, d
	inc a
	ld [hl], a

.asm_91ba5
	dec [hl]
	call Function91c3c
	jr z, .asm_91b9b

.asm_91bab
	call TownMapBubble
	call WaitBGMap
	xor a
	ld [hBGMapMode], a
	ret
; 91bb5

TownMapBubble: ; 91bb5
; Draw the bubble containing the location text in the town map HUD
	
; Top-left corner
	ld hl, TileMap + 1 ; (1,0)
	ld a, $30
	ld [hli], a
	
; Top row
	ld bc, 16
	ld a, " "
	call ByteFill
	
; Top-right corner
	ld a, $31
	ld [hl], a
	ld hl, TileMap + 1 + 20 ; (1,1)
	
	
; Middle row
	ld bc, 18
	ld a, " "
	call ByteFill
	
	
; Bottom-left corner
	ld hl, TileMap + 1 + 40 ; (1,2)
	ld a, $32
	ld [hli], a
	
; Bottom row
	ld bc, 16
	ld a, " "
	call ByteFill
	
; Bottom-right corner
	ld a, $33
	ld [hl], a
	
	
; Print "Where?"
	ld hl, TileMap + 2 ; (2,0)
	ld de, .Where
	call PlaceString
	
; Print the name of the default flypoint
	call .Name
	
; Up/down arrows
	ld hl, TileMap + 18 + 20 ; (18,1)
	ld [hl], $34	
	ret
	
.Where
	db "Where?@"

.Name
; We need the map location of the default flypoint
	ld a, [DefaultFlypoint]
	ld l, a
	ld h, 0
	add hl, hl ; two bytes per flypoint
	ld de, Flypoints
	add hl, de
	ld e, [hl]
	
	callba GetLandmarkName
	
	ld hl, TileMap + 2 + 20 ; (2,1)
	ld de, StringBuffer1
	call PlaceString
	ret
; 91c17

Function91c17: ; 91c17
	ld a, [DefaultFlypoint]
	ld l, a
	ld h, $0
	add hl, hl
	ld de, Flypoints
	add hl, de
	ld e, [hl]
	callba GetLandmarkCoords
	ld a, [$d003]
	ld c, a
	ld a, [$d004]
	ld b, a
	ld hl, $0004
	add hl, bc
	ld [hl], e
	ld hl, $0005
	add hl, bc
	ld [hl], d
	ret
; 91c3c

Function91c3c: ; 91c3c
	push bc
	push de
	push hl
	ld l, [hl]
	ld h, 0
	add hl, hl
	ld de, Flypoints + 1
	add hl, de
	ld c, [hl]
	call HasVisitedSpawn
	pop hl
	pop de
	pop bc
	and a
	ret
; 91c50

HasVisitedSpawn: ; 91c50
; Check if spawn point c has been visited.
	ld hl, VisitedSpawns
	ld b, CHECK_FLAG
	ld d, 0
	ld a, PREDEF_FLAG
	call Predef
	ld a, c
	ret
; 91c5e

Flypoints: ; 91c5e
; landmark, spawn point

	const_def

; Johto
	const FLY_NEW_BARK
	const FLY_CHERRYGROVE
	const FLY_VIOLET
	const FLY_AZALEA
	const FLY_GOLDENROD
	const FLY_ECRUTEAK
	const FLY_OLIVINE
	const FLY_CIANWOOD
	const FLY_MAHOGANY
	const FLY_LAKE
	const FLY_BLACKTHORN
	const FLY_MT_SILVER

	db NEW_BARK_TOWN,    SPAWN_NEW_BARK
	db CHERRYGROVE_CITY, SPAWN_CHERRYGROVE
	db VIOLET_CITY,      SPAWN_VIOLET
	db AZALEA_TOWN,      SPAWN_AZALEA
	db GOLDENROD_CITY,   SPAWN_GOLDENROD
	db ECRUTEAK_CITY,    SPAWN_ECRUTEAK
	db OLIVINE_CITY,     SPAWN_OLIVINE
	db CIANWOOD_CITY,    SPAWN_CIANWOOD
	db MAHOGANY_TOWN,    SPAWN_MAHOGANY
	db LAKE_OF_RAGE,     SPAWN_LAKE
	db BLACKTHORN_CITY,  SPAWN_BLACKTHORN
	db SILVER_CAVE,      SPAWN_MT_SILVER

; Kanto
	const FLY_PALLET
	const FLY_VIRIDIAN
	const FLY_PEWTER
	const FLY_CERULEAN
	const FLY_VERMILION
	const FLY_ROCK_TUNNEL
	const FLY_LAVENDER
	const FLY_CELADON
	const FLY_SAFFRON
	const FLY_FUCHSIA
	const FLY_CINNABAR
	const FLY_INDIGO_PLATEAU

	db PALLET_TOWN,      SPAWN_PALLET
	db VIRIDIAN_CITY,    SPAWN_VIRIDIAN
	db PEWTER_CITY,      SPAWN_PEWTER
	db CERULEAN_CITY,    SPAWN_CERULEAN
	db VERMILION_CITY,   SPAWN_VERMILION
	db ROCK_TUNNEL,      SPAWN_ROCK_TUNNEL
	db LAVENDER_TOWN,    SPAWN_LAVENDER
	db CELADON_CITY,     SPAWN_CELADON
	db SAFFRON_CITY,     SPAWN_SAFFRON
	db FUCHSIA_CITY,     SPAWN_FUCHSIA
	db CINNABAR_ISLAND,  SPAWN_CINNABAR
	db INDIGO_PLATEAU,   SPAWN_INDIGO_PLATEAU

	db -1
; 91c8f

Function91c8f: ; 91c8f
	ret
; 91c90

FlyMap: ; 91c90
	
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	
; If we're not in a valid location, i.e. Pokecenter floor 2F,
; the backup map information is used
	
	cp SPECIAL_MAP
	jr nz, .CheckRegion
	
	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a
	call GetWorldMapLocation
	
.CheckRegion
; The first 46 locations are part of Johto. The rest are in Kanto
	cp KANTO_LANDMARK
	jr nc, .KantoFlyMap
	
.JohtoFlyMap
; Note that .NoKanto should be modified in tandem with this branch
	
	push af
	
; Start from New Bark Town
	ld a, FLY_NEW_BARK
	ld [DefaultFlypoint], a
	
; Flypoints begin at New Bark Town...
	ld [StartFlypoint], a
; ..and end at Silver Cave
	ld a, FLY_MT_SILVER
	ld [EndFlypoint], a
	
; Fill out the map
	call FillJohtoMap
	call .MapHud
	pop af
	call TownMapPlayerIcon
	ret
	
.KantoFlyMap
	
; The event that there are no flypoints enabled in a map is not
; accounted for. As a result, if you attempt to select a flypoint
; when there are none enabled, the game will crash. Additionally,
; the flypoint selection has a default starting point that
; can be flown to even if none are enabled
	
; To prevent both of these things from happening when the player
; enters Kanto, fly access is restricted until Indigo Plateau is
; visited and its flypoint enabled
	
	push af
	ld c, SPAWN_INDIGO_PLATEAU
	call HasVisitedSpawn
	and a
	jr z, .NoKanto
	
; Kanto's map is only loaded if we've visited Indigo Plateau
	
; Flypoints begin at Pallet Town...
	ld a, FLY_PALLET
	ld [StartFlypoint], a
; ...and end at Indigo Plateau
	ld a, FLY_INDIGO_PLATEAU
	ld [EndFlypoint], a
	
; Because Indigo Plateau is the first flypoint the player
; visits, it's made the default flypoint
	ld [DefaultFlypoint], a
	
; Fill out the map
	call FillKantoMap
	call .MapHud
	pop af
	call TownMapPlayerIcon
	ret
	
.NoKanto
; If Indigo Plateau hasn't been visited, we use Johto's map instead
	
; Start from New Bark Town
	ld a, FLY_NEW_BARK
	ld [DefaultFlypoint], a
	
; Flypoints begin at New Bark Town...
	ld [StartFlypoint], a
; ..and end at Silver Cave
	ld a, FLY_MT_SILVER
	ld [EndFlypoint], a
	
	call FillJohtoMap
	
	pop af
	
.MapHud
	call TownMapBubble
	call TownMapPals
	
	ld hl, VBGMap0 ; BG Map 0
	call TownMapBGUpdate
	
	call TownMapMon
	ld a, c
	ld [$d003], a
	ld a, b
	ld [$d004], a
	ret
; 91d11

Function91d11: ; 91d11
	ld a, [DefaultFlypoint]
	push af
	ld a, [$d003]
	push af
	ld a, e
	ld [DefaultFlypoint], a
	call ClearSprites
	xor a
	ld [hBGMapMode], a
	ld a, $1
	ld [$ffaa], a
	ld de, $62d1
	ld hl, $87f0
	ld bc, $2401
	call Request2bpp
	call Function91ed0
	ld hl, $8780
	ld c, $4
	call Request2bpp
	call Function91ff2
	call FillKantoMap
	call Function91de9
	call TownMapPals
	ld hl, VBGMap1
	call TownMapBGUpdate
	call FillJohtoMap
	call Function91de9
	call TownMapPals
	ld hl, VBGMap0
	call TownMapBGUpdate
	ld b, $2
	call GetSGBLayout
	call Function32f9
	xor a
	ld [hBGMapMode], a
	xor a
	call Function91e1e
.asm_91d6e
	call Functiona57
	ld hl, hJoyPressed
	ld a, [hl]
	and $3
	jr nz, .asm_91d8f
	ld a, [hJoypadDown]
	and $4
	jr nz, .asm_91d87
	call Function91d9b
	call Function91dcd
	jr .asm_91d8a

.asm_91d87
	call Function91e5a

.asm_91d8a
	call DelayFrame
	jr .asm_91d6e

.asm_91d8f
	call ClearSprites
	pop af
	ld [$d003], a
	pop af
	ld [DefaultFlypoint], a
	ret
; 91d9b

Function91d9b: ; 91d9b
	ld a, [hl]
	and $20
	jr nz, .asm_91da6
	ld a, [hl]
	and $10
	jr nz, .asm_91db7
	ret

.asm_91da6
	ld a, [hWY]
	cp $90
	ret z
	call ClearSprites
	ld a, $90
	ld [hWY], a
	xor a
	call Function91e1e
	ret

.asm_91db7
	ld a, [StatusFlags]
	bit 6, a
	ret z
	ld a, [hWY]
	and a
	ret z
	call ClearSprites
	xor a
	ld [hWY], a
	ld a, $1
	call Function91e1e
	ret
; 91dcd

Function91dcd: ; 91dcd
	ld a, [$ff9b]
	ld e, a
	and $f
	ret nz
	ld a, e
	and $10
	jr nz, .asm_91ddc
	call ClearSprites
	ret

.asm_91ddc
	ld hl, TileMap
	ld de, Sprites
	ld bc, $00a0
	call CopyBytes
	ret
; 91de9

Function91de9: ; 91de9
	ld hl, TileMap
	ld bc, $0014
	ld a, $7f
	call ByteFill
	ld hl, $c4b4
	ld a, $6
	ld [hli], a
	ld bc, $0012
	ld a, $7
	call ByteFill
	ld [hl], $17
	call GetPokemonName
	ld hl, $c4a2
	call PlaceString
	ld h, b
	ld l, c
	ld de, $5e16
	call PlaceString
	ret
; 91e16

INCBIN "baserom.gbc",$91e16,$91e1e - $91e16

Function91e1e: ; 91e1e
	ld [$d003], a
	ld e, a
	callba Function2a01f
	ld de, TileMap
	ld hl, Sprites
.asm_91e2e
	ld a, [de]
	and a
	jr z, .asm_91e4d
	push de
	ld e, a
	push hl
	callba GetLandmarkCoords
	pop hl
	ld a, d
	sub $4
	ld [hli], a
	ld a, e
	sub $4
	ld [hli], a
	ld a, $7f
	ld [hli], a
	xor a
	ld [hli], a
	pop de
	inc de
	jr .asm_91e2e

.asm_91e4d
	ld hl, Sprites
	ld de, TileMap
	ld bc, $00a0
	call CopyBytes
	ret
; 91e5a

Function91e5a: ; 91e5a
	call Function91ea9
	ret c
	ld a, [DefaultFlypoint]
	ld e, a
	callba GetLandmarkCoords
	ld c, e
	ld b, d
	ld de, $5e9c
	ld hl, Sprites
.asm_91e70
	ld a, [de]
	cp $80
	jr z, .asm_91e91
	add b
	ld [hli], a
	inc de
	ld a, [de]
	add c
	ld [hli], a
	inc de
	ld a, [de]
	add $78
	ld [hli], a
	inc de
	push bc
	ld c, $0
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_91e8c
	inc c

.asm_91e8c
	ld a, c
	ld [hli], a
	pop bc
	jr .asm_91e70

.asm_91e91
	ld hl, $c410
	ld bc, $0090
	xor a
	call ByteFill
	ret
; 91e9c

INCBIN "baserom.gbc",$91e9c,$91ea9 - $91e9c

Function91ea9: ; 91ea9
	ld a, [DefaultFlypoint]
	cp $5f
	jr z, .asm_91ebc
	cp $2f
	jr c, .asm_91ebc
	ld a, [$d003]
	and a
	jr z, .asm_91ec4
	jr .asm_91ec2

.asm_91ebc
	ld a, [$d003]
	and a
	jr nz, .asm_91ec4

.asm_91ec2
	and a
	ret

.asm_91ec4
	ld hl, Sprites
	ld bc, $00a0
	xor a
	call ByteFill
	scf
	ret
; 91ed0

Function91ed0: ; 91ed0
	ld a, [DefaultFlypoint]
	cp $5f
	jr z, .asm_91ede
	callba GetPlayerIcon
	ret

.asm_91ede
	ld de, $4cb2
	ld b, $24
	ret
; 91ee4

TownMapBGUpdate: ; 91ee4
; Update BG Map tiles and attributes

; BG Map address
	ld a, l
	ld [hBGMapAddress], a
	ld a, h
	ld [$ffd7], a
	
; Only update palettes on CGB
	ld a, [hCGB]
	and a
	jr z, .tiles
	
; BG Map mode 2 (palettes)
	ld a, 2
	ld [hBGMapMode], a
	
; The BG Map is updated in thirds, so we wait
; 3 frames to update the whole screen's palettes.
	ld c, 3
	call DelayFrames
	
.tiles
; Update BG Map tiles
	call WaitBGMap
	
; Turn off BG Map update
	xor a
	ld [hBGMapMode], a
	ret
; 91eff

FillJohtoMap: ; 91eff
	ld de, JohtoMap
	jr FillTownMap
	
FillKantoMap: ; 91f04
	ld de, KantoMap
	
FillTownMap: ; 91f07
	ld hl, TileMap
.loop
	ld a, [de]
	cp $ff
	ret z
	ld a, [de]
	ld [hli], a
	inc de
	jr .loop
; 91f13

TownMapPals: ; 91f13
; Assign palettes based on tile ids

	ld hl, TileMap
	ld de, AttrMap
	ld bc, 360
.loop
; Current tile
	ld a, [hli]
	push hl
	
; HP/borders use palette 0
	cp $60
	jr nc, .pal0
	
; The palette data is condensed to nybbles,
; least-significant first.
	ld hl, .Pals
	srl a
	jr c, .odd
	
; Even-numbered tile ids take the bottom nybble...
	add l
	ld l, a
	ld a, h
	adc 0
	ld h, a
	ld a, [hl]
	and %111
	jr .update
	
.odd
; ...and odd ids take the top.
	add l
	ld l, a
	ld a, h
	adc 0
	ld h, a
	ld a, [hl]
	swap a
	and %111
	jr .update
	
.pal0
	xor a
	
.update
	pop hl
	ld [de], a
	inc de
	dec bc
	ld a, b
	or c
	jr nz, .loop
	ret

.Pals
	db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
	db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
	db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
	db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
; 91f7b

TownMapMon: ; 91f7b
; Draw the FlyMon icon at town map location in 

; Get FlyMon species
	ld a, [CurPartyMon]
	ld hl, PartySpecies
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	ld [$d265], a
	
; Get FlyMon icon
	ld e, 8 ; starting tile in VRAM
	callba GetSpeciesIcon
	
; Animation/palette
	ld de, $0000
	ld a, $0
	call Function3b2a
	
	ld hl, 3
	add hl, bc
	ld [hl], 8
	ld hl, 2
	add hl, bc
	ld [hl], 0
	ret
; 91fa6

TownMapPlayerIcon: ; 91fa6
; Draw the player icon at town map location in a
	push af
	
	callba GetPlayerIcon
	
; Standing icon
	ld hl, $8100
	ld c, 4 ; # tiles
	call Request2bpp
	
; Walking icon
	ld hl, $00c0
	add hl, de
	ld d, h
	ld e, l
	ld hl, $8140
	ld c, 4 ; # tiles
	ld a, $30
	call Request2bpp
	
; Animation/palette
	ld de, $0000
	ld b, $0a ; Male
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_91fd3
	ld b, $1e ; Female
	
.asm_91fd3
	ld a, b
	call Function3b2a
	
	ld hl, $0003
	add hl, bc
	ld [hl], $10
	
	pop af
	ld e, a
	push bc
	callba GetLandmarkCoords
	pop bc
	
	ld hl, 4
	add hl, bc
	ld [hl], e
	ld hl, 5
	add hl, bc
	ld [hl], d
	ret
; 0x91ff2

Function91ff2: ; 91ff2
	ld hl, TownMapGFX
	ld de, VTiles2
	ld bc, BANK(TownMapGFX) << 8 + $30
	call Functione73
	ret
; 91fff


JohtoMap: ; 91fff
INCBIN "gfx/misc/johto.bin"
; 92168

KantoMap: ; 92168
INCBIN "gfx/misc/kanto.bin"
; 922d1


INCBIN "baserom.gbc",$922d1,$92402 - $922d1


INCLUDE "stats/wild/fish.asm"

Function926c7:
	ld hl, Options ; $cfcc
	set 4, [hl]
	call Function926f7
	call DelayFrame
.asm_926d2
	call Function927af
	jr nc, .asm_926d2
	call WaitSFX
	ld de, $9d
	call PlaySFX
	call WaitSFX
	call WhiteBGMap
	ld a, BANK(Function105fd0)
	ld hl, Function105fd0
	rst $8 ;  ; indirect jump to Function105fd0 (105fd0 (41:5fd0))
	ld hl, Options ; $cfcc
	res 4, [hl]
	ld hl, rLCDC ; $ff40
	res 2, [hl]
	ret

; known jump sources: 926cc (24:66cc)
Function926f7: ; 926f7 (24:66f7)
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	ld de, $0
	call PlayMusic
	call DelayFrame
	call DisableLCD
	ld hl, $9800
	ld bc, $400
	ld a, $7f
	call ByteFill
	ld b, $5
	call GetSGBLayout
	ld hl, Function8cf53
	ld a, BANK(Function8cf53)
	rst $8 ;  ; indirect jump to Function8cf53 (8cf53 (23:4f53))
	ld hl, PlayerSDefLevel ; $c6d0
	ld bc, $48
	xor a
	call ByteFill
	ld hl, $75cd
	ld de, $8000
	call Decompress
	ld hl, $782d
	ld de, $8400
	call Decompress
	ld hl, $744d
	ld de, $9000
	call Decompress
	ld hl, $75cd
	ld de, $9250
	call Decompress
	ld hl, $735d
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $f0
	call CopyBytes
	ld hl, rLCDC ; $ff40
	set 2, [hl]
	call EnableLCD
	ld hl, PlayerSDefLevel ; $c6d0
	ld bc, $64
	xor a
	call ByteFill
	call Function92a98
	call Function9279b
	ld a, $7
	ld hl, $c300
	ld [hli], a
	ld [hl], $40
	xor a
	ld [$cf63], a
	ld a, $ff
	ld [$c709], a
	ld de, $12
	call PlayMusic
	xor a
	ld [DefaultFlypoint], a ; $d002
	call Random
	and $2a
	ret nz
	ld a, $1
	ld [DefaultFlypoint], a ; $d002
	ret

; known jump sources: 92771 (24:6771)
Function9279b: ; 9279b (24:679b)
	ld a, $e4
	call DmgToCgbBGPals
	ld de, $e4e4
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr nz, .asm_927ab
	ld de, $c0e4
.asm_927ab
	call DmgToCgbObjPals
	ret

; known jump sources: 926d2 (24:66d2)
Function927af: ; 927af (24:67af)
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_927d1
	call Function92844
	call Function92b0f
	xor a
	ld [$c3b5], a
	ld hl, Function8cfa8
	ld a, BANK(Function8cfa8)
	rst $8 ;  ; indirect jump to Function8cfa8 (8cfa8 (23:4fa8))
	call Function927f8
	call Function927d3
	call DelayFrame
	and a
	ret
.asm_927d1
	scf
	ret

; known jump sources: 927c9 (24:67c9)
Function927d3: ; 927d3 (24:67d3)
	ret
; 927d4 (24:67d4)

INCBIN "baserom.gbc",$927d4,$927f8 - $927d4

; known jump sources: 927c6 (24:67c6)
Function927f8: ; 927f8 (24:67f8)
	ld hl, $c4b9
	ld de, Coins ; $d855
	ld bc, $8204
	call PrintNum
	ld hl, $c4bf
	ld de, $c711
	ld bc, $8204
	call PrintNum
	ret
; 92811 (24:6811)

INCBIN "baserom.gbc",$92811,$92844 - $92811

; known jump sources: 927b6 (24:67b6)
Function92844: ; 92844 (24:6844)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $6853
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 92853 (24:6853)


; no known jump sources
Jumptable_92853: ; 92853 (24:6853)
	dw Function9287e
	dw Function9288e
	dw Function928c6
	dw Function928d6
	dw Function928e6
	dw Function92900
	dw Function92910
	dw Function9292a
	dw Function9293a
	dw Function92879
	dw Function92879
	dw Function92879
	dw Function92955
	dw Function9296b
	dw Function92987
	dw Function9299e
	dw Function929a4
	dw Function929d9
	dw Function929f0


; known jump sources: 9287e (24:687e), 92899 (24:6899), 928cf (24:68cf), 928dd (24:68dd), 928fa (24:68fa), 92907 (24:6907), 92924 (24:6924), 92931 (24:6931), 9294e (24:694e), 9295c (24:695c), 9295f (24:695f), 92963 (24:6963), 92983 (24:6983), 9299a (24:699a), 929a1 (24:69a1), 929d5 (24:69d5)
Function92879: ; 92879 (24:6879)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Function9287e: ; 9287e (24:687e)
	call Function92879
	xor a
	ld [WeatherCount], a ; $c70b
	ld [LoweredStat], a ; $c70c
	ld a, $ff
	ld [EffectFailed], a ; $c70d
	ret

; no known jump sources
Function9288e: ; 9288e (24:688e)
	call Function9307c
	jr nc, .asm_92899
	ld a, $12
	ld [$cf63], a
	ret
.asm_92899
	call Function92879
	call Function9303f
	call Function93002
	ld a, $20
	ld [$cf64], a
	ld a, $4
	ld [PlayerSDefLevel], a ; $c6d0
	ld [$c6e0], a
	ld [$c6f0], a
	ld a, $4
	ld [EnemyAccLevel], a ; $c6d9
	ld [CurEnemyMoveNum], a ; $c6e9
	ld [LastPlayerCounterMove], a ; $c6f9
	call WaitSFX
	ld a, $2c
	call Function9331e
	ret

; no known jump sources
Function928c6: ; 928c6 (24:68c6)
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_928cf
	dec [hl]
	ret
.asm_928cf
	call Function92879
	xor a
	ld [hJoypadSum], a ; $ff00+$a5
	ret

; no known jump sources
Function928d6: ; 928d6 (24:68d6)
	ld hl, hJoypadSum ; $ffa5
	ld a, [hl]
	and $1
	ret z
	call Function92879
	call Function92a2b
	ld [PlayerSDefLevel], a ; $c6d0

; no known jump sources
Function928e6: ; 928e6 (24:68e6)
	ld a, [PlayerSDefLevel] ; $c6d0
	cp $0
	ret nz
	ld a, $ba
	call Function9331e
	ld bc, PlayerSDefLevel ; $c6d0
	ld de, EnemyScreens ; $c700
	call Function929f6
	call Function92879
	xor a
	ld [hJoypadSum], a ; $ff00+$a5

; no known jump sources
Function92900: ; 92900 (24:6900)
	ld hl, hJoypadSum ; $ffa5
	ld a, [hl]
	and $1
	ret z
	call Function92879
	call Function92a2e
	ld [$c6e0], a

; no known jump sources
Function92910: ; 92910 (24:6910)
	ld a, [$c6e0]
	cp $0
	ret nz
	ld a, $ba
	call Function9331e
	ld bc, $c6e0
	ld de, PlayerReflectCount ; $c703
	call Function929f6
	call Function92879
	xor a
	ld [hJoypadSum], a ; $ff00+$a5

; no known jump sources
Function9292a: ; 9292a (24:692a)
	ld hl, hJoypadSum ; $ffa5
	ld a, [hl]
	and $1
	ret z
	call Function92879
	call Function92a60
	ld [$c6f0], a

; no known jump sources
Function9293a: ; 9293a (24:693a)
	ld a, [$c6f0]
	cp $0
	ret nz
	ld a, $ba
	call Function9331e
	ld bc, $c6f0
	ld de, EnemyLightScreenCount ; $c706
	call Function929f6
	call Function92879
	xor a
	ld [hJoypadSum], a ; $ff00+$a5
	ret

; no known jump sources
Function92955: ; 92955 (24:6955)
	ld a, [EffectFailed] ; $c70d
	cp $ff
	jr nz, .asm_92963
	call Function92879
	call Function92879
	ret
.asm_92963
	call Function92879
	ld a, $10
	ld [$cf64], a

; no known jump sources
Function9296b: ; 9296b (24:696b)
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_92980
	dec [hl]
	srl a
	ret z
	ld a, [rOBP0] ; $ff00+$48
	xor $ff
	ld e, a
	ld d, a
	call DmgToCgbObjPals
	ret
.asm_92980
	call Function9279b
	call Function92879
	ret

; no known jump sources
Function92987: ; 92987 (24:6987)
	xor a
	ld [WeatherCount], a ; $c70b
	ld [LoweredStat], a ; $c70c
	ld a, $e4
	call DmgToCgbBGPals
	call Function93124
	xor a
	ld [$cf64], a
	call Function92879
	ret

; no known jump sources
Function9299e: ; 9299e (24:699e)
	call Function93158
	call Function92879

; no known jump sources
Function929a4: ; 929a4 (24:69a4)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	and $1
	ret z
	ld hl, $c711
	ld a, [hli]
	ld d, a
	or [hl]
	jr z, .asm_929d5
	ld e, [hl]
	dec de
	ld [hl], e
	dec hl
	ld [hl], d
	ld hl, Coins ; $d855
	ld d, [hl]
	inc hl
	ld e, [hl]
	call Function92a04
	jr c, .asm_929c5
	inc de
.asm_929c5
	ld [hl], e
	dec hl
	ld [hl], d
	ld a, [$cf64]
	and $7
	ret z
	ld de, $67
	call PlaySFX
	ret
.asm_929d5
	call Function92879
	ret

; no known jump sources
Function929d9: ; 929d9 (24:69d9)
	call Function9304c
	call Functiona80
	call Function930e9
	jr c, .asm_929ea
	ld a, $0
	ld [$cf63], a
	ret
.asm_929ea
	ld a, $12
	ld [$cf63], a
	ret

; no known jump sources
Function929f0: ; 929f0 (24:69f0)
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: 928f7 (24:68f7), 92921 (24:6921), 9294b (24:694b)
Function929f6: ; 929f6 (24:69f6)
	push de
	call Function92a12
	pop de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	ret

; known jump sources: 929bf (24:69bf)
Function92a04: ; 92a04 (24:6a04)
	ld a, d
	cp $27
	jr c, .asm_92a10
	ld a, e
	cp $f
	jr c, .asm_92a10
	scf
	ret
.asm_92a10
	and a
	ret

; known jump sources: 929f7 (24:69f7)
Function92a12: ; 92a12 (24:6a12)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_92a1c
	ld a, $f
.asm_92a1c
	dec a
	and $f
	ld e, a
	ld d, $0
	ld hl, $1
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ret

; known jump sources: 928e0 (24:68e0)
Function92a2b: ; 92a2b (24:6a2b)
	ld a, $7
	ret

; known jump sources: 9290a (24:690a)
Function92a2e: ; 92a2e (24:6a2e)
	ld a, [Weather] ; $c70a
	cp $2
	jr c, .asm_92a4e
	ld a, [$c709]
	and a
	jr z, .asm_92a3f
	cp $ff
	jr nz, .asm_92a4e
.asm_92a3f
	call Function92a51
	jr nz, .asm_92a4e
	call Random
	cp $50
	jr nc, .asm_92a4e
	ld a, $a
	ret
.asm_92a4e
	ld a, $8
	ret

; known jump sources: 92a3f (24:6a3f)
Function92a51: ; 92a51 (24:6a51)
	ld a, [EnemyScreens] ; $c700
	and a
	ret z
	ld a, [$c701]
	and a
	ret z
	ld a, [PlayerLightScreenCount] ; $c702
	and a
	ret

; known jump sources: 92934 (24:6934)
Function92a60: ; 92a60 (24:6a60)
	ld a, [WeatherCount] ; $c70b
	and a
	jr z, .asm_92a95
	ld a, [LoweredStat] ; $c70c
	and a
	jr z, .asm_92a95
	ld a, [$c709]
	and a
	jr nz, .asm_92a84
	call Random
	cp $b4
	jr nc, .asm_92a95
	cp $78
	jr nc, .asm_92a92
	cp $3c
	jr nc, .asm_92a8f
	ld a, $15
	ret
.asm_92a84
	call Random
	cp $a0
	jr nc, .asm_92a95
	cp $50
	jr nc, .asm_92a92
.asm_92a8f
	ld a, $12
	ret
.asm_92a92
	ld a, $10
	ret
.asm_92a95
	ld a, $9
	ret

; known jump sources: 9276e (24:676e)
Function92a98: ; 92a98 (24:6a98)
	ld bc, PlayerSDefLevel ; $c6d0
	ld hl, $6
	add hl, bc
	ld de, $c440
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $1
	add hl, bc
	ld de, $7327
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $8
	add hl, bc
	ld [hl], $30
	call Function92af9
	ld bc, $c6e0
	ld hl, $6
	add hl, bc
	ld de, $c460
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $1
	add hl, bc
	ld de, $7339
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $8
	add hl, bc
	ld [hl], $50
	call Function92af9
	ld bc, $c6f0
	ld hl, $6
	add hl, bc
	ld de, $c480
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $1
	add hl, bc
	ld de, $734b
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $8
	add hl, bc
	ld [hl], $70
	call Function92af9
	ret

; known jump sources: 92ab5 (24:6ab5), 92ad5 (24:6ad5), 92af5 (24:6af5)
Function92af9: ; 92af9 (24:6af9)
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ld hl, $3
	add hl, bc
	ld [hl], $e
	ld hl, $4
	add hl, bc
	ld [hl], $0
	call Function92b53
	ret

; known jump sources: 927b9 (24:67b9)
Function92b0f: ; 92b0f (24:6b0f)
	ld bc, PlayerSDefLevel ; $c6d0
	call Function92b22
	ld bc, $c6e0
	call Function92b22
	ld bc, $c6f0
	call Function92b22
	ret

; known jump sources: 92b12 (24:6b12), 92b18 (24:6b18), 92b1e (24:6b1e)
Function92b22: ; 92b22 (24:6b22)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	and $f
	jr nz, .asm_92b2e
	call Function92bd4
.asm_92b2e
	ld hl, $5
	add hl, bc
	ld a, [hl]
	and a
	ret z
	ld d, a
	ld hl, $4
	add hl, bc
	add [hl]
	ld [hl], a
	and $f
	jr z, Function92b53
	ld hl, $6
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld e, $8
.asm_92b49
	ld a, [hl]
	add d
	ld [hli], a
	inc hl
	inc hl
	inc hl
	dec e
	jr nz, .asm_92b49
	ret

; known jump sources: 92b0b (24:6b0b), 92b3e (24:6b3e)
Function92b53: ; 92b53 (24:6b53)
	ld hl, $8
	add hl, bc
	ld a, [hl]
	ld [$c713], a
	ld a, $50
	ld [$c714], a
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $1
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	call Function92b83
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc a
	and $f
	cp $f
	jr nz, .asm_92b81
	xor a
.asm_92b81
	ld [hl], a
	ret

; known jump sources: 92b71 (24:6b71)
Function92b83: ; 92b83 (24:6b83)
	ld hl, $6
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
.asm_92b8a
	ld a, [$c714]
	ld [hli], a
	ld a, [$c713]
	ld [hli], a
	ld a, [de]
	ld [hli], a
	srl a
	srl a
	set 7, a
	ld [hli], a
	ld a, [$c714]
	ld [hli], a
	ld a, [$c713]
	add $8
	ld [hli], a
	ld a, [de]
	inc a
	inc a
	ld [hli], a
	srl a
	srl a
	set 7, a
	ld [hli], a
	inc de
	ld a, [$c714]
	sub $10
	ld [$c714], a
	cp $10
	jr nz, .asm_92b8a
	ret
; 92bbe (24:6bbe)

INCBIN "baserom.gbc",$92bbe,$92bd4 - $92bbe

; known jump sources: 92b2b (24:6b2b)
Function92bd4: ; 92bd4 (24:6bd4)
	ld hl, $0
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $6be4
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 92be4 (24:6be4)

INCBIN "baserom.gbc",$92be4,$93002 - $92be4

; known jump sources: 9289f (24:689f)
Function93002: ; 93002 (24:7002)
	ld a, [$c709]
	and a
	ret z
	ld hl, $7023
	ld a, [ScriptVar] ; $c2dd
	and a
	jr z, .asm_93013
	ld hl, $7031
.asm_93013
	call Random
	ld c, a
.asm_93017
	ld a, [hli]
	cp c
	jr nc, .asm_9301e
	inc hl
	jr .asm_93017
.asm_9301e
	ld a, [hl]
	ld [$c709], a
	ret
; 93023 (24:7023)

INCBIN "baserom.gbc",$93023,$9303f - $93023

; known jump sources: 9289c (24:689c)
Function9303f: ; 9303f (24:703f)
	ld b, $14
	ld a, [Weather] ; $c70a
	dec a
	jr z, asm_93066
	dec a
	jr z, asm_9305a
	jr asm_9304e

; known jump sources: 929d9 (24:69d9)
Function9304c: ; 9304c (24:704c)
	ld b, $23
asm_9304e: ; 9304e (24:704e)
	ld hl, $c4cb
	call Function93069
	ld hl, $c56b
	call Function93069
asm_9305a: ; 9305a (24:705a)
	ld hl, $c4f3
	call Function93069
	ld hl, $c543
	call Function93069
asm_93066: ; 93066 (24:7066)
	ld hl, $c51b

; known jump sources: 93051 (24:7051), 93057 (24:7057), 9305d (24:705d), 93063 (24:7063)
Function93069: ; 93069 (24:7069)
	ld a, b
	ld [hl], a
	ld de, $d
	add hl, de
	ld [hl], a
	ld de, $7
	add hl, de
	inc a
	ld [hl], a
	ld de, $d
	add hl, de
	ld [hl], a
	ret

; known jump sources: 9288e (24:688e), 930ab (24:70ab)
Function9307c: ; 9307c (24:707c)
	ld hl, $70c7
	call PrintText
	ld hl, $70d6
	call LoadMenuDataHeader
	call Function1d81
	call Function1c17
	ret c
	ld a, [$cfa9]
	ld b, a
	ld a, $4
	sub b
	ld [Weather], a ; $c70a
	ld hl, Coins ; $d855
	ld c, a
	ld a, [hli]
	and a
	jr nz, .asm_930ad
	ld a, [hl]
	cp c
	jr nc, .asm_930ad
	ld hl, $70d1
	call PrintText
	jr Function9307c
.asm_930ad
	ld hl, $d856
	ld a, [hl]
	sub c
	ld [hld], a
	jr nc, .asm_930b6
	dec [hl]
.asm_930b6
	call WaitSFX
	ld de, $68
	call PlaySFX
	ld hl, $70cc
	call PrintText
	and a
	ret
; 930c7 (24:70c7)

INCBIN "baserom.gbc",$930c7,$930e9 - $930c7

; known jump sources: 929df (24:69df)
Function930e9: ; 930e9 (24:70e9)
	ld hl, Coins ; $d855
	ld a, [hli]
	or [hl]
	jr nz, .asm_930fd
	ld hl, UnknownText_9311a
	call PrintText
	ld c, $3c
	call DelayFrames
	jr .asm_93118
.asm_930fd
	ld hl, UnknownText_9311f
	call PrintText
	call Function1d58
	ld bc, $e0c
	call Function1dd2
	ld a, [$cfa9]
	dec a
	call Function1c17
	and a
	jr nz, .asm_93118
	and a
	ret
.asm_93118
	scf
	ret
; 9311a (24:711a)

UnknownText_9311a: ; 9311a
	TX_FAR UnknownText_0x1c5079
	db "@"

UnknownText_9311f: ; 9311f
	TX_FAR UnknownText_0x1c5092
	db "@"

; known jump sources: 92993 (24:6993)
Function93124: ; 93124 (24:7124)
	ld a, [EffectFailed] ; $c70d
	cp $ff
	jr z, .asm_93151
	srl a
	ld e, a
	ld d, $0
	ld hl, $7145
	add hl, de
	ld a, [hli]
	ld [PlayerUsedMoves], a ; $c712
	ld e, a
	ld a, [hl]
	ld [$c711], a
	ld d, a
	ld a, BANK(Function105fe3)
	ld hl, Function105fe3
	rst $8 ;  ; indirect jump to Function105fe3 (105fe3 (41:5fe3))
	ret
; 93145 (24:7145)

INCBIN "baserom.gbc",$93145,$93151 - $93145
.asm_93151
	ld hl, $c711
	xor a
	ld [hli], a
	ld [hl], a
	ret

; known jump sources: 9299e (24:699e)
Function93158: ; 93158 (24:7158)
	ld a, [EffectFailed] ; $c70d
	cp $ff
	jr nz, .asm_9316c
	ld hl, $71e0
	call PrintText
	ld a, BANK(Function105fd0)
	ld hl, Function105fd0
	rst $8 ;  ; indirect jump to Function105fd0 (105fd0 (41:5fd0))
	ret
.asm_9316c
	srl a
	ld e, a
	ld d, $0
	ld hl, $7195
	add hl, de
	add hl, de
	add hl, de
	ld de, StringBuffer2 ; $d086
	ld bc, $4
	call CopyBytes
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, .asm_93188
	push de
	jp [hl]
.asm_93188
	ld hl, $71b9
	call PrintText
	ld a, BANK(Function105f9f)
	ld hl, Function105f9f
	rst $8 ;  ; indirect jump to Function105f9f (105f9f (41:5f9f))
	ret
; 93195 (24:7195)

INCBIN "baserom.gbc",$93195,$9321d - $93195

; no known jump sources
Function9321d: ; 9321d (24:721d)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $722d
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_9322d: ; 9322d (24:722d)
	dw Function93233
	dw Function93259
	dw Function93289


; no known jump sources
Function93233: ; 93233 (24:7233)
	ld hl, $e
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_93247
	ld a, $2
	ld [$cf64], a
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret
.asm_93247
	dec [hl]
	ld hl, $b
	add hl, bc
	inc [hl]
	ld hl, $c
	add hl, bc
	ld [hl], $30
	ld hl, $6
	add hl, bc
	ld [hl], $0

; no known jump sources
Function93259: ; 93259 (24:7259)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	cp $20
	jr c, .asm_93273
	dec [hl]
	ld e, a
	ld d, $70
	callba Functionce765
	ld a, e
	ld hl, $7
	add hl, bc
	ld [hl], a
	ret
.asm_93273
	ld hl, $b
	add hl, bc
	inc [hl]
	ld hl, $d
	add hl, bc
	ld [hl], $2
	ld a, $1
	ld [$cf64], a
	ld a, $1e
	call Function9331e
	ret

; no known jump sources
Function93289: ; 93289 (24:7289)
	ld hl, $6
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	cp $48
	jr nc, .asm_932a3
	and $3
	ret nz
	ld hl, $d
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	ld [hSCY], a ; $ff00+$d0
	ret
.asm_932a3
	ld hl, $b
	add hl, bc
	xor a
	ld [hl], a
	ld [hSCY], a ; $ff00+$d0
	ret

; no known jump sources
Function932ac: ; 932ac (24:72ac)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $72bc
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_932bc: ; 932bc (24:72bc)
	dw Function932c2
	dw Function932e0
	dw Function932fc


; no known jump sources
Function932c2: ; 932c2 (24:72c2)
	ld hl, $4
	add hl, bc
	ld a, [hl]
	inc [hl]
	cp $68
	jr z, .asm_932d6
	and $f
	ret nz
	ld de, $16
	call PlaySFX
	ret
.asm_932d6
	ld hl, $b
	add hl, bc
	inc [hl]
	ld a, $1
	ld [$cf64], a

; no known jump sources
Function932e0: ; 932e0 (24:72e0)
	ld a, [$cf64]
	cp $2
	jr z, .asm_932f1
	cp $5
	ret nz
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret
.asm_932f1
	ld hl, $b
	add hl, bc
	inc [hl]
	ld hl, $c
	add hl, bc
	ld [hl], $8

; no known jump sources
Function932fc: ; 932fc (24:72fc)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_93306
	dec [hl]
	ret
.asm_93306
	ld hl, $b
	add hl, bc
	dec [hl]
	push bc
	ld de, $606c
	ld a, $8
	call Function3b2a
	pop bc
	ret
; 93316 (24:7316)

INCBIN "baserom.gbc",$93316,$9331e - $93316

; known jump sources: 93285 (24:7285)
Function9331e: ; 9331e (24:731e)
	push de
	ld e, a
	ld d, $0
	call PlaySFX
	pop de
	ret
; 93327 (24:7327)

INCBIN "baserom.gbc",$93327,$93a31 - $93327



SECTION "bank28", ROMX, BANK[$28]

INCBIN "baserom.gbc",$a0000,$a0c28 - $a0000

INCLUDE "text/buena.asm"


SECTION "bank29", ROMX, BANK[$29]

INCLUDE "text/phone/extra2.asm"


SECTION "bank2A", ROMX, BANK[$2A]

INCLUDE "maps/blockdata_1.asm"


SECTION "bank2B", ROMX, BANK[$2B]

INCLUDE "maps/blockdata_2.asm"


SECTION "bank2C", ROMX, BANK[$2C]

INCLUDE "maps/blockdata_3.asm"


SECTION "bank2D", ROMX, BANK[$2D]

INCLUDE "tilesets/data_5.asm"


SECTION "bank2E", ROMX, BANK[$2E]

Functionb8000: ; b8000
	xor a
	ld [hBGMapMode], a
	callba Functionb800a
	ret
; b800a

Functionb800a: ; b800a
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	ld [$c2d9], a
	call Functionb8089
	jr z, .asm_b8024
	call GetMapPermission
	cp $6
	jr nz, .asm_b8029

.asm_b8024
	ld a, $ff
	ld [$c2d9], a

.asm_b8029
	ld hl, $d83e
	bit 1, [hl]
	res 1, [hl]
	jr nz, .asm_b8054
	call Functionb8064
	jr z, .asm_b8054
	ld a, [$c2d9]
	ld [$c2d8], a
	call Functionb8070
	jr z, .asm_b8054
	ld a, $3c
	ld [$c2da], a
	call Functionb80c6
	call Functionb80d3
	callba Function104303
	ret

.asm_b8054
	ld a, [$c2d9]
	ld [$c2d8], a
	ld a, $90
	ld [rWY], a
	ld [hWY], a
	xor a
	ld [hLCDStatCustom], a
	ret
; b8064

Functionb8064: ; b8064
	ld a, [$c2d9]
	ld c, a
	ld a, [$c2d8]
	cp c
	ret z
	cp $0
	ret
; b8070

Functionb8070: ; b8070
	cp $ff
	ret z
	cp $0
	ret z
	cp $11
	ret z
	cp $46
	ret z
	cp $3b
	ret z
	cp $5a
	ret z
	cp $44
	ret z
	ld a, $1
	and a
	ret
; b8089

Functionb8089: ; b8089
	ld a, [MapGroup]
	cp $a
	ret nz
	ld a, [MapNumber]
	cp $f
	ret z
	cp $11
	ret
; b8098


; no known jump sources
Functionb8098: ; b8098 (2e:4098)
	ld hl, $c2da
	ld a, [hl]
	and a
	jr z, .asm_b80bc
	dec [hl]
	cp $3c
	ret z
	cp $3b
	jr nz, .asm_b80b3
	call Functionb80d3
	call Functionb80e1
	callba Function104303
.asm_b80b3
	ld a, $80
	ld a, $70
	ld [rWY], a ; $ff00+$4a
	ld [hWY], a ; $ff00+$d2
	ret
.asm_b80bc
	ld a, $90
	ld [rWY], a ; $ff00+$4a
	ld [hWY], a ; $ff00+$d2
	xor a
	ld [hLCDStatCustom], a ; $ff00+$c6
	ret


Functionb80c6: ; b80c6
	ld de, $5344
	ld hl, $9600
	ld bc, $3e0e
	call Get2bpp
	ret
; b80d3

Functionb80d3: ; b80d3
	ld hl, TileMap
	ld b, $2
	ld c, $12
	call Functionb8115
	call Functionb812f
	ret
; b80e1


; known jump sources: b80aa (2e:40aa)
Functionb80e1: ; b80e1 (2e:40e1)
	ld a, [$c2d9]
	ld e, a
	callba GetLandmarkName
	call Functionb8101
	ld a, $14
	sub c
	srl a
	ld b, $0
	ld c, a
	ld hl, $c4c8
	add hl, bc
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ret

; known jump sources: b80eb (2e:40eb)
Functionb8101: ; b8101 (2e:4101)
	ld c, $0
	push hl
	ld hl, StringBuffer1 ; $d073
.asm_b8107
	ld a, [hli]
	cp $50
	jr z, .asm_b8113
	cp $25
	jr z, .asm_b8107
	inc c
	jr .asm_b8107
.asm_b8113
	pop hl
	ret


Functionb8115: ; b8115
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	ld a, $87
.asm_b811f
	push bc
	push hl
.asm_b8121
	ld [hli], a
	dec c
	jr nz, .asm_b8121
	pop hl
	ld de, $0014
	add hl, de
	pop bc
	dec b
	jr nz, .asm_b811f
	ret
; b812f

Functionb812f: ; b812f
	ld hl, TileMap
	ld a, $61
	ld [hli], a
	ld a, $62
	call Functionb8164
	ld a, $64
	ld [hli], a
	ld a, $65
	ld [hli], a
	call Functionb815b
	ld a, $6b
	ld [hli], a
	ld a, $66
	ld [hli], a
	call Functionb815b
	ld a, $6c
	ld [hli], a
	ld a, $67
	ld [hli], a
	ld a, $68
	call Functionb8164
	ld a, $6a
	ld [hl], a
	ret
; b815b

Functionb815b: ; b815b
	ld c, $12
	ld a, $6d
.asm_b815f
	ld [hli], a
	dec c
	jr nz, .asm_b815f
	ret
; b8164

Functionb8164: ; b8164
	ld c, $5
	jr .asm_b816a

.asm_b8168
	ld [hli], a
	ld [hli], a

.asm_b816a
	inc a
	ld [hli], a
	ld [hli], a
	dec a
	dec c
	jr nz, .asm_b8168
	ret
; b8172

Functionb8172: ; b8172
	call GetMapScriptHeaderBank
	ld [MagikarpLength], a
	ld a, [XCoord]
	add $5
	ld [$d1ed], a
	ld a, [YCoord]
	add $4
	ld [$d1ec], a
	ld hl, $dc02
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$dc01]
	and a
	jr z, .asm_b81dd
.asm_b8194
	ld [Buffer2], a
	push hl
	call Functionb81e2
	ld e, a
	ld a, [$d1ec]
	sub e
	jr c, .asm_b81d2
	cp $9
	jr nc, .asm_b81d2
	call Functionb81e2
	ld d, a
	ld a, [$d1ed]
	sub d
	jr c, .asm_b81d2
	cp $a
	jr nc, .asm_b81d2
	call Functionb81e2
	cp $7
	jr nz, .asm_b81d2
	ld a, [MagikarpLength]
	call GetFarHalfword
	ld a, [MagikarpLength]
	call GetFarHalfword
	ld d, h
	ld e, l
	ld b, $2
	call EventFlagAction
	ld a, c
	and a
	jr z, .asm_b81df

.asm_b81d2
	pop hl
	ld bc, $0005
	add hl, bc
	ld a, [Buffer2]
	dec a
	jr nz, .asm_b8194

.asm_b81dd
	xor a
	ret

.asm_b81df
	pop hl
	scf
	ret
; b81e2

Functionb81e2: ; b81e2
	ld a, [MagikarpLength]
	call GetFarByte
	inc hl
	ret
; b81ea

INCBIN "baserom.gbc",$b81ea,$b8219 - $b81ea

Functionb8219: ; b8219
; get a RockMon encounter

	xor a
	ld [$d22e], a
	ld [CurPartyLevel], a

	ld hl, RockMonMaps
	call GetTreeMonEncounterTable
	jr nc, .quit

	call LoadTreeMonData
	jr nc, .quit

	ld a, 10
	call Function2fb1
	cp 4
	jr nc, .quit

	call Functionb841f
	jr nc, .quit

	ret

.quit
	xor a
	ret
; b823e

	db $05 ; ????

GetTreeMonEncounterTable: ; b823f
; Return carry and table id in a
; if MapGroup and MapNumber are in table hl
	ld a, [MapNumber]
	ld e, a
	ld a, [MapGroup]
	ld d, a
.loop
	ld a, [hli]
	cp $ff
	jr z, .quit
	cp d
	jr nz, .skip2
	ld a, [hli]
	cp e
	jr nz, .skip1
	jr .end
.skip2
	inc hl
.skip1
	inc hl
	jr .loop
.quit
	xor a
	ret
.end
	ld a, [hl]
	scf
	ret
; b825e

INCBIN "baserom.gbc",$b825e,$b82c5 - $b825e

RockMonMaps: ; b82c5
	db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, 7
	db GROUP_ROUTE_40, MAP_ROUTE_40, 7
	db GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE, 7
	db GROUP_SLOWPOKE_WELL_B1F, MAP_SLOWPOKE_WELL_B1F, 7
	db $ff ; end
; b82d2

LoadTreeMonData: ; b82d2
; Return TreeMon pointer a in hl
; Return carry on success

; only 7 tables
	cp 8
	jr nc, .quit

	and a
	jr z, .quit

	ld e, a
	ld d, 0
	ld hl, TreeMonPointers
	add hl, de
	add hl, de

	ld a, [hli]
	ld h, [hl]
	ld l, a

	scf
	ret

.quit
	xor a
	ret
; b82e8

TreeMonPointers: ; b82e8
; seems to point to "normal" tree encounter data
; so only odd-numbered tables are used
	dw TreeMons1  ; filler
	dw TreeMons1  ; 1
	dw TreeMons3  ; 2
	dw TreeMons5  ; 3
	dw TreeMons7  ; 4
	dw TreeMons9  ; 5
	dw TreeMons11 ; 6
	dw RockMons   ; 7
	dw TreeMons1  ; filler
; b82fa

; structure: % species level

TreeMons1: ; b82fa
	db 50, SPEAROW, 10
	db 15, SPEAROW, 10
	db 15, SPEAROW, 10
	db 10, AIPOM, 10
	db 5, AIPOM, 10
	db 5, AIPOM, 10
	db $ff ; end
; b830d

TreeMons2 ; b830d
; unused
	db 50, SPEAROW, 10
	db 15, HERACROSS, 10
	db 15, HERACROSS, 10
	db 10, AIPOM, 10
	db 5, AIPOM, 10
	db 5, AIPOM, 10
	db $ff ; end
; b8320

TreeMons3: ; b8320
	db 50, SPEAROW, 10
	db 15, EKANS, 10
	db 15, SPEAROW, 10
	db 10, AIPOM, 10
	db 5, AIPOM, 10
	db 5, AIPOM, 10
	db $ff ; end
; b8333

TreeMons4: ; b8333
; unused
	db 50, SPEAROW, 10
	db 15, HERACROSS, 10
	db 15, HERACROSS, 10
	db 10, AIPOM, 10
	db 5, AIPOM, 10
	db 5, AIPOM, 10
	db $ff ; end
; b8346

TreeMons5: ; b8346
	db 50, HOOTHOOT, 10
	db 15, SPINARAK, 10
	db 15, LEDYBA, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b8359

TreeMons6: ; b8359
; unused
	db 50, HOOTHOOT, 10
	db 15, PINECO, 10
	db 15, PINECO, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b836c

TreeMons7: ; b836c
	db 50, HOOTHOOT, 10
	db 15, EKANS, 10
	db 15, HOOTHOOT, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b837f

TreeMons8: ; b837f
; unused
	db 50, HOOTHOOT, 10
	db 15, PINECO, 10
	db 15, PINECO, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b8392

TreeMons9: ; b8392
	db 50, HOOTHOOT, 10
	db 15, VENONAT, 10
	db 15, HOOTHOOT, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b83a5

TreeMons10: ; b83a5
; unused
	db 50, HOOTHOOT, 10
	db 15, PINECO, 10
	db 15, PINECO, 10
	db 10, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db 5, EXEGGCUTE, 10
	db $ff ; end
; b83b8

TreeMons11: ; b83b8
	db 50, HOOTHOOT, 10
	db 15, PINECO, 10
	db 15, PINECO, 10
	db 10, NOCTOWL, 10
	db 5, BUTTERFREE, 10
	db 5, BEEDRILL, 10
	db $ff ; end
; b83cb

TreeMons12; b83cb
; unused
	db 50, HOOTHOOT, 10
	db 15, CATERPIE, 10
	db 15, WEEDLE, 10
	db 10, HOOTHOOT, 10
	db 5, METAPOD, 10
	db 5, KAKUNA, 10
	db $ff ; end
; b83de

RockMons: ; b83de
	db 90, KRABBY, 15
	db 10, SHUCKLE, 15
	db $ff ; end
; b83e5

Functionb83e5: ; b83e5
	push hl
	call Functionb8443
	pop hl
	and a
	jr z, .asm_b83f6
	cp $1
	jr z, .asm_b8400
	cp $2
	jr z, .asm_b840b
	ret

.asm_b83f6
	ld a, $a
	call Function2fb1
	and a
	jr nz, Functionb843b
	jr Functionb841f

.asm_b8400
	ld a, $a
	call Function2fb1
	cp $5
	jr nc, Functionb843b
	jr Functionb841f

.asm_b840b
	ld a, $a
	call Function2fb1
	cp $8
	jr nc, Functionb843b
	jr .asm_b8416

.asm_b8416
	ld a, [hli]
	cp $ff
	jr nz, .asm_b8416
	call Functionb841f
	ret
; b841f

Functionb841f: ; b841f
; Read a TreeMons table.

	ld a, 100
	call Function2fb1
.asm_b8424
	sub [hl]
	jr c, .asm_b842c
	inc hl
	inc hl
	inc hl
	jr .asm_b8424

.asm_b842c
	ld a, [hli]
	cp $ff
	jr z, Functionb843b

	ld a, [hli]
	ld [$d22e], a
	ld a, [hl]
	ld [CurPartyLevel], a
	scf
	ret

Functionb843b: ; b843b
	xor a
	ld [$d22e], a
	ld [CurPartyLevel], a
	ret
; b8443

Functionb8443: ; b8443
	call Functionb8466
	ld [Buffer1], a
	call Functionb849d
	ld [Buffer2], a
	ld c, a
	ld a, [Buffer1]
	sub c
	jr z, .asm_b8463
	jr nc, .asm_b845a
	add $a

.asm_b845a
	cp $5
	jr c, .asm_b8460
	xor a
	ret

.asm_b8460
	ld a, $1
	ret

.asm_b8463
	ld a, $2
	ret
; b8466

Functionb8466: ; b8466
	call GetFacingTileCoord
	ld hl, $0000
	ld c, e
	ld b, $0
	ld a, d
	and a
	jr z, .asm_b8477

.asm_b8473
	add hl, bc
	dec a
	jr nz, .asm_b8473

.asm_b8477
	add hl, bc
	ld c, d
	add hl, bc
	ld a, h
	ld [hProduct], a
	ld a, l
	ld [hMultiplicand], a
	ld a, $5
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, [$ffb5]
	ld [hProduct], a
	ld a, [$ffb6]
	ld [hMultiplicand], a
	ld a, $a
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, [hMultiplier]
	ret
; b849d

Functionb849d: ; b849d
	ld a, [PlayerID]
	ld [hProduct], a
	ld a, [$d47c]
	ld [hMultiplicand], a
	ld a, $a
	ld [hMultiplier], a
	ld b, $2
	call Divide
	ld a, [hMultiplier]
	ret
; b84b3

Functionb84b3: ; b84b3
	ld a, [rVBK]
	push af
	ld a, $1
	ld [rVBK], a
	ld de, FishingGFX
	ld a, [PlayerGender]
	bit 0, a
	jr z, .asm_b84c7
	ld de, KrisFishingGFX

.asm_b84c7
	ld hl, $8020
	call Functionb84e3
	ld hl, $8060
	call Functionb84e3
	ld hl, $80a0
	call Functionb84e3
	ld hl, $8fc0
	call Functionb84e3
	pop af
	ld [rVBK], a
	ret
; b84e3

Functionb84e3: ; b84e3
	ld bc, $2e02
	push de
	call Get2bpp
	pop de
	ld hl, $0020
	add hl, de
	ld d, h
	ld e, l
	ret
; b84f2

FishingGFX: ; b84f2
INCBIN "baserom.gbc",$b84f2,$b8582 - $b84f2
; b8582

KrisFishingGFX: ; b8582
INCBIN "baserom.gbc",$b8582,$b8612 - $b8582
; b8612

	ld a, [DefaultFlypoint] ; $d002
	cp $8
	jr nc, .asm_b862b
	ld a, [StatusFlags2] ; $d84d
	bit 0, a
	jr z, .asm_b862b
	call IsInJohto
	and a
	jr nz, .asm_b862b
	ld a, $7
	ld [DefaultFlypoint], a ; $d002
.asm_b862b
	ld a, [DefaultFlypoint] ; $d002
	ld e, a
	ld d, $0
	ld hl, $463a
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_b863a: ; b863a (2e:463a)
	dw Functionb8742
	dw Functionb8a46
	dw Functionb8b35
	dw Functionb8bdc
	dw Functionb8f12
	dw Functionb8cbf
	dw Functionb8b50
	dw Functionb8e72
	dw Functionb8ef7
	dw Functionb8f00
	dw Functionb8f09
	dw Functionb8752
	dw Functionb875a
	dw Functionb8762
	dw Functionb8810
	dw Functionb8818
	dw Functionb883e
	dw Functionb8854
	dw Functionb88d9
	dw Functionb8a6c
	dw Functionb8aa4
	dw Functionb8aac
	dw Functionb8ab4
	dw Functionb8b40
	dw Functionb8b48
	dw Functionb8b63
	dw Functionb8b6b
	dw Functionb8b7d
	dw Functionb8b8f
	dw Functionb8b5b
	dw Functionb8bf5
	dw Functionb8bfd
	dw Functionb8c05
	dw Functionb8c0d
	dw Functionb8c15
	dw Functionb8c1d
	dw Functionb8c25
	dw Functionb8c3e
	dw Functionb8c46
	dw Functionb8c4e
	dw Functionb8c56
	dw Functionb8c5e
	dw Functionb8c6e
	dw Functionb8c76
	dw Functionb8cca
	dw Functionb8cd2
	dw Functionb8cf2
	dw Functionb8d56
	dw Functionb8ded
	dw Functionb8e28
	dw Functionb8e7d
	dw Functionb8e85
	dw Functionb8e8d
	dw Functionb8e95
	dw Functionb8e9d
	dw Functionb8ea5
	dw Functionb8ead
	dw Functionb8eb5
	dw Functionb8ebd
	dw Functionb896e
	dw Functionb8994
	dw Functionb89a9
	dw Functionb89c6
	dw Functionb89d7
	dw Functionb8f3f
	dw Functionb8f47
	dw Functionb8f55
	dw Functionb909c
	dw Functionb90a4
	dw Functionb90ac
	dw Functionb90c5
	dw Functionb90d2
	dw Functionb90da
	dw Functionb90e2
	dw Functionb90ea
	dw Functionb90f2
	dw Functionb90fa
	dw Functionb9102
	dw Functionb910a
	dw Functionb9112
	dw Functionb911a
	dw Functionb9122
	dw Functionb912a
	dw Functionb9152
	dw Functionb8728
	dw Functionb8abc
	dw Functionb8ac4
	dw Functionb8acc


; known jump sources: b87e9 (2e:47e9), b87ef (2e:47ef), b8aa1 (2e:4aa1), b8aa9 (2e:4aa9), b8ab1 (2e:4ab1), b8ab9 (2e:4ab9), b8ac1 (2e:4ac1), b8ac9 (2e:4ac9), b8ad1 (2e:4ad1), b8e4f (2e:4e4f), b9226 (2e:5226)
Functionb86ea: ; b86ea (2e:46ea)
	ld [$d003], a
	ld hl, $d00c
	ld a, [StartFlypoint] ; $d005
	cp $2
	jr nc, .asm_b870a
	inc hl
	ld [hl], $0
	inc a
	ld [StartFlypoint], a ; $d005
	cp $2
	jr nz, .asm_b870a
	ld bc, $c5e1
	call Function13e5
	jr .asm_b870d
.asm_b870a
	call PrintTextBoxText
.asm_b870d
	ld a, $54
	ld [DefaultFlypoint], a ; $d002
	ld a, $64
	ld [$d004], a
	ret
; b8718 (2e:4718)

INCBIN "baserom.gbc",$b8718,$b8728 - $b8718

; no known jump sources
Functionb8728: ; b8728 (2e:4728)
	ld hl, $d004
	ld a, [hl]
	and a
	jr z, .asm_b8731
	dec [hl]
	ret
.asm_b8731
	ld a, [$d003]
	ld [DefaultFlypoint], a ; $d002
	ld a, [StartFlypoint] ; $d005
	cp $1
	call nz, Functionb8a0b
	jp Functionb8a17

; no known jump sources
Functionb8742: ; b8742 (2e:4742)
	ld a, $5
	ld [EndFlypoint], a ; $d006
	call Functionb91eb
	ld hl, $4820
	ld a, $b
	jp Functionb9221

; no known jump sources
Functionb8752: ; b8752 (2e:4752)
	ld hl, $4825
	ld a, $c
	jp Functionb9221

; no known jump sources
Functionb875a: ; b875a (2e:475a)
	ld hl, $482a
	ld a, $d
	jp Functionb9221

; known jump sources: b8769 (2e:4769)
Functionb8762: ; b8762 (2e:4762)
	call Random
	and $1f
	cp $f
	jr nc, Functionb8762
	ld hl, $47f2
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld b, [hl]
	inc hl
	ld c, [hl]
	push bc
	ld hl, $65e9
.asm_b877a
	ld a, $a
	call GetFarByte
	cp $ff
	jr z, .asm_b87ec
	inc hl
	cp b
	jr nz, .asm_b878f
	ld a, $a
	call GetFarByte
	cp c
	jr z, .asm_b8796
.asm_b878f
	dec hl
	ld de, $2f
	add hl, de
	jr .asm_b877a
.asm_b8796
	inc hl
	inc hl
	inc hl
	inc hl
.asm_b879a
	call Random
	and $3
	cp $3
	jr z, .asm_b879a
	ld bc, $e
	call AddNTimes
.asm_b87a9
	call Random
	and $7
	cp $2
	jr c, .asm_b87a9
	cp $5
	jr nc, .asm_b87a9
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	inc hl
	ld a, $a
	call GetFarByte
	ld [$d265], a
	ld [CurPartySpecies], a ; $d108
	call GetPokemonName
	ld hl, StringBuffer1 ; $d073
	ld de, $d050
	ld bc, $b
	call CopyBytes
	pop bc
	call GetWorldMapLocation
	ld e, a
	callba GetLandmarkName
	ld hl, $482f
	call Functionb91dc
	ld a, $e
	jp Functionb86ea
.asm_b87ec
	pop bc
	ld a, $0
	jp Functionb86ea
; b87f2 (2e:47f2)

INCBIN "baserom.gbc",$b87f2,$b8810 - $b87f2

; no known jump sources
Functionb8810: ; b8810 (2e:4810)
	ld hl, $4834
	ld a, $f
	jp Functionb9221

; no known jump sources
Functionb8818: ; b8818 (2e:4818)
	ld hl, $4839
	ld a, $10
	jp Functionb9221
; b8820 (2e:4820)

INCBIN "baserom.gbc",$b8820,$b883e - $b8820

; no known jump sources
Functionb883e: ; b883e (2e:483e)
	ld a, [CurPartySpecies] ; $d108
	ld [$d265], a
	call GetPokemonName
	ld hl, $484f
	ld a, $11
	jp Functionb9221
; b884f (2e:484f)

INCBIN "baserom.gbc",$b884f,$b8854 - $b884f

; no known jump sources
Functionb8854: ; b8854 (2e:4854)
	call Random
	and $f
	ld e, a
	ld d, $0
	ld hl, $4869
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, $12
	jp Functionb9221
; b8869 (2e:4869)

INCBIN "baserom.gbc",$b8869,$b88d9 - $b8869

; no known jump sources
Functionb88d9: ; b88d9 (2e:48d9)
	call Random
	and $f
	ld e, a
	ld d, $0
	ld hl, $48fe
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [EndFlypoint] ; $d006
	dec a
	ld [EndFlypoint], a ; $d006
	ld a, $d
	jr nz, .asm_b88fb
	ld a, $5
	ld [EndFlypoint], a ; $d006
	ld a, $3b
.asm_b88fb
	jp Functionb9221
; b88fe (2e:48fe)

INCBIN "baserom.gbc",$b88fe,$b896e - $b88fe

; no known jump sources
Functionb896e: ; b896e (2e:496e)
	callba Function91868
	ld hl, $4993
	call PrintText
	call WaitBGMap
	ld hl, $498e
	call PrintText
	ld a, $3c
	ld [DefaultFlypoint], a ; $d002
	ld a, $64
	ld [$d004], a
	ret
; b898e (2e:498e)

INCBIN "baserom.gbc",$b898e,$b8994 - $b898e

; no known jump sources
Functionb8994: ; b8994 (2e:4994)
	ld hl, $d004
	dec [hl]
	ret nz
	ld hl, $c5c1
	ld de, $49a4
	ld a, $3d
	jp Functionb8a00
; b89a4 (2e:49a4)

INCBIN "baserom.gbc",$b89a4,$b89a9 - $b89a4

; no known jump sources
Functionb89a9: ; b89a9 (2e:49a9)
	ld hl, $d004
	dec [hl]
	ret nz
	ld hl, $c5e1
	ld de, $49b9
	ld a, $3e
	jp Functionb8a00
; b89b9 (2e:49b9)

INCBIN "baserom.gbc",$b89b9,$b89c6 - $b89b9

; no known jump sources
Functionb89c6: ; b89c6 (2e:49c6)
	ld hl, $d004
	dec [hl]
	ret nz
	ld hl, $c5ec
	ld de, $49d6
	ld a, $3f
	jp Functionb8a00
; b89d6 (2e:49d6)

INCBIN "baserom.gbc",$b89d6,$b89d7 - $b89d6

; no known jump sources
Functionb89d7: ; b89d7 (2e:49d7)
	ld hl, $d004
	dec [hl]
	ret nz
	ld de, $1d
	callab Function91854
	ld hl, $49ff
	call PrintText
	ld a, $d
	ld [$d003], a
	xor a
	ld [StartFlypoint], a ; $d005
	ld a, $54
	ld [DefaultFlypoint], a ; $d002
	ld a, $a
	ld [$d004], a
	ret
; b89ff (2e:49ff)

INCBIN "baserom.gbc",$b89ff,$b8a00 - $b89ff

; known jump sources: b89a1 (2e:49a1), b89b6 (2e:49b6), b89d3 (2e:49d3)
Functionb8a00: ; b8a00 (2e:4a00)
	ld [DefaultFlypoint], a ; $d002
	ld a, $64
	ld [$d004], a
	jp PlaceString

; known jump sources: b873c (2e:473c)
Functionb8a0b: ; b8a0b (2e:4a0b)
	ld hl, $c5cc
	ld de, $c5a4
	ld bc, $28
	jp CopyBytes

; known jump sources: b873f (2e:473f)
Functionb8a17: ; b8a17 (2e:4a17)
	ld hl, $c5cd
	ld bc, $12
	ld a, $7f
	call ByteFill
	ld hl, $c5e1
	ld bc, $12
	ld a, $7f
	jp ByteFill

; known jump sources: b8a7d (2e:4a7d)
Functionb8a2d: ; b8a2d (2e:4a2d)
	push hl
	push de
	ld a, [CurPartySpecies] ; $d108
	dec a
	rlca
	rlca
	and $3
	ld hl, $4a42
	ld d, $0
	ld e, a
	add hl, de
	ld a, [hl]
	pop de
	pop hl
	ret
; b8a42 (2e:4a42)

INCBIN "baserom.gbc",$b8a42,$b8a46 - $b8a42

; no known jump sources
Functionb8a46: ; b8a46 (2e:4a46)
	call Functionb91eb
.asm_b8a49
	call Random
	cp $fb
	jr nc, .asm_b8a49
	ld c, a
	push bc
	ld a, c
	call CheckCaughtMon
	pop bc
	jr z, .asm_b8a49
	inc c
	ld a, c
	ld [CurPartySpecies], a ; $d108
	ld [$d265], a
	call GetPokemonName
	ld hl, $4b30
	ld a, $13
	jp Functionb9221

; no known jump sources
Functionb8a6c: ; b8a6c (2e:4a6c)
	ld a, [CurPartySpecies] ; $d108
	dec a
	ld hl, $4378
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, $11
	call GetFarHalfword
	call Functionb8a2d
	push af
	push hl
	call Functionb8af3
	dec hl
	ld [hl], $57
	ld hl, $d26b
	call Functionb91dc
	pop hl
	pop af
	call Functionb8b11
	inc hl
	inc hl
	inc hl
	inc hl
	ld a, l
	ld [$d26b], a
	ld a, h
	ld [$d26c], a
	ld a, $14
	jp Functionb86ea

; no known jump sources
Functionb8aa4: ; b8aa4 (2e:4aa4)
	call Functionb8ad4
	ld a, $15
	jp Functionb86ea

; no known jump sources
Functionb8aac: ; b8aac (2e:4aac)
	call Functionb8ad4
	ld a, $16
	jp Functionb86ea

; no known jump sources
Functionb8ab4: ; b8ab4 (2e:4ab4)
	call Functionb8ad4
	ld a, $55
	jp Functionb86ea

; no known jump sources
Functionb8abc: ; b8abc (2e:4abc)
	call Functionb8ad4
	ld a, $56
	jp Functionb86ea

; no known jump sources
Functionb8ac4: ; b8ac4 (2e:4ac4)
	call Functionb8ad4
	ld a, $57
	jp Functionb86ea

; no known jump sources
Functionb8acc: ; b8acc (2e:4acc)
	call Functionb8ad4
	ld a, $1
	jp Functionb86ea

; known jump sources: b8aa4 (2e:4aa4), b8aac (2e:4aac), b8ab4 (2e:4ab4), b8abc (2e:4abc), b8ac4 (2e:4ac4), b8acc (2e:4acc)
Functionb8ad4: ; b8ad4 (2e:4ad4)
	ld a, [$d26b]
	ld l, a
	ld a, [$d26c]
	ld h, a
	ld a, [$d26d]
	push af
	push hl
	call Functionb8af3
	dec hl
	ld [hl], $57
	ld hl, $d26b
	call Functionb91dc
	pop hl
	pop af
	call Functionb8b11
	ret

; known jump sources: b8a82 (2e:4a82), b8ae1 (2e:4ae1)
Functionb8af3: ; b8af3 (2e:4af3)
	ld de, $d26d
	ld bc, $13
	call FarCopyBytes
	ld hl, $d26b
	ld [hl], $0
	inc hl
	ld [hl], $4f
	inc hl
.asm_b8b05
	ld a, [hli]
	cp $50
	ret z
	cp $4e
	ret z
	cp $5f
	ret z
	jr .asm_b8b05

; known jump sources: b8a90 (2e:4a90), b8aef (2e:4aef)
Functionb8b11: ; b8b11 (2e:4b11)
	ld d, a
.asm_b8b12
	ld a, d
	call GetFarByte
	inc hl
	cp $50
	jr z, .asm_b8b23
	cp $4e
	jr z, .asm_b8b23
	cp $5f
	jr nz, .asm_b8b12
.asm_b8b23
	ld a, l
	ld [$d26b], a
	ld a, h
	ld [$d26c], a
	ld a, d
	ld [$d26d], a
	ret
; b8b30 (2e:4b30)

INCBIN "baserom.gbc",$b8b30,$b8b35 - $b8b30

; no known jump sources
Functionb8b35: ; b8b35 (2e:4b35)
	call Functionb8b90
	ld hl, $4baa
	ld a, $17
	jp Functionb9221

; no known jump sources
Functionb8b40: ; b8b40 (2e:4b40)
	ld hl, $4baf
	ld a, $18
	jp Functionb9221

; no known jump sources
Functionb8b48: ; b8b48 (2e:4b48)
	ld hl, $4bb4
	ld a, $19
	jp Functionb9221

; no known jump sources
Functionb8b50: ; b8b50 (2e:4b50)
	call Functionb8b90
	ld hl, $4bb9
	ld a, $1d
	jp Functionb9221

; no known jump sources
Functionb8b5b: ; b8b5b (2e:4b5b)
	ld hl, $4bbe
	ld a, $19
	jp Functionb9221

; no known jump sources
Functionb8b63: ; b8b63 (2e:4b63)
	ld hl, $4bc3
	ld a, $1a
	jp Functionb9221

; no known jump sources
Functionb8b6b: ; b8b6b (2e:4b6b)
	call GetWeekday
	and $1
	ld hl, $4bc8
	jr z, .asm_b8b78
	ld hl, $4bcd
.asm_b8b78
	ld a, $1b
	jp Functionb9221

; no known jump sources
Functionb8b7d: ; b8b7d (2e:4b7d)
	call GetWeekday
	and $1
	ld hl, $4bd2
	jr z, .asm_b8b8a
	ld hl, $4bd7
.asm_b8b8a
	ld a, $1c
	jp Functionb9221

; no known jump sources
Functionb8b8f: ; b8b8f (2e:4b8f)
	ret

; known jump sources: b8b35 (2e:4b35), b8b50 (2e:4b50)
Functionb8b90: ; b8b90 (2e:4b90)
	call Function1052
	call PrintText
	ld de, $51
	call GetWeekday
	and $1
	jr z, .asm_b8ba3
	ld de, $50
.asm_b8ba3
	callab Function91854
	ret
; b8baa (2e:4baa)

INCBIN "baserom.gbc",$b8baa,$b8bdc - $b8baa

; no known jump sources
Functionb8bdc: ; b8bdc (2e:4bdc)
	call Functionb91eb
	callab Functionc434
	jr nc, .asm_b8bed
	callab Functionc422
.asm_b8bed
	ld hl, $4c7e
	ld a, $1e
	jp Functionb9221

; no known jump sources
Functionb8bf5: ; b8bf5 (2e:4bf5)
	ld hl, $4c83
	ld a, $1f
	jp Functionb9221

; no known jump sources
Functionb8bfd: ; b8bfd (2e:4bfd)
	ld hl, $4c88
	ld a, $20
	jp Functionb9221

; no known jump sources
Functionb8c05: ; b8c05 (2e:4c05)
	ld hl, $4c8d
	ld a, $21
	jp Functionb9221

; no known jump sources
Functionb8c0d: ; b8c0d (2e:4c0d)
	ld hl, $4c92
	ld a, $22
	jp Functionb9221

; no known jump sources
Functionb8c15: ; b8c15 (2e:4c15)
	ld hl, $4c97
	ld a, $23
	jp Functionb9221

; no known jump sources
Functionb8c1d: ; b8c1d (2e:4c1d)
	ld hl, $4c9c
	ld a, $24
	jp Functionb9221

; no known jump sources
Functionb8c25: ; b8c25 (2e:4c25)
	ld hl, StringBuffer1 ; $d073
	ld de, $dc9f
	ld bc, $8205
	call PrintNum
	ld a, $50
	ld [$d078], a
	ld hl, $4ca1
	ld a, $25
	jp Functionb9221

; no known jump sources
Functionb8c3e: ; b8c3e (2e:4c3e)
	ld hl, $4ca6
	ld a, $26
	jp Functionb9221

; no known jump sources
Functionb8c46: ; b8c46 (2e:4c46)
	ld hl, $4c9c
	ld a, $27
	jp Functionb9221

; no known jump sources
Functionb8c4e: ; b8c4e (2e:4c4e)
	ld hl, $4ca1
	ld a, $28
	jp Functionb9221

; no known jump sources
Functionb8c56: ; b8c56 (2e:4c56)
	ld hl, $4cab
	ld a, $29
	jp Functionb9221

; no known jump sources
Functionb8c5e: ; b8c5e (2e:4c5e)
	ld hl, $4cb0
	call Random
	and a
	ld a, $3
	jr nz, .asm_b8c6b
	ld a, $2a
.asm_b8c6b
	jp Functionb9221

; no known jump sources
Functionb8c6e: ; b8c6e (2e:4c6e)
	ld hl, $4cb5
	ld a, $2b
	jp Functionb9221

; no known jump sources
Functionb8c76: ; b8c76 (2e:4c76)
	ld hl, $4cba
	ld a, $3
	jp Functionb9221
; b8c7e (2e:4c7e)

INCBIN "baserom.gbc",$b8c7e,$b8cbf - $b8c7e

; no known jump sources
Functionb8cbf: ; b8cbf (2e:4cbf)
	call Functionb91eb
	ld hl, $4ce3
	ld a, $2c
	jp Functionb9221

; no known jump sources
Functionb8cca: ; b8cca (2e:4cca)
	ld hl, $4ce8
	ld a, $2d
	jp Functionb9221

; no known jump sources
Functionb8cd2: ; b8cd2 (2e:4cd2)
	ld hl, $4ced
	call Random
	cp $7b
	ld a, $2e
	jr c, .asm_b8ce0
	ld a, $30
.asm_b8ce0
	jp Functionb9221
; b8ce3 (2e:4ce3)

INCBIN "baserom.gbc",$b8ce3,$b8cf2 - $b8ce3

; known jump sources: b8cfa (2e:4cfa), b8d1e (2e:4d1e)
Functionb8cf2: ; b8cf2 (2e:4cf2)
	call Random
	and $7f
	inc a
	cp $43
	jr nc, Functionb8cf2
	push af
	ld hl, $4d3e
	ld a, [StatusFlags] ; $d84c
	bit 6, a
	jr z, .asm_b8d14
	ld hl, $4d43
	ld a, [KantoBadges] ; $d858
	cp $ff
	jr nz, .asm_b8d14
	ld hl, $4d4b
.asm_b8d14
	pop af
	ld c, a
	ld de, $1
	push bc
	call IsInArray
	pop bc
	jr c, Functionb8cf2
	push bc
	callab Function3952d
	ld de, StringBuffer1 ; $d073
	call CopyName1
	pop bc
	ld b, $1
	callab Function3994c
	ld hl, $4d51
	ld a, $2f
	jp Functionb9221
; b8d3e (2e:4d3e)

INCBIN "baserom.gbc",$b8d3e,$b8d56 - $b8d3e

; no known jump sources
Functionb8d56: ; b8d56 (2e:4d56)
	call Random
	and $f
	ld e, a
	ld d, $0
	ld hl, $4d7d
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Random
	cp $a
	ld a, $5
	jr c, .asm_b8d7a
	call Random
	cp $7b
	ld a, $2e
	jr c, .asm_b8d7a
	ld a, $30
.asm_b8d7a
	jp Functionb9221
; b8d7d (2e:4d7d)

INCBIN "baserom.gbc",$b8d7d,$b8ded - $b8d7d

; known jump sources: b8df2 (2e:4df2)
Functionb8ded: ; b8ded (2e:4ded)
	call Random
	cp $9
	jr nc, Functionb8ded
	ld hl, $4e11
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld b, [hl]
	inc hl
	ld c, [hl]
	call GetWorldMapLocation
	ld e, a
	callba GetLandmarkName
	ld hl, $4e23
	ld a, $31
	jp Functionb9221
; b8e11 (2e:4e11)

INCBIN "baserom.gbc",$b8e11,$b8e28 - $b8e11

; no known jump sources
Functionb8e28: ; b8e28 (2e:4e28)
	call Random
	and $f
	ld e, a
	ld d, $0
	ld hl, $4e52
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Functionb91dc
	call Random
	cp $a
	ld a, $5
	jr c, .asm_b8e4f
	call Random
	cp $7b
	ld a, $2e
	jr c, .asm_b8e4f
	ld a, $30
.asm_b8e4f
	jp Functionb86ea
; b8e52 (2e:4e52)

INCBIN "baserom.gbc",$b8e52,$b8e72 - $b8e52

; no known jump sources
Functionb8e72: ; b8e72 (2e:4e72)
	call Functionb91eb
	ld hl, $4ec5
	ld a, $32
	jp Functionb9221

; no known jump sources
Functionb8e7d: ; b8e7d (2e:4e7d)
	ld hl, $4eca
	ld a, $33
	jp Functionb9221

; no known jump sources
Functionb8e85: ; b8e85 (2e:4e85)
	ld hl, $4ecf
	ld a, $34
	jp Functionb9221

; no known jump sources
Functionb8e8d: ; b8e8d (2e:4e8d)
	ld hl, $4ed4
	ld a, $35
	jp Functionb9221

; no known jump sources
Functionb8e95: ; b8e95 (2e:4e95)
	ld hl, $4ed9
	ld a, $36
	jp Functionb9221

; no known jump sources
Functionb8e9d: ; b8e9d (2e:4e9d)
	ld hl, $4ede
	ld a, $37
	jp Functionb9221

; no known jump sources
Functionb8ea5: ; b8ea5 (2e:4ea5)
	ld hl, $4ee3
	ld a, $38
	jp Functionb9221

; no known jump sources
Functionb8ead: ; b8ead (2e:4ead)
	ld hl, $4ee8
	ld a, $39
	jp Functionb9221

; no known jump sources
Functionb8eb5: ; b8eb5 (2e:4eb5)
	ld hl, $4eed
	ld a, $3a
	jp Functionb9221

; no known jump sources
Functionb8ebd: ; b8ebd (2e:4ebd)
	ld hl, $4ef2
	ld a, $7
	jp Functionb9221
; b8ec5 (2e:4ec5)

INCBIN "baserom.gbc",$b8ec5,$b8ef7 - $b8ec5

; no known jump sources
Functionb8ef7: ; b8ef7 (2e:4ef7)
	call Functionb91eb
	ld a, $1
	ld [StartFlypoint], a ; $d005
	ret

; no known jump sources
Functionb8f00: ; b8f00 (2e:4f00)
	call Functionb91eb
	ld a, $1
	ld [StartFlypoint], a ; $d005
	ret

; no known jump sources
Functionb8f09: ; b8f09 (2e:4f09)
	call Functionb91eb
	ld a, $1
	ld [StartFlypoint], a ; $d005
	ret

; known jump sources: b915e (2e:515e)
Functionb8f12: ; b8f12 (2e:4f12)
	call Functionb9169
	jp nc, Functionb8f22
	ld a, [StartFlypoint] ; $d005
	and a
	jp z, Functionb912a
	jp Functionb90c5

; known jump sources: b8f15 (2e:4f15)
Functionb8f22: ; b8f22 (2e:4f22)
	call Functionb91eb
	ld a, [hBGMapMode] ; $ff00+$d4
	push af
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld de, $5171
	ld hl, $c556
	call PlaceString
	pop af
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $5182
	ld a, $40
	jp Functionb9221

; no known jump sources
Functionb8f3f: ; b8f3f (2e:4f3f)
	ld hl, $5187
	ld a, $41
	jp Functionb9221

; no known jump sources
Functionb8f47: ; b8f47 (2e:4f47)
	call Functionb9169
	ld hl, $518c
	jp c, Functionb90b9
	ld a, $42
	jp Functionb9221

; no known jump sources
Functionb8f55: ; b8f55 (2e:4f55)
	call Functionb9169
	jp c, Functionb90c5
	ld a, [$dc4a]
	ld hl, $dc1f
	bit 7, [hl]
	jr nz, .asm_b8f83
.asm_b8f65
	call Random
	and $f
	cp $b
	jr nc, .asm_b8f65
	swap a
	ld e, a
.asm_b8f71
	call Random
	and $3
	cp $3
	jr nc, .asm_b8f71
	add e
	ld [$dc4a], a
	ld hl, $dc1f
	set 7, [hl]
.asm_b8f83
	ld c, a
	call Functionb8f8f
	ld hl, $5191
	ld a, $43
	jp Functionb9221

Functionb8f8f: ; b8f8f
	ld a, c
	swap a
	and $f
	ld hl, $4ff9
	ld d, $0
	ld e, a
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hli]
	ld b, a
	push hl
	inc hl
	ld a, c
	and $f
	ld c, a
	push hl
	ld hl, $4fb8
	ld e, b
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
	call _hl_
	pop hl
	ld c, [hl]
	ret
; b8fb8


; no known jump sources
Jumptable_b8fb8: ; b8fb8 (2e:4fb8)
	dw Functionb8fc0
	dw Functionb8fc7
	dw Functionb8fce
	dw Functionb8fde


; no known jump sources
Functionb8fc0: ; b8fc0 (2e:4fc0)
	call Functionb8fd5
	call GetPokemonName
	ret

; no known jump sources
Functionb8fc7: ; b8fc7 (2e:4fc7)
	call Functionb8fd5
	call GetItemName
	ret

; no known jump sources
Functionb8fce: ; b8fce (2e:4fce)
	call Functionb8fd5
	call GetMoveName
	ret

; known jump sources: b8fc0 (2e:4fc0), b8fc7 (2e:4fc7), b8fce (2e:4fce)
Functionb8fd5: ; b8fd5 (2e:4fd5)
	ld h, $0
	ld l, c
	add hl, de
	ld a, [hl]
	ld [$d265], a
	ret

; no known jump sources
Functionb8fde: ; b8fde (2e:4fde)
	ld a, c
	and a
	jr z, .asm_b8feb
.asm_b8fe2
	ld a, [de]
	inc de
	cp $50
	jr nz, .asm_b8fe2
	dec c
	jr nz, .asm_b8fe2
.asm_b8feb
	ld hl, StringBuffer1 ; $d073
.asm_b8fee
	ld a, [de]
	inc de
	ld [hli], a
	cp $50
	jr nz, .asm_b8fee
	ld de, StringBuffer1 ; $d073
	ret
; b8ff9 (2e:4ff9)

INCBIN "baserom.gbc",$b8ff9,$b909c - $b8ff9

; no known jump sources
Functionb909c: ; b909c (2e:509c)
	ld hl, $5196
	ld a, $44
	jp Functionb9221

; no known jump sources
Functionb90a4: ; b90a4 (2e:50a4)
	ld hl, $519b
	ld a, $45
	jp Functionb9221

; no known jump sources
Functionb90ac: ; b90ac (2e:50ac)
	call Functionb9169
	ld hl, $51a0
	jr c, Functionb90b9
	ld a, $4
	jp Functionb9221

; known jump sources: b8f4d (2e:4f4d), b90b2 (2e:50b2)
Functionb90b9: ; b90b9 (2e:50b9)
	push hl
	ld hl, $dc1f
	res 7, [hl]
	pop hl
	ld a, $46
	jp Functionb9221

; known jump sources: b8f1f (2e:4f1f), b8f58 (2e:4f58)
Functionb90c5: ; b90c5 (2e:50c5)
	ld hl, $dc1f
	res 7, [hl]
	ld hl, $51d2
	ld a, $47
	jp Functionb9221

; no known jump sources
Functionb90d2: ; b90d2 (2e:50d2)
	ld hl, $51a5
	ld a, $48
	jp Functionb9221

; no known jump sources
Functionb90da: ; b90da (2e:50da)
	ld hl, $51aa
	ld a, $49
	jp Functionb9221

; no known jump sources
Functionb90e2: ; b90e2 (2e:50e2)
	ld hl, $51af
	ld a, $4a
	jp Functionb9221

; no known jump sources
Functionb90ea: ; b90ea (2e:50ea)
	ld hl, $51b4
	ld a, $4b
	jp Functionb9221

; no known jump sources
Functionb90f2: ; b90f2 (2e:50f2)
	ld hl, $51b9
	ld a, $4c
	jp Functionb9221

; no known jump sources
Functionb90fa: ; b90fa (2e:50fa)
	ld hl, $51be
	ld a, $4d
	jp Functionb9221

; no known jump sources
Functionb9102: ; b9102 (2e:5102)
	ld hl, $51c3
	ld a, $4e
	jp Functionb9221

; no known jump sources
Functionb910a: ; b910a (2e:510a)
	ld hl, $51c8
	ld a, $4f
	jp Functionb9221

; no known jump sources
Functionb9112: ; b9112 (2e:5112)
	ld hl, $51cd
	ld a, $50
	jp Functionb9221

; no known jump sources
Functionb911a: ; b911a (2e:511a)
	ld hl, $51d2
	ld a, $51
	jp Functionb9221

; no known jump sources
Functionb9122: ; b9122 (2e:5122)
	ld hl, $51d2
	ld a, $52
	jp Functionb9221

; known jump sources: b8f1c (2e:4f1c)
Functionb912a: ; b912a (2e:512a)
	ld a, [hBGMapMode] ; $ff00+$d4
	push af
	callba Function9189d
	callba Function918a9
	pop af
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $dc1f
	res 7, [hl]
	ld a, $4
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	ld hl, $51d7
	ld a, $53
	jp Functionb9221

; no known jump sources
Functionb9152: ; b9152 (2e:5152)
	ld a, $4
	ld [DefaultFlypoint], a ; $d002
	xor a
	ld [StartFlypoint], a ; $d005
	call Functionb9169
	jp nc, Functionb8f12
	ld hl, $51d7
	ld a, $53
	jp Functionb9221

; known jump sources: b8f12 (2e:4f12), b8f47 (2e:4f47), b8f55 (2e:4f55), b90ac (2e:50ac), b915b (2e:515b)
Functionb9169: ; b9169 (2e:5169)
	call UpdateTime
	ld a, [hHours] ; $ff00+$94
	cp $12
	ret
; b9171 (2e:5171)

INCBIN "baserom.gbc",$b9171,$b91dc - $b9171

; known jump sources: b87e4 (2e:47e4), b8a8b (2e:4a8b), b8aea (2e:4aea), b8e38 (2e:4e38), b9222 (2e:5222)
Functionb91dc: ; b91dc (2e:51dc)
	ld a, [hl]
	cp $16
	jp z, Function3a90
	ld de, $d00c
	ld bc, $28
	jp CopyBytes

; known jump sources: b8747 (2e:4747), b8a46 (2e:4a46), b8bdc (2e:4bdc), b8cbf (2e:4cbf), b8e72 (2e:4e72), b8ef7 (2e:4ef7), b8f00 (2e:4f00), b8f09 (2e:4f09), b8f22 (2e:4f22)
Functionb91eb: ; b91eb (2e:51eb)
	ld a, [StartFlypoint] ; $d005
	and a
	ret nz
	call Function1052
	call PrintText
	ld hl, $520b
	ld a, [DefaultFlypoint] ; $d002
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	callab Function91854
	ret
; b920b (2e:520b)

INCBIN "baserom.gbc",$b920b,$b9221 - $b920b

; known jump sources: b874f (2e:474f), b8757 (2e:4757), b875f (2e:475f), b8815 (2e:4815), b881d (2e:481d), b884c (2e:484c), b8866 (2e:4866), b88fb (2e:48fb), b8a69 (2e:4a69), b8b3d (2e:4b3d), b8b45 (2e:4b45), b8b4d (2e:4b4d), b8b58 (2e:4b58), b8b60 (2e:4b60), b8b68 (2e:4b68), b8b7a (2e:4b7a), b8b8c (2e:4b8c), b8bf2 (2e:4bf2), b8bfa (2e:4bfa), b8c02 (2e:4c02), b8c0a (2e:4c0a), b8c12 (2e:4c12), b8c1a (2e:4c1a), b8c22 (2e:4c22), b8c3b (2e:4c3b), b8c43 (2e:4c43), b8c4b (2e:4c4b), b8c53 (2e:4c53), b8c5b (2e:4c5b), b8c6b (2e:4c6b), b8c73 (2e:4c73), b8c7b (2e:4c7b), b8cc7 (2e:4cc7), b8ccf (2e:4ccf), b8ce0 (2e:4ce0), b8d3b (2e:4d3b), b8d7a (2e:4d7a), b8e0e (2e:4e0e), b8e7a (2e:4e7a), b8e82 (2e:4e82), b8e8a (2e:4e8a), b8e92 (2e:4e92), b8e9a (2e:4e9a), b8ea2 (2e:4ea2), b8eaa (2e:4eaa), b8eb2 (2e:4eb2), b8eba (2e:4eba), b8ec2 (2e:4ec2), b8f3c (2e:4f3c), b8f44 (2e:4f44), b8f52 (2e:4f52), b8f8c (2e:4f8c), b90a1 (2e:50a1), b90a9 (2e:50a9), b90b6 (2e:50b6), b90c2 (2e:50c2), b90cf (2e:50cf), b90d7 (2e:50d7), b90df (2e:50df), b90e7 (2e:50e7), b90ef (2e:50ef), b90f7 (2e:50f7), b90ff (2e:50ff), b9107 (2e:5107), b910f (2e:510f), b9117 (2e:5117), b911f (2e:511f), b9127 (2e:5127), b914f (2e:514f), b9166 (2e:5166)
Functionb9221: ; b9221 (2e:5221)
	push af
	call Functionb91dc
	pop af
	jp Functionb86ea

Functionb9229: ; b9229
	ld a, [CurPartyMon]
	ld hl, $a600
	ld bc, $002f
	call AddNTimes
	ld d, h
	ld e, l
Functionb9237: ; b9237
	push de
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call DisableLCD
	call Functione5f
	pop de
	push de
	ld a, $0
	call GetSRAMBank
	callba Function1de5c8
	call CloseSRAM
	ld a, c
	ld de, $65e6
	or a
	jr z, .asm_b9268
	ld de, $69e6
	sub $3
	jr c, .asm_b9268
	ld de, $6de6

.asm_b9268
	ld hl, VTiles1
	ld bc, $7780
	call Get1bpp
	pop de
	call Functionb92b8
	call EnableLCD
	call WaitBGMap
	ld a, [$d1ec]
	ld e, a
	callba Function8cb4
	call Function32f9
	xor a
	ld [hJoyPressed], a
	call Functionb929a
	call WhiteBGMap
	call DisableLCD
	call Functione51
	jp EnableLCD
; b929a

Functionb929a: ; b929a
.asm_b929a
	call GetJoypadPublic
	ld a, [hJoyPressed]
	and $b
	jr z, .asm_b929a
	and $8
	jr nz, .asm_b92a8
	ret

.asm_b92a8
	ld a, [$cf63]
	push af
	callab Function845d4
	pop af
	ld [$cf63], a
	jr .asm_b929a
; b92b8

Functionb92b8: ; b92b8
	ld h, d
	ld l, e
	push hl
	ld a, $0
	call GetSRAMBank
	ld de, $002b
	add hl, de
	ld a, [hli]
	ld [Buffer1], a
	ld a, [hli]
	ld [Buffer2], a
	ld a, [hli]
	ld [CurPartySpecies], a
	ld b, [hl]
	call CloseSRAM
	ld hl, $52f8
	ld c, $0
.asm_b92d9
	ld a, [hli]
	cp b
	jr z, .asm_b92ea
	cp $ff
	jr z, .asm_b92e6
	inc c
	inc hl
	inc hl
	jr .asm_b92d9

.asm_b92e6
	ld hl, $52f8
	inc hl

.asm_b92ea
	ld a, c
	ld [$d1ec], a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $52f7
	pop bc
	push de
	jp [hl]
; b92f7

INCBIN "baserom.gbc",$b92f7,$b9e76 - $b92f7


ItemIsMail: ; b9e76
	ld a, d
	ld hl, .items
	ld de, 1
	jp IsInArray
; b9e80

.items
	db FLOWER_MAIL
	db SURF_MAIL
	db LITEBLUEMAIL
	db PORTRAITMAIL
	db LOVELY_MAIL
	db EON_MAIL
	db MORPH_MAIL
	db BLUESKY_MAIL
	db MUSIC_MAIL
	db MIRAGE_MAIL
	db $ff
; b9e8b


SECTION "bank2F", ROMX, BANK[$2F]

INCLUDE "engine/std_scripts.asm"

INCBIN "baserom.gbc",$bd0d0,$be66a - $bd0d0

UnknownScript_0xbe66a: ; 0xbe66a
	faceplayer
	trainerstatus $2
	iftrue $6698
	loadtrainerdata
	playrammusic
	2jump UnknownScript_0xbe68a
; 0xbe675

UnknownScript_0xbe675: ; 0xbe675
	loadtrainerdata
	playrammusic
	showemote $0, $fe, 30
	3callasm BANK(Function831e), Function831e
	applymovement2 $d007
	writepersonxy $fe
	faceperson $0, $fe
	2jump UnknownScript_0xbe68a
; 0xbe68a

UnknownScript_0xbe68a: ; 0xbe68a
	loadfont
	trainertext $0
	closetext
	loadmovesprites
	loadtrainerdata
	startbattle
	returnafterbattle
	trainerstatus $1
	loadvar $d04d, $ff
	scripttalkafter
; 0xbe699


SECTION "bank30", ROMX, BANK[$30]

INCLUDE "gfx/overworld/sprites_1.asm"

SECTION "bank31", ROMX, BANK[$31]

INCLUDE "gfx/overworld/sprites_2.asm"

SECTION "bank32", ROMX, BANK[$32]


; no known jump sources
Functionc8000: ; c8000 (32:4000)
	ld hl, $d3fa
	ld e, $5
.asm_c8005
	ld a, [hl]
	and a
	jr z, .asm_c8012
	ld c, l
	ld b, h
	push hl
	push de
	call Functionc804a
	pop de
	pop hl
.asm_c8012
	ld bc, $4
	add hl, bc
	dec e
	jr nz, .asm_c8005
	ret

; no known jump sources
Functionc801a: ; c801a (32:401a)
	ld hl, $d3fa
	ld e, $5
.asm_c801f
	ld a, [hl]
	and a
	jr z, .asm_c802c
	ld bc, $4
	add hl, bc
	dec e
	jr nz, .asm_c801f
	scf
	ret
.asm_c802c
	ld c, l
	ld b, h
	ld hl, $0
	add hl, bc
	ld a, [$d419]
	ld [hli], a
	ld a, [$d41a]
	ld [hli], a
	ld a, [$d41b]
	ld [hli], a
	ld a, [$d41c]
	ld [hl], a
	ret

; known jump sources: c80c6 (32:40c6), c811c (32:411c), c8139 (32:4139), c814d (32:414d), c8164 (32:4164), c81e6 (32:41e6), c81ef (32:41ef), c822c (32:422c), c827d (32:427d), c8299 (32:4299), c82ea (32:42ea), c8377 (32:4377), c8437 (32:4437), c85ca (32:45ca), c85ff (32:45ff), c8d13 (32:4d13), c8dd0 (32:4dd0), c8e26 (32:4e26), c8e4e (32:4e4e), c8f15 (32:4f15)
Functionc8043: ; c8043 (32:4043)
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret

; known jump sources: c800d (32:400d)
Functionc804a: ; c804a (32:404a)
	ld hl, $0
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $405a
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_c805a: ; c805a (32:405a)
	dw Functionc80c6
	dw Functionc80eb
	dw Functionc80f3
	dw Functionc812d
	dw Functionc8141
	dw Functionc8155
	dw Functionc8171
	dw Functionc818b
	dw Functionc81a5
	dw Functionc81b3
	dw Functionc81ea
	dw Functionc837b
	dw Functionc83a8
	dw Functionc8545
	dw Functionc8599
	dw Functionc863f
	dw Functionc8662
	dw Functionc8214
	dw Functionc8281
	dw Functionc8689
	dw Functionc8709
	dw Functionc8be8
	dw Functionc8bf2
	dw Functionc8bfd
	dw Functionc8c08
	dw Functionc8c14
	dw Functionc8c20
	dw Functionc8c30
	dw Functionc8b00
	dw Functionc8c3c
	dw Functionc8c55
	dw Functionc8cf9
	dw Functionc8d02
	dw Functionc8761
	dw Functionc89ee
	dw Functionc87a7
	dw Functionc8805
	dw Functionc8837
	dw Functionc892a
	dw Functionc82f5
	dw Functionc89b5
	dw Functionc8607
	dw Functionc8a3a
	dw Functionc8acc
	dw Functionc8964
	dw Functionc88e7
	dw Functionc8ce1
	dw Functionc8919
	dw Functionc85c2
	dw Functionc85ce
	dw Functionc8603
	dw Functionc8c61
	dw Functionc8ca2
	dw Functionc8d3a


; no known jump sources
Functionc80c6: ; c80c6 (32:40c6)
	call Functionc8043
	ret

; known jump sources: c8b7d (32:4b7d), c8d80 (32:4d80), c8dd8 (32:4dd8)
Functionc80ca: ; c80ca (32:40ca)
	ld hl, $1
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

; known jump sources: c81b3 (32:41b3), c8214 (32:4214), c8281 (32:4281), c82f5 (32:42f5), c83ed (32:43ed), c8545 (32:4545), c8599 (32:4599), c8607 (32:4607), c863f (32:463f), c8662 (32:4662), c8689 (32:4689), c8709 (32:4709), c8761 (32:4761), c87a7 (32:47a7), c8805 (32:4805), c8837 (32:4837), c88e7 (32:48e7), c8919 (32:4919), c892a (32:492a), c8964 (32:4964), c89b5 (32:49b5), c89ee (32:49ee), c8a3a (32:4a3a), c8acc (32:4acc), c8b05 (32:4b05), c8c61 (32:4c61), c8ca2 (32:4ca2)
Functionc80d7: ; c80d7 (32:40d7)
	pop de
	ld hl, $1
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; known jump sources: c81c0 (32:41c0), c8230 (32:4230), c825a (32:425a), c829d (32:429d), c82c7 (32:42c7), c8302 (32:4302), c835c (32:435c), c841d (32:441d), c854e (32:454e), c85a2 (32:45a2), c8610 (32:4610), c8648 (32:4648), c866b (32:466b), c8698 (32:4698), c86cb (32:46cb), c8712 (32:4712), c876a (32:476a), c87b2 (32:47b2), c87db (32:47db), c8810 (32:4810), c8842 (32:4842), c8876 (32:4876), c8890 (32:4890), c88f6 (32:48f6), c8933 (32:4933), c896d (32:496d), c89be (32:49be), c89f7 (32:49f7), c8a49 (32:4a49), c8a84 (32:4a84), c8a96 (32:4a96), c8ad3 (32:4ad3), c8b0e (32:4b0e), c8c68 (32:4c68), c8cab (32:4cab), c8d8b (32:4d8b), c8dec (32:4dec), c8def (32:4def), c8df2 (32:4df2)
Functionc80e5: ; c80e5 (32:40e5)
	ld hl, $1
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functionc80eb: ; c80eb (32:40eb)
	ld de, $40f1
	jp Functionc80fb
; c80f1 (32:40f1)

INCBIN "baserom.gbc",$c80f1,$c80f3 - $c80f1

; no known jump sources
Functionc80f3: ; c80f3 (32:40f3)
	ld de, $40f9
	jp Functionc80fb
; c80f9 (32:40f9)

INCBIN "baserom.gbc",$c80f9,$c80fb - $c80f9

; known jump sources: c80ee (32:40ee), c80f6 (32:40f6)
Functionc80fb: ; c80fb (32:40fb)
	ld a, $1
	ld [$d419], a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c810a
	dec [hl]
	ret
.asm_c810a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8120
	call Functionc8043
	ret
.asm_c8120
	dec a
	ld [hl], a
	and $1
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	ld [$cfc7], a
	ret

; no known jump sources
Functionc812d: ; c812d (32:412d)
	ld de, $413d
	call Functionc8d57
	jr c, .asm_c8139
	ld [$cfc7], a
	ret
.asm_c8139
	call Functionc8043
	ret
; c813d (32:413d)

INCBIN "baserom.gbc",$c813d,$c8141 - $c813d

; no known jump sources
Functionc8141: ; c8141 (32:4141)
	ld de, $4151
	call Functionc8d57
	jr c, .asm_c814d
	ld [$cfc7], a
	ret
.asm_c814d
	call Functionc8043
	ret
; c8151 (32:4151)

INCBIN "baserom.gbc",$c8151,$c8155 - $c8151

; no known jump sources
Functionc8155: ; c8155 (32:4155)
	ld de, $4168
	call Functionc8d57
	jr c, .asm_c8164
	ld [$cfc7], a
	ld [$cfc9], a
	ret
.asm_c8164
	call Functionc8043
	ret
; c8168 (32:4168)

INCBIN "baserom.gbc",$c8168,$c8171 - $c8168

; no known jump sources
Functionc8171: ; c8171 (32:4171)
	call Functionc9059
	jr nz, .asm_c817b
	ld de, $4185
	jr .asm_c817e
.asm_c817b
	ld de, $4188
.asm_c817e
	call Functionc8d57
	ld [$cfc8], a
	ret
; c8185 (32:4185)

INCBIN "baserom.gbc",$c8185,$c818b - $c8185

; no known jump sources
Functionc818b: ; c818b (32:418b)
	call Functionc9059
	jr nz, .asm_c8195
	ld de, $419f
	jr .asm_c8198
.asm_c8195
	ld de, $41a2
.asm_c8198
	call Functionc8d57
	ld [$cfc8], a
	ret
; c819f (32:419f)

INCBIN "baserom.gbc",$c819f,$c81a5 - $c819f

; no known jump sources
Functionc81a5: ; c81a5 (32:41a5)
	ld de, $41af
	call Functionc8d57
	ld [$cfc7], a
	ret
; c81af (32:41af)

INCBIN "baserom.gbc",$c81af,$c81b3 - $c81af

; no known jump sources
Functionc81b3: ; c81b3 (32:41b3)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c81b6: ; c81b6 (32:41b6)
	dw Functionc81c0
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc81e3


; no known jump sources
Functionc81c0: ; c81c0 (32:41c0)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c81d1
	ld hl, $c4ac
	ld bc, $707
	jr .asm_c81d7
.asm_c81d1
	ld hl, $c51a
	ld bc, $606
.asm_c81d7
	call ClearBox
	pop bc
	xor a
	ld [hBGMapThird], a ; $ff00+$d5
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; no known jump sources
Functionc81e3: ; c81e3 (32:41e3)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functionc8043
	ret

; no known jump sources
Functionc81ea: ; c81ea (32:41ea)
	call Functionc9042
	jr z, .asm_c81f3
	call Functionc8043
	ret
.asm_c81f3
	call Functionc9038
	jr nz, .asm_c81fd
	ld de, $4210
	jr .asm_c8200
.asm_c81fd
	ld de, $420c
.asm_c8200
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	call Functionc83ed
	ret
; c820c (32:420c)

INCBIN "baserom.gbc",$c820c,$c8214 - $c820c

; no known jump sources
Functionc8214: ; c8214 (32:4214)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8217: ; c8217 (32:4217)
	dw Functionc8223
	dw Functionc825a
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc827a


; no known jump sources
Functionc8223: ; c8223 (32:4223)
	call Functionc9042
	jr z, .asm_c8230
	ld hl, $d40e
	inc [hl]
	call Functionc8043
	ret
.asm_c8230
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c8242
	ld a, $b8
	ld [$d419], a
	ld a, $84
	jr .asm_c8249
.asm_c8242
	ld a, $b9
	ld [$d419], a
	ld a, $30
.asm_c8249
	ld [$d41a], a
	ld a, $40
	ld [$d41b], a
	xor a
	ld [$d41c], a
	call Functionc82ee
	pop bc
	ret

; no known jump sources
Functionc825a: ; c825a (32:425a)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c826b
	ld hl, $c524
	ld bc, $107
	jr .asm_c8271
.asm_c826b
	ld hl, $c51a
	ld bc, $106
.asm_c8271
	call ClearBox
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	pop bc
	ret

; no known jump sources
Functionc827a: ; c827a (32:427a)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functionc8043
	ret

; no known jump sources
Functionc8281: ; c8281 (32:4281)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8284: ; c8284 (32:4284)
	dw Functionc8290
	dw Functionc82c7
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc82e7


; no known jump sources
Functionc8290: ; c8290 (32:4290)
	call Functionc9042
	jr z, .asm_c829d
	ld hl, $d40e
	inc [hl]
	call Functionc8043
	ret
.asm_c829d
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c82af
	ld a, $ba
	ld [$d419], a
	ld a, $84
	jr .asm_c82b6
.asm_c82af
	ld a, $bb
	ld [$d419], a
	ld a, $30
.asm_c82b6
	ld [$d41a], a
	ld a, $40
	ld [$d41b], a
	xor a
	ld [$d41c], a
	call Functionc82ee
	pop bc
	ret

; no known jump sources
Functionc82c7: ; c82c7 (32:42c7)
	call Functionc80e5
	push bc
	call Functionc9038
	jr nz, .asm_c82d8
	ld hl, $c510
	ld bc, $207
	jr .asm_c82de
.asm_c82d8
	ld hl, $c51a
	ld bc, $206
.asm_c82de
	call ClearBox
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	pop bc
	ret

; no known jump sources
Functionc82e7: ; c82e7 (32:42e7)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functionc8043
	ret

; known jump sources: c8255 (32:4255), c82c2 (32:42c2)
Functionc82ee: ; c82ee (32:42ee)
	callab Functioncc9a1
	ret

; no known jump sources
Functionc82f5: ; c82f5 (32:42f5)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c82f8: ; c82f8 (32:42f8)
	dw Functionc8302
	dw Functionc831d
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc8365


; no known jump sources
Functionc8302: ; c8302 (32:4302)
	call Functionc80e5
	call Functionc9038
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8315
	ld a, $9
	jr .asm_c8317
.asm_c8315
	ld a, $8
.asm_c8317
	ld hl, $3
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionc831d: ; c831d (32:431d)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c833e
	ld hl, $c518
	ld de, $806
.asm_c832b
	push de
	push hl
.asm_c832d
	inc hl
	ld a, [hld]
	ld [hli], a
	dec d
	jr nz, .asm_c832d
	pop hl
	ld de, $14
	add hl, de
	pop de
	dec e
	jr nz, .asm_c832b
	jr .asm_c8355
.asm_c833e
	ld hl, $c4b3
	ld de, $807
.asm_c8344
	push de
	push hl
.asm_c8346
	dec hl
	ld a, [hli]
	ld [hld], a
	dec d
	jr nz, .asm_c8346
	pop hl
	ld de, $14
	add hl, de
	pop de
	dec e
	jr nz, .asm_c8344
.asm_c8355
	xor a
	ld [hBGMapThird], a ; $ff00+$d5
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call Functionc80e5
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionc8365: ; c8365 (32:4365)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8377
	ld hl, $1
	add hl, bc
	ld [hl], $1
	ret
.asm_c8377
	call Functionc8043
	ret

; no known jump sources
Functionc837b: ; c837b (32:437b)
	call Functionc9038
	jr nz, .asm_c8385
	ld de, $439e
	jr .asm_c8388
.asm_c8385
	ld de, $4394
.asm_c8388
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	call Functionc83ed
	ret
; c8394 (32:4394)

INCBIN "baserom.gbc",$c8394,$c83a8 - $c8394

; no known jump sources
Functionc83a8: ; c83a8 (32:43a8)
	call Functionc9038
	jr nz, .asm_c83b2
	ld de, $43d7
	jr .asm_c83b5
.asm_c83b2
	ld de, $43c1
.asm_c83b5
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	call Functionc83ed
	ret
; c83c1 (32:43c1)

INCBIN "baserom.gbc",$c83c1,$c83ed - $c83c1

; known jump sources: c8208 (32:4208), c8390 (32:4390), c83bd (32:43bd)
Functionc83ed: ; c83ed (32:43ed)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c83f0: ; c83f0 (32:43f0)
	dw Functionc83fa
	dw Functionc80e5
	dw Functionc80e5
	dw Functionc842a
	dw Functionc8434


; known jump sources: c8428 (32:4428)
Functionc83fa: ; c83fa (32:43fa)
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $0
	inc [hl]
	ld a, [$d41a]
	ld l, a
	ld a, [$d41b]
	ld h, a
	add hl, de
	add hl, de
	add hl, de
	ld a, [hl]
	cp $ff
	jr z, Functionc8434
	cp $fe
	jr z, .asm_c8425
	cp $fd
	jr z, .asm_c841d
	call Functionc8458
.asm_c841d
	call Functionc80e5
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret
.asm_c8425
	call Functionc843b
	jr Functionc83fa

; no known jump sources
Functionc842a: ; c842a (32:442a)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, $1
	add hl, bc
	ld [hl], $0
	ret

; known jump sources: c8410 (32:4410)
Functionc8434: ; c8434 (32:4434)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functionc8043
	ret

; known jump sources: c8425 (32:4425)
Functionc843b: ; c843b (32:443b)
	push bc
	inc hl
	ld a, [hli]
	ld b, a
	and $f
	ld c, a
	ld a, b
	swap a
	and $f
	ld b, a
	ld e, [hl]
	ld d, $0
	ld hl, $449c
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call ClearBox
	pop bc
	ret

; known jump sources: c841a (32:441a)
Functionc8458: ; c8458 (32:4458)
	push bc
	push hl
	ld e, [hl]
	ld d, $0
	ld hl, $44a8
	add hl, de
	add hl, de
	add hl, de
	ld a, [hli]
	ld b, a
	and $f
	ld c, a
	ld a, b
	swap a
	and $f
	ld b, a
	ld e, [hl]
	inc hl
	ld d, [hl]
	pop hl
	inc hl
	ld a, [hli]
	ld [$d419], a
	push de
	ld e, [hl]
	ld d, $0
	ld hl, $449c
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
.asm_c8484
	push bc
	push hl
	ld a, [$d419]
	ld b, a
.asm_c848a
	ld a, [de]
	add b
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_c848a
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_c8484
	pop bc
	ret
; c849c (32:449c)

INCBIN "baserom.gbc",$c849c,$c8545 - $c849c

; no known jump sources
Functionc8545: ; c8545 (32:4545)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8548: ; c8548 (32:4548)
	dw Functionc854e
	dw Functionc8557
	dw Functionc8561


; no known jump sources
Functionc854e: ; c854e (32:454e)
	call Functionc80e5
	ld de, $202
	call Functionc8f69

; no known jump sources
Functionc8557: ; c8557 (32:4557)
	ld a, [hLCDStatCustom] ; $ff00+$c6
	and a
	ret z
	push bc
	call Functionc8565
	pop bc
	ret

; no known jump sources
Functionc8561: ; c8561 (32:4561)
	call Functionc8f0a
	ret

; known jump sources: c855c (32:455c)
Functionc8565: ; c8565 (32:4565)
	ld hl, $d422
	ld de, $d423
	ld c, $3f
	ld a, [hl]
	push af
.asm_c856f
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_c856f
	pop af
	ld [hl], a
	ld de, $d200
	ld hl, $d422
	ld bc, $0
.asm_c8580
	ld a, [$FF00+$c7]
	cp e
	jr nc, .asm_c858b
	push hl
	add hl, bc
	ld a, [hl]
	pop hl
	jr .asm_c858c
.asm_c858b
	xor a
.asm_c858c
	ld [de], a
	ld a, c
	inc a
	and $3f
	ld c, a
	inc de
	ld a, e
	cp $5f
	jr c, .asm_c8580
	ret

; no known jump sources
Functionc8599: ; c8599 (32:4599)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c859c: ; c859c (32:459c)
	dw Functionc85a2
	dw Functionc85ba
	dw Functionc85be


; no known jump sources
Functionc85a2: ; c85a2 (32:45a2)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	ld [hLCDStatCustom], a ; $ff00+$c6
	xor a
	ld [$FF00+$c7], a
	ld a, $5e
	ld [$FF00+$c8], a
	ld de, $202
	call Functionc8f2e
	ret

; no known jump sources
Functionc85ba: ; c85ba (32:45ba)
	call Functionc8fef
	ret

; no known jump sources
Functionc85be: ; c85be (32:45be)
	call Functionc8f0a
	ret

; no known jump sources
Functionc85c2: ; c85c2 (32:45c2)
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	call Functionc8043
	ret

; no known jump sources
Functionc85ce: ; c85ce (32:45ce)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld e, a
	add $4
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f0
	swap a
	xor $ff
	add $4
	ld d, a
	ld hl, $1
	add hl, bc
	ld a, [hl]
	ld [$d419], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp $20
	jr nc, .asm_c85fc
	inc [hl]
	inc [hl]
	call Functionc8f9a
	ret
.asm_c85fc
	call Functionc8eca
	call Functionc8043
	ret

; no known jump sources
Functionc8603: ; c8603 (32:4603)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8607: ; c8607 (32:4607)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c860a: ; c860a (32:460a)
	dw Functionc8610
	dw Functionc862e
	dw Functionc863b


; no known jump sources
Functionc8610: ; c8610 (32:4610)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	ld [hLCDStatCustom], a ; $ff00+$c6
	xor a
	ld [$FF00+$c7], a
	ld a, $5f
	ld [$FF00+$c8], a
	ld de, $605
	call Functionc8f2e
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Functionc862e: ; c862e (32:462e)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	and $3
	ret nz
	call Functionc8fef
	ret

; no known jump sources
Functionc863b: ; c863b (32:463b)
	call Functionc8f0a
	ret

; no known jump sources
Functionc863f: ; c863f (32:463f)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8642: ; c8642 (32:4642)
	dw Functionc8648
	dw Functionc865a
	dw Functionc865e


; no known jump sources
Functionc8648: ; c8648 (32:4648)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld de, $605
	call Functionc8f2e
	ret

; no known jump sources
Functionc865a: ; c865a (32:465a)
	call Functionc8fef
	ret

; no known jump sources
Functionc865e: ; c865e (32:465e)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8662: ; c8662 (32:4662)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8665: ; c8665 (32:4665)
	dw Functionc866b
	dw Functionc8681
	dw Functionc8685


; no known jump sources
Functionc866b: ; c866b (32:466b)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $2
	call Functionc8f2e
	ret

; no known jump sources
Functionc8681: ; c8681 (32:4681)
	call Functionc8fef
	ret

; no known jump sources
Functionc8685: ; c8685 (32:4685)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8689: ; c8689 (32:4689)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c868c: ; c868c (32:468c)
	dw Functionc8698
	dw Functionc86af
	dw Functionc86cf
	dw Functionc86bd
	dw Functionc86e9
	dw Functionc8705


; no known jump sources
Functionc8698: ; c8698 (32:4698)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $2
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Functionc86af: ; c86af (32:46af)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $10
	jr nc, asm_c86cb
	inc [hl]
	call Functionc86ea
	ret

; no known jump sources
Functionc86bd: ; c86bd (32:46bd)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $ff
	jr z, asm_c86cb
	dec [hl]
	call Functionc86ea
	ret
asm_c86cb: ; c86cb (32:46cb)
	call Functionc80e5
	ret

; no known jump sources
Functionc86cf: ; c86cf (32:46cf)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld d, $2
	call Functionc905d
	ld hl, $3
	add hl, bc
	add [hl]
	call Functionc86ea
	ld hl, $2
	add hl, bc
	ld a, [hl]
	add $4
	ld [hl], a

; no known jump sources
Functionc86e9: ; c86e9 (32:46e9)
	ret

; known jump sources: c86b9 (32:46b9), c86c7 (32:46c7), c86de (32:46de)
Functionc86ea: ; c86ea (32:46ea)
	ld e, a
	xor $ff
	inc a
	ld d, a
	ld h, $d2
	ld a, [$FF00+$c7]
	ld l, a
	ld a, [$FF00+$c8]
	sub l
	srl a
	push af
.asm_c86fa
	ld [hl], e
	inc hl
	ld [hl], d
	inc hl
	dec a
	jr nz, .asm_c86fa
	pop af
	ret nc
	ld [hl], e
	ret

; no known jump sources
Functionc8705: ; c8705 (32:4705)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8709: ; c8709 (32:4709)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c870c: ; c870c (32:470c)
	dw Functionc8712
	dw Functionc8732
	dw Functionc875d


; no known jump sources
Functionc8712: ; c8712 (32:4712)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld hl, $3
	add hl, bc
	ld e, [hl]
	ld d, $2
	call Functionc8f2e
	ld h, $d2
	ld a, [$FF00+$c8]
	ld l, a
	ld [hl], $0
	dec l
	ld [hl], $0
	ret

; no known jump sources
Functionc8732: ; c8732 (32:4732)
	ld a, [$FF00+$c8]
	ld l, a
	ld h, $d2
	ld e, l
	ld d, h
	dec de
.asm_c873a
	ld a, [de]
	dec de
	ld [hld], a
	ld a, [$FF00+$c7]
	cp l
	jr nz, .asm_c873a
	ld [hl], $90
	ld a, [$FF00+$c8]
	ld l, a
	ld a, [hl]
	cp $1
	jr c, .asm_c8752
	cp $90
	jr z, .asm_c8752
	ld [hl], $0
.asm_c8752
	dec l
	ld a, [hl]
	cp $2
	ret c
	cp $90
	ret z
	ld [hl], $0
	ret

; no known jump sources
Functionc875d: ; c875d (32:475d)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8761: ; c8761 (32:4761)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8764: ; c8764 (32:4764)
	dw Functionc876a
	dw Functionc8781
	dw Functionc87a3


; no known jump sources
Functionc876a: ; c876a (32:476a)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ret

; no known jump sources
Functionc8781: ; c8781 (32:4781)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and $3f
	ld d, a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp d
	ret nc
	call Functionc901b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	rlca
	rlca
	and $3
	ld hl, $2
	add hl, bc
	add [hl]
	ld [hl], a
	ret

; no known jump sources
Functionc87a3: ; c87a3 (32:47a3)
	call Functionc8f0a
	ret

; no known jump sources
Functionc87a7: ; c87a7 (32:47a7)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c87aa: ; c87aa (32:47aa)
	dw Functionc87b2
	dw Functionc87cf
	dw Functionc87de
	dw Functionc8801


; no known jump sources
Functionc87b2: ; c87b2 (32:47b2)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $2
	add hl, bc
	ld [hl], $2
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Functionc87cf: ; c87cf (32:47cf)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c87d9
	dec [hl]
	ret
.asm_c87d9
	ld [hl], $10
	call Functionc80e5

; no known jump sources
Functionc87de: ; c87de (32:47de)
	ld a, [$FF00+$c7]
	ld l, a
	ld a, [$FF00+$c8]
	sub l
	dec a
	ld hl, $2
	add hl, bc
	cp [hl]
	ret c
	ld a, [hl]
	push af
	and $7
	jr nz, .asm_c87f6
	ld hl, $1
	add hl, bc
	dec [hl]
.asm_c87f6
	pop af
	call Functionc901b
	ld hl, $2
	add hl, bc
	inc [hl]
	inc [hl]
	ret

; no known jump sources
Functionc8801: ; c8801 (32:4801)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8805: ; c8805 (32:4805)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8808: ; c8808 (32:4808)
	dw Functionc8810
	dw Functionc8869
	dw Functionc8888
	dw Functionc8833


; no known jump sources
Functionc8810: ; c8810 (32:4810)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c882f
	ld a, $2
	jr .asm_c8831
.asm_c882f
	ld a, $fe
.asm_c8831
	ld [hl], a
	ret

; no known jump sources
Functionc8833: ; c8833 (32:4833)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8837: ; c8837 (32:4837)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c883a: ; c883a (32:483a)
	dw Functionc8842
	dw Functionc8869
	dw Functionc8888
	dw Functionc8865


; no known jump sources
Functionc8842: ; c8842 (32:4842)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ef4
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c8861
	ld a, $2
	jr .asm_c8863
.asm_c8861
	ld a, $fe
.asm_c8863
	ld [hl], a
	ret

; no known jump sources
Functionc8865: ; c8865 (32:4865)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8869: ; c8869 (32:4869)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $f8
	jr z, .asm_c8876
	cp $8
	jr nz, .asm_c8879
.asm_c8876
	call Functionc80e5
.asm_c8879
	call Functionc88a5
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $3
	add hl, bc
	add [hl]
	ld [hl], a
	ret

; no known jump sources
Functionc8888: ; c8888 (32:4888)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8893
	call Functionc80e5
.asm_c8893
	call Functionc88a5
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld hl, $3
	add hl, bc
	add [hl]
	ld [hl], a
	ret

; known jump sources: c8879 (32:4879), c8893 (32:4893)
Functionc88a5: ; c88a5 (32:48a5)
	push af
	ld a, [FXAnimIDHi] ; $cfc3
	or a
	jr nz, .asm_c88b3
	ld a, [FXAnimIDLo] ; $cfc2
	cp $cd
	jr z, .asm_c88b7
.asm_c88b3
	pop af
	jp Functionc900b
.asm_c88b7
	ld a, [$FF00+$c7]
	ld d, a
	ld a, [$FF00+$c8]
	sub d
	ld d, a
	ld h, $d2
	ld a, [hSCY] ; $ff00+$d0
	or a
	jr nz, .asm_c88d0
	ld a, [$FF00+$c7]
	or a
	jr z, .asm_c88d6
	dec a
	ld l, a
	ld [hl], $0
	jr .asm_c88d6
.asm_c88d0
	ld a, [$FF00+$c8]
	dec a
	ld l, a
	ld [hl], $0
.asm_c88d6
	ld a, [hSCY] ; $ff00+$d0
	ld l, a
	ld a, [$FF00+$c7]
	sub l
	jr nc, .asm_c88e0
	xor a
	dec d
.asm_c88e0
	ld l, a
	pop af
.asm_c88e2
	ld [hli], a
	dec d
	jr nz, .asm_c88e2
	ret

; no known jump sources
Functionc88e7: ; c88e7 (32:48e7)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c88ea: ; c88ea (32:48ea)
	dw Functionc88f6
	dw Functionc8869
	dw Functionc8888
	dw Functionc88f2


; no known jump sources
Functionc88f2: ; c88f2 (32:48f2)
	call Functionc8f0a
	ret

; no known jump sources
Functionc88f6: ; c88f6 (32:48f6)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	call Functionc9038
	jr nz, .asm_c8915
	ld a, $fe
	jr .asm_c8917
.asm_c8915
	ld a, $2
.asm_c8917
	ld [hl], a
	ret

; no known jump sources
Functionc8919: ; c8919 (32:4919)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c891c: ; c891c (32:491c)
	dw Functionc88f6
	dw Functionc8869
	dw Functionc8929
	dw Functionc8888
	dw Functionc8926


; no known jump sources
Functionc8926: ; c8926 (32:4926)
	call Functionc8f0a

; no known jump sources
Functionc8929: ; c8929 (32:4929)
	ret

; no known jump sources
Functionc892a: ; c892a (32:492a)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c892d: ; c892d (32:492d)
	dw Functionc8933
	dw Functionc894a
	dw Functionc8960


; no known jump sources
Functionc8933: ; c8933 (32:4933)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Functionc894a: ; c894a (32:494a)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $8
	call Functionc905d
	call Functionc900b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $4
	ld [hl], a
	ret

; no known jump sources
Functionc8960: ; c8960 (32:4960)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8964: ; c8964 (32:4964)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8967: ; c8967 (32:4967)
	dw Functionc896d
	dw Functionc8985
	dw Functionc89b1


; no known jump sources
Functionc896d: ; c896d (32:496d)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	xor a
	ld hl, $2
	add hl, bc
	ld [hli], a
	ld [hl], a
	ret

; no known jump sources
Functionc8985: ; c8985 (32:4985)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $6
	call Functionc905d
	push af
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld d, $2
	call Functionc905d
	ld e, a
	pop af
	add e
	call Functionc900b
	ld hl, $2
	add hl, bc
	ld a, [hl]
	add $8
	ld [hl], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret

; no known jump sources
Functionc89b1: ; c89b1 (32:49b1)
	call Functionc8f0a
	ret

; no known jump sources
Functionc89b5: ; c89b5 (32:49b5)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c89b8: ; c89b8 (32:49b8)
	dw Functionc89be
	dw Functionc89ca
	dw Functionc89da


; no known jump sources
Functionc89be: ; c89be (32:49be)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ret

; no known jump sources
Functionc89ca: ; c89ca (32:49ca)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $20
	ret nc
	inc [hl]
	ld d, a
	ld e, $4
	call Functionc8f2e
	ret

; no known jump sources
Functionc89da: ; c89da (32:49da)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c89ea
	dec [hl]
	ld d, a
	ld e, $4
	call Functionc8f2e
	ret
.asm_c89ea
	call Functionc8f0a
	ret

; no known jump sources
Functionc89ee: ; c89ee (32:49ee)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c89f1: ; c89f1 (32:49f1)
	dw Functionc89f7
	dw Functionc8a14
	dw Functionc8a36


; no known jump sources
Functionc89f7: ; c89f7 (32:49f7)
	call Functionc80e5
	call Functionc8eca
	ld a, $42
	call Functionc8ef4
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ld hl, $3
	add hl, bc
	ld [hl], $20
	ret

; no known jump sources
Functionc8a14: ; c8a14 (32:4a14)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	cp $38
	ret nc
	push af
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionc9066
	add $10
	ld d, a
	pop af
	add d
	call Functionc901b
	ld hl, $3
	add hl, bc
	inc [hl]
	inc [hl]
	ret

; no known jump sources
Functionc8a36: ; c8a36 (32:4a36)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8a3a: ; c8a3a (32:4a3a)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8a3d: ; c8a3d (32:4a3d)
	dw Functionc8a49
	dw Functionc8a6f
	dw Functionc8a70
	dw Functionc8a88
	dw Functionc8a6f
	dw Functionc8aac


; no known jump sources
Functionc8a49: ; c8a49 (32:4a49)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld a, [$FF00+$c7]
	ld l, a
	ld h, $d2
.asm_c8a60
	ld a, [$FF00+$c8]
	cp l
	jr z, .asm_c8a69
	xor a
	ld [hli], a
	jr .asm_c8a60
.asm_c8a69
	ld hl, $3
	add hl, bc
	ld [hl], $0

; no known jump sources
Functionc8a6f: ; c8a6f (32:4a6f)
	ret

; no known jump sources
Functionc8a70: ; c8a70 (32:4a70)
	call Functionc8ab0
	jr nc, .asm_c8a79
	call Functionc8a9a
	ret
.asm_c8a79
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ld a, [$FF00+$c7]
	inc a
	ld [$FF00+$c7], a
	call Functionc80e5
	ret

; no known jump sources
Functionc8a88: ; c8a88 (32:4a88)
	call Functionc8ab0
	jr nc, .asm_c8a96
	call Functionc8a9a
	ld a, [$FF00+$c8]
	dec a
	ld l, a
	ld [hl], e
	ret
.asm_c8a96
	call Functionc80e5
	ret

; known jump sources: c8a75 (32:4a75), c8a8d (32:4a8d)
Functionc8a9a: ; c8a9a (32:4a9a)
	ld e, a
	ld a, [$FF00+$c7]
	ld l, a
	ld a, [$FF00+$c8]
	sub l
	srl a
	ld h, $d2
.asm_c8aa5
	ld [hl], e
	inc hl
	inc hl
	dec a
	jr nz, .asm_c8aa5
	ret

; no known jump sources
Functionc8aac: ; c8aac (32:4aac)
	call Functionc8f19
	ret

; known jump sources: c8a70 (32:4a70), c8a88 (32:4a88)
Functionc8ab0: ; c8ab0 (32:4ab0)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	srl a
	srl a
	srl a
	ld e, a
	ld d, $0
	ld hl, $4ac7
	add hl, de
	ld a, [hl]
	cp $ff
	ret
; c8ac7 (32:4ac7)

INCBIN "baserom.gbc",$c8ac7,$c8acc - $c8ac7

; no known jump sources
Functionc8acc: ; c8acc (32:4acc)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8acf: ; c8acf (32:4acf)
	dw Functionc8ad3
	dw Functionc8ae5


; no known jump sources
Functionc8ad3: ; c8ad3 (32:4ad3)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld hl, $2
	add hl, bc
	ld [hl], $40
	ret

; no known jump sources
Functionc8ae5: ; c8ae5 (32:4ae5)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8afc
	dec [hl]
	srl a
	srl a
	srl a
	and $f
	ld d, a
	ld e, a
	call Functionc8f2e
	ret
.asm_c8afc
	call Functionc8f0a
	ret

; no known jump sources
Functionc8b00: ; c8b00 (32:4b00)
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr nz, asm_c8b7a
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8b08: ; c8b08 (32:4b08)
	dw Functionc8b0e
	dw Functionc8b22
	dw Functionc8b60


; no known jump sources
Functionc8b0e: ; c8b0e (32:4b0e)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	ld [hLCDStatCustom], a ; $ff00+$c6
	xor a
	ld [$FF00+$c7], a
	ld a, $60
	ld [$FF00+$c8], a
	ret

; no known jump sources
Functionc8b22: ; c8b22 (32:4b22)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld e, a
	and $7
	ret nz
	ld a, e
	and $18
	sla a
	swap a
	sla a
	ld e, a
	ld d, $0
	push bc
	call Functionc9038
	jr nz, .asm_c8b4d
	ld hl, $4bd8
	add hl, de
	ld a, [hli]
	ld [$cfc9], a
	ld d, a
	ld e, [hl]
	ld bc, $2f30
	jr .asm_c8b5b
.asm_c8b4d
	ld hl, $4be0
	add hl, de
	ld d, [hl]
	inc hl
	ld a, [hl]
	ld [$cfc9], a
	ld e, a
	ld bc, $3728
.asm_c8b5b
	call Functionc8b6c
	pop bc
	ret

; no known jump sources
Functionc8b60: ; c8b60 (32:4b60)
	call Functionc8f19
	ld a, $e4
	ld [$cfc7], a
	ld [$cfc9], a
	ret

; known jump sources: c8b5b (32:4b5b)
Functionc8b6c: ; c8b6c (32:4b6c)
	ld hl, $d200
.asm_c8b6f
	ld [hl], d
	inc hl
	dec b
	jr nz, .asm_c8b6f
.asm_c8b74
	ld [hl], e
	inc hl
	dec c
	jr nz, .asm_c8b74
	ret
asm_c8b7a: ; c8b7a (32:4b7a)
	ld de, $4b81
	call Functionc80ca
	jp [hl]
; c8b81 (32:4b81)

INCBIN "baserom.gbc",$c8b81,$c8be8 - $c8b81

; no known jump sources
Functionc8be8: ; c8be8 (32:4be8)
	ld de, $4bef
	call Functionc8d77
	ret
; c8bef (32:4bef)

INCBIN "baserom.gbc",$c8bef,$c8bf2 - $c8bef

; no known jump sources
Functionc8bf2: ; c8bf2 (32:4bf2)
	ld de, $4bf9
	call Functionc8d77
	ret
; c8bf9 (32:4bf9)

INCBIN "baserom.gbc",$c8bf9,$c8bfd - $c8bf9

; no known jump sources
Functionc8bfd: ; c8bfd (32:4bfd)
	ld de, $4c04
	call Functionc8d77
	ret
; c8c04 (32:4c04)

INCBIN "baserom.gbc",$c8c04,$c8c08 - $c8c04

; no known jump sources
Functionc8c08: ; c8c08 (32:4c08)
	ld de, $4c0f
	call Functionc8d77
	ret
; c8c0f (32:4c0f)

INCBIN "baserom.gbc",$c8c0f,$c8c14 - $c8c0f

; no known jump sources
Functionc8c14: ; c8c14 (32:4c14)
	ld de, $4c1b
	call Functionc8d77
	ret
; c8c1b (32:4c1b)

INCBIN "baserom.gbc",$c8c1b,$c8c20 - $c8c1b

; no known jump sources
Functionc8c20: ; c8c20 (32:4c20)
	ld de, $4c27
	call Functionc8d77
	ret
; c8c27 (32:4c27)

INCBIN "baserom.gbc",$c8c27,$c8c30 - $c8c27

; no known jump sources
Functionc8c30: ; c8c30 (32:4c30)
	ld de, $4c37
	call Functionc8d77
	ret
; c8c37 (32:4c37)

INCBIN "baserom.gbc",$c8c37,$c8c3c - $c8c37

; no known jump sources
Functionc8c3c: ; c8c3c (32:4c3c)
	ld de, $4c43
	call Functionc8d77
	ret
; c8c43 (32:4c43)

INCBIN "baserom.gbc",$c8c43,$c8c55 - $c8c43

; no known jump sources
Functionc8c55: ; c8c55 (32:4c55)
	ld de, $4c5c
	call Functionc8d77
	ret
; c8c5c (32:4c5c)

INCBIN "baserom.gbc",$c8c5c,$c8c61 - $c8c5c

; no known jump sources
Functionc8c61: ; c8c61 (32:4c61)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8c64: ; c8c64 (32:4c64)
	dw Functionc8c68
	dw Functionc8c85


; no known jump sources
Functionc8c68: ; c8c68 (32:4c68)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $2
	add hl, bc
	ld [hl], $1
	ld hl, $3
	add hl, bc
	ld [hl], $20
	ret

; no known jump sources
Functionc8c85: ; c8c85 (32:4c85)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8c9e
	dec [hl]
	and $1
	ret nz
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	call Functionc900b
	ret
.asm_c8c9e
	call Functionc8f0a
	ret

; no known jump sources
Functionc8ca2: ; c8ca2 (32:4ca2)
	call Functionc80d7 ;  ;  ; call does not return

; no known jump sources
Jumptable_c8ca5: ; c8ca5 (32:4ca5)
	dw Functionc8cab
	dw Functionc8cc3
	dw Functionc8cdd


; no known jump sources
Functionc8cab: ; c8cab (32:4cab)
	call Functionc80e5
	call Functionc8eca
	ld a, $43
	ld [hLCDStatCustom], a ; $ff00+$c6
	xor a
	ld [$FF00+$c7], a
	ld a, $37
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld [hl], $0
	ret

; no known jump sources
Functionc8cc3: ; c8cc3 (32:4cc3)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, Functionc8cdd
	ld d, $6
	call Functionc905d
	call Functionc900b
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret

; known jump sources: c8cca (32:4cca)
Functionc8cdd: ; c8cdd (32:4cdd)
	call Functionc8f0a
	ret

; no known jump sources
Functionc8ce1: ; c8ce1 (32:4ce1)
	call Functionc8d0b
	jr c, .asm_c8cea
	bit 7, a
	jr z, .asm_c8ceb
.asm_c8cea
	xor a
.asm_c8ceb
	push af
	call DelayFrame
	pop af
	ld [hSCY], a ; $ff00+$d0
	xor $ff
	inc a
	ld [$d314], a
	ret

; no known jump sources
Functionc8cf9: ; c8cf9 (32:4cf9)
	call Functionc8d0b
	jr nc, .asm_c8cff
	xor a
.asm_c8cff
	ld [hSCX], a ; $ff00+$cf
	ret

; no known jump sources
Functionc8d02: ; c8d02 (32:4d02)
	call Functionc8d0b
	jr nc, .asm_c8d08
	xor a
.asm_c8d08
	ld [hSCY], a ; $ff00+$d0
	ret

; known jump sources: c8ce1 (32:4ce1), c8cf9 (32:4cf9), c8d02 (32:4d02)
Functionc8d0b: ; c8d0b (32:4d0b)
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_c8d18
	call Functionc8043
	scf
	ret
.asm_c8d18
	dec [hl]
	ld hl, $3
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8d2a
	dec [hl]
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and a
	ret
.asm_c8d2a
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	and a
	ret

; no known jump sources
Functionc8d3a: ; c8d3a (32:4d3a)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, .asm_c8d53
	ld d, $6
	call Functionc905d
	ld [hSCX], a ; $ff00+$cf
	ld hl, $3
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ret
.asm_c8d53
	xor a
	ld [hSCX], a ; $ff00+$cf
	ret

; known jump sources: c8130 (32:4130), c8144 (32:4144), c8158 (32:4158), c817e (32:417e), c8198 (32:4198), c81a8 (32:41a8)
Functionc8d57: ; c8d57 (32:4d57)
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_c8d69
	dec [hl]
	ld hl, $3
	add hl, bc
	ld a, [hl]
	call Functionc8eb2
	ret
.asm_c8d69
	ld hl, $2
	add hl, bc
	ld a, [hl]
	ld hl, $1
	add hl, bc
	ld [hl], a
	call Functionc8eac
	ret

; known jump sources: c8beb (32:4beb), c8bf5 (32:4bf5), c8c00 (32:4c00), c8c0b (32:4c0b), c8c17 (32:4c17), c8c23 (32:4c23), c8c33 (32:4c33), c8c3f (32:4c3f), c8c58 (32:4c58)
Functionc8d77: ; c8d77 (32:4d77)
	ld a, [hCGB] ; $ff00+$e6
	and a
	jr nz, asm_c8dd4
	push de
	ld de, $4d85
	call Functionc80ca
	pop de
	jp [hl]

; no known jump sources
Jumptable_c8d85: ; c8d85 (32:4d85)
	dw Functionc8d8b
	dw Functionc8daa
	dw Functionc8dc9


; no known jump sources
Functionc8d8b: ; c8d8b (32:4d8b)
	call Functionc80e5
	ld a, $e4
	call Functionc8ecb
	ld a, $47
	call Functionc8ede
	ld a, [$FF00+$c8]
	inc a
	ld [$FF00+$c8], a
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld [hl], $0
	ld hl, $2
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionc8daa: ; c8daa (32:4daa)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8db5
	dec [hl]
	ret
.asm_c8db5
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8dc3
	call Functionc900b
	ret
.asm_c8dc3
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionc8dc9: ; c8dc9 (32:4dc9)
	call Functionc8f19
	ld a, $e4
	ld [rBGP], a ; $ff00+$47
	call Functionc8043
	ret
asm_c8dd4: ; c8dd4 (32:4dd4)
	push de
	ld de, $4ddd
	call Functionc80ca
	pop de
	jp [hl]

; no known jump sources
Jumptable_c8ddd: ; c8ddd (32:4ddd)
	dw Functionc8de7
	dw Functionc8e02
	dw Functionc8e21
	dw Functionc8e2a
	dw Functionc8e49


; no known jump sources
Functionc8de7: ; c8de7 (32:4de7)
	call Functionc9038
	jr nz, .asm_c8df2
	call Functionc80e5
	call Functionc80e5
.asm_c8df2
	call Functionc80e5
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld [hl], $0
	ld hl, $2
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionc8e02: ; c8e02 (32:4e02)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8e0d
	dec [hl]
	ret
.asm_c8e0d
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8e1b
	call Functionc8e52
	ret
.asm_c8e1b
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionc8e21: ; c8e21 (32:4e21)
	ld a, $e4
	call Functionc8e52
	call Functionc8043
	ret

; no known jump sources
Functionc8e2a: ; c8e2a (32:4e2a)
	ld hl, $2
	add hl, bc
	ld a, [hl]
	and $f
	jr z, .asm_c8e35
	dec [hl]
	ret
.asm_c8e35
	ld a, [hl]
	swap a
	or [hl]
	ld [hl], a
	call Functionc8eac
	jr c, .asm_c8e43
	call Functionc8e7f
	ret
.asm_c8e43
	ld hl, $3
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionc8e49: ; c8e49 (32:4e49)
	ld a, $e4
	call Functionc8e7f
	call Functionc8043
	ret

; known jump sources: c8e17 (32:4e17), c8e23 (32:4e23)
Functionc8e52: ; c8e52 (32:4e52)
	ld h, a
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld a, h
	push bc
	push af
	ld hl, BGPals ; $d080
	ld de, Unkn1Pals ; $d000
	ld b, a
	ld c, $1
	call CopyPals
	ld hl, $d0c8
	ld de, $d048
	pop af
	ld b, a
	ld c, $1
	call CopyPals
	pop bc
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret

; known jump sources: c8e3f (32:4e3f), c8e4b (32:4e4b)
Functionc8e7f: ; c8e7f (32:4e7f)
	ld h, a
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld a, h
	push bc
	push af
	ld hl, $d088
	ld de, $d008
	ld b, a
	ld c, $1
	call CopyPals
	ld hl, OBPals ; $d0c0
	ld de, MartPointer ; $d040 (aliases: Unkn2Pals)
	pop af
	ld b, a
	ld c, $1
	call CopyPals
	pop bc
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret

; known jump sources: c8d73 (32:4d73), c8dba (32:4dba), c8e12 (32:4e12), c8e3a (32:4e3a)
Functionc8eac: ; c8eac (32:4eac)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc [hl]

; known jump sources: c8d65 (32:4d65)
Functionc8eb2: ; c8eb2 (32:4eb2)
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	cp $ff
	jr z, .asm_c8ec8
	cp $fe
	jr nz, .asm_c8ec6
	ld a, [de]
	ld hl, $3
	add hl, bc
	ld [hl], $0
.asm_c8ec6
	and a
	ret
.asm_c8ec8
	scf
	ret

; known jump sources: c85a5 (32:45a5), c85c2 (32:45c2), c85fc (32:45fc), c8613 (32:4613), c864b (32:464b), c866e (32:466e), c869b (32:469b), c8715 (32:4715), c876d (32:476d), c87b5 (32:47b5), c8813 (32:4813), c8845 (32:4845), c88f9 (32:48f9), c8936 (32:4936), c8970 (32:4970), c89c1 (32:49c1), c89fa (32:49fa), c8ad6 (32:4ad6), c8c6b (32:4c6b), c8cae (32:4cae), c8f0f (32:4f0f), c8f2a (32:4f2a)
Functionc8eca: ; c8eca (32:4eca)
	xor a

; known jump sources: c8a4e (32:4a4e), c8b13 (32:4b13), c8d90 (32:4d90)
Functionc8ecb: ; c8ecb (32:4ecb)
	ld hl, CurMartEnd ; $d100 (aliases: LYOverrides)
	ld e, $99
.asm_c8ed0
	ld [hli], a
	dec e
	jr nz, .asm_c8ed0
	ld hl, $d200
	ld e, $91
.asm_c8ed9
	ld [hli], a
	dec e
	jr nz, .asm_c8ed9
	ret

; known jump sources: c85c7 (32:45c7), c8650 (32:4650), c8673 (32:4673), c86a0 (32:46a0), c871a (32:471a), c8772 (32:4772), c87ba (32:47ba), c8818 (32:4818), c88fe (32:48fe), c893b (32:493b), c8975 (32:4975), c89c6 (32:49c6), c8a53 (32:4a53), c8adb (32:4adb), c8c70 (32:4c70), c8d95 (32:4d95)
Functionc8ede: ; c8ede (32:4ede)
	ld [hLCDStatCustom], a ; $ff00+$c6
	call Functionc9038
	jr nz, .asm_c8eea
	ld de, $36
	jr .asm_c8eed
.asm_c8eea
	ld de, $2f5e
.asm_c8eed
	ld a, d
	ld [$FF00+$c7], a
	ld a, e
	ld [$FF00+$c8], a
	ret

; known jump sources: c884a (32:484a), c89ff (32:49ff)
Functionc8ef4: ; c8ef4 (32:4ef4)
	ld [hLCDStatCustom], a ; $ff00+$c6
	call Functionc9038
	jr nz, .asm_c8f00
	ld de, $36
	jr .asm_c8f03
.asm_c8f00
	ld de, $2d5e
.asm_c8f03
	ld a, d
	ld [$FF00+$c7], a
	ld a, e
	ld [$FF00+$c8], a
	ret

; known jump sources: c8561 (32:4561), c85be (32:45be), c8603 (32:4603), c863b (32:463b), c865e (32:465e), c8685 (32:4685), c8705 (32:4705), c875d (32:475d), c87a3 (32:47a3), c8801 (32:4801), c8833 (32:4833), c8865 (32:4865), c88f2 (32:48f2), c8926 (32:4926), c8960 (32:4960), c89b1 (32:49b1), c89ea (32:49ea), c8a36 (32:4a36), c8afc (32:4afc), c8c9e (32:4c9e), c8cdd (32:4cdd)
Functionc8f0a: ; c8f0a (32:4f0a)
	xor a
	ld [$FF00+$c7], a
	ld [$FF00+$c8], a
	call Functionc8eca
	xor a
	ld [hLCDStatCustom], a ; $ff00+$c6
	call Functionc8043
	ret

; known jump sources: c8aac (32:4aac), c8b60 (32:4b60), c8dc9 (32:4dc9)
Functionc8f19: ; c8f19 (32:4f19)
	xor a
	ld [hLCDStatCustom], a ; $ff00+$c6
	ld a, $e4
	ld [rBGP], a ; $ff00+$47
	ld [$cfc7], a
	ld [$cfc9], a
	ld [$FF00+$c7], a
	ld [$FF00+$c8], a
	call Functionc8eca
	ret

; known jump sources: c85b6 (32:45b6), c8624 (32:4624), c8656 (32:4656), c867d (32:467d), c8724 (32:4724), c89d6 (32:49d6), c89e6 (32:49e6), c8af8 (32:4af8)
Functionc8f2e: ; c8f2e (32:4f2e)
	push bc
	xor a
	ld [$d419], a
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	ld a, $80
	ld [$d41c], a
	ld bc, $d200
.asm_c8f43
	ld a, [$FF00+$c7]
	cp c
	jr nc, .asm_c8f58
	ld a, [$FF00+$c8]
	cp c
	jr c, .asm_c8f58
	ld a, [$d41b]
	ld d, a
	ld a, [$d419]
	call Functionc905d
	ld [bc], a
.asm_c8f58
	inc bc
	ld a, [$d41a]
	ld hl, $d419
	add [hl]
	ld [hl], a
	ld hl, $d41c
	dec [hl]
	jr nz, .asm_c8f43
	pop bc
	ret

; known jump sources: c8554 (32:4554)
Functionc8f69: ; c8f69 (32:4f69)
	push bc
	xor a
	ld [$d419], a
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	ld a, $40
	ld [$d41c], a
	ld bc, $d422
.asm_c8f7e
	ld a, [$d41b]
	ld d, a
	ld a, [$d419]
	call Functionc905d
	ld [bc], a
	inc bc
	ld a, [$d41a]
	ld hl, $d419
	add [hl]
	ld [hl], a
	ld hl, $d41c
	dec [hl]
	jr nz, .asm_c8f7e
	pop bc
	ret

; known jump sources: c85f8 (32:45f8)
Functionc8f9a: ; c8f9a (32:4f9a)
	push bc
	ld [$d41c], a
	ld a, e
	ld [$d41a], a
	ld a, d
	ld [$d41b], a
	call Functionc8fe4
	ld hl, $d200
	add hl, de
	ld c, l
	ld b, h
.asm_c8faf
	ld a, [$d41c]
	and a
	jr z, .asm_c8fe1
	dec a
	ld [$d41c], a
	push af
	ld a, [$d41b]
	ld d, a
	ld a, [$d41a]
	push hl
	call Functionc905d
	ld e, a
	pop hl
	ld a, [$FF00+$c8]
	cp c
	jr c, .asm_c8fcf
	ld a, e
	ld [bc], a
	inc bc
.asm_c8fcf
	ld a, [$FF00+$c7]
	cp l
	jr nc, .asm_c8fd6
	ld [hl], e
	dec hl
.asm_c8fd6
	ld a, [$d41a]
	add $4
	ld [$d41a], a
	pop af
	jr .asm_c8faf
.asm_c8fe1
	pop bc
	and a
	ret

; known jump sources: c8fa6 (32:4fa6)
Functionc8fe4: ; c8fe4 (32:4fe4)
	ld a, [$FF00+$c7]
	ld e, a
	ld a, [$d419]
	add e
	ld e, a
	ld d, $0
	ret

; known jump sources: c85ba (32:45ba), c8637 (32:4637), c865a (32:465a), c8681 (32:4681)
Functionc8fef: ; c8fef (32:4fef)
	push bc
	ld a, [$FF00+$c7]
	ld l, a
	inc a
	ld e, a
	ld h, $d2
	ld d, h
	ld a, [$FF00+$c8]
	sub l
	and a
	jr z, .asm_c9009
	ld c, a
	ld a, [hl]
	push af
.asm_c9001
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_c9001
	pop af
	ld [hl], a
.asm_c9009
	pop bc
	ret

; known jump sources: c88b4 (32:48b4), c8954 (32:4954), c899d (32:499d), c8c9a (32:4c9a), c8cd1 (32:4cd1), c8dbf (32:4dbf)
Functionc900b: ; c900b (32:500b)
	push af
	ld h, $d2
	ld a, [$FF00+$c7]
	ld l, a
	ld a, [$FF00+$c8]
	sub l
	ld d, a
	pop af
.asm_c9016
	ld [hli], a
	dec d
	jr nz, .asm_c9016
	ret

; known jump sources: c8790 (32:4790), c87f7 (32:47f7), c8a2c (32:4a2c)
Functionc901b: ; c901b (32:501b)
	push af
	ld e, a
	ld a, [$FF00+$c7]
	ld l, a
	ld a, [$FF00+$c8]
	sub l
	sub e
	ld d, a
	ld h, $d2
	ld a, [$FF00+$c7]
	ld l, a
	ld a, $90
.asm_c902c
	ld [hli], a
	dec e
	jr nz, .asm_c902c
	pop af
	xor $ff
.asm_c9033
	ld [hli], a
	dec d
	jr nz, .asm_c9033
	ret

; known jump sources: c81c4 (32:41c4), c81f3 (32:41f3), c8234 (32:4234), c825e (32:425e), c82a1 (32:42a1), c82cb (32:42cb), c8305 (32:4305), c837b (32:437b), c83a8 (32:43a8), c8826 (32:4826), c8858 (32:4858), c890c (32:490c), c8b39 (32:4b39), c8de7 (32:4de7), c8ee0 (32:4ee0), c8ef6 (32:4ef6)
Functionc9038: ; c9038 (32:5038)
	ld hl, $2
	add hl, bc
	ld a, [hBattleTurn] ; $ff00+$e4
	and $1
	xor [hl]
	ret

; known jump sources: c81ea (32:41ea), c8223 (32:4223), c8290 (32:4290)
Functionc9042: ; c9042 (32:5042)
	ld hl, $2
	add hl, bc
	ld a, [hBattleTurn] ; $ff00+$e4
	and $1
	xor [hl]
	jr nz, .asm_c9053
	ld a, [EnemySubStatus3] ; $c66f
	and $60
	ret
.asm_c9053
	ld a, [PlayerSubStatus3] ; $c66a
	and $60
	ret

; known jump sources: c8171 (32:4171), c818b (32:418b)
Functionc9059: ; c9059 (32:5059)
	ld a, [hSGB] ; $ff00+$e7
	and a
	ret

; known jump sources: c86d6 (32:46d6), c8951 (32:4951), c898c (32:498c), c8997 (32:4997), c8cce (32:4cce), c8d45 (32:4d45), c8f54 (32:4f54), c8f85 (32:4f85), c8fc2 (32:4fc2)
Functionc905d: ; c905d (32:505d)
	ld e, a
	callab Functionce765
	ld a, e
	ret

; known jump sources: c8a24 (32:4a24)
Functionc9066: ; c9066 (32:5066)
	ld e, a
	callab Functionce76b
	ld a, e
	ret
; c906f (32:506f)

INCBIN "baserom.gbc",$c906f,$cbcdd - $c906f

Functioncbcdd: ; cbcdd
	call Functioncbce5
	ld a, [hCGB]
	and a
	ret nz
	ret
; cbce5

Functioncbce5: ; cbce5
	ld a, [hCGB]
	and a
	jr nz, .asm_cbd06
	ld a, [TimeOfDayPal]
	and $3
	cp $3
	ld a, $0
	jr z, .asm_cbcf7
	ld a, $aa

.asm_cbcf7
	call DmgToCgbBGPals
	ld c, $4
	call DelayFrames
	callba _UpdateTimePals
	ret

.asm_cbd06
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, BGPals
	ld c, $20
.asm_cbd12
	ld a, $bc
	ld [hli], a
	ld a, $7e
	ld [hli], a
	dec c
	jr nz, .asm_cbd12
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ld c, $4
	call DelayFrames
	callba _UpdateTimePals
	ret
; cbd2e

TheEndGFX: ; cbd2e
INCBIN "gfx/credits/theend.2bpp"
; cbe2e


SECTION "bank33", ROMX, BANK[$33]

Functioncc000: ; cc000
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call Functione58
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld hl, TileMap
	ld b, $4
	ld c, $d
	call TextBox
	ld hl, $c518
	ld b, $4
	ld c, $d
	call TextBox
	ld hl, $c4a2
	ld de, $40ae
	call PlaceString
	ld hl, $c51a
	ld de, $40b8
	call PlaceString
	ld hl, $c4f5
	ld de, $40a7
	call PlaceString
	ld hl, $c56d
	ld de, $40a7
	call PlaceString
	ld a, [$df9c]
	ld [$d265], a
	call GetPokemonName
	ld de, StringBuffer1
	ld hl, $c4c9
	call PlaceString
	ld h, b
	ld l, c
	ld a, [$dfbb]
	ld [TempMonLevel], a
	call PrintLevel
	ld de, EnemyMonNick
	ld hl, $c541
	call PlaceString
	ld h, b
	ld l, c
	ld a, [EnemyMonLevel]
	ld [TempMonLevel], a
	call PrintLevel
	ld hl, $c4fb
	ld de, $dfc0
	ld bc, $0203
	call PrintNum
	ld hl, $c573
	ld de, EnemyMonMaxHPHi
	call PrintNum
	ld hl, $40c2
	call PrintText
	pop af
	ld [Options], a
	call WaitBGMap
	ld b, $8
	call GetSGBLayout
	call Function32f9
	ret
; cc0a7

INCBIN "baserom.gbc",$cc0a7,$cc0c7 - $cc0a7


Functioncc0c7: ; cc0c7
	call GetPokemonName
	ld hl, $40d0
	jp PrintText
; cc0d0

INCBIN "baserom.gbc",$cc0d0,$cc0d5 - $cc0d0

Functioncc0d5: ; cc0d5
	ret
; cc0d6


Functioncc0d6: ; cc0d6
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	call Functioncc0e4
	pop af
	ld [rSVBK], a
	ret
; cc0e4

Functioncc0e4: ; cc0e4
	ld c, $6
.asm_cc0e6
	call Functioncc1fb
	dec c
	jr nz, .asm_cc0e6
	call Functioncc8a4
	call Functioncc1e2
	call Functioncc1fb
	ld c, $1
	ld a, [rKEY1]
	bit 7, a
	jr nz, .asm_cc0ff
	ld c, $3

.asm_cc0ff
	ld hl, $ff9e
	ld a, [hl]
	push af
	ld [hl], c
	call Functioncc11c
	pop af
	ld [$ff9e], a
	ld a, $1
	ld [hBGMapMode], a
	call Functioncc1fb
	call Functioncc1fb
	call Functioncc1fb
	call WaitSFX
	ret
; cc11c

Functioncc11c: ; cc11c
	ld a, [FXAnimIDHi]
	and a
	jr nz, .asm_cc156
	callba Function4ea44
	jr c, .asm_cc141
	call Functioncc1a1
	call Functioncc163
	call Functioncc8a4
	call Functioncc1e2
	xor a
	ld [hSCX], a
	ld [hSCY], a
	call Functioncc1fb
	call Functioncc1bb

.asm_cc141
	ld a, [$cfca]
	and a
	jr z, .asm_cc15f
	ld l, a
	ld h, $0
	ld de, $010e
	add hl, de
	ld a, l
	ld [FXAnimIDLo], a
	ld a, h
	ld [FXAnimIDHi], a

.asm_cc156
	call WaitSFX
	call Functioncc881
	call Functioncc163

.asm_cc15f
	call Functioncc8f6
	ret
; cc163

Functioncc163: ; cc163
	call Functioncc8d3
.asm_cc166
	call Functioncc25f
	call Functionccb48
	call Functioncc96e
	call Function3b0c
	call Functioncc1e2
	ld a, [FXAnimIDHi]
	or a
	jr nz, .asm_cc193
	ld a, [FXAnimIDLo]
	cp $cd
	jr nz, .asm_cc193
	ld a, $2e
	ld b, $5
	ld de, $0004
	ld hl, $d3fa
.asm_cc18c
	cp [hl]
	jr z, .asm_cc196
	add hl, de
	dec b
	jr nz, .asm_cc18c

.asm_cc193
	call Functioncc1fb

.asm_cc196
	ld a, [$d40f]
	bit 0, a
	jr z, .asm_cc166
	call Functioncc23d
	ret
; cc1a1

Functioncc1a1: ; cc1a1
	call Functioncc1fb
	call WaitTop
	call Functioncc207
	ld a, $1
	ld [hBGMapMode], a
	call Functioncc1fb
	call Functioncc1fb
	call Functioncc1fb
	call WaitTop
	ret
; cc1bb

Functioncc1bb: ; cc1bb
	call Functioncc1fb
	call WaitTop
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	ld hl, UpdateBattleHuds
	ld a, $f
	rst FarCall
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hBGMapMode], a
	call Functioncc1fb
	call Functioncc1fb
	call Functioncc1fb
	call WaitTop
	ret
; cc1e2

Functioncc1e2: ; cc1e2
	ld a, [hCGB]
	and a
	ret z
	ld a, [rBGP]
	ld b, a
	ld a, [$cfc7]
	cp b
	call nz, Functioncc91a
	ld a, [rOBP0]
	ld b, a
	ld a, [$cfc8]
	cp b
	call nz, Functioncc94b
	ret
; cc1fb

Functioncc1fb: ; cc1fb
	ld a, $1
	ld [VBlankOccurred], a
.asm_cc200
	ld a, [VBlankOccurred]
	and a
	jr nz, .asm_cc200
	ret
; cc207

Functioncc207: ; cc207
	ld a, [hBattleTurn]
	and a
	jr z, .asm_cc216
	ld hl, $c4a1
	ld bc, $040a
	call ClearBox
	ret

.asm_cc216
	ld hl, $c535
	ld bc, $050b
	call ClearBox
	ret
; cc220

INCBIN "baserom.gbc",$cc220,$cc23d - $cc220


Functioncc23d: ; cc23d
	ld a, [$d40f]
	bit 3, a
	jr z, .asm_cc254
	ld hl, $c403
	ld c, $28
.asm_cc249
	ld a, [hl]
	and $f0
	ld [hli], a
	inc hl
	inc hl
	inc hl
	dec c
	jr nz, .asm_cc249
	ret

.asm_cc254
	ld hl, Sprites
	ld c, $a0
	xor a
.asm_cc25a
	ld [hli], a
	dec c
	jr nz, .asm_cc25a
	ret
; cc25f

Functioncc25f: ; cc25f
	call Functioncc267
	ret nc
	call Functioncc275
	ret
; cc267

Functioncc267: ; cc267
	ld a, [$d412]
	and a
	jr z, .asm_cc273
	dec a
	ld [$d412], a
	and a
	ret

.asm_cc273
	scf
	ret
; cc275

Functioncc275: ; cc275
.asm_cc275
	call Function3af0
	cp $ff
	jr nz, .asm_cc286
	ld hl, $d40f
	bit 1, [hl]
	jr nz, .asm_cc28e
	set 0, [hl]
	ret

.asm_cc286
	cp $d0
	jr nc, .asm_cc28e
	ld [$d412], a
	ret

.asm_cc28e
	call Functioncc293
	jr .asm_cc275
; cc293

Functioncc293: ; cc293
	ld a, [$d417]
	sub $d0
	ld e, a
	ld d, $0
	ld hl, $42a4
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; cc2a4


; no known jump sources
Jumptable_cc2a4: ; cc2a4 (33:42a4)
	dw Functioncc41f
	dw Functioncc485
	dw Functioncc485
	dw Functioncc485
	dw Functioncc485
	dw Functioncc485
	dw Functioncc4c0
	dw Functioncc506
	dw Functioncc4e3
	dw Functioncc52c
	dw Functioncc57e
	dw Functioncc5d0
	dw Functioncc5dc
	dw Functioncc640
	dw Functioncc750
	dw Functioncc46c
	dw Functioncc7cd
	dw Functioncc807
	dw Functioncc6cf
	dw Functioncc7bb
	dw Functioncc7bf
	dw Functioncc479
	dw Functioncc776
	dw Functioncc5db
	dw Functioncc622
	dw Functioncc735
	dw Functioncc304
	dw Functioncc304
	dw Functioncc304
	dw Functioncc304
	dw Functioncc3fa
	dw Functioncc383
	dw Functioncc43b
	dw Functioncc457
	dw Functioncc45e
	dw Functioncc465
	dw Functioncc7c4
	dw Functioncc7ca
	dw Functioncc7cb
	dw Functioncc7cc
	dw Functioncc3d6
	dw Functioncc3a6
	dw Functioncc3ad
	dw Functioncc3b2
	dw Functioncc339
	dw Functioncc348
	dw Functioncc317
	dw Functioncc305


; no known jump sources
Functioncc304: ; cc304 (33:4304)
	ret

; no known jump sources
Functioncc305: ; cc305 (33:4305)
	ld hl, $d40f
	res 1, [hl]
	ld hl, $d413
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret

; no known jump sources
Functioncc317: ; cc317 (33:4317)
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	push de
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $d413
	ld [hl], e
	inc hl
	ld [hl], d
	pop de
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ld hl, $d40f
	set 1, [hl]
	ret

; no known jump sources
Functioncc339: ; cc339 (33:4339)
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret

; no known jump sources
Functioncc348: ; cc348 (33:4348)
	call Function3af0
	ld hl, $d40f
	bit 2, [hl]
	jr nz, .asm_cc35b
	and a
	jr z, .asm_cc363
	dec a
	set 2, [hl]
	ld [$d415], a
.asm_cc35b
	ld hl, $d415
	ld a, [hl]
	and a
	jr z, .asm_cc372
	dec [hl]
.asm_cc363
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret
.asm_cc372
	ld hl, $d40f
	res 2, [hl]
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	inc de
	ld [hl], d
	dec hl
	ld [hl], e
	ret

; no known jump sources
Functioncc383: ; cc383 (33:4383)
	ld hl, $c689
	ld a, [hl]
	and a
	jr z, .asm_cc39a
	dec [hl]
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret
.asm_cc39a
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	inc de
	ld [hl], d
	dec hl
	ld [hl], e
	ret

; no known jump sources
Functioncc3a6: ; cc3a6 (33:43a6)
	call Function3af0
	ld [$d416], a
	ret

; no known jump sources
Functioncc3ad: ; cc3ad (33:43ad)
	ld hl, $d416
	inc [hl]
	ret

; no known jump sources
Functioncc3b2: ; cc3b2 (33:43b2)
	call Function3af0
	ld hl, $d416
	cp [hl]
	jr z, .asm_cc3c7
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	inc de
	ld [hl], d
	dec hl
	ld [hl], e
	ret
.asm_cc3c7
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret

; no known jump sources
Functioncc3d6: ; cc3d6 (33:43d6)
	call Function3af0
	ld hl, $c689
	cp [hl]
	jr z, .asm_cc3eb
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	inc de
	ld [hl], d
	dec hl
	ld [hl], e
	ret
.asm_cc3eb
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret

; no known jump sources
Functioncc3fa: ; cc3fa (33:43fa)
	call Function3af0
	ld e, a
	ld a, [$c689]
	and e
	jr nz, .asm_cc410
	ld hl, $d410
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc de
	inc de
	ld [hl], d
	dec hl
	ld [hl], e
	ret
.asm_cc410
	call Function3af0
	ld e, a
	call Function3af0
	ld d, a
	ld hl, $d410
	ld [hl], e
	inc hl
	ld [hl], d
	ret

; no known jump sources
Functioncc41f: ; cc41f (33:441f)
	call Function3af0
	ld [$d419], a
	call Function3af0
	ld [$d41a], a
	call Function3af0
	ld [$d41b], a
	call Function3af0
	ld [$d41c], a
	call Functioncc9a1
	ret

; no known jump sources
Functioncc43b: ; cc43b (33:443b)
	call Function3af0
	ld [$d419], a
	call Function3af0
	ld [$d41a], a
	call Function3af0
	ld [$d41b], a
	call Function3af0
	ld [$d41c], a
	call Functionccb4f
	ret

; no known jump sources
Functioncc457: ; cc457 (33:4457)
	call Function3af0
	ld [$cfc7], a
	ret

; no known jump sources
Functioncc45e: ; cc45e (33:445e)
	call Function3af0
	ld [$cfc8], a
	ret

; no known jump sources
Functioncc465: ; cc465 (33:4465)
	call Function3af0
	ld [$cfc9], a
	ret

; no known jump sources
Functioncc46c: ; cc46c (33:446c)
	ld a, [hSGB] ; $ff00+$e7
	and a
	ld a, $e0
	jr z, .asm_cc475
	ld a, $f0
.asm_cc475
	ld [$cfc8], a
	ret

; no known jump sources
Functioncc479: ; cc479 (33:4479)
	ld hl, $d30a
	ld a, $a0
.asm_cc47e
	ld [hl], $0
	inc hl
	dec a
	jr nz, .asm_cc47e
	ret

; no known jump sources
Functioncc485: ; cc485 (33:4485)
	ld a, [$d417]
	and $f
	ld c, a
	ld hl, $d300
	xor a
	ld [$d419], a
.asm_cc492
	ld a, [$d419]
	cp $4f
	ret nc
	call Function3af0
	ld [hli], a
	ld a, [$d419]
	ld [hli], a
	push bc
	push hl
	ld l, a
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, hl
	ld de, $8310
	add hl, de
	ld a, [$d417]
	call Functionce846
	ld a, [$d419]
	add c
	ld [$d419], a
	pop hl
	pop bc
	dec c
	jr nz, .asm_cc492
	ret

; no known jump sources
Functioncc4c0: ; cc4c0 (33:44c0)
	call Function3af0
	ld e, $a
	ld bc, $d30a
.asm_cc4c8
	ld hl, $0
	add hl, bc
	ld d, [hl]
	ld a, [$d417]
	cp d
	jr z, .asm_cc4dd
	ld hl, $18
	add hl, bc
	ld c, l
	ld b, h
	dec e
	jr nz, .asm_cc4c8
	ret
.asm_cc4dd
	ld hl, $e
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncc4e3: ; cc4e3 (33:44e3)
	call Function3af0
	ld e, $5
	ld bc, $d3fa
.asm_cc4eb
	ld hl, $0
	add hl, bc
	ld d, [hl]
	ld a, [$d417]
	cp d
	jr z, .asm_cc500
	ld hl, $4
	add hl, bc
	ld c, l
	ld b, h
	dec e
	jr nz, .asm_cc4eb
	ret
.asm_cc500
	ld hl, $1
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncc506: ; cc506 (33:4506)
	call Function3af0
	ld e, $a
	ld bc, $d30a
.asm_cc50e
	ld hl, $0
	add hl, bc
	ld d, [hl]
	ld a, [$d417]
	cp d
	jr z, .asm_cc523
	ld hl, $18
	add hl, bc
	ld c, l
	ld b, h
	dec e
	jr nz, .asm_cc50e
	ret
.asm_cc523
	call Function3af0
	ld hl, $e
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncc52c: ; cc52c (33:452c)
	ld hl, $d300
.asm_cc52f
	ld a, [hl]
	and a
	jr z, .asm_cc537
	inc hl
	inc hl
	jr .asm_cc52f
.asm_cc537
	ld a, $28
	ld [hli], a
	ld a, $42
	ld [hli], a
	ld a, $29
	ld [hli], a
	ld a, $49
	ld [hl], a
	ld hl, $8730
	ld de, $9060
	ld a, $70
	ld [$d419], a
	ld a, $7
	call Functioncc561
	ld de, $9310
	ld a, $60
	ld [$d419], a
	ld a, $6
	call Functioncc561
	ret

; known jump sources: cc550 (33:4550), cc55d (33:455d), cc57b (33:457b)
Functioncc561: ; cc561 (33:4561)
	push af
	push hl
	push de
	ld bc, $3301
	call Request2bpp
	pop de
	ld a, [$d419]
	ld l, a
	ld h, $0
	add hl, de
	ld e, l
	ld d, h
	pop hl
	ld bc, $10
	add hl, bc
	pop af
	dec a
	jr nz, Functioncc561
	ret

; no known jump sources
Functioncc57e: ; cc57e (33:457e)
	ld hl, $d300
.asm_cc581
	ld a, [hl]
	and a
	jr z, .asm_cc589
	inc hl
	inc hl
	jr .asm_cc581
.asm_cc589
	ld a, $28
	ld [hli], a
	ld a, $35
	ld [hli], a
	ld a, $29
	ld [hli], a
	ld a, $43
	ld [hl], a
	ld hl, $8660
	ld de, $9050
	ld a, $70
	ld [$d419], a
	ld a, $7
	call Functioncc5b3
	ld de, $9310
	ld a, $60
	ld [$d419], a
	ld a, $6
	call Functioncc5b3
	ret

; known jump sources: cc5a2 (33:45a2), cc5af (33:45af), cc5cd (33:45cd)
Functioncc5b3: ; cc5b3 (33:45b3)
	push af
	push hl
	push de
	ld bc, $3302
	call Request2bpp
	pop de
	ld a, [$d419]
	ld l, a
	ld h, $0
	add hl, de
	ld e, l
	ld d, h
	pop hl
	ld bc, $20
	add hl, bc
	pop af
	dec a
	jr nz, Functioncc5b3
	ret

; no known jump sources
Functioncc5d0: ; cc5d0 (33:45d0)
	callab Functionf971
	ld a, c
	ld [$d416], a
	ret

; no known jump sources
Functioncc5db: ; cc5db (33:45db)
	ret

; no known jump sources
Functioncc5dc: ; cc5dc (33:45dc)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [CurPartySpecies] ; $d108
	push af
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc604
	ld a, [TempBattleMonSpecies] ; $d205
	ld [CurPartySpecies], a ; $d108
	ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV)
	ld a, $2d
	call Predef
	ld de, $8000
	ld a, $3c
	call Predef
	jr .asm_cc61a
.asm_cc604
	ld a, [TempEnemyMonSpecies] ; $d204
	ld [CurPartySpecies], a ; $d108
	ld hl, EnemyMonAtkDefDV ; $d20c (aliases: EnemyMonDVs, EnemyMonMovesEnd)
	ld a, $2d
	call Predef
	ld de, $8000
	ld a, $3d
	call Predef
.asm_cc61a
	pop af
	ld [CurPartySpecies], a ; $d108
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Functioncc622: ; cc622 (33:4622)
	ld de, $8000
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc635
	ld hl, $9000
	ld b, $0
	ld c, $31
	call Request2bpp
	ret
.asm_cc635
	ld hl, $9310
	ld b, $0
	ld c, $24
	call Request2bpp
	ret

; no known jump sources
Functioncc640: ; cc640 (33:4640)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	xor a
	call GetSRAMBank
	ld hl, $a000
	ld bc, $310
.asm_cc651
	xor a
	ld [hli], a
	dec bc
	ld a, c
	or b
	jr nz, .asm_cc651
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc68f
	ld hl, $6a80
	ld de, $a130
	call Functioncc6c6
	ld hl, $6a90
	ld de, $a1a0
	call Functioncc6c6
	ld hl, $6aa0
	ld de, $a140
	call Functioncc6c6
	ld hl, $6ab0
	ld de, $a1b0
	call Functioncc6c6
	ld hl, $9000
	ld de, $a000
	ld bc, $3331
	call Request2bpp
	jr .asm_cc6bf
.asm_cc68f
	ld hl, $6ac0
	ld de, $a100
	call Functioncc6c6
	ld hl, $6ad0
	ld de, $a160
	call Functioncc6c6
	ld hl, $6ae0
	ld de, $a110
	call Functioncc6c6
	ld hl, $6af0
	ld de, $a170
	call Functioncc6c6
	ld hl, $9310
	ld de, $a000
	ld bc, $3324
	call Request2bpp
.asm_cc6bf
	call CloseSRAM
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: cc663 (33:4663), cc66c (33:466c), cc675 (33:4675), cc67e (33:467e), cc695 (33:4695), cc69e (33:469e), cc6a7 (33:46a7), cc6b0 (33:46b0)
Functioncc6c6: ; cc6c6 (33:46c6)
	ld bc, $10
	ld a, $31
	call FarCopyBytes
	ret

; no known jump sources
Functioncc6cf: ; cc6cf (33:46cf)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	xor a
	call GetSRAMBank
	call Functioncc6e7
	call Request2bpp
	call CloseSRAM
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: cc6da (33:46da), cc740 (33:4740)
Functioncc6e7: ; cc6e7 (33:46e7)
	ld hl, $a000
	ld bc, $310
.asm_cc6ed
	xor a
	ld [hli], a
	dec bc
	ld a, c
	or b
	jr nz, .asm_cc6ed
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc709
	ld de, $a1a0
	call Functioncc719
	ld hl, $9000
	ld de, $a000
	ld bc, $3331
	ret
.asm_cc709
	ld de, $a160
	call Functioncc719
	ld hl, $9310
	ld de, $a000
	ld bc, $3324
	ret

; known jump sources: cc6fc (33:46fc), cc70c (33:470c)
Functioncc719: ; cc719 (33:4719)
	ld hl, $4725
	ld bc, $10
	ld a, $33
	call FarCopyBytes
	ret
; cc725 (33:4725)

INCBIN "baserom.gbc",$cc725,$cc735 - $cc725

; no known jump sources
Functioncc735: ; cc735 (33:4735)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	xor a
	call GetSRAMBank
	call Functioncc6e7
	ld hl, $8000
	call Request2bpp
	call CloseSRAM
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Functioncc750: ; cc750 (33:4750)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [CurPartySpecies] ; $d108
	push af
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc768
	callab Function3f486
	jr .asm_cc76e
.asm_cc768
	callab Function3f447
.asm_cc76e
	pop af
	ld [CurPartySpecies], a ; $d108
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Functioncc776: ; cc776 (33:4776)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [CurPartySpecies] ; $d108
	push af
	ld a, [$c689]
	ld [CurPartySpecies], a ; $d108
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cc79e
	ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV)
	ld a, $2d
	call Predef
	ld de, $9000
	ld a, $3c
	call Predef
	jr .asm_cc7ae
.asm_cc79e
	ld hl, EnemyMonAtkDefDV ; $d20c (aliases: EnemyMonDVs, EnemyMonMovesEnd)
	ld a, $2d
	call Predef
	ld de, $9310
	ld a, $3d
	call Predef
.asm_cc7ae
	pop af
	ld [CurPartySpecies], a ; $d108
	ld b, $1
	call GetSGBLayout
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Functioncc7bb: ; cc7bb (33:47bb)
	xor a
	ld [hOAMUpdate], a ; $ff00+$d8
	ret

; no known jump sources
Functioncc7bf: ; cc7bf (33:47bf)
	ld a, $1
	ld [hOAMUpdate], a ; $ff00+$d8
	ret

; no known jump sources
Functioncc7c4: ; cc7c4 (33:47c4)
	ld hl, $d40f
	set 3, [hl]
	ret

; no known jump sources
Functioncc7ca: ; cc7ca (33:47ca)
	ret

; no known jump sources
Functioncc7cb: ; cc7cb (33:47cb)
	ret

; no known jump sources
Functioncc7cc: ; cc7cc (33:47cc)
	ret

; no known jump sources
Functioncc7cd: ; cc7cd (33:47cd)
	call Function3af0
	ld e, a
	srl a
	srl a
	ld [$c2be], a
	call Functioncc7fc
	and $3
	ld [CryTracks], a ; $c2bd
	ld e, a
	ld d, $0
	ld hl, $47f8
	add hl, de
	ld a, [hl]
	ld [$c2bc], a
	call Function3af0
	ld e, a
	ld d, $0
	callab PlayStereoSFX
	ret
; cc7f8 (33:47f8)

INCBIN "baserom.gbc",$cc7f8,$cc7fc - $cc7f8

; known jump sources: cc7d8 (33:47d8)
Functioncc7fc: ; cc7fc (33:47fc)
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr nz, .asm_cc803
	ld a, e
	ret
.asm_cc803
	ld a, e
	xor $1
	ret

; no known jump sources
Functioncc807: ; cc807 (33:4807)
	call Function3af0
	and $3
	ld e, a
	ld d, $0
	ld hl, $4871
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr nz, .asm_cc82c
	ld a, $f0
	ld [CryTracks], a ; $c2bd
	ld a, [BattleMonSpecies] ; $c62c
	jr .asm_cc834
.asm_cc82c
	ld a, $f
	ld [CryTracks], a ; $c2bd
	ld a, [EnemyMon] ; $d206 (aliases: EnemyMonSpecies)
.asm_cc834
	push hl
	call Function37f3
	pop hl
	jr c, .asm_cc86d
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	push hl
	ld hl, CryPitch ; $c2b0
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	ld a, l
	ld [CryPitch], a ; $c2b0
	ld a, h
	ld [CryEcho], a ; $c2b1
	pop hl
	ld a, [hli]
	ld c, a
	ld b, [hl]
	ld hl, CryLength ; $c2b2
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	ld a, l
	ld [CryLength], a ; $c2b2
	ld a, h
	ld [$c2b3], a
	ld a, $1
	ld [$c2bc], a
	callab PlayCry
.asm_cc86d
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; cc871 (33:4871)

INCBIN "baserom.gbc",$cc871,$cc881 - $cc871


Functioncc881: ; cc881
	ld a, [$cfca]
	cp $1
	jr z, .asm_cc88b
	cp $4
	ret nz

.asm_cc88b
	ld a, [TypeModifier]
	and $7f
	ret z
	cp $a
	ld de, $00ac
	jr z, .asm_cc8a0
	ld de, $00ad
	jr nc, .asm_cc8a0
	ld de, $00ab

.asm_cc8a0
	call PlaySFX
	ret
; cc8a4

Functioncc8a4: ; cc8a4
	ld a, [hCGB]
	and a
	jr nz, .asm_cc8be
	ld a, [hSGB]
	and a
	ld a, $e0
	jr z, .asm_cc8b2
	ld a, $f0

.asm_cc8b2
	ld [$cfc8], a
	ld a, $e4
	ld [$cfc7], a
	ld [$cfc9], a
	ret

.asm_cc8be
	ld a, $e4
	ld [$cfc7], a
	ld [$cfc8], a
	ld [$cfc9], a
	call DmgToCgbBGPals
	ld de, $e4e4
	call DmgToCgbObjPals
	ret
; cc8d3

Functioncc8d3: ; cc8d3
	ld hl, LYOverrides
	ld bc, $0354
.asm_cc8d9
	ld [hl], $0
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_cc8d9
	ld hl, FXAnimIDLo
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $506f
	add hl, de
	add hl, de
	call Function3ae1
	call Functioncc8a4
	call Functioncc1fb
	ret
; cc8f6

Functioncc8f6: ; cc8f6
	call WaitTop
	ld a, $e4
	ld [$cfc7], a
	ld [$cfc8], a
	ld [$cfc9], a
	call DmgToCgbBGPals
	ld de, $e4e4
	call DmgToCgbObjPals
	xor a
	ld [hSCX], a
	ld [hSCY], a
	call Functioncc1fb
	ld a, $1
	ld [hBGMapMode], a
	ret
; cc91a

Functioncc91a: ; cc91a
	ld [rBGP], a
	ld a, [hCGB]
	and a
	ret z
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $d080
	ld de, $d000
	ld a, [rBGP]
	ld b, a
	ld c, $7
	call CopyPals
	ld hl, $d0c0
	ld de, MartPointer
	ld a, [rBGP]
	ld b, a
	ld c, $2
	call CopyPals
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ret
; cc94b

Functioncc94b: ; cc94b
	ld [rOBP0], a
	ld a, [hCGB]
	and a
	ret z
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $d0d0
	ld de, $d050
	ld a, [rOBP0]
	ld b, a
	ld c, $2
	call CopyPals
	pop af
	ld [rSVBK], a
	ld a, $1
	ld [hCGBPalUpdate], a
	ret
; cc96e

Functioncc96e: ; cc96e
	ld a, $0
	ld [$d418], a
	ld hl, $d30a
	ld e, $a
.asm_cc978
	ld a, [hl]
	and a
	jr z, .asm_cc98a
	ld c, l
	ld b, h
	push hl
	push de
	call Functionccfbe
	call Functioncca09
	pop de
	pop hl
	jr c, .asm_cc9a0

.asm_cc98a
	ld bc, $0018
	add hl, bc
	dec e
	jr nz, .asm_cc978
	ld a, [$d418]
	ld l, a
	ld h, $c4
.asm_cc997
	ld a, l
	cp $a0
	jr nc, .asm_cc9a0
	xor a
	ld [hli], a
	jr .asm_cc997

.asm_cc9a0
	ret
; cc9a1


; known jump sources: cc437 (33:4437)
Functioncc9a1: ; cc9a1 (33:49a1)
	ld hl, $d30a
	ld e, $a
.asm_cc9a6
	ld a, [hl]
	and a
	jr z, .asm_cc9b3
	ld bc, $18
	add hl, bc
	dec e
	jr nz, .asm_cc9a6
	scf
	ret
.asm_cc9b3
	ld c, l
	ld b, h
	ld hl, $d40e
	inc [hl]
	call Functioncc9c4
	ret


Functioncc9bd: ; cc9bd
	ld hl, $0000
	add hl, bc
	ld [hl], $0
	ret
; cc9c4


; known jump sources: cc9b9 (33:49b9)
Functioncc9c4: ; cc9c4 (33:49c4)
	ld a, [$d419]
	ld e, a
	ld d, $0
	ld hl, $4b56
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ld e, l
	ld d, h
	ld hl, $0
	add hl, bc
	ld a, [$d40e]
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	call Functionccb31
	ld [hli], a
	ld a, [$d41a]
	ld [hli], a
	ld a, [$d41b]
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld a, [$d41c]
	ld [hli], a
	xor a
	ld [hli], a
	dec a
	ld [hli], a
	xor a
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ret


Functioncca09: ; cca09
	call Functionccaaa
	call Functionce7d1
	cp EGG
	jp z, .asm_ccaa5
	cp NUM_POKEMON + 1
	jp z, .asm_ccaa2
	push af
	ld hl, $d419
	ld a, [$d420]
	xor [hl]
	and $e0
	ld [hl], a
	pop af
	push bc
	call Functionce83c
	ld a, [$d41b]
	add [hl]
	ld [$d41b], a
	inc hl
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d418]
	ld e, a
	ld d, $c4
.asm_cca3c
	ld a, [$d41d]
	ld b, a
	ld a, [$d41f]
	add b
	ld b, a
	push hl
	ld a, [hl]
	ld hl, $d419
	bit 6, [hl]
	jr z, .asm_cca53
	add $8
	xor $ff
	inc a

.asm_cca53
	pop hl
	add b
	ld [de], a
	inc hl
	inc de
	ld a, [$d41c]
	ld b, a
	ld a, [$d41e]
	add b
	ld b, a
	push hl
	ld a, [hl]
	ld hl, $d419
	bit 5, [hl]
	jr z, .asm_cca6f
	add $8
	xor $ff
	inc a

.asm_cca6f
	pop hl
	add b
	ld [de], a
	inc hl
	inc de
	ld a, [$d41b]
	add $31
	add [hl]
	ld [de], a
	inc hl
	inc de
	ld a, [$d419]
	ld b, a
	ld a, [hl]
	xor b
	and $e0
	ld b, a
	ld a, [hl]
	and $10
	or b
	ld b, a
	ld a, [OTPartyMon6Nickname]
	and $f
	or b
	ld [de], a
	inc hl
	inc de
	ld a, e
	ld [$d418], a
	cp $a0
	jr nc, .asm_ccaa7
	dec c
	jr nz, .asm_cca3c
	pop bc
	jr .asm_ccaa5

.asm_ccaa2
	call Functioncc9bd

.asm_ccaa5
	and a
	ret

.asm_ccaa7
	pop bc
	scf
	ret
; ccaaa

Functionccaaa: ; ccaaa
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	and $80
	ld [$d419], a
	xor a
	ld [$d420], a
	ld hl, $0005
	add hl, bc
	ld a, [hl]
	ld [OTPartyMon6Nickname], a
	ld hl, $0002
	add hl, bc
	ld a, [hl]
	ld [$d41a], a
	ld hl, $0006
	add hl, bc
	ld a, [hli]
	ld [$d41b], a
	ld a, [hli]
	ld [$d41c], a
	ld a, [hli]
	ld [$d41d], a
	ld a, [hli]
	ld [$d41e], a
	ld a, [hli]
	ld [$d41f], a
	ld a, [hBattleTurn]
	and a
	ret z
	ld hl, $0001
	add hl, bc
	ld a, [hl]
	ld [$d419], a
	bit 0, [hl]
	ret z
	ld hl, $0007
	add hl, bc
	ld a, [hli]
	ld d, a
	ld a, $b4
	sub d
	ld [$d41c], a
	ld a, [hli]
	ld d, a
	ld a, [$d41a]
	cp $ff
	jr nz, .asm_ccb09
	ld a, $28
	add d
	jr .asm_ccb26

.asm_ccb09
	sub d
	push af
	ld a, [FXAnimIDHi]
	or a
	jr nz, .asm_ccb25
	ld a, [FXAnimIDLo]
	cp $86
	jr z, .asm_ccb20
	cp $87
	jr z, .asm_ccb20
	cp $d0
	jr nz, .asm_ccb25

.asm_ccb20
	pop af
	sub $8
	jr .asm_ccb26

.asm_ccb25
	pop af

.asm_ccb26
	ld [$d41d], a
	ld a, [hli]
	xor $ff
	inc a
	ld [$d41e], a
	ret
; ccb31


; known jump sources: cc9ed (33:49ed)
Functionccb31: ; ccb31 (33:4b31)
	push hl
	push bc
	ld hl, $d300
	ld b, a
	ld c, $5
.asm_ccb39
	ld a, [hli]
	cp b
	jr z, .asm_ccb44
	inc hl
	dec c
	jr nz, .asm_ccb39
	xor a
	jr .asm_ccb45
.asm_ccb44
	ld a, [hl]
.asm_ccb45
	pop bc
	pop hl
	ret


Functionccb48: ; ccb48
	callab Functionc8000
	ret
; ccb4f


; known jump sources: cc453 (33:4453)
Functionccb4f: ; ccb4f (33:4b4f)
	callab Functionc801a
	ret
; ccb56 (33:4b56)

INCBIN "baserom.gbc",$ccb56,$ccfbe - $ccb56


Functionccfbe: ; ccfbe
	ld hl, $0004
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $4fce
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; ccfce


; no known jump sources
Jumptable_ccfce: ; ccfce (33:4fce)
	dw Functioncd06e
	dw Functioncd12a
	dw Functioncd146
	dw Functioncd0e3
	dw Functioncd0a6
	dw Functioncd081
	dw Functioncd079
	dw Functioncd2be
	dw Functioncd306
	dw Functioncd3ae
	dw Functioncd3f2
	dw Functioncd478
	dw Functioncd5e9
	dw Functioncd66a
	dw Functioncd6e3
	dw Functioncd71a
	dw Functioncd284
	dw Functioncd777
	dw Functioncd15c
	dw Functioncd212
	dw Functioncd7a4
	dw Functioncd80c
	dw Functioncd824
	dw Functioncd89a
	dw Functioncd900
	dw Functioncd954
	dw Functioncdafa
	dw Functioncdb06
	dw Functioncda0a
	dw Functioncdb80
	dw Functioncdca6
	dw Functioncda31
	dw Functioncda4d
	dw Functioncdcc3
	dw Functioncdd2a
	dw Functioncdd90
	dw Functioncddf9
	dw Functioncde28
	dw Functioncde54
	dw Functioncde6b
	dw Functioncde89
	dw Functioncdedd
	dw Functioncdf59
	dw Functionce063
	dw Functionce0c5
	dw Functioncdf1b
	dw Functionce10e
	dw Functionce15c
	dw Functionce1e7
	dw Functionce226
	dw Functionce255
	dw Functionce2cc
	dw Functioncdf8c
	dw Functionce00b
	dw Functionce2fd
	dw Functionce35f
	dw Functionce389
	dw Functionce3b4
	dw Functionce3d2
	dw Functionce3ff
	dw Functioncdfcb
	dw Functionce416
	dw Functionce43a
	dw Functioncdad6
	dw Functionce49c
	dw Functionce4dc
	dw Functionce1b0
	dw Functionce508
	dw Functionce532
	dw Functionce55b
	dw Functionce593
	dw Functionce5b4
	dw Functionce5dc
	dw Functionce5ee
	dw Functionce62f
	dw Functionce688
	dw Functionce6b3
	dw Functionce6d2
	dw Functioncd58a
	dw Functionce6bf


; no known jump sources
Functioncd06e: ; cd06e (33:506e)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd071: ; cd071 (33:5071)
	dw Functioncd078
	dw Functioncd075


; no known jump sources
Functioncd075: ; cd075 (33:5075)
	call Functioncc9bd

; no known jump sources
Functioncd078: ; cd078 (33:5078)
	ret

; no known jump sources
Functioncd079: ; cd079 (33:5079)
	call Functioncd081
	ret c
	call Functioncc9bd
	ret

; known jump sources: cd079 (33:5079), cd17e (33:517e), cd22b (33:522b)
Functioncd081: ; cd081 (33:5081)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	ret nc
	add $2
	ld [hl], a
	ld hl, $8
	add hl, bc
	dec [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	ld hl, $b
	add hl, bc
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	scf
	ret

; no known jump sources
Functioncd0a6: ; cd0a6 (33:50a6)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	jr c, .asm_cd0b3
	call Functioncc9bd
	ret
.asm_cd0b3
	add $2
	ld [hl], a
	ld hl, $8
	add hl, bc
	dec [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	inc [hl]
	inc [hl]
	ld d, $10
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	sra a
	sra a
	sra a
	sra a
	ld [hl], a
	ret

; known jump sources: cdafa (33:5afa)
Functioncd0e3: ; cd0e3 (33:50e3)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd0e6: ; cd0e6 (33:50e6)
	dw Functioncd0ea
	dw Functioncd106


; no known jump sources
Functioncd0ea: ; cd0ea (33:50ea)
	call Functionce72c
	ld hl, $b
	add hl, bc
	bit 7, [hl]
	ld a, $0
	jr z, .asm_cd0f9
	ld a, $20
.asm_cd0f9
	ld hl, $f
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $7f
	ld [hl], a

; no known jump sources
Functioncd106: ; cd106 (33:5106)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	ld d, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncd12a: ; cd12a (33:512a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd12d: ; cd12d (33:512d)
	dw Functioncd135
	dw Functioncd131


; no known jump sources
Functioncd131: ; cd131 (33:5131)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd135: ; cd135 (33:5135)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	ret nc
	ld hl, $b
	add hl, bc
	ld a, [hl]
	call Functionce70a
	ret

; no known jump sources
Functioncd146: ; cd146 (33:5146)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	jr nc, .asm_cd158
	ld hl, $b
	add hl, bc
	ld a, [hl]
	call Functionce70a
	ret
.asm_cd158
	call Functioncc9bd
	ret

; no known jump sources
Functioncd15c: ; cd15c (33:515c)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd15f: ; cd15f (33:515f)
	dw Functioncd177
	dw Functioncd17e
	dw Functioncd1dc
	dw Functioncd196
	dw Functioncd1a7
	dw Functioncd1dc
	dw Functioncd1d2
	dw Functioncd1dd
	dw Functioncd1ee
	dw Functioncd1dc
	dw Functioncd1ee
	dw Functioncd20e


; no known jump sources
Functioncd177: ; cd177 (33:5177)
	call Functioncd249
	call Functionce72c
	ret

; no known jump sources
Functioncd17e: ; cd17e (33:517e)
	call Functioncd081
	ret c
	ld hl, $a
	add hl, bc
	ld a, [hl]
	ld hl, $8
	add hl, bc
	add [hl]
	ld [hl], a
	ld a, $b
	call Functionce7bf
	call Functionce72c
	ret

; no known jump sources
Functioncd196: ; cd196 (33:5196)
	call Functionce72c
	ld a, $9
	call Functionce7bf
	ld hl, $f
	add hl, bc
	ld [hl], $0
	inc hl
	ld [hl], $10

; no known jump sources
Functioncd1a7: ; cd1a7 (33:51a7)
	ld hl, $f
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec a
	ld [hl], a
	and $1f
	ret nz
	ld [hl], a
	ld hl, $10
	add hl, bc
	ld a, [hl]
	sub $4
	ld [hl], a
	ret nz
	ld a, $c
	call Functionce7bf
	call Functionce72c
	ret

; no known jump sources
Functioncd1d2: ; cd1d2 (33:51d2)
	ld a, $d
	call Functionce7bf
	ld hl, $e
	add hl, bc
	dec [hl]

; no known jump sources
Functioncd1dc: ; cd1dc (33:51dc)
	ret

; no known jump sources
Functioncd1dd: ; cd1dd (33:51dd)
	call Functioncd249
	ld a, $a
	call Functionce7bf
	call Functionce72c
	ld hl, $10
	add hl, bc
	ld [hl], $20

; no known jump sources
Functioncd1ee: ; cd1ee (33:51ee)
	ld hl, $f
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec a
	ld [hl], a
	and $1f
	jr z, Functioncd20e
	and $f
	ret nz
	call Functionce72c
	ret

; known jump sources: cd205 (33:5205)
Functioncd20e: ; cd20e (33:520e)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd212: ; cd212 (33:5212)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd215: ; cd215 (33:5215)
	dw Functioncd21b
	dw Functioncd222
	dw Functioncd232


; no known jump sources
Functioncd21b: ; cd21b (33:521b)
	call Functioncd249
	call Functionce72c
	ret

; no known jump sources
Functioncd222: ; cd222 (33:5222)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $70
	jr nc, .asm_cd22f
	call Functioncd081
	ret
.asm_cd22f
	call Functionce72c

; no known jump sources
Functioncd232: ; cd232 (33:5232)
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp $80
	jr nc, .asm_cd245
	add $4
	ld [hl], a
	ld hl, $7
	add hl, bc
	dec [hl]
	dec [hl]
	ret
.asm_cd245
	call Functioncc9bd
	ret

; known jump sources: cd177 (33:5177), cd1dd (33:51dd), cd21b (33:521b)
Functioncd249: ; cd249 (33:5249)
	ld hl, $526c
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [CurItem] ; $d106
	ld e, a
	pop af
	ld [rSVBK], a ; $ff00+$70
.asm_cd25a
	ld a, [hli]
	cp $ff
	jr z, .asm_cd265
	cp e
	jr z, .asm_cd265
	inc hl
	jr .asm_cd25a
.asm_cd265
	ld a, [hl]
	ld hl, $5
	add hl, bc
	ld [hl], a
	ret
; cd26c (33:526c)

INCBIN "baserom.gbc",$cd26c,$cd284 - $cd26c

; no known jump sources
Functioncd284: ; cd284 (33:5284)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd287: ; cd287 (33:5287)
	dw Functioncd291
	dw Functioncd2a0
	dw Functioncd2b1
	dw Functioncd2b5
	dw Functioncd2bd


; no known jump sources
Functioncd291: ; cd291 (33:5291)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	swap a
	and $f
	ld hl, $e
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncd2a0: ; cd2a0 (33:52a0)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	ret nc
	ld hl, $b
	add hl, bc
	ld a, [hl]
	call Functionce70a
	ret

; no known jump sources
Functioncd2b1: ; cd2b1 (33:52b1)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd2b5: ; cd2b5 (33:52b5)
	call Functionce72c
	ld a, $f
	call Functionce7bf

; no known jump sources
Functioncd2bd: ; cd2bd (33:52bd)
	ret

; no known jump sources
Functioncd2be: ; cd2be (33:52be)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd2c1: ; cd2c1 (33:52c1)
	dw Functioncd2c5
	dw Functioncd2d1


; no known jump sources
Functioncd2c5: ; cd2c5 (33:52c5)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $30
	inc hl
	ld [hl], $48

; no known jump sources
Functioncd2d1: ; cd2d1 (33:52d1)
	ld hl, $f
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $3f
	ret nz
	ld hl, $f
	add hl, bc
	ld [hl], $20
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	sub [hl]
	jr z, .asm_cd302
	jr c, .asm_cd302
	ld hl, $10
	add hl, bc
	ld [hl], a
	ret
.asm_cd302
	call Functioncc9bd
	ret

; no known jump sources
Functioncd306: ; cd306 (33:5306)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd309: ; cd309 (33:5309)
	dw Functioncd311
	dw Functioncd321
	dw Functioncd32a
	dw Functioncd37d


; no known jump sources
Functioncd311: ; cd311 (33:5311)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $80
	jr nc, .asm_cd31e
	call Functioncd38e
	ret
.asm_cd31e
	call Functionce72c

; no known jump sources
Functioncd321: ; cd321 (33:5321)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $0

; no known jump sources
Functioncd32a: ; cd32a (33:532a)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, .asm_cd363
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $18
	call Functionce732
	sub $18
	sra a
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $18
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld hl, $f
	add hl, bc
	add [hl]
	ld [hl], a
	ret
.asm_cd363
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f0
	jr z, .asm_cd37a
	sub $10
	ld d, a
	ld a, [hl]
	and $f
	or d
	ld [hl], a
	ld hl, $e
	add hl, bc
	dec [hl]
	ret
.asm_cd37a
	call Functionce72c

; no known jump sources
Functioncd37d: ; cd37d (33:537d)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $b0
	jr c, .asm_cd38a
	call Functioncc9bd
	ret
.asm_cd38a
	call Functioncd38e
	ret

; known jump sources: cd31a (33:531a), cd38a (33:538a)
Functioncd38e: ; cd38e (33:538e)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld hl, $7
	add hl, bc
	add [hl]
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld e, a
	srl e
	ld hl, $8
	add hl, bc
.asm_cd3a9
	dec [hl]
	dec e
	jr nz, .asm_cd3a9
	ret

; no known jump sources
Functioncd3ae: ; cd3ae (33:53ae)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd3b1: ; cd3b1 (33:53b1)
	dw Functioncd3b7
	dw Functioncd3cc
	dw Functioncd3ee


; no known jump sources
Functioncd3b7: ; cd3b7 (33:53b7)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $0
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld hl, $9
	add hl, bc
	ld [hl], a

; no known jump sources
Functioncd3cc: ; cd3cc (33:53cc)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cd3d6
	dec [hl]
	ret
.asm_cd3d6
	ld hl, $b
	add hl, bc
	ld a, [hl]
	swap a
	and $f
	ld hl, $f
	add hl, bc
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	ret

; no known jump sources
Functioncd3ee: ; cd3ee (33:53ee)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd3f2: ; cd3f2 (33:53f2)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd3f5: ; cd3f5 (33:53f5)
	dw Functioncd409
	dw Functioncd45c
	dw Functioncd467
	dw Functioncd472
	dw Functioncd462
	dw Functioncd46d
	dw Functioncd477
	dw Functioncd41d
	dw Functioncd437
	dw Functioncd458


; no known jump sources
Functioncd409: ; cd409 (33:5409)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	cp $7
	jr z, Functioncd41d
	ld a, $11
	call Functionce7bf
	ret

; known jump sources: cd415 (33:5415)
Functioncd41d: ; cd41d (33:541d)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	jr nc, .asm_cd42f
	add $2
	ld [hl], a
	ld hl, $8
	add hl, bc
	dec [hl]
	ret
.asm_cd42f
	call Functionce72c
	ld a, $10
	call Functionce7bf

; no known jump sources
Functioncd437: ; cd437 (33:5437)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $10
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncd458: ; cd458 (33:5458)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd45c: ; cd45c (33:545c)
	ld hl, $a
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functioncd462: ; cd462 (33:5462)
	ld hl, $a
	add hl, bc
	inc [hl]

; no known jump sources
Functioncd467: ; cd467 (33:5467)
	ld hl, $9
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functioncd46d: ; cd46d (33:546d)
	ld hl, $a
	add hl, bc
	inc [hl]

; no known jump sources
Functioncd472: ; cd472 (33:5472)
	ld hl, $9
	add hl, bc
	inc [hl]

; no known jump sources
Functioncd477: ; cd477 (33:5477)
	ret

; no known jump sources
Functioncd478: ; cd478 (33:5478)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd47b: ; cd47b (33:547b)
	dw Functioncd48d
	dw Functioncd496
	dw Functioncd4ee
	dw Functioncd53a
	dw Functioncd545
	dw Functioncd545
	dw Functioncd545
	dw Functioncd545
	dw Functioncd549


; no known jump sources
Functioncd48d: ; cd48d (33:548d)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $40

; no known jump sources
Functioncd496: ; cd496 (33:5496)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $30
	jr nc, .asm_cd4bc
	call Functionce72c
	xor a
	ld hl, $f
	add hl, bc
	ld [hli], a
	ld [hl], a
	ld a, $17
	call Functionce7bf
	ld hl, $b
	add hl, bc
	bit 6, [hl]
	ret z
	ld hl, $d
	add hl, bc
	ld [hl], $5
	ret
.asm_cd4bc
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $3f
	ld d, a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	call Functioncd557
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld hl, $7
	add hl, bc
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $7
	add hl, bc
	ld [hl], d
	ld hl, $10
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functioncd4ee: ; cd4ee (33:54ee)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $20
	jr nz, .asm_cd4fb
	call Functioncc9bd
	ret
.asm_cd4fb
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	bit 6, [hl]
	jr nz, .asm_cd519
	ld hl, $f
	add hl, bc
	inc [hl]
	jr .asm_cd51e
.asm_cd519
	ld hl, $f
	add hl, bc
	dec [hl]
.asm_cd51e
	ld de, $80
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld hl, $a
	add hl, bc
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $a
	add hl, bc
	ld [hl], d
	ld hl, $10
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functioncd53a: ; cd53a (33:553a)
	ld a, $16
	call Functionce7bf
	ld hl, $1
	add hl, bc
	res 5, [hl]

; no known jump sources
Functioncd545: ; cd545 (33:5545)
	call Functionce72c
	ret

; no known jump sources
Functioncd549: ; cd549 (33:5549)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $c0
	ret nc
	ld a, $8
	call Functionce70a
	ret

; known jump sources: cd4d2 (33:54d2), cd5cd (33:55cd)
Functioncd557: ; cd557 (33:5557)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	bit 7, a
	jr nz, .asm_cd574
	cp $20
	jr nc, .asm_cd570
	cp $18
	jr nc, .asm_cd56c
	ld de, $200
	ret
.asm_cd56c
	ld de, $180
	ret
.asm_cd570
	ld de, $100
	ret
.asm_cd574
	and $3f
	cp $20
	jr nc, .asm_cd586
	cp $18
	jr nc, .asm_cd582
	ld de, $fe00
	ret
.asm_cd582
	ld de, $fe80
	ret
.asm_cd586
	ld de, rJOYP ; $ff00
	ret

; no known jump sources
Functioncd58a: ; cd58a (33:558a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd58d: ; cd58d (33:558d)
	dw Functioncd591
	dw Functioncd5aa


; no known jump sources
Functioncd591: ; cd591 (33:5591)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $40
	rlca
	rlca
	add $19
	ld hl, $3
	add hl, bc
	ld [hl], a
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $40

; no known jump sources
Functioncd5aa: ; cd5aa (33:55aa)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $30
	jr nc, .asm_cd5b7
	call Functioncc9bd
	ret
.asm_cd5b7
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $3f
	ld d, a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	call Functioncd557
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld hl, $7
	add hl, bc
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $7
	add hl, bc
	ld [hl], d
	ld hl, $10
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functioncd5e9: ; cd5e9 (33:55e9)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd5ec: ; cd5ec (33:55ec)
	dw Functioncd5f2
	dw Functioncd5fb
	dw Functioncd61b


; no known jump sources
Functioncd5f2: ; cd5f2 (33:55f2)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $c

; no known jump sources
Functioncd5fb: ; cd5fb (33:55fb)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cd60d
	dec [hl]
	ld hl, $b
	add hl, bc
	ld a, [hl]
	call Functionce70a
	ret
.asm_cd60d
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $0
	ld a, $22
	call Functionce7bf

; no known jump sources
Functioncd61b: ; cd61b (33:561b)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $98
	jr nc, .asm_cd63f
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $7
	add hl, bc
	ld h, [hl]
	ld l, a
	ld de, $60
	add hl, de
	ld e, l
	ld d, h
	ld hl, $f
	add hl, bc
	ld [hl], e
	ld hl, $7
	add hl, bc
	ld [hl], d
.asm_cd63f
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp $20
	ret c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f0
	ld e, a
	ld d, $ff
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld hl, $8
	add hl, bc
	ld h, [hl]
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $10
	add hl, bc
	ld [hl], e
	ld hl, $8
	add hl, bc
	ld [hl], d
	ret

; no known jump sources
Functioncd66a: ; cd66a (33:566a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd66d: ; cd66d (33:566d)
	dw Functioncd677
	dw Functioncd687
	dw Functioncd6c5
	dw Functioncd6c6
	dw Functioncd6d6


; no known jump sources
Functioncd677: ; cd677 (33:5677)
	call Functionce72c
	ld a, $42
	ld [hLCDStatCustom], a ; $ff00+$c6
	ld a, $58
	ld [$FF00+$c7], a
	ld a, $5e
	ld [$FF00+$c8], a
	ret

; no known jump sources
Functioncd687: ; cd687 (33:5687)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp e
	jr nc, .asm_cd69b
	call Functionce72c
	xor a
	ld [$FF00+$c7], a
	ret
.asm_cd69b
	dec a
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $8
	add hl, bc
	add [hl]
	sub $10
	ret c
	ld [$FF00+$c7], a
	ld hl, $9
	add hl, bc
	ld a, [hl]
	inc a
	and $7
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	inc [hl]

; no known jump sources
Functioncd6c5: ; cd6c5 (33:56c5)
	ret

; no known jump sources
Functioncd6c6: ; cd6c6 (33:56c6)
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp $70
	jr c, asm_cd6da
	xor a
	ld [hLCDStatCustom], a ; $ff00+$c6
	ld [$FF00+$c7], a
	ld [$FF00+$c8], a

; no known jump sources
Functioncd6d6: ; cd6d6 (33:56d6)
	call Functioncc9bd
	ret
asm_cd6da: ; cd6da (33:56da)
	inc a
	inc a
	ld [hl], a
	sub $10
	ret c
	ld [$FF00+$c7], a
	ret

; no known jump sources
Functioncd6e3: ; cd6e3 (33:56e3)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd6e6: ; cd6e6 (33:56e6)
	dw Functioncd6ea
	dw Functioncd6f7


; no known jump sources
Functioncd6ea: ; cd6ea (33:56ea)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, $24
	add [hl]
	call Functionce7bf

; no known jump sources
Functioncd6f7: ; cd6f7 (33:56f7)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $b8
	jr c, .asm_cd704
	call Functioncc9bd
	ret
.asm_cd704
	ld a, $2
	call Functionce70a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	ld d, $8
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncd71a: ; cd71a (33:571a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd71d: ; cd71d (33:571d)
	dw Functioncd725
	dw Functioncd728
	dw Functioncd763
	dw Functioncd776


; no known jump sources
Functioncd725: ; cd725 (33:5725)
	call Functionce72c

; no known jump sources
Functioncd728: ; cd728 (33:5728)
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp $30
	jr c, .asm_cd747
	ld a, $2
	call Functionce70a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	ld d, $8
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ret
.asm_cd747
	call Functionce72c
	ld a, $28
	call Functionce7bf
	ld hl, $a
	add hl, bc
	ld [hl], $0
	ld hl, $8
	add hl, bc
	ld [hl], $30
	ld hl, $1
	add hl, bc
	ld a, [hl]
	and $1
	ld [hl], a

; no known jump sources
Functioncd763: ; cd763 (33:5763)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $18
	jr nc, .asm_cd76e
	inc [hl]
	ret
.asm_cd76e
	call Functionce72c
	ld a, $29
	call Functionce7bf

; no known jump sources
Functioncd776: ; cd776 (33:5776)
	ret

; no known jump sources
Functioncd777: ; cd777 (33:5777)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $38
	jr c, .asm_cd784
	call Functioncc9bd
	ret
.asm_cd784
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld l, [hl]
	ld h, a
	ld de, $80
	add hl, de
	ld e, l
	ld d, h
	ld hl, $f
	add hl, bc
	ld [hl], e
	ld hl, $a
	add hl, bc
	ld [hl], d
	ld hl, $9
	add hl, bc
	ld a, [hl]
	xor $10
	ld [hl], a
	ret

; no known jump sources
Functioncd7a4: ; cd7a4 (33:57a4)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd7a7: ; cd7a7 (33:57a7)
	dw Functioncd7ab
	dw Functioncd7d2


; no known jump sources
Functioncd7ab: ; cd7ab (33:57ab)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f0
	ld hl, $10
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	sla a
	sla a
	sla a
	ld hl, $f
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld [hl], $1

; no known jump sources
Functioncd7d2: ; cd7d2 (33:57d2)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_cd7de
	call Functioncc9bd
	ret
.asm_cd7de
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld hl, $10
	add hl, bc
	ld d, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	xor $1
	ld [hl], a
	ret z
	ld hl, $10
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functioncd80c: ; cd80c (33:580c)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd80f: ; cd80f (33:580f)
	dw Functioncd81f
	dw Functioncd817
	dw Functioncd81f
	dw Functioncd820


; no known jump sources
Functioncd817: ; cd817 (33:5817)
	call Functionce72c
	ld a, $35
	call Functionce7bf

; no known jump sources
Functioncd81f: ; cd81f (33:581f)
	ret

; no known jump sources
Functioncd820: ; cd820 (33:5820)
	call Functioncc9bd
	ret

; no known jump sources
Functioncd824: ; cd824 (33:5824)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd827: ; cd827 (33:5827)
	dw Functioncd835
	dw Functioncd860
	dw Functioncd88f
	dw Functioncd88f
	dw Functioncd88f
	dw Functioncd88f
	dw Functioncd893


; no known jump sources
Functioncd835: ; cd835 (33:5835)
	call Functionce72c
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld hl, $10
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	bit 7, [hl]
	jr nz, .asm_cd852
	ld hl, $f
	add hl, bc
	ld [hl], $10
	jr .asm_cd858
.asm_cd852
	ld hl, $f
	add hl, bc
	ld [hl], $30
.asm_cd858
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $7f
	ld [hl], a

; no known jump sources
Functioncd860: ; cd860 (33:5860)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	ld d, [hl]
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	bit 7, a
	jr nz, .asm_cd87e
	ld hl, $10
	add hl, bc
	ld a, [hl]
	inc a
	jr .asm_cd883
.asm_cd87e
	ld hl, $10
	add hl, bc
	ld a, [hl]
.asm_cd883
	call Functionce7bf
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $1f
	ret nz

; no known jump sources
Functioncd88f: ; cd88f (33:588f)
	call Functionce72c
	ret

; no known jump sources
Functioncd893: ; cd893 (33:5893)
	ld hl, $e
	add hl, bc
	ld [hl], $1
	ret

; no known jump sources
Functioncd89a: ; cd89a (33:589a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd89d: ; cd89d (33:589d)
	dw Functioncd8ab
	dw Functioncd8cc
	dw Functioncd8f5
	dw Functioncd8f5
	dw Functioncd8f5
	dw Functioncd8f5
	dw Functioncd8f9


; no known jump sources
Functioncd8ab: ; cd8ab (33:58ab)
	call Functionce72c
	ld hl, $b
	add hl, bc
	bit 7, [hl]
	jr nz, .asm_cd8be
	ld hl, $f
	add hl, bc
	ld [hl], $10
	jr .asm_cd8c4
.asm_cd8be
	ld hl, $f
	add hl, bc
	ld [hl], $30
.asm_cd8c4
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $7f
	ld [hl], a

; no known jump sources
Functioncd8cc: ; cd8cc (33:58cc)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	bit 7, a
	jr nz, .asm_cd8e6
	ld a, $3d
	jr .asm_cd8e8
.asm_cd8e6
	ld a, $3c
.asm_cd8e8
	call Functionce7bf
	ld hl, $f
	add hl, bc
	inc [hl]
	inc [hl]
	ld a, [hl]
	and $1f
	ret nz

; no known jump sources
Functioncd8f5: ; cd8f5 (33:58f5)
	call Functionce72c
	ret

; no known jump sources
Functioncd8f9: ; cd8f9 (33:58f9)
	ld hl, $e
	add hl, bc
	ld [hl], $1
	ret

; no known jump sources
Functioncd900: ; cd900 (33:5900)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd903: ; cd903 (33:5903)
	dw Functioncd907
	dw Functioncd913


; no known jump sources
Functioncd907: ; cd907 (33:5907)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $28
	inc hl
	ld [hl], $0

; no known jump sources
Functioncd913: ; cd913 (33:5913)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld d, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cd950
	ld d, a
	ld hl, $10
	add hl, bc
	ld e, [hl]
	ld hl, hPushOAM ; $ff80
	add hl, de
	ld e, l
	ld d, h
	ld hl, $10
	add hl, bc
	ld [hl], e
	ld hl, $f
	add hl, bc
	ld [hl], d
	ret
.asm_cd950
	call Functioncc9bd
	ret

; no known jump sources
Functioncd954: ; cd954 (33:5954)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cd957: ; cd957 (33:5957)
	dw Functioncd961
	dw Functioncd96a
	dw Functioncd96e
	dw Functioncd96a
	dw Functioncd97b


; no known jump sources
Functioncd961: ; cd961 (33:5961)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld [hl], $0

; no known jump sources
Functioncd96a: ; cd96a (33:596a)
	call Functioncd99a
	ret

; no known jump sources
Functioncd96e: ; cd96e (33:596e)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	jr c, asm_cd988
	call Functionce72c
	ret

; no known jump sources
Functioncd97b: ; cd97b (33:597b)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $b8
	jr c, asm_cd988
	call Functioncc9bd
	ret

; known jump sources: cd975 (33:5975), cd982 (33:5982)
asm_cd988: ; cd988 (33:5988)
	call Functioncd99a
	ld hl, $7
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $1
	ret nz
	ld hl, $8
	add hl, bc
	dec [hl]
	ret

; known jump sources: cd96a (33:596a), cd988 (33:5988)
Functioncd99a: ; cd99a (33:599a)
	call Functioncd9f4
	ld hl, $f
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Functionce734
	sra a
	sra a
	sra a
	sra a
	ld hl, $b
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	sub $8
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cd9d7
	cp $c2
	jr c, .asm_cd9e2
.asm_cd9d7
	dec a
	ld [hl], a
	and $7
	ret nz
	ld hl, $10
	add hl, bc
	inc [hl]
	ret
.asm_cd9e2
	xor a
	ld hl, $10
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld [hli], a
	ld [hl], a
	ret

; known jump sources: cd99a (33:599a)
Functioncd9f4: ; cd9f4 (33:59f4)
	ld hl, $10
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $5a01
	add hl, de
	ld d, [hl]
	ret
; cda01 (33:5a01)

INCBIN "baserom.gbc",$cda01,$cda0a - $cda01

; no known jump sources
Functioncda0a: ; cda0a (33:5a0a)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $30
	jr nc, .asm_cda17
	call Functioncc9bd
	ret
.asm_cda17
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld e, a
	ld hl, $7
	add hl, bc
	ld a, [hl]
	sub e
	ld [hl], a
	srl e
	ld hl, $8
	add hl, bc
.asm_cda2c
	inc [hl]
	dec e
	jr nz, .asm_cda2c
	ret

; no known jump sources
Functioncda31: ; cda31 (33:5a31)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cda34: ; cda34 (33:5a34)
	dw Functioncda4c
	dw Functioncda3a
	dw Functioncda4c


; no known jump sources
Functioncda3a: ; cda3a (33:5a3a)
	ld hl, $3
	add hl, bc
	ld a, [hl]
	inc a
	call Functionce7bf
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $8

; no known jump sources
Functioncda4c: ; cda4c (33:5a4c)
	ret

; no known jump sources
Functioncda4d: ; cda4d (33:5a4d)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cda50: ; cda50 (33:5a50)
	dw Functioncda58
	dw Functioncda62
	dw Functioncda7a
	dw Functioncda8c


; no known jump sources
Functioncda58: ; cda58 (33:5a58)
	call Functionce72c
	ld hl, $10
	add hl, bc
	ld [hl], $40
	ret

; no known jump sources
Functioncda62: ; cda62 (33:5a62)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $20
	jr c, .asm_cda6f
	call Functioncda8d
	ret
.asm_cda6f
	ld [hl], $40
	ld a, $57
	call Functionce7bf
	call Functionce72c
	ret

; no known jump sources
Functioncda7a: ; cda7a (33:5a7a)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cda84
	dec [hl]
	ret
.asm_cda84
	call Functionce72c
	ld a, $58
	call Functionce7bf

; no known jump sources
Functioncda8c: ; cda8c (33:5a8c)
	ret

; known jump sources: cda6b (33:5a6b), cdaf2 (33:5af2)
Functioncda8d: ; cda8d (33:5a8d)
	dec [hl]
	ld d, $20
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $2
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld e, [hl]
	ld hl, $7
	add hl, bc
	ld d, [hl]
	ld hl, $b
	add hl, bc
	ld h, [hl]
	ld a, h
	and $f
	swap a
	ld l, a
	ld a, h
	and $f0
	swap a
	ld h, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $f
	add hl, bc
	ld [hl], e
	ld hl, $7
	add hl, bc
	ld [hl], d
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and $1
	ret nz
	ld hl, $8
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functioncdad6: ; cdad6 (33:5ad6)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdad9: ; cdad9 (33:5ad9)
	dw Functioncdadf
	dw Functioncdae9
	dw Functioncdaf9


; no known jump sources
Functioncdadf: ; cdadf (33:5adf)
	call Functionce72c
	ld hl, $10
	add hl, bc
	ld [hl], $40
	ret

; no known jump sources
Functioncdae9: ; cdae9 (33:5ae9)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $20
	jr c, .asm_cdaf6
	call Functioncda8d
	ret
.asm_cdaf6
	call Functionce72c

; no known jump sources
Functioncdaf9: ; cdaf9 (33:5af9)
	ret

; no known jump sources
Functioncdafa: ; cdafa (33:5afa)
	call Functioncd0e3
	ld hl, $f
	add hl, bc
	ld a, [hl]
	add $f
	ld [hl], a
	ret

; no known jump sources
Functioncdb06: ; cdb06 (33:5b06)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdb09: ; cdb09 (33:5b09)
	dw Functioncdb13
	dw Functioncdb14
	dw Functioncdb28
	dw Functioncdb50
	dw Functioncdb65


; no known jump sources
Functioncdb13: ; cdb13 (33:5b13)
	ret

; no known jump sources
Functioncdb14: ; cdb14 (33:5b14)
	ld hl, $8
	add hl, bc
	ld a, [hl]
	cp $30
	jr c, .asm_cdb24
	ld hl, $e
	add hl, bc
	ld [hl], $0
	ret
.asm_cdb24
	add $4
	ld [hl], a
	ret

; no known jump sources
Functioncdb28: ; cdb28 (33:5b28)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $98
	ret nc
	inc [hl]
	inc [hl]
	ld hl, $1
	add hl, bc
	set 0, [hl]
	ld hl, $2
	add hl, bc
	ld [hl], $90
	ld hl, $d
	add hl, bc
	ld [hl], $0
	ld hl, $c
	add hl, bc
	ld [hl], $2
	ld hl, $8
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functioncdb50: ; cdb50 (33:5b50)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $2c
	ld hl, $d
	add hl, bc
	ld [hl], $0
	ld hl, $c
	add hl, bc
	ld [hl], $80

; no known jump sources
Functioncdb65: ; cdb65 (33:5b65)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $98
	ret nc
	inc [hl]
	inc [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld d, $8
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncdb80: ; cdb80 (33:5b80)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdb83: ; cdb83 (33:5b83)
	dw Functioncdb9f
	dw Functioncdbb3
	dw Functioncdbcf
	dw Functioncdbeb
	dw Functioncdc74
	dw Functioncdc1a
	dw Functioncdbc1
	dw Functioncdc1e
	dw Functioncdc27
	dw Functioncdc39
	dw Functioncdc74
	dw Functioncdc48
	dw Functioncdc57
	dw Functioncdc74


; no known jump sources
Functioncdb9f: ; cdb9f (33:5b9f)
	ld hl, $f
	add hl, bc
	ld [hl], $28
	inc hl
	ld [hl], $10
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncdbb3: ; cdbb3 (33:5bb3)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $40
	jr nc, .asm_cdbbd
	inc [hl]
.asm_cdbbd
	call Functioncdc75
	ret

; no known jump sources
Functioncdbc1: ; cdbc1 (33:5bc1)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $4b
	jr nc, .asm_cdbcb
	inc [hl]
.asm_cdbcb
	call Functioncdc75
	ret

; no known jump sources
Functioncdbcf: ; cdbcf (33:5bcf)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $88
	jr nc, .asm_cdbe6
	and $f
	jr nz, asm_cdbfa
	ld hl, $10
	add hl, bc
	ld [hl], $10
	call Functionce72c
	ret
.asm_cdbe6
	call Functionce72c
	inc [hl]
	ret

; no known jump sources
Functioncdbeb: ; cdbeb (33:5beb)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cdbf5
	dec [hl]
	ret
.asm_cdbf5
	ld hl, $e
	add hl, bc
	dec [hl]
asm_cdbfa: ; cdbfa (33:5bfa)
	ld hl, $7
	add hl, bc
	inc [hl]
	ld hl, $8
	add hl, bc
	ld d, [hl]
	ld hl, $f
	add hl, bc
	ld e, [hl]
	ld hl, hPushOAM ; $ff80
	add hl, de
	ld e, l
	ld d, h
	ld hl, $8
	add hl, bc
	ld [hl], d
	ld hl, $f
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functioncdc1a: ; cdc1a (33:5c1a)
	call Functioncc9bd
	ret

; no known jump sources
Functioncdc1e: ; cdc1e (33:5c1e)
	ld a, $4e
	call Functionce7bf
	call Functionce72c
	ret

; no known jump sources
Functioncdc27: ; cdc27 (33:5c27)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	ld d, $2
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functioncdc39: ; cdc39 (33:5c39)
	ld a, $50
	call Functionce7bf
	ld hl, $a
	add hl, bc
	ld [hl], $4
	call Functionce72c
	ret

; no known jump sources
Functioncdc48: ; cdc48 (33:5c48)
	ld a, $4f
	call Functionce7bf
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $40
	ret

; no known jump sources
Functioncdc57: ; cdc57 (33:5c57)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $20
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $30
	jr c, .asm_cdc71
	dec [hl]
	ret
.asm_cdc71
	call Functionce72c

; no known jump sources
Functioncdc74: ; cdc74 (33:5c74)
	ret

; known jump sources: cdbbd (33:5bbd), cdbcb (33:5bcb)
Functioncdc75: ; cdc75 (33:5c75)
	ld hl, $f
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $3f
	ret nz
	ld hl, $f
	add hl, bc
	ld [hl], $20
	ld hl, $10
	add hl, bc
	ld a, [hl]
	sub $8
	ld [hl], a
	ret nz
	xor a
	ld hl, $f
	add hl, bc
	ld [hli], a
	ld [hl], a
	call Functionce72c
	ret

; no known jump sources
Functioncdca6: ; cdca6 (33:5ca6)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cdcb6
	cp $d8
	jr nc, .asm_cdcb6
	call Functioncc9bd
	ret
.asm_cdcb6
	ld hl, $b
	add hl, bc
	ld d, [hl]
	ld hl, $a
	add hl, bc
	ld a, [hl]
	sub d
	ld [hl], a
	ret

; no known jump sources
Functioncdcc3: ; cdcc3 (33:5cc3)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdcc6: ; cdcc6 (33:5cc6)
	dw Functioncdcca
	dw Functioncdced


; no known jump sources
Functioncdcca: ; cdcca (33:5cca)
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_cdcd9
	ld hl, $b
	add hl, bc
	ld a, [hl]
	xor $ff
	add $3
	ld [hl], a
.asm_cdcd9
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $8
	ld hl, $b
	add hl, bc
	ld a, $59
	add [hl]
	call Functionce7bf
	ret

; no known jump sources
Functioncdced: ; cdced (33:5ced)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cdcfa
	dec [hl]
	call Functioncdcfe
	ret
.asm_cdcfa
	call Functioncc9bd
	ret

; known jump sources: cdcf6 (33:5cf6)
Functioncdcfe: ; cdcfe (33:5cfe)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	ld d, $10
	call Functionce734
	ld d, a
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cdd20
	dec a
	ret z
	ld hl, $a
	add hl, bc
	ld [hl], d
	ret
.asm_cdd20
	ld hl, $a
	add hl, bc
	ld a, d
	xor $ff
	inc a
	ld [hl], a
	ret

; no known jump sources
Functioncdd2a: ; cdd2a (33:5d2a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdd2d: ; cdd2d (33:5d2d)
	dw Functioncdd31
	dw Functioncdd4f


; no known jump sources
Functioncdd31: ; cdd31 (33:5d31)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $3f
	ld hl, $10
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $80
	rlca
	ld [hl], a
	add $5d
	call Functionce7bf
	ret

; no known jump sources
Functioncdd4f: ; cdd4f (33:5d4f)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	swap a
	ld d, a
	ld hl, $10
	add hl, bc
	ld a, [hl]
	inc [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $80
	ret nc
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and $3
	jr nz, .asm_cdd87
	ld hl, $8
	add hl, bc
	dec [hl]
.asm_cdd87
	and $1
	ret nz
	ld hl, $7
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncdd90: ; cdd90 (33:5d90)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdd93: ; cdd93 (33:5d93)
	dw Functioncdd97
	dw Functioncddbc


; no known jump sources
Functioncdd97: ; cdd97 (33:5d97)
	call Functionce72c
	ld hl, $3
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $80
	rlca
	ld hl, $f
	add hl, bc
	add [hl]
	call Functionce7bf
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $7f
	ld [hl], a

; no known jump sources
Functioncddbc: ; cddbc (33:5dbc)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $10
	push af
	push de
	call Functionce734
	sra a
	sra a
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	and $3f
	jr z, .asm_cddf0
	and $1f
	ret nz
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc a
	jr .asm_cddf5
.asm_cddf0
	ld hl, $f
	add hl, bc
	ld a, [hl]
.asm_cddf5
	call Functionce7bf
	ret

; no known jump sources
Functioncddf9: ; cddf9 (33:5df9)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cddfc: ; cddfc (33:5dfc)
	dw Functioncde02
	dw Functioncde20
	dw Functioncde21


; no known jump sources
Functioncde02: ; cde02 (33:5e02)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	add $63
	call Functionce7bf
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $5e25
	add hl, de
	ld a, [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a

; no known jump sources
Functioncde20: ; cde20 (33:5e20)
	ret

; no known jump sources
Functioncde21: ; cde21 (33:5e21)
	call Functioncc9bd
	ret
; cde25 (33:5e25)

INCBIN "baserom.gbc",$cde25,$cde28 - $cde25

; no known jump sources
Functioncde28: ; cde28 (33:5e28)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	ld d, $4
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $a
	add hl, bc
	ld d, [hl]
	ld hl, $10
	add hl, bc
	ld e, [hl]
	ld hl, $ffa0
	add hl, de
	ld e, l
	ld d, h
	ld hl, $a
	add hl, bc
	ld [hl], d
	ld hl, $10
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functioncde54: ; cde54 (33:5e54)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	dec [hl]
	ld d, $10
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $7
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functioncde6b: ; cde6b (33:5e6b)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cde6e: ; cde6e (33:5e6e)
	dw Functioncde72
	dw Functioncde88


; no known jump sources
Functioncde72: ; cde72 (33:5e72)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and a
	jr nz, .asm_cde83
	ld hl, $1
	add hl, bc
	set 6, [hl]
.asm_cde83
	add $6a
	call Functionce7bf

; no known jump sources
Functioncde88: ; cde88 (33:5e88)
	ret

; no known jump sources
Functioncde89: ; cde89 (33:5e89)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cde8c: ; cde8c (33:5e8c)
	dw Functioncde90
	dw Functioncdebf


; no known jump sources
Functioncde90: ; cde90 (33:5e90)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $0
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld a, e
	and $70
	swap a
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld a, e
	and $80
	jr nz, .asm_cdeb2
	ld a, e
	and $f
	ld [hl], a
	ret
.asm_cdeb2
	ld a, e
	and $f
	xor $ff
	inc a
	ld [hl], a
	ld a, $6e
	call Functionce7bf
	ret

; no known jump sources
Functioncdebf: ; cdebf (33:5ebf)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_cdec9
	dec [hl]
	ret
.asm_cdec9
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	ret

; no known jump sources
Functioncdedd: ; cdedd (33:5edd)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $18
	push af
	push de
	call Functionce734
	sra a
	sra a
	sra a
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $7
	ret nz
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $28
	jr nc, .asm_cdf17
	inc [hl]
	ret
.asm_cdf17
	call Functioncc9bd
	ret

; no known jump sources
Functioncdf1b: ; cdf1b (33:5f1b)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $18
	push af
	push de
	call Functionce734
	sra a
	sra a
	sra a
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $3
	ret nz
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $28
	jr nc, .asm_cdf55
	inc [hl]
	ret
.asm_cdf55
	call Functioncc9bd
	ret

; no known jump sources
Functioncdf59: ; cdf59 (33:5f59)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_cdf5c: ; cdf5c (33:5f5c)
	dw Functioncdf60
	dw Functioncdedd


; no known jump sources
Functioncdf60: ; cdf60 (33:5f60)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	jr nc, .asm_cdf88
	inc [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld d, $18
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $7
	add hl, bc
	ld a, [hl]
	and $1
	ret nz
	ld hl, $8
	add hl, bc
	dec [hl]
	ret
.asm_cdf88
	call Functionce72c
	ret

; no known jump sources
Functioncdf8c: ; cdf8c (33:5f8c)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $18
	push af
	push de
	call Functionce734
	sra a
	sra a
	sra a
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	inc [hl]
	inc [hl]
	ld a, [hl]
	and $7
	ret nz
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $e8
	jr z, .asm_cdfc7
	dec [hl]
	ret
.asm_cdfc7
	call Functioncc9bd
	ret

; no known jump sources
Functioncdfcb: ; cdfcb (33:5fcb)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $18
	push af
	push de
	call Functionce734
	sra a
	sra a
	sra a
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	inc [hl]
	inc [hl]
	ld a, [hl]
	and $3
	ret nz
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $d0
	jr z, .asm_ce007
	dec [hl]
	dec [hl]
	ret
.asm_ce007
	call Functioncc9bd
	ret

; no known jump sources
Functionce00b: ; ce00b (33:600b)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce00e: ; ce00e (33:600e)
	dw Functionce014
	dw Functionce023
	dw Functionce05f


; no known jump sources
Functionce014: ; ce014 (33:6014)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $34
	ld hl, $10
	add hl, bc
	ld [hl], $10

; no known jump sources
Functionce023: ; ce023 (33:6023)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $6c
	jr c, .asm_ce02d
	ret
.asm_ce02d
	ld a, $2
	call Functionce70a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $10
	add hl, bc
	ld d, [hl]
	call Functionce734
	bit 7, a
	jr nz, .asm_ce046
	xor $ff
	inc a
.asm_ce046
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	sub $4
	ld [hl], a
	and $1f
	cp $20
	ret nz
	ld hl, $10
	add hl, bc
	srl [hl]
	ret

; no known jump sources
Functionce05f: ; ce05f (33:605f)
	call Functioncc9bd
	ret

; no known jump sources
Functionce063: ; ce063 (33:6063)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce066: ; ce066 (33:6066)
	dw Functionce06e
	dw Functionce083
	dw Functionce091
	dw Functionce09e


; no known jump sources
Functionce06e: ; ce06e (33:606e)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	ld hl, $8
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce083: ; ce083 (33:6083)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $58
	ret nc
	ld a, $2
	call Functionce70a
	ret

; no known jump sources
Functionce091: ; ce091 (33:6091)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	cp $20
	jr c, Functionce09e
	call Functioncc9bd
	ret

; known jump sources: ce098 (33:6098)
Functionce09e: ; ce09e (33:609e)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	ld d, $8
	call Functionce734
	ld hl, $9
	add hl, bc
	ld [hl], a
	sra a
	xor $ff
	inc a
	ld hl, $f
	add hl, bc
	add [hl]
	ld hl, $8
	add hl, bc
	ld [hl], a
	ld hl, $10
	add hl, bc
	ld a, [hl]
	add $8
	ld [hl], a
	ret

; no known jump sources
Functionce0c5: ; ce0c5 (33:60c5)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce0c8: ; ce0c8 (33:60c8)
	dw Functionce0ce
	dw Functionce0f8
	dw Functionce0dd


; no known jump sources
Functionce0ce: ; ce0ce (33:60ce)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f0
	swap a
	ld hl, $e
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce0dd: ; ce0dd (33:60dd)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionce734
	ld hl, $a
	add hl, bc
	bit 7, a
	jr z, .asm_ce0f0
	ld [hl], a
.asm_ce0f0
	ld hl, $f
	add hl, bc
	ld a, [hl]
	sub $4
	ld [hl], a

; no known jump sources
Functionce0f8: ; ce0f8 (33:60f8)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	jr c, .asm_ce105
	call Functioncc9bd
	ret
.asm_ce105
	ld hl, $b
	add hl, bc
	ld a, [hl]
	call Functionce70a
	ret

; no known jump sources
Functionce10e: ; ce10e (33:610e)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce111: ; ce111 (33:6111)
	dw Functionce115
	dw Functionce12a


; no known jump sources
Functionce115: ; ce115 (33:6115)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $28
	ld hl, $8
	add hl, bc
	ld a, [hl]
	sub $28
	ld hl, $10
	add hl, bc
	ld [hl], a

; no known jump sources
Functionce12a: ; ce12a (33:612a)
	ld hl, $f
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	ld hl, $b
	add hl, bc
	and [hl]
	jr nz, .asm_ce149
	ld hl, $7
	add hl, bc
	dec [hl]
.asm_ce149
	ld hl, $f
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $3f
	ret nz
	ld hl, $f
	add hl, bc
	ld [hl], $20
	inc hl
	srl [hl]
	ret

; no known jump sources
Functionce15c: ; ce15c (33:615c)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	ld d, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	inc [hl]
	ld a, [hl]
	and $1
	jr nz, .asm_ce189
	ld hl, $7
	add hl, bc
	dec [hl]
.asm_ce189
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $3
	jr nz, .asm_ce197
	ld hl, $8
	add hl, bc
	inc [hl]
.asm_ce197
	ld hl, $7
	add hl, bc
	ld a, [hl]
	ld hl, $f
	add hl, bc
	cp $5a
	jr nc, .asm_ce1aa
	ld a, [hl]
	and a
	jr z, .asm_ce1ac
	dec [hl]
	ret
.asm_ce1aa
	inc [hl]
	ret
.asm_ce1ac
	call Functioncc9bd
	ret

; no known jump sources
Functionce1b0: ; ce1b0 (33:61b0)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld hl, $f
	add hl, bc
	ld d, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $10
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld hl, $f
	add hl, bc
	cp $40
	jr nc, .asm_ce1df
	inc [hl]
	ret
.asm_ce1df
	ld a, [hl]
	dec [hl]
	and a
	ret nz
	call Functioncc9bd
	ret

; no known jump sources
Functionce1e7: ; ce1e7 (33:61e7)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce1ea: ; ce1ea (33:61ea)
	dw Functionce1ee
	dw Functionce1fb


; no known jump sources
Functionce1ee: ; ce1ee (33:61ee)
	call Functionce72c
	ld hl, $8
	add hl, bc
	ld a, [hl]
	ld hl, $10
	add hl, bc
	ld [hl], a

; no known jump sources
Functionce1fb: ; ce1fb (33:61fb)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $30
	call Functionce734
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $8
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	add $8
	ld d, $30
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functionce226: ; ce226 (33:6226)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce229: ; ce229 (33:6229)
	dw Functionce22d
	dw Functionce254


; no known jump sources
Functionce22d: ; ce22d (33:622d)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $10
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $10
	add hl, bc
	ld [hl], $f

; no known jump sources
Functionce254: ; ce254 (33:6254)
	ret

; no known jump sources
Functionce255: ; ce255 (33:6255)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce258: ; ce258 (33:6258)
	dw Functionce260
	dw Functionce274
	dw Functionce278
	dw Functionce289


; no known jump sources
Functionce260: ; ce260 (33:6260)
	call Functionce72c
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr nz, .asm_ce26c
	ld a, $f0
	jr .asm_ce26e
.asm_ce26c
	ld a, $cc
.asm_ce26e
	ld hl, $f
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce274: ; ce274 (33:6274)
	call Functionce29f
	ret

; no known jump sources
Functionce278: ; ce278 (33:6278)
	call Functionce29f
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	ret nc
	ld a, $4
	call Functionce70a
	ret

; no known jump sources
Functionce289: ; ce289 (33:6289)
	call Functionce29f
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $d0
	jr nc, .asm_ce29b
	ld a, $4
	call Functionce70a
	ret
.asm_ce29b
	call Functioncc9bd
	ret

; known jump sources: ce274 (33:6274), ce278 (33:6278), ce289 (33:6289)
Functionce29f: ; ce29f (33:629f)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and $7
	inc [hl]
	srl a
	ld e, a
	ld d, $0
	ld a, [hSGB] ; $ff00+$e7
	and a
	jr nz, .asm_ce2b6
	ld hl, $62c4
	jr .asm_ce2b9
.asm_ce2b6
	ld hl, $62c8
.asm_ce2b9
	add hl, de
	ld a, [hl]
	ld hl, $f
	add hl, bc
	and [hl]
	ld [$cfc8], a
	ret
; ce2c4 (33:62c4)

INCBIN "baserom.gbc",$ce2c4,$ce2cc - $ce2c4

; no known jump sources
Functionce2cc: ; ce2cc (33:62cc)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $18
	call Functionce734
	sra a
	sra a
	sra a
	ld hl, $10
	add hl, bc
	add [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld d, $18
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $10
	add hl, bc
	dec [hl]
	dec [hl]
	ret

; no known jump sources
Functionce2fd: ; ce2fd (33:62fd)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce300: ; ce300 (33:6300)
	dw Functionce306
	dw Functionce330
	dw Functionce34c


; no known jump sources
Functionce306: ; ce306 (33:6306)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $e0
	jr nz, .asm_ce319
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $2
	ret
.asm_ce319
	ld d, a
	ld hl, $f
	add hl, bc
	ld e, [hl]
	ld hl, hPushOAM ; $ff80
	add hl, de
	ld e, l
	ld d, h
	ld hl, $a
	add hl, bc
	ld [hl], d
	ld hl, $f
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functionce330: ; ce330 (33:6330)
	ld hl, $10
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_ce33a
	dec [hl]
	ret
.asm_ce33a
	ld [hl], $4
	ld hl, $f
	add hl, bc
	ld a, [hl]
	xor $ff
	inc a
	ld [hl], a
	ld hl, $a
	add hl, bc
	add [hl]
	ld [hl], a
	ret

; no known jump sources
Functionce34c: ; ce34c (33:634c)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $84
	jr nc, .asm_ce35b
	ld a, $4
	call Functionce70a
	ret
.asm_ce35b
	call Functioncc9bd
	ret

; no known jump sources
Functionce35f: ; ce35f (33:635f)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce362: ; ce362 (33:6362)
	dw Functionce366
	dw Functionce375


; no known jump sources
Functionce366: ; ce366 (33:6366)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $7f
	add $81
	call Functionce7bf

; no known jump sources
Functionce375: ; ce375 (33:6375)
	ld hl, $b
	add hl, bc
	bit 7, [hl]
	jr nz, .asm_ce383
	ld hl, $9
	add hl, bc
	inc [hl]
	ret
.asm_ce383
	ld hl, $9
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionce389: ; ce389 (33:6389)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce38c: ; ce38c (33:638c)
	dw Functionce392
	dw Functionce39c
	dw Functionce3ae


; no known jump sources
Functionce392: ; ce392 (33:6392)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $c
	ret

; no known jump sources
Functionce39c: ; ce39c (33:639c)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_ce3a6
	dec [hl]
	ret
.asm_ce3a6
	call Functionce72c
	ld a, $20
	call Functionce7bf

; no known jump sources
Functionce3ae: ; ce3ae (33:63ae)
	ld hl, $a
	add hl, bc
	dec [hl]
	ret

; no known jump sources
Functionce3b4: ; ce3b4 (33:63b4)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	push af
	ld d, $2
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop af
	ld d, $8
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce3d2: ; ce3d2 (33:63d2)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $20
	jr c, .asm_ce3df
	call Functioncc9bd
	ret
.asm_ce3df
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $8
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	add $2
	ld [hl], a
	and $7
	ret nz
	ld hl, $a
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functionce3ff: ; ce3ff (33:63ff)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce402: ; ce402 (33:6402)
	dw Functionce406
	dw Functionce412


; no known jump sources
Functionce406: ; ce406 (33:6406)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $7
	add hl, bc
	add [hl]
	ld [hl], a
	ret

; no known jump sources
Functionce412: ; ce412 (33:6412)
	call Functioncc9bd
	ret

; no known jump sources
Functionce416: ; ce416 (33:6416)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld d, $18
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	sra a
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	ret

; no known jump sources
Functionce43a: ; ce43a (33:643a)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce43d: ; ce43d (33:643d)
	dw Functionce443
	dw Functionce465
	dw Functionce490


; no known jump sources
Functionce443: ; ce443 (33:6443)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $28
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f
	ld hl, $3
	add hl, bc
	add [hl]
	call Functionce7bf
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and $f0
	or $8
	ld [hl], a

; no known jump sources
Functionce465: ; ce465 (33:6465)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_ce48b
	dec [hl]
	add $8
	ld d, a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret
.asm_ce48b
	ld [hl], $10
	call Functionce72c

; no known jump sources
Functionce490: ; ce490 (33:6490)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	dec [hl]
	and a
	ret nz
	call Functioncc9bd
	ret

; no known jump sources
Functionce49c: ; ce49c (33:649c)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce49f: ; ce49f (33:649f)
	dw Functionce4a3
	dw Functionce4b0


; no known jump sources
Functionce4a3: ; ce4a3 (33:64a3)
	call Functionce72c
	ld hl, $b
	add hl, bc
	ld a, $24
	add [hl]
	call Functionce7bf

; no known jump sources
Functionce4b0: ; ce4b0 (33:64b0)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $38
	jr nc, .asm_ce4d8
	inc [hl]
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	ld d, $18
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ld hl, $8
	add hl, bc
	ld a, [hl]
	and $1
	ret nz
	ld hl, $7
	add hl, bc
	dec [hl]
	ret
.asm_ce4d8
	call Functioncc9bd
	ret

; no known jump sources
Functionce4dc: ; ce4dc (33:64dc)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and a
	ret z
	ld d, a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Functionce734
	bit 7, a
	jr nz, .asm_ce4f4
	xor $ff
	inc a
.asm_ce4f4
	ld hl, $a
	add hl, bc
	ld [hl], a
	ld hl, $f
	add hl, bc
	ld a, [hl]
	and $1f
	ret nz
	ld hl, $b
	add hl, bc
	srl [hl]
	ret

; no known jump sources
Functionce508: ; ce508 (33:6508)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $10
	jr nc, .asm_ce52e
	inc [hl]
	inc [hl]
	ld d, a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret
.asm_ce52e
	call Functioncc9bd
	ret

; no known jump sources
Functionce532: ; ce532 (33:6532)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld hl, $f
	add hl, bc
	ld d, [hl]
	ld a, e
	and $c0
	rlca
	rlca
	add [hl]
	ld [hl], a
	ld a, e
	and $3f
	push af
	push de
	call Functionce734
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce55b: ; ce55b (33:655b)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce55e: ; ce55e (33:655e)
	dw Functionce564
	dw Functionce56e
	dw Functionce577


; no known jump sources
Functionce564: ; ce564 (33:6564)
	ld d, $18
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	jr asm_ce58f

; no known jump sources
Functionce56e: ; ce56e (33:656e)
	call Functionce72c
	ld hl, $f
	add hl, bc
	ld [hl], $18

; no known jump sources
Functionce577: ; ce577 (33:6577)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $80
	jr nc, .asm_ce58b
	ld d, a
	add $8
	ld [hl], a
	ld hl, $b
	add hl, bc
	ld a, [hl]
	jr asm_ce58f
.asm_ce58b
	call Functioncc9bd
	ret
asm_ce58f: ; ce58f (33:658f)
	call Functionce6f1
	ret

; no known jump sources
Functionce593: ; ce593 (33:6593)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce596: ; ce596 (33:6596)
	dw Functionce5b3
	dw Functionce59a


; no known jump sources
Functionce59a: ; ce59a (33:659a)
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $30
	jr c, .asm_ce5b0
	ld hl, $7
	add hl, bc
	dec [hl]
	dec [hl]
	ld hl, $8
	add hl, bc
	inc [hl]
	inc [hl]
	ret
.asm_ce5b0
	call Functioncc9bd

; no known jump sources
Functionce5b3: ; ce5b3 (33:65b3)
	ret

; no known jump sources
Functionce5b4: ; ce5b4 (33:65b4)
	ld d, $50
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	inc [hl]
	push af
	push de
	call Functionce734
	sra a
	sra a
	ld hl, $f
	add hl, bc
	add [hl]
	inc [hl]
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret

; no known jump sources
Functionce5dc: ; ce5dc (33:65dc)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $d0
	jr z, .asm_ce5ea
	dec [hl]
	dec [hl]
	dec [hl]
	dec [hl]
	ret
.asm_ce5ea
	call Functioncc9bd
	ret

; no known jump sources
Functionce5ee: ; ce5ee (33:65ee)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce5f1: ; ce5f1 (33:65f1)
	dw Functionce5f9
	dw Functionce60a
	dw Functionce622
	dw Functionce618


; no known jump sources
Functionce5f9: ; ce5f9 (33:65f9)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	and a
	jr nz, asm_ce61c
	call Functionce72c
	ld hl, $a
	add hl, bc
	ld [hl], $ec

; no known jump sources
Functionce60a: ; ce60a (33:660a)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $4
	jr z, Functionce618
	inc [hl]
	inc [hl]
	inc [hl]
	inc [hl]
	ret

; known jump sources: ce611 (33:6611)
Functionce618: ; ce618 (33:6618)
	call Functioncc9bd
	ret
asm_ce61c: ; ce61c (33:661c)
	call Functionce72c
	call Functionce72c

; no known jump sources
Functionce622: ; ce622 (33:6622)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	cp $d8
	ret z
	dec [hl]
	dec [hl]
	dec [hl]
	dec [hl]
	ret

; no known jump sources
Functionce62f: ; ce62f (33:662f)
	call Functionce71e ;  ;  ; call does not return

; no known jump sources
Jumptable_ce632: ; ce632 (33:6632)
	dw Functionce63a
	dw Functionce648
	dw Functionce65c
	dw Functionce672


; no known jump sources
Functionce63a: ; ce63a (33:663a)
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld hl, $e
	add hl, bc
	ld [hl], a
	call Functionce72c
	ret

; no known jump sources
Functionce648: ; ce648 (33:6648)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	add $4
	cp $70
	jr c, .asm_ce654
	xor a
.asm_ce654
	ld [hl], a
	ld hl, $9
	add hl, bc
	inc [hl]
	inc [hl]
	ret

; no known jump sources
Functionce65c: ; ce65c (33:665c)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	add $4
	cp $70
	jr c, .asm_ce668
	xor a
.asm_ce668
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld a, [hl]
	add $8
	ld [hl], a
	ret

; no known jump sources
Functionce672: ; ce672 (33:6672)
	ld hl, $a
	add hl, bc
	ld a, [hl]
	add $4
	cp $70
	jr c, .asm_ce67e
	xor a
.asm_ce67e
	ld [hl], a
	ld hl, $9
	add hl, bc
	ld a, [hl]
	add $4
	ld [hl], a
	ret

; no known jump sources
Functionce688: ; ce688 (33:6688)
	ld hl, $7
	add hl, bc
	ld d, [hl]
	ld hl, $f
	add hl, bc
	ld e, [hl]
	ld hl, $b
	add hl, bc
	ld a, [hl]
	ld l, a
	and $f0
	ld h, a
	swap a
	or h
	ld h, a
	ld a, l
	and $f
	swap a
	ld l, a
	add hl, de
	ld e, l
	ld d, h
	ld hl, $7
	add hl, bc
	ld [hl], d
	ld hl, $f
	add hl, bc
	ld [hl], e
	ret

; no known jump sources
Functionce6b3: ; ce6b3 (33:66b3)
	ld d, $18
	ld hl, $b
	add hl, bc
	ld a, [hl]
	inc [hl]
	call Functionce6f1
	ret

; no known jump sources
Functionce6bf: ; ce6bf (33:66bf)
	ld d, $18
	ld hl, $10
	add hl, bc
	ld a, [hl]
	inc [hl]
	srl a
	ld hl, $b
	add hl, bc
	add [hl]
	call Functionce6f1
	ret

; no known jump sources
Functionce6d2: ; ce6d2 (33:66d2)
	ld hl, $f
	add hl, bc
	ld a, [hl]
	cp $20
	jr nc, .asm_ce6ed
	inc [hl]
	ld hl, $b
	add hl, bc
	ld d, [hl]
	call Functionce734
	xor $ff
	inc a
	ld hl, $a
	add hl, bc
	ld [hl], a
	ret
.asm_ce6ed
	call Functioncc9bd
	ret

; known jump sources: ce58f (33:658f), ce6bb (33:66bb), ce6ce (33:66ce)
Functionce6f1: ; ce6f1 (33:66f1)
	push af
	push de
	call Functionce734
	sra a
	sra a
	ld hl, $a
	add hl, bc
	ld [hl], a
	pop de
	pop af
	call Functionce732
	ld hl, $9
	add hl, bc
	ld [hl], a
	ret

; known jump sources: cd142 (33:5142), cd154 (33:5154), cd2ad (33:52ad), cd553 (33:5553), cd609 (33:5609), cd706 (33:5706), cd733 (33:5733), ce02f (33:602f), ce08d (33:608d), ce10a (33:610a), ce285 (33:6285), ce297 (33:6297), ce357 (33:6357)
Functionce70a: ; ce70a (33:670a)
	and $f
	ld e, a
	ld hl, $7
	add hl, bc
	add [hl]
	ld [hl], a
	srl e
	ld hl, $8
	add hl, bc
.asm_ce719
	dec [hl]
	dec e
	jr nz, .asm_ce719
	ret

; known jump sources: cd06e (33:506e), cd0e3 (33:50e3), cd12a (33:512a), cd15c (33:515c), cd212 (33:5212), cd284 (33:5284), cd2be (33:52be), cd306 (33:5306), cd3ae (33:53ae), cd3f2 (33:53f2), cd478 (33:5478), cd58a (33:558a), cd5e9 (33:55e9), cd66a (33:566a), cd6e3 (33:56e3), cd71a (33:571a), cd7a4 (33:57a4), cd80c (33:580c), cd824 (33:5824), cd89a (33:589a), cd900 (33:5900), cd954 (33:5954), cda31 (33:5a31), cda4d (33:5a4d), cdad6 (33:5ad6), cdb06 (33:5b06), cdb80 (33:5b80), cdcc3 (33:5cc3), cdd2a (33:5d2a), cdd90 (33:5d90), cddf9 (33:5df9), cde6b (33:5e6b), cde89 (33:5e89), cdf59 (33:5f59), ce00b (33:600b), ce063 (33:6063), ce0c5 (33:60c5), ce10e (33:610e), ce1e7 (33:61e7), ce226 (33:6226), ce255 (33:6255), ce2fd (33:62fd), ce35f (33:635f), ce389 (33:6389), ce3ff (33:63ff), ce43a (33:643a), ce49c (33:649c), ce55b (33:655b), ce593 (33:6593), ce5ee (33:65ee), ce62f (33:662f)
Functionce71e: ; ce71e (33:671e)
	pop de
	ld hl, $e
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; known jump sources: cd0ea (33:50ea), cd17a (33:517a), cd192 (33:5192), cd196 (33:5196), cd1ce (33:51ce), cd1e5 (33:51e5), cd20a (33:520a), cd21e (33:521e), cd22f (33:522f), cd2b5 (33:52b5), cd2c5 (33:52c5), cd31e (33:531e), cd321 (33:5321), cd37a (33:537a), cd3b7 (33:53b7), cd42f (33:542f), cd48d (33:548d), cd49f (33:549f), cd545 (33:5545), cd5a1 (33:55a1), cd5f2 (33:55f2), cd60d (33:560d), cd677 (33:5677), cd694 (33:5694), cd6ea (33:56ea), cd725 (33:5725), cd747 (33:5747), cd76e (33:576e), cd7ab (33:57ab), cd817 (33:5817), cd835 (33:5835), cd88f (33:588f), cd8ab (33:58ab), cd8f5 (33:58f5), cd907 (33:5907), cd961 (33:5961), cd977 (33:5977), cda43 (33:5a43), cda58 (33:5a58), cda76 (33:5a76), cda84 (33:5a84), cdadf (33:5adf), cdaf6 (33:5af6), cdb50 (33:5b50), cdbe2 (33:5be2), cdbe6 (33:5be6), cdc23 (33:5c23), cdc44 (33:5c44), cdc4d (33:5c4d), cdc71 (33:5c71), cdca2 (33:5ca2), cdcd9 (33:5cd9), cdd31 (33:5d31), cdd97 (33:5d97), cde02 (33:5e02), cde72 (33:5e72), cde90 (33:5e90), cdf88 (33:5f88), ce014 (33:6014), ce115 (33:6115), ce1ee (33:61ee), ce22d (33:622d), ce260 (33:6260), ce30f (33:630f), ce366 (33:6366), ce392 (33:6392), ce3a6 (33:63a6), ce443 (33:6443), ce48d (33:648d), ce4a3 (33:64a3), ce56e (33:656e), ce601 (33:6601), ce61c (33:661c), ce61f (33:661f), ce644 (33:6644)
Functionce72c: ; ce72c (33:672c)
	ld hl, $e
	add hl, bc
	inc [hl]
	ret

; known jump sources: cd0d2 (33:50d2), cd11c (33:511c), cd33a (33:533a), cd44a (33:544a), cd7f5 (33:57f5), cd929 (33:5929), cd9bb (33:59bb), cdd69 (33:5d69), cddd3 (33:5dd3), cdefb (33:5efb), cdf39 (33:5f39), cdf72 (33:5f72), cdfaa (33:5faa), cdfe9 (33:5fe9), ce172 (33:6172), ce1c7 (33:61c7), ce218 (33:6218), ce246 (33:6246), ce2ee (33:62ee), ce3c9 (33:63c9), ce3e6 (33:63e6), ce429 (33:6429), ce482 (33:6482), ce4c2 (33:64c2), ce525 (33:6525), ce552 (33:6552), ce5d3 (33:65d3), ce701 (33:6701), ce76c (33:676c)
Functionce732: ; ce732 (33:6732)
	add $10

; known jump sources: cd09c (33:509c), cd0c8 (33:50c8), cd112 (33:5112), cd1ad (33:51ad), cd1f4 (33:51f4), cd2d7 (33:52d7), cd34d (33:534d), cd440 (33:5440), cd4ca (33:54ca), cd502 (33:5502), cd5c5 (33:55c5), cd6a4 (33:56a4), cd711 (33:5711), cd73e (33:573e), cd7eb (33:57eb), cd86a (33:586a), cd8d6 (33:58d6), cd91f (33:591f), cd9a4 (33:59a4), cda90 (33:5a90), cdb77 (33:5b77), cdc30 (33:5c30), cdc5e (33:5c5e), cdc7b (33:5c7b), cdd07 (33:5d07), cdd5f (33:5d5f), cddc5 (33:5dc5), cde31 (33:5e31), cde5d (33:5e5d), cdee6 (33:5ee6), cdf24 (33:5f24), cdf95 (33:5f95), cdfd4 (33:5fd4), ce03c (33:603c), ce0a5 (33:60a5), ce0e4 (33:60e4), ce130 (33:6130), ce168 (33:6168), ce1bd (33:61bd), ce202 (33:6202), ce237 (33:6237), ce2d3 (33:62d3), ce3be (33:63be), ce41f (33:641f), ce478 (33:6478), ce4ea (33:64ea), ce51b (33:651b), ce548 (33:6548), ce5bf (33:65bf), ce6e1 (33:66e1), ce6f3 (33:66f3), ce766 (33:6766)
Functionce734: ; ce734 (33:6734)
	and $3f
	cp $20
	jr nc, .asm_ce73f
	call Functionce749
	ld a, h
	ret
.asm_ce73f
	and $1f
	call Functionce749
	ld a, h
	xor $ff
	inc a
	ret

; known jump sources: ce73a (33:673a), ce741 (33:6741)
Functionce749: ; ce749 (33:6749)
	ld e, a
	ld a, d
	ld d, $0
	ld hl, $677f
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $0
.asm_ce758
	srl a
	jr nc, .asm_ce75d
	add hl, de
.asm_ce75d
	sla e
	rl d
	and a
	jr nz, .asm_ce758
	ret

; no known jump sources
Functionce765: ; ce765 (33:6765)
	ld a, e
	call Functionce734
	ld e, a
	ret

; no known jump sources
Functionce76b: ; ce76b (33:676b)
	ld a, e
	call Functionce732
	ld e, a
	ret
; ce771 (33:6771)

INCBIN "baserom.gbc",$ce771,$ce7bf - $ce771

; known jump sources: cd18f (33:518f), cd19b (33:519b), cd1cb (33:51cb), cd1d4 (33:51d4), cd1e2 (33:51e2), cd2ba (33:52ba), cd419 (33:5419), cd434 (33:5434), cd4ab (33:54ab), cd53c (33:553c), cd618 (33:5618), cd6f4 (33:56f4), cd74c (33:574c), cd773 (33:5773), cd81c (33:581c), cd883 (33:5883), cd8e8 (33:58e8), cda40 (33:5a40), cda73 (33:5a73), cda89 (33:5a89), cdc20 (33:5c20), cdc3b (33:5c3b), cdc4a (33:5c4a), cdce9 (33:5ce9), cdd4b (33:5d4b), cddb1 (33:5db1), cddf5 (33:5df5), cde0c (33:5e0c), cde85 (33:5e85), cdebb (33:5ebb), ce372 (33:6372), ce3ab (33:63ab), ce458 (33:6458), ce4ad (33:64ad)
Functionce7bf: ; ce7bf (33:67bf)
	ld hl, $3
	add hl, bc
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld [hl], $0
	ld hl, $d
	add hl, bc
	ld [hl], $ff
	ret


Functionce7d1: ; ce7d1
.asm_ce7d1
	ld hl, $000c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_ce7e1
	dec [hl]
	call Functionce823
	ld a, [hli]
	push af
	jr .asm_ce7fd

.asm_ce7e1
	ld hl, $000d
	add hl, bc
	inc [hl]
	call Functionce823
	ld a, [hli]
	cp $fe
	jr z, .asm_ce815
	cp $ff
	jr z, .asm_ce807
	push af
	ld a, [hl]
	push hl
	and $3f
	ld hl, $000c
	add hl, bc
	ld [hl], a
	pop hl

.asm_ce7fd
	ld a, [hl]
	and $c0
	srl a
	ld [$d420], a
	pop af
	ret

.asm_ce807
	xor a
	ld hl, $000c
	add hl, bc
	ld [hl], a
	ld hl, $000d
	add hl, bc
	dec [hl]
	dec [hl]
	jr .asm_ce7d1

.asm_ce815
	xor a
	ld hl, $000c
	add hl, bc
	ld [hl], a
	dec a
	ld hl, $000d
	add hl, bc
	ld [hl], a
	jr .asm_ce7d1
; ce823

Functionce823: ; ce823
	ld hl, $0003
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $685e
	add hl, de
	add hl, de
	ld e, [hl]
	inc hl
	ld d, [hl]
	ld hl, $000d
	add hl, bc
	ld l, [hl]
	ld h, $0
	add hl, hl
	add hl, de
	ret
; ce83c

Functionce83c: ; ce83c
	ld l, a
	ld h, $0
	ld de, $6eae
	add hl, hl
	add hl, hl
	add hl, de
	ret
; ce846


; known jump sources: cc4b0 (33:44b0)
Functionce846: ; ce846 (33:6846)
	push hl
	ld l, a
	ld h, $0
	add hl, hl
	add hl, hl
	ld de, $7cf6
	add hl, de
	ld c, [hl]
	inc hl
	ld b, [hl]
	inc hl
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
	push bc
	call Functione73
	pop bc
	ret
; ce85e (33:685e)

INCBIN "baserom.gbc",$ce85e,$cfd9e - $ce85e



;                       Pic animations I

SECTION "bank34", ROMX, BANK[$34]

; Pic animations asm
Functiond0000: ; d0000
	ld hl, $c4ac
	ld a, [IsInBattle]
	cp $1
	jr z, .asm_d0012
	ld e, $0
	ld d, $0
	call Functiond008e
	ret

.asm_d0012
	ld e, $1
	ld d, $0
	call Functiond008e
	ret
; d001a

INCBIN "baserom.gbc",$d001a,$d008e - $d001a

Functiond008e: ; d008e
	call Functiond01c6
	ret c
	call Functiond00a3
.asm_d0095
	call Functiond00b4
	push af
	callba Function10402d
	pop af
	jr nc, .asm_d0095
	ret
; d00a3

Functiond00a3: ; d00a3
	push hl
	ld c, e
	ld b, $0
	ld hl, $4042
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld b, [hl]
	ld c, a
	pop hl
	call Functiond01d6
	ret
; d00b4

Functiond00b4: ; d00b4
	ld a, [rSVBK]
	push af
	ld a, $2
	ld [rSVBK], a
	ld a, [$d168]
	ld c, a
	ld b, $0
	ld hl, $d169
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	ld a, [hl]
	ld hl, $40da
	rst JumpTable
	ld a, [$d168]
	ld c, a
	pop af
	ld [rSVBK], a
	ld a, c
	and $80
	ret z
	scf
	ret
; d00da

Tabled00da: ; d00da
	dw Functiond0171
	dw Functiond0166
	dw Functiond00f2
	dw Functiond00fe
	dw Functiond010b
	dw Functiond011d
	dw Functiond012f
	dw Functiond0141
	dw Functiond0155
	dw Functiond017a
	dw Functiond0188
	dw Functiond0196
; d00f2

Functiond00f2: ; d00f2
	ld a, $12
	ld [$d181], a
	ld a, [$d168]
	inc a
	ld [$d168], a

Functiond00fe: ; d00fe
	ld hl, $d181
	dec [hl]
	ret nz
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d010b

Functiond010b: ; d010b
	ld c, $0
	ld b, $0
	call Functiond0228
	call Functiond0504
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d011d

Functiond011d: ; d011d
	ld c, $0
	ld b, $4
	call Functiond0228
	call Functiond0504
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d012f

Functiond012f: ; d012f
	ld c, $1
	ld b, $0
	call Functiond0228
	call Functiond0504
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0141

Functiond0141: ; d0141
	call Functiond0250
	ld a, [$d17e]
	bit 7, a
	ret z
	call Functiond04bd
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0155

Functiond0155: ; d0155
	call Functiond0250
	ld a, [$d17e]
	bit 7, a
	ret z
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0166

Functiond0166: ; d0166
	call Functiond01a9
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0171

Functiond0171: ; d0171
	call Functiond01a9
	ld hl, $d168
	set 7, [hl]
	ret
; d017a

Functiond017a: ; d017a
	ld a, [$d16b]
	call Function37e2
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0188

Functiond0188: ; d0188
	ld a, [$d16b]
	call Function37d5
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d0196

Functiond0196: ; d0196
	ld a, $f
	ld [CryTracks], a
	ld a, [$d16b]
	call Function37c4
	ld a, [$d168]
	inc a
	ld [$d168], a
	ret
; d01a9

Functiond01a9: ; d01a9
	ld a, [rSVBK]
	push af
	ld a, $2
	ld [rSVBK], a
	call Functiond04bd
	callba Function10402d
	call Functiond0536
	callba Function104047
	pop af
	ld [rSVBK], a
	ret
; d01c6

Functiond01c6: ; d01c6
	ld a, [CurPartySpecies]
	cp $fd
	jr z, .asm_d01d4
	call IsAPokemon
	jr c, .asm_d01d4
	and a
	ret

.asm_d01d4
	scf
	ret
; d01d6

Functiond01d6: ; d01d6
	ld a, [rSVBK]
	push af
	ld a, $2
	ld [rSVBK], a
	push bc
	push de
	push hl
	ld hl, $d168
	ld bc, $0029
	xor a
	call ByteFill
	pop hl
	pop de
	pop bc
	ld a, c
	ld [$d169], a
	ld a, b
	ld [$d16a], a
	ld a, l
	ld [$d16f], a
	ld a, h
	ld [$d170], a
	ld a, d
	ld [$d16e], a
	ld a, $1
	ld hl, CurPartySpecies
	call GetFarWRAMByte
	ld [$d16b], a
	ld a, $1
	ld hl, UnownLetter
	call GetFarWRAMByte
	ld [$d16c], a
	call Functiond065c
	ld [$d16d], a
	call Functiond05b4
	ld a, c
	ld [$d171], a
	pop af
	ld [rSVBK], a
	ret
; d0228

Functiond0228: ; d0228
	ld a, [rSVBK]
	push af
	ld a, $2
	ld [rSVBK], a
	push bc
	ld hl, $d172
	ld bc, $001f
	xor a
	call ByteFill
	pop bc
	ld a, b
	ld [$d173], a
	ld a, c
	ld [$d172], a
	call Functiond055c
	call Functiond05ce
	call Functiond061b
	pop af
	ld [rSVBK], a
	ret
; d0250

Functiond0250: ; d0250
	xor a
	ld [hBGMapMode], a

Functiond0253: ; d0253
	ld a, [$d17e]
	and $7f
	ld hl, Tabled025d
	rst JumpTable
	ret
; d025d

Tabled025d: ; d025d
	dw Functiond0261
	dw Functiond0282
; d0261

Functiond0261: ; d0261
	call Functiond02f8
	ld a, [$d182]
	cp $ff
	jr z, Functiond02a8
	cp $fe
	jr z, Functiond028e
	cp $fd
	jr z, Functiond0296
	call Functiond02c8
	ld a, [$d183]
	call Functiond02ae
	ld [$d181], a
	call Functiond02dc

Functiond0282: ; d0282
	ld a, [$d181]
	dec a
	ld [$d181], a
	ret nz
	call Functiond02e4
	ret
; d028e

Functiond028e: ; d028e
	ld a, [$d183]
	ld [$d17f], a
	jr Functiond0253
; d0296

Functiond0296: ; d0296
	ld a, [$d17f]
	and a
	ret z
	dec a
	ld [$d17f], a
	ret z
	ld a, [$d183]
	ld [$d17d], a
	jr Functiond0253
; d02a8

Functiond02a8: ; d02a8
	ld hl, $d17e
	set 7, [hl]
	ret
; d02ae

Functiond02ae: ; d02ae
	ld c, a
	ld b, $0
	ld hl, $0000
	ld a, [$d173]
	call AddNTimes
	ld a, h
	swap a
	and $f0
	ld h, a
	ld a, l
	swap a
	and $f
	or h
	add c
	ret
; d02c8

Functiond02c8: ; d02c8
	call Functiond04bd
	ld a, [$d182]
	and a
	ret z
	call Functiond031b
	push hl
	call Functiond033b
	pop hl
	call Functiond036b
	ret
; d02dc

Functiond02dc: ; d02dc
	ld a, [$d17e]
	inc a
	ld [$d17e], a
	ret
; d02e4

Functiond02e4: ; d02e4
	ld a, [$d17e]
	dec a
	ld [$d17e], a
	ret
; d02ec

Functiond02ec: ; d02ec
	ld a, [$d16b]
	cp $c9
	ret
; d02f2

Functiond02f2: ; d02f2
	ld a, [$d16b]
	cp $fd
	ret
; d02f8

Functiond02f8: ; d02f8
	push hl
	ld a, [$d17d]
	ld e, a
	ld d, $0
	ld hl, $d175
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, de
	add hl, de
	ld a, [$d174]
	call GetFarHalfword
	ld a, l
	ld [$d182], a
	ld a, h
	ld [$d183], a
	ld hl, $d17d
	inc [hl]
	pop hl
	ret
; d031b

Functiond031b: ; d031b
	ld a, [$d182]
	dec a
	ld c, a
	ld b, $0
	ld hl, $d178
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	add hl, bc
	ld a, [$d177]
	call GetFarHalfword
	ld a, [$d177]
	call GetFarByte
	ld [$d180], a
	inc hl
	ret
; d033b

Functiond033b: ; d033b
	call Functiond0356
	push bc
	ld hl, $d17b
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d180]
	call AddNTimes
	pop bc
	ld de, $d188
	ld a, [$d17a]
	call FarCopyBytes
	ret
; d0356

Functiond0356: ; d0356
	push hl
	ld a, [$d171]
	sub $5
	ld c, a
	ld b, $0
	ld hl, $4368
	add hl, bc
	ld c, [hl]
	ld b, $0
	pop hl
	ret
; d0368

INCBIN "baserom.gbc",$d0368,$d036b - $d0368

Functiond036b: ; d036b
	xor a
	ld [$d187], a
	ld [$d186], a
	ld [$d185], a
.asm_d0375
	push hl
	call Functiond0392
	pop hl
	ld a, b
	and a
	jr z, .asm_d038a
	ld a, [$d177]
	call GetFarByte
	inc hl
	push hl
	call Functiond03bd
	pop hl

.asm_d038a
	push hl
	call Functiond0499
	pop hl
	jr nc, .asm_d0375
	ret
; d0392

Functiond0392: ; d0392
	ld a, [$d187]
	and $f8
	rrca
	rrca
	rrca
	ld e, a
	ld d, $0
	ld hl, $d188
	add hl, de
	ld b, [hl]
	ld a, [$d187]
	and $7
	jr z, .asm_d03b0
	ld c, a
	ld a, b
.asm_d03ab
	rrca
	dec c
	jr nz, .asm_d03ab
	ld b, a

.asm_d03b0
	xor a
	bit 0, b
	jr z, .asm_d03b7
	ld a, $1

.asm_d03b7
	ld b, a
	ld hl, $d187
	inc [hl]
	ret
; d03bd

Functiond03bd: ; d03bd
	push af
	call Functiond03cd
	pop af
	push hl
	call Functiond03f7
	ld hl, $d16e
	add [hl]
	pop hl
	ld [hl], a
	ret
; d03cd

Functiond03cd: ; d03cd
	call Functiond046c
	ld a, [$d186]
	ld bc, $0014
	call AddNTimes
	ld a, [$c2c6]
	and a
	jr nz, .asm_d03e8
	ld a, [$d185]
	ld e, a
	ld d, $0
	add hl, de
	jr .asm_d03f3

.asm_d03e8
	ld a, [$d185]
	ld e, a
	ld a, l
	sub e
	ld l, a
	ld a, h
	sbc $0
	ld h, a

.asm_d03f3
	ret
; d03f4

INCBIN "baserom.gbc",$d03f4,$d03f7 - $d03f4

Functiond03f7: ; d03f7
	push af
	ld a, [$d171]
	cp $5
	jr z, .asm_d0405
	cp $6
	jr z, .asm_d041a
	pop af
	ret

.asm_d0405
	pop af
	cp $19
	jr nc, .asm_d0417
	push hl
	push de
	ld hl, $442f
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	pop de
	pop hl
	ret

.asm_d0417
	add $18
	ret

.asm_d041a
	pop af
	cp $24
	jr nc, .asm_d042c
	push hl
	push de
	ld hl, $4448
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	pop de
	pop hl
	ret

.asm_d042c
	add $d
	ret
; d042f

INCBIN "baserom.gbc",$d042f,$d046c - $d042f

Functiond046c: ; d046c
	ld hl, $d16f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$d171]
	ld de, $0000
	ld bc, $0006
	cp $7
	jr z, .asm_d048f
	ld de, $0015
	ld bc, $0019
	cp $6
	jr z, .asm_d048f
	ld de, $0029
	ld bc, $002d

.asm_d048f
	ld a, [$c2c6]
	and a
	jr nz, .asm_d0497
	add hl, de
	ret

.asm_d0497
	add hl, bc
	ret
; d0499

Functiond0499: ; d0499
	ld a, [$d186]
	inc a
	ld [$d186], a
	ld c, a
	ld a, [$d171]
	cp c
	jr nz, .asm_d04bb
	xor a
	ld [$d186], a
	ld a, [$d185]
	inc a
	ld [$d185], a
	ld c, a
	ld a, [$d171]
	cp c
	jr nz, .asm_d04bb
	scf
	ret

.asm_d04bb
	xor a
	ret
; d04bd

Functiond04bd: ; d04bd
	call Functiond04f6
	ld a, [$c2c6]
	and a
	jr nz, .asm_d04ce
	ld de, $0001
	ld bc, $0000
	jr .asm_d04d4

.asm_d04ce
	ld de, rIE
	ld bc, $0006

.asm_d04d4
	ld hl, $d16f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	add hl, bc
	ld c, $7
	ld b, $7
	ld a, [$d16e]
.asm_d04e2
	push bc
	push hl
	push de
	ld de, $0014
.asm_d04e8
	ld [hl], a
	inc a
	add hl, de
	dec b
	jr nz, .asm_d04e8
	pop de
	pop hl
	add hl, de
	pop bc
	dec c
	jr nz, .asm_d04e2
	ret
; d04f6

Functiond04f6: ; d04f6
	ld hl, $d16f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld b, $7
	ld c, $7
	call ClearBox
	ret
; d0504

Functiond0504: ; d0504
	ld a, [rSVBK]
	push af
	ld a, $2
	ld [rSVBK], a
	xor a
	ld [hBGMapMode], a
	call Functiond051b
	callba Function104047
	pop af
	ld [rSVBK], a
	ret
; d051b

Functiond051b: ; d051b
	call Functiond0551
	ld b, $7
	ld c, $7
	ld de, $0014
.asm_d0525
	push bc
	push hl
.asm_d0527
	ld a, [hl]
	or $8
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_d0527
	pop hl
	inc hl
	pop bc
	dec b
	jr nz, .asm_d0525
	ret
; d0536

Functiond0536: ; d0536
	call Functiond0551
	ld b, $7
	ld c, $7
	ld de, $0014
.asm_d0540
	push bc
	push hl
.asm_d0542
	ld a, [hl]
	and $f7
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_d0542
	pop hl
	inc hl
	pop bc
	dec b
	jr nz, .asm_d0540
	ret
; d0551

Functiond0551: ; d0551
	ld hl, $d16f
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, $0939
	add hl, de
	ret
; d055c

Functiond055c: ; d055c
	call Functiond02f2
	jr z, .asm_d0597
	ld c, $34
	ld hl, UnownAnimationPointers
	ld de, UnownAnimationExtraPointers
	call Functiond02ec
	jr z, .asm_d0576
	ld c, $34
	ld hl, AnimationPointers
	ld de, AnimationExtraPointers

.asm_d0576
	ld a, [$d172]
	and a
	jr z, .asm_d057e
	ld h, d
	ld l, e

.asm_d057e
	ld a, [$d16d]
	dec a
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, c
	ld [$d174], a
	call GetFarHalfword
	ld a, l
	ld [$d175], a
	ld a, h
	ld [$d176], a
	ret

.asm_d0597
	ld hl, EggAnimation
	ld c, $34
	ld a, [$d172]
	and a
	jr z, .asm_d05a7
	ld hl, EggAnimationExtra
	ld c, $34

.asm_d05a7
	ld a, c
	ld [$d174], a
	ld a, l
	ld [$d175], a
	ld a, h
	ld [$d176], a
	ret
; d05b4

Functiond05b4: ; d05b4
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	ld a, [CurPartySpecies]
	ld [CurSpecies], a
	call GetBaseData
	ld a, [BasePicSize]
	and $f
	ld c, a
	pop af
	ld [rSVBK], a
	ret
; d05ce

Functiond05ce: ; d05ce
	call Functiond02f2
	jr z, .asm_d0609
	call Functiond02ec
	ld b, $36
	ld c, $36
	ld hl, PikachuAnimationExtra
	jr z, .asm_d05ef
	ld a, [$d16b]
	cp $98
	ld b, $35
	ld c, $35
	ld hl, $4000
	jr c, .asm_d05ef
	ld c, $36

.asm_d05ef
	ld a, c
	ld [$d177], a
	ld a, [$d16d]
	dec a
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, b
	call GetFarHalfword
	ld a, l
	ld [$d178], a
	ld a, h
	ld [$d179], a
	ret

.asm_d0609
	ld hl, $598b
	ld c, $36
	ld a, c
	ld [$d177], a
	ld a, l
	ld [$d178], a
	ld a, h
	ld [$d179], a
	ret
; d061b

Functiond061b: ; d061b
	call Functiond02f2
	jr z, .asm_d064a
	call Functiond02ec
	ld a, $34
	ld hl, UnownBitmasksPointers
	jr z, .asm_d062f
	ld a, $34
	ld hl, BitmasksPointers

.asm_d062f
	ld [$d17a], a
	ld a, [$d16d]
	dec a
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [$d17a]
	call GetFarHalfword
	ld a, l
	ld [$d17b], a
	ld a, h
	ld [$d17c], a
	ret

.asm_d064a
	ld c, $34
	ld hl, EggBitmasks
	ld a, c
	ld [$d17a], a
	ld a, l
	ld [$d17b], a
	ld a, h
	ld [$d17c], a
	ret
; d065c

Functiond065c: ; d065c
	call Functiond02ec
	jr z, .asm_d0665
	ld a, [$d16b]
	ret

.asm_d0665
	ld a, [$d16c]
	ret
; d0669

Functiond0669: ; d0669
	ld a, $1
	ld [$c2c6], a

Functiond066e: ; d066e
	call Functiond01c6
	jr c, .asm_d068c
	ld h, d
	ld l, e
	push bc
	push hl
	ld de, VTiles2
	ld a, $3e
	call Predef
	pop hl
	pop bc
	ld d, $0
	ld e, c
	call Functiond008e
	xor a
	ld [$c2c6], a
	ret

.asm_d068c
	xor a
	ld [$c2c6], a
	inc a
	ld [CurPartySpecies], a
	ret
; d0695

; Pic animations are assembled in 3 parts:

; Top-level animations:
; 	frame #, duration: Frame 0 is the original pic (no change)
;	setrepeat #:       Sets the number of times to repeat
; 	dorepeat #:        Repeats from command # (starting from 0)
; 	end

; Bitmasks:
;	Layered over the pic to designate affected tiles

; Frame definitions:
;	first byte is the bitmask used for this frame
;	following bytes are tile ids mapped to each bit in the mask

; Main animations (played everywhere)
AnimationPointers: INCLUDE "gfx/pics/anim_pointers.asm"
INCLUDE "gfx/pics/anims.asm"

; Extra animations, appended to the main animation
; Used in the status screen (blinking, tail wags etc.)
AnimationExtraPointers: INCLUDE "gfx/pics/extra_pointers.asm"
INCLUDE "gfx/pics/extras.asm"

; Unown has its own animation data despite having an entry in the main tables
UnownAnimationPointers: INCLUDE "gfx/pics/unown_anim_pointers.asm"
INCLUDE "gfx/pics/unown_anims.asm"
UnownAnimationExtraPointers: INCLUDE "gfx/pics/unown_extra_pointers.asm"
INCLUDE "gfx/pics/unown_extras.asm"

; Bitmasks
BitmasksPointers: INCLUDE "gfx/pics/bitmask_pointers.asm"
INCLUDE "gfx/pics/bitmasks.asm"
UnownBitmasksPointers: INCLUDE "gfx/pics/unown_bitmask_pointers.asm"
INCLUDE "gfx/pics/unown_bitmasks.asm"


;                       Pic animations II

SECTION "bank35", ROMX, BANK[$35]

; Frame definitions
FramesPointers: INCLUDE "gfx/pics/frame_pointers.asm"
; Inexplicably, Kanto frames are split off from Johto
INCLUDE "gfx/pics/kanto_frames.asm"


;                       Pic animations III

SECTION "bank36", ROMX, BANK[$36]

FontInversed: INCBIN "gfx/misc/font_inversed.1bpp"

; Johto frame definitions
INCLUDE "gfx/pics/johto_frames.asm"

; Unown frame definitions
UnownFramesPointers: INCLUDE "gfx/pics/unown_frame_pointers.asm"
INCLUDE "gfx/pics/unown_frames.asm"


SECTION "bank37", ROMX, BANK[$37]

INCLUDE "tilesets/data_6.asm"


SECTION "bank38", ROMX, BANK[$38]

Functione0000: ; e0000
	push de
	xor a
	call GetSRAMBank
	ld hl, $a000
	ld bc, $0000
.asm_e000b
	push bc
	push hl
	push bc
	ld de, DefaultFlypoint
	call Functione004e
	call Functione0057
	ld hl, $408b
	pop bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld e, a
	ld d, [hl]
	ld hl, $d012
	call Functione004e
	pop hl
	ld bc, $0010
	add hl, bc
	pop bc
	inc c
	ld a, c
	cp $31
	jr c, .asm_e000b
	ld hl, OverworldMap
	ld de, $a000
	ld bc, $0310
	call CopyBytes
	pop hl
	ld de, $a000
	ld c, $31
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	call CloseSRAM
	ret
; e004e

Functione004e: ; e004e
	ld c, $10
.asm_e0050
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_e0050
	ret
; e0057

Functione0057: ; e0057
	ld hl, $d012
	ld e, $80
	ld d, $8
.asm_e005e
	push hl
	ld hl, DefaultFlypoint
	call Functione0078
	pop hl
	ld a, b
	ld [hli], a
	push hl
	ld hl, $d003
	call Functione0078
	pop hl
	ld a, b
	ld [hli], a
	srl e
	dec d
	jr nz, .asm_e005e
	ret
; e0078

Functione0078: ; e0078
	ld b, $0
	ld c, $8
.asm_e007c
	ld a, [hli]
	and e
	jr z, .asm_e0083
	scf
	jr .asm_e0084

.asm_e0083
	and a

.asm_e0084
	rr b
	inc hl
	dec c
	jr nz, .asm_e007c
	ret
; e008b

INCBIN "baserom.gbc",$e008b,$e00ed - $e008b

; no known jump sources
Functione00ed: ; e00ed (38:40ed)
	ret
; e00ee (38:40ee)

Functione00ee: ; e00ee (38:40ee)
	ld hl, Options ; $cfcc
	set 4, [hl]
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	ld de, $0
	call PlayMusic
	call DelayFrame
	call DisableLCD
	call Functione51
	call Functione5f
	ld hl, $4d16
	ld de, $9000
	call Decompress
	ld hl, $4ea8
	ld de, $93e0
	call Decompress
	ld hl, $4cdb
	ld de, $8000
	call Decompress
	ld hl, $4cf6
	ld de, $8ef0
	ld bc, $10
	call CopyBytes
	ld hl, $4d06
	ld de, $8f50
	ld bc, $10
	call CopyBytes
	call Functione0521
	call Functione04c1
	call Functione0c37
	call EnableLCD
	call Function3200
	ld a, $e4
	call DmgToCgbBGPals
	ld de, $e4e4
	call DmgToCgbObjPals
	call DelayFrame
	xor a
	ld [$cf63], a
	ld a, $2
	ld [$cf64], a
	ld [$cf65], a
	ld de, $12
	call PlayMusic
.asm_e0170
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e017c
	call Functione0191
	jr .asm_e0170
.asm_e017c
	call WaitSFX
	ld de, $9d
	call PlaySFX
	call WaitSFX
	call WhiteBGMap
	ld hl, Options ; $cfcc
	res 4, [hl]
	ret

; known jump sources: e0177 (38:4177)
Functione0191: ; e0191 (38:4191)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $41a0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e01a0 (38:41a0)

Tablee01a0: ; e01a0
	dw Functione01b5
	dw Functione01d2
	dw Functione0217
	dw Functione02b7
	dw Functione02da
	dw Functione0314
	dw Functione031e
	dw Functione0360
; e01b0

Functione01b0: ; e01b0
	ld hl, $cf63
	inc [hl]
	ret
; e01b5

Functione01b5: ; e01b5
	ld hl, UnknownText_0xe01cd
	call Functione0489
	call Function1dcf
	jr c, .asm_e01c7
	call Functione0366
	call Functione01b0
	ret

.asm_e01c7
	ld a, $7
	ld [$cf63], a
	ret
; e01cd

UnknownText_0xe01cd: ; 0xe01cd
	; Play with three coins?
	text_jump UnknownText_0x1c5793, BANK(UnknownText_0x1c5793)
	db "@"
; 0xe01d2

Functione01d2: ; e01d2
	ld a, [Coins]
	ld h, a
	ld a, [Coins + 1]
	ld l, a
	ld a, h
	and a
	jr nz, .asm_e01ef
	ld a, l
	cp 3
	jr nc, .asm_e01ef
	ld hl, UnknownText_0xe0212
	call Functione0489
	ld a, $7
	ld [$cf63], a
	ret

.asm_e01ef
	ld de, -3
	add hl, de
	ld a, h
	ld [Coins], a
	ld a, l
	ld [$d856], a
	ld de, SFX_TRANSACTION
	call PlaySFX
	xor a
	ld [hBGMapMode], a
	call Functione049c
	ld a, $1
	ld [hBGMapMode], a
	call WaitSFX
	call Functione01b0
	ret
; e0212

UnknownText_0xe0212: ; 0xe0212
	; Not enough coins…
	text_jump UnknownText_0x1c57ab, BANK(UnknownText_0x1c57ab)
	db "@"
; 0xe0217

Functione0217: ; e0217
	xor a
	ld [hBGMapMode], a
	ld hl, TileMap
	ld bc, $0c09
	call Functione04e5
	ld hl, $c4a9
	ld bc, $0014
	ld a, [$c6e8]
	call AddNTimes
	ld [hl], $f5
	ld a, $1
	ld [hBGMapMode], a
	ld c, $14
	call DelayFrames
	ld hl, $c4a2
	call Functione03c1
	ld a, $1
	ld [hBGMapMode], a
	ld c, $14
	call DelayFrames
	ld hl, $c51a
	call Functione03c1
	call WaitBGMap
	ld hl, UnknownText_0xe02b2
	call Functione0489
	xor a
	ld [$cf66], a
.asm_e025c
	call Functiona57
	ld a, [$ffa9]
	and $1
	jr nz, .asm_e027c
	ld de, $002f
	call PlaySFX
	call Functione0849
	ld c, $4
	call DelayFrames
	ld hl, $cf66
	ld a, [hl]
	xor $1
	ld [hl], a
	jr .asm_e025c

.asm_e027c
	ld de, $002c
	call PlaySFX
	ld a, $3
.asm_e0284
	push af
	call Functione0849
	ld c, $4
	call DelayFrames
	call ClearSprites
	ld c, $4
	call DelayFrames
	pop af
	dec a
	jr nz, .asm_e0284
	ld hl, $cf66
	ld a, [hl]
	push af
	xor $1
	ld [hl], a
	call Functione03ac
	ld bc, $0605
	call Functione04e5
	pop af
	ld [$cf66], a
	call Functione01b0
	ret
; e02b2

UnknownText_0xe02b2: ; 0xe02b2
	; Choose a card.
	text_jump UnknownText_0x1c57be, BANK(UnknownText_0x1c57be)
	db "@"
; 0xe02b7

Functione02b7: ; e02b7
	ld hl, UnknownText_0xe02d5
	call Functione0489
.asm_e02bd
	call Functiona57
	ld a, [$ffa9]
	and $1
	jr nz, .asm_e02d1
	call Functione089c
	call Functione0960
	call DelayFrame
	jr .asm_e02bd

.asm_e02d1
	call Functione01b0
	ret
; e02d5

UnknownText_0xe02d5: ; 0xe02d5
	; Place your bet.
	text_jump UnknownText_0x1c57ce, BANK(UnknownText_0x1c57ce)
	db "@"
; 0xe02da

Functione02da: ; e02da
	xor a
	ld [$ff9b], a
	call Functione0960
	call WaitSFX
	ld de, $009a
	call PlaySFX
	call WaitSFX
	ld a, [$c6e8]
	ld e, a
	ld d, $0
	ld hl, PlayerSDefLevel
	add hl, de
	add hl, de
	ld a, [$cf66]
	ld e, a
	add hl, de
	ld a, [hl]
	ld [CurEnemyMoveNum], a
	ld e, a
	ld hl, $c6ea
	add hl, de
	ld [hl], $1
	call Functione03ac
	call Functione03ec
	call Function3200
	call Functione01b0
	ret
; e0314

Functione0314: ; e0314
	call Functione0637
	call Functiona80
	call Functione01b0
	ret
; e031e

Functione031e: ; e031e
	call ClearSprites
	ld hl, UnknownText_0xe0356
	call Functione0489
	call Function1dcf
	jr nc, .asm_e0330
	call Functione01b0
	ret

.asm_e0330
	ld a, [$c6e8]
	inc a
	ld [$c6e8], a
	cp $c
	jr c, .asm_e034d
	call Functione04c1
	ld a, $1
	ld [hBGMapMode], a
	call Functione0366
	ld hl, $435b
	call PrintText
	jr .asm_e0350

.asm_e034d
	call Functione0534

.asm_e0350
	ld a, $1
	ld [$cf63], a
	ret
; e0356

UnknownText_0xe0356: ; 0xe0356
	; Want to play again?
	text_jump UnknownText_0x1c57df, BANK(UnknownText_0x1c57df)
	db "@"
; 0xe035b

INCBIN "baserom.gbc", $e035b, $e0360 - $e035b

Functione0360: ; e0360
	ld hl, $cf63
	set 7, [hl]
	ret
; e0366

Functione0366: ; e0366
	ld hl, PlayerSDefLevel
	ld bc, $0018
	xor a
	call ByteFill
	ld de, PlayerSDefLevel
	ld c, $17
.asm_e0375
	call Random
	and $1f
	cp $18
	jr nc, .asm_e0375
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hl]
	and a
	jr nz, .asm_e0375
	ld [hl], c
	dec c
	jr nz, .asm_e0375
	xor a
	ld [$c6e8], a
	ld hl, $c6ea
	ld bc, $0018
	call ByteFill
	ret
; e0398

Functione0398: ; e0398
	ld hl, $0000
	ld bc, $0006
	ld a, [$cf64]
	call AddNTimes
	ld b, $0
	ld a, [$cf65]
	ld c, a
	add hl, bc
	ret
; e03ac

Functione03ac: ; e03ac
	ld a, [$cf66]
	and a
	jr nz, .asm_e03ba
	ld hl, $c4a2
	ld bc, $1018
	jr .asm_e03c0

.asm_e03ba
	ld hl, $c51a
	ld bc, $4018

.asm_e03c0
	ret
; e03c1

Functione03c1: ; e03c1
	xor a
	ld [hBGMapMode], a
	ld de, $43ce
	ld bc, $0605
	call Functione04f7
	ret
; e03ce

INCBIN "baserom.gbc", $e03ce, $e03ec - $e03ce

Functione03ec: ; e03ec
	xor a
	ld [hBGMapMode], a
	push hl
	push hl
	ld de, $443b
	ld bc, $0605
	call Functione04f7
	ld a, [CurEnemyMoveNum]
	ld e, a
	ld d, $0
	ld hl, $4459
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	pop hl
	ld bc, $0017
	add hl, bc
	ld [hl], e
	ld bc, $0012
	add hl, bc
	ld a, d
	ld de, $0014
	ld b, $3
.asm_e0418
	push hl
	ld c, $3
.asm_e041b
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_e041b
	pop hl
	add hl, de
	dec b
	jr nz, .asm_e0418
	pop hl
	ld a, [hCGB]
	and a
	ret z
	ld de, $0939
	add hl, de
	ld a, [CurEnemyMoveNum]
	and $3
	inc a
	ld bc, $0605
	call Functione04e7
	ret
; e043b

INCBIN "baserom.gbc", $e043b, $e0489 - $e043b

Functione0489: ; e0489
	push hl
	ld hl, $c590
	ld b, $4
	ld c, $12
	call TextBox
	pop hl
	call PrintTextBoxText
	call Functione049c
	ret
; e049c

Functione049c: ; e049c
	ld hl, $c5d5
	ld b, $1
	ld c, $9
	call TextBox
	ld hl, $c5ea
	ld de, $44bc
	call PlaceString
	ld hl, $c5ef
	ld de, Coins
	ld bc, $8204
	call PrintNum
	ret
; e04bc

INCBIN "baserom.gbc", $e04bc, $e04c1 - $e04bc

; known jump sources: e0144 (38:4144)
Functione04c1: ; e04c1 (38:44c1)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $29
	call ByteFill
	ld hl, $c4a9
	ld de, $510c
	ld bc, $c0b
	call Functione04f7
	ld hl, $c590
	ld bc, $412
	call TextBox
	ret
; e04e5 (38:44e5)

Functione04e5: ; e04e5
	ld a, $29

; known jump sources: e04f4 (38:44f4), e0c4d (38:4c4d), e0c58 (38:4c58), e0c63 (38:4c63), e0c6e (38:4c6e), e0c79 (38:4c79)
Functione04e7: ; e04e7 (38:44e7)
	push bc
	push hl
.asm_e04e9
	ld [hli], a
	dec c
	jr nz, .asm_e04e9
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, Functione04e7
	ret

; known jump sources: e04d8 (38:44d8), e0506 (38:4506)
Functione04f7: ; e04f7 (38:44f7)
	push bc
	push hl
.asm_e04f9
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_e04f9
	pop hl
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, Functione04f7
	ret
; e0509 (38:4509)

Functione0509: ; e0509
	ld de, Sprites
	ld a, [hli]
.asm_e050d
	push af
	ld a, [hli]
	add b
	ld [de], a
	inc de
	ld a, [hli]
	add c
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	pop af
	dec a
	jr nz, .asm_e050d
	ret
; e0521

; known jump sources: e0141 (38:4141)
Functione0521: ; e0521 (38:4521)
	ld de, $8f60
	ld hl, $8f62
	ld bc, $9e
	call CopyBytes
	ld hl, $8ffe
	xor a
	ld [hli], a
	ld [hl], a
	ret
; e0534 (38:4534)

Functione0534: ; e0534
	xor a
	ld [hBGMapMode], a
	ld a, [CurEnemyMoveNum]
	ld e, a
	ld d, $0
	and $3
	ld c, a
	ld b, $0
	ld a, e
	and $1c
	srl a
	add $53
	ld l, a
	ld a, $0
	adc $45
	ld h, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e0553

INCBIN "baserom.gbc", $e0553, $e0637 - $e0553

Functione0637: ; e0637
	call Functione0398
	add hl, hl
	ld de, $4643
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e0643

INCBIN "baserom.gbc", $e0643, $e0849 - $e0643

Functione0849: ; e0849
	call Functione03ac
	ld hl, $4853
	call Functione0509
	ret
; e0853

INCBIN "baserom.gbc", $e0853, $e089c - $e0853

Functione089c: ; e089c
	ld hl, $ffa9
	ld a, [hl]
	and $20
	jp nz, Functione08b8
	ld a, [hl]
	and $10
	jp nz, Functione08ef
	ld a, [hl]
	and $40
	jp nz, Functione090a
	ld a, [hl]
	and $80
	jp nz, Functione093d
	ret
; e08b8

Functione08b8: ; e08b8
	ld hl, $cf65
	ld a, [$cf64]
	and a
	jr z, .asm_e08d5
	cp $1
	jr z, .asm_e08cc
	ld a, [hl]
	and a
	ret z
	dec [hl]
	jp Functione0959

.asm_e08cc
	ld a, [hl]
	cp $3
	jr c, .asm_e08e2
	dec [hl]
	jp Functione0959

.asm_e08d5
	ld a, [hl]
	and $e
	ld [hl], a
	cp $3
	jr c, .asm_e08e2
	dec [hl]
	dec [hl]
	jp Functione0959

.asm_e08e2
	ld a, $2
	ld [$cf64], a
	ld a, $1
	ld [$cf65], a
	jp Functione0959
; e08ef

Functione08ef: ; e08ef
	ld hl, $cf65
	ld a, [$cf64]
	and a
	jr z, .asm_e08ff
	ld a, [hl]
	cp $5
	ret nc
	inc [hl]
	jr Functione0959

.asm_e08ff
	ld a, [hl]
	and $e
	ld [hl], a
	cp $4
	ret nc
	inc [hl]
	inc [hl]
	jr Functione0959

Functione090a: ; e090a
	ld hl, $cf64
	ld a, [$cf65]
	and a
	jr z, .asm_e0925
	cp $1
	jr z, .asm_e091d
	ld a, [hl]
	and a
	ret z
	dec [hl]
	jr Functione0959

.asm_e091d
	ld a, [hl]
	cp $3
	jr c, .asm_e0931
	dec [hl]
	jr Functione0959

.asm_e0925
	ld a, [hl]
	and $e
	ld [hl], a
	cp $3
	jr c, .asm_e0931
	dec [hl]
	dec [hl]
	jr Functione0959

.asm_e0931
	ld a, $1
	ld [$cf64], a
	ld a, $2
	ld [$cf65], a
	jr Functione0959

Functione093d: ; e093d
	ld hl, $cf64
	ld a, [$cf65]
	and a
	jr z, .asm_e0950
	ld hl, $cf64
	ld a, [hl]
	cp $7
	ret nc
	inc [hl]
	jr Functione0959

.asm_e0950
	ld a, [hl]
	and $e
	ld [hl], a
	cp $6
	ret nc
	inc [hl]
	inc [hl]

Functione0959: ; e0959
	ld de, $0003
	call PlaySFX
	ret
; e0960

Functione0960: ; e0960
	call ClearSprites
	ld a, [hCGB]
	and a
	jr nz, .asm_e096d
	ld a, [$ff9b]
	and $4
	ret nz

.asm_e096d
	call Functione0398
	add hl, hl
	add hl, hl
	ld de, $4981
	add hl, de
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Functione0509
	ret
; e0981

INCBIN "baserom.gbc", $e0981, $e0c37 - $e0981

; known jump sources: e0147 (38:4147)
Functione0c37: ; e0c37 (38:4c37)
	ld a, [hCGB] ; $ff00+$e6
	and a
	ret z
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	xor a
	call ByteFill
	ld hl, $cdf9
	ld bc, $202
	ld a, $1
	call Functione04e7
	ld hl, $cdfb
	ld bc, $202
	ld a, $2
	call Functione04e7
	ld hl, $cdfd
	ld bc, $202
	ld a, $3
	call Functione04e7
	ld hl, $cdff
	ld bc, $202
	ld a, $4
	call Functione04e7
	ld hl, $cde2
	ld bc, $c01
	ld a, $1
	call Functione04e7
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $4c93
	ld de, Unkn1Pals ; $d000
	ld bc, $48
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; e0c93 (38:4c93)

INCBIN "baserom.gbc",$e0c93,$e1190 - $e0c93

Functione1190: ; e1190
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	xor a
	ld [hBGMapMode], a
	call DisableLCD
	ld hl, EnemyMoveAnimation
	ld bc, $01e0
	xor a
	call ByteFill
	ld hl, $57c5
	ld de, $8e00
	ld bc, $0040
	call CopyBytes
	ld hl, $5805
	ld de, $8ed0
	call Decompress
	call Functione17a3
	ld hl, TileMap
	ld bc, $0168
	ld a, $ee
	call ByteFill
	ld hl, $c4e0
	ld bc, $0c0c
	ld a, $ef
	call Functione13ee
	call Functione124e
	call Functione13fe
	call Functione127d
	xor a
	ld [hSCY], a
	ld [hSCX], a
	ld [rWY], a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld a, $93
	ld [rLCDC], a
	call WaitBGMap
	ld b, $18
	call GetSGBLayout
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $24
	call Functioncf8
	xor a
	ld [$d0ec], a
	call DelayFrame
.asm_e1217
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e123d
	call Functione12ca
	ld a, [$cf64]
	and a
	jr nz, .asm_e1230
	ld a, [$ff9b]
	and $10
	jr z, .asm_e1235

.asm_e1230
	call Functione14d9
	jr .asm_e1238

.asm_e1235
	call ClearSprites

.asm_e1238
	call DelayFrame
	jr .asm_e1217

.asm_e123d
	pop af
	ld [$ffaa], a
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	ld a, $e3
	ld [rLCDC], a
	ret
; e124e

Functione124e: ; e124e
	ld c, $1
	ld b, $10
.asm_e1252
	call Random
	and $f
	ld hl, $526d
	ld e, a
	ld d, $0
	add hl, de
	ld e, [hl]
	ld hl, PlayerSDefLevel
	add hl, de
	ld a, [hl]
	and a
	jr nz, .asm_e1252
	ld [hl], c
	inc c
	dec b
	jr nz, .asm_e1252
	ret
; e126d

INCBIN "baserom.gbc",$e126d,$e127d - $e126d

Functione127d: ; e127d
	call Functione128d
	ld hl, $c5e5
	ld a, $f6
	ld c, $a
.asm_e1287
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_e1287
	ret
; e128d

Functione128d: ; e128d
	ld hl, $c5d0
	ld a, $f0
	ld [hli], a
	ld bc, $000a
	ld a, $f1
	call ByteFill
	ld hl, $c5db
	ld a, $f2
	ld [hli], a
	ld hl, $c5e4
	ld a, $f3
	ld [hli], a
	ld bc, $000a
	ld a, $ef
	call ByteFill
	ld hl, $c5ef
	ld a, $f3
	ld [hli], a
	ld hl, $c5f8
	ld a, $f4
	ld [hli], a
	ld bc, $000a
	ld a, $f1
	call ByteFill
	ld hl, $c603
	ld a, $f5
	ld [hl], a
	ret
; e12ca

Functione12ca: ; e12ca
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $52d9
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e12d9

INCBIN "baserom.gbc",$e12d9,$e13ee - $e12d9

Functione13ee: ; e13ee
	ld de, $0014
.asm_e13f1
	push bc
	push hl
.asm_e13f3
	ld [hli], a
	dec c
	jr nz, .asm_e13f3
	pop hl
	add hl, de
	pop bc
	dec b
	jr nz, .asm_e13f1
	ret
; e13fe

Functione13fe: ; e13fe
	xor a
	ld [$cf65], a
	ld c, $24
.asm_e1404
	push bc
	call Functione1475
	ld [$cf66], a
	and a
	jr z, .asm_e1413
	call Functione141f
	jr .asm_e1416

.asm_e1413
	call Functione1441

.asm_e1416
	ld hl, $cf65
	inc [hl]
	pop bc
	dec c
	jr nz, .asm_e1404
	ret
; e141f

Functione141f: ; e141f
	ld a, $2
	call Functione1463
	ld a, [hli]
	ld h, [hl]
	ld l, a
	push hl
	call Functione1481
	pop hl
	ld de, $0014
	ld b, $3
.asm_e1431
	ld c, $3
	push hl
.asm_e1434
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_e1434
	add $9
	pop hl
	add hl, de
	dec b
	jr nz, .asm_e1431
	ret
; e1441

Functione1441: ; e1441
	ld a, $2
	call Functione1463
	ld a, [hli]
	ld h, [hl]
	ld l, a
	push hl
	ld a, $4
	call Functione1463
	ld a, [hl]
	pop hl
	ld de, $0014
	ld b, $3
.asm_e1456
	ld c, $3
	push hl
.asm_e1459
	ld [hli], a
	dec c
	jr nz, .asm_e1459
	pop hl
	add hl, de
	dec b
	jr nz, .asm_e1456
	ret
; e1463

Functione1463: ; e1463
	ld e, a
	ld d, $0
	ld hl, $5559
	add hl, de
	ld a, [$cf65]
	ld e, a
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	add hl, de
	ret
; e1475

Functione1475: ; e1475
	ld hl, PlayerSDefLevel
	ld a, [$cf65]
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	ret
; e1481

Functione1481: ; e1481
	ld a, [$cf66]
	ld hl, $548f
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	ld a, [hl]
	ret
; e148f

INCBIN "baserom.gbc",$e148f,$e14d9 - $e148f

Functione14d9: ; e14d9
	call Functione1481
	ld [DefaultFlypoint], a
	xor a
	call Functione1463
	ld a, [hli]
	ld b, [hl]
	ld c, a
	ld a, [DefaultFlypoint]
	cp $e0
	jr z, .asm_e14f2
	ld hl, $550f
	jr .asm_e14f5

.asm_e14f2
	ld hl, $5534

.asm_e14f5
	ld de, Sprites
.asm_e14f8
	ld a, [hli]
	cp $ff
	ret z
	add b
	ld [de], a
	inc de
	ld a, [hli]
	add c
	ld [de], a
	inc de
	ld a, [DefaultFlypoint]
	add [hl]
	ld [de], a
	inc hl
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	jr .asm_e14f8
; e150f

INCBIN "baserom.gbc",$e150f,$e1631 - $e150f

Functione1631: ; e1631
	ld hl, VTiles2
	ld de, VTiles0
	ld b, $6
.asm_e1639
	push bc
	push hl
	push hl
	call Functione1654
	pop hl
	ld bc, $0008
	add hl, bc
	call Functione1654
	pop hl
	ld bc, $0060
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_e1639
	call Functione16c7
	ret
; e1654

Functione1654: ; e1654
	ld c, $6
.asm_e1656
	push bc
	push hl
	push hl
	ld c, $4
.asm_e165b
	push bc
	ld a, [hli]
	and $f0
	swap a
	call Functione16aa
	ld c, a
	ld a, [hli]
	and $f0
	swap a
	call Functione16aa
	ld b, a
	ld a, c
	ld [de], a
	inc de
	ld a, b
	ld [de], a
	inc de
	ld a, c
	ld [de], a
	inc de
	ld a, b
	ld [de], a
	inc de
	pop bc
	dec c
	jr nz, .asm_e165b
	pop hl
	ld c, $4
.asm_e1681
	push bc
	ld a, [hli]
	and $f
	call Functione16aa
	ld c, a
	ld a, [hli]
	and $f
	call Functione16aa
	ld b, a
	ld a, c
	ld [de], a
	inc de
	ld a, b
	ld [de], a
	inc de
	ld a, c
	ld [de], a
	inc de
	ld a, b
	ld [de], a
	inc de
	pop bc
	dec c
	jr nz, .asm_e1681
	pop hl
	ld bc, $0010
	add hl, bc
	pop bc
	dec c
	jr nz, .asm_e1656
	ret
; e16aa

Functione16aa: ; e16aa
	push hl
	ld hl, $56b7
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	ld a, [hl]
	pop hl
	ret
; e16b7

INCBIN "baserom.gbc",$e16b7,$e16c7 - $e16b7

Functione16c7: ; e16c7
	ld hl, $5703
	ld a, $8
.asm_e16cc
	push af
	push hl
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call Functione16e2
	pop hl
	inc hl
	inc hl
	inc hl
	inc hl
	pop af
	dec a
	jr nz, .asm_e16cc
	ret
; e16e2

Functione16e2: ; e16e2
	ld bc, $0404
.asm_e16e5
	push bc
.asm_e16e6
	push de
	push hl
	ld b, $10
.asm_e16ea
	ld a, [de]
	or [hl]
	ld [hli], a
	inc de
	dec b
	jr nz, .asm_e16ea
	pop hl
	ld de, $0030
	add hl, de
	pop de
	dec c
	jr nz, .asm_e16e6
	ld bc, $0180
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_e16e5
	ret
; e1703

INCBIN "baserom.gbc",$e1703,$e17a3 - $e1703

Functione17a3: ; e17a3
	ld a, [ScriptVar]
	and $3
	ld e, a
	ld d, $0
	ld hl, $57bd
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld de, VTiles2
	call Decompress
	call Functione1631
	ret
; e17bd

INCBIN "baserom.gbc",$e17bd,$e1e5b - $e17bd

; no known jump sources
Functione1e5b: ; e1e5b (38:5e5b)
	call Functione1e67
	call DelayFrame
.asm_e1e61
	call Functione1ebb
	jr nc, .asm_e1e61
	ret

; known jump sources: e1e5b (38:5e5b)
Functione1e67: ; e1e67 (38:5e67)
	call DisableLCD
	ld b, $8
	call GetSGBLayout
	ld hl, Function8cf53
	ld a, BANK(Function8cf53)
	rst $8 ;  ; indirect jump to Function8cf53 (8cf53 (23:4f53))
	ld hl, $6221
	ld de, $9000
	call Decompress
	ld hl, $40ed
	ld de, $8000
	ld bc, $40
	ld a, $38
	call FarCopyBytes
	ld a, $8
	ld hl, $c300
	ld [hli], a
	ld [hl], $0
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	xor a
	call ByteFill
	xor a
	ld [hSCY], a ; $ff00+$d0
	ld [hSCX], a ; $ff00+$cf
	ld [rWY], a ; $ff00+$4a
	ld [$cf63], a
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $e3
	ld [rLCDC], a ; $ff00+$40
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $e0
	call Functioncf8
	ret

; known jump sources: e1e61 (38:5e61)
Functione1ebb: ; e1ebb (38:5ebb)
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e1ed0
	call Functione1ed2
	ld hl, Function8cf69
	ld a, BANK(Function8cf69)
	rst $8 ;  ; indirect jump to Function8cf69 (8cf69 (23:4f69))
	call DelayFrame
	and a
	ret
.asm_e1ed0
	scf
	ret

; known jump sources: e1ec2 (38:5ec2)
Functione1ed2: ; e1ed2 (38:5ed2)
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $5ee1
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e1ee1 (38:5ee1)

INCBIN "baserom.gbc",$e1ee1,$e21a1 - $e1ee1

; no known jump sources
Functione21a1: ; e21a1 (38:61a1)
	ld a, [$cf63]
	cp $7
	jr nc, .asm_e21c8
	call Functiona57
	ld hl, hJoypadPressed ; $ffa3
	ld a, [hl]
	and $1
	jr nz, .asm_e21cf
	ld a, [hl]
	and $20
	jr nz, .asm_e21d9
	ld a, [hl]
	and $10
	jr nz, .asm_e21e9
	ld a, [hl]
	and $40
	jr nz, .asm_e21fa
	ld a, [hl]
	and $80
	jr nz, .asm_e220d
	ret
.asm_e21c8
	ld hl, $0
	add hl, bc
	ld [hl], $0
	ret
.asm_e21cf
	ld hl, $c
	add hl, bc
	ld a, [hl]
	inc a
	ld [$cf64], a
	ret
.asm_e21d9
	ld hl, $6
	add hl, bc
	ld a, [hl]
	and a
	ret z
	sub $10
	ld [hl], a
	ld hl, $c
	add hl, bc
	dec [hl]
	ret
.asm_e21e9
	ld hl, $6
	add hl, bc
	ld a, [hl]
	cp $80
	ret z
	add $10
	ld [hl], a
	ld hl, $c
	add hl, bc
	inc [hl]
	ret
.asm_e21fa
	ld hl, $7
	add hl, bc
	ld a, [hl]
	and a
	ret z
	sub $10
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld a, [hl]
	sub $9
	ld [hl], a
	ret
.asm_e220d
	ld hl, $7
	add hl, bc
	ld a, [hl]
	cp $40
	ret z
	add $10
	ld [hl], a
	ld hl, $c
	add hl, bc
	ld a, [hl]
	add $9
	ld [hl], a
	ret
; e2221 (38:6221)

INCBIN "baserom.gbc",$e2221,$e2391 - $e2221

; no known jump sources
Functione2391: ; e2391 (38:6391)
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	xor a
	ld [$FF00+$de], a
	call Functione2963
	xor a
	ld [$cb2e], a
	call DelayFrame
.asm_e23b4
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e23c6
	call Functione23d5
	call DelayFrame
	jr .asm_e23b4
.asm_e23c6
	call ClearSprites
	pop af
	ld [$FF00+$aa], a
	pop af
	ld [VramState], a ; $d0ed
	pop af
	ld [Options], a ; $cfcc
	ret

; known jump sources: e23be (38:63be)
Functione23d5: ; e23d5 (38:63d5)
	ld a, [$cf63]
	ld hl, $63df
	call Functione33df
	jp [hl]

; no known jump sources
Jumptable_e23df: ; e23df (38:63df)
	dw Functione23e9
	dw Functione241a
	dw Functione245d
	dw Functione247d
	dw Functione2992


; no known jump sources
Functione23e9: ; e23e9 (38:63e9)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Functione2d30
	call Functione2a8e
	ld de, $74dd
	call Functione2a6e
	ld a, $5
	ld [$cb2d], a
	call Functione2c2c
	call Functione2ac6
	ld a, $ff
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	call WaitBGMap
	call Functione2e01
	call Functione298d
	ret

; no known jump sources
Functione241a: ; e241a (38:641a)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_e2457
	ld a, [hl]
	and $1
	jr nz, .asm_e2443
	call Functione29b5
	and a
	ret z
	call Functione2e01
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functione2c2c
	call Functione2ac6
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	ret
.asm_e2443
	call Functione2def
	and a
	ret z
	cp $ff
	jr z, .asm_e2457
	ld a, $2
	ld [$cf63], a
	ret
; e2452 (38:6452)

INCBIN "baserom.gbc",$e2452,$e2457 - $e2452
.asm_e2457
	ld a, $4
	ld [$cf63], a
	ret

; no known jump sources
Functione245d: ; e245d (38:645d)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Functione2def
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	ld de, $74ea
	call Functione2a6e
	ld a, $1
	ld [$cfa9], a
	call Functione298d
	ret

; no known jump sources
Functione247d: ; e247d (38:647d)
	ld hl, $653d
	call Function1d3c
	ld a, [$cfa9]
	call Function1d4b
	call Function1d81
	jp c, Functione2537
	ld a, [$cfa9]
	dec a
	and $3
	ld e, a
	ld d, $0
	ld hl, $64a1
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_e24a1: ; e24a1 (38:64a1)
	dw Functione24a9
	dw Functione24c8
	dw Functione24e0
	dw Functione2537


; no known jump sources
Functione24a9: ; e24a9 (38:64a9)
	call Functione2f18
	jp c, Functione2537
	call Functione307c
	jr c, .asm_e24c1
	ld a, $0
	ld [$cf63], a
	xor a
	ld [$cb2b], a
	ld [$cb2a], a
	ret
.asm_e24c1
	ld de, $74ea
	call Functione2a6e
	ret

; no known jump sources
Functione24c8: ; e24c8 (38:64c8)
	call Function1d6e
	call Functione2f7e
	call Function1c07
	call Functione2ac6
	call Functione2def
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	ret

; no known jump sources
Functione24e0: ; e24e0 (38:64e0)
	call Functione2f18
	jr c, Functione2537
	call Functione2f5f
	jr c, Functione2537
	ld a, [$cfa9]
	push af
	ld de, $74f4
	call Functione2a6e
	call Function1d6e
	ld bc, $e0b
	call Function1dd2
	ld a, [$cfa9]
	dec a
	call Function1c07
	and a
	jr nz, .asm_e252c
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	xor a
	ld [$d10b], a
	callba Functione039
	call Functione3180
	ld a, $0
	ld [$cf63], a
	xor a
	ld [$cb2b], a
	ld [$cb2a], a
	pop af
	ret
.asm_e252c
	ld de, $74ea
	call Functione2a6e
	pop af
	ld [$cfa9], a
	ret

; known jump sources: e248c (38:648c), e24ac (38:64ac), e24e3 (38:64e3), e24e8 (38:64e8)
Functione2537: ; e2537 (38:6537)
	ld a, $0
	ld [$cf63], a
	ret
; e253d (38:653d)

INCBIN "baserom.gbc",$e253d,$e2583 - $e253d

; no known jump sources
Functione2583: ; e2583 (38:6583)
	ld hl, Options ; $cfcc
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [VramState] ; $d0ed
	push af
	xor a
	ld [VramState], a ; $d0ed
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	xor a
	ld [$FF00+$de], a
	call Functione2963
	ld a, $f
	ld [$cb2e], a
	call DelayFrame
.asm_e25a7
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e25b9
	call Functione25c8
	call DelayFrame
	jr .asm_e25a7
.asm_e25b9
	call ClearSprites
	pop af
	ld [$FF00+$aa], a
	pop af
	ld [VramState], a ; $d0ed
	pop af
	ld [Options], a ; $cfcc
	ret

; known jump sources: e25b1 (38:65b1)
Functione25c8: ; e25c8 (38:65c8)
	ld a, [$cf63]
	ld hl, $65d2
	call Functione33df
	jp [hl]

; no known jump sources
Jumptable_e25d2: ; e25d2 (38:65d2)
	dw Functione25dc
	dw Functione2612
	dw Functione2655
	dw Functione2675
	dw Functione2992


; no known jump sources
Functione25dc: ; e25dc (38:65dc)
	ld a, $f
	ld [$cb2e], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Functione2d30
	call Functione2a8e
	ld de, $74dd
	call Functione2a6e
	ld a, $5
	ld [$cb2d], a
	call Functione2c2c
	call Functione2ac6
	ld a, $ff
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	call WaitBGMap
	call Functione2e01
	call Functione298d
	ret

; no known jump sources
Functione2612: ; e2612 (38:6612)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jr nz, .asm_e264f
	ld a, [hl]
	and $1
	jr nz, .asm_e263b
	call Functione29b5
	and a
	ret z
	call Functione2e01
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functione2c2c
	call Functione2ac6
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	ret
.asm_e263b
	call Functione2def
	and a
	ret z
	cp $ff
	jr z, .asm_e264f
	ld a, $2
	ld [$cf63], a
	ret
; e264a (38:664a)

INCBIN "baserom.gbc",$e264a,$e264f - $e264a
.asm_e264f
	ld a, $4
	ld [$cf63], a
	ret

; no known jump sources
Functione2655: ; e2655 (38:6655)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Functione2def
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	ld de, $74ea
	call Functione2a6e
	ld a, $1
	ld [$cfa9], a
	call Functione298d
	ret

; no known jump sources
Functione2675: ; e2675 (38:6675)
	ld hl, $6731
	call Function1d3c
	ld a, [$cfa9]
	call Function1d4b
	call Function1d81
	jp c, Functione272b
	ld a, [$cfa9]
	dec a
	and $3
	ld e, a
	ld d, $0
	ld hl, $6699
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_e2699: ; e2699 (38:6699)
	dw Functione26a1
	dw Functione26c0
	dw Functione26d8
	dw Functione272b


; no known jump sources
Functione26a1: ; e26a1 (38:66a1)
	call Functione2f18
	jp c, Functione272b
	call Functione30fa
	jr c, .asm_e26b9
	ld a, $0
	ld [$cf63], a
	xor a
	ld [$cb2b], a
	ld [$cb2a], a
	ret
.asm_e26b9
	ld de, $74ea
	call Functione2a6e
	ret

; no known jump sources
Functione26c0: ; e26c0 (38:66c0)
	call Function1d6e
	call Functione2f7e
	call Function1c07
	call Functione2ac6
	call Functione2def
	ld [CurPartySpecies], a ; $d108
	ld a, $17
	call Functione33d0
	ret

; no known jump sources
Functione26d8: ; e26d8 (38:66d8)
	ld a, [$cfa9]
	push af
	call Functione2f5f
	jr c, .asm_e2720
	ld de, $74f4
	call Functione2a6e
	call Function1d6e
	ld bc, $e0b
	call Function1dd2
	ld a, [$cfa9]
	dec a
	call Function1c07
	and a
	jr nz, .asm_e2720
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	ld a, $1
	ld [$d10b], a
	callba Functione039
	call Functione3180
	ld a, $0
	ld [$cf63], a
	xor a
	ld [$cb2b], a
	ld [$cb2a], a
	pop af
	ret
.asm_e2720
	ld de, $74ea
	call Functione2a6e
	pop af
	ld [$cfa9], a
	ret

; known jump sources: e2684 (38:6684), e26a4 (38:66a4)
Functione272b: ; e272b (38:672b)
	ld a, $0
	ld [$cf63], a
	ret
; e2731 (38:6731)

INCBIN "baserom.gbc",$e2731,$e2963 - $e2731

; known jump sources: e23aa (38:63aa), e259c (38:659c)
Functione2963: ; e2963 (38:6963)
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call Functione33e8
	ld hl, OverworldMap ; $c800
	ld bc, $338
	xor a
	call ByteFill
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld [$cb2b], a
	ld [$cb2a], a
	ret

; known jump sources: e2416 (38:6416), e2479 (38:6479), e260e (38:660e), e2671 (38:6671)
Functione298d: ; e298d (38:698d)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Functione2992: ; e2992 (38:6992)
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: e2faa (38:6faa)
Functione2998: ; e2998 (38:6998)
	ld a, [$cb2d]
	ld d, a
	ld a, [$cb2c]
	and a
	jr z, .asm_e29b2
	dec a
	cp $1
	jr z, .asm_e29b2
	ld e, a
	ld a, [hl]
	and $40
	jr nz, asm_e2a18
	ld a, [hl]
	and $80
	jr nz, asm_e2a2c
.asm_e29b2
	jp Functione2a65

; known jump sources: e2427 (38:6427), e261f (38:661f)
Functione29b5: ; e29b5 (38:69b5)
	ld hl, $ffa9
	ld a, [$cb2d]
	ld d, a
	ld a, [$cb2c]
	ld e, a
	and a
	jr z, .asm_e29cd
	ld a, [hl]
	and $40
	jr nz, asm_e2a18
	ld a, [hl]
	and $80
	jr nz, asm_e2a2c
.asm_e29cd
	jp Functione2a65
; e29d0 (38:69d0)

INCBIN "baserom.gbc",$e29d0,$e2a18 - $e29d0
asm_e2a18: ; e2a18 (38:6a18)
	ld hl, $cb2b
	ld a, [hl]
	and a
	jr z, .asm_e2a22
	dec [hl]
	jr asm_e2a68
.asm_e2a22
	ld hl, $cb2a
	ld a, [hl]
	and a
	jr z, Functione2a65
	dec [hl]
	jr asm_e2a68
asm_e2a2c: ; e2a2c (38:6a2c)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	inc a
	cp e
	jr nc, Functione2a65
	ld hl, $cb2b
	ld a, [hl]
	inc a
	cp d
	jr nc, .asm_e2a42
	inc [hl]
	jr asm_e2a68
.asm_e2a42
	ld hl, $cb2a
	inc [hl]
	jr asm_e2a68
; e2a48 (38:6a48)

INCBIN "baserom.gbc",$e2a48,$e2a65 - $e2a48

; known jump sources: e29b2 (38:69b2), e29cd (38:69cd), e2a27 (38:6a27), e2a35 (38:6a35)
Functione2a65: ; e2a65 (38:6a65)
	xor a
	and a
	ret

; known jump sources: e2a20 (38:6a20), e2a2a (38:6a2a), e2a40 (38:6a40), e2a46 (38:6a46)
asm_e2a68: ; e2a68 (38:6a68)
	ld a, $1
	and a
	ret
; e2a6c (38:6a6c)

INCBIN "baserom.gbc",$e2a6c,$e2a6e - $e2a6c

; known jump sources: e23f8 (38:63f8), e2471 (38:6471), e24c4 (38:64c4), e24f1 (38:64f1), e252f (38:652f), e25f0 (38:65f0), e2669 (38:6669), e26bc (38:66bc), e26e4 (38:66e4), e2723 (38:6723), e2f4c (38:6f4c), e2f6b (38:6f6b), e30e7 (38:70e7), e316d (38:716d)
Functione2a6e: ; e2a6e (38:6a6e)
	push de
	ld hl, $c5cc
	ld bc, $112
	call TextBox
	pop de
	ld hl, $c5e1
	call PlaceString
	ret
; e2a80 (38:6a80)

INCBIN "baserom.gbc",$e2a80,$e2a8e - $e2a80

; known jump sources: e23f2 (38:63f2), e25ea (38:65ea)
Functione2a8e: ; e2a8e (38:6a8e)
	ld hl, $c4a8
	ld bc, $10a
	call TextBox
	ld a, [$cb2e]
	and a
	jr z, .asm_e2ab3
	cp $f
	jr nz, .asm_e2aa5
	ld a, [$db72]
	inc a
.asm_e2aa5
	dec a
	ld hl, Box1Name ; $db75
	ld bc, $9
	call AddNTimes
	ld e, l
	ld d, h
	jr .asm_e2ab6
.asm_e2ab3
	ld de, $6abd
.asm_e2ab6
	ld hl, $c4be
	call PlaceString
	ret
; e2abd (38:6abd)

INCBIN "baserom.gbc",$e2abd,$e2ac6 - $e2abd

; known jump sources: e2403 (38:6403), e2435 (38:6435), e24d1 (38:64d1), e25fb (38:65fb), e262d (38:662d), e26c9 (38:66c9)
Functione2ac6: ; e2ac6 (38:6ac6)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $f08
	call ClearBox
	ld hl, $c5c0
	ld bc, $103
	call ClearBox
	call Functione2def
	and a
	ret z
	cp $ff
	ret z
	ld [$d265], a
	ld hl, $c4f1
	xor a
	ld b, $7
.asm_e2ae9
	ld c, $7
	push af
	push hl
.asm_e2aed
	ld [hli], a
	add $7
	dec c
	jr nz, .asm_e2aed
	pop hl
	ld de, $14
	add hl, de
	pop af
	inc a
	dec b
	jr nz, .asm_e2ae9
	call Functione2b6d
	ld a, [$d265]
	ld [CurPartySpecies], a ; $d108
	ld [CurSpecies], a ; $cf60
	ld hl, TempMonDVs ; $d123
	ld a, $2d
	call Predef
	call GetBaseData
	ld de, $9000
	ld a, $3c
	call Predef
	xor a
	ld [$cb32], a
	ld a, [CurPartySpecies] ; $d108
	ld [$d265], a
	cp $fd
	ret z
	call GetBasePokemonName
	ld hl, $c5b9
	call PlaceString
	ld hl, $c591
	call PrintLevel
	ld a, $3
	ld [MonType], a ; $cf5f
	callba GetGender
	jr c, .asm_e2b4f
	ld a, $ef
	jr nz, .asm_e2b4b
	ld a, $f5
.asm_e2b4b
	ld hl, $c595
	ld [hl], a
.asm_e2b4f
	ld a, [TempMonItem] ; $d10f
	and a
	ret z
	ld d, a
	callab ItemIsMail
	jr c, .asm_e2b61
	ld a, $5d
	jr .asm_e2b68
.asm_e2b61
	ld a, $1
	ld [$cb32], a
	ld a, $5c
.asm_e2b68
	ld hl, $c597
	ld [hl], a
	ret

; known jump sources: e2afd (38:6afd), e2fb6 (38:6fb6)
Functione2b6d: ; e2b6d (38:6b6d)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld e, a
	ld d, $0
	ld hl, $c801
	add hl, de
	add hl, de
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_e2bc6
	cp $f
	jr z, .asm_e2bf5
	ld b, a
	call Functione3396
	ld a, b
	call GetSRAMBank
	push hl
	ld bc, $35
	add hl, bc
	ld bc, $20
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonLevel], a ; $d12d
	pop hl
	push hl
	ld bc, $17
	add hl, bc
	ld bc, $20
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonItem], a ; $d10f
	pop hl
	ld bc, $2b
	add hl, bc
	ld bc, $20
	ld a, e
	call AddNTimes
	ld de, TempMonDVs ; $d123
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret
.asm_e2bc6
	ld hl, PartyMon1Level ; $dcfe
	ld bc, $30
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonLevel], a ; $d12d
	ld hl, PartyMon1Item ; $dce0
	ld bc, $30
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonItem], a ; $d10f
	ld hl, PartyMon1DVs ; $dcf4
	ld bc, $30
	ld a, e
	call AddNTimes
	ld de, TempMonDVs ; $d123
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	ret
.asm_e2bf5
	ld a, $1
	call GetSRAMBank
	ld hl, $ad45
	ld bc, $20
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonLevel], a ; $d12d
	ld hl, $ad27
	ld bc, $20
	ld a, e
	call AddNTimes
	ld a, [hl]
	ld [TempMonItem], a ; $d10f
	ld hl, $ad3b
	ld bc, $20
	ld a, e
	call AddNTimes
	ld de, TempMonDVs ; $d123
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	call CloseSRAM
	ret

; known jump sources: e2400 (38:6400), e2432 (38:6432), e25f8 (38:65f8), e262a (38:662a)
Functione2c2c: ; e2c2c (38:6c2c)
	ld hl, $c4d0
	ld bc, $a0a
	call TextBox
	ld hl, $c4d0
	ld [hl], $7d
	ld hl, $c4db
	ld [hl], $7e
	ld a, [$cb2a]
	ld e, a
	ld d, $0
	ld hl, OverworldMap ; $c800
	add hl, de
	add hl, de
	add hl, de
	ld e, l
	ld d, h
	ld hl, $c4f9
	ld a, [$cb2d]
.asm_e2c53
	push af
	push de
	push hl
	call Functione2c6e
	pop hl
	ld de, $28
	add hl, de
	pop de
	inc de
	inc de
	inc de
	pop af
	dec a
	jr nz, .asm_e2c53
	ret
; e2c67 (38:6c67)

INCBIN "baserom.gbc",$e2c67,$e2c6e - $e2c67

; known jump sources: e2c56 (38:6c56)
Functione2c6e: ; e2c6e (38:6c6e)
	ld a, [de]
	and a
	ret z
	cp $ff
	jr nz, .asm_e2c7c
	ld de, $6c67
	call PlaceString
	ret
.asm_e2c7c
	inc de
	ld a, [de]
	ld b, a
	inc de
	ld a, [de]
	ld e, a
	ld a, b
	and a
	jr z, .asm_e2cc8
	cp $f
	jr z, .asm_e2cf1
	push hl
	call Functione3396
	ld a, b
	call GetSRAMBank
	push hl
	ld bc, $16
	add hl, bc
	ld bc, $20
	ld a, e
	call AddNTimes
	ld a, [hl]
	pop hl
	and a
	jr z, .asm_e2cc2
	ld bc, $372
	add hl, bc
	ld bc, $b
	ld a, e
	call AddNTimes
	ld de, StringBuffer1 ; $d073
	ld bc, $b
	call CopyBytes
	call CloseSRAM
	pop hl
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ret
.asm_e2cc2
	call CloseSRAM
	pop hl
	jr .asm_e2d23
.asm_e2cc8
	push hl
	ld hl, PartySpecies ; $dcd8
	ld d, $0
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_e2cee
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	ld bc, $b
	ld a, e
	call AddNTimes
	ld de, StringBuffer1 ; $d073
	ld bc, $b
	call CopyBytes
	pop hl
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ret
.asm_e2cee
	pop hl
	jr .asm_e2d23
.asm_e2cf1
	push hl
	ld a, $1
	call GetSRAMBank
	ld hl, $ad11
	ld d, $0
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_e2d1f
	ld hl, $b082
	ld bc, $b
	ld a, e
	call AddNTimes
	ld de, StringBuffer1 ; $d073
	ld bc, $b
	call CopyBytes
	call CloseSRAM
	pop hl
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ret
.asm_e2d1f
	call CloseSRAM
	pop hl
.asm_e2d23
	ld de, $6d2a
	call PlaceString
	ret
; e2d2a (38:6d2a)

INCBIN "baserom.gbc",$e2d2a,$e2d30 - $e2d2a

; known jump sources: e23ef (38:63ef), e25e7 (38:65e7)
Functione2d30: ; e2d30 (38:6d30)
	xor a
	ld hl, OverworldMap ; $c800
	ld bc, $5a
	call ByteFill
	ld de, OverworldMap ; $c800
	xor a
	ld [$d003], a
	ld [$d004], a
	ld a, [$cb2e]
	and a
	jr z, .asm_e2d87
	cp $f
	jr z, .asm_e2db7
	ld b, a
	call Functione3396
	ld a, b
	call GetSRAMBank
	inc hl
.asm_e2d57
	ld a, [hl]
	cp $ff
	jr z, .asm_e2d79
	and a
	jr z, .asm_e2d79
	ld [de], a
	inc de
	ld a, [$cb2e]
	ld [de], a
	inc de
	ld a, [$d003]
	ld [de], a
	inc a
	ld [$d003], a
	inc de
	inc hl
	ld a, [$d004]
	inc a
	ld [$d004], a
	jr .asm_e2d57
.asm_e2d79
	call CloseSRAM
	ld a, $ff
	ld [de], a
	ld a, [$d004]
	inc a
	ld [$cb2c], a
	ret
.asm_e2d87
	ld hl, PartySpecies ; $dcd8
.asm_e2d8a
	ld a, [hl]
	cp $ff
	jr z, .asm_e2dac
	and a
	jr z, .asm_e2dac
	ld [de], a
	inc de
	ld a, [$cb2e]
	ld [de], a
	inc de
	ld a, [$d003]
	ld [de], a
	inc a
	ld [$d003], a
	inc de
	inc hl
	ld a, [$d004]
	inc a
	ld [$d004], a
	jr .asm_e2d8a
.asm_e2dac
	ld a, $ff
	ld [de], a
	ld a, [$d004]
	inc a
	ld [$cb2c], a
	ret
.asm_e2db7
	ld a, $1
	call GetSRAMBank
	ld hl, $ad11
.asm_e2dbf
	ld a, [hl]
	cp $ff
	jr z, .asm_e2de1
	and a
	jr z, .asm_e2de1
	ld [de], a
	inc de
	ld a, [$cb2e]
	ld [de], a
	inc de
	ld a, [$d003]
	ld [de], a
	inc a
	ld [$d003], a
	inc de
	inc hl
	ld a, [$d004]
	inc a
	ld [$d004], a
	jr .asm_e2dbf
.asm_e2de1
	call CloseSRAM
	ld a, $ff
	ld [de], a
	ld a, [$d004]
	inc a
	ld [$cb2c], a
	ret

; known jump sources: e2443 (38:6443), e2463 (38:6463), e24d4 (38:64d4), e263b (38:663b), e265b (38:665b), e26cc (38:66cc), e2ad8 (38:6ad8), e2fb0 (38:6fb0)
Functione2def: ; e2def (38:6def)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld e, a
	ld d, $0
	ld hl, OverworldMap ; $c800
	add hl, de
	add hl, de
	add hl, de
	ld a, [hl]
	ret

; known jump sources: e2413 (38:6413), e242c (38:642c), e260b (38:660b), e2624 (38:6624)
Functione2e01: ; e2e01 (38:6e01)
	ld a, [$cb2c]
	and a
	jr nz, .asm_e2e0b
	call ClearSprites
	ret
.asm_e2e0b
	ld hl, $6e2b
	ld de, Sprites ; $c400
.asm_e2e11
	ld a, [hl]
	cp $ff
	ret z
	ld a, [$cb2b]
	and $7
	swap a
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	jr .asm_e2e11
; e2e2b (38:6e2b)

INCBIN "baserom.gbc",$e2e2b,$e2f18 - $e2e2b

; known jump sources: e24a9 (38:64a9), e24e0 (38:64e0), e26a1 (38:66a1)
Functione2f18: ; e2f18 (38:6f18)
	ld a, [$cb2e]
	and a
	jr nz, .asm_e2f3d
	ld a, [$cb2c]
	cp $3
	jr c, .asm_e2f49
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	callba Functione538
	jr c, .asm_e2f44
	ld a, [$cb32]
	and a
	jr nz, .asm_e2f3f
.asm_e2f3d
	and a
	ret
.asm_e2f3f
	ld de, $7544
	jr .asm_e2f4c
.asm_e2f44
	ld de, $7531
	jr .asm_e2f4c
.asm_e2f49
	ld de, $750f
.asm_e2f4c
	call Functione2a6e
	ld de, $19
	call WaitPlaySFX
	call WaitSFX
	ld c, $32
	call DelayFrames
	scf
	ret

; known jump sources: e24e5 (38:64e5), e26dc (38:66dc)
Functione2f5f: ; e2f5f (38:6f5f)
	ld a, [CurPartySpecies] ; $d108
	cp $fd
	jr z, .asm_e2f68
	and a
	ret
.asm_e2f68
	ld de, $7597
	call Functione2a6e
	ld de, $19
	call WaitPlaySFX
	call WaitSFX
	ld c, $32
	call DelayFrames
	scf
	ret

; known jump sources: e24cb (38:64cb), e26c3 (38:66c3)
Functione2f7e: ; e2f7e (38:6f7e)
	call LowVolume
	call Functione2fd6
	ld a, $3
	ld [MonType], a ; $cf5f
	ld a, $25
	call Predef
	call Functione33e8
	call MaxVolume
	ret

; no known jump sources
Functione2f95: ; e2f95 (38:6f95)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $33
	ld [$cf73], a
	jr nz, .asm_e2fd0
	ld a, [hl]
	and $c0
	ld [$cf73], a
	jr nz, .asm_e2faa
	jr .asm_e2fd0
.asm_e2faa
	call Functione2998
	and a
	jr z, .asm_e2fd1
	call Functione2def
	ld [$d265], a
	call Functione2b6d
	ld a, [$d265]
	ld [CurPartySpecies], a ; $d108
	ld [CurSpecies], a ; $cf60
	ld hl, TempMonDVs ; $d123
	ld a, $2d
	call Predef
	call GetBaseData
	call Functione2fd6
.asm_e2fd0
	ret
.asm_e2fd1
	xor a
	ld [$cf73], a
	ret

; known jump sources: e2f81 (38:6f81), e2fcd (38:6fcd)
Functione2fd6: ; e2fd6 (38:6fd6)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	ld a, [$cb2e]
	and a
	jr z, .asm_e3020
	cp $f
	jr nz, .asm_e3048
	ld a, $1
	call GetSRAMBank
	ld hl, $ad11
	call Functione3357
	ld hl, $b082
	call Functione3363
	ld hl, $afa6
	call Functione3376
	ld hl, $ad26
	ld bc, $20
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld de, $d018
	ld bc, $30
	call CopyBytes
	call CloseSRAM
	callba Function5088b
	ret
.asm_e3020
	ld hl, PartySpecies ; $dcd8
	call Functione3357
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	call Functione3363
	ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT)
	call Functione3376
	ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species)
	ld bc, $30
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld de, $d018
	ld bc, $30
	call CopyBytes
	ret
.asm_e3048
	ld b, a
	call Functione3396
	ld a, b
	call GetSRAMBank
	push hl
	inc hl
	call Functione3357
	pop hl
	push hl
	ld bc, $372
	add hl, bc
	call Functione3363
	pop hl
	push hl
	ld bc, $296
	add hl, bc
	call Functione3376
	pop hl
	ld bc, $16
	add hl, bc
	ld bc, $20
	call Functione3389
	call CloseSRAM
	callba Function5088b
	ret

; known jump sources: e24af (38:64af)
Functione307c: ; e307c (38:707c)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname)
	ld a, [CurPartyMon] ; $d109
	call GetNick
	ld a, $1
	ld [$d10b], a
	ld a, $8
	call Predef
	jr c, .asm_e30e4
	xor a
	ld [$d10b], a
	callba Functione039
	ld a, [CurPartySpecies] ; $d108
	call Function37ce
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $f08
	call ClearBox
	ld hl, $c5c0
	ld bc, $103
	call ClearBox
	ld hl, $c5cc
	ld bc, $112
	call TextBox
	call WaitBGMap
	ld hl, $c5e1
	ld de, $7563
	call PlaceString
	ld l, c
	ld h, b
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ld a, $e7
	ld [bc], a
	ld c, $32
	call DelayFrames
	and a
	ret
.asm_e30e4
	ld de, $7575
	call Functione2a6e
	ld de, $19
	call WaitPlaySFX
	call WaitSFX
	ld c, $32
	call DelayFrames
	scf
	ret

; known jump sources: e26a7 (38:66a7)
Functione30fa: ; e30fa (38:70fa)
	ld a, [$cb2b]
	ld hl, $cb2a
	add [hl]
	ld [CurPartyMon], a ; $d109
	ld a, $1
	call GetSRAMBank
	ld a, [CurPartyMon] ; $d109
	ld hl, $b082
	call GetNick
	call CloseSRAM
	xor a
	ld [$d10b], a
	ld a, $8
	call Predef
	jr c, .asm_e316a
	ld a, $1
	ld [$d10b], a
	callba Functione039
	ld a, [CurPartySpecies] ; $d108
	call Function37ce
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $f08
	call ClearBox
	ld hl, $c5c0
	ld bc, $103
	call ClearBox
	ld hl, $c5cc
	ld bc, $112
	call TextBox
	call WaitBGMap
	ld hl, $c5e1
	ld de, $756b
	call PlaceString
	ld l, c
	ld h, b
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ld a, $e7
	ld [bc], a
	ld c, $32
	call DelayFrames
	and a
	ret
.asm_e316a
	ld de, $7586
	call Functione2a6e
	ld de, $19
	call WaitPlaySFX
	call WaitSFX
	ld c, $32
	call DelayFrames
	scf
	ret

; known jump sources: e251b (38:651b), e270f (38:670f)
Functione3180: ; e3180 (38:7180)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $f08
	call ClearBox
	ld hl, $c5c0
	ld bc, $103
	call ClearBox
	ld hl, $c5cc
	ld bc, $112
	call TextBox
	call WaitBGMap
	ld a, [CurPartySpecies] ; $d108
	call Function381e
	jr c, .asm_e31ab
	ld e, c
	ld d, b
	call PlayCryHeader
.asm_e31ab
	ld a, [CurPartySpecies] ; $d108
	ld [$d265], a
	call GetPokemonName
	ld hl, $c5e1
	ld de, $7551
	call PlaceString
	ld c, $50
	call DelayFrames
	ld hl, $c5cc
	ld bc, $112
	call TextBox
	ld hl, $c5e1
	ld de, $755e
	call PlaceString
	ld l, c
	ld h, b
	inc hl
	ld de, StringBuffer1 ; $d073
	call PlaceString
	ld l, c
	ld h, b
	ld [hl], $e7
	ld c, $32
	call DelayFrames
	ret
; e31e7 (38:71e7)

INCBIN "baserom.gbc",$e31e7,$e3357 - $e31e7

; known jump sources: e2ff2 (38:6ff2), e3023 (38:7023), e3052 (38:7052)
Functione3357: ; e3357 (38:7357)
	ld a, [CurPartyMon] ; $d109
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a ; $d108
	ret

; known jump sources: e2ff8 (38:6ff8), e3029 (38:7029), e305b (38:705b)
Functione3363: ; e3363 (38:7363)
	ld bc, $b
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld de, DefaultFlypoint ; $d002
	ld bc, $b
	call CopyBytes
	ret

; known jump sources: e2ffe (38:6ffe), e302f (38:702f), e3064 (38:7064)
Functione3376: ; e3376 (38:7376)
	ld bc, $b
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld de, $d00d
	ld bc, $b
	call CopyBytes
	ret

; known jump sources: e306f (38:706f)
Functione3389: ; e3389 (38:7389)
	ld a, [CurPartyMon] ; $d109
	call AddNTimes
	ld de, $d018
	call CopyBytes
	ret

; known jump sources: e2b86 (38:6b86), e2c8b (38:6c8b), e2d4f (38:6d4f), e3049 (38:7049)
Functione3396: ; e3396 (38:7396)
	dec b
	ld c, b
	ld b, $0
	ld hl, $73a6
	add hl, bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld b, a
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; e33a6 (38:73a6)

INCBIN "baserom.gbc",$e33a6,$e33d0 - $e33a6

; known jump sources: e240d (38:640d), e246b (38:646b), e24dc (38:64dc), e2605 (38:6605), e2663 (38:6663), e26d4 (38:66d4)
Functione33d0: ; e33d0 (38:73d0)
	ld b, a
	call GetSGBLayout
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $fc
	call Functioncf8
	ret

; known jump sources: e23db (38:63db), e25ce (38:65ce)
Functione33df: ; e33df (38:73df)
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

; known jump sources: e296c (38:696c), e2f8e (38:6f8e)
Functione33e8: ; e33e8 (38:73e8)
	call DisableLCD
	ld hl, $9000
	ld bc, $310
	xor a
	call ByteFill
	call Functione51
	call Functione58
	ld hl, $749d
	ld de, $95c0
	ld bc, $40
	call CopyBytes
	ld hl, $7419
	ld de, $8000
	call Decompress
	ld a, $6
	call Function3cb4
	call EnableLCD
	ret
; e3419 (38:7419)

INCBIN "baserom.gbc",$e3419,$e35aa - $e3419

; no known jump sources
Functione35aa: ; e35aa (38:75aa)
	call Function1d6e
	call Functione35e2
.asm_e35b0
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Functione36cf
	call Functione379c
	ld hl, $75f1
	call Function1d3c
	xor a
	ld [$d0e4], a
	ld hl, $c4f0
	ld bc, $809
	call TextBox
	call Function350c
	ld a, [$cf73]
	cp $2
	jr z, .asm_e35de
	call Functione37af
	call Functione36f9
	jr .asm_e35b0
.asm_e35de
	call Function1c17
	ret

; known jump sources: e35ad (38:75ad), e372a (38:772a)
Functione35e2: ; e35e2 (38:75e2)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	ld a, $7f
	call ByteFill
	ret
; e35f1 (38:75f1)

INCBIN "baserom.gbc",$e35f1,$e3626 - $e35f1

; known jump sources: e36e7 (38:76e7), e375d (38:775d), e376e (38:776e)
Functione3626: ; e3626 (38:7626)
	ld bc, $9
	ld hl, Box1Name ; $db75
	call AddNTimes
	ld d, h
	ld e, l
	ret
; e3632 (38:7632)

INCBIN "baserom.gbc",$e3632,$e366c - $e3632

; known jump sources: e3717 (38:7717)
Functione366c: ; e366c (38:766c)
	ld a, [$db72]
	ld c, a
	ld a, [MenuSelection] ; $cf74
	dec a
	cp c
	jr z, .asm_e3697
	ld c, a
	ld b, $0
	ld hl, $76a5
	add hl, bc
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld b, a
	call GetSRAMBank
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	call CloseSRAM
	ld c, a
	ld a, [$d4b4]
	and a
	jr z, .asm_e3695
	ld a, c
	ret
.asm_e3695
	xor a
	ret
.asm_e3697
	ld a, $1
	ld b, a
	call GetSRAMBank
	ld hl, $ad10
	ld a, [hl]
	call CloseSRAM
	ret
; e36a5 (38:76a5)

INCBIN "baserom.gbc",$e36a5,$e36cf - $e36a5

; known jump sources: e35b3 (38:75b3)
Functione36cf: ; e36cf (38:76cf)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld b, $2
	ld c, $12
	call TextBox
	ld hl, $c4c9
	ld de, $76f1
	call PlaceString
	ld a, [$db72]
	and $f
	call Functione3626
	ld hl, $c4d3
	call PlaceString
	ret
; e36f1 (38:76f1)

INCBIN "baserom.gbc",$e36f1,$e36f9 - $e36f1

; known jump sources: e35d9 (38:75d9)
Functione36f9: ; e36f9 (38:76f9)
	ld hl, $777b
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	ret c
	ld a, [$cfa9]
	cp $1
	jr z, .asm_e3734
	cp $2
	jr z, .asm_e3745
	cp $3
	jr z, .asm_e3717
	and a
	ret
.asm_e3717
	call Functione366c
	and a
	jr z, .asm_e372f
	ld e, l
	ld d, h
	ld a, [MenuSelection] ; $cf74
	dec a
	ld c, a
	callba Function844bc
	call Functione35e2
	and a
	ret
.asm_e372f
	call Functione37be
	and a
	ret
.asm_e3734
	ld a, [MenuSelection] ; $cf74
	dec a
	ld e, a
	ld a, [$db72]
	cp e
	ret z
	callba Function14a83
	ret
.asm_e3745
	ld b, $4
	ld de, DefaultFlypoint ; $d002
	callba Function116c1
	call ClearTileMap
	call Functione51
	call Functione58
	ld a, [MenuSelection] ; $cf74
	dec a
	call Functione3626
	ld e, l
	ld d, h
	ld hl, DefaultFlypoint ; $d002
	ld c, $8
	call InitString
	ld a, [MenuSelection] ; $cf74
	dec a
	call Functione3626
	ld de, DefaultFlypoint ; $d002
	call CopyName2
	ret
; e3778 (38:7778)

INCBIN "baserom.gbc",$e3778,$e379c - $e3778

; known jump sources: e35b6 (38:75b6)
Functione379c: ; e379c (38:779c)
	ld de, $77a1
	jr Functione37e3
; e37a1 (38:77a1)

INCBIN "baserom.gbc",$e37a1,$e37af - $e37a1

; known jump sources: e35d6 (38:75d6)
Functione37af: ; e37af (38:77af)
	ld de, $77b4
	jr Functione37e3
; e37b4 (38:77b4)

INCBIN "baserom.gbc",$e37b4,$e37be - $e37b4

; known jump sources: e372f (38:772f)
Functione37be: ; e37be (38:77be)
	ld de, $77d3
	call Functione37e3
	ld de, $19
	call WaitPlaySFX
	call WaitSFX
	ld c, $32
	call DelayFrames
	ret
; e37d3 (38:77d3)

INCBIN "baserom.gbc",$e37d3,$e37e3 - $e37d3

; known jump sources: e379f (38:779f), e37b2 (38:77b2), e37c1 (38:77c1)
Functione37e3: ; e37e3 (38:77e3)
	push de
	ld hl, $c5b8
	ld bc, $212
	call TextBox
	pop de
	ld hl, $c5e1
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret


SECTION "bank39", ROMX, BANK[$39]

CopyrightGFX: ; e4000
INCBIN "gfx/misc/copyright.2bpp"
; e41d0

_OptionsMenu: ; e41d0
	ld hl, $ffaa
	ld a, [hl]
	push af
	ld [hl], $1
	call WhiteBGMap
	ld hl, TileMap
	ld b, $10
	ld c, $12
	call TextBox
	ld hl, $c4ca
	ld de, Stringe4241
	call PlaceString
	xor a
	ld [$cf63], a
	ld c, $6
.asm_e41f3
	push bc
	xor a
	ld [$ffa9], a
	call Functione42d6
	pop bc
	ld hl, $cf63
	inc [hl]
	dec c
	jr nz, .asm_e41f3
	call Functione4512
	xor a
	ld [$cf63], a
	inc a
	ld [hBGMapMode], a
	call WaitBGMap
	ld b, $8
	call GetSGBLayout
	call Function32f9
.asm_e4217
	call Functiona57
	ld a, [hJoyPressed]
	and $a
	jr nz, .asm_e4234
	call Functione452a
	jr c, .asm_e422a
	call Functione42d6
	jr c, .asm_e4234

.asm_e422a
	call Functione455c
	ld c, $3
	call DelayFrames
	jr .asm_e4217

.asm_e4234
	ld de, SFX_TRANSACTION
	call PlaySFX
	call WaitSFX
	pop af
	ld [$ffaa], a
	ret
; e4241

Stringe4241: ; e4241
	db "TEXT SPEED", $22
	db "        :", $22
	db "BATTLE SCENE", $22
	db "        :", $22
	db "BATTLE STYLE", $22
	db "        :", $22
	db "SOUND", $22
	db "        :", $22
	db "PRINT", $22
	db "        :", $22
	db "MENU ACCOUNT", $22
	db "        :", $22
	db "FRAME", $22
	db "        :TYPE", $22
	db "CANCEL@"
; e42d6


Functione42d6: ; e42d6
	ld a, [$cf63]
	ld e, a
	ld d, 0
	ld hl, .Pointers
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e42e5

.Pointers
	dw Options_TextSpeed
	dw Options_BattleScene
	dw Options_BattleStyle
	dw Options_Sound
	dw Options_Print
	dw Options_MenuAccount
	dw Options_Frame
	dw Options_Cancel
; e42f5


Options_TextSpeed: ; e42f5
	call Functione4346
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e430d
	bit 4, a
	jr z, .asm_e431f
	ld a, c
	cp $2
	jr c, .asm_e4309
	ld c, $ff

.asm_e4309
	inc c
	ld a, e
	jr .asm_e4315

.asm_e430d
	ld a, c
	and a
	jr nz, .asm_e4313
	ld c, $3

.asm_e4313
	dec c
	ld a, d

.asm_e4315
	ld b, a
	ld a, [Options]
	and $f0
	or b
	ld [Options], a

.asm_e431f
	ld b, 0
	ld hl, .Strings
	add hl, bc
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	hlcoord 11, 3
	call PlaceString
	and a
	ret
; e4331

.Strings
	dw .Fast
	dw .Mid
	dw .Slow

.Fast
	db "FAST@"
.Mid
	db "MID @"
.Slow
	db "SLOW@"
; e4346


Functione4346: ; e4346
	ld a, [Options]
	and $7
	cp $5
	jr z, .asm_e4359
	cp $1
	jr z, .asm_e435f
	ld c, $1
	ld de, $0105
	ret

.asm_e4359
	ld c, $2
	ld de, $0301
	ret

.asm_e435f
	ld c, $0
	ld de, $0503
	ret
; e4365


Options_BattleScene: ; e4365
	ld hl, Options
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e4378
	bit 4, a
	jr z, .asm_e437e
	bit 7, [hl]
	jr nz, .asm_e4384
	jr .asm_e438b

.asm_e4378
	bit 7, [hl]
	jr z, .asm_e438b
	jr .asm_e4384

.asm_e437e
	bit 7, [hl]
	jr z, .asm_e4384
	jr .asm_e438b

.asm_e4384
	res 7, [hl]
	ld de, .On
	jr .asm_e4390

.asm_e438b
	set 7, [hl]
	ld de, .Off

.asm_e4390
	hlcoord 11, 5
	call PlaceString
	and a
	ret
; e4398

.On
	db "ON @"
.Off
	db "OFF@"
; e43a0


Options_BattleStyle: ; e43a0
	ld hl, Options
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e43b3
	bit 4, a
	jr z, .asm_e43b9
	bit 6, [hl]
	jr nz, .asm_e43bd
	jr .asm_e43c4

.asm_e43b3
	bit 6, [hl]
	jr z, .asm_e43c4
	jr .asm_e43bd

.asm_e43b9
	bit 6, [hl]
	jr nz, .asm_e43c4

.asm_e43bd
	res 6, [hl]
	ld de, .Shift
	jr .asm_e43c9

.asm_e43c4
	set 6, [hl]
	ld de, .Set

.asm_e43c9
	hlcoord 11, 7
	call PlaceString
	and a
	ret
; e43d1

.Shift
	db "SHIFT@"
.Set
	db "SET  @"
; e43dd


Options_Sound: ; e43dd
	ld hl, Options
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e43f0
	bit 4, a
	jr z, .asm_e43f6
	bit 5, [hl]
	jr nz, .asm_e43fc
	jr .asm_e4406

.asm_e43f0
	bit 5, [hl]
	jr z, .asm_e4406
	jr .asm_e43fc

.asm_e43f6
	bit 5, [hl]
	jr nz, .asm_e440b
	jr .asm_e4401

.asm_e43fc
	res 5, [hl]
	call Function3d47

.asm_e4401
	ld de, .Mono
	jr .asm_e440e

.asm_e4406
	set 5, [hl]
	call Function3d47

.asm_e440b
	ld de, .Stereo

.asm_e440e
	hlcoord 11, 9
	call PlaceString
	and a
	ret
; e4416

.Mono
	db "MONO  @"
.Stereo
	db "STEREO@"
; e4424


Options_Print: ; e4424
	call Functione4491
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e443c
	bit 4, a
	jr z, .asm_e4448
	ld a, c
	cp $4
	jr c, .asm_e4438
	ld c, $ff

.asm_e4438
	inc c
	ld a, e
	jr .asm_e4444

.asm_e443c
	ld a, c
	and a
	jr nz, .asm_e4442
	ld c, $5

.asm_e4442
	dec c
	ld a, d

.asm_e4444
	ld b, a
	ld [GBPrinter], a

.asm_e4448
	ld b, $0
	ld hl, $445a
	add hl, bc
	add hl, bc
	ld e, [hl]
	inc hl
	ld d, [hl]
	hlcoord 11, 11
	call PlaceString
	and a
	ret
; e445a

.Strings
	dw .Lightest
	dw .Lighter
	dw .Normal
	dw .Darker
	dw .Darkest

.Lightest
	db "LIGHTEST@"
.Lighter
	db "LIGHTER @"
.Normal
	db "NORMAL  @"
.Darker
	db "DARKER  @"
.Darkest
	db "DARKEST @"
; e4491


Functione4491: ; e4491
	ld a, [GBPrinter]
	and a
	jr z, .asm_e44a9
	cp $20
	jr z, .asm_e44af
	cp $60
	jr z, .asm_e44b5
	cp $7f
	jr z, .asm_e44bb
	ld c, $2
	ld de, $2060
	ret

.asm_e44a9
	ld c, $0
	ld de, $7f20
	ret

.asm_e44af
	ld c, $1
	ld de, $0040
	ret

.asm_e44b5
	ld c, $3
	ld de, $407f
	ret

.asm_e44bb
	ld c, $4
	ld de, $6000
	ret
; e44c1

Options_MenuAccount: ; e44c1
	ld hl, Options2
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e44d4
	bit 4, a
	jr z, .asm_e44da
	bit 0, [hl]
	jr nz, .asm_e44de
	jr .asm_e44e5

.asm_e44d4
	bit 0, [hl]
	jr z, .asm_e44e5
	jr .asm_e44de

.asm_e44da
	bit 0, [hl]
	jr nz, .asm_e44e5

.asm_e44de
	res 0, [hl]
	ld de, .Off
	jr .asm_e44ea

.asm_e44e5
	set 0, [hl]
	ld de, .On

.asm_e44ea
	hlcoord 11, 13
	call PlaceString
	and a
	ret
; e44f2

.Off
	db "OFF@"
.On
	db "ON @"
; e44fa


Options_Frame: ; e44fa
	ld hl, TextBoxFrame
	ld a, [hJoyPressed]
	bit 5, a
	jr nz, .asm_e450d
	bit 4, a
	jr nz, .asm_e4509
	and a
	ret

.asm_e4509
	ld a, [hl]
	inc a
	jr .asm_e450f

.asm_e450d
	ld a, [hl]
	dec a

.asm_e450f
	and $7
	ld [hl], a
	; fallthrough
; e4512

Functione4512: ; e4512
	ld a, [TextBoxFrame]
	ld hl, $c5dc
	add "1"
	ld [hl], a
	call Functione5f
	and a
	ret
; e4520

Options_Cancel: ; e4520
	ld a, [hJoyPressed]
	and A_BUTTON
	jr nz, .asm_e4528
	and a
	ret

.asm_e4528
	scf
	ret
; e452a

Functione452a: ; e452a
	ld hl, $cf63
	ld a, [$ffa9]
	cp $80
	jr z, .asm_e4539
	cp $40
	jr z, .asm_e454b
	and a
	ret

.asm_e4539
	ld a, [hl]
	cp $7
	jr nz, .asm_e4542
	ld [hl], $0
	scf
	ret

.asm_e4542
	cp $5
	jr nz, .asm_e4548
	ld [hl], $5

.asm_e4548
	inc [hl]
	scf
	ret

.asm_e454b
	ld a, [hl]
	cp $6
	jr nz, .asm_e4554
	ld [hl], $5
	scf
	ret

.asm_e4554
	and a
	jr nz, .asm_e4559
	ld [hl], $8

.asm_e4559
	dec [hl]
	scf
	ret
; e455c

Functione455c: ; e455c
	hlcoord 1, 1
	ld de, $0014
	ld c, $10
.asm_e4564
	ld [hl], $7f
	add hl, de
	dec c
	jr nz, .asm_e4564
	hlcoord 1, 2
	ld bc, $0028
	ld a, [$cf63]
	call AddNTimes
	ld [hl], $ed
	ret
; e4579


Functione4579: ; e4579
	ld de, MUSIC_NONE
	call PlayMusic
	call WhiteBGMap
	call ClearTileMap
	ld a, $98
	ld [$ffd7], a
	xor a
	ld [hBGMapAddress], a
	ld [hJoyDown], a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $90
	ld [hWY], a
	call WaitBGMap
	ld b, $19
	call GetSGBLayout
	call Function32f9
	ld c, 10
	call DelayFrames
	callab Copyright
	call WaitBGMap
	ld c, $64
	call DelayFrames
	call ClearTileMap
	callba Function4ea82
	call Functione45e8
.asm_e45c0
	call Functiona57
	ld a, [$ffa9]
	and $f
	jr nz, .asm_e45de
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e45e3
	call Functione4670
	callba Function8cf69
	call DelayFrame
	jr .asm_e45c0

.asm_e45de
	call Functione465e
	scf
	ret

.asm_e45e3
	call Functione465e
	and a
	ret
; e45e8

Functione45e8: ; e45e8
	ld de, GameFreakLogo
	ld hl, VTiles2
	ld bc, BANK(GameFreakLogo) << 8 + $1c
	call Get1bpp
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld hl, IntroLogoGFX
	ld de, $d000
	ld a, BANK(IntroLogoGFX)
	call FarDecompress
	ld hl, VTiles0
	ld de, $d000
	ld bc, $0180
	call Request2bpp
	ld hl, VTiles1
	ld de, $d800
	ld bc, $0180
	call Request2bpp
	pop af
	ld [rSVBK], a
	callba Function8cf53
	ld de, $5458
	ld a, $3
	call Function3b2a
	ld hl, $0007
	add hl, bc
	ld [hl], $a0
	ld hl, $000c
	add hl, bc
	ld [hl], $60
	ld hl, $000d
	add hl, bc
	ld [hl], $30
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $1
	ld [hBGMapMode], a
	ld a, $90
	ld [hWY], a
	ld de, $e4e4
	call DmgToCgbObjPals
	ret
; e465e

Functione465e: ; e465e
	callba Function8cf53
	call ClearTileMap
	call ClearSprites
	ld c, $10
	call DelayFrames
	ret
; e4670

Functione4670: ; e4670
	ld a, [$cf63]
	ld e, a
	ld d, 0
	ld hl, .pointers
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e467f

.pointers
	dw Functione468c
	dw Functione468d
	dw Functione46ba
	dw Functione46dd
; e4687

Functione4687: ; e4687
	ld hl, $cf63
	inc [hl]
	ret
; e468c

Functione468c: ; e468c
	ret
; e468d

Functione468d: ; e468d
	ld hl, $cf65
	ld a, [hl]
	cp $20
	jr nc, .asm_e4697
	inc [hl]
	ret

.asm_e4697
	ld [hl], 0
	ld hl, .GAME_FREAK
	decoord 5, 10
	ld bc, .end - .GAME_FREAK
	call CopyBytes
	call Functione4687
	ld de, SFX_GAME_FREAK_PRESENTS
	call PlaySFX
	ret
; e46af

.GAME_FREAK
	;  G  A  M  E   _  F  R  E  A  K
	db 0, 1, 2, 3, 13, 4, 5, 3, 1, 6
.end
	db "@"
; e46ba

Functione46ba: ; e46ba
	ld hl, $cf65
	ld a, [hl]
	cp $40
	jr nc, .asm_e46c4
	inc [hl]
	ret

.asm_e46c4
	ld [hl], 0
	ld hl, .presents
	decoord 7,11
	ld bc, .end - .presents
	call CopyBytes
	call Functione4687
	ret
; e46d6

.presents
	db 7, 8, 9, 10, 11, 12
.end
	db "@"
; e46dd

Functione46dd: ; e46dd
	ld hl, $cf65
	ld a, [hl]
	cp $80
	jr nc, .asm_e46e7
	inc [hl]
	ret

.asm_e46e7
	ld hl, $cf63
	set 7, [hl]
	ret
; e46ed



; no known jump sources
Functione46ed: ; e46ed (39:46ed)
	ld hl, $b
	add hl, bc
	ld e, [hl]
	ld d, $0
	ld hl, $46fd
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_e46fd: ; e46fd (39:46fd)
	dw Functione4707
	dw Functione470d
	dw Functione4759
	dw Functione4776
	dw Functione47ab


; no known jump sources
Functione4707: ; e4707 (39:4707)
	ld hl, $b
	add hl, bc
	inc [hl]
	ret

; no known jump sources
Functione470d: ; e470d (39:470d)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_e4747
	ld d, a
	ld hl, $d
	add hl, bc
	ld a, [hl]
	and $3f
	cp $20
	jr nc, .asm_e4723
	add $20
.asm_e4723
	ld e, a
	callba Functionce765
	ld hl, $7
	add hl, bc
	ld [hl], e
	ld hl, $d
	add hl, bc
	ld a, [hl]
	dec [hl]
	and $1f
	ret nz
	ld hl, $c
	add hl, bc
	ld a, [hl]
	sub $30
	ld [hl], a
	ld de, $c7
	call PlaySFX
	ret
.asm_e4747
	ld hl, $b
	add hl, bc
	inc [hl]
	ld hl, $d
	add hl, bc
	ld [hl], $0
	ld de, $c1
	call PlaySFX
	ret

; no known jump sources
Functione4759: ; e4759 (39:4759)
	ld hl, $d
	add hl, bc
	ld a, [hl]
	cp $20
	jr nc, .asm_e4764
	inc [hl]
	ret
.asm_e4764
	ld hl, $b
	add hl, bc
	inc [hl]
	ld hl, $d
	add hl, bc
	ld [hl], $0
	ld de, $c2
	call PlaySFX
	ret

; no known jump sources
Functione4776: ; e4776 (39:4776)
	ld hl, $d
	add hl, bc
	ld a, [hl]
	cp $40
	jr z, .asm_e47a3
	inc [hl]
	srl a
	srl a
	ld e, a
	ld d, $0
	ld hl, $47ac
	add hl, de
	add hl, de
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld a, [hli]
	ld [$d0cc], a
	ld a, [hli]
	ld [$d0cd], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret
.asm_e47a3
	ld hl, $b
	add hl, bc
	inc [hl]
	call Functione4687

; no known jump sources
Functione47ab: ; e47ab (39:47ab)
	ret
; e47ac (39:47ac)

INCBIN "baserom.gbc",$e47ac,$e47cc - $e47ac
 
GameFreakLogo: ; e47cc
INCBIN "gfx/splash/logo.1bpp"
; e48ac

Functione48ac: ; e48ac
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, [$ffaa]
	push af
	ld a, [$ff9e]
	push af
	call Functione4901

Functione48bc: ; e48bc
	call Functiona57
	ld a, [$ffa9]
	and $f
	jr nz, .asm_e48db
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_e48e1
	call Functione490f
	callba Function8cf69
	call DelayFrame
	jp Functione48bc

.asm_e48db
	ld de, $0000
	call PlayMusic

.asm_e48e1
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	pop af
	ld [$ff9e], a
	pop af
	ld [$ffaa], a
	pop af
	ld [rSVBK], a
	ret
; e4901

Functione4901: ; e4901
	xor a
	ld [$ff9e], a
	ld a, $1
	ld [$ffaa], a
	xor a
	ld [$ffde], a
	ld [$cf63], a
	ret
; e490f

Functione490f: ; e490f
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $491e
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; e491e


; no known jump sources
Jumptable_e491e: ; e491e (39:491e)
	dw Functione495b
	dw Functione49d6
	dw Functione49fd
	dw Functione4a69
	dw Functione4a7a
	dw Functione4af7
	dw Functione4b3f
	dw Functione4bd3
	dw Functione4c04
	dw Functione4c4f
	dw Functione4c86
	dw Functione4cfa
	dw Functione4d6d
	dw Functione4dfa
	dw Functione4e40
	dw Functione4edc
	dw Functione4ef5
	dw Functione4f67
	dw Functione4f7e
	dw Functione5019
	dw Functione505d
	dw Functione5072
	dw Functione5086
	dw Functione508e
	dw Functione50ad
	dw Functione50bb
	dw Functione512d
	dw Functione5152


; known jump sources: e49d2 (39:49d2), e49f9 (39:49f9), e4a65 (39:4a65), e4a76 (39:4a76), e4af3 (39:4af3), e4b3b (39:4b3b), e4bcf (39:4bcf), e4c00 (39:4c00), e4c4b (39:4c4b), e4c82 (39:4c82), e4cf6 (39:4cf6), e4d32 (39:4d32), e4df6 (39:4df6), e4e3c (39:4e3c), e4ed8 (39:4ed8), e4ef1 (39:4ef1), e4f63 (39:4f63), e4f7a (39:4f7a), e5015 (39:5015), e5059 (39:5059), e506e (39:506e), e5082 (39:5082), e508a (39:508a), e50a9 (39:50a9), e50b7 (39:50b7), e5129 (39:5129), e5149 (39:5149)
Functione4956: ; e4956 (39:4956)
	ld hl, $cf63
	inc [hl]
	ret

; no known jump sources
Functione495b: ; e495b (39:495b)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $641d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5f5d
	ld de, $9000
	call Functione54c2
	ld hl, $634d
	ld de, $8000
	call Functione54c2
	ld hl, $63dd
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $65ad
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $65ad
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione49d6: ; e49d6 (39:49d6)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $80
	jr nc, .asm_e49f9
	cp $60
	jr nz, .asm_e49f1
	push af
	ld de, $5858
	call Functione51dc
	ld de, $be
	call PlaySFX
	pop af
.asm_e49f1
	ld [$cf65], a
	xor a
	call Functione5223
	ret
.asm_e49f9
	call Functione4956
	ret

; no known jump sources
Functione49fd: ; e49fd (39:49fd)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5ecd
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5c7d
	ld de, $9000
	call Functione54c2
	ld hl, $5e6d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $5edd
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $5edd
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	call Functione5516
	call Functione549e
	xor a
	ld [$cf64], a
	call Functione4956
	ret

; no known jump sources
Functione4a69: ; e4a69 (39:4a69)
	call Functione552f
	ld hl, $cf64
	ld a, [hl]
	cp $80
	jr z, .asm_e4a76
	inc [hl]
	ret
.asm_e4a76
	call Functione4956
	ret

; no known jump sources
Functione4a7a: ; e4a7a (39:4a7a)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld [hLCDStatCustom], a ; $ff00+$c6
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $647d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5f5d
	ld de, $9000
	call Functione54c2
	ld hl, $634d
	ld de, $8000
	call Functione54c2
	ld hl, $642d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $65ad
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $65ad
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4af7: ; e4af7 (39:4af7)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $80
	jr nc, .asm_e4b3b
	cp $60
	jr z, .asm_e4b24
	cp $40
	jr nc, .asm_e4b32
	cp $20
	jr z, .asm_e4b0e
	jr .asm_e4b1c
.asm_e4b0e
	push af
	ld de, $3878
	call Functione51dc
	ld de, $bf
	call PlaySFX
	pop af
.asm_e4b1c
	ld [$cf65], a
	xor a
	call Functione5223
	ret
.asm_e4b24
	push af
	ld de, $7030
	call Functione51dc
	ld de, $be
	call PlaySFX
	pop af
.asm_e4b32
	ld [$cf65], a
	ld a, $1
	call Functione5223
	ret
.asm_e4b3b
	call Functione4956
	ret

; no known jump sources
Functione4b3f: ; e4b3f (39:4b3f)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5ecd
	ld de, $9800
	call Functione54fa
	ld hl, $592d
	ld de, $8000
	call Functione54c2
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $555d
	ld de, $8000
	call Functione54de
	ld hl, $5c7d
	ld de, $9000
	call Functione54c2
	ld hl, $5e6d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $5edd
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $5edd
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	call Functione5516
	callba Function8cf53
	ld de, $6cd8
	ld a, $26
	call Function3b2a
	ld a, $f0
	ld [$c3c0], a
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4bd3: ; e4bd3 (39:4bd3)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $40
	jr z, .asm_e4be2
	jr nc, .asm_e4be8
	call Functione552f
	ret
.asm_e4be2
	ld de, $c6
	call PlaySFX
.asm_e4be8
	ld a, [$c3c0]
	and a
	jr z, .asm_e4bf4
	sub $8
	ld [$c3c0], a
	ret
.asm_e4bf4
	ld de, $c5
	call PlaySFX
	callba Function8d03d
	call Functione4956
	ret

; no known jump sources
Functione4c04: ; e4c04 (39:4c04)
	xor a
	ld [hLCDStatCustom], a ; $ff00+$c6
	call ClearSprites
	ld hl, AttrMap ; $cdd9
	ld bc, $f0
	ld a, $1
	call ByteFill
	ld bc, $3c
	ld a, $2
	call ByteFill
	ld bc, $3c
	ld a, $3
	call ByteFill
	ld a, $2
	ld [hBGMapMode], a ; $ff00+$d4
	call DelayFrame
	call DelayFrame
	call DelayFrame
	ld a, $c
	ld [hBGMapAddress], a ; $ff00+$d6
	call DelayFrame
	call DelayFrame
	call DelayFrame
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld [hBGMapAddress], a ; $ff00+$d6
	ld [$c3c0], a
	xor a
	ld [$cf64], a
	call Functione4956
	ret

; no known jump sources
Functione4c4f: ; e4c4f (39:4c4f)
	call Functione546d
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $c0
	jr z, .asm_e4c82
	cp $20
	jr z, .asm_e4c73
	cp $40
	jr z, .asm_e4c64
	ret
.asm_e4c64
	ld de, $a980
	ld a, $27
	call Function3b2a
	ld de, $c4
	call PlaySFX
	ret
.asm_e4c73
	ld de, $b030
	ld a, $28
	call Function3b2a
	ld de, $c4
	call PlaySFX
	ret
.asm_e4c82
	call Functione4956
	ret

; no known jump sources
Functione4c86: ; e4c86 (39:4c86)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld [hLCDStatCustom], a ; $ff00+$c6
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $655d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5f5d
	ld de, $9000
	call Functione54c2
	ld hl, $649d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $65ad
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $65ad
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4cfa: ; e4cfa (39:4cfa)
	call Functione4d36
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $c0
	jr nc, .asm_e4d32
	cp $80
	jr nc, .asm_e4d1d
	ld c, a
	and $1f
	sla a
	ld [$cf65], a
	ld a, c
	and $e0
	srl a
	swap a
	call Functione5223
	ret
.asm_e4d1d
	ld c, a
	and $f
	sla a
	sla a
	ld [$cf65], a
	ld a, c
	and $70
	or $40
	swap a
	call Functione5223
	ret
.asm_e4d32
	call Functione4956
	ret

; known jump sources: e4cfa (39:4cfa)
Functione4d36: ; e4d36 (39:4d36)
	ld a, [$cf64]
	ld c, a
	ld hl, $4d54
.asm_e4d3d
	ld a, [hli]
	cp $ff
	ret z
	cp c
	jr z, .asm_e4d48
	inc hl
	inc hl
	jr .asm_e4d3d
.asm_e4d48
	ld a, [hli]
	ld d, [hl]
	ld e, a
	push de
	call SFXChannelsOff
	pop de
	call PlaySFX
	ret
; e4d54 (39:4d54)

INCBIN "baserom.gbc",$e4d54,$e4d6d - $e4d54

; no known jump sources
Functione4d6d: ; e4d6d (39:4d6d)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $5ecd
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $555d
	ld de, $8000
	call Functione54de
	ld hl, $5c7d
	ld de, $9000
	call Functione54c2
	ld hl, $5e6d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $5edd
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $5edd
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	ld de, $6c58
	ld a, $26
	call Function3b2a
	ld de, $62
	call PlayMusic
	xor a
	ld [$c3c0], a
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4dfa: ; e4dfa (39:4dfa)
	ld a, [hSCX] ; $ff00+$cf
	sub $a
	ld [hSCX], a ; $ff00+$cf
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $80
	jr z, .asm_e4e3c
	cp $60
	jr z, .asm_e4e14
	jr nc, .asm_e4e1a
	cp $40
	jr nc, .asm_e4e33
	ret
.asm_e4e14
	ld de, $c8
	call PlaySFX
.asm_e4e1a
	ld a, $1
	ld [$cf65], a
	ld a, [$c3c0]
	cp $88
	jr c, .asm_e4e2c
	sub $8
	ld [$c3c0], a
	ret
.asm_e4e2c
	callba Function8d03d
	ret
.asm_e4e33
	ld a, [$c3c0]
	sub $2
	ld [$c3c0], a
	ret
.asm_e4e3c
	call Functione4956
	ret

; no known jump sources
Functione4e40: ; e4e40 (39:4e40)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $76ad
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $6ded
	ld de, $9000
	call Functione54c2
	ld hl, $785d
	ld de, $8000
	call Functione54c2
	ld de, $7a5d
	ld hl, $8800
	ld bc, $3901
	call Request2bpp
	ld hl, $764d
	ld de, $9800
	call Functione54fa
	call Functione541b
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $77dd
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $77dd
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $90
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	ld de, $4028
	ld a, $2a
	call Function3b2a
	ld de, $6000
	ld a, $2b
	call Function3b2a
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4edc: ; e4edc (39:4edc)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $80
	jr nc, .asm_e4ef1
	call Functione5441
	ld a, [hSCY] ; $ff00+$d0
	and a
	ret z
	add $8
	ld [hSCY], a ; $ff00+$d0
	ret
.asm_e4ef1
	call Functione4956
	ret

; no known jump sources
Functione4ef5: ; e4ef5 (39:4ef5)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $6d0d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $681d
	ld de, $8800
	call Functione54de
	ld hl, $6c3d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $6d6d
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $6d6d
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione4f67: ; e4f67 (39:4f67)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $60
	jr nc, .asm_e4f7a
	ld a, [hSCX] ; $ff00+$cf
	cp $60
	ret z
	add $8
	ld [hSCX], a ; $ff00+$cf
	ret
.asm_e4f7a
	call Functione4956
	ret

; no known jump sources
Functione4f7e: ; e4f7e (39:4f7e)
	call Functione54a3
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $778d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $72ad
	ld de, $9000
	call Functione54c2
	ld hl, $5f5d
	ld de, $8800
	call Functione54c2
	ld de, $7a5d
	ld hl, $8ff0
	ld bc, $3901
	call Request2bpp
	ld hl, $76bd
	ld de, $9800
	call Functione54fa
	call Functione541b
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $77dd
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $77dd
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $d8
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	ld hl, $c300
	xor a
	ld [hli], a
	ld [hl], $7f
	call Functione549e
	ld de, $6000
	ld a, $2b
	call Function3b2a
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione5019: ; e5019 (39:5019)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $98
	jr nc, .asm_e5059
	cp $58
	ret nc
	cp $40
	jr nc, .asm_e5032
	cp $28
	ret nc
	ld a, [hSCY] ; $ff00+$d0
	inc a
	ld [hSCY], a ; $ff00+$d0
	ret
.asm_e5032
	sub $18
	ld c, a
	and $3
	cp $3
	ret nz
	ld a, c
	and $1c
	srl a
	srl a
	ld [$cf65], a
	xor a
	call Functione5348
	ret
; e5049 (39:5049)

INCBIN "baserom.gbc",$e5049,$e5059 - $e5049
.asm_e5059
	call Functione4956
	ret

; no known jump sources
Functione505d: ; e505d (39:505d)
	call Functione5451
	ld c, $3
	call DelayFrames
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione5072: ; e5072 (39:5072)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $8
	jr nc, .asm_e507c
	ret
.asm_e507c
	callba Function8d03d
	call Functione4956
	ret

; no known jump sources
Functione5086: ; e5086 (39:5086)
	xor a
	ld [$cf64], a
	call Functione4956
	ret

; no known jump sources
Functione508e: ; e508e (39:508e)
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $20
	jr nc, .asm_e50a4
	ld c, a
	and $3
	ret nz
	ld a, c
	and $1c
	sla a
	call Functione5172
	ret
.asm_e50a4
	ld a, $40
	ld [$cf64], a
	call Functione4956
	ret

; no known jump sources
Functione50ad: ; e50ad (39:50ad)
	ld a, [$cf64]
	dec a
	jr z, .asm_e50b7
	ld [$cf64], a
	ret
.asm_e50b7
	call Functione4956
	ret

; no known jump sources
Functione50bb: ; e50bb (39:50bb)
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $676d
	ld de, $9800
	call Functione54fa
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, $662d
	ld de, $9000
	call Functione54c2
	ld hl, $672d
	ld de, $9800
	call Functione54fa
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $679d
	ld de, Unkn1Pals ; $d000
	ld bc, $80
	call CopyBytes
	ld hl, $679d
	ld de, BGPals ; $d080
	ld bc, $80
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld [hSCY], a ; $ff00+$d0
	ld a, $7
	ld [hWX], a ; $ff00+$d1
	ld a, $90
	ld [hWY], a ; $ff00+$d2
	callba Function8cf53
	call Functione549e
	xor a
	ld [$cf64], a
	ld [$cf65], a
	call Functione4956
	ret

; no known jump sources
Functione512d: ; e512d (39:512d)
	ld hl, $cf65
	inc [hl]
	ld hl, $cf64
	ld a, [hl]
	inc [hl]
	cp $80
	jr nc, .asm_e5149
	ld c, a
	and $f
	ld [$cf65], a
	ld a, c
	and $70
	swap a
	call Functione539d
	ret
.asm_e5149
	call Functione4956
	ld a, $80
	ld [$cf64], a
	ret

; no known jump sources
Functione5152: ; e5152 (39:5152)
	ld hl, $cf64
	ld a, [hl]
	and a
	jr z, .asm_e516c
	dec [hl]
	cp $18
	jr z, .asm_e5168
	cp $8
	ret nz
	ld de, $cb
	call PlaySFX
	ret
.asm_e5168
	call WhiteBGMap
	ret
.asm_e516c
	ld hl, $cf63
	set 7, [hl]
	ret

; known jump sources: e50a0 (39:50a0)
Functione5172: ; e5172 (39:5172)
	ld hl, $519c
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld de, BGPals ; $d080
	ld b, $8
.asm_e5187
	push hl
	ld c, $8
.asm_e518a
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_e518a
	pop hl
	dec b
	jr nz, .asm_e5187
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret
; e519c (39:519c)

INCBIN "baserom.gbc",$e519c,$e51dc - $e519c

; known jump sources: e49e7 (39:49e7), e4b12 (39:4b12), e4b28 (39:4b28)
Functione51dc: ; e51dc (39:51dc)
	push de
	ld a, $29
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld [hl], $8
	ld a, $3c
	call Function3b3c
	pop de
	push de
	ld a, $29
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld [hl], $18
	ld a, $3b
	call Function3b3c
	pop de
	push de
	ld a, $29
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld [hl], $28
	ld a, $39
	call Function3b3c
	pop de
	ld a, $29
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld [hl], $38
	ld a, $3a
	call Function3b3c
	ret

; known jump sources: e49f5 (39:49f5), e4b20 (39:4b20), e4b37 (39:4b37), e4d19 (39:4d19), e4d2e (39:4d2e)
Functione5223: ; e5223 (39:5223)
	add a
	add a
	add a
	ld e, a
	ld d, $0
	ld hl, BGPals ; $d080
	add hl, de
	inc hl
	inc hl
	ld a, [$cf65]
	and $3f
	cp $1f
	jr z, .asm_e523e
	jr c, .asm_e523e
	ld c, a
	ld a, $3f
	sub c
.asm_e523e
	ld c, a
	ld b, $0
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	push hl
	push bc
	ld hl, BGPals ; $d080
	ld bc, $40
	xor a
	call ByteFill
	pop bc
	pop hl
	push hl
	ld hl, $5288
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	push hl
	ld hl, $52c8
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	push hl
	ld hl, $5308
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret
; e5288 (39:5288)

INCBIN "baserom.gbc",$e5288,$e5348 - $e5288

; known jump sources: e5045 (39:5045)
Functione5348: ; e5348 (39:5348)
	and a
	jr nz, .asm_e5350
	ld hl, $538d
	jr .asm_e5353
.asm_e5350
	ld hl, $5395
.asm_e5353
	ld a, [$cf65]
	and $7
	add a
	add a
	add a
	ld c, a
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	push bc
	ld de, BGPals ; $d080
	ld a, c
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	ld bc, $8
	call CopyBytes
	pop bc
	ld de, Unkn1Pals ; $d000
	ld a, c
	add e
	ld e, a
	ld a, $0
	adc d
	ld d, a
	ld bc, $8
	call CopyBytes
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret
; e538d (39:538d)

INCBIN "baserom.gbc",$e538d,$e539d - $e538d

; known jump sources: e5145 (39:5145)
Functione539d: ; e539d (39:539d)
	add a
	add a
	add a
	ld e, a
	ld d, $0
	ld hl, BGPals ; $d080
	add hl, de
	inc hl
	inc hl
	inc hl
	inc hl
	ld a, [$cf65]
	add a
	ld c, a
	ld b, $0
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	push hl
	ld hl, $53db
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	push hl
	ld hl, $53fb
	add hl, bc
	ld a, [hli]
	ld d, [hl]
	ld e, a
	pop hl
	ld a, e
	ld [hli], a
	ld a, d
	ld [hli], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret
; e53db (39:53db)

INCBIN "baserom.gbc",$e53db,$e541b - $e53db

; known jump sources: e4e84 (39:4e84), e4fc2 (39:4fc2)
Functione541b: ; e541b (39:541b)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $6
	ld [rSVBK], a ; $ff00+$70
	ld hl, Unkn1Pals ; $d000
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld b, $12
.asm_e542a
	ld c, $14
.asm_e542c
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_e542c
	ld a, $c
	add l
	ld l, a
	ld a, $0
	adc h
	ld h, a
	dec b
	jr nz, .asm_e542a
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: e4ee5 (39:4ee5)
Functione5441: ; e5441 (39:5441)
	ld a, [$cf64]
	and $3
	jr z, Functione5451
	cp $3
	jr z, .asm_e544d
	ret
.asm_e544d
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: e505d (39:505d), e5446 (39:5446)
Functione5451: ; e5451 (39:5451)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
.asm_e5457
	ld a, [hl]
	and a
	jr z, .asm_e5462
	cp $80
	jr nc, .asm_e5462
	xor $8
	ld [hl], a
.asm_e5462
	inc hl
	dec bc
	ld a, c
	or b
	jr nz, .asm_e5457
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: e4c4f (39:4c4f)
Functione546d: ; e546d (39:546d)
	ld a, [$cf64]
	cp $24
	ret nc
	and $c
	srl a
	ld e, a
	ld d, $0
	ld hl, $5496
	add hl, de
	ld a, [hli]
	ld [$cf68], a
	ld a, [hli]
	ld [$cf69], a
	ld a, $90
	ld [$cf6a], a
	ld a, $90
	ld [$cf6b], a
	ld a, $4
	ld [$cf67], a
	ret
; e5496 (39:5496)

INCBIN "baserom.gbc",$e5496,$e549e - $e5496

; known jump sources: e49c8 (39:49c8), e4a5e (39:4a5e), e4ae9 (39:4ae9), e4bc5 (39:4bc5), e4cec (39:4cec), e4dec (39:4dec), e4ebe (39:4ebe), e4f59 (39:4f59), e5003 (39:5003), e511f (39:511f)
Functione549e: ; e549e (39:549e)
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	ret

; known jump sources: e495b (39:495b), e49fd (39:49fd), e4a7a (39:4a7a), e4b3f (39:4b3f), e4c86 (39:4c86), e4d6d (39:4d6d), e4e40 (39:4e40), e4ef5 (39:4ef5), e4f7e (39:4f7e)
Functione54a3: ; e54a3 (39:54a3)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, BGPals ; $d080
	ld bc, $80
	xor a
	call ByteFill
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hCGBPalUpdate], a ; $ff00+$e5
	call DelayFrame
	call DelayFrame
	ret

; known jump sources: e497e (39:497e), e4987 (39:4987), e4a20 (39:4a20), e4a9f (39:4a9f), e4aa8 (39:4aa8), e4b5e (39:4b5e), e4b74 (39:4b74), e4cab (39:4cab), e4d99 (39:4d99), e4e63 (39:4e63), e4e6c (39:4e6c), e4fa1 (39:4fa1), e4faa (39:4faa), e50de (39:50de)
Functione54c2: ; e54c2 (39:54c2)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $6
	ld [rSVBK], a ; $ff00+$70
	push de
	ld de, Unkn1Pals ; $d000
	call Decompress
	pop hl
	ld de, Unkn1Pals ; $d000
	ld bc, $180
	call Request2bpp
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: e4b6b (39:4b6b), e4d90 (39:4d90), e4f18 (39:4f18)
Functione54de: ; e54de (39:54de)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $6
	ld [rSVBK], a ; $ff00+$70
	push de
	ld de, Unkn1Pals ; $d000
	call Decompress
	pop hl
	ld de, Unkn1Pals ; $d000
	ld bc, $1ff
	call Request2bpp
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: e4971 (39:4971), e4990 (39:4990), e4a13 (39:4a13), e4a29 (39:4a29), e4a92 (39:4a92), e4ab1 (39:4ab1), e4b55 (39:4b55), e4b7d (39:4b7d), e4c9e (39:4c9e), e4cb4 (39:4cb4), e4d83 (39:4d83), e4da2 (39:4da2), e4e56 (39:4e56), e4e81 (39:4e81), e4f0b (39:4f0b), e4f21 (39:4f21), e4f94 (39:4f94), e4fbf (39:4fbf), e50d1 (39:50d1), e50e7 (39:50e7)
Functione54fa: ; e54fa (39:54fa)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $6
	ld [rSVBK], a ; $ff00+$70
	push de
	ld de, Unkn1Pals ; $d000
	call Decompress
	pop hl
	ld de, Unkn1Pals ; $d000
	ld bc, $140
	call Request2bpp
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: e4a5b (39:4a5b), e4baf (39:4baf)
Functione5516: ; e5516 (39:5516)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, CurMartEnd ; $d100 (aliases: LYOverrides)
	ld bc, $90
	xor a
	call ByteFill
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $43
	ld [hLCDStatCustom], a ; $ff00+$c6
	ret

; known jump sources: e4a69 (39:4a69), e4bde (39:4bde)
Functione552f: ; e552f (39:552f)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld a, [$cf64]
	and $1
	jr z, .asm_e5548
	ld hl, CurMartEnd ; $d100 (aliases: LYOverrides)
	ld a, [hl]
	inc a
	ld bc, $5f
	call ByteFill
.asm_e5548
	ld hl, $d15f
	ld a, [hl]
	inc a
	inc a
	ld bc, $31
	call ByteFill
	ld a, [CurMartEnd] ; $d100 (aliases: LYOverrides)
	ld [hSCX], a ; $ff00+$cf
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

IntroSuicuneRunGFX: ; e555d
INCBIN "gfx/intro/suicune_run.lz"
; e592d

IntroPichuWooperGFX: ; e592d
INCBIN "gfx/intro/pichu_wooper.lz"
; e5c7d

IntroBackgroundGFX: ; e5c7d
INCBIN "gfx/intro/background.lz"
; e5e6d

IntroTilemap004: ; e5e6d
INCBIN "gfx/intro/004.lz"
; e5ecd

IntroTilemap003: ; e5ecd
INCBIN "gfx/intro/003.lz"
; e5edd

INCBIN "baserom.gbc", $e5edd, $e5f5d - $e5edd

IntroUnownsGFX: ; e5f5d
INCBIN "gfx/intro/unowns.lz"
; e634d

IntroPulseGFX: ; e634d
INCBIN "gfx/intro/pulse.lz"
; e63dd

IntroTilemap002: ; e63dd
INCBIN "gfx/intro/002.lz"
; e641d

IntroTilemap001: ; e641d
INCBIN "gfx/intro/001.lz"
; e642d

IntroTilemap006: ; e642d
INCBIN "gfx/intro/006.lz"
; e647d

IntroTilemap005: ; e647d
INCBIN "gfx/intro/005.lz"
; e649d

IntroTilemap008: ; e649d
INCBIN "gfx/intro/008.lz"
; e655d

IntroTilemap007: ; e655d
INCBIN "gfx/intro/007.lz"
; e65ad

INCBIN "baserom.gbc", $e65ad, $e662d - $e65ad

IntroCrystalUnownsGFX: ; e662d
INCBIN "gfx/intro/crystal_unowns.lz"
; e672d

IntroTilemap017: ; e672d
INCBIN "gfx/intro/017.lz"
; e676d

IntroTilemap015: ; e676d
INCBIN "gfx/intro/015.lz"
; e679d

INCBIN "baserom.gbc", $e679d, $e681d - $e679d

IntroSuicuneCloseGFX: ; e681d
INCBIN "gfx/intro/suicune_close.lz"
; e6c3d

IntroTilemap012: ; e6c3d
INCBIN "gfx/intro/012.lz"
; e6d0d

IntroTilemap011: ; e6d0d
INCBIN "gfx/intro/011.lz"
; e6d6d

INCBIN "baserom.gbc", $e6d6d, $e6ded - $e6d6d

IntroSuicuneJumpGFX: ; e6ded
INCBIN "gfx/intro/suicune_jump.lz"
; e72ad

IntroSuicuneBackGFX: ; e72ad
INCBIN "gfx/intro/suicune_back.lz"
; e764d

IntroTilemap010: ; e764d
INCBIN "gfx/intro/010.lz"
; e76ad

IntroTilemap009: ; e76ad
INCBIN "gfx/intro/009.lz"
; e76bd

IntroTilemap014: ; e76bd
INCBIN "gfx/intro/014.lz"
; e778d

IntroTilemap013: ; e778d
INCBIN "gfx/intro/013.lz"
; e77dd

INCBIN "baserom.gbc", $e77dd, $e785d - $e77dd

IntroUnownBackGFX: ; e785d
INCBIN "gfx/intro/unown_back.lz"
; e799d

INCBIN "baserom.gbc", $e799d, $e7a70 - $e799d



SECTION "bank3E", ROMX, BANK[$3E]

FontExtra:
INCBIN "gfx/misc/font_extra.2bpp"

Font:
INCBIN "gfx/misc/font.1bpp"

FontBattleExtra:
INCBIN "gfx/misc/font_battle_extra.2bpp"

Frames: ; f8800
INCBIN "gfx/frames/1.1bpp"
INCBIN "gfx/frames/2.1bpp"
INCBIN "gfx/frames/3.1bpp"
INCBIN "gfx/frames/4.1bpp"
INCBIN "gfx/frames/5.1bpp"
INCBIN "gfx/frames/6.1bpp"
INCBIN "gfx/frames/7.1bpp"
INCBIN "gfx/frames/8.1bpp"
INCBIN "gfx/frames/9.1bpp"
; f89b0

INCBIN "baserom.gbc",$f89b0,$f8ba0 - $f89b0

TownMapGFX: ; f8ba0
INCBIN "gfx/misc/town_map.lz"
; f8ea3

INCBIN "baserom.gbc",$f8ea3,$fb449 - $f8ea3


Functionfb449: ; fb449
	ld de, $4200
	ld hl, VTiles1
	ld bc, Function3e80
	ld a, [rLCDC]
	bit 7, a
	jp z, Copy1bpp
	ld de, $4200
	ld hl, VTiles1
	ld bc, $3e20
	call Functionddc
	ld de, $4300
	ld hl, $8a00
	ld bc, $3e20
	call Functionddc
	ld de, $4400
	ld hl, $8c00
	ld bc, $3e20
	call Functionddc
	ld de, $4500
	ld hl, $8e00
	ld bc, $3e20
	call Functionddc
	ret
; fb48a



Functionfb48a: ; fb48a
	ld de, $5214
	ld hl, $9600
	ld bc, $3e01
	call Functionddc
	ld de, $4f24
	ld hl, $9620
	ld bc, $3e01
	call Functiondc9
	ld de, $4030
	ld hl, $9630
	ld bc, $3e16
	call Functiondc9
	jr Functionfb4cc
; fb4b0

Functionfb4b0: ; fb4b0
	ld de, $5424
	ld hl, $9610
	ld b, $3e
	ld c, $1
	call Functiondc9
	ret
; fb4be

Functionfb4be: ; fb4be
	ld de, $4600
	ld hl, $9600
	ld bc, $3e19
	call Functiondc9
	jr Functionfb4cc
; fb4cc

Functionfb4cc: ; fb4cc
	ld a, [TextBoxFrame]
	and 7
	ld bc, $0030
	ld hl, Frames
	call AddNTimes
	ld d, h
	ld e, l
	ld hl, $9790
	ld bc, $3e06
	call Functionddc
	ld hl, $97f0
	ld de, $5204
	ld bc, $3e01
	call Functionddc
	ret
; fb4f2

Functionfb4f2: ; fb4f2
	ld de, $4600
	ld hl, $9600
	ld bc, $3e0c
	call Functiondc9
	ld hl, $9700
	ld de, $4700
	ld bc, $3e03
	call Functiondc9
	call Functionfb4cc

Functionfb50d: ; fb50d
	ld de, $4ac0
	ld hl, $96c0
	ld bc, $3e04
	call Functionddc
	ld de, $4ae0
	ld hl, $9730
	ld bc, $3e06
	call Functionddc
	ld de, $4b10
	ld hl, $9550
	ld bc, $3e09
	call Functiondc9
	ld de, $52a4
	ld hl, $95e0
	ld bc, $3e02
	call Functiondc9
	ret
; fb53e

Functionfb53e: ; fb53e
	call Functionfb4be
	ld de, $4ac0
	ld hl, $96c0
	ld bc, $3e04
	call Functionddc
	ld de, $4ae0
	ld hl, $9780
	ld bc, $3e01
	call Functionddc
	ld de, $4af8
	ld hl, $9760
	ld bc, $3e02
	call Functionddc
	ld de, $4b10
	ld hl, $9550
	ld bc, $3e08
	call Functiondc9

Functionfb571: ; fb571
	ld de, $49b0
	ld hl, $9310
	ld bc, $3e11
	call Functiondc9
	ret
; fb57e

Functionfb57e: ; fb57e
	ld a, [$d003]
	ld hl, OTPartyMon1Species
	call GetPartyLocation
	push hl
	ld a, [$d003]
	inc a
	ld c, a
	ld b, $0
	ld hl, OTPartyCount
	add hl, bc
	ld a, [hl]
	pop hl
	cp $fd
	jr z, .asm_fb59c
	cp [hl]
	jr nz, .asm_fb5db

.asm_fb59c
	ld b, h
	ld c, l
	ld hl, $001f
	add hl, bc
	ld a, [hl]
	cp $65
	jr nc, .asm_fb5db
	ld a, [InLinkBattle]
	cp $1
	jr nz, .asm_fb5d9
	ld hl, OTPartySpecies
	ld a, [$d003]
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	cp $51
	jr z, .asm_fb5d9
	cp $52
	jr z, .asm_fb5d9
	ld [CurSpecies], a
	call GetBaseData
	ld hl, $cbea
	add hl, bc
	add hl, bc
	ld a, [BaseType1]
	cp [hl]
	jr nz, .asm_fb5db
	inc hl
	ld a, [BaseType2]
	cp [hl]
	jr nz, .asm_fb5db

.asm_fb5d9
	and a
	ret

.asm_fb5db
	scf
	ret
; fb5dd

Functionfb5dd: ; fb5dd
	ld a, [DefaultFlypoint]
	ld d, a
	ld a, [PartyCount]
	ld b, a
	ld c, $0
.asm_fb5e7
	ld a, c
	cp d
	jr z, .asm_fb5f8
	push bc
	ld a, c
	ld hl, PartyMon1CurHP
	call GetPartyLocation
	pop bc
	ld a, [hli]
	or [hl]
	jr nz, .asm_fb60b

.asm_fb5f8
	inc c
	dec b
	jr nz, .asm_fb5e7
	ld a, [$d003]
	ld hl, OTPartyMon1CurHP
	call GetPartyLocation
	ld a, [hli]
	or [hl]
	jr nz, .asm_fb60b
	scf
	ret

.asm_fb60b
	and a
	ret
; fb60d

Functionfb60d: ; fb60d
	ld hl, $c4a4
	ld de, PlayerName
	call PlaceString
	ld a, $14
	ld [bc], a
	ld hl, $c544
	ld de, $d26b
	call PlaceString
	ld a, $14
	ld [bc], a
	ld hl, $c4bb
	ld de, PartySpecies
	call Functionfb634
	ld hl, $c55b
	ld de, OTPartySpecies

Functionfb634: ; fb634
	ld c, $0
.asm_fb636
	ld a, [de]
	cp $ff
	ret z
	ld [$d265], a
	push bc
	push hl
	push de
	push hl
	ld a, c
	ld [hProduct], a
	call GetPokemonName
	pop hl
	call PlaceString
	pop de
	inc de
	pop hl
	ld bc, $0014
	add hl, bc
	pop bc
	inc c
	jr .asm_fb636
; fb656

INCBIN "baserom.gbc",$fb656,$fb6ed - $fb656


INCLUDE "event/name_rater.asm"


Functionfb841: ; fb841
	ld a, [ScriptVar]
	call Function37f3
	jr c, .asm_fb876
	ld hl, CryPitch
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld bc, $fec0
	add hl, bc
	ld a, l
	ld [CryPitch], a
	ld a, h
	ld [CryEcho], a
	ld hl, CryLength
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld bc, $0060
	add hl, bc
	ld a, l
	ld [CryLength], a
	ld a, h
	ld [$c2b3], a
	callba PlayCry
	call WaitSFX

.asm_fb876
	ret
; fb877

Functionfb877: ; fb877
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
	call LowVolume
	call WhiteBGMap
	call ClearTileMap
	call Function1ad2
	call ClearSprites
	ld a, [$cf65]
	push af
	ld a, [hSCX]
	add $5
	ld [hSCX], a
	xor a
	ld [$cf65], a
	callba Function41a7f
	call Functiona80
	ld a, $1
	ld [$cf65], a
	callba Function4424d
	call Functiona80
	pop af
	ld [$cf65], a
	call MaxVolume
	call Function4b6
	ld a, [hSCX]
	add $fb
	ld [hSCX], a
	call Functionfb8c8
	pop af
	ld [$ffde], a
	ret
; fb8c8

Functionfb8c8: ; fb8c8
	call ClearTileMap
	call Functione5f
	call Functione51
	callba Function40ab2
	call Function3200
	callba Function3da97
	ld a, [hli]
	ld [TempMonDVs], a
	ld a, [hl]
	ld [$d124], a
	ld b, $1c
	call GetSGBLayout
	call Function32f9
	ret
; fb8f1

Functionfb8f1: ; fb8f1
	push bc
	push hl
	ld a, [$d265]
	ld b, a
	ld c, $0
	ld hl, $791c
.asm_fb8fc
	inc c
	ld a, [hli]
	cp b
	jr nz, .asm_fb8fc
	ld a, c
	ld [$d265], a
	pop hl
	pop bc
	ret
; fb908

Functionfb908: ; fb908
	push bc
	push hl
	ld a, [$d265]
	dec a
	ld hl, $791c
	ld b, $0
	ld c, a
	add hl, bc
	ld a, [hl]
	ld [$d265], a
	pop hl
	pop bc
	ret
; fb91c

INCBIN "baserom.gbc",$fb91c,$fba18 - $fb91c


Functionfba18: ; fba18
	ld a, [UnownLetter]
	ld c, a
	ld b, $1a
	ld hl, UnownDex
.asm_fba21
	ld a, [hli]
	and a
	jr z, .asm_fba2b
	cp c
	ret z
	dec b
	jr nz, .asm_fba21
	ret

.asm_fba2b
	dec hl
	ld [hl], c
	ret
; fba2e


; no known jump sources
Functionfba2e: ; fba2e (3e:7a2e)
	ld hl, $c5d0
	ld bc, $c
	ld a, $7f
	call ByteFill
	ld a, [$c7dd]
	ld e, a
	ld d, $0
	ld hl, EndPokedexSeen ; $ded9 (aliases: UnownDex)
	add hl, de
	ld a, [hl]
	ld e, a
	ld d, $0
	ld hl, $7a5a
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld d, [hl]
	ld hl, $c5d0
.asm_fba52
	ld a, [de]
	cp $ff
	ret z
	inc de
	ld [hli], a
	jr .asm_fba52
; fba5a (3e:7a5a)

INCBIN "baserom.gbc",$fba5a,$fbb32 - $fba5a

Functionfbb32: ; fbb32
	callba Function50000
	jr c, .asm_fbb9e
	ld a, [CurPartySpecies]
	cp $81
	jr nz, .asm_fbba4
	ld a, [CurPartyMon]
	ld hl, PartyMon1Species
	ld bc, $0030
	call AddNTimes
	push hl
	ld bc, $0015
	add hl, bc
	ld d, h
	ld e, l
	pop hl
	ld bc, $0006
	add hl, bc
	ld b, h
	ld c, l
	call CalcMagikarpLength
	call Functionfbbdb
	callba Function105f33
	ld hl, $7ba9
	call PrintText
	ld hl, Buffer1
	ld de, $dfe8
	ld c, $2
	call StringCmp
	jr nc, .asm_fbb98
	ld hl, Buffer1
	ld de, $dfe8
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	inc de
	ld a, [CurPartyMon]
	ld hl, PartyMon1OT
	call SkipNames
	call CopyBytes
	ld a, $3
	ld [ScriptVar], a
	ret

.asm_fbb98
	ld a, $2
	ld [ScriptVar], a
	ret

.asm_fbb9e
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_fbba4
	xor a
	ld [ScriptVar], a
	ret
; fbba9

INCBIN "baserom.gbc",$fbba9,$fbbae - $fbba9

Functionfbbae: ; fbbae
	ld hl, $96e0
	ld de, $7bbb
	ld bc, $3e02
	call Request2bpp
	ret
; fbbbb

INCBIN "baserom.gbc",$fbbbb,$fbbdb - $fbbbb

Functionfbbdb: ; fbbdb
	call Functionfbbae
	ld hl, StringBuffer1
	ld de, Buffer1
	ld bc, $4102
	call PrintNum
	ld [hl], $6e
	inc hl
	ld de, Buffer2
	ld bc, $4102
	call PrintNum
	ld [hl], $6f
	inc hl
	ld [hl], $50
	ret
; fbbfc

INCLUDE "battle/magikarp_length.asm"

INCBIN "baserom.gbc",$fbccf,$fbcd2 - $fbccf

Functionfbcd2: ; fbcd2
	ld a, [$dfe8]
	ld [Buffer1], a
	ld a, [$dfe9]
	ld [Buffer2], a
	call Functionfbbdb
	ld hl, $7ce8
	call PrintText
	ret
; fbce8

INCBIN "baserom.gbc",$fbce8,$fbced - $fbce8

INCLUDE "battle/hidden_power.asm"

Functionfbd54: ; fbd54
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_fbd61
	call Functionfbd96
	jr .asm_fbd64
.asm_fbd61
	call Functionfbd9d
.asm_fbd64
	call ClearBox
	jr asm_fbd91

; no known jump sources
Functionfbd69: ; fbd69 (3e:7d69)
	callba BattleCommanda6
	jr asm_fbd77

; no known jump sources
Functionfbd71: ; fbd71 (3e:7d71)
	callba BattleCommanda7

; known jump sources: fbd6f (3e:7d6f)
asm_fbd77: ; fbd77 (3e:7d77)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	ld a, [hBattleTurn] ; $ff00+$e4
	and a
	jr z, .asm_fbd85
	call Functionfbd96
	xor a
	jr .asm_fbd8a
.asm_fbd85
	call Functionfbd9d
	ld a, $31
.asm_fbd8a
	ld [$FF00+$ad], a
	ld a, $13
	call Predef
asm_fbd91: ; fbd91 (3e:7d91)
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: fbd5c (3e:7d5c), fbd7f (3e:7d7f)
Functionfbd96: ; fbd96 (3e:7d96)
	ld hl, $c4ac
	ld bc, $707
	ret

; known jump sources: fbd61 (3e:7d61), fbd85 (3e:7d85)
Functionfbd9d: ; fbd9d (3e:7d9d)
	ld hl, $c51a
	ld bc, $606
	ret


DoWeatherModifiers: ; fbda4

	ld de, .WeatherTypeModifiers
	ld a, [Weather]
	ld b, a
	ld a, [$d265] ; move type
	ld c, a

.CheckWeatherType
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_fbdc0

	cp b
	jr nz, .NextWeatherType

	ld a, [de]
	cp c
	jr z, .ApplyModifier

.NextWeatherType
	inc de
	inc de
	jr .CheckWeatherType


.asm_fbdc0
	ld de, .WeatherMoveModifiers

	ld a, BATTLE_VARS_MOVE_EFFECT
	call GetBattleVar
	ld c, a

.CheckWeatherMove
	ld a, [de]
	inc de
	cp $ff
	jr z, .done

	cp b
	jr nz, .NextWeatherMove

	ld a, [de]
	cp c
	jr z, .ApplyModifier

.NextWeatherMove
	inc de
	inc de
	jr .CheckWeatherMove

.ApplyModifier
	xor a
	ld [hMultiplicand], a
	ld hl, CurDamage
	ld a, [hli]
	ld [$ffb5], a
	ld a, [hl]
	ld [$ffb6], a

	inc de
	ld a, [de]
	ld [hMultiplier], a

	call Multiply

	ld a, 10
	ld [hMultiplier], a
	ld b, $4
	call Divide

	ld a, [hMultiplicand]
	and a
	ld bc, $ffff
	jr nz, .Update

	ld a, [$ffb5]
	ld b, a
	ld a, [$ffb6]
	ld c, a
	or b
	jr nz, .Update

	ld bc, 1

.Update
	ld a, b
	ld [CurDamage], a
	ld a, c
	ld [CurDamage + 1], a

.done
	ret

.WeatherTypeModifiers
	db WEATHER_RAIN, WATER, 15
	db WEATHER_RAIN, FIRE,  05
	db WEATHER_SUN,  FIRE,  15
	db WEATHER_SUN,  WATER, 05
	db $ff

.WeatherMoveModifiers
	db WEATHER_RAIN, EFFECT_SOLARBEAM, 05
	db $ff
; fbe24


DoBadgeTypeBoosts: ; fbe24
	ld a, [InLinkBattle]
	and a
	ret nz

	ld a, [$cfc0]
	and a
	ret nz

	ld a, [hBattleTurn]
	and a
	ret nz

	push de
	push bc

	ld hl, .BadgeTypes

	ld a, [KantoBadges]
	ld b, a
	ld a, [JohtoBadges]
	ld c, a

.CheckBadge
	ld a, [hl]
	cp $ff
	jr z, .done

	srl b
	rr c
	jr nc, .NextBadge

	ld a, [$d265] ; move type
	cp [hl]
	jr z, .ApplyBoost

.NextBadge
	inc hl
	jr .CheckBadge

.ApplyBoost
	ld a, [CurDamage]
	ld h, a
	ld d, a
	ld a, [CurDamage + 1]
	ld l, a
	ld e, a

	srl d
	rr e
	srl d
	rr e
	srl d
	rr e

	ld a, e
	or d
	jr nz, .asm_fbe6f
	ld e, 1

.asm_fbe6f
	add hl, de
	jr nc, .Update

	ld hl, $ffff

.Update
	ld a, h
	ld [CurDamage], a
	ld a, l
	ld [$d257], a

.done
	pop bc
	pop de
	ret

.BadgeTypes
	db FLYING   ; zephyrbadge
	db BUG      ; hivebadge
	db NORMAL   ; plainbadge
	db GHOST    ; fogbadge
	db STEEL    ; mineralbadge
	db FIGHTING ; stormbadge
	db ICE      ; glacierbadge
	db DRAGON   ; risingbadge

	db ROCK     ; boulderbadge
	db WATER    ; cascadebadge
	db ELECTRIC ; thunderbadge
	db GRASS    ; rainbowbadge
	db POISON   ; soulbadge
	db PSYCHIC  ; marshbadge
	db FIRE     ; volcanobadge
	db GROUND   ; earthbadge
	db $ff
; fbe91


SECTION "bank3F", ROMX, BANK[$3F]

_AnimateTileset: ; fc000
; Iterate over a given pointer array of
; animation functions (one per frame).

; Typically in wra1, vra0

	ld a, [TilesetAnim]
	ld e, a
	ld a, [TilesetAnim + 1]
	ld d, a

	ld a, [hTileAnimFrame]
	ld l, a
	inc a
	ld [hTileAnimFrame], a

	ld h, 0
	add hl, hl
	add hl, hl
	add hl, de

; 2-byte parameter
; All functions take input de.
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl

; Function address
	ld a, [hli]
	ld h, [hl]
	ld l, a

	jp [hl]
; fc01b


Tileset00Anim: ; 0xfc01b
Tileset02Anim: ; 0xfc01b
Tileset03Anim: ; 0xfc01b
;	   param, function
	dw $9140, AnimateWaterTile
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, TileAnimationPalette
	dw $0000, WaitTileAnimation
	dw $0000, AnimateFlowerTile
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc047

Tileset25Anim: ; 0xfc047
;	   param, function
	dw $9140, AnimateWaterTile
	dw $0000, WaitTileAnimation
	dw $95f0, AnimateFountain
	dw $0000, WaitTileAnimation
	dw $0000, TileAnimationPalette
	dw $0000, WaitTileAnimation
	dw $0000, AnimateFlowerTile
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc073

Tileset31Anim: ; 0xfc073
;	   param, function
	dw $0000, ForestTreeLeftAnimation
	dw $0000, ForestTreeRightAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, ForestTreeLeftAnimation2
	dw $0000, ForestTreeRightAnimation2
	dw $0000, AnimateFlowerTile
	dw $9140, AnimateWaterTile
	dw $0000, TileAnimationPalette
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc0a3

Tileset01Anim: ; 0xfc0a3
;	   param, function
	dw $9140, AnimateWaterTile
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, TileAnimationPalette
	dw $0000, WaitTileAnimation
	dw $0000, AnimateFlowerTile
	dw $4a98, AnimateWhirlpoolTile
	dw $4a9c, AnimateWhirlpoolTile
	dw $4aa0, AnimateWhirlpoolTile
	dw $4aa4, AnimateWhirlpoolTile
	dw $0000, WaitTileAnimation
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc0d7

INCBIN "baserom.gbc",$fc0d7,$fc12f - $fc0d7

Tileset09Anim: ; 0xfc12f
;	   param, function
	dw $9140, AnimateWaterTile
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, TileAnimationPalette
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc15f

Tileset15Anim: ; 0xfc15f
;	   param, function
	dw $0000, SafariFountainAnim2
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, SafariFountainAnim1
	dw $0000, WaitTileAnimation
	dw $0000, NextTileFrame8
	dw $0000, DoneTileAnimation
; 0xfc17f

INCBIN "baserom.gbc",$fc17f,$fc1e7 - $fc17f

Tileset24Anim: ; 0xfc1e7
Tileset30Anim: ; 0xfc1e7
;	   param, function
	dw $9140, WriteTileToBuffer
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileRightLeft
	dw $0000, Functionfc71e
	dw $9140, WriteTileFromBuffer
	dw $0000, Functionfc71e
	dw $0000, TileAnimationPalette
	dw $0000, Functionfc71e
	dw $9400, WriteTileToBuffer
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $9400, WriteTileFromBuffer
	dw $0000, Functionfc71e
	dw $0000, DoneTileAnimation
; 0xfc233

Tileset29Anim: ; 0xfc233
;	   param, function
	dw $9350, WriteTileToBuffer
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileRightLeft
	dw $0000, Functionfc71e
	dw $9350, WriteTileFromBuffer
	dw $0000, Functionfc71e
	dw $0000, TileAnimationPalette
	dw $0000, Functionfc71e
	dw $9310, WriteTileToBuffer
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $cf41, ScrollTileDown
	dw $0000, Functionfc71e
	dw $9310, WriteTileFromBuffer
	dw $0000, Functionfc71e
	dw $0000, DoneTileAnimation
; 0xfc27f

Tileset23Anim: ; 0xfc27f
;	   param, function
	dw SproutPillarTilePointer9,  AnimateSproutPillarTile
	dw SproutPillarTilePointer10, AnimateSproutPillarTile
	dw SproutPillarTilePointer7,  AnimateSproutPillarTile
	dw SproutPillarTilePointer8,  AnimateSproutPillarTile
	dw SproutPillarTilePointer5,  AnimateSproutPillarTile
	dw SproutPillarTilePointer6,  AnimateSproutPillarTile
	dw SproutPillarTilePointer3,  AnimateSproutPillarTile
	dw SproutPillarTilePointer4,  AnimateSproutPillarTile
	dw SproutPillarTilePointer1,  AnimateSproutPillarTile
	dw SproutPillarTilePointer2,  AnimateSproutPillarTile
	dw $0000, NextTileFrame
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, DoneTileAnimation
; 0xfc2bf

INCBIN "baserom.gbc",$fc2bf,$fc2e7 - $fc2bf

Tileset04Anim: ; 0xfc2e7
Tileset05Anim: ; 0xfc2e7
Tileset06Anim: ; 0xfc2e7
Tileset07Anim: ; 0xfc2e7
Tileset08Anim: ; 0xfc2e7
Tileset10Anim: ; 0xfc2e7
Tileset11Anim: ; 0xfc2e7
Tileset12Anim: ; 0xfc2e7
Tileset13Anim: ; 0xfc2e7
Tileset14Anim: ; 0xfc2e7
Tileset16Anim: ; 0xfc2e7
Tileset17Anim: ; 0xfc2e7
Tileset18Anim: ; 0xfc2e7
Tileset19Anim: ; 0xfc2e7
Tileset20Anim: ; 0xfc2e7
Tileset21Anim: ; 0xfc2e7
Tileset22Anim: ; 0xfc2e7
Tileset26Anim: ; 0xfc2e7
Tileset27Anim: ; 0xfc2e7
Tileset28Anim: ; 0xfc2e7
Tileset32Anim: ; 0xfc2e7
Tileset33Anim: ; 0xfc2e7
Tileset34Anim: ; 0xfc2e7
Tileset35Anim: ; 0xfc2e7
Tileset36Anim: ; 0xfc2e7
;	   param, function
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, WaitTileAnimation
	dw $0000, DoneTileAnimation
; 0xfc2fb

DoneTileAnimation: ; fc2fb
; Reset the animation command loop.
	xor a
	ld [hTileAnimFrame], a
	
WaitTileAnimation: ; fc2fe
; Do nothing this frame.
	ret
; fc2ff

NextTileFrame8: ; fc2ff
	ld a, [TileAnimationTimer]
	inc a
	and a, 7
	ld [TileAnimationTimer], a
	ret
; fc309


ScrollTileRightLeft: ; fc309
; Scroll right for 4 ticks, then left for 4 ticks.
	ld a, [TileAnimationTimer]
	inc a
	and 7
	ld [TileAnimationTimer], a
	and 4
	jr nz, ScrollTileLeft
	jr ScrollTileRight
; fc318

ScrollTileUpDown: ; fc318
; Scroll up for 4 ticks, then down for 4 ticks.
	ld a, [TileAnimationTimer]
	inc a
	and 7
	ld [TileAnimationTimer], a
	and 4
	jr nz, ScrollTileDown
	jr ScrollTileUp
; fc327

ScrollTileLeft: ; fc327
	ld h, d
	ld l, e
	ld c, 4
.loop
	rept 4
	ld a, [hl]
	rlca
	ld [hli], a
	endr
	dec c
	jr nz, .loop
	ret
; fc33b

ScrollTileRight: ; fc33b
	ld h, d
	ld l, e
	ld c, 4
.loop
	rept 4
	ld a, [hl]
	rrca
	ld [hli], a
	endr
	dec c
	jr nz, .loop
	ret
; fc34f

ScrollTileUp: ; fc34f
	ld h, d
	ld l, e
	ld d, [hl]
	inc hl
	ld e, [hl]
	ld bc, $e
	add hl, bc
	ld a, 4
.loop
	ld c, [hl]
	ld [hl], e
	dec hl
	ld b, [hl]
	ld [hl], d
	dec hl
	ld e, [hl]
	ld [hl], c
	dec hl
	ld d, [hl]
	ld [hl], b
	dec hl
	dec a
	jr nz, .loop
	ret
; fc36a

ScrollTileDown: ; fc36a
	ld h, d
	ld l, e
	ld de, $e
	push hl
	add hl, de
	ld d, [hl]
	inc hl
	ld e, [hl]
	pop hl
	ld a, 4
.loop
	ld b, [hl]
	ld [hl], d
	inc hl
	ld c, [hl]
	ld [hl], e
	inc hl
	ld d, [hl]
	ld [hl], b
	inc hl
	ld e, [hl]
	ld [hl], c
	inc hl
	dec a
	jr nz, .loop
	ret
; fc387


AnimateFountain: ; fc387
	ld hl, [sp+0]
	ld b, h
	ld c, l
	ld hl, .frames
	ld a, [TileAnimationTimer]
	and 7
	add a
	add l
	ld l, a
	jr nc, .asm_fc399
	inc h

.asm_fc399
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld sp, hl
	ld l, e
	ld h, d
	jp WriteTile

.frames
	dw .frame1
	dw .frame2
	dw .frame3
	dw .frame4
	dw .frame3
	dw .frame4
	dw .frame5
	dw .frame1

.frame1
	INCBIN "gfx/tilesets/fountain/1.2bpp"
.frame2
	INCBIN "gfx/tilesets/fountain/2.2bpp"
.frame3
	INCBIN "gfx/tilesets/fountain/3.2bpp"
.frame4
	INCBIN "gfx/tilesets/fountain/4.2bpp"
.frame5
	INCBIN "gfx/tilesets/fountain/5.2bpp"
; fc402


AnimateWaterTile: ; fc402
; Draw a water tile for the current frame in VRAM tile at de.

; Save sp in bc (see WriteTile).
	ld hl, [sp+0]
	ld b, h
	ld c, l
	
	ld a, [TileAnimationTimer]
	
; 4 tile graphics, updated every other frame.
	and 3 << 1
	
; 2 x 8 = 16 bytes per tile
	add a
	add a
	add a
	
	add WaterTileFrames % $100
	ld l, a
	ld a, 0
	adc WaterTileFrames / $100
	ld h, a
	
; Stack now points to the start of the tile for this frame.
	ld sp, hl
	
	ld l, e
	ld h, d
	
	jp WriteTile
; fc41c

WaterTileFrames: ; fc41c
; Frames 0-3
; INCBIN "gfx/tilesets/water.2bpp"
INCBIN "baserom.gbc",$fc41c,$fc45c - $fc41c
; fc45c


ForestTreeLeftAnimation: ; fc45c
	ld hl, [sp+0]
	ld b, h
	ld c, l

; Only during the Celebi event.
	ld a, [$dbf3]
	bit 2, a
	jr nz, .asm_fc46c
	ld hl, ForestTreeLeftFrames
	jr .asm_fc47d

.asm_fc46c
	ld a, [TileAnimationTimer]
	call GetForestTreeFrame
	add a
	add a
	add a
	add ForestTreeLeftFrames % $100
	ld l, a
	ld a, 0
	adc ForestTreeLeftFrames / $100
	ld h, a

.asm_fc47d
	ld sp, hl
	ld hl, $90c0
	jp WriteTile
; fc484


ForestTreeLeftFrames: ; fc484
	INCBIN "gfx/tilesets/forest-tree/1.2bpp"
	INCBIN "gfx/tilesets/forest-tree/2.2bpp"
; fc4a4

ForestTreeRightFrames: ; fc4a4
	INCBIN "gfx/tilesets/forest-tree/3.2bpp"
	INCBIN "gfx/tilesets/forest-tree/4.2bpp"
; fc4c4


ForestTreeRightAnimation: ; fc4c4
	ld hl, [sp+0]
	ld b, h
	ld c, l

; Only during the Celebi event.
	ld a, [$dbf3]
	bit 2, a
	jr nz, .asm_fc4d4
	ld hl, ForestTreeRightFrames
	jr .asm_fc4eb

.asm_fc4d4
	ld a, [TileAnimationTimer]
	call GetForestTreeFrame
	add a
	add a
	add a
	add ForestTreeLeftFrames % $100
	ld l, a
	ld a, 0
	adc ForestTreeLeftFrames / $100
	ld h, a
	push bc
	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
	add hl, bc
	pop bc

.asm_fc4eb
	ld sp, hl
	ld hl, $90f0
	jp WriteTile
; fc4f2


ForestTreeLeftAnimation2: ; fc4f2
	ld hl, [sp+0]
	ld b, h
	ld c, l

; Only during the Celebi event.
	ld a, [$dbf3]
	bit 2, a
	jr nz, .asm_fc502
	ld hl, ForestTreeLeftFrames
	jr .asm_fc515

.asm_fc502
	ld a, [TileAnimationTimer]
	call GetForestTreeFrame
	xor 2
	add a
	add a
	add a
	add ForestTreeLeftFrames % $100
	ld l, a
	ld a, 0
	adc ForestTreeLeftFrames / $100
	ld h, a

.asm_fc515
	ld sp, hl
	ld hl, $90c0
	jp WriteTile
; fc51c


ForestTreeRightAnimation2: ; fc51c
	ld hl, [sp+0]
	ld b, h
	ld c, l

; Only during the Celebi event.
	ld a, [$dbf3]
	bit 2, a
	jr nz, .asm_fc52c
	ld hl, ForestTreeRightFrames
	jr .asm_fc545

.asm_fc52c
	ld a, [TileAnimationTimer]
	call GetForestTreeFrame
	xor 2
	add a
	add a
	add a
	add ForestTreeLeftFrames % $100
	ld l, a
	ld a, 0
	adc ForestTreeLeftFrames / $100
	ld h, a
	push bc
	ld bc, ForestTreeRightFrames - ForestTreeLeftFrames
	add hl, bc
	pop bc

.asm_fc545
	ld sp, hl
	ld hl, $90f0
	jp WriteTile
; fc54c


GetForestTreeFrame: ; fc54c
; Return 0 if a is even, or 2 if odd.
	and a
	jr z, .even
	cp 1
	jr z, .odd
	cp 2
	jr z, .even
	cp 3
	jr z, .odd
	cp 4
	jr z, .even
	cp 5
	jr z, .odd
	cp 6
	jr z, .even
.odd
	ld a, 2
	scf
	ret
.even
	xor a
	ret
; fc56d


AnimateFlowerTile: ; fc56d
; No parameters.

; Save sp in bc (see WriteTile).
	ld hl, [sp+0]
	ld b, h
	ld c, l
	
; Alternate tile graphc every other frame
	ld a, [TileAnimationTimer]
	and 1 << 1
	ld e, a
	
; CGB has different color mappings for flowers.
	ld a, [hCGB]
	and 1
	
	add e
	swap a ; << 4 (16 bytes)
	ld e, a
	ld d, 0
	ld hl, FlowerTileFrames
	add hl, de
	ld sp, hl
	
	ld hl, VTiles2 + $30 ; tile 4
	
	jp WriteTile
; fc58c

FlowerTileFrames: ; fc58c
; frame 0 dmg
; frame 0 cgb
; frame 1 dmg
; frame 1 sgb
; INCBIN "gfx/tilesets/flower.2bpp"
INCBIN "baserom.gbc",$fc58c,$fc5cc - $fc58c
; fc5cc


SafariFountainAnim1: ; fc5cc
; Splash in the bottom-right corner of the fountain.
	ld hl, [sp+0]
	ld b, h
	ld c, l
	ld a, [TileAnimationTimer]
	and 6
	srl a
	inc a
	inc a
	and 3
	swap a
	ld e, a
	ld d, 0
	ld hl, SafariFountainFrames
	add hl, de
	ld sp, hl
	ld hl, $95b0
	jp WriteTile
; fc5eb


SafariFountainAnim2: ; fc5eb
; Splash in the top-left corner of the fountain.
	ld hl, [sp+0]
	ld b, h
	ld c, l
	ld a, [TileAnimationTimer]
	and 6
	add a
	add a
	add a
	ld e, a
	ld d, 0
	ld hl, SafariFountainFrames
	add hl, de
	ld sp, hl
	ld hl, $9380
	jp WriteTile
; fc605


SafariFountainFrames: ; fc605
	INCBIN "gfx/tilesets/safari/1.2bpp"
	INCBIN "gfx/tilesets/safari/2.2bpp"
	INCBIN "gfx/tilesets/safari/3.2bpp"
	INCBIN "gfx/tilesets/safari/4.2bpp"
; fc645


AnimateSproutPillarTile: ; fc645
; Read from struct at de:
; 	Destination (VRAM)
;	Address of the first tile in the frame array

	ld hl, [sp+0]
	ld b, h
	ld c, l

	ld a, [TileAnimationTimer]
	and 7

; Get frame index a
	ld hl, .frames
	add l
	ld l, a
	ld a, 0
	adc h
	ld h, a
	ld a, [hl]

; Destination
	ld l, e
	ld h, d
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl

; Add the frame index to the starting address
	add [hl]
	inc hl
	ld h, [hl]
	ld l, a
	ld a, 0
	adc h
	ld h, a

	ld sp, hl
	ld l, e
	ld h, d
	jr WriteTile

.frames
	db $00, $10, $20, $30, $40, $30, $20, $10
; fc673


NextTileFrame: ; fc673
	ld hl, TileAnimationTimer
	inc [hl]
	ret
; fc678


AnimateWhirlpoolTile: ; fc678
; Update whirlpool tile using struct at de.

; Struct:
; 	VRAM address
;	Address of the first tile

; Only does one of 4 tiles at a time.

; Save sp in bc (see WriteTile).
	ld hl, [sp+0]
	ld b, h
	ld c, l
	
; de = VRAM address
	ld l, e
	ld h, d
	ld e, [hl]
	inc hl
	ld d, [hl]
	inc hl
; Tile address is now at hl.
	
; Get the tile for this frame.
	ld a, [TileAnimationTimer]
	and %11 ; 4 frames x2
	swap a  ; * 16 bytes per tile
	
	add [hl]
	inc hl
	ld h, [hl]
	ld l, a
	ld a, 0
	adc h
	ld h, a
	
; Stack now points to the desired frame.
	ld sp, hl
	
	ld l, e
	ld h, d
	
	jr WriteTile
; fc696
	
	
WriteTileFromBuffer: ; fc696
; Write tiledata at $cf41 to de.
; $cf41 is loaded to sp for WriteTile.

	ld hl, [sp+0]
	ld b, h
	ld c, l
	
	ld hl, $cf41
	ld sp, hl
	
	ld h, d
	ld l, e
	jr WriteTile
; fc6a2
	
	
WriteTileToBuffer: ; fc6a2
; Write tiledata de to $cf41.
; de is loaded to sp for WriteTile.

	ld hl, [sp+0]
	ld b, h
	ld c, l
	
	ld h, d
	ld l, e
	ld sp, hl
	
	ld hl, $cf41
	
	; fallthrough

WriteTile: ; fc6ac
; Write one 8x8 tile ($10 bytes) from sp to hl.

; Warning: sp is saved in bc so we can abuse pop.
; sp is restored to address bc. Save sp in bc before calling.

	pop de
	ld [hl], e
	inc hl
	ld [hl], d
	
rept 7
	pop de
	inc hl
	ld [hl], e
	inc hl
	ld [hl], d
endr
	
; restore sp
	ld h, b
	ld l, c
	ld sp, hl
	ret
; fc6d7


TileAnimationPalette: ; fc6d7
; Transition between color values 0-2 for color 0 in palette 3.

; No palette changes on DMG.
	ld a, [hCGB]
	and a
	ret z
	
; We don't want to mess with non-standard palettes.
	ld a, [rBGP] ; BGP
	cp %11100100
	ret nz
	
; Only update on even frames.
	ld a, [TileAnimationTimer]
	ld l, a
	and 1 ; odd
	ret nz
	
; Ready for BGPD input...
	ld a, %10011000 ; auto increment, index $18 (pal 3 color 0)
	ld [rBGPI], a
	
	ld a, [rSVBK]
	push af
	ld a, 5 ; wra5: gfx
	ld [rSVBK], a
	
; Update color 0 in order 0 1 2 1
	
	ld a, l
	and %110 ; frames 0 2 4 6
	
	jr z, .color0
	
	cp 4
	jr z, .color2
	
.color1
	ld hl, $d01a ; pal 3 color 1
	ld a, [hli]
	ld [rBGPD], a
	ld a, [hli]
	ld [rBGPD], a
	jr .end
	
.color0
	ld hl, $d018 ; pal 3 color 0
	ld a, [hli]
	ld [rBGPD], a
	ld a, [hli]
	ld [rBGPD], a
	jr .end
	
.color2
	ld hl, $d01c ; pal 3 color 2
	ld a, [hli]
	ld [rBGPD], a
	ld a, [hli]
	ld [rBGPD], a
	
.end
	pop af
	ld [rSVBK], a
	ret
; fc71e


Functionfc71e: ; fc71e
	ld a, [hCGB]
	and a
	ret z

	ld a, [rBGP]
	cp $e4
	ret nz

	ld a, [$d847]
	cp $ff
	ret nz

	ld a, [rSVBK]
	push af

	ld a, 5
	ld [rSVBK], a
	ld a, $a0
	ld [rBGPI], a
	ld a, [$ff9b]
	and 2
	jr nz, .asm_fc743
	ld hl, $d020
	jr .asm_fc746

.asm_fc743
	ld hl, $d022

.asm_fc746
	ld a, [hli]
	ld [rBGPD], a
	ld a, [hli]
	ld [rBGPD], a

	pop af
	ld [rSVBK], a
	ret
; fc750


SproutPillarTilePointers: ; fc750
SproutPillarTilePointer1:
	dw $92d0, SproutPillarTile1
SproutPillarTilePointer2:
	dw $92f0, SproutPillarTile2
SproutPillarTilePointer3:
	dw $93d0, SproutPillarTile3
SproutPillarTilePointer4:
	dw $93f0, SproutPillarTile4
SproutPillarTilePointer5:
	dw $93c0, SproutPillarTile5
SproutPillarTilePointer6:
	dw $92c0, SproutPillarTile6
SproutPillarTilePointer7:
	dw $94d0, SproutPillarTile7
SproutPillarTilePointer8:
	dw $94f0, SproutPillarTile8
SproutPillarTilePointer9:
	dw $95d0, SproutPillarTile9
SproutPillarTilePointer10:
	dw $95f0, SproutPillarTile10

SproutPillarTile1:
	INCBIN "gfx/tilesets/sprout-pillar/1.2bpp"
SproutPillarTile2:
	INCBIN "gfx/tilesets/sprout-pillar/2.2bpp"
SproutPillarTile3:
	INCBIN "gfx/tilesets/sprout-pillar/3.2bpp"
SproutPillarTile4:
	INCBIN "gfx/tilesets/sprout-pillar/4.2bpp"
SproutPillarTile5:
	INCBIN "gfx/tilesets/sprout-pillar/5.2bpp"
SproutPillarTile6:
	INCBIN "gfx/tilesets/sprout-pillar/6.2bpp"
SproutPillarTile7:
	INCBIN "gfx/tilesets/sprout-pillar/7.2bpp"
SproutPillarTile8:
	INCBIN "gfx/tilesets/sprout-pillar/8.2bpp"
SproutPillarTile9:
	INCBIN "gfx/tilesets/sprout-pillar/9.2bpp"
SproutPillarTile10:
	INCBIN "gfx/tilesets/sprout-pillar/10.2bpp"
; fca98


INCBIN "baserom.gbc",$fca98,$fcba8 - $fca98


Functionfcba8: ; fcba8
	ld a, e
	ld [$cf63], a
	call Functionfcc59
	ld b, $2
	call Functionfcc4a
	ld a, $4
	jr nz, .asm_fcc03
	ld a, $0
	call Functionfcf38
	call Function1dcf
	ld a, $1
	jr c, .asm_fcc03
	ld b, $6
	callba Function5001d
	ld a, $1
	jr c, .asm_fcc03
	ld e, $1
	call LoadTradesPointer
	ld a, [CurPartySpecies]
	cp [hl]
	ld a, $2
	jr nz, .asm_fcc03
	call Functionfcc23
	ld a, $2
	jr c, .asm_fcc03
	ld b, $1
	call Functionfcc4a
	ld hl, $4f7b
	call PrintText
	call Functionfcc63
	call Functionfcc07
	call Functionfce1b
	ld hl, $4f80
	call PrintText
	call Function3d47
	ld a, $3

.asm_fcc03
	call Functionfcf38
	ret
; fcc07

Functionfcc07: ; fcc07
	call Function2ed3
	ld a, [$cf63]
	push af
	ld a, [$cf64]
	push af
	ld a, $1e
	call Predef
	pop af
	ld [$cf64], a
	pop af
	ld [$cf63], a
	call Function2b74
	ret
; fcc23

Functionfcc23: ; fcc23
	xor a
	ld [MonType], a
	ld e, $1e
	call LoadTradesPointer
	ld a, [hl]
	and a
	jr z, .asm_fcc46
	cp $1
	jr z, .asm_fcc3e
	callba GetGender
	jr nz, .asm_fcc48
	jr .asm_fcc46

.asm_fcc3e
	callba GetGender
	jr z, .asm_fcc48

.asm_fcc46
	and a
	ret

.asm_fcc48
	scf
	ret
; fcc4a

Functionfcc4a: ; fcc4a
	ld hl, $d960
	ld a, [$cf63]
	ld c, a
	ld a, $3
	call Predef
	ld a, c
	and a
	ret
; fcc59

Functionfcc59: ; fcc59
	ld e, $0
	call LoadTradesPointer
	ld a, [hl]
	ld [$cf64], a
	ret
; fcc63

Functionfcc63: ; fcc63
	ld e, $1
	call LoadTradesPointer
	ld a, [hl]
	ld [PlayerSDefLevel], a
	ld e, $2
	call LoadTradesPointer
	ld a, [hl]
	ld [PlayerLightScreenCount], a
	ld a, [PlayerSDefLevel]
	ld de, PlayerAccLevel
	call Functionfcde8
	call Functionfcdf4
	ld a, [PlayerLightScreenCount]
	ld de, PlayerReflectCount
	call Functionfcde8
	call Functionfcdf4
	ld hl, PartyMon1OT
	ld bc, $000b
	call Functionfcdd7
	ld de, $c6f2
	call Functionfcdf4
	ld hl, PlayerName
	ld de, $c6e7
	call Functionfcdf4
	ld hl, PartyMon1ID
	ld bc, $0030
	call Functionfcdd7
	ld de, PlayerScreens
	call Functionfce0f
	ld hl, PartyMon1DVs
	ld bc, $0030
	call Functionfcdd7
	ld de, $c6fd
	call Functionfce0f
	ld hl, PartyMon1Species
	ld bc, $0030
	call Functionfcdd7
	ld b, h
	ld c, l
	callba Function4f301
	ld a, c
	ld [$c701], a
	ld e, $0
	call LoadTradesPointer
	ld a, [hl]
	cp $3
	ld a, $1
	jr c, .asm_fcce6
	ld a, $2

.asm_fcce6
	ld [$c733], a
	ld hl, PartyMon1Level
	ld bc, $0030
	call Functionfcdd7
	ld a, [hl]
	ld [CurPartyLevel], a
	ld a, [PlayerLightScreenCount]
	ld [CurPartySpecies], a
	xor a
	ld [MonType], a
	ld [$d10b], a
	callab Functione039
	ld a, $6
	call Predef
	ld e, $0
	call LoadTradesPointer
	ld a, [hl]
	cp $3
	ld b, $0
	jr c, .asm_fcd1c
	ld b, $1

.asm_fcd1c
	callba Function4dba3
	ld e, $3
	call LoadTradesPointer
	ld de, FailedMessage
	call Functionfcdf4
	ld hl, PartyMon1Nickname
	ld bc, $000b
	call Functionfcdde
	ld hl, FailedMessage
	call Functionfcdf4
	ld e, $13
	call LoadTradesPointer
	push hl
	ld de, $c724
	call Functionfcdf4
	pop hl
	ld de, $c719
	call Functionfcdf4
	ld hl, PartyMon1OT
	ld bc, $000b
	call Functionfcdde
	ld hl, $c724
	call Functionfcdf4
	ld e, $e
	call LoadTradesPointer
	ld de, $c72f
	call Functionfce0f
	ld hl, PartyMon1DVs
	ld bc, $0030
	call Functionfcdde
	ld hl, $c72f
	call Functionfce0f
	ld e, $11
	call LoadTradesPointer
	ld de, $c732
	call Functionfce15
	ld hl, PartyMon1ID
	ld bc, $0030
	call Functionfcdde
	ld hl, $c731
	call Functionfce0f
	ld e, $10
	call LoadTradesPointer
	push hl
	ld hl, PartyMon1Item
	ld bc, $0030
	call Functionfcdde
	pop hl
	ld a, [hl]
	ld [de], a
	push af
	push bc
	push de
	push hl
	ld a, [CurPartyMon]
	push af
	ld a, [PartyCount]
	dec a
	ld [CurPartyMon], a
	callba Functione134
	pop af
	ld [CurPartyMon], a
	pop hl
	pop de
	pop bc
	pop af
	ret
; fcdc2



LoadTradesPointer: ; 0xfcdc2
	ld d, 0
	push de
	ld a, [$cf63]
	and $f
	swap a
	ld e, a
	ld d, $0
	ld hl, Trades
	add hl, de
	add hl, de
	pop de
	add hl, de
	ret
; 0xfcdd7

Functionfcdd7: ; fcdd7
	ld a, [CurPartyMon]
	call AddNTimes
	ret
; fcdde

Functionfcdde: ; fcdde
	ld a, [PartyCount]
	dec a
	call AddNTimes
	ld e, l
	ld d, h
	ret
; fcde8

Functionfcde8: ; fcde8
	push de
	ld [$d265], a
	call GetBasePokemonName
	ld hl, StringBuffer1
	pop de
	ret
; fcdf4

Functionfcdf4: ; fcdf4
	ld bc, $000b
	call CopyBytes
	ret
; fcdfb

INCBIN "baserom.gbc",$fcdfb,$fce0f - $fcdfb


Functionfce0f: ; fce0f
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	ret
; fce15

Functionfce15: ; fce15
	ld a, [hli]
	ld [de], a
	dec de
	ld a, [hl]
	ld [de], a
	ret
; fce1b

Functionfce1b: ; fce1b
	ld e, $2
	call LoadTradesPointer
	ld a, [hl]
	call Functionfcde8
	ld de, StringBuffer2
	call Functionfcdf4
	ld e, $1
	call LoadTradesPointer
	ld a, [hl]
	call Functionfcde8
	ld de, $d050
	call Functionfcdf4
	ld hl, StringBuffer1
.asm_fce3c
	ld a, [hli]
	cp $50
	jr nz, .asm_fce3c
	dec hl
	push hl
	ld e, $1e
	call LoadTradesPointer
	ld a, [hl]
	pop hl
	and a
	ret z
	cp $1
	ld a, $ef
	jr z, .asm_fce54
	ld a, $f5

.asm_fce54
	ld [hli], a
	ld [hl], $50
	ret
; fce58


Trades: ; 0xfce58
; byte 1: dialog
; byte 2: givemon
; byte 3: getmon
; bytes 4-14 nickname
; bytes 15-16 DVs
; byte 17 held item
; bytes 18-19 ID
; bytes 20-30 OT name
; byte 31 gender
; byte 32 XXX always zero?

	db 0,ABRA,MACHOP,"MUSCLE@@@@@", $37, $66,GOLD_BERRY, $54, $92,"MIKE@@@@@@@",0,0
	db 0,BELLSPROUT,ONIX,"ROCKY@@@@@@", $96, $66,BITTER_BERRY, $1e, $bf,"KYLE@@@@@@@",0,0
	db 1,KRABBY,VOLTORB,"VOLTY@@@@@@", $98, $88,PRZCUREBERRY, $05, $72,"TIM@@@@@@@@",0,0
	db 3,DRAGONAIR,DODRIO,"DORIS@@@@@@", $77, $66,SMOKE_BALL, $1b, $01,"EMY@@@@@@@@",2,0
	db 2,HAUNTER,XATU,"PAUL@@@@@@@", $96, $86,MYSTERYBERRY, $00, $3d,"CHRIS@@@@@@",0,0
	db 3,CHANSEY,AERODACTYL,"AEROY@@@@@@", $96, $66,GOLD_BERRY, $7b, $67,"KIM@@@@@@@@",0,0
	db 0,DUGTRIO,MAGNETON,"MAGGIE@@@@@", $96, $66,METAL_COAT, $a2, $c3,"FOREST@@@@@",0,0

Functionfcf38: ; fcf38
	push af
	call Functionfce1b
	pop af
	ld bc, $0008
	ld hl, $4f53
	call AddNTimes
	ld a, [$cf64]
	ld c, a
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld h, [hl]
	ld l, a
	call PrintText
	ret
; fcf53

INCBIN "baserom.gbc",$fcf53,$fcfec - $fcf53


Functionfcfec: ; fcfec
	ld a, [$d45c]
	and a
	ret nz
	call Function2d05
	and a
	ret nz
	xor a
	ld [$dc18], a
	call Functionfd044
	ret nc
	call Functionfd0c3
	ret nc
	ld b, $3f
	ld de, $500f
	callba Function97c4f
	scf
	ret
; fd00f

INCBIN "baserom.gbc",$fd00f,$fd017 - $fd00f
	call Functionfd0a6
	call Functionfd0eb
	ld a, [$dc18]
	and a
	jr nz, .asm_fd027
	ld hl, $dc17
	inc [hl]
.asm_fd027
	ld a, $1
	ld [$dbf9], a
	ld bc, CurFruit ; $d03f
	ld hl, $0
	add hl, bc
	ld [hl], $0
	inc hl
	ld [hl], $1
	ld hl, $9
	add hl, bc
	ld a, $3f
	ld [hli], a
	ld a, e
	ld [hli], a
	ld a, d
	ld [hl], a
	ret


Functionfd044: ; fd044
	ld a, [$dc17]
	cp $a
	jr nc, .asm_fd065
	call Functionfd117
	ld a, [hli]
	ld [$ffc3], a
	ld a, [hli]
	ld [$ffc4], a
	ld a, [hli]
	ld [$ffc5], a
	ld de, $d851
	ld bc, $ffc3
	callba Function1600b
	jr nc, .asm_fd067

.asm_fd065
	jr .asm_fd069

.asm_fd067
	scf
	ret

.asm_fd069
	ld hl, $ffc3
	ld [hl], $0
	inc hl
	ld [hl], $8
	inc hl
	ld [hl], $fc
.asm_fd074
	ld de, $dc19
	ld bc, $d851
	callba Function1600b
	jr z, .asm_fd08b
	jr nc, .asm_fd089
	call Functionfd099
	jr .asm_fd074

.asm_fd089
	xor a
	ret

.asm_fd08b
	call Functionfd099
	ld a, $5
	call Function2fb1
	inc a
	ld [$dc18], a
	scf
	ret
; fd099

Functionfd099: ; fd099
	ld de, $dc19
	ld bc, $ffc3
	callba Function16053
	ret
; fd0a6


; known jump sources: fd017 (3f:5017)
Functionfd0a6: ; fd0a6 (3f:50a6)
	call Functionfd117
	ld de, $3
	add hl, de
	ld a, [hli]
	ld [$FF00+$c3], a
	ld a, [hli]
	ld [$FF00+$c4], a
	ld a, [hli]
	ld [$FF00+$c5], a
	ld de, $d851
	ld bc, $ffc3
	callba Function15ffa
	ret


Functionfd0c3: ; fd0c3
	call Functionfd117
	ld de, $0006
	add hl, de
	ld a, [hli]
	cp $1
	jr z, .asm_fd0db
	ld a, [hl]
	ld c, a
	ld b, $1
	callba Function26ef1
	scf
	ret

.asm_fd0db
	ld a, [hl]
	ld [CurItem], a
	ld a, $1
	ld [$d10c], a
	ld hl, PCItems
	call ReceiveItem
	ret
; fd0eb


; known jump sources: fd01a (3f:501a)
Functionfd0eb: ; fd0eb (3f:50eb)
	call Functionfd117
	ld de, $6
	add hl, de
	ld a, [hli]
	ld de, $50fd
	cp $1
	ret z
	ld de, $510a
	ret
; fd0fd (3f:50fd)

INCBIN "baserom.gbc",$fd0fd,$fd117 - $fd0fd


Functionfd117: ; fd117
	ld a, [$dc18]
	and a
	jr z, .asm_fd123
	dec a
	ld de, $5136
	jr .asm_fd12e

.asm_fd123
	ld a, [$dc17]
	cp $a
	jr c, .asm_fd12b
	xor a

.asm_fd12b
	ld de, $515e

.asm_fd12e
	ld l, a
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, de
	ret
; fd136

INCBIN "baserom.gbc",$fd136,$fd1d0 - $fd136

Functionfd1d0: ; fd1d0
	ret
; fd1d1

INCBIN "baserom.gbc",$fd1d1,$fd1d2 - $fd1d1


SECTION "bank40", ROMX, BANK[$40]

Function100000: ; 100000
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	call Function100022
	call Function1000ba
	call Function100675
	call Function100057
	call Function10016f
	call Function100276
	push bc
	call Function100301
	pop bc
	pop af
	ld [rSVBK], a
	ret
; 100022

Function100022: ; 100022
	push de
	push bc
	call Function100063
	pop bc
	pop de
	ld a, d
	ld [$cd21], a
	ld a, e
	ld [CreditsTimer], a
	ld a, c
	ld [$cd23], a
	ld a, b
	ld [$cd24], a
	callba Function10127e
	callba Function106462
	callba Function106464
	callba Function11615a
	ld hl, VramState
	set 1, [hl]
	ret
; 100057

Function100057: ; 100057
	call Function1000a4
	call Function222a
	ld hl, VramState
	res 1, [hl]
	ret
; 100063

Function100063: ; 100063
	xor a
	ld hl, BGMapBuffer
	ld bc, $0065
	call ByteFill
	xor a
	ld hl, $c300
	ld bc, Start
	call ByteFill
	ld a, [rIE]
	ld [BGMapBuffer], a
	xor a
	ld [$ffde], a
	ld [hLCDStatCustom], a
	ret
; 100082

INCBIN "baserom.gbc",$100082,$1000a4 - $100082

Function1000a4: ; 1000a4
	di
	xor a
	ld [$ffc9], a
	ld [$ffe9], a
	xor a
	ld [$ff9e], a
	call NormalSpeed
	xor a
	ld [rIF], a
	ld a, [BGMapBuffer]
	ld [rIE], a
	ei
	ret
; 1000ba

Function1000ba: ; 1000ba
.asm_1000ba
	ld hl, $cd23
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [$cd25]
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [CreditsTimer]
	call GetFarHalfword
	ld a, [CreditsTimer]
	rst FarCall
	call Function1000e8
	call Function1000fa
	call Function100144
	call Function100163
	ld a, [$cd2b]
	and a
	jr z, .asm_1000ba
	call DelayFrame
	ret
; 1000e8

Function1000e8: ; 1000e8
	ld hl, $cd29
	bit 7, [hl]
	ret z
	callba Function115dd3
	ld hl, $cd29
	set 6, [hl]
	ret
; 1000fa

Function1000fa: ; 1000fa
	ld a, [$c30d]
	and a
	ret z
	ld hl, $cd29
	bit 4, [hl]
	ret z
	ld a, [$cd2b]
	and a
	jr nz, .asm_100117
	callba Function11619d
	ld hl, $cd29
	set 6, [hl]
	ret

.asm_100117
	di
	xor a
	ld [rIF], a
	ld a, [rIE]
	and $13
	ld [rIE], a
	xor a
	ld [$ffc9], a
	ld [$ffe9], a
	ei
	ld a, [InLinkBattle]
	push af
	xor a
	ld [InLinkBattle], a
	ld a, $4
	ld [$c319], a
	callba Function11619d
	ld hl, $cd29
	set 6, [hl]
	pop af
	ld [InLinkBattle], a
	ret
; 100144

Function100144: ; 100144
	ld hl, $cd29
	bit 5, [hl]
	jr z, .asm_100155
	res 5, [hl]
	res 2, [hl]
	res 6, [hl]
	call Function100320
	ret

.asm_100155
	bit 2, [hl]
	ret z
	res 2, [hl]
	res 6, [hl]
	callba Function10402d
	ret
; 100163

Function100163: ; 100163
	ld hl, $cd29
	bit 6, [hl]
	ret z
	res 6, [hl]
	call DelayFrame
	ret
; 10016f

Function10016f: ; 10016f
	ld a, [$cd2b]
	cp $1
	ret z
	cp $2
	ret z
	cp $ff
	jp z, .asm_1001f5
	cp $fe
	jr z, .asm_1001c4
	cp $f5
	jr z, .asm_1001e7
	cp $f6
	jr z, .asm_1001b6
	cp $fa
	jp z, .asm_1001bd
	cp $f7
	jp z, .asm_1001ee
	cp $f4
	jr z, .asm_1001d2
	cp $f3
	jr z, .asm_1001cb
	cp $f1
	jr z, .asm_1001c4
	cp $f2
	jr z, .asm_1001c4
	cp $fc
	jr z, .asm_1001e6
	cp $fb
	jr z, .asm_1001af
	cp $f8
	ret z
	ret

.asm_1001af
	ld a, $d7
	ld de, $0000
	jr .asm_1001d7

.asm_1001b6
	ld a, $d5
	ld de, $0000
	jr .asm_1001d7

.asm_1001bd
	ld a, $d6
	ld de, $0000
	jr .asm_1001d7

.asm_1001c4
	ld a, $d2
	ld de, $0002
	jr .asm_1001d7

.asm_1001cb
	ld a, $d1
	ld de, $0001
	jr .asm_1001d7

.asm_1001d2
	ld a, $d0
	ld de, $0000

.asm_1001d7
	ld [$c300], a
	ld a, d
	ld [$c302], a
	ld a, e
	ld [$c301], a
	call Function10020b
	ret

.asm_1001e6
	ret

.asm_1001e7
	ld de, String10025e
	call Function100232
	ret

.asm_1001ee
	ld de, String10024d
	call Function100232
	ret

.asm_1001f5
	ld a, [$cd2c]
	ld [$c300], a
	ld a, [$cd2d]
	ld [$c302], a
	ld a, [$cd2d]
	ld [$c301], a
	call Function10020b
	ret
; 10020b

Function10020b: ; 10020b
	xor a
	ld [$c303], a
	callba Function8c084
	callba Function106464
	call HideSprites
	call DelayFrame
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	callba Function17f555
	pop af
	ld [rSVBK], a
	ret
; 100232

Function100232: ; 100232
	push de
	callba Function106464
	call Function3f20
	call Function1ad2
	hlcoord 1, 2
	pop de
	call PlaceString
	call Function100320
	call Functiona36
	ret
; 10024d

String10024d: ; 10024d
	db "つうしんを キャンセル しました@"
; 10025e

String10025e: ; 10025e
	db "おともだちと えらんだ へやが", $4e
	db "ちがうようです@"
; 100276

Function100276: ; 100276
	ld a, [$cd2b]
	cp $1
	jr z, .asm_10029f
	cp $2
	jr z, .asm_100296
	cp $f5
	jr z, .asm_1002a5
	cp $f6
	jr z, .asm_1002a5
	cp $f7
	jr z, .asm_100293
	cp $f8
	jr z, .asm_1002b1
	jr .asm_1002c0

.asm_100293
	ld c, $2
	ret

.asm_100296
	callba Script_reloadmappart
	ld c, $4
	ret

.asm_10029f
	call Function1002dc
	ld c, $0
	ret

.asm_1002a5
	callba Script_reloadmappart
	call Function1002ed
	ld c, $3
	ret

.asm_1002b1
	call Function1002c9
	call Function1002dc
	ld de, String10024d
	call Function100232
	ld c, $2
	ret

.asm_1002c0
	call Function1002c9
	call Function1002dc
	ld c, $1
	ret
; 1002c9

Function1002c9: ; 1002c9
	ld hl, $cd2a
	bit 0, [hl]
	ret z
	callba Function3f6d0
	callba Function1500c
	ret
; 1002dc

Function1002dc: ; 1002dc
	ld a, $f8
	ld [$ff9f], a
	callba Function15363
	xor a
	ld [$ff9f], a
	call Functione51
	ret
; 1002ed

Function1002ed: ; 1002ed
	callba Function49409
	callba Function96a4
	ld a, $1
	ld [hCGBPalUpdate], a
	call DelayFrame
	ret
; 100301

Function100301: ; 100301
	ld hl, $cd2a
	bit 1, [hl]
	ret z
	callba Function106464
	callba Function10202c
	callba Function115dd3
	call Function100320
	call Functiona36
	ret
; 100320

Function100320: ; 100320
	callba Function104099
	ret
; 100327

INCBIN "baserom.gbc",$100327,$10032e - $100327


Function10032e: ; 10032e
	call Function10034d
	ld e, a
	ret nc
	ld [$cd2b], a
	ret
; 100337

Function100337: ; 100337
	call Function10032e
	ret c
	ld a, [$c821]
	bit 4, a
	jr z, .asm_100345
	ld a, e
	and a
	ret

.asm_100345
	ld a, $f9
	ld e, a
	ld [$cd2b], a
	scf
	ret
; 10034d



Function10034d: ; 10034d
	ld a, [$c821]
	bit 1, a
	jr nz, .asm_10036a
	bit 2, a
	jr nz, .asm_10037e
	bit 3, a
	jr nz, .asm_100366
	bit 0, a
	jr nz, .asm_100364
	ld a, $1
	and a
	ret

.asm_100364
	xor a
	ret

.asm_100366
	ld a, $2
	and a
	ret

.asm_10036a
	ld a, $0
	call Function3e32
	ld [$cd2c], a
	ld a, h
	ld [$cd2d], a
	ld a, l
	ld [$cd2e], a
	ld a, $ff
	scf
	ret

.asm_10037e
	ld a, $fe
	scf
	ret
; 100382

Function100382: ; 100382
	ld a, [$cd27]
	ld hl, $444e
	rst JumpTable
	ret
; 10038a

Function10038a: ; 10038a
	ld hl, $ccb4
	ld a, $2e
	call Function3e32
	ret
; 100393

Function100393: ; 100393
	ld hl, $cc60
	ld a, $3a
	call Function3e32
	ret
; 10039c

Function10039c: ; 10039c
	ld hl, $cc60
	ld de, $d000
	ld bc, $0054
	ld a, $3
	call FarCopyWRAM
	ret
; 1003ab

INCBIN "baserom.gbc",$1003ab,$1003ba - $1003ab


Function1003ba: ; 1003ba
	ld hl, $ccb4
	ld de, $d080
	ld bc, $0054
	ld a, $3
	call FarCopyWRAM
	ret
; 1003c9

Function1003c9: ; 1003c9
	ld hl, $d080
	ld de, $ccb4
	ld bc, $0054
	ld a, $3
	call FarCopyWRAM
	ret
; 1003d8

Function1003d8: ; 1003d8
	ld hl, $ccb4
	ld a, [hli]
	ld c, a
	ld b, $0
	push hl
	add hl, bc
	ld a, [BGMapPalBuffer]
	ld [hl], a
	pop hl
	inc bc
	call Function10043a
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, c
	add $2
	ld [$ccb4], a
	ret
; 1003f5

Function1003f5: ; 1003f5
	ld a, [$cc60]
	sub $3
	ld [$cc60], a
	ld a, [$ccb4]
	sub $3
	ld [$ccb4], a
	ret
; 100406

Function100406: ; 100406
	ld a, [$cc60]
	sub $2
	ld c, a
	ld b, $0
	ld hl, $cc61
	call Function10043a
	add hl, bc
	ld a, [hli]
	cp e
	jr nz, .asm_100426
	ld a, [hld]
	cp d
	jr nz, .asm_100426
	dec hl
	ld a, [BGMapPalBuffer]
	cp [hl]
	jr nz, .asm_10042d
	xor a
	ret

.asm_100426
	ld a, $f4
	ld [$cd2b], a
	jr .asm_100432

.asm_10042d
	ld a, $f3
	ld [$cd2b], a

.asm_100432
	push hl
	ld hl, $cd7c
	inc [hl]
	pop hl
	scf
	ret
; 10043a

Function10043a: ; 10043a
	push hl
	push bc
	ld de, $0000
.asm_10043f
	ld a, [hli]
	add e
	ld e, a
	ld a, d
	adc $0
	ld d, a
	dec bc
	ld a, b
	or c
	jr nz, .asm_10043f
	pop bc
	pop hl
	ret
; 10044e


; no known jump sources
Jumptable_10044e: ; 10044e (40:444e)
	dw Function10046a
	dw Function10047c
	dw Function100493
	dw Function1004ba
	dw Function1004f4
	dw Function1004ce
	dw Function1004de
	dw Function1004a4
	dw Function100495
	dw Function1004ce
	dw Function1004de
	dw Function1004e9
	dw Function1004f4
	dw Function1004a4



Function10046a: ; 10046a
	ld hl, BGMapPalBuffer
	inc [hl]
	call Function1003d8
	call Function1003ba
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret
; 10047c

Function10047c: ; 10047c
	call Function100337
	ret c
	ret z
	cp $2
	jr z, .asm_100487
	jr .asm_10048d

.asm_100487
	ld a, $8
	ld [$cd27], a
	ret

.asm_10048d
	ld a, $2
	ld [$cd27], a
	ret
; 100493

Function100493: ; 100493
	jr asm_100497

Function100495: ; 100495
	jr asm_100497

asm_100497
	call Function100337
	ret c
	ret z
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret
; 1004a4

Function1004a4: ; 1004a4
	call Function100406
	jr c, .asm_1004b8
	call Function1003c9
	call Function1003f5
	ld a, [$cd27]
	set 7, a
	ld [$cd27], a
	ret

.asm_1004b8
	scf
	ret
; 1004ba

Function1004ba: ; 1004ba
	call Function10038a
	and a
	jr nz, .asm_1004c8
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret

.asm_1004c8
	ld a, $8
	ld [$cd27], a
	ret
; 1004ce

Function1004ce: ; 1004ce
	call Function100337
	ret c
	ret z
	cp $2
	ret nz
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret
; 1004de

Function1004de: ; 1004de
	call Function100393
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret
; 1004e9

Function1004e9: ; 1004e9
	call Function10038a
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	ret
; 1004f4

Function1004f4: ; 1004f4
	call Function100337
	ret c
	ret z
	ld a, [$cd27]
	inc a
	ld [$cd27], a
	call Function10039c
	ret
; 100504

Function100504: ; 100504
	push de
	call Function3f20
	call Function1ad2
	pop de
	ld hl, $c4cc
	call PlaceString
	ret
; 100513

INCBIN "baserom.gbc",$100513,$10062d - $100513


Function10062d: ; 10062d
	push bc
	call Function10064e
	pop bc
	ld a, [$cd44]
	cp b
	jr nc, .asm_10063a
	and a
	ret

.asm_10063a
	ld a, $fa
	ld [$cd2b], a
	scf
	ret
; 100641

Function100641: ; 100641
	xor a
	ld [$cd44], a
	ld [$cd45], a
	ld [$cd46], a
	ret
; 10064c

INCBIN "baserom.gbc",$10064c,$10064e - $10064c


Function10064e: ; 10064e
	ld hl, $cd46
	ld a, [hl]
	add c
	cp $3c
	jr c, .asm_100658
	xor a

.asm_100658
	ld [hld], a
	ret c
	ld a, [hl]
	inc a
	cp $3c
	jr c, .asm_100661
	xor a

.asm_100661
	ld [hld], a
	ret c
	inc [hl]
	ret
; 100665

INCBIN "baserom.gbc",$100665,$100675 - $100665

Function100675: ; 100675
	ld hl, $cd2a
	bit 2, [hl]
	set 2, [hl]
	ret nz
	call Function1006d3
	ret
; 100681

Function100681: ; 100681
	push hl
	ld hl, $cd2a
	bit 2, [hl]
	ld hl, $cd2a
	set 2, [hl]
	pop hl
	jr nz, .asm_100694
	push hl
	call Function1006d3
	pop hl

.asm_100694
	ld de, $cd32
	ld a, [de]
	and a
	jr nz, .asm_1006bb
	inc de
	push de
	call .asm_1006b4
	ld de, String1006c2
	call PlaceString
	ld h, b
	ld l, c
	pop de
	inc de
	call .asm_1006b4
	ld de, String1006c6
	call PlaceString
	ret

.asm_1006b4
	ld bc, $8102
	call PrintNum
	ret

.asm_1006bb
	ld de, String1006ca
	call PlaceString
	ret
; 1006c2

String1006c2: ; 1006c2
	db "ふん @"
String1006c6: ; 1006c6
	db "びょう@"
String1006ca: ; 1006ca
	db "1じかんいじょう@"
; 1006d3

Function1006d3: ; 1006d3
	call UpdateTime
	ld de, $cd34
	ld hl, $cd38

Function1006dc: ; 1006dc
	ld a, [hld]
	ld c, a
	ld a, [hSeconds]
	sub c
	jr nc, .asm_1006e5
	add $3c

.asm_1006e5
	ld [de], a
	dec de
	ld a, [hld]
	ld c, a
	ld a, [hMinutes]
	sbc c
	jr nc, .asm_1006f0
	add $3c

.asm_1006f0
	ld [de], a
	dec de
	ld a, [hl]
	ld c, a
	ld a, [hHours]
	sbc c
	jr nc, .asm_1006fb
	add $18

.asm_1006fb
	ld [de], a
	ret
; 1006fd

Function1006fd: ; 1006fd
	ld a, $4
	ld hl, $a800
	call GetSRAMBank
	xor a
	ld [hli], a
	ld [hli], a
	ld [hli], a
	call CloseSRAM
	ret
; 10070d

Function10070d: ; 10070d
	ld a, $4
	ld hl, $a800
	call GetSRAMBank
	xor a
	ld [hli], a
	ld a, $a
	ld [hli], a
	xor a
	ld [hli], a
	call CloseSRAM
	ret
; 100720

INCBIN "baserom.gbc",$100720,$10079c - $100720


Function10079c: ; 10079c
	ld a, [$cd21]
	cp $1
	jr nz, .asm_1007f4
	ld hl, $cd2a
	bit 5, [hl]
	jr nz, .asm_1007f4
	ld hl, $cd2a
	bit 6, [hl]
	jr nz, .asm_1007f4
	ld a, [$cd6a]
	add c
	cp $3c
	jr nc, .asm_1007be
	ld [$cd6a], a
	and a
	ret

.asm_1007be
	sub $3c
	ld [$cd6a], a
	ld d, b
	push de
	call Function1007f6
	pop de
	jr c, .asm_1007e5
	ld a, c
	and a
	jr nz, .asm_1007e5
	ld a, b
	cp $a
	jr nc, .asm_1007e5
	ld a, d
	and a
	ret z
	ld a, [$cd6b]
	cp b
	ret z
	ld a, b
	ld [$cd6b], a
	call Function1008e0
	and a
	ret

.asm_1007e5
	call Function1008e0
	ld hl, $cd2a
	set 4, [hl]
	ld a, $fc
	ld [$cd2b], a
	scf
	ret

.asm_1007f4
	and a
	ret
; 1007f6

Function1007f6: ; 1007f6
	call UpdateTime
	ld hl, $cd74
	ld de, $cd71
	call Function1006dc
	ld a, $4
	call GetSRAMBank
	ld hl, $a802
	call Function100826
	call CloseSRAM
	ld hl, $cd6e
	call Function100826
	ld a, [hHours]
	ld [$cd72], a
	ld a, [hMinutes]
	ld [$cd73], a
	ld a, [hSeconds]
	ld [$cd74], a
	ret
; 100826

Function100826: ; 100826
	ld a, [$cd71]
	add [hl]
	sub $3c
	jr nc, .asm_100830
	add $3c

.asm_100830
	ld [hld], a
	ccf
	ld a, [BGMapBufferPtrs]
	adc [hl]
	sub $3c
	jr nc, .asm_10083c
	add $3c

.asm_10083c
	ld [hld], a
	ld b, a
	ccf
	ld a, [$cd6f]
	adc [hl]
	ld [hl], a
	ld c, a
	ret
; 100846

INCBIN "baserom.gbc",$100846,$1008a6 - $100846

Function1008a6: ; 1008a6
	ld a, $4
	ld hl, $a800
	call GetSRAMBank
	ld a, [hli]
	ld [StringBuffer2], a
	ld a, [hli]
	ld [$d087], a
	ld a, [hli]
	ld [$d088], a
	call CloseSRAM
	ld a, [$d088]
	ld b, a
	ld a, $0
	sub b
	jr nc, .asm_1008c8
	add $3c

.asm_1008c8
	ld b, a
	ld a, [$d087]
	ld c, a
	ld a, $a
	sbc c
	ld c, a
	jr c, .asm_1008da
	ld a, [StringBuffer2]
	and a
	jr nz, .asm_1008da
	ret

.asm_1008da
	call Function10070d
	ld c, $0
	ret
; 1008e0


Function1008e0: ; 1008e0
	ld a, [hBGMapMode]
	ld b, a
	ld a, [$ff9e]
	ld c, a
	push bc
	xor a
	ld [hBGMapMode], a
	ld a, $3
	ld [$ff9e], a
	call Function100970
	call Function100902
	call Function100989
	call DelayFrame
	pop bc
	ld a, c
	ld [$ff9e], a
	ld a, b
	ld [hBGMapMode], a
	ret
; 100902

Function100902: ; 100902
	ld hl, $c56b
	ld b, $1
	ld c, $b
	call TextBox
	ld a, [$cd6d]
	ld c, a
	ld a, $a
	sub c
	ld [StringBuffer2], a
	jr z, .asm_10093f
	ld de, .string_100966
	ld hl, $c580
	call PlaceString
	ld hl, $c584
	ld bc, $0102
	ld de, StringBuffer2
	call PrintNum
	ld de, SFX_TWO_PC_BEEPS
	call PlaySFX
	callba Function104061
	ld c, $3c
	call DelayFrames
	ret

.asm_10093f
	ld de, .string_10095a
	ld hl, $c580
	call PlaceString
	ld de, SFX_4_NOTE_DITTY
	call PlaySFX
	callba Function104061
	ld c, $78
	call DelayFrames
	ret
; 10095a

.string_10095a ; 10095a
	db "たいせん しゅうりょう@"
.string_100966 ; 100966
	db "のこり   ふん", $e7, "@"
; 100970


Function100970: ; 100970
	ld hl, TileMap
	ld de, $dc00
	call Function1009a5
	ld hl, AttrMap
	ld de, $dd68
	call Function1009a5
	call Function1009d2
	call Function1009ae
	ret
; 100989

Function100989: ; 100989
	ld hl, $dc00
	ld de, TileMap
	call Function1009a5
	call Function1009ae
	callba Function104061
	ld hl, $dd68
	ld de, AttrMap
	call Function1009a5
	ret
; 1009a5

Function1009a5: ; 1009a5
	ld bc, $0168
	ld a, $3
	call FarCopyWRAM
	ret
; 1009ae

Function1009ae: ; 1009ae
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld hl, $d800
	ld de, AttrMap
	ld c, $14
	ld b, $12
.asm_1009bf
	push bc
.asm_1009c0
	ld a, [hli]
	ld [de], a
	inc de
	dec c
	jr nz, .asm_1009c0
	ld bc, $000c
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_1009bf
	pop af
	ld [rSVBK], a
	ret
; 1009d2

Function1009d2: ; 1009d2
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld a, [rVBK]
	push af
	ld a, $1
	ld [rVBK], a
	ld hl, $d800
	ld de, VBGMap0
	ld bc, $0324
	call Get2bpp
	pop af
	ld [rVBK], a
	pop af
	ld [rSVBK], a
	ret
; 1009f3

Function1009f3: ; 1009f3
	ld a, [hJoyDown]
	and $5
	cp $5
	jr nz, .asm_100a07
	ld hl, $cd2a
	set 4, [hl]
	ld a, $f8
	ld [$cd2b], a
	scf
	ret

.asm_100a07
	xor a
	ret
; 100a09

Function100a09: ; 100a09
	call Function100a2e
	ld [$d431], a
	callba Function4000
	ld a, [InLinkBattle]
	cp $4
	jr nz, .asm_100a2a
	call Function100a87
	call Function100da5
	callba Function3ee27
	jr .asm_100a2d

.asm_100a2a
	call Function100a53

.asm_100a2d
	ret
; 100a2e

Function100a2e: ; 100a2e
	ld a, [$d0ec]
	and a
	jr nz, .asm_100a48
	ld a, [CurPlayerMove]
	ld b, $e
	cp $a5
	jr z, .asm_100a4f
	ld b, $d
	cp $ff
	jr z, .asm_100a4f
	ld a, [CurMoveNum]
	jr .asm_100a50

.asm_100a48
	ld a, [CurPartyMon]
	add $4
	jr .asm_100a50

.asm_100a4f
	ld a, b

.asm_100a50
	and $f
	ret
; 100a53

Function100a53: ; 100a53
	ld a, [$d431]
	ld [$cf56], a
	ld a, $ff
	ld [$cf52], a
.asm_100a5e
	call Function8c1
	call DelayFrame
	ld a, [$cf52]
	inc a
	jr z, .asm_100a5e
	ld b, $a
.asm_100a6c
	call DelayFrame
	call Function8c1
	dec b
	jr nz, .asm_100a6c
	ld b, $a
.asm_100a77
	call DelayFrame
	call Function908
	dec b
	jr nz, .asm_100a77
	ld a, [$cf52]
	ld [$d430], a
	ret
; 100a87

Function100a87: ; 100a87
	call Function100acf
	call Function100641
	ld a, $0
	ld [$cd27], a
.asm_100a92
	call DelayFrame
	call GetJoypadPublic
	callba Function100382
	ld c, $1
	ld b, $3
	push bc
	call Function10062d
	pop bc
	jr c, .asm_100ac7
	ld b, $1
	call Function10079c
	jr c, .asm_100ac7
	call Function1009f3
	jr c, .asm_100ac7
	ld a, [$cd2b]
	and a
	jr nz, .asm_100ac7
	ld a, [$cd27]
	bit 7, a
	jr z, .asm_100a92
	call Function100ae7
	jr .asm_100ace

.asm_100ac7
	ld a, $f
	ld [$d430], a
	jr .asm_100ace

.asm_100ace
	ret
; 100acf

Function100acf: ; 100acf
	ld de, $4b0a
	ld hl, $ccb5
	ld a, [$d431]
	ld [hli], a
	ld c, $1
.asm_100adb
	ld a, [de]
	inc de
	ld [hli], a
	inc c
	and a
	jr nz, .asm_100adb
	ld a, c
	ld [$ccb4], a
	ret
; 100ae7

Function100ae7: ; 100ae7
	ld de, $4b0a
	ld hl, $cc62
.asm_100aed
	ld a, [de]
	inc de
	and a
	jr z, .asm_100af8
	cp [hl]
	jr nz, .asm_100aff
	inc hl
	jr .asm_100aed

.asm_100af8
	ld a, [$cc61]
	ld [$d430], a
	ret

.asm_100aff
	ld a, $f
	ld [$d430], a
	ld a, $f1
	ld [$cd2b], a
	ret
; 100b0a

INCBIN "baserom.gbc",$100b0a,$100b12 - $100b0a


Function100b12: ; 100b12
	call Function100dd8
	ret c
	ld hl, $4f2c
	ld a, $9
	ld de, LoadMenuDataHeader
	call FarCall_de
	ld a, $9
	ld [$cf94], a
	ld a, [$d0d2]
	ld [$cf88], a
	call Function100e72
	call Function100b45
	callba Function8e85
	call Function100ed4
	ld a, [$cf88]
	ld [$d0d2], a
	call Function1c07
	ret
; 100b45

Function100b45: ; 100b45
	call Function100b7a
.asm_100b48
	call Function100dd2
	callba Function241ba
	push bc
	callba Function10402d
	call Function100e2d
	pop bc
	jr c, .asm_100b6b
	ld a, [$cfa8]
	and c
	jr z, .asm_100b48
	callba Function24098
	ret

.asm_100b6b
	ld a, [$cfa4]
	ld c, a
	ld a, [$cfa3]
	call SimpleMultiply
	ld [$cf88], a
	and a
	ret
; 100b7a

Function100b7a: ; 100b7a
	ld hl, Function1c66
	ld a, [$cf94]
	rst FarCall
	callba Function24085
	callba MobileTextBorder
	call Function1ad2
	call Function321c
	callba Function2411a
	ld hl, $cfa5
	set 7, [hl]
	ret
; 100b9f

Function100b9f: ; 100b9f
	xor a
	ld [$d0e3], a
	callba Function3e786
	ret z
	call Function100dd8
	jp c, Function2ec8
	call Function100e72
	call Function100bc2
	push af
	callba Function8e85
	call Function100ed4
	pop af
	ret
; 100bc2

Function100bc2: ; 100bc2
	xor a
	ld [hBGMapMode], a
	call Function100c74
	call Function100c98
.asm_100bcb
	callba MoveInfoBox
.asm_100bd1
	call Function100dd2
	callba Function241ba
	push bc
	callba Function10402d
	call Function100e2d
	pop bc
	jr c, .asm_100c25
	ld a, [$cfa8]
	and c
	bit 6, a
	jp nz, .asm_100bff
	bit 7, a
	jp nz, .asm_100c10
	bit 0, a
	jr nz, .asm_100c30
	bit 1, a
	jr nz, .asm_100c25
	jr .asm_100bd1

.asm_100bff
	ld a, [$cfa9]
	and a
	jp nz, .asm_100bcb
	ld a, [$d0eb]
	inc a
	ld [$cfa9], a
	jp .asm_100bcb

.asm_100c10
	ld a, [$cfa9]
	ld b, a
	ld a, [$d0eb]
	inc a
	inc a
	cp b
	jp nz, .asm_100bcb
	ld a, $1
	ld [$cfa9], a
	jp .asm_100bcb

.asm_100c25
	ld a, [$cfa9]
	dec a
	ld [CurMoveNum], a
	ld a, $1
	and a
	ret

.asm_100c30
	ld a, [$cfa9]
	dec a
	ld [CurMoveNum], a
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, $0
	ld hl, BattleMonPPMove1
	add hl, bc
	ld a, [hl]
	and $3f
	jr z, .asm_100c68
	ld a, [PlayerDisableCount]
	swap a
	and $f
	dec a
	cp c
	jr z, .asm_100c63
	ld a, [$cfa9]
	dec a
	ld c, a
	ld b, $0
	ld hl, BattleMonMove1
	add hl, bc
	ld a, [hl]
	ld [CurPlayerMove], a
	xor a
	ret

.asm_100c63
	ld hl, $4c5b
	jr .asm_100c6b

.asm_100c68
	ld hl, $4c39

.asm_100c6b
	call StdBattleTextBox
	call Function30b4
	jp Function100bc2
; 100c74

Function100c74: ; 100c74
	ld hl, $c540
	ld b, $8
	ld c, $8
	call TextBox
	ld hl, BattleMonMove1
	ld de, $d25e
	ld bc, $0004
	call CopyBytes
	ld a, $28
	ld [MagikarpLength], a
	ld hl, $c56a
	ld a, $20
	call Predef
	ret
; 100c98

Function100c98: ; 100c98
	ld de, $4cad
	call Function1bb1
	ld a, [$d0eb]
	inc a
	ld [$cfa3], a
	ld a, [CurMoveNum]
	inc a
	ld [$cfa9], a
	ret
; 100cad

INCBIN "baserom.gbc",$100cad,$100cb5 - $100cad


Function100cb5: ; 100cb5
	call Function100dd8
	ret c
	ld hl, $cfa5
	set 7, [hl]
	res 6, [hl]
.asm_100cc0
	call Function100dd2
	callba Function241ba
	push bc
	callba Function8cf69
	callba Function10402d
	call Function100dfd
	pop bc
	jr c, .asm_100d17
	ld a, [$cfa8]
	and c
	jr z, .asm_100cc0
	call Function1bee
	ld a, [PartyCount]
	inc a
	ld b, a
	ld a, [$cfa9]
	cp b
	jr z, .asm_100d17
	ld [$d0d8], a
	ld a, [$ffa9]
	ld b, a
	bit 1, b
	jr nz, .asm_100d17
	ld a, [$cfa9]
	dec a
	ld [CurPartyMon], a
	ld c, a
	ld b, $0
	ld hl, PartySpecies
	add hl, bc
	ld a, [hl]
	ld [CurPartySpecies], a
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	and a
	ret

.asm_100d17
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	scf
	ret
; 100d22

Function100d22: ; 100d22
	call Function100dd8
	ret c
	call Function100d67
	ld hl, $cfa5
	set 7, [hl]
	res 6, [hl]
.asm_100d30
	call Function100dd2
	callba Function241ba
	push bc
	callba Function8cf69
	callba Function10402d
	call Function100dfd
	pop bc
	jr c, .asm_100d54
	ld a, [$cfa8]
	and c
	jr nz, .asm_100d56
	jr .asm_100d30

.asm_100d54
	scf
	ret

.asm_100d56
	push af
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	pop af
	bit 1, a
	jr z, .asm_100d65
	ret z
	scf
	ret

.asm_100d65
	and a
	ret
; 100d67

Function100d67: ; 100d67
	ld hl, $4d88
	call Function1d3c
	xor a
	ld [hBGMapMode], a
	call Function1cbb
	call Function1ad2
	call Function1c89
	call WaitBGMap
	call Function1c66
	call Function1c10
	ld hl, $cfa5
	set 6, [hl]
	ret
; 100d88

INCBIN "baserom.gbc",$100d88,$100da5 - $100d88


Function100da5: ; 100da5
	ld hl, $cd2a
	res 3, [hl]
	ld hl, $cd29
	res 0, [hl]
	ret
; 100db0

Function100db0: ; 100db0
	ld hl, $cd2a
	bit 3, [hl]
	jr nz, .asm_100dbe
	ld hl, $cd2a
	set 3, [hl]
	scf
	ret

.asm_100dbe
	xor a
	ret
; 100dc0



Function100dc0: ; 100dc0
	ld a, [InLinkBattle]
	cp $4
	jr nz, .asm_100dd0
	ld hl, $cd2a
	bit 3, [hl]
	jr z, .asm_100dd0
	scf
	ret

.asm_100dd0
	xor a
	ret
; 100dd2

Function100dd2: ; 100dd2
	ld a, $1e
	ld [OverworldDelay], a
	ret
; 100dd8

Function100dd8: ; 100dd8
	ld c, $1
	ld b, $3
	callba Function10062d
	jr c, .asm_100dfb
	ld c, $3c
	ld b, $1
	call Function10079c
	jr c, .asm_100dfb
	callba Function10032e
	ld a, [$cd2b]
	and a
	jr nz, .asm_100dfb
	xor a
	ret

.asm_100dfb
	scf
	ret
; 100dfd

Function100dfd: ; 100dfd
	ld a, [OverworldDelay]
	ld c, a
	ld a, $1e
	sub c
	ld c, a
	ld b, $3
	push bc
	callba Function10062d
	pop bc
	jr c, .asm_100e2b
	ld b, $1
	call Function10079c
	jr c, .asm_100e2b
	call Function1009f3
	jr c, .asm_100e2b
	callba Function10032e
	ld a, [$cd2b]
	and a
	jr nz, .asm_100e2b
	xor a
	ret

.asm_100e2b
	scf
	ret
; 100e2d

Function100e2d: ; 100e2d
	ld a, [OverworldDelay]
	ld c, a
	ld a, $1e
	sub c
	ld c, a
	ld b, $3
	push bc
	callba Function10062d
	pop bc
	jr c, .asm_100e61
	ld b, $1
	call Function10079c
	jr c, .asm_100e61
	call Function1009f3
	jr c, .asm_100e61
	callba Function10032e
	ld a, [$cd2b]
	and a
	jr nz, .asm_100e61
	call Function100e63
	call Function100e84
	xor a
	ret

.asm_100e61
	scf
	ret
; 100e63

Function100e63: ; 100e63
	ld a, e
	cp $2
	ret nz
	call Function100db0
	ret nc
	ld de, SFX_ELEVATOR_END
	call PlaySFX
	ret
; 100e72

Function100e72: ; 100e72
	xor a
	ld hl, $cd29
	bit 0, [hl]
	jr z, .asm_100e7c
	ld a, $a

.asm_100e7c
	ld [$cd67], a
	xor a
	ld [$cd68], a
	ret
; 100e84

Function100e84: ; 100e84
	ld a, [$cd67]
	ld hl, $4e8c
	rst JumpTable
	ret
; 100e8c


; no known jump sources
Jumptable_100e8c: ; 100e8c (40:4e8c)
	dw Function100ea2
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100eb4
	dw Function100eae
	dw Function100ec4


; no known jump sources
Function100ea2: ; 100ea2 (40:4ea2)
	call Function100dc0
	ret nc
	ld hl, $cd29
	set 0, [hl]
	call Function100ec5


Function100eae: ; 100eae
	scf
	call Function100eca
	jr asm_100eb8

Function100eb4: ; 100eb4
	and a
	call Function100eca

asm_100eb8
	ld hl, $cd68
	inc [hl]
	ld a, [hl]
	cp $2
	ret c
	ld [hl], $0
	jr Function100ec5

Function100ec4: ; 100ec4
	ret

Function100ec5
	ld hl, $cd67
	inc [hl]
	ret
; 100eca

Function100eca: ; 100eca
	callba Function8e8b
	call Function100ed4
	ret
; 100ed4

Function100ed4: ; 100ed4
	callba Function96a4
	ld a, $1
	ld [hCGBPalUpdate], a
	ret
; 100edf

INCBIN "baserom.gbc",$100edf,$1011f1 - $100edf

Function1011f1: ; 1011f1
	ld a, $4
	call GetSRAMBank
	ld a, [$a60c]
	ld [$dc41], a
	call CloseSRAM
	ld hl, $dc41
	res 4, [hl]
	ld hl, GameTimerPause
	bit 7, [hl]
	jr z, .asm_101210
	ld hl, $dc41
	set 4, [hl]

.asm_101210
	call Function10209c
	xor a
	ld [$dc5f], a
	ld [$dc60], a
	ld a, $4
	ld [InLinkBattle], a
	ret
; 101220

Function101220: ; 101220
	xor a
	ld [InLinkBattle], a
	ret
; 101225

Function101225: ; 101225
	ld d, $1
	ld e, $40
	ld bc, $5297
	call Function100000
	jr Function10123d

Function101231: ; 101231
	ld d, $2
	ld e, $40
	ld bc, $5297
	call Function100000
	jr Function10123d

Function10123d: ; 10123d
	xor a
	ld [ScriptVar], a
	ld a, c
	ld hl, Table101247
	rst JumpTable
	ret
; 101247

Table101247: ; 101247
	dw Function101251
	dw Function10127d
	dw Function10127c
	dw Function10126c
	dw Function101265
; 101251

Function101251: ; 101251
	call Function1ad2
	call ResetWindow
	ld hl, $61f4
	call Function1021e0
	call Function1020ea
	ret c
	call Function102142
	ret
; 101265

Function101265: ; 101265
	ld hl, $61ef
	call Function1021e0
	ret
; 10126c

Function10126c: ; 10126c
	call Function1ad2
	callba Script_reloadmappart
	ld hl, $61f4
	call Function1021e0
	ret
; 10127c

Function10127c: ; 10127c
	ret
; 10127d

Function10127d: ; 10127d
	ret
; 10127e

Function10127e: ; 10127e
	ld a, [$dc5f]
	and a
	jr z, .asm_101290
	cp $1
	ld c, $27
	jr z, .asm_101292
	cp $2
	ld c, $37
	jr z, .asm_101292

.asm_101290
	ld c, $0

.asm_101292
	ld a, c
	ld [$cd25], a
	ret
; 101297

INCBIN "baserom.gbc",$101297,$1013aa - $101297

Function1013aa: ; 1013aa
	call WhiteBGMap
	call Function1d7d
	call Function2bae
	callba Function106464
	call Function1ad2
	call Function2b5c
	ret
; 1013c0

INCBIN "baserom.gbc",$1013c0,$1013d6 - $1013c0

Function1013d6: ; 1013d6
	callba Function104000
	ret
; 1013dd

INCBIN "baserom.gbc",$1013dd,$10142c - $1013dd

Function10142c: ; 10142c
	ld a, $1
	ld [$c305], a
	callba Function115e18
	ret
; 101438

INCBIN "baserom.gbc",$101438,$101ee4 - $101438

Function101ee4: ; 101ee4
	ld d, $0
	ld hl, $5ef5
	add hl, de
	add hl, de
	ld a, [hli]
	ld d, [hl]
	ld e, a
	callba Function100504
	ret
; 101ef5

INCBIN "baserom.gbc",$101ef5,$10202c - $101ef5

Function10202c: ; 10202c
	callba Function115d99
	ld hl, $cd29
	set 7, [hl]
	ld c, $2
	call Function10142c
	ld e, $d
	call Function101ee4
	ld hl, $c4f4
	call Function100681
	ret
; 102048

INCBIN "baserom.gbc",$102048,$10209c - $102048

Function10209c: ; 10209c
	ld a, $ff
	ld hl, $dc42
	ld bc, $0008
	call ByteFill
	ret
; 1020a8

INCBIN "baserom.gbc",$1020a8,$1020ea - $1020a8

Function1020ea: ; 1020ea
	ld hl, $dc41
	bit 4, [hl]
	jr z, .asm_102110
	ld hl, $dc41
	bit 2, [hl]
	jr nz, .asm_102110
	call Function10218d
	ld hl, EnemyMoveAnimation
	bit 4, [hl]
	jr z, .asm_102110
	ld hl, EnemyMoveAnimation
	bit 2, [hl]
	jr nz, .asm_102110
	call Function102112
	jr z, .asm_102110
	and a
	ret

.asm_102110
	scf
	ret
; 102112

Function102112: ; 102112
	ld a, $4
	call GetSRAMBank
	ld hl, $a041
	ld c, $28
.asm_10211c
	push hl
	ld de, PlayerMoveAnimation
	ld b, $1f
.asm_102122
	ld a, [de]
	cp [hl]
	jr nz, .asm_10212f
	inc de
	inc hl
	dec b
	jr nz, .asm_102122
	pop hl
	xor a
	jr .asm_10213c

.asm_10212f
	pop hl
	ld de, $0025
	add hl, de
	dec c
	jr nz, .asm_10211c
	ld a, $1
	and a
	jr .asm_10213c

.asm_10213c
	push af
	call CloseSRAM
	pop af
	ret
; 102142

Function102142: ; 102142
	call Function10218d
	call Function102180
	ld hl, $61d1
	call Function1d4f
	ld de, $0090
	call PlaySFX
	call Functiona36
	call Function1c07
	call Function10219f
	ld hl, $61d6
	call Function1d4f
	call Function1dcf
	call Function1c07
	jr c, .asm_10217c
	call Function1021b8
	jr c, .asm_10217c
	call Function10218d
	call Function102180
	ld hl, $61db
	call PrintText

.asm_10217c
	call Function1013d6
	ret
; 102180

Function102180: ; 102180
	ld hl, EnemyMoveEffect
	ld de, StringBuffer2
	ld bc, $000b
	call CopyBytes
	ret
; 10218d

Function10218d: ; 10218d
	ld hl, $dc00
	ld de, EnemyMoveAnimation
	ld bc, $0026
	ld a, $5
	call FarCopyWRAM
	ld de, EnemyMoveEffect
	ret
; 10219f

Function10219f: ; 10219f
	call FadeToMenu
	call Function10218d
	ld de, EnemyMoveEffect
	callba Function8ac4e
	call Functiona36
	call PlayClickSFX
	call Function1013aa
	ret
; 1021b8

Function1021b8: ; 1021b8
	call FadeToMenu
	call Function10218d
	ld de, PlayerMoveAnimation
	callba Function8ac70
	ld a, c
	ld [StringBuffer1], a
	push af
	call Function1013aa
	pop af
	ret
; 1021d1

INCBIN "baserom.gbc",$1021d1,$1021e0 - $1021d1

Function1021e0: ; 1021e0
	call Function1d4f
	call Functiona36
	call Function1c07
	ret
; 1021ea

INCBIN "baserom.gbc",$1021ea,$103612 - $1021ea

Function103612: ; 103612
	ld hl, $7640
	call LoadMenuDataHeader
	ld a, [$dc40]
	and $f
	jr z, .asm_103622
	ld [$cf88], a

.asm_103622
	call Function1d81
	call Function1c17
	jr c, .asm_10363b
	ld a, [$cfa9]
	ld [ScriptVar], a
	ld c, a
	ld a, [$dc40]
	and $f0
	or c
	ld [$dc40], a
	ret

.asm_10363b
	xor a
	ld [ScriptVar], a
	ret
; 103640

INCBIN "baserom.gbc",$103640,$10366e - $103640

Function10366e: ; 10366e
	callba Function10632f
	bit 7, c
	jr z, .asm_10369b
	ld hl, $775d
	call PrintText
	call Function1dcf
	jr c, .asm_103696
	callba Function8b1e1
	jr nc, .asm_103690
	call Functiona36
	jr .asm_103696

.asm_103690
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_103696
	xor a
	ld [ScriptVar], a
	ret

.asm_10369b
	ld hl, $dc40
	bit 7, [hl]
	set 7, [hl]
	jr nz, .asm_1036b5
	ld hl, $7762
	call PrintText
	call Function1dcf
	jr c, .asm_1036b5
	call Function1036f9
	call Functiona36

.asm_1036b5
	call Function103700
	jr c, .asm_1036f4
	ld hl, $7747
	call LoadMenuDataHeader
	call Function1d81
	call Function1c07
	jr c, .asm_1036f4
	ld a, [$cfa9]
	cp $1
	jr z, .asm_1036d9
	cp $2
	jr z, .asm_1036f4
	cp $3
	jr z, .asm_1036ec
	jr .asm_1036b5

.asm_1036d9
	callba Function8b1e1
	jr nc, .asm_1036e6
	call Functiona36
	jr .asm_1036f4

.asm_1036e6
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_1036ec
	call Function1036f9
	call Functiona36
	jr .asm_1036b5

.asm_1036f4
	xor a
	ld [ScriptVar], a
	ret
; 1036f9

Function1036f9: ; 1036f9
	ld hl, $7767
	call PrintText
	ret
; 103700

Function103700: ; 103700
	ld c, $a
	ld hl, $dc20
	bit 4, [hl]
	jr z, .asm_10370f
	callba Function1008a6

.asm_10370f
	ld a, c
	ld [StringBuffer2], a
	ld a, [StringBuffer2]
	cp $5
	jr nc, .asm_103724
	cp $2
	jr nc, .asm_10372c
	cp $1
	jr nc, .asm_103734
	jr .asm_10373c

.asm_103724
	ld hl, $776c
	call PrintText
	and a
	ret

.asm_10372c
	ld hl, $7771
	call PrintText
	and a
	ret

.asm_103734
	ld hl, $7776
	call PrintText
	and a
	ret

.asm_10373c
	ld hl, $777b
	call PrintText
	call Functiona36
	scf
	ret
; 103747

INCBIN "baserom.gbc",$103747,$103780 - $103747

Function103780: ; 103780
	ld a, [$d265]
	push af
	call Function10378c
	pop af
	ld [$d265], a
	ret
; 10378c

Function10378c: ; 10378c
	ld c, $0
	ld hl, $dc20
	bit 4, [hl]
	jr nz, .asm_10379c
	ld c, $1
	ld hl, $dc20
	set 4, [hl]

.asm_10379c
	push bc
	callba Function14ab2
	pop bc
	jr c, .asm_1037b5
	ld a, $1
	ld [ScriptVar], a
	ld a, c
	and a
	ret z
	callba Function1006fd
	ret

.asm_1037b5
	xor a
	ld [ScriptVar], a
	ld a, c
	and a
	ret z
	ld hl, $dc20
	res 4, [hl]
	ret
; 1037c2

Function1037c2: ; 1037c2
	call Function103823
	jr c, .asm_1037de
	ld a, [$dc5f]
	and a
	jr z, .asm_1037de
	ld hl, $77e6
	call PrintText
	call Function1dcf
	jr c, .asm_1037de
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_1037de
	xor a
	ld [$dc5f], a
	ld [ScriptVar], a
	ret
; 1037e6

INCBIN "baserom.gbc",$1037e6,$1037eb - $1037e6

Function1037eb: ; 1037eb
	call Function103823
	jr nc, .asm_103807
	ld hl, $7819
	call PrintText
	call Functiona36
	ld hl, $781e
	call PrintText
	call Functiona36
	xor a
	ld [ScriptVar], a
	ret

.asm_103807
	ld a, [$dc60]
	and a
	jr nz, .asm_103813
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_103813
	ld a, $2
	ld [ScriptVar], a
	ret
; 103819

INCBIN "baserom.gbc",$103819,$103823 - $103819

Function103823: ; 103823
	callba Function10632f
	bit 7, c
	jr nz, .asm_103838
	callba Function1008a6
	ld a, c
	cp $1
	jr c, .asm_10383a

.asm_103838
	xor a
	ret

.asm_10383a
	scf
	ret
; 10383c

Function10383c: ; 10383c
	ld a, $1
	ld [$dc60], a
	xor a
	ld hl, $dc5c
	ld [hli], a
	ld [hli], a
	ld [hl], a
	ld hl, $7876
	call PrintText
	call Functiona36
	callba Script_reloadmappart
	callba Function4a94e
	jr c, .asm_103870
	ld hl, DefaultFlypoint
	ld de, $dc5c
	ld bc, $0003
	call CopyBytes
	xor a
	ld [ScriptVar], a
	ret

.asm_103870
	ld a, $1
	ld [ScriptVar], a
	ret
; 103876

INCBIN "baserom.gbc",$103876,$10387b - $103876

Function10387b: ; 10387b
	callba Function10632f
	bit 7, c
	ret nz
	callba Function1008a6
	ld a, c
	ld [StringBuffer2], a
	ld hl, $7898
	call PrintText
	call Functiona36
	ret
; 103898

INCBIN "baserom.gbc",$103898,$10389d - $103898


SECTION "bank41", ROMX, BANK[$41]

Function104000: ; 104000
	ld hl, $4006
	jp Function104177
; 104006

INCBIN "baserom.gbc",$104006,$10402d - $104006


Function10402d: ; 10402d
	ld hl, $4033
	jp Function104177
; 104033

	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld hl, Unkn1Pals ; $d000
	call Function10425f
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, Unkn1Pals ; $d000
	call Function10419d
	ret

Function104047: ; 104047
	ld hl, $404d
	jp Function104177
; 10404d

	ld de, AttrMap ; $cdd9
	ld hl, $d400
	call Function104263
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $d400
	call Function10419d
	ret


Function104061: ; 104061
	ld hl, $4067
	jp Function104177
; 104067

	ld de, AttrMap ; $cdd9
	ld hl, $d400
	call Function104263
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld hl, Unkn1Pals ; $d000
	call Function10425f
	call DelayFrame
	di
	ld a, [rVBK] ; $ff00+$4f
	push af
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $d400
	call Function1041ad
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, Unkn1Pals ; $d000
	call Function1041ad
	pop af
	ld [rVBK], a ; $ff00+$4f
	ei
	ret

Function104099: ; 104099
	ld hl, Function104061
	ld hl, $40a2
	jp Function104177
; 1040a2

INCBIN "baserom.gbc",$1040a2,$104110 - $1040a2


Function104110: ; 104110
	ld hl, $4116
	jp Function104177
; 104116

	ld de, AttrMap ; $cdd9
	ld hl, $d400
	call Function104263
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld hl, Unkn1Pals ; $d000
	call Function10425f
	call DelayFrame
	di
	ld a, [rVBK] ; $ff00+$4f
	push af
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld hl, $d400
	call Function1041b7
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld hl, Unkn1Pals ; $d000
	call Function1041b7
	pop af
	ld [rVBK], a ; $ff00+$4f
	ei
	ret

; no known jump sources
Function104148: ; 104148 (41:4148)
	ld hl, $414e
	jp Function104177
; 10414e (41:414e)

INCBIN "baserom.gbc",$10414e,$104177 - $10414e


Function104177: ; 104177
	ld a, [hBGMapMode]
	push af
	ld a, [$ffde]
	push af
	xor a
	ld [hBGMapMode], a
	ld [$ffde], a
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	ld a, [rVBK]
	push af
	call Function10419c
	pop af
	ld [rVBK], a
	pop af
	ld [rSVBK], a
	pop af
	ld [$ffde], a
	pop af
	ld [hBGMapMode], a
	ret
; 10419c

Function10419c: ; 10419c
	jp [hl]
; 10419d


; known jump sources: 104043 (41:4043), 10405d (41:405d)
Function10419d: ; 10419d (41:419d)
	call Function10424e
	ld a, $23
	ld [hDMATransfer], a ; $ff00+$e8
.asm_1041a4
	call DelayFrame
	ld a, [hDMATransfer] ; $ff00+$e8
	and a
	jr nz, .asm_1041a4
	ret

; known jump sources: 104087 (41:4087), 104091 (41:4091)
Function1041ad: ; 1041ad (41:41ad)
	ld a, [$FF00+$d7]
	ld d, a
	ld a, [hBGMapAddress] ; $ff00+$d6
	ld e, a
	ld c, $24
	jr Function104209

; known jump sources: 104136 (41:4136), 104140 (41:4140)
Function1041b7: ; 1041b7 (41:41b7)
	ld a, [$FF00+$d7]
	ld d, a
	ld a, [hBGMapAddress] ; $ff00+$d6
	ld e, a
	ld c, $24
	jr .asm_104205
; 1041c1 (41:41c1)

INCBIN "baserom.gbc",$1041c1,$104205 - $1041c1
.asm_104205
	ld b, $7b
	jr asm_10420b


Function104209: ; 104209
	ld b, $7f
asm_10420b:
	ld a, h
	ld [rHDMA1], a
	ld a, l
	and $f0
	ld [rHDMA2], a
	ld a, d
	and $1f
	ld [rHDMA3], a
	ld a, e
	and $f0
	ld [rHDMA4], a
	ld a, c
	dec c
	or $80
	ld e, a
	ld a, b
	sub c
	ld d, a
.asm_104225
	ld a, [rLY]
	cp d
	jr nc, .asm_104225
	di
.asm_10422b
	ld a, [rSTAT]
	and $3
	jr nz, .asm_10422b
.asm_104231
	ld a, [rSTAT]
	and $3
	jr z, .asm_104231
	ld a, e
	ld [rHDMA5], a
	ld a, [rLY]
	inc c
	ld hl, rLY
.asm_104240
	cp [hl]
	jr z, .asm_104240
	ld a, [hl]
	dec c
	jr nz, .asm_104240
	ld hl, rHDMA5
	res 7, [hl]
	ei
	ret
; 10424e


; known jump sources: 10419d (41:419d)
Function10424e: ; 10424e (41:424e)
	ld a, h
	ld [rHDMA1], a ; $ff00+$51
	ld a, l
	ld [rHDMA2], a ; $ff00+$52
	ld a, [$FF00+$d7]
	and $1f
	ld [rHDMA3], a ; $ff00+$53
	ld a, [hBGMapAddress] ; $ff00+$d6
	ld [rHDMA4], a ; $ff00+$54
	ret

; known jump sources: 104039 (41:4039), 104076 (41:4076), 104125 (41:4125)
Function10425f: ; 10425f (41:425f)
	ld c, $7f
	jr asm_104265

; known jump sources: 104053 (41:4053), 10406d (41:406d), 10411c (41:411c)
Function104263: ; 104263 (41:4263)
	ld c, $0

; known jump sources: 104261 (41:4261)
asm_104265: ; 104265 (41:4265)
	ld a, [hConnectionStripLength] ; $ff00+$af
	push af
	ld a, c
	ld [hConnectionStripLength], a ; $ff00+$af
	ld c, $12
.asm_10426d
	ld b, $14
.asm_10426f
	ld a, [de]
	inc de
	ld [hli], a
	dec b
	jr nz, .asm_10426f
	ld a, [hConnectionStripLength] ; $ff00+$af
	ld b, $c
.asm_104279
	ld [hli], a
	dec b
	jr nz, .asm_104279
	dec c
	jr nz, .asm_10426d
	pop af
	ld [hConnectionStripLength], a ; $ff00+$af
	ret


Function104284: ; 104284
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	push bc
	push hl
	ld a, b
	ld l, c
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	add hl, hl
	ld b, h
	ld c, l
	ld h, d
	ld l, e
	ld de, $d000
	call FarCopyBytes
	pop hl
	pop bc
	push bc
	call DelayFrame
	pop bc
	ld d, h
	ld e, l
	ld hl, $d000
	call Function104209
	pop af
	ld [rSVBK], a
	ret
; 1042b2

Function1042b2: ; 1042b2
.asm_1042b2
	ld a, c
	cp $10
	jp c, Function1042d6
	jp z, Function1042d6
	push bc
	push hl
	push de
	ld c, $10
	call Function1042d6
	pop de
	ld hl, $0080
	add hl, de
	ld d, h
	ld e, l
	pop hl
	ld bc, Start
	add hl, bc
	pop bc
	ld a, c
	sub $10
	ld c, a
	jr .asm_1042b2
; 1042d6

Function1042d6: ; 1042d6
	ld a, [rSVBK]
	push af
	ld a, $6
	ld [rSVBK], a
	push bc
	push hl
	ld a, b
	ld l, c
	ld h, $0
	add hl, hl
	add hl, hl
	add hl, hl
	ld c, l
	ld b, h
	ld h, d
	ld l, e
	ld de, $d000
	call Functiondef
	pop hl
	pop bc
	push bc
	call DelayFrame
	pop bc
	ld d, h
	ld e, l
	ld hl, $d000
	call Function104209
	pop af
	ld [rSVBK], a
	ret
; 104303

Function104303: ; 104303
	ld hl, $4309
	jp Function104177
; 104309

	ld hl, Unkn1Pals ; $d000
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	call Function10433a
	ld hl, BGPals ; $d080
	ld de, AttrMap ; $cdd9
	call Function10433a
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	ld c, $8
	ld hl, BGPals ; $d080
	ld de, $9c00
	call Function104209
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ld c, $8
	ld hl, Unkn1Pals ; $d000
	ld de, $9c00
	call Function104209
	ret

; known jump sources: 10430f (41:430f), 104318 (41:4318)
Function10433a: ; 10433a (41:433a)
	ld b, $4
.asm_10433c
	ld c, $14
.asm_10433e
	ld a, [de]
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_10433e
	ld a, l
	add $c
	ld l, a
	ld a, h
	adc $0
	ld h, a
	dec b
	jr nz, .asm_10433c
	ret

INCBIN "gfx/ow/misc.2bpp"


	call Function210f
	call Function2e50
	call Function2e5d
	call Function212a
	call Function2e56
	ld a, $5
	call Function263b
	callba Function97df9
	ld a, $3
	call Function263b
	call Function2cff
	ld [$c2d0], a
	ret


EnterMapConnection: ; 1045d6
; Return carry if a connection has been entered.
	ld a, [$d151]
	and a
	jp z, EnterSouthConnection
	cp 1
	jp z, EnterNorthConnection
	cp 2
	jp z, EnterWestConnection
	cp 3
	jp z, EnterEastConnection
	ret
; 1045ed


EnterWestConnection: ; 1045ed
	ld a, [WestConnectedMapGroup]
	ld [MapGroup], a
	ld a, [WestConnectedMapNumber]
	ld [MapNumber], a
	ld a, [WestConnectionStripXOffset]
	ld [XCoord], a
	ld a, [WestConnectionStripYOffset]
	ld hl, YCoord
	add [hl]
	ld [hl], a
	ld c, a
	ld hl, WestConnectionWindow
	ld a, [hli]
	ld h, [hl]
	ld l, a
	srl c
	jr z, .asm_10461e
	ld a, [WestConnectedMapWidth]
	add 6
	ld e, a
	ld d, 0

.asm_10461a
	add hl, de
	dec c
	jr nz, .asm_10461a

.asm_10461e
	ld a, l
	ld [$d194], a
	ld a, h
	ld [$d195], a
	jp EnteredConnection
; 104629


EnterEastConnection: ; 104629
	ld a, [EastConnectedMapGroup]
	ld [MapGroup], a
	ld a, [EastConnectedMapNumber]
	ld [MapNumber], a
	ld a, [EastConnectionStripXOffset]
	ld [XCoord], a
	ld a, [EastConnectionStripYOffset]
	ld hl, YCoord
	add [hl]
	ld [hl], a
	ld c, a
	ld hl, EastConnectionWindow
	ld a, [hli]
	ld h, [hl]
	ld l, a
	srl c
	jr z, .asm_10465a
	ld a, [EastConnectedMapWidth]
	add 6
	ld e, a
	ld d, 0

.asm_104656
	add hl, de
	dec c
	jr nz, .asm_104656

.asm_10465a
	ld a, l
	ld [$d194], a
	ld a, h
	ld [$d195], a
	jp EnteredConnection
; 104665


EnterNorthConnection: ; 104665
	ld a, [NorthConnectedMapGroup]
	ld [MapGroup], a
	ld a, [NorthConnectedMapNumber]
	ld [MapNumber], a
	ld a, [NorthConnectionStripYOffset]
	ld [YCoord], a
	ld a, [NorthConnectionStripXOffset]
	ld hl, XCoord
	add [hl]
	ld [hl], a
	ld c, a
	ld hl, NorthConnectionWindow
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld b, 0
	srl c
	add hl, bc
	ld a, l
	ld [$d194], a
	ld a, h
	ld [$d195], a
	jp EnteredConnection
; 104696


EnterSouthConnection: ; 104696
	ld a, [SouthConnectedMapGroup]
	ld [MapGroup], a
	ld a, [SouthConnectedMapNumber]
	ld [MapNumber], a
	ld a, [SouthConnectionStripYOffset]
	ld [YCoord], a
	ld a, [SouthConnectionStripXOffset]
	ld hl, XCoord
	add [hl]
	ld [hl], a
	ld c, a
	ld hl, SouthConnectionWindow
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld b, 0
	srl c
	add hl, bc
	ld a, l
	ld [$d194], a
	ld a, h
	ld [$d195], a
	; fallthrough
; 1046c4

EnteredConnection: ; 1046c4
	scf
	ret
; 1046c6


	call Function1046df
	call Function104718
	ld a, [$d146]
	ld [WarpNumber], a ; $dcb4
	ld a, [$d147]
	ld [MapGroup], a ; $dcb5
	ld a, [$d148]
	ld [MapNumber], a ; $dcb6
	ret

; known jump sources: 1046c6 (41:46c6)
Function1046df: ; 1046df (41:46df)
	call GetMapPermission
	call CheckOutdoorMap
	ret nz
	ld a, [$d147]
	ld b, a
	ld a, [$d148]
	ld c, a
	call Function2c99
	call CheckIndoorMap
	ret nz
	ld a, [$d14a]
	cp $f
	jr nz, .asm_104705
	ld a, [$d14b]
	cp $a
	ret z
	cp $c
	ret z
.asm_104705
	ld a, [$d149]
	ld [$dca9], a
	ld a, [$d14a]
	ld [$dcaa], a
	ld a, [$d14b]
	ld [$dcab], a
	ret

; known jump sources: 1046c9 (41:46c9)
Function104718: ; 104718 (41:4718)
	call GetMapPermission
	call CheckOutdoorMap
	ret nz
	ld a, [$d147]
	ld b, a
	ld a, [$d148]
	ld c, a
	call Function2c99
	call CheckIndoorMap
	ret nz
	ld a, [$d147]
	ld b, a
	ld a, [$d148]
	ld c, a
	call Function2ca7
	ld a, c
	cp $7
	jr z, .asm_104743
	cp $15
	jr z, .asm_104743
	ret
.asm_104743
	ld a, [$d14a]
	ld [$dcb2], a
	ld a, [$d14b]
	ld [$dcb3], a
	ret
	ld hl, VramState ; $d0ed
	res 6, [hl]
	ld a, $1
	ld [$c2ce], a
	callba Function8c0e5
	callba Function8c001
	call Function2173
	call Function104770
	call Function1047a3
	ret

; known jump sources: 104769 (41:4769)
Function104770: ; 104770 (41:4770)
	ld a, $98
	ld [$d153], a
	xor a
	ld [$d152], a
	ld [hSCY], a ; $ff00+$d0
	ld [hSCX], a ; $ff00+$cf
	callba Function5958
	ld a, [rVBK] ; $ff00+$4f
	push af
	ld a, $1
	ld [rVBK], a ; $ff00+$4f
	xor a
	ld bc, $400
	ld hl, $9800
	call ByteFill
	pop af
	ld [rVBK], a ; $ff00+$4f
	ld a, $60
	ld bc, $400
	ld hl, $9800
	call ByteFill
	ret

; known jump sources: 10476c (41:476c)
Function1047a3: ; 1047a3 (41:47a3)
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	call Function1047b4
	ld a, [hCGB] ; $ff00+$e6
	and a
	ret z
	ld de, AttrMap ; $cdd9
	ld a, $1
	ld [rVBK], a ; $ff00+$4f

; known jump sources: 1047a6 (41:47a6)
Function1047b4: ; 1047b4 (41:47b4)
	ld hl, $9800
	ld c, $14
	ld b, $12
.asm_1047bb
	push bc
.asm_1047bc
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_1047bc
	ld bc, $c
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_1047bb
	ld a, $0
	ld [rVBK], a ; $ff00+$4f
	ret
	call Function2d27
	call Function2821
	xor a
	ld [$FF00+$de], a
	xor a
	ld [hTileAnimFrame], a ; $ff00+$df
	callba Function14168
	call Functione5f
	callba Function106594
	ret

Function1047eb: ; 1047eb
	ld b, $9
	jp GetSGBLayout
; 1047f0

	call ClearSprites
	callba Functionb8000
	call Function2914
	callba Function579d
	callba Function154f7
	ld hl, $d45b
	bit 6, [hl]
	jr nz, .asm_104817
	ld hl, VramState ; $d0ed
	set 0, [hl]
	call Function2e31
.asm_104817
	ld a, [$d45b]
	and $1c
	ld [$d45b], a
	ret

; no known jump sources
Function104820: ; 104820 (41:4820)
	ld a, [$d151]
	cp $ff
	ret z
	and a
	jr z, .asm_104837
	cp $1
	jr z, .asm_104846
	cp $2
	jr z, .asm_104851
	cp $3
	jr z, .asm_10485c
	and a
	ret
.asm_104837
	ld a, [MapY] ; $d4e7
	sub $4
	ld b, a
	ld a, [MapHeight]
	add a
	cp b
	jr z, .asm_10486b
	and a
	ret
.asm_104846
	ld a, [MapY] ; $d4e7
	sub $4
	cp $ff
	jr z, .asm_10486b
	and a
	ret
.asm_104851
	ld a, [MapX] ; $d4e6
	sub $4
	cp $ff
	jr z, .asm_10486b
	and a
	ret
.asm_10485c
	ld a, [MapX] ; $d4e6
	sub $4
	ld b, a
	ld a, [MapWidth]
	add a
	cp b
	jr z, .asm_10486b
	and a
	ret
.asm_10486b
	scf
	ret


Function10486d: ; 10486d
	ld hl, OverworldMap
	ld a, [XCoord]
	bit 0, a
	jr nz, .asm_10487d
	srl a
	add $1
	jr .asm_104881

.asm_10487d
	add $1
	srl a

.asm_104881
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [MapWidth]
	add $6
	ld c, a
	ld b, $0
	ld a, [YCoord]
	bit 0, a
	jr nz, .asm_10489a
	srl a
	add $1
	jr .asm_10489e

.asm_10489a
	add $1
	srl a

.asm_10489e
	call AddNTimes
	ld a, l
	ld [$d194], a
	ld a, h
	ld [$d195], a
	ld a, [YCoord]
	and $1
	ld [$d196], a
	ld a, [XCoord]
	and $1
	ld [$d197], a
	ret
; 1048ba


; known jump sources: 1049ba (41:49ba)
Function1048ba: ; 1048ba (41:48ba)
	call ClearTileMap
	call ClearSprites
	call WaitBGMap
	call Function105153
	ld hl, $c543
	ld de, $49cd
	call PlaceString
	call WaitBGMap
	callba Function2c642
	call Function1050fb
	ld a, $2
	ld [$ca01], a
	ld a, $14
	ld [$ca02], a
	ld a, [rIE] ; $ff00+$ff
	push af
	call Function104a95
	ld d, a
	xor a
	ld [rIF], a ; $ff00+$f
	pop af
	ld [rIE], a ; $ff00+$ff
	push de
	call ClearTileMap
	call EnableLCD
	call WaitBGMap
	ld b, $8
	call GetSGBLayout
	call Function32f9
	pop de
	ld hl, $c542
	ld a, d
	ld de, $49fd
	cp $10
	jp z, Function1049af
	cp $6c
	jp nz, Function1049b4
	ld a, [$c900]
	cp $3
	jr z, .asm_10492f
	call Function104a25
	ld hl, $4a11
	jp nc, Function1049c5
	call Function104a30
	ld hl, $4a16
	jp c, Function1049c5
.asm_10492f
	ld a, [$c962]
	and a
	jp nz, Function1049bd
	ld a, [$c912]
	and a
	jp nz, Function1049c2
	ld a, [$c900]
	cp $3
	jr z, .asm_104963
	call Function104a56
	ld a, [$c900]
	cp $4
	jr z, .asm_104963
	call Function104a71
	callba Function10619d
	callba Function1060a9
	callba Function106187
.asm_104963
	ld a, [$c90f]
	and a
	jr z, .asm_104990
	ld a, [$c911]
	ld c, a
	callba Function2c715
	push bc
	call Function105069
	pop bc
	jr nz, .asm_104990
	callab Function26ef5
	ld h, d
	ld l, e
	ld de, StringBuffer1 ; $d073
	ld bc, $d
	call CopyBytes
	ld hl, $4a20
	jr Function1049c5
.asm_104990
	call Function105106
	ld a, [$c910]
	ld c, a
	callba Function2c708
	ld a, c
	ld [$abe4], a
	ld [$d265], a
	call CloseSRAM
	call GetItemName
	ld hl, $4a1b
	jr Function1049c5

; known jump sources: 10490e (41:490e)
Function1049af: ; 1049af (41:49af)
	ld hl, $49fd
	jr Function1049c5

; known jump sources: 104913 (41:4913)
Function1049b4: ; 1049b4 (41:49b4)
	ld hl, $4a02
	call PrintText
	jp Function1048ba

; known jump sources: 104933 (41:4933)
Function1049bd: ; 1049bd (41:49bd)
	ld hl, $4a07
	jr Function1049c5

; known jump sources: 10493a (41:493a)
Function1049c2: ; 1049c2 (41:49c2)
	ld hl, $4a0c

; known jump sources: 104923 (41:4923), 10492c (41:492c), 10498e (41:498e), 1049ad (41:49ad), 1049b2 (41:49b2), 1049c0 (41:49c0)
Function1049c5: ; 1049c5 (41:49c5)
	call PrintText
	ld a, $e3
	ld [rLCDC], a ; $ff00+$40
	ret
; 1049cd (41:49cd)

INCBIN "baserom.gbc",$1049cd,$104a25 - $1049cd

; known jump sources: 10491d (41:491d)
Function104a25: ; 104a25 (41:4a25)
	call Function105106
	ld a, [$abe5]
	cp $5
	jp CloseSRAM

; known jump sources: 104926 (41:4926)
Function104a30: ; 104a30 (41:4a30)
	call Function105106
	ld a, [$c901]
	ld b, a
	ld a, [$c902]
	ld c, a
	ld a, [$abe5]
	ld d, a
	ld hl, $abe6
.asm_104a42
	ld a, d
	and a
	jr z, .asm_104a53
	ld a, [hli]
	cp b
	jr nz, .asm_104a4e
	ld a, [hl]
	cp c
	jr z, .asm_104a52
.asm_104a4e
	inc hl
	dec d
	jr .asm_104a42
.asm_104a52
	scf
.asm_104a53
	jp CloseSRAM

; known jump sources: 104944 (41:4944)
Function104a56: ; 104a56 (41:4a56)
	call Function105106
	ld hl, $abe5
	ld a, [hl]
	inc [hl]
	ld hl, $abe6
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [$c901]
	ld [hli], a
	ld a, [$c902]
	ld [hl], a
	jp CloseSRAM

; known jump sources: 10494e (41:494e)
Function104a71: ; 104a71 (41:4a71)
	call Function105106
	ld a, $1
	ld [$abfd], a
	ld hl, $c903
	ld de, $abfe
	ld bc, $b
	call CopyBytes
	ld a, $1
	ld [de], a
	inc de
	ld hl, $c850
	ld bc, $26
	call CopyBytes
	jp CloseSRAM

; known jump sources: 1048e8 (41:48e8)
Function104a95: ; 104a95 (41:4a95)
	di
	callba ClearChannels
	call Function104d5e
.asm_104a9f
	call Function104d96
	call Function104ddd
	ld a, [$FF00+$bc]
	cp $10
	jp z, Function104bd0
	cp $6c
	jr nz, .asm_104a9f
	ld a, [$FF00+$bb]
	cp $2
	jr z, Function104b22
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d56
	jr nz, .asm_104ac8
	call Function104b49
	jp nz, Function104bd0
	jr asm_104b0a
.asm_104ac8
	ld a, [rLY] ; $ff00+$44
	cp $90
	jr c, .asm_104ac8
	ld c, $56
	ld a, $c0
	ld [$ff00+c], a
	ld b, $f0
.asm_104ad5
	push bc
	call Function105038
	ld b, $2
	ld c, $56
.asm_104add
	ld a, [$ff00+c]
	and b
	ld b, a
	ld a, [rLY] ; $ff00+$44
	cp $90
	jr nc, .asm_104add
.asm_104ae6
	ld a, [$ff00+c]
	and b
	ld b, a
	ld a, [rLY] ; $ff00+$44
	cp $90
	jr c, .asm_104ae6
	ld a, b
	pop bc
	dec b
	jr z, .asm_104a9f
	or a
	jr nz, .asm_104a9f
	ld a, [$FF00+$c4]
	bit 1, a
	jr z, .asm_104ad5
	ld a, $10
	ld [$FF00+$bc], a
	jp Function104bd0

; known jump sources: 104c0d (41:4c0d)
Function104b04: ; 104b04 (41:4b04)
	call Function104b40
	jp nz, Function104bd0

; known jump sources: 104ac6 (41:4ac6)
asm_104b0a: ; 104b0a (41:4b0a)
	call Function104d38
	jp nz, Function104bd0
	call Function104b88
	jp nz, Function104bd0
	call Function104d43
	jp nz, Function104bd0
	call Function105033
	jp Function104bd0

; known jump sources: 104ab4 (41:4ab4), 104c15 (41:4c15)
Function104b22: ; 104b22 (41:4b22)
	call Function104b88
	jp nz, Function104bd0
	call Function104d43
	jp nz, Function104bd0
	call Function104b40
	jp nz, Function104bd0
	call Function104d38
	jp nz, Function104bd0
	call Function10502e
	jp Function104bd0

; known jump sources: 104b04 (41:4b04), 104b2e (41:4b2e)
Function104b40: ; 104b40 (41:4b40)
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d56
	ret nz

; known jump sources: 104ac0 (41:4ac0)
Function104b49: ; 104b49 (41:4b49)
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	cp $96
	jp nz, Function104d32
	ld a, $90
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	call Function104d38
	ret nz
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	call Function104d43
	ret nz
	ld hl, $c850
	ld a, [$ca02]
	ld b, a
	call Function104d56
	ret nz
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104b10 (41:4b10), 104b22 (41:4b22)
Function104b88: ; 104b88 (41:4b88)
	ld a, $96
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	call Function104d43
	ret nz
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d56
	ret nz
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	cp $90
	jp nz, Function104d32
	call Function104d38
	ret nz
	ld hl, OverworldMap ; $c800
	ld a, [$ca02]
	ld b, a
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104aa9 (41:4aa9), 104ac3 (41:4ac3), 104b01 (41:4b01), 104b07 (41:4b07), 104b0d (41:4b0d), 104b13 (41:4b13), 104b19 (41:4b19), 104b1f (41:4b1f), 104b25 (41:4b25), 104b2b (41:4b2b), 104b31 (41:4b31), 104b37 (41:4b37), 104b3d (41:4b3d), 104c0b (41:4c0b), 104c13 (41:4c13)
Function104bd0: ; 104bd0 (41:4bd0)
	nop
	ld a, [$FF00+$bc]
	cp $10
	jr z, .asm_104c18
	cp $6c
	jr nz, .asm_104c18
	ld hl, $ca01
	dec [hl]
	jr z, .asm_104c18
	ld hl, $c850
	ld de, $c900
	ld bc, $14
	call CopyBytes
	ld a, [$c850]
	cp $3
	jr nc, .asm_104c18
	callba Function10510b
	call Function1050fb
	ld a, $26
	ld [$ca02], a
	ld a, [$FF00+$bb]
	cp $2
	jr z, .asm_104c10
	call Function104d43
	jr nz, Function104bd0
	jp Function104b04
.asm_104c10
	call Function104d38
	jr nz, Function104bd0
	jp Function104b22
.asm_104c18
	ld a, [$FF00+$bc]
	push af
	call Function104da0
	xor a
	ld [rIF], a ; $ff00+$f
	ld a, [rIE] ; $ff00+$ff
	or $1
	ld [rIE], a ; $ff00+$ff
	ei
	call DelayFrame
	pop af
	ret

; known jump sources: 1056ae (41:56ae)
Function104c2d: ; 104c2d (41:4c2d)
	di
	callba ClearChannels
	call Function104d5e
.asm_104c37
	call Function104d96
	call Function104ddd
	ld a, [$FF00+$bc]
	cp $10
	jp z, Function104d1c
	cp $6c
	jr nz, .asm_104c37
	ld a, [$FF00+$bb]
	cp $2
	jr z, .asm_104c6c
	call Function104c8a
	jp nz, Function104d1c
	call Function104d38
	jp nz, Function104d1c
	call Function104cd2
	jp nz, Function104d1c
	call Function104d43
	jp nz, Function104d1c
	call Function105033
	jp Function104d1c
.asm_104c6c
	call Function104cd2
	jp nz, Function104d1c
	call Function104d43
	jp nz, Function104d1c
	call Function104c8a
	jp nz, Function104d1c
	call Function104d38
	jp nz, Function104d1c
	call Function10502e
	jp Function104d1c

; known jump sources: 104c4e (41:4c4e), 104c78 (41:4c78)
Function104c8a: ; 104c8a (41:4c8a)
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d56
	ret nz
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	cp $3c
	jp nz, Function104d32
	swap a
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	call Function104d38
	ret nz
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	call Function104d43
	ret nz
	ld hl, $c850
	ld a, [$ca02]
	ld b, a
	call Function104d56
	ret nz
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104c5a (41:4c5a), 104c6c (41:4c6c)
Function104cd2: ; 104cd2 (41:4cd2)
	ld a, $3c
	ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct)
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	call Function104d43
	ret nz
	ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct)
	ld b, $1
	call Function104d56
	ret nz
	call Function105033
	ld a, [$FF00+$bc]
	cp $6c
	ret nz
	ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct)
	swap a
	cp $3c
	jp nz, Function104d32
	call Function104d38
	ret nz
	ld hl, OverworldMap ; $c800
	ld a, [$ca02]
	ld b, a
	call Function104d4e
	ret nz
	call Function10502e
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104c41 (41:4c41), 104c51 (41:4c51), 104c57 (41:4c57), 104c5d (41:4c5d), 104c63 (41:4c63), 104c69 (41:4c69), 104c6f (41:4c6f), 104c75 (41:4c75), 104c7b (41:4c7b), 104c81 (41:4c81), 104c87 (41:4c87)
Function104d1c: ; 104d1c (41:4d1c)
	nop
	ld a, [$FF00+$bc]
	push af
	call Function104da0
	xor a
	ld [rIF], a ; $ff00+$f
	ld a, [rIE] ; $ff00+$ff
	or $1
	ld [rIE], a ; $ff00+$ff
	ei
	call DelayFrame
	pop af
	ret

; known jump sources: 104b55 (41:4b55), 104bb6 (41:4bb6), 104c9f (41:4c9f), 104d02 (41:4d02)
Function104d32: ; 104d32 (41:4d32)
	ld a, $80
	ld [$FF00+$bc], a
	and a
	ret

; known jump sources: 104b0a (41:4b0a), 104b34 (41:4b34), 104b5c (41:4b5c), 104bb9 (41:4bb9), 104c10 (41:4c10), 104c54 (41:4c54), 104c7e (41:4c7e), 104ca6 (41:4ca6), 104d05 (41:4d05)
Function104d38: ; 104d38 (41:4d38)
	call Function104d96
	call Function104e46
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104b16 (41:4b16), 104b28 (41:4b28), 104b71 (41:4b71), 104b9d (41:4b9d), 104c08 (41:4c08), 104c60 (41:4c60), 104c72 (41:4c72), 104cbb (41:4cbb), 104ce7 (41:4ce7)
Function104d43: ; 104d43 (41:4d43)
	call Function104d96
	call Function104dfe
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104b65 (41:4b65), 104b91 (41:4b91), 104bc4 (41:4bc4), 104caf (41:4caf), 104cdb (41:4cdb), 104d10 (41:4d10)
Function104d4e: ; 104d4e (41:4d4e)
	call Function104e93
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104abb (41:4abb), 104b45 (41:4b45), 104b7c (41:4b7c), 104ba6 (41:4ba6), 104c8f (41:4c8f), 104cc6 (41:4cc6), 104cf0 (41:4cf0)
Function104d56: ; 104d56 (41:4d56)
	call Function104f57
	ld a, [$FF00+$bc]
	cp $6c
	ret

; known jump sources: 104a9c (41:4a9c), 104c34 (41:4c34)
Function104d5e: ; 104d5e (41:4d5e)
	call Function104d74
	ld a, $4
	ld [rIE], a ; $ff00+$ff
	xor a
	ld [rIF], a ; $ff00+$f
	call Function104d96
	xor a
	ld b, a
.asm_104d6d
	inc a
	jr nz, .asm_104d6d
	inc b
	jr nz, .asm_104d6d
	ret

; known jump sources: 104d5e (41:4d5e), 10501a (41:501a)
Function104d74: ; 104d74 (41:4d74)
	xor a
	ld [rTAC], a ; $ff00+$7
	ld a, $fe
	ld [rTMA], a ; $ff00+$6
	ld [rTIMA], a ; $ff00+$5
	ld a, $2
	ld [rTAC], a ; $ff00+$7
	or $4
	ld [rTAC], a ; $ff00+$7
	ret

; known jump sources: 104fcf (41:4fcf)
Function104d86: ; 104d86 (41:4d86)
	xor a
	ld [rTAC], a ; $ff00+$7
	ld [rTMA], a ; $ff00+$6
	ld [rTIMA], a ; $ff00+$5
	ld a, $2
	ld [rTAC], a ; $ff00+$7
	or $4
	ld [rTAC], a ; $ff00+$7
	ret

; known jump sources: 104a9f (41:4a9f), 104c37 (41:4c37), 104d38 (41:4d38), 104d43 (41:4d43), 104d68 (41:4d68)
Function104d96: ; 104d96 (41:4d96)
	ld a, $c0
	call Function104e8c
	ld a, $1
	ld [$FF00+$bb], a
	ret

; known jump sources: 104c1b (41:4c1b), 104d20 (41:4d20)
Function104da0: ; 104da0 (41:4da0)
	xor a
	call Function104e8c
	ld a, $2
	ld [rTAC], a ; $ff00+$7
	ret

; known jump sources: 104db3 (41:4db3), 104e0a (41:4e0a), 104e16 (41:4e16), 104e70 (41:4e70), 104e7c (41:4e7c), 104fbb (41:4fbb), 105022 (41:5022)
Function104da9: ; 104da9 (41:4da9)
	inc d
	ret z
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	ld a, [$ff00+c]
	bit 1, a
	jr z, Function104da9
	or a
	ret

; known jump sources: 104dc1 (41:4dc1), 104e03 (41:4e03), 104e10 (41:4e10), 104e69 (41:4e69), 104e76 (41:4e76), 104fb3 (41:4fb3), 104fc3 (41:4fc3)
Function104db7: ; 104db7 (41:4db7)
	inc d
	ret z
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	ld a, [$ff00+c]
	bit 1, a
	jr nz, Function104db7
	or a
	ret

; known jump sources: 104e27 (41:4e27), 104e31 (41:4e31), 104e56 (41:4e56), 104e60 (41:4e60), 104edf (41:4edf), 104f39 (41:4f39)
Function104dc5: ; 104dc5 (41:4dc5)
	ld a, $c1
	ld [$ff00+c], a
.asm_104dc8
	dec d
	ret z
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	jr .asm_104dc8

; known jump sources: 104e22 (41:4e22), 104e2c (41:4e2c), 104e36 (41:4e36), 104e51 (41:4e51), 104e5b (41:4e5b), 104e65 (41:4e65), 104e84 (41:4e84), 104e9e (41:4e9e), 104eda (41:4eda), 104ee4 (41:4ee4), 104f3e (41:4f3e), 104f9b (41:4f9b), 10502a (41:502a)
Function104dd1: ; 104dd1 (41:4dd1)
	ld a, $c0
	ld [$ff00+c], a
.asm_104dd4
	dec d
	ret z
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	jr .asm_104dd4

; known jump sources: 104aa2 (41:4aa2), 104c3a (41:4c3a)
Function104ddd: ; 104ddd (41:4ddd)
	ld d, $0
	ld e, d
	ld a, $1
	ld [$FF00+$bb], a
.asm_104de4
	call Function105038
	ld b, $2
	ld c, $56
	ld a, [$FF00+$c4]
	bit 1, a
	jr z, .asm_104df6
	ld a, $10
	ld [$FF00+$bc], a
	ret
.asm_104df6
	bit 0, a
	jr nz, asm_104e3a
	ld a, [$ff00+c]
	and b
	jr nz, .asm_104de4

; known jump sources: 104d46 (41:4d46)
Function104dfe: ; 104dfe (41:4dfe)
	ld c, $56
	ld d, $0
	ld e, d
	call Function104db7
	jp z, Function104f42
	ld d, e
	call Function104da9
	jp z, Function104f42
	call Function104db7
	jp z, Function104f42
	call Function104da9
	jp z, Function104f42
	ld a, $6c
	ld [$FF00+$bc], a
	ld d, $3d
	call Function104dd1
	ld d, $5
	call Function104dc5
	ld d, $15
	call Function104dd1
	ld d, $5
	call Function104dc5
	ld d, $5
	call Function104dd1
	ret

; known jump sources: 104df8 (41:4df8)
asm_104e3a: ; 104e3a (41:4e3a)
	call Random
	ld e, a
	and $f
	ld d, a
.asm_104e41
	dec de
	ld a, d
	or e
	jr nz, .asm_104e41

; known jump sources: 104d3b (41:4d3b)
Function104e46: ; 104e46 (41:4e46)
	ld a, $2
	ld [$FF00+$bb], a
	ld c, $56
	ld d, $0
	ld e, d
	ld d, $3d
	call Function104dd1
	ld d, $5
	call Function104dc5
	ld d, $15
	call Function104dd1
	ld d, $5
	call Function104dc5
	ld d, $5
	call Function104dd1
	ld d, e
	call Function104db7
	jp z, Function104f42
	ld d, e
	call Function104da9
	jp z, Function104f42
	call Function104db7
	jp z, Function104f42
	call Function104da9
	jp z, Function104f42
	ld d, $3d
	call Function104dd1
	ld a, $6c
	ld [$FF00+$bc], a
	ret

; known jump sources: 104d98 (41:4d98), 104da1 (41:4da1)
Function104e8c: ; 104e8c (41:4e8c)
	ld [rRP], a ; $ff00+$56
	ld a, $ff
	ld [$FF00+$bc], a
	ret

; known jump sources: 104d4e (41:4d4e), 105030 (41:5030)
Function104e93: ; 104e93 (41:4e93)
	xor a
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld [hMathBuffer], a ; $ff00+$b8
	push hl
	push bc
	ld c, $56
	ld d, $3d
	call Function104dd1
	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
	ld a, $5a
	ld [hli], a
	ld [hl], b
	dec hl
	ld b, $2
	call Function104ed6
	pop bc
	pop hl
	call Function104ed6
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand)
	ld a, [hMathBuffer] ; $ff00+$b8
	ld [$FF00+$b5], a
	push hl
	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
	ld b, $2
	call Function104ed6
	ld hl, $ffbc
	ld b, $1
	call Function104faf
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld a, [$FF00+$b5]
	ld [hMathBuffer], a ; $ff00+$b8
	pop hl
	ret

; known jump sources: 104eab (41:4eab), 104eb0 (41:4eb0), 104ec1 (41:4ec1), 104fa3 (41:4fa3)
Function104ed6: ; 104ed6 (41:4ed6)
	ld c, $56
	ld d, $5
	call Function104dd1
	ld d, $5
	call Function104dc5
	ld d, $15
	call Function104dd1
	ld a, b
	cpl
	ld b, a
	ld a, $f4
	ld [rTMA], a ; $ff00+$6
.asm_104eee
	inc b
	jr z, .asm_104f2e
	ld a, $8
	ld [$FF00+$b6], a
	ld a, [hli]
	ld e, a
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	add e
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld a, [hMathBuffer] ; $ff00+$b8
	adc $0
	ld [hMathBuffer], a ; $ff00+$b8
.asm_104f02
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	ld a, $c1
	ld [rRP], a ; $ff00+$56
	ld d, $1
	ld a, e
	rlca
	ld e, a
	jr nc, .asm_104f13
	inc d
.asm_104f13
	ld a, [rTIMA] ; $ff00+$5
	cp $f8
	jr c, .asm_104f13
	ld a, $c0
	ld [rRP], a ; $ff00+$56
	dec d
	jr z, .asm_104f25
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
.asm_104f25
	ld a, [$FF00+$b6]
	dec a
	jr z, .asm_104eee
	ld [$FF00+$b6], a
	jr .asm_104f02
.asm_104f2e
	ld a, $fe
	ld [rTMA], a ; $ff00+$6
	xor a
	ld [rIF], a ; $ff00+$f
	db $76 ;halt (prevents rgbasm from putting in an extra nop)
	nop
	ld d, $5
	call Function104dc5
	ld d, $11
	call Function104dd1
	ret

; known jump sources: 104e06 (41:4e06), 104e0d (41:4e0d), 104e13 (41:4e13), 104e19 (41:4e19), 104e6c (41:4e6c), 104e73 (41:4e73), 104e79 (41:4e79), 104e7f (41:4e7f), 104fb6 (41:4fb6), 104fbe (41:4fbe), 104fc6 (41:4fc6), 105025 (41:5025)
Function104f42: ; 104f42 (41:4f42)
	ld a, [$FF00+$bc]
	or $2
	ld [$FF00+$bc], a
	ret

; known jump sources: 104f95 (41:4f95)
Function104f49: ; 104f49 (41:4f49)
	ld a, [$FF00+$bc]
	or $1
	ld [$FF00+$bc], a
	ret

; known jump sources: 104f6e (41:4f6e), 104f75 (41:4f75)
Function104f50: ; 104f50 (41:4f50)
	ld a, [$FF00+$bc]
	or $80
	ld [$FF00+$bc], a
	ret

; known jump sources: 104d56 (41:4d56), 105035 (41:5035)
Function104f57: ; 104f57 (41:4f57)
	xor a
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld [hMathBuffer], a ; $ff00+$b8
	push bc
	push hl
	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
	ld b, $2
	call Function104faf
	ld a, [$FF00+$b5]
	ld [$FF00+$ba], a
	ld b, a
	pop hl
	pop af
	cp b
	jp c, Function104f50
	ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand)
	cp $5a
	jp nz, Function104f50
	call Function104faf
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	ld d, a
	ld a, [hMathBuffer] ; $ff00+$b8
	ld e, a
	push hl
	push de
	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
	ld b, $2
	call Function104faf
	pop de
	ld hl, hQuotient ; $ffb4 (aliases: hMultiplicand)
	ld a, [hli]
	xor d
	ld b, a
	ld a, [hl]
	xor e
	or b
	call nz, Function104f49
	push de
	ld d, $3d
	call Function104dd1
	ld hl, $ffbc
	ld b, $1
	call Function104ed6
	pop de
	pop hl
	ld a, d
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld a, e
	ld [hMathBuffer], a ; $ff00+$b8
	ret

; known jump sources: 104ec9 (41:4ec9), 104f63 (41:4f63), 104f78 (41:4f78), 104f88 (41:4f88)
Function104faf: ; 104faf (41:4faf)
	ld c, $56
	ld d, $0
	call Function104db7
	jp z, Function104f42
	ld d, $0
	call Function104da9
	jp z, Function104f42
	ld d, $0
	call Function104db7
	jp z, Function104f42
	ld a, b
	cpl
	ld b, a
	xor a
	ld [$FF00+$c5], a
	call Function104d86
.asm_104fd2
	inc b
	jr z, .asm_10501a
	ld a, $8
	ld [$FF00+$b6], a
.asm_104fd9
	ld d, $0
.asm_104fdb
	inc d
	jr z, .asm_104fe5
	ld a, [$ff00+c]
	bit 1, a
	jr z, .asm_104fdb
	ld d, $0
.asm_104fe5
	inc d
	jr z, .asm_104fed
	ld a, [$ff00+c]
	bit 1, a
	jr nz, .asm_104fe5
.asm_104fed
	ld a, [$FF00+$c5]
	ld d, a
	ld a, [rTIMA] ; $ff00+$5
	ld [$FF00+$c5], a
	sub d
	cp $12
	jr c, .asm_104ffd
	set 0, e
	jr .asm_104fff
.asm_104ffd
	res 0, e
.asm_104fff
	ld a, [$FF00+$b6]
	dec a
	ld [$FF00+$b6], a
	jr z, .asm_10500b
	ld a, e
	rlca
	ld e, a
	jr .asm_104fd9
.asm_10500b
	ld a, e
	ld [hli], a
	ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier)
	add e
	ld [hDivisor], a ; $ff00+$b7 (aliases: hMultiplier)
	ld a, [hMathBuffer] ; $ff00+$b8
	adc $0
	ld [hMathBuffer], a ; $ff00+$b8
	jr .asm_104fd2
.asm_10501a
	call Function104d74
	xor a
	ld [rIF], a ; $ff00+$f
	ld d, $0
	call Function104da9
	jp z, Function104f42
	ld d, $10
	call Function104dd1
	ret

; known jump sources: 104b3a (41:4b3a), 104b69 (41:4b69), 104b95 (41:4b95), 104bc8 (41:4bc8), 104c84 (41:4c84), 104cb3 (41:4cb3), 104cdf (41:4cdf), 104d14 (41:4d14)
Function10502e: ; 10502e (41:502e)
	ld b, $0
	jp Function104e93

; known jump sources: 104b1c (41:4b1c), 104b49 (41:4b49), 104b80 (41:4b80), 104baa (41:4baa), 104c66 (41:4c66), 104c93 (41:4c93), 104cca (41:4cca), 104cf4 (41:4cf4)
Function105033: ; 105033 (41:5033)
	ld b, $0
	jp Function104f57

; known jump sources: 104ad6 (41:4ad6), 104de4 (41:4de4)
Function105038: ; 105038 (41:5038)
	ld a, $20
	ld [rJOYP], a ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	cpl
	and $f
	swap a
	ld b, a
	ld a, $10
	ld [rJOYP], a ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	ld a, [rJOYP] ; $ff00+$0
	cpl
	and $f
	or b
	ld c, a
	ld a, [$FF00+$c3]
	xor c
	and c
	ld [$FF00+$c4], a
	ld a, c
	ld [$FF00+$c3], a
	ld a, $30
	ld [rJOYP], a ; $ff00+$0
	ret

; known jump sources: 104974 (41:4974)
Function105069: ; 105069 (41:5069)
	call Function105106
	ld d, $0
	ld b, $2
	ld hl, $abf0
	ld a, $3
	push hl
	push bc
	call Predef
	call CloseSRAM
	ld a, c
	and a
	pop bc
	pop hl
	ret nz
	call Function105106
	ld b, $1
	ld a, $3
	call Predef
	call CloseSRAM
	xor a
	ret

; no known jump sources
Function105091: ; 105091 (41:5091)
	call Function105106
	ld c, $0
.asm_105096
	push bc
	ld d, $0
	ld b, $2
	ld hl, $abf0
	ld a, $3
	call Predef
	ld a, c
	and a
	pop bc
	jr z, .asm_1050b0
	push bc
	callab Function26f02
	pop bc
.asm_1050b0
	inc c
	ld a, c
	cp $2b
	jr c, .asm_105096
	jp CloseSRAM

Function1050b9: ; 1050b9
	call Function105106
	ld hl, $abe3
	ld a, [hl]
	inc a
	jr nz, .asm_1050c5
	ld [hld], a
	ld [hl], a

.asm_1050c5
	jp CloseSRAM
; 1050c8

Function1050c8: ; 1050c8
	call Function105106
	ld a, [$abe5]
	cp $ff
	jr z, .asm_1050d6
	xor a
	ld [$abe5], a

.asm_1050d6
	jp CloseSRAM
; 1050d9


Function1050d9: ; 1050d9
	call Function105106
	ld hl, $abe2
	ld de, $abe4
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	jp CloseSRAM
; 1050ea


; no known jump sources
Function1050ea: ; 1050ea (41:50ea)
	call Function105106
	ld hl, $abe4
	ld de, $abe2
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hl]
	ld [de], a
	jp CloseSRAM

; known jump sources: 1048d8 (41:48d8), 104bfa (41:4bfa), 1056a3 (41:56a3)
Function1050fb: ; 1050fb (41:50fb)
	ld hl, $c850
	xor a
	ld b, $26
.asm_105101
	ld [hli], a
	dec b
	jr nz, .asm_105101
	ret


Function105106: ; 105106
	ld a, $0
	jp GetSRAMBank
; 10510b


; no known jump sources
Function10510b: ; 10510b (41:510b)
	ld a, $1
	call GetSRAMBank
	ld de, OverworldMap ; $c800
	ld bc, $a86d
	ld hl, $a866
.asm_105119
	ld a, [hli]
	cp $ff
	jr z, .asm_105148
	cp $fd
	jr z, .asm_10513e
	push hl
	ld hl, $1f
	add hl, bc
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, $0
	add hl, bc
	ld a, [hl]
	ld [de], a
	inc de
	ld hl, $2
	add hl, bc
	push bc
	ld bc, $4
	call CopyBytes
	pop bc
	pop hl
.asm_10513e
	push hl
	ld hl, $30
	add hl, bc
	ld b, h
	ld c, l
	pop hl
	jr .asm_105119
.asm_105148
	ld a, $ff
	ld [de], a
	ld a, $26
	ld [$ca00], a
	jp CloseSRAM

; known jump sources: 1048c3 (41:48c3)
Function105153: ; 105153 (41:5153)
	call WhiteBGMap
	call DisableLCD
	ld hl, $5258
	ld de, $9000
	ld a, $41
	ld bc, $430
	call FarCopyBytes
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $42
	ld bc, $168
	call ByteFill
	ld hl, $c52f
	ld bc, $90f
	call ClearBox
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $0
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4b4
	inc a
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4bb
	ld a, $12
	call Function10522e
	ld hl, $c4ca
	ld a, $17
	call Function105236
	ld hl, $c4de
	ld a, $27
	call Function105236
	ld hl, $c4f9
	ld a, $37
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4c9
	ld [hl], $4
	ld hl, $c4dd
	ld a, $5
	call Function105246
	ld a, $9
	ld hl, $c516
	call Function105242
	ld hl, $c506
	ld a, $b
	call Function105251
	ld hl, $c5e2
	ld a, $7
	call Function105251
	ld hl, $c506
	ld a, $d
	call Function10522e
	ld hl, $c50b
	ld [hl], $c
	ld hl, $c516
	ld [hl], $a
	ld hl, $c5f2
	ld [hl], $8
	ld hl, $c5e1
	ld [hl], $6
	ld hl, $c51a
	ld a, $3a
	call Function105251
	ld hl, $c5ce
	ld a, $40
	call Function105251
	ld hl, $c51a
	ld a, $3c
	call Function10523e
	ld hl, $c529
	ld a, $3e
	call Function10523e
	ld hl, $c51a
	ld [hl], $39
	ld hl, $c529
	ld [hl], $3b
	ld hl, $c5ce
	ld [hl], $3f
	ld hl, $c5dd
	ld [hl], $41
	call EnableLCD
	call WaitBGMap
	ld b, $1d
	call GetSGBLayout
	call Function32f9
	ret

; known jump sources: 10518f (41:518f), 1051d4 (41:51d4)
Function10522e: ; 10522e (41:522e)
	ld b, $5
	jr asm_105238
; 105232 (41:5232)

INCBIN "baserom.gbc",$105232,$105236 - $105232

; known jump sources: 105197 (41:5197), 10519f (41:519f)
Function105236: ; 105236 (41:5236)
	ld b, $10

; known jump sources: 105230 (41:5230), 10523b (41:523b)
asm_105238: ; 105238 (41:5238)
	ld [hli], a
	inc a
	dec b
	jr nz, asm_105238
	ret

; known jump sources: 105200 (41:5200), 105208 (41:5208)
Function10523e: ; 10523e (41:523e)
	ld b, $9
	jr asm_105248

; known jump sources: 1051bc (41:51bc)
Function105242: ; 105242 (41:5242)
	ld b, $b
	jr asm_105248

; known jump sources: 1051b4 (41:51b4)
Function105246: ; 105246 (41:5246)
	ld b, $e

; known jump sources: 105240 (41:5240), 105244 (41:5244), 10524e (41:524e)
asm_105248: ; 105248 (41:5248)
	ld [hl], a
	ld de, $14
	add hl, de
	dec b
	jr nz, asm_105248
	ret

; known jump sources: 1051c4 (41:51c4), 1051cc (41:51cc), 1051f0 (41:51f0), 1051f8 (41:51f8)
Function105251: ; 105251 (41:5251)
	ld b, $10
.asm_105253
	ld [hli], a
	dec b
	jr nz, .asm_105253
	ret

MysteryGiftGFX:
INCBIN "gfx/misc/mystery_gift.2bpp"


; known jump sources: 105723 (41:5723)
Function105688: ; 105688 (41:5688)
	call ClearTileMap
	call ClearSprites
	call WaitBGMap
	call Function1057d7
	ld hl, $c543
	ld de, $572e
	call PlaceString
	call WaitBGMap
	call Function10578c
	call Function1050fb
	ld a, $24
	ld [$ca02], a
	ld a, [rIE] ; $ff00+$ff
	push af
	call Function104c2d
	ld d, a
	xor a
	ld [rIF], a ; $ff00+$f
	pop af
	ld [rIE], a ; $ff00+$ff
	ld a, d
	cp $10
	jp z, Function105712
	cp $6c
	jp nz, Function10571a
	call Function1056eb
	ld c, $3c
	call DelayFrames
	call Function105777
	ld hl, $575e
	call PrintText
	ld de, $c850
	callba Function8ac70
	ld a, c
	ld [$d265], a
	ld hl, $5768
	jr c, asm_105726
	ld hl, $5763
	jr asm_105726

; known jump sources: 1056c3 (41:56c3)
Function1056eb: ; 1056eb (41:56eb)
	ld c, $10
.asm_1056ed
	ld hl, Sprites ; $c400
	ld b, $8
.asm_1056f2
	dec [hl]
	inc hl
	inc hl
	inc hl
	inc hl
	dec b
	jr nz, .asm_1056f2
	ld hl, $c420
	ld b, $8
.asm_1056ff
	inc [hl]
	inc hl
	inc hl
	inc hl
	inc hl
	dec b
	jr nz, .asm_1056ff
	dec c
	ret z
	push bc
	ld c, $4
	call DelayFrames
	pop bc
	jr .asm_1056ed

; known jump sources: 1056bb (41:56bb)
Function105712: ; 105712 (41:5712)
	call Function105777
	ld hl, $576d
	jr asm_105726

; known jump sources: 1056c0 (41:56c0)
Function10571a: ; 10571a (41:571a)
	call Function105777
	ld hl, $5772
	call PrintText
	jp Function105688

; known jump sources: 1056e4 (41:56e4), 1056e9 (41:56e9), 105718 (41:5718)
asm_105726: ; 105726 (41:5726)
	call PrintText
	ld a, $e3
	ld [rLCDC], a ; $ff00+$40
	ret
; 10572e (41:572e)

INCBIN "baserom.gbc",$10572e,$105777 - $10572e

; known jump sources: 1056cb (41:56cb), 105712 (41:5712), 10571a (41:571a)
Function105777: ; 105777 (41:5777)
	call ClearSprites
	call ClearTileMap
	call EnableLCD
	call WaitBGMap
	ld b, $8
	call GetSGBLayout
	call Function32f9
	ret

; known jump sources: 1056a0 (41:56a0)
Function10578c: ; 10578c (41:578c)
	ld de, OverworldMap ; $c800
	ld a, $1
	call GetSRAMBank
	ld hl, $a00b
	ld bc, $b
	call CopyBytes
	ld hl, $a009
	ld bc, $2
	call CopyBytes
	ld hl, $a3d8
	ld bc, $2
	call CopyBytes
	call CloseSRAM
	ld a, $1
	call GetSRAMBank
	ld a, [$be3d]
	ld [de], a
	inc de
	ld a, $4
	call GetSRAMBank
	ld hl, $a603
	ld bc, $8
	call CopyBytes
	ld hl, $a007
	ld bc, $c
	call CopyBytes
	call CloseSRAM
	ret

; known jump sources: 105691 (41:5691)
Function1057d7: ; 1057d7 (41:57d7)
	call WhiteBGMap
	call DisableLCD
	ld hl, $5930
	ld de, $9000
	ld a, $41
	ld bc, $400
	call FarCopyBytes
	ld hl, $5d30
	ld de, $8000
	ld a, $41
	ld bc, $80
	call FarCopyBytes
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $3f
	ld bc, $168
	call ByteFill
	ld hl, $c52f
	ld bc, $90f
	call ClearBox
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld a, $0
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4b4
	inc a
	ld [hli], a
	inc a
	ld [hl], a
	ld hl, $c4cc
	ld a, $13
	call Function1058ca
	ld hl, $c4e0
	ld a, $1e
	call Function1058ce
	ld hl, $c4f4
	ld a, $2a
	call Function1058ce
	ld hl, $c4c9
	ld [hl], $4
	ld hl, $c4dd
	ld a, $5
	call Function1058de
	ld a, $9
	ld hl, $c516
	call Function1058da
	ld hl, $c506
	ld a, $b
	call Function1058e9
	ld hl, $c5e2
	ld a, $7
	call Function1058e9
	ld hl, $c506
	ld a, $d
	call Function1058c6
	ld hl, $c50c
	ld [hl], $c
	ld hl, $c516
	ld [hl], $a
	ld hl, $c5f2
	ld [hl], $8
	ld hl, $c5e1
	ld [hl], $6
	ld hl, $c51a
	ld a, $37
	call Function1058e9
	ld hl, $c5ce
	ld a, $3d
	call Function1058e9
	ld hl, $c51a
	ld a, $39
	call Function1058d6
	ld hl, $c529
	ld a, $3b
	call Function1058d6
	ld hl, $c51a
	ld [hl], $36
	ld hl, $c529
	ld [hl], $38
	ld hl, $c5ce
	ld [hl], $3c
	ld hl, $c5dd
	ld [hl], $3e
	ld de, Sprites ; $c400
	ld hl, $58f0
	ld bc, $40
	call CopyBytes
	call EnableLCD
	call WaitBGMap
	ld b, $2
	callba Function4930f
	jp Function32f9

; known jump sources: 10585e (41:585e)
Function1058c6: ; 1058c6 (41:58c6)
	ld b, $6
	jr asm_1058d0

; known jump sources: 105821 (41:5821)
Function1058ca: ; 1058ca (41:58ca)
	ld b, $b
	jr asm_1058d0

; known jump sources: 105829 (41:5829), 105831 (41:5831)
Function1058ce: ; 1058ce (41:58ce)
	ld b, $c

; known jump sources: 1058c8 (41:58c8), 1058cc (41:58cc), 1058d3 (41:58d3)
asm_1058d0: ; 1058d0 (41:58d0)
	ld [hli], a
	inc a
	dec b
	jr nz, asm_1058d0
	ret

; known jump sources: 10588a (41:588a), 105892 (41:5892)
Function1058d6: ; 1058d6 (41:58d6)
	ld b, $9
	jr asm_1058e0

; known jump sources: 105846 (41:5846)
Function1058da: ; 1058da (41:58da)
	ld b, $b
	jr asm_1058e0

; known jump sources: 10583e (41:583e)
Function1058de: ; 1058de (41:58de)
	ld b, $e

; known jump sources: 1058d8 (41:58d8), 1058dc (41:58dc), 1058e6 (41:58e6)
asm_1058e0: ; 1058e0 (41:58e0)
	ld [hl], a
	ld de, $14
	add hl, de
	dec b
	jr nz, asm_1058e0
	ret

; known jump sources: 10584e (41:584e), 105856 (41:5856), 10587a (41:587a), 105882 (41:5882)
Function1058e9: ; 1058e9 (41:58e9)
	ld b, $10
.asm_1058eb
	ld [hli], a
	dec b
	jr nz, .asm_1058eb
	ret
; 1058f0 (41:58f0)

INCBIN "baserom.gbc",$1058f0,$105930 - $1058f0

; japanese mystery gift gfx
INCBIN "gfx/misc/mystery_gift_jp.2bpp"


DisplayUsedMoveText: ; 105db0
; battle command 03
	ld hl, UsedMoveText
	call BattleTextBox
	jp WaitBGMap
; 105db9


UsedMoveText: ; 105db9

; this is a stream of text and asm from 105db9 to 105ef6

; print actor name
	text_jump _ActorNameText, BANK(_ActorNameText)
	start_asm

; ????
	ld a, [hBattleTurn]
	and a
	jr nz, .start
	
; append used move list
	ld a, [PlayerMoveAnimation]
	call UpdateUsedMoves
	
.start
; get address for last move
	ld a, $13 ; last move
	call _GetBattleVar
	ld d, h
	ld e, l
	
; get address for last counter move
	ld a, $11
	call _GetBattleVar
	
; get move animation (id)
	ld a, $c ; move animation
	call GetBattleVar
	ld [$d265], a
	
; check actor ????
	push hl
	callba Function0x34548
	pop hl
	jr nz, .grammar
	
; update last move
	ld a, [$d265]
	ld [hl], a
	ld [de], a
	
.grammar
	call GetMoveGrammar
; $d265 now contains MoveGrammar
	
	
; everything except 'instead' made redundant in localization

; check obedience
	ld a, [AlreadyDisobeyed]
	and a
	ld hl, UsedMove2Text
	ret nz
	
; check move grammar
	ld a, [$d265]
	cp $3
	ld hl, UsedMove2Text
	ret c
	ld hl, UsedMove1Text
	ret
; 105e04

UsedMove1Text: ; 105e04
	text_jump _UsedMove1Text, BANK(_UsedMove1Text)
	start_asm
	jr Function105e10
; 105e0b

UsedMove2Text: ; 105e0b
	text_jump _UsedMove2Text, BANK(_UsedMove2Text)
	start_asm
; 105e10

Function105e10: ; 105e10
; check obedience
	ld a, [AlreadyDisobeyed]
	and a
	jr z, GetMoveNameText
; print "instead,"
	ld hl, UsedInsteadText
	ret
; 105e1a

UsedInsteadText: ; 105e1a
	text_jump _UsedInsteadText, BANK(_UsedInsteadText)
	start_asm
; 105e1f

GetMoveNameText: ; 105e1f
	ld hl, MoveNameText
	ret
; 105e23

MoveNameText: ; 105e23
	text_jump _MoveNameText, BANK(_MoveNameText)
	start_asm
; 105e28

GetUsedMoveTextEnder: ; 105e28
; get start address
	ld hl, .endusedmovetexts
	
; get move id
	ld a, [$d265]
	
; 2-byte pointer
	add a
	
; seek
	push bc
	ld b, $0
	ld c, a
	add hl, bc
	pop bc
	
; get pointer to usedmovetext ender
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 105e39

.endusedmovetexts ; 105e39
	dw EndUsedMove1Text
	dw EndUsedMove2Text
	dw EndUsedMove3Text
	dw EndUsedMove4Text
	dw EndUsedMove5Text
; 105e43

EndUsedMove1Text: ; 105e43
	text_jump _EndUsedMove1Text, BANK(_EndUsedMove1Text)
	db "@"
; 105e48
EndUsedMove2Text: ; 105e48
	text_jump _EndUsedMove2Text, BANK(_EndUsedMove2Text)
	db "@"
; 105e4d
EndUsedMove3Text: ; 105e4d
	text_jump _EndUsedMove3Text, BANK(_EndUsedMove3Text)
	db "@"
; 105e52
EndUsedMove4Text: ; 105e52
	text_jump _EndUsedMove4Text, BANK(_EndUsedMove4Text)
	db "@"
; 105e57
EndUsedMove5Text: ; 105e57
	text_jump _EndUsedMove5Text, BANK(_EndUsedMove5Text)
	db "@"
; 105e5c


GetMoveGrammar: ; 105e5c
; store move grammar type in $d265

	push bc
; c = move id
	ld a, [$d265]
	ld c, a
	ld b, $0
	
; read grammar table
	ld hl, MoveGrammar
.loop
	ld a, [hli]
; end of table?
	cp $ff
	jr z, .end
; match?
	cp c
	jr z, .end
; advance grammar type at $00
	and a
	jr nz, .loop
; next grammar type
	inc b
	jr .loop
	
.end
; $d265 now contains move grammar
	ld a, b
	ld [$d265], a
	
; we're done
	pop bc
	ret
; 105e7a

MoveGrammar: ; 105e7a
; made redundant in localization
; each move is given an identifier for what usedmovetext to use (0-4):

; 0
	db SWORDS_DANCE
	db GROWTH
	db STRENGTH
	db HARDEN
	db MINIMIZE
	db SMOKESCREEN
	db WITHDRAW
	db DEFENSE_CURL
	db EGG_BOMB
	db SMOG
	db BONE_CLUB
	db FLASH
	db SPLASH
	db ACID_ARMOR
	db BONEMERANG
	db REST
	db SHARPEN
	db SUBSTITUTE
	db MIND_READER
	db SNORE
	db PROTECT
	db SPIKES
	db ENDURE
	db ROLLOUT
	db SWAGGER
	db SLEEP_TALK
	db HIDDEN_POWER
	db PSYCH_UP
	db EXTREMESPEED
	db 0 ; end set
	
; 1
	db RECOVER
	db TELEPORT
	db BIDE
	db SELFDESTRUCT
	db AMNESIA
	db FLAIL
	db 0 ; end set
	
; 2
	db MEDITATE
	db AGILITY
	db MIMIC
	db DOUBLE_TEAM
	db BARRAGE
	db TRANSFORM
	db STRUGGLE
	db SCARY_FACE
	db 0 ; end set
	
; 3
	db POUND
	db SCRATCH
	db VICEGRIP
	db WING_ATTACK
	db FLY
	db BIND
	db SLAM
	db HORN_ATTACK
	db WRAP
	db THRASH
	db TAIL_WHIP
	db LEER
	db BITE
	db GROWL
	db ROAR
	db SING
	db PECK
	db ABSORB
	db STRING_SHOT
	db EARTHQUAKE
	db FISSURE
	db DIG
	db TOXIC
	db SCREECH
	db METRONOME
	db LICK
	db CLAMP
	db CONSTRICT
	db POISON_GAS
	db BUBBLE
	db SLASH
	db SPIDER_WEB
	db NIGHTMARE
	db CURSE
	db FORESIGHT
	db CHARM
	db ATTRACT
	db ROCK_SMASH
	db 0 ; end set
	
; all other moves = 4
	db $ff ; end
; 105ed0


UpdateUsedMoves: ; 105ed0
; append move a to PlayerUsedMoves unless it has already been used

	push bc
; start of list
	ld hl, PlayerUsedMoves
; get move id
	ld b, a
; loop count
	ld c, NUM_MOVES
	
.loop
; get move from the list
	ld a, [hli]
; not used yet?
	and a
	jr z, .add
; already used?
	cp b
	jr z, .quit
; next byte
	dec c
	jr nz, .loop
	
; if the list is full and the move hasn't already been used
; shift the list back one byte, deleting the first move used
; this can occur with struggle or a new learned move
	ld hl, PlayerUsedMoves + 1
; 1 = 2
	ld a, [hld]
	ld [hli], a
; 2 = 3
	inc hl
	ld a, [hld]
	ld [hli], a
; 3 = 4
	inc hl
	ld a, [hld]
	ld [hl], a
; 4 = new move
	ld a, b
	ld [PlayerUsedMoves + 3], a
	jr .quit
	
.add
; go back to the byte we just inced from
	dec hl
; add the new move
	ld [hl], b
	
.quit
; list updated
	pop bc
	ret
; 105ef6



Mobile_HallOfFame2: ; 0x105ef6
	ret
; 105ef7

Function105ef7: ; 105ef7
	ld a, $5
	call GetSRAMBank
	ld hl, GameTimeHours
	ld de, $a001
	ld bc, $0004
	call CopyBytes
	ld hl, $a010
	ld de, $a005
	ld bc, $0004
	call CopyBytes
	ld hl, $a039
	ld de, $a009
	ld bc, $0004
	call CopyBytes
	ld hl, $a01b
	ld de, $a00d
	ld bc, $0003
	call CopyBytes
	call Function106162
	call CloseSRAM
	ret
; 105f33

Function105f33: ; 105f33
	ret
; 105f34

Function105f34: ; 105f34
	ld a, $5
	call GetSRAMBank
	ld de, Buffer1
	ld hl, $a07b
	ld a, [de]
	cp [hl]
	jr z, .asm_105f47
	jr nc, .asm_105f4f
	jr .asm_105f55

.asm_105f47
	inc hl
	inc de
	ld a, [de]
	cp [hl]
	dec hl
	dec de
	jr c, .asm_105f55

.asm_105f4f
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	dec de
	ld [hl], a

.asm_105f55
	ld hl, $a07d
	ld a, [hli]
	or [hl]
	dec hl
	jr z, .asm_105f6d
	ld a, [de]
	cp [hl]
	jr z, .asm_105f65
	jr c, .asm_105f6d
	jr .asm_105f72

.asm_105f65
	inc hl
	inc de
	ld a, [de]
	cp [hl]
	jr nc, .asm_105f72
	dec hl
	dec de

.asm_105f6d
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a

.asm_105f72
	call Function106162
	call CloseSRAM
	ret
; 105f79

Function105f79: ; 105f79
	ret
; 105f7a

Function105f7a: ; 105f7a
	ld a, $5
	call GetSRAMBank
	ld a, [hProduct]
	ld hl, $a07f
	cp [hl]
	jr z, .asm_105f8b
	jr nc, .asm_105f92
	jr .asm_105f98

.asm_105f8b
	inc hl
	ld a, [hMultiplicand]
	cp [hl]
	jr c, .asm_105f98
	dec hl

.asm_105f92
	ld a, [hProduct]
	ld [hli], a
	ld a, [hMultiplicand]
	ld [hl], a

.asm_105f98
	call Function106162
	call CloseSRAM
	ret
; 105f9f

Function105f9f: ; 105f9f
	ret
; 105fa0

Function105fa0: ; 105fa0
	ld a, $5
	call GetSRAMBank
	ld hl, $a070
	inc [hl]
	jr nz, .asm_105fae
	dec hl
	inc [hl]
	inc hl

.asm_105fae
	dec hl
	ld a, [$a071]
	cp [hl]
	jr z, .asm_105fb9
	jr c, .asm_105fc1
	jr .asm_105fc9

.asm_105fb9
	inc hl
	ld a, [$a072]
	cp [hl]
	jr nc, .asm_105fc9
	dec hl

.asm_105fc1
	ld a, [hli]
	ld [$a071], a
	ld a, [hl]
	ld [$a072], a

.asm_105fc9
	call Function106162
	call CloseSRAM
	ret
; 105fd0

Function105fd0: ; 105fd0
	ret
; 105fd1

Function105fd1: ; 105fd1
	ld a, $5
	call GetSRAMBank
	ld hl, $a06f
	xor a
	ld [hli], a
	ld [hl], a
	call Function106162
	call CloseSRAM
	ret
; 105fe3

Function105fe3: ; 105fe3
	ret
; 105fe4

Function105fe4: ; 105fe4
	ld a, $5
	call GetSRAMBank
	ld hl, $a076
	ld a, e
	add [hl]
	ld [hld], a
	ld a, d
	adc [hl]
	ld [hld], a
	jr nc, .asm_106001
	inc [hl]
	jr nz, .asm_106001
	dec hl
	inc [hl]
	jr nz, .asm_106001
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a

.asm_106001
	call Function106162
	call CloseSRAM
	ret
; 106008


Function106008: ; 106008
	ret
; 106009

Function106009: ; 106009
	ld a, $5
	call GetSRAMBank
	ld hl, $a07a
	ld a, [bc]
	dec bc
	add [hl]
	ld [hld], a
	ld a, [bc]
	dec bc
	adc [hl]
	ld [hld], a
	ld a, [bc]
	adc [hl]
	ld [hld], a
	jr nc, .asm_106027
	inc [hl]
	jr nz, .asm_106027
	ld a, $ff
	ld [hli], a
	ld [hli], a
	ld [hli], a
	ld [hl], a

.asm_106027
	call Function106162
	call CloseSRAM
	ret
; 10602e


; no known jump sources
Function10602e: ; 10602e (41:602e)
	ret
; 10602f (41:602f)

INCBIN "baserom.gbc",$10602f,$106049 - $10602f

Function106049: ; 106049
	ret
; 10604a (41:604a)

INCBIN "baserom.gbc",$10604a,$106050 - $10604a


Function106050: ; 106050
	ret
; 106051

Function106051: ; 106051
	ld a, [BattleType]
	cp $3
	ret z
	ld hl, $a01b
	jp Function10611d
; 10605d


Function10605d: ; 10605d
	ret
; 10605e

Function10605e: ; 10605e
	ld a, [BattleType]
	cp $3
	ret z
	ld hl, $a01e
	jp Function10611d
; 10606a


Function10606a: ; 10606a
	ret
; 10606b

Function10606b: ; 10606b
	ld hl, $a021
	jp Function10611d
; 106071

INCBIN "baserom.gbc",$106071,$106078 - $106071

Mobile_HallOfFame: ; 0x106078
	ret

Function106079: ; 106079
	ld hl, $a027
	jp Function10611d
; 10607f


; no known jump sources
Function10607f: ; 10607f (41:607f)
	ret
; 106080 (41:6080)

INCBIN "baserom.gbc",$106080,$106086 - $106080


Function106086: ; 106086
	ret
; 106087

Function106087: ; 106087
	ld hl, $a02d
	jp Function10611d
; 10608d


; no known jump sources
Function10608d: ; 10608d (41:608d)
	ret
; 10608e (41:608e)

INCBIN "baserom.gbc",$10608e,$106094 - $10608e


Function106094: ; 106094
	ret
; 106095

Function106095: ; 106095
	ld hl, $a033
	jp Function10611d
; 10609b

Function10609b: ; 10609b
	ret
; 10609c (41:609c)

INCBIN "baserom.gbc",$10609c,$1060a2 - $10609c

Function1060a2: ; 1060a2
	ret
; 1060a3

Function1060a3: ; 1060a3
	ld hl, $a039
	jp Function10611d
; 1060a9


; no known jump sources
Function1060a9: ; 1060a9 (41:60a9)
	ret
; 1060aa (41:60aa)

INCBIN "baserom.gbc",$1060aa,$1060af - $1060aa

Function1060af: ; 1060af
	ret
; 1060b0

INCBIN "baserom.gbc",$1060b0,$1060b5 - $1060b0

Function1060b5: ; 1060b5
	ret
; 1060b6

INCBIN "baserom.gbc",$1060b6,$1060bb - $1060b6

Function1060bb: ; 1060bb
	ret
; 1060bc

INCBIN "baserom.gbc",$1060bc,$1060c1 - $1060bc

Function1060c1: ; 1060c1
	ret
; 1060c2

INCBIN "baserom.gbc",$1060c2,$1060c7 - $1060c2

Function1060c7: ; 1060c7
	ret
; 1060c8 (41:60c8)

INCBIN "baserom.gbc",$1060c8,$1060cd - $1060c8

Function1060cd: ; 1060cd
	ret
; 1060ce

INCBIN "baserom.gbc",$1060ce,$1060d3 - $1060ce


Function1060d3: ; 1060d3
	ret
; 1060d4

INCBIN "baserom.gbc",$1060d4,$1060df - $1060d4


Function1060df: ; 1060df
	ret
; 1060e0

INCBIN "baserom.gbc",$1060e0,$1060e5 - $1060e0

Function1060e5: ; 1060e5
	ret
; 1060e6 (41:60e6)

INCBIN "baserom.gbc",$1060e6,$1060fb - $1060e6


Function1060fb: ; 1060fb
	ret
; 1060fc

INCBIN "baserom.gbc",$1060fc,$106101 - $1060fc


Function106101: ; 106101
	ret
; 106102

Function106102: ; 106102
	ld hl, $a066
	jr Function10611d
; 106107

Function106107: ; 106107
	ret
; 106108

Function106108: ; 106108
	ld hl, $a069
	jr Function10611d
; 10610d

Function10610d: ; 10610d
	ret
; 10610e

Function10610e: ; 10610e
	ld a, [hBattleTurn]
	and a
	ret nz
	ld hl, $a06c
	jr Function10611d
; 106117

Function106117: ; 106117
	push bc
	ld bc, 3
	jr Function10612d
; 10611d

Function10611d: ; 10611d
	push bc
	ld bc, 2
	jr Function10612d
; 106123

Function106123: ; 106123
	push bc
	ld bc, 1
	jr Function10612d
; 106129

Function106129: ; 106129
	push bc
	ld bc, 0

Function10612d: ; 10612d
	ld a, $5
	call GetSRAMBank
	push hl
	push de
	ld e, c
	inc e
.asm_106136
	ld a, [hli]
	inc a
	jr nz, .asm_10613d
	dec e
	jr nz, .asm_106136

.asm_10613d
	pop de
	pop hl
	jr z, .asm_10614d
	add hl, bc
.asm_106142
	inc [hl]
	jr nz, .asm_10614d
	ld a, c
	and a
	jr z, .asm_10614d
	dec hl
	dec c
	jr .asm_106142

.asm_10614d
	call Function106162
	call CloseSRAM
	pop bc
	ret
; 106155

INCBIN "baserom.gbc",$106155,$106162 - $106155

Function106162: ; 106162
	push de
	call Function10616e
	ld hl, $a081
	ld [hl], d
	inc hl
	ld [hl], e
	pop de
	ret
; 10616e

Function10616e: ; 10616e
	push bc
	ld hl, $a001
	ld bc, $0080
	xor a
	ld de, $0000
.asm_106179
	ld a, e
	add [hl]
	ld e, a
	jr nc, .asm_10617f
	inc d

.asm_10617f
	inc hl
	dec bc
	ld a, b
	or c
	jr nz, .asm_106179
	pop bc
	ret
; 106187


Function106187: ; 106187
	ld a, $1
	call GetSRAMBank
	ld a, [$be3c]
	push af
	ld a, $1
	call GetSRAMBank
	pop af
	ld [$be44], a
	call CloseSRAM
	ret
; 10619d


; no known jump sources
Function10619d: ; 10619d (41:619d)
	ld a, $1
	call GetSRAMBank
	ld a, [$be44]
	push af
	ld a, $1
	call GetSRAMBank
	pop af
	ld [$be3c], a
	call CloseSRAM
	ret
; 1061b3 (41:61b3)

INCBIN "baserom.gbc",$1061b3,$1061c0 - $1061b3

; no known jump sources
Function1061c0: ; 1061c0 (41:61c0)
	ld a, $1
	call GetSRAMBank
	xor a
	ld [$be3c], a
	call CloseSRAM
	ret
; 1061cd (41:61cd)

INCBIN "baserom.gbc",$1061cd,$1061ef - $1061cd


Function1061ef: ; 1061ef
	push bc
	xor a
	ld [hProduct], a
	ld [hMultiplicand], a
	ld [$ffb5], a
	ld a, b
	and $f
	cp $1
	jr z, .asm_106212
	cp $2
	jr z, .asm_10620e
	cp $3
	jr z, .asm_10620a
	ld a, [de]
	ld [hProduct], a
	inc de

.asm_10620a
	ld a, [de]
	ld [hMultiplicand], a
	inc de

.asm_10620e
	ld a, [de]
	ld [$ffb5], a
	inc de

.asm_106212
	ld a, [de]
	ld [$ffb6], a
	inc de
	push de
	xor a
	ld [$ffbb], a
	ld a, b
	ld [$ffbc], a
	ld a, c
	cp $2
	jr z, .asm_10626a
	ld de, $62ae
	cp $3
	jr z, .asm_106256
	ld de, $62aa
	cp $4
	jr z, .asm_106256
	ld de, $62a6
	cp $5
	jr z, .asm_106256
	ld de, $62a2
	cp $6
	jr z, .asm_106256
	ld de, $629e
	cp $7
	jr z, .asm_106256
	ld de, $629a
	cp $8
	jr z, .asm_106256
	ld de, $6296
	cp $9
	jr z, .asm_106256
	ld de, $6292

.asm_106256
	inc de
	inc de
	inc de
	dec a
	dec a
.asm_10625b
	push af
	call Function1062b2
	call Function1062ff
	inc de
	inc de
	inc de
	inc de
	pop af
	dec a
	jr nz, .asm_10625b

.asm_10626a
	ld c, $0
	ld a, [$ffb6]
.asm_10626e
	cp $a
	jr c, .asm_106277
	sub $a
	inc c
	jr .asm_10626e

.asm_106277
	ld b, a
	ld a, [$ffbb]
	or c
	ld [$ffbb], a
	jr nz, .asm_106284
	call Function1062f7
	jr .asm_106288

.asm_106284
	ld a, $f6
	add c
	ld [hl], a

.asm_106288
	call Function1062ff
	ld a, $f6
	add b
	ld [hli], a
	pop de
	pop bc
	ret
; 106292

INCBIN "baserom.gbc",$106292,$1062b2 - $106292


Function1062b2: ; 1062b2
	ld c, $0
.asm_1062b4
	ld a, [de]
	dec de
	ld b, a
	ld a, [$ffb6]
	sub b
	ld [$ffba], a
	ld a, [de]
	dec de
	ld b, a
	ld a, [$ffb5]
	sbc b
	ld [$ffb9], a
	ld a, [de]
	dec de
	ld b, a
	ld a, [hMultiplicand]
	sbc b
	ld [hMathBuffer], a
	ld a, [de]
	inc de
	inc de
	inc de
	ld b, a
	ld a, [hProduct]
	sbc b
	ld [hMultiplier], a
	jr c, .asm_1062eb
	ld a, [hMultiplier]
	ld [hProduct], a
	ld a, [hMathBuffer]
	ld [hMultiplicand], a
	ld a, [$ffb9]
	ld [$ffb5], a
	ld a, [$ffba]
	ld [$ffb6], a
	inc c
	jr .asm_1062b4

.asm_1062eb
	ld a, [$ffbb]
	or c
	jr z, Function1062f7
	ld a, $f6
	add c
	ld [hl], a
	ld [$ffbb], a
	ret

Function1062f7
	ld a, [$ffbc]
	bit 7, a
	ret z
	ld [hl], $f6
	ret
; 1062ff

Function1062ff: ; 1062ff
	ld a, [$ffbc]
	bit 7, a
	jr nz, .asm_10630d
	bit 6, a
	jr z, .asm_10630d
	ld a, [$ffbb]
	and a
	ret z

.asm_10630d
	inc hl
	ret
; 10630f

Function10630f: ; 10630f
	xor a
	ld [ScriptVar], a
	ret
; 106314

INCBIN "baserom.gbc",$106314,$10632f - $106314

Function10632f: ; 10632f
	or a
	ret
; 106331

INCBIN "baserom.gbc",$106331,$106462 - $106331

Function106462: ; 106462
	ret
; 106463

INCBIN "baserom.gbc",$106463,$106464 - $106463

Function106464: ; 106464
	ld de, $5214
	ld hl, $9600
	ld bc, $3e01
	call Get2bpp
	ld de, $5424
	ld hl, $9610
	ld bc, $3e01
	call Get2bpp
	ld de, $6514
	ld hl, $9620
	ld c, $9
	ld b, $41
	call Get2bpp
	ld de, $40b0
	ld hl, $96b0
	ld b, $f
	call Get2bpp
	callba Functionfb4cc
	ret
; 10649b

INCBIN "baserom.gbc",$10649b,$106594 - $10649b


Function106594: ; 106594
	ld de, $65ad
	ld hl, VTiles1
	ld bc, $4180
	call Get2bpp
	ld de, $6dad
	ld hl, $97f0
	ld bc, $4101
	call Get2bpp
	ret
; 1065ad

INCBIN "baserom.gbc",$1065ad,$106dbc - $1065ad


SECTION "bank42", ROMX, BANK[$42]

INCBIN "baserom.gbc",$108000,$108016 - $108000

Function108016: ; 108016
	ld a, $0
	ld [$cf65], a
	ld de, $4021
	jp Function108089
; 108021

INCBIN "baserom.gbc",$108021,$108089 - $108021

Function108089: ; 108089
	ld hl, BattleEnded
	ld [hl], e
	inc hl
	ld [hl], d
	ld a, [$ffde]
	push af
	xor a
	ld [$ffde], a
	ld hl, VramState
	ld a, [hl]
	push af
	res 0, [hl]
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	call Function108157
.asm_1080a6
	call Function10824b
	jr nc, .asm_1080a6
	pop af
	ld [Options], a
	pop af
	ld [VramState], a
	pop af
	ld [$ffde], a
	ret
; 1080b7

INCBIN "baserom.gbc",$1080b7,$108157 - $1080b7

Function108157: ; 108157
	xor a
	ld [$cf63], a
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call DisableLCD
	call Function1081ad
	call Function1081ca
	call Functione51
	call Functione58
	call EnableLCD
	xor a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	callba Function8cf53
	xor a
	ld hl, $c300
	ld [hli], a
	ld [hl], $0
	call DelayFrame
	ld a, [PlayerSDefLevel]
	ld de, PlayerAccLevel
	call Function108239
	ld a, [PlayerLightScreenCount]
	ld de, PlayerReflectCount
	call Function108239
	xor a
	call Function108b98
	call Function108af4
	ret
; 1081ad

Function1081ad: ; 1081ad
	ld a, $1
	ld [rVBK], a
	ld hl, VTiles0
	ld bc, $1800
	xor a
	call ByteFill
	ld a, $0
	ld [rVBK], a
	ld hl, VTiles0
	ld bc, $1800
	xor a
	call ByteFill
	ret
; 1081ca

Function1081ca: ; 1081ca
	ld a, $1
	ld [rVBK], a
	ld hl, VBGMap0
	ld bc, $0800
	ld a, $0
	call ByteFill
	ld a, $0
	ld [rVBK], a
	ld hl, VBGMap0
	ld bc, $0800
	ld a, $7f
	call ByteFill
	ret
; 1081e9

INCBIN "baserom.gbc",$1081e9,$108239 - $1081e9

Function108239: ; 108239
	push de
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	pop de
	ld bc, $000b
	call CopyBytes
	ret
; 10824b

Function10824b: ; 10824b
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_10825a
	call Function10827b
	call DelayFrame
	and a
	ret

.asm_10825a
	xor a
	ld [hSCX], a
	ld [hSCY], a
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	call Functione51
	call Functione58
	callba Function106462
	callba Function106464
	scf
	ret
; 10827b

Function10827b: ; 10827b
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $428a
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 10828a

INCBIN "baserom.gbc",$10828a,$108af4 - $10828a

Function108af4: ; 108af4
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, [$cf65]
	and $1
	jr z, .asm_108b1c
	ld hl, $5187
	ld de, Unkn2Pals
	ld bc, $0040
	call CopyBytes
	ld hl, $5187
	ld de, OBPals
	ld bc, $0040
	call CopyBytes
	jr .asm_108b34

.asm_108b1c
	ld hl, $5147
	ld de, Unkn2Pals
	ld bc, $0040
	call CopyBytes
	ld hl, $5147
	ld de, OBPals
	ld bc, $0040
	call CopyBytes

.asm_108b34
	pop af
	ld [rSVBK], a
	ld a, $e4
	call Functioncf8
	ld a, $e4
	call DmgToCgbBGPals
	call DelayFrame
	ret
; 108b45

INCBIN "baserom.gbc",$108b45,$108b98 - $108b45

Function108b98: ; 108b98
	ld d, a
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld a, [$cf65]
	and $1
	xor d
	jr z, .asm_108bad
	ld hl, $4ba0
	jr .asm_108bb0

.asm_108bad
	ld hl, $4b98

.asm_108bb0
	ld de, $d038
	ld bc, $0040
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 108bbd

INCBIN "baserom.gbc",$108bbd,$108bc7 - $108bbd

; no known jump sources
Function108bc7: ; 108bc7 (42:4bc7)
	ld a, [$cf64]
	and a
	ret z
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $f2
	jr z, .asm_108bd9
	sub $8
	ld [hl], a
	ret
.asm_108bd9
	callba Function8d036
	ret

; no known jump sources
Function108be0: ; 108be0 (42:4be0)
	ld hl, $5
	add hl, bc
	ld a, [hl]
	cp $4a
	ret z
	add $8
	ld [hl], a
	ret
; 108bec (42:4bec)

INCBIN "baserom.gbc",$108bec,$109407 - $108bec

IntroLogoGFX: ; 109407
INCBIN "gfx/intro/logo.lz"
; 109847


SECTION "bank43", ROMX, BANK[$43]

INCBIN "baserom.gbc",$10c000,$10ed67 - $10c000

INCLUDE "engine/title.asm"


SECTION "bank44", ROMX, BANK[$44]

INCLUDE "lib/mobile/main.asm"


SECTION "bank45", ROMX, BANK[$45]

INCBIN "baserom.gbc",$114000,$114243 - $114000

Function114243: ; 114243
	ld a, $a
	ld [$0000], a
	ld a, [$ff8c]
	push af
	push de
	ld a, [$dc02]
	add a
	ld e, a
	ld d, $0
	ld hl, $4165
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	pop de
	jp [hl]
; 11425c

INCBIN "baserom.gbc",$11425c,$115d99 - $11425c

Function115d99: ; 115d99
	ld de, $601a
	ld hl, $8600
	ld bc, $4514
	call Get2bpp
	xor a
	ld [$c305], a
	ld [$c306], a
	ld [$c309], a
	ld [$c30a], a
	ld [$c30b], a
	ld [$c30c], a
	ld a, $10
	ld [$c307], a
	ld a, $18
	ld [$c308], a
	ret
; 115dc3

INCBIN "baserom.gbc",$115dc3,$115dd3 - $115dc3

Function115dd3: ; 115dd3
	ld a, [$c305]
	and a
	ret z
	ld a, $a0
	ld hl, $c47c
	ld bc, $0020
	call ByteFill
	call Function115e22
	ld a, [$c309]
	sla a
	ld c, a
	ld b, $0
	ld hl, $5e86
	add hl, bc
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	push de
	pop hl
	ld de, $c47c
	ld a, [$c307]
	ld c, a
	ld a, [$c308]
	ld b, a
	ld a, [hli]
.asm_115e04
	push af
	ld a, [hli]
	add b
	ld [de], a
	inc de
	ld a, [hli]
	add c
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	pop af
	dec a
	jr nz, .asm_115e04
	ret
; 115e18

Function115e18: ; 115e18
	ld a, c
	ld [$c30a], a
	xor a
	ld [$c30b], a
	jr Function115e2b
; 115e22

Function115e22: ; 115e22
	ld hl, $c30c
	dec [hl]
	ret nz
	ld hl, $c30b
	inc [hl]

Function115e2b: ; 115e2b
	ld a, [$c30a]
	sla a
	ld c, a
	ld b, $0
	ld hl, $5e59
	add hl, bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push de
	pop hl
	ld a, [$c30b]
	sla a
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hli]
	cp $ff
	jr nz, .asm_115e51
	xor a
	ld [$c30b], a
	jr Function115e2b

.asm_115e51
	ld [$c309], a
	ld a, [hl]
	ld [$c30c], a
	ret
; 115e59

INCBIN "baserom.gbc",$115e59,$11615a - $115e59

Function11615a: ; 11615a
	xor a
	ld [$c30d], a
	ld [$c319], a
	ld [$c310], a
	ld [$c311], a
	ld [$c312], a
	ld [$c313], a
	ld [$c314], a
	ld [$c315], a
	ld [$c318], a
	ld [$c3f6], a
	ld [$c3f8], a
	ld [$c3f2], a
	ld [$c3f4], a
	ld a, $24
	ld [$c3f5], a
	ld a, $7
	ld [$c3f7], a
	ld a, $b0
	ld [$c30e], a
	ld [$c3f1], a
	ld a, $48
	ld [$c30f], a
	ld [$c3f3], a
	ret
; 11619d

Function11619d: ; 11619d
	ld a, [$c30d]
	and a
	ret z
	ld a, [$c319]
	cp $2
	jr c, .asm_1161b4
	ld a, $a0
	ld hl, Sprites
	ld bc, $0064
	call ByteFill

.asm_1161b4
	call Function1161b8
	ret
; 1161b8

Function1161b8: ; 1161b8
	ld a, [$c319]
	ld e, a
	ld d, $0
	ld hl, $61c7
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 1161c7

INCBIN "baserom.gbc",$1161c7,$117656 - $1161c7

Function117656: ; 117656
	callba GiveOddEgg
	ret
; 11765d


; no known jump sources
Function11765d: ; 11765d (45:765d)
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	call Function11766b
	pop af
	ld [$FF00+$aa], a
	ret

; known jump sources: 117664 (45:7664)
Function11766b: ; 11766b (45:766b)
	call Function117699
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function1176ee
	ld a, $5
	call GetSRAMBank
	ld hl, $b1f3
	ld de, $cd49
	ld bc, $8
	call CopyBytes
	ld de, $c708
	ld bc, $11
	call CopyBytes
	call CloseSRAM
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: 11766b (45:766b)
Function117699: ; 117699 (45:7699)
	ld a, $5
	call GetSRAMBank
	ld hl, $cd49
	ld de, $b1f3
	ld bc, $8
	call CopyBytes
	ld hl, $c708
	ld bc, $11
	call CopyBytes
	call CloseSRAM
	xor a
	ld [$cd49], a
	ld [$cd4a], a
	ld [$cd4b], a
	ld [$cd4c], a
	ld [$cd4d], a
	ld [$cd4e], a
	ld [$cd4f], a
	ld hl, $c708
	ld bc, $11
	call ByteFill
	call WhiteBGMap
	call ClearSprites
	callba Function171c87
	callba Function104061
	callba Function8cf53
	ret

; known jump sources: 117675 (45:7675), 117707 (45:7707)
Function1176ee: ; 1176ee (45:76ee)
	call Functiona57
	ld a, [$cd49]
	bit 7, a
	jr nz, .asm_117709
	call Function117719
	callba Function8cf69
	callba Function104061
	jr Function1176ee
.asm_117709
	callba Function8cf53
	call WhiteBGMap
	call Functionfdb
	call ClearSprites
	ret

; known jump sources: 1176f8 (45:76f8)
Function117719: ; 117719 (45:7719)
	ld a, [$cd49]
	ld e, a
	ld d, $0
	ld hl, $7728
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_117728: ; 117728 (45:7728)
	dw Function117738
	dw Function117764
	dw Function1178aa
	dw Function1178e8
	dw Function117942
	dw Function117976
	dw Function117984
	dw Function1179a7


; no known jump sources
Function117738: ; 117738 (45:7738)
	callba Function171ccd
	ld de, $3018
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $6
	ld [hl], a
	ld de, $4820
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $7
	ld [hl], a
	ld a, $3
	ld [$cd23], a
	jp Function117a0a

; no known jump sources
Function117764: ; 117764 (45:7764)
	ld a, [$cd4a]
	cp $10
	jr nz, .asm_11776f
	ld a, $1
	jr .asm_117770
.asm_11776f
	xor a
.asm_117770
	ld [$cd24], a
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $4
	jr nz, Function1177a5
	ld a, [hl]
	and $8
	jr nz, Function1177ac
	ld a, [hl]
	and $1
	jp nz, Function11784c
	ld a, [hl]
	and $2
	jr nz, asm_1177d6
	ld hl, $ffa9
	ld a, [hl]
	and $40
	jr nz, asm_1177f1
	ld a, [hl]
	and $80
	jr nz, asm_11780a
	ld a, [hl]
	and $20
	jp nz, Function11782d
	ld a, [hl]
	and $10
	jp nz, Function117837
	ret

; known jump sources: 117779 (45:7779), 117863 (45:7863)
Function1177a5: ; 1177a5 (45:77a5)
	callba Function171cf0
	ret

; known jump sources: 11777e (45:777e), 11786c (45:786c), 1178a7 (45:78a7)
Function1177ac: ; 1177ac (45:77ac)
	ld a, $2
	ld [$cd4c], a
	ld a, $4
	ld [$cd4d], a
	ret

; known jump sources: 11785b (45:785b)
Function1177b7: ; 1177b7 (45:77b7)
	ld a, $3
	ld [$cd24], a
	ld a, [$cd4a]
	and a
	jr z, .asm_1177c5
	jp Function117a0a
.asm_1177c5
	ld a, $6
	ld [$cd49], a
	ret

; known jump sources: 117860 (45:7860)
Function1177cb: ; 1177cb (45:77cb)
	ld a, $80
	ld [$cd49], a
	ld [ScriptVar], a ; $c2dd
	jp Function117a0a
asm_1177d6: ; 1177d6 (45:77d6)
	call PlayClickSFX
	ld a, [$cd4a]
	and a
	ret z
	dec a
	ld [$cd4a], a
	ld e, a
	ld d, $0
	ld hl, $c708
	add hl, de
	xor a
	ld [hl], a
	ld hl, $c4f2
	add hl, de
	ld [hl], a
	ret
asm_1177f1: ; 1177f1 (45:77f1)
	ld a, [$cd4d]
	and a
	ret z
	dec a
	ld [$cd4d], a
	cp $3
	ret nz
	ld a, [$cd4c]
	ld e, a
	sla a
	sla a
	add e
asm_117806: ; 117806 (45:7806)
	ld [$cd4c], a
	ret
asm_11780a: ; 11780a (45:780a)
	ld a, [$cd4d]
	cp $4
	ret z
	inc a
	ld [$cd4d], a
	cp $4
	ret nz
	ld a, [$cd4c]
	cp $a
	jr nc, .asm_117825
	cp $5
	jr nc, .asm_117829
	xor a
	jr asm_117806
.asm_117825
	ld a, $2
	jr asm_117806
.asm_117829
	ld a, $1
	jr asm_117806

; known jump sources: 11779b (45:779b)
Function11782d: ; 11782d (45:782d)
	ld a, [$cd4c]
	and a
	ret z
	dec a
	ld [$cd4c], a
	ret

; known jump sources: 1177a1 (45:77a1)
Function117837: ; 117837 (45:7837)
	ld e, $d
	ld a, [$cd4d]
	cp $4
	jr nz, .asm_117842
	ld e, $2
.asm_117842
	ld a, [$cd4c]
	cp e
	ret z
	inc a
	ld [$cd4c], a
	ret

; known jump sources: 117783 (45:7783)
Function11784c: ; 11784c (45:784c)
	call PlayClickSFX
	ld a, [$cd4d]
	cp $4
	jr nz, .asm_117866
	ld a, [$cd4c]
	cp $2
	jp z, Function1177b7
	cp $1
	jp z, Function1177cb
	jp Function1177a5
.asm_117866
	ld a, [$cd4a]
	ld e, a
	cp $10
	jp z, Function1177ac
	inc a
	ld [$cd4a], a
	ld d, $0
	ld a, [$cd4b]
	and a
	jr nz, .asm_117880
	ld hl, $7a0f
	jr .asm_117883
.asm_117880
	ld hl, $7a47
.asm_117883
	push de
	ld a, [$cd4c]
	ld b, a
	ld a, [$cd4d]
	ld c, $e
	call SimpleMultiply
	add b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hl]
	ld hl, $c708
	add hl, de
	ld [hl], a
	pop de
	ld hl, $c4f2
	add hl, de
	sub $20
	ld [hl], a
	ld a, e
	cp $f
	ret nz
	jp Function1177ac

; no known jump sources
Function1178aa: ; 1178aa (45:78aa)
	ld hl, $79b5
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	ld hl, $79bd
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	callba Function104061
	ld hl, $c550
	ld de, $79c5
	call PlaceString
	ld hl, $c577
	ld a, $ed
	ld [hl], a
	ld hl, $c5b9
	ld de, $79cc
	call PlaceString
	ld a, $1
	ld [$cd4e], a
	jp Function117a0a

; no known jump sources
Function1178e8: ; 1178e8 (45:78e8)
	ld a, [hJoyPressed] ; $ff00+$a7
	cp $2
	jr z, .asm_117939
	cp $1
	jr z, .asm_117925
	cp $80
	jr z, .asm_11790f
	cp $40
	ret nz
	ld a, [$cd4e]
	and a
	ret z
	dec a
	ld [$cd4e], a
	ld hl, $c54f
	ld a, $ed
	ld [hl], a
	ld hl, $c577
	ld a, $7f
	ld [hl], a
	ret
.asm_11790f
	ld a, [$cd4e]
	and a
	ret nz
	inc a
	ld [$cd4e], a
	ld hl, $c54f
	ld a, $7f
	ld [hl], a
	ld hl, $c577
	ld a, $ed
	ld [hl], a
	ret
.asm_117925
	call PlayClickSFX
	ld a, [$cd4e]
	and a
	jr nz, .asm_117939
	call Function1c07
	ld a, $1
	ld [$cd4f], a
	jp Function117a0a
.asm_117939
	call Function1c07
	call Function1c07
	jp Function117a0a

; no known jump sources
Function117942: ; 117942 (45:7942)
	call SpeechTextBox
	ld hl, $c5b9
	ld de, $79f7
	call PlaceString
	ld a, $1e
	ld [$cd4e], a
	ld a, $5
	call GetSRAMBank
	ld a, [$cd4f]
	ld [$aa4b], a
	ld hl, $c708
	ld de, $aa4c
	ld bc, $11
	call CopyBytes
	call CloseSRAM
	ld a, [$cd4f]
	and a
	jr z, asm_11797e
	call Function117a0a

; no known jump sources
Function117976: ; 117976 (45:7976)
	ld hl, $cd4e
	dec [hl]
	ret nz
	call Function1c07
asm_11797e: ; 11797e (45:797e)
	ld a, $80
	ld [$cd49], a
	ret

; no known jump sources
Function117984: ; 117984 (45:7984)
	ld hl, $79b5
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	callba Function104061
	ld hl, $c5b9
	ld de, $79e1
	call PlaceString
	ld a, $1e
	ld [$cd4e], a
	call Function117a0a

; no known jump sources
Function1179a7: ; 1179a7 (45:79a7)
	ld hl, $cd4e
	dec [hl]
	ret nz
	call Function1c07
	ld a, $1
	ld [$cd49], a
	ret
; 1179b5 (45:79b5)

INCBIN "baserom.gbc",$1179b5,$117a0a - $1179b5

; known jump sources: 117761 (45:7761), 1177c2 (45:77c2), 1177d3 (45:77d3), 1178e5 (45:78e5), 117936 (45:7936), 11793f (45:793f), 117973 (45:7973), 1179a4 (45:79a4)
Function117a0a: ; 117a0a (45:7a0a)
	ld hl, $cd49
	inc [hl]
	ret
; 117a0f (45:7a0f)

INCBIN "baserom.gbc",$117a0f,$117a7f - $117a0f


; everything from here to the end of the bank is related to the
; Mobile Stadium option from the continue/newgame menu.
; XXX better function names
MobileStudium: ; 0x117a7f
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	call Function117a8d
	pop af
	ld [$ffaa], a
	ret
; 0x117a8d

Function117a8d: ; 0x117a8d
	call Function117a94
	call Function117acd
	ret
; 0x117a94

Function117a94: ; 0x117a94
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	call WhiteBGMap
	call ClearSprites
	callba Function172e78
	callba Function104000
	ret
; 0x117ab4

Function117ab4: ; 0x117ab4
	call WhiteBGMap
	call ClearSprites
	callba Function172e78
	callba Function172eb9
	callba Function104061
	ret
; 0x117acd

Function117acd: ; 0x117acd
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_117ae2 ; 0x117ad5 $b
	call Function117ae9
	callba Function104000
	jr Function117acd
.asm_117ae2
	call WhiteBGMap
	call ClearSprites
	ret

Function117ae9: ; 0x117ae9
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, Pointers117af8
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

Pointers117af8: ; 0x117af8
	dw Function117b06
	dw Function117b14
	dw Function117b28
	dw Function117b31
	dw Function117b4f
	dw Function117bb6
	dw Function117c4a

Function117b06:
	callba Function172eb9
	ld a, $10
	ld [$cf64], a
	jp Function117cdd

Function117b14:
	ld hl, $cf64
	dec [hl]
	ret nz
	ld hl, Data117cbc
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	jp Function117cdd

Function117b28:
	ld hl, MobileStadiumEntryText
	call PrintText
	jp Function117cdd

Function117b31:
	ld hl, Data117cc4
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	ld hl, $c550
	ld de, YesNo117ccc
	call PlaceString
	ld hl, $c54f
	ld a, "▶"
	ld [hl], a
	jp Function117cdd

Function117b4f:
	ld a, [hJoyPressed]
	cp $2
	jr z, .asm_117ba4 ; 0x117b53 $4f
	cp $1
	jr z, .asm_117b8c ; 0x117b57 $33
	cp $80
	jr z, .asm_117b76 ; 0x117b5b $19
	cp $40
	ret nz
	ld a, [$cf64]
	and a
	ret z
	dec a
	ld [$cf64], a
	ld hl, $c54f
	ld a, "▶"
	ld [hl], a
	ld hl, $c577
	ld a, " "
	ld [hl], a
	ret
.asm_117b76
	ld a, [$cf64]
	and a
	ret nz
	inc a
	ld [$cf64], a
	ld hl, $c54f
	ld a, " "
	ld [hl], a
	ld hl, $c577
	ld a, "▶"
	ld [hl], a
	ret
.asm_117b8c
	call PlayClickSFX
	ld a, [$cf64]
	and a
	jr nz, .asm_117ba4 ; 0x117b93 $f
	call Function1c07
	call Function1c07
	callba Function104061
	jp Function117cdd
.asm_117ba4
	call Function1c07
	call Function1c07
	callba Function104061
	ld a, $80
	ld [$cf63], a
	ret

Function117bb6:
	call Function117c89
	ld a, $1
	ld [hBGMapMode], a
	callba Function118284
	call ClearSprites
	ld a, [$c300]
	and a
	jr z, .asm_117be7 ; 0x117bca $1b
	cp $a
	jr z, .asm_117be1 ; 0x117bce $11
.asm_117bd0
	ld a, $2
	ld [$c303], a
	callba Function17f555
	ld a, $80
	ld [$cf63], a
	ret
.asm_117be1
	ld a, $80
	ld [$cf63], a
	ret
.asm_117be7
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld a, [$cd89]
	and $1
	jr nz, .asm_117c16 ; 0x117bf3 $21
	ld a, [$d000]
	cp $fe
	jr nz, .asm_117c16 ; 0x117bfa $1a
	ld a, [$d001]
	cp $f
	jr nz, .asm_117c16 ; 0x117c01 $13
	ld hl, $dfec
	ld de, $cd69
	ld c, $10
.asm_117c0b
	ld a, [de]
	inc de
	cp [hl]
	jr nz, .asm_117c16 ; 0x117c0e $6
	inc hl
	dec c
	jr nz, .asm_117c0b ; 0x117c12 $f7
	jr .asm_117c20 ; 0x117c14 $a
.asm_117c16
	pop af
	ld [rSVBK], a
	ld a, $d3
	ld [$c300], a
	jr .asm_117bd0 ; 0x117c1e $b0
.asm_117c20
	pop af
	ld [rSVBK], a
	callba Function172eb9
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld a, $7
	call GetSRAMBank
	ld hl, DefaultFlypoint
	ld de, $b000
	ld bc, $1000
	call CopyBytes
	call CloseSRAM
	pop af
	ld [rSVBK], a
	jp Function117cdd

Function117c4a:
	ld hl, Data117cbc
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	callba Function104061
	ld hl, MobileStadiumSuccessText
	call PrintText
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $d000
	ld de, $0008
	ld c, $8
.asm_117c71
	push hl
	ld a, $ff
	ld [hli], a
	ld a, " "
	ld [hl], a
	pop hl
	add hl, de
	dec c
	jr nz, .asm_117c71 ; 0x117c7b $f4
	call Function4b6
	pop af
	ld [rSVBK], a
	ld a, $80
	ld [$cf63], a
	ret

Function117c89:
	ld a, $7
	call GetSRAMBank
	ld l, $0
	ld h, l
	ld de, $b000
	ld bc, $0ffc
.asm_117c97
	push bc
	ld a, [de]
	inc de
	ld c, a
	ld b, $0
	add hl, bc
	pop bc
	dec bc
	ld a, b
	or c
	jr nz, .asm_117c97 ; 0x117ca2 $f3
	ld a, l
	ld [$cd83], a
	ld a, h
	ld [$cd84], a
	ld hl, $bfea
	ld de, $cd69
	ld bc, $0010
	call CopyBytes
	call CloseSRAM
	ret

Data117cbc: ; 0x117cbc
	db $40, $0c, $00, $11, $13, $00, $00, $00

Data117cc4: ; 0x117cc4
	db $40, $07, $0e, $0b, $13, $00, $00, $00 ; XXX what is this

YesNo117ccc: ; 0x117ccc
	db "はい", $4e ; Yes
	db "いいえ@"   ; No

MobileStadiumEntryText: ; 0x117cd3
	TX_FAR _MobileStadiumEntryText
	db "@"

MobileStadiumSuccessText: ; 0x117cd8
	TX_FAR _MobileStadiumSuccessText
	db "@"

Function117cdd: ; 0x117cdd
	ld hl, $cf63
	inc [hl]
	ret


SECTION "bank46", ROMX, BANK[$46]

Function118000: ; 118000
	ld a, $1
	ld [$cd38], a
	jr .asm_11800b

	xor a
	ld [$cd38], a

.asm_11800b
	call Function1183cb
	ld a, $18
	ld [$cd33], a
	ld a, $19
	ld [$cd34], a
	ld a, $4
	ld [$c3f0], a
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
.asm_118024
	call Functiona57
	call Function118473
	ld a, [$cf66]
	cp $1b
	jr c, .asm_118037
	ld a, [$cd34]
	ld [$cf66], a

.asm_118037
	call Function1184a5
	call Function11a8fa
	callba Function115dd3
	callba Function11619d
	call DelayFrame
	ld a, [$cf66]
	ld hl, $cd33
	cp [hl]
	jr nz, .asm_118024
	pop af
	ld [rSVBK], a
	call Function118452
	call Function222a
Function11805e: ; 11805e (46:405e)
	ret
; 11805f

Function11805f: ; 11805f
	ld a, $1
	ld [$cd38], a
	call Function1183cb
	ld a, $18
	ld [$cd33], a
	ld a, $19
	ld [$cd34], a
	ld a, $4
	ld [$c3f0], a
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
.asm_11807d
	call Functiona57
	call Function118473
	ld a, [$cf66]
	cp $1b
	jr c, .asm_118090
	ld a, [$cd34]
	ld [$cf66], a

.asm_118090
	call Function11857c
	call Function11a8fa
	callba Function115dd3
	callba Function11619d
	call DelayFrame
	ld a, [$cf66]
	ld hl, $cd33
	cp [hl]
	jr nz, .asm_11807d
	pop af
	ld [rSVBK], a
	call Function118452
	call Function222a
	ret
; 1180b8

INCBIN "baserom.gbc",$1180b8,$11811a - $1180b8

Function11811a: ; 11811a
	ld a, 1
	ld [$cd38], a
	jr Function118125

Function118121: ; 118121
	xor a
	ld [$cd38], a

Function118125: ; 118125
	call Function1183cb
	ld a, $3
	ld [$cd33], a
	ld a, $d
	ld [$cd34], a
	ld a, $4
	ld [$c3f0], a
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
.asm_11813e
	call Functiona57
	call Function118473
	ld a, [$cf66]
	cp $f
	jr c, .asm_118151
	ld a, [$cd34]
	ld [$cf66], a

.asm_118151
	call Function11854d
	call Function11a8fa
	callba Function115dd3
	callba Function11619d
	call DelayFrame
	ld a, [$cf66]
	ld hl, $cd33
	cp [hl]
	jr nz, .asm_11813e
	xor a
	ld [Unkn1Pals], a
	pop af
	ld [rSVBK], a
	call Function118452
	call Function118180
	call Function222a
	ret
; 118180

Function118180: ; 118180
	ld a, [ScriptVar]
	and a
	ret nz
	ld a, [$cd38]
	and a
	ret z
	ld a, $5
	call GetSRAMBank
	ld hl, $cd69
	ld de, $a89c
	ld bc, $0016
	call CopyBytes
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld de, $d202
	ld c, $96
	callba Function17d0b3
	jr c, .asm_1181d0
	ld de, $d202
	ld bc, $0196
	callba Function17d1e1
	jr c, .asm_1181d0
	ld hl, $d202
	ld de, $a8b2
	ld bc, $0096
	call CopyBytes
.asm_1181c9
	pop af
	ld [rSVBK], a
	call CloseSRAM
	ret

.asm_1181d0
	ld a, $d3
	ld [$c300], a
	ld [ScriptVar], a
	jr .asm_1181c9
; 1181da

Function1181da: ; 1181da
	call Function1183cb
	ld a, $2
	ld [$cd38], a
	ld a, $21
	ld [$cd33], a
	ld a, $22
	ld [$cd34], a
	ld a, $4
	ld [$c3f0], a
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
.asm_1181f8
	call Functiona57
	call Function118473
	ld a, [$cf66]
	cp $28
	jr c, .asm_11820b
	ld a, [$cd34]
	ld [$cf66], a

.asm_11820b
	call Function1185c3
	call Function11a8fa
	callba Function115dd3
	callba Function11619d
	call DelayFrame
	ld a, [$cf66]
	ld hl, $cd33
	cp [hl]
	jr nz, .asm_1181f8
	pop af
	ld [rSVBK], a
	call Function118452
	call Function222a
	ret
; 118233

INCBIN "baserom.gbc",$118233,$118284 - $118233

Function118284: ; 118284
	call Function1183cb
	ld a, $19
	ld [$cd33], a
	ld a, $1e
	ld [$cd34], a
	ld a, $5
	ld [$c3f0], a
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $3
	ld [rSVBK], a ; $ff00+$70
.asm_11829d
	call Functiona57
	call Function118473
	ld a, [$cf66]
	cp $20
	jr c, .asm_1182b0
	ld a, [$cd34]
	ld [$cf66], a
.asm_1182b0
	call Function1186f5
	call Function11a8fa
	callba Function115dd3
	callba Function11619d
	call DelayFrame
	ld a, [$cf66]
	ld hl, $cd33
	cp [hl]
	jr nz, .asm_11829d
	pop af
	ld [rSVBK], a ; $ff00+$70
	call Function118452
	ret
; 1182d5 (46:42d5)


INCBIN "baserom.gbc",$1182d5,$1183cb - $1182d5

Function1183cb: ; 1183cb
	di
	ld a, [rIE]
	ld [$cd32], a
	call DoubleSpeed
	xor a
	ld [rIF], a
	ld [$c300], a
	ld [$c301], a
	ld [$c302], a
	ld [$cd80], a
	ld [$cd65], a
	ld [$cd66], a
	ld [$cd67], a
	ld [$cd68], a
	ld [$c31a], a
	ld [$cd89], a
	ld [$cd8a], a
	ld [$cd8b], a
	ld [$c3ec], a
	ld [$c3ed], a
	ld [$c3ee], a
	ld [$c3ef], a
	ld hl, VramState
	ld a, [hl]
	ld [$cd7f], a
	set 1, [hl]
	ld a, $f
	ld [rIE], a
	ld a, $1
	ld [$ffc9], a
	ld [$ffe9], a
	ei
	callba Function106462
	callba Function106464
	callba Function115d99
	callba Function11615a
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$bfff], a
	call CloseSRAM
	ret
; 118440

INCBIN "baserom.gbc",$118440,$118452 - $118440

Function118452: ; 118452
	di
	xor a
	ld [$ffc9], a
	ld [$ffe9], a
	ld [$ff9e], a
	call NormalSpeed
	xor a
	ld [rIF], a
	ld a, [$cd32]
	ld [rIE], a
	ei
	ld a, [$cd7f]
	ld [VramState], a
	ld a, [$c300]
	ld [ScriptVar], a
	ret
; 118473

Function118473: ; 118473
	ld a, [$cd65]
	and a
	ret z
	ld a, [$cd66]
	inc a
	ld [$cd66], a
	cp $3c
	ret nz
	xor a
	ld [$cd66], a
	ld a, [$cd67]
	inc a
	ld [$cd67], a
	cp $3c
	ret nz
	ld a, [$cd68]
	inc a
	ld [$cd68], a
	cp $63
	jr z, .asm_1184a0
	xor a
	ld [$cd67], a
	ret

.asm_1184a0
	xor a
	ld [$cd65], a
	ret
; 1184a5

Function1184a5: ; 1184a5
	ld a, [$cf66]
	ld e, a
	ld d, $0
	ld hl, $44b4
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 1184b4

INCBIN "baserom.gbc",$1184b4,$11854d - $1184b4

Function11854d: ; 11854d
	ld a, [$cf66]
	ld e, a
	ld d, $0
	ld hl, $455c
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11855c

INCBIN "baserom.gbc",$11855c,$11857c - $11855c

Function11857c: ; 11857c
	ld a, [$cf66]
	ld e, a
	ld d, $0
	ld hl, $458b
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11858b

INCBIN "baserom.gbc",$11858b,$1185c3 - $11858b

Function1185c3: ; 1185c3
	ld a, [$cf66]
	ld e, a
	ld d, $0
	ld hl, $45d2
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 1185d2

INCBIN "baserom.gbc",$1185d2,$1186f5 - $1185d2

; known jump sources: 1182b0 (46:42b0)
Function1186f5: ; 1186f5 (46:46f5)
	ld a, [$cf66]
	ld e, a
	ld d, $0
	ld hl, $4704
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 118704 (46:4704)

; no known jump sources
Jumptable_118704: ; 118704 (46:4704)
	dw Function11886a
	dw Function118880
	dw Function11878d
	dw Function1188b0
	dw Function11878d
	dw Function1188b8
	dw Function11878d
	dw Function1188c0
	dw Function11878d
	dw Function1188c8
	dw Function11878d
	dw Function118903
	dw Function118abc
	dw Function11878d
	dw Function119451
	dw Function1195f8
	dw Function119612
	dw Function119629
	dw Function119648
	dw Function11878d
	dw Function118e6d
	dw Function11878d
	dw Function118e76
	dw Function118e7e
	dw Function11878d
	dw Function11805e
	dw Function11967d
	dw Function119685
	dw Function119665
	dw Function11966d
	dw Function118e76
	dw Function118e87
; 118744 (46:4744)

INCBIN "baserom.gbc",$118744,$11878d - $118744

; no known jump sources
Function11878d: ; 11878d (46:478d)
	ld a, [$c821]
	bit 1, a
	jr nz, .asm_1187af
	bit 2, a
	jr nz, .asm_1187d1
	bit 0, a
	jr nz, .asm_1187aa
	ld a, [$cd89]
	and $1
	jr z, .asm_1187a7
	ld a, $3
	ld [rSVBK], a ; $ff00+$70
.asm_1187a7
	jp Function119e2e
.asm_1187aa
	call Function118821
	ret c
	ret
.asm_1187af
	ld a, $0
	call Function3e32
	ld [$c300], a
	ld a, l
	ld [$c301], a
	ld a, h
	ld [$c302], a
	ld a, $a
	call Function3e32
	ld a, [$c3f0]
	ld [$c319], a
	ld a, [$cd34]
	ld [$cf66], a
	ret
.asm_1187d1
	ld hl, $cd89
	bit 0, [hl]
	jr nz, .asm_118803
	set 0, [hl]
	ld a, $6
	ld [rSVBK], a ; $ff00+$70
	ld de, Unkn1Pals ; $d000
	ld bc, $1000
	ld a, [hl]
	sla a
	jr c, .asm_1187f9
	sla a
	jr c, .asm_1187fd
	sla a
	jr c, .asm_1187f5
	ld a, $24
	jr .asm_1187ff
.asm_1187f5
	ld a, $28
	jr .asm_1187ff
.asm_1187f9
	ld a, $2a
	jr .asm_1187ff
.asm_1187fd
	ld a, $2c
.asm_1187ff
	call Function3e32
	ret
.asm_118803
	ld a, $d3

; known jump sources: 11945a (46:545a), 119573 (46:5573), 1195f5 (46:55f5)
Function118805: ; 118805 (46:4805)
	ld [$c300], a
	xor a
	ld [$c301], a
	ld [$c302], a
	ld a, $a
	call Function3e32
	ld a, [$c3f0]
	ld [$c319], a
	ld a, [$cd34]
	ld [$cf66], a
	ret

; known jump sources: 1187aa (46:47aa)
Function118821: ; 118821 (46:4821)
	ld a, [$c319]
	cp $3
	jr c, .asm_11884a
	cp $4
	jr z, .asm_11884a
	ld a, [hJoyDown] ; $ff00+$a8
	cp $5
	jr nz, .asm_11884a
	ld a, $a
	call Function3e32
	ld a, $a
	ld [$c300], a
	ld a, [$c3f0]
	ld [$c319], a
	ld a, [$cd34]
	ld [$cf66], a
	scf
	ret
.asm_11884a
	and a
	ret
; 11884c (46:484c)

INCBIN "baserom.gbc",$11884c,$11886a - $11884c

; no known jump sources
Function11886a: ; 11886a (46:486a)
	ld a, $1
	jr .asm_11886f
; 11886e (46:486e)

INCBIN "baserom.gbc",$11886e,$11886f - $11886e
.asm_11886f
	ld [BGMapPalBuffer], a ; $cd48
	ld a, $0
	ld [$cd3c], a
	call Function119e2e
	ld a, [$cd33]
	ld [$cd45], a

; no known jump sources
Function118880: ; 118880 (46:4880)
	call Function119ed8
	ret c
	xor a
	ld [$cf64], a
	ld [$c807], a
	ld de, $cd81
	ld hl, $46
	ld a, $2
	jp Function119e2b
; 118896 (46:4896)

INCBIN "baserom.gbc",$118896,$1188b0 - $118896

; no known jump sources
Function1188b0: ; 1188b0 (46:48b0)
	ld de, $c346
	ld a, $c
	jp Function119e2b

; no known jump sources
Function1188b8: ; 1188b8 (46:48b8)
	ld de, $c3ac
	ld a, $e
	jp Function119e2b

; no known jump sources
Function1188c0: ; 1188c0 (46:48c0)
	ld de, $c3cd
	ld a, $10
	jp Function119e2b

; no known jump sources
Function1188c8: ; 1188c8 (46:48c8)
	ld a, $1
	ld [$cd65], a
	call Function1188e7
	ld hl, $c708
.asm_1188d3
	ld a, [de]
	inc de
	ld [hli], a
	and a
	jr nz, .asm_1188d3
	call Function119eb4
	call Function119ec2
	ld hl, $c708
	ld a, $6
	jp Function119e2b

; known jump sources: 1188cd (46:48cd)
Function1188e7: ; 1188e7 (46:48e7)
	ld de, $c346
	ld a, $5
	call GetSRAMBank
	ld a, [$aa4a]
	call CloseSRAM
	and a
	ret z
	sla a
	ld c, a
.asm_1188fa
	ld a, [de]
	inc de
	and a
	jr nz, .asm_1188fa
	dec c
	jr nz, .asm_1188fa
	ret

; no known jump sources
Function118903: ; 118903 (46:4903)
	ld a, [$c3f0]
	ld [$c319], a
	ld c, $1
	callba Function115e18
	ld a, $8
	ld [$cd3c], a
	call Function119ed8
	jp Function119e2e
; 11891c (46:491c)

INCBIN "baserom.gbc",$11891c,$118abc - $11891c

; no known jump sources
Function118abc: ; 118abc (46:4abc)
	ld hl, $4c95
	ld de, $cc60
	ld bc, $80
	call CopyBytes
	ld de, Unkn1Pals ; $d000
	ld bc, $1000
	jr .asm_118b10
; 118ad0 (46:4ad0)

INCBIN "baserom.gbc",$118ad0,$118b10 - $118ad0
.asm_118b10
	push de
	push bc
	ld a, $8
	ld [$cd3c], a
	call Function119ed8
	call Function118b24
	pop bc
	pop de
	ld a, $2a
	jp Function119e2b

; known jump sources: 118b1a (46:4b1a), 119657 (46:5657)
Function118b24: ; 118b24 (46:4b24)
	ld hl, $c346
	ld a, $8
	ld [hli], a
	ld a, $c7
	ld [hli], a
	ld a, $60
	ld [hli], a
	ld a, $cc
	ld [hli], a
	call Function119eb4
	call Function119ec2
	ld a, $80
	ld [$cd89], a
	ld hl, $c346
	ret
; 118b42 (46:4b42)

INCBIN "baserom.gbc",$118b42,$118ba5 - $118b42

ExchangeDownloadURL: ; 0x118ba5
	ascii "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/exchange/index.txt"

db $0

BattleDownloadURL: ; 0x118bf7
	ascii "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/battle/index.txt"

db $0

NewsDownloadURL: ; 0x118c47
	ascii "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/index.txt"

db $0

MenuDownloadURL: ; 0x118c95
	ascii "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/POKESTA/menu.cgb"

db $0

IndexDownloadURL: ; 0x118ce4
	ascii "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/index.txt"

db $0

INCBIN "baserom.gbc",$118d35,$118e39 - $118d35

; known jump sources: 118e3b (46:4e3b), 119633 (46:5633)
Function118e39: ; 118e39 (46:4e39)
	ld a, [hli]
	and a
	jr nz, Function118e39
	dec hl
.asm_118e3e
	ld a, [hld]
	cp $2f
	jr nz, .asm_118e3e
	inc hl
	inc hl
	ld de, $cd85
	ld c, $4
.asm_118e4a
	ld a, [hli]
	cp $2e
	jr z, .asm_118e63
	cp $30
	jr c, .asm_118e67
	cp $3a
	jr nc, .asm_118e67
	sub $30
	add $f6
	ld [de], a
	inc de
	dec c
	jr nz, .asm_118e4a
	ld de, $cd85
.asm_118e63
	ld a, $50
	ld [de], a
	ret
.asm_118e67
	ld a, $f3
	ld [de], a
	inc de
	jr .asm_118e63

; no known jump sources
Function118e6d: ; 118e6d (46:4e6d)
	xor a
	ld [$cd65], a
	ld a, $a
	jp Function119e2b

; no known jump sources
Function118e76: ; 118e76 (46:4e76)
	ld a, $c
	ld [$cd3c], a
	jp Function119e2e

; no known jump sources
Function118e7e: ; 118e7e (46:4e7e)
	call Function119ed8
	ret c
	ld a, $36
	jp Function119e2b

; no known jump sources
Function118e87: ; 118e87 (46:4e87)
	call Function119ed8
	ret c
	ld a, [$cd33]
	ld [$cf66], a
	ret
; 118e92 (46:4e92)

INCBIN "baserom.gbc",$118e92,$119451 - $118e92

; no known jump sources
Function119451: ; 119451 (46:5451)
	ld a, [$cd89]
	and $1
	jr z, .asm_11945d
	ld a, $d3
	jp Function118805
.asm_11945d
	xor a
	ld [$cd50], a
	call Function119694
	ld a, b
	ld [$cd49], a
	call Function1196cd
	ld a, [DefaultFlypoint] ; $d002
	ld hl, $d003

; known jump sources: 119562 (46:5562)
Function119471: ; 119471 (46:5471)
	push af
	ld a, [hli]
	ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct)
	ld a, [hli]
	ld [EnemyMoveType], a ; $c60b
	ld a, [hli]
	ld [EnemyMoveEffect], a ; $c609
	ld a, [hli]
	ld [EnemyMovePower], a ; $c60a
	ld a, [hli]
	ld [EnemyMoveAccuracy], a ; $c60c
	ld a, [hli]
	ld [EnemyMovePP], a ; $c60d
	push hl
	ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct)
	cp $ff
	jr z, .asm_1194a7
	ld a, [EnemyMovePower] ; $c60a
	cp $ff
	jr z, .asm_1194a7
	ld a, [EnemyMoveEffect] ; $c609
	cp $ff
	jr nz, .asm_1194a7
	call Function119584
	jr c, .asm_11950c
	jr .asm_1194f0
.asm_1194a7
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld de, EnemyMoveType ; $c60b
	ld c, $3
.asm_1194af
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr c, .asm_1194f3
	jr z, .asm_1194b9
	jr nc, .asm_1194bc
.asm_1194b9
	dec c
	jr nz, .asm_1194af
.asm_1194bc
	ld c, $3
	ld hl, $cd49
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
.asm_1194c4
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_1194d1
	cp [hl]
	jr z, .asm_1194d1
	jr c, .asm_1194d5
	jr nc, .asm_1194f0
.asm_1194d1
	inc hl
	dec c
	jr nz, .asm_1194c4
.asm_1194d5
	ld c, $3
	ld hl, $cd49
	ld de, EnemyMoveType ; $c60b
.asm_1194dd
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_1194ea
	cp [hl]
	jr c, .asm_1194f0
	jr z, .asm_1194ea
	jr nc, .asm_11950c
.asm_1194ea
	inc hl
	dec c
	jr nz, .asm_1194dd
	jr .asm_11950c
.asm_1194f0
	pop hl
	jr .asm_119557
.asm_1194f3
	ld c, $3
	ld hl, $cd49
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
.asm_1194fb
	ld a, [de]
	inc de
	cp $ff
	jr z, .asm_119508
	cp [hl]
	jr c, .asm_11950c
	jr z, .asm_119508
	jr nc, .asm_1194d5
.asm_119508
	inc hl
	dec c
	jr nz, .asm_1194fb
.asm_11950c
	pop hl
	ld a, $1
	ld [$cd50], a
	ld a, l
	ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct)
	ld a, h
	ld [EnemyMoveEffect], a ; $c609
	ld de, $cd69
	ld c, $10
	ld b, $0
.asm_119521
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_119528
	inc b
.asm_119528
	dec c
	jr nz, .asm_119521
	ld a, $10
	cp b
	jr z, .asm_119536
	inc hl
	inc hl
	inc hl
	inc hl
	jr .asm_11957a
.asm_119536
	ld a, [hli]
	cp $50
	jr nz, .asm_119552
	ld a, [hli]
	cp $33
	jr nz, .asm_119553
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, [$cd83]
	cp c
	jr nz, .asm_119576
	ld a, [$cd84]
	cp b
	jr nz, .asm_119576
	jr .asm_11955b
.asm_119552
	inc hl
.asm_119553
	inc hl
	inc hl
	jr .asm_11955b
.asm_119557
	ld de, $14
	add hl, de
.asm_11955b
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	add hl, de
	pop af
	dec a
	jp nz, Function119471
	ld a, [$cd50]
	and a
	jr z, .asm_119571
	ld a, $1a
	ld [$cf66], a
	ret
.asm_119571
	ld a, $d8
	jp Function118805
.asm_119576
	ld a, $10
	jr .asm_11957c
.asm_11957a
	ld a, $f
.asm_11957c
	ld [$cf66], a
	pop af
	call Function1195c4
	ret

; known jump sources: 1194a0 (46:54a0)
Function119584: ; 119584 (46:5584)
	ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct)
	ld b, a
	ld a, [EnemyMoveType] ; $c60b
	ld c, a
	cp b
	jr c, .asm_11959c
	ld a, [$cd49]
	cp b
	jr c, .asm_1195c2
.asm_119595
	cp c
	jr c, .asm_1195a2
	jr z, .asm_1195a2
	jr .asm_1195c2
.asm_11959c
	ld a, [$cd49]
	cp b
	jr c, .asm_119595
.asm_1195a2
	ld a, [EnemyMovePower] ; $c60a
	ld b, a
	ld a, [EnemyMovePP] ; $c60d
	ld c, a
	cp b
	jr c, .asm_1195ba
	ld a, [$cd4b]
	cp b
	jr c, .asm_1195c2
.asm_1195b3
	cp c
	jr c, .asm_1195c0
	jr z, .asm_1195c0
	jr .asm_1195c2
.asm_1195ba
	ld a, [$cd4b]
	cp b
	jr c, .asm_1195b3
.asm_1195c0
	scf
	ret
.asm_1195c2
	and a
	ret

; known jump sources: 119580 (46:5580)
Function1195c4: ; 1195c4 (46:55c4)
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld de, $a5
	ld a, b
	cp d
	jr c, .asm_1195d9
	jr z, .asm_1195d3
	jr nc, .asm_1195f3
.asm_1195d3
	ld a, c
	cp e
	jr z, .asm_1195d9
	jr nc, .asm_1195f3
.asm_1195d9
	ld de, $cc60
	call CopyBytes
	xor a
	ld [de], a
	ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct)
	ld l, a
	ld a, [EnemyMoveEffect] ; $c609
	ld h, a
	ld de, $cd69
	ld bc, $10
	call CopyBytes
	ret
.asm_1195f3
	ld a, $d8
	jp Function118805

; no known jump sources
Function1195f8: ; 1195f8 (46:55f8)
	ld a, $11
	ld [$cd3c], a
	ld a, $1c
	ld [$cd45], a
	ld a, $f
	ld [$cd46], a
	ld a, $14
	ld [$cd47], a
	call Function119e2e
	jp Function119e2e

; no known jump sources
Function119612: ; 119612 (46:5612)
	ld a, $14
	ld [$cd3c], a
	ld a, $1c
	ld [$cd45], a
	ld a, $10
	ld [$cd46], a
	ld a, $14
	ld [$cd47], a
	jp Function119e2e

; no known jump sources
Function119629: ; 119629 (46:5629)
	call Function119ed8
	ret c
	ld a, $60
	ld l, a
	ld a, $cc
	ld h, a
	call Function118e39
	ld a, $9
	ld [$cd3c], a
	ld a, $1c
	ld [$cd45], a
	ld a, $14
	ld [$cd47], a
	call Function119e2e

; no known jump sources
Function119648: ; 119648 (46:5648)
	call Function119ed8
	ret c
	call DelayFrame
	ld a, $8
	ld [$cd3c], a
	call Function119ed8
	call Function118b24
	ld de, Unkn1Pals ; $d000
	ld bc, $1000
	ld a, $2a
	jp Function119e2b

; no known jump sources
Function119665: ; 119665 (46:5665)
	ld a, $1a
	ld [$cd3c], a
	call Function119e2e

; no known jump sources
Function11966d: ; 11966d (46:566d)
	call Function119ed8
	ret c
	ld a, [$cd47]
	ld [$cf66], a
	ld a, $a
	ld [$c300], a
	ret

; no known jump sources
Function11967d: ; 11967d (46:567d)
	ld a, $18
	ld [$cd3c], a
	call Function119e2e

; no known jump sources
Function119685: ; 119685 (46:5685)
	call Function119ed8
	ret c
	ld a, $14
	ld [$cf66], a
	ld a, $a
	ld [$c300], a
	ret

; known jump sources: 119461 (46:5461)
Function119694: ; 119694 (46:5694)
	ld b, $0
	ld hl, $56b8
.asm_119699
	ld de, $c708
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_1196af
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_1196b0
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_1196b1
	ret
.asm_1196af
	inc hl
.asm_1196b0
	inc hl
.asm_1196b1
	inc b
	ld a, b
	cp $7
	jr nz, .asm_119699
	ret
; 1196b8 (46:56b8)

INCBIN "baserom.gbc",$1196b8,$1196cd - $1196b8

; known jump sources: 119468 (46:5468)
Function1196cd: ; 1196cd (46:56cd)
	ld de, $c719
	call Function1196de
	ld [$cd4a], a
	inc de
	call Function1196de
	ld [$cd4b], a
	ret

; known jump sources: 1196d0 (46:56d0), 1196d7 (46:56d7)
Function1196de: ; 1196de (46:56de)
	ld a, [de]
	inc de
	sub $30
	sla a
	ld b, a
	sla a
	sla a
	add b
	ld c, a
	add hl, bc
	ld a, [de]
	inc de
	sub $30
	add c
	ret
; 1196f2 (46:56f2)

INCBIN "baserom.gbc",$1196f2,$119d93 - $1196f2

; no known jump sources
Function119d93: ; 119d93 (46:5d93)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld a, [$cd4f]
	ld c, $a
	call SimpleMultiply
	ld hl, $cd50
	ld [hl], a
	ld bc, $30
	ld de, PartyMon1Level ; $dcfe
	ld a, [PartyCount] ; $dcd7
.asm_119daf
	push af
	ld a, [de]
	push hl
	push de
	pop hl
	add hl, bc
	push hl
	pop de
	pop hl
	cp [hl]
	jr z, .asm_119dbd
	jr nc, .asm_119dc6
.asm_119dbd
	pop af
	dec a
	jr nz, .asm_119daf
	pop af
	ld [rSVBK], a ; $ff00+$70
	and a
	ret
.asm_119dc6
	pop af
	ld a, $4
	ld [$cf66], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	scf
	ret

; no known jump sources
Function119dd1: ; 119dd1 (46:5dd1)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, [$cd4f]
	cp $7
	jr nc, .asm_119e08
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	ld hl, PartyMon1Level ; $dcfe
	ld bc, $30
	ld de, PartySpecies ; $dcd8
	ld a, [PartyCount] ; $dcd7
.asm_119deb
	push af
	ld a, [de]
	cp $96
	jr z, .asm_119dfd
	cp $97
	jr z, .asm_119dfd
	cp $f9
	jr c, .asm_119e02
	cp $fc
	jr nc, .asm_119e02
.asm_119dfd
	ld a, [hl]
	cp $46
	jr c, .asm_119e0d
.asm_119e02
	add hl, bc
	inc de
	pop af
	dec a
	jr nz, .asm_119deb
.asm_119e08
	pop af
	ld [rSVBK], a ; $ff00+$70
	and a
	ret
.asm_119e0d
	pop af
	ld a, [de]
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1 ; $d073
	ld de, $cd49
	ld bc, $b
	call CopyBytes
	ld a, $a
	ld [$cf66], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	scf
	ret
; 119e2b (46:5e2b)

; known jump sources: 118893 (46:4893), 1188b5 (46:48b5), 1188bd (46:48bd), 1188c5 (46:48c5), 1188e4 (46:48e4), 118b21 (46:4b21), 118e73 (46:4e73), 118e84 (46:4e84), 119662 (46:5662)
Function119e2b: ; 119e2b (46:5e2b)
	call Function3e32

; known jump sources: 1187a7 (46:47a7), 118877 (46:4877), 118919 (46:4919), 118e7b (46:4e7b), 11960c (46:560c), 11960f (46:560f), 119626 (46:5626), 119645 (46:5645), 11966a (46:566a), 119682 (46:5682)
Function119e2e: ; 119e2e (46:5e2e)
	ld hl, $cf66
	inc [hl]
	ret
; 119e33 (46:5e33)

INCBIN "baserom.gbc",$119e33,$119eb4 - $119e33

; known jump sources: 1188d9 (46:48d9), 118b33 (46:4b33)
Function119eb4: ; 119eb4 (46:5eb4)
	xor a
	ld [$c3cc], a
	ld de, $c3ac
.asm_119ebb
	ld a, [de]
	inc de
	ld [hli], a
	and a
	jr nz, .asm_119ebb
	ret

; known jump sources: 1188dc (46:48dc), 118b36 (46:4b36)
Function119ec2: ; 119ec2 (46:5ec2)
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$aa5c], a
	ld de, $aa4c
.asm_119ece
	ld a, [de]
	inc de
	ld [hli], a
	and a
	jr nz, .asm_119ece
	call CloseSRAM
	ret

; known jump sources: 118880 (46:4880), 118916 (46:4916), 118b17 (46:4b17), 118e7e (46:4e7e), 118e87 (46:4e87), 119629 (46:5629), 119648 (46:5648), 119654 (46:5654), 11966d (46:566d), 119685 (46:5685)
Function119ed8: ; 119ed8 (46:5ed8)
	ld a, [rSVBK] ; $ff00+$70
	ld [$cd8c], a
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	call Function119eee
	ld a, [$cd8c]
	ld [rSVBK], a ; $ff00+$70
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

; known jump sources: 119ee1 (46:5ee1)
Function119eee: ; 119eee (46:5eee)
	ld a, [$cd3c]
	ld e, a
	ld d, $0
	ld hl, $5efd
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 119efd (46:5efd)

INCBIN "baserom.gbc",$119efd,$11a8fa - $119efd

Function11a8fa: ; 11a8fa
	ld a, [$c31a]
	ld e, a
	ld d, $0
	ld hl, $6909
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11a909

INCBIN "baserom.gbc",$11a909,$11aa13 - $11a909

UnknownText_0x11aa13: ; 0x11aa13
	db $0, "SAVE FILE will be", $4f
	db "sent.", $57
; 0x11aa2c

UnknownText_0x11aa2c: ; 0x11aa2c
	db $0, "Sent SAVE FILE.", $4f
	db "Reading NEWS…", $57
; 0x11aa4b

UnknownText_0x11aa4b: ; 0x11aa4b
	db $0, "Reading NEWS…", $57
; 0x11aa5a

UnknownText_0x11aa5a: ; 0x11aa5a
	db $0, "Received NEWS!", $57
; 0x11aa6a

UnknownText_0x11aa6a: ; 0x11aa6a
	db $0, "Quit reading NEWS?", $57
; 0x11aa7e

UnknownText_0x11aa7e: ; 0x11aa7e
	db $0, "Canceled sending", $4f
	db "SAVE FILE.", $57
; 0x11aa9b

UnknownText_0x11aa9b: ; 0x11aa9b
	db $0, "ODD EGG", $4f
	db "was received!", $57
; 0x11aab2

UnknownText_0x11aab2: ; 0x11aab2
	db $0, "Registering your", $4f
	db "record…", $57
; 0x11aacc

UnknownText_0x11aacc: ; 0x11aacc
	db $0, "One visit per day", $4f
	db "per BATTLE ROOM!", $57
; 0x11aaf0

UnknownText_0x11aaf0: ; 0x11aaf0
	db $0, "A party #MON", $4f
	db "tops this level.", $57
; 0x11ab0f

UnknownText_0x11ab0f: ; 0x11ab0f
	text_from_ram $cd49
	db $0, " may go", $4f
	db "only to BATTLE", $51
	db "ROOMS that are", $4f
	db "Lv.70 or higher.", $57
; 0x11ab4a

UnknownText_0x11ab4a: ; 0x11ab4a
	db $0, "Cancel your BATTLE", $4f
	db "ROOM challenge?", $57
; 0x11ab6e

UnknownText_0x11ab6e: ; 0x11ab6e
	db $0, "Exit GYM LEADER", $4f
	db "HONOR ROLL?", $57
; 0x11ab8b

UnknownText_0x11ab8b: ; 0x11ab8b
	db $0, "Linking with the", $4f
	db "CENTER…", $57
; 0x11aba5

UnknownText_0x11aba5: ; 0x11aba5
	db $0, "What level do you", $4f
	db "want to challenge?", $57
; 0x11abcb

UnknownText_0x11abcb: ; 0x11abcb
	db $0, "Check BATTLE ROOM", $4f
	db "list by max level?", $57
; 0x11abf1

UnknownText_0x11abf1: ; 0x11abf1
	db $0, "Enter which", $4f
	db "BATTLE ROOM?", $57
; 0x11ac0b

UnknownText_0x11ac0b: ; 0x11ac0b
	db $0, "Which BATTLE ROOM?", $57
; 0x11ac1f

UnknownText_0x11ac1f: ; 0x11ac1f
	text_from_ram StringBuffer3
	db $0, "'s ROOM", $4f
	db "@"
	text_from_ram StringBuffer4
	db $0, "?", $55
	db "Please wait…", $57
; 0x11ac3e

Function11ac3e: ; 11ac3e
	call SpeechTextBox
	call FadeToMenu
	callab Function8e814
	call Function11ac51
	call Function2b3c
	ret
; 11ac51

Function11ac51: ; 11ac51
	xor a
	ld [hBGMapMode], a
	ld hl, Options
	ld a, [hl]
	push af
	set 4, [hl]
	ld a, [VramState]
	push af
	xor a
	ld [VramState], a
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	xor a
	ld [$ffde], a
	ld [$cd49], a
	ld [$cd4a], a
	ld [$cd4c], a
	ld [$cd4d], a
	ld [$cd4e], a
	call Function11ad1b
	call DelayFrame
.asm_11ac82
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_11aca8
	call Function11b314
	call Function11acb7
	call Function11ad6e
	ld a, $78
	ld [$c3b5], a
	callba Function8cf7a
	callba Function104061
	jr .asm_11ac82

.asm_11aca8
	call ClearSprites
	pop af
	ld [$ffaa], a
	pop af
	ld [VramState], a
	pop af
	ld [Options], a
	ret
; 11acb7

Function11acb7: ; 11acb7
	ld hl, $7a44
	ld a, [$cd49]
	ld c, a
	ld b, $0
	sla c
	rl b
	sla c
	rl b
	sla c
	rl b
	add hl, bc
	ld de, $c51e
	ld a, [hli]
	ld [de], a
	ld de, $c52c
	ld bc, $0007
	call CopyBytes
	ld a, [$cd49]
	inc a
	ld [$cd49], a
	ld a, [hl]
	cp $ff
	jr nz, .asm_11aceb
	xor a
	ld [$cd49], a

.asm_11aceb
	ld hl, $7b7d
	ld a, [$cd4a]
	ld c, a
	ld b, $0
	sla c
	rl b
	sla c
	rl b
	sla c
	rl b
	add hl, bc
	ld de, $c557
	ld bc, $0007
	call CopyBytes
	ld a, [$cd4a]
	inc a
	ld [$cd4a], a
	inc hl
	ld a, [hl]
	cp $ff
	ret nz
	xor a
	ld [$cd4a], a
	ret
; 11ad1b

Function11ad1b: ; 11ad1b
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	callba Function17c000
	ld a, [$cfa9]
	ld [$cd82], a
	dec a
	ld [hConnectedMapWidth], a
	ld a, $10
	ld [$c3b7], a
	ld hl, Function8e83f
	ld a, BANK(Function8e83f)
	ld e, $4
	rst FarCall
	ld hl, Function8e83f
	ld a, BANK(Function8e83f)
	ld e, $5
	rst FarCall
	ld hl, PlayerSDefLevel
	ld bc, $0115
	xor a
	call ByteFill
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld [$cd30], a
	ld a, $2
	ld [$c7d4], a
	callba Function40bdc
	ret
; 11ad6e

Function11ad6e: ; 11ad6e
	ld a, [$cf63]
	ld hl, $6d78
	call Function11b239
	jp [hl]
; 11ad78

INCBIN "baserom.gbc",$11ad78,$11b239 - $11ad78

Function11b239: ; 11b239
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 11b242

INCBIN "baserom.gbc",$11b242,$11b314 - $11b242

Function11b314: ; 11b314
	call Function11b31b
	call Function11b3d9
	ret
; 11b31b

Function11b31b: ; 11b31b
	ld hl, $7350
	ld a, [$cf63]
	cp $2
	jr c, .asm_11b349
	ld a, [$c7d1]
	cp $4
	jr nc, .asm_11b344
	cp $3
	jr c, .asm_11b349
	ld a, [$cf63]
	cp $2
	jr z, .asm_11b349
	cp $3
	jr z, .asm_11b349
	cp $6
	jr z, .asm_11b349
	ld bc, $737b
	jr .asm_11b34c

.asm_11b344
	ld bc, $7389
	jr .asm_11b34c

.asm_11b349
	ld bc, $736d

.asm_11b34c
	call Function11b397
	ret
; 11b350

INCBIN "baserom.gbc",$11b350,$11b397 - $11b350

Function11b397: ; 11b397
	ld de, Sprites
.asm_11b39a
	ld a, [hl]
	cp $ff
	ret z
	ld a, [$c7d1]
	and $7
	swap a
	add [hl]
	inc hl
	ld [de], a
	inc de
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [bc]
	inc bc
	ld [de], a
	inc de
	ld a, $5
	ld [de], a
	inc de
	jr .asm_11b39a
; 11b3b6

INCBIN "baserom.gbc",$11b3b6,$11b3d9 - $11b3b6

Function11b3d9: ; 11b3d9
	ld de, $c470
	push de
	ld a, [$c7d2]
	dec a
	ld e, a
	ld a, [$c7d1]
	ld hl, $c7d0
	add [hl]
	cp e
	jr z, .asm_11b40d
	ld hl, $0000
	ld bc, $0070
	call AddNTimes
	ld e, l
	ld d, h
	ld b, $0
	ld a, d
	or e
	jr z, .asm_11b40f
	ld a, [$c7d2]
	ld c, a
.asm_11b401
	ld a, e
	sub c
	ld e, a
	ld a, d
	sbc $0
	ld d, a
	jr c, .asm_11b40f
	inc b
	jr .asm_11b401

.asm_11b40d
	ld b, $70

.asm_11b40f
	ld a, $15
	add b
	pop hl
	ld [hli], a
	cp $41
	jr c, .asm_11b42b
	ld a, [$cf63]
	cp $4
	jr z, .asm_11b43b
	cp $5
	jr z, .asm_11b43b
	cp $7
	jr z, .asm_11b43b
	cp $8
	jr z, .asm_11b43b

.asm_11b42b
	ld a, $9b
	ld [hli], a
	ld a, [$cd4c]
	add $3c
	ld [hli], a
	ld a, [$cd4c]
	add $1
	ld [hl], a
	ret

.asm_11b43b
	ld a, $9b
	ld [hli], a
	ld a, $39
	ld [hli], a
	xor a
	ld [hl], a
	ret
; 11b444

Function11b444: ; 11b444
	call Function11b44b
	call Function11b45c
	ret
; 11b44b

Function11b44b: ; 11b44b
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	call UpdateTime
	ret
; 11b45c

Function11b45c: ; 11b45c
.asm_11b45c
	call Function11b46a
	call DelayFrame
	ld a, [$cf63]
	cp $4
	jr nz, .asm_11b45c
	ret
; 11b46a

Function11b46a: ; 11b46a
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $7479
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11b479

INCBIN "baserom.gbc",$11b479,$11b5e8 - $11b479

Function11b5e8: ; 11b5e8
	ld a, $0
	call GetSRAMBank
	ld hl, $d4ba
	ld de, EnemyMoveAnimation
	ld bc, $0004
	call CopyBytes
	call CloseSRAM
	ld a, $5
	call GetSRAMBank
	ld hl, EnemyMoveAnimation
	ld de, $b08c
	ld bc, $0004
	call CopyBytes
	ld a, $2
	ld [$a800], a
	ld a, [$a81f]
	ld [$cd2a], a
	ld a, [$a820]
	ld [$cd2b], a
	ld a, [$a821]
	ld [$cd2c], a
	ld a, [$a822]
	ld [$cd2d], a
	ld a, [$a823]
	ld [$cd2e], a
	ld a, [$a824]
	ld [$cd2f], a
	ld a, [$a825]
	ld [$cd30], a
	ld a, [$a826]
	ld [$cd31], a
	call CloseSRAM
	call Function11b44b
	call Function11b64c
	ret
; 11b64c

Function11b64c: ; 11b64c
.asm_11b64c
	call Function11b65a
	call DelayFrame
	ld a, [$cf63]
	cp $1
	jr nz, .asm_11b64c
	ret
; 11b65a

Function11b65a: ; 11b65a
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $7669
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11b669

INCBIN "baserom.gbc",$11b669,$11b7e5 - $11b669

Function11b7e5: ; 11b7e5
	ld a, [EnemyMovePP]
	ld [PlayerLightScreenCount], a
	ld [CurPartySpecies], a
	ld a, [$cd81]
	ld [$c74e], a
	ld hl, $c63d
	ld de, $c724
	ld bc, $0005
	call CopyBytes
	ld a, $50
	ld [de], a
	ld a, [PlayerMoveAccuracy]
	ld [$c731], a
	ld a, [PlayerMovePP]
	ld [$c732], a
	ld hl, $c622
	ld a, [hli]
	ld [$c72f], a
	ld a, [hl]
	ld [$c730], a
	ld bc, EnemyMovePP
	callba Function4f301
	ld a, c
	ld [$c733], a
	call SpeechTextBox
	call FadeToMenu
	callba Function108016
	callba Function17d1f1
	ld a, $1
	ld [$d1e9], a
	ld a, $2
	ld [InLinkBattle], a
	callba Function421d8
	xor a
	ld [InLinkBattle], a
	callba Function14a58
	ld a, $5
	call GetSRAMBank
	ld a, $5
	ld [$a800], a
	call CloseSRAM
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call Function2147
	ld a, d
	or e
	jr z, .asm_11b872
	ld a, $1
	ld [de], a

.asm_11b872
	call Function2b3c
	call Function3d47
	ret
; 11b879

Function11b879: ; 11b879
	callba Function17089a
	ld a, [ScriptVar]
	and a
	ret z
	ld a, $5
	call GetSRAMBank
	ld a, [$a800]
	ld [ScriptVar], a
	ld a, [$a890]
	ld [$cd49], a
	ld a, [$a891]
	ld [$cd4a], a
	ld a, [$a892]
	ld [$cd4b], a
	ld a, [$a893]
	ld [$cd4c], a
	call CloseSRAM
	ld a, [ScriptVar]
	and a
	ret z
	ld hl, $cd4c
	ld a, [hRTCDayHi]
	cp [hl]
	ret nz
	dec hl
	ld a, [hRTCDayLo]
	cp [hl]
	ret nz
	ld hl, $cd4a
	ld a, [hRTCHours]
	cp [hl]
	jr nc, .asm_11b8d8
	ld a, $18
	sub [hl]
	ld hl, hRTCHours
	add [hl]
	ld [$cd4c], a
	ld a, [hRTCMinutes]
	ld [$cd4b], a
	xor a
	ld [$cd4a], a
	jr .asm_11b8e2

.asm_11b8d8
	ld a, [hRTCMinutes]
	ld [$cd4b], a
	ld a, [hRTCHours]
	ld [$cd4c], a

.asm_11b8e2
	xor a
	ld l, a
	ld h, a
	ld b, a
	ld d, a
	ld a, [$cd4b]
	ld e, a
	ld a, [$cd4c]
	ld c, $3c
	call AddNTimes
	add hl, de
	push hl
	xor a
	ld l, a
	ld h, a
	ld b, a
	ld d, a
	ld a, [$cd49]
	ld e, a
	ld a, [$cd4a]
	ld c, $3c
	call AddNTimes
	add hl, de
	ld a, l
	cpl
	add $1
	ld e, a
	ld a, h
	cpl
	adc $0
	ld d, a
	pop hl
	add hl, de
	ld de, $ff88
	add hl, de
	bit 7, h
	ret z
	ld a, $2
	ld [ScriptVar], a
	ret
; 11b920

Function11b920: ; 11b920
	call Function11b44b
	ld a, $5
	call GetSRAMBank
	ld hl, $a81f
	ld de, $c626
	ld bc, $0008
	call CopyBytes
	call CloseSRAM
	call Function118000
	ret
; 11b93b

Function11b93b: ; 11b93b
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$a800], a
	ld hl, $a823
	ld de, EnemyMoveAnimation
	ld bc, $008f
	call CopyBytes
	call CloseSRAM
	ld a, $8
	ld [BGMapBuffer], a
	ld a, $c6
	ld [$cd21], a
	ld a, $11
	ld [CreditsTimer], a
	ld a, $c6
	ld [$cd23], a
	ld a, $41
	ld [$cd24], a
	ld a, $c6
	ld [$cd25], a
	ld a, $46
	ld [$cd26], a
	ld a, $c6
	ld [$cd27], a
	ld a, $4b
	ld [$cd28], a
	ld a, $c6
	ld [$cd29], a
	call Function11b98f
	callba Function14a58
	ret
; 11b98f

Function11b98f: ; 11b98f
	ld hl, PartyCount
	ld a, [hl]
	ld e, a
	inc [hl]
	ld a, [BGMapBuffer]
	ld l, a
	ld a, [$cd21]
	ld h, a
	inc hl
	ld bc, PartySpecies
	ld d, e
.asm_11b9a2
	inc bc
	dec d
	jr nz, .asm_11b9a2
	ld a, e
	ld [CurPartyMon], a
	ld a, [hl]
	ld [bc], a
	inc bc
	ld a, $ff
	ld [bc], a
	ld hl, PartyMon1Species
	ld bc, $0030
	ld a, e
	ld [$cd2a], a
.asm_11b9ba
	add hl, bc
	dec a
	and a
	jr nz, .asm_11b9ba
	ld e, l
	ld d, h
	ld a, [CreditsTimer]
	ld l, a
	ld a, [$cd23]
	ld h, a
	ld bc, $0030
	call CopyBytes
	ld hl, PartyMon1OT
	ld bc, $000b
	ld a, [$cd2a]
.asm_11b9d8
	add hl, bc
	dec a
	and a
	jr nz, .asm_11b9d8
	ld e, l
	ld d, h
	ld a, [$cd24]
	ld l, a
	ld a, [$cd25]
	ld h, a
	ld bc, $000a
	call CopyBytes
	ld a, $50
	ld [de], a
	ld hl, PartyMon1Nickname
	ld bc, $000b
	ld a, [$cd2a]
.asm_11b9f9
	add hl, bc
	dec a
	and a
	jr nz, .asm_11b9f9
	ld e, l
	ld d, h
	ld a, [$cd26]
	ld l, a
	ld a, [$cd27]
	ld h, a
	ld bc, $000a
	call CopyBytes
	ld a, $50
	ld [de], a
	ld hl, $a600
	ld bc, $002f
	ld a, [$cd2a]
.asm_11ba1a
	add hl, bc
	dec a
	and a
	jr nz, .asm_11ba1a
	ld a, $0
	call GetSRAMBank
	ld e, l
	ld d, h
	ld a, [$cd28]
	ld l, a
	ld a, [$cd29]
	ld h, a
	ld bc, $002f
	call CopyBytes
	call CloseSRAM
	ret
; 11ba38

Function11ba38: ; 11ba38
	callba Functione538
	ret c
	xor a
	ld [ScriptVar], a
	ret
; 11ba44

INCBIN "baserom.gbc",$11ba44,$11bc9e - $11ba44


SECTION "bank47", ROMX, BANK[$47]

Function11c000: ; 11c000
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld hl, $d105
	ld a, [hl]
	dec a
	ld e, a
	ld d, $0
	ld hl, $72f0
	add hl, de
	ld a, [hl]
	and a
	jr nz, .asm_11c026
	ld a, [hRandomAdd]
	and $1f
	cp $19
	jr c, .asm_11c021
	sub $19

.asm_11c021
	ld hl, $7332
	jr .asm_11c033

.asm_11c026
	ld a, [hRandomAdd]
	and $f
	cp $f
	jr c, .asm_11c030
	sub $f

.asm_11c030
	ld hl, $73ce

.asm_11c033
	ld b, $0
	dec c
	jr nz, .asm_11c03d
	ld [$d200], a
	jr .asm_11c040

.asm_11c03d
	ld a, [$d200]

.asm_11c040
	push af
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld c, a
	ld a, [hl]
	ld h, a
	ld l, c
	pop af
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld c, a
	ld a, [hl]
	ld l, c
	ld h, a
	ld bc, $c5b9
	pop af
	ld [rSVBK], a
	call Function13e5
	ret
; 11c05d

Function11c05d: ; 11c05d
	ld a, e
	or d
	jr z, .asm_11c071
	ld a, e
	and d
	cp $ff
	jr z, .asm_11c071
	push hl
	call Function11c156
	pop hl
	call PlaceString
	and a
	ret

.asm_11c071
	ld c, l
	ld b, h
	scf
	ret
; 11c075

Function11c075: ; 11c075
	push de
	ld a, c
	call Function11c254
	pop de
	ld bc, $cd36
	call Function11c08f
	ret
; 11c082

INCBIN "baserom.gbc",$11c082,$11c08f - $11c082

Function11c08f: ; 11c08f
	ld l, e
	ld h, d
	push hl
	ld a, $3
.asm_11c094
	push af
	ld a, [bc]
	ld e, a
	inc bc
	ld a, [bc]
	ld d, a
	inc bc
	push bc
	call Function11c05d
	jr c, .asm_11c0a2
	inc bc

.asm_11c0a2
	ld l, c
	ld h, b
	pop bc
	pop af
	dec a
	jr nz, .asm_11c094
	pop hl
	ld de, $0028
	add hl, de
	ld a, $3
.asm_11c0b0
	push af
	ld a, [bc]
	ld e, a
	inc bc
	ld a, [bc]
	ld d, a
	inc bc
	push bc
	call Function11c05d
	jr c, .asm_11c0be
	inc bc

.asm_11c0be
	ld l, c
	ld h, b
	pop bc
	pop af
	dec a
	jr nz, .asm_11c0b0
	ret
; 11c0c6


Function11c0c6: ; 11c0c6
	ld a, [$cf63]
	ld l, a
	ld a, [$cf64]
	ld h, a
	push hl
	ld hl, $c618
	ld a, $0
	ld [hli], a
	push de
	xor a
	ld [$cf63], a
	ld a, $12
	ld [$cf64], a
	ld a, $6
.asm_11c0e1
	push af
	ld a, [bc]
	ld e, a
	inc bc
	ld a, [bc]
	ld d, a
	inc bc
	or e
	jr z, .asm_11c133
	push hl
	push bc
	call Function11c156
	call Function11c14a
	ld e, c
	pop bc
	pop hl
	ld a, e
	or a
	jr z, .asm_11c133
.asm_11c0fa
	ld a, [$cf64]
	cp $12
	jr z, .asm_11c102
	inc e

.asm_11c102
	cp e
	jr nc, .asm_11c11c
	ld a, [$cf63]
	inc a
	ld [$cf63], a
	ld [hl], $4e
	rra
	jr c, .asm_11c113
	ld [hl], $55

.asm_11c113
	inc hl
	ld a, $12
	ld [$cf64], a
	dec e
	jr .asm_11c0fa

.asm_11c11c
	cp $12
	jr z, .asm_11c123
	ld [hl], $7f
	inc hl

.asm_11c123
	sub e
	ld [$cf64], a
	ld de, EnemyMoveAnimation
.asm_11c12a
	ld a, [de]
	cp $50
	jr z, .asm_11c133
	inc de
	ld [hli], a
	jr .asm_11c12a

.asm_11c133
	pop af
	dec a
	jr nz, .asm_11c0e1
	ld [hl], $57
	pop bc
	ld hl, $c618
	call Function13e5
	pop hl
	ld a, l
	ld [$cf63], a
	ld a, h
	ld [$cf64], a
	ret
; 11c14a

Function11c14a: ; 11c14a
	ld c, $0
	ld hl, EnemyMoveAnimation
.asm_11c14f
	ld a, [hli]
	cp $50
	ret z
	inc c
	jr .asm_11c14f
; 11c156

Function11c156: ; 11c156
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	ld a, $50
	ld hl, EnemyMoveAnimation
	ld bc, $000b
	call ByteFill
	ld a, d
	and a
	jr z, .asm_11c19c
	ld hl, $5aac
	dec d
	sla d
	ld c, d
	ld b, $0
	add hl, bc
	ld a, [hli]
	ld c, a
	ld a, [hl]
	ld b, a
	push bc
	pop hl
	ld c, e
	ld b, $0
	sla c
	rl b
	sla c
	rl b
	sla c
	rl b
	add hl, bc
	ld bc, $0005
.asm_11c18f
	ld de, EnemyMoveAnimation
	call CopyBytes
	ld de, EnemyMoveAnimation
	pop af
	ld [rSVBK], a
	ret

.asm_11c19c
	ld a, e
	ld [$d265], a
	call GetPokemonName
	ld hl, StringBuffer1
	ld bc, $000a
	jr .asm_11c18f
; 11c1ab

Function11c1ab: ; 11c1ab
	ld a, [$ffaa]
	push af
	ld a, $1
	ld [$ffaa], a
	call Function11c1b9
	pop af
	ld [$ffaa], a
	ret
; 11c1b9

Function11c1b9: ; 11c1b9
	call Function11c1ca
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	call Function11c283
	pop af
	ld [rSVBK], a
	ret
; 11c1ca

Function11c1ca: ; 11c1ca
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ld [$cd23], a
	ld [BGMapBuffer], a
	ld [$cd21], a
	ld [CreditsTimer], a
	ld [$cd35], a
	ld [$cd2b], a
	ld a, $ff
	ld [$cd24], a
	ld a, [$cfa9]
	dec a
	call Function11c254
	call WhiteBGMap
	call ClearSprites
	call Functionfdb
	call Function11d323
	call Function32f9
	call DisableLCD
	ld hl, $567e
	ld de, VTiles2
	ld bc, $0060
	call CopyBytes
	ld hl, $56de
	ld de, VTiles0
	call Decompress
	call EnableLCD
	callba Function104061
	callba Function8cf53
	callba Function1500c
	callba Function40c30
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, PlayerSDefLevel
	ld de, LYOverrides
	ld bc, Start
	call CopyBytes
	pop af
	ld [rSVBK], a
	call Function11d4aa
	call Function11d3ba
	ret
; 11c254

Function11c254: ; 11c254
	push af
	ld a, $4
	call GetSRAMBank
	ld hl, $a007
	pop af
	sla a
	sla a
	ld c, a
	sla a
	add c
	ld c, a
	ld b, $0
	add hl, bc
	ld de, $cd36
	ld bc, $000c
	call CopyBytes
	call CloseSRAM
	ret
; 11c277


; known jump sources: 11c3c2 (47:43c2), 11c52c (47:452c), 11c658 (47:4658), 11cd20 (47:4d20), 11ce0b (47:4e0b)
Function11c277: ; 11c277 (47:4277)
	ld a, $7f
	ld hl, $c518
	ld bc, $f0
	call ByteFill
	ret

Function11c283: ; 11c283
.asm_11c283
	call Functiona57
	ld a, [hJoyPressed]
	ld [hJoypadPressed], a
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_11c2a2
	call Function11c2ac
	callba Function8cf69
	callba Function104061
	jr .asm_11c283

.asm_11c2a2
	callba Function8cf53
	call ClearSprites
	ret
; 11c2ac

Function11c2ac: ; 11c2ac
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $42bb
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 11c2bb


; no known jump sources
Jumptable_11c2bb: ; 11c2bb (47:42bb)
	dw Function11c2e9
	dw Function11c346
	dw Function11c35f
	dw Function11c373
	dw Function11c3c2
	dw Function11c3ed
	dw Function11c52c
	dw Function11c53d
	dw Function11c658
	dw Function11c675
	dw Function11c9bd
	dw Function11c9c3
	dw Function11caad
	dw Function11cab3
	dw Function11cb52
	dw Function11cb66
	dw Function11cbf5
	dw Function11ccef
	dw Function11cd04
	dw Function11cd20
	dw Function11cd54
	dw Function11ce0b
	dw Function11ce2b


; no known jump sources
Function11c2e9: ; 11c2e9 (47:42e9)
	ld de, $1a0d
	ld a, $1d
	call Function3b2a
	ld de, $420d
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $1
	ld [hl], a
	ld de, $4a10
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $3
	ld [hl], a
	ld de, $5080
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $4
	ld [hl], a
	ld de, $5020
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $5
	ld [hl], a
	ld de, $5010
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $2
	ld [hl], a
	ld hl, $cd23
	set 1, [hl]
	set 2, [hl]
	jp Function11cfb5

; no known jump sources
Function11c346: ; 11c346 (47:4346)
	ld a, $9
	ld [$cd2d], a
	ld a, $2
	ld [$cd2e], a
	ld [$cd2f], a
	ld [$cd30], a
	ld de, $cd2d
	call Function11cfce
	jp Function11cfb5

; no known jump sources
Function11c35f: ; 11c35f (47:435f)
	ld hl, $cd2f
	inc [hl]
	inc [hl]
	dec hl
	dec hl
	dec [hl]
	push af
	ld de, $cd2d
	call Function11cfce
	pop af
	ret nz
	jp Function11cfb5

; no known jump sources
Function11c373: ; 11c373 (47:4373)
	ld hl, $cd30
	inc [hl]
	inc [hl]
	dec hl
	dec hl
	dec [hl]
	push af
	ld de, $cd2d
	call Function11cfce
	pop af
	ret nz
	call Function11c38a
	jp Function11cfb5

; known jump sources: 11c384 (47:4384), 11cbdd (47:4bdd)
Function11c38a: ; 11c38a (47:438a)
	ld hl, $4986
	ld bc, $cd36
	ld a, $6
.asm_11c392
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push hl
	push de
	pop hl
	ld a, [bc]
	inc bc
	ld e, a
	ld a, [bc]
	inc bc
	ld d, a
	push bc
	or e
	jr z, .asm_11c3af
	ld a, e
	and d
	cp $ff
	jr z, .asm_11c3af
	call Function11c05d
	jr .asm_11c3b5
.asm_11c3af
	ld de, $43bc
	call PlaceString
.asm_11c3b5
	pop bc
	pop hl
	pop af
	dec a
	jr nz, .asm_11c392
	ret
; 11c3bc (47:43bc)

INCBIN "baserom.gbc",$11c3bc,$11c3c2 - $11c3bc

; no known jump sources
Function11c3c2: ; 11c3c2 (47:43c2)
	call Function11c277
	ld de, $4fbe
	call Function11d035
	ld hl, $c52d
	ld de, $44db
	call PlaceString
	ld hl, $c5e1
	ld de, $451b
	call PlaceString
	call Function11c4be
	ld hl, $cd23
	set 0, [hl]
	ld hl, $cd24
	res 0, [hl]
	call Function11cfb5

; no known jump sources
Function11c3ed: ; 11c3ed (47:43ed)
	ld hl, BGMapBuffer ; $cd20 (aliases: CreditsPos)
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $8
	jr nz, .asm_11c426
	ld a, [de]
	and $2
	jr nz, .asm_11c41a
	ld a, [de]
	and $1
	jr nz, .asm_11c42c
	ld de, $ffa9
	ld a, [de]
	and $40
	jr nz, .asm_11c47c
	ld a, [de]
	and $80
	jr nz, .asm_11c484
	ld a, [de]
	and $20
	jr nz, .asm_11c48c
	ld a, [de]
	and $10
	jr nz, .asm_11c498
	ret
.asm_11c41a
	call PlayClickSFX
.asm_11c41d
	ld hl, $cd24
	set 0, [hl]
	ld a, $c
	jr .asm_11c475
.asm_11c426
	ld a, $8
	ld [BGMapBuffer], a ; $cd20 (aliases: CreditsPos)
	ret
.asm_11c42c
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	cp $6
	jr c, .asm_11c472
	sub $6
	jr z, .asm_11c469
	dec a
	jr z, .asm_11c41d
	ld hl, $cd36
	ld c, $c
	xor a
.asm_11c440
	or [hl]
	inc hl
	dec c
	jr nz, .asm_11c440
	and a
	jr z, .asm_11c460
	ld de, $4fba
	call Function11cfce
	ld de, $c4c9
	ld bc, $cd36
	call Function11c08f
	ld hl, $cd24
	set 0, [hl]
	ld a, $e
	jr .asm_11c475
.asm_11c460
	ld hl, $cd24
	set 0, [hl]
	ld a, $11
	jr .asm_11c475
.asm_11c469
	ld hl, $cd24
	set 0, [hl]
	ld a, $a
	jr .asm_11c475
.asm_11c472
	call Function11c4a5
.asm_11c475
	ld [$cf63], a
	call PlayClickSFX
	ret
.asm_11c47c
	ld a, [hl]
	cp $3
	ret c
	sub $3
	jr .asm_11c4a3
.asm_11c484
	ld a, [hl]
	cp $6
	ret nc
	add $3
	jr .asm_11c4a3
.asm_11c48c
	ld a, [hl]
	and a
	ret z
	cp $3
	ret z
	cp $6
	ret z
	dec a
	jr .asm_11c4a3
.asm_11c498
	ld a, [hl]
	cp $2
	ret z
	cp $5
	ret z
	cp $8
	ret z
	inc a
.asm_11c4a3
	ld [hl], a
	ret

; known jump sources: 11c472 (47:4472)
Function11c4a5: ; 11c4a5 (47:44a5)
	ld hl, $cd23
	res 0, [hl]
	ld a, [$cd2b]
	and a
	jr nz, .asm_11c4b7
	xor a
	ld [$cd21], a
	ld a, $6
	ret
.asm_11c4b7
	xor a
	ld [CreditsTimer], a ; $cd22
	ld a, $15
	ret

; known jump sources: 11c3dd (47:43dd)
Function11c4be: ; 11c4be (47:44be)
	ld a, $1
	ld hl, $ce51
	ld bc, $a0
	call ByteFill
	ld a, $7
	ld hl, $cef1
	ld bc, $28
	call ByteFill
	callba Function104061
	ret
; 11c4db (47:44db)

INCBIN "baserom.gbc",$11c4db,$11c52c - $11c4db

; no known jump sources
Function11c52c: ; 11c52c (47:452c)
	call Function11c277
	call Function11c5f0
	call Function11c618
	ld hl, $cd24
	res 1, [hl]
	call Function11cfb5

; no known jump sources
Function11c53d: ; 11c53d (47:453d)
	ld hl, $cd21
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $8
	jr nz, .asm_11c57f
	ld a, [de]
	and $4
	jr nz, .asm_11c58d
	ld a, [de]
	and $2
	jr nz, .asm_11c589
	ld a, [de]
	and $1
	jr nz, .asm_11c56f
	ld de, $ffa9
	ld a, [de]
	and $40
	jr nz, .asm_11c5b5
	ld a, [de]
	and $80
	jr nz, .asm_11c5bd
	ld a, [de]
	and $20
	jr nz, .asm_11c5c5
	ld a, [de]
	and $10
	jr nz, .asm_11c5da
	ret
.asm_11c56f
	ld a, [$cd21]
	cp $f
	jr c, .asm_11c59d
	sub $f
	jr z, .asm_11c5ab
	dec a
	jr z, .asm_11c599
	jr .asm_11c589
.asm_11c57f
	ld hl, $cd24
	set 0, [hl]
	ld a, $8
	ld [BGMapBuffer], a ; $cd20 (aliases: CreditsPos)
.asm_11c589
	ld a, $4
	jr .asm_11c59f
.asm_11c58d
	ld a, [$cd2b]
	xor $1
	ld [$cd2b], a
	ld a, $15
	jr .asm_11c59f
.asm_11c599
	ld a, $13
	jr .asm_11c59f
.asm_11c59d
	ld a, $8
.asm_11c59f
	ld hl, $cd24
	set 1, [hl]
	ld [$cf63], a
	call PlayClickSFX
	ret
.asm_11c5ab
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	call Function11ca6a
	call PlayClickSFX
	ret
.asm_11c5b5
	ld a, [hl]
	cp $3
	ret c
	sub $3
	jr .asm_11c5ee
.asm_11c5bd
	ld a, [hl]
	cp $f
	ret nc
	add $3
	jr .asm_11c5ee
.asm_11c5c5
	ld a, [hl]
	and a
	ret z
	cp $3
	ret z
	cp $6
	ret z
	cp $9
	ret z
	cp $c
	ret z
	cp $f
	ret z
	dec a
	jr .asm_11c5ee
.asm_11c5da
	ld a, [hl]
	cp $2
	ret z
	cp $5
	ret z
	cp $8
	ret z
	cp $b
	ret z
	cp $e
	ret z
	cp $11
	ret z
	inc a
.asm_11c5ee
	ld [hl], a
	ret

; known jump sources: 11c52f (47:452f)
Function11c5f0: ; 11c5f0 (47:45f0)
	ld de, $5a52
	ld bc, $463a
	ld a, $f
.asm_11c5f8
	push af
	ld a, [bc]
	inc bc
	ld l, a
	ld a, [bc]
	inc bc
	ld h, a
	push bc
	call PlaceString
.asm_11c603
	inc de
	ld a, [de]
	cp $50
	jr z, .asm_11c603
	pop bc
	pop af
	dec a
	jr nz, .asm_11c5f8
	ld hl, $c5f5
	ld de, $462a
	call PlaceString
	ret

; known jump sources: 11c532 (47:4532), 11ce20 (47:4e20)
Function11c618: ; 11c618 (47:4618)
	ld a, $2
	ld hl, $ce51
	ld bc, $c8
	call ByteFill
	callba Function104061
	ret
; 11c62a (47:462a)

INCBIN "baserom.gbc",$11c62a,$11c658 - $11c62a

; no known jump sources
Function11c658: ; 11c658 (47:4658)
	call Function11c277
	call Function11c770
	ld de, $4fc2
	call Function11d035
	call Function11c9ab
	call Function11c7bc
	call Function11c86e
	ld hl, $cd24
	res 3, [hl]
	call Function11cfb5

; no known jump sources
Function11c675: ; 11c675 (47:4675)
	ld hl, $cd25
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $1
	jr nz, .asm_11c6e6
	ld a, [de]
	and $2
	jr nz, .asm_11c6f0
	ld a, [de]
	and $8
	jr nz, .asm_11c69e
	ld a, [de]
	and $4
	jr z, .asm_11c6ce
	ld a, [$cd26]
	and a
	ret z
	sub $c
	jr nc, .asm_11c699
	xor a
.asm_11c699
	ld [$cd26], a
	jr .asm_11c6c4
.asm_11c69e
	ld hl, $cd28
	ld a, [$cd26]
	add $c
	cp [hl]
	ret nc
	ld [$cd26], a
	ld a, [hl]
	ld b, a
	ld hl, $cd25
	ld a, [$cd26]
	add [hl]
	jr c, .asm_11c6b9
	cp b
	jr c, .asm_11c6c4
.asm_11c6b9
	ld a, [$cd28]
	ld hl, $cd26
	sub [hl]
	dec a
	ld [$cd25], a
.asm_11c6c4
	call Function11c992
	call Function11c7bc
	call Function11c86e
	ret
.asm_11c6ce
	ld de, $ffa9
	ld a, [de]
	and $40
	jr nz, .asm_11c708
	ld a, [de]
	and $80
	jr nz, .asm_11c731
	ld a, [de]
	and $20
	jr nz, .asm_11c746
	ld a, [de]
	and $10
	jr nz, .asm_11c755
	ret
.asm_11c6e6
	call Function11c8f6
	ld a, $4
	ld [$cd35], a
	jr .asm_11c6fc
.asm_11c6f0
	ld a, [$cd2b]
	and a
	jr nz, .asm_11c6fa
	ld a, $6
	jr .asm_11c6fc
.asm_11c6fa
	ld a, $15
.asm_11c6fc
	ld [$cf63], a
	ld hl, $cd24
	set 3, [hl]
	call PlayClickSFX
	ret
.asm_11c708
	ld a, [hl]
	cp $3
	jr c, .asm_11c711
	sub $3
	jr .asm_11c76e
.asm_11c711
	ld a, [$cd26]
	sub $3
	ret c
	ld [$cd26], a
	jr .asm_11c6c4
.asm_11c71c
	ld hl, $cd28
	ld a, [$cd26]
	add $c
	ret c
	cp [hl]
	ret nc
	ld a, [$cd26]
	add $3
	ld [$cd26], a
	jr .asm_11c6c4
.asm_11c731
	ld a, [$cd28]
	ld b, a
	ld a, [$cd26]
	add [hl]
	add $3
	cp b
	ret nc
	ld a, [hl]
	cp $9
	jr nc, .asm_11c71c
	add $3
	jr .asm_11c76e
.asm_11c746
	ld a, [hl]
	and a
	ret z
	cp $3
	ret z
	cp $6
	ret z
	cp $9
	ret z
	dec a
	jr .asm_11c76e
.asm_11c755
	ld a, [$cd28]
	ld b, a
	ld a, [$cd26]
	add [hl]
	inc a
	cp b
	ret nc
	ld a, [hl]
	cp $2
	ret z
	cp $5
	ret z
	cp $8
	ret z
	cp $b
	ret z
	inc a
.asm_11c76e
	ld [hl], a
	ret

; known jump sources: 11c65b (47:465b)
Function11c770: ; 11c770 (47:4770)
	xor a
	ld [$cd25], a
	ld [$cd26], a
	ld [$cd27], a
	ld a, [$cd2b]
	and a
	jr nz, .asm_11c7ab
	ld a, [$cd21]
	and a
	jr z, .asm_11c799
	dec a
	sla a
	ld hl, $7220
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [hli]
	ld [$cd28], a
	ld a, [hl]
.asm_11c795
	ld [$cd29], a
	ret
.asm_11c799
	ld a, [$c7d2]
	ld [$cd28], a
.asm_11c79f
	ld c, $c
	call SimpleDivide
	and a
	jr nz, .asm_11c7a8
	dec b
.asm_11c7a8
	ld a, b
	jr .asm_11c795
.asm_11c7ab
	ld hl, $c6a8
	ld a, [CreditsTimer] ; $cd22
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [hl]
	ld [$cd28], a
	jr .asm_11c79f

; known jump sources: 11c667 (47:4667), 11c6c7 (47:46c7)
Function11c7bc: ; 11c7bc (47:47bc)
	ld bc, $4854
	ld a, [$cd2b]
	and a
	jr nz, .asm_11c814
	ld a, [$cd21]
	ld d, a
	and a
	jr z, .asm_11c7e9
	ld a, [$cd26]
	ld e, a
.asm_11c7d0
	ld a, [bc]
	ld l, a
	inc bc
	ld a, [bc]
	ld h, a
	inc bc
	and l
	cp $ff
	ret z
	push bc
	push de
	call Function11c05d
	pop de
	pop bc
	inc e
	ld a, [$cd28]
	cp e
	jr nz, .asm_11c7d0
	ret
.asm_11c7e9
	ld hl, CurMartEnd ; $d100 (aliases: LYOverrides)
	ld a, [$cd26]
	ld e, a
	add hl, de
.asm_11c7f1
	push de
	ld a, [hli]
	ld e, a
	ld d, $0
	push hl
	ld a, [bc]
	ld l, a
	inc bc
	ld a, [bc]
	ld h, a
	inc bc
	and l
	cp $ff
	jr z, .asm_11c811
	push bc
	call Function11c05d
	pop bc
	pop hl
	pop de
	inc e
	ld a, [$cd28]
	cp e
	jr nz, .asm_11c7f1
	ret
.asm_11c811
	pop hl
	pop de
	ret
.asm_11c814
	ld hl, BattleMonSpclDef ; $c648
	ld a, [CreditsTimer] ; $cd22
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	push de
	pop hl
	ld a, [$cd26]
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [$cd26]
	ld e, a
.asm_11c831
	push de
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push hl
	ld a, [bc]
	ld l, a
	inc bc
	ld a, [bc]
	ld h, a
	inc bc
	and l
	cp $ff
	jr z, .asm_11c851
	push bc
	call Function11c05d
	pop bc
	pop hl
	pop de
	inc e
	ld a, [$cd28]
	cp e
	jr nz, .asm_11c831
	ret
.asm_11c851
	pop hl
	pop de
	ret
; 11c854 (47:4854)

INCBIN "baserom.gbc",$11c854,$11c86e - $11c854

; known jump sources: 11c66a (47:466a), 11c6ca (47:46ca)
Function11c86e: ; 11c86e (47:486e)
	ld a, [$cd26]
	and a
	jr z, .asm_11c88a
	ld hl, $c5f6
	ld de, $48f0
	call PlaceString
	ld hl, $c5fa
	ld c, $3
	xor a
.asm_11c883
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_11c883
	jr .asm_11c895
.asm_11c88a
	ld hl, $c5f6
	ld c, $7
	ld a, $7f
.asm_11c891
	ld [hli], a
	dec c
	jr nz, .asm_11c891
.asm_11c895
	ld hl, $cd28
	ld a, [$cd26]
	add $c
	jr c, .asm_11c8b7
	cp [hl]
	jr nc, .asm_11c8b7
	ld hl, $c604
	ld de, $48f3
	call PlaceString
	ld hl, $c5ff
	ld a, $3
	ld c, a
.asm_11c8b1
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_11c8b1
	ret
.asm_11c8b7
	ld hl, $c5f1
	ld a, $7f
	ld [hl], a
	ld hl, $c5ff
	ld c, $7
.asm_11c8c2
	ld [hli], a
	dec c
	jr nz, .asm_11c8c2
	ret
; 11c8c7 (47:48c7)

INCBIN "baserom.gbc",$11c8c7,$11c8f6 - $11c8c7

; known jump sources: 11c6e6 (47:46e6)
Function11c8f6: ; 11c8f6 (47:48f6)
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	call Function11c95d
	push hl
	ld a, [$cd2b]
	and a
	jr nz, .asm_11c938
	ld a, [$cd21]
	ld d, a
	and a
	jr z, .asm_11c927
	ld hl, $cd26
	ld a, [$cd25]
	add [hl]
.asm_11c911
	ld e, a
.asm_11c912
	pop hl
	push de
	call Function11c05d
	pop de
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	ld c, a
	ld b, $0
	ld hl, $cd36
	add hl, bc
	add hl, bc
	ld [hl], e
	inc hl
	ld [hl], d
	ret
.asm_11c927
	ld hl, $cd26
	ld a, [$cd25]
	add [hl]
	ld c, a
	ld b, $0
	ld hl, CurMartEnd ; $d100 (aliases: LYOverrides)
	add hl, bc
	ld a, [hl]
	jr .asm_11c911
.asm_11c938
	ld hl, BattleMonSpclDef ; $c648
	ld a, [CreditsTimer] ; $cd22
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	push de
	pop hl
	ld a, [$cd26]
	ld e, a
	ld d, $0
	add hl, de
	add hl, de
	ld a, [$cd25]
	ld e, a
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	jr .asm_11c912

; known jump sources: 11c8f9 (47:48f9), 11ca75 (47:4a75)
Function11c95d: ; 11c95d (47:495d)
	sla a
	ld c, a
	ld b, $0
	ld hl, $4986
	add hl, bc
	ld a, [hli]
	ld c, a
	ld a, [hl]
	ld b, a
	push bc
	push bc
	pop hl
	ld a, $5
	ld c, a
	ld a, $7f
.asm_11c972
	ld [hli], a
	dec c
	jr nz, .asm_11c972
	dec hl
	ld bc, $ffec
	add hl, bc
	ld a, $5
	ld c, a
	ld a, $7f
.asm_11c980
	ld [hld], a
	dec c
	jr nz, .asm_11c980
	pop hl
	ret
; 11c986 (47:4986)

INCBIN "baserom.gbc",$11c986,$11c992 - $11c986

; known jump sources: 11c6c4 (47:46c4)
Function11c992: ; 11c992 (47:4992)
	ld a, $8
	ld hl, $c52e
.asm_11c997
	push af
	ld a, $7f
	push hl
	ld bc, $11
	call ByteFill
	pop hl
	ld bc, $14
	add hl, bc
	pop af
	dec a
	jr nz, .asm_11c997
	ret

; known jump sources: 11c664 (47:4664)
Function11c9ab: ; 11c9ab (47:49ab)
	ld a, $7
	ld hl, $ce51
	ld bc, $c8
	call ByteFill
	callba Function104061
	ret

; no known jump sources
Function11c9bd: ; 11c9bd (47:49bd)
	ld de, $4a38
	call Function11ca7f

; no known jump sources
Function11c9c3: ; 11c9c3 (47:49c3)
	ld hl, $cd2a
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $1
	jr nz, .asm_11c9de
	ld a, [de]
	and $2
	jr nz, .asm_11c9e9
	ld a, [de]
	and $40
	jr nz, .asm_11c9f7
	ld a, [de]
	and $80
	jr nz, .asm_11c9fc
	ret
.asm_11c9de
	ld a, [hl]
	and a
	jr nz, .asm_11c9e9
	call Function11ca5e
	xor a
	ld [BGMapBuffer], a ; $cd20 (aliases: CreditsPos)
.asm_11c9e9
	ld hl, $cd24
	set 4, [hl]
	ld a, $4
	ld [$cf63], a
	call PlayClickSFX
	ret
.asm_11c9f7
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ret
.asm_11c9fc
	ld a, [hl]
	and a
	ret nz
	inc [hl]
	ret

; known jump sources: 11ca9c (47:4a9c)
Function11ca01: ; 11ca01 (47:4a01)
	ld hl, $ce73
	ld de, $14
	ld a, $5
	ld c, a
.asm_11ca0a
	push hl
	ld a, $6
	ld b, a
	ld a, $7
.asm_11ca10
	ld [hli], a
	dec b
	jr nz, .asm_11ca10
	pop hl
	add hl, de
	dec c
	jr nz, .asm_11ca0a

; known jump sources: 11ccfe (47:4cfe)
Function11ca19: ; 11ca19 (47:4a19)
	ld hl, $cec9
	ld de, $14
	ld a, $6
	ld c, a
.asm_11ca22
	push hl
	ld a, $14
	ld b, a
	ld a, $7
.asm_11ca28
	ld [hli], a
	dec b
	jr nz, .asm_11ca28
	pop hl
	add hl, de
	dec c
	jr nz, .asm_11ca22
	callba Function104061
	ret
; 11ca38 (47:4a38)

INCBIN "baserom.gbc",$11ca38,$11ca5e - $11ca38

; known jump sources: 11c9e2 (47:49e2)
Function11ca5e: ; 11ca5e (47:4a5e)
	xor a
.asm_11ca5f
	push af
	call Function11ca6a
	pop af
	inc a
	cp $6
	jr nz, .asm_11ca5f
	ret

; known jump sources: 11c5ae (47:45ae), 11ca60 (47:4a60), 11cea7 (47:4ea7)
Function11ca6a: ; 11ca6a (47:4a6a)
	ld hl, $cd36
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld [hl], b
	inc hl
	ld [hl], b
	call Function11c95d
	ld de, $43bc
	call PlaceString
	ret

; known jump sources: 11c9c0 (47:49c0), 11cab0 (47:4ab0), 11cb63 (47:4b63)
Function11ca7f: ; 11ca7f (47:4a7f)
	push de
	ld de, $4fc6
	call Function11cfce
	ld de, $4fca
	call Function11cfce
	ld hl, $c5b9
	pop de
	call PlaceString
	ld hl, $c550
	ld de, $4a57
	call PlaceString
	call Function11ca01
	ld a, $1
	ld [$cd2a], a
	ld hl, $cd24
	res 4, [hl]
	call Function11cfb5
	ret

; no known jump sources
Function11caad: ; 11caad (47:4aad)
	ld de, $4b1c
	call Function11ca7f

; no known jump sources
Function11cab3: ; 11cab3 (47:4ab3)
	ld hl, $cd2a
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $1
	jr nz, .asm_11cace
	ld a, [de]
	and $2
	jr nz, .asm_11caf9
	ld a, [de]
	and $40
	jr nz, .asm_11cb12
	ld a, [de]
	and $80
	jr nz, .asm_11cb17
	ret
.asm_11cace
	call PlayClickSFX
	ld a, [hl]
	and a
	jr nz, .asm_11cafc
	ld a, [$cd35]
	and a
	jr z, .asm_11caf3
	cp $ff
	jr z, .asm_11caf3
	ld a, $ff
	ld [$cd35], a
	ld hl, $c5b9
	ld de, $4b31
	call PlaceString
	ld a, $1
	ld [$cd2a], a
	ret
.asm_11caf3
	ld hl, $cf63
	set 7, [hl]
	ret
.asm_11caf9
	call PlayClickSFX
.asm_11cafc
	ld hl, $cd24
	set 4, [hl]
	ld a, $4
	ld [$cf63], a
	ld a, [$cd35]
	cp $ff
	ret nz
	ld a, $1
	ld [$cd35], a
	ret
.asm_11cb12
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ret
.asm_11cb17
	ld a, [hl]
	and a
	ret nz
	inc [hl]
	ret
; 11cb1c (47:4b1c)

INCBIN "baserom.gbc",$11cb1c,$11cb52 - $11cb1c

; no known jump sources
Function11cb52: ; 11cb52 (47:4b52)
	ld hl, $4c01
	ld a, [$cfa9]
.asm_11cb58
	dec a
	jr z, .asm_11cb5f
	inc hl
	inc hl
	jr .asm_11cb58
.asm_11cb5f
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	call Function11ca7f

; no known jump sources
Function11cb66: ; 11cb66 (47:4b66)
	ld hl, $cd2a
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $1
	jr nz, .asm_11cb81
	ld a, [de]
	and $2
	jr nz, .asm_11cbd7
	ld a, [de]
	and $40
	jr nz, .asm_11cbeb
	ld a, [de]
	and $80
	jr nz, .asm_11cbf0
	ret
.asm_11cb81
	ld a, [hl]
	and a
	jr nz, .asm_11cbd4
	ld a, $4
	call GetSRAMBank
	ld hl, $a007
	ld a, [$cfa9]
	dec a
	sla a
	sla a
	ld c, a
	sla a
	add c
	ld c, a
	ld b, $0
	add hl, bc
	ld de, $cd36
	ld c, $c
.asm_11cba2
	ld a, [de]
	ld [hli], a
	inc de
	dec c
	jr nz, .asm_11cba2
	call CloseSRAM
	call PlayClickSFX
	ld de, $4fc6
	call Function11cfce
	ld hl, $4c7e
	ld a, [$cfa9]
.asm_11cbba
	dec a
	jr z, .asm_11cbc1
	inc hl
	inc hl
	jr .asm_11cbba
.asm_11cbc1
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	ld hl, $c5b9
	call PlaceString
	ld hl, $cf63
	inc [hl]
	inc hl
	ld a, $10
	ld [hl], a
	ret
.asm_11cbd4
	call PlayClickSFX
.asm_11cbd7
	ld de, $4fba
	call Function11cfce
	call Function11c38a
	ld hl, $cd24
	set 4, [hl]
	ld a, $4
	ld [$cf63], a
	ret
.asm_11cbeb
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ret
.asm_11cbf0
	ld a, [hl]
	and a
	ret nz
	inc [hl]
	ret

; no known jump sources
Function11cbf5: ; 11cbf5 (47:4bf5)
	call WaitSFX
	ld hl, $cf64
	dec [hl]
	ret nz
	dec hl
	set 7, [hl]
	ret
; 11cc01 (47:4c01)

INCBIN "baserom.gbc",$11cc01,$11ccef - $11cc01

; no known jump sources
Function11ccef: ; 11ccef (47:4cef)
	ld de, $4fc6
	call Function11cfce
	ld hl, $c5b9
	ld de, $4d10
	call PlaceString
	call Function11ca19
	call Function11cfb5

; no known jump sources
Function11cd04: ; 11cd04 (47:4d04)
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and a
	ret z
	ld a, $4
	ld [$cf63], a
	ret
; 11cd10 (47:4d10)

INCBIN "baserom.gbc",$11cd10,$11cd20 - $11cd10

; no known jump sources
Function11cd20: ; 11cd20 (47:4d20)
	call Function11c277
	ld de, $4fc6
	call Function11cfce
	ld hl, $c5b9
	ld a, [$cd2b]
	ld [$cd2c], a
	and a
	jr nz, .asm_11cd3a
	ld de, $4dc7
	jr .asm_11cd3d
.asm_11cd3a
	ld de, $4dd9
.asm_11cd3d
	call PlaceString
	ld hl, $c544
	ld de, $4df5
	call PlaceString
	call Function11cdaa
	ld hl, $cd24
	res 5, [hl]
	call Function11cfb5

; no known jump sources
Function11cd54: ; 11cd54 (47:4d54)
	ld hl, $cd2c
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $1
	jr nz, .asm_11cd6f
	ld a, [de]
	and $2
	jr nz, .asm_11cd73
	ld a, [de]
	and $40
	jr nz, .asm_11cd8b
	ld a, [de]
	and $80
	jr nz, .asm_11cd94
	ret
.asm_11cd6f
	ld a, [hl]
	ld [$cd2b], a
.asm_11cd73
	ld a, [$cd2b]
	and a
	jr nz, .asm_11cd7d
	ld a, $6
	jr .asm_11cd7f
.asm_11cd7d
	ld a, $15
.asm_11cd7f
	ld [$cf63], a
	ld hl, $cd24
	set 5, [hl]
	call PlayClickSFX
	ret
.asm_11cd8b
	ld a, [hl]
	and a
	ret z
	dec [hl]
	ld de, $4dc7
	jr .asm_11cd9b
.asm_11cd94
	ld a, [hl]
	and a
	ret nz
	inc [hl]
	ld de, $4dd9
.asm_11cd9b
	push de
	ld de, $4fc6
	call Function11cfce
	pop de
	ld hl, $c5b9
	call PlaceString
	ret

; known jump sources: 11cd49 (47:4d49)
Function11cdaa: ; 11cdaa (47:4daa)
	ld a, $2
	ld hl, $ce51
	ld bc, $78
	call ByteFill
	ld a, $7
	ld hl, $cec9
	ld bc, $50
	call ByteFill
	callba Function104061
	ret
; 11cdc7 (47:4dc7)

INCBIN "baserom.gbc",$11cdc7,$11ce0b - $11cdc7

; no known jump sources
Function11ce0b: ; 11ce0b (47:4e0b)
	call Function11c277
	ld hl, $c52d
	ld de, $4f79
	call PlaceString
	ld hl, $c5f5
	ld de, $462a
	call PlaceString
	call Function11c618
	ld hl, $cd24
	res 2, [hl]
	call Function11cfb5

; no known jump sources
Function11ce2b: ; 11ce2b (47:4e2b)
	ld a, [CreditsTimer] ; $cd22
	sla a
	sla a
	ld c, a
	ld b, $0
	ld hl, $4eb9
	add hl, bc
	ld de, hJoypadPressed ; $ffa3
	ld a, [de]
	and $8
	jr nz, .asm_11ce78
	ld a, [de]
	and $4
	jr nz, .asm_11ce86
	ld a, [de]
	and $1
	jr nz, .asm_11ce68
	ld a, [de]
	and $2
	jr nz, .asm_11ce82
	ld de, $ffa9
	ld a, [de]
	and $40
	jr nz, .asm_11ceb1
	ld a, [de]
	and $80
	jr nz, .asm_11ceaf
	ld a, [de]
	and $20
	jr nz, .asm_11ceae
	ld a, [de]
	and $10
	jr nz, .asm_11ceb0
	ret
.asm_11ce68
	ld a, [CreditsTimer] ; $cd22
	cp $2d
	jr c, .asm_11ce92
	sub $2d
	jr z, .asm_11cea4
	dec a
	jr z, .asm_11ce96
	jr .asm_11ce82
.asm_11ce78
	ld hl, $cd24
	set 0, [hl]
	ld a, $8
	ld [BGMapBuffer], a ; $cd20 (aliases: CreditsPos)
.asm_11ce82
	ld a, $4
	jr .asm_11ce98
.asm_11ce86
	ld a, [$cd2b]
	xor $1
	ld [$cd2b], a
	ld a, $6
	jr .asm_11ce98
.asm_11ce92
	ld a, $8
	jr .asm_11ce98
.asm_11ce96
	ld a, $13
.asm_11ce98
	ld [$cf63], a
	ld hl, $cd24
	set 2, [hl]
	call PlayClickSFX
	ret
.asm_11cea4
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	call Function11ca6a
	call PlayClickSFX
	ret
.asm_11ceae
	inc hl
.asm_11ceaf
	inc hl
.asm_11ceb0
	inc hl
.asm_11ceb1
	ld a, [hl]
	cp $ff
	ret z
	ld [CreditsTimer], a ; $cd22
	ret
; 11ceb9 (47:4eb9)

INCBIN "baserom.gbc",$11ceb9,$11cfb5 - $11ceb9

; known jump sources: 11c343 (47:4343), 11c35c (47:435c), 11c370 (47:4370), 11c387 (47:4387), 11c3ea (47:43ea), 11c53a (47:453a), 11c672 (47:4672), 11caa9 (47:4aa9), 11cd01 (47:4d01), 11cd51 (47:4d51), 11ce28 (47:4e28)
Function11cfb5: ; 11cfb5 (47:4fb5)
	ld hl, $cf63
	inc [hl]
	ret
; 11cfba (47:4fba)

INCBIN "baserom.gbc",$11cfba,$11cfce - $11cfba

; known jump sources: 11c359 (47:4359), 11c36b (47:436b), 11c37f (47:437f), 11c44b (47:444b), 11ca83 (47:4a83), 11ca89 (47:4a89), 11cbb1 (47:4bb1), 11cbda (47:4bda), 11ccf2 (47:4cf2), 11cd26 (47:4d26), 11cd9f (47:4d9f)
Function11cfce: ; 11cfce (47:4fce)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $14
	ld a, [de]
	inc de
	push af
	ld a, [de]
	inc de
	and a
.asm_11cfda
	jr z, .asm_11cfe0
	add hl, bc
	dec a
	jr .asm_11cfda
.asm_11cfe0
	pop af
	ld c, a
	ld b, $0
	add hl, bc
	push hl
	ld a, $79
	ld [hli], a
	ld a, [de]
	inc de
	dec a
	dec a
	jr z, .asm_11cff6
	ld c, a
	ld a, $7a
.asm_11cff2
	ld [hli], a
	dec c
	jr nz, .asm_11cff2
.asm_11cff6
	ld a, $7b
	ld [hl], a
	pop hl
	ld bc, $14
	add hl, bc
	ld a, [de]
	dec de
	dec a
	dec a
	jr z, .asm_11d022
	ld b, a
.asm_11d005
	push hl
	ld a, $7c
	ld [hli], a
	ld a, [de]
	dec a
	dec a
	jr z, .asm_11d015
	ld c, a
	ld a, $7f
.asm_11d011
	ld [hli], a
	dec c
	jr nz, .asm_11d011
.asm_11d015
	ld a, $7c
	ld [hl], a
	pop hl
	push bc
	ld bc, $14
	add hl, bc
	pop bc
	dec b
	jr nz, .asm_11d005
.asm_11d022
	ld a, $7d
	ld [hli], a
	ld a, [de]
	dec a
	dec a
	jr z, .asm_11d031
	ld c, a
	ld a, $7a
.asm_11d02d
	ld [hli], a
	dec c
	jr nz, .asm_11d02d
.asm_11d031
	ld a, $7e
	ld [hl], a
	ret

; known jump sources: 11c3c8 (47:43c8), 11c661 (47:4661)
Function11d035: ; 11d035 (47:5035)
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $14
	ld a, [de]
	inc de
	push af
	ld a, [de]
	inc de
	and a
.asm_11d041
	jr z, .asm_11d047
	add hl, bc
	dec a
	jr .asm_11d041
.asm_11d047
	pop af
	ld c, a
	ld b, $0
	add hl, bc
	push hl
	ld a, $79
	ld [hl], a
	pop hl
	push hl
	ld a, [de]
	dec a
	inc de
	ld c, a
	add hl, bc
	ld a, $7b
	ld [hl], a
	call Function11d0ac
	ld a, $7e
	ld [hl], a
	pop hl
	push hl
	call Function11d0ac
	ld a, $7d
	ld [hl], a
	pop hl
	push hl
	inc hl
	push hl
	call Function11d0ac
	pop bc
	dec de
	ld a, [de]
	cp $2
	jr z, .asm_11d082
	dec a
	dec a
.asm_11d078
	push af
	ld a, $7a
	ld [hli], a
	ld [bc], a
	inc bc
	pop af
	dec a
	jr nz, .asm_11d078
.asm_11d082
	pop hl
	ld bc, $14
	add hl, bc
	push hl
	ld a, [de]
	dec a
	ld c, a
	ld b, $0
	add hl, bc
	pop bc
	inc de
	ld a, [de]
	cp $2
	ret z
	push bc
	dec a
	dec a
	ld c, a
	ld b, a
	ld de, $14
.asm_11d09c
	ld a, $7c
	ld [hl], a
	add hl, de
	dec c
	jr nz, .asm_11d09c
	pop hl
.asm_11d0a4
	ld a, $7c
	ld [hl], a
	add hl, de
	dec b
	jr nz, .asm_11d0a4
	ret

; known jump sources: 11d05a (47:505a), 11d062 (47:5062), 11d06c (47:506c)
Function11d0ac: ; 11d0ac (47:50ac)
	ld a, [de]
	dec a
	ld bc, $14
.asm_11d0b1
	add hl, bc
	dec a
	jr nz, .asm_11d0b1
	ret

; no known jump sources
Function11d0b6: ; 11d0b6 (47:50b6)
	ld hl, $c
	add hl, bc
	ld a, [hl]
	ld e, a
	ld d, $0
	ld hl, $50c7
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_11d0c7: ; 11d0c7 (47:50c7)
	dw Function11d0dd
	dw Function11d0e9
	dw Function11d0f5
	dw Function11d10f
	dw Function11d134
	dw Function11d145
	dw Function11d156
	dw Function11d175
	dw Function11d1d7
	dw Function11d1d1
	dw Function11d1fc


; no known jump sources
Function11d0dd: ; 11d0dd (47:50dd)
	ld a, [BGMapBuffer] ; $cd20 (aliases: CreditsPos)
	sla a
	ld hl, $5208
	ld e, $1
	jr asm_11d11e

; no known jump sources
Function11d0e9: ; 11d0e9 (47:50e9)
	ld a, [$cd21]
	sla a
	ld hl, $521a
	ld e, $2
	jr asm_11d11e

; no known jump sources
Function11d0f5: ; 11d0f5 (47:50f5)
	ld hl, $52be
	ld a, [CreditsTimer] ; $cd22
	ld e, a
	ld d, $0
	add hl, de
	ld a, [hl]
	call Function3b3c
	ld a, [CreditsTimer] ; $cd22
	sla a
	ld hl, $523e
	ld e, $4
	jr asm_11d11e

; no known jump sources
Function11d10f: ; 11d10f (47:510f)
	ld a, $27
	call Function3b3c
	ld a, [$cd25]
	sla a
	ld hl, $529e
	ld e, $8

; known jump sources: 11d0e7 (47:50e7), 11d0f3 (47:50f3), 11d10d (47:510d), 11d143 (47:5143), 11d154 (47:5154)
asm_11d11e: ; 11d11e (47:511e)
	push de
	ld e, a
	ld d, $0
	add hl, de
	push hl
	pop de
	ld hl, $4
	add hl, bc
	ld a, [de]
	inc de
	ld [hli], a
	ld a, [de]
	ld [hl], a
	pop de
	ld a, e
	call Function11d2ee
	ret

; no known jump sources
Function11d134: ; 11d134 (47:5134)
	ld a, $27
	call Function3b3c
	ld a, [$cd2a]
	sla a
	ld hl, $52b6
	ld e, $10
	jr asm_11d11e

; no known jump sources
Function11d145: ; 11d145 (47:5145)
	ld a, $27
	call Function3b3c
	ld a, [$cd2c]
	sla a
	ld hl, $52ba
	ld e, $20
	jr asm_11d11e

; no known jump sources
Function11d156: ; 11d156 (47:5156)
	ld a, $2a
	call Function3b3c
	ld a, [$cd4a]
	sla a
	sla a
	sla a
	add $18
	ld hl, $4
	add hl, bc
	ld [hli], a
	ld a, $30
	ld [hl], a
	ld a, $1
	ld e, a
	call Function11d2ee
	ret

; no known jump sources
Function11d175: ; 11d175 (47:5175)
	ld a, [$cd4d]
	cp $4
	jr z, .asm_11d180
	ld a, $28
	jr .asm_11d182
.asm_11d180
	ld a, $26
.asm_11d182
	call Function3b3c
	ld a, [$cd4d]
	cp $4
	jr z, .asm_11d1b1
	ld a, [$cd4c]
	sla a
	sla a
	sla a
	add $20
	ld hl, $4
	add hl, bc
	ld [hli], a
	ld a, [$cd4d]
	sla a
	sla a
	sla a
	sla a
	add $48
	ld [hl], a
	ld a, $2
	ld e, a
	call Function11d2ee
	ret
.asm_11d1b1
	ld a, [$cd4c]
	sla a
	sla a
	sla a
	ld e, a
	sla a
	sla a
	add e
	add $18
	ld hl, $4
	add hl, bc
	ld [hli], a
	ld a, $8a
	ld [hl], a
	ld a, $2
	ld e, a
	call Function11d2ee
	ret

; no known jump sources
Function11d1d1: ; 11d1d1 (47:51d1)
	ld d, $98
	ld a, $2c
	jr asm_11d1db

; no known jump sources
Function11d1d7: ; 11d1d7 (47:51d7)
	ld d, $10
	ld a, $2b

; known jump sources: 11d1d5 (47:51d5)
asm_11d1db: ; 11d1db (47:51db)
	push de
	call Function3b3c
	ld a, [$cd4a]
	sla a
	sla a
	sla a
	ld e, a
	sla a
	add e
	add $40
	ld hl, $5
	add hl, bc
	ld [hld], a
	pop af
	ld [hl], a
	ld a, $4
	ld e, a
	call Function11d2ee
	ret

; no known jump sources
Function11d1fc: ; 11d1fc (47:51fc)
	ld a, $26
	call Function3b3c
	ld a, $8
	ld e, a
	call Function11d2ee
	ret
; 11d208 (47:5208)

INCBIN "baserom.gbc",$11d208,$11d2ee - $11d208

; known jump sources: 11d130 (47:5130), 11d171 (47:5171), 11d1ad (47:51ad), 11d1cd (47:51cd), 11d1f8 (47:51f8), 11d204 (47:5204)
Function11d2ee: ; 11d2ee (47:52ee)
	ld hl, $cd24
	and [hl]
	jr nz, .asm_11d316
	ld a, e
	ld hl, $cd23
	and [hl]
	jr z, .asm_11d30f
	ld hl, $e
	add hl, bc
	ld a, [hl]
	and a
	jr z, .asm_11d305
	dec [hl]
	ret
.asm_11d305
	ld a, $0
	ld [hld], a
	ld a, $1
	xor [hl]
	ld [hl], a
	and a
	jr nz, .asm_11d316
.asm_11d30f
	ld hl, $7
	add hl, bc
	xor a
	ld [hl], a
	ret
.asm_11d316
	ld hl, $5
	add hl, bc
	ld a, $b0
	sub [hl]
	ld hl, $7
	add hl, bc
	ld [hl], a
	ret

Function11d323: ; 11d323
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $533a
	ld de, Unkn1Pals
	ld bc, $0080
	call CopyBytes
	pop af
	ld [rSVBK], a
	ret
; 11d33a

INCBIN "baserom.gbc",$11d33a,$11d3ba - $11d33a

Function11d3ba: ; 11d3ba
	ld a, [rSVBK]
	push af
	ld hl, BattleMonSpclDef
	ld a, $0
	ld [$cd2d], a
	ld [hli], a
	ld a, $d8
	ld [$cd2e], a
	ld [hl], a
	ld a, $fe
	ld [$cd2f], a
	ld a, $54
	ld [$cd30], a
	ld a, $a8
	ld [$cd31], a
	ld a, $c6
	ld [$cd32], a
	ld a, $4a
	ld [$cd33], a
	ld a, $c6
	ld [$cd34], a
	ld hl, $723c
	ld a, $2d

Function11d3ef: ; 11d3ef
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	push hl
	ld hl, Unkn1Pals
	add hl, de
	ld a, [$cd2d]
	ld e, a
	ld a, [$cd2e]
	ld d, a
	push bc
.asm_11d406
	ld a, $3
	ld [rSVBK], a
	ld a, [hli]
	push af
	ld a, $5
	ld [rSVBK], a
	pop af
	ld [de], a
	inc de
	ld a, $3
	ld [rSVBK], a
	ld a, [hli]
	push af
	ld a, $5
	ld [rSVBK], a
	pop af
	ld [de], a
	inc de
	dec bc
	ld a, c
	or b
	jr nz, .asm_11d406
	ld a, [$cd2f]
	ld l, a
	ld a, [$cd30]
	ld h, a
	ld a, [hli]
	ld c, a
	ld a, [hli]
	ld b, a
	ld a, l
	ld [$cd2f], a
	ld a, h
	ld [$cd30], a
	push bc
	pop hl
	ld c, $0
.asm_11d43d
	ld a, [hl]
	cp $ff
	jr z, .asm_11d453
	call Function11d493
	jr nz, .asm_11d44a
	inc hl
	jr .asm_11d43d

.asm_11d44a
	ld a, [hli]
	ld [de], a
	inc de
	xor a
	ld [de], a
	inc de
	inc c
	jr .asm_11d43d

.asm_11d453
	pop hl
	ld b, $0
	add hl, bc
	push hl
	pop bc
	ld a, [$cd31]
	ld l, a
	ld a, [$cd32]
	ld h, a
	ld a, c
	ld [hli], a
	ld a, b
	ld [hli], a
	ld a, l
	ld [$cd31], a
	ld a, h
	ld [$cd32], a
	ld a, [$cd33]
	ld l, a
	ld a, [$cd34]
	ld h, a
	ld a, e
	ld [$cd2d], a
	ld [hli], a
	ld a, d
	ld [$cd2e], a
	ld [hli], a
	ld a, l
	ld [$cd33], a
	ld a, h
	ld [$cd34], a
	pop hl
	pop af
	dec a
	jr z, .asm_11d48f
	jp Function11d3ef

.asm_11d48f
	pop af
	ld [rSVBK], a
	ret
; 11d493

Function11d493: ; 11d493
	push hl
	push bc
	push de
	dec a
	ld hl, rSVBK
	ld e, $1
	ld [hl], e
	call CheckSeenMon
	ld hl, rSVBK
	ld e, $5
	ld [hl], e
	pop de
	pop bc
	pop hl
	ret
; 11d4aa

Function11d4aa: ; 11d4aa
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld hl, $5aac
	ld bc, $7220
	xor a
	ld [$cd2d], a
	inc a
	ld [$cd2e], a
	ld a, $e
.asm_11d4c1
	push af
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	push hl
	ld hl, $0005
	add hl, de
	ld a, [bc]
	inc bc
	inc bc
	push bc
.asm_11d4cf
	push af
	push hl
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	ld hl, Unkn1Pals
	add hl, de
	ld a, [$cd2d]
	ld [hli], a
	inc a
	ld [$cd2d], a
	ld a, [$cd2e]
	ld [hl], a
	pop hl
	ld de, $0008
	add hl, de
	pop af
	dec a
	jr nz, .asm_11d4cf
	ld hl, $cd2d
	xor a
	ld [hli], a
	inc [hl]
	pop bc
	pop hl
	pop af
	dec a
	jr nz, .asm_11d4c1
	pop af
	ld [rSVBK], a
	ret
; 11d4fe

INCBIN "baserom.gbc",$11d4fe,$11f686 - $11d4fe



SECTION "bank5B", ROMX, BANK[$5B]

INCBIN "baserom.gbc",$16c000,$16d421 - $16c000

Function16d421: ; 16d421
	ld de, $4fc1
	ld hl, VTiles2
	ld bc, $5b46
	call Get2bpp
	ret
; 16d42e

Function16d42e: ; 16d42e
	ld hl, $5465
	ld de, TileMap
	ld bc, $0168
	call CopyBytes
	ret
; 16d43b

INCBIN "baserom.gbc",$16d43b,$16d61d - $16d43b

Function16d61d: ; 16d61d
	ld h, d
	ld l, e
	push bc
	push hl
	call Function16d640
	pop hl
	pop bc
	ld de, $0939
	add hl, de
	inc b
	inc b
	inc c
	inc c
	ld a, $7
.asm_16d630
	push bc
	push hl
.asm_16d632
	ld [hli], a
	dec c
	jr nz, .asm_16d632
	pop hl
	ld de, $0014
	add hl, de
	pop bc
	dec b
	jr nz, .asm_16d630
	ret
; 16d640

Function16d640: ; 16d640
	push hl
	ld a, $30
	ld [hli], a
	inc a
	call Function16d66d
	inc a
	ld [hl], a
	pop hl
	ld de, $0014
	add hl, de
.asm_16d64f
	push hl
	ld a, $33
	ld [hli], a
	ld a, $7f
	call Function16d66d
	ld [hl], $34
	pop hl
	ld de, $0014
	add hl, de
	dec b
	jr nz, .asm_16d64f
	ld a, $35
	ld [hli], a
	ld a, $36
	call Function16d66d
	ld [hl], $37
	ret
; 16d66d

Function16d66d: ; 16d66d
	ld d, c
.asm_16d66e
	ld [hli], a
	dec d
	jr nz, .asm_16d66e
	ret
; 16d673

Function16d673: ; 16d673
	call Function16d696
	call Function16d6ae
	callba Function49856
	callba Functionfb60d
	ld hl, $c5fe
	ld de, $568f
	call PlaceString
	ret
; 16d68f

INCBIN "baserom.gbc",$16d68f,$16d696 - $16d68f

Function16d696: ; 16d696
	call Function16d421
	ret
; 16d69a


Function16d69a: ; 16d69a
	ld de, $52c1
	ld hl, $9760
	ld bc, $5b08
	call Get2bpp
	ret
; 16d6a7

Function16d6a7: ; 16d6a7
	callba Function49811
	ret
; 16d6ae

Function16d6ae: ; 16d6ae
	call Function16d42e
	ld hl, $55cd
	ld de, TileMap
	ld bc, $0028
	call CopyBytes
	ld hl, $55f5
	ld de, $c5e0
	ld bc, $0028
	call CopyBytes
	ret
; 16d6ca

Function16d6ca: ; 16d6ca
	call Function16d61d
	ret
; 16d6ce

Function16d6ce: ; 16d6ce
	call Function1d6e
	call Function16d6e1
	callba Function87d
	call Function1d7d
	call Function3200
	ret
; 16d6e1

Function16d6e1: ; 16d6e1
	ld hl, $c56c
	ld b, $1
	ld c, $a
	ld a, $10
	call Predef
	ld hl, $c581
	ld de, $5701
	call PlaceString
	call WaitBGMap
	call Function3200
	ld c, $32
	jp DelayFrames
; 16d701

INCBIN "baserom.gbc",$16d701,$16d70c - $16d701

Function16d70c: ; 16d70c
	call Function16d725
	call Function16d713
	ret
; 16d713

Function16d713: ; 16d713
	push bc
	push af
	ld a, [$ffa9]
	and $f0
	ld b, a
	ld a, [hJoyPressed]
	and $f
	or b
	ld b, a
	pop af
	ld a, b
	pop bc
	ld d, a
	ret
; 16d725

Function16d725: ; 16d725
	ld hl, $cfa6
	res 7, [hl]
	ld a, [hBGMapMode]
	push af
	call Function16d734
	pop af
	ld [hBGMapMode], a
	ret
; 16d734

Function16d734: ; 16d734
.asm_16d734
	call Function16d77a
	call Function16d759
	call Function16d76a
	jr nc, .asm_16d758
	callba Function24270
	jr c, .asm_16d758
	ld a, [$cfa5]
	bit 7, a
	jr nz, .asm_16d758
	call Function16d713
	ld b, a
	ld a, [$cfa8]
	and b
	jr z, .asm_16d734

.asm_16d758
	ret
; 16d759

Function16d759: ; 16d759
	ld a, [hOAMUpdate]
	push af
	ld a, $1
	ld [hOAMUpdate], a
	call WaitBGMap
	pop af
	ld [hOAMUpdate], a
	xor a
	ld [hBGMapMode], a
	ret
; 16d76a

Function16d76a: ; 16d76a
.asm_16d76a
	call RTC
	call Function16d7e7
	ret c
	ld a, [$cfa5]
	bit 7, a
	jr z, .asm_16d76a
	and a
	ret
; 16d77a

Function16d77a: ; 16d77a
	ld hl, $cfac
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld a, [hl]
	cp $1f
	jr nz, .asm_16d792
	ld a, [$cfab]
	ld [hl], a
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], a
	pop bc
	pop hl

.asm_16d792
	ld a, [$cfa1]
	ld b, a
	ld a, [$cfa2]
	ld c, a
	call GetTileCoord
	ld a, [$cfa7]
	swap a
	and $f
	ld c, a
	ld a, [$cfa9]
	ld b, a
	xor a
	dec b
	jr z, .asm_16d7b1
.asm_16d7ad
	add c
	dec b
	jr nz, .asm_16d7ad

.asm_16d7b1
	ld c, $14
	call AddNTimes
	ld a, [$cfa7]
	and $f
	ld c, a
	ld a, [$cfaa]
	ld b, a
	xor a
	dec b
	jr z, .asm_16d7c8
.asm_16d7c4
	add c
	dec b
	jr nz, .asm_16d7c4

.asm_16d7c8
	ld c, a
	add hl, bc
	ld a, [hl]
	cp $1f
	jr z, .asm_16d7de
	ld [$cfab], a
	ld [hl], $1f
	push hl
	push bc
	ld bc, $000b
	add hl, bc
	ld [hl], $1f
	pop bc
	pop hl

.asm_16d7de
	ld a, l
	ld [$cfac], a
	ld a, h
	ld [$cfad], a
	ret
; 16d7e7

Function16d7e7: ; 16d7e7
	ld a, [$cfa5]
	bit 6, a
	jr z, .asm_16d7f4
	callba Function8cf62

.asm_16d7f4
	call Functiona57
	call Function16d713
	and a
	ret z
	scf
	ret
; 16d7fe


SECTION "bank5C", ROMX, BANK[$5C]

INCBIN "baserom.gbc",$170000,$1700b0 - $170000

Function1700b0: ; 1700b0
	call Function17021e
	callba Function118121
	ret
; 1700ba

Function1700ba: ; 1700ba
	call Function17021e
	callba Function11811a
	ret
; 1700c4

INCBIN "baserom.gbc",$1700c4,$170114 - $1700c4

Function170114: ; 170114
	call Function17021e
	call Function170121
	callba Function11805f
	ret
; 170121

Function170121: ; 170121
	ld a, $5
	call GetSRAMBank
	ld hl, $a948
	ld de, EnemyMoveAnimation
	ld bc, $00f6
	call CopyBytes
	call CloseSRAM
	call Function170c8b
	ret
; 170139

INCBIN "baserom.gbc",$170139,$170215 - $170139

Function170215: ; 170215
	xor a
	ld [$cf63], a
	call Function17022c
	ret
; 17021d

Function17021d: ; 17021d
	ret
; 17021e

Function17021e: ; 17021e
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ret
; 17022c

Function17022c: ; 17022c
.asm_17022c
	call Function17023a
	call DelayFrame
	ld a, [$cf63]
	cp $1
	jr nz, .asm_17022c
	ret
; 17023a

Function17023a: ; 17023a
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $4249
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 170249

INCBIN "baserom.gbc",$170249,$1704e1 - $170249

Function1704e1: ; 1704e1
	call SpeechTextBox
	call FadeToMenu
	call Function17021e
	call Function1704f1
	call Function2b3c
	ret
; 1704f1

Function1704f1: ; 1704f1
	call WhiteBGMap
	call ClearSprites
	call Functionfdb
.asm_1704fa
	call Functiona57
	ld a, [$cf63]
	bit 7, a
	jr nz, .asm_17050f
	call Function170510
	callba Function104061
	jr .asm_1704fa

.asm_17050f
	ret
; 170510

Function170510: ; 170510
	ld a, [$cf63]
	ld e, a
	ld d, $0
	ld hl, $451f
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 17051f

INCBIN "baserom.gbc",$17051f,$170687 - $17051f

Function170687: ; 170687
	ld a, [ScriptVar]
	ld e, a
	ld d, $0
	ld hl, $4696
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 170696


; no known jump sources
Jumptable_170696: ; 170696 (5c:4696)
	dw Function17075f
	dw Function170788
	dw Function170778
	dw Function170799
	dw Function17079d
	dw Function1707ac
	dw Function1707f4
	dw Function170868
	dw Function170881
	dw Function17089a
	dw Function1708b1
	dw Function1708b9
	dw Function1708c8
	dw Function1708f0
	dw Function17093c
	dw Function1709aa
	dw Function1709bb
	dw Function170a9c
	dw Function170aa0
	dw Function170aaf
	dw Function170abe
	dw Function170ad7
	dw Function170807
	dw Function17081d
	dw Function170ae8
	dw Function170b16
	dw Function1706d6
	dw Function1706ee
	dw Function17071b
	dw Function170729
	dw Function17073e
	dw Function170737


; no known jump sources
Function1706d6: ; 1706d6 (5c:46d6)
	ld a, $1
	call GetSRAMBank
	ld a, $ff
	ld hl, $be48
	ld bc, $7
	call ByteFill
	xor a
	ld [$be46], a
	call CloseSRAM
	ret

; no known jump sources
Function1706ee: ; 1706ee (5c:46ee)
	ld a, $1
	call GetSRAMBank
	ld a, [$be50]
	call CloseSRAM
	ld [ScriptVar], a ; $c2dd
	ld hl, NumItems ; $d892 (aliases: TMsHMsEnd)
	ld a, [hli]
	cp $14
	ret c
	ld b, $14
	ld a, [ScriptVar] ; $c2dd
	ld c, a
.asm_170709
	ld a, [hli]
	cp c
	jr nz, .asm_170711
	ld a, [hl]
	cp $5f
	ret c
.asm_170711
	inc hl
	dec b
	jr nz, .asm_170709
	ld a, $12
	ld [ScriptVar], a ; $c2dd
	ret

; no known jump sources
Function17071b: ; 17071b (5c:471b)
	ld a, $1
	call GetSRAMBank
	ld a, $3
	ld [$be45], a
	call CloseSRAM
	ret

; no known jump sources
Function170729: ; 170729 (5c:4729)
	ld a, $1
	call GetSRAMBank
	ld a, $4
	ld [$be45], a
	call CloseSRAM
	ret

; no known jump sources
Function170737: ; 170737 (5c:4737)
	callba Function14dbb
	ret

; known jump sources: 17074f (5c:474f)
Function17073e: ; 17073e (5c:473e)
	call Random
	ld a, [hRandomAdd] ; $ff00+$e1
	and $7
	cp $6
	jr c, .asm_17074b
	sub $6
.asm_17074b
	add $1a
	cp $1e
	jr z, Function17073e
	push af
	ld a, $1
	call GetSRAMBank
	pop af
	ld [$be50], a
	call CloseSRAM
	ret

; no known jump sources
Function17075f: ; 17075f (5c:475f)
	call Function17089a
	ld a, [ScriptVar] ; $c2dd
	and a
	ret z
	ld a, $1
	call GetSRAMBank
	ld a, [$be4f]
	and $2
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	ret

; no known jump sources
Function170778: ; 170778 (5c:4778)
	ld hl, $be45
	ld a, $1
	call GetSRAMBank
	ld a, [hl]
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	ret

; no known jump sources
Function170788: ; 170788 (5c:4788)
	ld a, $1
	call GetSRAMBank
	ld a, [$be4f]
	or $2
	ld [$be4f], a
	call CloseSRAM
	ret

; no known jump sources
Function170799: ; 170799 (5c:4799)
	ld c, $1
	jr asm_17079f

; no known jump sources
Function17079d: ; 17079d (5c:479d)
	ld c, $0
asm_17079f: ; 17079f (5c:479f)
	ld a, $1
	call GetSRAMBank
	ld a, c
	ld [$be45], a
	call CloseSRAM
	ret

; no known jump sources
Function1707ac: ; 1707ac (5c:47ac)
	ld a, $5
	call GetSRAMBank
	ld a, [$aa8c]
	ld b, a
	ld a, [$be46]
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	and a
	ret z
	ld a, b
	cp $2
	jr nc, .asm_1707ef
	push bc
	call UpdateTime
	pop bc
	ld a, $5
	call GetSRAMBank
	ld a, [$aa8b]
	call CloseSRAM
	ld c, a
	ld a, [CurDay] ; $d4cb
	sub c
	jr c, .asm_1707e5
	cp $8
	jr nc, .asm_1707ef
	ld a, b
	and a
	jr nz, .asm_1707ef
	ret
.asm_1707e5
	ld hl, CurDay ; $d4cb
	ld a, $8c
	sub c
	add [hl]
	cp $8
	ret c
.asm_1707ef
	ld a, $8
	ld [ScriptVar], a ; $c2dd

; no known jump sources
Function1707f4: ; 1707f4 (5c:47f4)
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$be46], a
	ld [$aa8b], a
	ld [$aa8c], a
	call CloseSRAM
	ret

; no known jump sources
Function170807: ; 170807 (5c:4807)
	call UpdateTime
	ld a, $5
	call GetSRAMBank
	ld a, [CurDay] ; $d4cb
	ld [$b2f9], a
	xor a
	ld [$b2fa], a
	call CloseSRAM
	ret

; no known jump sources
Function17081d: ; 17081d (5c:481d)
	xor a
	ld [ScriptVar], a ; $c2dd
	ld a, $5
	call GetSRAMBank
	ld a, [$b2f9]
	ld c, a
	ld a, [$b2fa]
	ld b, a
	call CloseSRAM
	cp $2
	jr nc, .asm_170853
	push bc
	call UpdateTime
	pop bc
	ld a, [CurDay] ; $d4cb
	sub c
	jr c, .asm_170849
	cp $b
	jr nc, .asm_170853
	ld a, b
	and a
	jr nz, .asm_170853
	ret
.asm_170849
	ld hl, CurDay ; $d4cb
	ld a, $8c
	sub c
	add [hl]
	cp $b
	ret c
.asm_170853
	ld a, $1
	ld [ScriptVar], a ; $c2dd
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$b2f9], a
	ld [$b2fa], a
	call CloseSRAM
	ret

; no known jump sources
Function170868: ; 170868 (5c:4868)
	ld a, $1
	call GetSRAMBank
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $3
	ld [rSVBK], a ; $ff00+$70
	ld a, [$d800]
	ld [$be47], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	call CloseSRAM
	ret

; no known jump sources
Function170881: ; 170881 (5c:4881)
	ld a, $1
	call GetSRAMBank
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $3
	ld [rSVBK], a ; $ff00+$70
	ld a, [$be47]
	ld [$d800], a
	pop af
	ld [rSVBK], a ; $ff00+$70
	call CloseSRAM
	ret

Function17089a: ; 17089a
	ld a, [$cfcd]
	and a
	jr z, .asm_1708ad
	callba Function14bcb
	jr z, .asm_1708ab
	xor a
	jr .asm_1708ad

.asm_1708ab
	ld a, $1

.asm_1708ad
	ld [ScriptVar], a
	ret
; 1708b1


; no known jump sources
Function1708b1: ; 1708b1 (5c:48b1)
	xor a
	ld [MusicFade], a ; $c2a7
	call MaxVolume
	ret

; no known jump sources
Function1708b9: ; 1708b9 (5c:48b9)
	ld a, $1
	call GetSRAMBank
	ld a, [$be3c]
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	ret

; no known jump sources
Function1708c8: ; 1708c8 (5c:48c8)
	call UpdateTime
	ld a, $5
	call GetSRAMBank
	ld a, [CurDay] ; $d4cb
	ld [$aa8b], a
	xor a
	ld [$aa8c], a
	ld a, [$aa5d]
	cp $2
	jr nc, .asm_1708ec
	ld a, [CurDay] ; $d4cb
	ld [$aa48], a
	ld a, $1
	ld [$aa47], a
.asm_1708ec
	call CloseSRAM
	ret

; no known jump sources
Function1708f0: ; 1708f0 (5c:48f0)
	xor a
	ld [ScriptVar], a ; $c2dd
	call UpdateTime
	ld a, $5
	call GetSRAMBank
	ld a, [$aa48]
	ld c, a
	ld a, [$aa47]
	call CloseSRAM
	and a
	ret z
	ld hl, CurDay ; $d4cb
	ld a, c
	cp [hl]
	jr nz, Function170923
	ld a, $5
	call GetSRAMBank
	ld a, [$aa5d]
	call CloseSRAM
	cp $5
	ret c
	ld a, $1
	ld [ScriptVar], a ; $c2dd
	ret


Function170923: ; 170923
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$aa48], a
	ld [$aa47], a
	ld hl, $aa5d
	ld bc, $0011
	call ByteFill
	call CloseSRAM
	ret
; 17093c


; no known jump sources
Function17093c: ; 17093c (5c:493c)
	xor a
	ld [ScriptVar], a ; $c2dd
	ld a, $81
	ld [CurItem], a ; $d106
	ld hl, NumItems ; $d892 (aliases: TMsHMsEnd)
	call CheckItem
	ret nc
	ld a, [PartyCount] ; $dcd7
	ld b, $0
	ld c, a
	ld hl, PartySpecies ; $dcd8
.asm_170955
	ld a, [hli]
	cp $fd
	jr nz, .asm_17099f
	push hl
	ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT)
	ld de, $6
	ld a, b
	and a
	jr z, .asm_170969
.asm_170965
	add hl, de
	dec a
	jr nz, .asm_170965
.asm_170969
	ld de, $49a4
	ld a, $6
.asm_17096e
	push af
	ld a, [de]
	inc de
	cp [hl]
	inc hl
	jr nz, .asm_17099d
	pop af
	dec a
	jr nz, .asm_17096e
	dec hl
	dec hl
	dec hl
	dec hl
	ld a, $50
	ld [hli], a
	ld [hli], a
	pop hl
	ld a, $81
	ld [CurItem], a ; $d106
	ld a, $1
	ld [$d10c], a
	ld a, $ff
	ld [$d107], a
	ld hl, NumItems ; $d892 (aliases: TMsHMsEnd)
	call TossItem
	ld a, $1
	ld [ScriptVar], a ; $c2dd
	ret
.asm_17099d
	pop af
	pop hl
.asm_17099f
	inc b
	dec c
	jr nz, .asm_170955
	ret
; 1709a4 (5c:49a4)

INCBIN "baserom.gbc",$1709a4,$1709aa - $1709a4

; no known jump sources
Function1709aa: ; 1709aa (5c:49aa)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $3
	ld [rSVBK], a ; $ff00+$70
	ld a, [$d090]
	ld [ScriptVar], a ; $c2dd
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Function1709bb: ; 1709bb (5c:49bb)
	xor a
	ld [ScriptVar], a ; $c2dd
	ld a, $5
	call GetSRAMBank
	ld a, [$a800]
	call CloseSRAM
	cp $6
	jr nc, .asm_1709da
	ld e, a
	ld d, $0
	ld hl, $49e7
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
.asm_1709da
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$a800], a
	call CloseSRAM
	ret
; 1709e7 (5c:49e7)

INCBIN "baserom.gbc",$1709e7,$170a9c - $1709e7

; no known jump sources
Function170a9c: ; 170a9c (5c:4a9c)
	ld c, $0
	jr asm_170aa2

; no known jump sources
Function170aa0: ; 170aa0 (5c:4aa0)
	ld c, $1
asm_170aa2: ; 170aa2 (5c:4aa2)
	ld a, $5
	call GetSRAMBank
	ld a, c
	ld [$aa8d], a
	call CloseSRAM
	ret

; no known jump sources
Function170aaf: ; 170aaf (5c:4aaf)
	ld a, $5
	call GetSRAMBank
	ld a, [$aa8d]
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	ret

; no known jump sources
Function170abe: ; 170abe (5c:4abe)
	call Function17089a
	ld a, [ScriptVar] ; $c2dd
	and a
	ret z
	ld a, $1
	call GetSRAMBank
	ld a, [$be4f]
	and $1
	ld [ScriptVar], a ; $c2dd
	call CloseSRAM
	ret

; no known jump sources
Function170ad7: ; 170ad7 (5c:4ad7)
	ld a, $1
	call GetSRAMBank
	ld a, [$be4f]
	or $1
	ld [$be4f], a
	call CloseSRAM
	ret

; no known jump sources
Function170ae8: ; 170ae8 (5c:4ae8)
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld c, $a
	call SimpleDivide
	ld a, b
	ld [$cd4f], a
	xor a
	ld [ScriptVar], a ; $c2dd
	callba Function119d93
	ret nc
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld [ScriptVar], a ; $c2dd
	ret

; no known jump sources
Function170b16: ; 170b16 (5c:4b16)
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld c, $a
	call SimpleDivide
	ld a, b
	ld [$cd4f], a
	xor a
	ld [ScriptVar], a ; $c2dd
	callba Function119dd1
	ret nc
	ld a, $5
	call GetSRAMBank
	ld a, [$b2fb]
	call CloseSRAM
	ld [ScriptVar], a ; $c2dd
	ret

Function170b44: ; 170b44
	callba Function1f8000
	ld a, [rSVBK]
	push af
	ld a, $3
	ld [rSVBK], a
	ld hl, $d10a
	ld a, [hl]
	dec a
	ld c, a
	ld b, $0
	pop af
	ld [rSVBK], a
	ld hl, $4b90
	add hl, bc
	ld a, [hl]
	ld [$cd49], a
	ld a, [ScriptVar]
	dec a
	sla a
	ld e, a
	sla a
	sla a
	sla a
	ld c, a
	ld b, $0
	ld d, $0
	ld hl, MapObjects
	add hl, bc
	inc hl
	ld a, [$cd49]
	ld [hl], a
	ld hl, UsedSprites
	add hl, de
	ld [hli], a
	ld [$ffbd], a
	ld a, [hl]
	ld [$ffbe], a
	callba Function143c8
	ret
; 170b90

INCBIN "baserom.gbc",$170b90,$170bd2 - $170b90

Function170bd2: ; 170bd2
	ret
; 170bd3

Function170bd3: ; 170bd3
	callba Function8b201
	jr c, .asm_170bde
	xor a
	jr .asm_170be0

.asm_170bde
	ld a, $1

.asm_170be0
	ld [ScriptVar], a
	ret
; 170be4

INCBIN "baserom.gbc",$170be4,$170c8b - $170be4

Function170c8b: ; 170c8b
	ld hl, LastPlayerCounterMove
	ld b, $5
.asm_170c90
	ld a, [hl]
	xor $ff
	ld [hli], a
	dec b
	jr nz, .asm_170c90
	ret
; 170c98

INCBIN "baserom.gbc",$170c98,$1719c8 - $170c98

; no known jump sources
Function1719c8: ; 1719c8 (5c:59c8)
	ld a, [$FF00+$aa]
	push af
	ld a, $1
	ld [$FF00+$aa], a
	call Function1719d6
	pop af
	ld [$FF00+$aa], a
	ret

; known jump sources: 1719cf (5c:59cf)
Function1719d6: ; 1719d6 (5c:59d6)
	callba Function1183cb
	call Function1719ed
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	call Function171a11
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; known jump sources: 1719dc (5c:59dc)
Function1719ed: ; 1719ed (5c:59ed)
	xor a
	ld [$cd49], a
	ld [$cd4a], a
	dec a
	ld [$cd4b], a
	call WhiteBGMap
	call ClearSprites
	callba Function171d2b
	callba Function104061
	callba Function8cf53
	ret

; known jump sources: 1719e6 (5c:59e6), 171a2a (5c:5a2a)
Function171a11: ; 171a11 (5c:5a11)
	call Functiona57
	ld a, [$cd49]
	bit 7, a
	jr nz, .asm_171a2c
	call Function171a36
	callba Function8cf69
	callba Function104061
	jr Function171a11
.asm_171a2c
	callba Function8cf53
	call ClearSprites
	ret

; known jump sources: 171a1b (5c:5a1b)
Function171a36: ; 171a36 (5c:5a36)
	ld a, [$cd49]
	ld e, a
	ld d, $0
	ld hl, $5a45
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

; no known jump sources
Jumptable_171a45: ; 171a45 (5c:5a45)
	dw Function171a95
	dw Function171ac9
	dw Function171a5d
	dw Function171ad7
	dw Function171a5d
	dw Function171aec
	dw Function171b4b
	dw Function171b85
	dw Function171bcc
	dw Function171c2c
	dw Function171c39
	dw Function171c41


; no known jump sources
Function171a5d: ; 171a5d (5c:5a5d)
	ld a, [$c821]
	bit 1, a
	jr nz, .asm_171a6a
	bit 0, a
	ret nz
	jp Function171c66
.asm_171a6a
	ld a, $0
	call Function3e32
	ld [$c300], a
	ld a, l
	ld [$c301], a
	ld a, h
	ld [$c302], a
	ld a, $a
	call Function3e32
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	callba Function118452
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld a, $a
	ld [$cd49], a
	ret

; no known jump sources
Function171a95: ; 171a95 (5c:5a95)
	callba Function171ccd
	ld hl, $c542
	ld de, $5aa7
	call PlaceString
	jp Function171c66
; 171aa7 (5c:5aa7)

INCBIN "baserom.gbc",$171aa7,$171ac9 - $171aa7

; no known jump sources
Function171ac9: ; 171ac9 (5c:5ac9)
	ld de, $cd81
	ld hl, $5c
	ld a, $2
	call Function3e32
	jp Function171c66

; no known jump sources
Function171ad7: ; 171ad7 (5c:5ad7)
	xor a
	ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld bc, $66
	call ByteFill
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
	ld a, $c
	call Function3e32
	jp Function171c66

; no known jump sources
Function171aec: ; 171aec (5c:5aec)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $1
	ld [rSVBK], a ; $ff00+$70
	callba Function118452
	pop af
	ld [rSVBK], a ; $ff00+$70
	ld hl, $c51a
	ld a, $8
.asm_171b01
	push af
	push hl
	xor a
	ld bc, $10
	call ByteFill
	pop hl
	ld de, $14
	add hl, de
	pop af
	dec a
	jr nz, .asm_171b01
	ld hl, $c52e
	ld a, $3
	ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct)
.asm_171b1b
	push af
	push hl
	ld a, [de]
	and a
	jr z, .asm_171b34
	ld a, [$cd4b]
	inc a
	ld [$cd4b], a
	push hl
	call Function171b42
	pop hl
	ld bc, $ffec
	add hl, bc
	call Function171b42
.asm_171b34
	pop hl
	ld bc, $14
	add hl, bc
	add hl, bc
	add hl, bc
	pop af
	dec a
	jr nz, .asm_171b1b
	jp Function171c66

; known jump sources: 171b29 (5c:5b29), 171b31 (5c:5b31), 171b49 (5c:5b49)
Function171b42: ; 171b42 (5c:5b42)
	ld a, [de]
	inc de
	and a
	ret z
	sub $20
	ld [hli], a
	jr Function171b42

; no known jump sources
Function171b4b: ; 171b4b (5c:5b4b)
	ld de, $4010
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $8
	ld [hl], a
	ld de, $4098
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $9
	ld [hl], a
	ld de, $8a70
	ld a, $1d
	call Function3b2a
	ld hl, $c
	add hl, bc
	ld a, $a
	ld [hl], a
	ld a, $4
	ld [$cd23], a
	ld a, $8
	ld [$cd24], a
	jp Function171c66

; no known jump sources
Function171b85: ; 171b85 (5c:5b85)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jp nz, Function171b9f
	ld a, [hl]
	and $1
	jp nz, Function171bbd
	ld a, [hl]
	and $40
	jr nz, asm_171ba5
	ld a, [hl]
	and $80
	jr nz, asm_171baf
	ret

; known jump sources: 171b8b (5c:5b8b)
Function171b9f: ; 171b9f (5c:5b9f)
	ld a, $80
	ld [$cd49], a
	ret
asm_171ba5: ; 171ba5 (5c:5ba5)
	ld a, [$cd4a]
	and a
	ret z
	dec a
	ld [$cd4a], a
	ret
asm_171baf: ; 171baf (5c:5baf)
	ld a, [$cd4b]
	ld c, a
	ld a, [$cd4a]
	cp c
	ret z
	inc a
	ld [$cd4a], a
	ret

; known jump sources: 171b91 (5c:5b91)
Function171bbd: ; 171bbd (5c:5bbd)
	call PlayClickSFX
	ld a, $8
	ld [$cd23], a
	xor a
	ld [$cd24], a
	jp Function171c66

; no known jump sources
Function171bcc: ; 171bcc (5c:5bcc)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and $2
	jp nz, Function171bdc
	ld a, [hl]
	and $1
	jp nz, Function171beb
	ret

; known jump sources: 171bd2 (5c:5bd2)
Function171bdc: ; 171bdc (5c:5bdc)
	ld a, $4
	ld [$cd23], a
	ld a, $8
	ld [$cd24], a
	ld hl, $cd49
	dec [hl]
	ret

; known jump sources: 171bd8 (5c:5bd8)
Function171beb: ; 171beb (5c:5beb)
	ld a, $5
	call GetSRAMBank
	ld a, [$cd4a]
	ld [$aa4a], a
	call CloseSRAM
	ld hl, $5c6b
	call LoadMenuDataHeader
	call Function1cbb
	call Function1cfd
	callba Function104061
	ld hl, $c5b9
	ld de, $5c73
	call PlaceString
	ld a, [$cd4a]
	cp $2
	jr z, .asm_171c1f
	ld a, $8
	jr .asm_171c21
.asm_171c1f
	ld a, $c
.asm_171c21
	ld [$cd24], a
	ld a, $1e
	ld [$cd4c], a
	call Function171c66

; no known jump sources
Function171c2c: ; 171c2c (5c:5c2c)
	ld hl, $cd4c
	dec [hl]
	ret nz
	call Function1c07
	call WhiteBGMap
	jr asm_171c60

; no known jump sources
Function171c39: ; 171c39 (5c:5c39)
	ld a, $28
	ld [$cd4c], a
	call Function171c66

; no known jump sources
Function171c41: ; 171c41 (5c:5c41)
	ld hl, $cd4c
	dec [hl]
	ret nz
	call WhiteBGMap
	callba Function106462
	callba Function106464
	ld a, $2
	ld [$c303], a
	callba Function17f555
asm_171c60: ; 171c60 (5c:5c60)
	ld a, $80
	ld [$cd49], a
	ret

; known jump sources: 171a67 (5c:5a67), 171aa4 (5c:5aa4), 171ad4 (5c:5ad4), 171ae9 (5c:5ae9), 171b3f (5c:5b3f), 171b82 (5c:5b82), 171bc9 (5c:5bc9), 171c29 (5c:5c29), 171c3e (5c:5c3e)
Function171c66: ; 171c66 (5c:5c66)
	ld hl, $cd49
	inc [hl]
	ret
; 171c6b (5c:5c6b)

INCBIN "baserom.gbc",$171c6b,$171c87 - $171c6b

; no known jump sources
Function171c87: ; 171c87 (5c:5c87)
	call DisableLCD
	ld hl, $5db1
	ld de, $9000
	ld bc, $6e0
	call CopyBytes
	ld hl, $6abd
	ld de, $8000
	call Decompress
	call EnableLCD
	ld hl, $6491
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	call CopyBytes
	ld hl, $67ed
	ld de, AttrMap ; $cdd9
	ld bc, $168
	call CopyBytes
	ld hl, $c4cb
	ld de, $6e31
	call PlaceString
	ld hl, $c5e3
	ld de, $6e3f
	call PlaceString
	ret

; no known jump sources
Function171ccd: ; 171ccd (5c:5ccd)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $5d71
	ld de, Unkn1Pals ; $d000
	ld bc, $40
	call CopyBytes
	ld hl, MovementAnimation ; $d042
	ld a, $ff
	ld [hli], a
	ld a, $7f
	ld [hl], a
	call Function32f9
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret

; no known jump sources
Function171cf0: ; 171cf0 (5c:5cf0)
	xor a
	ld hl, $c5d0
	ld [hli], a
	ld [hli], a
	ld a, [$cd4b]
	xor $1
	ld [$cd4b], a
	and a
	jr nz, .asm_171d16
	ld hl, $651d
	ld de, $c52c
	ld bc, $8c
	call CopyBytes
	ld hl, $c5e3
	ld de, $6e3f
	jp PlaceString
.asm_171d16
	ld hl, $65f9
	ld de, $c52c
	ld bc, $8c
	call CopyBytes
	ld hl, $c5e3
	ld de, $6e4e
	jp PlaceString

; no known jump sources
Function171d2b: ; 171d2b (5c:5d2b)
	call DisableLCD
	ld hl, $5db1
	ld de, $9000
	ld bc, $6e0
	call CopyBytes
	ld hl, $6abd
	ld de, $8000
	call Decompress
	call EnableLCD
	ld hl, $6685
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	call CopyBytes
	ld hl, $6955
	ld de, AttrMap ; $cdd9
	ld bc, $168
	call CopyBytes
	ld hl, $c4ca
	ld de, $6e5d
	call PlaceString
	ld hl, $c5ee
	ld de, $6e58
	call PlaceString
	ret
; 171d71 (5c:5d71)

INCBIN "baserom.gbc",$171d71,$172e78 - $171d71

; no known jump sources
Function172e78: ; 172e78 (5c:6e78)
	ld a, $7f
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	call ByteFill
	ld a, $7
	ld hl, AttrMap ; $cdd9
	ld bc, $168
	call ByteFill
	call DisableLCD
	ld hl, $6f1f
	ld de, $9000
	ld bc, $610
	call CopyBytes
	call EnableLCD
	ld hl, $73af
	ld de, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $168
	call CopyBytes
	ld hl, $7517
	ld de, AttrMap ; $cdd9
	ld bc, $168
	call CopyBytes
	ret
; 172eb9 (5c:6eb9)

Function172eb9:
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, $6edf
	ld de, Unkn1Pals ; $d000
	ld bc, $40
	call CopyBytes
	ld hl, $6edf
	ld de, BGPals ; $d080
	ld bc, $40
	call CopyBytes
	call Function32f9
	pop af
	ld [rSVBK], a ; $ff00+$70
	ret
; 172edf (5c:6edf)

INCBIN "baserom.gbc",$172edf,$17367f - $172edf


SECTION "bank5D", ROMX, BANK[$5D]

INCLUDE "text/phone/extra3.asm"


SECTION "bank5E", ROMX, BANK[$5E]

Function178000:
	callba DrawPlayerHUD
	ld hl, PlayerHPPal ; $cd99
	call SetHPPal
	callba Function3e043
	ld hl, EnemyHPPal ; $cd9a
	call SetHPPal
	callba Function3ee27
	ret
; 17801f (5e:401f)


SECTION "bank5F", ROMX, BANK[$5F]

Function17c000: ; 17c000
	call DisableLCD
	ld hl, VTiles2
	ld bc, $0310
	xor a
	call ByteFill
	call Functione51
	call Functione5f
	ld hl, $4b83
	ld de, TileMap
	ld bc, AttrMap
	ld a, $12
.asm_17c01e
	push af
	ld a, $14
	push hl
.asm_17c022
	push af
	ld a, [hli]
	ld [de], a
	inc de
	ld a, [hli]
	ld [bc], a
	inc bc
	pop af
	dec a
	jr nz, .asm_17c022
	pop hl
	push bc
	ld bc, $0040
	add hl, bc
	pop bc
	pop af
	dec a
	jr nz, .asm_17c01e
	ld a, [rSVBK]
	push af
	ld a, $5
	ld [rSVBK], a
	ld hl, $4ff3
	ld de, $d000
	ld bc, $0080
	call CopyBytes
	pop af
	ld [rSVBK], a
	ld hl, $4983
	ld de, $8300
	ld bc, $0200
	call CopyBytes
	ld a, $1
	ld [rVBK], a
	ld hl, $4083
	ld de, VTiles2
	ld bc, $0800
	call CopyBytes
	ld hl, $4883
	ld de, VTiles1
	ld bc, Start
	call CopyBytes
	xor a
	ld [rVBK], a
	call EnableLCD
	callba Function104061
	ret
; 17c083

INCBIN "baserom.gbc",$17c083,$17d0b3 - $17c083

Function17d0b3: ; 17d0b3
.asm_17d0b3
	ld a, [de]
	inc de
	and a
	jr z, .asm_17d0ee
	cp $60
	jr nc, .asm_17d0ee
	cp $4e
	jr z, .asm_17d0ee
	cp $50
	jr z, .asm_17d0ee
	cp $5
	jr c, .asm_17d0ec
	cp $14
	jr c, .asm_17d0ee
	cp $19
	jr c, .asm_17d0ec
	cp $1d
	jr c, .asm_17d0ee
	cp $26
	jr c, .asm_17d0ec
	cp $35
	jr c, .asm_17d0ee
	cp $3a
	jr c, .asm_17d0ec
	cp $3f
	jr c, .asm_17d0ee
	cp $40
	jr c, .asm_17d0ec
	cp $49
	jr c, .asm_17d0ee

.asm_17d0ec
	scf
	ret

.asm_17d0ee
	dec c
	jr nz, .asm_17d0b3
	and a
	ret
; 17d0f3

INCBIN "baserom.gbc",$17d0f3,$17d1e1 - $17d0f3

Function17d1e1: ; 17d1e1
.asm_17d1e1
	ld a, [de]
	inc de
	cp $4e
	jr nz, .asm_17d1ea
	dec b
	jr z, .asm_17d1ef

.asm_17d1ea
	dec c
	jr nz, .asm_17d1e1
	and a
	ret

.asm_17d1ef
	scf
	ret
; 17d1f1

Function17d1f1: ; 17d1f1
	ld a, [CurPartySpecies]
	dec a
	call SetSeenAndCaughtMon
	ld a, [CurPartySpecies]
	cp $c9
	jr nz, .asm_17d223
	ld hl, PartyMon1DVs
	ld a, [PartyCount]
	dec a
	ld bc, $0030
	call AddNTimes
	ld a, $2d
	call Predef
	callab Functionfba18
	ld a, [$def4]
	and a
	jr nz, .asm_17d223
	ld a, [UnownLetter]
	ld [$def4], a

.asm_17d223
	ret
; 17d224

Function17d224: ; 17d224
	ld a, [ScriptVar]
	and a
	jr nz, .asm_17d234
	ld a, $4
	ld [ScriptVar], a
	ld hl, $526a
	jr .asm_17d23c

.asm_17d234
	ld a, $4
	ld [ScriptVar], a
	ld hl, $528f

.asm_17d23c
	call LoadMenuDataHeader
	call Function17d246
	call Function1c17
	ret
; 17d246

Function17d246: ; 17d246
	call Function1d81
	jr c, .asm_17d264
	ld a, [ScriptVar]
	cp $5
	jr nz, .asm_17d25d
	ld a, [$cfa9]
	cp $3
	ret z
	jr c, .asm_17d25d
	dec a
	jr .asm_17d260

.asm_17d25d
	ld a, [$cfa9]

.asm_17d260
	ld [ScriptVar], a
	ret

.asm_17d264
	ld a, $4
	ld [ScriptVar], a
	ret
; 17d26a

INCBIN "baserom.gbc",$17d26a,$17d2b6 - $17d26a

Function17d2b6: ; 17d2b6
	call Function17d2c0
	callba Function1181da
	ret
; 17d2c0

Function17d2c0: ; 17d2c0
	xor a
	ld [$cf63], a
	ld [$cf64], a
	ld [$cf65], a
	ld [$cf66], a
	ret
; 17d2ce

Function17d2ce: ; 17d2ce
	ld a, $5
	call GetSRAMBank
	ld a, [$aa72]
	call CloseSRAM
	and a
	jr nz, .asm_17d2e2
	ld a, $1
	ld [ScriptVar], a
	ret

.asm_17d2e2
	call Function17d314
	ret c
	call SpeechTextBox
	call FadeToMenu
	ld a, [rSVBK]
	push af
	ld a, $4
	ld [rSVBK], a
	call Function17d370
	call Function17d45a
	pop af
	ld [rSVBK], a
	ld de, $0066
	ld a, e
	ld [CurMusic], a
	ld [MusicFadeIDLo], a
	ld a, d
	ld [MusicFadeIDHi], a
	call PlayMusic
	call Function222a
	call Function2b3c
	ret
; 17d314

Function17d314: ; 17d314
	ld a, $5
	call GetSRAMBank
	ld a, [$b1b1]
	call CloseSRAM
	cp $21
	jr nc, .asm_17d354
	ld a, $6
	call GetSRAMBank
	ld l, $0
	ld h, l
	ld de, $a006
	ld a, [$a004]
	ld c, a
	ld a, [$a005]
	ld b, a
.asm_17d336
	push bc
	ld a, [de]
	inc de
	ld c, a
	ld b, $0
	add hl, bc
	pop bc
	dec bc
	ld a, b
	or c
	jr nz, .asm_17d336
	ld a, [$a002]
	cp l
	jr nz, .asm_17d354
	ld a, [$a003]
	cp h
	jr nz, .asm_17d354
	call CloseSRAM
	and a
	ret

.asm_17d354
	call CloseSRAM
	ld a, $5
	call GetSRAMBank
	xor a
	ld hl, $aa73
	ld bc, $000c
	call ByteFill
	call CloseSRAM
	ld a, $2
	ld [ScriptVar], a
	scf
	ret
; 17d370

Function17d370: ; 17d370
	xor a
	ld [$cd77], a
	ld [$cd78], a
	ld [$cd79], a
	dec a
	ld [$cd6c], a
	call WhiteBGMap
	call ClearSprites
	call Functionfdb
	callba Function104061
	call DisableLCD
	ld hl, $8ee0
	ld de, EnemyMoveAnimation
	ld bc, $0010
	call CopyBytes
	ld a, $1
	ld [rVBK], a
	ld hl, $66fe
	ld de, VTiles1
	ld bc, $0480
	call CopyBytes
	xor a
	ld hl, $97f0
	ld bc, $0010
	call ByteFill
	ld hl, EnemyMoveAnimation
	ld de, $8ee0
	ld bc, $0010
	call CopyBytes
	xor a
	ld [rVBK], a
	ld hl, $6b7e
	ld de, $9600
	ld bc, $0010
	call CopyBytes
	call EnableLCD
	call Function17d60b
	ld a, $0
	ld [BGMapBuffer], a
	ld a, $d0
	ld [$cd21], a
	ld a, $6
	call GetSRAMBank
	ld hl, $a006
	ld de, Unkn1Pals
	ld bc, $1000
	call CopyBytes
	call CloseSRAM
	ret
; 17d3f6

INCBIN "baserom.gbc",$17d3f6,$17d45a - $17d3f6

Function17d45a: ; 17d45a
.asm_17d45a
	call Functiona57
	ld a, [$cd77]
	bit 7, a
	jr nz, .asm_17d46f
	call Function17d474
	callba Function104061
	jr .asm_17d45a

.asm_17d46f
	xor a
	ld [ScriptVar], a
	ret
; 17d474

Function17d474: ; 17d474
	ld a, [$cd77]
	ld e, a
	ld d, $0
	ld hl, $5483
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 17d483

INCBIN "baserom.gbc",$17d483,$17d60b - $17d483

Function17d60b: ; 17d60b
	ld a, $5
	call GetSRAMBank
	ld hl, $b1d3
	ld de, EnemyMoveAnimation
	ld bc, $0020
	call CopyBytes
	ld a, [$b1b1]
	ld c, a
	ld a, [$b1b2]
	ld b, a
	ld a, [$b1b3]
	ld l, a
	ld a, [$b1b4]
	ld h, a
	call CloseSRAM
	ld a, $6
	call GetSRAMBank
	ld de, $c708
	ld a, c
	and a
	jr z, .asm_17d684
.asm_17d63b
	push bc
	ld a, l
	ld [de], a
	inc de
	ld a, h
	ld [de], a
	inc de
	ld bc, $000a
	add hl, bc
	pop bc
	ld a, [hli]
	ld [$cd4a], a
	ld a, [hli]
	ld [$cd49], a
	push hl
	push de
	ld hl, EnemyMoveAnimation
	ld e, b
	ld d, $0
	add hl, de
	ld a, [hli]
	ld [$cd4b], a
	ld a, [hl]
	ld [$cd4c], a
	pop de
	pop hl
	inc b
	inc b
	dec c
	dec c
	jr z, .asm_17d684
	push bc
	push de
	ld a, [$cd49]
	ld c, a
	ld a, [$cd4a]
	ld b, a
	ld a, [$cd4b]
	ld e, a
	ld a, [$cd4c]
	ld d, a
.asm_17d67a
	add hl, de
	dec bc
	ld a, c
	or b
	jr nz, .asm_17d67a
	pop de
	pop bc
	jr .asm_17d63b

.asm_17d684
	call CloseSRAM
	ld a, $5
	call GetSRAMBank
	ld hl, $c708
	ld de, $b1b3
	ld a, [$b1b1]
	ld c, a
	ld a, [$b1b2]
	ld b, a
	call CopyBytes
	call CloseSRAM
	ret
; 17d6a1

INCBIN "baserom.gbc",$17d6a1,$17f036 - $17d6a1


Function17f036: ; 17f036
	ld a, $6
	call GetSRAMBank
	inc de
.asm_17f03c
	call Function17f047
	jr c, .asm_17f043
	jr .asm_17f03c

.asm_17f043
	call CloseSRAM
	ret
; 17f047

Function17f047: ; 17f047
	ld a, [de]
	inc de
	cp $50
	jr z, .asm_17f05f
	cp $10
	jr nc, .asm_17f05f
	dec a
	push de
	ld e, a
	ld d, 0
	ld hl, Table17f061
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]

.asm_17f05f
	scf
	ret
; 17f061

Table17f061: ; 17f061
	dw Function17f081
	dw Function17f0f8
	dw Function17f154
	dw Function17f181
	dw Function17f1d0
	dw Function17f220
	dw Function17f27b
	dw Function17f2cb
	dw Function17f2ff
	dw Function17f334
	dw Function17f382
	dw Function17f3c9
	dw Function17f3f0
	dw Function17f41d
	dw Function17f44f
	dw Function17f44f
; 17f081

Function17f081: ; 17f081
	pop hl
	call Function17f524
	jr c, .asm_17f09f
	ld de, $0004
	add hl, de
	ld a, [hli]
	inc hl
	inc hl
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f09d
	and a
	ret

.asm_17f09d
	scf
	ret

.asm_17f09f
	push bc
	ld de, $cd54
	ld bc, $0007
	call CopyBytes
	pop bc
	push hl
	push bc
	call Function17f4f6
	pop bc
	ld a, [$cd54]
	ld e, a
	ld a, [$cd55]
	ld d, a
	add hl, de
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	push hl
	ld a, [$cd56]
	ld b, a
	ld a, [$cd57]
	ld c, a
	call Function31a4
	ld a, l
	ld [$cd52], a
	ld a, h
	ld [$cd53], a
	ld a, [$cd59]
	and a
	jr z, .asm_17f0ee
	ld c, a
	ld a, [$cd57]
	inc a
	ld b, a
	ld e, l
	ld d, h
	dec de
.asm_17f0e0
	ld a, c
	cp b
	jr z, .asm_17f0ea
	ld a, [de]
	dec de
	ld [hld], a
	dec b
	jr .asm_17f0e0

.asm_17f0ea
	ld a, [$cd5a]
	ld [hl], a

.asm_17f0ee
	pop hl
	ld a, [$cd58]
	call Function17f50f
	pop de
	and a
	ret
; 17f0f8

Function17f0f8: ; 17f0f8
	pop hl
	call Function17f524
	jr c, .asm_17f114
	ld de, $0003
	add hl, de
	ld a, [hli]
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f112
	and a
	ret

.asm_17f112
	scf
	ret

.asm_17f114
	push bc
	ld de, $cd54
	ld bc, $0004
	call CopyBytes
	pop bc
	push hl
	push bc
	call Function17f4f6
	ld a, [$cd54]
	ld e, a
	ld a, [$cd55]
	ld d, a
	add hl, de
	ld de, EnemyMoveAnimation
	ld a, [$cd56]
	ld c, a
	ld b, $0
	call CopyBytes
	ld a, $50
	ld [de], a
	pop hl
	ld de, EnemyMoveAnimation
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, [$cd57]
	call Function17f50f
	pop de
	and a
	ret
; 17f154

Function17f154: ; 17f154
	pop hl
	call Function17f524
	jr c, .asm_17f167
	inc hl
	inc hl
	ld e, l
	ld d, h
	ld a, [de]
	cp $50
	jr z, .asm_17f165
	and a
	ret

.asm_17f165
	scf
	ret

.asm_17f167
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	pop bc
	push hl
	push bc
	call Function17f4f6
	add hl, de
	ld c, l
	ld b, h
	pop de
	callba Function11c08f
	ld c, l
	ld b, h
	pop de
	and a
	ret
; 17f181

Function17f181: ; 17f181
	pop hl
	call Function17f524
	jr c, .asm_17f19d
	ld de, $0002
	add hl, de
	ld a, [hli]
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f19b
	and a
	ret

.asm_17f19b
	scf
	ret

.asm_17f19d
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld [$cd54], a
	pop bc
	push hl
	push bc
	call Function17f4f6
	add hl, de
	ld a, [hl]
	ld c, a
	ld de, EnemyMoveAnimation
	callba Function48c63
	pop hl
	ld de, EnemyMoveAnimation
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f1d0

Function17f1d0: ; 17f1d0
	pop hl
	call Function17f524
	jr c, .asm_17f1ec
	ld de, $0002
	add hl, de
	ld a, [hli]
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f1ea
	and a
	ret

.asm_17f1ea
	scf
	ret

.asm_17f1ec
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld [$cd54], a
	pop bc
	push hl
	push bc
	call Function17f4f6
	add hl, de
	ld a, [hl]
	ld a, $1
	ld [rSVBK], a
	ld [$d265], a
	call GetPokemonName
	pop hl
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, $4
	ld [rSVBK], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f220

Function17f220: ; 17f220
	pop hl
	call Function17f524
	jr c, .asm_17f23c
	ld de, $0002
	add hl, de
	ld a, [hli]
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f23a
	and a
	ret

.asm_17f23a
	scf
	ret

.asm_17f23c
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld [$cd54], a
	pop bc
	push hl
	push bc
	call Function17f4f6
	add hl, de
	ld a, [hl]
	ld e, a
	ld d, $0
	ld hl, $726e
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	pop hl
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f26e

INCBIN "baserom.gbc",$17f26e,$17f27b - $17f26e

Function17f27b: ; 17f27b
	pop hl
	call Function17f524
	jr c, .asm_17f297
	ld de, $0002
	add hl, de
	ld a, [hli]
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f295
	and a
	ret

.asm_17f295
	scf
	ret

.asm_17f297
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [hli]
	ld [$cd54], a
	pop bc
	push hl
	push bc
	call Function17f4f6
	add hl, de
	ld a, [hl]
	ld a, $1
	ld [rSVBK], a
	ld [$d265], a
	call GetItemName
	pop hl
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, $4
	ld [rSVBK], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f2cb

Function17f2cb: ; 17f2cb
	pop hl
	push bc
	ld a, [hli]
	ld [$cd54], a
	ld a, [hli]
	ld [$cd55], a
	ld a, [$cd2e]
	inc a
	ld [$cd56], a
	pop bc
	push hl
	ld l, c
	ld h, b
	push hl
	ld de, $cd56
	ld b, $1
	ld a, [$cd54]
	ld c, a
	call Function31a4
	ld a, l
	ld [$cd52], a
	ld a, h
	ld [$cd53], a
	pop hl
	ld a, [$cd55]
	call Function17f50f
	pop de
	and a
	ret
; 17f2ff

Function17f2ff: ; 17f2ff
	pop hl
	push bc
	ld a, [hli]
	ld [$cd54], a
	pop bc
	push hl
	push bc
	ld a, $1
	ld [rSVBK], a
	ld hl, PlayerName
	ld de, EnemyMoveAnimation
	ld bc, $0006
	call CopyBytes
	ld a, $4
	ld [rSVBK], a
	pop hl
	ld de, EnemyMoveAnimation
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f334

Function17f334: ; 17f334
	pop hl
	push bc
	ld a, [hli]
	ld [$cd55], a
	and $f
	ld [$cd54], a
	pop bc
	push hl
	ld l, c
	ld h, b
	push hl
	ld a, [$cd55]
	bit 7, a
	jr nz, .asm_17f355
	ld a, $1
	call GetSRAMBank
	ld a, [$be3f]
	jr .asm_17f35d

.asm_17f355
	ld a, $5
	call GetSRAMBank
	ld a, [$b2f3]

.asm_17f35d
	ld c, a
	call CloseSRAM
	ld de, EnemyMoveAnimation
	callba Function48c63
	pop hl
	ld de, EnemyMoveAnimation
	call PlaceString
	ld a, c
	ld [$cd52], a
	ld a, b
	ld [$cd53], a
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f382

Function17f382: ; 17f382
	pop hl
	push bc
	ld a, [hli]
	ld [$cd55], a
	and $f
	ld [$cd54], a
	pop bc
	push hl
	push bc
	ld l, c
	ld h, b
	ld a, [$cd55]
	bit 7, a
	jr nz, .asm_17f3a3
	ld a, $1
	call GetSRAMBank
	ld de, $be40
	jr .asm_17f3ab

.asm_17f3a3
	ld a, $5
	call GetSRAMBank
	ld de, $b2f4

.asm_17f3ab
	ld a, $82
	ld b, a
	ld a, $3
	ld c, a
	call PrintNum
	call CloseSRAM
	ld a, l
	ld [$cd52], a
	ld a, h
	ld [$cd53], a
	pop hl
	ld a, [$cd54]
	call Function17f50f
	pop de
	and a
	ret
; 17f3c9

Function17f3c9: ; 17f3c9
	push bc
	ld hl, $cd36
	ld de, $c708
	ld bc, $000c
	call CopyBytes
	pop de
	ld c, $0
	callba Function11c075
	push hl
	ld hl, $c708
	ld de, $cd36
	ld bc, $000c
	call CopyBytes
	pop bc
	pop de
	and a
	ret
; 17f3f0

Function17f3f0: ; 17f3f0
	pop hl
	push hl
	ld a, [hli]
	push af
	push bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld a, [de]
	ld c, a
	ld b, $0
	add hl, bc
	add hl, bc
	ld a, [hli]
	ld e, a
	ld a, [hli]
	ld d, a
	ld hl, Unkn1Pals
	add hl, de
	ld e, l
	ld d, h
	pop hl
	call PlaceString
	pop af
	ld e, a
	ld d, $0
	pop hl
	add hl, de
	add hl, de
	inc hl
	inc hl
	inc hl
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	scf
	ret
; 17f41d

Function17f41d: ; 17f41d
	pop hl
	ld a, [hli]
	push hl
	push af
	ld l, c
	ld h, b
	ld bc, $3b60
	add hl, bc
	ld de, $ffec
	ld c, $1
.asm_17f42c
	ld a, h
	and a
	jr nz, .asm_17f435
	ld a, l
	cp $14
	jr c, .asm_17f439

.asm_17f435
	add hl, de
	inc c
	jr .asm_17f42c

.asm_17f439
	ld hl, TileMap
	ld de, $0014
	ld a, c
.asm_17f440
	and a
	jr z, .asm_17f447
	add hl, de
	dec a
	jr .asm_17f440

.asm_17f447
	pop af
	ld e, a
	ld d, $0
	add hl, de
	pop de
	and a
	ret
; 17f44f

Function17f44f: ; 17f44f
	pop hl
	call Function17f524
	jr c, .asm_17f46d
	ld de, $0005
	add hl, de
	ld a, [hli]
	inc hl
	inc hl
	ld e, l
	ld d, h
	ld l, c
	ld h, b
	ld c, a
	ld b, $0
	add hl, bc
	ld a, [de]
	cp $50
	jr z, .asm_17f46b
	and a
	ret

.asm_17f46b
	scf
	ret

.asm_17f46d
	push bc
	ld de, $cd54
	ld bc, $0008
	call CopyBytes
	pop bc
	push hl
	push bc
	ld a, [$cd56]
	cp $c0
	jr c, .asm_17f488
	ld a, [$cd54]
	ld [rSVBK], a
	jr .asm_17f48e

.asm_17f488
	ld a, [$cd54]
	call GetSRAMBank

.asm_17f48e
	ld a, [$cd55]
	ld l, a
	ld a, [$cd56]
	ld h, a
	ld de, EnemyMoveAnimation
	ld a, [$cd57]
	ld c, a
	ld b, $0
	call CopyBytes
	ld a, [$cd56]
	cp $c0
	jr c, .asm_17f4af
	ld a, $4
	ld [rSVBK], a
	jr .asm_17f4b7

.asm_17f4af
	call CloseSRAM
	ld a, $6
	call GetSRAMBank

.asm_17f4b7
	ld de, EnemyMoveAnimation
	pop hl
	push hl
	ld a, [$cd57]
	ld b, a
	ld a, [$cd58]
	ld c, a
	call Function31a4
	ld a, l
	ld [$cd52], a
	ld a, h
	ld [$cd53], a
	ld a, [$cd5a]
	and a
	jr z, .asm_17f4ec
	ld c, a
	ld a, [$cd58]
	inc a
	ld b, a
	ld e, l
	ld d, h
	dec de
.asm_17f4de
	ld a, c
	cp b
	jr z, .asm_17f4e8
	ld a, [de]
	dec de
	ld [hld], a
	dec b
	jr .asm_17f4de

.asm_17f4e8
	ld a, [$cd5b]
	ld [hl], a

.asm_17f4ec
	pop hl
	ld a, [$cd59]
	call Function17f50f
	pop de
	and a
	ret
; 17f4f6

Function17f4f6: ; 17f4f6
	ld a, [$cd6a]
	ld l, a
	ld a, [$cd6b]
	ld h, a
	ld a, [$cd47]
	ld c, a
	ld a, [BGMapPalBuffer]
	ld b, a
	ld a, [$cd2e]
.asm_17f509
	and a
	ret z
	dec a
	add hl, bc
	jr .asm_17f509
; 17f50f

Function17f50f: ; 17f50f
	and a
	jr z, .asm_17f519
	ld c, a
	ld b, $0
	add hl, bc
	ld c, l
	ld b, h
	ret

.asm_17f519
	ld a, [$cd52]
	ld c, a
	ld l, a
	ld a, [$cd53]
	ld b, a
	ld h, a
	ret
; 17f524

Function17f524: ; 17f524
	push hl
	push bc
	push de
	ld a, [$cd42]
	dec a
	ld b, a
	ld a, [$cd2e]
	cp b
	jr z, .asm_17f53a
	ld hl, $cd68
	cp [hl]
.asm_17f536
	pop de
	pop bc
	pop hl
	ret

.asm_17f53a
	scf
	jr .asm_17f536
; 17f53d

Function17f53d: ; 17f53d
	call FadeToMenu
	xor a
	ld [$c303], a
	ld a, [rSVBK]
	push af
	ld a, $1
	ld [rSVBK], a
	call Function17f555
	pop af
	ld [rSVBK], a
	call Function2b4d
	ret
; 17f555

Function17f555: ; 17f555
.asm_17f555
	call Functiona57
	call Function17f5ae
	ld a, [$c303]
	bit 7, a
	jr nz, .asm_17f56a
	callba Function104000
	jr .asm_17f555

.asm_17f56a
	call Function17f56e
	ret
; 17f56e

Function17f56e: ; 17f56e
	ld a, [$c300]
	cp $22
	jr z, .asm_17f597
	cp $31
	jr z, .asm_17f58a
	cp $33
	ret nz
	ld a, [$c301]
	cp $1
	ret nz
	ld a, [$c302]
	cp $2
	ret nz
	jr .asm_17f5a1

.asm_17f58a
	ld a, [$c301]
	cp $3
	ret nz
	ld a, [$c302]
	and a
	ret nz
	jr .asm_17f5a1

.asm_17f597
	ld a, [$c301]
	and a
	ret nz
	ld a, [$c302]
	and a
	ret nz

.asm_17f5a1
	ld a, $5
	call GetSRAMBank
	xor a
	ld [$aa4b], a
	call CloseSRAM
	ret
; 17f5ae

Function17f5ae: ; 17f5ae
	ld a, [$c303]
	ld e, a
	ld d, 0
	ld hl, Table17f5bd
	add hl, de
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	jp [hl]
; 17f5bd

Table17f5bd: ; 17f5bd
	dw Function17f5c3
	dw Function17ff23
	dw Function17f5d2
; 17f5c3

Function17f5c3: ; 17f5c3
	call Function17f5e4
	callba Function2b5c
	ld a, $1
	ld [$c303], a
	ret
; 17f5d2

Function17f5d2: ; 17f5d2
	call Function17f5e4
	callba Function104000
	call Function32f9
	ld a, $1
	ld [$c303], a
	ret
; 17f5e4

Function17f5e4: ; 17f5e4
	ld a, $8
	ld [MusicFade], a
	ld de, MUSIC_NONE
	ld a, e
	ld [MusicFadeIDLo], a
	ld a, d
	ld [MusicFadeIDHi], a
	ld a, " "
	ld hl, TileMap
	ld bc, $0168
	call ByteFill
	ld a, $6
	ld hl, AttrMap
	ld bc, $0168
	call ByteFill
	ld hl, $c4b6
	ld b, $1
	ld c, $e
	call Function3eea
	ld hl, $c4f1
	ld b, $c
	ld c, $10
	call Function3eea
	ld hl, $c4cb
	ld de, $76dc
	call PlaceString
	call Function17ff3c
	jr nc, .asm_17f632
	ld hl, $c4d3
	call Function17f6b7

.asm_17f632
	ld a, [$c300]
	cp $d0
	jr nc, .asm_17f684
	cp $10
	jr c, .asm_17f679
	sub $10
	cp $24
	jr nc, .asm_17f679
	ld e, a
	ld d, $0
	ld hl, $7706
	add hl, de
	add hl, de
	ld a, [$c301]
	ld e, a
	ld a, [$c302]
	ld d, a
	ld a, [hli]
	ld c, a
	ld a, [hl]
	ld h, a
	ld l, c
	ld a, [hli]
	and a
	jr z, .asm_17f679
	ld c, a
.asm_17f65d
	ld a, [hli]
	ld b, a
	ld a, [hli]
	cp $ff
	jr nz, .asm_17f667
	cp b
	jr z, .asm_17f66e

.asm_17f667
	xor d
	jr nz, .asm_17f674
	ld a, b
	xor e
	jr nz, .asm_17f674

.asm_17f66e
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	jr .asm_17f67d

.asm_17f674
	inc hl
	inc hl
	dec c
	jr nz, .asm_17f65d

.asm_17f679
	ld a, $d9
	jr .asm_17f684

.asm_17f67d
	ld hl, $c51a
	call PlaceString
	ret

.asm_17f684
	sub $d0
	ld e, a
	ld d, $0
	ld hl, $7699
	add hl, de
	add hl, de
	ld a, [hli]
	ld e, a
	ld a, [hl]
	ld d, a
	ld hl, $c51a
	call PlaceString
	ret
; 17f699

INCBIN "baserom.gbc",$17f699,$17f6b7 - $17f699

Function17f6b7: ; 17f6b7
	ld a, [$c300]
	call Function17f6cd
	inc hl
	ld a, [$c302]
	and $f
	call Function17f6d8
	ld a, [$c301]
	call Function17f6cd
	ret
; 17f6cd

Function17f6cd: ; 17f6cd
	ld c, a
	and $f0
	swap a
	call Function17f6d8
	ld a, c
	and $f

Function17f6d8: ; 17f6d8
	add $f6
	ld [hli], a
	ret
; 17f6dc

INCBIN "baserom.gbc",$17f6dc,$17ff23 - $17f6dc

Function17ff23: ; 17ff23
	ld a, [hJoyPressed]
	and a
	ret z
	ld a, $8
	ld [MusicFade], a
	ld a, [CurMusic]
	ld [MusicFadeIDLo], a
	xor a
	ld [MusicFadeIDHi], a
	ld hl, $c303
	set 7, [hl]
	ret
; 17ff3c

Function17ff3c: ; 17ff3c
	nop
	ld a, [$c300]
	cp $d0
	ret c
	ld hl, $c4d2
	ld de, $7f68
	call PlaceString
	ld a, [$c300]
	push af
	sub $d0
	inc a
	ld [$c300], a
	ld hl, $c4d6
	ld de, $c300
	ld bc, $8103
	call PrintNum
	pop af
	ld [$c300], a
	and a
	ret
; 17ff68

INCBIN "baserom.gbc",$17ff68,$17ff6c - $17ff68



SECTION "Common Text 1", ROMX, BANK[$6C]

INCLUDE "text/common.asm"



SECTION "bank6D", ROMX, BANK[$6D]

INCLUDE "text/phone/mom.asm"
INCLUDE "text/phone/bill.asm"
INCLUDE "text/phone/elm.asm"
INCLUDE "text/phone/trainers1.asm"



SECTION "Common Text 2", ROMX, BANK[$6F]

INCLUDE "text/common_2.asm"


SECTION "Common Text 3", ROMX, BANK[$70]

INCLUDE "text/common_3.asm"


SECTION "Common Text 4", ROMX, BANK[$71]

INCLUDE "text/common_4.asm"


SECTION "bank72", ROMX, BANK[$72]

;                   Item names & descriptions

ItemNames:
INCLUDE "items/item_names.asm"

INCLUDE "items/item_descriptions.asm"


MoveNames:
INCLUDE "battle/move_names.asm"


INCLUDE "engine/landmarks.asm"


RegionCheck: ; 0x1caea1
; Checks if the player is in Kanto or Johto.
; If in Johto, returns 0 in e.
; If in Kanto, returns 1 in e.
	ld a, [MapGroup]
	ld b, a
	ld a, [MapNumber]
	ld c, a
	call GetWorldMapLocation
	cp $5f ; on S.S. Aqua
	jr z, .johto
	cp $0 ; special
	jr nz, .checkagain

; If in map $00, load map group / map id from backup locations
	ld a, [BackupMapGroup]
	ld b, a
	ld a, [BackupMapNumber]
	ld c, a
	call GetWorldMapLocation
.checkagain
	cp $2f ; Pallet Town
	jr c, .johto
	cp $58 ; Victory Road
	jr c, .kanto
.johto
	ld e, 0
	ret
.kanto
	ld e, 1
	ret



SECTION "bank75", ROMX, BANK[$75]


SECTION "bank76", ROMX, BANK[$76]


SECTION "bank77", ROMX, BANK[$77]

UnownFont: ; 1dc000
INCBIN "gfx/misc/unown_font.2bpp"
; 1dc1b0

INCBIN "baserom.gbc",$1dc1b0,$1dc381 - $1dc1b0

Function1dc381: ; 1dc381
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	xor a
	ld [hBGMapMode], a
	call Functione58
	ld de, $4591
	ld hl, $9710
	ld bc, $7701
	call Request1bpp
	ld de, $4599
	ld hl, $96e0
	ld bc, $7701
	call Request1bpp
	ld de, $4a90
	ld hl, $93f0
	ld bc, $3e01
	call Get2bpp
	xor a
	ld [MonType], a
	callba Function5084a
	ld hl, $c52c
	ld b, $9
	ld c, $12
	call TextBox
	ld hl, $c4d0
	ld a, [TempMonLevel]
	call Function383d
	ld hl, $c4d4
	ld [hl], $71
	inc hl
	ld de, TempMonMaxHP
	ld bc, $0203
	call PrintNum
	ld a, [CurPartySpecies]
	ld [$d265], a
	ld [CurSpecies], a
	ld hl, PartyMon1Nickname
	call Function1dc50e
	ld hl, $c4f8
	call PlaceString
	ld hl, $c521
	ld [hl], $f3
	call GetPokemonName
	ld hl, $c522
	call PlaceString
	ld hl, $c4a8
	ld [hl], $74
	inc hl
	ld [hl], $e8
	inc hl
	ld de, $d265
	ld bc, $8103
	call PrintNum
	ld hl, $c555
	ld de, $4550
	call PlaceString
	ld hl, PartyMon1OT
	call Function1dc50e
	ld hl, $c558
	call PlaceString
	ld hl, $c57d
	ld de, $4559
	call PlaceString
	ld hl, $c580
	ld de, TempMonID
	ld bc, $8205
	call PrintNum
	ld hl, $c5b9
	ld de, $4554
	call PlaceString
	ld hl, $c5bf
	ld a, [TempMonMove1]
	call Function1dc51a
	call Function1dc52c
	ld hl, TempMonDVs
	ld a, $2d
	call Predef
	ld hl, $c2c6
	xor a
	ld [hl], a
	ld a, [CurPartySpecies]
	cp $c9
	jr z, .asm_1dc469
	inc [hl]

.asm_1dc469
	ld hl, TileMap
	call Function378b
	call WaitBGMap
	ld b, $3
	call GetSGBLayout
	call Function32f9
	ret
; 1dc47b

Function1dc47b: ; 1dc47b
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	xor a
	ld [hBGMapMode], a
	call Functione58
	xor a
	ld [MonType], a
	callba Function5084a
	ld hl, TileMap
	ld b, $f
	ld c, $12
	call TextBox
	ld bc, $0014
	ld de, TileMap
	ld hl, $c4b4
	call CopyBytes
	ld hl, $c4a7
	ld a, [TempMonMove2]
	call Function1dc51a
	ld hl, $c4cf
	ld a, [TempMonMove3]
	call Function1dc51a
	ld hl, $c4f7
	ld a, [TempMonMove4]
	call Function1dc51a
	ld hl, $c533
	ld de, $455d
	call PlaceString
	ld hl, $c53c
	ld de, TempMonAtk
	call Function1dc507
	ld hl, $c564
	ld de, TempMonDef
	call Function1dc507
	ld hl, $c58c
	ld de, TempMonSpclAtk
	call Function1dc507
	ld hl, $c5b4
	ld de, TempMonSpclDef
	call Function1dc507
	ld hl, $c5dc
	ld de, TempMonSpd
	call Function1dc507
	call WaitBGMap
	ld b, $3
	call GetSGBLayout
	call Function32f9
	ret
; 1dc507

Function1dc507: ; 1dc507
	ld bc, $0203
	call PrintNum
	ret
; 1dc50e

Function1dc50e: ; 1dc50e
	ld bc, $000b
	ld a, [CurPartyMon]
	call AddNTimes
	ld e, l
	ld d, h
	ret
; 1dc51a

Function1dc51a: ; 1dc51a
	and a
	jr z, .asm_1dc525
	ld [$d265], a
	call GetMoveName
	jr .asm_1dc528

.asm_1dc525
	ld de, $4584

.asm_1dc528
	call PlaceString
	ret
; 1dc52c

Function1dc52c: ; 1dc52c
	callba GetGender
	ld a, $7f
	jr c, .asm_1dc53c
	ld a, $ef
	jr nz, .asm_1dc53c
	ld a, $f5

.asm_1dc53c
	ld hl, $c4d9
	ld [hl], a
	ld bc, TempMonDVs
	callba CheckShininess
	ret nc
	ld hl, $c4da
	ld [hl], $3f
	ret
; 1dc550

INCBIN "baserom.gbc",$1dc550,$1dc5a1 - $1dc550

INCLUDE "tilesets/data_7.asm"

INCBIN "baserom.gbc",$1dd6a9,$1dd6bb - $1dd6a9

; no known jump sources
Function1dd6bb: ; 1dd6bb (77:56bb)
	ld a, b
	cp $c
	push af
	jr c, .asm_1dd6c7
	jr z, .asm_1dd6cc
	sub $c
	jr .asm_1dd6cc
.asm_1dd6c7
	or a
	jr nz, .asm_1dd6cc
	ld a, $c
.asm_1dd6cc
	ld b, a
	push bc
	ld hl, [sp+$1]
	push de
	push hl
	pop de
	pop hl
	ld [hl], $7f
	ld bc, $102
	call PrintNum
	ld [hl], $9c
	inc hl
	ld d, h
	ld e, l
	ld hl, [sp+$0]
	push de
	push hl
	pop de
	pop hl
	ld bc, $8102
	call PrintNum
	pop bc
	ld de, $56fc
	pop af
	jr c, .asm_1dd6f7
	ld de, $56ff
.asm_1dd6f7
	inc hl
	call PlaceString
	ret
; 1dd6fc (77:56fc)

INCBIN "baserom.gbc",$1dd6fc,$1dd702 - $1dd6fc

Function1dd702: ; 1dd702
	call Function1dd709
	call Functiona80
	ret
; 1dd709

Function1dd709: ; 1dd709
	call WhiteBGMap
	call ClearTileMap
	call ClearSprites
	call DisableLCD
	ld hl, $5805
	ld de, VTiles2
	call Decompress
	ld hl, $5c4b
	ld de, TileMap
	ld bc, $0168
	call CopyBytes
	ld de, $5760
	ld hl, $c506
	call PlaceString
	ld de, $5767
	ld hl, $c513
	call PlaceString
	ld de, PlayerName
	ld hl, $c50d
	call PlaceString
	ld de, $5768
	ld hl, $c542
	call PlaceString
	call EnableLCD
	call WaitBGMap
	ld b, $8
	call GetSGBLayout
	call Function32f9
	call DelayFrame
	ret
; 1dd760

INCBIN "baserom.gbc",$1dd760,$1dd7ae - $1dd760

Function1dd7ae: ; 1dd7ae
	ld hl, TileMap
	ld bc, $0168
	ld a, $7f
	call ByteFill
	ld hl, $5db3
	ld de, TileMap
	ld bc, $0168
	call CopyBytes
	ld de, $57fa
	ld hl, $c4a8
	call PlaceString
	ld de, $57f0
	ld hl, $c5cf
	call PlaceString
	ld hl, $c5d8
	ld de, GameTimeHours
	ld bc, $0204
	call PrintNum
	ld [hl], $67
	inc hl
	ld de, GameTimeMinutes
	ld bc, $8102
	call PrintNum
	ret
; 1dd7f0

INCBIN "baserom.gbc",$1dd7f0,$1ddf1c - $1dd7f0


Function1ddf1c: ; 1ddf1c
	ld hl, $5f33
	ld de, $9310
	call Decompress
	ret
; 1ddf26


; no known jump sources
Function1ddf26: ; 1ddf26 (77:5f26)
	ld hl, $5f33
	ld de, $9310
	ld bc, $773a
	call Functione73
	ret
; 1ddf33 (77:5f33)

INCBIN "baserom.gbc",$1ddf33,$1de0d7 - $1ddf33


Function1de0d7: ; 1de0d7
	ld hl, $60e1
	ld de, $a000
	call Decompress
	ret
; 1de0e1

INCBIN "baserom.gbc",$1de0e1,$1de171 - $1de0e1

; no known jump sources
Function1de171: ; 1de171 (77:6171)
	ld a, $32
	ld hl, $c5f4
	ld bc, $c
	call ByteFill
	ld hl, $c4b4
	ld bc, $f0b
	call ClearBox
	ld a, $34
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $b
	call ByteFill
	ld a, $39
	ld hl, $c5e0
	ld bc, $b
	call ByteFill
	ld hl, $c4a5
	ld [hl], $3f
	ld hl, $c5e5
	ld [hl], $40
	ld a, [$c7d4]
	cp $1
	jr z, .asm_1de1bf
	ld hl, $c4ab
	ld [hl], $50
	ld a, $51
	ld hl, $c4bf
	ld b, $f
	call Function1de27f
	ld [hl], $52
	jr .asm_1de1d0
.asm_1de1bf
	ld hl, $c4ab
	ld [hl], $66
	ld a, $67
	ld hl, $c4bf
	ld b, $f
	call Function1de27f
	ld [hl], $68
.asm_1de1d0
	ret

; no known jump sources
Function1de1d1: ; 1de1d1 (77:61d1)
	ld a, $34
	ld hl, TileMap ; $c4a0 (aliases: SpritesEnd)
	ld bc, $b
	call ByteFill
	ld a, $39
	ld hl, $c568
	ld bc, $b
	call ByteFill
	ld hl, $c4a5
	ld [hl], $3f
	ld hl, $c56d
	ld [hl], $40
	ld hl, $c4ab
	ld [hl], $66
	ld a, $67
	ld hl, $c4bf
	ld b, $9
	call Function1de27f
	ld [hl], $68
	ld a, $34
	ld hl, $c57c
	ld bc, $b
	call ByteFill
	ld a, $39
	ld hl, $c5f4
	ld bc, $b
	call ByteFill
	ld hl, $c587
	ld [hl], $66
	ld a, $67
	ld hl, $c59b
	ld b, $5
	call Function1de27f
	ld [hl], $68
	ld hl, $c590
	ld bc, $50b
	call ClearBox
	ld de, $623c
	ld hl, $c590
	call PlaceString
	ret
; 1de23c (77:623c)

INCBIN "baserom.gbc",$1de23c,$1de247 - $1de23c


Function1de247: ; 1de247
	ld a, [hBGMapAddress]
	ld l, a
	ld a, [$ffd7]
	ld h, a
	push hl
	inc hl
	ld a, l
	ld [hBGMapAddress], a
	ld a, h
	ld [$ffd7], a
	ld hl, $c4b3
	ld [hl], $66
	ld hl, $c4c7
	ld a, $67
	ld b, $f
	call Function1de27f
	ld [hl], $68
	ld hl, $c607
	ld [hl], $3c
	xor a
	ld b, $12
	ld hl, $cdec
	call Function1de27f
	call Function3200
	pop hl
	ld a, l
	ld [hBGMapAddress], a
	ld a, h
	ld [$ffd7], a
	ret
; 1de27f

Function1de27f: ; 1de27f
	push de
	ld de, $0014
.asm_1de283
	ld [hl], a
	add hl, de
	dec b
	jr nz, .asm_1de283
	pop de
	ret
; 1de28a



Function1de28a: ; 1de28a
	ld hl, DudeAutoInput_A
	jr Function1de299
; 1de28f

Function1de28f: ; 1de28f
	ld hl, DudeAutoInput_RightA
	jr Function1de299
; 1de294

Function1de294: ; 1de294
	ld hl, DudeAutoInput_DownA
	jr Function1de299
; 1de299

Function1de299: ; 1de299
	ld a, $77
	call StartAutoInput
	ret
; 1de29f


DudeAutoInput_A: ; 1de29f
	db NO_INPUT, $50
	db A_BUTTON, $00
	db NO_INPUT, $ff ; end
; 1de2a5
	
DudeAutoInput_RightA: ; 1de2a5
	db NO_INPUT, $08
	db D_RIGHT,  $00
	db NO_INPUT, $08
	db A_BUTTON, $00
	db NO_INPUT, $ff ; end
; 1de2af
	
DudeAutoInput_DownA: ; 1de2af
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db D_DOWN,   $00
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db NO_INPUT, $fe
	db A_BUTTON, $00
	db NO_INPUT, $ff ; end
; 1de2c5


Function1de2c5: ; 1de2c5
	ld hl, StringBuffer1
.asm_1de2c8
	ld a, [hl]
	cp $50
	jr z, .asm_1de2da
	cp $25
	jr z, .asm_1de2d8
	cp $1f
	jr z, .asm_1de2d8
	inc hl
	jr .asm_1de2c8

.asm_1de2d8
	ld [hl], $22

.asm_1de2da
	ld de, StringBuffer1
	ld hl, $c4a9
	call PlaceString
	ret
; 1de2e4

PokegearGFX: ; 1de2e4
INCBIN "gfx/misc/pokegear.lz"
; 1de5c7

INCBIN "baserom.gbc",$1de5c7,$1de5c8 - $1de5c7

Function1de5c8: ; 1de5c8
	ld c, $0
	ld hl, $0029
	add hl, de
	ld a, [hli]
	cp $84
	ret nz
	ld a, [hli]
	inc c
	cp $85
	ret z
	inc c
	cp $86
	ret z
	inc c
	cp $88
	ret z
	inc c
	cp $92
	ret z
	ld c, $0
	ret
; 1de5e6

INCBIN "baserom.gbc",$1de5e6,$1df1e6 - $1de5e6

Function1df1e6: ; 1df1e6
	ld b, $21
	ld h, d
	ld l, e
.asm_1df1ea
	ld a, [hl]
	cp $dc
	jr nz, .asm_1df1f3
	ld a, $d4
	jr .asm_1df1fd

.asm_1df1f3
	sub $d4
	jr c, .asm_1df1fe
	cp $3
	jr nc, .asm_1df1fe
	add $cd

.asm_1df1fd
	ld [hl], a

.asm_1df1fe
	inc hl
	dec b
	jr nz, .asm_1df1ea
	ret
; 1df203

Function1df203: ; 1df203
	ld b, $21
	ld h, d
	ld l, e
.asm_1df207
	ld a, [hl]
	cp $d4
	jr nz, .asm_1df210
	ld a, $dc
	jr .asm_1df21a

.asm_1df210
	sub $cd
	jr c, .asm_1df21b
	cp $3
	jr nc, .asm_1df21b
	add $d4

.asm_1df21a
	ld [hl], a

.asm_1df21b
	inc hl
	dec b
	jr nz, .asm_1df207
	ret
; 1df220

Function1df220: ; 1df220
	ld b, $21
	ld h, d
	ld l, e
.asm_1df224
	ld a, [hl]
	and $f0
	cp $d0
	jr nz, .asm_1df233
	ld a, [hl]
	add $8
	and $f
	or $d0
	ld [hl], a

.asm_1df233
	inc hl
	dec b
	jr nz, .asm_1df224
	ret
; 1df238


SECTION "bank78", ROMX, BANK[$78]

INCLUDE "tilesets/data_8.asm"


SECTION "bank79", ROMX, BANK[$79]


SECTION "bank7A", ROMX, BANK[$7A]


SECTION "bank7B", ROMX, BANK[$7B]

INCLUDE "text/battle_tower.asm"


SECTION "bank7C", ROMX, BANK[$7C]

INCBIN "baserom.gbc",$1f0000,$1f09d8 - $1f0000


SECTION "bank7D", ROMX, BANK[$7D]

INCBIN "baserom.gbc",$1f4000,$1f4003 - $1f4000

Function1f4003: ; 1f4003
	ld a, $6
	call GetSRAMBank
	ld hl, $4018
	ld de, $a000
	ld bc, $1000
	call CopyBytes
	call CloseSRAM
	ret
; 1f4018

INCBIN "baserom.gbc",$1f4018,$1f636a - $1f4018


SECTION "bank7E", ROMX, BANK[$7E]

INCLUDE "stats/battle_tower.asm"
INCLUDE "stats/odd_eggs.asm"


SECTION "bank7F", ROMX, BANK[$7F]

SECTION "stadium2",ROMX[$8000-$220],BANK[$7F]
INCBIN "baserom.gbc",$1ffde0,$200000 - $1ffde0