FR/LG Starter Manip & SID Deduction
Overview
The first step of learning to manipulate the RNG of Pokemon FireRed & LeafGreen begins with the Starter.
Once successful, you'll have both a Shiny Starter Pokemon and know your
Secret ID for manipulating future Shiny Pokemon.
It should be noted that you cannot control your TID or SID with this
method, but instead are using your TID and a Shiny Starter to deduce
your Secret ID.
Recommended Setup
Hardware Requirements
-
Pokemon Fire Red/Leaf Green (any language)
GameBoy Advance, Nintendo DS or DS Lite, Nintendo 3DS w/ open_agb_firm -
Windows / Mac OS / Ubuntu PC
In-Game Requirements
- Have a save file with text speed set to FAST
Tools Used
Video Examples
The Guide
Settings
It's important that TEXT SPEED is set to FAST, before actually creating the save file for the RNG. The game will remember these settings, even when creating a New Game over an existing save file. So if you don't already have a save file, create a dummy save and then set TEXT SPEED to FAST before proceeding.

New Game Timer
The first step to getting a shiny starter is to start a New Game, and get to the Name Entry screen, and enter your desired name. There is no time pressure here, the RNG starts moving after hitting the OK button.

After entering your desired name, open EonTimer, click the Custom tab (C) and then hit the + button once.
Set Unit to "Advances" and Target to 901.

Then click the gear icon in the bottom left, and make sure your console setting is correct.

You should also click the gear icon, and make sure your console setting is correct. regular GBA and GBA Games on the DS have slightly different frame rates.
GBA: 59.7275 fps
NDS - Slot 2: 59.6555 fps
Having it set incorrectly will make longer timers inconsistent relative to the actual game.
I
If playing on 3DS using open_agb_firm, you would also select NDS - Slot 2.
Once everything is set up correctly, advance to the next screen and
start EonTimer at the same time.
The goal is to press A with the 6th beep on this text box:
"Your very own POKEMON legend is about to unfold!"

This will cause the game to advance to the players bedroom, at which point, you can open your Trainer Card and check your Trainer ID.

Finding Potential SIDs
The Trainer ID was set immediately upon leaving the Naming Screen.
Fire Red & Leaf Green used this Trainer ID to seed the RNG, which then
determines your Secret ID.
Upon pressing A at the final text box of the intro cutscene, the Secret
ID is locked in 249 RNG advances later.
Note: Frames Vs Advances
Frames and Advances are often used interchangeably across RNG documentation, guides, and tools.
Frames is a commonly used term to describe game-state intervals in Speedrunning and Fighting Games. Updating video game logic every visual frame is a common practice, and this is generally how it works Generation 3, but not always
However, in later games this isn’t always the case. The frames you visually see might be completely separate from the game’s logic. RNG Advances accurately describes what’s happening, no matter the situation.
By setting EonTimer's Target to 901, this gives us enough time to advance past the text boxes, and then hit the final A-Press 249 advances before our target Secret ID. Assuming we're frame perfect, the game will ask the RNG for a number 1150 advances after the TID was set.
NOTE: Non-English games will have slightly different advance
values than 249, due to the number of characters needed for the next
unskippable text box. This will also vary based on the TEXT SPEED
setting. For consistent results, choose FAST.
SID Advance Values on FAST text speed.
Language | Advances | Secret ID from 901 Timer |
---|---|---|
English | -249 | 1150 |
Japanese | -194 | 1095 |
Italian | -236 | 1137 |
French | -205 | 1106 |
German | -208 | 1109 |
Spanish | -202 | 1103 |
We can view all of these potential SIDs using the IDs tool in PokeFinder, and selecting the FRLGE tab.
Enter the TID from your trainer card, and set Initial Advances to 1140 and Max Advances to 20. Click Generate to populate the results table.
Our example TID was 13789 (ignore the leading zero, if your ID has one), and we find the Target SID by scrolling to Advance #1150, which in our example should be 53782.

There's no guarantee that your first attempt was frame perfect, but with this list we can use process of elimination to figure out which Secret ID is correct.
By attempting to RNG manipulate a Shiny Starter Pokemon, we can know for certain which Secret ID on this list is correct.
Our next step is to progress the game up until we can SAVE right in front of the Starter PokeBall.
Make sure to grab the POTION from the PC in your Bedroom!

From here we can safely reset and quickly claim our Starter Pokemon
using EonTimer, but since Shiny Pokemon vary based on Trainer ID and
Secret ID, the target seed and advances will be different for everyone.
We can use Lincoln's web-based Gen 3 RNG Tools to search for nearby
potential Shiny targets, and get the numbers necessary to set up
EonTimer.
Calculating Starter Timer
To get started, open Lincoln's G3 Calibration here.
Select your Game, and then leave the Sound, L, A, and Held Button settings on the default values of Mono, L=A, A, and None. Make sure to select your System, as the boot-up times and frame-rates are slightly different based on the console, and the tool accounts for those.

Open the settings in-game, and change Sound and Button Mode to match these settings in the tool.
Make sure to SAVE after confirming these settings!

Leave the default Target Seed (hex) and Seed +\-.
Set Advance Range to 1000 to 5000. This means your maximum wait time will be ~2 minutes.
Leave the Encounter Method as Static 1. This is the same for all stationary and gift Pokemon.
Enter the Trainer ID and Secret ID you've just gotten from
PokeFinder.
Select Star/Square from the Shiny Filter. This will filter to all
possible Shiny targets.
Square Shiny is only relevant if sending to Sword/Shield, but the option is there.
Set Nature Filter to Any.
Leave the IV Ranges as 0 ~ 31.

Once these settings are correct, click Submit to search for all the potential Shiny Pokemon you could attempt to RNG.
WARNING: Your Browser might freeze momentarily while calculating, just
wait. If anything pops up click "Wait" or "Continue".
When the search is complete, there should be a table of potential
Shiny Seeds and Advances.
You can select any of these, but prioritize the lowest Advance number to make attempts faster!
If you get zero Shiny results, you can alter the settings above to a different SOUND or BUTTON MODE.
Just remember to update those settings in-game as well.

The highlighted option was the best for my example run, so now we can set up EonTimer to aim for that Shiny specifically. Open EonTimer and click the + button to add a second timer. Set the first timer Unit to ms and the second timer Unit to Advances.

Enter the Seed ms value next to your chosen seed, and the Advances number from the search results.
EonTimer is now set up to make your first attempt at the potential Shiny.
Now you'll need to update the Target Seed and Advance Range boxes in G3 Calibration before continuing.
Replace the Target Seed (hex) with the selected Seed from the search. In our example this is 10C5.
Make the Minimum for Advance Range 200 less than your target, and the Maximum 200 advances more.
Set the Shiny Filter back to Any.
Set the Nature Filter to Hardy, to restore IV Calculation options.
Set the IV Calculator Species, to your Starter of choice.

The Calibration tab is now fully set up for this Shiny target.
We're now ready for...
The First Attempt
The startup sequence is slightly different depending on the console being used.
Reference the following Boot method for your system of choice:
Boot Methods:
NDS: Press A on "Start GBA Game" from the DS Home Screen
OFFICIAL GAMEBOY PLAYER: Press the "Change Game Pak" button, and confirm to Hard Reset
3DS OPEN_AGB_FIRM: Press A to boot the Fire Red/Leaf Green ROM file
GAMEBOY INTERFACE (GBI): Hold and Release the RESET button, or use Hard Reset Button Combo
(Note: GBI boot times and frame-rate are identical to real GBA, so use GBA in the system selector)
GBA: Flick the Power Switch
GBA users might find this difficult. In this case, you can add a 3rd section to EonTimer's Custom tab at the top, and set it to 5000ms. This creates what we call a pre-timer that will count down 5 seconds, ending in 6 beeps before the actual seed timer starts. Using a pre-timer allows you to time your power-switch flip with the 6th beep, removing the need to coordinate a switch-flip and button press.
The general flow of each attempt is as follows:
1. Boot the game and click Start on EonTimer at the same time.
2. Wait for the ENTIRE Introduction to play, DO NOT PRESS ANY BUTTONS or SKIP. Your first timer should be long enough to make it to the Title Screen.
3. When the timer is close to completion, you will hear the 1st of 6 beeps.
4. ON THE 6TH BEEP, PRESS and HOLD the A Button.
5. Once the File Load screen appears, you can release all buttons and press A to load your save.
6. Mash B to skip past any "Previously on..." screens.
7. Mash A on the starter PokeBall, and get to the "This POKéMON is really quite energetic!" text box.
8. When the second timer is close to completion, you will hear the 1st of 6 beeps.
9. ON THE 6TH BEEP PRESS A to lock-in your starter.
Note: How do Seeds work?
Seeds in FireRed and LeafGreen are determined by an ultra-fast timer in the GBA's CPU called Timer1.
Traditional soft resetting using A + B + START + SELECT does not work, because the starting value of Timer1 is only consistent from a hard boot of the game-- which is identified by the presence of the GAMEBOY BIOS screen.
Every input the user makes during the boot up sequence, as well as the Sound and Button Mode settings in the save file, have an effect on Timer1 and therefore, the initial seeding process.
For this reason, it's important to not press any buttons or skip the intro cutscene, until the final button press at the Title Screen. The seed is set while the game transitions from the Title Screen to the File Load screen.
Reducing this process to only providing a single input after a specific amount of time, bypasses all the potential interference with Timer1 and allows the player to consistently hit the same seeds.
This is possible because even though Timer1 is MUCH faster than 60fps, the game only checks for button inputs every frame. The seeds were tested and recorded using an automated bot that performs the button input frame perfectly, after a set number of milliseconds.
Clicking the "Show Seeds" button will display a list of all the Seeds the program is currently using for its search. The "Target Seed" should appear in the middle of the list, and the seeds around it are in sequential order based on the millisecond value the bot was programmed to use.
The final ms value shown for each seed in the search results, is automatically adjusted for the selected system based on hard coded boot-time offsets, and the frame-rate of the chosen system.
Initial Calibration
Open your Pokemon's summary and look at the Nature and Stats.

Open the Calibration tab from Lincoln's web tools, select your starter species, select the Nature and then enter Stats into the IV Calculator in the following order: LEVEL HP ATK DEF SPA SPD SPE
Then click Calculate IVs.

This should automatically populate the Stat ranges with the best guess possible given the Level 5 data.
Clicking Submit will search for all the potential starters this could be, and you'll likely get many results:

In order to narrow down this range we need to reach Level 6.
Ideally you win the Rival Battle (grab the POTION from the PC in your
Bedroom).
If you lose you can use Wild Pokemon. MAKE SURE NOT TO SAVE.
Enter the Level 6 stats as the next row in the IV Calculator and then hit Calculate IVs again.

Click Submit again, and hopefully the range is reduced down to only 1 result, which confirms the Pokemon hit.

If you still have more than 1 result, you can go to Level 7 or 8.
You must be careful of gaining Effort Values (EVs) when leveling up.
EVs will increase stats beyond their untrained values and interfere with the IV calculations
Each battle will gain +1 EV in a specific stat. Don't gain more than 3 EVs for a single stat.
EVs yields for Pokemon in FRLG early game
Bulbasaur +1 Special Attack
Squirtle +1 Defense
Charmander +1 Speed
Pidgey +1 Speed
Rattata +1 Speed
Mankey +1 Attack
Spearow +1 Speed
If this still yields no results, there was an error in the attempt and you must check all your settings and try again. Double check in-game settings match the settings in the g3 calibration tool, and that the timers match your target seed/advance.
This single result gives us the values needed to adjust EonTimer
appropriately to make sure our next attempt is closer to our target.
Enter the Seed ms and the Advance number into the Hit fields in
EonTimer, and then click Update.

The Calibration numbers should update, and you can turn off your game and make another attempt using the new EonTimer calibration.
Attempts & Adjustment
Repeat the same steps of:
-
Entering the Nature and Level 5 Stats
-
Completing the Rival Battle and reaching Level 6
-
Levelling up as needed to reach a single result
-
Inputting the Seed ms, and Advance into EonTimer and clicking Update

Once your calibration is within the range of +/- 50ms for the Seed, and +/- 3 for Advances you can confidently narrow the search range in G3 Calibration to speed up attempts.
Lower Seed +/- to 10 and Advance Range to 10 advances below and above your target.

With this smaller search range, you should be able to get a single result after only inputting the Level 5 Stats and Nature. If you still get 2 results, proceed to Level 6 using the Rival Battle to be sure.
At this point, you must repeat attempts until you successfully hit your Target Seed and Advance.
This requires two frame perfect inputs, so it can be difficult.
Only Update the calibration of EonTimer, if you notice you are consistently hitting early or late over multiple attempts. The optimal Calibration will have you landing sometimes early, sometimes late.
Now it's a matter of overcoming human error to succeed.
Eventually, you will either hit your Shiny or hit the correct Seed/Advances and find it is NOT Shiny.

This means your Potential Secret ID for this attempt was not correct.
Next Secret ID
Return to your list of Potential Secret IDs and you can eliminate the Secret ID at Advance 1150.

Return to the Calculating Starter Timer section, but change the Secret ID in G3 Calibration to match either Advance 1149 or Advance 1151.
Repeat the cycle of:
-
Assume a new Secret ID
-
Search for Nearest Shiny Starter
-
Make Attempt and Calculate Stats
-
Adjust EonTimer
-
Repeat Attempts Until Stats \ Nature Match
-
If not Shiny, return to Step 1...
Until...

The Shiny confirms the example Trainer ID/Secret ID as 13789/42915.
1148 Advances on the Secret ID list.

You could now use this Secret ID to search for a Shiny with a better Nature and/or IVs.
If you'd like to Nickname your Shiny now, reset over it and repeat with the same timer/settings.
DON'T LOSE this Trainer ID and Secret ID Combination for your Save!
PokeFinder has a Profile Manager, which you can use to keep the TID/SIDs of your various save files.

Failure Conditions
It's absolutely possible to get your Shiny Starter after checking only 1
or 2 SIDs. However, it entirely depends on how accurately the timer was
hit during the intro cutscene, and whether or not errors were made.
It's fairly common for first timers to check 5 or more SIDs without
seeing a Shiny. It can be frustrating, but DON'T GIVE UP.
However, as a general rule, I don't recommend checking beyond the
range of 1145 to 1155. If the Intro portion is done correctly, it's very
unlikely to be more than 5 advances off.
In the event you've verified your Secret ID is definitely not between
1145 to 1155, it's a good idea to start a New Game and try hitting
Advance 1150 on a new Trainer ID.
It's a bit of a gamble either way. You could be one extra SID check away
from your Shiny, or you might have made a mistake in the Intro Sequence
and wind up checking 20 SIDs with no Shiny.
Whatever you choose to do, once you see a Shiny Starter and your Secret
ID is confirmed, RNG manipulating the rest of the game is now available
to you.
Next Steps...
With the Starter & TID/SID Manip out of the way, you're ready to move on to the next steps! Either Static or Wild Manips will do, although, Wild is slightly more challenging. Hope to see you there!
Get the Pokemon you wanted? Consider supporting us on Ko-fi & keep us ad free!