News:

11 March 2016 - Forum Rules

Main Menu

Fishing in Pokemon Red and Blue

Started by noshius, July 20, 2011, 05:00:03 PM

Previous topic - Next topic

noshius

There's a lot of good information and tools out there about changing the pokemon you find in the tall grass, but I would like to change which pokemon can be found by fishing.

If anyone has specific information on this, please let me know.

For everyone else, I am looking for general strategies on how I might find out where this information is stored in the ROM using a hex editor.

Thanks!

Vehek

In RBY, only the super rod differs by area. The old rod and the good rod always give the same results.

0xE27F-E282: Good rod Pokémon data.

At 0xE919, there's data specifying which maps have super rod data and where the data is.

The first of the super rod fishing data is at 0xE97D. Each map's fishing data starts out with a byte saying how many different Pokémon are available.

noshius

#2
Awesome!  Thanks!  That's just what I'm looking for.

Do you happen to know if the super rod data also effects surfing?  Or is that somewhere else?

Vehek

#3
Pokémon found by surfing are part of the same data as normal grass.
Try reading this document: http://iimarck.us/etc/wild.html

IIRC, only the water routes have any Pokémon found by surfing in Red and Blue.

noshius

QuoteWild data has two parts: grass and water. 0x15 bytes for each, where the first byte is the encounter rate and the rest represent Pokemon. If the encounter rate is zero, it doesn't read the data after it. This means that data can be length 2, 0x16, or 0x2A.

        Example of data with just grass: 03:5501–5516
        Example of data with just water: 03:53FB–5410
        Example of data with grass and water: 03:54D7–5500
        Example of data with neither: 03:52AF-52B0

    It gets to the data by loading the map number from memory location $D35E, then following the corresponding pointer from the table at 03:4EEB.

Forgive my ignorance, but what does "03:5501-5516" mean?

When I look at the data at 0x5501-5516, there is definitely no wild Pokemon data there.
As it is, I have already located the wild grass Pokemon and their format according to http://www.romhacking.net/docs/%5B73%5Dchangewildpokemon.htm
They are from 0xd0e0 to 0xd5c6 and I'm pretty sure that surfing Pokemon aren't there since tentacool does not appear even once.

Could it be that the above is referring to GS instead of RBY?

Vehek

"03:5501-5516" is a range of addresses in GB(C) format.

Quote from: noshius on July 21, 2011, 09:18:29 PMI'm pretty sure that surfing Pokemon aren't there since tentacool does not appear even once.
Oh really? At 0xD3FD, there's a level 10 Tentacool.
I don't think you fully understand how wild Pokémon actually works. Those "dividers" mentioned in the other document aren't dividers, rather, they're the "encounter rates" IIMarckus talks about.

Quote from: noshius on July 21, 2011, 09:18:29 PMCould it be that the above is referring to GS instead of RBY?
Why would something for GS say "Red" in its title?

noshius

Ah, wonderful!  I understand now.  Thank you very much for being patient with me.   :)

KingMike

As to the offsets, 03:5501 is how CPU addresses are referred to. Each ROM bank is $4000, so 03 is 3*$4000 = $C000.
As to 5501, all banks except the first are mapped to address $4000-7FFF in the CPU, so for 5501, $5501-4000 = $1501 bytes from the start of the bank.
So (03 x $4000) + ($5501 - $4000) = $C000 + $1501 = ROM address $D501.
"My watch says 30 chickens" Google, 2018

noshius

Thanks KingMike!  That makes a lot more sense now too.