Interesting notes about those other things. I always assumed 00 (BRK) would just stop the game entirely. Still not sure I follow NMI or IRQ though, I'll need to read more about it, but in my hacking it's not something that's really been necessary to know. I did wonder how games would go into infinite loops (such as JMP to themselves, over and over) but still eventually continue the program counter. I guess it has something to do with the PPU saying "okay, next frame, get on with it".
Supposedly the better way to detect Vblank (than directly checking $2002),
is to do something like
and then in the NMI route set Loop to a non-zero value.
One possible way of writing to VRAM is to format data in RAM (when it's time to write data to VRAM, you want the CPU to just blast it in there, not waste time calculating it).
Then set a flag that tells the NMI routine data is ready to be written. (the NMI routine would thus have code to read the formatted data and write it)
The weird thing about the NES PPU is that every time data is written to VRAM (even like tile data), the scroll registers need to be rewritten afterwards or the PPU freaks out, even if not scrolling the screen.