The actual hardware that renders the sprites does so by rendering horizontal lines individually, the current implementation gets all sprite data on cycle 0 of the first line and then renders all the sprites based on that data at the beginning of v-blank. This is not technically accurate but works somewhat