summaryrefslogtreecommitdiff
path: root/engine/pokedex.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/pokedex.asm')
-rw-r--r--engine/pokedex.asm2585
1 files changed, 2585 insertions, 0 deletions
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
new file mode 100644
index 000000000..004836f62
--- /dev/null
+++ b/engine/pokedex.asm
@@ -0,0 +1,2585 @@
+
+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
+ ld bc, $0115
+ 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
+ ld hl, 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 [wcf65], 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, [wcf65]
+ xor $1
+ ld [wcf65], a
+ call Function40bb1
+ ld [wc2d6], a
+ callba Function4424d
+ call WaitBGMap
+ ret
+; 402aa
+
+Function402aa: ; 402aa (10:42aa)
+ call Function41401
+ xor a
+ ld [wcf65], 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
+ ld hl, 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
+ 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
+
+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
+ ld hl, TileMap
+ ld bc, $168
+ call ByteFill
+ ld hl, TileMap
+ 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
+ ld hl, TileMap
+ 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", $4e
+ db "OLD #DEX MODE", $4e
+ db "A to Z MODE@"
+; 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
+ ld hl, TileMap
+ 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
+ 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 [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
+ ld hl, TileMap
+ ld a, $32
+ ld bc, $0168
+ 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", $4e
+ db "evolution type.@"
+; 40ea6
+
+String_40ea6: ; 40ea6
+ db $e1, $e2, " are listed by", $4e
+ db "official type.@"
+; 40ec6
+
+String_40ec6: ; 40ec6
+ db $e1, $e2, " are listed", $4e
+ db "alphabetically.@"
+; 40ee4
+
+String_40ee4: ; 40ee4
+ db "UNOWN are listed", $4e
+ db "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, $4f32
+ 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
+ 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)
+
+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", $4e
+ db "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
+ 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, [wdef4]
+ ld [UnownLetter], a
+ ld a, [wd265]
+ ld [CurPartySpecies], a
+ call GetBaseData
+ ld de, VTiles2
+ predef GetFrontpic
+ 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
+
+
+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, $0
+ call GetSRAMBank
+ ld hl, UnownFont
+ ld de, $a188
+ ld bc, $270
+ ld a, BANK(UnownFont)
+ call FarCopyBytes
+ ld hl, $a188
+ ld bc, $1b0
+ call Function41504
+ ld de, $a188
+ 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
+