This is my first tutorial so don't be angry if my tutorial isn't professional. I am not english/american or whatever so maybe I make some (or a lot of) spelling mistakes.
Everyone has the same problem. You are hacking a pokemon rom. You have made an excellent map, nice attacks, good items and all other things. You also have good sprites but there is one problem: ALL COLORS OF YOUR SPRITE WILL MESS UP WHILE INSERTING THEM. I had the same problems and I make this tutorial because nowhere you can find the answer on your question.
You download the programs graphicsgale, unlz gba and a pokemon ruby/sapphire/fire red/ leaf green rom. Install everything and go on to step 2
Open unlz gba. Click on open rom and select your pokemon rom (don't forget to unzip the pokemon rom to get a binary file). Now you will find all sprites of the game. Go to around number 600 (type in 600 and click ''go to''). Here you search for the sprite you want to replace for your own sprite. Click on ''save as'' and save it somewhere. Now open up gg (graphicsgale) 2 times. With one of the 2 gg's open your own sprite. With the other gg you open your pokemon you want to replace (the existing pokemon not your fake one). Now go to your own made sprite, go to the tab all frames and click color depth. Change the color depth of your pokemon to 16 colors. Make sure your pokemon hasn't to much colors. Now your pokemon has 16 colors. Now click on the tab view and click on palette (if you hadn't select it already). Now you see the 16 colors of your picture. Click (at palette) on the blue arrow and click on ''save pallete'' and save it somewhere in your files. Now go to the existing pokemon you want to replace. Open palette too. You will see this picture has 16 other colors. Now click on the blue arrow again and click ''load palette and open the palette from your own sprite. On the left side you will see the palette of your own made sprite and on the right side you will see the colors of the replacing pokemon. Now hold left mouse button and select all colors except for the background color of your own sprite and drag them to the right side. MAKE SURE YOU LEAVE THE BACKGROUND COLOR (MOSTLY GREY) OF THE REPLACING POKEMON IN THE 16 COLORS PALETTE. Now your picture can be inserted. Copy your sprite on top of the old sprite. Make sure you don't see anything of the old sprite. Now you make sure everything you want to be invisible is the old background color (mostly grey). And also make sure the picture is 64x64 and now you can save the picture.
Now you open unlz gba again. You click on import pokemon and you choose your pokemon. Now you will see your picture instead of the old picture (If not you messed everything up). Now click on write to rom and it's finished.
I hope this tutorial will help you a lot.