Use debugger and breakpoints to find out why something happens
More specifically, mGBA sounds like it'd be really good for this. Open up the game in mGBA, go to Tools -> Open debugger console, and set a watchpoint for when the game reads/writes palettes. The start of palette RAM is at 0x05000000, so if I wanted to watch when the game read or wrote the very first color in palette RAM, I'd enter the command "w 0x05000000" into the debugger console. The game will pause, so enter the command "continue" to resume. Then whenever the game reads or writes the first color, it'll stop execution and let you know. From there, you can use the "trace" command to go through each following instruction, so if you go up to the point where it writes another value to around 0x05000000, you can learn how it's writing colors into palette RAM.
You'd have to replace 0x05000000 to wherever the ninja's palette goes in RAM, I'm not sure about the specifics of Ninja Five-0. But I think that's how you would go about finding (and fixing) the problem. Hope that helps!
(and if a more experienced hacker realizes I have no idea what I'm talking about, let me know)