The VIP’s drawing control register has a field where you can specify a value corresponding with 8 rows of pixels. 0 is the top 8 rows, 27 is the bottom 8 rows (for a total of 224).
There is also a VIP interrupt that can be raised when the VIP is actually drawing those rows. What I didn’t know before trying it out is this: the VIP draws all columns of those 8 rows before the hit flag drops and continues drawing. The VIP does NOT draw from left to right as I previously thought. It draws top down.
The Y match interrupt can be used to reconfigure graphics properties partway through frame rendering. You can use this to, as a random example, draw the same sprite at two different locations in the same frame. This provides similar functionality to the HBlank interrupts of more conventional systems.
Having said that, unlike HBlank periods, the Y match position CANNOT be updated while the VIP is executing its drawing procedure. This means that the Y match interrupt will only be raised once before a frame finishes being drawn by the VIP. Ergo, we can’t do any fancy “infinite sprite” style demos for Virtual Boy. (-:
At the time of this posting, neither RealityBoy nor Mednafen emulates this interrupt correctly.