summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/wild/fish.asm136
-rw-r--r--engine/fish.asm135
2 files changed, 136 insertions, 135 deletions
diff --git a/data/wild/fish.asm b/data/wild/fish.asm
index 57a262933..de7e57a33 100644
--- a/data/wild/fish.asm
+++ b/data/wild/fish.asm
@@ -1,138 +1,4 @@
-Fish: ; 92402
-; Using a fishing rod.
-; Fish for monsters with rod e in encounter group d.
-; Return monster e at level d.
-
- push af
- push bc
- push hl
-
- ld b, e
- call GetFishGroupIndex
-
- ld hl, FishGroups
-rept 7
- add hl, de
-endr
- call .Fish
-
- pop hl
- pop bc
- pop af
- ret
-; 9241a
-
-
-.Fish: ; 9241a
-; Fish for monsters with rod b from encounter data in FishGroup at hl.
-; Return monster e at level d.
-
- call Random
- cp [hl]
- jr nc, .no_bite
-
- ; Get encounter data by rod:
- ; 0: Old
- ; 1: Good
- ; 2: Super
- inc hl
- ld e, b
- ld d, 0
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ; Compare the encounter chance to select a Pokemon.
- call Random
-.loop
- cp [hl]
- jr z, .ok
- jr c, .ok
-rept 3
- inc hl
-endr
- jr .loop
-.ok
- inc hl
-
- ; Species 0 reads from a time-based encounter table.
- ld a, [hli]
- ld d, a
- and a
- call z, .TimeEncounter
-
- ld e, [hl]
- ret
-
-.no_bite
- ld de, 0
- ret
-
-.TimeEncounter:
- ; The level byte is repurposed as the index for the new table.
- ld e, [hl]
- ld d, 0
- ld hl, TimeFishGroups
-rept 4
- add hl, de
-endr
-
- ld a, [TimeOfDay]
- and 3
- cp NITE
- jr c, .time_species
-rept 2
- inc hl
-endr
-
-.time_species
- ld d, [hl]
- inc hl
- ret
-; 9245b
-
-
-GetFishGroupIndex: ; 9245b
-; Return the index of fishgroup d in de.
-
- push hl
- ld hl, DailyFlags
- bit 2, [hl]
- pop hl
- jr z, .done
-
- ld a, d
- cp FISHGROUP_QWILFISH
- jr z, .qwilfish
- cp FISHGROUP_REMORAID
- jr z, .remoraid
-
-.done
- dec d
- ld e, d
- ld d, 0
- ret
-
-.qwilfish
- ld a, [wFishingSwarmFlag]
- cp FISHSWARM_QWILFISH
- jr nz, .done
- ld d, FISHGROUP_QWILFISH_SWARM
- jr .done
-
-.remoraid
- ld a, [wFishingSwarmFlag]
- cp FISHSWARM_REMORAID
- jr nz, .done
- ld d, FISHGROUP_REMORAID_SWARM
- jr .done
-; 92488
-
-
-FishGroups:
+FishGroups: ; 92488
dbwww 50 percent + 1, .Shore_Old, .Shore_Good, .Shore_Super
dbwww 50 percent + 1, .Ocean_Old, .Ocean_Good, .Ocean_Super
dbwww 50 percent + 1, .Lake_Old, .Lake_Good, .Lake_Super
diff --git a/engine/fish.asm b/engine/fish.asm
new file mode 100644
index 000000000..6aeec10a6
--- /dev/null
+++ b/engine/fish.asm
@@ -0,0 +1,135 @@
+Fish: ; 92402
+; Using a fishing rod.
+; Fish for monsters with rod e in encounter group d.
+; Return monster e at level d.
+
+ push af
+ push bc
+ push hl
+
+ ld b, e
+ call GetFishGroupIndex
+
+ ld hl, FishGroups
+rept 7
+ add hl, de
+endr
+ call .Fish
+
+ pop hl
+ pop bc
+ pop af
+ ret
+; 9241a
+
+
+.Fish: ; 9241a
+; Fish for monsters with rod b from encounter data in FishGroup at hl.
+; Return monster e at level d.
+
+ call Random
+ cp [hl]
+ jr nc, .no_bite
+
+ ; Get encounter data by rod:
+ ; 0: Old
+ ; 1: Good
+ ; 2: Super
+ inc hl
+ ld e, b
+ ld d, 0
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+
+ ; Compare the encounter chance to select a Pokemon.
+ call Random
+.loop
+ cp [hl]
+ jr z, .ok
+ jr c, .ok
+rept 3
+ inc hl
+endr
+ jr .loop
+.ok
+ inc hl
+
+ ; Species 0 reads from a time-based encounter table.
+ ld a, [hli]
+ ld d, a
+ and a
+ call z, .TimeEncounter
+
+ ld e, [hl]
+ ret
+
+.no_bite
+ ld de, 0
+ ret
+
+.TimeEncounter:
+ ; The level byte is repurposed as the index for the new table.
+ ld e, [hl]
+ ld d, 0
+ ld hl, TimeFishGroups
+rept 4
+ add hl, de
+endr
+
+ ld a, [TimeOfDay]
+ and 3
+ cp NITE
+ jr c, .time_species
+rept 2
+ inc hl
+endr
+
+.time_species
+ ld d, [hl]
+ inc hl
+ ret
+; 9245b
+
+
+GetFishGroupIndex: ; 9245b
+; Return the index of fishgroup d in de.
+
+ push hl
+ ld hl, DailyFlags
+ bit 2, [hl]
+ pop hl
+ jr z, .done
+
+ ld a, d
+ cp FISHGROUP_QWILFISH
+ jr z, .qwilfish
+ cp FISHGROUP_REMORAID
+ jr z, .remoraid
+
+.done
+ dec d
+ ld e, d
+ ld d, 0
+ ret
+
+.qwilfish
+ ld a, [wFishingSwarmFlag]
+ cp FISHSWARM_QWILFISH
+ jr nz, .done
+ ld d, FISHGROUP_QWILFISH_SWARM
+ jr .done
+
+.remoraid
+ ld a, [wFishingSwarmFlag]
+ cp FISHSWARM_REMORAID
+ jr nz, .done
+ ld d, FISHGROUP_REMORAID_SWARM
+ jr .done
+; 92488
+
+
+INCLUDE "data/wild/fish.asm"