gotcha, thanks, and yes I am relying on a counter changing.Yes, if you know your code is executing withing vblank, it is an OK time to turn on/off rendering without any visual problem. The exact mechanism of your "Wait_vblank" routine might be important. If it's waiting on your NMI routine to increment a counter, you might need to ensure that the NMI actually returns quickly enough to still be in vblank. (e.g. if your NMI routine also plays music, this may not be guaranteed.)
I've been thinking about the pros and cons of swapping the entire nametable or only updating what needs to change via some buffer during NMI. I have found that for what I'm building maybe half the tiles will need to change level to level, and so I can go either way but I was concerned about space if I store full tables, but this would keep it simple.. Currently the nametable updates once per level, it will not change again until the next level. My space concern is I have 8KB of PRG ROM to work with using MMC1 correct? So in theory that would be 8 full nametables with no room left for palettes and sprites?