AnimateDexSearchSlowpoke: ld hl, .FrameIDs ld b, 25 .loop ld a, [hli] ; Wrap around cp $fe jr nz, .ok ld hl, .FrameIDs ld a, [hli] .ok ld [wDexSearchSlowpokeFrame], a ld a, [hli] ld c, a push bc push hl call DoDexSearchSlowpokeFrame pop hl pop bc call DelayFrames dec b jr nz, .loop xor a ld [wDexSearchSlowpokeFrame], a call DoDexSearchSlowpokeFrame ld c, 32 call DelayFrames ret .FrameIDs: ; frame ID, duration db 0, 7 db 1, 7 db 2, 7 db 3, 7 db 4, 7 db -2 DoDexSearchSlowpokeFrame: ld a, [wDexSearchSlowpokeFrame] ld hl, .SlowpokeSpriteData ld de, wVirtualOAMSprite00 .loop ld a, [hli] cp -1 ret z ld [de], a ; y inc de ld a, [hli] ld [de], a ; x inc de ld a, [wDexSearchSlowpokeFrame] ld b, a add a add b add [hl] inc hl ld [de], a ; tile id inc de ld a, [hli] ld [de], a ; attributes inc de jr .loop .SlowpokeSpriteData: dsprite 11, 0, 9, 0, $00, 0 dsprite 11, 0, 10, 0, $01, 0 dsprite 11, 0, 11, 0, $02, 0 dsprite 12, 0, 9, 0, $10, 0 dsprite 12, 0, 10, 0, $11, 0 dsprite 12, 0, 11, 0, $12, 0 dsprite 13, 0, 9, 0, $20, 0 dsprite 13, 0, 10, 0, $21, 0 dsprite 13, 0, 11, 0, $22, 0 db -1 DisplayDexEntry: call GetPokemonName hlcoord 9, 3 call PlaceString ; mon species ld a, [wTempSpecies] ld b, a call GetDexEntryPointer ld a, b push af hlcoord 9, 5 call FarString ; dex species ld h, b ld l, c push de ; Print dex number hlcoord 2, 8 ld a, $5c ; No ld [hli], a ld a, $5d ; . ld [hli], a ld de, wTempSpecies lb bc, PRINTNUM_LEADINGZEROS | 1, 3 call PrintNum ; Check to see if we caught it. Get out of here if we haven't. ld a, [wTempSpecies] dec a call CheckCaughtMon pop hl pop bc ret z ; Get the height of the Pokemon. ld a, [wCurPartySpecies] ld [wCurSpecies], a inc hl ld a, b push af push hl call GetFarHalfword ld d, l ld e, h pop hl inc hl inc hl ld a, d or e jr z, .skip_height push hl push de ; Print the height with two of the four digits will be in front of the decimal point ld hl, sp+$0 ld d, h ld e, l hlcoord 12, 7 lb bc, 2, (2 << 4) | 4 call PrintNum ; Replace the decimal point with a ft symbol hlcoord 14, 7 ld [hl], $5e pop af pop hl .skip_height pop af push af inc hl push hl dec hl call GetFarHalfword ld d, l ld e, h ld a, e or d jr z, .skip_weight push de ; Print the height with four of the five digits will be in front of the decimal point ld hl, sp+$0 ld d, h ld e, l hlcoord 11, 9 lb bc, 2, (4 << 4) | 5 call PrintNum pop de .skip_weight ; Page 1 lb bc, 5, SCREEN_WIDTH - 2 hlcoord 2, 11 call ClearBox hlcoord 1, 10 ld bc, SCREEN_WIDTH - 1 ld a, $61 ; horizontal divider call ByteFill ; page number hlcoord 1, 9 ld [hl], $55 inc hl ld [hl], $55 hlcoord 1, 10 ld [hl], $56 ; P. inc hl ld [hl], $57 ; 1 pop de inc de pop af hlcoord 2, 11 push af call FarString pop bc ld a, [wPokedexStatus] or a ; check for page 2 ret z ; Page 2 push bc push de lb bc, 5, SCREEN_WIDTH - 2 hlcoord 2, 11 call ClearBox hlcoord 1, 10 ld bc, SCREEN_WIDTH - 1 ld a, $61 call ByteFill ; page number hlcoord 1, 9 ld [hl], $55 inc hl ld [hl], $55 hlcoord 1, 10 ld [hl], $56 ; P. inc hl ld [hl], $58 ; 2 pop de inc de pop af hlcoord 2, 11 call FarString ret UnreferencedPOKeString: ; unused db "#@" GetDexEntryPointer: ; return dex entry pointer b:de push hl ld hl, PokedexDataPointerTable ld a, b dec a ld d, 0 ld e, a add hl, de add hl, de ld e, [hl] inc hl ld d, [hl] push de rlca rlca maskbits NUM_DEX_ENTRY_BANKS ld hl, .PokedexEntryBanks ld d, 0 ld e, a add hl, de ld b, [hl] pop de pop hl ret .PokedexEntryBanks: db BANK("Pokedex Entries 001-064") db BANK("Pokedex Entries 065-128") db BANK("Pokedex Entries 129-192") db BANK("Pokedex Entries 193-251") GetDexEntryPagePointer: call GetDexEntryPointer push hl ld h, d ld l, e ; skip species name .loop1 ld a, b call GetFarByte inc hl cp "@" jr nz, .loop1 ; skip height and weight rept 4 inc hl endr ; if c != 1: skip entry dec c jr z, .done ; skip entry .loop2 ld a, b call GetFarByte inc hl cp "@" jr nz, .loop2 .done ld d, h ld e, l pop hl ret INCLUDE "data/pokemon/dex_entry_pointers.asm"