Skip to content

FRLG Starter Auto-RNG#1205

Merged
Mysticial merged 13 commits into
PokemonAutomation:mainfrom
theastrogoth:tag/starter-rng
Apr 24, 2026
Merged

FRLG Starter Auto-RNG#1205
Mysticial merged 13 commits into
PokemonAutomation:mainfrom
theastrogoth:tag/starter-rng

Conversation

@theastrogoth
Copy link
Copy Markdown
Contributor

Automatically calibrates timings to hit a specific seed and advance for picking up a starter.

User setup (all easily copyable from ten-lines):

  • Seed info
    • seed hex string
    • ordered list of nearby seeds (±5 works well)
    • delay for the target seed
    • button press for the target seed
  • Target advances (total)
  • select desired starter from dropdown
  • save in front of starter's ball (on the south side of the table)

Works for both shiny and non-shiny targets. Tested several times with non-shiny targets (SID-finding has been slower than expected).

}

void PossibleHitsDisplay::reset(){
hits.set("-");
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here you have - as the empty state. But get_hits_string() returns empty string on empty state. Which one should it be?

Copy link
Copy Markdown
Contributor Author

@theastrogoth theastrogoth Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've added a more descriptive message in the case where there are no search hits. - will correspond with the empty state before a search has been done, while No matches found will be displayed if a search turns up empty.

);

bool walk_to_rival_battle(SingleSwitchProgramEnvironment& env, ProControllerContext& context);
bool auto_battle_rival(
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The purpose of battling rival is to get lvl6 stats to refine the search?

Copy link
Copy Markdown
Contributor Author

@theastrogoth theastrogoth Apr 22, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup. There are 3 ways to try to figure out what advance you're hitting when there are multiple possibilities (which is usually the case):

  • Level up and use the new stats to get tighter IV ranges. This can be done with the rival battle and/or some Route 1 wild battles
  • Keep RNG advances the same while slightly changing the seed delay to avoid hitting the exact same stats. Look for common advances (within ±2) in the search results across multiple resets
  • Pick the search result that is closest to your target advances. This is only a good idea after some calibration has been done

Currently, the program attempts to use a combination of these. Things still work fairly well even if we leave out battles entirely -- I originally messed up the part that updates the search filters, so level-up stats weren't actually narrowing the search results, but the program still hit the target reasonably quickly.

@Mysticial Mysticial merged commit 4d3d517 into PokemonAutomation:main Apr 24, 2026
7 checks passed
@theastrogoth theastrogoth deleted the tag/starter-rng branch April 24, 2026 14:52
Koi-3088 pushed a commit to Koi-3088/Arduino-Source that referenced this pull request May 1, 2026
* reorganize FRLG RNG programs

* expose move_to_user

* get working seed/advance search

* implement most of the program

* fixes

* tweaks

* fix filters update

* add get_hits_string() message for no hits

* add missing hits display update

* make a few things const
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants