pokecrystal-board/engine/pokemon/search_party.asm

135 lines
1.8 KiB
NASM
Raw Normal View History

2018-06-24 07:09:41 -07:00
_FindPartyMonAboveLevel:
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Level
call FindAboveLevel
ret
2018-06-24 07:09:41 -07:00
_FindPartyMonAtLeastThatHappy:
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Happiness
call FindAtLeastThatHappy
ret
2018-06-24 07:09:41 -07:00
_FindPartyMonThatSpecies:
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Species
jp FindThatSpecies
2018-06-24 07:09:41 -07:00
_FindPartyMonThatSpeciesYourTrainerID:
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1Species
call FindThatSpecies
ret z
ld a, c
2018-01-23 14:39:09 -08:00
ld hl, wPartyMon1ID
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID]
cp [hl]
jr nz, .nope
inc hl
2018-01-23 14:39:09 -08:00
ld a, [wPlayerID + 1]
cp [hl]
jr nz, .nope
ld a, $1
and a
ret
.nope
xor a
ret
2018-06-24 07:09:41 -07:00
FindAtLeastThatHappy:
; Sets the bits for the Pokemon that have a happiness greater than or equal to b.
; The lowest bits are used. Sets z if no Pokemon in your party is at least that happy.
ld c, $0
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
ld d, a
.loop
ld a, d
dec a
push hl
push bc
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
ld a, b
cp [hl]
pop hl
jr z, .greater_equal
jr nc, .lower
.greater_equal
ld a, c
or $1
ld c, a
.lower
sla c
dec d
jr nz, .loop
call RetroactivelyIgnoreEggs
ld a, c
and a
ret
2018-06-24 07:09:41 -07:00
FindAboveLevel:
ld c, $0
2018-01-23 14:39:09 -08:00
ld a, [wPartyCount]
ld d, a
.loop
ld a, d
dec a
push hl
push bc
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
pop bc
ld a, b
cp [hl]
pop hl
jr c, .greater
ld a, c
or $1
ld c, a
.greater
sla c
dec d
jr nz, .loop
call RetroactivelyIgnoreEggs
ld a, c
and a
ret
2018-06-24 07:09:41 -07:00
FindThatSpecies:
; Find species b in your party.
; If you have no Pokemon, returns c = -1 and z.
; If that species is in your party, returns its location in c, and nz.
; Otherwise, returns z.
ld c, -1
2018-01-23 14:39:09 -08:00
ld hl, wPartySpecies
.loop
ld a, [hli]
cp -1
ret z
inc c
cp b
jr nz, .loop
ld a, $1
and a
ret
2018-06-24 07:09:41 -07:00
RetroactivelyIgnoreEggs:
2019-11-23 17:56:22 -08:00
ld e, %11111110
2018-01-23 14:39:09 -08:00
ld hl, wPartySpecies
.loop
ld a, [hli]
cp -1
ret z
cp EGG
jr nz, .skip_notegg
ld a, c
and e
ld c, a
.skip_notegg
rlc e
jr .loop