ref: 25f5306a4d8b1815a78f4ee505f484a2fe6e6b28
parent: e13565f933389024fd0280589c962b9bd13177d3
author: yenatch <yenatch@gmail.com>
date: Wed Feb 11 08:36:02 EST 2015
Split out the Pokedex code.
--- /dev/null
+++ b/engine/pokedex.asm
@@ -1,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
+
--- a/main.asm
+++ b/main.asm
@@ -41917,2589 +41917,9 @@
SECTION "bank10", ROMX, BANK[$10]
-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
+INCLUDE "engine/pokedex.asm"
- 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
Function41a7f: ; 41a7f
xor a