pokecrystal/engine/pokedex.asm

2663 lines
40 KiB
NASM

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, [hInMenu]
push af
ld a, $1
ld [hInMenu], a
xor a
ld [hMapAnims], a
call InitPokedex
call DelayFrame
.main
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
jr nz, .exit
call Pokedex_Main
call DelayFrame
jr .main
.exit
ld de, SFX_READ_TEXT_2
call PlaySFX
call WaitSFX
call ClearSprites
ld a, [wCurrentDexMode]
ld [wLastDexMode], a
pop af
ld [hInMenu], 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 ClearBGPalettes
call ClearSprites
call ClearTileMap
call Pokedex_LoadGFX
ld hl, wPokedexDataStart
ld bc, wPokedexDataEnd - wPokedexDataStart
xor a
call ByteFill
xor a
ld [wJumptableIndex], a
ld [wcf64], a
ld [wcf65], a
ld [wcf66], a
call Pokedex_CheckUnlockedUnownMode
ld a, [wLastDexMode]
ld [wCurrentDexMode], a
call Pokedex_ChangeMode
call Pokedex_InitCursorPosition
call Pokedex_GetLandmark
callba Function1de247
call Pokedex_ResetBGMapMode
ret
; 400a2
Pokedex_CheckUnlockedUnownMode: ; 400a2
ld a, [StatusFlags]
bit 1, a
jr nz, .unlocked
xor a
ld [wUnlockedUnownMode], a
ret
.unlocked
ld a, TRUE
ld [wUnlockedUnownMode], a
ret
; 400b4
Pokedex_InitCursorPosition: ; 400b4
ld hl, wPokedexDataStart
ld a, [wLastDexEntry]
and a
jr z, .done
cp NUM_POKEMON + 1
jr nc, .done
ld b, a
ld a, [wDexListingEnd]
cp $8
jr c, .only_one_page
sub $7
ld c, a
.loop1
ld a, b
cp [hl]
jr z, .done
inc hl
ld a, [wDexListingPage]
inc a
ld [wDexListingPage], a
dec c
jr nz, .loop1
.only_one_page
ld c, $7
.loop2
ld a, b
cp [hl]
jr z, .done
inc hl
ld a, [wDexListingCursor]
inc a
ld [wDexListingCursor], a
dec c
jr nz, .loop2
.done
ret
; 400ed
Pokedex_GetLandmark: ; 400ed
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
ld c, a
call GetWorldMapLocation
cp SPECIAL_MAP
jr nz, .load
ld a, [BackupMapGroup]
ld b, a
ld a, [BackupMapNumber]
ld c, a
call GetWorldMapLocation
.load
ld [wDexCurrentLocation], a
ret
; 4010b
Pokedex_Main: ; 4010b
ld a, [wJumptableIndex]
ld hl, .Jumptable
call Pokedex_LoadPointer
jp [hl]
; 40115
.Jumptable: ; 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 Pokedex_UnownMode ; Unown Dex
dw Function405df
dw Pokedex_CloseDex ; Exit
Pokedex_IncrementDexPointer: ; 40131 (10:4131)
ld hl, wJumptableIndex
inc [hl]
ret
Pokedex_CloseDex: ; 40136 (10:4136)
ld hl, wJumptableIndex
set 7, [hl]
ret
Function4013c: ; 4013c (10:413c)
xor a
ld [hBGMapMode], a
call ClearSprites
xor a
hlcoord 0, 0, AttrMap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
call ByteFill
callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
call Pokedex_ResetBGMapMode
call Function4074c
ld a, $5
ld [hSCX], a
ld a, [wCurrentDexMode]
cp DEXMODE_OLD
ld a, $4a
jr z, .okay
ld a, $47
.okay
ld [hWX], a
xor a
ld [hWY], a
call WaitBGMap
call Pokedex_ResetBGMapMode
ld a, -1
ld [CurPartySpecies], a
ld a, $4
call Function41423
call Function41148
callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
call Pokedex_IncrementDexPointer
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
call Function40b0f
call Pokedex_SetBGMapMode3
call Pokedex_ResetBGMapMode
ret
.a
call Pokedex_GetMonAtCursorPosition
call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
ld a, $0
ld [wcf64], a
ret
.select
call Function41401
ld a, $7
ld [wJumptableIndex], a
xor a
ld [hSCX], a
ld a, $a7
ld [hWX], a
call DelayFrame
ret
.start
call Function41401
ld a, $5
ld [wJumptableIndex], a
xor a
ld [hSCX], a
ld a, $a7
ld [hWX], a
call DelayFrame
ret
.b
ld a, $d
ld [wJumptableIndex], a
ret
Function40217: ; 40217 (10:4217)
call LowVolume
xor a
ld [wPokedexStatus], a
xor a
ld [hBGMapMode], a
call ClearSprites
call Pokedex_LoadCurrentFootprint
call Function407fd
call Function4134f
call Pokedex_GetMonAtCursorPosition
ld [wLastDexEntry], a
callba DisplayDexEntry
call Pokedex_DrawFootprint
call WaitBGMap
ld a, $a7
ld [hWX], a
call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ld a, [CurPartySpecies]
call PlayCry
call Pokedex_IncrementDexPointer
ret
Function40258: ; 40258 (10:4258)
ld de, DexEntryPage_JoypadCoords
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 Pokedex_NextOrPreviousDexEntry
ret nc
call Pokedex_IncrementDexPointer
ret
.a
ld a, [wc7d8]
ld hl, DexEntryPage_Jumptable
call Pokedex_LoadPointer
jp [hl]
.b
ld a, [LastVolume]
and a
jr z, .max_volume
ld a, $77
ld [LastVolume], a
.max_volume
call MaxVolume
ld a, [wcf64]
ld [wJumptableIndex], a
ret
; 40292 (10:4292)
Pokedex_Page: ; 40292
ld a, [wPokedexStatus]
xor $1
ld [wPokedexStatus], a
call Pokedex_GetMonAtCursorPosition
ld [wLastDexEntry], a
callba DisplayDexEntry
call WaitBGMap
ret
; 402aa
Function402aa: ; 402aa (10:42aa)
call Function41401
xor a
ld [wPokedexStatus], a
xor a
ld [hBGMapMode], a
call Function407fd
call Function4134f
call Pokedex_LoadCurrentFootprint
call Pokedex_GetMonAtCursorPosition
ld [wLastDexEntry], a
callba DisplayDexEntry
call Pokedex_DrawFootprint
call Function4143b
call WaitBGMap
call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ld a, [CurPartySpecies]
call PlayCry
ld hl, wJumptableIndex
dec [hl]
ret
; 402e8 (10:42e8)
DexEntryPage_JoypadCoords: ; 402e8
db D_RIGHT | D_LEFT, 4
dwcoord 1, 17
dwcoord 6, 17
dwcoord 11, 17
dwcoord 15, 17
; 402f2
DexEntryPage_Jumptable: ; 402f2
dw Pokedex_Page
dw .Area
dw .Cry
dw .Print
; 402fa
.Area: ; 402fa
call Function41401
xor a
ld [hSCX], a
call DelayFrame
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
call Pokedex_GetMonAtCursorPosition
ld a, [wDexCurrentLocation]
ld e, a
predef _Area
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 Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ret
; 40340
.Cry: ; 40340
call Pokedex_GetMonAtCursorPosition
ld a, [wd265]
call GetCryIndex
ld e, c
ld d, b
call PlayCryHeader
ret
; 4034f
.Print: ; 4034f
call Function41415
xor a
ld [hSCX], a
ld a, [wcf65]
push af
ld a, [wcf64]
push af
ld a, [wJumptableIndex]
push af
callba PrintDexEntry
pop af
ld [wJumptableIndex], a
pop af
ld [wcf64], a
pop af
ld [wcf65], a
call ClearBGPalettes
call DisableLCD
call Pokedex_LoadInvertedFont
call Function4038d
call EnableLCD
call WaitBGMap
ld a, $5
ld [hSCX], a
call Function41427
ret
; 4038d
Function4038d: ; 4038d
call Function407fd
call Pokedex_GetMonAtCursorPosition
callba DisplayDexEntry
call Pokedex_DrawFootprint
ret
; 4039d
Function4039d: ; 4039d (10:439d)
xor a
ld [hBGMapMode], a
call ClearSprites
call Function4087c
call Function4134f
ld a, [wCurrentDexMode]
ld [wc7d8], a
call Function40e5b
call WaitBGMap
ld a, $10
call Function41423
call Pokedex_IncrementDexPointer
ret
Function403be: ; 403be (10:43be)
ld a, [wUnlockedUnownMode]
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 Pokedex_LoadPointer
jp [hl]
.asm_403ea
call Function41401
ld a, $0
ld [wJumptableIndex], a
ret
; 403f3 (10:43f3)
Unknown_403f3: ; 403f3
db D_UP | D_DOWN, 3
dwcoord 2, 4
dwcoord 2, 6
dwcoord 2, 8
; 403fb
Unknown_403fb: ; 403fb
db D_UP | D_DOWN, 4
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, [wCurrentDexMode]
cp b
jr z, .asm_40431
ld a, b
ld [wCurrentDexMode], a
call Pokedex_ChangeMode
call Function40f08
xor a
ld [wDexListingPage], a
ld [wDexListingCursor], a
call Pokedex_InitCursorPosition
.asm_40431
call Function41401
ld a, $0
ld [wJumptableIndex], a
ret
Function4043a: ; 4043a (10:443a)
call Function41401
ld a, $b
ld [wJumptableIndex], a
ret
Function40443: ; 40443 (10:4443)
xor a
ld [hBGMapMode], a
call ClearSprites
call Function408f0
call Function4134f
ld a, $1
ld [wc7d5], a
xor a
ld [wc7d6], a
call Function40fa8
xor a
ld [wDexSearchSlowpokeFrame], a
callba DoDexSearchSlowpokeFrame
call WaitBGMap
ld a, $10
call Function41423
call Pokedex_IncrementDexPointer
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 Pokedex_LoadPointer
jp [hl]
.asm_40495
call Function41401
ld a, $0
ld [wJumptableIndex], a
ret
; 4049e (10:449e)
Unknown_4049e: ; 4049e
db D_UP | D_DOWN, 4
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 AnimateDexSearchSlowpoke
ld a, [wc7d7]
and a
jr nz, .asm_404dc
call Pokedex_ChangeMode
call Function41107
xor a
ld [hBGMapMode], a
call Function408f0
call Function4134f
call Function40fa8
call WaitBGMap
ret
.asm_404dc
ld [wDexListingEnd], a
ld a, [wDexListingPage]
ld [wc7e0], a
ld a, [wDexListingCursor]
ld [wc7e1], a
ld a, [wLastDexEntry]
ld [wcf65], a
xor a
ld [wDexListingPage], a
ld [wDexListingCursor], a
call Function41401
ld a, $9
ld [wJumptableIndex], a
ret
; 40501
Function40501: ; 40501
call Function41401
ld a, $0
ld [wJumptableIndex], a
ret
; 4050a
Function4050a: ; 4050a (10:450a)
xor a
ld [hBGMapMode], a
xor a
hlcoord 0, 0, AttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
call Pokedex_SetBGMapMode4
call Pokedex_ResetBGMapMode
callba DrawPokedexSearchResultsWindow
call Function409cf
ld a, $4
ld [wc7d3], a
call Function40b0f
call Pokedex_SetBGMapMode3
call Pokedex_ResetBGMapMode
call Function40962
ld a, $5
ld [hSCX], a
ld a, $4a
ld [hWX], a
xor a
ld [hWY], a
call WaitBGMap
call Pokedex_ResetBGMapMode
callba DrawPokedexSearchResultsWindow
call Function409cf
call Function41281
ld a, $ff
ld [CurPartySpecies], a
ld a, $4
call Function41423
call Pokedex_IncrementDexPointer
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
call Function40b0f
call Pokedex_SetBGMapMode3
call Pokedex_ResetBGMapMode
ret
.asm_40583
call Pokedex_GetMonAtCursorPosition
call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
ld a, $9
ld [wcf64], a
ret
.asm_40595
ld a, [wc7e0]
ld [wDexListingPage], a
ld a, [wc7e1]
ld [wDexListingCursor], a
ld a, [wcf65]
ld [wLastDexEntry], a
call Function41401
call ClearSprites
call Pokedex_ChangeMode
ld a, $5
ld [wJumptableIndex], a
xor a
ld [hSCX], a
ld a, $a7
ld [hWX], a
ret
Pokedex_UnownMode: ; 405bd (10:45bd)
call Pokedex_LoadUnownFont
call Function409f1
xor a
ld [wc7dd], a
call Function41a58
call Function40658
callba PrintUnownWord
call WaitBGMap
ld a, $16
call Function41423
call Pokedex_IncrementDexPointer
ret
Function405df: ; 405df (10:45df)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON | B_BUTTON
jr nz, .a_b
call Function40610
ret
.a_b
call Function41401
ld a, $7
ld [wJumptableIndex], a
call DelayFrame
call Pokedex_CheckSGB
jr nz, .decompress
callba Function1ddf26
jr .done
.decompress
ld hl, PokedexLZ
ld de, VTiles2 tile $31
lb bc, BANK(PokedexLZ), $3a
call DecompressRequest2bpp
.done
ret
Function40610: ; 40610 (10:4610)
ld hl, hJoyLast
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 .update
.left
ld hl, wc7dd
ld a, [hl]
and a
ret z
ld a, [hl]
dec [hl]
.update
push af
xor a
ld [hBGMapMode], a
pop af
call Function40654
call Function41a58
call Function40658
callba PrintUnownWord
ld a, $1
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
ret
Function40654: ; 40654 (10:4654)
ld c, $7f
jr asm_4065d
Function40658: ; 40658 (10:4658)
ld a, [wc7dd]
ld c, $5a
asm_4065d: ; 4065d (10:465d)
ld e, a
ld d, 0
ld hl, Unknown_40a3e + 2
rept 4
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
ld [hl], c
ret
Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
ld a, [wDexListingCursor]
ld [wBackupDexListingCursor], a
ld a, [wDexListingPage]
ld [wBackupDexListingPage], a
ld hl, hJoyLast
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, [wDexListingEnd]
ld e, a
call Function406ea
jr nc, .nope
call Pokedex_GetMonAtCursorPosition
call Pokedex_CheckSeen
jr nz, .yep
jr .up
.down
ld a, [wc7d3]
ld d, a
ld a, [wDexListingEnd]
ld e, a
call Function406fe
jr nc, .nope
call Pokedex_GetMonAtCursorPosition
call Pokedex_CheckSeen
jr nz, .yep
jr .down
.yep
scf
ret
.nope
ld a, [wBackupDexListingCursor]
ld [wDexListingCursor], a
ld a, [wBackupDexListingPage]
ld [wDexListingPage], a
and a
ret
Function406c5: ; 406c5 (10:46c5)
ld a, [wc7d3]
ld d, a
ld a, [wDexListingEnd]
ld e, a
ld hl, hJoyLast
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, wDexListingCursor
ld a, [hl]
and a
jr z, .asm_406f4
dec [hl]
jr asm_4073f
.asm_406f4
ld hl, wDexListingPage
ld a, [hl]
and a
jr z, asm_4073d
dec [hl]
jr asm_4073f
Function406fe: ; 406fe (10:46fe)
ld hl, wDexListingCursor
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, wDexListingPage
add [hl]
cp e
jr nc, asm_4073d
inc [hl]
jr asm_4073f
asm_40716: ; 40716 (10:4716)
ld hl, wDexListingPage
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, wDexListingPage
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, String_START_SEARCH
call Pokedex_PlaceString
ld a, $32
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
hlcoord 0, 0
lb bc, 7, 7
call Pokedex_PlaceBorder
hlcoord 0, 9
ld bc, $607
call Pokedex_PlaceBorder
hlcoord 1, 11
ld de, String_SEEN
call Pokedex_PlaceString
ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
ld b, EndPokedexSeen - PokedexSeen
call CountSetBits
ld de, wd265
hlcoord 5, 12
lb bc, 1, 3
call PrintNum
hlcoord 1, 14
ld de, String_OWN
call Pokedex_PlaceString
ld hl, PokedexCaught
ld b, EndPokedexCaught - PokedexCaught
call CountSetBits
ld de, wd265
hlcoord 5, 15
lb bc, 1, 3
call PrintNum
hlcoord 1, 17
ld de, String_SELECT_OPTION
call Pokedex_PlaceString
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 Pokedex_PlaceFrontpicTopLeftCorner
ret
; 407e1 (10:47e1)
String_SEEN: ; 407e1
db "SEEN", $ff
String_OWN: ; 407e6
db "OWN", $ff
String_SELECT_OPTION: ; 407ea
db $3b, $48, $49, $4a, $44, $45, $46, $47 ; SELECT > OPTION
String_START_SEARCH: ; 407f2
db $3c, $3b, $41, $42, $43, $4b, $4c, $4d, $4e, $3c, $ff ; START > SEARCH
; 407fd
Function407fd: ; 407fd
call Pokedex_FillBackgroundColor2
hlcoord 0, 0
ld bc, $0f12
call Pokedex_PlaceBorder
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 Pokedex_PlaceString
hlcoord 9, 9
ld de, Unknown_4085c
call Pokedex_PlaceString
hlcoord 0, 17
ld de, Unknown_40867
call Pokedex_PlaceString
call Pokedex_PlaceFrontpicTopLeftCorner
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 Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 8, 18
call Pokedex_PlaceBorder
hlcoord 0, 12
lb bc, 4, 18
call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_408b2
call Pokedex_PlaceString
hlcoord 3, 4
ld de, String_408bd
call PlaceString
ld a, [wUnlockedUnownMode]
and a
ret z
hlcoord 3, 10
ld de, String_408e5
call PlaceString
ret
; 408b2 (10:48b2)
Unknown_408b2: ; 408b2
db $3b, " OPTION ", $3c, $ff
; 408bd
String_408bd: ; 408bd
db "NEW #DEX MODE"
next "OLD #DEX MODE"
next "A to Z MODE"
db "@"
; 408e5
String_408e5: ; 408e5
db "UNOWN MODE@"
; 408f0
Function408f0: ; 408f0 (10:48f0)
call Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 14, 18
call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_4092a
call Pokedex_PlaceString
hlcoord 8, 4
ld de, Unknown_40935
call Pokedex_PlaceString
hlcoord 8, 6
ld de, Unknown_40935
call Pokedex_PlaceString
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 Pokedex_FillBackgroundColor2
hlcoord 0, 0
lb bc, 7, 7
call Pokedex_PlaceBorder
hlcoord 0, 11
lb bc, 5, 18
call Pokedex_PlaceBorder
hlcoord 1, 12
ld de, String_409ae
call PlaceString
ld de, wc7d7
hlcoord 1, 16
lb bc, 1, 3
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 Pokedex_PlaceFrontpicTopLeftCorner
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 Pokedex_FillBackgroundColor2
hlcoord 2, 1
lb bc, 10, 13
call Pokedex_PlaceBorder
hlcoord 2, 14
lb bc, 1, 13
call Pokedex_PlaceBorder
hlcoord 2, 15
ld [hl], $3d
hlcoord 16, 15
ld [hl], $3e
hlcoord 6, 5
call Pokedex_PlaceFrontpicAtHL
ld de, 0
ld b, 0
ld c, 26
.loop
ld hl, UnownDex
add hl, de
ld a, [hl]
and a
jr z, .done
push af
ld hl, Unknown_40a3e
rept 4
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
pop af
add $40 - 1 ; Unown A
ld [hl], a
inc de
inc b
dec c
jr nz, .loop
.done
ld a, b
ld [wc7de], a
ret
; 40a3e (10:4a3e)
Unknown_40a3e: ; 40a3e
; letter, cursor
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
Pokedex_FillBackgroundColor2: ; 40aa6
hlcoord 0, 0
ld a, $32
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
ret
; 40ab2
Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
hlcoord 1, 1
Pokedex_PlaceFrontpicAtHL: ; 40ab5
xor a
ld b, $7
.row
ld c, $7
push af
push hl
.col
ld [hli], a
add $7
dec c
jr nz, .col
pop hl
ld de, SCREEN_WIDTH
add hl, de
pop af
inc a
dec b
jr nz, .row
ret
; 40acd
Pokedex_PlaceString: ; 40acd
.loop
ld a, [de]
cp -1
ret z
inc de
ld [hli], a
jr .loop
; 40ad5
Pokedex_PlaceBorder: ; 40ad5
push hl
ld a, $33
ld [hli], a
ld d, $34
call .FillRow
ld a, $35
ld [hl], a
pop hl
ld de, SCREEN_WIDTH
add hl, de
.loop
push hl
ld a, $36
ld [hli], a
ld d, $7f
call .FillRow
ld a, $37
ld [hl], a
pop hl
ld de, SCREEN_WIDTH
add hl, de
dec b
jr nz, .loop
ld a, $38
ld [hli], a
ld d, $39
call .FillRow
ld a, $3a
ld [hl], a
ret
; 40b06
.FillRow: ; 40b06
ld e, c
.row_loop
ld a, e
and a
ret z
ld a, d
ld [hli], a
dec e
jr .row_loop
; 40b0f
Function40b0f: ; 40b0f (10:4b0f)
; This check is completely useless.
ld a, [wCurrentDexMode]
cp DEXMODE_OLD
jr z, .okay
ld c, 11
jr .resume
.okay
ld c, 11
; End useless check
.resume
; Clear (2 * [wc7d3] + 1) by 11 box starting at 0,1
hlcoord 0, 1
ld a, [wc7d3]
add a
inc a
ld b, a
ld a, " "
call Pokedex_FillBox
; Load de with wPokedexDataStart + [wDexListingPage]
ld a, [wDexListingPage]
ld e, a
ld d, $0
ld hl, wPokedexDataStart
add hl, de
ld e, l
ld d, h
hlcoord 0, 2
ld a, [wc7d3]
.loop
push af
ld a, [de]
ld [wd265], a
push de
push hl
call Function40b55
pop hl
ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
inc de
pop af
dec a
jr nz, .loop
call Function4143b
ret
Function40b55: ; 40b55 (10:4b55)
and a
ret z
call Pokedex_PrintNumberIfOldMode
call Pokedex_PlaceDefaultStringIfNotSeen
ret c
call Pokedex_PlaceCaughtSymbolIfCaught
push hl
call GetPokemonName
pop hl
call PlaceString
ret
Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
ld a, [wCurrentDexMode]
cp DEXMODE_OLD
jr z, .printnum
ret
.printnum
push hl
ld de, -SCREEN_WIDTH
add hl, de
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
pop hl
ret
Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
call Pokedex_CheckCaught
jr nz, .place_caught_symbol
inc hl
ret
.place_caught_symbol
ld a, $4f
ld [hli], a
ret
Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
call Pokedex_CheckSeen
ret nz
inc hl
ld de, .NameNotSeen
call PlaceString
scf
ret
; 40b9a (10:4b9a)
.NameNotSeen: ; 40b9a
db "-----@"
; 40ba0
Pokedex_DrawFootprint: ; 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
Pokedex_GetMonAtCursorPosition: ; 40bb1
ld a, [wDexListingCursor]
ld hl, wDexListingPage
add [hl]
ld e, a
ld d, $0
ld hl, wPokedexDataStart
add hl, de
ld a, [hl]
ld [wd265], a
ret
; 40bc4
Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
push de
push hl
ld a, [wd265]
dec a
call CheckCaughtMon
pop hl
pop de
ret
Pokedex_CheckSeen: ; 40bd0
push de
push hl
ld a, [wd265]
dec a
call CheckSeenMon
pop hl
pop de
ret
; 40bdc
Pokedex_ChangeMode: ; 40bdc
ld hl, wPokedexDataStart
ld bc, wPokedexMetadata - wPokedexDataStart
xor a
call ByteFill
ld a, [wCurrentDexMode]
ld hl, .Jumptable
call Pokedex_LoadPointer
jp [hl]
; 40bf0
.Jumptable: ; 40bf0 (10:4bf0)
dw .NewMode
dw .OldMode
dw Pokedex_ABCMode
.NewMode: ; 40bf6 (10:4bf6)
ld de, NewPokedexOrder
ld hl, wPokedexDataStart
ld c, NUM_POKEMON
.loopnew
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .loopnew
call .FindLastSeen
ret
.OldMode: ; 40c08 (10:4c08)
ld hl, wPokedexDataStart
ld a, $1
ld c, NUM_POKEMON
.loopold
ld [hli], a
inc a
dec c
jr nz, .loopold
call .FindLastSeen
ret
.FindLastSeen: ; 40c18 (10:4c18)
ld hl, wPokedexDataStart + NUM_POKEMON - 1
ld d, NUM_POKEMON
ld e, d
.loopfindend
ld a, [hld]
ld [wd265], a
call Pokedex_CheckSeen
jr nz, .foundend
dec d
dec e
jr nz, .loopfindend
.foundend
ld a, d
ld [wDexListingEnd], a
ret
Pokedex_ABCMode: ; 40c30
xor a
ld [wDexListingEnd], a
ld hl, wPokedexDataStart
ld de, AlphabeticalPokedexOrder
ld c, NUM_POKEMON
.loop1abc
push bc
ld a, [de]
ld [wd265], a
call Pokedex_CheckSeen
jr z, .skipabc
ld a, [wd265]
ld [hli], a
ld a, [wDexListingEnd]
inc a
ld [wDexListingEnd], a
.skipabc
inc de
pop bc
dec c
jr nz, .loop1abc
ld a, [wDexListingEnd]
ld c, 0
.loop2abc
cp NUM_POKEMON
jr z, .doneabc
ld [hl], c
inc hl
inc a
jr .loop2abc
.doneabc
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
lb bc, 4, SCREEN_WIDTH - 2
call Pokedex_PlaceBorder
ld a, [wc7d8]
ld hl, Unknown_40e7d
call Pokedex_LoadPointer
ld e, l
ld d, h
hlcoord 1, 14
call PlaceString
ld a, $1
ld [hBGMapMode], a
ret
; 40e7d
Unknown_40e7d: ; 40e7d
dw .NewMode
dw .OldMode
dw .ABCMode
dw .UnownMode
; 40e85
.NewMode: ; 40e85
db "<PK><MN> are listed by"
next "evolution type.@"
; 40ea6
.OldMode: ; 40ea6
db "<PK><MN> are listed by"
next "official type.@"
; 40ec6
.ABCMode: ; 40ec6
db "<PK><MN> are listed"
next "alphabetically.@"
; 40ee4
.UnownMode: ; 40ee4
db "UNOWN are listed"
next "in catching order.@"
; 40f08
Function40f08: ; 40f08 (10:4f08)
xor a
ld [hBGMapMode], a
hlcoord 0, 12
lb bc, 4, SCREEN_WIDTH - 2
call Pokedex_PlaceBorder
ld de, String_ChangingModesPleaseWait
hlcoord 1, 14
call PlaceString
ld a, $1
ld [hBGMapMode], a
ld c, 64
call DelayFrames
ld de, SFX_CHANGE_DEX_MODE
call PlaySFX
ld c, 64
call DelayFrames
ret
; 40f32 (10:4f32)
String_ChangingModesPleaseWait: ; 40f32
db "Changing modes."
next "Please wait.@"
; 40f4f
Function40f4f: ; 40f4f (10:4f4f)
ld a, [wc7d8]
cp $2
jr nc, .asm_40f63
ld hl, hJoyLast
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
hlcoord 9, 3
ld bc, $408
ld a, $7f
call Pokedex_FillBox
ld a, [wc7d5]
hlcoord 9, 4
call Function40fcd
ld a, [wc7d6]
hlcoord 9, 6
call Function40fcd
ld a, $1
ld [hBGMapMode], a
ret
Function40fcd: ; 40fcd (10:4fcd)
push hl
ld e, a
ld d, 0
ld hl, Strings_40fe4
rept 9
add hl, de
endr
ld e, l
ld d, h
pop hl
call PlaceString
ret
; 40fe4 (10:4fe4)
Strings_40fe4: ; 40fe4
db " ---- @"
db " NORMAL @"
db " FIRE @"
db " WATER @"
db " GRASS @"
db "ELECTRIC@"
db " ICE @"
db "FIGHTING@"
db " POISON @"
db " GROUND @"
db " FLYING @"
db "PSYCHIC @"
db " BUG @"
db " ROCK @"
db " GHOST @"
db " DRAGON @"
db " DARK @"
db " STEEL @"
; 41086
Function41086: ; 41086
ld a, [wc7d6]
and a
call nz, Function41095
ld a, [wc7d5]
and a
call nz, Function41095
ret
; 41095
Function41095: ; 41095
dec a
ld e, a
ld d, 0
ld hl, Unknown_410f6
add hl, de
ld a, [hl]
ld [wc7df], a
ld hl, wPokedexDataStart
ld de, wPokedexDataStart
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 Pokedex_CheckCaught
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 Pokedex_PlaceBorder
ld de, String_41126
hlcoord 1, 14
call PlaceString
ld a, $1
ld [hBGMapMode], a
ld c, $80
call DelayFrames
ret
; 41126
String_41126: ; 41126
db "The specified type"
next "was not found.@"
; 41148
Function41148: ; 41148 (10:5148)
ld a, [wCurrentDexMode]
cp $1
jp z, Function41157
call Function41229
call Function4130e
ret
Function41157: ; 41157 (10:5157)
ld hl, Unknown_41167
ld a, [wDexListingCursor]
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, [wCurrentDexMode]
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, [wDexListingCursor]
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, [wDexListingEnd]
dec a
ld e, a
ld a, [wDexListingCursor]
ld hl, wDexListingPage
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, [wDexListingEnd]
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)
; bc = [de] - 1
ld a, [de]
ld b, a
inc de
ld a, [de]
dec a
ld c, a
inc de
call Pokedex_BlinkInfoScreenCursor
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and D_LEFT | D_UP
and b
jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
jr nz, .MoveCursorRight
ld a, [hl]
and SELECT
and b
jr nz, .Select
call Pokedex_CursorFrameDelay
jr c, .NoAction
ld hl, hJoyLast
ld a, [hl]
and D_LEFT | D_UP
and b
jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
jr nz, .MoveCursorRight
jr .NoAction
.MoveCursorLeft
ld a, [wc7d8]
and a
jr z, .NoAction
call Pokedex_GetCursorPosition
ld [hl], " "
ld hl, wc7d8
dec [hl]
jr .UpdateCursorPosition
.MoveCursorRight
ld a, [wc7d8]
cp c
jr nc, .NoAction
call Pokedex_GetCursorPosition
ld [hl], " "
ld hl, wc7d8
inc [hl]
.UpdateCursorPosition
call Pokedex_GetCursorPosition
ld [hl], "▶"
ld a, $c
ld [wc7d9], a
xor a
ld [wc7da], a
scf
ret
.NoAction
and a
ret
.Select
call Pokedex_GetCursorPosition
ld [hl], " "
ld a, [wc7d8]
cp c
jr c, .Update
ld a, $ff
.Update
inc a
ld [wc7d8], a
jr .UpdateCursorPosition
Pokedex_GetCursorPosition: ; 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
Pokedex_BlinkInfoScreenCursor: ; 413e0 (10:53e0)
ld hl, wc7da
ld a, [hl]
inc [hl]
and $8
jr z, .blink_on
call Pokedex_GetCursorPosition
ld [hl], " "
ret
.blink_on
call Pokedex_GetCursorPosition
ld [hl], "▶"
ret
Pokedex_CursorFrameDelay: ; 413f5 (10:53f5)
ld hl, wc7d9
ld a, [hl]
and a
ret z
dec [hl]
scf
ret
Pokedex_FillBox: ; 413fe (10:53fe)
jp FillBoxWithByte
Function41401: ; 41401 (10:5401)
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, UnknBGPals
ld bc, $40
xor a
call ByteFill
pop af
ld [rSVBK], a
Function41415: ; 41415
ld a, $ff
call DmgToCgbBGPals
ld a, $ff
call DmgToCgbObjPal0
call DelayFrame
ret
Function41423: ; 41423
ld b, a
call GetSGBLayout
Function41427: ; 41427
ld a, $e4
call DmgToCgbBGPals
ld a, $e0
call DmgToCgbObjPal0
ret
; 41432
Pokedex_LoadPointer: ; 41432
ld e, a
ld d, 0
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
ret
; 4143b
Function4143b: ; 4143b
call Pokedex_GetMonAtCursorPosition
call Pokedex_CheckSeen
jr z, .QuestionMark
ld a, [wFirstUnownSeen]
ld [UnownLetter], a
ld a, [wd265]
ld [CurPartySpecies], a
call GetBaseData
ld de, VTiles2
predef GetFrontpic
ret
.QuestionMark
ld a, BANK(sScratch)
call GetSRAMBank
callba LoadQuestionMarkPic
ld hl, VTiles2
ld de, sScratch
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
call Get2bpp
call CloseSRAM
ret
; 41478
Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
call Pokedex_GetMonAtCursorPosition
Pokedex_LoadAnyFootprint: ; 4147b
ld a, [wd265]
dec a
and ($ff ^ $07) ; $f8 ; $1f << 3
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, VTiles2 tile $62
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, 8 tiles
add hl, de
ld e, l
ld d, h
ld hl, VTiles2 tile $64
lb bc, BANK(Footprints), 2
call Request1bpp
ret
; 414b7
Pokedex_LoadGFX: ; 414b7
call DisableLCD
ld hl, VTiles2
ld bc, $31 tiles
xor a
call ByteFill
call Pokedex_LoadInvertedFont
call LoadFontsExtra
ld hl, VTiles2 tile $60
ld bc, $20 tiles
call Pokedex_InvertTiles
call Pokedex_CheckSGB
jr nz, .LoadPokedexLZ
callba LoadSGBPokedexGFX
jr .LoadPokedexSlowpokeLZ
.LoadPokedexLZ
ld hl, PokedexLZ
ld de, VTiles2 tile $31
call Decompress
.LoadPokedexSlowpokeLZ
ld hl, PokedexSlowpokeLZ
ld de, VTiles0
call Decompress
ld a, 6
call SkipMusic
call EnableLCD
ret
Pokedex_LoadInvertedFont: ; 414fb
call LoadStandardFont
ld hl, VTiles1
ld bc, $80 tiles
Pokedex_InvertTiles: ; 41504
.loop
ld a, [hl]
xor $ff
ld [hli], a
dec bc
ld a, b
or c
jr nz, .loop
ret
; 4150e
PokedexLZ: ; 4150e
INCBIN "gfx/pokedex/pokedex.2bpp.lz"
; 416b0
PokedexSlowpokeLZ: ; 416b0
INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
Pokedex_CheckSGB: ; 41a24
ld a, [hCGB]
or a
ret nz
ld a, [hSGB]
dec a
ret
; 41a2c
Pokedex_LoadUnownFont: ; 41a2c
ld a, BANK(sScratch)
call GetSRAMBank
ld hl, UnownFont
ld de, sScratch + $188
ld bc, 39 tiles
ld a, BANK(UnownFont)
call FarCopyBytes
ld hl, sScratch + $188
ld bc, 27 tiles
call Pokedex_InvertTiles
ld de, sScratch + $188
ld hl, VTiles2 tile $40
lb bc, BANK(Pokedex_LoadUnownFont), 27
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, VTiles2 tile $00
predef GetFrontpic
pop af
ld [UnownLetter], a
ret
; 41a7f
_NewPokedexEntry: ; 41a7f
xor a
ld [hBGMapMode], a
callba Function1de247
call Pokedex_ResetBGMapMode
call DisableLCD
call LoadStandardFont
call LoadFontsExtra
call Pokedex_LoadGFX
call Pokedex_LoadAnyFootprint
ld a, [wd265]
ld [CurPartySpecies], a
call Function407fd
call Pokedex_DrawFootprint
hlcoord 0, 17
ld [hl], $3b
inc hl
ld bc, 19
ld a, " "
call ByteFill
callba DisplayDexEntry
call EnableLCD
call WaitBGMap
call GetBaseData
ld de, VTiles2
predef GetFrontpic
ld a, $4
call Function41423
ld a, [CurPartySpecies]
call PlayCry
ret
; 41ad7
Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
ld a, $3
ld [hBGMapMode], a
ld c, 4
call DelayFrames
ret
Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
ld a, $4
ld [hBGMapMode], a
ld c, 4
call DelayFrames
ret
Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
ld a, [hCGB]
and a
jr z, .DMG
call Pokedex_SetBGMapMode4
.DMG
call Pokedex_SetBGMapMode3
ret
Pokedex_ResetBGMapMode: ; 41af7
xor a
ld [hBGMapMode], a
ret
; 41afb