I have two bits of new research today.
First, a conversation in DMP about the inability to sweet scent in the hail inspired me to try to figure out
what causes a Pokemon to appear when you're walking in grass/caves or surfing. I've got it mostly figured out.
The
Ultimate Pokemon Center has encounter tables that are a little more difficult to parse but have more information than the ones linked to in RNG Reporter.
The relevant information here is density. I noticed the density for any fishing area matched the success rates of the appropriate rods as mingot wrote here:
For encounters fishing
Fishing is handled a bit differently from the previous two encounter scenarios.
First, since you can't sweet scent you have to determine if you are going to catch something at all for a particular frame. To do this, make a note of your method J frame and then locate the this frame - 3 in a method 1 list. Take the last 4 digits of the PID on this method 1 frame and convert it from hexadecimal to decimal.
Divide this number by 656 and discard any remainder or the decimal portion of the result (ie round down).
This gives a result between 0 and 99.
Now depending on your fishing rod here are the results:
Old Rod: Numbers between 0 and 24 mean a catch will be made.
Good Rod: Numbers between 0 and 49 mean a catch will be made.
Super Rod: Numbers between 0 and 74 mean a catch will be made.
Numbers that do not meet the criteria above will result in the "not even a nibble message"
I've found that whenever you make a step in an area with wild Pokemon, the RNG call should determine whether or not there's an encounter. To determine if your target frame can be obtained by moving (not just by Sweet Scent), you'll want to look at your Method J frame - 2 in the Method 1 list for grass/caves or Method J frame - 3 in the Method 1 list for surfing. Get the decimal equivalent of the last 4 digits of the PID of the previously mentioned frame and divide by 656. If the result is less than the density number, there should be an encounter if you move 2 (or 3 in the water) frames before your target.
Whenever you take a step, the process should look something like this:
1. RNG call to determine whether there's an encounter.
2. If there is an encounter, RNG call to determine the slot.
3. If surfing/fishing, RNG call to determine the level.
4. RNG calls to determine the PID and IVs of the monster.
The mystery I haven't quite solved yet is that sometimes, while moving, I pass over some frames in which I'd expect an encounter without actually getting an encounter. I remember reading that sometimes taking a step can advance the RNG by 2 rather than by 1 - could that be it...?
Another thing to look into are the effects that attract/repel monsters, like Illuminate/Stench, Cleanse Tag, Black and White Flutes, and I believe the Bicycle...
---
The other thing is the
level of the wild Pokemon you'll face when you do get in an encounter. The encounter tables at
Ultimate Pokemon Center again have level info. For grass/caves, you'll simply want to use the same level as the slot you're aiming for.
For surfing/fishing, it's a bit trickier. The maximum level is the one listed to the left of the species name for a given slot, and the minimum level is the number in parentheses. The key is the Method J frame - 2 in the Method 1 list. Get the decimal equivalent of the last 4 digits of that frame's PID (let's call it R for random number). Level = Min Level + [R Mod (1 + Max Level - Min Level)] (the Mod operation means take the remainder when you divide R by the term in parentheses)