You cannot write as much data as you want into PPU inside NMI. Vblank time is very limited. With your current loop you have time for around 200 bytes. More than that, and you might end up with garbage on the screen.
If you want to write more, either disable rendering, or write data separately on different frames.
You can also improve your loop by using DEX + BNE instead of INX + CPX + BNE.
By the way, if you have a write to 4014 somewhere in NMI (which I assume you do, since you have sprites on the screen), that single write takes away time worth of at least 45 bytes, which leaves you with 155. But with an improved loop you can still manage to write about 190.