mirror of https://github.com/pret/pokecrystal.git
2663 lines
40 KiB
NASM
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
|