mirror of https://github.com/pret/pokecrystal.git
281 lines
3.9 KiB
NASM
281 lines
3.9 KiB
NASM
AnimateDexSearchSlowpoke: ; 441cf
|
|
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: ; 441fc
|
|
; frame ID, duration
|
|
db 0, 7
|
|
db 1, 7
|
|
db 2, 7
|
|
db 3, 7
|
|
db 4, 7
|
|
db -2
|
|
|
|
DoDexSearchSlowpokeFrame: ; 44207
|
|
ld a, [wDexSearchSlowpokeFrame]
|
|
ld hl, .SlowpokeSpriteData
|
|
ld de, Sprite01
|
|
.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: ; 44228
|
|
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: ; 4424d
|
|
call GetPokemonName
|
|
hlcoord 9, 3
|
|
call PlaceString ; mon species
|
|
ld a, [wd265]
|
|
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, wd265
|
|
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, [wd265]
|
|
dec a
|
|
call CheckCaughtMon
|
|
pop hl
|
|
pop bc
|
|
ret z
|
|
; Get the height of the Pokemon.
|
|
ld a, [CurPartySpecies]
|
|
ld [CurSpecies], 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
|
|
ld hl, sp+$0
|
|
ld d, h
|
|
ld e, l
|
|
hlcoord 12, 7
|
|
lb bc, 2, PRINTNUM_MONEY | 4
|
|
call PrintNum
|
|
hlcoord 14, 7
|
|
ld [hl], $5e ; ft symbol
|
|
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
|
|
ld hl, sp+$0
|
|
ld d, h
|
|
ld e, l
|
|
hlcoord 11, 9
|
|
lb bc, 2, PRINTNUM_RIGHTALIGN | 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
|
|
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
|
|
|
|
String_44331: ; 44331
|
|
db "#@"
|
|
|
|
GetDexEntryPointer: ; 44333
|
|
; 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 +- 1
|
|
ld hl, .PokedexEntryBanks
|
|
ld d, 0
|
|
ld e, a
|
|
add hl, de
|
|
ld b, [hl]
|
|
pop de
|
|
pop hl
|
|
ret
|
|
|
|
.PokedexEntryBanks: ; 44351
|
|
db BANK(PokedexEntries1)
|
|
db BANK(PokedexEntries2)
|
|
db BANK(PokedexEntries3)
|
|
db BANK(PokedexEntries4)
|
|
|
|
GetDexEntryPagePointer: ; 44355
|
|
call GetDexEntryPointer ; b:de
|
|
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
|