Has anyone worked with or know anything about the format of the column table? For example, why is it 512 bytes per screen and what does each byte represent? The VB Programmer’s Manual says it can be altered to change the aspect ratio– does this mean stretching/squashing the pixels vertically? How would this otherwise distort the display?
Which doc did you read that “aspect ratio” comment in? The column table is used to compensate for the non-linear nature of the mirrors’ vibration. If you turn on the pixel (LED) array the same amount of time at the edges of the screen cycle as you do in the middle, the outer ones would be really wide, and the inner ones would be skinny. The column table evens them out so that all pixels are the same size/shape.
Also, it’s 512 words per screen. Each 16-bit word is made of an 8-bit column length and an 8-bit repeat value. The reason given for the number of entries is to compensate for hardware tolerances and “minor impacts” (although why anyone is subjecting their VB to impacts of any kind while playing, I have no idea).
It’s not really something a programmer needs to worry about. There aren’t really any useful “advanced effects” that can be done with it, so it’s best just to leave it alone.
Which doc did you read that “aspect ratio” comment in?
The VB Programmer’s Manual, page 8:
The column table helps correct for any distortions caused by an imbalance in the scanning mirrors used to make up the display. The table could be reset by the user to change the aspect ratio of the display, and to cause a certain region of the display to distort. This table must be filled in and the screen given time to stabilize (about 20 seconds) before turning on the display. Otherwise the user might suffer from eyestrain if the mirrors have not stabilized and an improper stereo image is displayed.
If I wanted to, say, make each pixel 10% taller, could I use the column table to do that? Even if it meant sacrificing a few rows/columns on the edges of the screen?
Also, where does it say the column table is 512 words per screen? Isn’t COLUMN_TABLE located between 0x3DC00 and 0x3E000? (1024 bytes / 2 screens == 512 bytes per screen?)
I don’t think it’s so much 10% taller as it is 10% less wide. The displays are a fixed height, it’s the scanning motion that affects the width of the pixels… At any rate, if you do some kooky stuff with the aspect ratio, you might just end up with a headache.
Correct, the column table is 512 longs total (256 longs per eye). But no, you can’t make pixels 10% taller, because the vertical height of a pixel is fixed by the LED bar. The column table is to coordinate LED timing while the mirror is scanning horizontally, so it could only adjust horizontal width.