In Pokémon FireRed and LeafGreen, you’ll get HM02 Fly from a girl who can be found in a blue-roofed building located west of Celadon City.
In order to reach this building, you need to use HM01 Cut to cut down the tree near the sleeping Snorlax just to the west of Celadon. But you do not need to wake up the Snorlax or enter Cycling Road to reach the HM02 NPC.
Before you can get HM02, there are a few things you need to do first:
- Get HM01 Cut from the S.S. Anne Captain
- Defeat Misty and obtain the Cascade Badge so you can use Cut
There is a tree blocking a path that you will need to cut down with HM01.
After you get that HM, you need to be able to use Cut, which means you must defeat Misty and obtain her Cascade Badge.
Getting HM02 Fly (West of Celadon City)
Once you’ve made it to Celadon City, head to the west onto Route 16.
You will see a sleeping Snorlax blocking your path to the left, and a tree that can be cut down above you.
Cut down the tree, then enter the new area and keep heading left. Then walk into the building at the end of the path.
We can cross through this guard building – and on the other side there will be a tiny house with a blue roof.
Head inside of this house and talk to the girl with the pink shirt. She’ll ask you not to tell anyone she’s there and then give you HM02 Fly, which you can then teach to your Pokémon.
Note: you’ll need to have the Thunder Badge from Vermilion City before you can use Fly outside of battle.