You'll most likely have to modify the catch rate formula for every Poke Ball as well, because I don't think they're set up to handle a Pokemon with 0.0% health left. From what I understand, you want the Pokemon to faint, but you want the battle's end to be delayed by a turn to give the player the chance to catch it?
Honestly, this feature seems like it's way above your current skill level. You should work your way up to that level with more "conventional" hacking before attempting this, I would think.
Furthermore, allowing every Pokemon to have more than four moves would require expanding the data structure that handles a Pokemon's information, not to mention you'd have to C up interfaces to display those extra moves, and find some way to handle switching sets in battle for both the player and the AI. If an AI Trainer is to have custom movesets, you'd have to set up a way to save eight moves per Pokemon in that structure too. The game is set up with the four move limit, and every structure/feature that involves using, displaying, or otherwise refers to Pokemon moves assumes that the limit is four. That's an almost insurmountable amount of research and targeted ASM edits to accomplish, and it has a good chance of breaking the game in ways that are not immediately obvious because of the scope of the changes. If, once you get to the skill level that how this all works is understandable to you, and you still think it's worth the effort to change, then go for it! But for those who do know how difficult and impractical this would be to implement, it's not worth the time investment to do for someone else.
The fainting Pokémon is just an idea based in the anime. Most of the times, a Pokémon is defeated there, before a capture is attempted.
I believe it could be easier, as the experience after catching a Pokémon was simple too. I never thought about the Pokéballs, actually. Just had the idea and let it out.
Believe me, not trying that until a lot of other stuff is done, here.
As for the maximum moves a Pokémon can have, I thought that would be easy to just add a new page to the "Summary" screen, as the same easy way to add a new layer to the "Fight" command inside a battle.
I didn't know it involved so much. Plus, I thought the moves were directed for each Pokémon. I thought each Pokémon had 4 slots, and the game would just "fill the blanks" for the Pokémon every time a move was shown (fighting, Summary screen, etc, etc). I thought just changing this number to 8 and adding a viewable way of using the other slots was enough.
I also thought after GoGoJJTech's explanation that maybe the attacks could be divided into "sets". That way, before the game "chooses" or "displays" (or whatever) using codes like "load move1, move2, move3 and move4" it would come with a "load set1, set2" beforehand. That way, you could still have codes for 4 moves, but you could choose what "block of 4 moves" you could use before.
I don't know if the way I explained it, it sounded silly or just plain stupid. I don't have much programming knowledge, but it seemed like an alternative (not by far a much efficient one) to rewriting half the game.
But no sweat, dropped it.
Maybe if I ever try to write a game from scratch, who knows...