ref: 2a263629a40e201b1702e2f4e65f1c61360cc2b2
dir: /engine/pokedex.asm/
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