Come on, dude, I helped you with Mortal Kombat, I was hoping you'd have learnt from it.
First of all, the player is a sprite, and sprites aren't modified in the PPU's VRAM, it's in the OAM:http://wiki.nesdev.com/w/index.php/PPU_OAM
Debugger needed? ASM coding? Help me.
Yes and yes.
Of course it changes back to red, the game updates it every frame. What you need to do is set a write breakpoint for one of the four sprites, which are located in OAM around $200.
So after a quick trace log, I see the desired number comes from $9, which comes from $408. A write breakpoint to $408 sees it originates from $CC3A ($C4A in ROM), and around there you can see some other similar numbers, which are probably also used for the player 1 sprite.
Now we can just change $408 from $40 to $42, but for reasons which I can't be bothered to explain, the game does an AND #$C0 to that number, so it still ends up being $40. So what do we do? We go to $F639 ($3649 in ROM) and change 29 C0 to 29 C2. Woo, when you start the game, you're blue (da-ba-dee da-ba-daa).
Now we just need to change the other numbers around $C4A accordingly (00 to 02, 40 to 42) and we're done. You might need to do some more breakpoint setting and trace logging to figure out precisely which bytes apply to the player 1 sprites (up down left right, holding out an arm etc).
So, in short: change $364A to C2, then add 2 to every byte from $C48 to $C57. After further checking I discovered you also need to add 2 to every byte from $2438 to $2447, as well: this is for the turning sprites.
Unfortunately the end of level sprite uses a different routine (EOR #$40) to flip the sprite left and right, and I can't think how to make it start off with $02 so that it flips between $02 and $42. So never mind. Still, it's a start!