Surf Before HM
If this code works for Emerald, then it also works for Ruby and Sapphire. The only way this is possible is by obtaining a Pokemon that knows Sketch. So before you continue to Mauville City, find the game shark code for Smeargle since the only way you can get them legitimately is by Artisan Cave and that can be accessed later on, unless of course you would warp there as well. Smeargle's only known move is Sketch. First, use any move that temporarily disables Smeargle from moving (such as paralysis, poison, etc.) and then capture it. After doing so, head to Route 109 where there is a tuber named Ricky, who has a Zigzagoon that actually knows Surf. Be sure your Smeargle has that move sketched before it's capture and reteach it Sketch since it knows Sketch every 10 levels. Use the previously sketched move once and when the Zigzagoon uses Surf, use Sketch on it and voila, your Pokemon now knows Surf in battle. Now the only way to use it outside of battle is by continuing the game until you get Norman's Badge.
Added by: boyzkang Oct 14th 2012, ID#13811