shithub: pokecrystal

ref: 051d9e416d0ab267065f2e9e23daab43527e827c
dir: /engine/pokedex.asm/

View raw version

Pokedex: ; 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 NO_TEXT_SCROLL, [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 InitPokedex
	call DelayFrame

.main
	call Functiona57
	ld a, [wcf63]
	bit 7, a
	jr nz, .exit
	call Function4010b
	call DelayFrame
	jr .main

.exit
	ld de, SFX_READ_TEXT_2
	call PlaySFX
	call WaitSFX
	call ClearSprites
	ld a, [wc7d4]
	ld [wd959], 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

InitPokedex: ; 40063
	call WhiteBGMap
	call ClearSprites
	call ClearTileMap
	call Function414b7

	ld hl, wc6d0
IF DEF(CRYSTAL11)
	ld bc, $0116
ELSE
	ld bc, $0115
ENDC
	xor a
	call ByteFill

	xor a
	ld [wcf63], a
	ld [wcf64], a
	ld [wcf65], a
	ld [wcf66], a

	call Function400a2

	ld a, [wd959]
	ld [wc7d4], 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 [wc7dc], a
	ret

.asm_400ae
	ld a, 1
	ld [wc7dc], a
	ret
; 400b4

Function400b4: ; 400b4
	ld hl, wc6d0
	ld a, [wc2d6]
	and a
	jr z, .asm_400ec
	cp $fc
	jr nc, .asm_400ec

	ld b, a
	ld a, [wc7d2]
	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, [wc7d0]
	inc a
	ld [wc7d0], 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, [wc7d1]
	inc a
	ld [wc7d1], 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 SPECIAL_MAP
	jr nz, .asm_40107

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

.asm_40107
	ld [wc7e4], a
	ret
; 4010b

Function4010b: ; 4010b
	ld a, [wcf63]
	ld hl, Jumptable_40115
	call Function41432
	jp [hl]
; 40115


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


Function40131: ; 40131 (10:4131)
	ld hl, wcf63
	inc [hl]
	ret

Function40136: ; 40136 (10:4136)
	ld hl, wcf63
	set 7, [hl]
	ret

Function4013c: ; 4013c (10:413c)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	xor a
	hlcoord 0, 0, AttrMap
	ld bc, $168
	call ByteFill
	callba Function1de171
	hlcoord 0, 17
	ld de, Unknown_407f2
	call Function40acd
	ld a, $7
	ld [wc7d3], a
	call Function40b0f
	call Function41aeb
	call Function41af7
	call Function4074c
	ld a, $5
	ld [hSCX], a ; $ff00+$cf
	ld a, [wc7d4]
	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
	ld a, $4
	call Function41423
	call Function41148
	callba Function1de171
	hlcoord 0, 17
	ld de, Unknown_407f2
	call Function40acd
	ld a, $7
	ld [wc7d3], a
	call Function40b0f
	call Function40131
	ret

Function401ae: ; 401ae (10:41ae)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and B_BUTTON
	jr nz, .b
	ld a, [hl]
	and A_BUTTON
	jr nz, .a
	ld a, [hl]
	and SELECT
	jr nz, .select
	ld a, [hl]
	and START
	jr nz, .start
	call Function406c5
	ret nc
	call Function41148
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function40b0f
	call Function41ad7
	call Function41af7
	ret

.a
	call Function40bb1
	call Function40bd0
	ret z
	ld a, $2
	ld [wcf63], a
	ld a, $0
	ld [wcf64], a
	ret

.select
	call Function41401
	ld a, $7
	ld [wcf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call DelayFrame
	ret

.start
	call Function41401
	ld a, $5
	ld [wcf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call DelayFrame
	ret

.b
	ld a, $d
	ld [wcf63], a
	ret

Function40217: ; 40217 (10:4217)
	call LowVolume
	xor a
	ld [wPokedexStatus], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function41478
	call Function407fd
	call Function4134f
	call Function40bb1
	ld [wc2d6], a
	callba Function4424d
	call Function40ba0
	call WaitBGMap
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	call Function40bb1
	ld [CurPartySpecies], a
	ld a, $4
	call Function41423
	ld a, [CurPartySpecies]
	call PlayCry
	call Function40131
	ret

Function40258: ; 40258 (10:4258)
	ld de, Unknown_402e8
	call Function4135a
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and B_BUTTON
	jr nz, .b
	ld a, [hl]
	and A_BUTTON
	jr nz, .a
	call Function4066c
	ret nc
	call Function40131
	ret

.a
	ld a, [wc7d8]
	ld hl, Jumptable_402f2
	call Function41432
	jp [hl]

.b
	ld a, [LastVolume]
	and a
	jr z, .asm_40288
	ld a, $77
	ld [LastVolume], a

.asm_40288
	call MaxVolume
	ld a, [wcf64]
	ld [wcf63], a
	ret
; 40292 (10:4292)

Function40292: ; 40292
	ld a, [wPokedexStatus]
	xor $1
	ld [wPokedexStatus], a
	call Function40bb1
	ld [wc2d6], a
	callba Function4424d
	call WaitBGMap
	ret
; 402aa

Function402aa: ; 402aa (10:42aa)
	call Function41401
	xor a
	ld [wPokedexStatus], a
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call Function407fd
	call Function4134f
	call Function41478
	call Function40bb1
	ld [wc2d6], a
	callba Function4424d
	call Function40ba0
	call Function4143b
	call WaitBGMap
	call Function40bb1
	ld [CurPartySpecies], a
	ld a, $4
	call Function41423
	ld a, [CurPartySpecies]
	call PlayCry
	ld hl, wcf63
	dec [hl]
	ret
; 402e8 (10:42e8)

Unknown_402e8: ; 402e8
	dw $0430
	dwcoord 1, 17
	dwcoord 6, 17
	dwcoord 11, 17
	dwcoord 15, 17
; 402f2

Jumptable_402f2: ; 402f2
	dw Function40292
	dw Function402fa
	dw Function40340
	dw Function4034f
; 402fa

Function402fa: ; 402fa
	call Function41401
	xor a
	ld [hSCX], a
	call DelayFrame
	ld a, $7
	ld [hWX], a
	ld a, $90
	ld [hWY], a
	call Function40bb1
	ld a, [wc7e4]
	ld e, a
	predef Function91d11
	call Function41401
	call DelayFrame
	xor a
	ld [hBGMapMode], a
	ld a, $90
	ld [hWY], a
	ld a, $5
	ld [hSCX], a
	call DelayFrame
	call Function4038d
	call Function4143b
	call WaitBGMap
	call Function40bb1
	ld [CurPartySpecies], a
	ld a, $4
	call Function41423
	ret
; 40340

Function40340: ; 40340
	call Function40bb1
	ld a, [wd265]
	call GetCryIndex
	ld e, c
	ld d, b
	call PlayCryHeader
	ret
; 4034f

Function4034f: ; 4034f
	call Function41415
	xor a
	ld [hSCX], a
	ld a, [wcf65]
	push af
	ld a, [wcf64]
	push af
	ld a, [wcf63]
	push af
	callba Function8442c
	pop af
	ld [wcf63], a
	pop af
	ld [wcf64], a
	pop af
	ld [wcf65], a
	call WhiteBGMap
	call DisableLCD
	call Function414fb
	call Function4038d
	call EnableLCD
	call WaitBGMap
	ld a, $5
	ld [hSCX], a
	call Function41427
	ret
; 4038d

Function4038d: ; 4038d
	call Function407fd
	call Function40bb1
	callba Function4424d
	call Function40ba0
	ret
; 4039d

Function4039d: ; 4039d (10:439d)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function4087c
	call Function4134f
	ld a, [wc7d4]
	ld [wc7d8], a
	call Function40e5b
	call WaitBGMap
	ld a, $10
	call Function41423
	call Function40131
	ret

Function403be: ; 403be (10:43be)
	ld a, [wc7dc]
	and a
	jr nz, .asm_403c9
	ld de, Unknown_403f3
	jr .asm_403cc

.asm_403c9
	ld de, Unknown_403fb
.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, [wc7d8]
	ld hl, Jumptable_40405
	call Function41432
	jp [hl]

.asm_403ea
	call Function41401
	ld a, $0
	ld [wcf63], a
	ret
; 403f3 (10:43f3)

Unknown_403f3: ; 403f3
	dw $03c0
	dwcoord 2, 4
	dwcoord 2, 6
	dwcoord 2, 8
; 403fb

Unknown_403fb: ; 403fb
	dw $04c0
	dwcoord 2, 4
	dwcoord 2, 6
	dwcoord 2, 8
	dwcoord 2, 10
; 40405

Jumptable_40405: ; 40405 (10:4405)
	dw Function4040d
	dw Function40411
	dw Function40415
	dw Function4043a
; 4040d

Function4040d: ; 4040d (10:440d)
	ld b, $0
	jr Function40417

Function40411: ; 40411 (10:4411)
	ld b, $1
	jr Function40417

Function40415: ; 40415 (10:4415)
	ld b, $2
Function40417: ; 40417 (10:4417)
	ld a, [wc7d4]
	cp b
	jr z, .asm_40431
	ld a, b
	ld [wc7d4], a
	call Function40bdc
	call Function40f08
	xor a
	ld [wc7d0], a
	ld [wc7d1], a
	call Function400b4

.asm_40431
	call Function41401
	ld a, $0
	ld [wcf63], a
	ret

Function4043a: ; 4043a (10:443a)
	call Function41401
	ld a, $b
	ld [wcf63], a
	ret

Function40443: ; 40443 (10:4443)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	call ClearSprites
	call Function408f0
	call Function4134f
	ld a, $1
	ld [wc7d5], a
	xor a
	ld [wc7d6], a
	call Function40fa8
	xor a
	ld [wc7db], a
	callba Function44207
	call WaitBGMap
	ld a, $10
	call Function41423
	call Function40131
	ret

Function40471: ; 40471 (10:4471)
	ld de, Unknown_4049e
	call Function4135a
	call Function40f4f
	call c, Function40fa8
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and START | B_BUTTON
	jr nz, .asm_40495
	ld a, [hl]
	and A_BUTTON
	jr nz, .asm_4048b
	ret

.asm_4048b
	ld a, [wc7d8]
	ld hl, Jumptable_404a8
	call Function41432
	jp [hl]

.asm_40495
	call Function41401
	ld a, $0
	ld [wcf63], a
	ret
; 4049e (10:449e)

Unknown_4049e: ; 4049e
	dw $04c0
	dwcoord 2, 4
	dwcoord 2, 6
	dwcoord 2, 13
	dwcoord 2, 15
; 404a8

Jumptable_404a8: ; 404a8
	dw Function404b0
	dw Function404b0
	dw Function404b7
	dw Function40501
; 404b0

Function404b0: ; 404b0
	call Function40f84
	call Function40fa8
	ret
; 404b7

Function404b7: ; 404b7
	call Function41086
	callba Function441cf
	ld a, [wc7d7]
	and a
	jr nz, .asm_404dc
	call Function40bdc
	call Function41107
	xor a
	ld [hBGMapMode], a
	call Function408f0
	call Function4134f
	call Function40fa8
	call WaitBGMap
	ret

.asm_404dc
	ld [wc7d2], a
	ld a, [wc7d0]
	ld [wc7e0], a
	ld a, [wc7d1]
	ld [wc7e1], a
	ld a, [wc2d6]
	ld [wcf65], a
	xor a
	ld [wc7d0], a
	ld [wc7d1], a
	call Function41401
	ld a, $9
	ld [wcf63], a
	ret
; 40501

Function40501: ; 40501
	call Function41401
	ld a, $0
	ld [wcf63], a
	ret
; 4050a

Function4050a: ; 4050a (10:450a)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	xor a
	hlcoord 0, 0, AttrMap
	ld bc, $168
	call ByteFill
	call Function41ae1
	call Function41af7
	callba Function1de1d1
	call Function409cf
	ld a, $4
	ld [wc7d3], 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
	ld a, $4
	call Function41423
	call Function40131
	ret

Function40562: ; 40562 (10:4562)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and B_BUTTON
	jr nz, .asm_40595
	ld a, [hl]
	and A_BUTTON
	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 [wcf63], a
	ld a, $9
	ld [wcf64], a
	ret

.asm_40595
	ld a, [wc7e0]
	ld [wc7d0], a
	ld a, [wc7e1]
	ld [wc7d1], a
	ld a, [wcf65]
	ld [wc2d6], a
	call Function41401
	call ClearSprites
	call Function40bdc
	ld a, $5
	ld [wcf63], a
	xor a
	ld [hSCX], a ; $ff00+$cf
	ld a, $a7
	ld [hWX], a ; $ff00+$d1
	ret

Function405bd: ; 405bd (10:45bd)
	call Function41a2c
	call Function409f1
	xor a
	ld [wc7dd], a
	call Function41a58
	call Function40658
	callba Functionfba2e
	call WaitBGMap
	ld a, $16
	call Function41423
	call Function40131
	ret

Function405df: ; 405df (10:45df)
	ld hl, hJoyPressed ; $ffa7
	ld a, [hl]
	and A_BUTTON | B_BUTTON
	jr nz, .asm_405eb
	call Function40610
	ret

.asm_405eb
	call Function41401
	ld a, $7
	ld [wcf63], a
	call DelayFrame
	call Function41a24
	jr nz, .asm_40603
	callba Function1ddf26
	jr .asm_4060f

.asm_40603
	ld hl, PokedexLZ
	ld de, $9310
	lb bc, BANK(PokedexLZ), $3a
	call Functione73

.asm_4060f
	ret

Function40610: ; 40610 (10:4610)
	ld hl, $ffa9
	ld a, [hl]
	and D_RIGHT
	jr nz, .right
	ld a, [hl]
	and D_LEFT
	jr nz, .left
	ret

.right
	ld a, [wc7de]
	ld e, a
	ld hl, wc7dd
	ld a, [hl]
	inc a
	cp e
	ret nc
	ld a, [hl]
	inc [hl]
	jr .asm_40635

.left
	ld hl, wc7dd
	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

Function40654: ; 40654 (10:4654)
	ld c, $7f
	jr asm_4065d

Function40658: ; 40658 (10:4658)
	ld a, [wc7dd]
	ld c, $5a
asm_4065d: ; 4065d (10:465d)
	ld e, a
	ld d, 0
	ld hl, Unknown_40a3e + 2
rept 4
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ld [hl], c
	ret

Function4066c: ; 4066c (10:466c)
	ld a, [wc7d1]
	ld [wc7e2], a
	ld a, [wc7d0]
	ld [wc7e3], a
	ld hl, $ffa9
	ld a, [hl]
	and D_UP
	jr nz, .up
	ld a, [hl]
	and D_DOWN
	jr nz, .down
	and a
	ret

.up
	ld a, [wc7d3]
	ld d, a
	ld a, [wc7d2]
	ld e, a
	call Function406ea
	jr nc, .asm_406b7
	call Function40bb1
	call Function40bd0
	jr nz, .asm_406b5
	jr .up

.down
	ld a, [wc7d3]
	ld d, a
	ld a, [wc7d2]
	ld e, a
	call Function406fe
	jr nc, .asm_406b7
	call Function40bb1
	call Function40bd0
	jr nz, .asm_406b5
	jr .down

.asm_406b5
	scf
	ret

.asm_406b7
	ld a, [wc7e2]
	ld [wc7d1], a
	ld a, [wc7e3]
	ld [wc7d0], a
	and a
	ret

Function406c5: ; 406c5 (10:46c5)
	ld a, [wc7d3]
	ld d, a
	ld a, [wc7d2]
	ld e, a
	ld hl, $ffa9
	ld a, [hl]
	and D_UP
	jr nz, Function406ea
	ld a, [hl]
	and D_DOWN
	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

Function406ea: ; 406ea (10:46ea)
	ld hl, wc7d1
	ld a, [hl]
	and a
	jr z, .asm_406f4
	dec [hl]
	jr asm_4073f
.asm_406f4
	ld hl, wc7d0
	ld a, [hl]
	and a
	jr z, asm_4073d
	dec [hl]
	jr asm_4073f

Function406fe: ; 406fe (10:46fe)
	ld hl, wc7d1
	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, wc7d0
	add [hl]
	cp e
	jr nc, asm_4073d
	inc [hl]
	jr asm_4073f
asm_40716: ; 40716 (10:4716)
	ld hl, wc7d0
	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, wc7d0
	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


Function4074c: ; 4074c (10:474c)
	hlcoord 0, 17
	ld de, Unknown_407f2
	call Function40acd
	ld a, $32
	hlcoord 0, 0
	ld bc, $168
	call ByteFill
	hlcoord 0, 0
	lb bc, 7, 7
	call Function40ad5
	hlcoord 0, 9
	ld bc, $607
	call Function40ad5
	hlcoord 1, 11
	ld de, Unknown_407e1
	call Function40acd
	ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
	ld b, EndPokedexSeen - PokedexSeen
	call CountSetBits
	ld de, wd265
	hlcoord 5, 12
	ld bc, $103
	call PrintNum
	hlcoord 1, 14
	ld de, Unknown_407e6
	call Function40acd
	ld hl, PokedexCaught
	ld b, EndPokedexCaught - PokedexCaught
	call CountSetBits
	ld de, wd265
	hlcoord 5, 15
	ld bc, $103
	call PrintNum
	hlcoord 1, 17
	ld de, Unknown_407ea
	call Function40acd
	hlcoord 8, 1
	ld b, $7
	ld a, $5a
	call Function40741
	hlcoord 8, 10
	ld b, $6
	ld a, $5a
	call Function40741
	hlcoord 8, 0
	ld [hl], $59
	hlcoord 8, 8
	ld [hl], $53
	hlcoord 8, 9
	ld [hl], $54
	hlcoord 8, 16
	ld [hl], $5b
	call Function40ab2
	ret
; 407e1 (10:47e1)

Unknown_407e1: ; 407e1
	db "SEEN", $ff
Unknown_407e6: ; 407e6
	db "OWN", $ff
Unknown_407ea: ; 407ea
	db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION
Unknown_407f2: ; 407f2
	db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH
; 407fd

Function407fd: ; 407fd
	call Function40aa6
	hlcoord 0, 0
	ld bc, $0f12
	call Function40ad5
	hlcoord 19, 0
	ld [hl], $34
	hlcoord 19, 1
	ld a, $7f
	ld b, $f
	call Function40741
	ld [hl], $39
	hlcoord 1, 10
	ld bc, $0013
	ld a, $61
	call ByteFill
	hlcoord 1, 17
	ld bc, $0012
	ld a, $7f
	call ByteFill
	hlcoord 9, 7
	ld de, Unknown_40852
	call Function40acd
	hlcoord 9, 9
	ld de, Unknown_4085c
	call Function40acd
	hlcoord 0, 17
	ld de, Unknown_40867
	call Function40acd
	call Function40ab2
	ret
; 4084f

Unknown_4084f: ; 4084f
	db $5c, $5d, $ff ; No.
Unknown_40852: ; 40852
	db "HT  ?", $5e, "??", $5f, $ff ; HT  ?'??"
Unknown_4085c: ; 4085c
	db "WT   ???lb", $ff ; WT   ???lb
Unknown_40867: ; 40867
	db $3b, " PAGE AREA CRY PRNT", $ff
; 4087c

Function4087c: ; 4087c (10:487c)
	call Function40aa6
	hlcoord 0, 2
	lb bc, 8, 18
	call Function40ad5
	hlcoord 0, 12
	lb bc, 4, 18
	call Function40ad5
	hlcoord 0, 1
	ld de, Unknown_408b2
	call Function40acd
	hlcoord 3, 4
	ld de, String_408bd
	call PlaceString
	ld a, [wc7dc]
	and a
	ret z
	hlcoord 3, 10
	ld de, String_408e5
	call PlaceString
	ret
; 408b2 (10:48b2)

Unknown_408b2: ; 408b2
	db $3b, " OPTION ", $3c, $ff
; 408bd

String_408bd: ; 408bd
	db   "NEW #DEX MODE"
	next "OLD #DEX MODE"
	next "A to Z MODE"
	db "@"
; 408e5

String_408e5: ; 408e5
	db "UNOWN MODE@"
; 408f0

Function408f0: ; 408f0 (10:48f0)
	call Function40aa6
	hlcoord 0, 2
	lb bc, 14, 18
	call Function40ad5
	hlcoord 0, 1
	ld de, Unknown_4092a
	call Function40acd
	hlcoord 8, 4
	ld de, Unknown_40935
	call Function40acd
	hlcoord 8, 6
	ld de, Unknown_40935
	call Function40acd
	hlcoord 3, 4
	ld de, String_40940
	call PlaceString
	hlcoord 3, 13
	ld de, String_4094c
	call PlaceString
	ret
; 4092a (10:492a)

Unknown_4092a: ; 4092a
	db $3b, " SEARCH ", $3c, $ff
; 40925

Unknown_40935: ; 40935
	db $3d, "        ", $3e, $ff
; 40940

String_40940: ; 40940
	db   "TYPE1"
	next "TYPE2"
	db   "@"
; 4094c

String_4094c: ; 4094c
	db   "BEGIN SEARCH!!"
	next "CANCEL"
	db   "@"
; 40962

Function40962: ; 40962 (10:4962)
	call Function40aa6
	hlcoord 0, 0
	lb bc, 7, 7
	call Function40ad5
	hlcoord 0, 11
	lb bc, 5, 18
	call Function40ad5
	hlcoord 1, 12
	ld de, String_409ae
	call PlaceString
	ld de, wc7d7
	hlcoord 1, 16
	ld bc, $103
	call PrintNum
	hlcoord 8, 0
	ld [hl], $59
	hlcoord 8, 1
	ld b, $7
	ld a, $5a
	call Function40741
	hlcoord 8, 8
	ld [hl], $53
	hlcoord 8, 9
	ld [hl], $69
	hlcoord 8, 10
	ld [hl], $6a
	call Function40ab2
	ret
; 409ae (10:49ae)

String_409ae: ; 409ae
	db   "SEARCH RESULTS"
	next "  TYPE"
	next "    FOUND!"
	db   "@"
; 409cf

Function409cf: ; 409cf (10:49cf)
	ld a, [wc7d5]
	hlcoord 0, 14
	call Function40fcd
	ld a, [wc7d5]
	ld b, a
	ld a, [wc7d6]
	and a
	jr z, .asm_409f0
	cp b
	jr z, .asm_409f0
	hlcoord 2, 15
	call Function40fcd
	hlcoord 1, 15
	ld [hl], $f3
.asm_409f0
	ret

Function409f1: ; 409f1 (10:49f1)
	call Function40aa6
	hlcoord 2, 1
	lb bc, 10, 13
	call Function40ad5
	hlcoord 2, 14
	lb bc, 1, 13
	call Function40ad5
	hlcoord 2, 15
	ld [hl], $3d
	hlcoord 16, 15
	ld [hl], $3e
	hlcoord 6, 5
	call Function40ab5
	ld de, 0
	ld b, 0
	ld c, 26
.asm_40a1d
	ld hl, UnownDex
	add hl, de
	ld a, [hl]
	and a
	jr z, .asm_40a39
	push af
	ld hl, Unknown_40a3e
rept 4
	add hl, de
endr
	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 [wc7de], a
	ret
; 40a3e (10:4a3e)

Unknown_40a3e: ; 40a3e
	dwcoord   4,11,   3,11
	dwcoord   4,10,   3,10
	dwcoord   4, 9,   3, 9
	dwcoord   4, 8,   3, 8
	dwcoord   4, 7,   3, 7
	dwcoord   4, 6,   3, 6
	dwcoord   4, 5,   3, 5
	dwcoord   4, 4,   3, 4
	dwcoord   4, 3,   3, 2
	dwcoord   5, 3,   5, 2
	dwcoord   6, 3,   6, 2
	dwcoord   7, 3,   7, 2
	dwcoord   8, 3,   8, 2
	dwcoord   9, 3,   9, 2
	dwcoord  10, 3,  10, 2
	dwcoord  11, 3,  11, 2
	dwcoord  12, 3,  12, 2
	dwcoord  13, 3,  13, 2
	dwcoord  14, 3,  15, 2
	dwcoord  14, 4,  15, 4
	dwcoord  14, 5,  15, 5
	dwcoord  14, 6,  15, 6
	dwcoord  14, 7,  15, 7
	dwcoord  14, 8,  15, 8
	dwcoord  14, 9,  15, 9
	dwcoord  14,10,  15,10
; 40aa6

Function40aa6: ; 40aa6
	hlcoord 0, 0
	ld a, $32
	ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
	call ByteFill
	ret
; 40ab2

Function40ab2: ; 40ab2
	hlcoord 1, 1
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


Function40b0f: ; 40b0f (10:4b0f)
	ld a, [wc7d4]
	cp $1
	jr z, .asm_40b1a
	ld c, $b
	jr .asm_40b1c
.asm_40b1a
	ld c, $b
.asm_40b1c
	hlcoord 0, 1
	ld a, [wc7d3]
	add a
	inc a
	ld b, a
	ld a, $7f
	call Function413fe
	ld a, [wc7d0]
	ld e, a
	ld d, $0
	ld hl, wc6d0
	add hl, de
	ld e, l
	ld d, h
	hlcoord 0, 2
	ld a, [wc7d3]
.asm_40b3c
	push af
	ld a, [de]
	ld [wd265], 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

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

Function40b6a: ; 40b6a (10:4b6a)
	ld a, [wc7d4]
	cp $1
	jr z, .asm_40b72
	ret
.asm_40b72
	push hl
	ld de, -20
	add hl, de
	ld de, wd265
	ld bc, $8103
	call PrintNum
	pop hl
	ret

Function40b82: ; 40b82 (10:4b82)
	call Function40bc4
	jr nz, .asm_40b89
	inc hl
	ret
.asm_40b89
	ld a, $4f
	ld [hli], a
	ret

Function40b8d: ; 40b8d (10:4b8d)
	call Function40bd0
	ret nz
	inc hl
	ld de, String_40b9a
	call PlaceString
	scf
	ret
; 40b9a (10:4b9a)

String_40b9a: ; 40b9a
	db "-----@"
; 40ba0

Function40ba0: ; 40ba0
	hlcoord 18, 1
	ld a, $62
	ld [hli], a
	inc a
	ld [hl], a
	hlcoord 18, 2
	ld a, $64
	ld [hli], a
	inc a
	ld [hl], a
	ret
; 40bb1


Function40bb1: ; 40bb1
	ld a, [wc7d1]
	ld hl, wc7d0
	add [hl]
	ld e, a
	ld d, $0
	ld hl, wc6d0
	add hl, de
	ld a, [hl]
	ld [wd265], a
	ret
; 40bc4


Function40bc4: ; 40bc4 (10:4bc4)
	push de
	push hl
	ld a, [wd265]
	dec a
	call CheckCaughtMon
	pop hl
	pop de
	ret


Function40bd0: ; 40bd0
	push de
	push hl
	ld a, [wd265]
	dec a
	call CheckSeenMon
	pop hl
	pop de
	ret
; 40bdc



Function40bdc: ; 40bdc
	ld hl, wc6d0
	ld bc, $100
	xor a
	call ByteFill
	ld a, [wc7d4]
	ld hl, Jumptable_40bf0
	call Function41432
	jp [hl]
; 40bf0


Jumptable_40bf0: ; 40bf0 (10:4bf0)
	dw Function40bf6
	dw Function40c08
	dw Function40c30


Function40bf6: ; 40bf6 (10:4bf6)
	ld de, NewPokedexOrder
	ld hl, wc6d0
	ld c, NUM_POKEMON
.asm_40bfe
	ld a, [de]
	inc de
	ld [hli], a
	dec c
	jr nz, .asm_40bfe
	call Function40c18
	ret

Function40c08: ; 40c08 (10:4c08)
	ld hl, wc6d0
	ld a, $1
	ld c, NUM_POKEMON
.asm_40c0f
	ld [hli], a
	inc a
	dec c
	jr nz, .asm_40c0f
	call Function40c18
	ret

Function40c18: ; 40c18 (10:4c18)
	ld hl, wc7ca
	ld d, NUM_POKEMON
	ld e, d
.asm_40c1e
	ld a, [hld]
	ld [wd265], a
	call Function40bd0
	jr nz, .asm_40c2b
	dec d
	dec e
	jr nz, .asm_40c1e
.asm_40c2b
	ld a, d
	ld [wc7d2], a
	ret

Function40c30: ; 40c30
	xor a
	ld [wc7d2], a
	ld hl, wc6d0
	ld de, AlphabeticalPokedexOrder
	ld c, NUM_POKEMON
.asm_40c3c
	push bc
	ld a, [de]
	ld [wd265], a
	call Function40bd0
	jr z, .asm_40c51
	ld a, [wd265]
	ld [hli], a
	ld a, [wc7d2]
	inc a
	ld [wc7d2], a

.asm_40c51
	inc de
	pop bc
	dec c
	jr nz, .asm_40c3c
	ld a, [wc7d2]
	ld c, 0
.asm_40c5b
	cp NUM_POKEMON
	jr z, .asm_40c64
	ld [hl], c
	inc hl
	inc a
	jr .asm_40c5b

.asm_40c64
	ret
; 40c65

AlphabeticalPokedexOrder: ; 0x40c65
INCLUDE "data/pokedex/order_alpha.asm"

NewPokedexOrder: ; 0x40d60
INCLUDE "data/pokedex/order_new.asm"

Function40e5b: ; 40e5b
	xor a
	ld [hBGMapMode], a
	hlcoord 0, 12
	ld bc, $0412
	call Function40ad5
	ld a, [wc7d8]
	ld hl, Unknown_40e7d
	call Function41432
	ld e, l
	ld d, h
	hlcoord 1, 14
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a
	ret
; 40e7d

Unknown_40e7d: ; 40e7d
	dw String_40e85
	dw String_40ea6
	dw String_40ec6
	dw String_40ee4
; 40e85

String_40e85: ; 40e85
	db   $e1, $e2, " are listed by"
	next "evolution type.@"
; 40ea6

String_40ea6: ; 40ea6
	db   $e1, $e2, " are listed by"
	next "official type.@"
; 40ec6

String_40ec6: ; 40ec6
	db   $e1, $e2, " are listed"
	next "alphabetically.@"
; 40ee4

String_40ee4: ; 40ee4
	db   "UNOWN are listed"
	next "in catching order.@"
; 40f08

Function40f08: ; 40f08 (10:4f08)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	hlcoord 0, 12
	ld bc, $412
	call Function40ad5
	ld de, String_40f32
	hlcoord 1, 14
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ld c, $40
	call DelayFrames
	ld de, SFX_CHANGE_DEX_MODE
	call PlaySFX
	ld c, $40
	call DelayFrames
	ret
; 40f32 (10:4f32)

String_40f32: ; 40f32
	db "Changing modes.", $4e, "Please wait.@"
; 40f4f

Function40f4f: ; 40f4f (10:4f4f)
	ld a, [wc7d8]
	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, Function40f84
.asm_40f63
	and a
	ret
.asm_40f65
	ld a, [wc7d8]
	and a
	jr nz, .asm_40f76
	ld hl, wc7d5
	ld a, [hl]
	cp $1
	jr z, .asm_40f80
	dec [hl]
	jr .asm_40f82
.asm_40f76
	ld hl, wc7d6
	ld a, [hl]
	and a
	jr z, .asm_40f80
	dec [hl]
	jr .asm_40f82
.asm_40f80
	ld [hl], $11
.asm_40f82
	scf
	ret
; 40f84

Function40f84: ; 40f84
	ld a, [wc7d8]
	and a
	jr nz, .asm_40f99
	ld hl, wc7d5
	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, wc7d6
	ld a, [hl]
	cp $11
	jr nc, .asm_40fa4
	inc [hl]
	jr .asm_40fa6
.asm_40fa4
	ld [hl], $0
.asm_40fa6
	scf
	ret

Function40fa8: ; 40fa8 (10:4fa8)
	xor a
	ld [hBGMapMode], a ; $ff00+$d4
	hlcoord 9, 3
	ld bc, $408
	ld a, $7f
	call Function413fe
	ld a, [wc7d5]
	hlcoord 9, 4
	call Function40fcd
	ld a, [wc7d6]
	hlcoord 9, 6
	call Function40fcd
	ld a, $1
	ld [hBGMapMode], a ; $ff00+$d4
	ret

Function40fcd: ; 40fcd (10:4fcd)
	push hl
	ld e, a
	ld d, 0
	ld hl, Strings_40fe4
rept 9
	add hl, de
endr
	ld e, l
	ld d, h
	pop hl
	call PlaceString
	ret
; 40fe4 (10:4fe4)

Strings_40fe4: ; 40fe4
	db "  ----  @"
	db " NORMAL @"
	db "  FIRE  @"
	db " WATER  @"
	db " GRASS  @"
	db "ELECTRIC@"
	db "  ICE   @"
	db "FIGHTING@"
	db " POISON @"
	db " GROUND @"
	db " FLYING @"
	db "PSYCHIC @"
	db "  BUG   @"
	db "  ROCK  @"
	db " GHOST  @"
	db " DRAGON @"
	db "  DARK  @"
	db " STEEL  @"
; 41086

Function41086: ; 41086
	ld a, [wc7d6]
	and a
	call nz, Function41095
	ld a, [wc7d5]
	and a
	call nz, Function41095
	ret
; 41095

Function41095: ; 41095
	dec a
	ld e, a
	ld d, 0
	ld hl, Unknown_410f6
	add hl, de
	ld a, [hl]
	ld [wc7df], a
	ld hl, wc6d0
	ld de, wc6d0
	ld c, NUM_POKEMON
	xor a
	ld [wc7d7], a
.asm_410ad
	push bc
	ld a, [hl]
	and a
	jr z, .asm_410e0
	ld [wd265], a
	ld [CurSpecies], a
	call Function40bc4
	jr z, .asm_410e0
	push hl
	push de
	call GetBaseData
	pop de
	pop hl
	ld a, [wc7df]
	ld b, a
	ld a, [BaseType1]
	cp b
	jr z, .asm_410d4
	ld a, [BaseType2]
	cp b
	jr nz, .asm_410e0

.asm_410d4
	ld a, [wd265]
	ld [de], a
	inc de
	ld a, [wc7d7]
	inc a
	ld [wc7d7], a

.asm_410e0
	inc hl
	pop bc
	dec c
	jr nz, .asm_410ad
	ld l, e
	ld h, d
	ld a, [wc7d7]
	ld c, 0
.asm_410ec
	cp NUM_POKEMON
	jr z, .asm_410f5
	ld [hl], c
	inc hl
	inc a
	jr .asm_410ec

.asm_410f5
	ret
; 410f6

Unknown_410f6: ; 410f6
	db NORMAL
	db FIRE
	db WATER
	db GRASS
	db ELECTRIC
	db ICE
	db FIGHTING
	db POISON
	db GROUND
	db FLYING
	db PSYCHIC
	db BUG
	db ROCK
	db GHOST
	db DRAGON
	db DARK
	db STEEL
; 41107

Function41107: ; 41107
	xor a
	ld [hBGMapMode], a
	hlcoord 0, 12
	ld bc, $0412
	call Function40ad5
	ld de, String_41126
	hlcoord 1, 14
	call PlaceString
	ld a, $1
	ld [hBGMapMode], a
	ld c, $80
	call DelayFrames
	ret
; 41126

String_41126: ; 41126
	db   "The specified type"
	next "was not found.@"
; 41148

Function41148: ; 41148 (10:5148)
	ld a, [wc7d4]
	cp $1
	jp z, Function41157
	call Function41229
	call Function4130e
	ret

Function41157: ; 41157 (10:5157)
	ld hl, Unknown_41167
	ld a, [wc7d1]
	or a
	jr nz, .asm_41163
	ld hl, Unknown_411c8
.asm_41163
	call Function412f1
	ret
; 41167 (10:5167)

Unknown_41167: ; 41167
; OAM
	db $18, $47, $30, $07
	db $10, $47, $31, $07
	db $10, $4f, $32, $07
	db $10, $57, $32, $07
	db $10, $5f, $32, $07
	db $10, $67, $33, $07
	db $10, $7e, $33, $27
	db $10, $86, $32, $27
	db $10, $8e, $32, $27
	db $10, $96, $32, $27
	db $10, $9e, $31, $27
	db $18, $9e, $30, $27
	db $20, $47, $30, $47
	db $28, $47, $31, $47
	db $28, $4f, $32, $47
	db $28, $57, $32, $47
	db $28, $5f, $32, $47
	db $28, $67, $33, $47
	db $28, $7e, $33, $67
	db $28, $86, $32, $67
	db $28, $8e, $32, $67
	db $28, $96, $32, $67
	db $28, $9e, $31, $67
	db $20, $9e, $30, $67
	db $ff
; 411c8

Unknown_411c8: ; 411c8
; OAM
	db $18, $47, $30, $07
	db $10, $47, $34, $07
	db $10, $4f, $35, $07
	db $10, $57, $35, $07
	db $10, $5f, $35, $07
	db $10, $67, $36, $07
	db $10, $7e, $36, $27
	db $10, $86, $35, $27
	db $10, $8e, $35, $27
	db $10, $96, $35, $27
	db $10, $9e, $34, $27
	db $18, $9e, $30, $27
	db $20, $47, $30, $47
	db $28, $47, $31, $47
	db $28, $4f, $32, $47
	db $28, $57, $32, $47
	db $28, $5f, $32, $47
	db $28, $67, $33, $47
	db $28, $7e, $33, $67
	db $28, $86, $32, $67
	db $28, $8e, $32, $67
	db $28, $96, $32, $67
	db $28, $9e, $31, $67
	db $20, $9e, $30, $67
	db $ff
; 41229

Function41229: ; 41229 (10:5229)
	ld hl, Unknown_41230
	call Function412f1
	ret
; 41230 (10:5230)

Unknown_41230: ; 41230
; OAM
	db $1b, $47, $30, $07
	db $13, $47, $31, $07
	db $13, $4f, $32, $07
	db $13, $57, $32, $07
	db $13, $5f, $33, $07
	db $13, $80, $33, $27
	db $13, $88, $32, $27
	db $13, $90, $32, $27
	db $13, $98, $31, $27
	db $1b, $98, $30, $27
	db $23, $47, $30, $47
	db $2b, $47, $31, $47
	db $2b, $4f, $32, $47
	db $2b, $57, $32, $47
	db $2b, $5f, $33, $47
	db $2b, $80, $33, $67
	db $2b, $88, $32, $67
	db $2b, $90, $32, $67
	db $2b, $98, $31, $67
	db $23, $98, $30, $67
	db $ff
; 41281

Function41281: ; 41281 (10:5281)
	ld a, [wc7d4]
	cp $1
	jp z, Function41157
	ld hl, Unknown_41290
	call Function412f1
	ret
; 41290 (10:5290)

Unknown_41290: ; 41290
; OAM
	db $1b, $47, $30, $07
	db $13, $47, $31, $07
	db $13, $4f, $32, $07
	db $13, $57, $32, $07
	db $13, $5f, $32, $07
	db $13, $67, $33, $07
	db $13, $7e, $33, $27
	db $13, $86, $32, $27
	db $13, $8e, $32, $27
	db $13, $96, $32, $27
	db $13, $9e, $31, $27
	db $1b, $9e, $30, $27
	db $23, $47, $30, $47
	db $2b, $47, $31, $47
	db $2b, $4f, $32, $47
	db $2b, $57, $32, $47
	db $2b, $5f, $32, $47
	db $2b, $67, $33, $47
	db $2b, $7e, $33, $67
	db $2b, $86, $32, $67
	db $2b, $8e, $32, $67
	db $2b, $96, $32, $67
	db $2b, $9e, $31, $67
	db $23, $9e, $30, $67
	db $ff
; 412f1

Function412f1: ; 412f1 (10:52f1)
	ld de, Sprites
.asm_412f4
	ld a, [hl]
	cp $ff
	ret z
	ld a, [wc7d1]
	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

Function4130e: ; 4130e (10:530e)
	push de
	ld a, [wc7d2]
	dec a
	ld e, a
	ld a, [wc7d1]
	ld hl, wc7d0
	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, [wc7d2]
	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

Function4134f: ; 4134f (10:534f)
	xor a
	ld [wc7d8], a
	ld [wc7d9], a
	ld [wc7da], a
	ret

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 D_LEFT | D_UP
	and b
	jr nz, .asm_4138f
	ld a, [hl]
	and D_RIGHT | D_DOWN
	and b
	jr nz, .asm_413a0
	ld a, [hl]
	and SELECT
	and b
	jr nz, .asm_413c1
	call Function413f5
	jr c, .asm_413bf
	ld hl, $ffa9
	ld a, [hl]
	and D_LEFT | D_UP
	and b
	jr nz, .asm_4138f
	ld a, [hl]
	and D_RIGHT | D_DOWN
	and b
	jr nz, .asm_413a0
	jr .asm_413bf
.asm_4138f
	ld a, [wc7d8]
	and a
	jr z, .asm_413bf
	call Function413d4
	ld [hl], $7f
	ld hl, wc7d8
	dec [hl]
	jr .asm_413af
.asm_413a0
	ld a, [wc7d8]
	cp c
	jr nc, .asm_413bf
	call Function413d4
	ld [hl], $7f
	ld hl, wc7d8
	inc [hl]
.asm_413af
	call Function413d4
	ld [hl], $ed
	ld a, $c
	ld [wc7d9], a
	xor a
	ld [wc7da], a
	scf
	ret
.asm_413bf
	and a
	ret
.asm_413c1
	call Function413d4
	ld [hl], $7f
	ld a, [wc7d8]
	cp c
	jr c, .asm_413ce
	ld a, $ff
.asm_413ce
	inc a
	ld [wc7d8], a
	jr .asm_413af

Function413d4: ; 413d4 (10:53d4)
	ld a, [wc7d8]
	add a
	ld l, a
	ld h, $0
	add hl, de
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret

Function413e0: ; 413e0 (10:53e0)
	ld hl, wc7da
	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

Function413f5: ; 413f5 (10:53f5)
	ld hl, wc7d9
	ld a, [hl]
	and a
	ret z
	dec [hl]
	scf
	ret

Function413fe: ; 413fe (10:53fe)
	jp Functionfb8

Function41401: ; 41401 (10:5401)
	ld a, [rSVBK] ; $ff00+$70
	push af
	ld a, $5
	ld [rSVBK], a ; $ff00+$70
	ld hl, Unkn1Pals
	ld bc, $40
	xor a
	call ByteFill
	pop af
	ld [rSVBK], a ; $ff00+$70

Function41415: ; 41415
	ld a, $ff
	call DmgToCgbBGPals
	ld a, $ff
	call Functioncf8
	call DelayFrame
	ret

Function41423: ; 41423
	ld b, a
	call GetSGBLayout

Function41427: ; 41427
	ld a, $e4
	call DmgToCgbBGPals
	ld a, $e0
	call Functioncf8
	ret
; 41432


Function41432: ; 41432
	ld e, a
	ld d, 0
rept 2
	add hl, de
endr
	ld a, [hli]
	ld h, [hl]
	ld l, a
	ret
; 4143b

Function4143b: ; 4143b
	call Function40bb1
	call Function40bd0
	jr z, .asm_4145b
	ld a, [wdef4]
	ld [UnownLetter], a
	ld a, [wd265]
	ld [CurPartySpecies], a
	call GetBaseData
	ld de, VTiles2
	predef GetFrontpic
	ret

.asm_4145b
	ld a, BANK(sScratch)
	call GetSRAMBank
	callba Function1de0d7
	ld hl, VTiles2
	ld de, sScratch
	ld c, 7 * 7
	ld a, [hROMBank]
	ld b, a
	call Get2bpp
	call CloseSRAM
	ret
; 41478


Function41478: ; 41478 (10:5478)
	call Function40bb1

Function4147b: ; 4147b
	ld a, [wd265]
	dec a
	and $f8
	srl a
	srl a
	srl a
	ld e, 0
	ld d, a
	ld a, [wd265]
	dec a
	and 7
	swap a ; * $10
	ld l, a
	ld h, 0
	add hl, de
	ld de, Footprints
	add hl, de

	push hl
	ld e, l
	ld d, h
	ld hl, $9620
	lb bc, BANK(Footprints), 2
	call Request1bpp
	pop hl

	; Whoever was editing footprints forgot to fix their
	; tile editor. Now each bottom half is 8 tiles off.
	ld de, $80
	add hl, de

	ld e, l
	ld d, h
	ld hl, $9640
	lb bc, BANK(Footprints), 2
	call Request1bpp

	ret
; 414b7


Function414b7: ; 414b7
	call DisableLCD
	ld hl, VTiles2
	ld bc, $0310
	xor a
	call ByteFill
	call Function414fb
	call Functione5f
	ld hl, $9600
	ld bc, $0200
	call Function41504
	call Function41a24
	jr nz, .asm_414e0
	callba Function1ddf1c
	jr .asm_414e9

.asm_414e0
	ld hl, PokedexLZ
	ld de, $9310
	call Decompress

.asm_414e9
	ld hl, PokedexSlowpokeLZ
	ld de, VTiles0
	call Decompress
	ld a, 6
	call SkipMusic
	call EnableLCD
	ret

Function414fb: ; 414fb
	call Functione51
	ld hl, VTiles1
	ld bc, $0800

Function41504: ; 41504
	ld a, [hl]
	xor $ff
	ld [hli], a
	dec bc
	ld a, b
	or c
	jr nz, Function41504
	ret
; 4150e

PokedexLZ: ; 4150e
INCBIN "gfx/unknown/04150e.2bpp.lz"
; 416b0

PokedexSlowpokeLZ: ; 416b0
INCBIN "gfx/pokedex/slowpoke.2bpp.lz"

Function41a24: ; 41a24
	ld a, [hCGB]
	or a
	ret nz
	ld a, [hSGB]
	dec a
	ret
; 41a2c

Function41a2c: ; 41a2c
	ld a, BANK(sScratch)
	call GetSRAMBank
	ld hl, UnownFont
	ld de, sScratch + $188
	ld bc, $270
	ld a, BANK(UnownFont)
	call FarCopyBytes
	ld hl, sScratch + $188
	ld bc, $1b0
	call Function41504
	ld de, sScratch + $188
	ld hl, $9400
	lb bc, BANK(Function41a2c), $1b
	call Request2bpp
	call CloseSRAM
	ret
; 41a58


Function41a58: ; 41a58 (10:5a58)
	ld a, [UnownLetter]
	push af
	ld a, [wc7dd]
	ld e, a
	ld d, $0
	ld hl, EndPokedexSeen ; wded9 (aliases: UnownDex)
	add hl, de
	ld a, [hl]
	ld [UnownLetter], a
	ld a, UNOWN
	ld [CurPartySpecies], a
	call GetBaseData
	ld de, $9000
	predef GetFrontpic
	pop af
	ld [UnownLetter], a
	ret