A save file that has been ID abused. It's optional but recommended if going for shiny spreads with good IVs
Note: This method works for any Pokémon generated by Method 1 in Pokémon Ruby/Sapphire. If you're looking for a specific spread to be shiny, ID/SID abuse might be required first.
Step 1: Set Up PokeFinder
Open PokeFinder, select "Gen 3 Stationary," and go to the "Searcher" tab.
Enter the spread you want and check for results.
If no results appear, adjust the filters until you find a result.
Step 2: Get Your Initial Seed
Right-click your chosen seed and select "Generate times to seed."
The seed will appear in "16-Bit Seed To Time." Set the year to 2000, as other years won't work.
This gives you the initial seed and the time/date needed to hit it.
In the "Generator" tab, enter the initial seed from "16-Bit Seed To Time."
Set the search method to "Method 1" and click "Generate."
Find the advance given in "16-Bit Seed To Time."
Step 3: Hitting the Desired Seed and Advance
In mGBA, go to Tools -> Game overrides... and enable "Realtime clock."
Then go to Tools -> Game Pak Sensors..., select "Start time at," and enter the target time and date.
Note: Unlike Generations 4 and 5, only the hours and minutes matter for hitting the initial seed.
Step 4: Finding the Delay
Load the game and reach the final screen before encountering the target Pokémon. Make save states along the way.
At the target advance, press A to start the encounter.
Check the IVs of the encountered Pokémon.
In PokeFinder, enter the IVs and search for the advance you hit.
Calculate the delay:
Delay = Target Advance - Advance Hit
Input this delay into PokeFinder and generate results again.
Find your target advance and note the new advance number.
Step 5: Obtain the Desired Pokémon
Repeat the process using the new advance after factoring in the delay.
If done correctly, you'll hit the desired spread.
If off, check how many advances you missed, reload a save state, adjust, and try again.