Update wild Pokémon data to contain 16-bit IDs

Co-Authored-By: aaaaaa123456789 <aaaaaa123456789@acidch.at>
This commit is contained in:
vulcandth
2022-06-14 22:16:18 -05:00
parent 01b55b728e
commit e8bf4f199c
10 changed files with 2269 additions and 2256 deletions
+2 -2
View File
@@ -176,8 +176,8 @@ DEF NUM_HOF_TEAMS EQU 30
DEF NUM_GRASSMON EQU 7 ; data/wild/*_grass.asm table size
DEF NUM_WATERMON EQU 3 ; data/wild/*_water.asm table size
DEF GRASS_WILDDATA_LENGTH EQU 2 + 3 + NUM_GRASSMON * 2 * 3
DEF WATER_WILDDATA_LENGTH EQU 2 + 1 + NUM_WATERMON * 2
DEF GRASS_WILDDATA_LENGTH EQU 2 + (1 + NUM_GRASSMON * 3) * 3
DEF WATER_WILDDATA_LENGTH EQU 2 + (1 + NUM_WATERMON * 3) * 1
DEF FISHGROUP_DATA_LENGTH EQU 1 + 2 * 3
DEF NUM_ROAMMON_MAPS EQU 16 ; RoamMaps table size (see data/wild/roammon_maps.asm)
+1281 -1281
View File
File diff suppressed because it is too large Load Diff
+114 -114
View File
@@ -4,268 +4,268 @@ JohtoWaterWildMons:
def_water_wildmons RUINS_OF_ALPH_OUTSIDE
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
dbw 15, WOOPER
dbw 20, QUAGSIRE
dbw 15, QUAGSIRE
end_water_wildmons
def_water_wildmons UNION_CAVE_1F
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
dbw 15, WOOPER
dbw 20, QUAGSIRE
dbw 15, QUAGSIRE
end_water_wildmons
def_water_wildmons UNION_CAVE_B1F
db 2 percent ; encounter rate
db 15, WOOPER
db 20, QUAGSIRE
db 15, QUAGSIRE
dbw 15, WOOPER
dbw 20, QUAGSIRE
dbw 15, QUAGSIRE
end_water_wildmons
def_water_wildmons UNION_CAVE_B2F
db 4 percent ; encounter rate
db 15, TENTACOOL
db 20, QUAGSIRE
db 20, TENTACRUEL
dbw 15, TENTACOOL
dbw 20, QUAGSIRE
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons SLOWPOKE_WELL_B1F
db 2 percent ; encounter rate
db 15, SLOWPOKE
db 20, SLOWPOKE
db 10, SLOWPOKE
dbw 15, SLOWPOKE
dbw 20, SLOWPOKE
dbw 10, SLOWPOKE
end_water_wildmons
def_water_wildmons SLOWPOKE_WELL_B2F
db 2 percent ; encounter rate
db 15, SLOWPOKE
db 20, SLOWPOKE
db 20, SLOWBRO
dbw 15, SLOWPOKE
dbw 20, SLOWPOKE
dbw 20, SLOWBRO
end_water_wildmons
def_water_wildmons ILEX_FOREST
db 2 percent ; encounter rate
db 15, PSYDUCK
db 10, PSYDUCK
db 15, GOLDUCK
dbw 15, PSYDUCK
dbw 10, PSYDUCK
dbw 15, GOLDUCK
end_water_wildmons
def_water_wildmons MOUNT_MORTAR_1F_OUTSIDE
db 4 percent ; encounter rate
db 15, GOLDEEN
db 20, MARILL
db 20, SEAKING
dbw 15, GOLDEEN
dbw 20, MARILL
dbw 20, SEAKING
end_water_wildmons
def_water_wildmons MOUNT_MORTAR_2F_INSIDE
db 2 percent ; encounter rate
db 20, GOLDEEN
db 25, MARILL
db 25, SEAKING
dbw 20, GOLDEEN
dbw 25, MARILL
dbw 25, SEAKING
end_water_wildmons
def_water_wildmons MOUNT_MORTAR_B1F
db 2 percent ; encounter rate
db 15, GOLDEEN
db 20, MARILL
db 20, SEAKING
dbw 15, GOLDEEN
dbw 20, MARILL
dbw 20, SEAKING
end_water_wildmons
def_water_wildmons WHIRL_ISLAND_SW
db 4 percent ; encounter rate
db 20, TENTACOOL
db 15, HORSEA
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, HORSEA
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons WHIRL_ISLAND_B2F
db 4 percent ; encounter rate
db 15, HORSEA
db 20, HORSEA
db 20, TENTACRUEL
dbw 15, HORSEA
dbw 20, HORSEA
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons WHIRL_ISLAND_LUGIA_CHAMBER
db 4 percent ; encounter rate
db 20, HORSEA
db 20, TENTACRUEL
db 20, SEADRA
dbw 20, HORSEA
dbw 20, TENTACRUEL
dbw 20, SEADRA
end_water_wildmons
def_water_wildmons SILVER_CAVE_ROOM_2
db 2 percent ; encounter rate
db 35, SEAKING
db 35, GOLDUCK
db 35, GOLDEEN
dbw 35, SEAKING
dbw 35, GOLDUCK
dbw 35, GOLDEEN
end_water_wildmons
def_water_wildmons DARK_CAVE_VIOLET_ENTRANCE
db 2 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
dbw 15, MAGIKARP
dbw 10, MAGIKARP
dbw 5, MAGIKARP
end_water_wildmons
def_water_wildmons DARK_CAVE_BLACKTHORN_ENTRANCE
db 2 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
dbw 15, MAGIKARP
dbw 10, MAGIKARP
dbw 5, MAGIKARP
end_water_wildmons
def_water_wildmons DRAGONS_DEN_B1F
db 4 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 10, DRATINI
dbw 15, MAGIKARP
dbw 10, MAGIKARP
dbw 10, DRATINI
end_water_wildmons
def_water_wildmons OLIVINE_PORT
db 2 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_30
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
dbw 20, POLIWAG
dbw 15, POLIWAG
dbw 20, POLIWHIRL
end_water_wildmons
def_water_wildmons ROUTE_31
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
dbw 20, POLIWAG
dbw 15, POLIWAG
dbw 20, POLIWHIRL
end_water_wildmons
def_water_wildmons ROUTE_32
db 6 percent ; encounter rate
db 15, TENTACOOL
db 20, QUAGSIRE
db 20, TENTACRUEL
dbw 15, TENTACOOL
dbw 20, QUAGSIRE
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_34
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_35
db 4 percent ; encounter rate
db 20, PSYDUCK
db 15, PSYDUCK
db 20, GOLDUCK
dbw 20, PSYDUCK
dbw 15, PSYDUCK
dbw 20, GOLDUCK
end_water_wildmons
def_water_wildmons ROUTE_40
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_41
db 6 percent ; encounter rate
db 20, TENTACOOL
db 20, TENTACRUEL
db 20, MANTINE
dbw 20, TENTACOOL
dbw 20, TENTACRUEL
dbw 20, MANTINE
end_water_wildmons
def_water_wildmons ROUTE_42
db 4 percent ; encounter rate
db 20, GOLDEEN
db 15, GOLDEEN
db 20, SEAKING
dbw 20, GOLDEEN
dbw 15, GOLDEEN
dbw 20, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_43
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 10, MAGIKARP
dbw 20, MAGIKARP
dbw 15, MAGIKARP
dbw 10, MAGIKARP
end_water_wildmons
def_water_wildmons ROUTE_44
db 2 percent ; encounter rate
db 25, POLIWAG
db 20, POLIWAG
db 25, POLIWHIRL
dbw 25, POLIWAG
dbw 20, POLIWAG
dbw 25, POLIWHIRL
end_water_wildmons
def_water_wildmons ROUTE_45
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 5, MAGIKARP
dbw 20, MAGIKARP
dbw 15, MAGIKARP
dbw 5, MAGIKARP
end_water_wildmons
def_water_wildmons NEW_BARK_TOWN
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons CHERRYGROVE_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons VIOLET_CITY
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
dbw 20, POLIWAG
dbw 15, POLIWAG
dbw 20, POLIWHIRL
end_water_wildmons
def_water_wildmons CIANWOOD_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons OLIVINE_CITY
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ECRUTEAK_CITY
db 2 percent ; encounter rate
db 20, POLIWAG
db 15, POLIWAG
db 20, POLIWHIRL
dbw 20, POLIWAG
dbw 15, POLIWAG
dbw 20, POLIWHIRL
end_water_wildmons
def_water_wildmons LAKE_OF_RAGE
db 6 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 15, GYARADOS
dbw 15, MAGIKARP
dbw 10, MAGIKARP
dbw 15, GYARADOS
end_water_wildmons
def_water_wildmons BLACKTHORN_CITY
db 4 percent ; encounter rate
db 15, MAGIKARP
db 10, MAGIKARP
db 5, MAGIKARP
dbw 15, MAGIKARP
dbw 10, MAGIKARP
dbw 5, MAGIKARP
end_water_wildmons
def_water_wildmons SILVER_CAVE_OUTSIDE
db 2 percent ; encounter rate
db 35, POLIWHIRL
db 40, POLIWHIRL
db 35, POLIWAG
dbw 35, POLIWHIRL
dbw 40, POLIWHIRL
dbw 35, POLIWAG
end_water_wildmons
db -1 ; end
+630 -630
View File
File diff suppressed because it is too large Load Diff
+72 -72
View File
@@ -4,170 +4,170 @@ KantoWaterWildMons:
def_water_wildmons TOHJO_FALLS
db 4 percent ; encounter rate
db 20, GOLDEEN
db 20, SLOWPOKE
db 20, SEAKING
dbw 20, GOLDEEN
dbw 20, SLOWPOKE
dbw 20, SEAKING
end_water_wildmons
def_water_wildmons VERMILION_PORT
db 2 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_4
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
dbw 10, GOLDEEN
dbw 5, GOLDEEN
dbw 10, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_6
db 2 percent ; encounter rate
db 10, PSYDUCK
db 5, PSYDUCK
db 10, GOLDUCK
dbw 10, PSYDUCK
dbw 5, PSYDUCK
dbw 10, GOLDUCK
end_water_wildmons
def_water_wildmons ROUTE_9
db 4 percent ; encounter rate
db 15, GOLDEEN
db 10, GOLDEEN
db 15, SEAKING
dbw 15, GOLDEEN
dbw 10, GOLDEEN
dbw 15, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_10_NORTH
db 4 percent ; encounter rate
db 15, GOLDEEN
db 10, GOLDEEN
db 15, SEAKING
dbw 15, GOLDEEN
dbw 10, GOLDEEN
dbw 15, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_12
db 6 percent ; encounter rate
db 25, TENTACOOL
db 25, QUAGSIRE
db 25, TENTACRUEL
dbw 25, TENTACOOL
dbw 25, QUAGSIRE
dbw 25, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_13
db 6 percent ; encounter rate
db 25, TENTACOOL
db 25, QUAGSIRE
db 25, TENTACRUEL
dbw 25, TENTACOOL
dbw 25, QUAGSIRE
dbw 25, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_19
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_20
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_21
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_22
db 2 percent ; encounter rate
db 10, POLIWAG
db 5, POLIWAG
db 10, POLIWHIRL
dbw 10, POLIWAG
dbw 5, POLIWAG
dbw 10, POLIWHIRL
end_water_wildmons
def_water_wildmons ROUTE_24
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
dbw 10, GOLDEEN
dbw 5, GOLDEEN
dbw 10, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_25
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
dbw 10, GOLDEEN
dbw 5, GOLDEEN
dbw 10, SEAKING
end_water_wildmons
def_water_wildmons ROUTE_26
db 6 percent ; encounter rate
db 30, TENTACOOL
db 25, TENTACOOL
db 30, TENTACRUEL
dbw 30, TENTACOOL
dbw 25, TENTACOOL
dbw 30, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_27
db 6 percent ; encounter rate
db 20, TENTACOOL
db 15, TENTACOOL
db 20, TENTACRUEL
dbw 20, TENTACOOL
dbw 15, TENTACOOL
dbw 20, TENTACRUEL
end_water_wildmons
def_water_wildmons ROUTE_28
db 2 percent ; encounter rate
db 40, POLIWAG
db 35, POLIWAG
db 40, POLIWHIRL
dbw 40, POLIWAG
dbw 35, POLIWAG
dbw 40, POLIWHIRL
end_water_wildmons
def_water_wildmons PALLET_TOWN
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons VIRIDIAN_CITY
db 2 percent ; encounter rate
db 10, POLIWAG
db 5, POLIWAG
db 10, POLIWHIRL
dbw 10, POLIWAG
dbw 5, POLIWAG
dbw 10, POLIWHIRL
end_water_wildmons
def_water_wildmons CERULEAN_CITY
db 4 percent ; encounter rate
db 10, GOLDEEN
db 5, GOLDEEN
db 10, SEAKING
dbw 10, GOLDEEN
dbw 5, GOLDEEN
dbw 10, SEAKING
end_water_wildmons
def_water_wildmons VERMILION_CITY
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
def_water_wildmons CELADON_CITY
db 2 percent ; encounter rate
db 20, GRIMER
db 15, GRIMER
db 15, MUK
dbw 20, GRIMER
dbw 15, GRIMER
dbw 15, MUK
end_water_wildmons
def_water_wildmons FUCHSIA_CITY
db 2 percent ; encounter rate
db 20, MAGIKARP
db 15, MAGIKARP
db 10, MAGIKARP
dbw 20, MAGIKARP
dbw 15, MAGIKARP
dbw 10, MAGIKARP
end_water_wildmons
def_water_wildmons CINNABAR_ISLAND
db 6 percent ; encounter rate
db 35, TENTACOOL
db 30, TENTACOOL
db 35, TENTACRUEL
dbw 35, TENTACOOL
dbw 30, TENTACOOL
dbw 35, TENTACRUEL
end_water_wildmons
db -1 ; end
+1 -1
View File
@@ -1,6 +1,6 @@
MACRO mon_prob
; percent, index
db \1, \2 * 2
db \1, \2 * 3
ENDM
GrassMonProbTable:
+42 -42
View File
@@ -6,56 +6,56 @@ SwarmGrassWildMons:
map_id DARK_CAVE_VIOLET_ENTRANCE
db 4 percent, 4 percent, 4 percent ; encounter rates: morn/day/nite
; morn
db 3, GEODUDE
db 3, DUNSPARCE
db 2, ZUBAT
db 2, GEODUDE
db 2, DUNSPARCE
db 4, DUNSPARCE
db 4, DUNSPARCE
dbw 3, GEODUDE
dbw 3, DUNSPARCE
dbw 2, ZUBAT
dbw 2, GEODUDE
dbw 2, DUNSPARCE
dbw 4, DUNSPARCE
dbw 4, DUNSPARCE
; day
db 3, GEODUDE
db 3, DUNSPARCE
db 2, ZUBAT
db 2, GEODUDE
db 2, DUNSPARCE
db 4, DUNSPARCE
db 4, DUNSPARCE
dbw 3, GEODUDE
dbw 3, DUNSPARCE
dbw 2, ZUBAT
dbw 2, GEODUDE
dbw 2, DUNSPARCE
dbw 4, DUNSPARCE
dbw 4, DUNSPARCE
; nite
db 3, GEODUDE
db 3, DUNSPARCE
db 2, ZUBAT
db 2, GEODUDE
db 2, DUNSPARCE
db 4, DUNSPARCE
db 4, DUNSPARCE
dbw 3, GEODUDE
dbw 3, DUNSPARCE
dbw 2, ZUBAT
dbw 2, GEODUDE
dbw 2, DUNSPARCE
dbw 4, DUNSPARCE
dbw 4, DUNSPARCE
; Yanma swarm
map_id ROUTE_35
db 10 percent, 10 percent, 10 percent ; encounter rates: morn/day/nite
; morn
db 12, NIDORAN_M
db 12, NIDORAN_F
db 12, YANMA
db 14, YANMA
db 14, PIDGEY
db 10, DITTO
db 10, DITTO
dbw 12, NIDORAN_M
dbw 12, NIDORAN_F
dbw 12, YANMA
dbw 14, YANMA
dbw 14, PIDGEY
dbw 10, DITTO
dbw 10, DITTO
; day
db 12, NIDORAN_M
db 12, NIDORAN_F
db 12, YANMA
db 14, YANMA
db 14, PIDGEY
db 10, DITTO
db 10, DITTO
dbw 12, NIDORAN_M
dbw 12, NIDORAN_F
dbw 12, YANMA
dbw 14, YANMA
dbw 14, PIDGEY
dbw 10, DITTO
dbw 10, DITTO
; nite
db 12, NIDORAN_M
db 12, NIDORAN_F
db 12, YANMA
db 14, YANMA
db 14, HOOTHOOT
db 10, DITTO
db 10, DITTO
dbw 12, NIDORAN_M
dbw 12, NIDORAN_F
dbw 12, YANMA
dbw 14, YANMA
dbw 14, HOOTHOOT
dbw 10, DITTO
dbw 10, DITTO
db -1 ; end
+107 -81
View File
@@ -33,6 +33,10 @@ FindNest:
ld bc, SCREEN_AREA
xor a
call ByteFill
ld a, [wNamedObjectIndex]
call GetPokemonIndexFromID
ld b, h
ld c, l
ld a, e
and a
jr nz, .kanto
@@ -56,11 +60,13 @@ FindNest:
ld a, [hl]
cp -1
ret z
push bc
push hl
; use the math buffers as storage, since we're not doing any math
ld a, [hli]
ld b, a
ldh [hMathBuffer], a
ld a, [hli]
ld c, a
ldh [hMathBuffer + 1], a
inc hl
inc hl
inc hl
@@ -74,17 +80,20 @@ FindNest:
pop hl
ld bc, GRASS_WILDDATA_LENGTH
add hl, bc
pop bc
jr .FindGrass
.FindWater:
ld a, [hl]
cp -1
ret z
push bc
push hl
; use the math buffers as storage, since we're not doing any math
ld a, [hli]
ld b, a
ldh [hMathBuffer], a
ld a, [hli]
ld c, a
ldh [hMathBuffer + 1], a
inc hl
ld a, NUM_WATERMON
call .SearchMapForMon
@@ -96,16 +105,20 @@ FindNest:
pop hl
ld bc, WATER_WILDDATA_LENGTH
add hl, bc
pop bc
jr .FindWater
.SearchMapForMon:
inc hl
.ScanMapLoop:
push af
ld a, [wNamedObjectIndex]
cp [hl]
ld a, [hli]
cp c
ld a, [hli]
jr nz, .next_mon
cp b
jr z, .found
inc hl
.next_mon
inc hl
pop af
dec a
@@ -115,7 +128,10 @@ FindNest:
.found
pop af
jp .AppendNest
ldh a, [hMathBuffer]
ld b, a
ldh a, [hMathBuffer + 1]
ld c, a
.AppendNest:
push de
@@ -264,7 +280,7 @@ ChooseWildEncounter:
inc hl
inc hl
ld a, [wTimeOfDay]
ld bc, NUM_GRASSMON * 2
ld bc, NUM_GRASSMON * 3
call AddNTimes
ld de, GrassMonProbTable
@@ -313,15 +329,27 @@ ChooseWildEncounter:
inc b
; Store the level
.ok
; BUG: ChooseWildEncounter doesn't really validate the wild Pokemon species (see docs/bugs_and_glitches.md)
ld a, b
ld [wCurPartyLevel], a
ld b, [hl]
ld a, [hli]
ld h, [hl]
ld l, a
call ValidateTempWildMonSpecies
jr c, .nowildbattle
ld a, b
cp UNOWN
ld a, l
sub LOW(UNOWN)
jr nz, .done
if HIGH(UNOWN) > 1
ld a, h
cp HIGH(UNOWN)
elif HIGH(UNOWN) == 1
ld a, h
dec a
else
or h
endc
jr nz, .done
ld a, [wUnlockedUnowns]
@@ -329,21 +357,18 @@ ChooseWildEncounter:
jr z, .nowildbattle
.done
jr .loadwildmon
.nowildbattle
ld a, 1
and a
ret
.loadwildmon
ld a, b
call GetPokemonIDFromIndex
ld [wTempWildMonSpecies], a
.startwildbattle
xor a
ret
.nowildbattle
ld a, 1
and a
ret
INCLUDE "data/wild/probabilities.asm"
CheckRepelEffect::
@@ -461,6 +486,9 @@ CopyCurrMapDE:
ld e, a
ret
LookUpGrassJohtoWildmons::
ld hl, JohtoGrassWildMons
ld bc, GRASS_WILDDATA_LENGTH
LookUpWildmonsForMapDE:
.loop
push hl
@@ -494,9 +522,11 @@ InitRoamMons:
; initialize wRoamMon structs
; species
ld a, RAIKOU
ld hl, RAIKOU
call GetPokemonIDFromIndex
ld [wRoamMon1Species], a
ld a, ENTEI
ld hl, ENTEI
call GetPokemonIDFromIndex
ld [wRoamMon2Species], a
; level
@@ -754,75 +784,89 @@ _BackUpMapIndices:
INCLUDE "data/wild/roammon_maps.asm"
ValidateTempWildMonSpecies:
; Due to a development oversight, this function is called with the wild Pokemon's level, not its species, in a.
and a
jr z, .nowildmon ; = 0
cp NUM_POKEMON + 1 ; 252
jr nc, .nowildmon ; >= 252
and a ; 1 <= Species <= 251
ret
.nowildmon
ld a, h
or l
scf
ret z
ld a, h
if LOW(NUM_POKEMON) == $FF
cp HIGH(NUM_POKEMON) + 1
else
cp HIGH(NUM_POKEMON)
ccf
ret nz
ld a, l
cp LOW(NUM_POKEMON) + 1
endc
ccf
ret
; Finds a rare wild Pokemon in the route of the trainer calling, then checks if it's been Seen already.
; The trainer will then tell you about the Pokemon if you haven't seen it.
RandomUnseenWildMon:
GetCallerRouteWildGrassMons:
farcall GetCallerLocation
ld d, b
ld e, c
ld hl, JohtoGrassWildMons
ld bc, GRASS_WILDDATA_LENGTH
call LookUpWildmonsForMapDE
jr c, .GetGrassmon
jr c, .found
ld hl, KantoGrassWildMons
call LookUpWildmonsForMapDE
jr nc, .done
.GetGrassmon:
; BUG: RandomUnseenWildMon always picks a morning Pokémon species (see docs/bugs_and_glitches.md)
push hl
ld bc, 5 + 4 * 2 ; Location of the level of the 5th wild Pokemon in that map
ret nc ; no carry = no grass wild mons for that route
.found
ld bc, 5 ; skip the map ID and encounter rates
add hl, bc
ld a, [wTimeOfDay]
ld bc, NUM_GRASSMON * 2
ld bc, NUM_GRASSMON * 3
call AddNTimes
scf
ret
; Finds a rare wild Pokemon in the route of the trainer calling, then checks if it's been Seen already.
; The trainer will then tell you about the Pokemon if you haven't seen it.
RandomUnseenWildMon:
call GetCallerRouteWildGrassMons
jr nc, .done
push hl
.randloop1
call Random
and %11
jr z, .randloop1
dec a
ld bc, 10 ; skip three mons plus the level of the fourth
add hl, bc
ld c, a
ld b, 0
add hl, bc
add hl, bc
; We now have the pointer to one of the last (rarest) three wild Pokemon found in that area.
inc hl
ld c, [hl] ; Contains the species index of this rare Pokemon
add hl, bc
; We now have the pointer to one of the last (rarest) three wild Pokemon found in that area.
; Load the species index of this rare Pokemon
ld a, [hli]
ld d, [hl]
ld e, a
pop hl
ld de, 5 + 0 * 2
add hl, de
inc hl ; Species index of the most common Pokemon on that route
ld b, 4
.loop2
ld a, [hli]
cp c ; Compare this most common Pokemon with the rare one stored in c.
cp e ; Compare this common Pokemon with the rare one stored in de.
ld a, [hli]
jr nz, .next
cp d
jr z, .done
.next
inc hl
dec b
jr nz, .loop2
; This Pokemon truly is rare.
push bc
dec c
ld a, c
call CheckSeenMon
push de
call CheckSeenMonIndex
pop bc
jr nz, .done
; Since we haven't seen it, have the caller tell us about it.
ld de, wStringBuffer1
call CopyName1
ld a, c
ld h, b
ld l, c
call GetPokemonIDFromIndex
ld [wNamedObjectIndex], a
call GetPokemonName
ld hl, .JustSawSomeRareMonText
@@ -841,37 +885,19 @@ RandomUnseenWildMon:
text_end
RandomPhoneWildMon:
farcall GetCallerLocation
ld d, b
ld e, c
ld hl, JohtoGrassWildMons
ld bc, GRASS_WILDDATA_LENGTH
call LookUpWildmonsForMapDE
jr c, .ok
ld hl, KantoGrassWildMons
call LookUpWildmonsForMapDE
.ok
ld bc, 5 + 0 * 2
add hl, bc
ld a, [wTimeOfDay]
inc a
ld bc, NUM_GRASSMON * 2
.loop
dec a
jr z, .done
add hl, bc
jr .loop
.done
call GetCallerRouteWildGrassMons
call Random
and %11
ld c, a
ld b, 0
add hl, bc
add hl, bc
add hl, bc
inc hl
ld a, [hl]
ld a, [hli]
ld h, [hl]
ld l, a
call GetPokemonIDFromIndex
ld [wNamedObjectIndex], a
call GetPokemonName
ld hl, wStringBuffer1
+14 -33
View File
@@ -204,46 +204,25 @@ OaksPKMNTalk4:
ld b, 0
add hl, bc
add hl, bc
ld b, [hl]
inc hl
ld c, [hl]
; bc now contains the chosen map's group and number indices.
push bc
ld a, [hli]
ld d, a
ld e, [hl]
; de now contains the chosen map's group and number indices.
push de
farcall LookUpGrassJohtoWildmons
; Search the JohtoGrassWildMons array for the chosen map.
ld hl, JohtoGrassWildMons
.loop
ld a, BANK(JohtoGrassWildMons)
call GetFarByte
cp -1
jr z, .overflow
inc hl
cp b
jr nz, .next
ld a, BANK(JohtoGrassWildMons)
call GetFarByte
cp c
jr z, .done
.next
dec hl
ld de, GRASS_WILDDATA_LENGTH
add hl, de
jr .loop
.done
; Point hl to the list of morning Pokémon., skipping percentages
rept 4
inc hl
endr
; Generate a number, either 0, 1, or 2, to choose a time of day.
.loop2
call Random
maskbits NUM_DAYTIMES
cp DARKNESS_F
jr z, .loop2
ld bc, 2 * NUM_GRASSMON
; Point hl to the list of Pokémon for that time of day, skipping the map ID and the percentages
ld bc, 5
add hl, bc
ld c, 3 * NUM_GRASSMON
call AddNTimes
.loop3
; Choose one of the middle three Pokemon.
call Random
@@ -256,9 +235,11 @@ endr
ld d, 0
add hl, de
add hl, de
add hl, de
inc hl ; skip level
ld a, BANK(JohtoGrassWildMons)
call GetFarByte
call GetFarWord
call GetPokemonIDFromIndex
ld [wNamedObjectIndex], a
ld [wCurPartySpecies], a
call GetPokemonName
+6
View File
@@ -63,3 +63,9 @@ PokedexFlagAction::
ld a, c
and a
ret
CheckSeenMonIndex::
ld hl, wPokedexSeen
ld b, CHECK_FLAG
dec de
jp FlagAction