OK, I understand what you want to said.
In a first time, I build up my programm on emulators, but I'm no way against put it on a real NES, I've just sait I'm unable (or I'm not yet able) to do this on my own, but I must be very happy to see my own game (and not my own demo) run on a real NES. But this can never be a "commercial game".
And why are you so sure that I change palette midframe with screen on via $2001 ? That's true, this odd thing works with VirtuaNES, Nester and certainly a lot of others "good" emulators. That's not my fault. First, I don't and I won't change any palette midframe, and if I do this I know that I must turn rendering off beacause you said it to me a thousand of times !
So don't be in haste just for this !
And this is okay, my programm :
-Wait for VBlank at reset (note that all commercial games wait a couple of VBlanks, not just one).
-Don't write to sprite memory manually (huh ? this don't work with the real NES ? altogether it's stupid to do this)
-Don't change any VRAM during rendering (exept ExRAM, but it's not VRAM)
-OF COURSE don't consider that the RAM/VRAM is full of $00 at reset !!!
Bregalad, Ent from the woods of Fangorn