Attached to this post is a simple program that can be used to gauge the limits of the affine window mode on Virtual Boy. The program is set to run at 50 frames per second, and has a single affine window which you can resize. If the overflow flag goes up in the VIP status register, it will be reflected in the program output.
Due to the sloppy way I programmed it, cases at the edge of the maximum pixels-per-frame ratio will cause the output to be printed incorrectly, but that’s an indication that the VIP has entered overtime. (-:
The total number of affine pixels that can be drawn in a single 50fps frame period varies slightly depending on the number of lines in the window. The maximum dimensions that I’ve tested on the hardware *without* triggering an overtime condition are as follows:
* Max Width: 384×193 = 74,112 pixels
* Max Height: 329×224 = 73,696 pixels
* Max Pixels: 383×194 = 74,302 pixels
So the rule of thumb is that the more lines you have, the fewer total pixels you can render before entering rendering overtime. Rendering additional affine windows adds pixels to the total accordingly, so it can stack up quick if you’re not careful. Aim for no more than 73,500 pixels total for affine windows, though it’s clear that Mario’s Tennis comes very close to the edge.
Oh yeah, controls:
Left D-Pad: Resize the window, one pixel at a time
Right D-Pad: Resize the window while the buttons are held
Much to my dismay, disabling a window for one display did not increase the amount of pixels that could be drawn. Using one affine window for each eye effectively halves the screen real estate that can be rendered without entering overtime when compared to using one window in both eyes.