pokecrystal/engine/pokedex/pokedex_2.asm

287 lines
4.1 KiB
NASM
Raw Normal View History

2018-06-24 14:09:41 +00:00
AnimateDexSearchSlowpoke:
2017-12-12 03:59:30 +00:00
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
2018-06-24 14:09:41 +00:00
.FrameIDs:
2017-12-12 03:59:30 +00:00
; frame ID, duration
db 0, 7
db 1, 7
db 2, 7
db 3, 7
db 4, 7
db -2
2018-06-24 14:09:41 +00:00
DoDexSearchSlowpokeFrame:
2017-12-12 03:59:30 +00:00
ld a, [wDexSearchSlowpokeFrame]
2018-01-02 22:26:23 +00:00
ld hl, .SlowpokeSpriteData
2018-01-30 19:52:46 +00:00
ld de, wVirtualOAMSprite00
2017-12-12 03:59:30 +00:00
.loop
ld a, [hli]
cp -1
ret z
2018-01-10 18:47:57 +00:00
ld [de], a ; y
2017-12-12 03:59:30 +00:00
inc de
ld a, [hli]
2018-01-10 18:47:57 +00:00
ld [de], a ; x
2017-12-12 03:59:30 +00:00
inc de
ld a, [wDexSearchSlowpokeFrame]
ld b, a
add a
add b
add [hl]
inc hl
2018-01-10 18:47:57 +00:00
ld [de], a ; tile id
2017-12-12 03:59:30 +00:00
inc de
ld a, [hli]
2018-01-10 18:47:57 +00:00
ld [de], a ; attributes
2017-12-12 03:59:30 +00:00
inc de
jr .loop
2018-06-24 14:09:41 +00:00
.SlowpokeSpriteData:
2018-01-02 22:26:23 +00:00
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
2017-12-12 03:59:30 +00:00
db -1
2018-06-24 14:09:41 +00:00
DisplayDexEntry:
2017-12-12 03:59:30 +00:00
call GetPokemonName
hlcoord 9, 3
call PlaceString ; mon species
ld a, [wTempSpecies]
2017-12-12 03:59:30 +00:00
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
2017-12-12 03:59:30 +00:00
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]
2017-12-12 03:59:30 +00:00
dec a
call CheckCaughtMon
pop hl
pop bc
ret z
; Get the height of the Pokemon.
2018-01-23 22:39:09 +00:00
ld a, [wCurPartySpecies]
ld [wCurSpecies], a
2017-12-12 03:59:30 +00:00
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
2019-06-09 23:52:46 +00:00
; Print the height, with two of the four digits in front of the decimal point
2017-12-12 03:59:30 +00:00
ld hl, sp+$0
ld d, h
ld e, l
hlcoord 12, 7
lb bc, 2, (2 << 4) | 4
2017-12-12 03:59:30 +00:00
call PrintNum
; Replace the decimal point with a ft symbol
2017-12-12 03:59:30 +00:00
hlcoord 14, 7
ld [hl], $5e
2017-12-12 03:59:30 +00:00
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
2019-06-09 23:52:46 +00:00
; Print the weight, with four of the five digits in front of the decimal point
2017-12-12 03:59:30 +00:00
ld hl, sp+$0
ld d, h
ld e, l
hlcoord 11, 9
lb bc, 2, (4 << 4) | 5
2017-12-12 03:59:30 +00:00
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]
2018-01-16 22:59:05 +00:00
or a ; check for page 2
2017-12-12 03:59:30 +00:00
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
2018-06-24 14:09:41 +00:00
UnreferencedPOKeString:
2018-03-03 00:39:16 +00:00
; unused
2017-12-12 03:59:30 +00:00
db "#@"
2018-06-24 14:09:41 +00:00
GetDexEntryPointer:
2017-12-12 03:59:30 +00:00
; 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
2018-01-16 22:27:50 +00:00
maskbits NUM_DEX_ENTRY_BANKS
2017-12-12 03:59:30 +00:00
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")
2017-12-12 03:59:30 +00:00
2018-06-24 14:09:41 +00:00
GetDexEntryPagePointer:
call GetDexEntryPointer
2017-12-12 03:59:30 +00:00
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"