summaryrefslogtreecommitdiff
path: root/engine/search2.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/search2.asm')
-rwxr-xr-xengine/search2.asm134
1 files changed, 134 insertions, 0 deletions
diff --git a/engine/search2.asm b/engine/search2.asm
new file mode 100755
index 000000000..9ef5491f0
--- /dev/null
+++ b/engine/search2.asm
@@ -0,0 +1,134 @@
+_FindGreaterThanThatLevel: ; 4dbd2
+ ld hl, PartyMon1Level
+ call FindGreaterThanThatLevel
+ ret
+
+_FindAtLeastThatHappy: ; 4dbd9
+ ld hl, PartyMon1Happiness
+ call FindAtLeastThatHappy
+ ret
+
+_FindThatSpecies: ; 4dbe0
+ ld hl, PartyMon1Species
+ jp FindThatSpecies
+
+_FindThatSpeciesYourTrainerID: ; 4dbe6
+ ld hl, PartyMon1Species
+ call FindThatSpecies
+ ret z
+ ld a, c
+ ld hl, PartyMon1ID
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ ld a, [PlayerID]
+ cp [hl]
+ jr nz, .nope
+ inc hl
+ ld a, [PlayerID + 1]
+ cp [hl]
+ jr nz, .nope
+ ld a, $1
+ and a
+ ret
+
+.nope
+ xor a
+ ret
+
+FindAtLeastThatHappy: ; 4dc0a
+; 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
+ ld a, [PartyCount]
+ 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
+
+FindGreaterThanThatLevel: ; 4dc31
+ ld c, $0
+ ld a, [PartyCount]
+ 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
+
+FindThatSpecies: ; 4dc56
+; 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
+ ld hl, PartySpecies
+.loop
+ ld a, [hli]
+ cp -1
+ ret z
+ inc c
+ cp b
+ jr nz, .loop
+ ld a, $1
+ and a
+ ret
+
+RetroactivelyIgnoreEggs: ; 4dc67
+ ld e, -2
+ ld hl, PartySpecies
+.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