you have to bet team rocket at mahogany shop then you have done it dadarr
or
it will be in Olivine town and Cianwood City, which is on the other side of Ecruteak city.
I think that these two gyms would be best though if they were the 5th and 6th gym battles.
After you beat Chuck in Cianwood City his wife will give you fly, and you will be able to fly to Olivine Town or Ecruteak City
In her Gym
It attracts a ledendary pokemon.
you can find it in the ciann city pharmacy
The tower
In Blackthorn City.
ecruteak city
in poo land.
curmen cave
this is also for heart gold
evolve gastly.
you have to use hm rock smash on rocks to find them.
You can find them by surfing and fishing.