I've been learning C over the past week but I'm getting a bit lost in the code. I'm using Paccy's port of the Soaring mechanics but I'm trying to adapt its functionality for my hack. Ideally, I'd like to map Soaring to Fly instead of the Eon Flute, then check for the Pokemon Species before setting the Soaring Sprite to the appropriate Pokémon. I've been playing around with the "party_menu.c" and some of the other files for a couple days and I can edit the Fly function to initiate Soaring (although it is very buggy) but I can't figure out how I would check which pokemon used fly in order to set the pokemon sprite.
Since Pokémon like Pidgey are too small to soar on, I'd like to check the species when Fly is called and then compare it against an array (I believe would be the way to go about it) so that if the Pokemon isn't rideable, a message appears to say "This Pokémon cannot Fly outside of Battle" and if the Pokémon is on the list, then it initiates soaring and sets the sprite depending on the species.
I know C tutorials are abundant online but I can't find any documentation on what functions are in PokeEmerald. Could anyone shed any light on it? Or even point me in the direction of further learning that is more aligned with Disassembly Hacking? Or is it simply a matter of reading through as much code as possible and trying to piece it together? I'm a little lost.