DementedPurple wrote:
Speaking of sprite-zero-hit, it doesn't mention anywhere in the wiki how I would access it. It doesn't say anything about any memory addresses.
Yes, of course it does. From the link I was pointing you to:
http://wiki.nesdev.com/w/index.php?title=PPU_OAM&redirect=no#Sprite_zero_hits wrote:
While the PPU is drawing the picture, when an opaque pixel of sprite 0 overlaps an opaque pixel of the background, this is a sprite zero hit. The PPU detects this condition and sets bit 6 of PPUSTATUS ($2002) to 1 starting at this pixel, letting the CPU know how far along the PPU is in drawing the picture.
DementedPurple wrote:
Could I have it so that during Vblank, I could put Sprite Zero at the top corner so that I could use Sprite Zero Hit to know when the Vblank is over, and then once it's over, move sprite zero to where I need it to change scroll mid-screen?
Is there a specific reason why you want to know when vblank is over?
What operations do you want to do that need to be done exactly after vblank?
Usually, you set the scrolling position to 0,0 during vblank for the status bar and then you set it to the actual value when sprite 0 hits.
If you want a second scanline split, you can use the sprite overflow bit for the first split (simply put nine empty sprites at the desired location) and sprite 0 for the second one.
Sprite overflow has some issues though that you need to pay attention to.